@propbinder/mobile-design 0.2.7 → 0.2.9

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
@@ -1237,7 +1237,7 @@ declare class DsMobileDropdownComponent {
1237
1237
  * Computed offset Y for Ionic Popover
1238
1238
  * Uses CSS variable for precise control
1239
1239
  */
1240
- offsetY: _angular_core.Signal<"-4px" | "4px">;
1240
+ offsetY: _angular_core.Signal<"4px" | "-4px">;
1241
1241
  /**
1242
1242
  * Computed offset X for Ionic Popover
1243
1243
  * Negative value to shift left by trigger position + add 20px left margin
@@ -3930,6 +3930,261 @@ declare class DsMobilePostDetailModalService extends BaseModalService {
3930
3930
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<DsMobilePostDetailModalService>;
3931
3931
  }
3932
3932
 
3933
+ /**
3934
+ * DsMobileCardInlineComponent
3935
+ *
3936
+ * A versatile, always-interactive inline card component for standalone or small-group usage.
3937
+ * Designed for tappable card-like elements such as file attachments, contact cards, etc.
3938
+ * Not intended for long scrolling lists - use ds-mobile-list-item for that purpose.
3939
+ *
3940
+ * Features:
3941
+ * - Always interactive/tappable (unless disabled)
3942
+ * - Two layout variants: default (column) and compact (row)
3943
+ * - Flexible content projection with leading/main/trailing slots
3944
+ * - Consistent styling with rounded corners and neutral background
3945
+ * - Built-in hover and active states
3946
+ * - Accessibility features (role, tabindex, aria attributes)
3947
+ *
3948
+ * @example
3949
+ * ```html
3950
+ * <!-- Default variant (column layout) -->
3951
+ * <ds-mobile-card-inline
3952
+ * [variant]="'default'"
3953
+ * (cardClick)="handleClick()">
3954
+ *
3955
+ * <div content-leading>
3956
+ * <ds-avatar initials="JD" />
3957
+ * </div>
3958
+ *
3959
+ * <div content-main>
3960
+ * <div class="title">Document Title</div>
3961
+ * <div class="subtitle">PDF · 1.2 MB</div>
3962
+ * </div>
3963
+ *
3964
+ * <ds-icon content-trailing name="remixArrowRightSLine" />
3965
+ * </ds-mobile-card-inline>
3966
+ *
3967
+ * <!-- Compact variant (row layout) -->
3968
+ * <ds-mobile-card-inline
3969
+ * [variant]="'compact'"
3970
+ * (cardClick)="handleClick()">
3971
+ *
3972
+ * <ds-avatar content-leading size="sm" />
3973
+ *
3974
+ * <div content-main>
3975
+ * <span class="name">File.pdf</span>
3976
+ * <span class="size">245 KB</span>
3977
+ * </div>
3978
+ *
3979
+ * <ds-icon content-trailing name="remixArrowRightSLine" />
3980
+ * </ds-mobile-card-inline>
3981
+ *
3982
+ * <!-- Disabled state -->
3983
+ * <ds-mobile-card-inline [disabled]="true">
3984
+ * <div content-main>Disabled card</div>
3985
+ * </ds-mobile-card-inline>
3986
+ * ```
3987
+ */
3988
+ declare class DsMobileCardInlineComponent {
3989
+ /**
3990
+ * Display variant
3991
+ * - 'default' - Column layout with standard padding (gap: 12px, padding: 10px 12px)
3992
+ * - 'compact' - Row layout with reduced padding (gap: 8px, padding: 10px)
3993
+ */
3994
+ variant: _angular_core.InputSignal<"default" | "compact">;
3995
+ /**
3996
+ * Whether the card is disabled
3997
+ * Disables all interactions and reduces opacity
3998
+ */
3999
+ disabled: _angular_core.InputSignal<boolean>;
4000
+ /**
4001
+ * Emits when the card is clicked (if not disabled)
4002
+ */
4003
+ cardClick: _angular_core.OutputEmitterRef<void>;
4004
+ /**
4005
+ * Handle click events
4006
+ */
4007
+ handleClick(event: Event): void;
4008
+ /**
4009
+ * Handle keyboard events (Enter/Space)
4010
+ */
4011
+ handleKeyDown(event: KeyboardEvent): void;
4012
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileCardInlineComponent, never>;
4013
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCardInlineComponent, "ds-mobile-card-inline", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, ["[content-leading]", "[content-main]", "*", "[content-trailing]"], true, never>;
4014
+ }
4015
+
4016
+ /**
4017
+ * DsMobileCardInlineBannerComponent
4018
+ *
4019
+ * Specialized interactive component for displaying notification banners.
4020
+ * Used to show unread message notifications above inquiry details.
4021
+ *
4022
+ * Features:
4023
+ * - Neutral background matching file/contact cards
4024
+ * - Avatar icon with message symbol
4025
+ * - Title and timestamp
4026
+ * - Unread count badge
4027
+ * - Chevron for navigation indication
4028
+ *
4029
+ * @example
4030
+ * ```html
4031
+ * <ds-mobile-card-inline-banner
4032
+ * [title]="'New messages'"
4033
+ * [timestamp]="'2 min ago'"
4034
+ * [unreadCount]="3"
4035
+ * (bannerClick)="navigateToMessages()">
4036
+ * </ds-mobile-card-inline-banner>
4037
+ * ```
4038
+ */
4039
+ declare class DsMobileCardInlineBannerComponent {
4040
+ /**
4041
+ * Banner title (e.g., "New messages", "Unread messages")
4042
+ */
4043
+ title: _angular_core.InputSignal<string>;
4044
+ /**
4045
+ * Timestamp text (e.g., "2 min ago", "Just now")
4046
+ */
4047
+ timestamp: _angular_core.InputSignal<string>;
4048
+ /**
4049
+ * Number of unread items (optional, shows badge if > 0)
4050
+ */
4051
+ unreadCount: _angular_core.InputSignal<number>;
4052
+ /**
4053
+ * Layout variant
4054
+ * - 'default' - Standard padding and column layout
4055
+ * - 'compact' - Reduced padding and row layout
4056
+ */
4057
+ layout: _angular_core.InputSignal<"default" | "compact">;
4058
+ /**
4059
+ * Emits when the banner is clicked
4060
+ */
4061
+ bannerClick: _angular_core.OutputEmitterRef<void>;
4062
+ handleBannerClick(): void;
4063
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileCardInlineBannerComponent, never>;
4064
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCardInlineBannerComponent, "ds-mobile-card-inline-banner", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": false; "isSignal": true; }; "unreadCount": { "alias": "unreadCount"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, { "bannerClick": "bannerClick"; }, never, never, true, never>;
4065
+ }
4066
+
4067
+ /**
4068
+ * DsMobileCardInlineContactComponent
4069
+ *
4070
+ * Specialized interactive component for displaying contacts.
4071
+ * Displays contact name with avatar initials and metadata (person name + phone number).
4072
+ * Similar styling to file attachments with rounded corners and hover states.
4073
+ *
4074
+ * @example
4075
+ * ```html
4076
+ * <ds-mobile-card-inline-contact
4077
+ * [name]="'Mortensen & Søn ApS'"
4078
+ * [initials]="'M'"
4079
+ * [contactPerson]="'John Mortensen'"
4080
+ * [phoneNumber]="'+45 12 34 56 78'"
4081
+ * [clickable]="true"
4082
+ * (contactClick)="openContact()">
4083
+ * </ds-mobile-card-inline-contact>
4084
+ * ```
4085
+ */
4086
+ declare class DsMobileCardInlineContactComponent {
4087
+ /**
4088
+ * Contact/company name
4089
+ */
4090
+ name: _angular_core.InputSignal<string>;
4091
+ /**
4092
+ * Avatar initials (usually 1-2 letters)
4093
+ */
4094
+ initials: _angular_core.InputSignal<string>;
4095
+ /**
4096
+ * Contact person name (optional)
4097
+ */
4098
+ contactPerson: _angular_core.InputSignal<string>;
4099
+ /**
4100
+ * Phone number (optional)
4101
+ */
4102
+ phoneNumber: _angular_core.InputSignal<string>;
4103
+ /**
4104
+ * Layout variant
4105
+ * - 'default' - Standard padding and column layout
4106
+ * - 'compact' - Reduced padding and row layout
4107
+ */
4108
+ layout: _angular_core.InputSignal<"default" | "compact">;
4109
+ /**
4110
+ * Whether the contact item is clickable
4111
+ */
4112
+ clickable: _angular_core.InputSignal<boolean>;
4113
+ /**
4114
+ * Whether to show chevron icon
4115
+ */
4116
+ showChevron: _angular_core.InputSignal<boolean>;
4117
+ /**
4118
+ * Emits when the contact item is clicked (if clickable)
4119
+ */
4120
+ contactClick: _angular_core.OutputEmitterRef<void>;
4121
+ handleContactClick(): void;
4122
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileCardInlineContactComponent, never>;
4123
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCardInlineContactComponent, "ds-mobile-card-inline-contact", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "initials": { "alias": "initials"; "required": true; "isSignal": true; }; "contactPerson": { "alias": "contactPerson"; "required": false; "isSignal": true; }; "phoneNumber": { "alias": "phoneNumber"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; }, { "contactClick": "contactClick"; }, never, never, true, never>;
4124
+ }
4125
+
4126
+ /**
4127
+ * DsMobileCardInlineFileComponent
4128
+ *
4129
+ * File attachment display for various document types.
4130
+ * Shows file info card with icon, filename, and file size.
4131
+ * Supports PDF and generic document formats.
4132
+ * Emits click event to open file in viewer.
4133
+ *
4134
+ * @example
4135
+ * ```html
4136
+ * <ds-mobile-card-inline-file
4137
+ * [fileName]="'Document.pdf'"
4138
+ * [fileSize]="'1.2 MB'"
4139
+ * [variant]="'pdf'"
4140
+ * [layout]="'compact'"
4141
+ * (fileClick)="openFile()">
4142
+ * </ds-mobile-card-inline-file>
4143
+ * ```
4144
+ */
4145
+ declare class DsMobileCardInlineFileComponent {
4146
+ /**
4147
+ * File name
4148
+ */
4149
+ fileName: _angular_core.InputSignal<string>;
4150
+ /**
4151
+ * File size display (e.g., '1.2 MB')
4152
+ */
4153
+ fileSize: _angular_core.InputSignal<string>;
4154
+ /**
4155
+ * File type variant
4156
+ * - 'pdf' - PDF document (red icon)
4157
+ * - 'doc' - Generic document (blue icon)
4158
+ */
4159
+ variant: _angular_core.InputSignal<"pdf" | "doc">;
4160
+ /**
4161
+ * Layout variant
4162
+ * - 'default' - Standard padding and column layout
4163
+ * - 'compact' - Reduced padding and row layout
4164
+ */
4165
+ layout: _angular_core.InputSignal<"default" | "compact">;
4166
+ /**
4167
+ * Optional URL to open when clicked
4168
+ * If provided, clicking the card will open this URL in a new tab
4169
+ */
4170
+ fileUrl: _angular_core.InputSignal<string | undefined>;
4171
+ /**
4172
+ * Emits when the file attachment is clicked
4173
+ */
4174
+ fileClick: _angular_core.OutputEmitterRef<void>;
4175
+ /**
4176
+ * Get the appropriate icon name based on variant
4177
+ */
4178
+ getIconName(): string;
4179
+ /**
4180
+ * Get the file type label based on variant
4181
+ */
4182
+ getFileTypeLabel(): string;
4183
+ handleClick(): void;
4184
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileCardInlineFileComponent, never>;
4185
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileCardInlineFileComponent, "ds-mobile-card-inline-file", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "fileSize": { "alias": "fileSize"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "fileUrl": { "alias": "fileUrl"; "required": false; "isSignal": true; }; }, { "fileClick": "fileClick"; }, never, never, true, never>;
4186
+ }
4187
+
3933
4188
  /**
3934
4189
  * Chat message data interface
3935
4190
  */
@@ -3983,7 +4238,7 @@ interface ChatParticipant {
3983
4238
  *
3984
4239
  * Represents the data needed to display a chat conversation.
3985
4240
  *
3986
- * @example
4241
+ * @example
3987
4242
  * ```typescript
3988
4243
  * const chatData: ChatModalData = {
3989
4244
  * participant: {
@@ -5601,5 +5856,5 @@ declare const customPageTransition: (_: HTMLElement, opts: any) => Animation;
5601
5856
  */
5602
5857
  declare const customBackTransition: (_: HTMLElement, opts: any) => Animation;
5603
5858
 
5604
- export { ActionCommentComponent, ActionLikeComponent, ContentRowComponent, DsAvatarWithBadgeComponent, DsMobileActionsBottomSheetComponent, DsMobileAttachmentPreviewComponent, DsMobileBottomSheetService, DsMobileBottomSheetWrapperComponent, DsMobileChatModalComponent, DsMobileChatModalService, DsMobileActionsBottomSheetComponent as DsMobileCommentActionsBottomSheetComponent, DsMobileCommentComponent, DsMobileContactListItemComponent, DsMobileContentComponent, DsMobileContentSectionComponent, DsMobileDropdownComponent, DsMobileEmptyStateComponent, DsMobileFabComponent, DsMobileHandbookDetailModalComponent, DsMobileHandbookDetailModalService, DsMobileHandbookFolderComponent, DsMobileHandbookFolderMiniComponent, DsMobileHeaderContentComponent, DsMobileHeaderContentTileComponent, DsMobileInlinePhotoComponent, DsMobileInlineTabsComponent, DsMobileInteractiveListItemInquiryComponent, DsMobileInteractiveListItemMessageComponent, DsMobileInteractiveListItemPostComponent, DsMobileLightboxImageComponent as DsMobileLightboxComponent, DsMobileLightboxFooterComponent, DsMobileLightboxHeaderComponent, DsMobileLightboxImageComponent, DsMobileLightboxPdfComponent, DsMobileLightboxService, DsMobileListItemComponent, DsMobileListItemStaticComponent, DsMobileLongPressDirective, DsMobileMessageBubbleComponent, DsMobileMessageComposerComponent, DsMobileModalBaseComponent, DsMobileModalService, DsMobileNewInquiryModalComponent, DsMobileNewInquiryModalService, DsMobilePageDetailsComponent, DsMobilePageMainComponent, DsMobileActionsBottomSheetComponent as DsMobilePostActionsBottomSheetComponent, DsMobilePostComposerComponent, DsMobilePostCreateBottomSheetComponent, DsMobilePostDetailModalComponent, DsMobilePostDetailModalService, DsMobileProfileActionsSheetComponent, DsMobileTabBarComponent, DsMobileTabsComponent, DsTextInputComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobileModalBase, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, SectionHeaderComponent, SignInPageComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, UserService, WhitelabelDemoPage, WhitelabelService, customBackTransition, customPageTransition };
5859
+ export { ActionCommentComponent, ActionLikeComponent, ContentRowComponent, DsAvatarWithBadgeComponent, DsMobileActionsBottomSheetComponent, DsMobileAttachmentPreviewComponent, DsMobileBottomSheetService, DsMobileBottomSheetWrapperComponent, DsMobileCardInlineBannerComponent, DsMobileCardInlineComponent, DsMobileCardInlineContactComponent, DsMobileCardInlineFileComponent, DsMobileChatModalComponent, DsMobileChatModalService, DsMobileActionsBottomSheetComponent as DsMobileCommentActionsBottomSheetComponent, DsMobileCommentComponent, DsMobileContactListItemComponent, DsMobileContentComponent, DsMobileContentSectionComponent, DsMobileDropdownComponent, DsMobileEmptyStateComponent, DsMobileFabComponent, DsMobileHandbookDetailModalComponent, DsMobileHandbookDetailModalService, DsMobileHandbookFolderComponent, DsMobileHandbookFolderMiniComponent, DsMobileHeaderContentComponent, DsMobileHeaderContentTileComponent, DsMobileInlinePhotoComponent, DsMobileInlineTabsComponent, DsMobileInteractiveListItemInquiryComponent, DsMobileInteractiveListItemMessageComponent, DsMobileInteractiveListItemPostComponent, DsMobileLightboxImageComponent as DsMobileLightboxComponent, DsMobileLightboxFooterComponent, DsMobileLightboxHeaderComponent, DsMobileLightboxImageComponent, DsMobileLightboxPdfComponent, DsMobileLightboxService, DsMobileListItemComponent, DsMobileListItemStaticComponent, DsMobileLongPressDirective, DsMobileMessageBubbleComponent, DsMobileMessageComposerComponent, DsMobileModalBaseComponent, DsMobileModalService, DsMobileNewInquiryModalComponent, DsMobileNewInquiryModalService, DsMobilePageDetailsComponent, DsMobilePageMainComponent, DsMobileActionsBottomSheetComponent as DsMobilePostActionsBottomSheetComponent, DsMobilePostComposerComponent, DsMobilePostCreateBottomSheetComponent, DsMobilePostDetailModalComponent, DsMobilePostDetailModalService, DsMobileProfileActionsSheetComponent, DsMobileTabBarComponent, DsMobileTabsComponent, DsTextInputComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobileModalBase, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, SectionHeaderComponent, SignInPageComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, UserService, WhitelabelDemoPage, WhitelabelService, customBackTransition, customPageTransition };
5605
5860
  export type { ActionGroup, ActionItem, ActionResult, AttachmentData, AttachmentFileType, AttachmentItem, AvatarSize, AvatarType, BadgePosition, BottomSheetOptions, ChatAttachment, ChatMessage, ChatModalData, ChatParticipant, Comment, ActionResult as CommentActionResult, CommentData, ContactItem, ContentWidth, DropdownAlign, DropdownPosition, DsMobileDropdownItem, HandbookDetailData, HandbookItem, InlineTabItem, InquiryPhoto, Language, LightboxAuthor, LightboxImage, LightboxImageOptions, LightboxMediaFile, LightboxMediaType, LightboxOptions, LightboxPdf, LightboxPdfOptions, ModalOptions, NewInquiryData, NewInquiryModalOptions, Post, ActionResult as PostActionResult, PostDetailData, TabConfig, WhitelabelConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@propbinder/mobile-design",
3
- "version": "0.2.07",
3
+ "version": "0.2.09",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0 || ^21.0.0",
6
6
  "@angular/core": "^20.3.0 || ^21.0.0"