@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,673 +0,0 @@
1
- /**
2
- * Ionic-Specific Styles
3
- *
4
- * This file contains all styles that are specific to Ionic Framework and mobile app usage.
5
- * These styles are not needed for web-only or design system library builds.
6
- */
7
-
8
- /* Core CSS required for Ionic components to work properly */
9
- @import "@ionic/angular/css/core.css";
10
- @import "@ionic/angular/css/structure.css";
11
- @import "@ionic/angular/css/typography.css";
12
-
13
- /* Swiper styles for image carousels */
14
- @import 'swiper/css';
15
- @import 'swiper/css/navigation';
16
- @import 'swiper/css/pagination';
17
-
18
- /* Mobile common styles */
19
- /* Note: mobile-common.css is included in @propbinder/design-system/styles/globals.css */
20
-
21
- /* Ionic-Specific CSS Variables */
22
- :root {
23
- /* Mobile-specific brand color for headers/backgrounds */
24
- --color-brand-secondary: #221a4c;
25
-
26
- /* Ionic Keyboard Appearance - force light theme */
27
- --ion-keyboard-color: #ffffff;
28
- --ion-keyboard-background: #ffffff;
29
- --ion-keyboard-text-color: #000000;
30
- color-scheme: light;
31
-
32
- /* Layout - Mobile Navigation */
33
- --mobile-tab-bar-height: 64px;
34
- --mobile-content-spacing: 20px;
35
- }
36
-
37
- /* Global Styles for Mobile App */
38
- html {
39
- /* Safe Area Variables - set here according to Ionic documentation */
40
- --ion-safe-area-top: env(safe-area-inset-top);
41
- --ion-safe-area-bottom: env(safe-area-inset-bottom);
42
- --ion-safe-area-left: env(safe-area-inset-left);
43
- --ion-safe-area-right: env(safe-area-inset-right);
44
- }
45
-
46
- html,
47
- body {
48
- /* Background color must match theme-color for iOS PWA status bar */
49
- background-color: #221a4c;
50
- color: var(--text-color-default-primary);
51
- font-family: 'Brockmann', system-ui, -apple-system, sans-serif;
52
-
53
- /* Ensure full height for iOS PWA */
54
- height: 100%;
55
- width: 100%;
56
- margin: 0;
57
- padding: 0;
58
-
59
- /* Don't add padding to html/body - let Ionic components handle safe areas */
60
- }
61
-
62
- /* iOS-specific: Purple background for overshoot areas to match dark header */
63
- .plt-ios html,
64
- .plt-ios body {
65
- background-color: var(--color-brand-secondary) !important;
66
- }
67
-
68
- .plt-ios ion-app {
69
- background-color: var(--color-brand-secondary) !important;
70
- }
71
-
72
- /* When modal opens, ensure purple background is maintained */
73
- body.backdrop-no-scroll {
74
- background-color: var(--color-brand-secondary) !important;
75
- }
76
-
77
- /* Ionic Component Styles - Map to Design System */
78
- /* These styles apply Ionic's CSS variables to match our design system */
79
-
80
- :root {
81
- /* Override Ionic's primary color to use our brand color */
82
- --ion-color-primary: var(--color-brand-base);
83
- --ion-color-primary-rgb: 107, 95, 245;
84
- --ion-color-primary-contrast: #ffffff;
85
- --ion-color-primary-contrast-rgb: 255, 255, 255;
86
- --ion-color-primary-shade: var(--color-brand-base-hover);
87
- --ion-color-primary-tint: var(--color-brand-base);
88
-
89
- /* Ionic component defaults */
90
- --ion-background-color: var(--color-background-neutral-primary);
91
- --ion-text-color: var(--text-color-default-primary);
92
- }
93
-
94
- ion-header {
95
- box-shadow: none;
96
- }
97
-
98
- ion-toolbar {
99
- --background: transparent;
100
- --border-width: 0;
101
- }
102
-
103
- ion-content {
104
- --background: var(--color-background-neutral-primary);
105
- }
106
-
107
- /* Default: Block browser overscroll on all platforms */
108
- ion-content::part(scroll) {
109
- overscroll-behavior-y: none;
110
- -webkit-overflow-scrolling: touch;
111
- }
112
-
113
- .ion-page {
114
- overscroll-behavior-y: none;
115
- }
116
-
117
- /* iOS-specific: Enable native scroll overshoot/bounce effect */
118
- .plt-ios ion-content::part(scroll) {
119
- overscroll-behavior-y: contain;
120
- }
121
-
122
- .plt-ios .ion-page {
123
- overscroll-behavior-y: contain;
124
- }
125
-
126
- ion-footer {
127
- box-shadow: none;
128
- }
129
-
130
- ion-router-outlet {
131
- --background: var(--color-background-neutral-primary);
132
- }
133
-
134
- ion-refresher {
135
- --background: transparent;
136
- --color: white;
137
- }
138
-
139
- ion-refresher-content {
140
- --color: white;
141
- }
142
-
143
- /* Force spinner color to brand */
144
- ion-spinner {
145
- --color: var(--color-brand-base) !important;
146
- color: var(--color-brand-base) !important;
147
- }
148
-
149
- ion-modal {
150
- --background: var(--color-background-neutral-primary);
151
- --border-radius: 16px;
152
- --box-shadow: var(--box-shadow-lg);
153
- }
154
-
155
- /* Prevent modal from resizing when keyboard appears */
156
- ion-modal {
157
- height: 100% !important;
158
- max-height: 100vh !important;
159
- }
160
-
161
- ion-modal .modal-wrapper,
162
- ion-modal::part(content) {
163
- position: fixed !important;
164
- height: 100% !important;
165
- max-height: 100vh !important;
166
- }
167
-
168
- /* Prevent ion-content inside modals from resizing */
169
- ion-modal ion-content {
170
- --keyboard-offset: 0px !important;
171
- height: 100% !important;
172
- }
173
-
174
- ion-action-sheet {
175
- --background: var(--color-background-neutral-primary);
176
- --color: var(--text-color-default-primary);
177
- --button-background: var(--color-background-neutral-secondary);
178
- --button-background-hover: var(--color-background-neutral-tertiary);
179
- --button-background-selected: var(--color-background-brand);
180
- --button-color: var(--text-color-default-primary);
181
- }
182
-
183
- ion-toast {
184
- --background: var(--color-background-neutral-strong);
185
- --color: var(--text-color-default-primary-inverse);
186
- --border-radius: 8px;
187
- --box-shadow: var(--box-shadow-lg);
188
- }
189
-
190
- /* ============================================
191
- BOTTOM SHEET MODAL STYLES
192
- Based on Ionic 6 bottom sheet presentation
193
- ============================================ */
194
-
195
- /* Base bottom sheet styling */
196
- .ds-bottom-sheet {
197
- --border-radius: 16px;
198
- --box-shadow: 0px -2px 24px rgba(0, 0, 0, 0.12);
199
- /* Position backdrop to start below header */
200
- --offset-top: 32px;
201
- --backdrop-opacity: 0.4;
202
- transition: --backdrop-opacity 0.3s ease;
203
- /* Position the modal wrapper to start below header */
204
- /* Default: 32px offset to align with header content */
205
- top: 32px !important;
206
- height: calc(100% - 32px) !important;
207
- }
208
-
209
- /* On iOS devices with safe area, use safe-area-inset-top to avoid status bar overlap */
210
- @supports (padding-top: env(safe-area-inset-top)) {
211
- .ds-bottom-sheet {
212
- /* Use safe-area-inset-top if larger than 32px, otherwise use 32px */
213
- /* This ensures we're always below the status bar */
214
- top: env(safe-area-inset-top, 32px) !important;
215
- height: calc(100% - env(safe-area-inset-top, 32px)) !important;
216
- }
217
- }
218
-
219
-
220
- /* Backdrop styling */
221
- .ds-bottom-sheet::part(backdrop) {
222
- background: rgba(0, 0, 0, var(--backdrop-opacity, 0.6));
223
- }
224
-
225
- /* Handle customization */
226
- .ds-bottom-sheet::part(handle) {
227
- background: var(--border-color-default);
228
- width: 36px;
229
- height: 4px;
230
- border-radius: 2px;
231
- margin-top: 4px;
232
- margin-bottom: 8px;
233
- }
234
-
235
- /* Content area styling - Override Ionic's bottom-based positioning */
236
- .ds-bottom-sheet::part(content) {
237
- border-radius: var(--border-radius);
238
- background: var(--color-background-neutral-primary, #ffffff);
239
- box-shadow: var(--box-shadow);
240
- position: absolute !important;
241
- top: 0 !important;
242
- bottom: 0 !important;
243
- height: 100% !important;
244
- max-height: 100% !important;
245
- }
246
-
247
- /* Remove border radius when fully expanded */
248
- @media (min-height: 768px) {
249
- .ds-bottom-sheet.modal-sheet-expanded::part(content) {
250
- border-radius: 0;
251
- }
252
- }
253
-
254
-
255
-
256
- /* Ensure content scrolls properly */
257
- .ds-bottom-sheet ion-content {
258
- --background: transparent;
259
- }
260
-
261
- /* Better mobile experience */
262
- @media (max-width: 768px) {
263
- .ds-bottom-sheet::part(content) {
264
- max-width: 100%;
265
- }
266
- }
267
-
268
- /* Desktop centering */
269
- @media (min-width: 769px) {
270
- .ds-bottom-sheet::part(content) {
271
- max-width: 640px;
272
- margin: 0 auto;
273
- }
274
- }
275
-
276
- /* ============================================
277
- Dynamic Height Action Sheets
278
- Make action sheets auto-size to their content
279
- ============================================ */
280
-
281
- /* Auto-height modal - override base bottom sheet styles */
282
- .ds-bottom-sheet.auto-height {
283
- top: 0 !important;
284
- height: 100% !important;
285
- --height: fit-content;
286
- --max-height: 80vh;
287
- display: flex;
288
- align-items: flex-end;
289
- }
290
-
291
- .ds-bottom-sheet.auto-height .modal-wrapper {
292
- position: relative !important;
293
- bottom: auto !important;
294
- left: auto !important;
295
- right: auto !important;
296
- height: auto !important;
297
- max-height: 80vh !important;
298
- top: auto !important;
299
- width: 100%;
300
- }
301
-
302
- .ds-bottom-sheet.auto-height::part(content) {
303
- position: relative !important;
304
- height: auto !important;
305
- max-height: 80vh !important;
306
- top: auto !important;
307
- bottom: auto !important;
308
- }
309
-
310
- /* Ensure action sheet component sizes naturally */
311
- .ds-bottom-sheet.auto-height ds-mobile-actions-bottom-sheet {
312
- display: block;
313
- height: auto;
314
- }
315
-
316
- /* Ensure action list scrolls if needed */
317
- .ds-bottom-sheet.auto-height .actions-list {
318
- max-height: calc(80vh - 80px); /* Account for handle, padding, and safe area */
319
- overflow-y: auto;
320
- -webkit-overflow-scrolling: touch;
321
- }
322
-
323
- /* ============================================
324
- Mobile Modal Styles (Generic Modal Service)
325
- ============================================ */
326
-
327
- /**
328
- * Mobile Modal Styles
329
- *
330
- * Global styles for modals opened via DsMobileModalService.
331
- * These styles are applied to all modals and handle different presentation styles.
332
- */
333
-
334
- /* Base modal styles */
335
- .ds-mobile-modal {
336
- --background: var(--color-background-neutral-primary, #ffffff);
337
- --border-radius: 16px;
338
- --box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
339
- --max-width: 640px;
340
- --width: 100%;
341
- }
342
-
343
- .ds-mobile-modal::part(content) {
344
- max-width: 640px;
345
- margin: 0 auto;
346
- }
347
-
348
- /* Fullscreen presentation */
349
- .ds-modal-fullscreen {
350
- --width: 100%;
351
- --height: 100%;
352
- --border-radius: 0;
353
- }
354
-
355
- .ds-modal-fullscreen::part(content) {
356
- border-radius: 0;
357
- }
358
-
359
- /* Card presentation (default iOS modal style) */
360
- .ds-modal-card {
361
- --width: 100%;
362
- --max-width: 640px;
363
- --height: auto;
364
- --max-height: 90%;
365
- --border-radius: 16px 16px 0 0;
366
- }
367
-
368
- .ds-modal-card::part(content) {
369
- border-radius: 16px 16px 0 0;
370
- box-shadow: var(--box-shadow);
371
- max-width: 640px;
372
- margin: 0 auto;
373
- }
374
-
375
- /* Sheet presentation (bottom sheet with breakpoints) */
376
- .ds-modal-sheet {
377
- --width: 100%;
378
- --max-width: 640px;
379
- --height: auto;
380
- --border-radius: 16px 16px 0 0;
381
- }
382
-
383
- .ds-modal-sheet::part(content) {
384
- border-radius: 16px 16px 0 0;
385
- box-shadow: var(--box-shadow);
386
- max-width: 640px;
387
- margin: 0 auto;
388
- }
389
-
390
- .ds-modal-sheet::part(handle) {
391
- background: var(--border-color-default);
392
- width: 36px;
393
- height: 4px;
394
- border-radius: 2px;
395
- margin: 8px auto 0;
396
- }
397
-
398
- /* Backdrop styles */
399
- .ds-mobile-modal::part(backdrop) {
400
- background: rgba(0, 0, 0, 0.4);
401
- backdrop-filter: blur(4px);
402
- }
403
-
404
- /* Animations */
405
- .ds-mobile-modal.modal-card-enter-active,
406
- .ds-mobile-modal.modal-sheet-enter-active {
407
- animation: slideUpModal 0.3s ease-out;
408
- }
409
-
410
- .ds-mobile-modal.modal-card-leave-active,
411
- .ds-mobile-modal.modal-sheet-leave-active {
412
- animation: slideDownModal 0.3s ease-in;
413
- }
414
-
415
- .ds-mobile-modal.modal-fullscreen-enter-active {
416
- animation: fadeInModal 0.2s ease-out;
417
- }
418
-
419
- .ds-mobile-modal.modal-fullscreen-leave-active {
420
- animation: fadeOutModal 0.2s ease-in;
421
- }
422
-
423
- @keyframes slideUpModal {
424
- from {
425
- transform: translateY(100%);
426
- }
427
- to {
428
- transform: translateY(0);
429
- }
430
- }
431
-
432
- @keyframes slideDownModal {
433
- from {
434
- transform: translateY(0);
435
- }
436
- to {
437
- transform: translateY(100%);
438
- }
439
- }
440
-
441
- @keyframes fadeInModal {
442
- from {
443
- opacity: 0;
444
- }
445
- to {
446
- opacity: 1;
447
- }
448
- }
449
-
450
- @keyframes fadeOutModal {
451
- from {
452
- opacity: 1;
453
- }
454
- to {
455
- opacity: 0;
456
- }
457
- }
458
-
459
- /* Safe area handling for notched devices */
460
- @supports (padding: env(safe-area-inset-top)) {
461
- .ds-modal-fullscreen::part(content) {
462
- padding-top: env(safe-area-inset-top);
463
- padding-bottom: env(safe-area-inset-bottom);
464
- }
465
- }
466
-
467
- /* Dark mode support (if needed) */
468
- @media (prefers-color-scheme: dark) {
469
- .ds-mobile-modal {
470
- --background: var(--color-background-neutral-primary-dark, #1a1a1a);
471
- }
472
-
473
- .ds-mobile-modal::part(backdrop) {
474
- background: rgba(0, 0, 0, 0.6);
475
- }
476
- }
477
-
478
- /* Accessibility: Reduced motion */
479
- @media (prefers-reduced-motion: reduce) {
480
- .ds-mobile-modal.modal-card-enter-active,
481
- .ds-mobile-modal.modal-card-leave-active,
482
- .ds-mobile-modal.modal-sheet-enter-active,
483
- .ds-mobile-modal.modal-sheet-leave-active,
484
- .ds-mobile-modal.modal-fullscreen-enter-active,
485
- .ds-mobile-modal.modal-fullscreen-leave-active {
486
- animation: none;
487
- }
488
- }
489
-
490
- /* ============================================
491
- ION-TAB-BUTTON CUSTOMIZATION
492
- ============================================ */
493
-
494
- /* Set gap for button-inner to control spacing between icon and label */
495
- ion-tab-button::part(native) {
496
- gap: 2px;
497
- }
498
-
499
- /* ============================================
500
- Post Detail Modal Styles
501
- ============================================ */
502
-
503
- .ds-post-detail-modal {
504
- --background: var(--color-background-neutral-primary, #ffffff);
505
- --width: 100%;
506
- --max-width: 640px;
507
- --height: 100dvh; /* Use dynamic viewport height instead of 100% */
508
- --border-radius: 16px 16px 0 0;
509
- margin-top: 48px;
510
- }
511
-
512
- .ds-post-detail-modal::part(content) {
513
- border-radius: 16px 16px 0 0;
514
- box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
515
- background: var(--color-background-neutral-primary, #ffffff);
516
- max-width: 640px;
517
- margin: 0 auto;
518
- }
519
-
520
- .ds-post-detail-modal::part(backdrop) {
521
- background: rgba(0, 0, 0, 0.4);
522
- backdrop-filter: blur(4px);
523
- }
524
-
525
- .ds-post-detail-modal ion-content {
526
- --background: var(--color-background-neutral-primary, #ffffff);
527
- }
528
-
529
- /* Control the presenting element (page behind) border radius */
530
- ion-router-outlet.ion-page-hidden,
531
- .ion-page.ion-page-hidden {
532
- border-radius: 16px 16px 0 0 !important;
533
- overflow: hidden;
534
- }
535
-
536
- /* Set background to brand secondary */
537
- ion-router-outlet {
538
- background: var(--color-brand-secondary) !important;
539
- }
540
-
541
- /* Override Ionic's default 10px border-radius */
542
- body.backdrop-no-scroll ion-router-outlet {
543
- border-radius: 16px 16px 0 0 !important;
544
- }
545
-
546
- /* Target the router outlet when modal is active */
547
- ion-router-outlet:not(.ion-page-hidden) {
548
- border-radius: 16px 16px 0 0 !important;
549
- transition: border-radius 0.3s ease, transform 0.3s ease;
550
- }
551
-
552
- /* Adjust the presenting element animation */
553
- .modal-card-enter-active ion-router-outlet,
554
- .modal-card-enter-active .ion-page {
555
- border-radius: 16px 16px 0 0 !important;
556
- }
557
-
558
- /* When page is scaled behind modal */
559
- .ion-page-invisible {
560
- border-radius: 16px 16px 0 0 !important;
561
- }
562
-
563
- /* Override Ionic's default presenting page styles */
564
- .modal-shadow .ion-page {
565
- border-radius: 16px 16px 0 0 !important;
566
- }
567
-
568
- /* Hide modal shadow when auto-height sheet is active */
569
- body:has(.ds-bottom-sheet.auto-height) .modal-shadow {
570
- display: none !important;
571
- }
572
-
573
- ion-modal.show-modal ~ ion-router-outlet,
574
- ion-modal.show-modal ~ * ion-router-outlet {
575
- border-radius: 16px 16px 0 0 !important;
576
- transform: scale(0.915) !important;
577
- }
578
-
579
- /* Most important - override any Ionic defaults */
580
- ion-router-outlet[style*="border-radius"] {
581
- border-radius: 16px 16px 0 0 !important;
582
- }
583
-
584
- /* Target app root with modal */
585
- ion-app.ion-page-hidden ion-router-outlet,
586
- ion-app ion-router-outlet.ion-page-hidden {
587
- border-radius: 16px 16px 0 0 !important;
588
- }
589
-
590
- /* Safe area handling */
591
- @supports (padding: env(safe-area-inset-top)) {
592
- .ds-post-detail-modal .post-modal-header .header-content {
593
- padding-top: env(safe-area-inset-top);
594
- height: calc(56px + env(safe-area-inset-top));
595
- }
596
- }
597
-
598
- /* Dark mode support */
599
- @media (prefers-color-scheme: dark) {
600
- .ds-post-detail-modal {
601
- --background: var(--color-background-neutral-primary-dark, #1a1a1a);
602
- }
603
-
604
- .ds-post-detail-modal::part(content) {
605
- background: var(--color-background-neutral-primary-dark, #1a1a1a);
606
- }
607
-
608
- .ds-post-detail-modal::part(backdrop) {
609
- background: rgba(0, 0, 0, 0.6);
610
- }
611
-
612
- .ds-post-detail-modal ion-content {
613
- --background: var(--color-background-neutral-primary-dark, #1a1a1a);
614
- }
615
- }
616
-
617
- /* ============================================
618
- Handbook Detail Modal Styles
619
- ============================================ */
620
-
621
- .ds-handbook-detail-modal {
622
- --background: var(--color-background-neutral-primary, #ffffff);
623
- --width: 100%;
624
- --max-width: 640px;
625
- --height: 100dvh; /* Use dynamic viewport height instead of 100% */
626
- --border-radius: 16px 16px 0 0;
627
- margin-top: 48px;
628
- }
629
-
630
- .ds-handbook-detail-modal::part(content) {
631
- border-radius: 16px 16px 0 0;
632
- box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
633
- background: var(--color-background-neutral-primary, #ffffff);
634
- max-width: 640px;
635
- margin: 0 auto;
636
- }
637
-
638
- .ds-handbook-detail-modal::part(backdrop) {
639
- background: rgba(0, 0, 0, 0.4);
640
- backdrop-filter: blur(4px);
641
- }
642
-
643
- .ds-handbook-detail-modal ion-content {
644
- --background: var(--color-background-neutral-primary, #ffffff);
645
- }
646
-
647
- /* Safe area handling */
648
- @supports (padding: env(safe-area-inset-top)) {
649
- .ds-handbook-detail-modal .handbook-modal-header .header-content {
650
- padding-top: env(safe-area-inset-top);
651
- height: calc(56px + env(safe-area-inset-top));
652
- }
653
- }
654
-
655
- /* Dark mode support */
656
- @media (prefers-color-scheme: dark) {
657
- .ds-handbook-detail-modal {
658
- --background: var(--color-background-neutral-primary-dark, #1a1a1a);
659
- }
660
-
661
- .ds-handbook-detail-modal::part(content) {
662
- background: var(--color-background-neutral-primary-dark, #1a1a1a);
663
- }
664
-
665
- .ds-handbook-detail-modal::part(backdrop) {
666
- background: rgba(0, 0, 0, 0.6);
667
- }
668
-
669
- .ds-handbook-detail-modal ion-content {
670
- --background: var(--color-background-neutral-primary-dark, #1a1a1a);
671
- }
672
- }
673
-
package/tsconfig.lib.json DELETED
@@ -1,17 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../out-tsc/lib",
5
- "declaration": true,
6
- "declarationMap": true,
7
- "inlineSources": true,
8
- "types": [],
9
- "composite": true
10
- },
11
- "include": [
12
- "src/**/*.ts"
13
- ],
14
- "exclude": [
15
- "**/*.spec.ts"
16
- ]
17
- }
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "./tsconfig.lib.json",
3
- "compilerOptions": {
4
- "declarationMap": false
5
- },
6
- "angularCompilerOptions": {
7
- "compilationMode": "partial"
8
- }
9
- }
@@ -1,13 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../out-tsc/spec",
5
- "types": [
6
- "jasmine"
7
- ]
8
- },
9
- "include": [
10
- "src/**/*.d.ts",
11
- "src/**/*.spec.ts"
12
- ]
13
- }