@propbinder/mobile-design 0.0.2 → 0.0.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.
Files changed (123) hide show
  1. package/fesm2022/propbinder-mobile-design.mjs +12596 -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,285 +0,0 @@
1
- /* ============================================
2
- DS MOBILE PAGE DETAILS
3
- Reusable mobile page component for detail/drill-down pages
4
- ============================================ */
5
-
6
- /* ============================================
7
- HOST
8
- ============================================ */
9
-
10
- :host {
11
- display: flex;
12
- flex-direction: column;
13
- height: 100%;
14
- }
15
-
16
- /* ============================================
17
- ION-HEADER - Back Button Header (Mobile)
18
- ============================================ */
19
-
20
- ion-header {
21
- background: var(--color-brand-secondary);
22
- box-shadow: none;
23
- height: 64px;
24
- }
25
-
26
- ion-header ion-toolbar {
27
- --background: var(--color-brand-secondary);
28
- --border-width: 0;
29
- --box-shadow: none;
30
- --padding-top: 0;
31
- --padding-bottom: 0;
32
- --padding-start: 0;
33
- --padding-end: 0;
34
- --min-height: 64px;
35
- height: 100%;
36
- min-height: 64px;
37
- padding: 0;
38
- }
39
-
40
- ion-header ion-toolbar::part(native) {
41
- height: 100%;
42
- min-height: 64px;
43
- padding: 0;
44
- }
45
-
46
- /* Hide mobile header on desktop */
47
- @media (min-width: 768px) {
48
- ion-header {
49
- display: none;
50
- }
51
- }
52
-
53
- /* ============================================
54
- HEADER BACK (Mobile)
55
- ============================================ */
56
-
57
- .header-back {
58
- display: flex;
59
- align-items: center;
60
- justify-content: space-between;
61
- padding: 12px 16px;
62
- background: var(--color-brand-secondary);
63
- position: relative;
64
- height: 100%;
65
- min-height: 64px;
66
- }
67
-
68
- .header-back .back-button {
69
- background: none;
70
- border: none;
71
- padding: 0;
72
- display: flex;
73
- align-items: center;
74
- justify-content: center;
75
- cursor: pointer;
76
- color: white;
77
- transition: opacity var(--transition-duration-fast) var(--ease-smooth);
78
- z-index: 10;
79
- }
80
-
81
- .header-back .back-button:hover {
82
- opacity: 0.8;
83
- }
84
-
85
- .header-back .back-button:active {
86
- opacity: 0.6;
87
- }
88
-
89
- .header-back .header-title {
90
- position: absolute;
91
- left: 50%;
92
- transform: translateX(-50%);
93
- font-size: var(--font-size-base);
94
- font-weight: 600;
95
- color: white;
96
- margin: 0;
97
- }
98
-
99
- /* ============================================
100
- DESKTOP HEADER (Above Content)
101
- ============================================ */
102
-
103
- .desktop-header {
104
- display: none;
105
- }
106
-
107
- @media (min-width: 768px) {
108
- .desktop-header {
109
- display: flex;
110
- align-items: center;
111
- gap: 16px;
112
- padding: 32px var(--content-padding-md) 24px var(--content-padding-md);
113
- max-width: calc(var(--content-max-width-md) + (var(--content-padding-md) * 2));
114
- margin: 0 auto;
115
- width: 100%;
116
- }
117
-
118
- .desktop-header .back-button {
119
- background: none;
120
- border: none;
121
- padding: 0;
122
- display: flex;
123
- align-items: center;
124
- justify-content: center;
125
- cursor: pointer;
126
- color: var(--text-color-default-primary);
127
- transition: opacity var(--transition-duration-fast) var(--ease-smooth);
128
- }
129
-
130
- .desktop-header .back-button:hover {
131
- opacity: 0.8;
132
- }
133
-
134
- .desktop-header .back-button:active {
135
- opacity: 0.6;
136
- }
137
-
138
- .desktop-header h1 {
139
- font-size: var(--font-size-2xl);
140
- font-weight: 600;
141
- margin: 0;
142
- color: var(--text-color-default-primary);
143
- }
144
- }
145
-
146
- @media (min-width: 992px) {
147
- .desktop-header {
148
- max-width: calc(var(--content-max-width-md) + (var(--content-padding-md) * 2));
149
- padding-left: var(--content-padding-lg);
150
- padding-right: var(--content-padding-lg);
151
- }
152
- }
153
-
154
- @media (min-width: 1440px) {
155
- .desktop-header {
156
- max-width: calc(var(--content-max-width-lg) + (var(--content-padding-lg) * 2));
157
- padding-left: var(--content-padding-xl);
158
- padding-right: var(--content-padding-xl);
159
- }
160
- }
161
-
162
- @media (min-width: 1768px) {
163
- .desktop-header {
164
- padding-left: var(--content-padding-2xl);
165
- padding-right: var(--content-padding-2xl);
166
- }
167
- }
168
-
169
- @media (min-width: 1920px) {
170
- .desktop-header {
171
- padding-left: var(--content-padding-3xl);
172
- padding-right: var(--content-padding-3xl);
173
- }
174
- }
175
-
176
- /* ============================================
177
- ION-CONTENT
178
- ============================================ */
179
-
180
- ion-content {
181
- --background: var(--color-background-neutral-primary);
182
- --padding-top: 0;
183
- --padding-start: 0;
184
- --padding-end: 0;
185
- --padding-bottom: 0;
186
- overflow: hidden;
187
- }
188
-
189
- /* Mobile: Start with full radius, then animate to flat bottom */
190
- @media (max-width: 767px) {
191
- ion-content {
192
- /* Start with fully rounded corners - 36px bottom radius for more prominent effect */
193
- border-radius: 24px 24px 36px 36px;
194
- /* Animate to flat bottom after a delay (matches page transition) */
195
- animation: bottomRadiusOut 0.6s ease 0.3s forwards;
196
- }
197
-
198
- /* Reverse animation when navigating back */
199
- :host(.navigating-back) ion-content {
200
- /* Start from flat bottom (the end state after forward animation) */
201
- /* Don't use !important here as it would block the animation from working */
202
- border-radius: 24px 24px 0 0;
203
- /* Animate back to fully rounded during the page transition */
204
- /* Duration and easing match the page transition for smooth visual effect */
205
- animation: bottomRadiusIn 0.8s cubic-bezier(0.36, 0.66, 0.04, 1) forwards !important;
206
- }
207
- }
208
-
209
- /* Animate bottom corners from rounded to flat (forward) */
210
- @keyframes bottomRadiusOut {
211
- from {
212
- border-radius: 24px 24px 36px 36px;
213
- }
214
- to {
215
- border-radius: 24px 24px 0 0;
216
- }
217
- }
218
-
219
- /* Animate bottom corners from flat to rounded (reverse) */
220
- @keyframes bottomRadiusIn {
221
- from {
222
- border-radius: 24px 24px 0 0;
223
- }
224
- to {
225
- border-radius: 24px 24px 36px 36px;
226
- }
227
- }
228
-
229
- /* Desktop: always flat bottom, no animation */
230
- @media (min-width: 768px) {
231
- ion-content {
232
- border-radius: 24px 24px 0 0;
233
- animation: none;
234
- }
235
- }
236
-
237
- ion-content::part(scroll) {
238
- -webkit-overflow-scrolling: touch;
239
- overscroll-behavior-y: none;
240
- }
241
-
242
- /* ============================================
243
- DETAIL CONTENT
244
- ============================================ */
245
-
246
- .detail-content {
247
- /* Fixed 20px horizontal padding globally */
248
- padding: 24px 20px 32px 20px;
249
- }
250
-
251
- @media (min-width: 768px) {
252
- .detail-content {
253
- padding: 32px var(--content-padding-md) !important; /* Override inline styles on desktop */
254
- max-width: calc(var(--content-max-width-md) + (var(--content-padding-md) * 2));
255
- margin: 0 auto;
256
- width: 100%;
257
- }
258
- }
259
-
260
- @media (min-width: 992px) {
261
- .detail-content {
262
- padding: 32px var(--content-padding-lg) !important;
263
- max-width: calc(var(--content-max-width-md) + (var(--content-padding-md) * 2));
264
- }
265
- }
266
-
267
- @media (min-width: 1440px) {
268
- .detail-content {
269
- padding: 32px var(--content-padding-xl) !important;
270
- max-width: calc(var(--content-max-width-lg) + (var(--content-padding-lg) * 2));
271
- }
272
- }
273
-
274
- @media (min-width: 1768px) {
275
- .detail-content {
276
- padding: 32px var(--content-padding-2xl) !important;
277
- }
278
- }
279
-
280
- @media (min-width: 1920px) {
281
- .detail-content {
282
- padding: 32px var(--content-padding-3xl) !important;
283
- }
284
- }
285
-
@@ -1,128 +0,0 @@
1
- import { Component, input, output, ElementRef } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { NavController } from '@ionic/angular/standalone';
4
- import { IonHeader, IonToolbar, IonContent } from '@ionic/angular/standalone';
5
- import { DsIconComponent } from '@propbinder/design-system';
6
- import { MobilePageBase } from '../shared/mobile-page-base';
7
-
8
- /**
9
- * DsMobilePageDetailsComponent
10
- *
11
- * A mobile page layout for detail/drill-down pages with:
12
- * - Back button header (mobile + desktop variants)
13
- * - White background content area
14
- * - Responsive padding
15
- *
16
- * @example
17
- * ```html
18
- * <!-- Simple detail page -->
19
- * <ds-mobile-page-details
20
- * title="Property Details"
21
- * (back)="goBack()">
22
- * <div class="page-content">
23
- * <!-- Your content -->
24
- * </div>
25
- * </ds-mobile-page-details>
26
- *
27
- * <!-- With default back route -->
28
- * <ds-mobile-page-details
29
- * title="Invoice Details"
30
- * backRoute="/invoices">
31
- * <div class="page-content">
32
- * <!-- Your content -->
33
- * </div>
34
- * </ds-mobile-page-details>
35
- * ```
36
- */
37
- @Component({
38
- selector: 'ds-mobile-page-details',
39
- standalone: true,
40
- imports: [
41
- CommonModule,
42
- IonHeader,
43
- IonToolbar,
44
- IonContent,
45
- DsIconComponent
46
- ],
47
- styleUrls: ['./ds-mobile-page-details.css'],
48
- template: `
49
- <!-- Mobile header - hidden on desktop -->
50
- <ion-header>
51
- <ion-toolbar>
52
- <div class="header-back">
53
- <button class="back-button" (click)="handleBack()" [attr.aria-label]="'Go back'">
54
- <ds-icon name="remixArrowLeftLine" size="24px" />
55
- </button>
56
- <h1 class="header-title">{{ title() }}</h1>
57
- </div>
58
- </ion-toolbar>
59
- </ion-header>
60
-
61
- <ion-content>
62
- <!-- Desktop header above content -->
63
- <div class="desktop-header">
64
- <button class="back-button" (click)="handleBack()" [attr.aria-label]="'Go back'">
65
- <ds-icon name="remixArrowLeftLine" size="24px" />
66
- </button>
67
- <h1>{{ title() }}</h1>
68
- </div>
69
-
70
- <!-- Content area -->
71
- <div class="detail-content">
72
- <ng-content></ng-content>
73
- </div>
74
- </ion-content>
75
- `
76
- })
77
- export class DsMobilePageDetailsComponent extends MobilePageBase {
78
- // Inputs
79
- title = input.required<string>();
80
- backRoute = input<string>(''); // Optional default back route
81
-
82
- // Outputs
83
- back = output<void>();
84
-
85
- constructor(
86
- private navCtrl: NavController,
87
- private elementRef: ElementRef
88
- ) {
89
- super();
90
- }
91
-
92
- /**
93
- * Handle back navigation
94
- *
95
- * By default, navigates using the provided backRoute or browser back.
96
- * Parent components can listen to the (back) event to override this behavior.
97
- *
98
- * @example
99
- * ```html
100
- * <!-- Default behavior: uses backRoute or browser back -->
101
- * <ds-mobile-page-details
102
- * title="Details"
103
- * backRoute="/home">
104
- * </ds-mobile-page-details>
105
- *
106
- * <!-- Custom behavior: parent handles navigation -->
107
- * <ds-mobile-page-details
108
- * title="Details"
109
- * (back)="customBackHandler()">
110
- * </ds-mobile-page-details>
111
- * ```
112
- */
113
- handleBack(): void {
114
- // Add class to trigger reverse animation
115
- this.elementRef.nativeElement.classList.add('navigating-back');
116
-
117
- // Emit event for parent to optionally handle
118
- this.back.emit();
119
-
120
- // Default behavior: navigate using backRoute or browser back
121
- if (this.backRoute()) {
122
- this.navCtrl.navigateBack(this.backRoute());
123
- } else {
124
- this.navCtrl.back();
125
- }
126
- }
127
- }
128
-
@@ -1,2 +0,0 @@
1
- export * from './ds-mobile-page-details';
2
-