@propbinder/mobile-design 0.2.15 → 0.2.17
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.
- package/fesm2022/propbinder-mobile-design.mjs +3778 -5037
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +456 -1035
- package/package.json +1 -1
- package/styles/ionic.css +22 -61
- package/styles/mobile-common.css +1 -1
- package/styles/mobile-page-base.css +14 -20
package/package.json
CHANGED
package/styles/ionic.css
CHANGED
|
@@ -106,7 +106,7 @@ html {
|
|
|
106
106
|
html,
|
|
107
107
|
body {
|
|
108
108
|
/* Background color must match theme-color for iOS PWA status bar */
|
|
109
|
-
background-color: var(--color-
|
|
109
|
+
background-color: var(--color-brand-secondary);
|
|
110
110
|
color: var(--text-color-default-primary);
|
|
111
111
|
font-family: 'Brockmann', system-ui, -apple-system, sans-serif;
|
|
112
112
|
|
|
@@ -122,16 +122,16 @@ body {
|
|
|
122
122
|
/* iOS-specific: Purple background for overshoot areas to match dark header */
|
|
123
123
|
.plt-ios html,
|
|
124
124
|
.plt-ios body {
|
|
125
|
-
background-color: var(--color-
|
|
125
|
+
background-color: var(--color-brand-secondary) !important;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
.plt-ios ion-app {
|
|
129
|
-
background-color: var(--color-
|
|
129
|
+
background-color: var(--color-brand-secondary) !important;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
/* When modal opens, ensure purple background is maintained */
|
|
133
133
|
body.backdrop-no-scroll {
|
|
134
|
-
background-color: var(--color-
|
|
134
|
+
background-color: var(--color-brand-secondary) !important;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
/* Ionic Component Styles - Map to Design System */
|
|
@@ -139,14 +139,15 @@ body.backdrop-no-scroll {
|
|
|
139
139
|
|
|
140
140
|
:root {
|
|
141
141
|
/* Override Ionic's primary color to use our brand color */
|
|
142
|
-
|
|
143
|
-
--ion-color-primary:
|
|
144
|
-
--ion-color-primary-contrast:
|
|
145
|
-
--ion-color-primary-
|
|
146
|
-
--ion-color-primary-
|
|
142
|
+
--ion-color-primary: var(--color-brand-base);
|
|
143
|
+
--ion-color-primary-rgb: 107, 95, 245;
|
|
144
|
+
--ion-color-primary-contrast: #ffffff;
|
|
145
|
+
--ion-color-primary-contrast-rgb: 255, 255, 255;
|
|
146
|
+
--ion-color-primary-shade: var(--color-brand-base-hover);
|
|
147
|
+
--ion-color-primary-tint: var(--color-brand-base);
|
|
147
148
|
|
|
148
149
|
/* Ionic component defaults */
|
|
149
|
-
--ion-background-color: var(--color-
|
|
150
|
+
--ion-background-color: var(--color-brand-secondary);
|
|
150
151
|
--ion-text-color: var(--text-color-default-primary);
|
|
151
152
|
}
|
|
152
153
|
|
|
@@ -165,17 +166,17 @@ ion-content {
|
|
|
165
166
|
|
|
166
167
|
/* iOS: Set base ion-content background to brand secondary for pages */
|
|
167
168
|
.plt-ios ion-content {
|
|
168
|
-
background: var(--color-
|
|
169
|
+
background: var(--color-brand-secondary) !important;
|
|
169
170
|
}
|
|
170
171
|
|
|
171
172
|
/* iOS: Also target any inner background parts */
|
|
172
173
|
.plt-ios ion-content::part(background) {
|
|
173
|
-
background: var(--color-
|
|
174
|
+
background: var(--color-brand-secondary) !important;
|
|
174
175
|
}
|
|
175
176
|
|
|
176
177
|
/* iOS: Target the inner container if it exists */
|
|
177
178
|
.plt-ios ion-content .inner-scroll {
|
|
178
|
-
background: var(--color-
|
|
179
|
+
background: var(--color-brand-secondary) !important;
|
|
179
180
|
}
|
|
180
181
|
|
|
181
182
|
/* Default: Block browser overscroll on all platforms */
|
|
@@ -201,18 +202,18 @@ ion-content::part(scroll)::-webkit-scrollbar {
|
|
|
201
202
|
overscroll-behavior-y: contain;
|
|
202
203
|
/* iOS: Set scroll container background to match brand secondary */
|
|
203
204
|
/* This prevents white background from showing when header fades on scroll */
|
|
204
|
-
background: var(--color-
|
|
205
|
+
background: var(--color-brand-secondary) !important;
|
|
205
206
|
}
|
|
206
207
|
|
|
207
208
|
.plt-ios .ion-page {
|
|
208
209
|
overscroll-behavior-y: contain;
|
|
209
210
|
/* Set page background to brand secondary to match header on iOS */
|
|
210
|
-
background: var(--color-
|
|
211
|
+
background: var(--color-brand-secondary) !important;
|
|
211
212
|
}
|
|
212
213
|
|
|
213
214
|
/* iOS-specific: Override ion-content background for pages (not modals) */
|
|
214
215
|
.plt-ios .ion-page > ion-content {
|
|
215
|
-
--background: var(--color-
|
|
216
|
+
--background: var(--color-brand-secondary);
|
|
216
217
|
}
|
|
217
218
|
|
|
218
219
|
/* iOS: Ensure modal content stays with neutral background */
|
|
@@ -232,33 +233,13 @@ ion-content::part(scroll)::-webkit-scrollbar {
|
|
|
232
233
|
background: var(--color-background-neutral-primary) !important;
|
|
233
234
|
}
|
|
234
235
|
|
|
235
|
-
/* Exception: Lightbox modals should have black background */
|
|
236
|
-
.plt-ios ion-modal .lightbox-content.pdf-viewer,
|
|
237
|
-
.plt-ios ion-modal .lightbox-content.pdf-viewer::part(scroll),
|
|
238
|
-
.plt-ios ion-modal .lightbox-content.pdf-viewer::part(background),
|
|
239
|
-
.plt-ios ion-modal .lightbox-content.pdf-viewer .inner-scroll {
|
|
240
|
-
background: #000000 !important;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/* Also ensure lightbox is black on all platforms */
|
|
244
|
-
ion-modal .lightbox-content.pdf-viewer {
|
|
245
|
-
--background: #000000 !important;
|
|
246
|
-
background: #000000 !important;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
ion-modal .lightbox-content.pdf-viewer::part(scroll),
|
|
250
|
-
ion-modal .lightbox-content.pdf-viewer::part(background),
|
|
251
|
-
ion-modal .lightbox-content.pdf-viewer .inner-scroll {
|
|
252
|
-
background: #000000 !important;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
236
|
ion-footer {
|
|
256
237
|
box-shadow: none;
|
|
257
238
|
}
|
|
258
239
|
|
|
259
240
|
ion-router-outlet {
|
|
260
|
-
--background: var(--color-
|
|
261
|
-
background: var(--color-
|
|
241
|
+
--background: var(--color-brand-secondary);
|
|
242
|
+
background: var(--color-brand-secondary);
|
|
262
243
|
}
|
|
263
244
|
|
|
264
245
|
ion-refresher {
|
|
@@ -272,8 +253,8 @@ ion-refresher-content {
|
|
|
272
253
|
|
|
273
254
|
/* Force spinner color to brand */
|
|
274
255
|
ion-spinner {
|
|
275
|
-
--color: var(--color-
|
|
276
|
-
color: var(--color-
|
|
256
|
+
--color: var(--color-brand-base) !important;
|
|
257
|
+
color: var(--color-brand-base) !important;
|
|
277
258
|
}
|
|
278
259
|
|
|
279
260
|
ion-modal {
|
|
@@ -303,7 +284,7 @@ ion-action-sheet {
|
|
|
303
284
|
--color: var(--text-color-default-primary);
|
|
304
285
|
--button-background: var(--color-background-neutral-secondary);
|
|
305
286
|
--button-background-hover: var(--color-background-neutral-tertiary);
|
|
306
|
-
--button-background-selected: var(--color-
|
|
287
|
+
--button-background-selected: var(--color-background-brand);
|
|
307
288
|
--button-color: var(--text-color-default-primary);
|
|
308
289
|
}
|
|
309
290
|
|
|
@@ -853,23 +834,3 @@ ion-app ion-router-outlet.ion-page-hidden {
|
|
|
853
834
|
|
|
854
835
|
/* Dark mode support removed - modals should not change based on system dark mode */
|
|
855
836
|
|
|
856
|
-
/* ============================================
|
|
857
|
-
GLOBAL BUTTON INTERACTIVE STATES
|
|
858
|
-
Consistent button behavior across all ds-button instances
|
|
859
|
-
============================================ */
|
|
860
|
-
|
|
861
|
-
/* Base transition */
|
|
862
|
-
ds-button .btn {
|
|
863
|
-
transition: all 0.2s ease !important;
|
|
864
|
-
}
|
|
865
|
-
|
|
866
|
-
/* Active/pressed/click state - scale down slightly */
|
|
867
|
-
ds-button .btn:active:not(:disabled) {
|
|
868
|
-
transform: scale(0.98) !important;
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
/* FORCE hover background color directly - only for primary variant */
|
|
872
|
-
ds-button[variant="primary"]:hover .btn {
|
|
873
|
-
background-color: var(--color-accent-hover) !important;
|
|
874
|
-
}
|
|
875
|
-
|
package/styles/mobile-common.css
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
align-items: center;
|
|
15
15
|
height: 100%;
|
|
16
16
|
/* Solid background to cover overlay from page underneath during transitions */
|
|
17
|
-
background: var(--color-
|
|
17
|
+
background: var(--color-secondary-surface);
|
|
18
18
|
width: 100%;
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
============================================ */
|
|
24
24
|
|
|
25
25
|
:host ion-header {
|
|
26
|
-
background: var(--color-
|
|
26
|
+
background: var(--color-brand-secondary);
|
|
27
27
|
box-shadow: none;
|
|
28
28
|
height: 72px;
|
|
29
29
|
min-height: 72px;
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
:host ion-header ion-toolbar {
|
|
34
|
-
--background: var(--color-
|
|
34
|
+
--background: var(--color-brand-secondary);
|
|
35
35
|
--border-width: 0;
|
|
36
36
|
--box-shadow: none;
|
|
37
37
|
--padding-top: 0;
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
display: flex;
|
|
79
79
|
align-items: center;
|
|
80
80
|
justify-content: space-between;
|
|
81
|
-
background: var(--color-
|
|
81
|
+
background: var(--color-brand-secondary);
|
|
82
82
|
position: relative;
|
|
83
83
|
}
|
|
84
84
|
|
|
@@ -91,10 +91,10 @@
|
|
|
91
91
|
transform: translateX(-50%);
|
|
92
92
|
font-size: var(--font-size-base);
|
|
93
93
|
font-weight: 600;
|
|
94
|
-
color:
|
|
94
|
+
color: white;
|
|
95
95
|
margin: 0;
|
|
96
96
|
padding: 0;
|
|
97
|
-
--color:
|
|
97
|
+
--color: white;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
/* Scroll behavior for header-details title (hidden initially, shows on scroll) */
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
align-items: center;
|
|
123
123
|
justify-content: center;
|
|
124
124
|
cursor: pointer;
|
|
125
|
-
color:
|
|
125
|
+
color: white;
|
|
126
126
|
transition: opacity var(--transition-duration-fast, 0.2s) var(--ease-smooth, ease);
|
|
127
127
|
z-index: 10;
|
|
128
128
|
position: relative;
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
============================================ */
|
|
144
144
|
|
|
145
145
|
:host ion-content {
|
|
146
|
-
--background: var(--color-
|
|
146
|
+
--background: var(--color-brand-secondary);
|
|
147
147
|
--padding-top: 0;
|
|
148
148
|
--padding-start: 0;
|
|
149
149
|
--padding-end: 0;
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
:host ion-refresher-content {
|
|
199
|
-
--color:
|
|
199
|
+
--color: white;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
/* ============================================
|
|
@@ -213,7 +213,6 @@
|
|
|
213
213
|
flex-direction: column;
|
|
214
214
|
background: var(--color-background-neutral-primary);
|
|
215
215
|
border-radius: 24px 24px 0 0;
|
|
216
|
-
overflow: scroll;
|
|
217
216
|
|
|
218
217
|
/* Visual styling for iOS overshoot - extend background below using box-shadow */
|
|
219
218
|
transform: translateZ(0);
|
|
@@ -221,11 +220,9 @@
|
|
|
221
220
|
isolation: isolate;
|
|
222
221
|
box-shadow: 0 300px 0 0 var(--color-background-neutral-primary);
|
|
223
222
|
|
|
224
|
-
/*
|
|
225
|
-
padding
|
|
226
|
-
|
|
227
|
-
padding-right: var(--content-wrapper-padding, 20px);
|
|
228
|
-
/* Bottom padding ALWAYS preserved for safe area and tab bar */
|
|
223
|
+
/* Fixed 20px horizontal padding globally */
|
|
224
|
+
padding: 20px;
|
|
225
|
+
/* Add bottom padding on mobile to account for fixed tab bar */
|
|
229
226
|
padding-bottom: calc(var(--mobile-content-spacing) + var(--mobile-tab-bar-height) + env(safe-area-inset-bottom, 0px));
|
|
230
227
|
}
|
|
231
228
|
|
|
@@ -241,10 +238,7 @@
|
|
|
241
238
|
|
|
242
239
|
@media (min-width: 768px) {
|
|
243
240
|
:host .content-wrapper {
|
|
244
|
-
|
|
245
|
-
padding-top: 0;
|
|
246
|
-
padding-left: var(--content-wrapper-padding, 20px);
|
|
247
|
-
padding-right: var(--content-wrapper-padding, 20px);
|
|
241
|
+
padding: 32px 20px;
|
|
248
242
|
}
|
|
249
243
|
}
|
|
250
244
|
|
|
@@ -253,7 +247,7 @@
|
|
|
253
247
|
============================================ */
|
|
254
248
|
|
|
255
249
|
:host .header-expandable {
|
|
256
|
-
background: var(--color-
|
|
250
|
+
background: var(--color-brand-secondary);
|
|
257
251
|
padding: 32px 20px 24px 20px;
|
|
258
252
|
color: var(--header-content-color, white);
|
|
259
253
|
position: sticky;
|