@zappie/theme-base 0.0.0-stage → 0.1.1

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 (50) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/LICENSE +21 -0
  3. package/README.md +37 -2
  4. package/dist/address.d.ts +32 -0
  5. package/dist/address.js +4 -0
  6. package/dist/address.js.map +1 -0
  7. package/dist/cart.d.ts +12 -0
  8. package/dist/cart.js +1140 -0
  9. package/dist/cart.js.map +1 -0
  10. package/dist/catalogue.d.ts +60 -0
  11. package/dist/catalogue.js +1389 -0
  12. package/dist/catalogue.js.map +1 -0
  13. package/dist/checkout.d.ts +36 -0
  14. package/dist/checkout.js +4 -0
  15. package/dist/checkout.js.map +1 -0
  16. package/dist/chunk-2MV6KU3R.js +352 -0
  17. package/dist/chunk-2MV6KU3R.js.map +1 -0
  18. package/dist/chunk-FB5DRCU7.js +146 -0
  19. package/dist/chunk-FB5DRCU7.js.map +1 -0
  20. package/dist/chunk-IG63ONID.js +139 -0
  21. package/dist/chunk-IG63ONID.js.map +1 -0
  22. package/dist/chunk-ILOCSCZL.js +217 -0
  23. package/dist/chunk-ILOCSCZL.js.map +1 -0
  24. package/dist/chunk-JFEI2OUZ.js +13 -0
  25. package/dist/chunk-JFEI2OUZ.js.map +1 -0
  26. package/dist/chunk-NTJONY3N.js +95 -0
  27. package/dist/chunk-NTJONY3N.js.map +1 -0
  28. package/dist/chunk-QWST2TA2.js +22 -0
  29. package/dist/chunk-QWST2TA2.js.map +1 -0
  30. package/dist/chunk-USSLDBDY.js +48 -0
  31. package/dist/chunk-USSLDBDY.js.map +1 -0
  32. package/dist/chunk-VIAJ27YC.js +59 -0
  33. package/dist/chunk-VIAJ27YC.js.map +1 -0
  34. package/dist/host-bridge.d.ts +100 -0
  35. package/dist/host-bridge.js +4 -0
  36. package/dist/host-bridge.js.map +1 -0
  37. package/dist/index.d.ts +3 -0
  38. package/dist/index.js +6 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/item-frame.d.ts +20 -0
  41. package/dist/item-frame.js +5 -0
  42. package/dist/item-frame.js.map +1 -0
  43. package/dist/item.d.ts +20 -0
  44. package/dist/item.js +153 -0
  45. package/dist/item.js.map +1 -0
  46. package/dist/navigation.d.ts +64 -0
  47. package/dist/navigation.js +4 -0
  48. package/dist/navigation.js.map +1 -0
  49. package/dist/styles.css +842 -0
  50. package/package.json +74 -3
