@sazito/checkout 0.1.1 → 0.2.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.
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var useCheckout = require('../chunks/use-checkout-CKFla5or.cjs');
4
+ var useCheckout = require('../chunks/use-checkout-CQBSONj1.cjs');
5
5
  require('react/jsx-runtime');
6
6
  require('react');
7
- require('../chunks/labels-CWfNSAYm.cjs');
7
+ require('../chunks/labels-DJ_RnkCQ.cjs');
8
8
  require('@sazito/client-sdk');
9
9
 
10
10
 
@@ -71,6 +71,14 @@ interface CheckoutTheme {
71
71
  danger?: string;
72
72
  /** Success and completed-state color. */
73
73
  success?: string;
74
+ /** Foreground used on top of solid success surfaces. */
75
+ successForeground?: string;
76
+ /** Background plate behind carrier and shipping-method logos. */
77
+ logoBackground?: string;
78
+ /** Neutral surface used when a shipping color is white or near-white. */
79
+ shippingNeutral?: string;
80
+ /** Foreground used on the neutral shipping surface. */
81
+ shippingNeutralForeground?: string;
74
82
  /** Base corner radius in px. */
75
83
  radius?: number;
76
84
  /** Font family. Defaults to `inherit` so the host font flows through. */
@@ -289,6 +297,7 @@ interface Strings {
289
297
  shippingMethods: string;
290
298
  shippingMethodsHint: string;
291
299
  digitalNoShipping: string;
300
+ digitalNoShippingHint: string;
292
301
  errorRequired: string;
293
302
  errorMobilePhone: string;
294
303
  errorEmail: string;
@@ -71,6 +71,14 @@ interface CheckoutTheme {
71
71
  danger?: string;
72
72
  /** Success and completed-state color. */
73
73
  success?: string;
74
+ /** Foreground used on top of solid success surfaces. */
75
+ successForeground?: string;
76
+ /** Background plate behind carrier and shipping-method logos. */
77
+ logoBackground?: string;
78
+ /** Neutral surface used when a shipping color is white or near-white. */
79
+ shippingNeutral?: string;
80
+ /** Foreground used on the neutral shipping surface. */
81
+ shippingNeutralForeground?: string;
74
82
  /** Base corner radius in px. */
75
83
  radius?: number;
76
84
  /** Font family. Defaults to `inherit` so the host font flows through. */
@@ -289,6 +297,7 @@ interface Strings {
289
297
  shippingMethods: string;
290
298
  shippingMethodsHint: string;
291
299
  digitalNoShipping: string;
300
+ digitalNoShippingHint: string;
292
301
  errorRequired: string;
293
302
  errorMobilePhone: string;
294
303
  errorEmail: string;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- export { C as CheckoutProvider, S as SazitoProvider, u as useCheckout, a as useCheckoutEngine, b as useSazitoClient } from '../chunks/use-checkout-DIkxFBnD.js';
2
+ export { C as CheckoutProvider, S as SazitoProvider, u as useCheckout, a as useCheckoutEngine, b as useSazitoClient } from '../chunks/use-checkout-gAjnCzae.js';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
- import '../chunks/labels-BDeABGTD.js';
5
+ import '../chunks/labels-ByA_yGKl.js';
6
6
  import '@sazito/client-sdk';
7
7
  //# sourceMappingURL=index.js.map
package/dist/styles.css CHANGED
@@ -5,7 +5,6 @@
5
5
  .szc-root {
6
6
  --szc-accent: #4f46e5;
7
7
  --szc-accent-foreground: #ffffff;
8
- --szc-accent-soft: color-mix(in srgb, var(--szc-accent) 10%, #ffffff);
9
8
  --szc-radius: 16px;
10
9
  --szc-font: inherit;
11
10
 
@@ -18,6 +17,11 @@
18
17
  --szc-summary-bg: #f6f6fb;
19
18
  --szc-danger: #dc2626;
20
19
  --szc-success: #16a34a;
20
+ --szc-success-foreground: #ffffff;
21
+ --szc-logo-bg: #ffffff;
22
+ --szc-shipping-neutral: #eef0f5;
23
+ --szc-shipping-neutral-foreground: #475569;
24
+ --szc-accent-soft: color-mix(in srgb, var(--szc-accent) 10%, var(--szc-card));
21
25
 
22
26
  font-family: var(--szc-font);
23
27
  color: var(--szc-fg);
@@ -161,7 +165,7 @@
161
165
  }
162
166
  .szc-step--done .szc-step__dot {
163
167
  background: var(--szc-success);
164
- color: #fff;
168
+ color: var(--szc-success-foreground);
165
169
  }
166
170
  /* The mobile header replaces the stepper on small screens. Must come after
167
171
  the base .szc-stepper rule — same specificity, source order decides. */
@@ -425,15 +429,15 @@
425
429
  line-height: 1.7;
426
430
  }
427
431
  .szc-input--error {
428
- border-color: #ef4444;
432
+ border-color: var(--szc-danger);
429
433
  }
430
434
  .szc-input--error:focus {
431
- border-color: #ef4444;
432
- box-shadow: 0 0 0 3px color-mix(in srgb, #ef4444 18%, transparent);
435
+ border-color: var(--szc-danger);
436
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--szc-danger) 18%, transparent);
433
437
  }
434
438
  .szc-field__error {
435
439
  font-size: 11.5px;
436
- color: #ef4444;
440
+ color: var(--szc-danger);
437
441
  }
438
442
  .szc-select-wrap {
439
443
  position: relative;
@@ -506,7 +510,7 @@
506
510
  color: var(--szc-accent-foreground);
507
511
  }
508
512
  .szc-btn--primary:not(:disabled):hover {
509
- background: color-mix(in srgb, var(--szc-accent) 88%, #000);
513
+ background: color-mix(in srgb, var(--szc-accent) 88%, var(--szc-fg));
510
514
  }
511
515
  .szc-btn--primary:disabled:not([aria-busy='true']) {
512
516
  background: color-mix(in srgb, var(--szc-border) 60%, var(--szc-card));
@@ -578,7 +582,6 @@
578
582
  gap: 6px;
579
583
  padding-block: 9px;
580
584
  padding-inline: 12px 16px;
581
- border-radius: 999px;
582
585
  }
583
586
  .szc-back-btn:not(:disabled):hover {
584
587
  background: var(--szc-muted);
@@ -689,10 +692,10 @@
689
692
  display: flex;
690
693
  align-items: center;
691
694
  justify-content: center;
692
- background: #ffffff;
695
+ background: var(--szc-card);
693
696
  border: 1px solid color-mix(in srgb, var(--szc-border) 85%, var(--szc-muted-fg));
694
697
  color: color-mix(in srgb, var(--szc-muted-fg) 78%, var(--szc-accent));
695
- box-shadow: 0 1px 2px rgb(15 23 42 / 3%);
698
+ box-shadow: 0 1px 2px color-mix(in srgb, var(--szc-fg) 3%, transparent);
696
699
  }
697
700
  .szc-cart-row__thumb {
698
701
  object-fit: cover;
@@ -730,7 +733,7 @@
730
733
  width: 12px;
731
734
  height: 12px;
732
735
  border-radius: 50%;
733
- border: 1px solid rgba(0, 0, 0, 0.15);
736
+ border: 1px solid color-mix(in srgb, var(--szc-fg) 15%, transparent);
734
737
  flex-shrink: 0;
735
738
  }
736
739
  .szc-cart-row__price {
@@ -762,7 +765,7 @@
762
765
  background: var(--szc-card);
763
766
  border: 1px solid var(--szc-border);
764
767
  border-radius: 9px;
765
- box-shadow: 0 1px 2px rgb(15 23 42 / 4%);
768
+ box-shadow: 0 1px 2px color-mix(in srgb, var(--szc-fg) 4%, transparent);
766
769
  transition: border-color 0.16s ease, box-shadow 0.16s ease;
767
770
  }
768
771
  .szc-qty:focus-within {
@@ -820,6 +823,17 @@
820
823
  .szc-qty__input:disabled {
821
824
  opacity: 0.55;
822
825
  }
826
+ .szc-visually-hidden {
827
+ position: absolute;
828
+ width: 1px;
829
+ height: 1px;
830
+ padding: 0;
831
+ margin: -1px;
832
+ overflow: hidden;
833
+ clip: rect(0, 0, 0, 0);
834
+ white-space: nowrap;
835
+ border: 0;
836
+ }
823
837
  .szc-cart-row__remove {
824
838
  border: none;
825
839
  border-radius: 8px;
@@ -833,8 +847,8 @@
833
847
  transition: background 0.13s, color 0.13s;
834
848
  }
835
849
  .szc-cart-row__remove:not(:disabled):hover {
836
- background: color-mix(in srgb, #ef4444 12%, transparent);
837
- color: #ef4444;
850
+ background: color-mix(in srgb, var(--szc-danger) 12%, transparent);
851
+ color: var(--szc-danger);
838
852
  }
839
853
  .szc-cart-row__remove:disabled {
840
854
  opacity: 0.35;
@@ -963,7 +977,7 @@
963
977
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--szc-rate-foreground, var(--szc-accent)) 14%, transparent);
964
978
  }
965
979
  .szc-ship-group__mark:has(img) {
966
- background: #fff;
980
+ background: var(--szc-logo-bg);
967
981
  color: inherit;
968
982
  box-shadow: inset 0 0 0 1px var(--szc-border);
969
983
  }
@@ -1166,9 +1180,9 @@
1166
1180
  .szc-rate--selected .szc-rate__icon {
1167
1181
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--szc-rate-foreground, var(--szc-accent)) 24%, transparent);
1168
1182
  }
1169
- /* Image/logo icons render on a clean white plate so brand artwork stays true. */
1183
+ /* Image/logo icons render on a configurable clean plate so brand artwork stays true. */
1170
1184
  .szc-rate__icon:has(img) {
1171
- background: #fff;
1185
+ background: var(--szc-logo-bg);
1172
1186
  color: inherit;
1173
1187
  box-shadow: inset 0 0 0 1px var(--szc-border);
1174
1188
  }
@@ -1235,19 +1249,103 @@
1235
1249
  min-height: 50px;
1236
1250
  }
1237
1251
  }
