@propbinder/mobile-design 0.2.16 → 0.2.21

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
@@ -1222,6 +1222,142 @@ declare class TileValueComponent {
1222
1222
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TileValueComponent, "tile-value", never, {}, {}, never, ["*"], true, never>;
1223
1223
  }
1224
1224
 
1225
+ type LogoVariant = 'full' | 'mark';
1226
+ type LogoSize = 'sm' | 'md' | 'lg' | 'xl';
1227
+ /**
1228
+ * DsLogoComponent
1229
+ *
1230
+ * Displays the whitelabeled logo or logomark based on current configuration.
1231
+ * Automatically pulls logo assets from WhitelabelService.
1232
+ *
1233
+ * @example
1234
+ * Full logo in header:
1235
+ * ```html
1236
+ * <ds-logo variant="full" size="md" />
1237
+ * ```
1238
+ *
1239
+ * Logomark for compact spaces:
1240
+ * ```html
1241
+ * <ds-logo variant="mark" size="sm" />
1242
+ * ```
1243
+ */
1244
+ declare class DsLogoComponent {
1245
+ whitelabelService: WhitelabelService;
1246
+ variant: LogoVariant;
1247
+ size: LogoSize;
1248
+ customHeight?: number;
1249
+ customWidth?: number;
1250
+ get logoSrc(): string;
1251
+ get logoAlt(): string;
1252
+ /**
1253
+ * Priority: customHeight input > whitelabel config logoHeight > default 32px
1254
+ */
1255
+ get effectiveHeight(): number;
1256
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsLogoComponent, never>;
1257
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsLogoComponent, "ds-logo", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "customHeight": { "alias": "customHeight"; "required": false; }; "customWidth": { "alias": "customWidth"; "required": false; }; }, {}, never, never, true, never>;
1258
+ }
1259
+
1260
+ /**
1261
+ * DsMobileSystemMessageBannerComponent
1262
+ *
1263
+ * Full-width centered banner component for displaying system messages in chat conversations.
1264
+ * Uses the same text styling as message bubbles for consistency.
1265
+ *
1266
+ * Features:
1267
+ * - Full-width centered layout
1268
+ * - Subtle background with theming support
1269
+ * - Same typography as message bubbles
1270
+ * - Optional icon support
1271
+ *
1272
+ * Common use cases:
1273
+ * - Inquiry status updates ("Your inquiry has been assigned to...")
1274
+ * - System notifications ("This inquiry is marked as resolved")
1275
+ * - Auto-replies ("We aim to respond within 24 hours...")
1276
+ * - Time/date separators
1277
+ *
1278
+ * @example
1279
+ * ```html
1280
+ * <!-- Simple system message -->
1281
+ * <ds-mobile-system-message-banner
1282
+ * [message]="'Ricki Meihlen har overtaget din henvendelse og vil kontakte dig snart.'">
1283
+ * </ds-mobile-system-message-banner>
1284
+ *
1285
+ * <!-- With icon -->
1286
+ * <ds-mobile-system-message-banner
1287
+ * [message]="'Vi bestræber os på at svare inden for 24 timer på hverdage.'"
1288
+ * [iconName]="'remixInformationLine'">
1289
+ * </ds-mobile-system-message-banner>
1290
+ * ```
1291
+ */
1292
+ declare class DsMobileSystemMessageBannerComponent {
1293
+ /**
1294
+ * System message text to display
1295
+ */
1296
+ message: _angular_core.InputSignal<string>;
1297
+ /**
1298
+ * Optional icon name (currently using inline SVG for info icon)
1299
+ * Can be extended to support full icon library integration
1300
+ */
1301
+ iconName: _angular_core.InputSignal<string>;
1302
+ /**
1303
+ * Whether this system message appears directly after a timestamp
1304
+ * When true, removes top padding to reduce spacing
1305
+ */
1306
+ afterTimestamp: _angular_core.InputSignal<boolean>;
1307
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileSystemMessageBannerComponent, never>;
1308
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileSystemMessageBannerComponent, "ds-mobile-system-message-banner", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "afterTimestamp": { "alias": "afterTimestamp"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1309
+ }
1310
+
1311
+ /**
1312
+ * DsMobileFileAttachmentComponent
1313
+ *
1314
+ * File attachment display for various document types.
1315
+ * Shows file info card with icon, filename, and file size.
1316
+ * Supports PDF and generic document formats.
1317
+ * Emits click event to open file in viewer.
1318
+ *
1319
+ * @example
1320
+ * ```html
1321
+ * <ds-mobile-file-attachment
1322
+ * [fileName]="'Document.pdf'"
1323
+ * [fileSize]="'1.2 MB'"
1324
+ * [variant]="'pdf'"
1325
+ * (fileClick)="openFile()">
1326
+ * </ds-mobile-file-attachment>
1327
+ * ```
1328
+ */
1329
+ declare class DsMobileFileAttachmentComponent {
1330
+ /**
1331
+ * File name
1332
+ */
1333
+ fileName: _angular_core.InputSignal<string>;
1334
+ /**
1335
+ * File size display (e.g., "1.2 MB")
1336
+ */
1337
+ fileSize: _angular_core.InputSignal<string>;
1338
+ /**
1339
+ * File type variant
1340
+ * - 'pdf' - PDF document (red icon)
1341
+ * - 'doc' - Generic document (blue icon)
1342
+ */
1343
+ variant: _angular_core.InputSignal<"pdf" | "doc">;
1344
+ /**
1345
+ * Emits when the file attachment is clicked
1346
+ */
1347
+ fileClick: _angular_core.OutputEmitterRef<void>;
1348
+ /**
1349
+ * Get the appropriate icon name based on variant
1350
+ */
1351
+ getIconName(): string;
1352
+ /**
1353
+ * Get the file type label based on variant
1354
+ */
1355
+ getFileTypeLabel(): string;
1356
+ handleClick(event: Event): void;
1357
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileFileAttachmentComponent, never>;
1358
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileFileAttachmentComponent, "ds-mobile-file-attachment", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "fileSize": { "alias": "fileSize"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "fileClick": "fileClick"; }, never, never, true, never>;
1359
+ }
1360
+
1225
1361
  /**
1226
1362
  * DsMobileCommentComponent
1227
1363
  *
@@ -2404,6 +2540,48 @@ declare class DsMobileListItemStaticComponent {
2404
2540
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileListItemStaticComponent, "ds-mobile-list-item-static", never, { "leadingSize": { "alias": "leadingSize"; "required": false; "isSignal": true; }; }, {}, never, ["[content-leading]", "[content-main]", "*", "[content-trailing]"], true, never>;
2405
2541
  }
2406
2542
 
2543
+ /**
2544
+ * DsMobileActionListItemComponent
2545
+ *
2546
+ * Specialized list item for action sheets and menus.
2547
+ * Wraps ds-mobile-list-item with action-specific styling:
2548
+ * - Vertically centered content
2549
+ * - Interactive by default
2550
+ * - No dividers (controlled per-item)
2551
+ *
2552
+ * @example
2553
+ * ```html
2554
+ * <ds-mobile-action-list-item
2555
+ * title="Edit"
2556
+ * [showDivider]="true"
2557
+ * (itemClick)="handleEdit()">
2558
+ * <ds-icon content-leading name="remixEditLine" size="20px" />
2559
+ * </ds-mobile-action-list-item>
2560
+ * ```
2561
+ */
2562
+ declare class DsMobileActionListItemComponent {
2563
+ /**
2564
+ * Action title text
2565
+ */
2566
+ title: _angular_core.InputSignal<string>;
2567
+ /**
2568
+ * Whether to show divider below item
2569
+ * @default false
2570
+ */
2571
+ showDivider: _angular_core.InputSignal<boolean>;
2572
+ /**
2573
+ * Whether the action is disabled
2574
+ * @default false
2575
+ */
2576
+ disabled: _angular_core.InputSignal<boolean>;
2577
+ /**
2578
+ * Emits when the action item is clicked
2579
+ */
2580
+ itemClick: _angular_core.OutputEmitterRef<void>;
2581
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileActionListItemComponent, never>;
2582
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileActionListItemComponent, "ds-mobile-action-list-item", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "showDivider": { "alias": "showDivider"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, ["[action-icon]", "[content-trailing]"], true, never>;
2583
+ }
2584
+
2407
2585
  /**
2408
2586
  * DsMobileInteractiveListItemPostComponent
2409
2587
  *
@@ -3089,57 +3267,6 @@ declare class DsMobileSwiperComponent implements AfterViewInit, OnDestroy {
3089
3267
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileSwiperComponent, "ds-mobile-swiper", never, { "slideWidth": { "alias": "slideWidth"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "autoHeight": { "alias": "autoHeight"; "required": false; "isSignal": true; }; "progressiveOpacity": { "alias": "progressiveOpacity"; "required": false; "isSignal": true; }; "progressiveScale": { "alias": "progressiveScale"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3090
3268
  }
3091
3269
 
3092
- /**
3093
- * DsMobileSystemMessageBannerComponent
3094
- *
3095
- * Full-width centered banner component for displaying system messages in chat conversations.
3096
- * Uses the same text styling as message bubbles for consistency.
3097
- *
3098
- * Features:
3099
- * - Full-width centered layout
3100
- * - Subtle background with theming support
3101
- * - Same typography as message bubbles
3102
- * - Optional icon support
3103
- *
3104
- * Common use cases:
3105
- * - Inquiry status updates ("Your inquiry has been assigned to...")
3106
- * - System notifications ("This inquiry is marked as resolved")
3107
- * - Auto-replies ("We aim to respond within 24 hours...")
3108
- * - Time/date separators
3109
- *
3110
- * @example
3111
- * ```html
3112
- * <!-- Simple system message -->
3113
- * <ds-mobile-system-message-banner
3114
- * [message]="'Ricki Meihlen har overtaget din henvendelse og vil kontakte dig snart.'">
3115
- * </ds-mobile-system-message-banner>
3116
- *
3117
- * <!-- With icon -->
3118
- * <ds-mobile-system-message-banner
3119
- * [message]="'Vi bestræber os på at svare inden for 24 timer på hverdage.'"
3120
- * [iconName]="'remixInformationLine'">
3121
- * </ds-mobile-system-message-banner>
3122
- * ```
3123
- */
3124
- declare class DsMobileSystemMessageBannerComponent {
3125
- /**
3126
- * System message text to display
3127
- */
3128
- message: _angular_core.InputSignal<string>;
3129
- /**
3130
- * Optional icon name (currently using inline SVG for info icon)
3131
- * Can be extended to support full icon library integration
3132
- */
3133
- iconName: _angular_core.InputSignal<string>;
3134
- /**
3135
- * Whether this system message appears directly after a timestamp
3136
- * When true, removes top padding to reduce spacing
3137
- */
3138
- afterTimestamp: _angular_core.InputSignal<boolean>;
3139
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileSystemMessageBannerComponent, never>;
3140
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileSystemMessageBannerComponent, "ds-mobile-system-message-banner", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "afterTimestamp": { "alias": "afterTimestamp"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3141
- }
3142
-
3143
3270
  /**
3144
3271
  * Media file types supported by the lightbox
3145
3272
  */
@@ -5811,56 +5938,6 @@ declare class DsTextInputComponent implements ControlValueAccessor {
5811
5938
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsTextInputComponent, "ds-text-input", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "autoClearError": { "alias": "autoClearError"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "blur": "blur"; "focus": "focus"; "errorCleared": "errorCleared"; }, never, never, true, never>;
5812
5939
  }
5813
5940
 
5814
- /**
5815
- * DsMobileFileAttachmentComponent
5816
- *
5817
- * File attachment display for various document types.
5818
- * Shows file info card with icon, filename, and file size.
5819
- * Supports PDF and generic document formats.
5820
- * Emits click event to open file in viewer.
5821
- *
5822
- * @example
5823
- * ```html
5824
- * <ds-mobile-file-attachment
5825
- * [fileName]="'Document.pdf'"
5826
- * [fileSize]="'1.2 MB'"
5827
- * [variant]="'pdf'"
5828
- * (fileClick)="openFile()">
5829
- * </ds-mobile-file-attachment>
5830
- * ```
5831
- */
5832
- declare class DsMobileFileAttachmentComponent {
5833
- /**
5834
- * File name
5835
- */
5836
- fileName: _angular_core.InputSignal<string>;
5837
- /**
5838
- * File size display (e.g., "1.2 MB")
5839
- */
5840
- fileSize: _angular_core.InputSignal<string>;
5841
- /**
5842
- * File type variant
5843
- * - 'pdf' - PDF document (red icon)
5844
- * - 'doc' - Generic document (blue icon)
5845
- */
5846
- variant: _angular_core.InputSignal<"pdf" | "doc">;
5847
- /**
5848
- * Emits when the file attachment is clicked
5849
- */
5850
- fileClick: _angular_core.OutputEmitterRef<void>;
5851
- /**
5852
- * Get the appropriate icon name based on variant
5853
- */
5854
- getIconName(): string;
5855
- /**
5856
- * Get the file type label based on variant
5857
- */
5858
- getFileTypeLabel(): string;
5859
- handleClick(event: Event): void;
5860
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileFileAttachmentComponent, never>;
5861
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileFileAttachmentComponent, "ds-mobile-file-attachment", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "fileSize": { "alias": "fileSize"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "fileClick": "fileClick"; }, never, never, true, never>;
5862
- }
5863
-
5864
5941
  /**
5865
5942
  * DsMobileFabComponent
5866
5943
  *
@@ -6016,83 +6093,6 @@ declare class DsAvatarWithBadgeComponent {
6016
6093
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsAvatarWithBadgeComponent, "ds-avatar-with-badge", never, { "type": { "alias": "type"; "required": false; }; "size": { "alias": "size"; "required": false; }; "initials": { "alias": "initials"; "required": false; }; "src": { "alias": "src"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "showBadge": { "alias": "showBadge"; "required": false; }; "badgePosition": { "alias": "badgePosition"; "required": false; }; }, {}, never, never, true, never>;
6017
6094
  }
6018
6095
 
6019
- /**
6020
- * DsMobileActionListItemComponent
6021
- *
6022
- * Specialized list item for action sheets and menus.
6023
- * Wraps ds-mobile-list-item with action-specific styling:
6024
- * - Vertically centered content
6025
- * - Interactive by default
6026
- * - No dividers (controlled per-item)
6027
- *
6028
- * @example
6029
- * ```html
6030
- * <ds-mobile-action-list-item
6031
- * title="Edit"
6032
- * [showDivider]="true"
6033
- * (itemClick)="handleEdit()">
6034
- * <ds-icon content-leading name="remixEditLine" size="20px" />
6035
- * </ds-mobile-action-list-item>
6036
- * ```
6037
- */
6038
- declare class DsMobileActionListItemComponent {
6039
- /**
6040
- * Action title text
6041
- */
6042
- title: _angular_core.InputSignal<string>;
6043
- /**
6044
- * Whether to show divider below item
6045
- * @default false
6046
- */
6047
- showDivider: _angular_core.InputSignal<boolean>;
6048
- /**
6049
- * Whether the action is disabled
6050
- * @default false
6051
- */
6052
- disabled: _angular_core.InputSignal<boolean>;
6053
- /**
6054
- * Emits when the action item is clicked
6055
- */
6056
- itemClick: _angular_core.OutputEmitterRef<void>;
6057
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileActionListItemComponent, never>;
6058
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileActionListItemComponent, "ds-mobile-action-list-item", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "showDivider": { "alias": "showDivider"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, ["[action-icon]", "[content-trailing]"], true, never>;
6059
- }
6060
-
6061
- type LogoVariant = 'full' | 'mark';
6062
- type LogoSize = 'sm' | 'md' | 'lg' | 'xl';
6063
- /**
6064
- * DsLogoComponent
6065
- *
6066
- * Displays the whitelabeled logo or logomark based on current configuration.
6067
- * Automatically pulls logo assets from WhitelabelService.
6068
- *
6069
- * @example
6070
- * Full logo in header:
6071
- * ```html
6072
- * <ds-logo variant="full" size="md" />
6073
- * ```
6074
- *
6075
- * Logomark for compact spaces:
6076
- * ```html
6077
- * <ds-logo variant="mark" size="sm" />
6078
- * ```
6079
- */
6080
- declare class DsLogoComponent {
6081
- whitelabelService: WhitelabelService;
6082
- variant: LogoVariant;
6083
- size: LogoSize;
6084
- customHeight?: number;
6085
- customWidth?: number;
6086
- get logoSrc(): string;
6087
- get logoAlt(): string;
6088
- /**
6089
- * Priority: customHeight input > whitelabel config logoHeight > default 32px
6090
- */
6091
- get effectiveHeight(): number;
6092
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsLogoComponent, never>;
6093
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsLogoComponent, "ds-logo", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "customHeight": { "alias": "customHeight"; "required": false; }; "customWidth": { "alias": "customWidth"; "required": false; }; }, {}, never, never, true, never>;
6094
- }
6095
-
6096
6096
  /**
6097
6097
  * DsMobileEmptyStateComponent
6098
6098
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@propbinder/mobile-design",
3
- "version": "0.2.16",
3
+ "version": "0.2.21",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0 || ^21.0.0",
6
6
  "@angular/core": "^20.3.0 || ^21.0.0"