@propbinder/mobile-design 0.0.2 → 0.0.22

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/fesm2022/propbinder-mobile-design.mjs +12604 -0
  2. package/fesm2022/propbinder-mobile-design.mjs.map +1 -0
  3. package/index.d.ts +3214 -0
  4. package/package.json +39 -12
  5. package/ng-package.json +0 -7
  6. package/src/animations/page-transitions.ts +0 -86
  7. package/src/assets/fonts/Brockmann-Bold.otf +0 -0
  8. package/src/assets/fonts/Brockmann-BoldItalic.otf +0 -0
  9. package/src/assets/fonts/Brockmann-Medium.otf +0 -0
  10. package/src/assets/fonts/Brockmann-MediumItalic.otf +0 -0
  11. package/src/assets/fonts/Brockmann-Regular.otf +0 -0
  12. package/src/assets/fonts/Brockmann-RegularItalic.otf +0 -0
  13. package/src/assets/fonts/Brockmann-SemiBold.otf +0 -0
  14. package/src/assets/fonts/Brockmann-SemiBoldItalic.otf +0 -0
  15. package/src/assets/fonts/Brockmann_desktop_license.pdf +0 -0
  16. package/src/assets/fonts/brockmann-medium-webfont.woff2 +0 -0
  17. package/src/assets/fonts/brockmann-regular-webfont.woff2 +0 -0
  18. package/src/assets/fonts/brockmann-semibold-webfont.woff2 +0 -0
  19. package/src/components/action-list-item/ds-mobile-action-list-item.ts +0 -83
  20. package/src/components/action-list-item/index.ts +0 -2
  21. package/src/components/app-layout/ds-mobile-app-layout.css +0 -343
  22. package/src/components/app-layout/ds-mobile-app-layout.ts +0 -271
  23. package/src/components/app-layout/index.ts +0 -2
  24. package/src/components/avatar-with-badge/ds-avatar-with-badge.ts +0 -130
  25. package/src/components/avatar-with-badge/index.ts +0 -2
  26. package/src/components/bottom-sheet/ds-mobile-actions-bottom-sheet.ts +0 -273
  27. package/src/components/bottom-sheet/ds-mobile-bottom-sheet.css +0 -110
  28. package/src/components/bottom-sheet/ds-mobile-bottom-sheet.service.ts +0 -167
  29. package/src/components/bottom-sheet/ds-mobile-post-create-bottom-sheet.ts +0 -656
  30. package/src/components/bottom-sheet/index.ts +0 -3
  31. package/src/components/comment/ds-mobile-comment.ts +0 -516
  32. package/src/components/comment/index.ts +0 -2
  33. package/src/components/contact-list-item/ds-mobile-contact-list-item.ts +0 -182
  34. package/src/components/contact-list-item/index.ts +0 -2
  35. package/src/components/content/ds-mobile-content.ts +0 -158
  36. package/src/components/content/index.ts +0 -2
  37. package/src/components/ds-mobile-tabs.css +0 -372
  38. package/src/components/ds-mobile-tabs.ts +0 -217
  39. package/src/components/file-attachment/ds-mobile-file-attachment.ts +0 -164
  40. package/src/components/file-attachment/index.ts +0 -2
  41. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.service.ts +0 -98
  42. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.ts +0 -514
  43. package/src/components/handbook-detail-modal/index.ts +0 -3
  44. package/src/components/handbook-folder/ds-mobile-handbook-folder-mini.ts +0 -130
  45. package/src/components/handbook-folder/ds-mobile-handbook-folder.ts +0 -444
  46. package/src/components/handbook-folder/index.ts +0 -4
  47. package/src/components/header-content/ds-mobile-header-content.ts +0 -211
  48. package/src/components/header-content/index.ts +0 -2
  49. package/src/components/index.ts +0 -45
  50. package/src/components/inline-photo/ds-mobile-inline-photo.ts +0 -269
  51. package/src/components/inline-photo/index.ts +0 -1
  52. package/src/components/interactive-list-item-inquiry/ds-mobile-interactive-list-item-inquiry.css +0 -60
  53. package/src/components/interactive-list-item-inquiry/ds-mobile-interactive-list-item-inquiry.ts +0 -280
  54. package/src/components/interactive-list-item-inquiry/index.ts +0 -2
  55. package/src/components/interactive-list-item-message/ds-mobile-interactive-list-item-message.ts +0 -197
  56. package/src/components/interactive-list-item-message/index.ts +0 -2
  57. package/src/components/interactive-list-item-post/ds-mobile-interactive-list-item-post.css +0 -70
  58. package/src/components/interactive-list-item-post/ds-mobile-interactive-list-item-post.ts +0 -594
  59. package/src/components/interactive-list-item-post/ds-mobile-post-pdf-attachment.ts +0 -124
  60. package/src/components/interactive-list-item-post/index.ts +0 -13
  61. package/src/components/lightbox/ds-mobile-lightbox-footer.ts +0 -331
  62. package/src/components/lightbox/ds-mobile-lightbox-header.ts +0 -173
  63. package/src/components/lightbox/ds-mobile-lightbox-image.ts +0 -464
  64. package/src/components/lightbox/ds-mobile-lightbox-pdf.css +0 -375
  65. package/src/components/lightbox/ds-mobile-lightbox-pdf.ts +0 -374
  66. package/src/components/lightbox/ds-mobile-lightbox.css +0 -587
  67. package/src/components/lightbox/ds-mobile-lightbox.service.ts +0 -293
  68. package/src/components/lightbox/ds-mobile-lightbox.ts +0 -529
  69. package/src/components/lightbox/index.ts +0 -22
  70. package/src/components/list-item/ds-mobile-list-item.ts +0 -499
  71. package/src/components/list-item/index.ts +0 -2
  72. package/src/components/list-item-static/ds-mobile-list-item-static.ts +0 -133
  73. package/src/components/list-item-static/index.ts +0 -2
  74. package/src/components/logo/ds-logo.ts +0 -85
  75. package/src/components/logo/index.ts +0 -2
  76. package/src/components/modal/ds-mobile-modal.css +0 -163
  77. package/src/components/modal/ds-mobile-modal.service.ts +0 -329
  78. package/src/components/modal/index.ts +0 -8
  79. package/src/components/page-details/ds-mobile-page-details.css +0 -285
  80. package/src/components/page-details/ds-mobile-page-details.ts +0 -128
  81. package/src/components/page-details/index.ts +0 -2
  82. package/src/components/page-main/ds-mobile-page-main.css +0 -346
  83. package/src/components/page-main/ds-mobile-page-main.ts +0 -331
  84. package/src/components/page-main/index.ts +0 -2
  85. package/src/components/post-card/ds-mobile-post-card.ts +0 -685
  86. package/src/components/post-card/ds-mobile-post-pdf-attachment.ts +0 -124
  87. package/src/components/post-card/index.ts +0 -11
  88. package/src/components/post-composer/ds-mobile-post-composer.ts +0 -140
  89. package/src/components/post-composer/index.ts +0 -2
  90. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.service.ts +0 -104
  91. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.ts +0 -1273
  92. package/src/components/post-detail-modal/index.ts +0 -9
  93. package/src/components/shared/directives/index.ts +0 -2
  94. package/src/components/shared/directives/long-press.directive.ts +0 -208
  95. package/src/components/shared/index.ts +0 -3
  96. package/src/components/shared/mobile-common.css +0 -94
  97. package/src/components/shared/mobile-page-base.css +0 -315
  98. package/src/components/shared/mobile-page-base.ts +0 -70
  99. package/src/components/swiper/ds-mobile-swiper.ts +0 -123
  100. package/src/components/swiper/index.ts +0 -2
  101. package/src/components/tab-bar/ds-mobile-tab-bar.ts +0 -132
  102. package/src/components/tab-bar/index.ts +0 -2
  103. package/src/components/tabs/ds-mobile-tabs.css +0 -405
  104. package/src/components/tabs/ds-mobile-tabs.ts +0 -204
  105. package/src/components/tabs/index.ts +0 -2
  106. package/src/pages/community.page.ts +0 -768
  107. package/src/pages/handbook.page.ts +0 -298
  108. package/src/pages/home.page.ts +0 -192
  109. package/src/pages/index.ts +0 -9
  110. package/src/pages/inquiries.example.ts +0 -212
  111. package/src/pages/inquiry-detail.example.css +0 -434
  112. package/src/pages/inquiry-detail.example.ts +0 -416
  113. package/src/pages/mobile-tabs-example.component.ts +0 -146
  114. package/src/pages/post-create.page.ts +0 -311
  115. package/src/pages/post-detail.page.ts +0 -295
  116. package/src/pages/whitelabel-demo.page.ts +0 -548
  117. package/src/public-api.ts +0 -5
  118. package/src/services/user.service.ts +0 -35
  119. package/src/services/whitelabel.service.ts +0 -171
  120. package/src/styles/ionic.css +0 -673
  121. package/tsconfig.lib.json +0 -17
  122. package/tsconfig.lib.prod.json +0 -9
  123. package/tsconfig.spec.json +0 -13
