@asteby/storefront-react 0.19.0 → 0.21.0

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 (51) hide show
  1. package/README.md +41 -0
  2. package/dist/account-server.cjs +405 -7
  3. package/dist/account-server.cjs.map +1 -1
  4. package/dist/account-server.d.cts +41 -1
  5. package/dist/account-server.d.ts +41 -1
  6. package/dist/account-server.js +73 -3
  7. package/dist/account-server.js.map +1 -1
  8. package/dist/account.cjs +1663 -4
  9. package/dist/account.cjs.map +1 -1
  10. package/dist/account.css +362 -0
  11. package/dist/account.d.cts +499 -3
  12. package/dist/account.d.ts +499 -3
  13. package/dist/account.js +1102 -2
  14. package/dist/account.js.map +1 -1
  15. package/dist/cart.cjs +125 -2
  16. package/dist/cart.cjs.map +1 -1
  17. package/dist/cart.css +145 -2
  18. package/dist/cart.js +4 -2
  19. package/dist/cart.js.map +1 -1
  20. package/dist/checkout.cjs +129 -1
  21. package/dist/checkout.cjs.map +1 -1
  22. package/dist/checkout.css +142 -0
  23. package/dist/checkout.d.cts +3 -1
  24. package/dist/checkout.d.ts +3 -1
  25. package/dist/checkout.js +10 -3
  26. package/dist/checkout.js.map +1 -1
  27. package/dist/chunk-PPQEUTXJ.js +260 -0
  28. package/dist/chunk-PPQEUTXJ.js.map +1 -0
  29. package/dist/chunk-TXEYBDFG.js +182 -0
  30. package/dist/chunk-TXEYBDFG.js.map +1 -0
  31. package/dist/chunk-VHEY5AU3.js +152 -0
  32. package/dist/chunk-VHEY5AU3.js.map +1 -0
  33. package/dist/fiscal.d.cts +34 -34
  34. package/dist/fiscal.d.ts +34 -34
  35. package/dist/fiscal.js +4 -258
  36. package/dist/fiscal.js.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/payments.css +15 -14
  39. package/dist/payments.js +2 -2
  40. package/dist/product-preview-DRtLWGLS.d.cts +85 -0
  41. package/dist/product-preview-DaICr4f2.d.ts +85 -0
  42. package/dist/ui.cjs +202 -0
  43. package/dist/ui.cjs.map +1 -1
  44. package/dist/ui.css +142 -0
  45. package/dist/ui.d.cts +3 -0
  46. package/dist/ui.d.ts +3 -0
  47. package/dist/ui.js +3 -1
  48. package/dist/ui.js.map +1 -1
  49. package/dist/voucher-document-SFWJCLTN.js +124 -0
  50. package/dist/voucher-document-SFWJCLTN.js.map +1 -0
  51. package/package.json +2 -2
package/dist/account.css CHANGED
@@ -38,3 +38,365 @@
38
38
  cursor: pointer;
39
39
  font: inherit;
40
40
  }