1238
- .szc-digital-note {
1252
+ .szc-digital-products {
1253
+ overflow: hidden;
1254
+ border: 1px solid color-mix(in srgb, var(--szc-accent) 18%, var(--szc-border));
1255
+ border-radius: calc(var(--szc-radius) * 1.05);
1256
+ background: var(--szc-card);
1257
+ }
1258
+ .szc-digital-products__head {
1239
1259
  display: flex;
1260
+ align-items: center;
1240
1261
  gap: 12px;
1241
- padding: 14px;
1242
- border: 1px dashed var(--szc-border);
1243
- border-radius: var(--szc-radius);
1244
- background: var(--szc-muted);
1262
+ padding: 16px 18px;
1263
+ background: color-mix(in srgb, var(--szc-accent-soft) 55%, var(--szc-card));
1264
+ }
1265
+ .szc-digital-products__icon {
1266
+ width: 42px;
1267
+ height: 42px;
1268
+ flex: none;
1269
+ display: inline-flex;
1270
+ align-items: center;
1271
+ justify-content: center;
1272
+ border-radius: calc(var(--szc-radius) * 0.72);
1273
+ color: var(--szc-accent);
1274
+ background: var(--szc-card);
1275
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--szc-accent) 14%, var(--szc-border));
1276
+ }
1277
+ .szc-digital-products__heading {
1278
+ min-width: 0;
1279
+ display: flex;
1280
+ flex: 1;
1281
+ flex-direction: column;
1282
+ gap: 3px;
1283
+ }
1284
+ .szc-digital-products__title-row {
1285
+ display: flex;
1286
+ align-items: center;
1287
+ gap: 9px;
1288
+ flex-wrap: wrap;
1245
1289
  }
