@propbinder/mobile-design 0.2.91 → 0.2.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnDestroy, OnInit, ElementRef, EventEmitter, TemplateRef, OnChanges, SimpleChanges, AfterViewInit, Injector, ChangeDetectorRef, ApplicationRef, EnvironmentInjector, Type, AfterContentInit } from '@angular/core';
2
+ import { OnDestroy, OnInit, ElementRef, EventEmitter, TemplateRef, OnChanges, SimpleChanges, AfterViewInit, Injector, ChangeDetectorRef, ApplicationRef, EnvironmentInjector, Type, AfterContentInit, InjectionToken, PipeTransform } from '@angular/core';
3
3
  import { ModalController, IonContent, NavController, GestureController, ModalOptions as ModalOptions$1 } from '@ionic/angular/standalone';
4
4
  import { Style } from '@capacitor/status-bar';
5
5
  import { ImpactStyle } from '@capacitor/haptics';
@@ -861,6 +861,8 @@ declare class DsMobilePageMainComponent extends MobilePageBase implements AfterV
861
861
  avatarInitials: _angular_core.InputSignal<string>;
862
862
  avatarSrc: _angular_core.InputSignal<string>;
863
863
  avatarIconName: _angular_core.InputSignal<string>;
864
+ showNotification: _angular_core.InputSignal<boolean>;
865
+ notificationCount: _angular_core.InputSignal<number>;
864
866
  showRefresh: _angular_core.InputSignal<boolean>;
865
867
  showCondensedHeader: _angular_core.InputSignal<boolean>;
866
868
  scrollThreshold: _angular_core.InputSignal<number>;
@@ -897,7 +899,7 @@ declare class DsMobilePageMainComponent extends MobilePageBase implements AfterV
897
899
  * {
898
900
  * actions: [
899
901
  * { action: 'profile', title: 'Min profil', icon: 'remixUser3Line' },
900
- * { action: 'settings', title: 'Indstillinger', icon: 'remixSettings3Line' }
902
+ * { action: 'settings', title: 'Notifikationer', icon: 'remixNotificationLine' }
901
903
  * ]
902
904
  * },