@@ -1,444 +0,0 @@
1
- import { Component, Input, signal, HostListener } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { DsIconComponent } from '@propbinder/design-system';
4
- import { DsMobileHandbookDetailModalService, HandbookDetailData, HandbookItem } from '../handbook-detail-modal';
5
-
6
- /**
7
- * DsMobileHandbookFolderComponent
8
- *
9
- * A visually rich folder component for displaying handbook categories or sections.
10
- * Features a two-layer folder design with customizable colors, icon, item count, and label.
11
- *
12
- * Design Details:
13
- * - Folder back: 72px height with a decorative notch
14
- * - Folder front: 64px height overlaying the back
15
- * - Item count displayed in bottom-left corner
16
- * - Icon displayed in bottom-right corner
17
- * - Label text centered below the folder
18
- *
19
- * @example
20
- * ```html
21
- * <ds-mobile-handbook-folder
22
- * [colorBase]="'#d244cf'"
23
- * [colorWeak]="'#f9e6f9'"
24
- * [iconName]="'remixLightbulbLine'"
25
- * [itemCount]="8"
26
- * [label]="'Utilities'">
27
- * </ds-mobile-handbook-folder>
28
- * ```
29
- */
30
- @Component({
31
- selector: 'ds-mobile-handbook-folder',
32
- standalone: true,
33
- imports: [CommonModule, DsIconComponent],
34
- styles: [`
35
- :host {
36
- display: inline-flex;
37
- flex-direction: column;
38
- align-items: center;
39
- gap: 16px;
40
- cursor: pointer;
41
- user-select: none;
42
- -webkit-tap-highlight-color: transparent;
43
- padding: 16px;
44
- border-radius: 16px;
45
- background: var(--color-background-neutral-secondary, #f0f0f0);
46
- transition: background 0.2s ease;
47
- }
48
-
49
- :host:active {
50
- background: var(--color-background-neutral-secondary-hover, #ebebeb);
51
- }
52
-
53
- @media (hover: hover) {
54
- :host:hover {
55
- background: var(--color-background-neutral-secondary-hover, #ebebeb);
56
- }
57
- }
58
-
59
- .folder-container {
60
- position: relative;
61
- width: 100%;
62
- display: flex;
63
- flex-direction: column;
64
- perspective: 800px;
65
- -webkit-perspective: 800px;
66
- max-width: 160px;
67
- /* Safari optimization: Ensure proper 3D rendering context */
68
- transform-style: preserve-3d;
69
- -webkit-transform-style: preserve-3d;
70
- }
71
-
72
- .folder-container.open .page-sheet {
73
- -webkit-transform: translateY(-8px);
74
- transform: translateY(-8px);
75
- transition-delay: 0.2s;
76
- }
77
-
78
- .folder-container.open .page-sheet:nth-child(1) {
79
- -webkit-transform: scale(1) translateY(-8px) rotateX(-45deg) translateZ(0.1px);
80
- transform: scale(1) translateY(-8px) rotateX(-45deg) translateZ(0.1px);
81
- }
82
-
83
- .folder-container.open .page-sheet:nth-child(2) {
84
- -webkit-transform: scale(0.98) translateY(-12px) rotateX(-36deg) translateZ(0.1px);
85
- transform: scale(0.98) translateY(-12px) rotateX(-36deg) translateZ(0.1px);
86
- }
87
-
88
- .folder-container.open .page-sheet:nth-child(3) {
89
- -webkit-transform: scale(0.96) translateY(-16px) rotateX(-27deg) translateZ(0.1px);
90
- transform: scale(0.96) translateY(-16px) rotateX(-27deg) translateZ(0.1px);
91
- }
92
-
93
- .folder-container.open .page-sheet:nth-child(4) {
94
- -webkit-transform: scale(0.94) translateY(-20px) rotateX(-18deg) translateZ(0.1px);
95
- transform: scale(0.94) translateY(-20px) rotateX(-18deg) translateZ(0.1px);
96
- }
97
-
98
- .folder-container.open .page-sheet:nth-child(5) {
99
- -webkit-transform: scale(0.92) translateY(-24px) rotateX(-9deg) translateZ(0.1px);
100
- transform: scale(0.92) translateY(-24px) rotateX(-9deg) translateZ(0.1px);
101
- }
102
-
103
- .folder-container.open .page-sheet:nth-child(6) {
104
- -webkit-transform: scale(0.90) translateY(-28px) rotateX(0deg) translateZ(0.1px);
105
- transform: scale(0.90) translateY(-28px) rotateX(0.1px);
106
- }
107
-
108
- .folder-container.open .folder-front {
109
- -webkit-transform: translate3d(0, 0, 0) rotateX(-45deg);
110
- transform: translate3d(0, 0, 0) rotateX(-45deg);
111
- }
112
-
113
- .folder-tab {
114
- width: 50%;
115
- height: auto;
116
- display: block;
117
- }
118
-
119
- .folder-back {
120
- height: 128px;
121
- border-radius: 0px 12px 12px 12px;
122
- position: relative;
123
- margin-top: -1px;
124
- transform-style: preserve-3d;
125
- -webkit-transform-style: preserve-3d;
126
- backface-visibility: hidden;
127
- -webkit-backface-visibility: hidden;
128
- /* Safari optimization: Force GPU acceleration */
129
- -webkit-transform: translateZ(0);
130
- transform: translateZ(0);
131
- }
132
-
133
- .page-sheet {
134
- position: absolute;
135
- width: 80%;
136
- height: 120px;
137
- background: #ffffff;
138
- border-radius: 8px;
139
- box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.1);
140
- border: 1px solid var(--border-color-default);
141
- transition: transform 0.3s ease-out;
142
- -webkit-transition: -webkit-transform 0.3s ease-out;
143
- left: 10%;
144
- /* Safari optimization: Force hardware acceleration and proper 3D rendering */
145
- -webkit-transform: translateZ(0);
146
- transform: translateZ(0);
147
- transform-style: preserve-3d;
148
- -webkit-transform-style: preserve-3d;
149
- backface-visibility: hidden;
150
- -webkit-backface-visibility: hidden;
151
- /* Safari optimization: Prevent subpixel rendering issues */
152
- -webkit-font-smoothing: antialiased;
153
- /* Safari optimization: Ensure proper layer creation */
154
- will-change: transform;
155
- }
156
-
157
- .page-sheet:nth-child(1) {
158
- bottom: 2px;
159
- z-index: 6;
160
- transform-origin: bottom center;
161
- -webkit-transform-origin: bottom center;
162
- -webkit-transform: scale(1) translateZ(0.1px);
163
- transform: scale(1) translateZ(0.1px);
164
- }
165
-
166
- .page-sheet:nth-child(2) {
167
- bottom: 8px;
168
- z-index: 5;
169
- transform-origin: bottom center;
170
- -webkit-transform-origin: bottom center;
171
- -webkit-transform: scale(0.98) translateZ(0.1px);
172
- transform: scale(0.98) translateZ(0.1px);
173
- }
174
-
175
- .page-sheet:nth-child(3) {
176
- bottom: 14px;
177
- z-index: 4;
178
- transform-origin: bottom center;
179
- -webkit-transform-origin: bottom center;
180
- -webkit-transform: scale(0.96) translateZ(0.1px);
181
- transform: scale(0.96) translateZ(0.1px);
182
- }
183
-
184
- .page-sheet:nth-child(4) {
185
- bottom: 20px;
186
- z-index: 3;
187
- transform-origin: bottom center;
188
- -webkit-transform-origin: bottom center;
189
- -webkit-transform: scale(0.94) translateZ(0.1px);
190
- transform: scale(0.94) translateZ(0.1px);
191
- }
192
-
193
- .page-sheet:nth-child(5) {
194
- bottom: 26px;
195
- z-index: 2;
196
- transform-origin: bottom center;
197
- -webkit-transform-origin: bottom center;
198
- -webkit-transform: scale(0.92) translateZ(0.1px);
199
- transform: scale(0.92) translateZ(0.1px);
200
- }
201
-
202
- .page-sheet:nth-child(6) {
203
- bottom: 32px;
204
- z-index: 1;
205
- transform-origin: bottom center;
206
- -webkit-transform-origin: bottom center;
207
- -webkit-transform: scale(0.90) translateZ(0.1px);
208
- transform: scale(0.90) translateZ(0.1px);
209
- }
210
-
211
- .folder-front {
212
- position: absolute;
213
- bottom: 0;
214
- left: 0;
215
- right: 0;
216
- height: 116px;
217
- border-radius: 12px;
218
- display: flex;
219
- align-items: center;
220
- justify-content: center;
221
- padding: 8px;
222
- z-index: 2;
223
- transform-origin: bottom center;
224
- -webkit-transform-origin: bottom center;
225
- transform-style: preserve-3d;
226
- -webkit-transform-style: preserve-3d;
227
- transition: transform 0.4s ease-in-out, -webkit-transform 0.4s ease-in-out;
228
- -webkit-transition: -webkit-transform 0.4s ease-in-out;
229
- will-change: transform;
230
- backface-visibility: hidden;
231
- -webkit-backface-visibility: hidden;
232
- -webkit-font-smoothing: antialiased;
233
- /* Safari optimization: Use more specific transform to avoid render glitches */
234
- -webkit-transform: rotateX(-20deg) translateZ(0.1px);
235
- transform: rotateX(-20deg) translateZ(0.1px);
236
- /* Safari optimization: Force layer creation for smoother animations */
237
- -webkit-transform: translate3d(0, 0, 0) rotateX(-20deg);
238
- transform: translate3d(0, 0, 0) rotateX(-20deg);
239
- box-shadow: inset 0 64px 48px rgba(255, 255, 255, 0.2),
240
- inset 0 2px 4px rgba(255, 255, 255, 0.3),
241
- inset 0 1px 1px rgba(255, 255, 255, 0.3);
242
- }
243
-
244
- .item-count {
245
- display: flex;
246
- align-items: center;
247
- gap: 4px;
248
- }
249
-
250
- .item-count-label {
251
- letter-spacing: 0.5px;
252
- }
253
-
254
- .folder-icon {
255
- display: flex;
256
- align-items: center;
257
- justify-content: center;
258
- }
259
-
260
- .folder-label-container {
261
- display: flex;
262
- flex-direction: column;
263
- align-items: center;
264
- gap: 4px;
265
- }
266
-
267
- .folder-label {
268
- text-align: center;
269
- }
270
- `],
271
- template: `
272
- <div class="folder-container"
273
- [class.open]="isOpen()">
274
- <!-- Folder Tab SVG -->
275
- <svg
276
- class="folder-tab"
277
- width="101"
278
- height="24"
279
- viewBox="0 0 101 24"
280
- fill="none"
281
- xmlns="http://www.w3.org/2000/svg">
282
- <path
283
- d="M100.037 23.9999L100.5 24L0 24.0001V10.7646C0 4.80853 4.91797 -0.0234985 11 -0.0196688L66.4213 -0.0322266C69.3519 -0.0115886 72.197 1.20548 74.2473 3.29947L90.6765 20.0951C93.1218 22.5925 96.5417 23.9999 100.037 23.9999Z"
284
- [attr.fill]="getColorVar('strong')"/>
285
- </svg>
286
-
287
- <!-- Folder Back -->
288
- <div class="folder-back" [style.background-color]="getColorVar('strong')">
289
- <!-- Page Sheets -->
290
- @for (sheet of getPageSheets(); track $index) {
291
- <div class="page-sheet"></div>
292
- }
293
-
294
- <!-- Folder Front -->
295
- <div
296
- class="folder-front"
297
- [style.--border-color]="getColorVar('strong')"
298
- [style.background-color]="getColorVar('base')">
299
- <!-- Icon (Centered) -->
300
- <div class="folder-icon">
301
- <ds-icon
302
- [name]="iconName"
303
- [size]="'32px'"
304
- [style.color]="'white'" />
305
- </div>
306
- </div>
307
- </div>
308
- </div>
309
-
310
- <!-- Label and Item Count -->
311
- <div class="folder-label-container">
312
- <div class="folder-label ui-sm-semiBold">{{ label }}</div>
313
- <div class="item-count ui-sm-regular" [style.color]="'var(--color-text-secondary, #6b7280)'">
314
- <span>{{ itemCount }}</span>
315
- <span class="item-count-label">emner</span>
316
- </div>
317
- </div>
318
- `
319
- })
320
- export class DsMobileHandbookFolderComponent {
321
- /**
322
- * Color variant for the folder
323
- * Available variants: success, warning, destructive, blue, light-purple, pink, salmon-orange, orange, lime-green, grey
324
- * Example: 'pink', 'success', 'blue'
325
- */
326
- @Input() variant: string = 'light-purple';
327
-
328
- /**
329
- * Icon name from the design system icon library
330
- * Example: 'remixLightbulbLine', 'remixFolder3Line'
331
- */
332
- @Input() iconName: string = 'remixFolder3Line';
333
-
334
- /**
335
- * Number of items in the folder
336
- */
337
- @Input() itemCount: number = 0;
338
-
339
- /**
340
- * Label text displayed below the folder
341
- */
342
- @Input() label: string = 'Folder';
343
-
344
- /**
345
- * Optional items data for the handbook folder
346
- */
347
- @Input() items?: HandbookItem[];
348
-
349
- /**
350
- * Track open/closed state for animation
351
- */
352
- isOpen = signal(false);
353
-
354
- /**
355
- * Get the CSS variable name for the color variant
356
- */
357
- getColorVar(suffix: 'base' | 'strong'): string {
358
- const variantMap: Record<string, string> = {
359
- 'success': 'success',
360
- 'warning': 'warning',
361
- 'destructive': 'destructive',
362
- 'blue': 'blue',
363
- 'light-purple': 'light-purple',
364
- 'pink': 'pink',
365
- 'salmon-orange': 'salmon-orange',
366
- 'orange': 'orange',
367
- 'lime-green': 'lime-green',
368
- 'grey': 'grey'
369
- };
370
-
371
- const colorName = variantMap[this.variant] || 'light-purple';
372
- return `var(--color-${colorName}-${suffix})`;
373
- }
374
-
375
- /**
376
- * Open folder animation
377
- */
378
- @HostListener('mouseenter')
379
- open(): void {
380
- this.isOpen.set(true);
381
- }
382
-
383
- /**
384
- * Close folder animation
385
- */
386
- @HostListener('mouseleave')
387
- close(): void {
388
- this.isOpen.set(false);
389
- }
390
-
391
- /**
392
- * Handle touch start - open animation
393
- */
394
- @HostListener('touchstart', ['$event'])
395
- onTouchStart(event: TouchEvent): void {
396
- this.isOpen.set(true);
397
- }
398
-
399
- /**
400
- * Handle touch end - close animation
401
- */
402
- @HostListener('touchend')
403
- onTouchEnd(): void {
404
- this.isOpen.set(false);
405
- }
406
-
407
- /**
408
- * Handle touch cancel - close animation
409
- */
410
- @HostListener('touchcancel')
411
- onTouchCancel(): void {
412
- this.isOpen.set(false);
413
- }
414
-
415
- /**
416
- * Handle click - open modal
417
- */
418
- @HostListener('click')
419
- async onClick(): Promise<void> {
420
- const handbookData: HandbookDetailData = {
421
- title: this.label,
422
- variant: this.variant,
423
- iconName: this.iconName,
424
- itemCount: this.itemCount,
425
- items: this.items
426
- };
427
-
428
- await this.handbookModal.open(handbookData);
429
- }
430
-
431
- /**
432
- * Calculate the number of page sheets to display
433
- * Max 6 sheets regardless of item count
434
- */
435
- getPageSheets(): number[] {
436
- const count = Math.min(this.itemCount, 6);
437
- return Array(count).fill(0);
438
- }
439
-
440
- constructor(
441
- private handbookModal: DsMobileHandbookDetailModalService
442
- ) {}
443
- }
444
-
@@ -1,4 +0,0 @@
1
- export { DsMobileHandbookFolderComponent } from './ds-mobile-handbook-folder';
2
- export { DsMobileHandbookFolderMiniComponent } from './ds-mobile-handbook-folder-mini';
3
-
4
-
@@ -1,211 +0,0 @@
1
- import { Component, input } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
-
4
- /**
5
- * DsMobileHeaderContentComponent
6
- *
7
- * Container for header content tiles - displays tiles in a responsive grid.
8
- * Used within the expandable header section of mobile pages to show
9
- * summary information like property details, statistics, etc.
10
- *
11
- * @example
12
- * ```html
13
- * <ds-mobile-header-content header-content>
14
- * <ds-mobile-header-content-tile>
15
- * <tile-icon>
16
- * <ds-icon name="remixHome4Line" />
17
- * </tile-icon>
18
- * <tile-content>
19
- * <tile-label>Area</tile-label>
20
- * <tile-value>120 m²</tile-value>
21
- * </tile-content>
22
- * </ds-mobile-header-content-tile>
23
- * </ds-mobile-header-content>
24
- * ```
25
- */
26
- @Component({
27
- selector: 'ds-mobile-header-content',
28
- standalone: true,
29
- imports: [CommonModule],
30
- styles: [`
31
- :host {
32
- display: grid;
33
- grid-template-columns: repeat(2, 1fr);
34
- gap: 12px;
35
- }
36
-
37
- @media (min-width: 768px) {
38
- :host {
39
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
40
- }
41
- }
42
- `],
43
- template: `<ng-content select="ds-mobile-header-content-tile" />`
44
- })
45
- export class DsMobileHeaderContentComponent {}
46
-
47
- /**
48
- * DsMobileHeaderContentTileComponent
49
- *
50
- * Individual tile for displaying summary information in the header.
51
- * Styled with purple background to match the mobile header theme.
52
- *
53
- * Must contain:
54
- * - `<tile-icon>` - Icon container (optional)
55
- * - `<tile-content>` - Label and value container
56
- *
57
- * @example
58
- * ```html
59
- * <ds-mobile-header-content-tile>
60
- * <tile-icon>
61
- * <ds-icon name="remixHome4Line" size="20px" color="#DFE4FF" />
62
- * </tile-icon>
63
- * <tile-content>
64
- * <tile-label>Rooms</tile-label>
65
- * <tile-value>3 rooms</tile-value>
66
- * </tile-content>
67
- * </ds-mobile-header-content-tile>
68
- * ```
69
- */
70
- @Component({
71
- selector: 'ds-mobile-header-content-tile',
72
- standalone: true,
73
- imports: [CommonModule],
74
- styles: [`
75
- :host {
76
- background: rgba(255, 255, 255, 0.05);
77
- border: 1px solid rgba(255, 255, 255, 0.1);
78
- border-radius: 12px;
79
- padding: 12px;
80
- display: flex;
81
- flex-direction: column;
82
- gap: 16px;
83
- }
84
- `],
85
- template: `
86
- <ng-content select="tile-icon" />
87
- <ng-content select="tile-content" />
88
- `
89
- })
90
- export class DsMobileHeaderContentTileComponent {}
91
-
92
- /**
93
- * TileIconComponent
94
- *
95
- * Semantic slot for tile icon with dark purple background.
96
- * Use within `ds-mobile-header-content-tile`.
97
- */
98
- @Component({
99
- selector: 'tile-icon',
100
- standalone: true,
101
- styles: [`
102
- :host {
103
- background: var(--color-brand-secondary);
104
- border-radius: 8px;
105
- width: 32px;
106
- height: 32px;
107
- display: flex;
108
- align-items: center;
109
- justify-content: center;
110
- flex-shrink: 0;
111
- }
112
- `],
113
- template: `<ng-content />`
114
- })
115
- export class TileIconComponent {}
116
-
117
- /**
118
- * TileContentComponent
119
- *
120
- * Semantic slot for tile content containing label and value.
121
- * Use within `ds-mobile-header-content-tile`.
122
- *
123
- * Contains:
124
- * - `<tile-label>` - Small label text
125
- * - `<tile-value>` - Large value text
126
- */
127
- @Component({
128
- selector: 'tile-content',
129
- standalone: true,
130
- styles: [`
131
- :host {
132
- display: flex;
133
- flex-direction: column;
134
- gap: 0;
135
- }
136
-
137
- ::ng-deep tile-label {
138
- font-family: 'Brockmann', sans-serif;
139
- font-size: var(--font-size-sm);
140
- font-weight: 400;
141
- line-height: 20px;
142
- letter-spacing: -0.56px;
143
- color: rgba(255, 255, 255, 0.8);
144
- display: block;
145
- }
146
-
147
- ::ng-deep tile-value {
148
- font-family: 'Brockmann', sans-serif;
149
- font-size: var(--font-size-lg);
150
- font-weight: 600;
151
- line-height: 26px;
152
- letter-spacing: -0.72px;
153
- color: #ffffff;
154
- display: block;
155
- }
156
- `],
157
- template: `
158
- <ng-content select="tile-label" />
159
- <ng-content select="tile-value" />
160
- `
161
- })
162
- export class TileContentComponent {}
163
-
164
- /**
165
- * TileLabelComponent
166
- *
167
- * Label text for tile content.
168
- * Use within `tile-content` inside `ds-mobile-header-content-tile`.
169
- */
170
- @Component({
171
- selector: 'tile-label',
172
- standalone: true,
173
- styles: [`
174
- :host {
175
- font-family: 'Brockmann', sans-serif;
176
- font-size: var(--font-size-sm);
177
- font-weight: 400;
178
- line-height: 20px;
179
- letter-spacing: -0.56px;
180
- color: rgba(255, 255, 255, 0.8);
181
- display: block;
182
- }
183
- `],
184
- template: `<ng-content />`
185
- })
186
- export class TileLabelComponent {}
187
-
188
- /**
189
- * TileValueComponent
190
- *
191
- * Value text for tile content.
192
- * Use within `tile-content` inside `ds-mobile-header-content-tile`.
193
- */
194
- @Component({
195
- selector: 'tile-value',
196
- standalone: true,
197
- styles: [`
198
- :host {
199
- font-family: 'Brockmann', sans-serif;
200
- font-size: var(--font-size-lg);
201
- font-weight: 600;
202
- line-height: 26px;
203
- letter-spacing: -0.72px;
204
- color: #ffffff;
205
- display: block;
206
- }
207
- `],
208
- template: `<ng-content />`
209
- })
210
- export class TileValueComponent {}
211
-
@@ -1,2 +0,0 @@
1
- export * from './ds-mobile-header-content';
2
-
@@ -1,45 +0,0 @@
1
- // Mobile Page Components
2
- export * from './page-main';
3
- export * from './page-details';
4
-
5
- // Mobile Content Components
6
- export * from './content';
7
- export * from './header-content';
8
-
9
- // Mobile Community Components
10
- export * from './post-card';
11
- export * from './comment';
12
- export * from './post-composer';
13
-
14
- // Mobile List Components
15
- export * from './list-item';
16
- export { DsMobileInteractiveListItemPostComponent, PostPdfAttachmentComponent } from './interactive-list-item-post';
17
- export { DsMobileInteractiveListItemInquiryComponent } from './interactive-list-item-inquiry';
18
- export { DsMobileInteractiveListItemMessageComponent } from './interactive-list-item-message';
19
- export { DsMobileContactListItemComponent } from './contact-list-item';
20
-
21
- // Mobile Layout Components
22
- export { DsMobileAppLayoutComponent, type HeaderVariant } from './app-layout';
23
- export { DsMobileTabsComponent, type TabConfig } from './tabs';
24
-
25
- // Mobile Bottom Sheet Components
26
- export * from './bottom-sheet';
27
-
28
- // Mobile Lightbox Components
29
- export * from './lightbox';
30
-
31
- // Mobile Inline Photo Component
32
- export * from './inline-photo';
33
-
34
- // Mobile Modal Service
35
- export * from './modal';
36
-
37
- // Mobile Post Detail Modal
38
- export * from './post-detail-modal';
39
-
40
- // Mobile Handbook Components
41
- export * from './handbook-folder';
42
-
43
-
44
- // Shared directives
45
- export * from './shared';