@propbinder/mobile-design 0.0.1 → 0.0.2

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.
Files changed (123) hide show
  1. package/ng-package.json +7 -0
  2. package/package.json +12 -39
  3. package/src/animations/page-transitions.ts +86 -0
  4. package/src/assets/fonts/Brockmann-Bold.otf +0 -0
  5. package/src/assets/fonts/Brockmann-BoldItalic.otf +0 -0
  6. package/src/assets/fonts/Brockmann-Medium.otf +0 -0
  7. package/src/assets/fonts/Brockmann-MediumItalic.otf +0 -0
  8. package/src/assets/fonts/Brockmann-Regular.otf +0 -0
  9. package/src/assets/fonts/Brockmann-RegularItalic.otf +0 -0
  10. package/src/assets/fonts/Brockmann-SemiBold.otf +0 -0
  11. package/src/assets/fonts/Brockmann-SemiBoldItalic.otf +0 -0
  12. package/src/assets/fonts/Brockmann_desktop_license.pdf +0 -0
  13. package/src/assets/fonts/brockmann-medium-webfont.woff2 +0 -0
  14. package/src/assets/fonts/brockmann-regular-webfont.woff2 +0 -0
  15. package/src/assets/fonts/brockmann-semibold-webfont.woff2 +0 -0
  16. package/src/components/action-list-item/ds-mobile-action-list-item.ts +83 -0
  17. package/src/components/action-list-item/index.ts +2 -0
  18. package/src/components/app-layout/ds-mobile-app-layout.css +343 -0
  19. package/src/components/app-layout/ds-mobile-app-layout.ts +271 -0
  20. package/src/components/app-layout/index.ts +2 -0
  21. package/src/components/avatar-with-badge/ds-avatar-with-badge.ts +130 -0
  22. package/src/components/avatar-with-badge/index.ts +2 -0
  23. package/src/components/bottom-sheet/ds-mobile-actions-bottom-sheet.ts +273 -0
  24. package/src/components/bottom-sheet/ds-mobile-bottom-sheet.css +110 -0
  25. package/src/components/bottom-sheet/ds-mobile-bottom-sheet.service.ts +167 -0
  26. package/src/components/bottom-sheet/ds-mobile-post-create-bottom-sheet.ts +656 -0
  27. package/src/components/bottom-sheet/index.ts +3 -0
  28. package/src/components/comment/ds-mobile-comment.ts +516 -0
  29. package/src/components/comment/index.ts +2 -0
  30. package/src/components/contact-list-item/ds-mobile-contact-list-item.ts +182 -0
  31. package/src/components/contact-list-item/index.ts +2 -0
  32. package/src/components/content/ds-mobile-content.ts +158 -0
  33. package/src/components/content/index.ts +2 -0
  34. package/src/components/ds-mobile-tabs.css +372 -0
  35. package/src/components/ds-mobile-tabs.ts +217 -0
  36. package/src/components/file-attachment/ds-mobile-file-attachment.ts +164 -0
  37. package/src/components/file-attachment/index.ts +2 -0
  38. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.service.ts +98 -0
  39. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.ts +514 -0
  40. package/src/components/handbook-detail-modal/index.ts +3 -0
  41. package/src/components/handbook-folder/ds-mobile-handbook-folder-mini.ts +130 -0
  42. package/src/components/handbook-folder/ds-mobile-handbook-folder.ts +444 -0
  43. package/src/components/handbook-folder/index.ts +4 -0
  44. package/src/components/header-content/ds-mobile-header-content.ts +211 -0
  45. package/src/components/header-content/index.ts +2 -0
  46. package/src/components/index.ts +45 -0
  47. package/src/components/inline-photo/ds-mobile-inline-photo.ts +269 -0
  48. package/src/components/inline-photo/index.ts +1 -0
  49. package/src/components/interactive-list-item-inquiry/ds-mobile-interactive-list-item-inquiry.css +60 -0
  50. package/src/components/interactive-list-item-inquiry/ds-mobile-interactive-list-item-inquiry.ts +280 -0
  51. package/src/components/interactive-list-item-inquiry/index.ts +2 -0
  52. package/src/components/interactive-list-item-message/ds-mobile-interactive-list-item-message.ts +197 -0
  53. package/src/components/interactive-list-item-message/index.ts +2 -0
  54. package/src/components/interactive-list-item-post/ds-mobile-interactive-list-item-post.css +70 -0
  55. package/src/components/interactive-list-item-post/ds-mobile-interactive-list-item-post.ts +594 -0
  56. package/src/components/interactive-list-item-post/ds-mobile-post-pdf-attachment.ts +124 -0
  57. package/src/components/interactive-list-item-post/index.ts +13 -0
  58. package/src/components/lightbox/ds-mobile-lightbox-footer.ts +331 -0
  59. package/src/components/lightbox/ds-mobile-lightbox-header.ts +173 -0
  60. package/src/components/lightbox/ds-mobile-lightbox-image.ts +464 -0
  61. package/src/components/lightbox/ds-mobile-lightbox-pdf.css +375 -0
  62. package/src/components/lightbox/ds-mobile-lightbox-pdf.ts +374 -0
  63. package/src/components/lightbox/ds-mobile-lightbox.css +587 -0
  64. package/src/components/lightbox/ds-mobile-lightbox.service.ts +293 -0
  65. package/src/components/lightbox/ds-mobile-lightbox.ts +529 -0
  66. package/src/components/lightbox/index.ts +22 -0
  67. package/src/components/list-item/ds-mobile-list-item.ts +499 -0
  68. package/src/components/list-item/index.ts +2 -0
  69. package/src/components/list-item-static/ds-mobile-list-item-static.ts +133 -0
  70. package/src/components/list-item-static/index.ts +2 -0
  71. package/src/components/logo/ds-logo.ts +85 -0
  72. package/src/components/logo/index.ts +2 -0
  73. package/src/components/modal/ds-mobile-modal.css +163 -0
  74. package/src/components/modal/ds-mobile-modal.service.ts +329 -0
  75. package/src/components/modal/index.ts +8 -0
  76. package/src/components/page-details/ds-mobile-page-details.css +285 -0
  77. package/src/components/page-details/ds-mobile-page-details.ts +128 -0
  78. package/src/components/page-details/index.ts +2 -0
  79. package/src/components/page-main/ds-mobile-page-main.css +346 -0
  80. package/src/components/page-main/ds-mobile-page-main.ts +331 -0
  81. package/src/components/page-main/index.ts +2 -0
  82. package/src/components/post-card/ds-mobile-post-card.ts +685 -0
  83. package/src/components/post-card/ds-mobile-post-pdf-attachment.ts +124 -0
  84. package/src/components/post-card/index.ts +11 -0
  85. package/src/components/post-composer/ds-mobile-post-composer.ts +140 -0
  86. package/src/components/post-composer/index.ts +2 -0
  87. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.service.ts +104 -0
  88. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.ts +1273 -0
  89. package/src/components/post-detail-modal/index.ts +9 -0
  90. package/src/components/shared/directives/index.ts +2 -0
  91. package/src/components/shared/directives/long-press.directive.ts +208 -0
  92. package/src/components/shared/index.ts +3 -0
  93. package/src/components/shared/mobile-common.css +94 -0
  94. package/src/components/shared/mobile-page-base.css +315 -0
  95. package/src/components/shared/mobile-page-base.ts +70 -0
  96. package/src/components/swiper/ds-mobile-swiper.ts +123 -0
  97. package/src/components/swiper/index.ts +2 -0
  98. package/src/components/tab-bar/ds-mobile-tab-bar.ts +132 -0
  99. package/src/components/tab-bar/index.ts +2 -0
  100. package/src/components/tabs/ds-mobile-tabs.css +405 -0
  101. package/src/components/tabs/ds-mobile-tabs.ts +204 -0
  102. package/src/components/tabs/index.ts +2 -0
  103. package/src/pages/community.page.ts +768 -0
  104. package/src/pages/handbook.page.ts +298 -0
  105. package/src/pages/home.page.ts +192 -0
  106. package/src/pages/index.ts +9 -0
  107. package/src/pages/inquiries.example.ts +212 -0
  108. package/src/pages/inquiry-detail.example.css +434 -0
  109. package/src/pages/inquiry-detail.example.ts +416 -0
  110. package/src/pages/mobile-tabs-example.component.ts +146 -0
  111. package/src/pages/post-create.page.ts +311 -0
  112. package/src/pages/post-detail.page.ts +295 -0
  113. package/src/pages/whitelabel-demo.page.ts +548 -0
  114. package/src/public-api.ts +5 -0
  115. package/src/services/user.service.ts +35 -0
  116. package/src/services/whitelabel.service.ts +171 -0
  117. package/src/styles/ionic.css +673 -0
  118. package/tsconfig.lib.json +17 -0
  119. package/tsconfig.lib.prod.json +9 -0
  120. package/tsconfig.spec.json +13 -0
  121. package/fesm2022/propbinder-mobile-design.mjs +0 -8294
  122. package/fesm2022/propbinder-mobile-design.mjs.map +0 -1
  123. package/index.d.ts +0 -2860
