@propbinder/mobile-design 0.2.50 → 0.2.53

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 (221) hide show
  1. package/fesm2022/propbinder-mobile-design.mjs +26206 -0
  2. package/fesm2022/propbinder-mobile-design.mjs.map +1 -0
  3. package/index.d.ts +8193 -0
  4. package/package.json +39 -3
  5. package/ng-package.json +0 -24
  6. package/src/animations/page-transitions.ts +0 -165
  7. package/src/components/action-list-item/ds-mobile-action-list-item.ts +0 -102
  8. package/src/components/action-list-item/index.ts +0 -2
  9. package/src/components/app-icon/ds-app-icon.ts +0 -133
  10. package/src/components/app-icon/index.ts +0 -2
  11. package/src/components/attachment-preview/ds-mobile-attachment-preview.css +0 -139
  12. package/src/components/attachment-preview/ds-mobile-attachment-preview.ts +0 -164
  13. package/src/components/attachment-preview/index.ts +0 -1
  14. package/src/components/avatar-with-badge/ds-avatar-with-badge.ts +0 -142
  15. package/src/components/avatar-with-badge/index.ts +0 -2
  16. package/src/components/booking-modal/ds-mobile-booking-confirmation-wrapper.ts +0 -71
  17. package/src/components/booking-modal/ds-mobile-booking-modal.service.ts +0 -121
  18. package/src/components/booking-modal/ds-mobile-booking-modal.ts +0 -598
  19. package/src/components/booking-modal/ds-mobile-booking-summary.ts +0 -161
  20. package/src/components/booking-modal/index.ts +0 -4
  21. package/src/components/bottom-sheet/ds-mobile-actions-bottom-sheet.ts +0 -266
  22. package/src/components/bottom-sheet/ds-mobile-bottom-sheet-header.ts +0 -146
  23. package/src/components/bottom-sheet/ds-mobile-bottom-sheet-wrapper.ts +0 -156
  24. package/src/components/bottom-sheet/ds-mobile-bottom-sheet.css +0 -101
  25. package/src/components/bottom-sheet/ds-mobile-bottom-sheet.service.ts +0 -169
  26. package/src/components/bottom-sheet/ds-mobile-confirmation-sheet.ts +0 -211
  27. package/src/components/bottom-sheet/ds-mobile-post-create-bottom-sheet.ts +0 -578
  28. package/src/components/bottom-sheet/ds-mobile-profile-actions-sheet.ts +0 -614
  29. package/src/components/bottom-sheet/index.ts +0 -8
  30. package/src/components/bottom-sheet/modal-shadow-fix.ts +0 -42
  31. package/src/components/card-inline/ds-mobile-card-inline.ts +0 -301
  32. package/src/components/card-inline/index.ts +0 -2
  33. package/src/components/card-inline-banner/ds-mobile-card-inline-banner.ts +0 -118
  34. package/src/components/card-inline-banner/index.ts +0 -1
  35. package/src/components/card-inline-contact/ds-mobile-card-inline-contact.ts +0 -120
  36. package/src/components/card-inline-contact/index.ts +0 -1
  37. package/src/components/card-inline-file/ds-mobile-card-inline-file.ts +0 -141
  38. package/src/components/card-inline-file/index.ts +0 -1
  39. package/src/components/chat-modal/ds-mobile-chat-modal.css +0 -159
  40. package/src/components/chat-modal/ds-mobile-chat-modal.service.ts +0 -105
  41. package/src/components/chat-modal/ds-mobile-chat-modal.ts +0 -918
  42. package/src/components/chat-modal/index.ts +0 -8
  43. package/src/components/comment/ds-mobile-comment.ts +0 -568
  44. package/src/components/comment/index.ts +0 -2
  45. package/src/components/contact-list-item/ds-mobile-contact-list-item.ts +0 -182
  46. package/src/components/contact-list-item/index.ts +0 -2
  47. package/src/components/content/ds-mobile-content.ts +0 -139
  48. package/src/components/content/index.ts +0 -2
  49. package/src/components/dropdown/ds-mobile-dropdown.css +0 -199
  50. package/src/components/dropdown/ds-mobile-dropdown.ts +0 -340
  51. package/src/components/dropdown/index.ts +0 -2
  52. package/src/components/ds-mobile-tabs.css +0 -407
  53. package/src/components/ds-mobile-tabs.ts +0 -216
  54. package/src/components/empty-state/ds-mobile-empty-state.ts +0 -120
  55. package/src/components/empty-state/index.ts +0 -2
  56. package/src/components/fab/ds-mobile-fab.ts +0 -315
  57. package/src/components/fab/index.ts +0 -1
  58. package/src/components/facility-creation-modal/ds-mobile-facility-creation-confirmation-wrapper.ts +0 -121
  59. package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.css +0 -189
  60. package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.service.ts +0 -135
  61. package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.ts +0 -656
  62. package/src/components/facility-creation-modal/index.ts +0 -9
  63. package/src/components/facility-creation-modal/sheets/ds-mobile-access-sheet.ts +0 -105
  64. package/src/components/facility-creation-modal/sheets/ds-mobile-price-sheet.ts +0 -188
  65. package/src/components/facility-creation-modal/sheets/ds-mobile-when-can-book-sheet.ts +0 -460
  66. package/src/components/facility-creation-modal/sheets/ds-mobile-who-can-book-sheet.ts +0 -134
  67. package/src/components/facility-detail-modal/ds-mobile-facility-detail-modal.service.ts +0 -69
  68. package/src/components/facility-detail-modal/ds-mobile-facility-detail-modal.ts +0 -379
  69. package/src/components/facility-detail-modal/index.ts +0 -2
  70. package/src/components/file-attachment/ds-mobile-file-attachment.ts +0 -164
  71. package/src/components/file-attachment/index.ts +0 -2
  72. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.css +0 -214
  73. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.service.ts +0 -84
  74. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.ts +0 -424
  75. package/src/components/handbook-detail-modal/index.ts +0 -3
  76. package/src/components/handbook-folder/ds-mobile-handbook-folder-mini.ts +0 -175
  77. package/src/components/handbook-folder/ds-mobile-handbook-folder.ts +0 -533
  78. package/src/components/handbook-folder/index.ts +0 -4
  79. package/src/components/header-content/ds-mobile-header-content.ts +0 -222
  80. package/src/components/header-content/index.ts +0 -2
  81. package/src/components/illustration/ds-mobile-illustration.ts +0 -124
  82. package/src/components/illustration/index.ts +0 -2
  83. package/src/components/index.ts +0 -124
  84. package/src/components/inline-photo/ds-mobile-inline-photo.ts +0 -361
  85. package/src/components/inline-photo/index.ts +0 -1
  86. package/src/components/inline-tabs/ds-mobile-inline-tabs.ts +0 -132
  87. package/src/components/inline-tabs/index.ts +0 -2
  88. package/src/components/interactive-list-item-booking/ds-mobile-interactive-list-item-booking.ts +0 -350
  89. package/src/components/interactive-list-item-booking/index.ts +0 -1
  90. package/src/components/interactive-list-item-inquiry/ds-mobile-interactive-list-item-inquiry.ts +0 -321
  91. package/src/components/interactive-list-item-inquiry/index.ts +0 -2
  92. package/src/components/interactive-list-item-message/ds-mobile-interactive-list-item-message.ts +0 -237
  93. package/src/components/interactive-list-item-message/index.ts +0 -2
  94. package/src/components/interactive-list-item-post/ds-mobile-interactive-list-item-post.ts +0 -549
  95. package/src/components/interactive-list-item-post/ds-mobile-post-pdf-attachment.ts +0 -124
  96. package/src/components/interactive-list-item-post/index.ts +0 -13
  97. package/src/components/lightbox/ds-mobile-lightbox-footer.ts +0 -315
  98. package/src/components/lightbox/ds-mobile-lightbox-header.ts +0 -202
  99. package/src/components/lightbox/ds-mobile-lightbox-image.ts +0 -484
  100. package/src/components/lightbox/ds-mobile-lightbox-pdf.css +0 -377
  101. package/src/components/lightbox/ds-mobile-lightbox-pdf.ts +0 -374
  102. package/src/components/lightbox/ds-mobile-lightbox.css +0 -587
  103. package/src/components/lightbox/ds-mobile-lightbox.service.ts +0 -296
  104. package/src/components/lightbox/ds-mobile-lightbox.ts +0 -529
  105. package/src/components/lightbox/index.ts +0 -22
  106. package/src/components/list-item/ds-mobile-list-item.ts +0 -603
  107. package/src/components/list-item/index.ts +0 -2
  108. package/src/components/list-item-static/ds-mobile-list-item-static.ts +0 -133
  109. package/src/components/list-item-static/index.ts +0 -2
  110. package/src/components/loader-overlay/ds-mobile-loader-overlay.css +0 -49
  111. package/src/components/loader-overlay/ds-mobile-loader-overlay.ts +0 -77
  112. package/src/components/loader-overlay/index.ts +0 -1
  113. package/src/components/logo/ds-logo.ts +0 -95
  114. package/src/components/logo/index.ts +0 -2
  115. package/src/components/message-bubble/ds-mobile-message-bubble.ts +0 -633
  116. package/src/components/message-bubble/index.ts +0 -7
  117. package/src/components/message-composer/ds-mobile-message-composer.ts +0 -1146
  118. package/src/components/message-composer/index.ts +0 -7
  119. package/src/components/modal/ds-mobile-modal.css +0 -163
  120. package/src/components/modal/ds-mobile-modal.service.ts +0 -329
  121. package/src/components/modal/index.ts +0 -8
  122. package/src/components/modal-base/ds-mobile-modal-base.css +0 -378
  123. package/src/components/modal-base/ds-mobile-modal-base.ts +0 -261
  124. package/src/components/modal-base/index.ts +0 -2
  125. package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.css +0 -112
  126. package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.service.ts +0 -93
  127. package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.ts +0 -442
  128. package/src/components/new-inquiry-modal/index.ts +0 -4
  129. package/src/components/offline-banner/ds-mobile-offline-banner.ts +0 -135
  130. package/src/components/offline-banner/index.ts +0 -1
  131. package/src/components/page-details/ds-mobile-page-details.css +0 -83
  132. package/src/components/page-details/ds-mobile-page-details.ts +0 -282
  133. package/src/components/page-details/index.ts +0 -2
  134. package/src/components/page-main/ds-mobile-page-main.css +0 -68
  135. package/src/components/page-main/ds-mobile-page-main.ts +0 -421
  136. package/src/components/page-main/index.ts +0 -2
  137. package/src/components/post-composer/ds-mobile-post-composer.ts +0 -140
  138. package/src/components/post-composer/index.ts +0 -2
  139. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.css +0 -390
  140. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.service.ts +0 -108
  141. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.ts +0 -722
  142. package/src/components/post-detail-modal/index.ts +0 -9
  143. package/src/components/property-banner/ds-mobile-property-banner.ts +0 -95
  144. package/src/components/property-banner/index.ts +0 -2
  145. package/src/components/section/ds-mobile-section.ts +0 -263
  146. package/src/components/section/index.ts +0 -2
  147. package/src/components/shared/directives/index.ts +0 -2
  148. package/src/components/shared/directives/long-press.directive.ts +0 -212
  149. package/src/components/shared/index.ts +0 -3
  150. package/src/components/shared/mobile-modal-base.ts +0 -457
  151. package/src/components/shared/mobile-page-base.ts +0 -204
  152. package/src/components/swiper/ds-mobile-swiper-with-nav.ts +0 -160
  153. package/src/components/swiper/ds-mobile-swiper.ts +0 -327
  154. package/src/components/swiper/index.ts +0 -3
  155. package/src/components/system-message-banner/ds-mobile-system-message-banner.ts +0 -129
  156. package/src/components/system-message-banner/index.ts +0 -2
  157. package/src/components/tab-bar/ds-mobile-tab-bar.css +0 -533
  158. package/src/components/tab-bar/ds-mobile-tab-bar.ts +0 -735
  159. package/src/components/tab-bar/index.ts +0 -2
  160. package/src/components/tabs/ds-mobile-tabs.css +0 -25
  161. package/src/components/tabs/ds-mobile-tabs.ts +0 -89
  162. package/src/components/tabs/index.ts +0 -2
  163. package/src/components/text-input/ds-text-input.ts +0 -287
  164. package/src/components/text-input/index.ts +0 -2
  165. package/src/examples/booking.page.ts +0 -434
  166. package/src/examples/community.page.ts +0 -776
  167. package/src/examples/handbook.page.ts +0 -324
  168. package/src/examples/home.page.ts +0 -347
  169. package/src/examples/index.ts +0 -12
  170. package/src/examples/inquiries.example.ts +0 -273
  171. package/src/examples/inquiry-detail.example.css +0 -189
  172. package/src/examples/inquiry-detail.example.ts +0 -415
  173. package/src/examples/mobile-tabs-example.component.ts +0 -208
  174. package/src/examples/post-create.page.ts +0 -311
  175. package/src/examples/post-detail.page.ts +0 -296
  176. package/src/examples/sign-in.page.ts +0 -291
  177. package/src/examples/whitelabel-demo-modal.component.ts +0 -1094
  178. package/src/examples/whitelabel-demo-modal.service.ts +0 -77
  179. package/src/models/index.ts +0 -7
  180. package/src/models/post.model.ts +0 -41
  181. package/src/pages/community.page.ts +0 -769
  182. package/src/pages/handbook.page.ts +0 -388
  183. package/src/pages/home.page.ts +0 -303
  184. package/src/pages/index.ts +0 -11
  185. package/src/pages/inquiries.example.ts +0 -273
  186. package/src/pages/inquiry-detail.example.css +0 -189
  187. package/src/pages/inquiry-detail.example.ts +0 -415
  188. package/src/pages/mobile-tabs-example.component.ts +0 -179
  189. package/src/pages/post-create.page.ts +0 -311
  190. package/src/pages/post-detail.page.ts +0 -296
  191. package/src/pages/sign-in.page.ts +0 -291
  192. package/src/pages/whitelabel-demo-modal.component.ts +0 -1094
  193. package/src/pages/whitelabel-demo-modal.service.ts +0 -77
  194. package/src/public-api.ts +0 -6
  195. package/src/services/base-modal.service.ts +0 -101
  196. package/src/services/index.ts +0 -11
  197. package/src/services/posts.service.ts +0 -542
  198. package/src/services/tracking-permission.service.ts +0 -88
  199. package/src/services/user.service.ts +0 -60
  200. package/src/services/whitelabel.service.ts +0 -675
  201. package/tsconfig.lib.json +0 -17
  202. package/tsconfig.lib.prod.json +0 -9
  203. package/tsconfig.spec.json +0 -13
  204. /package/{src/assets → assets}/fonts/Brockmann-Bold.otf +0 -0
  205. /package/{src/assets → assets}/fonts/Brockmann-BoldItalic.otf +0 -0
  206. /package/{src/assets → assets}/fonts/Brockmann-Medium.otf +0 -0
  207. /package/{src/assets → assets}/fonts/Brockmann-MediumItalic.otf +0 -0
  208. /package/{src/assets → assets}/fonts/Brockmann-Regular.otf +0 -0
  209. /package/{src/assets → assets}/fonts/Brockmann-RegularItalic.otf +0 -0
  210. /package/{src/assets → assets}/fonts/Brockmann-SemiBold.otf +0 -0
  211. /package/{src/assets → assets}/fonts/Brockmann-SemiBoldItalic.otf +0 -0
  212. /package/{src/assets → assets}/fonts/Brockmann_desktop_license.pdf +0 -0
  213. /package/{src/assets → assets}/fonts/brockmann-medium-webfont.woff2 +0 -0
  214. /package/{src/assets → assets}/fonts/brockmann-mediumitalic-webfont.woff2 +0 -0
  215. /package/{src/assets → assets}/fonts/brockmann-regular-webfont.woff2 +0 -0
  216. /package/{src/assets → assets}/fonts/brockmann-regularitalic-webfont.woff2 +0 -0
  217. /package/{src/assets → assets}/fonts/brockmann-semibold-webfont.woff2 +0 -0
  218. /package/{src/assets → assets}/fonts/brockmann-semibolditalic-webfont.woff2 +0 -0
  219. /package/{src/styles → styles}/ionic.css +0 -0
  220. /package/{src/components/shared → styles}/mobile-common.css +0 -0
  221. /package/{src/components/shared → styles}/mobile-page-base.css +0 -0