1246
- .szc-digital-note ul {
1247
- margin: 6px 0 0;
1248
- padding-inline-start: 18px;
1290
+ .szc-digital-products__title {
1291
+ margin: 0;
1292
+ color: var(--szc-fg);
1293
+ font-size: 15px;
1294
+ font-weight: 750;
1295
+ }
1296
+ .szc-digital-products__count {
1297
+ padding: 2px 9px;
1298
+ border-radius: 999px;
1299
+ color: var(--szc-fg);
1300
+ background: color-mix(in srgb, var(--szc-border) 60%, var(--szc-card));
1301
+ font-size: 12px;
1302
+ font-weight: 600;
1303
+ }
1304
+ .szc-digital-products__heading p {
1305
+ margin: 0;
1249
1306
  color: var(--szc-muted-fg);
1307
+ font-size: 12px;
1308
+ line-height: 1.65;
1309
+ }
1310
+ .szc-digital-products__list {
1311
+ display: grid;
1312
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
1313
+ gap: 10px;
1314
+ padding: 14px;
1315
+ }
1316
+ .szc-digital-product {
1317
+ min-width: 0;
1318
+ display: flex;
1319
+ align-items: center;
1320
+ gap: 11px;
1321
+ padding: 10px;
1322
+ border: 1px solid var(--szc-border);
1323
+ border-radius: calc(var(--szc-radius) * 0.75);
1324
+ background: color-mix(in srgb, var(--szc-muted) 32%, var(--szc-card));
1325
+ }
1326
+ .szc-digital-product__media {
1327
+ position: relative;
1328
+ width: 52px;
1329
+ height: 52px;
1330
+ flex: none;
1331
+ overflow: visible;
1332
+ border-radius: calc(var(--szc-radius) * 0.55);
1333
+ }
1334
+ .szc-digital-product__media img,
1335
+ .szc-digital-product__media .szc-product-placeholder {
1336
+ width: 100%;
1337
+ height: 100%;
1338
+ border-radius: inherit;
1339
+ object-fit: cover;
1340
+ }
1341
+ .szc-digital-product__name {
1342
+ min-width: 0;
1343
+ overflow: hidden;
1344
+ color: var(--szc-fg);
1250
1345
  font-size: 13px;
1346
+ line-height: 1.55;
1347
+ text-overflow: ellipsis;
1348
+ white-space: nowrap;
1251
1349
  }
1252
1350
 
1253
1351
  /* ---- payment -------------------------------------------------------- */
@@ -1291,7 +1389,7 @@
1291
1389
  }