@@ -0,0 +1,197 @@
1
+ import { Component, input, output } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DsAvatarComponent } from '@propbinder/design-system';
4
+ import { DsMobileListItemComponent } from '../list-item';
5
+
6
+ /**
7
+ * DsMobileInteractiveListItemMessageComponent
8
+ *
9
+ * Specialized interactive list item for displaying message threads.
10
+ * Built on top of ds-mobile-interactive-list-item base component.
11
+ * Displays message preview with sender info - simplified version without actions.
12
+ *
13
+ * @example
14
+ * ```html
15
+ * <ds-mobile-interactive-list-item-message
16
+ * [senderName]="'John Doe'"
17
+ * [senderRole]="'Tenant'"
18
+ * [timestamp]="'2h ago'"
19
+ * [message]="'Hey, when is the maintenance scheduled?'"
20
+ * [avatarInitials]="'JD'"
21
+ * [unread]="true"
22
+ * [clickable]="true"
23
+ * (messageClick)="openThread()">
24
+ * </ds-mobile-interactive-list-item-message>
25
+ * ```
26
+ */
27
+ @Component({
28
+ selector: 'ds-mobile-interactive-list-item-message',
29
+ standalone: true,
30
+ imports: [CommonModule, DsAvatarComponent, DsMobileListItemComponent],
31
+ styles: [`
32
+ :host {
33
+ display: block;
34
+ }
35
+
36
+ /* Hide divider on last child */
37
+ :host:last-child {
38
+ --divider-display: none;
39
+ --item-padding-bottom: 0;
40
+ }
41
+
42
+ .message-header {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: space-between;
46
+ }
47
+
48
+ .sender-details {
49
+ display: flex;
50
+ align-items: center;
51
+ gap: 6px;
52
+ flex: 1;
53
+ min-width: 0;
54
+ }
55
+
56
+ .sender-name {
57
+ font-family: 'Brockmann', sans-serif;
58
+ font-size: var(--font-size-sm);
59
+ font-weight: 600;
60
+ line-height: 20px;
61
+ letter-spacing: -0.3px;
62
+ color: var(--text-color-default-primary, #202227);
63
+ white-space: nowrap;
64
+ overflow: hidden;
65
+ text-overflow: ellipsis;
66
+ flex-shrink: 0;
67
+ }
68
+
69
+ .sender-meta {
70
+ font-family: 'Brockmann', sans-serif;
71
+ font-size: var(--font-size-xs);
72
+ font-weight: 400;
73
+ line-height: 1.2;
74
+ letter-spacing: -0.26px;
75
+ color: var(--text-color-default-tertiary, #737373);
76
+ white-space: nowrap;
77
+ overflow: hidden;
78
+ text-overflow: ellipsis;
79
+ flex-shrink: 1;
80
+ }
81
+
82
+ .unread-indicator {
83
+ width: 8px;
84
+ height: 8px;
85
+ border-radius: 50%;
86
+ background: var(--color-brand-primary, #5d5fef);
87
+ flex-shrink: 0;
88
+ }
89
+
90
+ .message-preview {
91
+ font-family: 'Brockmann', sans-serif;
92
+ font-size: var(--font-size-sm);
93
+ font-weight: 400;
94
+ line-height: 20px;
95
+ letter-spacing: -0.3px;
96
+ color: var(--text-color-default-secondary, #545B66);
97
+ margin: 0;
98
+ display: -webkit-box;
99
+ -webkit-line-clamp: 2;
100
+ -webkit-box-orient: vertical;
101
+ overflow: hidden;
102
+ text-overflow: ellipsis;
103
+ }
104
+ `],
105
+ template: `
106
+ <ds-mobile-list-item
107
+ [leadingSize]="'32px'"
108
+ [variant]="'feed'"
109
+ [interactive]="clickable()"
110
+ (itemClick)="handleMessageClick()"
111
+ (longPress)="handleLongPress()">
112
+
113
+ <div content-leading>
114
+ <ds-avatar
115
+ [initials]="avatarInitials()"
116
+ [type]="avatarType()"
117
+ [src]="avatarSrc()"
118
+ size="md" />
119
+ </div>
120
+
121
+ <div content-main>
122
+ <div class="message-header">
123
+ <div class="sender-details">
124
+ <span class="sender-name">{{ senderName() }}</span>
125
+ <span class="sender-meta">{{ senderRole() }}</span>
126
+ </div>
127
+
128
+ @if (unread()) {
129
+ <div class="unread-indicator"></div>
130
+ }
131
+ </div>
132
+
133
+ <p class="message-preview">{{ message() }}</p>
134
+ </div>
135
+ </ds-mobile-list-item>
136
+ `
137
+ })
138
+ export class DsMobileInteractiveListItemMessageComponent {
139
+ /**
140
+ * Sender's display name
141
+ */
142
+ senderName = input.required<string>();
143
+
144
+ /**
145
+ * Sender's role (e.g., "Tenant", "Property Manager")
146
+ */
147
+ senderRole = input.required<string>();
148
+
149
+ /**
150
+ * Message preview text
151
+ */
152
+ message = input.required<string>();
153
+
154
+ /**
155
+ * Avatar initials (for initials type)
156
+ */
157
+ avatarInitials = input<string>('');
158
+
159
+ /**
160
+ * Avatar type
161
+ */
162
+ avatarType = input<'initials' | 'photo' | 'icon'>('initials');
163
+
164
+ /**
165
+ * Avatar photo source (for photo type)
166
+ */
167
+ avatarSrc = input<string>('');
168
+
169
+ /**
170
+ * Whether the message is unread
171
+ */
172
+ unread = input<boolean>(false);
173
+
174
+ /**
175
+ * Whether the message item is clickable
176
+ */
177
+ clickable = input<boolean>(true);
178
+
179
+ /**
180
+ * Emits when the message item is clicked
181
+ */
182
+ messageClick = output<void>();
183
+
184
+ /**
185
+ * Emits when the message item is long-pressed
186
+ */
187
+ longPress = output<void>();
188
+
189
+ handleMessageClick(): void {
190
+ this.messageClick.emit();
191
+ }
192
+
193
+ handleLongPress(): void {
194
+ this.longPress.emit();
195
+ }
196
+ }
197
+
@@ -0,0 +1,2 @@
1
+ export { DsMobileInteractiveListItemMessageComponent } from './ds-mobile-interactive-list-item-message';
2
+
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Interactive List Item Post Styles
3
+ * Styles specific to post list items
4
+ */
5
+
6
+ /* Author Details Container */
7
+ :root .author-details,
8
+ .author-details {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 2px;
12
+ min-width: 0;
13
+ flex: 1;
14
+ }
15
+
16
+ /* Author Name */
17
+ :root .author-name,
18
+ .author-name {
19
+ font-family: 'Brockmann', sans-serif;
20
+ font-size: var(--font-size-sm);
21
+ font-weight: 600;
22
+ line-height: 20px;
23
+ letter-spacing: -0.3px;
24
+ color: var(--text-color-default-primary, #202227);
25
+ white-space: nowrap;
26
+ overflow: hidden;
27
+ text-overflow: ellipsis;
28
+ }
29
+
30
+ /* Author Meta (role, timestamp, etc.) */
31
+ :root .author-meta,
32
+ .author-meta {
33
+ font-family: 'Brockmann', sans-serif;
34
+ font-size: var(--font-size-xs);
35
+ font-weight: 400;
36
+ line-height: 1.2;
37
+ letter-spacing: -0.26px;
38
+ color: var(--text-color-default-tertiary, #626B78);
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 6px;
42
+ }
43
+
44
+ :root .author-meta .separator,
45
+ .author-meta .separator {
46
+ color: var(--text-color-default-tertiary, #626B78);
47
+ }
48
+
49
+ /* Variants for lightbox/overlay contexts (white text on dark bg) */
50
+ :root .lightbox-context .author-name,
51
+ .lightbox-context .author-name,
52
+ :root .overlay-context .author-name,
53
+ .overlay-context .author-name {
54
+ color: rgba(255, 255, 255, 0.95);
55
+ }
56
+
57
+ :root .lightbox-context .author-meta,
58
+ .lightbox-context .author-meta,
59
+ :root .overlay-context .author-meta,
60
+ .overlay-context .author-meta {
61
+ color: rgba(255, 255, 255, 0.7);
62
+ }
63
+
64
+ :root .lightbox-context .author-meta .separator,
65
+ .lightbox-context .author-meta .separator,
66
+ :root .overlay-context .author-meta .separator,
67
+ .overlay-context .author-meta .separator {
68
+ color: rgba(255, 255, 255, 0.5);
69
+ }
70
+