@incodetech/prizma-core-screens 0.1.3 → 0.2.3
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/dist/DemoScreensConfigScreen.d.ts +36 -0
- package/dist/DemoScreensConfigScreen.js +30 -0
- package/dist/DemoScreensConfigSheetScreen.d.ts +39 -0
- package/dist/DemoScreensConfigSheetScreen.js +33 -0
- package/dist/DemoScreensEditSheetScreen.d.ts +30 -0
- package/dist/DemoScreensEditSheetScreen.js +28 -0
- package/dist/DemoScreensEndScreen.d.ts +9 -21
- package/dist/DemoScreensEndScreen.js +9 -14
- package/dist/DemoScreensLaunchScreen.d.ts +28 -0
- package/dist/DemoScreensLaunchScreen.js +26 -0
- package/dist/DemoScreensLayout.css +542 -0
- package/dist/DemoScreensRedirectScreen.d.ts +50 -0
- package/dist/DemoScreensRedirectScreen.js +38 -0
- package/dist/DemoScreensResultScreen.d.ts +52 -0
- package/dist/DemoScreensResultScreen.js +46 -0
- package/dist/DemoScreensRunningScreen.d.ts +22 -0
- package/dist/DemoScreensRunningScreen.js +16 -0
- package/dist/DemoScreensSettingsScreen.d.ts +37 -0
- package/dist/DemoScreensSettingsScreen.js +40 -0
- package/dist/DemoScreensSplashScreen.d.ts +27 -0
- package/dist/DemoScreensSplashScreen.js +25 -0
- package/dist/DemoScreensStartScreen.d.ts +38 -0
- package/dist/DemoScreensStartScreen.js +37 -0
- package/dist/DemoScreensStrings.d.ts +192 -0
- package/dist/DemoScreensStrings.js +11 -11
- package/dist/DemoScreensTermsScreen.d.ts +28 -0
- package/dist/DemoScreensTermsScreen.js +26 -0
- package/dist/EkybAddressDetailsScreen.js +9 -5
- package/dist/EkybBusinessDetailsScreen.js +6 -3
- package/dist/EkybOwnersScreen.d.ts +4 -0
- package/dist/EkybOwnersScreen.js +13 -5
- package/dist/EkybStrings.d.ts +12 -1
- package/dist/EkycCountryCatalog.d.ts +46 -0
- package/dist/EkycCountryCatalog.js +139 -0
- package/dist/EkycCountryFormScreen.d.ts +36 -0
- package/dist/EkycCountryFormScreen.js +94 -0
- package/dist/EkycDetailsScreen.js +11 -4
- package/dist/EkycLayout.css +23 -0
- package/dist/EkycLicenseScreen.js +7 -3
- package/dist/EkycStrings.d.ts +26 -0
- package/dist/FaceMatchComparisonScreen.d.ts +4 -2
- package/dist/FaceMatchComparisonScreen.js +3 -1
- package/dist/FaceMatchLayout.css +53 -3
- package/dist/FormScreen.css +74 -0
- package/dist/FormScreen.d.ts +17 -0
- package/dist/FormScreen.js +12 -1
- package/dist/index.d.ts +15 -2
- package/dist/index.js +13 -0
- package/dist/styles.css +1 -0
- package/package.json +62 -1
- package/src/DemoScreensConfigScreen.tsx +101 -0
- package/src/DemoScreensConfigSheetScreen.tsx +120 -0
- package/src/DemoScreensEditSheetScreen.tsx +103 -0
- package/src/DemoScreensEndScreen.tsx +14 -38
- package/src/DemoScreensLaunchScreen.tsx +96 -0
- package/src/DemoScreensLayout.css +542 -0
- package/src/DemoScreensRedirectScreen.tsx +190 -0
- package/src/DemoScreensResultScreen.tsx +115 -0
- package/src/DemoScreensRunningScreen.tsx +45 -0
- package/src/DemoScreensSettingsScreen.tsx +101 -0
- package/src/DemoScreensSplashScreen.tsx +47 -0
- package/src/DemoScreensStartScreen.tsx +105 -0
- package/src/DemoScreensStrings.ts +204 -11
- package/src/DemoScreensTermsScreen.tsx +82 -0
- package/src/EkybAddressDetailsScreen.tsx +7 -1
- package/src/EkybBusinessDetailsScreen.tsx +6 -1
- package/src/EkybOwnersScreen.tsx +46 -2
- package/src/EkybStrings.ts +12 -0
- package/src/EkycCountryCatalog.ts +199 -0
- package/src/EkycCountryFormScreen.tsx +184 -0
- package/src/EkycDetailsScreen.tsx +29 -20
- package/src/EkycLayout.css +23 -0
- package/src/EkycLicenseScreen.tsx +22 -16
- package/src/EkycStrings.ts +25 -0
- package/src/FaceMatchComparisonScreen.tsx +11 -3
- package/src/FaceMatchLayout.css +53 -3
- package/src/FormScreen.css +74 -0
- package/src/FormScreen.tsx +27 -1
- package/src/index.ts +65 -1
- package/src/styles.css +1 -0
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
/* Demo screens — module layout additions.
|
|
2
|
+
*
|
|
3
|
+
* Two of the five Demo App screens are not an archetype: the SPLASH (a brand
|
|
4
|
+
* stage with the wordmark on it, no nav, no tag) and the START screen (a
|
|
5
|
+
* language block and a menu affordance in the header row, the wordmark in the
|
|
6
|
+
* middle, one CTA). Everything else in the family is archetype C or F and
|
|
7
|
+
* declares nothing here. Every value below is a Core token, or a literal
|
|
8
|
+
* measured off the Figma frame and named as such — the same idiom as
|
|
9
|
+
* `ScreenNav.css`'s 44px row.
|
|
10
|
+
*
|
|
11
|
+
* Figma: `Demo App - Latest Design` (FA4ZXKH3meKQnFmDsBsMdk) · `Web › Mobile`
|
|
12
|
+
* `demo_1` (2010:5868) and `demo_2` (2010:5925); the desktop pair draws the
|
|
13
|
+
* same column centred in a 1440 browser window.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/* ── Splash — `demo_1` ───────────────────────────────────────────────────────
|
|
17
|
+
* The whole stage is Surface/Brand/500 (Figma: #006AFF, the brand blue at the
|
|
18
|
+
* time of the frame; the token is what the app ships). The wordmark and the
|
|
19
|
+
* caption go white through the two opt-in hooks Core already exposes:
|
|
20
|
+
* `--prizma-logo-fill` on Logo, Text/Body/0 static on the caption.
|
|
21
|
+
* Doubled selector on purpose: `.prizma-screen-shell` paints Surface/Neutral/0
|
|
22
|
+
* at (0,1,0) and the sheets load in whatever order the bundler picks, so the
|
|
23
|
+
* stage colour has to outrank it rather than out-order it. */
|
|
24
|
+
.prizma-screen-shell.demo-screens-splash {
|
|
25
|
+
background: var(--prizma-surface-brand-500);
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: center;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.demo-screens-splash .demo-screens-wordmark {
|
|
31
|
+
--prizma-logo-fill: var(--prizma-text-body-0-static);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.demo-screens-splash .demo-screens-wordmark__caption {
|
|
35
|
+
color: var(--prizma-text-body-0-static);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* On a device panel wider than the phone (Core Lab's `screenOnDevice`, the
|
|
39
|
+
* Demo App's desktop) the splash is the whole window, not a blue column on
|
|
40
|
+
* white — `demo_1`'s desktop twin (2010:6362) fills the 1440 frame. The panel
|
|
41
|
+
* paints itself and the column lets go of its 390 (Elena, 2026-09-24: "aquí
|
|
42
|
+
* tiene que ser todo azul"). `:has()` because the panel is the host's element
|
|
43
|
+
* and the screen can only reach it from below; `!important` because the host
|
|
44
|
+
* sizes the column inline. */
|
|
45
|
+
[data-pcs-device-area]:has(> [data-pcs-device-content] > .demo-screens-splash) {
|
|
46
|
+
background: var(--prizma-surface-brand-500) !important;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
[data-pcs-device-content]:has(> .demo-screens-splash) {
|
|
50
|
+
left: 0 !important;
|
|
51
|
+
width: 100% !important;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* ── The wordmark block — splash and start ──────────────────────────────────
|
|
55
|
+
* Logo 187 × 51 on the frame, caption H4 (18 / 500) at Spacing/4 beneath it
|
|
56
|
+
* (Figma: logo box 60 tall, caption at +65). Core's Logo is authored at 88 × 24
|
|
57
|
+
* and scales with its box, so the width is the ONE literal: 187 is the frame's
|
|
58
|
+
* measure, not a token, and it is written once. */
|
|
59
|
+
.demo-screens-wordmark {
|
|
60
|
+
display: flex;
|
|
61
|
+
flex-direction: column;
|
|
62
|
+
align-items: center;
|
|
63
|
+
gap: var(--prizma-spacing-4);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.demo-screens-wordmark .prizma-logo > svg {
|
|
67
|
+
width: 187px; /* measured — Figma `Logo / Incode` 187 × 51 on demo_1 / demo_2 */
|
|
68
|
+
height: auto;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.demo-screens-wordmark__caption {
|
|
72
|
+
margin: 0;
|
|
73
|
+
font-family: var(--prizma-body-family);
|
|
74
|
+
font-size: var(--prizma-headline-h4-font-size);
|
|
75
|
+
font-weight: var(--prizma-headline-h4-font-weight);
|
|
76
|
+
line-height: var(--prizma-headline-h4-line-height);
|
|
77
|
+
letter-spacing: var(--prizma-headline-h4-letter-spacing);
|
|
78
|
+
color: var(--prizma-text-body-500-secondary);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* ── Start — `demo_2` header row ─────────────────────────────────────────────
|
|
82
|
+
* Sits where every other screen puts its logo nav (same status-bar offset,
|
|
83
|
+
* same 44 row, same gutters), but carries the language block on the left and
|
|
84
|
+
* the menu affordance on the right instead of a centred wordmark. */
|
|
85
|
+
.demo-screens-start__header {
|
|
86
|
+
flex-shrink: 0;
|
|
87
|
+
display: flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
justify-content: space-between;
|
|
90
|
+
margin-top: calc(var(--pcs-status-bar, 47px) + var(--prizma-spacing-12));
|
|
91
|
+
min-height: 44px; /* the nav row — GUIDELINES §3, same literal as ScreenNav.css */
|
|
92
|
+
padding-inline: var(--prizma-spacing-24);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.demo-screens-start__language {
|
|
96
|
+
display: flex;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
gap: var(--prizma-spacing-2);
|
|
99
|
+
font-family: var(--prizma-body-family);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.demo-screens-start__language-label {
|
|
103
|
+
font-size: var(--prizma-label-m-font-size);
|
|
104
|
+
font-weight: var(--prizma-label-m-font-weight);
|
|
105
|
+
line-height: var(--prizma-label-m-line-height);
|
|
106
|
+
letter-spacing: var(--prizma-label-m-letter-spacing);
|
|
107
|
+
color: var(--prizma-text-body-800-primary);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.demo-screens-start__language-value {
|
|
111
|
+
display: inline-flex;
|
|
112
|
+
align-items: center;
|
|
113
|
+
gap: var(--prizma-spacing-4);
|
|
114
|
+
font-size: var(--prizma-label-m-regular-font-size);
|
|
115
|
+
font-weight: var(--prizma-label-m-regular-font-weight);
|
|
116
|
+
line-height: var(--prizma-label-m-regular-line-height);
|
|
117
|
+
letter-spacing: var(--prizma-label-m-regular-letter-spacing);
|
|
118
|
+
color: var(--prizma-text-body-500-secondary);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.demo-screens-start__language-value img {
|
|
122
|
+
height: 12px; /* the flag raster at the label's cap height — measured, demo_2 */
|
|
123
|
+
width: auto;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* The menu affordance: Core's nav icon button, reused by class so the hit
|
|
127
|
+
* area, the colour and the focus ring are Navigation's own — nothing new. */
|
|
128
|
+
.demo-screens-start__menu {
|
|
129
|
+
margin-inline-end: calc(-1 * var(--prizma-spacing-8));
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* The wordmark block fills the flexible middle, centred. */
|
|
133
|
+
.demo-screens-start__middle {
|
|
134
|
+
flex: 1;
|
|
135
|
+
min-height: 0;
|
|
136
|
+
display: flex;
|
|
137
|
+
align-items: center;
|
|
138
|
+
justify-content: center;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* ── Settings — `demo_3` header row ─────────────────────────────────────────
|
|
142
|
+
* Core's Navigation with the logo off and the close X on: the bar keeps the
|
|
143
|
+
* nav row's offset so the title lands where every other screen's first block
|
|
144
|
+
* lands. */
|
|
145
|
+
.demo-screens-settings__nav {
|
|
146
|
+
flex-shrink: 0;
|
|
147
|
+
margin-top: calc(var(--pcs-status-bar, 47px) + var(--prizma-spacing-12));
|
|
148
|
+
height: 44px; /* the nav row — GUIDELINES §3 */
|
|
149
|
+
padding-inline: var(--prizma-spacing-24);
|
|
150
|
+
display: flex;
|
|
151
|
+
align-items: center;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.demo-screens-settings__nav .prizma-nav {
|
|
155
|
+
position: static;
|
|
156
|
+
width: 100%;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* Title → dropdown Spacing/32: Figma puts the field 31 under the H2 (113 → 172). */
|
|
160
|
+
.demo-screens-settings__fields {
|
|
161
|
+
display: flex;
|
|
162
|
+
flex-direction: column;
|
|
163
|
+
gap: var(--prizma-spacing-16);
|
|
164
|
+
padding-top: var(--prizma-spacing-32);
|
|
165
|
+
flex: 1;
|
|
166
|
+
min-height: 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* The language rows carry the flag raster at the label's cap height. */
|
|
170
|
+
.demo-screens-settings__flag {
|
|
171
|
+
height: 12px; /* measured, demo_4 rows */
|
|
172
|
+
width: auto;
|
|
173
|
+
display: inline-block;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/* ── The tag-less CTA band — Start and Settings ──────────────────────────────
|
|
177
|
+
* `__band--bare` gives the Spacing/24 to the bottom; as a shell child the band
|
|
178
|
+
* still needs the column's gutters, which `--result` carries and `--bare` does
|
|
179
|
+
* not. Nothing else: the button is Core's, the gap is the band's. */
|
|
180
|
+
.demo-screens-band {
|
|
181
|
+
padding-inline: var(--prizma-spacing-24);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* ── Native flow ─────────────────────────────────────────────────────────────
|
|
185
|
+
* Figma: `Demo App - Latest Design` › `iOS` (2010:4692). Android draws the same
|
|
186
|
+
* screens; the reference is iOS (Elena, 2026-09-24). */
|
|
187
|
+
|
|
188
|
+
/* Configuration — a field stack under the logo nav, archetype E's own
|
|
189
|
+
* measures: Spacing/16 between fields, the CTA in the bare band. Figma puts
|
|
190
|
+
* the first field 44 under the nav row (62+44 → 148); the content column's
|
|
191
|
+
* 24 plus this 20 reach it. */
|
|
192
|
+
.demo-screens-config__fields {
|
|
193
|
+
display: flex;
|
|
194
|
+
flex-direction: column;
|
|
195
|
+
gap: var(--prizma-spacing-16);
|
|
196
|
+
padding-top: var(--prizma-spacing-20);
|
|
197
|
+
flex: 1;
|
|
198
|
+
min-height: 0;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* Terms — the logo sits LEFT (Figma 32 / 85), the document scrolls, and the
|
|
202
|
+
* consent row + CTA ride the bare band. */
|
|
203
|
+
.demo-screens-terms__header {
|
|
204
|
+
flex-shrink: 0;
|
|
205
|
+
display: flex;
|
|
206
|
+
align-items: center;
|
|
207
|
+
margin-top: calc(var(--pcs-status-bar, 47px) + var(--prizma-spacing-12));
|
|
208
|
+
min-height: 44px; /* the nav row — GUIDELINES §3 */
|
|
209
|
+
padding-inline: var(--prizma-spacing-24);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.demo-screens-terms__meta {
|
|
213
|
+
margin: 0;
|
|
214
|
+
font-family: var(--prizma-body-family);
|
|
215
|
+
font-size: var(--prizma-label-m-regular-font-size);
|
|
216
|
+
font-weight: var(--prizma-label-m-regular-font-weight);
|
|
217
|
+
line-height: var(--prizma-label-m-regular-line-height);
|
|
218
|
+
color: var(--prizma-text-body-500-secondary);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.demo-screens-terms__body {
|
|
222
|
+
flex: 1;
|
|
223
|
+
min-height: 0;
|
|
224
|
+
overflow-y: auto;
|
|
225
|
+
margin-top: var(--prizma-spacing-16);
|
|
226
|
+
font-family: var(--prizma-body-family);
|
|
227
|
+
font-size: var(--prizma-body-m-regular-font-size);
|
|
228
|
+
font-weight: var(--prizma-body-m-regular-font-weight);
|
|
229
|
+
line-height: var(--prizma-body-m-regular-line-height);
|
|
230
|
+
letter-spacing: var(--prizma-body-m-regular-letter-spacing);
|
|
231
|
+
color: var(--prizma-text-body-800-primary);
|
|
232
|
+
white-space: pre-line;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/* The consent row above the CTA takes the band's own Spacing/16. */
|
|
236
|
+
.demo-screens-terms__consent {
|
|
237
|
+
display: flex;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Launch — the caption under the CTA: "Environment: Stage", value in brand. */
|
|
241
|
+
.demo-screens-launch__env {
|
|
242
|
+
margin: 0;
|
|
243
|
+
text-align: center;
|
|
244
|
+
font-family: var(--prizma-body-family);
|
|
245
|
+
font-size: var(--prizma-label-m-regular-font-size);
|
|
246
|
+
font-weight: var(--prizma-label-m-regular-font-weight);
|
|
247
|
+
line-height: var(--prizma-label-m-regular-line-height);
|
|
248
|
+
color: var(--prizma-text-body-800-primary);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.demo-screens-launch__env b {
|
|
252
|
+
font-weight: inherit;
|
|
253
|
+
color: var(--prizma-text-accent-brand);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* The header's left text on Launch ("Flow: Digital ID Flow"). */
|
|
257
|
+
.demo-screens-start__flow {
|
|
258
|
+
font-family: var(--prizma-body-family);
|
|
259
|
+
font-size: var(--prizma-label-m-regular-font-size);
|
|
260
|
+
font-weight: var(--prizma-label-m-regular-font-weight);
|
|
261
|
+
line-height: var(--prizma-label-m-regular-line-height);
|
|
262
|
+
color: var(--prizma-text-body-800-primary);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/* A snackbar over the top of a screen (Launch "Flow saved", the sheet's
|
|
266
|
+
* "settings saved"): Core's Snackbar, anchored where the frame draws it — the
|
|
267
|
+
* nav row, full gutter width. */
|
|
268
|
+
.demo-screens-toast {
|
|
269
|
+
position: absolute;
|
|
270
|
+
z-index: 3;
|
|
271
|
+
left: var(--prizma-spacing-24);
|
|
272
|
+
right: var(--prizma-spacing-24);
|
|
273
|
+
top: calc(var(--pcs-status-bar, 47px) + var(--prizma-spacing-8));
|
|
274
|
+
display: flex;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.demo-screens-toast .prizma-snackbar {
|
|
278
|
+
width: 100%;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* ── The two sheets ──────────────────────────────────────────────────────────
|
|
282
|
+
* Same idiom as Document Capture's method sheet (DEVIATIONS #DC-30): the
|
|
283
|
+
* screen owns the scrim, Core's `PrizmaBottomSheetContent` owns the panel. The
|
|
284
|
+
* frame draws the sheet from 74 down (grabber at 79), so the panel starts at
|
|
285
|
+
* the status bar plus Spacing/24 and fills to the bottom. */
|
|
286
|
+
.demo-screens-sheet-scrim {
|
|
287
|
+
position: absolute;
|
|
288
|
+
inset: 0;
|
|
289
|
+
z-index: 1;
|
|
290
|
+
background: var(--prizma-surface-overlay);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.demo-screens-sheet-panel {
|
|
294
|
+
position: absolute;
|
|
295
|
+
left: 0;
|
|
296
|
+
right: 0;
|
|
297
|
+
bottom: 0;
|
|
298
|
+
top: calc(var(--pcs-status-bar, 47px) + var(--prizma-spacing-24));
|
|
299
|
+
z-index: 2;
|
|
300
|
+
display: flex;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.demo-screens-sheet-panel .prizma-bottom-sheet {
|
|
304
|
+
flex: 1;
|
|
305
|
+
min-height: 0;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.demo-screens-sheet-panel .prizma-bottom-sheet__content,
|
|
309
|
+
.demo-screens-sheet-panel .prizma-bottom-sheet__body {
|
|
310
|
+
flex: 1;
|
|
311
|
+
min-height: 0;
|
|
312
|
+
display: flex;
|
|
313
|
+
flex-direction: column;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.demo-screens-sheet__nav {
|
|
317
|
+
flex-shrink: 0;
|
|
318
|
+
height: 44px; /* the nav row — GUIDELINES §3 */
|
|
319
|
+
display: flex;
|
|
320
|
+
align-items: center;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.demo-screens-sheet__nav .prizma-nav {
|
|
324
|
+
position: static;
|
|
325
|
+
width: 100%;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/* Title 16 under the nav row (Figma 152 → 168); fields Spacing/32 under the
|
|
329
|
+
* title block, as archetype E. */
|
|
330
|
+
.demo-screens-sheet__title {
|
|
331
|
+
padding-top: var(--prizma-spacing-16);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.demo-screens-sheet__fields {
|
|
335
|
+
display: flex;
|
|
336
|
+
flex-direction: column;
|
|
337
|
+
gap: var(--prizma-spacing-16);
|
|
338
|
+
padding-top: var(--prizma-spacing-32);
|
|
339
|
+
flex: 1;
|
|
340
|
+
min-height: 0;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/* The two read-only lines under the flow picker. */
|
|
344
|
+
.demo-screens-sheet__line {
|
|
345
|
+
margin: 0;
|
|
346
|
+
font-family: var(--prizma-body-family);
|
|
347
|
+
font-size: var(--prizma-label-m-regular-font-size);
|
|
348
|
+
font-weight: var(--prizma-label-m-regular-font-weight);
|
|
349
|
+
line-height: var(--prizma-label-m-regular-line-height);
|
|
350
|
+
color: var(--prizma-text-body-800-primary);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.demo-screens-sheet__lines {
|
|
354
|
+
display: flex;
|
|
355
|
+
flex-direction: column;
|
|
356
|
+
gap: var(--prizma-spacing-8);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/* CTA band at the foot of the sheet: primary → tertiary link → build caption,
|
|
360
|
+
* at the band's flat Spacing/16, then Spacing/24 to the bottom (bare). */
|
|
361
|
+
.demo-screens-sheet__band {
|
|
362
|
+
flex-shrink: 0;
|
|
363
|
+
display: flex;
|
|
364
|
+
flex-direction: column;
|
|
365
|
+
gap: var(--prizma-spacing-16);
|
|
366
|
+
padding-bottom: var(--prizma-spacing-24);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.demo-screens-sheet__band .prizma-button {
|
|
370
|
+
width: 100%;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.demo-screens-build {
|
|
374
|
+
margin: 0;
|
|
375
|
+
text-align: center;
|
|
376
|
+
font-family: var(--prizma-body-family);
|
|
377
|
+
font-size: var(--prizma-label-m-regular-font-size);
|
|
378
|
+
font-weight: var(--prizma-label-m-regular-font-weight);
|
|
379
|
+
line-height: var(--prizma-label-m-regular-line-height);
|
|
380
|
+
color: var(--prizma-text-body-500-secondary);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/* ── Redirect — the desktop page (4272:11166) ────────────────────────────────
|
|
384
|
+
* One card, 800 wide on the frame with a 752 content column (24 gutters),
|
|
385
|
+
* centred in the window on a Surface/Neutral/50 page. The shell IS the page;
|
|
386
|
+
* the card is the only thing on it. Inside, archetype F's skeleton: nav →
|
|
387
|
+
* centred title block → the leg → CTA band → tag. */
|
|
388
|
+
.prizma-screen-shell.demo-screens-redirect {
|
|
389
|
+
background: var(--prizma-surface-neutral-50);
|
|
390
|
+
align-items: center;
|
|
391
|
+
justify-content: center;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.demo-screens-redirect__card {
|
|
395
|
+
position: relative;
|
|
396
|
+
display: flex;
|
|
397
|
+
flex-direction: column;
|
|
398
|
+
width: 100%;
|
|
399
|
+
max-width: 800px; /* measured — the frame's card */
|
|
400
|
+
background: var(--prizma-surface-neutral-0);
|
|
401
|
+
border: var(--prizma-border-width-regular) solid var(--prizma-border-neutral-100);
|
|
402
|
+
border-radius: var(--prizma-border-radius-medium); /* Figma `Content`: r16 */
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/* The card's nav row has no status bar above it: the offset collapses to the
|
|
406
|
+
* frame's 24 (logo at 212, card at 188). */
|
|
407
|
+
.demo-screens-redirect__card .prizma-screen-nav {
|
|
408
|
+
margin-top: var(--prizma-spacing-24);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/* Doubled selector: the foundation reserves the anchored footer's space on
|
|
412
|
+
* every content column (`:has(.__band__tag)` → 88px of padding-bottom) and
|
|
413
|
+
* flexes it to fill the shell. Here nothing is anchored — the card hugs its
|
|
414
|
+
* content and the tag rides in the band — so the column keeps only its own
|
|
415
|
+
* height and the band's Spacing/24 is the whole gap to the CTA (Elena,
|
|
416
|
+
* 2026-09-24: "hay un spacing innecesario"). */
|
|
417
|
+
.demo-screens-redirect .demo-screens-redirect__content {
|
|
418
|
+
flex: 0 0 auto;
|
|
419
|
+
align-items: center;
|
|
420
|
+
gap: var(--prizma-spacing-32);
|
|
421
|
+
padding-top: var(--prizma-spacing-8);
|
|
422
|
+
padding-bottom: 0;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/* Tabs — Core has no Tabs primitive yet (DEVIATIONS #GEN-15). Two text
|
|
426
|
+
* buttons over a hairline; the active one carries the brand underline. Type is
|
|
427
|
+
* the H5 ramp the frame uses (16 / 500), colours the body tokens. */
|
|
428
|
+
.demo-screens-tabs {
|
|
429
|
+
display: flex;
|
|
430
|
+
justify-content: center;
|
|
431
|
+
width: 100%;
|
|
432
|
+
max-width: 676px; /* measured — the frame's `tabs` row inside the 752 column */
|
|
433
|
+
border-bottom: var(--prizma-border-width-regular) solid var(--prizma-border-neutral-100);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.demo-screens-tabs__tab {
|
|
437
|
+
appearance: none;
|
|
438
|
+
background: transparent;
|
|
439
|
+
border: 0;
|
|
440
|
+
margin: 0;
|
|
441
|
+
padding: var(--prizma-spacing-8) var(--prizma-spacing-12);
|
|
442
|
+
margin-bottom: calc(-1 * var(--prizma-border-width-regular));
|
|
443
|
+
border-bottom: var(--prizma-border-width-bold) solid transparent;
|
|
444
|
+
cursor: pointer;
|
|
445
|
+
font-family: var(--prizma-body-family);
|
|
446
|
+
font-size: var(--prizma-headline-h5-font-size);
|
|
447
|
+
font-weight: var(--prizma-headline-h5-font-weight);
|
|
448
|
+
line-height: var(--prizma-headline-h5-line-height);
|
|
449
|
+
letter-spacing: var(--prizma-headline-h5-letter-spacing);
|
|
450
|
+
color: var(--prizma-text-body-500-secondary);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
.demo-screens-tabs__tab--active {
|
|
454
|
+
color: var(--prizma-text-body-800-primary);
|
|
455
|
+
border-bottom-color: var(--prizma-border-brand-500);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
.demo-screens-redirect__leg {
|
|
459
|
+
display: flex;
|
|
460
|
+
flex-direction: column;
|
|
461
|
+
align-items: center;
|
|
462
|
+
gap: var(--prizma-spacing-16);
|
|
463
|
+
width: 100%;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
/* The phone leg lines up with the CTA band below it: one 352 column for the
|
|
467
|
+
* field, the Send button and "Continue on desktop" (Figma draws the form at
|
|
468
|
+
* 326 and the CTAs at 352; Elena, 2026-09-24: keep the longer one, but make
|
|
469
|
+
* everything match). */
|
|
470
|
+
.demo-screens-redirect__leg--form {
|
|
471
|
+
max-width: 352px; /* the CTAs group on the frame — the form joins it */
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
.demo-screens-redirect__leg--form .prizma-button {
|
|
475
|
+
width: 100%;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
.demo-screens-redirect__hint {
|
|
479
|
+
margin: 0;
|
|
480
|
+
text-align: center;
|
|
481
|
+
font-family: var(--prizma-body-family);
|
|
482
|
+
font-size: var(--prizma-headline-h5-font-size);
|
|
483
|
+
font-weight: var(--prizma-headline-h5-font-weight);
|
|
484
|
+
line-height: var(--prizma-headline-h5-line-height);
|
|
485
|
+
letter-spacing: var(--prizma-headline-h5-letter-spacing);
|
|
486
|
+
color: var(--prizma-text-body-500-secondary);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/* The QR well: 200 square, a hairline, radius small (Figma 312 → 512). The
|
|
490
|
+
* image inside is the host's. */
|
|
491
|
+
.demo-screens-redirect__qr {
|
|
492
|
+
width: 200px; /* measured — the frame's QR well */
|
|
493
|
+
height: 200px;
|
|
494
|
+
display: flex;
|
|
495
|
+
align-items: center;
|
|
496
|
+
justify-content: center;
|
|
497
|
+
padding: var(--prizma-spacing-12);
|
|
498
|
+
border: var(--prizma-border-width-regular) solid var(--prizma-border-neutral-100);
|
|
499
|
+
border-radius: var(--prizma-border-radius-small);
|
|
500
|
+
background: var(--prizma-surface-neutral-0);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
.demo-screens-redirect__qr > * {
|
|
504
|
+
width: 100%;
|
|
505
|
+
height: 100%;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/* The CTA band inside the card: F's own band, static (the card hugs its
|
|
509
|
+
* content, nothing is anchored), at the field's 352 (Figma 544 → 896) and
|
|
510
|
+
* Spacing/24 to the card's bottom. The tag rides in the band, as on F. */
|
|
511
|
+
.demo-screens-redirect__band {
|
|
512
|
+
align-self: stretch;
|
|
513
|
+
align-items: center;
|
|
514
|
+
/* The band carries the column's 24 gutters itself (it is a shell child, not
|
|
515
|
+
* inside the content column), so on the phone its 352 clips to the same 342
|
|
516
|
+
* the form gets — the button and the field share one edge (Elena,
|
|
517
|
+
* 2026-09-24: "el botón está más alargado que el resto"). */
|
|
518
|
+
padding: var(--prizma-spacing-24) var(--prizma-spacing-24) var(--prizma-spacing-24);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
.demo-screens-redirect__band > * {
|
|
522
|
+
width: 100%;
|
|
523
|
+
max-width: 352px; /* measured — the CTAs group on the frame */
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
.demo-screens-redirect__band .prizma-screen-layout__band__tag {
|
|
527
|
+
position: static;
|
|
528
|
+
display: flex;
|
|
529
|
+
justify-content: center;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/* The snackbar on a desktop page: hugging, centred, 32 from the top (Figma). */
|
|
533
|
+
.demo-screens-toast--desktop {
|
|
534
|
+
left: 0;
|
|
535
|
+
right: 0;
|
|
536
|
+
top: var(--prizma-spacing-32);
|
|
537
|
+
justify-content: center;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.demo-screens-toast--desktop .prizma-snackbar {
|
|
541
|
+
width: auto;
|
|
542
|
+
}
|