1292
1390
  .szc-pay--selected .szc-pay__icon {
1293
1391
  background: var(--szc-accent);
1294
- color: #fff;
1392
+ color: var(--szc-accent-foreground);
1295
1393
  }
1296
1394
  .szc-pay__body {
1297
1395
  display: flex;
@@ -1340,7 +1438,7 @@
1340
1438
  align-items: center;
1341
1439
  gap: 6px;
1342
1440
  font-size: 12.5px;
1343
- color: #ef4444;
1441
+ color: var(--szc-danger);
1344
1442
  margin: 0;
1345
1443
  }
1346
1444
  .szc-discount__error svg {
@@ -1471,6 +1569,8 @@
1471
1569
  }
1472
1570
  }
1473
1571
  .szc-summary {
1572
+ position: relative;
1573
+ overflow: hidden;
1474
1574
  background: var(--szc-summary-bg);
1475
1575
  border-radius: calc(var(--szc-radius) * 1.2);
1476
1576
  padding: 22px;
@@ -1478,6 +1578,24 @@
1478
1578
  flex-direction: column;
1479
1579
  gap: 18px;
1480
1580
  }
1581
+ .szc-summary__loading {
1582
+ position: absolute;
1583
+ inset: 0;
1584
+ z-index: 1;
1585
+ display: flex;
1586
+ align-items: center;
1587
+ justify-content: center;
1588
+ border-radius: inherit;
1589
+ background: color-mix(in srgb, var(--szc-summary-bg) 76%, transparent);
1590
+ backdrop-filter: blur(2px);
1591
+ -webkit-backdrop-filter: blur(2px);
1592
+ }
1593
+ .szc-summary__spinner {
1594
+ width: 26px;
1595
+ height: 26px;
1596
+ border-width: 2.5px;
1597
+ color: var(--szc-accent);
1598
+ }
1481
1599
  .szc-summary__total-head {
1482
1600
  display: flex;
1483
1601
  flex-direction: column;
@@ -1589,9 +1707,9 @@
1589
1707
  .szc-error {
1590
1708
  padding: 12px 14px;
1591
1709
  border-radius: calc(var(--szc-radius) * 0.6);
1592
- background: color-mix(in srgb, var(--szc-danger) 10%, #fff);
1710
+ background: color-mix(in srgb, var(--szc-danger) 10%, var(--szc-card));
1593
1711
  color: var(--szc-danger);
1594
- border: 1px solid color-mix(in srgb, var(--szc-danger) 30%, #fff);
1712
+ border: 1px solid color-mix(in srgb, var(--szc-danger) 30%, var(--szc-card));
1595
1713
  font-size: 13.5px;
1596
1714
  }
1597
1715
  /* ---- checkout skeleton --------------------------------------------- */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sazito/checkout",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Headless checkout engine + React UI for the Sazito platform, powered by @sazito/client-sdk",
5
5
  "license": "MIT",
6
6
  "repository": {