@@ -1,291 +0,0 @@
1
- import { Component, signal, inject, ViewChild, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { DsTextInputComponent } from '../components/text-input';
5
- import { DsButtonComponent } from '@propbinder/design-system';
6
- import { DsAppIconComponent } from '../components/app-icon';
7
- import { WhitelabelService } from '../services/whitelabel.service';
8
- import { Keyboard } from '@capacitor/keyboard';
9
- import { StatusBar, Style } from '@capacitor/status-bar';
10
-
11
- /**
12
- * SignInPageComponent
13
- *
14
- * Sign-in page with email authentication.
15
- * Features logomark, decorative city background, and form validation.
16
- * Auto-focuses email input on iOS to trigger keyboard.
17
- */
18
- @Component({
19
- selector: 'app-sign-in',
20
- standalone: true,
21
- imports: [CommonModule, FormsModule, DsTextInputComponent, DsButtonComponent, DsAppIconComponent],
22
- template: `
23
- <div class="tw-relative tw-min-h-screen tw-flex tw-justify-center tw-overflow-hidden" [style.background]="whitelabelService.signInBgStyle()">
24
- <!-- City background decoration -->
25
- @if (whitelabelService.showCityIllustration()) {
26
- <div class="tw-absolute tw-bottom-0 tw-left-0 tw-right-0 tw-w-full tw-h-[35%] tw-z-0 tw-pointer-events-none tw-overflow-hidden md:tw-h-[50%] md:tw-min-h-[400px]" aria-hidden="true">
27
- <img src="/Assets/city.svg" alt="" class="tw-w-full tw-h-full tw-object-cover tw-object-top" />
28
- </div>
29
- }
30
-
31
- <!-- Main content -->
32
- <div class="tw-relative tw-z-[1] tw-w-full tw-pt-24 tw-max-w-[440px] tw-flex tw-flex-col tw-items-center lg:tw-max-w-[480px] lg:tw-pt-24">
33
- <!-- App Icon -->
34
- <div class="tw-flex tw-justify-center tw-items-center app-icon-container">
35
- <ds-app-icon size="xl" />
36
- </div>
37
-
38
- <!-- Sign in form -->
39
- <div class="tw-w-full tw-py-10 tw-px-6 md:tw-px-8 md:tw-py-12 lg:tw-p-12 tw-relative tw-min-h-[400px] tw-box-border">
40
- <!-- Form view -->
41
- <div class="tw-transition-all tw-duration-300 tw-ease-out tw-absolute tw-inset-y-10 tw-inset-x-6 md:tw-inset-y-12 md:tw-inset-x-8 lg:tw-inset-12 tw-box-border"
42
- [class.tw-opacity-100]="!emailSent()"
43
- [class.tw-translate-y-0]="!emailSent()"
44
- [class.tw-z-10]="!emailSent()"
45
- [class.tw-opacity-0]="emailSent()"
46
- [class.-tw-translate-y-5]="emailSent()"
47
- [class.tw-pointer-events-none]="emailSent()"
48
- [class.tw-z-0]="emailSent()">
49
- <div class="tw-w-full tw-h-full tw-flex tw-flex-col">
50
- <h1 class="tw-text-2xl lg:tw-text-3xl tw-font-semibold tw-text-center tw-mt-0 tw-mb-2 signin-text">Welcome home</h1>
51
-
52
- <p class="body-base-regular tw-m-0 tw-mb-8 tw-text-center signin-text">
53
- Enter your email to continue
54
- </p>
55
-
56
- <form class="tw-flex tw-flex-col tw-gap-4" (ngSubmit)="handleSubmit()">
57
- <ds-text-input
58
- #emailInput
59
- id="email-input"
60
- type="email"
61
- placeholder="Enter your email"
62
- [(ngModel)]="email"
63
- name="email"
64
- [required]="true"
65
- [hasError]="emailError()"
66
- [errorMessage]="emailError() ? 'Please enter a valid email address' : ''"
67
- [autoClearError]="true"
68
- autocomplete="email"
69
- inputmode="email"
70
- (errorCleared)="emailError.set(false)">
71
- </ds-text-input>
72
-
73
- <ds-button
74
- type="submit"
75
- variant="primary"
76
- size="lg"
77
- [loading]="isSubmitting()"
78
- class="tw-w-full">
79
- Continue
80
- </ds-button>
81
- </form>
82
- </div>
83
- </div>
84
-
85
- <!-- Email sent confirmation view -->
86
- <div class="tw-transition-all tw-duration-300 tw-ease-out tw-flex tw-flex-col tw-items-center tw-absolute tw-inset-y-10 tw-inset-x-6 md:tw-inset-y-12 md:tw-inset-x-8 lg:tw-inset-12 tw-box-border tw-overflow-hidden"
87
- [class.tw-opacity-0]="!emailSent()"
88
- [class.tw-translate-y-5]="!emailSent()"
89
- [class.tw-pointer-events-none]="!emailSent()"
90
- [class.tw-z-0]="!emailSent()"
91
- [class.tw-opacity-100]="emailSent()"
92
- [class.tw-translate-y-0]="emailSent()"
93
- [class.tw-pointer-events-auto]="emailSent()"
94
- [class.tw-z-10]="emailSent()">
95
- <div class="tw-w-full tw-flex tw-flex-col tw-items-center">
96
- <h1 class="tw-text-lg tw-font-semibold lg:tw-text-xl tw-text-center tw-mt-0 tw-mb-4 signin-text">Check your email</h1>
97
-
98
- <p class="body-base-regular tw-m-0 tw-mb-8 tw-text-center signin-text tw-max-w-[272px]">
99
- We've sent you a temporary login to <span class="body-base-semiBold">{{ email }}</span>
100
- </p>
101
-
102
- <a
103
- href="#"
104
- (click)="handleBackToLogin(); $event.preventDefault()"
105
- class="back-link">
106
- Back to login
107
- </a>
108
- </div>
109
- </div>
110
- </div>
111
- </div>
112
- </div>
113
- `,
114
- styles: [`
115
- /* Button styling override for full width */
116
- ds-button {
117
- width: 100%;
118
- }
119
-
120
- ds-button::ng-deep button {
121
- width: 100%;
122
- }
123
-
124
- /* Link styling */
125
- .back-link {
126
- display: block;
127
- width: 100%;
128
- text-align: center;
129
- font-family: 'Brockmann', system-ui, -apple-system, sans-serif;
130
- font-size: var(--font-size-base);
131
- font-weight: 600;
132
- color: var(--color-signin-content, var(--text-color-default-primary));
133
- text-decoration: none;
134
- cursor: pointer;
135
- transition: opacity 0.2s ease;
136
- }
137
-
138
- .back-link:hover {
139
- opacity: 0.8;
140
- }
141
-
142
- /* Sign-in page text color override - applies to text elements only, not buttons */
143
- :host ::ng-deep .signin-text,
144
- :host h1,
145
- :host h2,
146
- :host p {
147
- color: var(--color-signin-content, var(--text-color-default-primary));
148
- }
149
-
150
- /* Exclude buttons and their children from sign-in content color */
151
- :host ::ng-deep ds-button,
152
- :host ::ng-deep ds-button * {
153
- color: inherit;
154
- }
155
- `]
156
- })
157
- export class SignInPageComponent implements AfterViewInit, OnDestroy {
158
- @ViewChild('emailInput', { read: ElementRef }) emailInputRef?: ElementRef;
159
-
160
- whitelabelService = inject(WhitelabelService);
161
-
162
- email = '';
163
- emailError = signal<boolean>(false);
164
- isSubmitting = signal<boolean>(false);
165
- emailSent = signal<boolean>(false);
166
-
167
- ngAfterViewInit(): void {
168
- // Update status bar for sign-in page
169
- this.updateSignInStatusBar();
170
-
171
- // Auto-focus email input to bring up keyboard on iOS
172
- // Longer delay for sign-in page to ensure gradient background is rendered
173
- setTimeout(() => {
174
- // Only focus if we haven't already sent the email
175
- if (!this.emailSent() && this.emailInputRef) {
176
- // The ds-text-input component wraps the actual input element
177
- const inputElement = this.emailInputRef.nativeElement.querySelector('input');
178
- if (inputElement) {
179
- console.log('Found input element, focusing...');
180
- inputElement.focus();
181
- // Explicitly show keyboard on mobile platforms
182
- this.showKeyboard();
183
- } else {
184
- console.error('Input element not found in ds-text-input component');
185
- }
186
- } else if (!this.emailInputRef) {
187
- console.error('emailInputRef not found');
188
- }
189
- }, 500);
190
- }
191
-
192
- /**
193
- * Show the keyboard on mobile platforms
194
- */
195
- private showKeyboard(): void {
196
- Keyboard.show().catch(() => {
197
- // Keyboard API not available (web browser) - focus() is enough
198
- console.log('Keyboard API not available');
199
- });
200
- }
201
-
202
- handleSubmit(): void {
203
- // Basic email validation
204
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
205
-
206
- // Always validate on submit
207
- if (!this.email || !emailRegex.test(this.email)) {
208
- this.emailError.set(true);
209
- return;
210
- }
211
-
212
- // Only proceed if email is valid
213
- this.emailError.set(false);
214
- this.isSubmitting.set(true);
215
-
216
- // Simulate API call
217
- setTimeout(() => {
218
- console.log('Sign in with email:', this.email);
219
- this.isSubmitting.set(false);
220
- this.emailSent.set(true);
221
- // TODO: Implement actual sign-in logic and navigation
222
- }, 1500);
223
- }
224
-
225
- handleBackToLogin(): void {
226
- this.emailSent.set(false);
227
- this.email = '';
228
- this.emailError.set(false);
229
- }
230
-
231
- /**
232
- * Update status bar for sign-in page background
233
- * Uses the sign-in background color to determine appropriate status bar style
234
- */
235
- private async updateSignInStatusBar(): Promise<void> {
236
- try {
237
- const config = this.whitelabelService.config();
238
-
239
- // Get the background color based on sign-in page background type
240
- const backgroundColor = config.signInBgType === 'gradient'
241
- ? config.signInBgGradientStart
242
- : config.signInBgSolid;
243
-
244
- // Calculate and set appropriate style
245
- const style = this.whitelabelService.getStatusBarStyleForColor(backgroundColor);
246
-
247
- // Set background color (Android only)
248
- await StatusBar.setBackgroundColor({ color: backgroundColor });
249
-
250
- // Set style (iOS and Android)
251
- await StatusBar.setStyle({ style });
252
-
253
- console.log(`Sign-in status bar updated: color=${backgroundColor}, style=${style === Style.Light ? 'Light' : 'Dark'}`);
254
- } catch (e) {
255
- // StatusBar API not available (web browser)
256
- console.log('StatusBar not available on sign-in page:', e);
257
- }
258
- }
259
-
260
- /**
261
- * Restore status bar to header color when leaving sign-in page
262
- */
263
- ngOnDestroy(): void {
264
- this.restoreHeaderStatusBar();
265
- }
266
-
267
- /**
268
- * Restore status bar to use header surface color
269
- */
270
- private async restoreHeaderStatusBar(): Promise<void> {
271
- try {
272
- const config = this.whitelabelService.config();
273
- const headerColor = config.headerSurface;
274
-
275
- // Calculate and set appropriate style for header
276
- const style = this.whitelabelService.getStatusBarStyleForColor(headerColor);
277
-
278
- // Set background color (Android only)
279
- await StatusBar.setBackgroundColor({ color: headerColor });
280
-
281
- // Set style (iOS and Android)
282
- await StatusBar.setStyle({ style });
283
-
284
- console.log(`Status bar restored to header: color=${headerColor}, style=${style === Style.Light ? 'Light' : 'Dark'}`);
285
- } catch (e) {
286
- // StatusBar API not available (web browser)
287
- console.log('StatusBar restore not available:', e);
288
- }
289
- }
290
- }
291
-