41
+
42
+ /*
43
+ * Order screens (<OrderList>, <OrderProgress>, <NextActionBar>, <ShipmentCard>, <InvoiceList>, <PendingPaymentCard>,
44
+ * <RefundList>). Optional and neutral: no brand colors, everything reads currentColor. Variables:
45
+ * --sf-account-muted secondary text --sf-account-line hairlines and card borders
46
+ * --sf-account-gap spacing between blocks --sf-account-radius card radius
47
+ * --sf-tone-done / --sf-tone-current / --sf-tone-problem / --sf-tone-muted semantic tones (default: currentColor)
48
+ * --sf-skeleton-height height of a loading card (fixed: no layout shift)
49
+ * Contrast of the tones is the store's responsibility: they are applied to TEXT, so pick colors with 4.5:1 or better.
50
+ */
51
+ [data-sf-orders-list],
52
+ [data-sf-pending] ul,
53
+ [data-sf-invoice-list] {
54
+ list-style: none;
55
+ margin: 0;
56
+ padding: 0;
57
+ display: grid;
58
+ gap: var(--sf-account-gap, 1rem);
59
+ }
60
+ [data-sf-order],
61
+ [data-sf-shipment],
62
+ [data-sf-voucher],
63
+ [data-sf-invoice-doc],
64
+ [data-sf-refund],
65
+ [data-sf-payment] {
66
+ border: 1px solid var(--sf-account-line, color-mix(in srgb, currentColor 22%, transparent));
67
+ border-radius: var(--sf-account-radius, 0.5rem);
68
+ padding: var(--sf-account-gap, 1rem);
69
+ }
70
+ [data-sf-order] > header,
71
+ [data-sf-shipment-header],
72
+ [data-sf-voucher] > header {
73
+ display: flex;
74
+ flex-wrap: wrap;
75
+ align-items: center;
76
+ justify-content: space-between;
77
+ gap: 0.5rem 1rem;
78
+ }
79
+ [data-sf-order] h2,
80
+ [data-sf-order] h3,
81
+ [data-sf-order] h4 {
82
+ margin: 0;
83
+ }
84
+ [data-sf-order-meta],
85
+ [data-sf-shipment-dates],
86
+ [data-sf-invoice-note],
87
+ [data-sf-voucher-expiry] {
88
+ color: var(--sf-account-muted, color-mix(in srgb, currentColor 72%, transparent));
89
+ }
90
+ [data-sf-tone='done'] {
91
+ color: var(--sf-tone-done, inherit);
92
+ }
93
+ [data-sf-tone='current'] {
94
+ color: var(--sf-tone-current, inherit);
95
+ }
96
+ [data-sf-tone='problem'] {
97
+ color: var(--sf-tone-problem, #b42318);
98
+ font-weight: 600;
99
+ }
100
+ [data-sf-tone='muted'] {
101
+ color: var(--sf-tone-muted, var(--sf-account-muted, inherit));
102
+ }
103
+ [data-sf-order-badge],
104
+ [data-sf-shipment-state],
105
+ [data-sf-voucher-badge] {
106
+ font-weight: 600;
107
+ }
108
+
109
+ /* progress: a vertical list on phones, a row from 40rem */
110
+ [data-sf-progress-list] {
111
+ list-style: none;
112
+ margin: 0;
113
+ padding: 0;
114
+ display: grid;
115
+ gap: 0.75rem;
116
+ }
117
+ [data-sf-step] {
118
+ display: grid;
119
+ grid-template-columns: 1.5rem 1fr;
120
+ align-items: baseline;
121
+ column-gap: 0.5rem;
122
+ }
123
+ [data-sf-step] time {
124
+ grid-column: 2;
125
+ color: var(--sf-account-muted, color-mix(in srgb, currentColor 72%, transparent));
126
+ font-size: 0.875em;
127
+ }
128
+ [data-sf-step-state='pending'] {
129
+ color: var(--sf-account-muted, color-mix(in srgb, currentColor 72%, transparent));
130
+ }
131
+ [data-sf-step-state='current'] [data-sf-step-label],
132
+ [data-sf-step-state='problem'] [data-sf-step-label] {
133
+ font-weight: 700;
134
+ }
135
+ [data-sf-step-state='problem'] {
136
+ color: var(--sf-tone-problem, #b42318);
137
+ }
138
+ @media (min-width: 40rem) {
139
+ [data-sf-progress-list] {
140
+ grid-auto-flow: column;
141
+ grid-auto-columns: 1fr;
142
+ }
143
+ [data-sf-step] {
144
+ grid-template-columns: 1fr;
145
+ justify-items: start;
146
+ }
147
+ [data-sf-step] time {
148
+ grid-column: 1;
149
+ }
150
+ }
151
+
152
+ /* actions: every target at least 44x44 (WCAG 2.5.5 AAA; 2.5.8 AA asks 24x24) */
153
+ [data-sf-action-bar] {
154
+ display: flex;
155
+ flex-wrap: wrap;
156
+ gap: 0.5rem 0.75rem;
157
+ }
158
+ [data-sf-action],
159
+ [data-sf-copy],
160
+ [data-sf-retry],
161
+ [data-sf-shipment-toggle],
162
+ [data-sf-shipment-track],
163
+ [data-sf-shipment-label],
164
+ [data-sf-invoice-download],
165
+ [data-sf-voucher-print],
166
+ [data-sf-voucher-download],
167
+ [data-sf-orders-more] {
168
+ display: inline-flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ min-height: 44px;
172
+ min-width: 44px;
173
+ padding-inline: 0.75rem;
174
+ }
175
+ [data-sf-action]:focus-visible,
176
+ [data-sf-copy]:focus-visible,
177
+ [data-sf-retry]:focus-visible,
178
+ [data-sf-order-link]:focus-visible,
179
+ [data-sf-shipment-toggle]:focus-visible,
180
+ [data-sf-shipment-label]:focus-visible,
181
+ [data-sf-shipment-track]:focus-visible,
182
+ [data-sf-invoice-download]:focus-visible,
183
+ [data-sf-voucher-print]:focus-visible,
184
+ [data-sf-voucher-download]:focus-visible,
185
+ [data-sf-orders-more]:focus-visible {
186
+ outline: 3px solid currentColor;
187
+ outline-offset: 2px;
188
+ }
189
+
190
+ /* shipment events */
191
+ [data-sf-shipment-events] {
192
+ list-style: none;
193
+ margin: 0;
194
+ padding: 0;
195
+ display: grid;
196
+ gap: 0.5rem;
197
+ }
198
+ [data-sf-event-description],
199
+ [data-sf-event-location] {
200
+ color: var(--sf-account-muted, color-mix(in srgb, currentColor 72%, transparent));
201
+ }
202
+
203
+ /* voucher */
204
+ [data-sf-voucher-value] {
205
+ font: 700 1.25rem/1.3 ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
206
+ letter-spacing: 0.04em;
207
+ overflow-wrap: anywhere;
208
+ user-select: all;
209
+ }
210
+ [data-sf-voucher-barcode] {
211
+ overflow-x: auto;
212
+ background: #fff;
213
+ padding: 0.5rem;
214
+ }
215
+ [data-sf-voucher-barcode] svg {
216
+ display: block;
217
+ margin-inline: auto;
218
+ max-width: 100%;
219
+ height: auto;
220
+ }
221
+ [data-sf-voucher-actions] {
222
+ display: flex;
223
+ flex-wrap: wrap;
224
+ gap: 0.5rem 0.75rem;
225
+ }
226
+
227
+ /* loading: fixed height so nothing jumps when the real cards arrive */
228
+ [data-sf-skeleton] {
229
+ min-height: var(--sf-skeleton-height, 11rem);
230
+ border-radius: var(--sf-account-radius, 0.5rem);
231
+ background: color-mix(in srgb, currentColor 10%, transparent);
232
+ animation: sf-account-pulse 1.4s ease-in-out infinite;
233
+ }
234
+ @keyframes sf-account-pulse {
235
+ 50% {
236
+ opacity: 0.55;
237
+ }
238
+ }
239
+ @media (prefers-reduced-motion: reduce) {
240
+ [data-sf-skeleton] {
241
+ animation: none;
242
+ }
243
+ }
244
+
245
+ /* products of an order card (`OrderProductsStack`); the line list is `OrderLines` (`ProductPreview` rows) */
246
+ [data-sf-order-products] {
247
+ margin-block: 0.5rem 0.25rem;
248
+ }
249
+ [data-sf-order-lines-list] {
250
+ display: grid;
251
+ margin: 0;
252
+ padding: 0;
253
+ list-style: none;
254
+ }
255
+ [data-sf-order-line] {
256
+ padding-block: 0.75rem;
257
+ }
258
+ [data-sf-order-line] + [data-sf-order-line] {
259
+ border-top: 1px solid var(--sf-account-line, color-mix(in srgb, currentColor 14%, transparent));
260
+ }
261
+
262
+ /*
263
+ * <ProductThumb>, <ProductPreview>, <ProductThumbStack>: la foto del producto y la línea de producto de la tienda.
264
+ * CSS plano sobre los tokens de la tienda (--foreground, --background, --border, --muted-foreground, --radius); en tema
265
+ * oscuro la superficie y el brillo salen de color-mix, sin colores escritos aquí. Va incluido en cart.css, checkout.css,
266
+ * account.css y ui.css (misma regla, un solo origen: src/ui/product-preview.css).
267
+ */
268
+ [data-sf-thumb] {
269
+ --_surface: color-mix(in srgb, var(--foreground, #111) 5%, var(--background, #fff));
270
+ position: relative;
271
+ display: inline-block;
272
+ flex: none;
273
+ box-sizing: border-box;
274
+ width: var(--sf-preview-size, 3.5rem);
275
+ aspect-ratio: var(--sf-preview-ratio, 1 / 1);
276
+ overflow: hidden;
277
+ border-radius: calc(var(--radius, 0.5rem) * 1.25);
278
+ background: var(--_surface);
279
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--foreground, #111) 9%, transparent);
280
+ vertical-align: middle;
281
+ }
282
+ :root[data-theme="dark"] [data-sf-thumb] { --_surface: color-mix(in srgb, var(--foreground, #fff) 9%, var(--background, #111)); }
283
+ [data-sf-thumb] > img {
284
+ display: block;
285
+ width: 100%;
286
+ height: 100%;
287
+ box-sizing: border-box;
288
+ object-fit: contain;
289
+ padding: 6%;
290
+ transition: transform 220ms cubic-bezier(0.2, 0.7, 0.2, 1), opacity 180ms;
291
+ }
292
+ [data-sf-thumb][data-fit="cover"] > img { object-fit: cover; padding: 0; }
293
+ /* Fotos sobre fondo blanco: se funden con la superficie en tema claro (no hay caja blanca dentro del marco). */
294
+ [data-sf-thumb][data-fit="contain"] > img { mix-blend-mode: multiply; }
295
+ :root[data-theme="dark"] [data-sf-thumb] > img { mix-blend-mode: normal; }
296
+ [data-sf-thumb][data-state="loading"]::before {
297
+ content: "";
298
+ position: absolute;
299
+ inset: 0;
300
+ background: linear-gradient(100deg, transparent 20%, color-mix(in srgb, var(--foreground, #111) 8%, transparent) 50%, transparent 80%);
301
+ background-size: 200% 100%;
302
+ animation: sf-thumb-shimmer 1.4s linear infinite;
303
+ pointer-events: none;
304
+ }
305
+ @keyframes sf-thumb-shimmer { from { background-position: 150% 0; } to { background-position: -50% 0; } }
306
+ [data-sf-thumb][data-zoom]:hover > img { transform: scale(1.07); }
307
+ @media (prefers-reduced-motion: reduce) {
308
+ [data-sf-thumb][data-state="loading"]::before { animation: none; }
309
+ [data-sf-thumb] > img { transition: none; }
310
+ [data-sf-thumb][data-zoom]:hover > img { transform: none; }
311
+ }
312
+
313
+ [data-sf-thumb-fallback] {
314
+ position: absolute;
315
+ inset: 0;
316
+ display: grid;
317
+ place-items: center;
318
+ color: color-mix(in srgb, var(--foreground, #111) 42%, transparent);
319
+ background: linear-gradient(145deg, color-mix(in srgb, var(--foreground, #111) 3%, transparent), color-mix(in srgb, var(--foreground, #111) 9%, transparent));
320
+ }
321
+ [data-sf-thumb-initial] {
322
+ font-size: calc(var(--sf-preview-size, 3.5rem) * 0.36);
323
+ font-weight: 600;
324
+ letter-spacing: 0.02em;
325
+ line-height: 1;
326
+ }
327
+
328
+ [data-sf-thumb-qty] {
329
+ position: absolute;
330
+ top: 0.2rem;
331
+ right: 0.2rem;
332
+ min-width: 1.25rem;
333
+ height: 1.25rem;
334
+ padding: 0 0.3rem;
335
+ box-sizing: border-box;
336
+ display: inline-grid;
337
+ place-items: center;
338
+ border-radius: 999px;
339
+ font-size: 0.7rem;
340
+ font-weight: 700;
341
+ font-variant-numeric: tabular-nums;
342
+ background: var(--sf-summary-qty-bg, color-mix(in srgb, var(--foreground, #111) 78%, transparent));
343
+ color: var(--sf-summary-qty-fg, var(--background, #fff));
344
+ }
345
+
346
+ /* Línea de producto: foto | texto | importe. */
347
+ [data-sf-preview] {
348
+ display: flex;
349
+ align-items: center;
350
+ gap: 0.875rem;
351
+ min-width: 0;
352
+ }
353
+ [data-sf-preview][data-missing] [data-sf-preview-name] { font-style: italic; color: var(--muted-foreground, color-mix(in srgb, currentColor 60%, transparent)); }
354
+ [data-sf-preview-media] { flex: none; display: inline-flex; }
355
+ [data-sf-preview-body] { display: grid; flex: 1 1 auto; gap: 0.125rem; min-width: 0; }
356
+ [data-sf-preview-name] {
357
+ display: -webkit-box;
358
+ -webkit-line-clamp: 2;
359
+ -webkit-box-orient: vertical;
360
+ overflow: hidden;
361
+ overflow-wrap: anywhere;
362
+ font-size: 0.9375rem;
363
+ font-weight: 600;
364
+ line-height: 1.3;
365
+ }
366
+ [data-sf-preview-name] a { color: inherit; text-decoration: none; }
367
+ [data-sf-preview-name] a:hover { text-decoration: underline; }
368
+ [data-sf-preview-variant],
369
+ [data-sf-preview-sku],
370
+ [data-sf-preview-meta] {
371
+ font-size: 0.8125rem;
372
+ line-height: 1.35;
373
+ color: var(--muted-foreground, color-mix(in srgb, currentColor 66%, transparent));
374
+ }
375
+ [data-sf-preview-sku] { font-variant-numeric: tabular-nums; letter-spacing: 0.01em; }
376
+ [data-sf-preview-total] {
377
+ flex: none;
378
+ align-self: flex-start;
379
+ font-size: 0.9375rem;
380
+ font-weight: 700;
381
+ font-variant-numeric: tabular-nums;
382
+ text-align: right;
383
+ }
384
+
385
+ /* Fotos apiladas (tarjeta de pedido). */
386
+ [data-sf-thumb-stack] { display: inline-flex; align-items: center; }
387
+ [data-sf-thumb-stack] > * { box-shadow: 0 0 0 2px var(--card, var(--background, #fff)), inset 0 0 0 1px color-mix(in srgb, var(--foreground, #111) 9%, transparent); }
388
+ [data-sf-thumb-stack] > * + * { margin-inline-start: -0.625rem; }
389
+ [data-sf-thumb-more] {
390
+ display: inline-grid;
391
+ place-items: center;
392
+ flex: none;
393
+ box-sizing: border-box;
394
+ width: var(--sf-preview-size, 2.75rem);
395
+ aspect-ratio: 1 / 1;
396
+ border-radius: calc(var(--radius, 0.5rem) * 1.25);
397
+ font-size: 0.8125rem;
398
+ font-weight: 600;
399
+ font-variant-numeric: tabular-nums;
400
+ color: var(--muted-foreground, color-mix(in srgb, currentColor 66%, transparent));
401
+ background: color-mix(in srgb, var(--foreground, #111) 7%, var(--background, #fff));
402
+ }