903
905
  * {
@@ -909,6 +911,7 @@ declare class DsMobilePageMainComponent extends MobilePageBase implements AfterV
909
911
  * ```
910
912
  */
911
913
  profileMenuItems: _angular_core.InputSignal<ActionGroup[] | undefined>;
914
+ notificationClick: _angular_core.OutputEmitterRef<void>;
912
915
  avatarClick: _angular_core.OutputEmitterRef<void>;
913
916
  /**
914
917
  * Emitted when a profile menu action is selected.
@@ -936,7 +939,7 @@ declare class DsMobilePageMainComponent extends MobilePageBase implements AfterV
936
939
  */
937
940
  handleRefresh(event: any): Promise<void>;
938
941
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobilePageMainComponent, never>;
939
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobilePageMainComponent, "ds-mobile-page-main", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerSubtitle": { "alias": "headerSubtitle"; "required": false; "isSignal": true; }; "firstEntry": { "alias": "firstEntry"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showCondensedHeader": { "alias": "showCondensedHeader"; "required": false; "isSignal": true; }; "scrollThreshold": { "alias": "scrollThreshold"; "required": false; "isSignal": true; }; "headerFadeDistance": { "alias": "headerFadeDistance"; "required": false; "isSignal": true; }; "contentPadding": { "alias": "contentPadding"; "required": false; "isSignal": true; }; "profileMenuItems": { "alias": "profileMenuItems"; "required": false; "isSignal": true; }; }, { "avatarClick": "avatarClick"; "profileActionSelected": "profileActionSelected"; "refresh": "refresh"; "scroll": "scroll"; }, never, ["[header-content]", "[offline-indicator]", "*"], true, never>;
942
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobilePageMainComponent, "ds-mobile-page-main", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerSubtitle": { "alias": "headerSubtitle"; "required": false; "isSignal": true; }; "firstEntry": { "alias": "firstEntry"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; "isSignal": true; }; "showNotification": { "alias": "showNotification"; "required": false; "isSignal": true; }; "notificationCount": { "alias": "notificationCount"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showCondensedHeader": { "alias": "showCondensedHeader"; "required": false; "isSignal": true; }; "scrollThreshold": { "alias": "scrollThreshold"; "required": false; "isSignal": true; }; "headerFadeDistance": { "alias": "headerFadeDistance"; "required": false; "isSignal": true; }; "contentPadding": { "alias": "contentPadding"; "required": false; "isSignal": true; }; "profileMenuItems": { "alias": "profileMenuItems"; "required": false; "isSignal": true; }; }, { "notificationClick": "notificationClick"; "avatarClick": "avatarClick"; "profileActionSelected": "profileActionSelected"; "refresh": "refresh"; "scroll": "scroll"; }, never, ["[header-content]", "[offline-indicator]", "*"], true, never>;
940
943
  }
941
944
 
942
945
  interface InlineTabItem {
@@ -1038,7 +1041,7 @@ declare class WhitelabelService {
1038
1041
  readonly logoUrl: _angular_core.Signal<string>;
1039
1042
  readonly logoMarkUrl: _angular_core.Signal<string>;
1040
1043
  readonly logoAlt: _angular_core.Signal<string>;
1041
- readonly logoSize: _angular_core.Signal<"sm" | "md" | "lg" | "xl">;
1044
+ readonly logoSize: _angular_core.Signal<"md" | "sm" | "lg" | "xl">;
1042
1045
  readonly logoHeight: _angular_core.Signal<number>;
1043
1046
  readonly appIconSurface: _angular_core.Signal<string>;
1044
1047
  readonly appIconContent: _angular_core.Signal<string>;
@@ -2803,7 +2806,7 @@ declare class DsMobileListItemComponent implements AfterViewInit {
2803
2806
  * - 'center' - Align to center
2804
2807
  * - 'bottom' - Align to bottom
2805
2808
  */
2806
- align: _angular_core.InputSignal<"center" | "top" | "bottom">;
2809
+ align: _angular_core.InputSignal<"top" | "center" | "bottom">;
2807
2810
  /**
2808
2811
  * Remove top padding — use on the first item in a section when there is
2809
2812
  * no preceding content, to avoid unnecessary whitespace.
@@ -3091,7 +3094,7 @@ declare class DsMobileInteractiveListItemPostComponent {
3091
3094
  * - 'center' - Align to center
3092
3095
  * - 'bottom' - Align to bottom
3093
3096
  */
3094
- align: _angular_core.InputSignal<"center" | "top" | "bottom">;
3097
+ align: _angular_core.InputSignal<"top" | "center" | "bottom">;
3095
3098
  /**
3096
3099
  * Whether the post card is clickable
3097
3100
  */
@@ -3319,7 +3322,7 @@ declare class DsMobileInteractiveListItemInquiryComponent {
3319
3322
  * - 'center' - Align to center
3320
3323
  * - 'bottom' - Align to bottom
3321
3324
  */
3322
- align: _angular_core.InputSignal<"center" | "top" | "bottom">;
3325
+ align: _angular_core.InputSignal<"top" | "center" | "bottom">;
3323
3326
  /**
3324
3327
  * Whether the inquiry item is clickable
3325
3328
  */
@@ -4755,7 +4758,7 @@ declare class DsMobileInteractiveListItemMessageComponent {
4755
4758
  * - 'center' - Align to center
4756
4759
  * - 'bottom' - Align to bottom
4757
4760
  */
4758
- align: _angular_core.InputSignal<"center" | "top" | "bottom">;
4761
+ align: _angular_core.InputSignal<"top" | "center" | "bottom">;
4759
4762
  /**
4760
4763
  * Whitelabel logomark on the avatar corner (e.g. org branding for staff).
4761
4764
  * Default true — preserves backward compatibility with inquiry assignee rows.
@@ -4817,7 +4820,7 @@ declare class DsMobileContactListItemComponent {
4817
4820
  /** Show a trailing trash-bin icon; emits {@link deleteClick} on tap. */
4818
4821
  showDeleteAction: _angular_core.InputSignal<boolean>;
4819
4822
  variant: _angular_core.InputSignal<"compact" | undefined>;
4820
- align: _angular_core.InputSignal<"center" | "top" | "bottom">;
4823
+ align: _angular_core.InputSignal<"top" | "center" | "bottom">;
4821
4824
  contactClick: _angular_core.OutputEmitterRef<void>;
4822
4825
  selectionToggle: _angular_core.OutputEmitterRef<void>;
4823
4826
  moreClick: _angular_core.OutputEmitterRef<void>;
@@ -4991,7 +4994,7 @@ declare class DsMobileGroupAvatarStackComponent {
4991
4994
  /** Full member list; {@link currentUserId} is removed for display when set. */
4992
4995
  members: _angular_core.InputSignal<ChatParticipant[]>;
4993
4996
  customAvatarUrl: _angular_core.InputSignal<string>;
4994
- size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xl">;
4997
+ size: _angular_core.InputSignal<"md" | "sm" | "lg" | "xl">;
4995
4998
  /** Row avatar (32×32, diagonal **xs** faces) vs header / hero stack. */
4996
4999
  layout: _angular_core.InputSignal<"stack" | "list">;
4997
5000
  /** When set, this participant is omitted from the stack (e.g. current user id). */
@@ -5304,7 +5307,7 @@ declare class DsMobileInteractiveListItemBookingComponent {
5304
5307
  * - 'center' - Align to center
5305
5308
  * - 'bottom' - Align to bottom
5306
5309
  */
5307
- align: _angular_core.InputSignal<"center" | "top" | "bottom">;
5310
+ align: _angular_core.InputSignal<"top" | "center" | "bottom">;
5308
5311
  /**
5309
5312
  * Whether the booking item is clickable
5310
5313
  */
@@ -5440,10 +5443,12 @@ declare class DsMobileTabBarComponent implements OnInit, AfterViewInit, OnDestro
5440
5443
  * ```
5441
5444
  */
5442
5445
  profileMenuItems?: ActionGroup[];
5446
+ notificationCount: number;
5443
5447
  moreMenuItems: MoreMenuItem[];
5444
5448
  moreMenuLabel: string;
5445
5449
  moreMenuIcon: string;
5446
5450
  moreMenuIconActive: string;
5451
+ notificationClick: EventEmitter<void>;
5447
5452
  avatarClick: EventEmitter<void>;
5448
5453
  /**
5449
5454
  * Emitted when a profile menu action is selected.
@@ -5484,7 +5489,7 @@ declare class DsMobileTabBarComponent implements OnInit, AfterViewInit, OnDestro
5484
5489
  */
5485
5490
  handleAvatarClick(): Promise<void>;
5486
5491
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileTabBarComponent, never>;
5487
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileTabBarComponent, "ds-mobile-tab-bar", never, { "tabs": { "alias": "tabs"; "required": false; }; "avatarType": { "alias": "avatarType"; "required": false; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; }; "profileMenuItems": { "alias": "profileMenuItems"; "required": false; }; "moreMenuItems": { "alias": "moreMenuItems"; "required": false; }; "moreMenuLabel": { "alias": "moreMenuLabel"; "required": false; }; "moreMenuIcon": { "alias": "moreMenuIcon"; "required": false; }; "moreMenuIconActive": { "alias": "moreMenuIconActive"; "required": false; }; }, { "avatarClick": "avatarClick"; "profileActionSelected": "profileActionSelected"; "moreMenuItemSelected": "moreMenuItemSelected"; }, never, never, true, never>;
5492
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileTabBarComponent, "ds-mobile-tab-bar", never, { "tabs": { "alias": "tabs"; "required": false; }; "avatarType": { "alias": "avatarType"; "required": false; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; }; "profileMenuItems": { "alias": "profileMenuItems"; "required": false; }; "notificationCount": { "alias": "notificationCount"; "required": false; }; "moreMenuItems": { "alias": "moreMenuItems"; "required": false; }; "moreMenuLabel": { "alias": "moreMenuLabel"; "required": false; }; "moreMenuIcon": { "alias": "moreMenuIcon"; "required": false; }; "moreMenuIconActive": { "alias": "moreMenuIconActive"; "required": false; }; }, { "notificationClick": "notificationClick"; "avatarClick": "avatarClick"; "profileActionSelected": "profileActionSelected"; "moreMenuItemSelected": "moreMenuItemSelected"; }, never, never, true, never>;
5488
5493
  }
