@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,375 @@
1
+ /**
2
+ * Mobile Lightbox PDF Viewer Styles
3
+ * PDF preview and native viewer launcher
4
+ */
5
+
6
+ @import '../shared/mobile-common.css';
7
+
8
+ :host {
9
+ display: block;
10
+ height: 100%;
11
+ width: 100%;
12
+ }
13
+
14
+ /* ============================================
15
+ CONTENT AREA
16
+ ============================================ */
17
+ .lightbox-content.pdf-viewer {
18
+ --background: rgba(0, 0, 0, 1);
19
+ display: block;
20
+ height: 100vh;
21
+ width: 100vw;
22
+ position: absolute;
23
+ top: 0;
24
+ left: 0;
25
+ right: 0;
26
+ bottom: 0;
27
+ }
28
+
29
+ .lightbox-content.pdf-viewer::part(scroll) {
30
+ display: flex;
31
+ flex-direction: column;
32
+ height: 100%;
33
+ overflow: hidden;
34
+ }
35
+
36
+ .lightbox-wrapper {
37
+ position: absolute;
38
+ top: 0;
39
+ left: 0;
40
+ right: 0;
41
+ bottom: 0;
42
+ display: flex;
43
+ flex-direction: column;
44
+ width: 100%;
45
+ height: 100%;
46
+ }
47
+
48
+ /* ============================================
49
+ HEADER (SHARED STYLES)
50
+ ============================================ */
51
+ .lightbox-header {
52
+ position: fixed;
53
+ top: 0;
54
+ left: 0;
55
+ right: 0;
56
+ z-index: 1000;
57
+ padding: 12px 16px;
58
+ display: flex;
59
+ flex-direction: column;
60
+ gap: 8px;
61
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.4) 80%, transparent 100%);
62
+ pointer-events: none;
63
+ }
64
+
65
+ .header-actions {
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: space-between;
69
+ gap: 8px;
70
+ pointer-events: auto;
71
+ }
72
+
73
+ .share-button,
74
+ .close-button {
75
+ pointer-events: auto;
76
+ flex-shrink: 0;
77
+ border-radius: 50%;
78
+ }
79
+
80
+ .share-button::ng-deep button,
81
+ .close-button::ng-deep button {
82
+ color: white !important;
83
+ background: rgba(255, 255, 255, 0.1) !important;
84
+ border-radius: 50%;
85
+ transition: background 0.2s ease;
86
+ border: none;
87
+ width: 36px !important;
88
+ height: 36px !important;
89
+ min-width: 36px !important;
90
+ min-height: 36px !important;
91
+ padding: 0 !important;
92
+ display: flex !important;
93
+ align-items: center !important;
94
+ justify-content: center !important;
95
+ }
96
+
97
+ .share-button::ng-deep button:hover,
98
+ .close-button::ng-deep button:hover {
99
+ background: rgba(255, 255, 255, 0.15) !important;
100
+ }
101
+
102
+ .share-button::ng-deep button:disabled {
103
+ opacity: 0.5 !important;
104
+ cursor: not-allowed !important;
105
+ }
106
+
107
+ .share-button::ng-deep svg,
108
+ .close-button::ng-deep svg {
109
+ color: white !important;
110
+ fill: white !important;
111
+ }
112
+
113
+ /* Safe area support for notched devices */
114
+ @supports (padding-top: env(safe-area-inset-top)) {
115
+ .lightbox-header {
116
+ padding-top: calc(16px + env(safe-area-inset-top));
117
+ }
118
+ }
119
+
120
+ /* ============================================
121
+ PDF CONTAINER
122
+ ============================================ */
123
+ .pdf-container {
124
+ position: absolute;
125
+ top: 0;
126
+ left: 0;
127
+ right: 0;
128
+ bottom: 0;
129
+ display: flex;
130
+ flex-direction: column;
131
+ align-items: center;
132
+ justify-content: center;
133
+ padding: 100px 24px 24px;
134
+ overflow-y: auto;
135
+ -webkit-overflow-scrolling: touch;
136
+ }
137
+
138
+ /* ============================================
139
+ PDF CONTENT (Aligned with post-pdf-attachment)
140
+ ============================================ */
141
+ .pdf-content {
142
+ display: flex;
143
+ flex-direction: column;
144
+ align-items: center;
145
+ justify-content: center;
146
+ text-align: center;
147
+ max-width: 400px;
148
+ width: 100%;
149
+ gap: 16px;
150
+ }
151
+
152
+ /* Match the red avatar color from post-pdf-attachment */
153
+ .pdf-content::ng-deep .avatar--icon {
154
+ background-color: #ff5757 !important;
155
+ }
156
+
157
+ .pdf-title {
158
+ font-family: 'Brockmann', sans-serif;
159
+ font-size: var(--font-size-xl);
160
+ font-weight: 600;
161
+ line-height: 1.3;
162
+ letter-spacing: -0.3px;
163
+ color: white;
164
+ margin: 0;
165
+ word-break: break-word;
166
+ }
167
+
168
+ .pdf-meta {
169
+ font-family: 'Brockmann', sans-serif;
170
+ font-size: var(--font-size-sm);
171
+ font-weight: 400;
172
+ line-height: 1.2;
173
+ letter-spacing: -0.26px;
174
+ color: rgba(255, 255, 255, 0.6);
175
+ text-transform: uppercase;
176
+ }
177
+
178
+ .open-pdf-button {
179
+ margin-top: 16px;
180
+ }
181
+
182
+ /* Style the open button to match the footer action buttons */
183
+ .open-pdf-button::ng-deep button {
184
+ background: rgba(255, 255, 255, 0.1) !important;
185
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
186
+ border-radius: 100px !important;
187
+ color: white !important;
188
+ backdrop-filter: blur(10px);
189
+ -webkit-backdrop-filter: blur(10px);
190
+ transition: all 0.2s ease;
191
+ padding: 16px 16px !important;
192
+ }
193
+
194
+ .open-pdf-button::ng-deep button:hover {
195
+ background: rgba(255, 255, 255, 0.2) !important;
196
+ transform: scale(1.02);
197
+ }
198
+
199
+ .open-pdf-button::ng-deep button:active {
200
+ transform: scale(0.98);
201
+ }
202
+
203
+ /* ============================================
204
+ LOADING STATE
205
+ ============================================ */
206
+ .loading-state {
207
+ display: flex;
208
+ flex-direction: column;
209
+ align-items: center;
210
+ justify-content: center;
211
+ gap: 20px;
212
+ padding: 40px;
213
+ }
214
+
215
+ .loading-state ion-spinner {
216
+ --color: rgba(255, 255, 255, 0.8);
217
+ width: 48px;
218
+ height: 48px;
219
+ }
220
+
221
+ .loading-state p {
222
+ font-family: 'Brockmann', sans-serif;
223
+ font-size: var(--font-size-base);
224
+ font-weight: 500;
225
+ color: rgba(255, 255, 255, 0.8);
226
+ margin: 0;
227
+ }
228
+
229
+ /* ============================================
230
+ ERROR STATE
231
+ ============================================ */
232
+ .error-state {
233
+ display: flex;
234
+ flex-direction: column;
235
+ align-items: center;
236
+ justify-content: center;
237
+ text-align: center;
238
+ padding: 40px;
239
+ max-width: 400px;
240
+ }
241
+
242
+ .error-state svg {
243
+ color: rgba(255, 100, 100, 0.8);
244
+ margin-bottom: 24px;
245
+ }
246
+
247
+ .error-state h3 {
248
+ font-family: 'Brockmann', sans-serif;
249
+ font-size: var(--font-size-xl);
250
+ font-weight: 600;
251
+ color: white;
252
+ margin: 0 0 12px 0;
253
+ }
254
+
255
+ .error-state p {
256
+ font-family: 'Brockmann', sans-serif;
257
+ font-size: var(--font-size-base);
258
+ font-weight: 400;
259
+ line-height: 1.5;
260
+ color: rgba(255, 255, 255, 0.7);
261
+ margin: 0 0 24px 0;
262
+ }
263
+
264
+ .retry-button {
265
+ padding: 12px 24px;
266
+ background: rgba(255, 255, 255, 0.1);
267
+ border: 1px solid rgba(255, 255, 255, 0.2);
268
+ border-radius: 8px;
269
+ color: white;
270
+ font-family: 'Brockmann', sans-serif;
271
+ font-size: var(--font-size-sm);
272
+ font-weight: 600;
273
+ cursor: pointer;
274
+ transition: all 0.2s ease;
275
+ }
276
+
277
+ .retry-button:hover {
278
+ background: rgba(255, 255, 255, 0.15);
279
+ border-color: rgba(255, 255, 255, 0.3);
280
+ }
281
+
282
+ /* ============================================
283
+ AUTHOR INFO
284
+ ============================================ */
285
+ .pdf-author-info {
286
+ position: fixed;
287
+ bottom: 20px;
288
+ left: 20px;
289
+ right: 20px;
290
+ display: flex;
291
+ align-items: center;
292
+ gap: 12px;
293
+ padding: 16px;
294
+ background: rgba(0, 0, 0, 0.7);
295
+ border-radius: 12px;
296
+ backdrop-filter: blur(10px);
297
+ -webkit-backdrop-filter: blur(10px);
298
+ z-index: 50;
299
+ }
300
+
301
+ .author-details {
302
+ display: flex;
303
+ flex-direction: column;
304
+ gap: 2px;
305
+ min-width: 0;
306
+ flex: 1;
307
+ }
308
+
309
+ /* Author styles inherit from mobile-common.css with lightbox overrides */
310
+ .author-name {
311
+ color: white;
312
+ }
313
+
314
+ .author-meta {
315
+ color: rgba(255, 255, 255, 0.7);
316
+ }
317
+
318
+ .author-meta .separator {
319
+ color: rgba(255, 255, 255, 0.5);
320
+ }
321
+
322
+ /* Safe area support */
323
+ @supports (padding-bottom: env(safe-area-inset-bottom)) {
324
+ .pdf-author-info {
325
+ bottom: calc(20px + env(safe-area-inset-bottom));
326
+ }
327
+
328
+ .pdf-container {
329
+ padding-bottom: calc(120px + env(safe-area-inset-bottom));
330
+ }
331
+ }
332
+
333
+ /* ============================================
334
+ DESKTOP STYLES
335
+ ============================================ */
336
+ @media (min-width: 768px) {
337
+ .lightbox-header {
338
+ padding: 24px;
339
+ }
340
+
341
+ .pdf-container {
342
+ padding: 120px 40px 40px;
343
+ }
344
+
345
+ .pdf-title {
346
+ font-size: var(--font-size-3xl);
347
+ }
348
+
349
+ .pdf-description {
350
+ font-size: var(--font-size-base);
351
+ }
352
+
353
+ .open-pdf-button {
354
+ padding: 18px 40px;
355
+ font-size: var(--font-size-lg);
356
+ }
357
+ }
358
+
359
+ /* ============================================
360
+ ACCESSIBILITY
361
+ ============================================ */
362
+ @media (prefers-reduced-motion: reduce) {
363
+ .open-pdf-button,
364
+ .retry-button {
365
+ transition: none;
366
+ }
367
+ }
368
+
369
+ /* Focus visible for keyboard navigation */
370
+ .open-pdf-button:focus-visible,
371
+ .retry-button:focus-visible {
372
+ outline: 2px solid white;
373
+ outline-offset: 2px;
374
+ }
375
+