@@ -0,0 +1,842 @@
1
+ /* Generated by scripts/build-base-next-theme.mjs. */
2
+ @layer zappie-base-tokens {
3
+ [data-zappie-theme="base"] {
4
+ --z-bg: #f9fafb;
5
+ --z-surface: #ffffff;
6
+ --z-surface-raised: #ffffff;
7
+ --z-overlay: #00000080;
8
+ --z-text: #101828;
9
+ --z-text-muted: #344054;
10
+ --z-text-inverse: #ffffff;
11
+ --z-accent: #9fe870;
12
+ --z-accent-contrast: #163300;
13
+ --z-brand-1: #9fe870;
14
+ --z-brand-2: #163300;
15
+ --z-brand-3: #edc843;
16
+ --z-success: #027a48;
17
+ --z-warning: #ed7a37;
18
+ --z-danger: #f04438;
19
+ --z-border: #eaecf0;
20
+ --z-focus-ring: #163300;
21
+ --z-radius-sm: 6px;
22
+ --z-radius-md: 12px;
23
+ --z-radius-lg: 20px;
24
+ --z-radius-pill: 9999px;
25
+ --z-space-1: 4px;
26
+ --z-space-2: 8px;
27
+ --z-space-3: 12px;
28
+ --z-space-4: 16px;
29
+ --z-space-5: 24px;
30
+ --z-space-6: 32px;
31
+ --z-space-7: 48px;
32
+ --z-space-8: 64px;
33
+ --z-text-xs: 12px;
34
+ --z-text-sm: 14px;
35
+ --z-text-md: 16px;
36
+ --z-text-lg: 18px;
37
+ --z-text-xl: 20px;
38
+ --z-text-2xl: 24px;
39
+ --z-text-3xl: 32px;
40
+ --z-drawer-width: 420px;
41
+ --z-dialog-width: min(1000px, calc(100vw - 32px));
42
+ --z-dialog-height: min(780px, 90dvh);
43
+ --z-media-sm: 64px;
44
+ --z-font-display: system-ui, sans-serif;
45
+ --z-font-body: system-ui, sans-serif;
46
+ --z-font-mono: ui-monospace, monospace;
47
+ --z-duration-fast: 120ms;
48
+ --z-duration-base: 200ms;
49
+ --z-duration-slow: 320ms;
50
+ --z-ease-out: cubic-bezier(0, 0, 0.2, 1);
51
+ --z-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
52
+ color-scheme: light;
53
+ }
54
+ :root:is([data-theme="dark"], .dark) [data-zappie-theme="base"] {
55
+ --z-bg: #000000;
56
+ --z-surface: #242424;
57
+ --z-surface-raised: #333333;
58
+ --z-text: #ffffff;
59
+ --z-text-muted: #bfbfbf;
60
+ --z-text-inverse: #101828;
61
+ --z-border: #474747;
62
+ --z-focus-ring: #9fe870;
63
+ color-scheme: dark;
64
+ }
65
+ @media (prefers-reduced-motion: reduce) {
66
+ [data-zappie-theme="base"] {
67
+ --z-duration-fast: 0ms;
68
+ --z-duration-base: 0ms;
69
+ --z-duration-slow: 0ms;
70
+ }
71
+ }
72
+ }
73
+ /* Cart overlay surface, header and primary buttons. */
74
+ @layer components {
75
+ [data-zappie-theme="base"].z-base-cart {
76
+ position: fixed;
77
+ z-index: 1201;
78
+ display: flex;
79
+ flex-direction: column;
80
+ color: var(--z-text);
81
+ background: var(--z-surface);
82
+ font-family: var(--z-font-body);
83
+ font-size: var(--z-text-md);
84
+ box-shadow: 0 0 0 100vmax var(--z-overlay);
85
+ overflow: auto;
86
+ overscroll-behavior: contain;
87
+ }
88
+ [data-zappie-theme="base"][data-presentation="drawer"] {
89
+ inset: 0;
90
+ height: 100dvh;
91
+ transform: translateY(var(--drawer-swipe-movement-y, 0px));
92
+ }
93
+ [data-zappie-theme="base"][data-presentation="dialog"] {
94
+ top: 50%;
95
+ left: 50%;
96
+ transform: translate(-50%, -50%);
97
+ width: var(--z-dialog-width);
98
+ height: var(--z-dialog-height);
99
+ border-radius: var(--z-radius-lg);
100
+ }
101
+ [data-zappie-theme="base"] .z-base-cart-header {
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: space-between;
105
+ padding: var(--z-space-5);
106
+ border-bottom: 1px solid var(--z-border);
107
+ }
108
+ [data-zappie-theme="base"] .z-base-cart-body {
109
+ display: flex;
110
+ flex-direction: column;
111
+ align-items: stretch;
112
+ flex: 1;
113
+ gap: var(--z-space-4);
114
+ padding: var(--z-space-5);
115
+ }
116
+ [data-zappie-theme="base"] .z-base-button {
117
+ padding: var(--z-space-3) var(--z-space-4);
118
+ color: var(--z-accent-contrast);
119
+ background: var(--z-accent);
120
+ border-radius: var(--z-radius-md);
121
+ cursor: pointer;
122
+ }
123
+ [data-zappie-theme="base"] .z-base-button:focus-visible {
124
+ outline: 2px solid var(--z-focus-ring);
125
+ outline-offset: 2px;
126
+ }
127
+ }
128
+
129
+ /* Cart contents: empty state, lines, quantities, totals and issues. */
130
+ @layer components {
131
+ [data-zappie-theme="base"] .z-base-cart-empty {
132
+ display: flex;
133
+ flex: 1;
134
+ flex-direction: column;
135
+ align-items: center;
136
+ justify-content: center;
137
+ gap: var(--z-space-4);
138
+ text-align: center;
139
+ padding: var(--z-space-5);
140
+ }
141
+ [data-zappie-theme="base"] .z-base-cart-placeholder {
142
+ width: 100%;
143
+ height: var(--z-media-sm);
144
+ background: var(--z-bg);
145
+ border-radius: var(--z-radius-md);
146
+ }
147
+ [data-zappie-theme="base"] .z-base-button-secondary {
148
+ padding: var(--z-space-2) var(--z-space-3);
149
+ border: 1px solid var(--z-border);
150
+ border-radius: var(--z-radius-md);
151
+ color: var(--z-text);
152
+ background: var(--z-surface);
153
+ cursor: pointer;
154
+ min-height: 44px;
155
+ }
156
+ [data-zappie-theme="base"] button:disabled {
157
+ opacity: 0.5;
158
+ cursor: not-allowed;
159
+ }
160
+ [data-zappie-theme="base"] :is(button, input, textarea):focus-visible {
161
+ outline: 2px solid var(--z-focus-ring);
162
+ outline-offset: 2px;
163
+ }
164
+ [data-zappie-theme="base"] :is(h2, h3) {
165
+ font-weight: 600;
166
+ }
167
+ [data-zappie-theme="base"] .z-base-cart-tools,
168
+ [data-zappie-theme="base"] .z-base-line-heading {
169
+ display: flex;
170
+ align-items: center;
171
+ justify-content: space-between;
172
+ gap: var(--z-space-3);
173
+ }
174
+ [data-zappie-theme="base"] .z-base-cart-columns {
175
+ display: grid;
176
+ gap: var(--z-space-5);
177
+ }
178
+ [data-zappie-theme="base"][data-presentation="dialog"] .z-base-cart-columns {
179
+ grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
180
+ }
181
+ [data-zappie-theme="base"] .z-base-line {
182
+ padding: var(--z-space-4) 0;
183
+ border-bottom: 1px solid var(--z-border);
184
+ }
185
+ [data-zappie-theme="base"] .z-base-line-group + .z-base-line-group {
186
+ margin-top: var(--z-space-5);
187
+ }
188
+ [data-zappie-theme="base"] .z-base-line-group > h2 {
189
+ padding-bottom: var(--z-space-2);
190
+ border-bottom: 1px solid var(--z-border);
191
+ }
192
+ [data-zappie-theme="base"] :is(.z-base-line-options, .z-base-muted) {
193
+ font-size: var(--z-text-sm);
194
+ color: var(--z-text-muted);
195
+ margin-block: var(--z-space-2);
196
+ }
197
+ [data-zappie-theme="base"] .z-base-line-actions {
198
+ display: flex;
199
+ flex-wrap: wrap;
200
+ gap: var(--z-space-2);
201
+ align-items: center;
202
+ }
203
+ [data-zappie-theme="base"] .z-base-quantity {
204
+ display: inline-flex;
205
+ border: 1px solid var(--z-border);
206
+ border-radius: var(--z-radius-md);
207
+ overflow: hidden;
208
+ }
209
+ [data-zappie-theme="base"] .z-base-quantity :is(button, input) {
210
+ min-height: 44px;
211
+ width: 44px;
212
+ text-align: center;
213
+ color: var(--z-text);
214
+ background: var(--z-surface);
215
+ }
216
+ [data-zappie-theme="base"] .z-base-summary {
217
+ border: 1px solid var(--z-border);
218
+ padding: var(--z-space-4);
219
+ border-radius: var(--z-radius-md);
220
+ display: flex;
221
+ flex-direction: column;
222
+ gap: var(--z-space-3);
223
+ }
224
+ [data-zappie-theme="base"] .z-base-totals > div {
225
+ display: flex;
226
+ justify-content: space-between;
227
+ gap: var(--z-space-3);
228
+ margin-block: var(--z-space-2);
229
+ }
230
+ [data-zappie-theme="base"] .z-base-total {
231
+ border-top: 1px solid var(--z-border);
232
+ padding-top: var(--z-space-3);
233
+ font-weight: 600;
234
+ }
235
+ [data-zappie-theme="base"] .z-base-checkout button {
236
+ width: 100%;
237
+ min-height: 44px;
238
+ }
239
+ [data-zappie-theme="base"] .z-base-issues {
240
+ border: 1px solid var(--z-danger);
241
+ border-radius: var(--z-radius-md);
242
+ padding: var(--z-space-3);
243
+ }
244
+ [data-zappie-theme="base"] .z-base-issues li {
245
+ margin-top: var(--z-space-2);
246
+ }
247
+ [data-zappie-theme="base"] .z-base-option-list {
248
+ display: flex;
249
+ flex-direction: column;
250
+ gap: var(--z-space-3);
251
+ }
252
+ [data-zappie-theme="base"] .z-base-option-list > li {
253
+ display: flex;
254
+ align-items: center;
255
+ justify-content: space-between;
256
+ gap: var(--z-space-3);
257
+ padding-block: var(--z-space-2);
258
+ border-bottom: 1px solid var(--z-border);
259
+ }
260
+ [data-zappie-theme="base"] .z-base-notice {
261
+ padding: var(--z-space-3);
262
+ border: 1px solid var(--z-warning);
263
+ border-radius: var(--z-radius-md);
264
+ color: var(--z-text);
265
+ background: var(--z-surface);
266
+ }
267
+ [data-zappie-theme="base"] .z-base-notice[data-severity="error"] {
268
+ border-color: var(--z-danger);
269
+ }
270
+ [data-zappie-theme="base"] .z-base-fulfilment {
271
+ margin-bottom: var(--z-space-3);
272
+ font-weight: 600;
273
+ }
274
+ }
275
+
276
+ /* Nested sheets: line editor, confirmation, options, fields, fulfilment and address search. */
277
+ @layer components {
278
+ [data-zappie-theme="base"].z-base-editor {
279
+ z-index: 1202;
280
+ }
281
+ [data-zappie-theme="base"][data-presentation="dialog"].z-base-confirm {
282
+ z-index: 1202;
283
+ width: min(400px, calc(100vw - 32px));
284
+ height: auto;
285
+ padding: var(--z-space-5);
286
+ gap: var(--z-space-3);
287
+ }
288
+ [data-zappie-theme="base"] .z-base-confirm-actions {
289
+ display: flex;
290
+ justify-content: flex-end;
291
+ gap: var(--z-space-2);
292
+ }
293
+ [data-zappie-theme="base"][data-presentation="sheet"].z-base-editor {
294
+ inset: 0;
295
+ height: 100dvh;
296
+ transform: translateX(var(--drawer-swipe-movement-x, 0px));
297
+ }
298
+ [data-zappie-theme="base"] :is(.z-base-option-group, .z-base-field) {
299
+ display: flex;
300
+ flex-direction: column;
301
+ gap: var(--z-space-2);
302
+ }
303
+ [data-zappie-theme="base"] .z-base-choice-row {
304
+ display: flex;
305
+ gap: var(--z-space-2);
306
+ align-items: center;
307
+ }
308
+ [data-zappie-theme="base"] .z-base-choice {
309
+ flex: 1;
310
+ text-align: left;
311
+ padding: var(--z-space-3);
312
+ border: 1px solid var(--z-border);
313
+ border-radius: var(--z-radius-md);
314
+ }
315
+ [data-zappie-theme="base"] .z-base-choice[data-selected] {
316
+ border-color: var(--z-accent-contrast);
317
+ background: var(--z-accent);
318
+ color: var(--z-accent-contrast);
319
+ }
320
+ [data-zappie-theme="base"] .z-base-input {
321
+ padding: var(--z-space-3);
322
+ border: 1px solid var(--z-border);
323
+ border-radius: var(--z-radius-md);
324
+ background: var(--z-surface);
325
+ color: var(--z-text);
326
+ }
327
+ }
328
+
329
+ @layer components {
330
+ [data-zappie-theme="base"] .z-base-fulfilment-panel {
331
+ display: flex;
332
+ flex-direction: column;
333
+ gap: var(--z-space-3);
334
+ margin-bottom: var(--z-space-4);
335
+ }
336
+ [data-zappie-theme="base"] .z-base-button-secondary[aria-pressed="true"] {
337
+ background: var(--z-accent);
338
+ color: var(--z-accent-contrast);
339
+ border-color: var(--z-accent-contrast);
340
+ }
341
+ [data-zappie-theme="base"] .z-base-suggestions {
342
+ display: flex;
343
+ flex-direction: column;
344
+ gap: var(--z-space-2);
345
+ margin-top: var(--z-space-2);
346
+ }
347
+ [data-zappie-theme="base"] .z-base-suggestions [aria-selected="true"] {
348
+ background: var(--z-accent);
349
+ color: var(--z-accent-contrast);
350
+ }
351
+ [data-zappie-theme="base"] select:focus-visible {
352
+ outline: 2px solid var(--z-focus-ring);
353
+ outline-offset: 2px;
354
+ }
355
+ /* The API's static map is 640×320; it scales to the sheet's width. */
356
+ [data-zappie-theme="base"] .z-base-address-map {
357
+ display: block;
358
+ width: 100%;
359
+ height: auto;
360
+ aspect-ratio: 2 / 1;
361
+ object-fit: cover;
362
+ border-radius: var(--z-radius-md);
363
+ }
364
+ }
365
+
366
+ .z-base-catalogue {
367
+ color: var(--z-text);
368
+ font-family: var(--z-font-body);
369
+ padding: 1rem;
370
+ padding-bottom: 6rem;
371
+ }
372
+ .z-base-catalogue header {
373
+ display: flex;
374
+ gap: 0.75rem;
375
+ align-items: center;
376
+ flex-wrap: wrap;
377
+ }
378
+ .z-base-catalogue button,
379
+ .z-base-catalogue select,
380
+ .z-base-catalogue input {
381
+ font: inherit;
382
+ }
383
+ .z-base-catalogue input {
384
+ width: 100%;
385
+ padding: 0.8rem;
386
+ border: 1px solid var(--z-border);
387
+ border-radius: 0.5rem;
388
+ }
389
+ .z-base-category-nav {
390
+ display: flex;
391
+ overflow-x: auto;
392
+ gap: 1rem;
393
+ position: sticky;
394
+ top: 0;
395
+ z-index: 2;
396
+ background: var(--z-bg);
397
+ padding: 1rem 0;
398
+ }
399
+ .z-base-category-nav a {
400
+ white-space: nowrap;
401
+ padding: 0.5rem;
402
+ border-bottom: 2px solid transparent;
403
+ }
404
+ .z-base-category-nav a[aria-current="true"] {
405
+ border-color: var(--z-accent);
406
+ font-weight: 600;
407
+ }
408
+ .z-base-category {
409
+ scroll-margin-top: 6rem;
410
+ }
411
+ .z-base-category[data-unloaded="true"] {
412
+ min-height: 70vh;
413
+ }
414
+ .z-base-category:last-of-type {
415
+ min-height: 0;
416
+ }
417
+ .z-base-category h3 {
418
+ font-size: 1.3rem;
419
+ margin: 1rem 0;
420
+ }
421
+ .z-base-item-list {
422
+ display: grid;
423
+ grid-template-columns: repeat(2, minmax(0, 1fr));
424
+ gap: 1rem;
425
+ }
426
+ .z-base-item-list[data-layout="LIST"] {
427
+ grid-template-columns: 1fr;
428
+ }
429
+ .z-base-item-list[data-columns="1"]:not([data-layout="LIST"]) {
430
+ grid-template-columns: repeat(1, minmax(0, 1fr));
431
+ }
432
+ .z-base-item-list[data-columns="2"]:not([data-layout="LIST"]) {
433
+ grid-template-columns: repeat(2, minmax(0, 1fr));
434
+ }
435
+ .z-base-item-list[data-columns="3"]:not([data-layout="LIST"]) {
436
+ grid-template-columns: repeat(3, minmax(0, 1fr));
437
+ }
438
+ .z-base-item-list[data-columns="4"]:not([data-layout="LIST"]) {
439
+ grid-template-columns: repeat(4, minmax(0, 1fr));
440
+ }
441
+ .z-base-item-list[data-density="compact"] {
442
+ gap: var(--z-space-2);
443
+ }
444
+ .z-base-item-list[data-density="comfortable"] {
445
+ gap: var(--z-space-5);
446
+ }
447
+ .z-base-item-tile {
448
+ text-align: left;
449
+ display: flex;
450
+ flex-direction: column;
451
+ gap: 0.4rem;
452
+ padding: 0.75rem;
453
+ background: var(--z-surface);
454
+ border: 1px solid var(--z-border);
455
+ border-radius: 0.75rem;
456
+ }
457
+ .z-base-item-tile img {
458
+ width: 100%;
459
+ aspect-ratio: 4/3;
460
+ object-fit: cover;
461
+ border-radius: 0.5rem;
462
+ }
463
+ .z-base-item-name {
464
+ font-weight: 600;
465
+ }
466
+ .z-base-amount {
467
+ font-family: var(--z-font-body);
468
+ }
469
+ .z-base-catalogue-cart {
470
+ position: fixed;
471
+ bottom: calc(1rem + env(safe-area-inset-bottom));
472
+ left: 1rem;
473
+ right: 1rem;
474
+ z-index: 5;
475
+ padding: 1rem;
476
+ border-radius: 0.75rem;
477
+ background: var(--z-accent);
478
+ color: var(--z-accent-contrast);
479
+ }
480
+ @media (min-width: 768px) {
481
+ .z-base-item-list {
482
+ grid-template-columns: repeat(3, minmax(0, 1fr));
483
+ }
484
+ .z-base-item-list[data-columns-medium="1"]:not([data-layout="LIST"]) {
485
+ grid-template-columns: repeat(1, minmax(0, 1fr));
486
+ }
487
+ .z-base-item-list[data-columns-medium="2"]:not([data-layout="LIST"]) {
488
+ grid-template-columns: repeat(2, minmax(0, 1fr));
489
+ }
490
+ .z-base-item-list[data-columns-medium="3"]:not([data-layout="LIST"]) {
491
+ grid-template-columns: repeat(3, minmax(0, 1fr));
492
+ }
493
+ .z-base-item-list[data-columns-medium="4"]:not([data-layout="LIST"]) {
494
+ grid-template-columns: repeat(4, minmax(0, 1fr));
495
+ }
496
+ }
497
+ @media (min-width: 1024px) {
498
+ .z-base-item-list[data-columns-large="1"]:not([data-layout="LIST"]) {
499
+ grid-template-columns: repeat(1, minmax(0, 1fr));
500
+ }
501
+ .z-base-item-list[data-columns-large="2"]:not([data-layout="LIST"]) {
502
+ grid-template-columns: repeat(2, minmax(0, 1fr));
503
+ }
504
+ .z-base-item-list[data-columns-large="3"]:not([data-layout="LIST"]) {
505
+ grid-template-columns: repeat(3, minmax(0, 1fr));
506
+ }
507
+ .z-base-item-list[data-columns-large="4"]:not([data-layout="LIST"]) {
508
+ grid-template-columns: repeat(4, minmax(0, 1fr));
509
+ }
510
+ }
511
+
512
+ .z-base-search-mobile {
513
+ display: none;
514
+ }
515
+ @media (max-width: 767px) {
516
+ .z-base-search-desktop {
517
+ display: none;
518
+ }
519
+ .z-base-search-mobile {
520
+ display: inline-flex;
521
+ }
522
+ }
523
+ .z-base-info-banners {
524
+ display: flex;
525
+ overflow-x: auto;
526
+ scroll-snap-type: x mandatory;
527
+ }
528
+ .z-base-info-banners article {
529
+ flex: 0 0 100%;
530
+ padding: 0.75rem;
531
+ box-sizing: border-box;
532
+ scroll-snap-align: start;
533
+ }
534
+ .z-base-info-copy {
535
+ line-height: 1.5rem;
536
+ max-height: 3rem;
537
+ overflow: hidden;
538
+ }
539
+ .z-base-info-copy[data-expanded="true"] {
540
+ max-height: none;
541
+ }
542
+ @media (min-width: 768px) {
543
+ .z-base-info-banners article {
544
+ flex-basis: 50%;
545
+ }
546
+ }
547
+
548
+ .z-base-description {
549
+ display: -webkit-box;
550
+ -webkit-line-clamp: 2;
551
+ -webkit-box-orient: vertical;
552
+ overflow: hidden;
553
+ font-size: 0.875rem;
554
+ }
555
+ .z-base-item-image {
556
+ aspect-ratio: 4/3;
557
+ display: grid;
558
+ place-items: center;
559
+ background: var(--z-bg);
560
+ border-radius: 0.5rem;
561
+ overflow: hidden;
562
+ }
563
+ .z-base-item-image span {
564
+ color: var(--z-text-muted);
565
+ font-size: 0.875rem;
566
+ }
567
+
568
+ /* The item matches the legacy two-pane dialog and full-width narrow drawer. */
569
+ [data-zappie-theme="base"].z-base-item {
570
+ width: min(90vw, 500px);
571
+ height: min(90dvh, 670px);
572
+ padding: 0;
573
+ display: flex;
574
+ flex-direction: column;
575
+ overflow: hidden;
576
+ }
577
+ [data-zappie-theme="base"].z-base-item-with-media {
578
+ width: min(85vw, 900px);
579
+ }
580
+ .z-base-item-header {
581
+ position: absolute;
582
+ right: 16px;
583
+ top: 8px;
584
+ z-index: 2;
585
+ }
586
+ .z-base-item-header h2 {
587
+ position: absolute;
588
+ width: 1px;
589
+ height: 1px;
590
+ overflow: hidden;
591
+ clip-path: inset(50%);
592
+ white-space: nowrap;
593
+ }
594
+ .z-base-item-header .z-base-button-secondary {
595
+ border-radius: var(--z-radius-pill);
596
+ width: 40px;
597
+ min-height: 40px;
598
+ padding: 0;
599
+ }
600
+ .z-base-item-layout {
601
+ display: flex;
602
+ min-height: 0;
603
+ flex: 1;
604
+ }
605
+ .z-base-item-media {
606
+ width: 50%;
607
+ flex-shrink: 0;
608
+ background: var(--z-bg);
609
+ overflow: auto;
610
+ display: flex;
611
+ flex-direction: column;
612
+ justify-content: center;
613
+ padding: 32px;
614
+ }
615
+ .z-base-item-photo {
616
+ width: 100%;
617
+ padding: 0;
618
+ border: 0;
619
+ background: transparent;
620
+ cursor: zoom-in;
621
+ }
622
+ .z-base-item-photo .z-base-item-image {
623
+ aspect-ratio: auto;
624
+ height: 400px;
625
+ border-radius: var(--z-radius-md);
626
+ }
627
+ .z-base-item-photo img {
628
+ object-fit: cover;
629
+ }
630
+ .z-base-item-media nav {
631
+ display: flex;
632
+ justify-content: space-between;
633
+ align-items: center;
634
+ padding: var(--z-space-4);
635
+ }
636
+ .z-base-item-details {
637
+ flex: 1;
638
+ min-width: 0;
639
+ overflow-y: auto;
640
+ padding: 52px 24px 110px;
641
+ }
642
+ .z-base-item-details h2 {
643
+ font-size: 20px;
644
+ line-height: 28px;
645
+ margin: 0 0 32px;
646
+ }
647
+ .z-base-item-details > button[aria-label="Share product"] {
648
+ position: absolute;
649
+ top: 8px;
650
+ right: 64px;
651
+ min-height: 40px;
652
+ border-radius: var(--z-radius-pill);
653
+ }
654
+ .z-base-configurator {
655
+ display: grid;
656
+ gap: var(--z-space-4);
657
+ }
658
+ .z-base-item .z-base-configurator {
659
+ gap: 20px;
660
+ }
661
+ .z-base-item-summary {
662
+ display: flex;
663
+ align-items: center;
664
+ justify-content: space-between;
665
+ gap: var(--z-space-3);
666
+ }
667
+ .z-base-item-summary > .z-base-button-secondary {
668
+ border-radius: var(--z-radius-pill);
669
+ margin-left: auto;
670
+ }
671
+ .z-base-item-price {
672
+ display: flex;
673
+ gap: var(--z-space-2);
674
+ font-weight: 600;
675
+ min-height: 44px;
676
+ align-items: center;
677
+ margin: 0;
678
+ font-size: 16px;
679
+ }
680
+ .z-base-item-price del {
681
+ color: var(--z-text-muted);
682
+ font-weight: 400;
683
+ }
684
+ .z-base-option-heading > button {
685
+ display: block;
686
+ position: relative;
687
+ text-align: left;
688
+ width: 100%;
689
+ }
690
+ .z-base-option-rule {
691
+ display: block;
692
+ font-size: 12px;
693
+ font-weight: 400;
694
+ color: var(--z-text-muted);
695
+ }
696
+ .z-base-option-rule strong {
697
+ color: var(--z-danger);
698
+ font-weight: 500;
699
+ }
700
+ .z-base-option-chevron {
701
+ position: absolute;
702
+ right: 24px;
703
+ top: 20px;
704
+ }
705
+ .z-base-choice-price {
706
+ display: block;
707
+ font-size: 14px;
708
+ color: var(--z-text-muted);
709
+ }
710
+ .z-base-item .z-base-option-group {
711
+ padding: 0;
712
+ border: 0;
713
+ margin: 0 -24px;
714
+ }
715
+ .z-base-item .z-base-option-heading {
716
+ margin: 0;
717
+ padding: 0;
718
+ background: var(--z-bg);
719
+ }
720
+ .z-base-item .z-base-option-heading > button {
721
+ padding: 16px 24px;
722
+ }
723
+ .z-base-item .z-base-option-choices {
724
+ padding: 0 24px;
725
+ }
726
+ .z-base-item .z-base-choice-row {
727
+ margin: 0;
728
+ gap: 8px;
729
+ border-bottom: 1px solid var(--z-border);
730
+ }
731
+ .z-base-item .z-base-choice {
732
+ display: flex;
733
+ gap: 8px;
734
+ align-items: center;
735
+ text-align: left;
736
+ border: 0;
737
+ border-radius: 0;
738
+ padding: 16px 0;
739
+ width: 100%;
740
+ background: transparent;
741
+ font-size: 14px;
742
+ }
743
+ .z-base-item .z-base-choice::before {
744
+ content: "";
745
+ width: 20px;
746
+ height: 20px;
747
+ flex-shrink: 0;
748
+ border: 1px solid var(--z-text-muted);
749
+ border-radius: 50%;
750
+ }
751
+ .z-base-item .z-base-choice[role="checkbox"]::before {
752
+ border-radius: 4px;
753
+ }
754
+ .z-base-item .z-base-choice[data-selected]::before {
755
+ background: var(--z-text);
756
+ box-shadow: inset 0 0 0 4px var(--z-surface);
757
+ }
758
+ .z-base-item-purchase {
759
+ display: flex;
760
+ gap: var(--z-space-3);
761
+ align-items: center;
762
+ position: sticky;
763
+ bottom: 0;
764
+ background: var(--z-surface);
765
+ padding-block: var(--z-space-4);
766
+ z-index: 1;
767
+ }
768
+ .z-base-item-purchase > .z-base-button {
769
+ flex: 1;
770
+ }
771
+ .z-base-item .z-base-item-purchase {
772
+ position: absolute;
773
+ right: 0;
774
+ bottom: 0;
775
+ width: 100%;
776
+ padding: 20px 24px;
777
+ border-top: 1px solid var(--z-border);
778
+ }
779
+ .z-base-item-with-media .z-base-item-purchase {
780
+ width: 50%;
781
+ }
782
+ .z-base-item .z-base-item-purchase .z-base-button {
783
+ background: var(--z-text);
784
+ color: var(--z-surface);
785
+ border-radius: var(--z-radius-pill);
786
+ font-weight: 600;
787
+ min-height: 48px;
788
+ }
789
+ .z-base-item .z-base-quantity {
790
+ border-radius: var(--z-radius-pill);
791
+ background: var(--z-bg);
792
+ padding: 4px;
793
+ }
794
+ .z-base-item .z-base-quantity button {
795
+ border-radius: var(--z-radius-pill);
796
+ }
797
+ .z-base-item-lightbox .z-base-item-media {
798
+ width: 100%;
799
+ }
800
+ .z-base-item-lightbox .z-base-item-photo .z-base-item-image {
801
+ height: 60dvh;
802
+ }
803
+ @media (max-width: 1023px) {
804
+ [data-zappie-theme="base"].z-base-item {
805
+ width: 100vw;
806
+ height: 100dvh;
807
+ max-height: 100dvh;
808
+ border-radius: 0;
809
+ inset: 0;
810
+ transform: none;
811
+ }
812
+ .z-base-item-layout {
813
+ display: block;
814
+ overflow-y: auto;
815
+ }
816
+ .z-base-item-media {
817
+ width: 100%;
818
+ padding: 0;
819
+ }
820
+ .z-base-item-photo .z-base-item-image {
821
+ height: min(100vw, 500px);
822
+ border-radius: 0;
823
+ }
824
+ .z-base-item-details {
825
+ overflow: visible;
826
+ padding: 16px 24px 110px;
827
+ }
828
+ .z-base-item-details h2 {
829
+ font-size: 22px;
830
+ }
831
+ .z-base-item-with-media .z-base-item-purchase {
832
+ width: 100%;
833
+ }
834
+ }
835
+ [data-zappie-theme="base"].z-base-note[data-presentation="dialog"] {
836
+ width: min(90vw, 500px);
837
+ height: auto;
838
+ max-height: 90dvh;
839
+ }
840
+ .z-base-note textarea {
841
+ min-height: 150px;
842
+ }