5489
5494
 
5490
5495
  /**
@@ -6449,6 +6454,7 @@ declare class DsMobileModalBaseComponent extends MobileModalBase implements OnIn
6449
6454
  * Check whether header-leading slot has actual projected content.
6450
6455
  */
6451
6456
  hasHeaderLeadingContent(): boolean;
6457
+ hasHeaderTrailingContent(): boolean;
6452
6458
  /**
6453
6459
  * Check if a content child slot has actual content
6454
6460
  */
@@ -6824,7 +6830,7 @@ declare class DsMobileCardInlineComponent {
6824
6830
  * - 'default' - Column layout with standard padding (gap: 12px, padding: 10px 12px)
6825
6831
  * - 'compact' - Row layout with reduced padding (gap: 8px, padding: 10px)
6826
6832
  */
6827
- variant: _angular_core.InputSignal<"default" | "compact">;
6833
+ variant: _angular_core.InputSignal<"compact" | "default">;
6828
6834
  /**
6829
6835
  * Whether the card is disabled
6830
6836
  * Disables all interactions and reduces opacity
@@ -6887,7 +6893,7 @@ declare class DsMobileCardInlineBannerComponent {
6887
6893
  * - 'default' - Standard padding and column layout
6888
6894
  * - 'compact' - Reduced padding and row layout
6889
6895
  */
6890
- layout: _angular_core.InputSignal<"default" | "compact">;
6896
+ layout: _angular_core.InputSignal<"compact" | "default">;
6891
6897
  /**
6892
6898
  * Emits when the banner is clicked
6893
6899
  */
@@ -6942,7 +6948,7 @@ declare class DsMobileCardInlineContactComponent {
6942
6948
  * - 'default' - Standard padding and column layout
6943
6949
  * - 'compact' - Reduced padding and row layout
6944
6950
  */
6945
- layout: _angular_core.InputSignal<"default" | "compact">;
6951
+ layout: _angular_core.InputSignal<"compact" | "default">;
6946
6952
  /**
6947
6953
  * Whether the contact item is clickable
6948
6954
  */
@@ -7007,7 +7013,7 @@ declare class DsMobileCardInlineFileComponent {
7007
7013
  * - 'default' - Standard padding and column layout
7008
7014
  * - 'compact' - Reduced padding and row layout
7009
7015
  */
7010
- layout: _angular_core.InputSignal<"default" | "compact">;
7016
+ layout: _angular_core.InputSignal<"compact" | "default">;
7011
7017
  /**
7012
7018
  * Optional URL to open when clicked
7013
7019
  * If provided, clicking the card will open this URL in a new tab
@@ -8600,7 +8606,7 @@ declare class DsMobileFabComponent implements AfterViewInit, OnDestroy {
8600
8606
  * Note: FAB is always 56px circular, but this affects the icon size
8601
8607
  * @default 'md'
8602
8608
  */
8603
- size: _angular_core.InputSignal<"sm" | "md" | "lg">;
8609
+ size: _angular_core.InputSignal<"md" | "sm" | "lg">;
8604
8610
  /**
8605
8611
  * ARIA label for accessibility
8606
8612
  * @required - Always provide a descriptive label
@@ -8881,6 +8887,140 @@ declare class DsMobilePropertyBannerComponent {
8881
8887
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobilePropertyBannerComponent, "ds-mobile-property-banner", never, { "address": { "alias": "address"; "required": true; "isSignal": true; }; "photoUrl": { "alias": "photoUrl"; "required": true; "isSignal": true; }; "tenantCount": { "alias": "tenantCount"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8882
8888
  }
8883
8889
 
8890
+ declare class DsMobileNotificationPromptComponent {
8891
+ protected readonly whitelabel: WhitelabelService;
8892
+ protected readonly dismissing: _angular_core.WritableSignal<boolean>;
8893
+ heading: _angular_core.InputSignal<string>;
8894
+ subtitle: _angular_core.InputSignal<string>;
8895
+ allowLabel: _angular_core.InputSignal<string>;
8896
+ dismissLabel: _angular_core.InputSignal<string>;
8897
+ allow: _angular_core.OutputEmitterRef<void>;
8898
+ dismiss: _angular_core.OutputEmitterRef<void>;
8899
+ private static readonly EXIT_DURATION;
8900
+ handleAllow(): void;
8901
+ handleDismiss(): void;
8902
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileNotificationPromptComponent, never>;
8903
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileNotificationPromptComponent, "ds-mobile-notification-prompt", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "allowLabel": { "alias": "allowLabel"; "required": false; "isSignal": true; }; "dismissLabel": { "alias": "dismissLabel"; "required": false; "isSignal": true; }; }, { "allow": "allow"; "dismiss": "dismiss"; }, never, never, true, never>;
8904
+ }
8905
+
8906
+ declare class DsMobileNotificationButtonComponent {
8907
+ count: _angular_core.InputSignal<number>;
8908
+ clicked: _angular_core.OutputEmitterRef<void>;
8909
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileNotificationButtonComponent, never>;
8910
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileNotificationButtonComponent, "ds-mobile-notification-button", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
8911
+ }
8912
+
8913
+ type NotificationType = 'inquiry_update' | 'inquiry_assigned' | 'inquiry_resolved' | 'community_post' | 'community_comment' | 'community_like' | 'community_mention' | 'booking_confirmed' | 'booking_cancelled' | 'booking_reminder' | 'facility_available' | 'message_new' | 'message_group' | 'service_update' | 'handbook_update' | 'system_announcement' | 'system_welcome' | 'invite_received' | 'family_access';
8914
+ type NotificationLeading = 'icon' | 'avatar' | 'image' | 'logo';
8915
+ interface NotificationItem {
8916
+ id: string;
8917
+ type: NotificationType;
8918
+ title: string;
8919
+ message: string;
8920
+ createdAt: Date;
8921
+ read: boolean;
8922
+ leading: NotificationLeading;
8923
+ /** ID of the target entity (inquiry ID, post ID, conversation ID, facility ID, vendor ID) */
8924
+ targetId?: string;
8925
+ avatarInitials?: string;
8926
+ avatarSrc?: string;
8927
+ imageSrc?: string;
8928
+ iconName?: string;
8929
+ }
8930
+ declare const NOTIFICATION_ICON_MAP: Record<NotificationType, string>;
8931
+
8932
+ interface NotificationGroup {
8933
+ label: string;
8934
+ items: NotificationItem[];
8935
+ }
8936
+ declare class DsMobileNotificationModalComponent {
8937
+ private modalController;
8938
+ private notificationService;
8939
+ private bottomSheet;
8940
+ groups: _angular_core.Signal<NotificationGroup[]>;
8941
+ iconFor(type: string): string;
8942
+ private readonly TYPE_LABELS;
8943
+ labelFor(type: string): string;
8944
+ handleNotificationClick(item: NotificationItem): void;
8945
+ handleLongPress(item: NotificationItem): Promise<void>;
8946
+ openBulkActions(): Promise<void>;
8947
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileNotificationModalComponent, never>;
8948
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileNotificationModalComponent, "ds-mobile-notification-modal", never, {}, {}, never, never, true, never>;
8949
+ }
8950
+
8951
+ interface VendorModalOpener {
8952
+ open(props: {
8953
+ vendorName: string;
8954
+ vendorDescription?: string;
8955
+ vendorImage?: string;
8956
+ vendorLogo?: string;
8957
+ }): Promise<unknown>;
8958
+ }
8959
+ declare const VENDOR_MODAL_SERVICE: InjectionToken<VendorModalOpener>;
8960
+ declare class DsMobileNotificationModalService extends BaseModalService {
8961
+ private router;
8962
+ private notificationService;
8963
+ private postsService;
8964
+ private userService;
8965
+ private postModal;
8966
+ private peerMessaging;
8967
+ private peerChat;
8968
+ private bookingDetailSheet;
8969
+ private vendorModal;
8970
+ constructor(modalController: ModalController);
8971
+ /**
8972
+ * Open the notification modal. The modal reads notifications reactively
8973
+ * from NotificationService, so it updates live when items are marked
8974
+ * read or removed via long-press actions.
8975
+ *
8976
+ * Returns the tapped notification (if the user navigated to one), or null.
8977
+ */
8978
+ open(): Promise<NotificationItem | null>;
8979
+ /**
8980
+ * Navigate to the screen associated with a notification item.
8981
+ * Public so downstream devs can call it from a Capacitor
8982
+ * `pushNotificationActionPerformed` listener for deep-link handling.
8983
+ */
8984
+ routeTo(item: NotificationItem): Promise<void>;
8985
+ private openChat;
8986
+ private openVendorModal;
8987
+ private openBookingDetail;
8988
+ private openPostModal;
8989
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileNotificationModalService, never>;
8990
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DsMobileNotificationModalService>;
8991
+ }
8992
+
8993
+ declare const SAMPLE_NOTIFICATIONS: NotificationItem[];
8994
+
8995
+ declare class RelativeTimePipe implements PipeTransform {
8996
+ transform(date: Date | null | undefined): string;
8997
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RelativeTimePipe, never>;
8998
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<RelativeTimePipe, "relativeTime", true>;
8999
+ }
9000
+ /**
9001
+ * Bucket a date into 'today' | 'yesterday' | 'earlier' for grouping notifications.
9002
+ */
9003
+ declare function dateBucket(date: Date): 'today' | 'yesterday' | 'earlier';
9004
+
9005
+ declare class DsMobileCountBadgeComponent {
9006
+ count: _angular_core.InputSignal<number>;
9007
+ variant: _angular_core.InputSignal<"accent" | "muted" | "notification">;
9008
+ display: _angular_core.Signal<string>;
9009
+ label: _angular_core.Signal<string>;
9010
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileCountBadgeComponent, never>;
9011
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCountBadgeComponent, "ds-mobile-count-badge", never, { "count": { "alias": "count"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9012
+ }
9013
+
9014
+ declare class DsMobileToggleComponent {
9015
+ checked: _angular_core.ModelSignal<boolean>;
9016
+ disabled: _angular_core.InputSignal<boolean>;
9017
+ changed: _angular_core.OutputEmitterRef<boolean>;
9018
+ handleClick(event: Event): void;
9019
+ toggle(): void;
9020
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileToggleComponent, never>;
9021
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileToggleComponent, "ds-mobile-toggle", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, never, true, never>;
9022
+ }
9023
+
8884
9024
  /**
8885
9025
  * Post and Comment Models
8886
9026
  * Unified data structures for community posts
@@ -8981,6 +9121,38 @@ declare class PostsService {
8981
9121
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PostsService>;
8982
9122
  }
8983
9123
 
9124
+ type NotificationCategory = 'messages' | 'bookings' | 'community' | 'inquiries' | 'services' | 'handbook' | 'system';
9125
+ declare class NotificationService {
9126
+ readonly notifications: _angular_core.WritableSignal<NotificationItem[]>;
9127
+ readonly unreadCount: _angular_core.Signal<number>;
9128
+ /**
9129
+ * Push notification delivery preferences per category.
9130
+ * Controls which types of push notifications the device receives —
9131
+ * does NOT filter the in-app notification list.
9132
+ */
9133
+ readonly disabledPushCategories: _angular_core.WritableSignal<Set<NotificationCategory>>;
9134
+ isPushEnabled(category: NotificationCategory): boolean;
9135
+ setPushEnabled(category: NotificationCategory, enabled: boolean): void;
9136
+ /**
9137
+ * Add a new notification to the top of the list.
9138
+ * Intended for downstream push integration — call this when a
9139
+ * real push payload arrives via Capacitor's `pushNotificationReceived` listener.
9140
+ */
9141
+ addNotification(item: NotificationItem): void;
9142
+ markAsRead(id: string): void;
9143
+ markAllAsRead(): void;
9144
+ /**
9145
+ * Remove a single notification from the list permanently.
9146
+ */
9147
+ removeNotification(id: string): void;
9148
+ /**
9149
+ * Remove all notifications from the list permanently.
9150
+ */
9151
+ clearAll(): void;
9152
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationService, never>;
9153
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NotificationService>;
9154
+ }
9155
+
8984
9156
  declare class MobileCommunityPageComponent {
8985
9157
  private router;
8986
9158
  private route;
@@ -8991,6 +9163,8 @@ declare class MobileCommunityPageComponent {
8991
9163
  private postsService;
8992
9164
  pageComponent: DsMobilePageMainComponent;
8993
9165
  pinnedSwiper?: DsMobileSwiperComponent;
9166
+ private notificationModal;
9167
+ readonly notificationService: NotificationService;
8994
9168
  allPosts: _angular_core.Signal<Post[]>;
8995
9169
  pinnedPosts: _angular_core.Signal<Post[]>;
8996
9170
  hasAnyPosts: _angular_core.Signal<boolean>;
@@ -9001,6 +9175,7 @@ declare class MobileCommunityPageComponent {
9001
9175
  * Loads more posts when user scrolls to bottom
9002
9176
  */
9003
9177
  onInfiniteScroll(event: any): Promise<void>;
9178
+ handleNotificationClick(): Promise<void>;
9004
9179
  handleRefresh(event: any): void;
9005
9180
  /**
9006
9181
  * Open post detail modal
@@ -9041,11 +9216,14 @@ declare class MobileCommunityPageComponent {
9041
9216
  declare class MobileHandbookPageComponent {
9042
9217
  userService: UserService;
9043
9218
  pageComponent: DsMobilePageMainComponent;
9219
+ private notificationModal;
9220
+ readonly notificationService: NotificationService;
9044
9221
  utilitiesItems: HandbookItem[];
9045
9222
  sikkerhedsudstyrItems: HandbookItem[];
9046
9223
  serviceContractsItems: HandbookItem[];
9047
9224
  equipmentItems: HandbookItem[];
9048
9225
  constructor(userService: UserService);
9226
+ handleNotificationClick(): Promise<void>;
9049
9227
  handleRefresh(event: any): void;
9050
9228
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileHandbookPageComponent, never>;
9051
9229
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileHandbookPageComponent, "app-mobile-handbook-page", never, {}, {}, never, never, true, never>;
@@ -9194,9 +9372,12 @@ declare class MobileHomePageComponent implements OnInit {
9194
9372
  private modalCtrl;
9195
9373
  private vendorModal;
9196
9374
  private newInquiryModal;
9375
+ private notificationModal;
9376
+ readonly notificationService: NotificationService;
9197
9377
  constructor(router: Router, navCtrl: NavController, userService: UserService, postsService: PostsService, postModal: DsMobilePostDetailModalService, trackingPermissionService: TrackingPermissionService, bottomSheet: DsMobileBottomSheetService, familyAccessService: FamilyAccessService, peerMessaging: PeerMessagingService, peerChat: PeerChatLauncherService, lightboxService: DsMobileLightboxService);
9198
9378
  ngOnInit(): void;
9199
9379
  private simulateLoad;
9380
+ handleNotificationClick(): Promise<void>;
9200
9381
  handleRefresh(event: any): void;
9201
9382
  openPost(postId: string, focusComment?: boolean): Promise<void>;
9202
9383
  openInquiryDetail(inquiryId: string): void;
@@ -9239,6 +9420,8 @@ declare class MobileInquiriesPageComponent {
9239
9420
  private newInquiryModal;
9240
9421
  pageComponent: DsMobilePageMainComponent;
9241
9422
  private inquiriesService;
9423
+ private notificationModal;
9424
+ readonly notificationService: NotificationService;
9242
9425
  constructor(userService: UserService, navCtrl: NavController, newInquiryModal: DsMobileNewInquiryModalService);
9243
9426
  filterStatus: _angular_core.WritableSignal<"open" | "closed" | "all">;
9244
9427
  tabItems: InlineTabItem[];
@@ -9247,6 +9430,7 @@ declare class MobileInquiriesPageComponent {
9247
9430
  getInquiryIcon(category: string): string;
9248
9431
  openInquiryDetail(inquiryId: string): void;
9249
9432
  showInquiryActions(inquiryId: string): void;
9433
+ handleNotificationClick(): Promise<void>;
9250
9434
  handleRefresh(event: any): void;
9251
9435
  createNewInquiry(): Promise<void>;
9252
9436
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileInquiriesPageComponent, never>;
@@ -9314,10 +9498,14 @@ declare class MobileTabsExampleComponent implements OnInit {
9314
9498
  private navCtrl;
9315
9499
  private whitelabelDemoModal;
9316
9500
  private trackingPermissionService;
9501
+ private notificationModal;
9502
+ readonly notificationService: NotificationService;
9503
+ private notificationPrompt;
9317
9504
  readonly pageLoading: PageLoadingService;
9505
+ readonly showNotificationPrompt: _angular_core.WritableSignal<boolean>;
9318
9506
  private trackedProfileMenuItems;
9319
9507
  constructor(userService: UserService, router: Router, navCtrl: NavController);
9320
- ngOnInit(): void;
9508
+ ngOnInit(): Promise<void>;
9321
9509
  tabs: TabConfig[];
9322
9510
  moreMenuItems: MoreMenuItem[];
9323
9511
  /**
@@ -9337,6 +9525,9 @@ declare class MobileTabsExampleComponent implements OnInit {
9337
9525
  */
9338
9526
  handleProfileAction(result: ActionResult): void;
9339
9527
  handleMoreMenuAction(item: MoreMenuItem): void;
9528
+ handleNotificationAllow(): Promise<void>;
9529
+ handleNotificationDismiss(): void;
9530
+ handleNotificationClick(): Promise<void>;
9340
9531
  /** Called by the error overlay retry button — clears error and re-navigates to home */
9341
9532
  handleRetry(): void;
9342
9533
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileTabsExampleComponent, never>;
@@ -9403,6 +9594,8 @@ declare class MobileBookingPageComponent {
9403
9594
  userService: UserService;
9404
9595
  pageComponent: DsMobilePageMainComponent;
9405
9596
  bookingsSwiper?: DsMobileSwiperComponent;
9597
+ private notificationModal;
9598
+ readonly notificationService: NotificationService;
9406
9599
  cancellingBookingId: _angular_core.WritableSignal<string | null>;
9407
9600
  private lang;
9408
9601
  historyLinkText: _angular_core.Signal<string>;
@@ -9411,6 +9604,7 @@ declare class MobileBookingPageComponent {
9411
9604
  activeBookings: _angular_core.WritableSignal<FacilityDetail[]>;
9412
9605
  availableFacilities: _angular_core.WritableSignal<FacilityDetail[]>;
9413
9606
  visibleFacilities: _angular_core.Signal<FacilityDetail[]>;
9607
+ handleNotificationClick(): Promise<void>;
9414
9608
  handleRefresh(event: any): void;
9415
9609
  /**
9416
9610
  * Navigate to previous slide
@@ -9697,9 +9891,12 @@ declare class WhitelabelDemoModalService {
9697
9891
  declare class TenantChatPageComponent {
9698
9892
  private modalCtrl;
9699
9893
  readonly userService: UserService;
9894
+ private notificationModal;
9895
+ readonly notificationService: NotificationService;
9700
9896
  peerMessaging: PeerMessagingService;
9701
9897
  peerChat: PeerChatLauncherService;
9702
9898
  readonly isPeerGroupConversation: typeof isPeerGroupConversation;
9899
+ handleNotificationClick(): Promise<void>;
9703
9900
  handleRefresh(event: {
9704
9901
  target: {
9705
9902
  complete: () => void;
@@ -9722,6 +9919,8 @@ declare function stripHtml(html: string): string;
9722
9919
  declare class ServicesPageComponent {
9723
9920
  pageComponent: DsMobilePageMainComponent;
9724
9921
  private vendorModal;
9922
+ private notificationModal;
9923
+ readonly notificationService: NotificationService;
9725
9924
  private newInquiryModal;
9726
9925
  private inquiriesService;
9727
9926
  private navCtrl;
@@ -9731,6 +9930,7 @@ declare class ServicesPageComponent {
9731
9930
  stripHtml: typeof stripHtml;
9732
9931
  openVendorSheet(vendor: ServiceVendor): Promise<void>;
9733
9932
  private openInquiryForVendor;
9933
+ handleNotificationClick(): Promise<void>;
9734
9934
  handleRefresh(event: CustomEvent): void;
9735
9935
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ServicesPageComponent, never>;
9736
9936
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ServicesPageComponent, "app-services-page", never, {}, {}, never, never, true, never>;
@@ -9816,5 +10016,52 @@ declare class MediaPickerService {
9816
10016
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<MediaPickerService>;
9817
10017
  }
9818
10018
 
9819
- export { AcceptInvitePageComponent, ActionCommentComponent, ActionLikeComponent, AvatarUploadPageComponent, BaseModalService, ContentRowComponent, CreateAccountPageComponent, DEFAULT_SERVICE_PAGE_LABELS, DsAppIconComponent, DsAvatarWithBadgeComponent, DsLogoComponent, DsMobileAccessSheetComponent, DsMobileActionListItemComponent, DsMobileActionsBottomSheetComponent, DsMobileAddGroupTenantsModalComponent, DsMobileAppLoadingComponent, DsMobileAttachmentPreviewComponent, DsMobileBookingConfirmationWrapperComponent, DsMobileBookingModalComponent, DsMobileBookingModalService, DsMobileBookingSummaryComponent, DsMobileBottomSheetHeaderComponent, DsMobileBottomSheetService, DsMobileBottomSheetWrapperComponent, DsMobileCapacitySheetComponent, DsMobileCardInlineBannerComponent, DsMobileCardInlineComponent, DsMobileCardInlineContactComponent, DsMobileCardInlineFileComponent, DsMobileChatModalComponent, DsMobileChatModalService, DsMobileActionsBottomSheetComponent as DsMobileCommentActionsBottomSheetComponent, DsMobileCommentComponent, DsMobileCommunityAdminPickerComponent, DsMobileCommunityAdminsModalComponent, DsMobileConfirmationSheetComponent, DsMobileContactListItemComponent, DsMobileContentComponent, DsMobileCreateGroupModalComponent, DsMobileDropdownComponent, DsMobileEditGroupModalComponent, DsMobileEmptyStateComponent, DsMobileFabComponent, DsMobileFacilityArchiveConfirmationComponent, DsMobileFacilityCreationConfirmationWrapperComponent, DsMobileFacilityCreationModalComponent, DsMobileFacilityCreationModalService, DsMobileFacilityDeleteConfirmationComponent, DsMobileFacilityDetailModalComponent, DsMobileFacilityDetailModalService, DsMobileFileAttachmentComponent, DsMobileGlassSpinnerComponent, DsMobileGroupAvatarStackComponent, DsMobileGroupMembersModalComponent, DsMobileHandbookDetailModalComponent, DsMobileHandbookDetailModalService, DsMobileHandbookFolderComponent, DsMobileHandbookFolderMiniComponent, DsMobileHeaderContentComponent, DsMobileHeaderContentTileComponent, DsMobileIllustrationComponent, DsMobileImagePlaceholderComponent, DsMobileInlinePhotoComponent, DsMobileInlineTabsComponent, DsMobileInteractiveListItemBookingComponent, DsMobileInteractiveListItemInquiryComponent, DsMobileInteractiveListItemMessageComponent, DsMobileInteractiveListItemPostComponent, DsMobileLightboxImageComponent as DsMobileLightboxComponent, DsMobileLightboxFooterComponent, DsMobileLightboxHeaderComponent, DsMobileLightboxImageComponent, DsMobileLightboxImageWithDescriptionComponent, DsMobileLightboxPdfComponent, DsMobileLightboxService, DsMobileListItemComponent, DsMobileListItemStaticComponent, DsMobileListSearchComponent, DsMobileLoaderOverlayComponent, DsMobileLongPressDirective, DsMobileMediaActionsPanelComponent, DsMobileMessageBubbleComponent, DsMobileMessageComposerComponent, DsMobileModalBaseComponent, DsMobileModalService, DsMobileNewInquiryModalComponent, DsMobileNewInquiryModalService, DsMobileOfflineBannerComponent, DsMobilePageDetailsComponent, DsMobilePageMainComponent, DsMobilePillComponent, DsMobileActionsBottomSheetComponent as DsMobilePostActionsBottomSheetComponent, DsMobilePostComposerComponent, DsMobilePostCreateBottomSheetComponent, DsMobilePostDetailModalComponent, DsMobilePostDetailModalService, DsMobilePriceSheetComponent, DsMobileProfileActionsSheetComponent, DsMobilePromptBottomSheetComponent, DsMobilePropertyBannerComponent, DsMobileRichTextEditorComponent, DsMobileSectionComponent, DsMobileServiceVendorModalService, DsMobileServiceVendorSheetComponent, DsMobileSwiperComponent, DsMobileSwiperWithNavComponent, DsMobileSystemMessageBannerComponent, DsMobileTabBarComponent, DsMobileTabsComponent, DsMobileTenantPickerModalComponent, DsMobileWhenCanBookSheetComponent, DsMobileWhoCanBookSheetComponent, DsTextInputComponent, FamilyAccessPageComponent, FamilyAccessService, InquiriesService, InviteSuccessPageComponent, MediaPickerService, MobileBookingPageComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobileModalBase, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, PageLoadingService, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, PostsService, SectionHeaderComponent, ServicesPageComponent, SignInPageComponent, SignInToAcceptPageComponent, TenantChatPageComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, TrackingPermissionService, UserService, WhitelabelDemoModalComponent, WhitelabelDemoModalService, WhitelabelService, customBackTransition, customPageTransition };
9820
- export type { ActionGroup, ActionItem, ActionResult, AddGroupTenantPickerRow, AppIconSize, AttachmentData, AttachmentFileType, AttachmentItem, AvatarSize, AvatarType, BadgePosition, BookingModalExtras, BookingResult, BottomSheetOptions, ChatAttachment, ChatGroupPanelLabels, ChatMessage, ChatModalData, ChatModalGroupData, ChatModalLabels, ChatParticipant, Comment, ActionResult as CommentActionResult, CommentData, CommunityAdminRow, ContactItem, ContactType, ContentWidth, CreateGroupMember, CreateGroupResult, DateOption, DropdownAlign, DropdownPosition, DsMobileDropdownItem, EditGroupMember, EditGroupResult, FacilityCreationModalOptions, FacilityDetailData, FacilityDetailDisplayData, FacilityDetailEditContext, FamilyInvite, FamilyMember, FamilyMemberStatus, GroupMemberRow, HandbookDetailData, HandbookItem, InlineTabItem, Inquiry, InquiryPhoto, Language, LightboxAuthor, LightboxImage, LightboxImageOptions, LightboxImageWithDescription, LightboxImageWithDescriptionOptions, LightboxMediaFile, LightboxMediaType, LightboxOptions, LightboxPdf, LightboxPdfOptions, LoadingPhase, LogoSize, LogoVariant, MediaPickerResult, ModalOptions, MoreMenuItem, NetworkStatus, NewFacilityData, NewInquiryData, NewInquiryModalOptions, Post, ActionResult as PostActionResult, PostDetailData, PromptBottomSheetResult, PromptGroupPreviewMember, ServicePageLabels, ServiceVendor, TabConfig, TimeSlot, WhitelabelConfig };
10019
+ /**
10020
+ * Manages the notification permission prompt lifecycle.
10021
+ *
10022
+ * - Stores the user's "Not now" dismissal timestamp in localStorage
10023
+ * - Re-shows the prompt after a 24-hour cooldown
10024
+ * - Skips the prompt entirely if native permissions are already granted
10025
+ *
10026
+ * Downstream integration: call `checkPermissions()` before checking
10027
+ * `shouldShowPrompt()` to incorporate native permission status.
10028
+ */
10029
+ declare class NotificationPromptService {
10030
+ private permissionGranted;
10031
+ /**
10032
+ * Record that the user dismissed the prompt. Stores the current
10033
+ * timestamp so the prompt can be suppressed for 24 hours.
10034
+ */
10035
+ dismiss(): void;
10036
+ /**
10037
+ * Whether the prompt should be displayed right now.
10038
+ * Returns false if:
10039
+ * - Native permission is already granted
10040
+ * - The user dismissed less than 24 hours ago
10041
+ */
10042
+ shouldShowPrompt(): boolean;
10043
+ /**
10044
+ * Call this on app launch to check native notification permission status.
10045
+ * If already granted, the prompt will never be shown.
10046
+ */
10047
+ checkPermissions(): Promise<void>;
10048
+ /**
10049
+ * Mark that the user has granted permission (called after a successful
10050
+ * allow flow so the prompt is permanently hidden for this session).
10051
+ */
10052
+ markGranted(): void;
10053
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationPromptService, never>;
10054
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NotificationPromptService>;
10055
+ }
10056
+
10057
+ declare class SettingsModalService {
10058
+ private modalController;
10059
+ constructor(modalController: ModalController);
10060
+ open(): Promise<void>;
10061
+ close(data?: any): Promise<boolean>;
10062
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingsModalService, never>;
10063
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SettingsModalService>;
10064
+ }
10065
+
10066
+ export { AcceptInvitePageComponent, ActionCommentComponent, ActionLikeComponent, AvatarUploadPageComponent, BaseModalService, ContentRowComponent, CreateAccountPageComponent, DEFAULT_SERVICE_PAGE_LABELS, DsAppIconComponent, DsAvatarWithBadgeComponent, DsLogoComponent, DsMobileAccessSheetComponent, DsMobileActionListItemComponent, DsMobileActionsBottomSheetComponent, DsMobileAddGroupTenantsModalComponent, DsMobileAppLoadingComponent, DsMobileAttachmentPreviewComponent, DsMobileBookingConfirmationWrapperComponent, DsMobileBookingModalComponent, DsMobileBookingModalService, DsMobileBookingSummaryComponent, DsMobileBottomSheetHeaderComponent, DsMobileBottomSheetService, DsMobileBottomSheetWrapperComponent, DsMobileCapacitySheetComponent, DsMobileCardInlineBannerComponent, DsMobileCardInlineComponent, DsMobileCardInlineContactComponent, DsMobileCardInlineFileComponent, DsMobileChatModalComponent, DsMobileChatModalService, DsMobileActionsBottomSheetComponent as DsMobileCommentActionsBottomSheetComponent, DsMobileCommentComponent, DsMobileCommunityAdminPickerComponent, DsMobileCommunityAdminsModalComponent, DsMobileConfirmationSheetComponent, DsMobileContactListItemComponent, DsMobileContentComponent, DsMobileCountBadgeComponent, DsMobileCreateGroupModalComponent, DsMobileDropdownComponent, DsMobileEditGroupModalComponent, DsMobileEmptyStateComponent, DsMobileFabComponent, DsMobileFacilityArchiveConfirmationComponent, DsMobileFacilityCreationConfirmationWrapperComponent, DsMobileFacilityCreationModalComponent, DsMobileFacilityCreationModalService, DsMobileFacilityDeleteConfirmationComponent, DsMobileFacilityDetailModalComponent, DsMobileFacilityDetailModalService, DsMobileFileAttachmentComponent, DsMobileGlassSpinnerComponent, DsMobileGroupAvatarStackComponent, DsMobileGroupMembersModalComponent, DsMobileHandbookDetailModalComponent, DsMobileHandbookDetailModalService, DsMobileHandbookFolderComponent, DsMobileHandbookFolderMiniComponent, DsMobileHeaderContentComponent, DsMobileHeaderContentTileComponent, DsMobileIllustrationComponent, DsMobileImagePlaceholderComponent, DsMobileInlinePhotoComponent, DsMobileInlineTabsComponent, DsMobileInteractiveListItemBookingComponent, DsMobileInteractiveListItemInquiryComponent, DsMobileInteractiveListItemMessageComponent, DsMobileInteractiveListItemPostComponent, DsMobileLightboxImageComponent as DsMobileLightboxComponent, DsMobileLightboxFooterComponent, DsMobileLightboxHeaderComponent, DsMobileLightboxImageComponent, DsMobileLightboxImageWithDescriptionComponent, DsMobileLightboxPdfComponent, DsMobileLightboxService, DsMobileListItemComponent, DsMobileListItemStaticComponent, DsMobileListSearchComponent, DsMobileLoaderOverlayComponent, DsMobileLongPressDirective, DsMobileMediaActionsPanelComponent, DsMobileMessageBubbleComponent, DsMobileMessageComposerComponent, DsMobileModalBaseComponent, DsMobileModalService, DsMobileNewInquiryModalComponent, DsMobileNewInquiryModalService, DsMobileNotificationButtonComponent, DsMobileNotificationModalComponent, DsMobileNotificationModalService, DsMobileNotificationPromptComponent, DsMobileOfflineBannerComponent, DsMobilePageDetailsComponent, DsMobilePageMainComponent, DsMobilePillComponent, DsMobileActionsBottomSheetComponent as DsMobilePostActionsBottomSheetComponent, DsMobilePostComposerComponent, DsMobilePostCreateBottomSheetComponent, DsMobilePostDetailModalComponent, DsMobilePostDetailModalService, DsMobilePriceSheetComponent, DsMobileProfileActionsSheetComponent, DsMobilePromptBottomSheetComponent, DsMobilePropertyBannerComponent, DsMobileRichTextEditorComponent, DsMobileSectionComponent, DsMobileServiceVendorModalService, DsMobileServiceVendorSheetComponent, DsMobileSwiperComponent, DsMobileSwiperWithNavComponent, DsMobileSystemMessageBannerComponent, DsMobileTabBarComponent, DsMobileTabsComponent, DsMobileTenantPickerModalComponent, DsMobileToggleComponent, DsMobileWhenCanBookSheetComponent, DsMobileWhoCanBookSheetComponent, DsTextInputComponent, FamilyAccessPageComponent, FamilyAccessService, InquiriesService, InviteSuccessPageComponent, MediaPickerService, MobileBookingPageComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobileModalBase, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, NOTIFICATION_ICON_MAP, NotificationPromptService, NotificationService, PageLoadingService, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, PostsService, RelativeTimePipe, SAMPLE_NOTIFICATIONS, SectionHeaderComponent, ServicesPageComponent, SettingsModalService, SignInPageComponent, SignInToAcceptPageComponent, TenantChatPageComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, TrackingPermissionService, UserService, VENDOR_MODAL_SERVICE, WhitelabelDemoModalComponent, WhitelabelDemoModalService, WhitelabelService, customBackTransition, customPageTransition, dateBucket };
10067
+ export type { ActionGroup, ActionItem, ActionResult, AddGroupTenantPickerRow, AppIconSize, AttachmentData, AttachmentFileType, AttachmentItem, AvatarSize, AvatarType, BadgePosition, BookingModalExtras, BookingResult, BottomSheetOptions, ChatAttachment, ChatGroupPanelLabels, ChatMessage, ChatModalData, ChatModalGroupData, ChatModalLabels, ChatParticipant, Comment, ActionResult as CommentActionResult, CommentData, CommunityAdminRow, ContactItem, ContactType, ContentWidth, CreateGroupMember, CreateGroupResult, DateOption, DropdownAlign, DropdownPosition, DsMobileDropdownItem, EditGroupMember, EditGroupResult, FacilityCreationModalOptions, FacilityDetailData, FacilityDetailDisplayData, FacilityDetailEditContext, FamilyInvite, FamilyMember, FamilyMemberStatus, GroupMemberRow, HandbookDetailData, HandbookItem, InlineTabItem, Inquiry, InquiryPhoto, Language, LightboxAuthor, LightboxImage, LightboxImageOptions, LightboxImageWithDescription, LightboxImageWithDescriptionOptions, LightboxMediaFile, LightboxMediaType, LightboxOptions, LightboxPdf, LightboxPdfOptions, LoadingPhase, LogoSize, LogoVariant, MediaPickerResult, ModalOptions, MoreMenuItem, NetworkStatus, NewFacilityData, NewInquiryData, NewInquiryModalOptions, NotificationCategory, NotificationItem, NotificationLeading, NotificationType, Post, ActionResult as PostActionResult, PostDetailData, PromptBottomSheetResult, PromptGroupPreviewMember, ServicePageLabels, ServiceVendor, TabConfig, TimeSlot, VendorModalOpener, WhitelabelConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@propbinder/mobile-design",
3
- "version": "0.2.91",
3
+ "version": "0.2.97",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0 || ^21.0.0",
6
6
  "@angular/core": "^20.3.0 || ^21.0.0"