@propbinder/mobile-design 0.2.44 → 0.2.47

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.
@@ -663,6 +663,92 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
663
663
  type: Input
664
664
  }] } });
665
665
 
666
+ /**
667
+ * DsMobileLoaderOverlayComponent
668
+ *
669
+ * Reusable loader overlay component that displays a spinner centered over its container.
670
+ * Designed to overlay images or other content during loading states.
671
+ *
672
+ * Features:
673
+ * - Semi-transparent white background overlay
674
+ * - Centered animated spinner
675
+ * - Customizable spinner size
676
+ * - Absolute positioning to cover parent
677
+ * - Accessible with proper z-index stacking
678
+ *
679
+ * @example
680
+ * ```html
681
+ * <!-- Basic usage -->
682
+ * <div style="position: relative;">
683
+ * <img src="image.jpg" alt="Content" />
684
+ * @if (isLoading) {
685
+ * <ds-mobile-loader-overlay />
686
+ * }
687
+ * </div>
688
+ *
689
+ * <!-- With custom spinner size -->
690
+ * <div style="position: relative;">
691
+ * <div class="content">Loading content...</div>
692
+ * <ds-mobile-loader-overlay [spinnerSize]="32" />
693
+ * </div>
694
+ *
695
+ * <!-- Over an image with rounded corners -->
696
+ * <div style="position: relative; border-radius: 12px; overflow: hidden;">
697
+ * <img src="photo.jpg" />
698
+ * <ds-mobile-loader-overlay [borderRadius]="12" />
699
+ * </div>
700
+ * ```
701
+ *
702
+ * @notes
703
+ * - Parent container must have position: relative for the overlay to work correctly
704
+ * - The overlay covers the entire parent element using inset: 0
705
+ * - Spinner animation runs continuously at 0.6s per rotation
706
+ */
707
+ class DsMobileLoaderOverlayComponent {
708
+ /**
709
+ * Size of the spinner in pixels
710
+ * @default 24
711
+ */
712
+ spinnerSize = input(24, ...(ngDevMode ? [{ debugName: "spinnerSize" }] : []));
713
+ /**
714
+ * Border radius of the overlay in pixels (should match parent's border radius)
715
+ * @default 0
716
+ */
717
+ borderRadius = input(0, ...(ngDevMode ? [{ debugName: "borderRadius" }] : []));
718
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileLoaderOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
719
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: DsMobileLoaderOverlayComponent, isStandalone: true, selector: "ds-mobile-loader-overlay", inputs: { spinnerSize: { classPropertyName: "spinnerSize", publicName: "spinnerSize", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
720
+ <div
721
+ class="loader-overlay"
722
+ [style.border-radius.px]="borderRadius()"
723
+ role="status"
724
+ aria-live="polite"
725
+ aria-label="Loading">
726
+ <div
727
+ class="spinner"
728
+ [style.width.px]="spinnerSize()"
729
+ [style.height.px]="spinnerSize()">
730
+ </div>
731
+ </div>
732
+ `, isInline: true, styles: [":host{display:contents}.loader-overlay{position:absolute;inset:0;background:var(--color-background-neutral-primary, #ffffff);display:flex;align-items:center;justify-content:center;z-index:100}.spinner{border:2px solid var(--color-border-neutral-secondary, #E5E5E5);border-top-color:var(--color-accent, #6B5FF5);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-color-scheme: dark){.spinner{border-color:#fff3;border-top-color:var(--color-accent, #6B5FF5)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
733
+ }
734
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileLoaderOverlayComponent, decorators: [{
735
+ type: Component,
736
+ args: [{ selector: 'ds-mobile-loader-overlay', standalone: true, imports: [CommonModule], template: `
737
+ <div
738
+ class="loader-overlay"
739
+ [style.border-radius.px]="borderRadius()"
740
+ role="status"
741
+ aria-live="polite"
742
+ aria-label="Loading">
743
+ <div
744
+ class="spinner"
745
+ [style.width.px]="spinnerSize()"
746
+ [style.height.px]="spinnerSize()">
747
+ </div>
748
+ </div>
749
+ `, styles: [":host{display:contents}.loader-overlay{position:absolute;inset:0;background:var(--color-background-neutral-primary, #ffffff);display:flex;align-items:center;justify-content:center;z-index:100}.spinner{border:2px solid var(--color-border-neutral-secondary, #E5E5E5);border-top-color:var(--color-accent, #6B5FF5);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-color-scheme: dark){.spinner{border-color:#fff3;border-top-color:var(--color-accent, #6B5FF5)}}\n"] }]
750
+ }], propDecorators: { spinnerSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "spinnerSize", required: false }] }], borderRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderRadius", required: false }] }] } });
751
+
666
752
  /**
667
753
  * MobilePageBase
668
754
  *
@@ -682,6 +768,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
682
768
  * @internal This is a base class and should not be used directly.
683
769
  */
684
770
  class MobilePageBase {
771
+ /**
772
+ * Shows a loading overlay above page content area.
773
+ *
774
+ * Non-breaking: defaults to false, so existing pages are unchanged
775
+ * until they explicitly opt in.
776
+ */
777
+ contentLoading = input(false, ...(ngDevMode ? [{ debugName: "contentLoading" }] : []));
685
778
  /**
686
779
  * Maximum content width (desktop only)
687
780
  *
@@ -827,11 +920,11 @@ class MobilePageBase {
827
920
  window.removeEventListener('offline', this.handleOffline);
828
921
  }
829
922
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobilePageBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
830
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: MobilePageBase, isStandalone: true, inputs: { contentWidth: { classPropertyName: "contentWidth", publicName: "contentWidth", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
923
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: MobilePageBase, isStandalone: true, inputs: { contentLoading: { classPropertyName: "contentLoading", publicName: "contentLoading", isSignal: true, isRequired: false, transformFunction: null }, contentWidth: { classPropertyName: "contentWidth", publicName: "contentWidth", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
831
924
  }
832
925
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobilePageBase, decorators: [{
833
926
  type: Directive
834
- }], propDecorators: { contentWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentWidth", required: false }] }] } });
927
+ }], propDecorators: { contentLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentLoading", required: false }] }], contentWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentWidth", required: false }] }] } });
835
928
 
836
929
  /**
837
930
  * DsMobileLongPressDirective
@@ -1187,11 +1280,27 @@ class DsMobileListItemComponent {
1187
1280
  enableLongPress = input(true, ...(ngDevMode ? [{ debugName: "enableLongPress" }] : []));
1188
1281
  /**
1189
1282
  * Show "more actions" button on desktop for items with long-press enabled
1190
- * Only visible on desktop (hover: hover) and when enableLongPress is true
1191
- * Clicking this button triggers the same handler as long-press on mobile
1283
+ * @deprecated Use `moreActions` instead. Kept for backwards compatibility.
1192
1284
  * @default true
1193
1285
  */
1194
1286
  showDesktopMoreButton = input(true, ...(ngDevMode ? [{ debugName: "showDesktopMoreButton" }] : []));
1287
+ /**
1288
+ * Unified toggle for contextual actions (more button + long press).
1289
+ * - `true` — more button visible on **all** breakpoints, long press enabled
1290
+ * - `false` — more button hidden, long press suppressed
1291
+ * - `undefined` (default) — falls back to legacy `enableLongPress` + `showDesktopMoreButton` + desktop check
1292
+ */
1293
+ moreActions = input(undefined, ...(ngDevMode ? [{ debugName: "moreActions" }] : []));
1294
+ /**
1295
+ * Resolved visibility of the more-actions button.
1296
+ * When `moreActions` is set it takes precedence; otherwise legacy inputs + breakpoint apply.
1297
+ */
1298
+ shouldShowMoreButton = computed(() => {
1299
+ const ma = this.moreActions();
1300
+ if (ma !== undefined)
1301
+ return ma;
1302
+ return this.enableLongPress() && this.showDesktopMoreButton() && this.isDesktop();
1303
+ }, ...(ngDevMode ? [{ debugName: "shouldShowMoreButton" }] : []));
1195
1304
  /**
1196
1305
  * Offset distance for the interactive background pseudo-element
1197
1306
  * Extends the background beyond the content bounds
@@ -1296,8 +1405,9 @@ class DsMobileListItemComponent {
1296
1405
  * Set the flag to prevent the subsequent click event
1297
1406
  */
1298
1407
  handleLongPress() {
1408
+ if (this.moreActions() === false)
1409
+ return;
1299
1410
  this.longPressTriggered = true;
1300
- // Reset the flag after a short delay to allow for the next interaction
1301
1411
  setTimeout(() => {
1302
1412
  this.longPressTriggered = false;
1303
1413
  }, 100);
@@ -1316,7 +1426,7 @@ class DsMobileListItemComponent {
1316
1426
  this.moreButtonClick.emit(event);
1317
1427
  }
1318
1428
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1319
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileListItemComponent, isStandalone: true, selector: "ds-mobile-list-item", inputs: { leadingSize: { classPropertyName: "leadingSize", publicName: "leadingSize", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, enableLongPress: { classPropertyName: "enableLongPress", publicName: "enableLongPress", isSignal: true, isRequired: false, transformFunction: null }, showDesktopMoreButton: { classPropertyName: "showDesktopMoreButton", publicName: "showDesktopMoreButton", isSignal: true, isRequired: false, transformFunction: null }, interactiveOffset: { classPropertyName: "interactiveOffset", publicName: "interactiveOffset", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, showDivider: { classPropertyName: "showDivider", publicName: "showDivider", isSignal: true, isRequired: false, transformFunction: null }, dividerSpacing: { classPropertyName: "dividerSpacing", publicName: "dividerSpacing", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", moreButtonClick: "moreButtonClick" }, host: { listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeyDown($event)", "keydown.space": "handleKeyDown($event)", "longPress": "handleLongPress()" }, properties: { "class.interactive": "interactive() && !disabled()", "class.disabled": "disabled()", "class.loading": "loading()", "class.no-divider": "!showDivider()", "class.no-leading-content": "!hasLeadingContent()", "class.variant-compact": "variant() === \"compact\"", "class.align-top": "align() === \"top\"", "class.align-center": "align() === \"center\"", "class.align-bottom": "align() === \"bottom\"", "attr.role": "interactive() ? \"button\" : null", "attr.tabindex": "interactive() && !disabled() ? \"0\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "style.--leading-size": "leadingSize()", "style.--interactive-offset": "interactiveOffset()", "style.--divider-spacing": "dividerSpacing()" } }, hostDirectives: [{ directive: DsMobileLongPressDirective, outputs: ["longPress", "longPress"] }], ngImport: i0, template: `
1429
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileListItemComponent, isStandalone: true, selector: "ds-mobile-list-item", inputs: { leadingSize: { classPropertyName: "leadingSize", publicName: "leadingSize", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, enableLongPress: { classPropertyName: "enableLongPress", publicName: "enableLongPress", isSignal: true, isRequired: false, transformFunction: null }, showDesktopMoreButton: { classPropertyName: "showDesktopMoreButton", publicName: "showDesktopMoreButton", isSignal: true, isRequired: false, transformFunction: null }, moreActions: { classPropertyName: "moreActions", publicName: "moreActions", isSignal: true, isRequired: false, transformFunction: null }, interactiveOffset: { classPropertyName: "interactiveOffset", publicName: "interactiveOffset", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, showDivider: { classPropertyName: "showDivider", publicName: "showDivider", isSignal: true, isRequired: false, transformFunction: null }, dividerSpacing: { classPropertyName: "dividerSpacing", publicName: "dividerSpacing", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", moreButtonClick: "moreButtonClick" }, host: { listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeyDown($event)", "keydown.space": "handleKeyDown($event)", "longPress": "handleLongPress()" }, properties: { "class.interactive": "interactive() && !disabled()", "class.disabled": "disabled()", "class.loading": "loading()", "class.no-divider": "!showDivider()", "class.no-leading-content": "!hasLeadingContent()", "class.variant-compact": "variant() === \"compact\"", "class.align-top": "align() === \"top\"", "class.align-center": "align() === \"center\"", "class.align-bottom": "align() === \"bottom\"", "attr.role": "interactive() ? \"button\" : null", "attr.tabindex": "interactive() && !disabled() ? \"0\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "style.--leading-size": "leadingSize()", "style.--interactive-offset": "interactiveOffset()", "style.--divider-spacing": "dividerSpacing()" } }, hostDirectives: [{ directive: DsMobileLongPressDirective, outputs: ["longPress", "longPress"] }], ngImport: i0, template: `
1320
1430
  <div class="list-item-inner">
1321
1431
  @if (hasLeadingContent()) {
1322
1432
  <div class="content-leading">
@@ -1336,8 +1446,7 @@ class DsMobileListItemComponent {
1336
1446
  </div>
1337
1447
 
1338
1448
  <div class="content-trailing">
1339
- @if (interactive() && enableLongPress() && showDesktopMoreButton() &&
1340
- isDesktop()) {
1449
+ @if (interactive() && shouldShowMoreButton()) {
1341
1450
  <ds-icon-button
1342
1451
  class="desktop-more-button"
1343
1452
  icon="remixMoreFill"
@@ -1400,8 +1509,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1400
1509
  </div>
1401
1510
 
1402
1511
  <div class="content-trailing">
1403
- @if (interactive() && enableLongPress() && showDesktopMoreButton() &&
1404
- isDesktop()) {
1512
+ @if (interactive() && shouldShowMoreButton()) {
1405
1513
  <ds-icon-button
1406
1514
  class="desktop-more-button"
1407
1515
  icon="remixMoreFill"
@@ -1416,7 +1524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1416
1524
  </div>
1417
1525
  </div>
1418
1526
  `, styles: [":host{display:block;position:relative;padding:var(--item-padding-top, 12px) 0 var(--item-padding-bottom, 12px) 0;box-sizing:border-box;--leading-size: 32px;--content-gap: 12px;--interactive-offset: 8px}:host:after{content:\"\";position:absolute;bottom:0;left:calc(var(--leading-size) + var(--content-gap));right:0;height:1px;background:var(--border-color-default, #e5e5e5);z-index:1;display:var(--divider-display, block)}:host(.no-divider):after{display:none}:host(.no-leading-content):after{left:0}.list-item-inner{display:flex;flex-direction:row;align-items:flex-start;gap:var(--content-gap);position:relative}:host(.align-center) .list-item-inner{align-items:center}:host(.align-bottom) .list-item-inner{align-items:flex-end}:host(.interactive) .list-item-inner:before{content:\"\";position:absolute;top:calc(-1 * var(--interactive-offset));left:calc(-1 * var(--interactive-offset));right:calc(-1 * var(--interactive-offset));bottom:calc(-1 * var(--interactive-offset));background:var(--color-background-neutral-primary, #ffffff);border-radius:16px;z-index:-1;pointer-events:none}:host(.interactive){cursor:pointer}@media (hover: hover) and (pointer: fine){:host(.interactive):hover .list-item-inner:before{background:var(--color-background-neutral-primary-hover, #f5f5f5)}}:host(.interactive):active .list-item-inner:before{background:var(--color-background-neutral-primary-hover, #f5f5f5)}:host(.interactive):focus-visible{outline:none}:host(.interactive):focus-visible .list-item-inner:before{outline:2px solid var(--color-brand-primary, #5d5fef);outline-offset:2px}:host(.disabled){opacity:.5;pointer-events:none}:host(.loading){pointer-events:none}:host(.variant-compact) .list-item-inner{gap:8px}.content-leading{flex-shrink:0;width:var(--leading-size);height:var(--leading-size);display:flex;align-items:flex-start;justify-content:center;position:relative;z-index:1}:host(.align-center) .content-leading{align-items:center}:host(.align-bottom) .content-leading{align-items:flex-end}.content-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;position:relative;z-index:1;justify-content:flex-start}:host(.align-center) .content-main{justify-content:center}:host(.align-bottom) .content-main{justify-content:flex-end}.content-trailing{flex-shrink:0;display:flex;align-items:flex-start;position:relative;z-index:1}.structured-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.structured-subtitle{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545b66);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.desktop-more-button::ng-deep button{border-radius:50%!important}\n"] }]
1419
- }], ctorParameters: () => [], propDecorators: { leadingSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingSize", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], showDesktopMoreButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDesktopMoreButton", required: false }] }], interactiveOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactiveOffset", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], showDivider: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDivider", required: false }] }], dividerSpacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerSpacing", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], moreButtonClick: [{ type: i0.Output, args: ["moreButtonClick"] }] } });
1527
+ }], ctorParameters: () => [], propDecorators: { leadingSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingSize", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], showDesktopMoreButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDesktopMoreButton", required: false }] }], moreActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreActions", required: false }] }], interactiveOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactiveOffset", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], showDivider: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDivider", required: false }] }], dividerSpacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerSpacing", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], moreButtonClick: [{ type: i0.Output, args: ["moreButtonClick"] }] } });
1420
1528
 
1421
1529
  /**
1422
1530
  * DsMobileActionListItemComponent
@@ -1467,7 +1575,7 @@ class DsMobileActionListItemComponent {
1467
1575
  <ng-content select="[content-trailing]" />
1468
1576
  </div>
1469
1577
  </ds-mobile-list-item>
1470
- `, isInline: true, styles: [":host ::ng-deep ds-mobile-list-item .list-item-inner{align-items:center}:host ::ng-deep ds-mobile-list-item .content-leading{align-items:center;justify-content:center}:host ::ng-deep .action-icon-wrapper{display:flex;align-items:center;justify-content:center;width:100%;height:100%}:host ::ng-deep ds-mobile-list-item .content-main{gap:0;justify-content:center}:host{outline:none;--background-focused: transparent;--background-activated: transparent;-webkit-tap-highlight-color:transparent}:host ::ng-deep ds-mobile-list-item{outline:none}\n"], dependencies: [{ kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
1578
+ `, isInline: true, styles: [":host ::ng-deep ds-mobile-list-item .list-item-inner{align-items:center}:host ::ng-deep ds-mobile-list-item .content-leading{align-items:center;justify-content:center}:host ::ng-deep .action-icon-wrapper{display:flex;align-items:center;justify-content:center;width:100%;height:100%}:host ::ng-deep ds-mobile-list-item .content-main{gap:0;justify-content:center}:host{outline:none;--background-focused: transparent;--background-activated: transparent;-webkit-tap-highlight-color:transparent}:host ::ng-deep ds-mobile-list-item{outline:none}\n"], dependencies: [{ kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "moreActions", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
1471
1579
  }
1472
1580
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileActionListItemComponent, decorators: [{
1473
1581
  type: Component,
@@ -1802,6 +1910,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1802
1910
  type: Input
1803
1911
  }] } });
1804
1912
 
1913
+ /**
1914
+ * Disable pointer events for Ionic's internal modal shadow layer.
1915
+ *
1916
+ * The .modal-shadow element is rendered inside ion-modal's Shadow DOM and can
1917
+ * intercept backdrop taps even when visually hidden.
1918
+ */
1919
+ function disableModalShadowPointerEvents(modal) {
1920
+ const applyFix = () => {
1921
+ const modalShadow = modal.shadowRoot?.querySelector('.modal-shadow');
1922
+ if (!modalShadow) {
1923
+ return;
1924
+ }
1925
+ modalShadow.style.setProperty('pointer-events', 'none', 'important');
1926
+ modalShadow.style.setProperty('box-shadow', 'none', 'important');
1927
+ };
1928
+ applyFix();
1929
+ if (!modal.shadowRoot) {
1930
+ return;
1931
+ }
1932
+ const observer = new MutationObserver(() => {
1933
+ applyFix();
1934
+ });
1935
+ observer.observe(modal.shadowRoot, {
1936
+ childList: true,
1937
+ subtree: true,
1938
+ attributes: true,
1939
+ attributeFilter: ['class', 'style'],
1940
+ });
1941
+ modal.addEventListener('ionModalDidDismiss', () => {
1942
+ observer.disconnect();
1943
+ }, { once: true });
1944
+ }
1945
+
1805
1946
  /**
1806
1947
  * DsMobileBottomSheetService
1807
1948
  *
@@ -1897,6 +2038,7 @@ class DsMobileBottomSheetService {
1897
2038
  document.removeEventListener('keydown', escKeyHandler);
1898
2039
  });
1899
2040
  await modal.present();
2041
+ disableModalShadowPointerEvents(modal);
1900
2042
  // Don't wait - return immediately so component can try to focus
1901
2043
  // while still in user gesture context
1902
2044
  return modal;
@@ -4777,6 +4919,7 @@ class DsMobilePageMainComponent extends MobilePageBase {
4777
4919
  cssClass: ['ds-bottom-sheet', 'auto-height'],
4778
4920
  });
4779
4921
  await sheet.present();
4922
+ disableModalShadowPointerEvents(sheet);
4780
4923
  const result = await sheet.onWillDismiss();
4781
4924
  if (result.data?.action) {
4782
4925
  // Handle appearance/whitelabel-demo action internally (works on all pages)
@@ -4874,7 +5017,7 @@ class DsMobilePageMainComponent extends MobilePageBase {
4874
5017
  </ion-header>
4875
5018
 
4876
5019
  <!-- Content with expandable header -->
4877
- <ion-content [scrollEvents]="true" (ionScroll)="handleScroll($event)">
5020
+ <ion-content [scrollEvents]="true" [forceOverscroll]="true" (ionScroll)="handleScroll($event)">
4878
5021
  <!-- Condensed header for Ionic scroll effects -->
4879
5022
  @if (showCondensedHeader()) {
4880
5023
  <ion-header collapse="condense">
@@ -4910,6 +5053,10 @@ class DsMobilePageMainComponent extends MobilePageBase {
4910
5053
 
4911
5054
  <!-- Content wrapper -->
4912
5055
  <div class="content-wrapper">
5056
+ @if (contentLoading()) {
5057
+ <ds-mobile-loader-overlay />
5058
+ }
5059
+
4913
5060
  <!-- Offline indicator slot (appears at top of content) -->
4914
5061
  <ng-content select="[offline-indicator]"></ng-content>
4915
5062
 
@@ -4919,11 +5066,11 @@ class DsMobilePageMainComponent extends MobilePageBase {
4919
5066
  </div>
4920
5067
  </div>
4921
5068
  </ion-content>
4922
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;align-items:center;height:100%;background:var(--color-header-surface);width:100%}:host ion-header{background:var(--color-header-surface);box-shadow:none;height:72px;min-height:72px;margin-top:var(--app-header-top-offset)}:host ion-header ion-toolbar{--background: var(--color-header-surface);--border-width: 0;--box-shadow: none;--padding-top: 0;--padding-bottom: 0;--padding-start: 0;--padding-end: 0;--min-height: 72px;height:72px;min-height:72px;padding:0}@media (min-width: 768px){:host ion-header{height:88px;min-height:88px}:host ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}}@media (min-width: 768px){:host ion-header{display:none;height:auto}}:host .header-main,:host .header-details,.header-details{display:flex;align-items:center;justify-content:space-between;background:var(--color-header-surface);position:relative}:host .header-main__title,:host .header-details .header-title,.header-details .header-title{position:absolute;left:50%;transform:translate(-50%);font-size:var(--font-size-base);font-weight:600;color:var(--color-header-content);margin:0;padding:0;--color: var(--color-header-content)}.header-details .header-title{transform:translate(-50%) translateY(-100%);opacity:0!important;pointer-events:none;transition:transform .2s ease,opacity .2s ease!important}.header-scrolled .header-details .header-title{opacity:1!important;pointer-events:auto;transform:translate(-50%) translateY(0)}:host .header-details .back-button,.header-details .back-button{background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:opacity var(--transition-duration-fast, .2s) var(--ease-smooth, ease);z-index:10;position:relative}:host .header-details .back-button:hover,.header-details .back-button:hover{opacity:.8}:host .header-details .back-button:active,.header-details .back-button:active{opacity:.6}:host ion-content{--background: var(--color-header-surface);--padding-top: 0;--padding-start: 0;--padding-end: 0;--padding-bottom: 0;border-radius:24px 24px 0 0;overflow:hidden}:host ion-content::part(scroll){display:flex;flex-direction:column;-webkit-overflow-scrolling:touch}.plt-ios :host ion-content{--background: var(--color-background-neutral-primary)}@media (min-width: 768px){:host ion-content{border-radius:24px 24px 0 0}}:host ion-header[collapse=condense]{display:none}@media (min-width: 768px){:host ion-header[collapse=condense]{display:none}}:host ion-refresher{z-index:0}:host ion-refresher-content{--color: var(--color-header-content)}:host .content-wrapper{width:100%;position:relative;z-index:20;flex:1;display:flex;flex-direction:column;background:var(--color-background-neutral-primary);border-radius:24px 24px 0 0;overflow:scroll;transform:translateZ(0);will-change:transform;isolation:isolate;box-shadow:0 300px 0 0 var(--color-background-neutral-primary);padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px);padding-bottom:calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + env(safe-area-inset-bottom,0px))}:host .content-inner{flex:1;max-width:640px;margin:0 auto;width:100%}@media (min-width: 768px){:host .content-wrapper{padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px)}}:host .header-expandable{background:var(--color-header-surface);padding:32px 20px 24px;color:var(--header-content-color, white);position:sticky;top:0;z-index:5;transition:opacity .1s ease-out,transform .1s ease-out}:host .header-expandable-inner{display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}:host .header-expandable__text{margin-bottom:0;gap:4px;display:flex;flex-direction:column}:host .header-expandable__title{font-size:var(--font-size-2xl);font-weight:600;color:var(--header-content-color, white);margin:0}:host .header-expandable__subtitle{font-size:var(--font-size-sm);font-weight:400;color:var(--header-content-color, white);opacity:.85;margin:0}@media (min-width: 768px){:host .header-expandable{padding:48px 20px 32px}:host .header-expandable__title{font-size:var(--font-size-3xl)}:host .header-expandable__subtitle{font-size:var(--font-size-base)}}@media (min-width: 992px){:host .header-expandable{padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg)}}@media (min-width: 1440px){:host .header-expandable{padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){:host .header-expandable{padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){:host .header-expandable{padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}\n", ".header-main{padding:0 20px;height:72px}.header-main__title{transform:translate(-50%) translateY(-100%);opacity:0;transition:transform .6s ease,opacity .6s ease;padding:0;--color: var(--color-header-content)}.header-scrolled .header-main__title{opacity:1;transform:translate(-50%) translateY(0)}.header-main__actions{display:flex;align-items:center;gap:8px}.header-main__actions ds-avatar{cursor:pointer;-webkit-tap-highlight-color:transparent}@media (min-width: 768px){.header-main{padding:16px 24px;height:88px}.header-main__title{display:none}}ion-refresher{--color: var(--color-header-content)}ion-refresher-content{--color: var(--color-header-content)}ion-refresher-content::part(spinner){color:var(--color-header-content)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsLogoComponent, selector: "ds-logo", inputs: ["variant", "size", "customHeight", "customWidth"] }] });
5069
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;align-items:center;height:100%;background:var(--color-header-surface);width:100%}:host ion-header{background:var(--color-header-surface);box-shadow:none;height:72px;min-height:72px;margin-top:var(--app-header-top-offset)}:host ion-header ion-toolbar{--background: var(--color-header-surface);--border-width: 0;--box-shadow: none;--padding-top: 0;--padding-bottom: 0;--padding-start: 0;--padding-end: 0;--min-height: 72px;height:72px;min-height:72px;padding:0}@media (min-width: 768px){:host ion-header{height:88px;min-height:88px}:host ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}}@media (min-width: 768px){:host ion-header{display:none;height:auto}}:host .header-main,:host .header-details,.header-details{display:flex;align-items:center;justify-content:space-between;background:var(--color-header-surface);position:relative}:host .header-main__title,:host .header-details .header-title,.header-details .header-title{position:absolute;left:50%;transform:translate(-50%);font-size:var(--font-size-base);font-weight:600;color:var(--color-header-content);margin:0;padding:0;--color: var(--color-header-content)}.header-details .header-title{transform:translate(-50%) translateY(-100%);opacity:0!important;pointer-events:none;transition:transform .2s ease,opacity .2s ease!important}.header-scrolled .header-details .header-title{opacity:1!important;pointer-events:auto;transform:translate(-50%) translateY(0)}:host .header-details .back-button,.header-details .back-button{background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:opacity var(--transition-duration-fast, .2s) var(--ease-smooth, ease);z-index:10;position:relative}:host .header-details .back-button:hover,.header-details .back-button:hover{opacity:.8}:host .header-details .back-button:active,.header-details .back-button:active{opacity:.6}:host ion-content{--background: var(--color-header-surface);--padding-top: 0;--padding-start: 0;--padding-end: 0;--padding-bottom: 0;border-radius:24px 24px 0 0;overflow:hidden}:host ion-content::part(scroll){display:flex;flex-direction:column;min-height:100%;-webkit-overflow-scrolling:touch}.plt-ios :host ion-content{--background: var(--color-background-neutral-primary)}@media (min-width: 768px){:host ion-content{border-radius:24px 24px 0 0}}:host ion-header[collapse=condense]{display:none}@media (min-width: 768px){:host ion-header[collapse=condense]{display:none}}:host ion-refresher{z-index:0}:host ion-refresher-content{--color: var(--color-header-content)}:host .content-wrapper{width:100%;position:relative;z-index:20;flex:1;display:flex;flex-direction:column;background:var(--color-background-neutral-primary);border-radius:24px 24px 0 0;overflow:visible;transform:translateZ(0);will-change:transform;isolation:isolate;box-shadow:0 300px 0 0 var(--color-background-neutral-primary);padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px);padding-bottom:calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + var(--app-safe-bottom, 0px))}:host .content-inner{max-width:640px;margin:0 auto;width:100%}@media (min-width: 768px){:host .content-wrapper{padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px)}}:host .header-expandable{background:var(--color-header-surface);padding:32px 20px 24px;color:var(--header-content-color, white);position:sticky;top:0;z-index:5;transition:opacity .1s ease-out,transform .1s ease-out}:host .header-expandable-inner{display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}:host .header-expandable__text{margin-bottom:0;gap:4px;display:flex;flex-direction:column}:host .header-expandable__title{font-size:var(--font-size-2xl);font-weight:600;color:var(--header-content-color, white);margin:0}:host .header-expandable__subtitle{font-size:var(--font-size-sm);font-weight:400;color:var(--header-content-color, white);opacity:.85;margin:0}@media (min-width: 768px){:host .header-expandable{padding:48px 20px 32px}:host .header-expandable__title{font-size:var(--font-size-3xl)}:host .header-expandable__subtitle{font-size:var(--font-size-base)}}@media (min-width: 992px){:host .header-expandable{padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg)}}@media (min-width: 1440px){:host .header-expandable{padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){:host .header-expandable{padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){:host .header-expandable{padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}\n", ".header-main{padding:0 20px;height:72px}.header-main__title{transform:translate(-50%) translateY(-100%);opacity:0;transition:transform .6s ease,opacity .6s ease;padding:0;--color: var(--color-header-content)}.header-scrolled .header-main__title{opacity:1;transform:translate(-50%) translateY(0)}.header-main__actions{display:flex;align-items:center;gap:8px}.header-main__actions ds-avatar{cursor:pointer;-webkit-tap-highlight-color:transparent}@media (min-width: 768px){.header-main{padding:16px 24px;height:88px}.header-main__title{display:none}}ion-refresher{--color: var(--color-header-content)}ion-refresher-content{--color: var(--color-header-content)}ion-refresher-content::part(spinner){color:var(--color-header-content)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsLogoComponent, selector: "ds-logo", inputs: ["variant", "size", "customHeight", "customWidth"] }, { kind: "component", type: DsMobileLoaderOverlayComponent, selector: "ds-mobile-loader-overlay", inputs: ["spinnerSize", "borderRadius"] }] });
4923
5070
  }
4924
5071
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobilePageMainComponent, decorators: [{
4925
5072
  type: Component,
4926
- args: [{ selector: 'ds-mobile-page-main', standalone: true, imports: [CommonModule, IonHeader, IonToolbar, IonTitle, IonContent, IonRefresher, IonRefresherContent, DsAvatarComponent, DsLogoComponent], host: {
5073
+ args: [{ selector: 'ds-mobile-page-main', standalone: true, imports: [CommonModule, IonHeader, IonToolbar, IonTitle, IonContent, IonRefresher, IonRefresherContent, DsAvatarComponent, DsLogoComponent, DsMobileLoaderOverlayComponent], host: {
4927
5074
  '[style.--content-wrapper-padding]': 'contentPadding()'
4928
5075
  }, template: `
4929
5076
  <!-- Fixed header at top -->
@@ -4953,7 +5100,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4953
5100
  </ion-header>
4954
5101
 
4955
5102
  <!-- Content with expandable header -->
4956
- <ion-content [scrollEvents]="true" (ionScroll)="handleScroll($event)">
5103
+ <ion-content [scrollEvents]="true" [forceOverscroll]="true" (ionScroll)="handleScroll($event)">
4957
5104
  <!-- Condensed header for Ionic scroll effects -->
4958
5105
  @if (showCondensedHeader()) {
4959
5106
  <ion-header collapse="condense">
@@ -4989,6 +5136,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4989
5136
 
4990
5137
  <!-- Content wrapper -->
4991
5138
  <div class="content-wrapper">
5139
+ @if (contentLoading()) {
5140
+ <ds-mobile-loader-overlay />
5141
+ }
5142
+
4992
5143
  <!-- Offline indicator slot (appears at top of content) -->
4993
5144
  <ng-content select="[offline-indicator]"></ng-content>
4994
5145
 
@@ -4998,7 +5149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4998
5149
  </div>
4999
5150
  </div>
5000
5151
  </ion-content>
5001
- `, styles: [":host{display:flex;flex-direction:column;align-items:center;height:100%;background:var(--color-header-surface);width:100%}:host ion-header{background:var(--color-header-surface);box-shadow:none;height:72px;min-height:72px;margin-top:var(--app-header-top-offset)}:host ion-header ion-toolbar{--background: var(--color-header-surface);--border-width: 0;--box-shadow: none;--padding-top: 0;--padding-bottom: 0;--padding-start: 0;--padding-end: 0;--min-height: 72px;height:72px;min-height:72px;padding:0}@media (min-width: 768px){:host ion-header{height:88px;min-height:88px}:host ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}}@media (min-width: 768px){:host ion-header{display:none;height:auto}}:host .header-main,:host .header-details,.header-details{display:flex;align-items:center;justify-content:space-between;background:var(--color-header-surface);position:relative}:host .header-main__title,:host .header-details .header-title,.header-details .header-title{position:absolute;left:50%;transform:translate(-50%);font-size:var(--font-size-base);font-weight:600;color:var(--color-header-content);margin:0;padding:0;--color: var(--color-header-content)}.header-details .header-title{transform:translate(-50%) translateY(-100%);opacity:0!important;pointer-events:none;transition:transform .2s ease,opacity .2s ease!important}.header-scrolled .header-details .header-title{opacity:1!important;pointer-events:auto;transform:translate(-50%) translateY(0)}:host .header-details .back-button,.header-details .back-button{background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:opacity var(--transition-duration-fast, .2s) var(--ease-smooth, ease);z-index:10;position:relative}:host .header-details .back-button:hover,.header-details .back-button:hover{opacity:.8}:host .header-details .back-button:active,.header-details .back-button:active{opacity:.6}:host ion-content{--background: var(--color-header-surface);--padding-top: 0;--padding-start: 0;--padding-end: 0;--padding-bottom: 0;border-radius:24px 24px 0 0;overflow:hidden}:host ion-content::part(scroll){display:flex;flex-direction:column;-webkit-overflow-scrolling:touch}.plt-ios :host ion-content{--background: var(--color-background-neutral-primary)}@media (min-width: 768px){:host ion-content{border-radius:24px 24px 0 0}}:host ion-header[collapse=condense]{display:none}@media (min-width: 768px){:host ion-header[collapse=condense]{display:none}}:host ion-refresher{z-index:0}:host ion-refresher-content{--color: var(--color-header-content)}:host .content-wrapper{width:100%;position:relative;z-index:20;flex:1;display:flex;flex-direction:column;background:var(--color-background-neutral-primary);border-radius:24px 24px 0 0;overflow:scroll;transform:translateZ(0);will-change:transform;isolation:isolate;box-shadow:0 300px 0 0 var(--color-background-neutral-primary);padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px);padding-bottom:calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + env(safe-area-inset-bottom,0px))}:host .content-inner{flex:1;max-width:640px;margin:0 auto;width:100%}@media (min-width: 768px){:host .content-wrapper{padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px)}}:host .header-expandable{background:var(--color-header-surface);padding:32px 20px 24px;color:var(--header-content-color, white);position:sticky;top:0;z-index:5;transition:opacity .1s ease-out,transform .1s ease-out}:host .header-expandable-inner{display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}:host .header-expandable__text{margin-bottom:0;gap:4px;display:flex;flex-direction:column}:host .header-expandable__title{font-size:var(--font-size-2xl);font-weight:600;color:var(--header-content-color, white);margin:0}:host .header-expandable__subtitle{font-size:var(--font-size-sm);font-weight:400;color:var(--header-content-color, white);opacity:.85;margin:0}@media (min-width: 768px){:host .header-expandable{padding:48px 20px 32px}:host .header-expandable__title{font-size:var(--font-size-3xl)}:host .header-expandable__subtitle{font-size:var(--font-size-base)}}@media (min-width: 992px){:host .header-expandable{padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg)}}@media (min-width: 1440px){:host .header-expandable{padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){:host .header-expandable{padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){:host .header-expandable{padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}\n", ".header-main{padding:0 20px;height:72px}.header-main__title{transform:translate(-50%) translateY(-100%);opacity:0;transition:transform .6s ease,opacity .6s ease;padding:0;--color: var(--color-header-content)}.header-scrolled .header-main__title{opacity:1;transform:translate(-50%) translateY(0)}.header-main__actions{display:flex;align-items:center;gap:8px}.header-main__actions ds-avatar{cursor:pointer;-webkit-tap-highlight-color:transparent}@media (min-width: 768px){.header-main{padding:16px 24px;height:88px}.header-main__title{display:none}}ion-refresher{--color: var(--color-header-content)}ion-refresher-content{--color: var(--color-header-content)}ion-refresher-content::part(spinner){color:var(--color-header-content)}\n"] }]
5152
+ `, styles: [":host{display:flex;flex-direction:column;align-items:center;height:100%;background:var(--color-header-surface);width:100%}:host ion-header{background:var(--color-header-surface);box-shadow:none;height:72px;min-height:72px;margin-top:var(--app-header-top-offset)}:host ion-header ion-toolbar{--background: var(--color-header-surface);--border-width: 0;--box-shadow: none;--padding-top: 0;--padding-bottom: 0;--padding-start: 0;--padding-end: 0;--min-height: 72px;height:72px;min-height:72px;padding:0}@media (min-width: 768px){:host ion-header{height:88px;min-height:88px}:host ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}}@media (min-width: 768px){:host ion-header{display:none;height:auto}}:host .header-main,:host .header-details,.header-details{display:flex;align-items:center;justify-content:space-between;background:var(--color-header-surface);position:relative}:host .header-main__title,:host .header-details .header-title,.header-details .header-title{position:absolute;left:50%;transform:translate(-50%);font-size:var(--font-size-base);font-weight:600;color:var(--color-header-content);margin:0;padding:0;--color: var(--color-header-content)}.header-details .header-title{transform:translate(-50%) translateY(-100%);opacity:0!important;pointer-events:none;transition:transform .2s ease,opacity .2s ease!important}.header-scrolled .header-details .header-title{opacity:1!important;pointer-events:auto;transform:translate(-50%) translateY(0)}:host .header-details .back-button,.header-details .back-button{background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:opacity var(--transition-duration-fast, .2s) var(--ease-smooth, ease);z-index:10;position:relative}:host .header-details .back-button:hover,.header-details .back-button:hover{opacity:.8}:host .header-details .back-button:active,.header-details .back-button:active{opacity:.6}:host ion-content{--background: var(--color-header-surface);--padding-top: 0;--padding-start: 0;--padding-end: 0;--padding-bottom: 0;border-radius:24px 24px 0 0;overflow:hidden}:host ion-content::part(scroll){display:flex;flex-direction:column;min-height:100%;-webkit-overflow-scrolling:touch}.plt-ios :host ion-content{--background: var(--color-background-neutral-primary)}@media (min-width: 768px){:host ion-content{border-radius:24px 24px 0 0}}:host ion-header[collapse=condense]{display:none}@media (min-width: 768px){:host ion-header[collapse=condense]{display:none}}:host ion-refresher{z-index:0}:host ion-refresher-content{--color: var(--color-header-content)}:host .content-wrapper{width:100%;position:relative;z-index:20;flex:1;display:flex;flex-direction:column;background:var(--color-background-neutral-primary);border-radius:24px 24px 0 0;overflow:visible;transform:translateZ(0);will-change:transform;isolation:isolate;box-shadow:0 300px 0 0 var(--color-background-neutral-primary);padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px);padding-bottom:calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + var(--app-safe-bottom, 0px))}:host .content-inner{max-width:640px;margin:0 auto;width:100%}@media (min-width: 768px){:host .content-wrapper{padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px)}}:host .header-expandable{background:var(--color-header-surface);padding:32px 20px 24px;color:var(--header-content-color, white);position:sticky;top:0;z-index:5;transition:opacity .1s ease-out,transform .1s ease-out}:host .header-expandable-inner{display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}:host .header-expandable__text{margin-bottom:0;gap:4px;display:flex;flex-direction:column}:host .header-expandable__title{font-size:var(--font-size-2xl);font-weight:600;color:var(--header-content-color, white);margin:0}:host .header-expandable__subtitle{font-size:var(--font-size-sm);font-weight:400;color:var(--header-content-color, white);opacity:.85;margin:0}@media (min-width: 768px){:host .header-expandable{padding:48px 20px 32px}:host .header-expandable__title{font-size:var(--font-size-3xl)}:host .header-expandable__subtitle{font-size:var(--font-size-base)}}@media (min-width: 992px){:host .header-expandable{padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg)}}@media (min-width: 1440px){:host .header-expandable{padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){:host .header-expandable{padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){:host .header-expandable{padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}\n", ".header-main{padding:0 20px;height:72px}.header-main__title{transform:translate(-50%) translateY(-100%);opacity:0;transition:transform .6s ease,opacity .6s ease;padding:0;--color: var(--color-header-content)}.header-scrolled .header-main__title{opacity:1;transform:translate(-50%) translateY(0)}.header-main__actions{display:flex;align-items:center;gap:8px}.header-main__actions ds-avatar{cursor:pointer;-webkit-tap-highlight-color:transparent}@media (min-width: 768px){.header-main{padding:16px 24px;height:88px}.header-main__title{display:none}}ion-refresher{--color: var(--color-header-content)}ion-refresher-content{--color: var(--color-header-content)}ion-refresher-content::part(spinner){color:var(--color-header-content)}\n"] }]
5002
5153
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { ionContent: [{
5003
5154
  type: ViewChild,
5004
5155
  args: [IonContent]
@@ -5383,7 +5534,7 @@ class DsMobilePageDetailsComponent extends MobilePageBase {
5383
5534
  </ion-header>
5384
5535
 
5385
5536
  <!-- Content with expandable header -->
5386
- <ion-content [scrollEvents]="true" (ionScroll)="handleScroll($event)">
5537
+ <ion-content [scrollEvents]="true" [forceOverscroll]="true" (ionScroll)="handleScroll($event)">
5387
5538
  <!-- Pull to refresh (only on native iOS/Android) -->
5388
5539
  @if (showRefresh() && isNativePlatform()) {
5389
5540
  <ion-refresher
@@ -5420,6 +5571,10 @@ class DsMobilePageDetailsComponent extends MobilePageBase {
5420
5571
 
5421
5572
  <!-- Content wrapper -->
5422
5573
  <div class="content-wrapper">
5574
+ @if (contentLoading()) {
5575
+ <ds-mobile-loader-overlay />
5576
+ }
5577
+
5423
5578
  <!-- Offline indicator slot (appears at top of content) -->
5424
5579
  <ng-content select="[offline-indicator]"></ng-content>
5425
5580
 
@@ -5428,7 +5583,7 @@ class DsMobilePageDetailsComponent extends MobilePageBase {
5428
5583
  </div>
5429
5584
  </div>
5430
5585
  </ion-content>
5431
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;align-items:center;height:100%;background:var(--color-header-surface);width:100%}:host ion-header{background:var(--color-header-surface);box-shadow:none;height:72px;min-height:72px;margin-top:var(--app-header-top-offset)}:host ion-header ion-toolbar{--background: var(--color-header-surface);--border-width: 0;--box-shadow: none;--padding-top: 0;--padding-bottom: 0;--padding-start: 0;--padding-end: 0;--min-height: 72px;height:72px;min-height:72px;padding:0}@media (min-width: 768px){:host ion-header{height:88px;min-height:88px}:host ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}}@media (min-width: 768px){:host ion-header{display:none;height:auto}}:host .header-main,:host .header-details,.header-details{display:flex;align-items:center;justify-content:space-between;background:var(--color-header-surface);position:relative}:host .header-main__title,:host .header-details .header-title,.header-details .header-title{position:absolute;left:50%;transform:translate(-50%);font-size:var(--font-size-base);font-weight:600;color:var(--color-header-content);margin:0;padding:0;--color: var(--color-header-content)}.header-details .header-title{transform:translate(-50%) translateY(-100%);opacity:0!important;pointer-events:none;transition:transform .2s ease,opacity .2s ease!important}.header-scrolled .header-details .header-title{opacity:1!important;pointer-events:auto;transform:translate(-50%) translateY(0)}:host .header-details .back-button,.header-details .back-button{background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:opacity var(--transition-duration-fast, .2s) var(--ease-smooth, ease);z-index:10;position:relative}:host .header-details .back-button:hover,.header-details .back-button:hover{opacity:.8}:host .header-details .back-button:active,.header-details .back-button:active{opacity:.6}:host ion-content{--background: var(--color-header-surface);--padding-top: 0;--padding-start: 0;--padding-end: 0;--padding-bottom: 0;border-radius:24px 24px 0 0;overflow:hidden}:host ion-content::part(scroll){display:flex;flex-direction:column;-webkit-overflow-scrolling:touch}.plt-ios :host ion-content{--background: var(--color-background-neutral-primary)}@media (min-width: 768px){:host ion-content{border-radius:24px 24px 0 0}}:host ion-header[collapse=condense]{display:none}@media (min-width: 768px){:host ion-header[collapse=condense]{display:none}}:host ion-refresher{z-index:0}:host ion-refresher-content{--color: var(--color-header-content)}:host .content-wrapper{width:100%;position:relative;z-index:20;flex:1;display:flex;flex-direction:column;background:var(--color-background-neutral-primary);border-radius:24px 24px 0 0;overflow:scroll;transform:translateZ(0);will-change:transform;isolation:isolate;box-shadow:0 300px 0 0 var(--color-background-neutral-primary);padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px);padding-bottom:calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + env(safe-area-inset-bottom,0px))}:host .content-inner{flex:1;max-width:640px;margin:0 auto;width:100%}@media (min-width: 768px){:host .content-wrapper{padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px)}}:host .header-expandable{background:var(--color-header-surface);padding:32px 20px 24px;color:var(--header-content-color, white);position:sticky;top:0;z-index:5;transition:opacity .1s ease-out,transform .1s ease-out}:host .header-expandable-inner{display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}:host .header-expandable__text{margin-bottom:0;gap:4px;display:flex;flex-direction:column}:host .header-expandable__title{font-size:var(--font-size-2xl);font-weight:600;color:var(--header-content-color, white);margin:0}:host .header-expandable__subtitle{font-size:var(--font-size-sm);font-weight:400;color:var(--header-content-color, white);opacity:.85;margin:0}@media (min-width: 768px){:host .header-expandable{padding:48px 20px 32px}:host .header-expandable__title{font-size:var(--font-size-3xl)}:host .header-expandable__subtitle{font-size:var(--font-size-base)}}@media (min-width: 992px){:host .header-expandable{padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg)}}@media (min-width: 1440px){:host .header-expandable{padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){:host .header-expandable{padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){:host .header-expandable{padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}\n", "ion-refresher{--color: var(--color-header-content)}ion-refresher-content{--color: var(--color-header-content)}ion-refresher-content::part(spinner){color:var(--color-header-content)}.header-details{gap:12px;padding:0 20px;height:72px;min-height:72px}:host .header-details .back-button{width:36px;height:36px;border-radius:50%;background:var(--color-header-accent)!important;flex-shrink:0;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:background var(--transition-duration-fast) var(--ease-smooth);z-index:10}:host .header-details .back-button:hover{background:var(--color-header-accent-hover)!important}:host .header-details .back-button:active{background:var(--color-header-accent-active)!important}.header-details .header-title{left:64px}@media (min-width: 768px){ion-header{display:block!important;height:88px;min-height:88px}ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}.header-details{padding:16px 24px;height:88px;min-height:88px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsMobileInlineTabsComponent, selector: "ds-mobile-inline-tabs", inputs: ["tabs", "activeTab"], outputs: ["tabChange"] }] });
5586
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;align-items:center;height:100%;background:var(--color-header-surface);width:100%}:host ion-header{background:var(--color-header-surface);box-shadow:none;height:72px;min-height:72px;margin-top:var(--app-header-top-offset)}:host ion-header ion-toolbar{--background: var(--color-header-surface);--border-width: 0;--box-shadow: none;--padding-top: 0;--padding-bottom: 0;--padding-start: 0;--padding-end: 0;--min-height: 72px;height:72px;min-height:72px;padding:0}@media (min-width: 768px){:host ion-header{height:88px;min-height:88px}:host ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}}@media (min-width: 768px){:host ion-header{display:none;height:auto}}:host .header-main,:host .header-details,.header-details{display:flex;align-items:center;justify-content:space-between;background:var(--color-header-surface);position:relative}:host .header-main__title,:host .header-details .header-title,.header-details .header-title{position:absolute;left:50%;transform:translate(-50%);font-size:var(--font-size-base);font-weight:600;color:var(--color-header-content);margin:0;padding:0;--color: var(--color-header-content)}.header-details .header-title{transform:translate(-50%) translateY(-100%);opacity:0!important;pointer-events:none;transition:transform .2s ease,opacity .2s ease!important}.header-scrolled .header-details .header-title{opacity:1!important;pointer-events:auto;transform:translate(-50%) translateY(0)}:host .header-details .back-button,.header-details .back-button{background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:opacity var(--transition-duration-fast, .2s) var(--ease-smooth, ease);z-index:10;position:relative}:host .header-details .back-button:hover,.header-details .back-button:hover{opacity:.8}:host .header-details .back-button:active,.header-details .back-button:active{opacity:.6}:host ion-content{--background: var(--color-header-surface);--padding-top: 0;--padding-start: 0;--padding-end: 0;--padding-bottom: 0;border-radius:24px 24px 0 0;overflow:hidden}:host ion-content::part(scroll){display:flex;flex-direction:column;min-height:100%;-webkit-overflow-scrolling:touch}.plt-ios :host ion-content{--background: var(--color-background-neutral-primary)}@media (min-width: 768px){:host ion-content{border-radius:24px 24px 0 0}}:host ion-header[collapse=condense]{display:none}@media (min-width: 768px){:host ion-header[collapse=condense]{display:none}}:host ion-refresher{z-index:0}:host ion-refresher-content{--color: var(--color-header-content)}:host .content-wrapper{width:100%;position:relative;z-index:20;flex:1;display:flex;flex-direction:column;background:var(--color-background-neutral-primary);border-radius:24px 24px 0 0;overflow:visible;transform:translateZ(0);will-change:transform;isolation:isolate;box-shadow:0 300px 0 0 var(--color-background-neutral-primary);padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px);padding-bottom:calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + var(--app-safe-bottom, 0px))}:host .content-inner{max-width:640px;margin:0 auto;width:100%}@media (min-width: 768px){:host .content-wrapper{padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px)}}:host .header-expandable{background:var(--color-header-surface);padding:32px 20px 24px;color:var(--header-content-color, white);position:sticky;top:0;z-index:5;transition:opacity .1s ease-out,transform .1s ease-out}:host .header-expandable-inner{display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}:host .header-expandable__text{margin-bottom:0;gap:4px;display:flex;flex-direction:column}:host .header-expandable__title{font-size:var(--font-size-2xl);font-weight:600;color:var(--header-content-color, white);margin:0}:host .header-expandable__subtitle{font-size:var(--font-size-sm);font-weight:400;color:var(--header-content-color, white);opacity:.85;margin:0}@media (min-width: 768px){:host .header-expandable{padding:48px 20px 32px}:host .header-expandable__title{font-size:var(--font-size-3xl)}:host .header-expandable__subtitle{font-size:var(--font-size-base)}}@media (min-width: 992px){:host .header-expandable{padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg)}}@media (min-width: 1440px){:host .header-expandable{padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){:host .header-expandable{padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){:host .header-expandable{padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}\n", "ion-refresher{--color: var(--color-header-content)}ion-refresher-content{--color: var(--color-header-content)}ion-refresher-content::part(spinner){color:var(--color-header-content)}.header-details{gap:12px;padding:0 20px;height:72px;min-height:72px}:host .header-details .back-button{width:36px;height:36px;border-radius:50%;background:var(--color-header-accent)!important;flex-shrink:0;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:background var(--transition-duration-fast) var(--ease-smooth);z-index:10}:host .header-details .back-button:hover{background:var(--color-header-accent-hover)!important}:host .header-details .back-button:active{background:var(--color-header-accent-active)!important}.header-details .header-title{left:64px}@media (min-width: 768px){ion-header{display:block!important;height:88px;min-height:88px}ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}.header-details{padding:16px 24px;height:88px;min-height:88px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsMobileLoaderOverlayComponent, selector: "ds-mobile-loader-overlay", inputs: ["spinnerSize", "borderRadius"] }, { kind: "component", type: DsMobileInlineTabsComponent, selector: "ds-mobile-inline-tabs", inputs: ["tabs", "activeTab"], outputs: ["tabChange"] }] });
5432
5587
  }
5433
5588
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobilePageDetailsComponent, decorators: [{
5434
5589
  type: Component,
@@ -5441,6 +5596,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5441
5596
  IonRefresher,
5442
5597
  IonRefresherContent,
5443
5598
  DsIconComponent,
5599
+ DsMobileLoaderOverlayComponent,
5444
5600
  DsMobileInlineTabsComponent
5445
5601
  ], host: {
5446
5602
  '[style.--content-wrapper-padding]': 'contentPadding()'
@@ -5461,7 +5617,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5461
5617
  </ion-header>
5462
5618
 
5463
5619
  <!-- Content with expandable header -->
5464
- <ion-content [scrollEvents]="true" (ionScroll)="handleScroll($event)">
5620
+ <ion-content [scrollEvents]="true" [forceOverscroll]="true" (ionScroll)="handleScroll($event)">
5465
5621
  <!-- Pull to refresh (only on native iOS/Android) -->
5466
5622
  @if (showRefresh() && isNativePlatform()) {
5467
5623
  <ion-refresher
@@ -5498,6 +5654,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5498
5654
 
5499
5655
  <!-- Content wrapper -->
5500
5656
  <div class="content-wrapper">
5657
+ @if (contentLoading()) {
5658
+ <ds-mobile-loader-overlay />
5659
+ }
5660
+
5501
5661
  <!-- Offline indicator slot (appears at top of content) -->
5502
5662
  <ng-content select="[offline-indicator]"></ng-content>
5503
5663
 
@@ -5506,7 +5666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5506
5666
  </div>
5507
5667
  </div>
5508
5668
  </ion-content>
5509
- `, styles: [":host{display:flex;flex-direction:column;align-items:center;height:100%;background:var(--color-header-surface);width:100%}:host ion-header{background:var(--color-header-surface);box-shadow:none;height:72px;min-height:72px;margin-top:var(--app-header-top-offset)}:host ion-header ion-toolbar{--background: var(--color-header-surface);--border-width: 0;--box-shadow: none;--padding-top: 0;--padding-bottom: 0;--padding-start: 0;--padding-end: 0;--min-height: 72px;height:72px;min-height:72px;padding:0}@media (min-width: 768px){:host ion-header{height:88px;min-height:88px}:host ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}}@media (min-width: 768px){:host ion-header{display:none;height:auto}}:host .header-main,:host .header-details,.header-details{display:flex;align-items:center;justify-content:space-between;background:var(--color-header-surface);position:relative}:host .header-main__title,:host .header-details .header-title,.header-details .header-title{position:absolute;left:50%;transform:translate(-50%);font-size:var(--font-size-base);font-weight:600;color:var(--color-header-content);margin:0;padding:0;--color: var(--color-header-content)}.header-details .header-title{transform:translate(-50%) translateY(-100%);opacity:0!important;pointer-events:none;transition:transform .2s ease,opacity .2s ease!important}.header-scrolled .header-details .header-title{opacity:1!important;pointer-events:auto;transform:translate(-50%) translateY(0)}:host .header-details .back-button,.header-details .back-button{background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:opacity var(--transition-duration-fast, .2s) var(--ease-smooth, ease);z-index:10;position:relative}:host .header-details .back-button:hover,.header-details .back-button:hover{opacity:.8}:host .header-details .back-button:active,.header-details .back-button:active{opacity:.6}:host ion-content{--background: var(--color-header-surface);--padding-top: 0;--padding-start: 0;--padding-end: 0;--padding-bottom: 0;border-radius:24px 24px 0 0;overflow:hidden}:host ion-content::part(scroll){display:flex;flex-direction:column;-webkit-overflow-scrolling:touch}.plt-ios :host ion-content{--background: var(--color-background-neutral-primary)}@media (min-width: 768px){:host ion-content{border-radius:24px 24px 0 0}}:host ion-header[collapse=condense]{display:none}@media (min-width: 768px){:host ion-header[collapse=condense]{display:none}}:host ion-refresher{z-index:0}:host ion-refresher-content{--color: var(--color-header-content)}:host .content-wrapper{width:100%;position:relative;z-index:20;flex:1;display:flex;flex-direction:column;background:var(--color-background-neutral-primary);border-radius:24px 24px 0 0;overflow:scroll;transform:translateZ(0);will-change:transform;isolation:isolate;box-shadow:0 300px 0 0 var(--color-background-neutral-primary);padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px);padding-bottom:calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + env(safe-area-inset-bottom,0px))}:host .content-inner{flex:1;max-width:640px;margin:0 auto;width:100%}@media (min-width: 768px){:host .content-wrapper{padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px)}}:host .header-expandable{background:var(--color-header-surface);padding:32px 20px 24px;color:var(--header-content-color, white);position:sticky;top:0;z-index:5;transition:opacity .1s ease-out,transform .1s ease-out}:host .header-expandable-inner{display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}:host .header-expandable__text{margin-bottom:0;gap:4px;display:flex;flex-direction:column}:host .header-expandable__title{font-size:var(--font-size-2xl);font-weight:600;color:var(--header-content-color, white);margin:0}:host .header-expandable__subtitle{font-size:var(--font-size-sm);font-weight:400;color:var(--header-content-color, white);opacity:.85;margin:0}@media (min-width: 768px){:host .header-expandable{padding:48px 20px 32px}:host .header-expandable__title{font-size:var(--font-size-3xl)}:host .header-expandable__subtitle{font-size:var(--font-size-base)}}@media (min-width: 992px){:host .header-expandable{padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg)}}@media (min-width: 1440px){:host .header-expandable{padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){:host .header-expandable{padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){:host .header-expandable{padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}\n", "ion-refresher{--color: var(--color-header-content)}ion-refresher-content{--color: var(--color-header-content)}ion-refresher-content::part(spinner){color:var(--color-header-content)}.header-details{gap:12px;padding:0 20px;height:72px;min-height:72px}:host .header-details .back-button{width:36px;height:36px;border-radius:50%;background:var(--color-header-accent)!important;flex-shrink:0;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:background var(--transition-duration-fast) var(--ease-smooth);z-index:10}:host .header-details .back-button:hover{background:var(--color-header-accent-hover)!important}:host .header-details .back-button:active{background:var(--color-header-accent-active)!important}.header-details .header-title{left:64px}@media (min-width: 768px){ion-header{display:block!important;height:88px;min-height:88px}ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}.header-details{padding:16px 24px;height:88px;min-height:88px}}\n"] }]
5669
+ `, styles: [":host{display:flex;flex-direction:column;align-items:center;height:100%;background:var(--color-header-surface);width:100%}:host ion-header{background:var(--color-header-surface);box-shadow:none;height:72px;min-height:72px;margin-top:var(--app-header-top-offset)}:host ion-header ion-toolbar{--background: var(--color-header-surface);--border-width: 0;--box-shadow: none;--padding-top: 0;--padding-bottom: 0;--padding-start: 0;--padding-end: 0;--min-height: 72px;height:72px;min-height:72px;padding:0}@media (min-width: 768px){:host ion-header{height:88px;min-height:88px}:host ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}}@media (min-width: 768px){:host ion-header{display:none;height:auto}}:host .header-main,:host .header-details,.header-details{display:flex;align-items:center;justify-content:space-between;background:var(--color-header-surface);position:relative}:host .header-main__title,:host .header-details .header-title,.header-details .header-title{position:absolute;left:50%;transform:translate(-50%);font-size:var(--font-size-base);font-weight:600;color:var(--color-header-content);margin:0;padding:0;--color: var(--color-header-content)}.header-details .header-title{transform:translate(-50%) translateY(-100%);opacity:0!important;pointer-events:none;transition:transform .2s ease,opacity .2s ease!important}.header-scrolled .header-details .header-title{opacity:1!important;pointer-events:auto;transform:translate(-50%) translateY(0)}:host .header-details .back-button,.header-details .back-button{background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:opacity var(--transition-duration-fast, .2s) var(--ease-smooth, ease);z-index:10;position:relative}:host .header-details .back-button:hover,.header-details .back-button:hover{opacity:.8}:host .header-details .back-button:active,.header-details .back-button:active{opacity:.6}:host ion-content{--background: var(--color-header-surface);--padding-top: 0;--padding-start: 0;--padding-end: 0;--padding-bottom: 0;border-radius:24px 24px 0 0;overflow:hidden}:host ion-content::part(scroll){display:flex;flex-direction:column;min-height:100%;-webkit-overflow-scrolling:touch}.plt-ios :host ion-content{--background: var(--color-background-neutral-primary)}@media (min-width: 768px){:host ion-content{border-radius:24px 24px 0 0}}:host ion-header[collapse=condense]{display:none}@media (min-width: 768px){:host ion-header[collapse=condense]{display:none}}:host ion-refresher{z-index:0}:host ion-refresher-content{--color: var(--color-header-content)}:host .content-wrapper{width:100%;position:relative;z-index:20;flex:1;display:flex;flex-direction:column;background:var(--color-background-neutral-primary);border-radius:24px 24px 0 0;overflow:visible;transform:translateZ(0);will-change:transform;isolation:isolate;box-shadow:0 300px 0 0 var(--color-background-neutral-primary);padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px);padding-bottom:calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + var(--app-safe-bottom, 0px))}:host .content-inner{max-width:640px;margin:0 auto;width:100%}@media (min-width: 768px){:host .content-wrapper{padding-top:0;padding-left:var(--content-wrapper-padding, 20px);padding-right:var(--content-wrapper-padding, 20px)}}:host .header-expandable{background:var(--color-header-surface);padding:32px 20px 24px;color:var(--header-content-color, white);position:sticky;top:0;z-index:5;transition:opacity .1s ease-out,transform .1s ease-out}:host .header-expandable-inner{display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}:host .header-expandable__text{margin-bottom:0;gap:4px;display:flex;flex-direction:column}:host .header-expandable__title{font-size:var(--font-size-2xl);font-weight:600;color:var(--header-content-color, white);margin:0}:host .header-expandable__subtitle{font-size:var(--font-size-sm);font-weight:400;color:var(--header-content-color, white);opacity:.85;margin:0}@media (min-width: 768px){:host .header-expandable{padding:48px 20px 32px}:host .header-expandable__title{font-size:var(--font-size-3xl)}:host .header-expandable__subtitle{font-size:var(--font-size-base)}}@media (min-width: 992px){:host .header-expandable{padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg)}}@media (min-width: 1440px){:host .header-expandable{padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){:host .header-expandable{padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){:host .header-expandable{padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}\n", "ion-refresher{--color: var(--color-header-content)}ion-refresher-content{--color: var(--color-header-content)}ion-refresher-content::part(spinner){color:var(--color-header-content)}.header-details{gap:12px;padding:0 20px;height:72px;min-height:72px}:host .header-details .back-button{width:36px;height:36px;border-radius:50%;background:var(--color-header-accent)!important;flex-shrink:0;border:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-header-content);transition:background var(--transition-duration-fast) var(--ease-smooth);z-index:10}:host .header-details .back-button:hover{background:var(--color-header-accent-hover)!important}:host .header-details .back-button:active{background:var(--color-header-accent-active)!important}.header-details .header-title{left:64px}@media (min-width: 768px){ion-header{display:block!important;height:88px;min-height:88px}ion-header ion-toolbar{--min-height: 88px;height:88px;min-height:88px}.header-details{padding:16px 24px;height:88px;min-height:88px}}\n"] }]
5510
5670
  }], ctorParameters: () => [{ type: i1.NavController }, { type: i0.ElementRef }], propDecorators: { ionContent: [{
5511
5671
  type: ViewChild,
5512
5672
  args: [IonContent]
@@ -6177,6 +6337,19 @@ class DsMobileCommentComponent {
6177
6337
  * Whether the comment is clickable
6178
6338
  */
6179
6339
  clickable = input(false, ...(ngDevMode ? [{ debugName: "clickable" }] : []));
6340
+ /**
6341
+ * Unified toggle for contextual actions (more button + long press).
6342
+ * - `true` — more button visible on **all** breakpoints, long press enabled
6343
+ * - `false` — more button hidden, long press suppressed
6344
+ * - `undefined` (default) — falls back to desktop-only button
6345
+ */
6346
+ moreActions = input(undefined, ...(ngDevMode ? [{ debugName: "moreActions" }] : []));
6347
+ shouldShowMoreButton = computed(() => {
6348
+ const ma = this.moreActions();
6349
+ if (ma !== undefined)
6350
+ return ma;
6351
+ return this.isDesktop();
6352
+ }, ...(ngDevMode ? [{ debugName: "shouldShowMoreButton" }] : []));
6180
6353
  /**
6181
6354
  * Whether this comment belongs to the current user
6182
6355
  */
@@ -6278,6 +6451,8 @@ class DsMobileCommentComponent {
6278
6451
  * Handle touch start for long press detection
6279
6452
  */
6280
6453
  handleTouchStart(event) {
6454
+ if (this.moreActions() === false)
6455
+ return;
6281
6456
  this.longPressTriggered = false;
6282
6457
  this.touchStartX = event.touches[0].clientX;
6283
6458
  this.touchStartY = event.touches[0].clientY;
@@ -6332,6 +6507,8 @@ class DsMobileCommentComponent {
6332
6507
  * Handle context menu (right-click on desktop) to trigger long press action
6333
6508
  */
6334
6509
  handleContextMenu(event) {
6510
+ if (this.moreActions() === false)
6511
+ return;
6335
6512
  event.preventDefault();
6336
6513
  this.longPress.emit();
6337
6514
  }
@@ -6346,7 +6523,7 @@ class DsMobileCommentComponent {
6346
6523
  this.longPress.emit();
6347
6524
  }
6348
6525
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileCommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6349
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileCommentComponent, isStandalone: true, selector: "ds-mobile-comment", inputs: { authorName: { classPropertyName: "authorName", publicName: "authorName", isSignal: true, isRequired: true, transformFunction: null }, authorRole: { classPropertyName: "authorRole", publicName: "authorRole", isSignal: true, isRequired: true, transformFunction: null }, timestamp: { classPropertyName: "timestamp", publicName: "timestamp", isSignal: true, isRequired: true, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, avatarInitials: { classPropertyName: "avatarInitials", publicName: "avatarInitials", isSignal: true, isRequired: false, transformFunction: null }, avatarType: { classPropertyName: "avatarType", publicName: "avatarType", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, isOwnComment: { classPropertyName: "isOwnComment", publicName: "isOwnComment", isSignal: true, isRequired: false, transformFunction: null }, isLiked: { classPropertyName: "isLiked", publicName: "isLiked", isSignal: true, isRequired: false, transformFunction: null }, likeCount: { classPropertyName: "likeCount", publicName: "likeCount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { likeToggled: "likeToggled", commentClick: "commentClick", replyClick: "replyClick", editClick: "editClick", longPress: "longPress" }, host: { listeners: { "click": "handleCommentClick($event)", "touchstart": "handleTouchStart($event)", "touchend": "handleTouchEnd($event)", "touchmove": "handleTouchMove($event)", "contextmenu": "handleContextMenu($event)" }, properties: { "class.clickable": "clickable()" } }, ngImport: i0, template: `
6526
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileCommentComponent, isStandalone: true, selector: "ds-mobile-comment", inputs: { authorName: { classPropertyName: "authorName", publicName: "authorName", isSignal: true, isRequired: true, transformFunction: null }, authorRole: { classPropertyName: "authorRole", publicName: "authorRole", isSignal: true, isRequired: true, transformFunction: null }, timestamp: { classPropertyName: "timestamp", publicName: "timestamp", isSignal: true, isRequired: true, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, avatarInitials: { classPropertyName: "avatarInitials", publicName: "avatarInitials", isSignal: true, isRequired: false, transformFunction: null }, avatarType: { classPropertyName: "avatarType", publicName: "avatarType", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, moreActions: { classPropertyName: "moreActions", publicName: "moreActions", isSignal: true, isRequired: false, transformFunction: null }, isOwnComment: { classPropertyName: "isOwnComment", publicName: "isOwnComment", isSignal: true, isRequired: false, transformFunction: null }, isLiked: { classPropertyName: "isLiked", publicName: "isLiked", isSignal: true, isRequired: false, transformFunction: null }, likeCount: { classPropertyName: "likeCount", publicName: "likeCount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { likeToggled: "likeToggled", commentClick: "commentClick", replyClick: "replyClick", editClick: "editClick", longPress: "longPress" }, host: { listeners: { "click": "handleCommentClick($event)", "touchstart": "handleTouchStart($event)", "touchend": "handleTouchEnd($event)", "touchmove": "handleTouchMove($event)", "contextmenu": "handleContextMenu($event)" }, properties: { "class.clickable": "clickable()" } }, ngImport: i0, template: `
6350
6527
  <div class="avatar-wrapper">
6351
6528
  <ds-avatar [initials]="avatarInitials()" [type]="avatarType()" size="sm" />
6352
6529
  </div>
@@ -6366,8 +6543,7 @@ class DsMobileCommentComponent {
6366
6543
  </div>
6367
6544
  </div>
6368
6545
 
6369
- <!-- Desktop more button - shown on tablet and above (768px+) -->
6370
- @if (isDesktop()) {
6546
+ @if (shouldShowMoreButton()) {
6371
6547
  <ds-icon-button class="desktop-more-button" icon="remixMoreFill" variant="secondary" size="sm" (clicked)="handleMoreButtonClick($event)" aria-label="More options">
6372
6548
  </ds-icon-button>
6373
6549
  }
@@ -6414,8 +6590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6414
6590
  </div>
6415
6591
  </div>
6416
6592
 
6417
- <!-- Desktop more button - shown on tablet and above (768px+) -->
6418
- @if (isDesktop()) {
6593
+ @if (shouldShowMoreButton()) {
6419
6594
  <ds-icon-button class="desktop-more-button" icon="remixMoreFill" variant="secondary" size="sm" (clicked)="handleMoreButtonClick($event)" aria-label="More options">
6420
6595
  </ds-icon-button>
6421
6596
  }
@@ -6432,7 +6607,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6432
6607
  </div>
6433
6608
  </div>
6434
6609
  `, 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}.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{display:flex;gap:12px;padding:8px;position:relative;border-radius:16px;transition:all .2s ease;background:var(--color-background-primary, #ffffff);margin-bottom:8px;margin-left:-8px;margin-right:-8px}:host:last-child{margin-bottom:0}:host:after{content:\"\";position:absolute;bottom:-4px;left:44px;right:8px;height:1px;background:var(--border-color-default)}:host:last-child:after{display:none}:host.clickable{cursor:pointer}:host.clickable:active{background:var(--color-background-neutral-primary-hover, #f5f5f5)}.avatar-wrapper{position:relative;display:flex;align-items:flex-start;justify-content:center;flex-shrink:0}.comment-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.comment-header{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.header-actions{display:flex;align-items:center;gap:4px;margin-left:auto}.desktop-more-button::ng-deep button{border-radius:50%!important}.action-like{display:flex;align-items:center;gap:2px;color:var(--color-text-secondary, #737373);cursor:pointer;transition:color .2s ease;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:18px}.like-count{opacity:1}.like-count.hidden{opacity:0}.action-like.active{color:#f91880}.icon-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.icon-pulse{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:0;pointer-events:none}.icon-pulse.animating{animation:pulse .4s cubic-bezier(.4,0,.2,1)}@keyframes pulse{0%{transform:translate(-50%,-50%) scale(1);opacity:.8}to{transform:translate(-50%,-50%) scale(2.5);opacity:0}}.comment-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:22px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:pre-wrap;word-wrap:break-word}.comment-text ::ng-deep .mention{color:var(--color-accent, #6b5ff5)!important;font-weight:600}.comment-actions{display:flex;align-items:center;gap:12px;margin-top:4px}.action-reply{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-text-secondary, #737373);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:color .2s ease}.action-reply:hover{color:var(--color-text-primary, #1a1a1a)}.action-edit{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-text-secondary, #737373);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:color .2s ease}.action-edit:hover{color:var(--color-text-primary, #1a1a1a)}\n"] }]
6435
- }], ctorParameters: () => [], propDecorators: { authorName: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorName", required: true }] }], authorRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorRole", required: true }] }], timestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timestamp", required: true }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], avatarInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarInitials", required: false }] }], avatarType: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarType", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], isOwnComment: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOwnComment", required: false }] }], isLiked: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLiked", required: false }] }], likeToggled: [{ type: i0.Output, args: ["likeToggled"] }], likeCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "likeCount", required: false }] }], commentClick: [{ type: i0.Output, args: ["commentClick"] }], replyClick: [{ type: i0.Output, args: ["replyClick"] }], editClick: [{ type: i0.Output, args: ["editClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
6610
+ }], ctorParameters: () => [], propDecorators: { authorName: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorName", required: true }] }], authorRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorRole", required: true }] }], timestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timestamp", required: true }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], avatarInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarInitials", required: false }] }], avatarType: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarType", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], moreActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreActions", required: false }] }], isOwnComment: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOwnComment", required: false }] }], isLiked: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLiked", required: false }] }], likeToggled: [{ type: i0.Output, args: ["likeToggled"] }], likeCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "likeCount", required: false }] }], commentClick: [{ type: i0.Output, args: ["commentClick"] }], replyClick: [{ type: i0.Output, args: ["replyClick"] }], editClick: [{ type: i0.Output, args: ["editClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
6436
6611
 
6437
6612
  /**
6438
6613
  * DsMobilePostComposerComponent
@@ -6531,92 +6706,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6531
6706
  `, styles: [":host{display:block;max-width:640px;cursor:pointer;transition:all .2s ease}.composer-container{display:flex;align-items:center;gap:12px}.composer-input-wrapper{flex:1;min-width:0}.composer-input{width:100%;background:rgba(var(--header-content-color-rgb, 255, 255, 255),.1);border:none;border-radius:24px;padding:10px 16px;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;color:rgba(var(--header-content-color-rgb, 255, 255, 255),.75);outline:none;cursor:pointer;transition:all .2s ease;pointer-events:none;-webkit-user-select:none;user-select:none}.composer-input::placeholder{color:rgba(var(--header-content-color-rgb, 255, 255, 255),.75);opacity:1}@media (hover: hover){:host:hover .composer-input{opacity:.8}}\n"] }]
6532
6707
  }], 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 }] }], avatarIconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarIconName", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], buttonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonText", required: false }] }], composerClick: [{ type: i0.Output, args: ["composerClick"] }] } });
6533
6708
 
6534
- /**
6535
- * DsMobileLoaderOverlayComponent
6536
- *
6537
- * Reusable loader overlay component that displays a spinner centered over its container.
6538
- * Designed to overlay images or other content during loading states.
6539
- *
6540
- * Features:
6541
- * - Semi-transparent white background overlay
6542
- * - Centered animated spinner
6543
- * - Customizable spinner size
6544
- * - Absolute positioning to cover parent
6545
- * - Accessible with proper z-index stacking
6546
- *
6547
- * @example
6548
- * ```html
6549
- * <!-- Basic usage -->
6550
- * <div style="position: relative;">
6551
- * <img src="image.jpg" alt="Content" />
6552
- * @if (isLoading) {
6553
- * <ds-mobile-loader-overlay />
6554
- * }
6555
- * </div>
6556
- *
6557
- * <!-- With custom spinner size -->
6558
- * <div style="position: relative;">
6559
- * <div class="content">Loading content...</div>
6560
- * <ds-mobile-loader-overlay [spinnerSize]="32" />
6561
- * </div>
6562
- *
6563
- * <!-- Over an image with rounded corners -->
6564
- * <div style="position: relative; border-radius: 12px; overflow: hidden;">
6565
- * <img src="photo.jpg" />
6566
- * <ds-mobile-loader-overlay [borderRadius]="12" />
6567
- * </div>
6568
- * ```
6569
- *
6570
- * @notes
6571
- * - Parent container must have position: relative for the overlay to work correctly
6572
- * - The overlay covers the entire parent element using inset: 0
6573
- * - Spinner animation runs continuously at 0.6s per rotation
6574
- */
6575
- class DsMobileLoaderOverlayComponent {
6576
- /**
6577
- * Size of the spinner in pixels
6578
- * @default 24
6579
- */
6580
- spinnerSize = input(24, ...(ngDevMode ? [{ debugName: "spinnerSize" }] : []));
6581
- /**
6582
- * Border radius of the overlay in pixels (should match parent's border radius)
6583
- * @default 0
6584
- */
6585
- borderRadius = input(0, ...(ngDevMode ? [{ debugName: "borderRadius" }] : []));
6586
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileLoaderOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6587
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: DsMobileLoaderOverlayComponent, isStandalone: true, selector: "ds-mobile-loader-overlay", inputs: { spinnerSize: { classPropertyName: "spinnerSize", publicName: "spinnerSize", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
6588
- <div
6589
- class="loader-overlay"
6590
- [style.border-radius.px]="borderRadius()"
6591
- role="status"
6592
- aria-live="polite"
6593
- aria-label="Loading">
6594
- <div
6595
- class="spinner"
6596
- [style.width.px]="spinnerSize()"
6597
- [style.height.px]="spinnerSize()">
6598
- </div>
6599
- </div>
6600
- `, isInline: true, styles: [":host{display:contents}.loader-overlay{position:absolute;inset:0;background:#ffffffe6;display:flex;align-items:center;justify-content:center;z-index:2}.spinner{border:2px solid var(--color-border-neutral-secondary, #E5E5E5);border-top-color:var(--color-accent, #6B5FF5);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-color-scheme: dark){.loader-overlay{background:#000c}.spinner{border-color:#fff3;border-top-color:var(--color-accent, #6B5FF5)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
6601
- }
6602
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileLoaderOverlayComponent, decorators: [{
6603
- type: Component,
6604
- args: [{ selector: 'ds-mobile-loader-overlay', standalone: true, imports: [CommonModule], template: `
6605
- <div
6606
- class="loader-overlay"
6607
- [style.border-radius.px]="borderRadius()"
6608
- role="status"
6609
- aria-live="polite"
6610
- aria-label="Loading">
6611
- <div
6612
- class="spinner"
6613
- [style.width.px]="spinnerSize()"
6614
- [style.height.px]="spinnerSize()">
6615
- </div>
6616
- </div>
6617
- `, styles: [":host{display:contents}.loader-overlay{position:absolute;inset:0;background:#ffffffe6;display:flex;align-items:center;justify-content:center;z-index:2}.spinner{border:2px solid var(--color-border-neutral-secondary, #E5E5E5);border-top-color:var(--color-accent, #6B5FF5);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-color-scheme: dark){.loader-overlay{background:#000c}.spinner{border-color:#fff3;border-top-color:var(--color-accent, #6B5FF5)}}\n"] }]
6618
- }], propDecorators: { spinnerSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "spinnerSize", required: false }] }], borderRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderRadius", required: false }] }] } });
6619
-
6620
6709
  /**
6621
6710
  * DsMobileAttachmentPreviewComponent
6622
6711
  *
@@ -8580,6 +8669,11 @@ class DsMobileInteractiveListItemPostComponent {
8580
8669
  * @default true
8581
8670
  */
8582
8671
  enableLongPress = input(true, ...(ngDevMode ? [{ debugName: "enableLongPress" }] : []));
8672
+ /**
8673
+ * Unified toggle for contextual actions (more button + long press).
8674
+ * When set, takes precedence over `enableLongPress`.
8675
+ */
8676
+ moreActions = input(undefined, ...(ngDevMode ? [{ debugName: "moreActions" }] : []));
8583
8677
  /**
8584
8678
  * Emits when the post card is clicked (if clickable)
8585
8679
  */
@@ -8607,13 +8701,14 @@ class DsMobileInteractiveListItemPostComponent {
8607
8701
  this.longPress.emit();
8608
8702
  }
8609
8703
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileInteractiveListItemPostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8610
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: DsMobileInteractiveListItemPostComponent, isStandalone: true, selector: "ds-mobile-interactive-list-item-post", inputs: { authorName: { classPropertyName: "authorName", publicName: "authorName", isSignal: true, isRequired: true, transformFunction: null }, authorRole: { classPropertyName: "authorRole", publicName: "authorRole", isSignal: true, isRequired: true, transformFunction: null }, timestamp: { classPropertyName: "timestamp", publicName: "timestamp", isSignal: true, isRequired: true, 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 }, avatarIconName: { classPropertyName: "avatarIconName", publicName: "avatarIconName", isSignal: true, isRequired: false, transformFunction: null }, showBadge: { classPropertyName: "showBadge", publicName: "showBadge", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, enableLongPress: { classPropertyName: "enableLongPress", publicName: "enableLongPress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { postClick: "postClick", commentClick: "commentClick", longPress: "longPress" }, ngImport: i0, template: `
8704
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: DsMobileInteractiveListItemPostComponent, isStandalone: true, selector: "ds-mobile-interactive-list-item-post", inputs: { authorName: { classPropertyName: "authorName", publicName: "authorName", isSignal: true, isRequired: true, transformFunction: null }, authorRole: { classPropertyName: "authorRole", publicName: "authorRole", isSignal: true, isRequired: true, transformFunction: null }, timestamp: { classPropertyName: "timestamp", publicName: "timestamp", isSignal: true, isRequired: true, 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 }, avatarIconName: { classPropertyName: "avatarIconName", publicName: "avatarIconName", isSignal: true, isRequired: false, transformFunction: null }, showBadge: { classPropertyName: "showBadge", publicName: "showBadge", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, enableLongPress: { classPropertyName: "enableLongPress", publicName: "enableLongPress", isSignal: true, isRequired: false, transformFunction: null }, moreActions: { classPropertyName: "moreActions", publicName: "moreActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { postClick: "postClick", commentClick: "commentClick", longPress: "longPress" }, ngImport: i0, template: `
8611
8705
  <ds-mobile-list-item
8612
8706
  [leadingSize]="'32px'"
8613
8707
  [align]="align()"
8614
8708
  [variant]="variant()"
8615
8709
  [interactive]="clickable()"
8616
8710
  [enableLongPress]="enableLongPress()"
8711
+ [moreActions]="moreActions()"
8617
8712
  (itemClick)="handlePostClick()"
8618
8713
  (longPress)="handleLongPress()"
8619
8714
  (moreButtonClick)="handleMoreButtonClick($event)">
@@ -8646,7 +8741,7 @@ class DsMobileInteractiveListItemPostComponent {
8646
8741
  <ng-content select="post-actions" />
8647
8742
  </div>
8648
8743
  </ds-mobile-list-item>
8649
- `, isInline: true, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.post-header{display:flex;align-items:center;justify-content:space-between;height:32px;margin-bottom:8px}.menu-slot{flex-shrink:0}\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: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
8744
+ `, isInline: true, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.post-header{display:flex;align-items:center;justify-content:space-between;height:32px;margin-bottom:8px}.menu-slot{flex-shrink:0}\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: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "moreActions", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
8650
8745
  }
8651
8746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileInteractiveListItemPostComponent, decorators: [{
8652
8747
  type: Component,
@@ -8657,6 +8752,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
8657
8752
  [variant]="variant()"
8658
8753
  [interactive]="clickable()"
8659
8754
  [enableLongPress]="enableLongPress()"
8755
+ [moreActions]="moreActions()"
8660
8756
  (itemClick)="handlePostClick()"
8661
8757
  (longPress)="handleLongPress()"
8662
8758
  (moreButtonClick)="handleMoreButtonClick($event)">
@@ -8690,7 +8786,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
8690
8786
  </div>
8691
8787
  </ds-mobile-list-item>
8692
8788
  `, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.post-header{display:flex;align-items:center;justify-content:space-between;height:32px;margin-bottom:8px}.menu-slot{flex-shrink:0}\n"] }]
8693
- }], propDecorators: { authorName: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorName", required: true }] }], authorRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorRole", required: true }] }], timestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timestamp", required: true }] }], 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 }] }], avatarIconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarIconName", required: false }] }], showBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBadge", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], postClick: [{ type: i0.Output, args: ["postClick"] }], commentClick: [{ type: i0.Output, args: ["commentClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
8789
+ }], propDecorators: { authorName: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorName", required: true }] }], authorRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorRole", required: true }] }], timestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timestamp", required: true }] }], 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 }] }], avatarIconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarIconName", required: false }] }], showBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBadge", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], moreActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreActions", required: false }] }], postClick: [{ type: i0.Output, args: ["postClick"] }], commentClick: [{ type: i0.Output, args: ["commentClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
8694
8790
  /**
8695
8791
  * PostContentComponent
8696
8792
  *
@@ -9056,6 +9152,11 @@ class DsMobileInteractiveListItemInquiryComponent {
9056
9152
  * @default true
9057
9153
  */
9058
9154
  enableLongPress = input(true, ...(ngDevMode ? [{ debugName: "enableLongPress" }] : []));
9155
+ /**
9156
+ * Unified toggle for contextual actions (more button + long press).
9157
+ * When set, takes precedence over `enableLongPress`.
9158
+ */
9159
+ moreActions = input(undefined, ...(ngDevMode ? [{ debugName: "moreActions" }] : []));
9059
9160
  /**
9060
9161
  * Emits when the inquiry item is clicked (if clickable)
9061
9162
  */
@@ -9084,13 +9185,14 @@ class DsMobileInteractiveListItemInquiryComponent {
9084
9185
  this.longPress.emit();
9085
9186
  }
9086
9187
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileInteractiveListItemInquiryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9087
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileInteractiveListItemInquiryComponent, isStandalone: true, selector: "ds-mobile-interactive-list-item-inquiry", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, statusLabel: { classPropertyName: "statusLabel", publicName: "statusLabel", isSignal: true, isRequired: false, transformFunction: null }, timestamp: { classPropertyName: "timestamp", publicName: "timestamp", isSignal: true, isRequired: true, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, showChevron: { classPropertyName: "showChevron", publicName: "showChevron", isSignal: true, isRequired: false, transformFunction: null }, enableLongPress: { classPropertyName: "enableLongPress", publicName: "enableLongPress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inquiryClick: "inquiryClick", longPress: "longPress" }, ngImport: i0, template: `
9188
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileInteractiveListItemInquiryComponent, isStandalone: true, selector: "ds-mobile-interactive-list-item-inquiry", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, statusLabel: { classPropertyName: "statusLabel", publicName: "statusLabel", isSignal: true, isRequired: false, transformFunction: null }, timestamp: { classPropertyName: "timestamp", publicName: "timestamp", isSignal: true, isRequired: true, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, showChevron: { classPropertyName: "showChevron", publicName: "showChevron", isSignal: true, isRequired: false, transformFunction: null }, enableLongPress: { classPropertyName: "enableLongPress", publicName: "enableLongPress", isSignal: true, isRequired: false, transformFunction: null }, moreActions: { classPropertyName: "moreActions", publicName: "moreActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inquiryClick: "inquiryClick", longPress: "longPress" }, ngImport: i0, template: `
9088
9189
  <ds-mobile-list-item
9089
9190
  [leadingSize]="'32px'"
9090
9191
  [align]="align()"
9091
9192
  [variant]="variant()"
9092
9193
  [interactive]="clickable()"
9093
9194
  [enableLongPress]="enableLongPress()"
9195
+ [moreActions]="moreActions()"
9094
9196
  (itemClick)="handleInquiryClick()"
9095
9197
  (longPress)="handleLongPress()"
9096
9198
  (moreButtonClick)="handleMoreButtonClick($event)">
@@ -9138,7 +9240,7 @@ class DsMobileInteractiveListItemInquiryComponent {
9138
9240
  </div>
9139
9241
  }
9140
9242
  </ds-mobile-list-item>
9141
- `, isInline: true, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.inquiry-avatar{flex-shrink:0}.inquiry-avatar:not(.closed)::ng-deep .avatar--icon{background-color:var(--color-accent, #5d5fef)!important}.inquiry-avatar:not(.closed)::ng-deep .avatar--icon ds-icon,.inquiry-avatar:not(.closed)::ng-deep .avatar--icon ds-icon::ng-deep svg{color:var(--color-on-accent, #ffffff)!important;fill:var(--color-on-accent, #ffffff)!important}.inquiry-avatar.closed::ng-deep .avatar--icon{background-color:var(--text-color-default-tertiary, #737373)!important}.inquiry-avatar.closed::ng-deep .avatar--icon ds-icon,.inquiry-avatar.closed::ng-deep .avatar--icon ds-icon::ng-deep svg{color:#fff!important;fill:#fff!important}.inquiry-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.inquiry-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inquiry-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.inquiry-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.inquiry-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.inquiry-status.open,.inquiry-status.closed{color:var(--text-color-default-tertiary, #737373)}.inquiry-timestamp{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.inquiry-trailing{display:flex;align-items:center;color:var(--color-text-tertiary, #a3a3a3)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsShapeIndicatorComponent, selector: "ds-shape-indicator", inputs: ["shape", "variant", "label"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
9243
+ `, isInline: true, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.inquiry-avatar{flex-shrink:0}.inquiry-avatar:not(.closed)::ng-deep .avatar--icon{background-color:var(--color-accent, #5d5fef)!important}.inquiry-avatar:not(.closed)::ng-deep .avatar--icon ds-icon,.inquiry-avatar:not(.closed)::ng-deep .avatar--icon ds-icon::ng-deep svg{color:var(--color-on-accent, #ffffff)!important;fill:var(--color-on-accent, #ffffff)!important}.inquiry-avatar.closed::ng-deep .avatar--icon{background-color:var(--text-color-default-tertiary, #737373)!important}.inquiry-avatar.closed::ng-deep .avatar--icon ds-icon,.inquiry-avatar.closed::ng-deep .avatar--icon ds-icon::ng-deep svg{color:#fff!important;fill:#fff!important}.inquiry-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.inquiry-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inquiry-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.inquiry-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.inquiry-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.inquiry-status.open,.inquiry-status.closed{color:var(--text-color-default-tertiary, #737373)}.inquiry-timestamp{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.inquiry-trailing{display:flex;align-items:center;color:var(--color-text-tertiary, #a3a3a3)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsShapeIndicatorComponent, selector: "ds-shape-indicator", inputs: ["shape", "variant", "label"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "moreActions", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
9142
9244
  }
9143
9245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileInteractiveListItemInquiryComponent, decorators: [{
9144
9246
  type: Component,
@@ -9149,6 +9251,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9149
9251
  [variant]="variant()"
9150
9252
  [interactive]="clickable()"
9151
9253
  [enableLongPress]="enableLongPress()"
9254
+ [moreActions]="moreActions()"
9152
9255
  (itemClick)="handleInquiryClick()"
9153
9256
  (longPress)="handleLongPress()"
9154
9257
  (moreButtonClick)="handleMoreButtonClick($event)">
@@ -9197,7 +9300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9197
9300
  }
9198
9301
  </ds-mobile-list-item>
9199
9302
  `, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.inquiry-avatar{flex-shrink:0}.inquiry-avatar:not(.closed)::ng-deep .avatar--icon{background-color:var(--color-accent, #5d5fef)!important}.inquiry-avatar:not(.closed)::ng-deep .avatar--icon ds-icon,.inquiry-avatar:not(.closed)::ng-deep .avatar--icon ds-icon::ng-deep svg{color:var(--color-on-accent, #ffffff)!important;fill:var(--color-on-accent, #ffffff)!important}.inquiry-avatar.closed::ng-deep .avatar--icon{background-color:var(--text-color-default-tertiary, #737373)!important}.inquiry-avatar.closed::ng-deep .avatar--icon ds-icon,.inquiry-avatar.closed::ng-deep .avatar--icon ds-icon::ng-deep svg{color:#fff!important;fill:#fff!important}.inquiry-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.inquiry-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inquiry-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.inquiry-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.inquiry-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.inquiry-status.open,.inquiry-status.closed{color:var(--text-color-default-tertiary, #737373)}.inquiry-timestamp{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.inquiry-trailing{display:flex;align-items:center;color:var(--color-text-tertiary, #a3a3a3)}\n"] }]
9200
- }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusLabel", required: false }] }], timestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timestamp", required: true }] }], iconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconName", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], showChevron: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChevron", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], inquiryClick: [{ type: i0.Output, args: ["inquiryClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
9303
+ }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusLabel", required: false }] }], timestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timestamp", required: true }] }], iconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconName", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], showChevron: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChevron", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], moreActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreActions", required: false }] }], inquiryClick: [{ type: i0.Output, args: ["inquiryClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
9201
9304
 
9202
9305
  /**
9203
9306
  * DsMobileInteractiveListItemMessageComponent
@@ -9286,6 +9389,7 @@ class DsMobileInteractiveListItemMessageComponent {
9286
9389
  [interactive]="clickable()"
9287
9390
  [enableLongPress]="false"
9288
9391
  [showDesktopMoreButton]="false"
9392
+ [moreActions]="false"
9289
9393
  (itemClick)="handleMessageClick()">
9290
9394
 
9291
9395
  <div content-leading>
@@ -9318,7 +9422,7 @@ class DsMobileInteractiveListItemMessageComponent {
9318
9422
  <p class="message-preview">{{ message() }}</p>
9319
9423
  </div>
9320
9424
  </ds-mobile-list-item>
9321
- `, isInline: true, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.message-header{display:flex;align-items:center;justify-content:space-between;height:32px;margin-bottom:8px}.sender-details{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:1;min-width:0}.sender-name-row{display:flex;align-items:center;gap:6px;flex-shrink:0}.sender-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.sender-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-tertiary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;display:flex;align-items:center;gap:4px}.meta-separator{color:var(--text-color-default-tertiary, #737373);opacity:.5}.unread-indicator{width:8px;height:8px;border-radius:50%;background:var(--color-brand-primary, #5d5fef);flex-shrink:0}.message-preview{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}\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: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
9425
+ `, isInline: true, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.message-header{display:flex;align-items:center;justify-content:space-between;height:32px;margin-bottom:8px}.sender-details{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:1;min-width:0}.sender-name-row{display:flex;align-items:center;gap:6px;flex-shrink:0}.sender-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.sender-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-tertiary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;display:flex;align-items:center;gap:4px}.meta-separator{color:var(--text-color-default-tertiary, #737373);opacity:.5}.unread-indicator{width:8px;height:8px;border-radius:50%;background:var(--color-brand-primary, #5d5fef);flex-shrink:0}.message-preview{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}\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: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "moreActions", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
9322
9426
  }
9323
9427
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileInteractiveListItemMessageComponent, decorators: [{
9324
9428
  type: Component,
@@ -9329,6 +9433,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9329
9433
  [interactive]="clickable()"
9330
9434
  [enableLongPress]="false"
9331
9435
  [showDesktopMoreButton]="false"
9436
+ [moreActions]="false"
9332
9437
  (itemClick)="handleMessageClick()">
9333
9438
 
9334
9439
  <div content-leading>
@@ -9580,6 +9685,11 @@ class DsMobileInteractiveListItemBookingComponent {
9580
9685
  * @default true
9581
9686
  */
9582
9687
  enableLongPress = input(true, ...(ngDevMode ? [{ debugName: "enableLongPress" }] : []));
9688
+ /**
9689
+ * Unified toggle for contextual actions (more button + long press).
9690
+ * When set, takes precedence over `enableLongPress`.
9691
+ */
9692
+ moreActions = input(undefined, ...(ngDevMode ? [{ debugName: "moreActions" }] : []));
9583
9693
  /**
9584
9694
  * Emits when the booking item is clicked (if clickable)
9585
9695
  */
@@ -9610,13 +9720,14 @@ class DsMobileInteractiveListItemBookingComponent {
9610
9720
  this.longPress.emit();
9611
9721
  }
9612
9722
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileInteractiveListItemBookingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9613
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileInteractiveListItemBookingComponent, isStandalone: true, selector: "ds-mobile-interactive-list-item-booking", inputs: { thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: false, transformFunction: null }, facilityTitle: { classPropertyName: "facilityTitle", publicName: "facilityTitle", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, bookingDate: { classPropertyName: "bookingDate", publicName: "bookingDate", isSignal: true, isRequired: false, transformFunction: null }, bookingTime: { classPropertyName: "bookingTime", publicName: "bookingTime", isSignal: true, isRequired: false, transformFunction: null }, availabilityStatus: { classPropertyName: "availabilityStatus", publicName: "availabilityStatus", isSignal: true, isRequired: false, transformFunction: null }, statusLabel: { classPropertyName: "statusLabel", publicName: "statusLabel", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, showChevron: { classPropertyName: "showChevron", publicName: "showChevron", isSignal: true, isRequired: false, transformFunction: null }, enableLongPress: { classPropertyName: "enableLongPress", publicName: "enableLongPress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { bookingClick: "bookingClick", longPress: "longPress" }, ngImport: i0, template: `
9723
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileInteractiveListItemBookingComponent, isStandalone: true, selector: "ds-mobile-interactive-list-item-booking", inputs: { thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: false, transformFunction: null }, facilityTitle: { classPropertyName: "facilityTitle", publicName: "facilityTitle", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, bookingDate: { classPropertyName: "bookingDate", publicName: "bookingDate", isSignal: true, isRequired: false, transformFunction: null }, bookingTime: { classPropertyName: "bookingTime", publicName: "bookingTime", isSignal: true, isRequired: false, transformFunction: null }, availabilityStatus: { classPropertyName: "availabilityStatus", publicName: "availabilityStatus", isSignal: true, isRequired: false, transformFunction: null }, statusLabel: { classPropertyName: "statusLabel", publicName: "statusLabel", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, showChevron: { classPropertyName: "showChevron", publicName: "showChevron", isSignal: true, isRequired: false, transformFunction: null }, enableLongPress: { classPropertyName: "enableLongPress", publicName: "enableLongPress", isSignal: true, isRequired: false, transformFunction: null }, moreActions: { classPropertyName: "moreActions", publicName: "moreActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { bookingClick: "bookingClick", longPress: "longPress" }, ngImport: i0, template: `
9614
9724
  <ds-mobile-list-item
9615
9725
  [leadingSize]="'64px'"
9616
9726
  [align]="align()"
9617
9727
  [variant]="variant()"
9618
9728
  [interactive]="clickable()"
9619
9729
  [enableLongPress]="enableLongPress()"
9730
+ [moreActions]="moreActions()"
9620
9731
  (itemClick)="handleBookingClick()"
9621
9732
  (longPress)="handleLongPress()"
9622
9733
  (moreButtonClick)="handleMoreButtonClick($event)">
@@ -9680,7 +9791,7 @@ class DsMobileInteractiveListItemBookingComponent {
9680
9791
  </div>
9681
9792
  }
9682
9793
  </ds-mobile-list-item>
9683
- `, isInline: true, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.booking-thumbnail{flex-shrink:0;width:64px;height:64px;border-radius:12px;overflow:hidden;background:var(--color-surface-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center}.booking-thumbnail img{width:100%;height:100%;object-fit:cover}.booking-thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-color-default-tertiary, #737373)}.booking-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.booking-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.booking-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.booking-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-status.available-today{color:var(--color-accent, #5d5fef)}.booking-status.available-from{color:var(--color-warning, #f59e0b)}.booking-status.unavailable{color:var(--text-color-default-tertiary, #737373)}.booking-datetime{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-trailing{display:flex;align-items:center;color:var(--color-text-tertiary, #a3a3a3)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsShapeIndicatorComponent, selector: "ds-shape-indicator", inputs: ["shape", "variant", "label"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
9794
+ `, isInline: true, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.booking-thumbnail{flex-shrink:0;width:64px;height:64px;border-radius:12px;overflow:hidden;background:var(--color-surface-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center}.booking-thumbnail img{width:100%;height:100%;object-fit:cover}.booking-thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-color-default-tertiary, #737373)}.booking-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.booking-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.booking-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.booking-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-status.available-today{color:var(--color-accent, #5d5fef)}.booking-status.available-from{color:var(--color-warning, #f59e0b)}.booking-status.unavailable{color:var(--text-color-default-tertiary, #737373)}.booking-datetime{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-trailing{display:flex;align-items:center;color:var(--color-text-tertiary, #a3a3a3)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsShapeIndicatorComponent, selector: "ds-shape-indicator", inputs: ["shape", "variant", "label"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "moreActions", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }] });
9684
9795
  }
9685
9796
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileInteractiveListItemBookingComponent, decorators: [{
9686
9797
  type: Component,
@@ -9691,6 +9802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9691
9802
  [variant]="variant()"
9692
9803
  [interactive]="clickable()"
9693
9804
  [enableLongPress]="enableLongPress()"
9805
+ [moreActions]="moreActions()"
9694
9806
  (itemClick)="handleBookingClick()"
9695
9807
  (longPress)="handleLongPress()"
9696
9808
  (moreButtonClick)="handleMoreButtonClick($event)">
@@ -9755,7 +9867,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9755
9867
  }
9756
9868
  </ds-mobile-list-item>
9757
9869
  `, styles: [":host{display:block}:host:last-child{--divider-display: none;--item-padding-bottom: 0}.booking-thumbnail{flex-shrink:0;width:64px;height:64px;border-radius:12px;overflow:hidden;background:var(--color-surface-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center}.booking-thumbnail img{width:100%;height:100%;object-fit:cover}.booking-thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-color-default-tertiary, #737373)}.booking-content{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.booking-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.booking-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66);display:flex;align-items:center;gap:8px;margin-top:4px}.booking-status{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-status.available-today{color:var(--color-accent, #5d5fef)}.booking-status.available-from{color:var(--color-warning, #f59e0b)}.booking-status.unavailable{color:var(--text-color-default-tertiary, #737373)}.booking-datetime{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-secondary, #545B66)}.booking-trailing{display:flex;align-items:center;color:var(--color-text-tertiary, #a3a3a3)}\n"] }]
9758
- }], propDecorators: { thumbnail: [{ type: i0.Input, args: [{ isSignal: true, alias: "thumbnail", required: false }] }], facilityTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "facilityTitle", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], bookingDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "bookingDate", required: false }] }], bookingTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "bookingTime", required: false }] }], availabilityStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "availabilityStatus", required: false }] }], statusLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusLabel", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], showChevron: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChevron", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], bookingClick: [{ type: i0.Output, args: ["bookingClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
9870
+ }], propDecorators: { thumbnail: [{ type: i0.Input, args: [{ isSignal: true, alias: "thumbnail", required: false }] }], facilityTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "facilityTitle", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], bookingDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "bookingDate", required: false }] }], bookingTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "bookingTime", required: false }] }], availabilityStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "availabilityStatus", required: false }] }], statusLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusLabel", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], showChevron: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChevron", required: false }] }], enableLongPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLongPress", required: false }] }], moreActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreActions", required: false }] }], bookingClick: [{ type: i0.Output, args: ["bookingClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
9759
9871
 
9760
9872
  /**
9761
9873
  * DsMobileTabBarComponent
@@ -10356,6 +10468,7 @@ class DsMobileTabBarComponent {
10356
10468
  cssClass: ['ds-bottom-sheet', 'auto-height'],
10357
10469
  });
10358
10470
  await sheet.present();
10471
+ disableModalShadowPointerEvents(sheet);
10359
10472
  const result = await sheet.onWillDismiss();
10360
10473
  if (result.data?.action) {
10361
10474
  // Emit the selected action to parent
@@ -10397,7 +10510,7 @@ class DsMobileTabBarComponent {
10397
10510
  <ds-avatar [size]="'md'" [type]="avatarType" [initials]="avatarInitials" [src]="avatarSrc" [iconName]="avatarIconName" (click)="handleAvatarClick()" />
10398
10511
  </div>
10399
10512
  </ion-tab-bar>
10400
- `, isInline: true, styles: [":host{--ds-tab-bar-height: 64px}@media (min-width: 768px){:host{display:block;--ds-tab-bar-height: 64px}}@media (max-width: 767px){:host{display:contents}}ion-tabs.ds-tabs-wrapper{height:100%;background:var(--color-header-surface)}ion-tab-button:before,ion-tab-button:after{content:none!important;display:none!important}ion-tab-button[title]:before,ion-tab-button[title]:after{display:none!important}ion-tab-button::part(native):before,ion-tab-button::part(native):after{display:none!important}.ds-tab-bar{--background: var(--color-background-neutral-primary);transition:transform .2s ease-in-out}ion-tab-bar[slot=bottom]{border-top:1px solid var(--border-color-default);padding-top:8px;padding-bottom:max(8px,calc(var(--ion-safe-area-bottom, 0px) - 16px));padding-left:12px;padding-right:12px}@media (max-width: 767px){ion-tab-bar[slot=bottom]{position:fixed;bottom:0;left:0;right:0;z-index:100}}@media (max-width: 767px){:host-context(ion-tabs:has(ds-mobile-page-details)) .ds-tab-bar{transform:translateY(100%);transition:transform .3s ease}}.ds-tab-bar__logo,.ds-tab-bar__actions{display:none}.ds-tab-bar__tabs{display:flex;width:100%;justify-content:space-around;align-items:center}@media (min-width: 769px){ion-tab-bar[slot=bottom]{padding-bottom:env(safe-area-inset-bottom,0px)}}@media (display-mode: standalone){ion-tab-bar[slot=bottom]{padding-bottom:env(safe-area-inset-bottom,0px)!important}}@media (min-width: 768px){:host[slot=top]{order:-1!important}:host ion-tab-bar{position:relative!important;bottom:auto!important;top:0!important}ion-tab-bar[slot=top]{--background: var(--color-header-surface);position:relative!important;display:flex!important;align-items:center;padding:12px 24px;height:64px;max-width:none;bottom:auto!important;top:0!important}ion-tab-bar[slot=bottom]{position:relative!important;bottom:auto!important}ion-tabs>div:not([slot]){order:1!important}.ds-tab-bar__logo{display:flex;position:absolute;left:24px;align-items:center;color:var(--header-content-color, white)}.ds-tab-bar__actions{display:flex;position:absolute;right:24px;align-items:center;gap:12px}.ds-tab-bar__tabs{display:flex;gap:8px;align-items:center;max-width:640px;width:100%;margin:0 auto;justify-content:center;padding-left:var(--content-padding-md);padding-right:var(--content-padding-md)}.logomark{height:28px;width:auto;flex-shrink:0}}@media (min-width: 992px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg);justify-content:center}}@media (min-width: 1440px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}ion-tab-button{--color: var(--text-color-default-tertiary);--color-selected: var(--color-accent);display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:visible;pointer-events:auto}ion-tab-button[title]:before{content:attr(title);position:absolute;opacity:0;pointer-events:none}.tab-icon-ripple{position:absolute;left:50%;top:50%;width:40px;height:40px;border-radius:50%;background:var(--color-accent);transform:translate(-50%,-50%) scale(0);opacity:0;pointer-events:none;transition:all .6s cubic-bezier(.36,1.2,.04,1.4);z-index:0}.tab-selected .tab-icon-ripple{transform:translate(-50%,-50%) scale(2);opacity:.05;animation:ripple-fade .6s cubic-bezier(.36,.5,.04,1.8) forwards}@keyframes ripple-fade{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}30%{opacity:.1}to{opacity:0;transform:translate(-50%,-50%) scale(2)}}ion-tab-button::part(native){overflow:visible}ion-tab-button ion-ripple-effect{color:var(--color-accent);border-radius:1000px}ion-tab-button ion-label{font-size:11px;font-weight:500;letter-spacing:-.5px;margin-top:0}.tab-icon-wrapper{position:relative;width:24px;height:24px;display:flex;align-items:center;justify-content:center;z-index:1;margin-bottom:4px}.tab-icon-inactive,.tab-icon-active{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);transition:all .8s cubic-bezier(.36,1,.04,1)}.tab-icon-inactive{opacity:1;transform:translate(-50%,-50%) scale(1)}.tab-icon-active{opacity:0;transform:translate(-50%,calc(-50% - 12px)) scale(.5)}.tab-selected .tab-icon-inactive{opacity:0;transform:translate(-50%,-50%) scale(.5)}.tab-selected .tab-icon-active{opacity:1;transform:translate(-50%,-50%) scale(1)}@media (min-width: 768px){.ds-tab-button{flex-direction:row;height:40px;padding:0 16px!important;border-radius:40px;transition:all .2s ease;width:-moz-fit-content;width:fit-content;min-width:-moz-fit-content;min-width:fit-content;flex:0 0 auto;--color: rgba(var(--color-header-content-rgb, 255, 255, 255), .7);--color-selected: var(--color-header-content, white);color:rgba(var(--color-header-content-rgb, 255, 255, 255),.7);background:transparent;position:relative;overflow:hidden}.tab-icon-wrapper,.tab-icon-ripple{width:20px;height:20px}.ds-tab-button::part(native){border-radius:40px}.ds-tab-button:hover:not(.tab-selected){--color: var(--color-header-content, white);--color-selected: var(--color-header-content, white);color:var(--color-header-content, white);background:rgba(var(--color-header-content-rgb, 255, 255, 255),.1)}.ds-tab-button:hover:not(.tab-selected) ion-label{color:var(--color-header-content, white)}.ds-tab-button:hover:not(.tab-selected) ds-icon{--icon-color: var(--color-header-content, white);color:var(--color-header-content, white)}.ds-tab-button:hover:not(.tab-selected) ds-icon svg{fill:var(--color-header-content, white)}.ds-tab-button.tab-selected,.ds-tab-button.tab-selected:hover{background:var(--color-header-accent);--color-selected: var(--color-on-header-accent, white);--color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ion-label{color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ds-icon{--icon-color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ds-icon svg{fill:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover .tab-icon-active{opacity:1!important;visibility:visible!important}.ds-tab-button.tab-selected:hover .tab-icon-inactive{opacity:0!important}.ds-tab-button.tab-selected ion-label{color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected ds-icon{--icon-color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected ds-icon svg{fill:var(--color-on-header-accent, white)}.ds-tab-button .button-native{width:auto;padding:0}.ds-tab-button ion-label{font-size:var(--font-size-sm);font-weight:500;margin:0;color:inherit}.ds-tab-button .tab-icon-wrapper{margin-right:4px;margin-bottom:0}.ds-tab-button ion-ripple-effect{color:rgba(var(--header-content-color-rgb, 255, 255, 255),.3);border-radius:1000px;transform:scale(1.5)}}@media (min-width: 768px){.ds-tab-bar__actions ds-avatar{cursor:pointer;transition:transform .2s ease}.ds-tab-bar__actions ds-avatar:hover{transform:scale(1.05)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonTabBar, selector: "ion-tab-bar", inputs: ["color", "mode", "selectedTab", "translucent"] }, { kind: "component", type: IonTabButton, selector: "ion-tab-button", inputs: ["disabled", "download", "href", "layout", "mode", "rel", "selected", "tab", "target"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsLogoComponent, selector: "ds-logo", inputs: ["variant", "size", "customHeight", "customWidth"] }] });
10513
+ `, isInline: true, styles: [":host{--ds-tab-bar-height: 64px}@media (min-width: 768px){:host{display:block;--ds-tab-bar-height: 64px}}@media (max-width: 767px){:host{display:contents}}ion-tabs.ds-tabs-wrapper{height:100%;background:var(--color-header-surface)}ion-tab-button:before,ion-tab-button:after{content:none!important;display:none!important}ion-tab-button[title]:before,ion-tab-button[title]:after{display:none!important}ion-tab-button::part(native):before,ion-tab-button::part(native):after{display:none!important}.ds-tab-bar{--background: var(--color-background-neutral-primary);transition:transform .2s ease-in-out}ion-tab-bar[slot=bottom]{border-top:1px solid var(--border-color-default);padding-top:8px;padding-bottom:max(8px,calc(var(--app-safe-bottom, 0px) - 16px));padding-left:12px;padding-right:12px}@media (max-width: 767px){ion-tab-bar[slot=bottom]{position:fixed;bottom:0;left:0;right:0;z-index:100}}@media (max-width: 767px){:host-context(.plt-android) ion-tab-bar[slot=bottom]{padding-bottom:max(8px,var(--app-safe-bottom, 0px))!important}}@media (max-width: 767px){:host-context(ion-tabs:has(ds-mobile-page-details)) .ds-tab-bar{transform:translateY(100%);transition:transform .3s ease}}.ds-tab-bar__logo,.ds-tab-bar__actions{display:none}.ds-tab-bar__tabs{display:flex;width:100%;justify-content:space-around;align-items:center}@media (min-width: 769px){ion-tab-bar[slot=bottom]{padding-bottom:var(--app-safe-bottom, 0px)}}@media (display-mode: standalone){ion-tab-bar[slot=bottom]{padding-bottom:var(--app-safe-bottom, 0px)!important}}@media (min-width: 768px){:host[slot=top]{order:-1!important}:host ion-tab-bar{position:relative!important;bottom:auto!important;top:0!important}ion-tab-bar[slot=top]{--background: var(--color-header-surface);position:relative!important;display:flex!important;align-items:center;padding:12px 24px;height:64px;max-width:none;bottom:auto!important;top:0!important}ion-tab-bar[slot=bottom]{position:relative!important;bottom:auto!important}ion-tabs>div:not([slot]){order:1!important}.ds-tab-bar__logo{display:flex;position:absolute;left:24px;align-items:center;color:var(--header-content-color, white)}.ds-tab-bar__actions{display:flex;position:absolute;right:24px;align-items:center;gap:12px}.ds-tab-bar__tabs{display:flex;gap:8px;align-items:center;max-width:640px;width:100%;margin:0 auto;justify-content:center;padding-left:var(--content-padding-md);padding-right:var(--content-padding-md)}.logomark{height:28px;width:auto;flex-shrink:0}}@media (min-width: 992px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg);justify-content:center}}@media (min-width: 1440px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}ion-tab-button{--color: var(--text-color-default-tertiary);--color-selected: var(--color-accent);display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:visible;pointer-events:auto}ion-tab-button[title]:before{content:attr(title);position:absolute;opacity:0;pointer-events:none}.tab-icon-ripple{position:absolute;left:50%;top:50%;width:40px;height:40px;border-radius:50%;background:var(--color-accent);transform:translate(-50%,-50%) scale(0);opacity:0;pointer-events:none;transition:all .6s cubic-bezier(.36,1.2,.04,1.4);z-index:0}.tab-selected .tab-icon-ripple{transform:translate(-50%,-50%) scale(2);opacity:.05;animation:ripple-fade .6s cubic-bezier(.36,.5,.04,1.8) forwards}@keyframes ripple-fade{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}30%{opacity:.1}to{opacity:0;transform:translate(-50%,-50%) scale(2)}}ion-tab-button::part(native){overflow:visible}ion-tab-button ion-ripple-effect{color:var(--color-accent);border-radius:1000px}ion-tab-button ion-label{font-size:11px;font-weight:500;letter-spacing:-.5px;margin-top:0}.tab-icon-wrapper{position:relative;width:24px;height:24px;display:flex;align-items:center;justify-content:center;z-index:1;margin-bottom:4px}.tab-icon-inactive,.tab-icon-active{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);transition:all .8s cubic-bezier(.36,1,.04,1)}.tab-icon-inactive{opacity:1;transform:translate(-50%,-50%) scale(1)}.tab-icon-active{opacity:0;transform:translate(-50%,calc(-50% - 12px)) scale(.5)}.tab-selected .tab-icon-inactive{opacity:0;transform:translate(-50%,-50%) scale(.5)}.tab-selected .tab-icon-active{opacity:1;transform:translate(-50%,-50%) scale(1)}@media (min-width: 768px){.ds-tab-button{flex-direction:row;height:40px;padding:0 16px!important;border-radius:40px;transition:all .2s ease;width:-moz-fit-content;width:fit-content;min-width:-moz-fit-content;min-width:fit-content;flex:0 0 auto;--color: rgba(var(--color-header-content-rgb, 255, 255, 255), .7);--color-selected: var(--color-header-content, white);color:rgba(var(--color-header-content-rgb, 255, 255, 255),.7);background:transparent;position:relative;overflow:hidden}.tab-icon-wrapper,.tab-icon-ripple{width:20px;height:20px}.ds-tab-button::part(native){border-radius:40px}.ds-tab-button:hover:not(.tab-selected){--color: var(--color-header-content, white);--color-selected: var(--color-header-content, white);color:var(--color-header-content, white);background:rgba(var(--color-header-content-rgb, 255, 255, 255),.1)}.ds-tab-button:hover:not(.tab-selected) ion-label{color:var(--color-header-content, white)}.ds-tab-button:hover:not(.tab-selected) ds-icon{--icon-color: var(--color-header-content, white);color:var(--color-header-content, white)}.ds-tab-button:hover:not(.tab-selected) ds-icon svg{fill:var(--color-header-content, white)}.ds-tab-button.tab-selected,.ds-tab-button.tab-selected:hover{background:var(--color-header-accent);--color-selected: var(--color-on-header-accent, white);--color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ion-label{color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ds-icon{--icon-color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ds-icon svg{fill:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover .tab-icon-active{opacity:1!important;visibility:visible!important}.ds-tab-button.tab-selected:hover .tab-icon-inactive{opacity:0!important}.ds-tab-button.tab-selected ion-label{color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected ds-icon{--icon-color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected ds-icon svg{fill:var(--color-on-header-accent, white)}.ds-tab-button .button-native{width:auto;padding:0}.ds-tab-button ion-label{font-size:var(--font-size-sm);font-weight:500;margin:0;color:inherit}.ds-tab-button .tab-icon-wrapper{margin-right:4px;margin-bottom:0}.ds-tab-button ion-ripple-effect{color:rgba(var(--header-content-color-rgb, 255, 255, 255),.3);border-radius:1000px;transform:scale(1.5)}}@media (min-width: 768px){.ds-tab-bar__actions ds-avatar{cursor:pointer;transition:transform .2s ease}.ds-tab-bar__actions ds-avatar:hover{transform:scale(1.05)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonTabBar, selector: "ion-tab-bar", inputs: ["color", "mode", "selectedTab", "translucent"] }, { kind: "component", type: IonTabButton, selector: "ion-tab-button", inputs: ["disabled", "download", "href", "layout", "mode", "rel", "selected", "tab", "target"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsLogoComponent, selector: "ds-logo", inputs: ["variant", "size", "customHeight", "customWidth"] }] });
10401
10514
  }
10402
10515
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileTabBarComponent, decorators: [{
10403
10516
  type: Component,
@@ -10433,7 +10546,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
10433
10546
  <ds-avatar [size]="'md'" [type]="avatarType" [initials]="avatarInitials" [src]="avatarSrc" [iconName]="avatarIconName" (click)="handleAvatarClick()" />
10434
10547
  </div>
10435
10548
  </ion-tab-bar>
10436
- `, styles: [":host{--ds-tab-bar-height: 64px}@media (min-width: 768px){:host{display:block;--ds-tab-bar-height: 64px}}@media (max-width: 767px){:host{display:contents}}ion-tabs.ds-tabs-wrapper{height:100%;background:var(--color-header-surface)}ion-tab-button:before,ion-tab-button:after{content:none!important;display:none!important}ion-tab-button[title]:before,ion-tab-button[title]:after{display:none!important}ion-tab-button::part(native):before,ion-tab-button::part(native):after{display:none!important}.ds-tab-bar{--background: var(--color-background-neutral-primary);transition:transform .2s ease-in-out}ion-tab-bar[slot=bottom]{border-top:1px solid var(--border-color-default);padding-top:8px;padding-bottom:max(8px,calc(var(--ion-safe-area-bottom, 0px) - 16px));padding-left:12px;padding-right:12px}@media (max-width: 767px){ion-tab-bar[slot=bottom]{position:fixed;bottom:0;left:0;right:0;z-index:100}}@media (max-width: 767px){:host-context(ion-tabs:has(ds-mobile-page-details)) .ds-tab-bar{transform:translateY(100%);transition:transform .3s ease}}.ds-tab-bar__logo,.ds-tab-bar__actions{display:none}.ds-tab-bar__tabs{display:flex;width:100%;justify-content:space-around;align-items:center}@media (min-width: 769px){ion-tab-bar[slot=bottom]{padding-bottom:env(safe-area-inset-bottom,0px)}}@media (display-mode: standalone){ion-tab-bar[slot=bottom]{padding-bottom:env(safe-area-inset-bottom,0px)!important}}@media (min-width: 768px){:host[slot=top]{order:-1!important}:host ion-tab-bar{position:relative!important;bottom:auto!important;top:0!important}ion-tab-bar[slot=top]{--background: var(--color-header-surface);position:relative!important;display:flex!important;align-items:center;padding:12px 24px;height:64px;max-width:none;bottom:auto!important;top:0!important}ion-tab-bar[slot=bottom]{position:relative!important;bottom:auto!important}ion-tabs>div:not([slot]){order:1!important}.ds-tab-bar__logo{display:flex;position:absolute;left:24px;align-items:center;color:var(--header-content-color, white)}.ds-tab-bar__actions{display:flex;position:absolute;right:24px;align-items:center;gap:12px}.ds-tab-bar__tabs{display:flex;gap:8px;align-items:center;max-width:640px;width:100%;margin:0 auto;justify-content:center;padding-left:var(--content-padding-md);padding-right:var(--content-padding-md)}.logomark{height:28px;width:auto;flex-shrink:0}}@media (min-width: 992px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg);justify-content:center}}@media (min-width: 1440px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}ion-tab-button{--color: var(--text-color-default-tertiary);--color-selected: var(--color-accent);display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:visible;pointer-events:auto}ion-tab-button[title]:before{content:attr(title);position:absolute;opacity:0;pointer-events:none}.tab-icon-ripple{position:absolute;left:50%;top:50%;width:40px;height:40px;border-radius:50%;background:var(--color-accent);transform:translate(-50%,-50%) scale(0);opacity:0;pointer-events:none;transition:all .6s cubic-bezier(.36,1.2,.04,1.4);z-index:0}.tab-selected .tab-icon-ripple{transform:translate(-50%,-50%) scale(2);opacity:.05;animation:ripple-fade .6s cubic-bezier(.36,.5,.04,1.8) forwards}@keyframes ripple-fade{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}30%{opacity:.1}to{opacity:0;transform:translate(-50%,-50%) scale(2)}}ion-tab-button::part(native){overflow:visible}ion-tab-button ion-ripple-effect{color:var(--color-accent);border-radius:1000px}ion-tab-button ion-label{font-size:11px;font-weight:500;letter-spacing:-.5px;margin-top:0}.tab-icon-wrapper{position:relative;width:24px;height:24px;display:flex;align-items:center;justify-content:center;z-index:1;margin-bottom:4px}.tab-icon-inactive,.tab-icon-active{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);transition:all .8s cubic-bezier(.36,1,.04,1)}.tab-icon-inactive{opacity:1;transform:translate(-50%,-50%) scale(1)}.tab-icon-active{opacity:0;transform:translate(-50%,calc(-50% - 12px)) scale(.5)}.tab-selected .tab-icon-inactive{opacity:0;transform:translate(-50%,-50%) scale(.5)}.tab-selected .tab-icon-active{opacity:1;transform:translate(-50%,-50%) scale(1)}@media (min-width: 768px){.ds-tab-button{flex-direction:row;height:40px;padding:0 16px!important;border-radius:40px;transition:all .2s ease;width:-moz-fit-content;width:fit-content;min-width:-moz-fit-content;min-width:fit-content;flex:0 0 auto;--color: rgba(var(--color-header-content-rgb, 255, 255, 255), .7);--color-selected: var(--color-header-content, white);color:rgba(var(--color-header-content-rgb, 255, 255, 255),.7);background:transparent;position:relative;overflow:hidden}.tab-icon-wrapper,.tab-icon-ripple{width:20px;height:20px}.ds-tab-button::part(native){border-radius:40px}.ds-tab-button:hover:not(.tab-selected){--color: var(--color-header-content, white);--color-selected: var(--color-header-content, white);color:var(--color-header-content, white);background:rgba(var(--color-header-content-rgb, 255, 255, 255),.1)}.ds-tab-button:hover:not(.tab-selected) ion-label{color:var(--color-header-content, white)}.ds-tab-button:hover:not(.tab-selected) ds-icon{--icon-color: var(--color-header-content, white);color:var(--color-header-content, white)}.ds-tab-button:hover:not(.tab-selected) ds-icon svg{fill:var(--color-header-content, white)}.ds-tab-button.tab-selected,.ds-tab-button.tab-selected:hover{background:var(--color-header-accent);--color-selected: var(--color-on-header-accent, white);--color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ion-label{color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ds-icon{--icon-color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ds-icon svg{fill:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover .tab-icon-active{opacity:1!important;visibility:visible!important}.ds-tab-button.tab-selected:hover .tab-icon-inactive{opacity:0!important}.ds-tab-button.tab-selected ion-label{color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected ds-icon{--icon-color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected ds-icon svg{fill:var(--color-on-header-accent, white)}.ds-tab-button .button-native{width:auto;padding:0}.ds-tab-button ion-label{font-size:var(--font-size-sm);font-weight:500;margin:0;color:inherit}.ds-tab-button .tab-icon-wrapper{margin-right:4px;margin-bottom:0}.ds-tab-button ion-ripple-effect{color:rgba(var(--header-content-color-rgb, 255, 255, 255),.3);border-radius:1000px;transform:scale(1.5)}}@media (min-width: 768px){.ds-tab-bar__actions ds-avatar{cursor:pointer;transition:transform .2s ease}.ds-tab-bar__actions ds-avatar:hover{transform:scale(1.05)}}\n"] }]
10549
+ `, styles: [":host{--ds-tab-bar-height: 64px}@media (min-width: 768px){:host{display:block;--ds-tab-bar-height: 64px}}@media (max-width: 767px){:host{display:contents}}ion-tabs.ds-tabs-wrapper{height:100%;background:var(--color-header-surface)}ion-tab-button:before,ion-tab-button:after{content:none!important;display:none!important}ion-tab-button[title]:before,ion-tab-button[title]:after{display:none!important}ion-tab-button::part(native):before,ion-tab-button::part(native):after{display:none!important}.ds-tab-bar{--background: var(--color-background-neutral-primary);transition:transform .2s ease-in-out}ion-tab-bar[slot=bottom]{border-top:1px solid var(--border-color-default);padding-top:8px;padding-bottom:max(8px,calc(var(--app-safe-bottom, 0px) - 16px));padding-left:12px;padding-right:12px}@media (max-width: 767px){ion-tab-bar[slot=bottom]{position:fixed;bottom:0;left:0;right:0;z-index:100}}@media (max-width: 767px){:host-context(.plt-android) ion-tab-bar[slot=bottom]{padding-bottom:max(8px,var(--app-safe-bottom, 0px))!important}}@media (max-width: 767px){:host-context(ion-tabs:has(ds-mobile-page-details)) .ds-tab-bar{transform:translateY(100%);transition:transform .3s ease}}.ds-tab-bar__logo,.ds-tab-bar__actions{display:none}.ds-tab-bar__tabs{display:flex;width:100%;justify-content:space-around;align-items:center}@media (min-width: 769px){ion-tab-bar[slot=bottom]{padding-bottom:var(--app-safe-bottom, 0px)}}@media (display-mode: standalone){ion-tab-bar[slot=bottom]{padding-bottom:var(--app-safe-bottom, 0px)!important}}@media (min-width: 768px){:host[slot=top]{order:-1!important}:host ion-tab-bar{position:relative!important;bottom:auto!important;top:0!important}ion-tab-bar[slot=top]{--background: var(--color-header-surface);position:relative!important;display:flex!important;align-items:center;padding:12px 24px;height:64px;max-width:none;bottom:auto!important;top:0!important}ion-tab-bar[slot=bottom]{position:relative!important;bottom:auto!important}ion-tabs>div:not([slot]){order:1!important}.ds-tab-bar__logo{display:flex;position:absolute;left:24px;align-items:center;color:var(--header-content-color, white)}.ds-tab-bar__actions{display:flex;position:absolute;right:24px;align-items:center;gap:12px}.ds-tab-bar__tabs{display:flex;gap:8px;align-items:center;max-width:640px;width:100%;margin:0 auto;justify-content:center;padding-left:var(--content-padding-md);padding-right:var(--content-padding-md)}.logomark{height:28px;width:auto;flex-shrink:0}}@media (min-width: 992px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-lg);padding-right:var(--content-padding-lg);justify-content:center}}@media (min-width: 1440px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-xl);padding-right:var(--content-padding-xl)}}@media (min-width: 1768px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-2xl);padding-right:var(--content-padding-2xl)}}@media (min-width: 1920px){.ds-tab-bar__tabs{max-width:640px;padding-left:var(--content-padding-3xl);padding-right:var(--content-padding-3xl)}}ion-tab-button{--color: var(--text-color-default-tertiary);--color-selected: var(--color-accent);display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:visible;pointer-events:auto}ion-tab-button[title]:before{content:attr(title);position:absolute;opacity:0;pointer-events:none}.tab-icon-ripple{position:absolute;left:50%;top:50%;width:40px;height:40px;border-radius:50%;background:var(--color-accent);transform:translate(-50%,-50%) scale(0);opacity:0;pointer-events:none;transition:all .6s cubic-bezier(.36,1.2,.04,1.4);z-index:0}.tab-selected .tab-icon-ripple{transform:translate(-50%,-50%) scale(2);opacity:.05;animation:ripple-fade .6s cubic-bezier(.36,.5,.04,1.8) forwards}@keyframes ripple-fade{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}30%{opacity:.1}to{opacity:0;transform:translate(-50%,-50%) scale(2)}}ion-tab-button::part(native){overflow:visible}ion-tab-button ion-ripple-effect{color:var(--color-accent);border-radius:1000px}ion-tab-button ion-label{font-size:11px;font-weight:500;letter-spacing:-.5px;margin-top:0}.tab-icon-wrapper{position:relative;width:24px;height:24px;display:flex;align-items:center;justify-content:center;z-index:1;margin-bottom:4px}.tab-icon-inactive,.tab-icon-active{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);transition:all .8s cubic-bezier(.36,1,.04,1)}.tab-icon-inactive{opacity:1;transform:translate(-50%,-50%) scale(1)}.tab-icon-active{opacity:0;transform:translate(-50%,calc(-50% - 12px)) scale(.5)}.tab-selected .tab-icon-inactive{opacity:0;transform:translate(-50%,-50%) scale(.5)}.tab-selected .tab-icon-active{opacity:1;transform:translate(-50%,-50%) scale(1)}@media (min-width: 768px){.ds-tab-button{flex-direction:row;height:40px;padding:0 16px!important;border-radius:40px;transition:all .2s ease;width:-moz-fit-content;width:fit-content;min-width:-moz-fit-content;min-width:fit-content;flex:0 0 auto;--color: rgba(var(--color-header-content-rgb, 255, 255, 255), .7);--color-selected: var(--color-header-content, white);color:rgba(var(--color-header-content-rgb, 255, 255, 255),.7);background:transparent;position:relative;overflow:hidden}.tab-icon-wrapper,.tab-icon-ripple{width:20px;height:20px}.ds-tab-button::part(native){border-radius:40px}.ds-tab-button:hover:not(.tab-selected){--color: var(--color-header-content, white);--color-selected: var(--color-header-content, white);color:var(--color-header-content, white);background:rgba(var(--color-header-content-rgb, 255, 255, 255),.1)}.ds-tab-button:hover:not(.tab-selected) ion-label{color:var(--color-header-content, white)}.ds-tab-button:hover:not(.tab-selected) ds-icon{--icon-color: var(--color-header-content, white);color:var(--color-header-content, white)}.ds-tab-button:hover:not(.tab-selected) ds-icon svg{fill:var(--color-header-content, white)}.ds-tab-button.tab-selected,.ds-tab-button.tab-selected:hover{background:var(--color-header-accent);--color-selected: var(--color-on-header-accent, white);--color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ion-label{color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ds-icon{--icon-color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover ds-icon svg{fill:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected:hover .tab-icon-active{opacity:1!important;visibility:visible!important}.ds-tab-button.tab-selected:hover .tab-icon-inactive{opacity:0!important}.ds-tab-button.tab-selected ion-label{color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected ds-icon{--icon-color: var(--color-on-header-accent, white);color:var(--color-on-header-accent, white)}.ds-tab-button.tab-selected ds-icon svg{fill:var(--color-on-header-accent, white)}.ds-tab-button .button-native{width:auto;padding:0}.ds-tab-button ion-label{font-size:var(--font-size-sm);font-weight:500;margin:0;color:inherit}.ds-tab-button .tab-icon-wrapper{margin-right:4px;margin-bottom:0}.ds-tab-button ion-ripple-effect{color:rgba(var(--header-content-color-rgb, 255, 255, 255),.3);border-radius:1000px;transform:scale(1.5)}}@media (min-width: 768px){.ds-tab-bar__actions ds-avatar{cursor:pointer;transition:transform .2s ease}.ds-tab-bar__actions ds-avatar:hover{transform:scale(1.05)}}\n"] }]
10437
10550
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { tabs: [{
10438
10551
  type: Input
10439
10552
  }], avatarType: [{
@@ -12836,6 +12949,13 @@ class MobileModalBase {
12836
12949
  * @default false
12837
12950
  */
12838
12951
  isAutoHeight = input(false, ...(ngDevMode ? [{ debugName: "isAutoHeight" }] : []));
12952
+ /**
12953
+ * Controls how modal content behaves when the keyboard opens.
12954
+ * - 'follow': content is pushed to follow keyboard movement
12955
+ * - 'overlay': keyboard/footer overlays lower content (no auto scroll push)
12956
+ * @default 'follow'
12957
+ */
12958
+ keyboardContentBehavior = input('follow', ...(ngDevMode ? [{ debugName: "keyboardContentBehavior" }] : []));
12839
12959
  /**
12840
12960
  * Emitted when modal is closed
12841
12961
  */
@@ -12900,33 +13020,39 @@ class MobileModalBase {
12900
13020
  try {
12901
13021
  const scrollElement = await this.ionContent.getScrollElement();
12902
13022
  if (scrollElement) {
12903
- // Store current scroll position before keyboard animation
12904
- const currentScrollTop = scrollElement.scrollTop;
12905
13023
  // Get current fixed bottom height and add keyboard height
12906
13024
  const fixedBottomHeight = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--fixed-bottom-height') || '0');
12907
- const totalPadding = fixedBottomHeight + info.keyboardHeight;
13025
+ const totalPadding = this.getScrollPadding(fixedBottomHeight, info.keyboardHeight);
12908
13026
  scrollElement.style.paddingBottom = `${totalPadding}px`;
12909
13027
  // console.log('[MobileModalBase] Updated padding:', totalPadding, '(fixed:', fixedBottomHeight, '+ keyboard:', info.keyboardHeight, ')');
12910
- // Animate scroll position to match keyboard
12911
- const startTime = performance.now();
12912
- const duration = 300; // Match keyboard animation duration
12913
- const animateScroll = (currentTime) => {
12914
- const elapsed = currentTime - startTime;
12915
- const progress = Math.min(elapsed / duration, 1);
12916
- // Ease-out cubic (matches iOS/Android keyboard animation curve)
12917
- const easeProgress = 1 - Math.pow(1 - progress, 3);
12918
- // Scroll down by keyboard height so content "follows" keyboard up
12919
- scrollElement.scrollTop = currentScrollTop + info.keyboardHeight * easeProgress;
12920
- if (progress < 1) {
12921
- requestAnimationFrame(animateScroll);
12922
- }
12923
- else {
12924
- // Animation complete - re-enable ResizeObserver
12925
- // console.log('[MobileModalBase] Keyboard animation complete');
12926
- this.isKeyboardAnimating = false;
12927
- }
12928
- };
12929
- requestAnimationFrame(animateScroll);
13028
+ // In overlay mode, keep content stationary and let keyboard/footer overlap.
13029
+ if (this.isOverlayBehavior()) {
13030
+ this.isKeyboardAnimating = false;
13031
+ }
13032
+ else {
13033
+ // Store current scroll position before keyboard animation
13034
+ const currentScrollTop = scrollElement.scrollTop;
13035
+ // Animate scroll position to match keyboard
13036
+ const startTime = performance.now();
13037
+ const duration = 300; // Match keyboard animation duration
13038
+ const animateScroll = (currentTime) => {
13039
+ const elapsed = currentTime - startTime;
13040
+ const progress = Math.min(elapsed / duration, 1);
13041
+ // Ease-out cubic (matches iOS/Android keyboard animation curve)
13042
+ const easeProgress = 1 - Math.pow(1 - progress, 3);
13043
+ // Scroll down by keyboard height so content "follows" keyboard up
13044
+ scrollElement.scrollTop = currentScrollTop + info.keyboardHeight * easeProgress;
13045
+ if (progress < 1) {
13046
+ requestAnimationFrame(animateScroll);
13047
+ }
13048
+ else {
13049
+ // Animation complete - re-enable ResizeObserver
13050
+ // console.log('[MobileModalBase] ✅ Keyboard animation complete');
13051
+ this.isKeyboardAnimating = false;
13052
+ }
13053
+ };
13054
+ requestAnimationFrame(animateScroll);
13055
+ }
12930
13056
  }
12931
13057
  }
12932
13058
  catch (e) {
@@ -12961,33 +13087,40 @@ class MobileModalBase {
12961
13087
  try {
12962
13088
  const scrollElement = await this.ionContent.getScrollElement();
12963
13089
  if (scrollElement) {
12964
- // Store current scroll position
12965
- const currentScrollTop = scrollElement.scrollTop;
12966
13090
  // Get current fixed bottom height (without keyboard)
12967
13091
  const fixedBottomHeight = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--fixed-bottom-height') || '0');
12968
- scrollElement.style.paddingBottom = `${fixedBottomHeight}px`;
13092
+ const totalPadding = this.getScrollPadding(fixedBottomHeight, 0);
13093
+ scrollElement.style.paddingBottom = `${totalPadding}px`;
12969
13094
  // console.log('[MobileModalBase] Removed keyboard padding, now:', fixedBottomHeight);
12970
- // Animate scroll position back
12971
- const startTime = performance.now();
12972
- const duration = 300;
12973
- const animateScroll = (currentTime) => {
12974
- const elapsed = currentTime - startTime;
12975
- const progress = Math.min(elapsed / duration, 1);
12976
- // Ease-out cubic
12977
- const easeProgress = 1 - Math.pow(1 - progress, 3);
12978
- // Scroll up by keyboard height (reverse the push)
12979
- const newScrollTop = currentScrollTop - keyboardHeight * easeProgress;
12980
- scrollElement.scrollTop = Math.max(0, newScrollTop);
12981
- if (progress < 1) {
12982
- requestAnimationFrame(animateScroll);
12983
- }
12984
- else {
12985
- // Animation complete - re-enable ResizeObserver
12986
- // console.log('[MobileModalBase] Keyboard hide animation complete');
12987
- this.isKeyboardAnimating = false;
12988
- }
12989
- };
12990
- requestAnimationFrame(animateScroll);
13095
+ // In overlay mode, keep content stationary and let keyboard/footer overlap.
13096
+ if (this.isOverlayBehavior()) {
13097
+ this.isKeyboardAnimating = false;
13098
+ }
13099
+ else {
13100
+ // Store current scroll position
13101
+ const currentScrollTop = scrollElement.scrollTop;
13102
+ // Animate scroll position back
13103
+ const startTime = performance.now();
13104
+ const duration = 300;
13105
+ const animateScroll = (currentTime) => {
13106
+ const elapsed = currentTime - startTime;
13107
+ const progress = Math.min(elapsed / duration, 1);
13108
+ // Ease-out cubic
13109
+ const easeProgress = 1 - Math.pow(1 - progress, 3);
13110
+ // Scroll up by keyboard height (reverse the push)
13111
+ const newScrollTop = currentScrollTop - keyboardHeight * easeProgress;
13112
+ scrollElement.scrollTop = Math.max(0, newScrollTop);
13113
+ if (progress < 1) {
13114
+ requestAnimationFrame(animateScroll);
13115
+ }
13116
+ else {
13117
+ // Animation complete - re-enable ResizeObserver
13118
+ // console.log('[MobileModalBase] ✅ Keyboard hide animation complete');
13119
+ this.isKeyboardAnimating = false;
13120
+ }
13121
+ };
13122
+ requestAnimationFrame(animateScroll);
13123
+ }
12991
13124
  }
12992
13125
  }
12993
13126
  catch (e) {
@@ -13010,13 +13143,12 @@ class MobileModalBase {
13010
13143
  * @protected
13011
13144
  */
13012
13145
  async setupFixedBottomObserver() {
13013
- // Determine platform-specific offset
13014
- const isNative = Capacitor.isNativePlatform();
13015
- const offset = isNative ? -24 : -12;
13146
+ // Use measured fixed-bottom height directly; safe-area tuning is handled in CSS.
13147
+ const offset = 0;
13016
13148
  // Small delay to ensure DOM is ready
13017
13149
  setTimeout(async () => {
13018
13150
  const fixedBottom = document.querySelector('.modal-fixed-bottom');
13019
- // console.log('[MobileModalBase] Fixed bottom element:', fixedBottom, 'Platform:', isNative ? 'Native' : 'Web', 'Offset:', offset);
13151
+ // console.log('[MobileModalBase] Fixed bottom element:', fixedBottom, 'Offset:', offset);
13020
13152
  if (fixedBottom) {
13021
13153
  this.fixedBottomObserver = new ResizeObserver(async (entries) => {
13022
13154
  // Skip updates during keyboard animations to prevent conflicts
@@ -13032,7 +13164,7 @@ class MobileModalBase {
13032
13164
  const totalHeight = height + offset;
13033
13165
  // CRITICAL: Include keyboard height if keyboard is visible!
13034
13166
  const keyboardHeight = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--keyboard-height') || '0');
13035
- const paddingWithKeyboard = totalHeight + keyboardHeight;
13167
+ const paddingWithKeyboard = this.getScrollPadding(totalHeight, keyboardHeight);
13036
13168
  // console.log('[MobileModalBase] ResizeObserver - height:', height, 'totalHeight:', totalHeight, 'keyboard:', keyboardHeight, 'finalPadding:', paddingWithKeyboard);
13037
13169
  document.documentElement.style.setProperty('--fixed-bottom-height', `${totalHeight}px`);
13038
13170
  // Also update scroll element padding (including keyboard height!)
@@ -13047,7 +13179,7 @@ class MobileModalBase {
13047
13179
  scrollElement.style.paddingBottom = `${paddingWithKeyboard}px`;
13048
13180
  // CRITICAL: Adjust scroll to maintain visual position
13049
13181
  // When padding increases, we need to scroll down by the same amount
13050
- if (paddingDifference !== 0) {
13182
+ if (!this.isOverlayBehavior() && paddingDifference !== 0) {
13051
13183
  const currentScrollTop = scrollElement.scrollTop;
13052
13184
  scrollElement.scrollTop = currentScrollTop + paddingDifference;
13053
13185
  // console.log('[MobileModalBase] Adjusted scroll by', paddingDifference, 'px (from', currentScrollTop, 'to', scrollElement.scrollTop, ')');
@@ -13073,7 +13205,7 @@ class MobileModalBase {
13073
13205
  if (scrollElement) {
13074
13206
  // Include keyboard height if present
13075
13207
  const keyboardHeight = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--keyboard-height') || '0');
13076
- const paddingWithKeyboard = initialTotal + keyboardHeight;
13208
+ const paddingWithKeyboard = this.getScrollPadding(initialTotal, keyboardHeight);
13077
13209
  scrollElement.style.paddingBottom = `${paddingWithKeyboard}px`;
13078
13210
  }
13079
13211
  }
@@ -13112,15 +13244,30 @@ class MobileModalBase {
13112
13244
  }
13113
13245
  return false;
13114
13246
  }
13247
+ /**
13248
+ * Returns true when keyboard should overlay content without push-scrolling.
13249
+ */
13250
+ isOverlayBehavior() {
13251
+ return this.keyboardContentBehavior() === 'overlay';
13252
+ }
13253
+ /**
13254
+ * Computes scroll bottom inset for current keyboard behavior.
13255
+ */
13256
+ getScrollPadding(fixedBottomHeight, keyboardHeight) {
13257
+ if (this.isOverlayBehavior()) {
13258
+ return fixedBottomHeight;
13259
+ }
13260
+ return fixedBottomHeight + keyboardHeight;
13261
+ }
13115
13262
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileModalBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
13116
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: MobileModalBase, isStandalone: true, inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, headerTitle: { classPropertyName: "headerTitle", publicName: "headerTitle", isSignal: true, isRequired: false, transformFunction: null }, headerMeta: { classPropertyName: "headerMeta", publicName: "headerMeta", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, enableKeyboardHandling: { classPropertyName: "enableKeyboardHandling", publicName: "enableKeyboardHandling", isSignal: true, isRequired: false, transformFunction: null }, hasFixedBottom: { classPropertyName: "hasFixedBottom", publicName: "hasFixedBottom", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: "contentPadding", publicName: "contentPadding", isSignal: true, isRequired: false, transformFunction: null }, isAutoHeight: { classPropertyName: "isAutoHeight", publicName: "isAutoHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", keyboardWillShow: "keyboardWillShow", keyboardWillHide: "keyboardWillHide" }, viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, read: IonContent }], ngImport: i0 });
13263
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: MobileModalBase, isStandalone: true, inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, headerTitle: { classPropertyName: "headerTitle", publicName: "headerTitle", isSignal: true, isRequired: false, transformFunction: null }, headerMeta: { classPropertyName: "headerMeta", publicName: "headerMeta", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, enableKeyboardHandling: { classPropertyName: "enableKeyboardHandling", publicName: "enableKeyboardHandling", isSignal: true, isRequired: false, transformFunction: null }, hasFixedBottom: { classPropertyName: "hasFixedBottom", publicName: "hasFixedBottom", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: "contentPadding", publicName: "contentPadding", isSignal: true, isRequired: false, transformFunction: null }, isAutoHeight: { classPropertyName: "isAutoHeight", publicName: "isAutoHeight", isSignal: true, isRequired: false, transformFunction: null }, keyboardContentBehavior: { classPropertyName: "keyboardContentBehavior", publicName: "keyboardContentBehavior", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", keyboardWillShow: "keyboardWillShow", keyboardWillHide: "keyboardWillHide" }, viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, read: IonContent }], ngImport: i0 });
13117
13264
  }
13118
13265
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileModalBase, decorators: [{
13119
13266
  type: Directive
13120
13267
  }], propDecorators: { ionContent: [{
13121
13268
  type: ViewChild,
13122
13269
  args: [IonContent, { read: IonContent }]
13123
- }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], headerTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTitle", required: false }] }], headerMeta: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerMeta", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], enableKeyboardHandling: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableKeyboardHandling", required: false }] }], hasFixedBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasFixedBottom", required: false }] }], contentPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentPadding", required: false }] }], isAutoHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAutoHeight", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], keyboardWillShow: [{ type: i0.Output, args: ["keyboardWillShow"] }], keyboardWillHide: [{ type: i0.Output, args: ["keyboardWillHide"] }] } });
13270
+ }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], headerTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTitle", required: false }] }], headerMeta: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerMeta", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], enableKeyboardHandling: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableKeyboardHandling", required: false }] }], hasFixedBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasFixedBottom", required: false }] }], contentPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentPadding", required: false }] }], isAutoHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAutoHeight", required: false }] }], keyboardContentBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboardContentBehavior", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], keyboardWillShow: [{ type: i0.Output, args: ["keyboardWillShow"] }], keyboardWillHide: [{ type: i0.Output, args: ["keyboardWillHide"] }] } });
13124
13271
 
13125
13272
  /**
13126
13273
  * DsMobileModalBaseComponent
@@ -13134,6 +13281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
13134
13281
  * - Default loading and error state templates (with override capability)
13135
13282
  * - Fixed bottom component support (e.g., message composer)
13136
13283
  * - Automatic keyboard handling
13284
+ * - Configurable keyboard content behavior (`follow` or `overlay`)
13137
13285
  * - Safe area support
13138
13286
  *
13139
13287
  * **Slot Structure:**
@@ -13176,7 +13324,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
13176
13324
  * <ds-mobile-modal-base
13177
13325
  * headerTitle="Create Inquiry"
13178
13326
  * [hasFixedBottom]="true"
13179
- * [enableKeyboardHandling]="true">
13327
+ * [enableKeyboardHandling]="true"
13328
+ * [keyboardContentBehavior]="'overlay'">
13180
13329
  *
13181
13330
  * <div class="content">
13182
13331
  * <input type="text" placeholder="Type something..." />
@@ -13254,6 +13403,12 @@ class DsMobileModalBaseComponent extends MobileModalBase {
13254
13403
  // Auto-detect: show header if there's any header content
13255
13404
  return !!(this.headerTitle() || this.headerMeta() || this.hasContentInSlot(this.headerLeading) || this.hasContentInSlot(this.headerMain));
13256
13405
  }
13406
+ /**
13407
+ * Check whether header-leading slot has actual projected content.
13408
+ */
13409
+ hasHeaderLeadingContent() {
13410
+ return this.hasContentInSlot(this.headerLeading);
13411
+ }
13257
13412
  /**
13258
13413
  * Check if a content child slot has actual content
13259
13414
  */
@@ -13275,7 +13430,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
13275
13430
  <div class="modal-wrapper" [class.headerless]="!shouldShowHeader()" [class.is-auto-height]="isAutoHeight()">
13276
13431
  <!-- Header (conditional) -->
13277
13432
  @if (shouldShowHeader()) {
13278
- <div class="modal-header">
13433
+ <div class="modal-header" [class.no-leading-content]="!hasHeaderLeadingContent()">
13279
13434
  <div class="header-content">
13280
13435
  <!-- Leading slot (avatar, icon) - always rendered, CSS handles empty state -->
13281
13436
  <div class="header-leading">
@@ -13346,7 +13501,7 @@ class DsMobileModalBaseComponent extends MobileModalBase {
13346
13501
  <ng-content select="[fixed-bottom]"></ng-content>
13347
13502
  <ng-content select="[footer]"></ng-content>
13348
13503
  </div>
13349
- `, isInline: true, styles: [":host{display:block;position:relative;height:100%;width:100%}:host(.is-auto-height){height:auto}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-base-content.is-auto-height{--height: auto;height:auto!important;flex:0 0 auto;display:block;contain:none!important}.modal-base-content.is-auto-height::part(scroll){position:relative!important;display:block!important;height:auto!important;overflow:visible!important}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.modal-wrapper.is-auto-height{flex:0 0 auto}.modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-leading{flex-shrink:0;display:flex;align-items:center}.header-leading:empty{display:none}.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-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}.close-button{flex-shrink:0;border-radius:50%}.close-button::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}.close-button-absolute{position:absolute;top:16px;right:16px;z-index:100;flex-shrink:0;border-radius:50%}.close-button-absolute::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}.modal-content-container{display:flex;flex-direction:column;width:100%;max-width:640px;margin:0 auto;flex:1;position:relative;padding-bottom:var(--fixed-bottom-height, 0px);transition:padding-bottom .3s ease-out}:host-context(ion-modal.auto-height) .modal-content-container,.modal-wrapper.is-auto-height .modal-content-container{flex:0 0 auto}.modal-wrapper.headerless .modal-content-container{padding-top:0}.modal-main-content{display:flex;flex-direction:column;width:100%;padding-top:0;padding-left:var(--modal-content-padding, 20px);padding-right:var(--modal-content-padding, 20px);padding-bottom:var(--modal-content-padding, 20px)}.modal-main-content.content-hidden,.state-hidden{display:none}.custom-loading-slot,.custom-error-slot{width:100%}.modal-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.modal-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.modal-fixed-bottom{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;background:var(--color-background-neutral-primary, #ffffff);box-shadow:0 300px 0 300px var(--color-background-neutral-primary, #ffffff);transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s cubic-bezier(.215,.61,.355,1);max-width:100vw;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@supports (padding: env(safe-area-inset-bottom)){.modal-content-container{padding-bottom:env(safe-area-inset-bottom)}}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { 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"] }] });
13504
+ `, isInline: true, styles: [":host{display:block;position:relative;height:100%;width:100%}:host(.is-auto-height){height:auto}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-base-content.is-auto-height{--height: auto;height:auto!important;flex:0 0 auto;display:block;contain:none!important}.modal-base-content.is-auto-height::part(scroll){position:relative!important;display:block!important;height:auto!important;overflow:visible!important}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.modal-wrapper.is-auto-height{flex:0 0 auto}.modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:16px}.modal-header.no-leading-content{padding-left:20px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-leading{flex-shrink:0;display:flex;align-items:center}.header-leading:empty{display:none}.modal-header.no-leading-content .header-content,.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-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}.close-button{flex-shrink:0;border-radius:50%}.close-button::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}.close-button-absolute{position:absolute;top:16px;right:16px;z-index:100;flex-shrink:0;border-radius:50%}.close-button-absolute::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}.modal-content-container{display:flex;flex-direction:column;width:100%;max-width:640px;margin:0 auto;flex:1;position:relative}:host-context(ion-modal.auto-height) .modal-content-container,.modal-wrapper.is-auto-height .modal-content-container{flex:0 0 auto}.modal-wrapper.headerless .modal-content-container{padding-top:0}.modal-main-content{display:flex;flex-direction:column;width:100%;padding-top:0;padding-left:var(--modal-content-padding, 20px);padding-right:var(--modal-content-padding, 20px);padding-bottom:var(--modal-content-padding, 20px)}.modal-main-content.content-hidden,.state-hidden{display:none}.custom-loading-slot,.custom-error-slot{width:100%}.modal-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.modal-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.modal-fixed-bottom{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;background:var(--color-background-neutral-primary, #ffffff);box-shadow:0 300px 0 300px var(--color-background-neutral-primary, #ffffff);transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s cubic-bezier(.215,.61,.355,1);max-width:100vw;padding-bottom:max(8px,calc(var(--app-safe-bottom, 0px) - 24px))}:host-context(.plt-android) .modal-fixed-bottom{padding-bottom:max(8px,var(--app-safe-bottom, 0px))}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { 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"] }] });
13350
13505
  }
13351
13506
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileModalBaseComponent, decorators: [{
13352
13507
  type: Component,
@@ -13364,7 +13519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
13364
13519
  <div class="modal-wrapper" [class.headerless]="!shouldShowHeader()" [class.is-auto-height]="isAutoHeight()">
13365
13520
  <!-- Header (conditional) -->
13366
13521
  @if (shouldShowHeader()) {
13367
- <div class="modal-header">
13522
+ <div class="modal-header" [class.no-leading-content]="!hasHeaderLeadingContent()">
13368
13523
  <div class="header-content">
13369
13524
  <!-- Leading slot (avatar, icon) - always rendered, CSS handles empty state -->
13370
13525
  <div class="header-leading">
@@ -13435,7 +13590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
13435
13590
  <ng-content select="[fixed-bottom]"></ng-content>
13436
13591
  <ng-content select="[footer]"></ng-content>
13437
13592
  </div>
13438
- `, styles: [":host{display:block;position:relative;height:100%;width:100%}:host(.is-auto-height){height:auto}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-base-content.is-auto-height{--height: auto;height:auto!important;flex:0 0 auto;display:block;contain:none!important}.modal-base-content.is-auto-height::part(scroll){position:relative!important;display:block!important;height:auto!important;overflow:visible!important}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.modal-wrapper.is-auto-height{flex:0 0 auto}.modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-leading{flex-shrink:0;display:flex;align-items:center}.header-leading:empty{display:none}.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-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}.close-button{flex-shrink:0;border-radius:50%}.close-button::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}.close-button-absolute{position:absolute;top:16px;right:16px;z-index:100;flex-shrink:0;border-radius:50%}.close-button-absolute::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}.modal-content-container{display:flex;flex-direction:column;width:100%;max-width:640px;margin:0 auto;flex:1;position:relative;padding-bottom:var(--fixed-bottom-height, 0px);transition:padding-bottom .3s ease-out}:host-context(ion-modal.auto-height) .modal-content-container,.modal-wrapper.is-auto-height .modal-content-container{flex:0 0 auto}.modal-wrapper.headerless .modal-content-container{padding-top:0}.modal-main-content{display:flex;flex-direction:column;width:100%;padding-top:0;padding-left:var(--modal-content-padding, 20px);padding-right:var(--modal-content-padding, 20px);padding-bottom:var(--modal-content-padding, 20px)}.modal-main-content.content-hidden,.state-hidden{display:none}.custom-loading-slot,.custom-error-slot{width:100%}.modal-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.modal-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.modal-fixed-bottom{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;background:var(--color-background-neutral-primary, #ffffff);box-shadow:0 300px 0 300px var(--color-background-neutral-primary, #ffffff);transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s cubic-bezier(.215,.61,.355,1);max-width:100vw;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@supports (padding: env(safe-area-inset-bottom)){.modal-content-container{padding-bottom:env(safe-area-inset-bottom)}}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"] }]
13593
+ `, styles: [":host{display:block;position:relative;height:100%;width:100%}:host(.is-auto-height){height:auto}.modal-base-content{--background: var(--color-background-neutral-primary, #ffffff)}.modal-base-content.is-auto-height{--height: auto;height:auto!important;flex:0 0 auto;display:block;contain:none!important}.modal-base-content.is-auto-height::part(scroll){position:relative!important;display:block!important;height:auto!important;overflow:visible!important}.modal-wrapper{display:flex;flex-direction:column;width:100%;background:var(--color-background-neutral-primary, #ffffff)}.modal-wrapper.is-auto-height{flex:0 0 auto}.modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:16px}.modal-header.no-leading-content{padding-left:20px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-leading{flex-shrink:0;display:flex;align-items:center}.header-leading:empty{display:none}.modal-header.no-leading-content .header-content,.header-content:has(.header-leading:empty){gap:16px}.header-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}.modal-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-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}.close-button{flex-shrink:0;border-radius:50%}.close-button::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}.close-button-absolute{position:absolute;top:16px;right:16px;z-index:100;flex-shrink:0;border-radius:50%}.close-button-absolute::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}.modal-content-container{display:flex;flex-direction:column;width:100%;max-width:640px;margin:0 auto;flex:1;position:relative}:host-context(ion-modal.auto-height) .modal-content-container,.modal-wrapper.is-auto-height .modal-content-container{flex:0 0 auto}.modal-wrapper.headerless .modal-content-container{padding-top:0}.modal-main-content{display:flex;flex-direction:column;width:100%;padding-top:0;padding-left:var(--modal-content-padding, 20px);padding-right:var(--modal-content-padding, 20px);padding-bottom:var(--modal-content-padding, 20px)}.modal-main-content.content-hidden,.state-hidden{display:none}.custom-loading-slot,.custom-error-slot{width:100%}.modal-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.modal-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.modal-fixed-bottom{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;background:var(--color-background-neutral-primary, #ffffff);box-shadow:0 300px 0 300px var(--color-background-neutral-primary, #ffffff);transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s cubic-bezier(.215,.61,.355,1);max-width:100vw;padding-bottom:max(8px,calc(var(--app-safe-bottom, 0px) - 24px))}:host-context(.plt-android) .modal-fixed-bottom{padding-bottom:max(8px,var(--app-safe-bottom, 0px))}.modal-fixed-bottom.is-auto-height{position:relative;bottom:auto;left:auto;right:auto;transform:none!important;box-shadow:none;z-index:1;background:var(--color-background-neutral-primary, #ffffff);padding-bottom:var(--keyboard-height, 0px);transition:padding-bottom .3s cubic-bezier(.215,.61,.355,1)}.modal-fixed-bottom>*{pointer-events:auto}.modal-fixed-bottom.bottom-hidden{display:none}@media (prefers-reduced-motion: reduce){.modal-fixed-bottom{transition:none}.loading-spinner{animation:none}}\n"] }]
13439
13594
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { ionContent: [{
13440
13595
  type: ViewChild,
13441
13596
  args: [IonContent, { read: IonContent }]
@@ -14050,7 +14205,7 @@ class DsMobilePostDetailModalComponent {
14050
14205
  </div>
14051
14206
  </div>
14052
14207
  </ds-mobile-modal-base>
14053
- `, 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}.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", ".post-detail-container{display:flex;flex-direction:column;gap:0;width:100%;padding:0}.post-section{width:100%;border-bottom:none;padding:0}.post-content-only{font-size:var(--font-size-sm);line-height:24px;color:var(--color-text-primary, #1a1a1a);margin-bottom:16px}.post-content-only post-media{margin-top:16px}.post-actions{display:flex;align-items:center;gap:16px}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;-o-object-fit:cover;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.comments-section{display:flex;flex-direction:column;margin-left:0;margin-right:0;padding:0}.comments-header{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin:0 0 16px;padding-left:0;padding-right:0}.comments-list{display:flex;flex-direction:column}.comment-composer{pointer-events:auto;background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);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)}}.composer-content{display:flex;align-items:flex-start;gap:12px;width:100%;position:relative}.composer-content ds-avatar{position:relative;top:6px}.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 48px 12px 16px;min-height:44px;position:relative}.mention-menu{position:absolute;bottom:100%;left:0;right:0;background:var(--color-background-neutral-primary, #ffffff);border-radius:12px;box-shadow:0 4px 12px #00000026;margin-bottom:8px;max-height:200px;overflow-y:auto;z-index:10;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.mention-menu-item{display:flex;align-items:center;gap:12px;padding:12px;border:none;background:none;width:100%;text-align:left;cursor:pointer;transition:background .2s ease;border-bottom:1px solid var(--border-color-default)}.mention-menu-item:last-child{border-bottom:none}.mention-menu-item:active{background:var(--color-background-neutral-secondary, #f5f5f5)}.mention-user-info{display:flex;align-items:center;gap:8px;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;overflow-x:hidden;padding:0;margin:0}.composer-input::-moz-placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-fixed{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-fixed.show{opacity:1;transform:translate(0) scale(1);pointer-events:auto;animation:slideInFromRight var(--spring-bouncy)}@media (prefers-reduced-motion: no-preference){.send-button-fixed{transition:opacity .15s ease-in,transform .15s ease-in}}.send-button-fixed::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)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostMediaComponent, selector: "post-media" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }, { kind: "component", type: DsMobileCommentComponent, selector: "ds-mobile-comment", inputs: ["authorName", "authorRole", "timestamp", "content", "avatarInitials", "avatarType", "clickable", "isOwnComment", "isLiked", "likeCount"], outputs: ["likeToggled", "commentClick", "replyClick", "editClick", "longPress"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileEmptyStateComponent, selector: "ds-mobile-empty-state", inputs: ["imageSrc", "imageAlt", "title", "description"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }] });
14208
+ `, 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}.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", ".post-detail-container{display:flex;flex-direction:column;gap:0;width:100%;padding:0}.post-section{width:100%;border-bottom:none;padding:0}.post-content-only{font-size:var(--font-size-sm);line-height:24px;color:var(--color-text-primary, #1a1a1a);margin-bottom:16px}.post-content-only post-media{margin-top:16px}.post-actions{display:flex;align-items:center;gap:16px}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;-o-object-fit:cover;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.comments-section{display:flex;flex-direction:column;margin-left:0;margin-right:0;padding:0}.comments-header{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin:0 0 16px;padding-left:0;padding-right:0}.comments-list{display:flex;flex-direction:column}.comment-composer{pointer-events:auto;background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);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)}}.composer-content{display:flex;align-items:flex-start;gap:12px;width:100%;position:relative}.composer-content ds-avatar{position:relative;top:6px}.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 48px 12px 16px;min-height:44px;position:relative}.mention-menu{position:absolute;bottom:100%;left:0;right:0;background:var(--color-background-neutral-primary, #ffffff);border-radius:12px;box-shadow:0 4px 12px #00000026;margin-bottom:8px;max-height:200px;overflow-y:auto;z-index:10;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.mention-menu-item{display:flex;align-items:center;gap:12px;padding:12px;border:none;background:none;width:100%;text-align:left;cursor:pointer;transition:background .2s ease;border-bottom:1px solid var(--border-color-default)}.mention-menu-item:last-child{border-bottom:none}.mention-menu-item:active{background:var(--color-background-neutral-secondary, #f5f5f5)}.mention-user-info{display:flex;align-items:center;gap:8px;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;overflow-x:hidden;padding:0;margin:0}.composer-input::-moz-placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-fixed{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-fixed.show{opacity:1;transform:translate(0) scale(1);pointer-events:auto;animation:slideInFromRight var(--spring-bouncy)}@media (prefers-reduced-motion: no-preference){.send-button-fixed{transition:opacity .15s ease-in,transform .15s ease-in}}.send-button-fixed::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)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostMediaComponent, selector: "post-media" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }, { kind: "component", type: DsMobileCommentComponent, selector: "ds-mobile-comment", inputs: ["authorName", "authorRole", "timestamp", "content", "avatarInitials", "avatarType", "clickable", "moreActions", "isOwnComment", "isLiked", "likeCount"], outputs: ["likeToggled", "commentClick", "replyClick", "editClick", "longPress"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileEmptyStateComponent, selector: "ds-mobile-empty-state", inputs: ["imageSrc", "imageAlt", "title", "description"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }] });
14054
14209
  }
14055
14210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobilePostDetailModalComponent, decorators: [{
14056
14211
  type: Component,
@@ -15924,6 +16079,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
15924
16079
  class DsMobileNewInquiryModalComponent {
15925
16080
  modalController = inject(ModalController);
15926
16081
  titleInputRef;
16082
+ descriptionInputRef;
15927
16083
  titleInput;
15928
16084
  fileInput;
15929
16085
  /**
@@ -15977,6 +16133,7 @@ class DsMobileNewInquiryModalComponent {
15977
16133
  // Setup auto-resize for title textarea
15978
16134
  setTimeout(() => {
15979
16135
  this.autoResizeTitleTextarea();
16136
+ this.autoResizeDescriptionTextarea();
15980
16137
  // Focus the title textarea after view initialization to trigger keyboard on iOS
15981
16138
  if (this.titleInputRef) {
15982
16139
  const textareaElement = this.titleInputRef.nativeElement.querySelector('textarea');
@@ -15999,6 +16156,18 @@ class DsMobileNewInquiryModalComponent {
15999
16156
  textareaElement.style.height = textareaElement.scrollHeight + 'px';
16000
16157
  }
16001
16158
  }
16159
+ /**
16160
+ * Auto-resize the description textarea based on content
16161
+ */
16162
+ autoResizeDescriptionTextarea() {
16163
+ if (!this.descriptionInputRef)
16164
+ return;
16165
+ const textareaElement = this.descriptionInputRef.nativeElement.querySelector('textarea');
16166
+ if (textareaElement) {
16167
+ textareaElement.style.height = 'auto';
16168
+ textareaElement.style.height = textareaElement.scrollHeight + 'px';
16169
+ }
16170
+ }
16002
16171
  /**
16003
16172
  * Handle title change with auto-resize
16004
16173
  */
@@ -16006,6 +16175,13 @@ class DsMobileNewInquiryModalComponent {
16006
16175
  this.validateForm();
16007
16176
  this.autoResizeTitleTextarea();
16008
16177
  }
16178
+ /**
16179
+ * Handle description change with auto-resize
16180
+ */
16181
+ handleDescriptionChange(value) {
16182
+ this.validateForm();
16183
+ this.autoResizeDescriptionTextarea();
16184
+ }
16009
16185
  /**
16010
16186
  * Validate form fields
16011
16187
  */
@@ -16162,8 +16338,8 @@ class DsMobileNewInquiryModalComponent {
16162
16338
  }
16163
16339
  }
16164
16340
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileNewInquiryModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16165
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileNewInquiryModalComponent, isStandalone: true, selector: "ds-mobile-new-inquiry-modal", inputs: { loading: "loading", error: "error", onSubmit: "onSubmit", titlePlaceholder: "titlePlaceholder", descriptionPlaceholder: "descriptionPlaceholder", submitButtonLabel: "submitButtonLabel" }, viewQueries: [{ propertyName: "titleInputRef", first: true, predicate: ["titleInput"], descendants: true, read: ElementRef }, { propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
16166
- <ds-mobile-modal-base [loading]="loading" [error]="error" [showHeader]="false" [hasFixedBottom]="true" [enableKeyboardHandling]="true" closeButtonLabel="Close">
16341
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileNewInquiryModalComponent, isStandalone: true, selector: "ds-mobile-new-inquiry-modal", inputs: { loading: "loading", error: "error", onSubmit: "onSubmit", titlePlaceholder: "titlePlaceholder", descriptionPlaceholder: "descriptionPlaceholder", submitButtonLabel: "submitButtonLabel" }, viewQueries: [{ propertyName: "titleInputRef", first: true, predicate: ["titleInput"], descendants: true, read: ElementRef }, { propertyName: "descriptionInputRef", first: true, predicate: ["descriptionInput"], descendants: true, read: ElementRef }, { propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
16342
+ <ds-mobile-modal-base [loading]="loading" [error]="error" [showHeader]="false" [hasFixedBottom]="true" [enableKeyboardHandling]="true" [keyboardContentBehavior]="'overlay'" closeButtonLabel="Close">
16167
16343
  <!-- Form Content -->
16168
16344
  <ds-mobile-section>
16169
16345
  <!-- Title Field (Large Ghost Textarea) -->
@@ -16180,12 +16356,13 @@ class DsMobileNewInquiryModalComponent {
16180
16356
 
16181
16357
  <!-- Description Field (Ghost Textarea) -->
16182
16358
  <ds-textarea
16359
+ #descriptionInput
16183
16360
  [(ngModel)]="description"
16184
16361
  [ghost]="true"
16185
16362
  [rows]="1"
16186
16363
  [placeholder]="descriptionPlaceholder"
16187
16364
  class="inquiry-description-input ghost-input-clean"
16188
- (valueChange)="validateForm()"
16365
+ (valueChange)="handleDescriptionChange($event)"
16189
16366
  />
16190
16367
  </ds-mobile-section>
16191
16368
 
@@ -16224,12 +16401,14 @@ class DsMobileNewInquiryModalComponent {
16224
16401
  </div>
16225
16402
 
16226
16403
  <!-- Submit Button (Right) -->
16227
- <ds-button variant="primary" size="lg" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()"> {{ submitButtonLabel }} </ds-button>
16404
+ <ds-button class="submit-action-button" variant="primary" size="md" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()">
16405
+ {{ submitButtonLabel }}
16406
+ </ds-button>
16228
16407
  </div>
16229
16408
  </div>
16230
16409
  </div>
16231
16410
  </ds-mobile-modal-base>
16232
- `, 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}.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", ".inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;max-height:200px;overflow-y:auto;resize:none;box-sizing:border-box;padding-right:52px}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;resize:none}@media (min-width: 768px){.submit-container{padding:20px 32px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsTextareaComponent, selector: "ds-textarea", inputs: ["variant", "placeholder", "disabled", "readonly", "required", "ghost", "rows", "cols", "maxlength", "minlength", "ariaLabel", "ariaDescribedBy", "ariaLabelledBy"], outputs: ["valueChange", "focused", "blurred"] }, { 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: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileAttachmentPreviewComponent, selector: "ds-mobile-attachment-preview", inputs: ["attachment"], outputs: ["remove"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }] });
16411
+ `, 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}.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", ".inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;overflow-y:hidden;resize:none;box-sizing:border-box;padding-right:52px}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}.submit-content ds-button.submit-action-button::ng-deep button{height:44px;min-height:44px;max-height:44px;padding-left:16px;padding-right:16px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;overflow-y:hidden;resize:none}@media (min-width: 768px){.submit-container{padding:20px 32px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsTextareaComponent, selector: "ds-textarea", inputs: ["variant", "placeholder", "disabled", "readonly", "required", "ghost", "rows", "cols", "maxlength", "minlength", "ariaLabel", "ariaDescribedBy", "ariaLabelledBy"], outputs: ["valueChange", "focused", "blurred"] }, { 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: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileAttachmentPreviewComponent, selector: "ds-mobile-attachment-preview", inputs: ["attachment"], outputs: ["remove"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }] });
16233
16412
  }
16234
16413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileNewInquiryModalComponent, decorators: [{
16235
16414
  type: Component,
@@ -16243,7 +16422,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
16243
16422
  DsMobileAttachmentPreviewComponent,
16244
16423
  DsMobileSectionComponent,
16245
16424
  ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: `
16246
- <ds-mobile-modal-base [loading]="loading" [error]="error" [showHeader]="false" [hasFixedBottom]="true" [enableKeyboardHandling]="true" closeButtonLabel="Close">
16425
+ <ds-mobile-modal-base [loading]="loading" [error]="error" [showHeader]="false" [hasFixedBottom]="true" [enableKeyboardHandling]="true" [keyboardContentBehavior]="'overlay'" closeButtonLabel="Close">
16247
16426
  <!-- Form Content -->
16248
16427
  <ds-mobile-section>
16249
16428
  <!-- Title Field (Large Ghost Textarea) -->
@@ -16260,12 +16439,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
16260
16439
 
16261
16440
  <!-- Description Field (Ghost Textarea) -->
16262
16441
  <ds-textarea
16442
+ #descriptionInput
16263
16443
  [(ngModel)]="description"
16264
16444
  [ghost]="true"
16265
16445
  [rows]="1"
16266
16446
  [placeholder]="descriptionPlaceholder"
16267
16447
  class="inquiry-description-input ghost-input-clean"
16268
- (valueChange)="validateForm()"
16448
+ (valueChange)="handleDescriptionChange($event)"
16269
16449
  />
16270
16450
  </ds-mobile-section>
16271
16451
 
@@ -16304,15 +16484,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
16304
16484
  </div>
16305
16485
 
16306
16486
  <!-- Submit Button (Right) -->
16307
- <ds-button variant="primary" size="lg" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()"> {{ submitButtonLabel }} </ds-button>
16487
+ <ds-button class="submit-action-button" variant="primary" size="md" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()">
16488
+ {{ submitButtonLabel }}
16489
+ </ds-button>
16308
16490
  </div>
16309
16491
  </div>
16310
16492
  </div>
16311
16493
  </ds-mobile-modal-base>
16312
- `, 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}.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", ".inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;max-height:200px;overflow-y:auto;resize:none;box-sizing:border-box;padding-right:52px}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;resize:none}@media (min-width: 768px){.submit-container{padding:20px 32px}}\n"] }]
16494
+ `, 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}.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", ".inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;overflow-y:hidden;resize:none;box-sizing:border-box;padding-right:52px}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}.submit-content ds-button.submit-action-button::ng-deep button{height:44px;min-height:44px;max-height:44px;padding-left:16px;padding-right:16px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;overflow-y:hidden;resize:none}@media (min-width: 768px){.submit-container{padding:20px 32px}}\n"] }]
16313
16495
  }], propDecorators: { titleInputRef: [{
16314
16496
  type: ViewChild,
16315
16497
  args: ['titleInput', { read: ElementRef }]
16498
+ }], descriptionInputRef: [{
16499
+ type: ViewChild,
16500
+ args: ['descriptionInput', { read: ElementRef }]
16316
16501
  }], titleInput: [{
16317
16502
  type: ViewChild,
16318
16503
  args: ['titleInput']
@@ -17098,6 +17283,7 @@ class DsMobileBookingModalService extends BaseModalService {
17098
17283
  mode: 'ios'
17099
17284
  });
17100
17285
  await sheet.present();
17286
+ disableModalShadowPointerEvents(sheet);
17101
17287
  }
17102
17288
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileBookingModalService, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Injectable });
17103
17289
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileBookingModalService, providedIn: 'root' });
@@ -17126,6 +17312,7 @@ class DsMobileFacilityCreationModalComponent {
17126
17312
  modalController = inject(ModalController);
17127
17313
  bottomSheetService = inject(DsMobileBottomSheetService);
17128
17314
  titleInputRef;
17315
+ descriptionInputRef;
17129
17316
  titleInput;
17130
17317
  fileInput;
17131
17318
  /**
@@ -17195,6 +17382,7 @@ class DsMobileFacilityCreationModalComponent {
17195
17382
  // Setup auto-resize for title textarea
17196
17383
  setTimeout(() => {
17197
17384
  this.autoResizeTitleTextarea();
17385
+ this.autoResizeDescriptionTextarea();
17198
17386
  // Focus the title textarea after view initialization to trigger keyboard on iOS
17199
17387
  if (this.titleInputRef) {
17200
17388
  const textareaElement = this.titleInputRef.nativeElement.querySelector('textarea');
@@ -17217,6 +17405,18 @@ class DsMobileFacilityCreationModalComponent {
17217
17405
  textareaElement.style.height = textareaElement.scrollHeight + 'px';
17218
17406
  }
17219
17407
  }
17408
+ /**
17409
+ * Auto-resize the description textarea based on content
17410
+ */
17411
+ autoResizeDescriptionTextarea() {
17412
+ if (!this.descriptionInputRef)
17413
+ return;
17414
+ const textareaElement = this.descriptionInputRef.nativeElement.querySelector('textarea');
17415
+ if (textareaElement) {
17416
+ textareaElement.style.height = 'auto';
17417
+ textareaElement.style.height = textareaElement.scrollHeight + 'px';
17418
+ }
17419
+ }
17220
17420
  /**
17221
17421
  * Handle title change with auto-resize
17222
17422
  */
@@ -17224,6 +17424,13 @@ class DsMobileFacilityCreationModalComponent {
17224
17424
  this.validateForm();
17225
17425
  this.autoResizeTitleTextarea();
17226
17426
  }
17427
+ /**
17428
+ * Handle description change with auto-resize
17429
+ */
17430
+ handleDescriptionChange(value) {
17431
+ this.validateForm();
17432
+ this.autoResizeDescriptionTextarea();
17433
+ }
17227
17434
  /**
17228
17435
  * Validate form fields
17229
17436
  */
@@ -17505,13 +17712,14 @@ class DsMobileFacilityCreationModalComponent {
17505
17712
  }
17506
17713
  }
17507
17714
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileFacilityCreationModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17508
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileFacilityCreationModalComponent, isStandalone: true, selector: "ds-mobile-facility-creation-modal", inputs: { loading: "loading", error: "error", onSubmit: "onSubmit", titlePlaceholder: "titlePlaceholder", descriptionPlaceholder: "descriptionPlaceholder", submitButtonLabel: "submitButtonLabel" }, viewQueries: [{ propertyName: "titleInputRef", first: true, predicate: ["titleInput"], descendants: true, read: ElementRef }, { propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
17715
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileFacilityCreationModalComponent, isStandalone: true, selector: "ds-mobile-facility-creation-modal", inputs: { loading: "loading", error: "error", onSubmit: "onSubmit", titlePlaceholder: "titlePlaceholder", descriptionPlaceholder: "descriptionPlaceholder", submitButtonLabel: "submitButtonLabel" }, viewQueries: [{ propertyName: "titleInputRef", first: true, predicate: ["titleInput"], descendants: true, read: ElementRef }, { propertyName: "descriptionInputRef", first: true, predicate: ["descriptionInput"], descendants: true, read: ElementRef }, { propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
17509
17716
  <ds-mobile-modal-base
17510
17717
  [loading]="loading"
17511
17718
  [error]="error"
17512
17719
  [showHeader]="false"
17513
17720
  [hasFixedBottom]="true"
17514
17721
  [enableKeyboardHandling]="true"
17722
+ [keyboardContentBehavior]="'overlay'"
17515
17723
  closeButtonLabel="Close"
17516
17724
  >
17517
17725
  <!-- Form Content -->
@@ -17530,12 +17738,13 @@ class DsMobileFacilityCreationModalComponent {
17530
17738
 
17531
17739
  <!-- Description Field (Ghost Textarea) -->
17532
17740
  <ds-textarea
17741
+ #descriptionInput
17533
17742
  [(ngModel)]="description"
17534
17743
  [ghost]="true"
17535
17744
  [rows]="1"
17536
17745
  [placeholder]="descriptionPlaceholder"
17537
17746
  class="inquiry-description-input ghost-input-clean"
17538
- (valueChange)="validateForm()"
17747
+ (valueChange)="handleDescriptionChange($event)"
17539
17748
  />
17540
17749
  </ds-mobile-section>
17541
17750
 
@@ -17641,12 +17850,14 @@ class DsMobileFacilityCreationModalComponent {
17641
17850
  </div>
17642
17851
 
17643
17852
  <!-- Submit Button (Right) -->
17644
- <ds-button variant="primary" size="lg" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()"> {{ submitButtonLabel }} </ds-button>
17853
+ <ds-button class="submit-action-button" variant="primary" size="sm" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()">
17854
+ {{ submitButtonLabel }}
17855
+ </ds-button>
17645
17856
  </div>
17646
17857
  </div>
17647
17858
  </div>
17648
17859
  </ds-mobile-modal-base>
17649
- `, 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}.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-wrapper:not(.is-auto-height){min-height:100%}:host ::ng-deep .modal-wrapper:not(.is-auto-height) .modal-content-container{display:flex;flex-direction:column;flex:1}:host ::ng-deep .modal-wrapper:not(.is-auto-height) .modal-main-content{flex:1;display:flex;flex-direction:column}.form-section{flex:1;display:flex;flex-direction:column}.inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;max-height:200px;overflow-y:auto;resize:none;box-sizing:border-box;padding-right:52px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;resize:none}.detail-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:16px;letter-spacing:-.3px;color:var(--text-color-default-tertiary, #868e99)}.detail-value{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227)}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}@media (min-width: 768px){.submit-container{padding:20px 32px}}.create-action{padding:16px 20px;background:var(--color-surface-primary, #ffffff);border-top:1px solid var(--color-border, #e5e5e5)}.create-action ds-button{display:block;width:100%}.create-action ::ng-deep ds-button button{width:100%;border-radius:100px;height:48px}@media (min-width: 768px){.create-action{padding:20px 32px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsTextareaComponent, selector: "ds-textarea", inputs: ["variant", "placeholder", "disabled", "readonly", "required", "ghost", "rows", "cols", "maxlength", "minlength", "ariaLabel", "ariaDescribedBy", "ariaLabelledBy"], outputs: ["valueChange", "focused", "blurred"] }, { 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: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }, { kind: "component", type: DsMobileAttachmentPreviewComponent, selector: "ds-mobile-attachment-preview", inputs: ["attachment"], outputs: ["remove"] }] });
17860
+ `, 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}.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-wrapper:not(.is-auto-height){min-height:100%}:host ::ng-deep .modal-wrapper:not(.is-auto-height) .modal-content-container{display:flex;flex-direction:column;flex:1}:host ::ng-deep .modal-wrapper:not(.is-auto-height) .modal-main-content{flex:1;display:flex;flex-direction:column}.form-section{flex:1;display:flex;flex-direction:column}.inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;overflow-y:hidden;resize:none;box-sizing:border-box;padding-right:52px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;overflow-y:hidden;resize:none}.detail-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:16px;letter-spacing:-.3px;color:var(--text-color-default-tertiary, #868e99)}.detail-value{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227)}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}.submit-content ds-button.submit-action-button::ng-deep button{height:44px;min-height:44px;max-height:44px;padding-left:16px;padding-right:16px}@media (min-width: 768px){.submit-container{padding:20px 32px}}.create-action{padding:16px 20px;background:var(--color-surface-primary, #ffffff);border-top:1px solid var(--color-border, #e5e5e5)}.create-action ds-button{display:block;width:100%}.create-action ::ng-deep ds-button button{width:100%;border-radius:100px;height:48px}@media (min-width: 768px){.create-action{padding:20px 32px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsTextareaComponent, selector: "ds-textarea", inputs: ["variant", "placeholder", "disabled", "readonly", "required", "ghost", "rows", "cols", "maxlength", "minlength", "ariaLabel", "ariaDescribedBy", "ariaLabelledBy"], outputs: ["valueChange", "focused", "blurred"] }, { 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: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "moreActions", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }, { kind: "component", type: DsMobileAttachmentPreviewComponent, selector: "ds-mobile-attachment-preview", inputs: ["attachment"], outputs: ["remove"] }] });
17650
17861
  }
17651
17862
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileFacilityCreationModalComponent, decorators: [{
17652
17863
  type: Component,
@@ -17668,6 +17879,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
17668
17879
  [showHeader]="false"
17669
17880
  [hasFixedBottom]="true"
17670
17881
  [enableKeyboardHandling]="true"
17882
+ [keyboardContentBehavior]="'overlay'"
17671
17883
  closeButtonLabel="Close"
17672
17884
  >
17673
17885
  <!-- Form Content -->
@@ -17686,12 +17898,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
17686
17898
 
17687
17899
  <!-- Description Field (Ghost Textarea) -->
17688
17900
  <ds-textarea
17901
+ #descriptionInput
17689
17902
  [(ngModel)]="description"
17690
17903
  [ghost]="true"
17691
17904
  [rows]="1"
17692
17905
  [placeholder]="descriptionPlaceholder"
17693
17906
  class="inquiry-description-input ghost-input-clean"
17694
- (valueChange)="validateForm()"
17907
+ (valueChange)="handleDescriptionChange($event)"
17695
17908
  />
17696
17909
  </ds-mobile-section>
17697
17910
 
@@ -17797,15 +18010,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
17797
18010
  </div>
17798
18011
 
17799
18012
  <!-- Submit Button (Right) -->
17800
- <ds-button variant="primary" size="lg" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()"> {{ submitButtonLabel }} </ds-button>
18013
+ <ds-button class="submit-action-button" variant="primary" size="sm" [disabled]="!isFormValid() || isSubmitting()" (clicked)="handleSubmit()">
18014
+ {{ submitButtonLabel }}
18015
+ </ds-button>
17801
18016
  </div>
17802
18017
  </div>
17803
18018
  </div>
17804
18019
  </ds-mobile-modal-base>
17805
- `, 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}.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-wrapper:not(.is-auto-height){min-height:100%}:host ::ng-deep .modal-wrapper:not(.is-auto-height) .modal-content-container{display:flex;flex-direction:column;flex:1}:host ::ng-deep .modal-wrapper:not(.is-auto-height) .modal-main-content{flex:1;display:flex;flex-direction:column}.form-section{flex:1;display:flex;flex-direction:column}.inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;max-height:200px;overflow-y:auto;resize:none;box-sizing:border-box;padding-right:52px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;resize:none}.detail-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:16px;letter-spacing:-.3px;color:var(--text-color-default-tertiary, #868e99)}.detail-value{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227)}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}@media (min-width: 768px){.submit-container{padding:20px 32px}}.create-action{padding:16px 20px;background:var(--color-surface-primary, #ffffff);border-top:1px solid var(--color-border, #e5e5e5)}.create-action ds-button{display:block;width:100%}.create-action ::ng-deep ds-button button{width:100%;border-radius:100px;height:48px}@media (min-width: 768px){.create-action{padding:20px 32px}}\n"] }]
18020
+ `, 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}.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-wrapper:not(.is-auto-height){min-height:100%}:host ::ng-deep .modal-wrapper:not(.is-auto-height) .modal-content-container{display:flex;flex-direction:column;flex:1}:host ::ng-deep .modal-wrapper:not(.is-auto-height) .modal-main-content{flex:1;display:flex;flex-direction:column}.form-section{flex:1;display:flex;flex-direction:column}.inquiry-title-input{flex:0 0 auto}.inquiry-title-input ::ng-deep textarea{font-size:var(--font-size-2xl);font-weight:400;line-height:1.2;overflow-y:hidden;resize:none;box-sizing:border-box;padding-right:52px}.inquiry-description-input{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep .textarea-container{display:flex;flex:1;min-height:0}.inquiry-description-input ::ng-deep textarea{flex:1;min-height:80px;overflow-y:hidden;resize:none}.detail-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:16px;letter-spacing:-.3px;color:var(--text-color-default-tertiary, #868e99)}.detail-value{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227)}.fixed-bottom-container{background:var(--color-background-neutral-primary);border-top:1px solid var(--border-color-default)}.attachment-previews-section{padding:16px 20px;border-bottom:1px solid var(--border-color-default)}.image-previews{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.image-previews::-webkit-scrollbar{display:none}.submit-container{padding:16px 20px}.submit-content{display:flex;align-items:center;justify-content:space-between;gap:16px}.upload-actions{display:flex;align-items:center;gap:8px}.upload-actions ds-icon-button::ng-deep button{width:44px;height:44px;border-radius:50%}.submit-content ds-button::ng-deep button{border-radius:100px}.submit-content ds-button.submit-action-button::ng-deep button{height:44px;min-height:44px;max-height:44px;padding-left:16px;padding-right:16px}@media (min-width: 768px){.submit-container{padding:20px 32px}}.create-action{padding:16px 20px;background:var(--color-surface-primary, #ffffff);border-top:1px solid var(--color-border, #e5e5e5)}.create-action ds-button{display:block;width:100%}.create-action ::ng-deep ds-button button{width:100%;border-radius:100px;height:48px}@media (min-width: 768px){.create-action{padding:20px 32px}}\n"] }]
17806
18021
  }], propDecorators: { titleInputRef: [{
17807
18022
  type: ViewChild,
17808
18023
  args: ['titleInput', { read: ElementRef }]
18024
+ }], descriptionInputRef: [{
18025
+ type: ViewChild,
18026
+ args: ['descriptionInput', { read: ElementRef }]
17809
18027
  }], titleInput: [{
17810
18028
  type: ViewChild,
17811
18029
  args: ['titleInput']
@@ -17984,9 +18202,6 @@ class DsMobileFacilityCreationModalService extends BaseModalService {
17984
18202
  }, {
17985
18203
  keyboardClose: false, // Don't close on keyboard hide for this modal
17986
18204
  cssClass: ['ds-modal-base'],
17987
- breakpoints: [0, 1],
17988
- initialBreakpoint: 1,
17989
- handle: false,
17990
18205
  });
17991
18206
  console.log('[FacilityCreationModal] Modal created, presenting...');
17992
18207
  await modal.present();
@@ -18014,6 +18229,7 @@ class DsMobileFacilityCreationModalService extends BaseModalService {
18014
18229
  presentingElement: undefined
18015
18230
  });
18016
18231
  await sheet.present();
18232
+ disableModalShadowPointerEvents(sheet);
18017
18233
  }
18018
18234
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileFacilityCreationModalService, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Injectable });
18019
18235
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileFacilityCreationModalService, providedIn: 'root' });
@@ -18892,7 +19108,8 @@ class DsMobileFacilityDetailModalComponent {
18892
19108
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileFacilityDetailModalComponent, isStandalone: true, selector: "ds-mobile-facility-detail-modal", inputs: { facilityData: "facilityData" }, ngImport: i0, template: `
18893
19109
  <ds-mobile-modal-base
18894
19110
  [headerTitle]="facilityData.facilityTitle"
18895
- [hasFixedBottom]="true">
19111
+ [hasFixedBottom]="true"
19112
+ [keyboardContentBehavior]="'overlay'">
18896
19113
 
18897
19114
  <!-- Hero Image Section -->
18898
19115
  <!-- Hero Image and Things to Know Section -->
@@ -18932,22 +19149,20 @@ class DsMobileFacilityDetailModalComponent {
18932
19149
  <!-- Fixed Bottom Button -->
18933
19150
  <div fixed-bottom class="booking-action">
18934
19151
  <ds-button
18935
- size="lg"
19152
+ size="md"
18936
19153
  variant="primary"
18937
19154
  [fullWidth]="true"
18938
19155
  (clicked)="handleBookNow()">
18939
19156
  Book nu
18940
- <ds-icon slot="end" name="remixArrowRightSLine" />
18941
19157
  </ds-button>
18942
19158
  </div>
18943
19159
  </ds-mobile-modal-base>
18944
- `, isInline: true, styles: [":host{display:block}.facility-image{width:100%;max-width:100%;height:280px;object-fit:cover;display:block;border-radius:12px}.info-item{display:flex;align-items:center;gap:8px;padding:8px 0;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);color:var(--text-color-default-primary, #202227)}.facility-description,.facility-expectations{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227)}.facility-description p,.facility-expectations p{margin:0 0 12px}.facility-description p:last-child,.facility-expectations p:last-child{margin-bottom:0}::ng-deep .facility-description h3,::ng-deep .facility-description headline,::ng-deep .facility-description .section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding:24px 0 8px!important;display:block}.section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding-top:24px!important;padding-bottom:8px!important;display:block}::ng-deep .facility-description h3:first-child,::ng-deep .facility-description headline:first-child,::ng-deep .facility-description .section-headline:first-child,::ng-deep .facility-description>*:first-child h3:first-child,::ng-deep .facility-description>*:first-child headline:first-child{padding-top:0!important}::ng-deep .facility-expectations headline,::ng-deep .facility-expectations h3{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding:24px 0 8px!important;display:block}::ng-deep .facility-expectations headline:first-child,::ng-deep .facility-expectations h3:first-child{padding-top:0!important}h2.section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0;padding-top:16px!important;padding-bottom:8px}.facility-description ul{list-style:disc;padding-left:20px;margin:0 0 12px}.facility-description ul li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227);margin-bottom:8px}.facility-description ul li:last-child{margin-bottom:0}.facility-restrictions{margin-top:20px}.restrictions-heading{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0 0 12px}.restrictions-list{list-style:disc;padding-left:20px;margin:0}.restrictions-list li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227);margin-bottom:8px}.restrictions-list li:last-child{margin-bottom:0}.info-items-container{display:flex;flex-direction:column;gap:0}.booking-action{padding:16px 20px;background:var(--color-surface-primary, #ffffff);border-top:1px solid var(--color-border, #e5e5e5)}.booking-action ds-button{display:block;width:100%}.booking-action ::ng-deep ds-button button{width:100%;border-radius:100px;height:48px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileSwiperComponent, selector: "ds-mobile-swiper", inputs: ["slideWidth", "gap", "pagination", "autoHeight", "progressiveOpacity", "progressiveScale"] }] });
19160
+ `, isInline: true, styles: [":host{display:block}.facility-image{width:100%;max-width:100%;height:280px;object-fit:cover;display:block;border-radius:12px}.info-item{display:flex;align-items:center;gap:8px;padding:8px 0;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);color:var(--text-color-default-primary, #202227)}.facility-description,.facility-expectations{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227)}.facility-description p,.facility-expectations p{margin:0 0 12px}.facility-description p:last-child,.facility-expectations p:last-child{margin-bottom:0}::ng-deep .facility-description h3,::ng-deep .facility-description headline,::ng-deep .facility-description .section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding:24px 0 8px!important;display:block}.section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding-top:24px!important;padding-bottom:8px!important;display:block}::ng-deep .facility-description h3:first-child,::ng-deep .facility-description headline:first-child,::ng-deep .facility-description .section-headline:first-child,::ng-deep .facility-description>*:first-child h3:first-child,::ng-deep .facility-description>*:first-child headline:first-child{padding-top:0!important}::ng-deep .facility-expectations headline,::ng-deep .facility-expectations h3{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding:24px 0 8px!important;display:block}::ng-deep .facility-expectations headline:first-child,::ng-deep .facility-expectations h3:first-child{padding-top:0!important}h2.section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0;padding-top:16px!important;padding-bottom:8px}.facility-description ul{list-style:disc;padding-left:20px;margin:0 0 12px}.facility-description ul li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227);margin-bottom:8px}.facility-description ul li:last-child{margin-bottom:0}.facility-restrictions{margin-top:20px}.restrictions-heading{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0 0 12px}.restrictions-list{list-style:disc;padding-left:20px;margin:0}.restrictions-list li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227);margin-bottom:8px}.restrictions-list li:last-child{margin-bottom:0}.info-items-container{display:flex;flex-direction:column;gap:0}.booking-action{padding:16px 20px;background:var(--color-surface-primary, #ffffff);border-top:1px solid var(--color-border, #e5e5e5)}.booking-action ds-button{display:block;width:100%}.booking-action ::ng-deep ds-button button{width:100%;border-radius:100px;height:44px;min-height:44px;max-height:44px;padding-left:16px;padding-right:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["showHeader"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileSwiperComponent, selector: "ds-mobile-swiper", inputs: ["slideWidth", "gap", "pagination", "autoHeight", "progressiveOpacity", "progressiveScale"] }] });
18945
19161
  }
18946
19162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileFacilityDetailModalComponent, decorators: [{
18947
19163
  type: Component,
18948
19164
  args: [{ selector: 'ds-mobile-facility-detail-modal', standalone: true, imports: [
18949
19165
  CommonModule,
18950
- DsIconComponent,
18951
19166
  DsButtonComponent,
18952
19167
  DsMobileModalBaseComponent,
18953
19168
  DsMobileSectionComponent,
@@ -18955,7 +19170,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
18955
19170
  ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: `
18956
19171
  <ds-mobile-modal-base
18957
19172
  [headerTitle]="facilityData.facilityTitle"
18958
- [hasFixedBottom]="true">
19173
+ [hasFixedBottom]="true"
19174
+ [keyboardContentBehavior]="'overlay'">
18959
19175
 
18960
19176
  <!-- Hero Image Section -->
18961
19177
  <!-- Hero Image and Things to Know Section -->
@@ -18995,16 +19211,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
18995
19211
  <!-- Fixed Bottom Button -->
18996
19212
  <div fixed-bottom class="booking-action">
18997
19213
  <ds-button
18998
- size="lg"
19214
+ size="md"
18999
19215
  variant="primary"
19000
19216
  [fullWidth]="true"
19001
19217
  (clicked)="handleBookNow()">
19002
19218
  Book nu
19003
- <ds-icon slot="end" name="remixArrowRightSLine" />
19004
19219
  </ds-button>
19005
19220
  </div>
19006
19221
  </ds-mobile-modal-base>
19007
- `, styles: [":host{display:block}.facility-image{width:100%;max-width:100%;height:280px;object-fit:cover;display:block;border-radius:12px}.info-item{display:flex;align-items:center;gap:8px;padding:8px 0;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);color:var(--text-color-default-primary, #202227)}.facility-description,.facility-expectations{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227)}.facility-description p,.facility-expectations p{margin:0 0 12px}.facility-description p:last-child,.facility-expectations p:last-child{margin-bottom:0}::ng-deep .facility-description h3,::ng-deep .facility-description headline,::ng-deep .facility-description .section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding:24px 0 8px!important;display:block}.section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding-top:24px!important;padding-bottom:8px!important;display:block}::ng-deep .facility-description h3:first-child,::ng-deep .facility-description headline:first-child,::ng-deep .facility-description .section-headline:first-child,::ng-deep .facility-description>*:first-child h3:first-child,::ng-deep .facility-description>*:first-child headline:first-child{padding-top:0!important}::ng-deep .facility-expectations headline,::ng-deep .facility-expectations h3{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding:24px 0 8px!important;display:block}::ng-deep .facility-expectations headline:first-child,::ng-deep .facility-expectations h3:first-child{padding-top:0!important}h2.section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0;padding-top:16px!important;padding-bottom:8px}.facility-description ul{list-style:disc;padding-left:20px;margin:0 0 12px}.facility-description ul li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227);margin-bottom:8px}.facility-description ul li:last-child{margin-bottom:0}.facility-restrictions{margin-top:20px}.restrictions-heading{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0 0 12px}.restrictions-list{list-style:disc;padding-left:20px;margin:0}.restrictions-list li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227);margin-bottom:8px}.restrictions-list li:last-child{margin-bottom:0}.info-items-container{display:flex;flex-direction:column;gap:0}.booking-action{padding:16px 20px;background:var(--color-surface-primary, #ffffff);border-top:1px solid var(--color-border, #e5e5e5)}.booking-action ds-button{display:block;width:100%}.booking-action ::ng-deep ds-button button{width:100%;border-radius:100px;height:48px}\n"] }]
19222
+ `, styles: [":host{display:block}.facility-image{width:100%;max-width:100%;height:280px;object-fit:cover;display:block;border-radius:12px}.info-item{display:flex;align-items:center;gap:8px;padding:8px 0;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);color:var(--text-color-default-primary, #202227)}.facility-description,.facility-expectations{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227)}.facility-description p,.facility-expectations p{margin:0 0 12px}.facility-description p:last-child,.facility-expectations p:last-child{margin-bottom:0}::ng-deep .facility-description h3,::ng-deep .facility-description headline,::ng-deep .facility-description .section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding:24px 0 8px!important;display:block}.section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding-top:24px!important;padding-bottom:8px!important;display:block}::ng-deep .facility-description h3:first-child,::ng-deep .facility-description headline:first-child,::ng-deep .facility-description .section-headline:first-child,::ng-deep .facility-description>*:first-child h3:first-child,::ng-deep .facility-description>*:first-child headline:first-child{padding-top:0!important}::ng-deep .facility-expectations headline,::ng-deep .facility-expectations h3{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0!important;padding:24px 0 8px!important;display:block}::ng-deep .facility-expectations headline:first-child,::ng-deep .facility-expectations h3:first-child{padding-top:0!important}h2.section-headline{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0;padding-top:16px!important;padding-bottom:8px}.facility-description ul{list-style:disc;padding-left:20px;margin:0 0 12px}.facility-description ul li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227);margin-bottom:8px}.facility-description ul li:last-child{margin-bottom:0}.facility-restrictions{margin-top:20px}.restrictions-heading{font-family:Brockmann,sans-serif;font-size:var(--font-size-base, 16px);font-weight:600;line-height:1.4;color:var(--text-color-default-primary, #202227);margin:0 0 12px}.restrictions-list{list-style:disc;padding-left:20px;margin:0}.restrictions-list li{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm, 14px);line-height:1.6;color:var(--text-color-default-primary, #202227);margin-bottom:8px}.restrictions-list li:last-child{margin-bottom:0}.info-items-container{display:flex;flex-direction:column;gap:0}.booking-action{padding:16px 20px;background:var(--color-surface-primary, #ffffff);border-top:1px solid var(--color-border, #e5e5e5)}.booking-action ds-button{display:block;width:100%}.booking-action ::ng-deep ds-button button{width:100%;border-radius:100px;height:44px;min-height:44px;max-height:44px;padding-left:16px;padding-right:16px}\n"] }]
19008
19223
  }], ctorParameters: () => [{ type: i1.ModalController }, { type: DsMobileBookingModalService }], propDecorators: { facilityData: [{
19009
19224
  type: Input
19010
19225
  }] } });
@@ -19310,6 +19525,7 @@ class DsMobileHandbookDetailModalComponent {
19310
19525
  cssClass: ['ds-bottom-sheet', 'auto-height'],
19311
19526
  });
19312
19527
  await sheet.present();
19528
+ disableModalShadowPointerEvents(sheet);
19313
19529
  const result = await sheet.onWillDismiss();
19314
19530
  if (result.data?.action) {
19315
19531
  this.handleContactAction(result.data.action, contact);
@@ -19817,7 +20033,7 @@ class DsMobileHandbookFolderComponent {
19817
20033
  }
19818
20034
  </div>
19819
20035
  </div>
19820
- `, isInline: true, styles: [":host{display:inline-flex;flex-direction:column;align-items:center;gap:16px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;padding:16px;border-radius:16px;background:var(--color-background-neutral-secondary, #f0f0f0);transition:background .2s ease}:host:active{background:var(--color-background-neutral-secondary-hover, #ebebeb)}@media (hover: hover){:host:hover{background:var(--color-background-neutral-secondary-hover, #ebebeb)}}:host{--color-red-base: #dc3545;--color-red-strong: #ae1d3b;--color-green-base: #28a745;--color-green-strong: #058057;--color-yellow-base: #ffc107;--color-yellow-strong: #e4b200;--color-purple-base: #6f42c1;--color-purple-strong: #4204c5;--color-indigo-base: #6610f2;--color-indigo-strong: #a527a2;--color-lime-base: #82c91e;--color-lime-strong: #58a503;--color-teal-base: #20c997;--color-teal-strong: #0ca678;--color-cyan-base: #17a2b8;--color-cyan-strong: #1098ad;--color-brown-base: #795548;--color-brown-strong: #5c4033;--color-light-blue-base: #add8e6;--color-light-blue-strong: #87ceeb;--color-light-green-base: #90ee90;--color-light-green-strong: #32cd32;--color-coral-base: #f08080;--color-coral-strong: #cd5c5c;--color-salmon-base: #ffa07a;--color-salmon-strong: #fa8072;--color-seagreen-base: #20b2aa;--color-seagreen-strong: #2e8b57}.folder-container{position:relative;width:100%;display:flex;flex-direction:column;perspective:800px;-webkit-perspective:800px;max-width:160px;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.folder-container.open .page-sheet{-webkit-transform:translateY(-8px);transform:translateY(-8px);transition-delay:.2s}.folder-container.open .page-sheet:nth-child(1){-webkit-transform:scale(1) translateY(-8px) rotateX(-45deg) translateZ(.1px);transform:scale(1) translateY(-8px) rotateX(-45deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(2){-webkit-transform:scale(.98) translateY(-12px) rotateX(-36deg) translateZ(.1px);transform:scale(.98) translateY(-12px) rotateX(-36deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(3){-webkit-transform:scale(.96) translateY(-16px) rotateX(-27deg) translateZ(.1px);transform:scale(.96) translateY(-16px) rotateX(-27deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(4){-webkit-transform:scale(.94) translateY(-20px) rotateX(-18deg) translateZ(.1px);transform:scale(.94) translateY(-20px) rotateX(-18deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(5){-webkit-transform:scale(.92) translateY(-24px) rotateX(-9deg) translateZ(.1px);transform:scale(.92) translateY(-24px) rotateX(-9deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(6){-webkit-transform:scale(.9) translateY(-28px) rotateX(0deg) translateZ(.1px);transform:scale(.9) translateY(-28px) rotateX(.1px)}.folder-container.open .folder-front{-webkit-transform:translate3d(0,0,0) rotateX(-45deg);transform:translateZ(0) rotateX(-45deg)}.folder-tab{width:50%;height:auto;display:block}.folder-back{height:128px;border-radius:0 12px 12px;position:relative;margin-top:-1px;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.page-sheet{position:absolute;width:80%;height:120px;background:#fff;border-radius:8px;box-shadow:0 -1px 5px #0000001a;border:1px solid var(--border-color-default);transition:transform .3s ease-out;-webkit-transition:-webkit-transform .3s ease-out;left:10%;-webkit-transform:translateZ(0);transform:translateZ(0);transform-style:preserve-3d;-webkit-transform-style:preserve-3d;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;will-change:transform}.page-sheet:nth-child(1){bottom:2px;z-index:6;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(1) translateZ(.1px);transform:scale(1) translateZ(.1px)}.page-sheet:nth-child(2){bottom:8px;z-index:5;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.98) translateZ(.1px);transform:scale(.98) translateZ(.1px)}.page-sheet:nth-child(3){bottom:14px;z-index:4;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.96) translateZ(.1px);transform:scale(.96) translateZ(.1px)}.page-sheet:nth-child(4){bottom:20px;z-index:3;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.94) translateZ(.1px);transform:scale(.94) translateZ(.1px)}.page-sheet:nth-child(5){bottom:26px;z-index:2;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.92) translateZ(.1px);transform:scale(.92) translateZ(.1px)}.page-sheet:nth-child(6){bottom:32px;z-index:1;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.9) translateZ(.1px);transform:scale(.9) translateZ(.1px)}.folder-front{position:absolute;bottom:0;left:0;right:0;height:116px;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:8px;z-index:2;transform-origin:bottom center;-webkit-transform-origin:bottom center;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out;-webkit-transition:-webkit-transform .4s ease-in-out;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;-webkit-transform:rotateX(-20deg) translateZ(.1px);transform:rotateX(-20deg) translateZ(.1px);-webkit-transform:translate3d(0,0,0) rotateX(-20deg);transform:translateZ(0) rotateX(-20deg);box-shadow:inset 0 64px 48px #fff3,inset 0 2px 4px #ffffff4d,inset 0 1px 1px #ffffff4d}.item-count{display:flex;align-items:center;gap:4px}.item-count-label{letter-spacing:.5px}.folder-icon{display:flex;align-items:center;justify-content:center}.folder-label-container{display:flex;flex-direction:column;align-items:center;gap:4px}.folder-label{text-align:center}.loading-indicator,.error-indicator{font-size:var(--font-size-xs)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }] });
20036
+ `, isInline: true, styles: [":host{display:inline-flex;flex-direction:column;align-items:center;gap:16px;width:100%;min-width:0;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;padding:16px;border-radius:16px;background:var(--color-background-neutral-secondary, #f0f0f0);transition:background .2s ease}:host:active{background:var(--color-background-neutral-secondary-hover, #ebebeb)}@media (hover: hover){:host:hover{background:var(--color-background-neutral-secondary-hover, #ebebeb)}}:host{--color-red-base: #dc3545;--color-red-strong: #ae1d3b;--color-green-base: #28a745;--color-green-strong: #058057;--color-yellow-base: #ffc107;--color-yellow-strong: #e4b200;--color-purple-base: #6f42c1;--color-purple-strong: #4204c5;--color-indigo-base: #6610f2;--color-indigo-strong: #a527a2;--color-lime-base: #82c91e;--color-lime-strong: #58a503;--color-teal-base: #20c997;--color-teal-strong: #0ca678;--color-cyan-base: #17a2b8;--color-cyan-strong: #1098ad;--color-brown-base: #795548;--color-brown-strong: #5c4033;--color-light-blue-base: #add8e6;--color-light-blue-strong: #87ceeb;--color-light-green-base: #90ee90;--color-light-green-strong: #32cd32;--color-coral-base: #f08080;--color-coral-strong: #cd5c5c;--color-salmon-base: #ffa07a;--color-salmon-strong: #fa8072;--color-seagreen-base: #20b2aa;--color-seagreen-strong: #2e8b57}.folder-container{position:relative;width:100%;display:flex;flex-direction:column;perspective:800px;-webkit-perspective:800px;max-width:160px;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.folder-container.open .page-sheet{-webkit-transform:translateY(-8px);transform:translateY(-8px);transition-delay:.2s}.folder-container.open .page-sheet:nth-child(1){-webkit-transform:scale(1) translateY(-8px) rotateX(-45deg) translateZ(.1px);transform:scale(1) translateY(-8px) rotateX(-45deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(2){-webkit-transform:scale(.98) translateY(-12px) rotateX(-36deg) translateZ(.1px);transform:scale(.98) translateY(-12px) rotateX(-36deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(3){-webkit-transform:scale(.96) translateY(-16px) rotateX(-27deg) translateZ(.1px);transform:scale(.96) translateY(-16px) rotateX(-27deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(4){-webkit-transform:scale(.94) translateY(-20px) rotateX(-18deg) translateZ(.1px);transform:scale(.94) translateY(-20px) rotateX(-18deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(5){-webkit-transform:scale(.92) translateY(-24px) rotateX(-9deg) translateZ(.1px);transform:scale(.92) translateY(-24px) rotateX(-9deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(6){-webkit-transform:scale(.9) translateY(-28px) rotateX(0deg) translateZ(.1px);transform:scale(.9) translateY(-28px) rotateX(.1px)}.folder-container.open .folder-front{-webkit-transform:translate3d(0,0,0) rotateX(-45deg);transform:translateZ(0) rotateX(-45deg)}.folder-tab{width:50%;height:auto;display:block}.folder-back{height:128px;border-radius:0 12px 12px;position:relative;margin-top:-1px;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.page-sheet{position:absolute;width:80%;height:120px;background:#fff;border-radius:8px;box-shadow:0 -1px 5px #0000001a;border:1px solid var(--border-color-default);transition:transform .3s ease-out;-webkit-transition:-webkit-transform .3s ease-out;left:10%;-webkit-transform:translateZ(0);transform:translateZ(0);transform-style:preserve-3d;-webkit-transform-style:preserve-3d;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;will-change:transform}.page-sheet:nth-child(1){bottom:2px;z-index:6;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(1) translateZ(.1px);transform:scale(1) translateZ(.1px)}.page-sheet:nth-child(2){bottom:8px;z-index:5;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.98) translateZ(.1px);transform:scale(.98) translateZ(.1px)}.page-sheet:nth-child(3){bottom:14px;z-index:4;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.96) translateZ(.1px);transform:scale(.96) translateZ(.1px)}.page-sheet:nth-child(4){bottom:20px;z-index:3;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.94) translateZ(.1px);transform:scale(.94) translateZ(.1px)}.page-sheet:nth-child(5){bottom:26px;z-index:2;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.92) translateZ(.1px);transform:scale(.92) translateZ(.1px)}.page-sheet:nth-child(6){bottom:32px;z-index:1;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.9) translateZ(.1px);transform:scale(.9) translateZ(.1px)}.folder-front{position:absolute;bottom:0;left:0;right:0;height:116px;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:8px;z-index:2;transform-origin:bottom center;-webkit-transform-origin:bottom center;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out;-webkit-transition:-webkit-transform .4s ease-in-out;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;-webkit-transform:rotateX(-20deg) translateZ(.1px);transform:rotateX(-20deg) translateZ(.1px);-webkit-transform:translate3d(0,0,0) rotateX(-20deg);transform:translateZ(0) rotateX(-20deg);box-shadow:inset 0 64px 48px #fff3,inset 0 2px 4px #ffffff4d,inset 0 1px 1px #ffffff4d}.item-count{display:flex;align-items:center;gap:4px}.item-count-label{letter-spacing:.5px}.folder-icon{display:flex;align-items:center;justify-content:center}.folder-label-container{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;min-width:0}.folder-label{text-align:center;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loading-indicator,.error-indicator{font-size:var(--font-size-xs)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }] });
19821
20037
  }
19822
20038
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileHandbookFolderComponent, decorators: [{
19823
20039
  type: Component,
@@ -19862,7 +20078,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
19862
20078
  }
19863
20079
  </div>
19864
20080
  </div>
19865
- `, styles: [":host{display:inline-flex;flex-direction:column;align-items:center;gap:16px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;padding:16px;border-radius:16px;background:var(--color-background-neutral-secondary, #f0f0f0);transition:background .2s ease}:host:active{background:var(--color-background-neutral-secondary-hover, #ebebeb)}@media (hover: hover){:host:hover{background:var(--color-background-neutral-secondary-hover, #ebebeb)}}:host{--color-red-base: #dc3545;--color-red-strong: #ae1d3b;--color-green-base: #28a745;--color-green-strong: #058057;--color-yellow-base: #ffc107;--color-yellow-strong: #e4b200;--color-purple-base: #6f42c1;--color-purple-strong: #4204c5;--color-indigo-base: #6610f2;--color-indigo-strong: #a527a2;--color-lime-base: #82c91e;--color-lime-strong: #58a503;--color-teal-base: #20c997;--color-teal-strong: #0ca678;--color-cyan-base: #17a2b8;--color-cyan-strong: #1098ad;--color-brown-base: #795548;--color-brown-strong: #5c4033;--color-light-blue-base: #add8e6;--color-light-blue-strong: #87ceeb;--color-light-green-base: #90ee90;--color-light-green-strong: #32cd32;--color-coral-base: #f08080;--color-coral-strong: #cd5c5c;--color-salmon-base: #ffa07a;--color-salmon-strong: #fa8072;--color-seagreen-base: #20b2aa;--color-seagreen-strong: #2e8b57}.folder-container{position:relative;width:100%;display:flex;flex-direction:column;perspective:800px;-webkit-perspective:800px;max-width:160px;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.folder-container.open .page-sheet{-webkit-transform:translateY(-8px);transform:translateY(-8px);transition-delay:.2s}.folder-container.open .page-sheet:nth-child(1){-webkit-transform:scale(1) translateY(-8px) rotateX(-45deg) translateZ(.1px);transform:scale(1) translateY(-8px) rotateX(-45deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(2){-webkit-transform:scale(.98) translateY(-12px) rotateX(-36deg) translateZ(.1px);transform:scale(.98) translateY(-12px) rotateX(-36deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(3){-webkit-transform:scale(.96) translateY(-16px) rotateX(-27deg) translateZ(.1px);transform:scale(.96) translateY(-16px) rotateX(-27deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(4){-webkit-transform:scale(.94) translateY(-20px) rotateX(-18deg) translateZ(.1px);transform:scale(.94) translateY(-20px) rotateX(-18deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(5){-webkit-transform:scale(.92) translateY(-24px) rotateX(-9deg) translateZ(.1px);transform:scale(.92) translateY(-24px) rotateX(-9deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(6){-webkit-transform:scale(.9) translateY(-28px) rotateX(0deg) translateZ(.1px);transform:scale(.9) translateY(-28px) rotateX(.1px)}.folder-container.open .folder-front{-webkit-transform:translate3d(0,0,0) rotateX(-45deg);transform:translateZ(0) rotateX(-45deg)}.folder-tab{width:50%;height:auto;display:block}.folder-back{height:128px;border-radius:0 12px 12px;position:relative;margin-top:-1px;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.page-sheet{position:absolute;width:80%;height:120px;background:#fff;border-radius:8px;box-shadow:0 -1px 5px #0000001a;border:1px solid var(--border-color-default);transition:transform .3s ease-out;-webkit-transition:-webkit-transform .3s ease-out;left:10%;-webkit-transform:translateZ(0);transform:translateZ(0);transform-style:preserve-3d;-webkit-transform-style:preserve-3d;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;will-change:transform}.page-sheet:nth-child(1){bottom:2px;z-index:6;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(1) translateZ(.1px);transform:scale(1) translateZ(.1px)}.page-sheet:nth-child(2){bottom:8px;z-index:5;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.98) translateZ(.1px);transform:scale(.98) translateZ(.1px)}.page-sheet:nth-child(3){bottom:14px;z-index:4;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.96) translateZ(.1px);transform:scale(.96) translateZ(.1px)}.page-sheet:nth-child(4){bottom:20px;z-index:3;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.94) translateZ(.1px);transform:scale(.94) translateZ(.1px)}.page-sheet:nth-child(5){bottom:26px;z-index:2;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.92) translateZ(.1px);transform:scale(.92) translateZ(.1px)}.page-sheet:nth-child(6){bottom:32px;z-index:1;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.9) translateZ(.1px);transform:scale(.9) translateZ(.1px)}.folder-front{position:absolute;bottom:0;left:0;right:0;height:116px;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:8px;z-index:2;transform-origin:bottom center;-webkit-transform-origin:bottom center;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out;-webkit-transition:-webkit-transform .4s ease-in-out;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;-webkit-transform:rotateX(-20deg) translateZ(.1px);transform:rotateX(-20deg) translateZ(.1px);-webkit-transform:translate3d(0,0,0) rotateX(-20deg);transform:translateZ(0) rotateX(-20deg);box-shadow:inset 0 64px 48px #fff3,inset 0 2px 4px #ffffff4d,inset 0 1px 1px #ffffff4d}.item-count{display:flex;align-items:center;gap:4px}.item-count-label{letter-spacing:.5px}.folder-icon{display:flex;align-items:center;justify-content:center}.folder-label-container{display:flex;flex-direction:column;align-items:center;gap:4px}.folder-label{text-align:center}.loading-indicator,.error-indicator{font-size:var(--font-size-xs)}\n"] }]
20081
+ `, styles: [":host{display:inline-flex;flex-direction:column;align-items:center;gap:16px;width:100%;min-width:0;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;padding:16px;border-radius:16px;background:var(--color-background-neutral-secondary, #f0f0f0);transition:background .2s ease}:host:active{background:var(--color-background-neutral-secondary-hover, #ebebeb)}@media (hover: hover){:host:hover{background:var(--color-background-neutral-secondary-hover, #ebebeb)}}:host{--color-red-base: #dc3545;--color-red-strong: #ae1d3b;--color-green-base: #28a745;--color-green-strong: #058057;--color-yellow-base: #ffc107;--color-yellow-strong: #e4b200;--color-purple-base: #6f42c1;--color-purple-strong: #4204c5;--color-indigo-base: #6610f2;--color-indigo-strong: #a527a2;--color-lime-base: #82c91e;--color-lime-strong: #58a503;--color-teal-base: #20c997;--color-teal-strong: #0ca678;--color-cyan-base: #17a2b8;--color-cyan-strong: #1098ad;--color-brown-base: #795548;--color-brown-strong: #5c4033;--color-light-blue-base: #add8e6;--color-light-blue-strong: #87ceeb;--color-light-green-base: #90ee90;--color-light-green-strong: #32cd32;--color-coral-base: #f08080;--color-coral-strong: #cd5c5c;--color-salmon-base: #ffa07a;--color-salmon-strong: #fa8072;--color-seagreen-base: #20b2aa;--color-seagreen-strong: #2e8b57}.folder-container{position:relative;width:100%;display:flex;flex-direction:column;perspective:800px;-webkit-perspective:800px;max-width:160px;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.folder-container.open .page-sheet{-webkit-transform:translateY(-8px);transform:translateY(-8px);transition-delay:.2s}.folder-container.open .page-sheet:nth-child(1){-webkit-transform:scale(1) translateY(-8px) rotateX(-45deg) translateZ(.1px);transform:scale(1) translateY(-8px) rotateX(-45deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(2){-webkit-transform:scale(.98) translateY(-12px) rotateX(-36deg) translateZ(.1px);transform:scale(.98) translateY(-12px) rotateX(-36deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(3){-webkit-transform:scale(.96) translateY(-16px) rotateX(-27deg) translateZ(.1px);transform:scale(.96) translateY(-16px) rotateX(-27deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(4){-webkit-transform:scale(.94) translateY(-20px) rotateX(-18deg) translateZ(.1px);transform:scale(.94) translateY(-20px) rotateX(-18deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(5){-webkit-transform:scale(.92) translateY(-24px) rotateX(-9deg) translateZ(.1px);transform:scale(.92) translateY(-24px) rotateX(-9deg) translateZ(.1px)}.folder-container.open .page-sheet:nth-child(6){-webkit-transform:scale(.9) translateY(-28px) rotateX(0deg) translateZ(.1px);transform:scale(.9) translateY(-28px) rotateX(.1px)}.folder-container.open .folder-front{-webkit-transform:translate3d(0,0,0) rotateX(-45deg);transform:translateZ(0) rotateX(-45deg)}.folder-tab{width:50%;height:auto;display:block}.folder-back{height:128px;border-radius:0 12px 12px;position:relative;margin-top:-1px;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.page-sheet{position:absolute;width:80%;height:120px;background:#fff;border-radius:8px;box-shadow:0 -1px 5px #0000001a;border:1px solid var(--border-color-default);transition:transform .3s ease-out;-webkit-transition:-webkit-transform .3s ease-out;left:10%;-webkit-transform:translateZ(0);transform:translateZ(0);transform-style:preserve-3d;-webkit-transform-style:preserve-3d;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;will-change:transform}.page-sheet:nth-child(1){bottom:2px;z-index:6;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(1) translateZ(.1px);transform:scale(1) translateZ(.1px)}.page-sheet:nth-child(2){bottom:8px;z-index:5;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.98) translateZ(.1px);transform:scale(.98) translateZ(.1px)}.page-sheet:nth-child(3){bottom:14px;z-index:4;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.96) translateZ(.1px);transform:scale(.96) translateZ(.1px)}.page-sheet:nth-child(4){bottom:20px;z-index:3;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.94) translateZ(.1px);transform:scale(.94) translateZ(.1px)}.page-sheet:nth-child(5){bottom:26px;z-index:2;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.92) translateZ(.1px);transform:scale(.92) translateZ(.1px)}.page-sheet:nth-child(6){bottom:32px;z-index:1;transform-origin:bottom center;-webkit-transform-origin:bottom center;-webkit-transform:scale(.9) translateZ(.1px);transform:scale(.9) translateZ(.1px)}.folder-front{position:absolute;bottom:0;left:0;right:0;height:116px;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:8px;z-index:2;transform-origin:bottom center;-webkit-transform-origin:bottom center;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out;-webkit-transition:-webkit-transform .4s ease-in-out;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;-webkit-transform:rotateX(-20deg) translateZ(.1px);transform:rotateX(-20deg) translateZ(.1px);-webkit-transform:translate3d(0,0,0) rotateX(-20deg);transform:translateZ(0) rotateX(-20deg);box-shadow:inset 0 64px 48px #fff3,inset 0 2px 4px #ffffff4d,inset 0 1px 1px #ffffff4d}.item-count{display:flex;align-items:center;gap:4px}.item-count-label{letter-spacing:.5px}.folder-icon{display:flex;align-items:center;justify-content:center}.folder-label-container{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;min-width:0}.folder-label{text-align:center;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loading-indicator,.error-indicator{font-size:var(--font-size-xs)}\n"] }]
19866
20082
  }], ctorParameters: () => [{ type: DsMobileHandbookDetailModalService }], propDecorators: { variant: [{
19867
20083
  type: Input
19868
20084
  }], customColor: [{
@@ -21241,6 +21457,7 @@ class MobileCommunityPageComponent {
21241
21457
  [avatarSrc]="post.avatarSrc || ''"
21242
21458
  [showBadge]="true"
21243
21459
  [clickable]="true"
21460
+ [moreActions]="true"
21244
21461
  (postClick)="openPost(post.id)"
21245
21462
  (commentClick)="openPost(post.id, true)"
21246
21463
  (longPress)="handlePostLongPress(post.id, false)">
@@ -21310,6 +21527,7 @@ class MobileCommunityPageComponent {
21310
21527
  [avatarInitials]="post.avatarInitials || ''"
21311
21528
  [avatarType]="post.avatarType"
21312
21529
  [clickable]="true"
21530
+ [moreActions]="true"
21313
21531
  (postClick)="openPost(post.id)"
21314
21532
  (commentClick)="openPost(post.id, true)"
21315
21533
  (longPress)="handlePostLongPress(post.id, post.authorRole === 'Dig')">
@@ -21348,6 +21566,7 @@ class MobileCommunityPageComponent {
21348
21566
  [avatarType]="post.avatarType"
21349
21567
  [showBadge]="post.showBadge || false"
21350
21568
  [clickable]="true"
21569
+ [moreActions]="true"
21351
21570
  (postClick)="openPost(post.id)"
21352
21571
  (commentClick)="openPost(post.id, true)"
21353
21572
  (longPress)="handlePostLongPress(post.id, false)">
@@ -21389,6 +21608,7 @@ class MobileCommunityPageComponent {
21389
21608
  [avatarSrc]="post.avatarSrc || ''"
21390
21609
  [avatarInitials]="post.avatarInitials || ''"
21391
21610
  [clickable]="true"
21611
+ [moreActions]="true"
21392
21612
  (postClick)="openPost(post.id)"
21393
21613
  (commentClick)="openPost(post.id, true)"
21394
21614
  (longPress)="handlePostLongPress(post.id, post.authorRole === 'Dig')">
@@ -21443,7 +21663,7 @@ class MobileCommunityPageComponent {
21443
21663
  }
21444
21664
  </ds-mobile-section>
21445
21665
  </ds-mobile-page-main>
21446
- `, isInline: true, styles: [".pinned-posts-swiper-wrapper{padding:0;position:relative}.swiper-nav-buttons{display:contents}.swiper-nav-button{position:absolute;top:50%;transform:translateY(-50%);z-index:10}.swiper-nav-button:first-child{left:-48px}.swiper-nav-button:last-child{right:-48px}::ng-deep .swiper-nav-button button{border-radius:50%!important;width:48px!important;height:48px!important;padding:0!important}@media (max-width: 767px){.swiper-nav-buttons{display:none}}::ng-deep .pinned-posts-swiper .swiper-slide{width:100%;max-width:600px;height:auto}@media (min-width: 768px){::ng-deep .pinned-posts-swiper .swiper-slide{max-width:100%}}.swiper-post-item{width:100%;height:auto}::ng-deep .pinned-posts-swiper .swiper-slide ds-mobile-interactive-list-item-post{height:auto}::ng-deep .pinned-posts-swiper .swiper-wrapper{height:auto;align-items:flex-start}.post-list-wrapper{display:flex;flex-direction:column}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.community-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-image{width:96px;height:96px;margin-bottom:24px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:16px 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}ion-infinite-scroll{--color: var(--color-primary-surface)}ion-infinite-scroll-content{--color: var(--color-primary-surface)}ion-infinite-scroll-content::part(spinner){color:var(--color-primary-surface)}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileInteractiveListItemPostComponent, selector: "ds-mobile-interactive-list-item-post", inputs: ["authorName", "authorRole", "timestamp", "avatarInitials", "avatarType", "avatarSrc", "avatarIconName", "showBadge", "variant", "align", "clickable", "enableLongPress"], outputs: ["postClick", "commentClick", "longPress"] }, { kind: "component", type: DsMobilePostComposerComponent, selector: "ds-mobile-post-composer", inputs: ["avatarInitials", "avatarType", "avatarSrc", "avatarIconName", "placeholder", "buttonText"], outputs: ["composerClick"] }, { kind: "component", type: DsMobileSwiperComponent, selector: "ds-mobile-swiper", inputs: ["slideWidth", "gap", "pagination", "autoHeight", "progressiveOpacity", "progressiveScale"] }, { kind: "component", type: PostContentComponent, selector: "post-content" }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostMediaComponent, selector: "post-media" }, { kind: "component", type: PostAttachmentsComponent, selector: "post-attachments" }, { kind: "component", type: PostActionsComponent, selector: "post-actions" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }, { kind: "component", type: DsMobileCardInlineFileComponent, selector: "ds-mobile-card-inline-file", inputs: ["fileName", "fileSize", "variant", "layout", "fileUrl"], outputs: ["fileClick"] }, { 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: DsMobileInlinePhotoComponent, selector: "ds-mobile-inline-photo", inputs: ["images", "loadingStates", "author", "maxVisible", "useGrid"], outputs: ["photoClick"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }] });
21666
+ `, isInline: true, styles: [".pinned-posts-swiper-wrapper{padding:0;position:relative}.swiper-nav-buttons{display:contents}.swiper-nav-button{position:absolute;top:50%;transform:translateY(-50%);z-index:10}.swiper-nav-button:first-child{left:-48px}.swiper-nav-button:last-child{right:-48px}::ng-deep .swiper-nav-button button{border-radius:50%!important;width:48px!important;height:48px!important;padding:0!important}@media (max-width: 767px){.swiper-nav-buttons{display:none}}::ng-deep .pinned-posts-swiper .swiper-slide{width:100%;max-width:600px;height:auto}@media (min-width: 768px){::ng-deep .pinned-posts-swiper .swiper-slide{max-width:100%}}.swiper-post-item{width:100%;height:auto}::ng-deep .pinned-posts-swiper .swiper-slide ds-mobile-interactive-list-item-post{height:auto}::ng-deep .pinned-posts-swiper .swiper-wrapper{height:auto;align-items:flex-start}.post-list-wrapper{display:flex;flex-direction:column}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.community-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-image{width:96px;height:96px;margin-bottom:24px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:16px 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}ion-infinite-scroll{--color: var(--color-primary-surface)}ion-infinite-scroll-content{--color: var(--color-primary-surface)}ion-infinite-scroll-content::part(spinner){color:var(--color-primary-surface)}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileInteractiveListItemPostComponent, selector: "ds-mobile-interactive-list-item-post", inputs: ["authorName", "authorRole", "timestamp", "avatarInitials", "avatarType", "avatarSrc", "avatarIconName", "showBadge", "variant", "align", "clickable", "enableLongPress", "moreActions"], outputs: ["postClick", "commentClick", "longPress"] }, { kind: "component", type: DsMobilePostComposerComponent, selector: "ds-mobile-post-composer", inputs: ["avatarInitials", "avatarType", "avatarSrc", "avatarIconName", "placeholder", "buttonText"], outputs: ["composerClick"] }, { kind: "component", type: DsMobileSwiperComponent, selector: "ds-mobile-swiper", inputs: ["slideWidth", "gap", "pagination", "autoHeight", "progressiveOpacity", "progressiveScale"] }, { kind: "component", type: PostContentComponent, selector: "post-content" }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostMediaComponent, selector: "post-media" }, { kind: "component", type: PostAttachmentsComponent, selector: "post-attachments" }, { kind: "component", type: PostActionsComponent, selector: "post-actions" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }, { kind: "component", type: DsMobileCardInlineFileComponent, selector: "ds-mobile-card-inline-file", inputs: ["fileName", "fileSize", "variant", "layout", "fileUrl"], outputs: ["fileClick"] }, { 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: DsMobileInlinePhotoComponent, selector: "ds-mobile-inline-photo", inputs: ["images", "loadingStates", "author", "maxVisible", "useGrid"], outputs: ["photoClick"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }] });
21447
21667
  }
21448
21668
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileCommunityPageComponent, decorators: [{
21449
21669
  type: Component,
@@ -21518,6 +21738,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
21518
21738
  [avatarSrc]="post.avatarSrc || ''"
21519
21739
  [showBadge]="true"
21520
21740
  [clickable]="true"
21741
+ [moreActions]="true"
21521
21742
  (postClick)="openPost(post.id)"
21522
21743
  (commentClick)="openPost(post.id, true)"
21523
21744
  (longPress)="handlePostLongPress(post.id, false)">
@@ -21587,6 +21808,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
21587
21808
  [avatarInitials]="post.avatarInitials || ''"
21588
21809
  [avatarType]="post.avatarType"
21589
21810
  [clickable]="true"
21811
+ [moreActions]="true"
21590
21812
  (postClick)="openPost(post.id)"
21591
21813
  (commentClick)="openPost(post.id, true)"
21592
21814
  (longPress)="handlePostLongPress(post.id, post.authorRole === 'Dig')">
@@ -21625,6 +21847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
21625
21847
  [avatarType]="post.avatarType"
21626
21848
  [showBadge]="post.showBadge || false"
21627
21849
  [clickable]="true"
21850
+ [moreActions]="true"
21628
21851
  (postClick)="openPost(post.id)"
21629
21852
  (commentClick)="openPost(post.id, true)"
21630
21853
  (longPress)="handlePostLongPress(post.id, false)">
@@ -21666,6 +21889,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
21666
21889
  [avatarSrc]="post.avatarSrc || ''"
21667
21890
  [avatarInitials]="post.avatarInitials || ''"
21668
21891
  [clickable]="true"
21892
+ [moreActions]="true"
21669
21893
  (postClick)="openPost(post.id)"
21670
21894
  (commentClick)="openPost(post.id, true)"
21671
21895
  (longPress)="handlePostLongPress(post.id, post.authorRole === 'Dig')">
@@ -22010,7 +22234,7 @@ class MobileHandbookPageComponent {
22010
22234
  </div>
22011
22235
  </ds-mobile-section>
22012
22236
  </ds-mobile-page-main>
22013
- `, isInline: true, styles: [".folders-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;justify-items:center}@media (min-width: 768px){.folders-grid{grid-template-columns:repeat(3,1fr)}}ds-mobile-handbook-folder{width:100%}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileHandbookFolderComponent, selector: "ds-mobile-handbook-folder", inputs: ["variant", "customColor", "iconName", "itemCount", "label", "items", "loading", "error"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }] });
22237
+ `, isInline: true, styles: [".folders-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;justify-items:center}@media (min-width: 768px){.folders-grid{grid-template-columns:repeat(3,1fr)}}ds-mobile-handbook-folder{width:100%;min-width:0}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileHandbookFolderComponent, selector: "ds-mobile-handbook-folder", inputs: ["variant", "customColor", "iconName", "itemCount", "label", "items", "loading", "error"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }] });
22014
22238
  }
22015
22239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileHandbookPageComponent, decorators: [{
22016
22240
  type: Component,
@@ -22036,7 +22260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
22036
22260
  </div>
22037
22261
  </ds-mobile-section>
22038
22262
  </ds-mobile-page-main>
22039
- `, styles: [".folders-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;justify-items:center}@media (min-width: 768px){.folders-grid{grid-template-columns:repeat(3,1fr)}}ds-mobile-handbook-folder{width:100%}\n"] }]
22263
+ `, styles: [".folders-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;justify-items:center}@media (min-width: 768px){.folders-grid{grid-template-columns:repeat(3,1fr)}}ds-mobile-handbook-folder{width:100%;min-width:0}\n"] }]
22040
22264
  }], ctorParameters: () => [{ type: UserService }], propDecorators: { pageComponent: [{
22041
22265
  type: ViewChild,
22042
22266
  args: ['pageComponent']
@@ -22127,6 +22351,7 @@ class MobileHomePageComponent {
22127
22351
  postsService;
22128
22352
  postModal;
22129
22353
  trackingPermissionService;
22354
+ bottomSheet;
22130
22355
  pageComponent;
22131
22356
  // Get recent posts from PostsService - exclude pinned post (post-4) and limit to 3
22132
22357
  recentPosts = computed(() => this.postsService.posts()
@@ -22160,12 +22385,13 @@ class MobileHomePageComponent {
22160
22385
  openInquiries = computed(() => this.allInquiries()
22161
22386
  .filter(inquiry => inquiry.status === 'open')
22162
22387
  .slice(0, 3), ...(ngDevMode ? [{ debugName: "openInquiries" }] : []));
22163
- constructor(router, userService, postsService, postModal, trackingPermissionService) {
22388
+ constructor(router, userService, postsService, postModal, trackingPermissionService, bottomSheet) {
22164
22389
  this.router = router;
22165
22390
  this.userService = userService;
22166
22391
  this.postsService = postsService;
22167
22392
  this.postModal = postModal;
22168
22393
  this.trackingPermissionService = trackingPermissionService;
22394
+ this.bottomSheet = bottomSheet;
22169
22395
  console.log('MobileHomePageComponent constructor');
22170
22396
  }
22171
22397
  ngOnInit() {
@@ -22207,7 +22433,36 @@ class MobileHomePageComponent {
22207
22433
  console.log('Navigating to inquiries page');
22208
22434
  this.router.navigate(['/inquiries']);
22209
22435
  }
22210
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileHomePageComponent, deps: [{ token: i1$4.Router }, { token: UserService }, { token: PostsService }, { token: DsMobilePostDetailModalService }, { token: TrackingPermissionService }], target: i0.ɵɵFactoryTarget.Component });
22436
+ async handlePostLongPress(postId) {
22437
+ const sheet = await this.bottomSheet.create({
22438
+ component: DsMobileActionsBottomSheetComponent,
22439
+ componentProps: { isOwnContent: false },
22440
+ breakpoints: [0, 1],
22441
+ initialBreakpoint: 1,
22442
+ handle: true,
22443
+ backdropDismiss: true,
22444
+ cssClass: 'auto-height'
22445
+ });
22446
+ const result = await sheet.onWillDismiss();
22447
+ if (result.role === 'select' && result.data) {
22448
+ const action = result.data.action;
22449
+ switch (action) {
22450
+ case 'like':
22451
+ const post = this.postsService.getPostById(postId);
22452
+ if (post) {
22453
+ this.postsService.updatePost(postId, {
22454
+ isLiked: !post.isLiked,
22455
+ likeCount: post.isLiked ? post.likeCount - 1 : post.likeCount + 1
22456
+ });
22457
+ }
22458
+ break;
22459
+ case 'reply':
22460
+ await this.openPost(postId, true);
22461
+ break;
22462
+ }
22463
+ }
22464
+ }
22465
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileHomePageComponent, deps: [{ token: i1$4.Router }, { token: UserService }, { token: PostsService }, { token: DsMobilePostDetailModalService }, { token: TrackingPermissionService }, { token: DsMobileBottomSheetService }], target: i0.ɵɵFactoryTarget.Component });
22211
22466
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MobileHomePageComponent, isStandalone: true, selector: "app-home-page", viewQueries: [{ propertyName: "pageComponent", first: true, predicate: ["pageComponent"], descendants: true }], ngImport: i0, template: `
22212
22467
  <ds-mobile-page-main
22213
22468
  #pageComponent
@@ -22215,7 +22470,8 @@ class MobileHomePageComponent {
22215
22470
  headerTitle="Velkommen, Lars"
22216
22471
  [avatarInitials]="userService.avatarInitials()"
22217
22472
  [avatarType]="userService.avatarType()"
22218
- (refresh)="handleRefresh($event)">
22473
+ (refresh)="handleRefresh($event)"
22474
+ >
22219
22475
 
22220
22476
  <!-- Offline indicator -->
22221
22477
  @if (pageComponent.isOffline()) {
@@ -22250,9 +22506,10 @@ class MobileHomePageComponent {
22250
22506
  [avatarInitials]="post.avatarInitials || ''"
22251
22507
  [showBadge]="post.showBadge || false"
22252
22508
  [clickable]="true"
22253
- [enableLongPress]="false"
22509
+ [moreActions]="true"
22254
22510
  (postClick)="openPost(post.id)"
22255
- (commentClick)="openPost(post.id, true)">
22511
+ (commentClick)="openPost(post.id, true)"
22512
+ (longPress)="handlePostLongPress(post.id)">
22256
22513
 
22257
22514
  <post-content>
22258
22515
  @if (post.content) {
@@ -22324,7 +22581,7 @@ class MobileHomePageComponent {
22324
22581
  </div>
22325
22582
  </ds-mobile-section>
22326
22583
  </ds-mobile-page-main>
22327
- `, isInline: true, styles: [".posts-list,.inquiries-list{display:flex;flex-direction:column}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;text-align:center}.empty-state ds-button{display:block;margin-top:16px}.empty-state ds-button::ng-deep .btn{width:100%;border-radius:9999px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-top:-16px;z-index:4}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}\n"], dependencies: [{ kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileIllustrationComponent, selector: "ds-mobile-illustration", inputs: ["variant", "size", "alt"] }, { kind: "component", type: DsMobilePropertyBannerComponent, selector: "ds-mobile-property-banner", inputs: ["address", "photoUrl"] }, { kind: "component", type: DsMobileInteractiveListItemPostComponent, selector: "ds-mobile-interactive-list-item-post", inputs: ["authorName", "authorRole", "timestamp", "avatarInitials", "avatarType", "avatarSrc", "avatarIconName", "showBadge", "variant", "align", "clickable", "enableLongPress"], outputs: ["postClick", "commentClick", "longPress"] }, { kind: "component", type: DsMobileInteractiveListItemInquiryComponent, selector: "ds-mobile-interactive-list-item-inquiry", inputs: ["title", "description", "status", "statusLabel", "timestamp", "iconName", "iconColor", "variant", "align", "clickable", "showChevron", "enableLongPress"], outputs: ["inquiryClick", "longPress"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: PostContentComponent, selector: "post-content" }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostActionsComponent, selector: "post-actions" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }] });
22584
+ `, isInline: true, styles: [".posts-list,.inquiries-list{display:flex;flex-direction:column}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;text-align:center}.empty-state ds-button{display:block;margin-top:16px}.empty-state ds-button::ng-deep .btn{width:100%;border-radius:9999px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-top:-16px;z-index:4}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}\n"], dependencies: [{ kind: "component", type: DsButtonComponent, selector: "ds-button", inputs: ["variant", "size", "disabled", "loading", "pressed", "expanded", "leadingIcon", "trailingIcon", "ariaLabel", "iconOnly"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileIllustrationComponent, selector: "ds-mobile-illustration", inputs: ["variant", "size", "alt"] }, { kind: "component", type: DsMobilePropertyBannerComponent, selector: "ds-mobile-property-banner", inputs: ["address", "photoUrl"] }, { kind: "component", type: DsMobileInteractiveListItemPostComponent, selector: "ds-mobile-interactive-list-item-post", inputs: ["authorName", "authorRole", "timestamp", "avatarInitials", "avatarType", "avatarSrc", "avatarIconName", "showBadge", "variant", "align", "clickable", "enableLongPress", "moreActions"], outputs: ["postClick", "commentClick", "longPress"] }, { kind: "component", type: DsMobileInteractiveListItemInquiryComponent, selector: "ds-mobile-interactive-list-item-inquiry", inputs: ["title", "description", "status", "statusLabel", "timestamp", "iconName", "iconColor", "variant", "align", "clickable", "showChevron", "enableLongPress", "moreActions"], outputs: ["inquiryClick", "longPress"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: PostContentComponent, selector: "post-content" }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostActionsComponent, selector: "post-actions" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }] });
22328
22585
  }
22329
22586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileHomePageComponent, decorators: [{
22330
22587
  type: Component,
@@ -22349,7 +22606,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
22349
22606
  headerTitle="Velkommen, Lars"
22350
22607
  [avatarInitials]="userService.avatarInitials()"
22351
22608
  [avatarType]="userService.avatarType()"
22352
- (refresh)="handleRefresh($event)">
22609
+ (refresh)="handleRefresh($event)"
22610
+ >
22353
22611
 
22354
22612
  <!-- Offline indicator -->
22355
22613
  @if (pageComponent.isOffline()) {
@@ -22384,9 +22642,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
22384
22642
  [avatarInitials]="post.avatarInitials || ''"
22385
22643
  [showBadge]="post.showBadge || false"
22386
22644
  [clickable]="true"
22387
- [enableLongPress]="false"
22645
+ [moreActions]="true"
22388
22646
  (postClick)="openPost(post.id)"
22389
- (commentClick)="openPost(post.id, true)">
22647
+ (commentClick)="openPost(post.id, true)"
22648
+ (longPress)="handlePostLongPress(post.id)">
22390
22649
 
22391
22650
  <post-content>
22392
22651
  @if (post.content) {
@@ -22459,7 +22718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
22459
22718
  </ds-mobile-section>
22460
22719
  </ds-mobile-page-main>
22461
22720
  `, styles: [".posts-list,.inquiries-list{display:flex;flex-direction:column}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;text-align:center}.empty-state ds-button{display:block;margin-top:16px}.empty-state ds-button::ng-deep .btn{width:100%;border-radius:9999px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-top:-16px;z-index:4}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}\n"] }]
22462
- }], ctorParameters: () => [{ type: i1$4.Router }, { type: UserService }, { type: PostsService }, { type: DsMobilePostDetailModalService }, { type: TrackingPermissionService }], propDecorators: { pageComponent: [{
22721
+ }], ctorParameters: () => [{ type: i1$4.Router }, { type: UserService }, { type: PostsService }, { type: DsMobilePostDetailModalService }, { type: TrackingPermissionService }, { type: DsMobileBottomSheetService }], propDecorators: { pageComponent: [{
22463
22722
  type: ViewChild,
22464
22723
  args: ['pageComponent']
22465
22724
  }] } });
@@ -22649,7 +22908,7 @@ class MobileInquiriesPageComponent {
22649
22908
  ariaLabel="Create new inquiry"
22650
22909
  (clicked)="createNewInquiry()">
22651
22910
  </ds-mobile-fab>
22652
- `, isInline: true, styles: [".inquiry-list-wrapper{display:flex;flex-direction:column;margin-top:-12px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-top:-16px;z-index:4}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileIllustrationComponent, selector: "ds-mobile-illustration", inputs: ["variant", "size", "alt"] }, { kind: "component", type: DsMobileInteractiveListItemInquiryComponent, selector: "ds-mobile-interactive-list-item-inquiry", inputs: ["title", "description", "status", "statusLabel", "timestamp", "iconName", "iconColor", "variant", "align", "clickable", "showChevron", "enableLongPress"], outputs: ["inquiryClick", "longPress"] }, { kind: "component", type: DsMobileInlineTabsComponent, selector: "ds-mobile-inline-tabs", inputs: ["tabs", "activeTab"], outputs: ["tabChange"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: DsMobileFabComponent, selector: "ds-mobile-fab", inputs: ["icon", "position", "size", "ariaLabel", "disabled"], outputs: ["clicked"] }] });
22911
+ `, isInline: true, styles: [".inquiry-list-wrapper{display:flex;flex-direction:column;margin-top:-12px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-top:-16px;z-index:4}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileIllustrationComponent, selector: "ds-mobile-illustration", inputs: ["variant", "size", "alt"] }, { kind: "component", type: DsMobileInteractiveListItemInquiryComponent, selector: "ds-mobile-interactive-list-item-inquiry", inputs: ["title", "description", "status", "statusLabel", "timestamp", "iconName", "iconColor", "variant", "align", "clickable", "showChevron", "enableLongPress", "moreActions"], outputs: ["inquiryClick", "longPress"] }, { kind: "component", type: DsMobileInlineTabsComponent, selector: "ds-mobile-inline-tabs", inputs: ["tabs", "activeTab"], outputs: ["tabChange"] }, { kind: "component", type: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: DsMobileFabComponent, selector: "ds-mobile-fab", inputs: ["icon", "position", "size", "ariaLabel", "disabled"], outputs: ["clicked"] }] });
22653
22912
  }
22654
22913
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileInquiriesPageComponent, decorators: [{
22655
22914
  type: Component,
@@ -22848,7 +23107,7 @@ class MobileInquiryDetailPageComponent {
22848
23107
  // Day 1 - Yesterday morning (9:15 AM)
22849
23108
  {
22850
23109
  id: '1',
22851
- content: 'Good morning! I wanted to follow up on your inquiry regarding the maintenance schedule.',
23110
+ content: 'Godmorgen! Jeg ville lige følge op din henvendelse vedrørende vedligeholdelsesplanen.',
22852
23111
  senderId: messageId,
22853
23112
  senderName: messageThread.senderName,
22854
23113
  senderRole: messageThread.role,
@@ -22859,7 +23118,7 @@ class MobileInquiryDetailPageComponent {
22859
23118
  },
22860
23119
  {
22861
23120
  id: '2',
22862
- content: 'We have reviewed your case and identified the root cause of the issue.',
23121
+ content: 'Vi har gennemgået din sag og identificeret den grundlæggende årsag til problemet.',
22863
23122
  senderId: messageId,
22864
23123
  senderName: messageThread.senderName,
22865
23124
  senderRole: messageThread.role,
@@ -22870,7 +23129,7 @@ class MobileInquiryDetailPageComponent {
22870
23129
  },
22871
23130
  {
22872
23131
  id: '3',
22873
- content: 'Thanks for looking into this! What did you find?',
23132
+ content: 'Tak fordi du kiggede på det! Hvad fandt du?',
22874
23133
  senderId: 'current-user',
22875
23134
  senderName: 'You',
22876
23135
  timestamp: new Date(Date.now() - 86400000 - 32100000), // Yesterday 9:25 AM (new group - 7 min gap)
@@ -22880,7 +23139,7 @@ class MobileInquiryDetailPageComponent {
22880
23139
  },
22881
23140
  {
22882
23141
  id: '4',
22883
- content: 'Can you also send me the maintenance report?',
23142
+ content: 'Kan du også sende mig vedligeholdelsesrapporten?',
22884
23143
  senderId: 'current-user',
22885
23144
  senderName: 'You',
22886
23145
  timestamp: new Date(Date.now() - 86400000 - 31980000), // Yesterday 9:27 AM (grouped with previous)
@@ -22902,7 +23161,7 @@ class MobileInquiryDetailPageComponent {
22902
23161
  },
22903
23162
  {
22904
23163
  id: '6',
22905
- content: 'I\'ve attached the detailed report to your inquiry dashboard. Please review it when you have a moment.',
23164
+ content: 'Jeg har vedhæftet den detaljerede rapport dit henvendelsesdashboard. Gennemgå den gerne, når du har et øjeblik.',
22906
23165
  senderId: messageId,
22907
23166
  senderName: messageThread.senderName,
22908
23167
  senderRole: messageThread.role,
@@ -22914,7 +23173,7 @@ class MobileInquiryDetailPageComponent {
22914
23173
  // Day 2 - Today morning (10:45 AM - new day)
22915
23174
  {
22916
23175
  id: '7',
22917
- content: 'Perfect! I\'ve reviewed the report and everything looks good.',
23176
+ content: 'Perfekt! Jeg har gennemgået rapporten, og alt ser godt ud.',
22918
23177
  senderId: 'current-user',
22919
23178
  senderName: 'You',
22920
23179
  timestamp: new Date(Date.now() - 7500000), // Today 10:45 AM (new group - new day)
@@ -22924,7 +23183,7 @@ class MobileInquiryDetailPageComponent {
22924
23183
  },
22925
23184
  {
22926
23185
  id: '8',
22927
- content: 'When can we schedule the maintenance work?',
23186
+ content: 'Hvornår kan vi planlægge vedligeholdelsesarbejdet?',
22928
23187
  senderId: 'current-user',
22929
23188
  senderName: 'You',
22930
23189
  timestamp: new Date(Date.now() - 7320000), // Today 10:48 AM (grouped with previous)
@@ -22935,7 +23194,7 @@ class MobileInquiryDetailPageComponent {
22935
23194
  // Day 2 - Today (just now - 2 minutes ago)
22936
23195
  {
22937
23196
  id: '9',
22938
- content: 'Great to hear! I can schedule it for next Tuesday at 9:00 AM. Does that work for you?',
23197
+ content: 'Dejligt at høre! Jeg kan planlægge det til næste tirsdag kl. 09.00. Passer det dig?',
22939
23198
  senderId: messageId,
22940
23199
  senderName: messageThread.senderName,
22941
23200
  senderRole: messageThread.role,
@@ -22946,7 +23205,7 @@ class MobileInquiryDetailPageComponent {
22946
23205
  },
22947
23206
  {
22948
23207
  id: '10',
22949
- content: 'I\'ll send you a calendar invitation with all the details.',
23208
+ content: 'Jeg sender dig en kalenderinvitation med alle detaljerne.',
22950
23209
  senderId: messageId,
22951
23210
  senderName: messageThread.senderName,
22952
23211
  senderRole: messageThread.role,
@@ -23085,7 +23344,7 @@ class MobileInquiryDetailPageComponent {
23085
23344
  </ds-mobile-section>
23086
23345
  }
23087
23346
  </ds-mobile-page-details>
23088
- `, isInline: true, styles: [".activity-list{display:flex;flex-direction:column;gap:12px;position:relative}.activity-list ds-mobile-list-item:not(:last-child) [content-leading]:after{content:\"\";position:absolute;top:40px;left:50%;transform:translate(-50%);width:1px;height:calc(100% - 2px);background:var(--border-color-default, #e5e5e5);z-index:0}.activity-icon-wrapper{width:100%;height:100%;border-radius:8px;background:var(--color-background-neutral-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1}.avatar-wrapper{position:relative;display:flex;align-items:start;justify-content:center;flex-shrink:0;width:100%;height:100%;z-index:1}.avatar-badge{position:absolute;bottom:-6px;right:-6px;width:20px;height:20px;border-radius:8px;background:var(--color-brand-secondary, #5d5fef);display:flex;align-items:center;justify-content:center;border:2px solid var(--color-background-primary, #ffffff)}.avatar-badge svg{width:10px;position:relative;top:1px;fill:#fff}.activity-content{display:flex;flex-direction:column;gap:4px}.activity-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0}.activity-title .actor-name{font-weight:600;color:var(--text-color-default-primary, #202227)}.activity-title .activity-text{color:var(--text-color-default-secondary, #545B66);font-weight:400}.activity-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0}.activity-timestamp{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-tertiary, #737373);display:flex;align-items:center;gap:4px;margin-top:2px}.detail-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-tertiary, #737373)}.detail-value{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:24px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227)}.detail-value.description-text{padding:0 0 8px}.detail-tag{display:inline-flex;align-items:center;padding:4px 12px;border-radius:12px;background:var(--color-background-neutral-secondary, #f5f5f5);font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;color:var(--text-color-default-secondary, #525866);margin-top:4px;margin-bottom:10px;width:-moz-fit-content;width:fit-content}.photo-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.photo-add{width:100%;aspect-ratio:1;border-radius:12px;border:1px dashed var(--border-color-default, #e5e5e5);background:var(--color-background-neutral-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center;cursor:pointer}.photo-item{width:100%;aspect-ratio:1;border-radius:12px;-o-object-fit:cover;object-fit:cover}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsAvatarWithBadgeComponent, selector: "ds-avatar-with-badge", inputs: ["type", "size", "initials", "src", "iconName", "showBadge", "badgePosition"] }, { kind: "component", type: DsMobilePageDetailsComponent, selector: "ds-mobile-page-details", inputs: ["title", "backRoute", "contentPadding", "tabs", "activeTab", "showRefresh", "scrollThreshold", "headerFadeDistance"], outputs: ["back", "tabChange", "refresh", "scroll"] }, { kind: "component", type: DsMobileInteractiveListItemMessageComponent, selector: "ds-mobile-interactive-list-item-message", inputs: ["senderName", "senderRole", "timestamp", "message", "avatarInitials", "avatarType", "avatarSrc", "unread", "clickable", "align"], outputs: ["messageClick", "longPress"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }, { kind: "component", type: DsBadgeComponent, selector: "ds-badge", inputs: ["variant", "contentType", "content", "leadingIcon", "indicatorShape"] }, { kind: "component", type: DsMobileCardInlineBannerComponent, selector: "ds-mobile-card-inline-banner", inputs: ["title", "timestamp", "unreadCount", "layout"], outputs: ["bannerClick"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileInlinePhotoComponent, selector: "ds-mobile-inline-photo", inputs: ["images", "loadingStates", "author", "maxVisible", "useGrid"], outputs: ["photoClick"] }] });
23347
+ `, isInline: true, styles: [".activity-list{display:flex;flex-direction:column;gap:12px;position:relative}.activity-list ds-mobile-list-item:not(:last-child) [content-leading]:after{content:\"\";position:absolute;top:40px;left:50%;transform:translate(-50%);width:1px;height:calc(100% - 2px);background:var(--border-color-default, #e5e5e5);z-index:0}.activity-icon-wrapper{width:100%;height:100%;border-radius:8px;background:var(--color-background-neutral-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1}.avatar-wrapper{position:relative;display:flex;align-items:start;justify-content:center;flex-shrink:0;width:100%;height:100%;z-index:1}.avatar-badge{position:absolute;bottom:-6px;right:-6px;width:20px;height:20px;border-radius:8px;background:var(--color-brand-secondary, #5d5fef);display:flex;align-items:center;justify-content:center;border:2px solid var(--color-background-primary, #ffffff)}.avatar-badge svg{width:10px;position:relative;top:1px;fill:#fff}.activity-content{display:flex;flex-direction:column;gap:4px}.activity-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227);margin:0}.activity-title .actor-name{font-weight:600;color:var(--text-color-default-primary, #202227)}.activity-title .activity-text{color:var(--text-color-default-secondary, #545B66);font-weight:400}.activity-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;color:var(--text-color-default-secondary, #545B66);margin:0}.activity-timestamp{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-tertiary, #737373);display:flex;align-items:center;gap:4px;margin-top:2px}.detail-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--text-color-default-tertiary, #737373)}.detail-value{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:24px;letter-spacing:-.3px;color:var(--text-color-default-primary, #202227)}.detail-value.description-text{padding:0 0 8px}.detail-tag{display:inline-flex;align-items:center;padding:4px 12px;border-radius:12px;background:var(--color-background-neutral-secondary, #f5f5f5);font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;color:var(--text-color-default-secondary, #525866);margin-top:4px;margin-bottom:10px;width:-moz-fit-content;width:fit-content}.photo-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.photo-add{width:100%;aspect-ratio:1;border-radius:12px;border:1px dashed var(--border-color-default, #e5e5e5);background:var(--color-background-neutral-secondary, #f5f5f5);display:flex;align-items:center;justify-content:center;cursor:pointer}.photo-item{width:100%;aspect-ratio:1;border-radius:12px;-o-object-fit:cover;object-fit:cover}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsAvatarWithBadgeComponent, selector: "ds-avatar-with-badge", inputs: ["type", "size", "initials", "src", "iconName", "showBadge", "badgePosition"] }, { kind: "component", type: DsMobilePageDetailsComponent, selector: "ds-mobile-page-details", inputs: ["title", "backRoute", "contentPadding", "tabs", "activeTab", "showRefresh", "scrollThreshold", "headerFadeDistance"], outputs: ["back", "tabChange", "refresh", "scroll"] }, { kind: "component", type: DsMobileInteractiveListItemMessageComponent, selector: "ds-mobile-interactive-list-item-message", inputs: ["senderName", "senderRole", "timestamp", "message", "avatarInitials", "avatarType", "avatarSrc", "unread", "clickable", "align"], outputs: ["messageClick", "longPress"] }, { kind: "component", type: DsMobileListItemComponent, selector: "ds-mobile-list-item", inputs: ["leadingSize", "variant", "align", "interactive", "disabled", "loading", "enableLongPress", "showDesktopMoreButton", "moreActions", "interactiveOffset", "title", "subtitle", "showDivider", "dividerSpacing"], outputs: ["itemClick", "moreButtonClick"] }, { kind: "component", type: DsBadgeComponent, selector: "ds-badge", inputs: ["variant", "contentType", "content", "leadingIcon", "indicatorShape"] }, { kind: "component", type: DsMobileCardInlineBannerComponent, selector: "ds-mobile-card-inline-banner", inputs: ["title", "timestamp", "unreadCount", "layout"], outputs: ["bannerClick"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileInlinePhotoComponent, selector: "ds-mobile-inline-photo", inputs: ["images", "loadingStates", "author", "maxVisible", "useGrid"], outputs: ["photoClick"] }] });
23089
23348
  }
23090
23349
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileInquiryDetailPageComponent, decorators: [{
23091
23350
  type: Component,
@@ -24536,30 +24795,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
24536
24795
  class MobileBookingPageComponent {
24537
24796
  facilityModal;
24538
24797
  facilityCreationModal;
24798
+ userService;
24539
24799
  pageComponent;
24540
24800
  bookingsSwiper;
24541
- constructor(facilityModal, facilityCreationModal) {
24801
+ constructor(facilityModal, facilityCreationModal, userService) {
24542
24802
  this.facilityModal = facilityModal;
24543
24803
  this.facilityCreationModal = facilityCreationModal;
24804
+ this.userService = userService;
24544
24805
  }
24545
24806
  // Active bookings (current and upcoming)
24546
24807
  activeBookings = signal([
24547
24808
  {
24548
24809
  id: 'booking-1',
24549
- thumbnail: '/Assets/Dummy-photos/park.jpg',
24550
- facilityTitle: 'Gæsteparkering',
24810
+ thumbnail: '/Assets/Dummy-photos/rooftop-party.jpg',
24811
+ facilityTitle: 'Festlokale på taget',
24551
24812
  bookingDate: '14. februar, 2026',
24552
24813
  bookingTime: '9:00 - 17:00',
24553
- description: 'Your active parking booking',
24554
- heroImage: '/Assets/Dummy-photos/park.jpg',
24555
- fullDescription: '<p>The guest parking area provides convenient, secure parking for your visitors. Located near the main entrance, it offers easy access to the building while ensuring residents\' parking spaces remain available.</p>',
24814
+ description: 'Din aktive booking af festlokalet på taget',
24815
+ heroImage: '/Assets/Dummy-photos/rooftop-party.jpg',
24816
+ fullDescription: '<p>Festlokalet taget giver jer et lyst og indbydende rum med flot udsigt over byen. Lokalet er velegnet til fødselsdage, mindre sammenkomster og hyggelige middage med naboer og venner.</p>',
24556
24817
  requirements: ['Kræver nøglekort'],
24557
- bookingType: 'Instant booking',
24558
- expectations: '<p>The parking space is well-lit and monitored for security. Please ensure your guests display the provided visitor permit visibly in their vehicle. The space is available during your reserved time slot.</p>',
24818
+ bookingType: 'Øjeblikkelig booking',
24819
+ expectations: '<p>Lokalet er klargjort med borde og stole ved ankomst. Husk at rydde op efter brug, området er klar til de næste beboere.</p>',
24559
24820
  restrictions: [
24560
- 'Maximum vehicle height: 2.1 meters',
24561
- 'No overnight parking without prior approval',
24562
- 'Visitors must display parking permit at all times'
24821
+ 'Maksimal bookingvarighed: 3 timer',
24822
+ 'Ingen høj musik efter kl. 22',
24823
+ 'Efterlad lokalet rent og opryddet'
24563
24824
  ]
24564
24825
  }
24565
24826
  ], ...(ngDevMode ? [{ debugName: "activeBookings" }] : []));
@@ -24569,102 +24830,102 @@ class MobileBookingPageComponent {
24569
24830
  id: 'facility-1',
24570
24831
  thumbnail: '/Assets/Dummy-photos/handyman.jpg',
24571
24832
  facilityTitle: 'Boremaskinen',
24572
- description: 'Book a guest parking spot to give your visitors convenient access to the property at any time.',
24833
+ description: 'Lån en boremaskine til mindre gør-det-selv-opgaver i boligen.',
24573
24834
  availabilityStatus: 'available-today',
24574
24835
  statusLabel: 'Ledig i dag',
24575
24836
  heroImage: '/Assets/Dummy-photos/handyman.jpg',
24576
- fullDescription: '<p>Our professional-grade drill is available for all residents to use for their home improvement projects. Perfect for hanging shelves, mounting fixtures, or any drilling needs around your apartment.</p>',
24837
+ fullDescription: '<p>Vores boremaskine i professionel kvalitet er tilgængelig for alle beboere til mindre forbedringer i hjemmet. Den er ideel til ophængning af hylder, montering af beslag og andre boreopgaver i lejligheden.</p>',
24577
24838
  requirements: ['Kræver nøglekort'],
24578
- bookingType: 'Instant booking',
24579
- expectations: '<p>The drill comes with a comprehensive set of bits and accessories. It\'s fully charged and ready to use. Please return it in clean condition after use. Basic instructions are included with the tool.</p>',
24839
+ bookingType: 'Øjeblikkelig booking',
24840
+ expectations: '<p>Boremaskinen udleveres med et sæt bor og tilbehør. Den er opladet og klar til brug. Returner værktøjet i rengjort stand efter brug.</p>',
24580
24841
  restrictions: [
24581
- 'Maximum booking duration: 48 hours',
24582
- 'Must return the drill in the same condition',
24583
- 'Report any damages immediately',
24584
- 'Not for commercial use'
24842
+ 'Maksimal bookingvarighed: 48 timer',
24843
+ 'Skal returneres i samme stand',
24844
+ 'Skader skal meldes med det samme',
24845
+ ' ikke bruges til kommercielt arbejde'
24585
24846
  ]
24586
24847
  },
24587
24848
  {
24588
24849
  id: 'facility-2',
24589
- thumbnail: '/Assets/Dummy-photos/balcony-view.jpg',
24850
+ thumbnail: '/Assets/Dummy-photos/rooftop-party.jpg',
24590
24851
  facilityTitle: 'Festlokale på taget',
24591
- description: 'Book the shared party room for birthdays, celebrations, or community events with friend...',
24852
+ description: 'Book det fælles festlokale taget til fødselsdage, fejring og mindre arrangementer.',
24592
24853
  availabilityStatus: 'available-today',
24593
24854
  statusLabel: 'Ledig i dag',
24594
- heroImage: '/Assets/Dummy-photos/balcony-view.jpg',
24855
+ heroImage: '/Assets/Dummy-photos/rooftop-party.jpg',
24595
24856
  fullDescription: `
24596
- <p>The rooftop terrace is designed as a relaxing escape and a vibrant community hub, offering residents a beautiful setting with panoramic city views. Whether you're planning a small gathering, enjoying a quiet evening outdoors, or hosting friends, the terrace provides the perfect spot to enjoy fresh air above the bustle of the city.</p>
24857
+ <p>Tagterrassen er indrettet som et afslappende fristed og et levende samlingspunkt for beboerne med flot udsigt over byen. Uanset om du planlægger en mindre sammenkomst, en rolig aften udendørs eller en hyggelig stund med venner, giver terrassen de perfekte rammer.</p>
24597
24858
 
24598
24859
  <h3 class="section-headline">Hvad du kan forvente</h3>
24599
- <p>The terrace is furnished with tables, chairs, and lounge seating, making it ideal for social events, casual dining, or simply unwinding. Seasonal plants and greenery create a welcoming atmosphere, and the space is fitted with lighting for use during the evenings. Please note that the terrace is not a playground, children must be supervised at all times.</p>
24860
+ <p>Terrassen er møbleret med borde, stole og loungeområder, den egner sig godt til sociale arrangementer, afslappet spisning eller en rolig pause. Sæsonens planter giver en indbydende stemning, og området har belysning til brug om aftenen. Terrassen er ikke en legeplads, og børn skal være under opsyn.</p>
24600
24861
 
24601
24862
  <h3 class="section-headline">Restriktioner</h3>
24602
24863
  <ul>
24603
- <li>No smoking or vaping is allowed anywhere on the terrace.</li>
24604
- <li>No loud music or parties beyond reasonable volume levels.</li>
24605
- <li>No open flames or candles for safety reasons.</li>
24606
- <li>No private grills or cooking equipment, only the shared facilities provided may be used.</li>
24607
- <li>No pets are allowed on the terrace, except service animals.</li>
24864
+ <li>Rygning og vaping er ikke tilladt terrassen.</li>
24865
+ <li>Høj musik og fester over rimeligt lydniveau er ikke tilladt.</li>
24866
+ <li>Åben ild og stearinlys er ikke tilladt af sikkerhedshensyn.</li>
24867
+ <li>Private grill eller eget madudstyr ikke anvendes; brug kun fælles faciliteter.</li>
24868
+ <li>Kæledyr er ikke tilladt terrassen, undtaget servicehunde.</li>
24608
24869
  </ul>
24609
24870
 
24610
- <h3 class="section-headline">Safety and conduct</h3>
24611
- <p>For everyone's comfort and safety, please:</p>
24871
+ <h3 class="section-headline">Sikkerhed og adfærd</h3>
24872
+ <p>For alles komfort og sikkerhed beder vi dig:</p>
24612
24873
  <ul>
24613
- <li>Avoid overcrowding, the terrace has a maximum capacity of 20 people at one time.</li>
24614
- <li>Supervise children at all times.</li>
24615
- <li>Do not move or remove furniture.</li>
24616
- <li>Keep emergency exits and pathways clear.</li>
24617
- <li>Dispose of any waste in the bins provided.</li>
24874
+ <li>Undgå overfyldning; terrassen har plads til maks. 20 personer ad gangen.</li>
24875
+ <li>Holde børn under opsyn til enhver tid.</li>
24876
+ <li>Undlade at flytte eller fjerne møbler.</li>
24877
+ <li>Holde nødudgange og gangarealer fri.</li>
24878
+ <li>Bortskaffe affald i de opsatte skraldespande.</li>
24618
24879
  </ul>
24619
24880
 
24620
- <h3 class="section-headline">Booking and duration</h3>
24621
- <p>The terrace must be booked in advance for private events:</p>
24881
+ <h3 class="section-headline">Booking og varighed</h3>
24882
+ <p>Terrassen skal bookes forhånd ved private arrangementer:</p>
24622
24883
  <ul>
24623
- <li>Max duration: 3 hours per booking.</li>
24624
- <li>Cleaning up: Residents are responsible for leaving the terrace clean and ready for the next booking.</li>
24884
+ <li>Maksimal varighed: 3 timer pr. booking.</li>
24885
+ <li>Oprydning: Beboeren har ansvar for at efterlade terrassen ren og klar til næste booking.</li>
24625
24886
  </ul>
24626
24887
  `,
24627
24888
  requirements: ['Kræver nøglekort'],
24628
- bookingType: 'Instant booking',
24889
+ bookingType: 'Øjeblikkelig booking',
24629
24890
  expectations: '',
24630
24891
  restrictions: []
24631
24892
  },
24632
24893
  {
24633
24894
  id: 'facility-3',
24634
- thumbnail: '/Assets/Dummy-photos/park.jpg',
24895
+ thumbnail: '/Assets/Dummy-photos/parking.jpg',
24635
24896
  facilityTitle: 'Gæsteparkering',
24636
- description: 'Book the shared party room for birthdays, celebrations, or community events with friend...',
24897
+ description: 'Book en gæsteparkeringsplads, dine besøgende nemt kan parkere ved ejendommen.',
24637
24898
  availabilityStatus: 'available-from',
24638
24899
  statusLabel: 'Ledig fra 28. februar, 2026',
24639
- heroImage: '/Assets/Dummy-photos/park.jpg',
24640
- fullDescription: '<p>Additional guest parking spaces are available for residents who need extra parking for their visitors. These spaces ensure your guests have a convenient place to park when visiting your home.</p>',
24900
+ heroImage: '/Assets/Dummy-photos/parking.jpg',
24901
+ fullDescription: '<p>Ekstra gæsteparkeringspladser er tilgængelige for beboere, der har brug for parkering til besøgende. Pladserne giver dine gæster en nem og tryg parkeringsmulighed tæt boligen.</p>',
24641
24902
  requirements: ['Kræver nøglekort'],
24642
- bookingType: 'Advance booking required',
24643
- expectations: '<p>The parking area is secure and well-maintained. Visitor permits must be displayed at all times. Please inform your guests about the parking location and any specific instructions.</p>',
24903
+ bookingType: 'Forudgående booking påkrævet',
24904
+ expectations: '<p>Parkeringsområdet er sikkert og velholdt. Gæstetilladelse skal være synlig i forruden under hele parkeringen. Informer gerne dine gæster om placering og regler.</p>',
24644
24905
  restrictions: [
24645
- 'Advance booking required (minimum 24 hours)',
24646
- 'Maximum booking duration: 12 hours',
24647
- 'Visitors must display parking permit',
24648
- 'No commercial vehicles allowed'
24906
+ 'Forudgående booking påkrævet (minimum 24 timer)',
24907
+ 'Maksimal bookingvarighed: 12 timer',
24908
+ 'Gæster skal vise synlig parkeringstilladelse',
24909
+ 'Ingen erhvervskøretøjer tilladt'
24649
24910
  ]
24650
24911
  },
24651
24912
  {
24652
24913
  id: 'facility-4',
24653
24914
  thumbnail: '/Assets/Dummy-photos/yard.jpg',
24654
24915
  facilityTitle: 'BBQ område',
24655
- description: 'Book the shared party room for birthdays, celebrations, or community events with friend...',
24916
+ description: 'Book grillområdet til sommerarrangementer og udendørs spisning med naboer og venner.',
24656
24917
  availabilityStatus: 'unavailable',
24657
24918
  statusLabel: 'Ikke tilgængelig',
24658
24919
  heroImage: '/Assets/Dummy-photos/yard.jpg',
24659
- fullDescription: '<p>The BBQ area features professional-grade grills and outdoor seating, perfect for summer gatherings and outdoor dining. The space is designed to accommodate both small family meals and larger social events.</p>',
24920
+ fullDescription: '<p>BBQ-området har grill i professionel kvalitet og udendørs siddepladser, perfekt til sommerarrangementer og fællesspisning. Området er velegnet til både mindre familiemåltider og større sociale arrangementer.</p>',
24660
24921
  requirements: ['Kræver nøglekort'],
24661
- bookingType: 'Seasonal availability',
24662
- expectations: '<p>All BBQ equipment and cleaning supplies are provided. The area includes covered seating and preparation tables. Please clean the grills after use and dispose of charcoal properly in the designated containers.</p>',
24922
+ bookingType: 'Sæsonbestemt tilgængelighed',
24923
+ expectations: '<p>Alt grilludstyr og rengøringsartikler stilles til rådighed. Området har overdækkede siddepladser og borde til forberedelse. Rengør grillen efter brug, og bortskaf kul korrekt i de anviste beholdere.</p>',
24663
24924
  restrictions: [
24664
- 'Currently closed for winter season',
24665
- 'Opens again in May 2026',
24666
- 'Maximum group size: 20 people',
24667
- 'Music must end by 10 PM'
24925
+ 'Lukket i vintersæsonen',
24926
+ 'Åbner igen i maj 2026',
24927
+ 'Maksimal gruppestørrelse: 20 personer',
24928
+ 'Musik skal stoppe senest kl. 22'
24668
24929
  ]
24669
24930
  }
24670
24931
  ], ...(ngDevMode ? [{ debugName: "availableFacilities" }] : []));
@@ -24745,11 +25006,13 @@ class MobileBookingPageComponent {
24745
25006
  }
24746
25007
  });
24747
25008
  }
24748
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileBookingPageComponent, deps: [{ token: DsMobileFacilityDetailModalService }, { token: DsMobileFacilityCreationModalService }], target: i0.ɵɵFactoryTarget.Component });
25009
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileBookingPageComponent, deps: [{ token: DsMobileFacilityDetailModalService }, { token: DsMobileFacilityCreationModalService }, { token: UserService }], target: i0.ɵɵFactoryTarget.Component });
24749
25010
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MobileBookingPageComponent, isStandalone: true, selector: "app-mobile-booking-page", viewQueries: [{ propertyName: "pageComponent", first: true, predicate: ["pageComponent"], descendants: true }, { propertyName: "bookingsSwiper", first: true, predicate: ["bookingsSwiper"], descendants: true }], ngImport: i0, template: `
24750
25011
  <ds-mobile-page-main
24751
25012
  #pageComponent
24752
- [title]="'Booking'"
25013
+ [title]="'Bookinger'"
25014
+ [avatarInitials]="userService.avatarInitials()"
25015
+ [avatarType]="userService.avatarType()"
24753
25016
  (refresh)="handleRefresh($event)">
24754
25017
 
24755
25018
  @if (pageComponent.isOffline()) {
@@ -24839,10 +25102,10 @@ class MobileBookingPageComponent {
24839
25102
  <ds-mobile-fab
24840
25103
  icon="remixAddLine"
24841
25104
  position="bottom-right"
24842
- ariaLabel="Create facility"
25105
+ ariaLabel="Opret facilitet"
24843
25106
  (clicked)="openFacilityCreationModal()">
24844
25107
  </ds-mobile-fab>
24845
- `, isInline: true, styles: [".bookings-swiper-wrapper{padding:0;position:relative}.swiper-nav-buttons{display:contents}.swiper-nav-button{position:absolute;top:50%;transform:translateY(-50%);z-index:10}.swiper-nav-button:first-child{left:-48px}.swiper-nav-button:last-child{right:-48px}::ng-deep .swiper-nav-button button{border-radius:50%!important;width:48px!important;height:48px!important;padding:0!important}@media (max-width: 767px){.swiper-nav-buttons{display:none}}::ng-deep .bookings-swiper .swiper-slide{width:100%;max-width:600px;height:auto;pointer-events:auto}@media (min-width: 768px){::ng-deep .bookings-swiper .swiper-slide{max-width:100%}}::ng-deep .bookings-swiper .swiper-slide ds-mobile-interactive-list-item-booking{width:100%;pointer-events:auto}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileInteractiveListItemBookingComponent, selector: "ds-mobile-interactive-list-item-booking", inputs: ["thumbnail", "facilityTitle", "description", "bookingDate", "bookingTime", "availabilityStatus", "statusLabel", "variant", "align", "clickable", "showChevron", "enableLongPress"], outputs: ["bookingClick", "longPress"] }, { kind: "component", type: DsMobileSwiperComponent, selector: "ds-mobile-swiper", inputs: ["slideWidth", "gap", "pagination", "autoHeight", "progressiveOpacity", "progressiveScale"] }, { 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: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: DsMobileFabComponent, selector: "ds-mobile-fab", inputs: ["icon", "position", "size", "ariaLabel", "disabled"], outputs: ["clicked"] }] });
25108
+ `, isInline: true, styles: [".bookings-swiper-wrapper{padding:0;position:relative}.swiper-nav-buttons{display:contents}.swiper-nav-button{position:absolute;top:50%;transform:translateY(-50%);z-index:10}.swiper-nav-button:first-child{left:-48px}.swiper-nav-button:last-child{right:-48px}::ng-deep .swiper-nav-button button{border-radius:50%!important;width:48px!important;height:48px!important;padding:0!important}@media (max-width: 767px){.swiper-nav-buttons{display:none}}::ng-deep .bookings-swiper .swiper-slide{width:100%;max-width:600px;height:auto;pointer-events:auto}@media (min-width: 768px){::ng-deep .bookings-swiper .swiper-slide{max-width:100%}}::ng-deep .bookings-swiper .swiper-slide ds-mobile-interactive-list-item-booking{width:100%;pointer-events:auto}\n"], dependencies: [{ kind: "component", type: DsMobilePageMainComponent, selector: "ds-mobile-page-main", inputs: ["title", "headerTitle", "headerSubtitle", "avatarType", "avatarInitials", "avatarSrc", "avatarIconName", "showRefresh", "showCondensedHeader", "scrollThreshold", "headerFadeDistance", "contentPadding", "profileMenuItems"], outputs: ["avatarClick", "profileActionSelected", "refresh", "scroll"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileInteractiveListItemBookingComponent, selector: "ds-mobile-interactive-list-item-booking", inputs: ["thumbnail", "facilityTitle", "description", "bookingDate", "bookingTime", "availabilityStatus", "statusLabel", "variant", "align", "clickable", "showChevron", "enableLongPress", "moreActions"], outputs: ["bookingClick", "longPress"] }, { kind: "component", type: DsMobileSwiperComponent, selector: "ds-mobile-swiper", inputs: ["slideWidth", "gap", "pagination", "autoHeight", "progressiveOpacity", "progressiveScale"] }, { 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: DsMobileOfflineBannerComponent, selector: "ds-mobile-offline-banner", inputs: ["icon", "title", "message"] }, { kind: "component", type: DsMobileFabComponent, selector: "ds-mobile-fab", inputs: ["icon", "position", "size", "ariaLabel", "disabled"], outputs: ["clicked"] }] });
24846
25109
  }
24847
25110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobileBookingPageComponent, decorators: [{
24848
25111
  type: Component,
@@ -24857,7 +25120,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
24857
25120
  ], template: `
24858
25121
  <ds-mobile-page-main
24859
25122
  #pageComponent
24860
- [title]="'Booking'"
25123
+ [title]="'Bookinger'"
25124
+ [avatarInitials]="userService.avatarInitials()"
25125
+ [avatarType]="userService.avatarType()"
24861
25126
  (refresh)="handleRefresh($event)">
24862
25127
 
24863
25128
  @if (pageComponent.isOffline()) {
@@ -24947,11 +25212,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
24947
25212
  <ds-mobile-fab
24948
25213
  icon="remixAddLine"
24949
25214
  position="bottom-right"
24950
- ariaLabel="Create facility"
25215
+ ariaLabel="Opret facilitet"
24951
25216
  (clicked)="openFacilityCreationModal()">
24952
25217
  </ds-mobile-fab>
24953
25218
  `, styles: [".bookings-swiper-wrapper{padding:0;position:relative}.swiper-nav-buttons{display:contents}.swiper-nav-button{position:absolute;top:50%;transform:translateY(-50%);z-index:10}.swiper-nav-button:first-child{left:-48px}.swiper-nav-button:last-child{right:-48px}::ng-deep .swiper-nav-button button{border-radius:50%!important;width:48px!important;height:48px!important;padding:0!important}@media (max-width: 767px){.swiper-nav-buttons{display:none}}::ng-deep .bookings-swiper .swiper-slide{width:100%;max-width:600px;height:auto;pointer-events:auto}@media (min-width: 768px){::ng-deep .bookings-swiper .swiper-slide{max-width:100%}}::ng-deep .bookings-swiper .swiper-slide ds-mobile-interactive-list-item-booking{width:100%;pointer-events:auto}\n"] }]
24954
- }], ctorParameters: () => [{ type: DsMobileFacilityDetailModalService }, { type: DsMobileFacilityCreationModalService }], propDecorators: { pageComponent: [{
25219
+ }], ctorParameters: () => [{ type: DsMobileFacilityDetailModalService }, { type: DsMobileFacilityCreationModalService }, { type: UserService }], propDecorators: { pageComponent: [{
24955
25220
  type: ViewChild,
24956
25221
  args: ['pageComponent']
24957
25222
  }], bookingsSwiper: [{
@@ -25385,7 +25650,7 @@ class MobilePostDetailPageComponent {
25385
25650
  </div>
25386
25651
  </div>
25387
25652
  </ds-mobile-page-details>
25388
- `, isInline: true, styles: [".post-detail-container{display:flex;flex-direction:column;gap:16px;max-width:640px}.post-section{border-bottom:1px solid var(--border-color-default);padding-bottom:16px}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.comments-section{display:flex;flex-direction:column;margin-left:-8px;margin-right:-8px}.comments-header{font-family:Brockmann,sans-serif;font-size:18px;font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin-bottom:16px;padding-left:8px;padding-right:8px}.comments-list{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: DsMobilePageDetailsComponent, selector: "ds-mobile-page-details", inputs: ["title", "backRoute", "contentPadding", "tabs", "activeTab", "showRefresh", "scrollThreshold", "headerFadeDistance"], outputs: ["back", "tabChange", "refresh", "scroll"] }, { kind: "component", type: DsMobileInteractiveListItemPostComponent, selector: "ds-mobile-interactive-list-item-post", inputs: ["authorName", "authorRole", "timestamp", "avatarInitials", "avatarType", "avatarSrc", "avatarIconName", "showBadge", "variant", "align", "clickable", "enableLongPress"], outputs: ["postClick", "commentClick", "longPress"] }, { kind: "component", type: PostContentComponent, selector: "post-content" }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostMediaComponent, selector: "post-media" }, { kind: "component", type: PostActionsComponent, selector: "post-actions" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }, { kind: "component", type: DsMobileCommentComponent, selector: "ds-mobile-comment", inputs: ["authorName", "authorRole", "timestamp", "content", "avatarInitials", "avatarType", "clickable", "isOwnComment", "isLiked", "likeCount"], outputs: ["likeToggled", "commentClick", "replyClick", "editClick", "longPress"] }] });
25653
+ `, isInline: true, styles: [".post-detail-container{display:flex;flex-direction:column;gap:16px;max-width:640px}.post-section{border-bottom:1px solid var(--border-color-default);padding-bottom:16px}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.comments-section{display:flex;flex-direction:column;margin-left:-8px;margin-right:-8px}.comments-header{font-family:Brockmann,sans-serif;font-size:18px;font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin-bottom:16px;padding-left:8px;padding-right:8px}.comments-list{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: DsMobilePageDetailsComponent, selector: "ds-mobile-page-details", inputs: ["title", "backRoute", "contentPadding", "tabs", "activeTab", "showRefresh", "scrollThreshold", "headerFadeDistance"], outputs: ["back", "tabChange", "refresh", "scroll"] }, { kind: "component", type: DsMobileInteractiveListItemPostComponent, selector: "ds-mobile-interactive-list-item-post", inputs: ["authorName", "authorRole", "timestamp", "avatarInitials", "avatarType", "avatarSrc", "avatarIconName", "showBadge", "variant", "align", "clickable", "enableLongPress", "moreActions"], outputs: ["postClick", "commentClick", "longPress"] }, { kind: "component", type: PostContentComponent, selector: "post-content" }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostMediaComponent, selector: "post-media" }, { kind: "component", type: PostActionsComponent, selector: "post-actions" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }, { kind: "component", type: DsMobileCommentComponent, selector: "ds-mobile-comment", inputs: ["authorName", "authorRole", "timestamp", "content", "avatarInitials", "avatarType", "clickable", "moreActions", "isOwnComment", "isLiked", "likeCount"], outputs: ["likeToggled", "commentClick", "replyClick", "editClick", "longPress"] }] });
25389
25654
  }
25390
25655
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MobilePostDetailPageComponent, decorators: [{
25391
25656
  type: Component,