@develemit/commerce-admin 0.7.0 → 0.8.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 (43) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +7 -4
  3. package/dist/client/admin-client.d.ts +1 -0
  4. package/dist/client/errors.d.ts +4 -0
  5. package/dist/client/index.js +1 -1
  6. package/dist/{client-DCL5DSHP.js → client-ClTCzt-p.js} +34 -28
  7. package/dist/client-ClTCzt-p.js.map +1 -0
  8. package/dist/components/admin-layout/admin-layout.d.ts +2 -1
  9. package/dist/components/admin-layout/current-item.d.ts +1 -0
  10. package/dist/components/admin-layout/nav-items.d.ts +3 -0
  11. package/dist/components/admin-layout/use-current-href.d.ts +1 -0
  12. package/dist/components/empty-state/empty-state.d.ts +1 -1
  13. package/dist/index.js +1255 -912
  14. package/dist/index.js.map +1 -1
  15. package/dist/lib/admin-labels.d.ts +3 -0
  16. package/dist/lib/currency-symbol.d.ts +1 -0
  17. package/dist/lib/order-action-labels.d.ts +2 -0
  18. package/dist/lib/order-labels.d.ts +1 -1
  19. package/dist/lib/product-draft.d.ts +3 -0
  20. package/dist/lib/product-flow-labels.d.ts +9 -0
  21. package/dist/lib/product-labels.d.ts +8 -0
  22. package/dist/lib/provider.d.ts +2 -0
  23. package/dist/lib/stock-labels.d.ts +2 -0
  24. package/dist/lib/use-batch-upload.d.ts +1 -0
  25. package/dist/lib/use-product-autosave.d.ts +4 -0
  26. package/dist/lib/use-product-pages.d.ts +1 -0
  27. package/dist/styles.css +470 -29
  28. package/dist/views/orders/admin-order-detail.d.ts +2 -1
  29. package/dist/views/orders/order-actions.d.ts +2 -1
  30. package/dist/views/orders/resolve-button.d.ts +3 -1
  31. package/dist/views/orders/ship-form.d.ts +4 -1
  32. package/dist/views/products/add-several/photo-picker.d.ts +3 -1
  33. package/dist/views/products/admin-product-images.d.ts +2 -0
  34. package/dist/views/products/finish-drafts/piece-summary.d.ts +2 -1
  35. package/dist/views/products/finish-drafts/use-publish-pieces.d.ts +2 -0
  36. package/dist/views/products/product-flow/flow-actions.d.ts +3 -0
  37. package/dist/views/products/product-flow/flow-frame.d.ts +4 -2
  38. package/dist/views/products/product-flow/materials-field.d.ts +6 -0
  39. package/dist/views/products/product-flow/use-product-flow.d.ts +5 -0
  40. package/dist/views/products/product-sheet/delete-draft-button.d.ts +9 -0
  41. package/dist/views/shipping/shipping-rate-row.d.ts +2 -1
  42. package/package.json +2 -2
  43. package/dist/client-DCL5DSHP.js.map +0 -1
package/dist/styles.css CHANGED
@@ -22,6 +22,9 @@
22
22
  0 6px 20px color-mix(in srgb, var(--sf-color-fg, #1a1a1a) 14%, transparent)
23
23
  );
24
24
  --sfa-focus: var(--sf-color-focus, var(--sf-color-accent, #1a1a1a));
25
+ --sfa-radius-sm: min(calc(var(--sf-radius, 4px) * 3), 12px);
26
+ --sfa-radius-md: min(calc(var(--sf-radius, 4px) * 4), 16px);
27
+ --sfa-radius-lg: min(calc(var(--sf-radius, 4px) * 5), 22px);
25
28
  --sfa-unit: var(--sf-space-unit, 0.25rem);
26
29
  color: var(--sf-color-fg, #1a1a1a);
27
30
  background: var(--sf-color-bg, #ffffff);
@@ -117,6 +120,16 @@
117
120
  .sfa-root input[type='radio'] {
118
121
  min-height: 24px;
119
122
  }
123
+ .sfa-btn--quiet-danger {
124
+ background: transparent;
125
+ border-color: var(--sf-color-danger, #b00020);
126
+ color: var(--sf-color-danger, #b00020);
127
+ font-weight: 600;
128
+ }
129
+ .sfa-btn--icon {
130
+ padding: 0;
131
+ width: 48px;
132
+ }
120
133
  .sfa-layout {
121
134
  min-height: 100vh;
122
135
  padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px));
@@ -204,6 +217,23 @@
204
217
  height: 10px;
205
218
  padding: 0;
206
219
  }
220
+ .sfa-tabbar__item.is-current {
221
+ color: var(--sf-color-accent, #1a1a1a);
222
+ }
223
+ .sfa-tabbar__item.is-current .sfa-nav__icon {
224
+ padding: 2px 16px;
225
+ border-radius: 999px;
226
+ background: var(--sfa-accent-soft);
227
+ }
228
+ .sfa-tabbar__item.is-current .sfa-nav__label {
229
+ text-decoration: underline;
230
+ text-underline-offset: 3px;
231
+ }
232
+ .sfa-more .sfa-nav__link.is-current {
233
+ color: var(--sf-color-accent, #1a1a1a);
234
+ text-decoration: underline;
235
+ text-underline-offset: 4px;
236
+ }
207
237
  .sfa-more[hidden] {
208
238
  display: none;
209
239
  }
@@ -305,6 +335,11 @@
305
335
  .sfa-sidebar .sfa-nav__link:hover {
306
336
  background: var(--sfa-accent-soft);
307
337
  }
338
+ .sfa-sidebar .sfa-nav__link.is-current {
339
+ background: var(--sfa-accent-soft);
340
+ color: var(--sf-color-accent, #1a1a1a);
341
+ font-weight: 800;
342
+ }
308
343
  .sfa-sidebar .sfa-nav__badge {
309
344
  margin-left: auto;
310
345
  }
@@ -322,6 +357,10 @@
322
357
  box-shadow: none;
323
358
  }
324
359
  }
360
+
361
+ .sfa-more__close {
362
+ justify-self: end;
363
+ }
325
364
  /* Bare inline links measure ~22px; hosts cannot restyle kit internals. */
326
365
  .sfa-link--tap {
327
366
  display: inline-flex;
@@ -385,6 +424,7 @@
385
424
  }
386
425
  }
387
426
  .sfa-notice {
427
+ scroll-margin-bottom: calc(96px + env(safe-area-inset-bottom, 0px));
388
428
  display: flex;
389
429
  align-items: center;
390
430
  justify-content: space-between;
@@ -436,6 +476,15 @@
436
476
  overflow-x: auto;
437
477
  overscroll-behavior-x: contain;
438
478
  scrollbar-width: none;
479
+ background:
480
+ linear-gradient(to right, var(--sf-color-bg, #ffffff) 30%, transparent) left
481
+ center / 24px 100% no-repeat local,
482
+ linear-gradient(to left, var(--sf-color-bg, #ffffff) 30%, transparent) right
483
+ center / 24px 100% no-repeat local,
484
+ radial-gradient(farthest-side at 0 50%, rgba(0, 0, 0, 0.3), transparent)
485
+ left center / 14px 100% no-repeat scroll,
486
+ radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.3), transparent)
487
+ right center / 14px 100% no-repeat scroll;
439
488
  }
440
489
  .sfa-filter-group::-webkit-scrollbar {
441
490
  display: none;
@@ -450,6 +499,12 @@
450
499
  gap: calc(var(--sf-space-unit, 0.25rem) * 3);
451
500
  margin: calc(var(--sf-space-unit, 0.25rem) * 4) 0;
452
501
  }
502
+ .sfa-products__toolbar .sfa-filter-group {
503
+ flex: 1 1 100%;
504
+ }
505
+ .sfa-products__toolbar .sfa-search-toggle {
506
+ flex: none;
507
+ }
453
508
  .sfa-thumb {
454
509
  display: inline-flex;
455
510
  align-items: center;
@@ -642,12 +697,102 @@
642
697
  gap: calc(var(--sf-space-unit, 0.25rem) * 3);
643
698
  justify-items: start;
644
699
  }
700
+
701
+ .sfa-order__section > h2,
702
+ .sfa-order__action > h3 {
703
+ margin: 0 0 calc(var(--sf-space-unit, 0.25rem) * 2);
704
+ font-size: 1.125rem;
705
+ font-weight: 700;
706
+ line-height: 1.3;
707
+ }
708
+ .sfa-order__buttons {
709
+ display: flex;
710
+ flex-wrap: wrap;
711
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
712
+ }
713
+ .sfa-order__section dt {
714
+ font-size: 0.875rem;
715
+ opacity: 0.7;
716
+ }
717
+ .sfa-order__section dd {
718
+ margin: 0 0 calc(var(--sf-space-unit, 0.25rem) * 2);
719
+ }
720
+ .sfa-order__columns {
721
+ display: block;
722
+ }
723
+ @media (min-width: 900px) {
724
+ .sfa-order__columns {
725
+ display: grid;
726
+ grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
727
+ gap: calc(var(--sf-space-unit, 0.25rem) * 8);
728
+ align-items: start;
729
+ }
730
+ }
731
+ .sfa-orders .sfa-table--stacked tbody tr {
732
+ position: relative;
733
+ }
734
+ .sfa-orders .sfa-table--stacked td:first-child a::after {
735
+ content: '';
736
+ position: absolute;
737
+ inset: 0;
738
+ }
739
+ @media (max-width: 639px) {
740
+ .sfa-orders .sfa-table--stacked tbody tr {
741
+ display: grid;
742
+ grid-template-columns: 1fr auto;
743
+ gap: calc(var(--sf-space-unit, 0.25rem) * 1)
744
+ calc(var(--sf-space-unit, 0.25rem) * 3);
745
+ padding: calc(var(--sf-space-unit, 0.25rem) * 3);
746
+ }
747
+ .sfa-orders .sfa-table--stacked td {
748
+ padding: 0;
749
+ border: 0;
750
+ }
751
+ .sfa-orders .sfa-table--stacked td::before {
752
+ display: none;
753
+ }
754
+ .sfa-orders .sfa-table--stacked td[data-col='items'] {
755
+ display: none;
756
+ }
757
+ }
758
+ .sfa-order__action {
759
+ justify-items: stretch;
760
+ }
761
+ .sfa-order__action .sfa-field,
762
+ .sfa-order__action input {
763
+ width: 100%;
764
+ box-sizing: border-box;
765
+ }
766
+ .sfa-order__action .sfa-order__buttons {
767
+ justify-self: start;
768
+ }
769
+ .sfa-order__refund-btn {
770
+ justify-self: start;
771
+ margin-top: calc(var(--sf-space-unit, 0.25rem) * 4);
772
+ }
773
+ .sfa-order__actions > * + .sfa-order__refund-btn {
774
+ padding-top: 0;
775
+ }
776
+ .sfa-link--external {
777
+ color: var(--sf-color-accent, #1a1a1a);
778
+ text-decoration: underline;
779
+ text-underline-offset: 3px;
780
+ font-weight: 600;
781
+ }
782
+ .sfa-orders__toolbar input[type='search'] {
783
+ flex: 1 1 12rem;
784
+ min-width: 0;
785
+ }
786
+ .sfa-link--external::after {
787
+ content: '↗';
788
+ margin-left: 0.25em;
789
+ }
645
790
  .sfa-grid {
646
791
  display: grid;
647
792
  grid-template-columns: repeat(2, minmax(0, 1fr));
648
793
  gap: calc(var(--sfa-unit) * 3);
649
794
  margin: 0;
650
- padding: 0;
795
+ padding: 0 0 calc(96px + env(safe-area-inset-bottom, 0px));
651
796
  list-style: none;
652
797
  }
653
798
  .sfa-card {
@@ -725,17 +870,35 @@
725
870
  font-size: 1.125rem;
726
871
  }
727
872
  .sfa-card__name {
728
- display: block;
729
873
  min-width: 0;
730
874
  padding: 0;
875
+ border: 0;
876
+ background: none;
877
+ appearance: none;
878
+ font: inherit;
879
+ font-weight: 700;
880
+ line-height: 1.3;
881
+ max-height: 2.6em;
882
+ cursor: pointer;
731
883
  color: inherit;
732
884
  text-decoration: none;
733
885
  overflow: hidden;
734
- font-weight: 700;
735
- text-overflow: ellipsis;
736
- white-space: nowrap;
886
+ text-align: left;
887
+ display: -webkit-box;
888
+ -webkit-box-orient: vertical;
889
+ -webkit-line-clamp: 2;
890
+ line-clamp: 2;
891
+ overflow-wrap: anywhere;
892
+ }
893
+ .sfa-card__name:focus-visible {
894
+ outline: none;
895
+ }
896
+ .sfa-card:has(.sfa-card__name:focus-visible) {
897
+ outline: 3px solid var(--sfa-focus);
898
+ outline-offset: 2px;
737
899
  }
738
900
  .sfa-card__price {
901
+ text-align: left;
739
902
  font-size: 0.875rem;
740
903
  }
741
904
  .sfa-card__price.is-missing {
@@ -776,7 +939,17 @@
776
939
  }
777
940
  .sfa-search {
778
941
  display: none;
779
- flex: 1 1 12rem;
942
+ flex: 1 1 100%;
943
+ max-width: 24rem;
944
+ }
945
+ .sfa-search::-webkit-search-cancel-button {
946
+ appearance: none;
947
+ width: 16px;
948
+ height: 16px;
949
+ cursor: pointer;
950
+ background: var(--sf-color-fg, #1a1a1a);
951
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 3l10 10M13 3L3 13' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E")
952
+ center / contain no-repeat;
780
953
  }
781
954
  .sfa-search.is-open {
782
955
  display: block;
@@ -785,8 +958,7 @@
785
958
  display: flex;
786
959
  flex-direction: column;
787
960
  gap: calc(var(--sfa-unit) * 6);
788
- max-width: 40rem;
789
- margin: 0 auto;
961
+ max-width: 720px;
790
962
  }
791
963
  .sfa-welcome__hero {
792
964
  display: flex;
@@ -823,6 +995,7 @@
823
995
  @media (min-width: 900px) {
824
996
  .sfa-grid {
825
997
  grid-template-columns: repeat(4, minmax(0, 1fr));
998
+ padding-bottom: 0;
826
999
  }
827
1000
  .sfa-search-toggle {
828
1001
  display: none;
@@ -951,6 +1124,28 @@ a.sfa-setup__action {
951
1124
  font-size: 0.875rem;
952
1125
  opacity: 0.8;
953
1126
  }
1127
+
1128
+ .sfa-setup__chevron {
1129
+ margin-left: auto;
1130
+ font-size: 1.5rem;
1131
+ line-height: 1;
1132
+ color: var(--sf-color-muted, #666666);
1133
+ }
1134
+ a.sfa-setup__action,
1135
+ button.sfa-setup__action {
1136
+ border-radius: var(--sf-radius, 8px);
1137
+ background: var(--sf-color-bg, #ffffff);
1138
+ border: 1px solid var(--sf-color-border, #e0e0e0);
1139
+ }
1140
+ a.sfa-setup__action:hover,
1141
+ button.sfa-setup__action:hover {
1142
+ background: var(--sfa-accent-soft);
1143
+ }
1144
+ a.sfa-setup__action:active,
1145
+ button.sfa-setup__action:active {
1146
+ background: var(--sfa-accent-soft);
1147
+ transform: scale(0.99);
1148
+ }
954
1149
  .sfa-sheet-layer {
955
1150
  position: fixed;
956
1151
  inset: 0;
@@ -970,8 +1165,7 @@ a.sfa-setup__action {
970
1165
  overflow-y: auto;
971
1166
  padding: calc(var(--sfa-unit) * 4);
972
1167
  padding-bottom: calc(env(safe-area-inset-bottom, 0px) + var(--sfa-unit) * 4);
973
- border-radius: calc(var(--sf-radius, 4px) * 3) calc(var(--sf-radius, 4px) * 3)
974
- 0 0;
1168
+ border-radius: var(--sfa-radius-sm) var(--sfa-radius-sm) 0 0;
975
1169
  background: var(--sf-color-bg, #ffffff);
976
1170
  animation: sfa-sheet-up 0.2s ease-out;
977
1171
  }
@@ -1028,6 +1222,7 @@ a.sfa-setup__action {
1028
1222
  }
1029
1223
  .sfa-sheet__name {
1030
1224
  margin: 0;
1225
+ font-weight: 800;
1031
1226
  }
1032
1227
  .sfa-sheet__meta {
1033
1228
  display: flex;
@@ -1207,33 +1402,63 @@ a.sfa-setup__action {
1207
1402
  }
1208
1403
  .sfa-flow__foot {
1209
1404
  display: flex;
1405
+ flex-wrap: wrap;
1406
+ align-items: center;
1210
1407
  gap: calc(var(--sfa-unit) * 2.5);
1211
1408
  padding: calc(var(--sfa-unit) * 3) calc(var(--sfa-unit) * 5)
1212
1409
  calc(env(safe-area-inset-bottom, 0px) + var(--sfa-unit) * 4);
1213
1410
  border-top: 1px solid var(--sfa-accent-soft);
1214
1411
  background: var(--sf-color-bg, #ffffff);
1215
1412
  }
1216
- .sfa-flow__foot .sfa-btn,
1413
+ .sfa-flow__foot-actions .sfa-btn,
1217
1414
  .sfa-flow__desk-actions .sfa-btn {
1218
1415
  flex: 1;
1219
1416
  white-space: nowrap;
1220
1417
  }
1221
- .sfa-flow__foot .sfa-btn--primary {
1418
+ .sfa-flow__foot-actions .sfa-btn--primary {
1222
1419
  flex: 1.4;
1223
1420
  }
1224
1421
  .sfa-flow__saved {
1225
- margin: calc(var(--sfa-unit) * 2) 0 0;
1226
- font-size: 0.8125rem;
1227
- text-align: center;
1422
+ display: flex;
1423
+ align-items: center;
1424
+ gap: calc(var(--sfa-unit) * 1.5);
1425
+ margin: 0;
1426
+ font-size: 0.9375rem;
1427
+ font-weight: 700;
1228
1428
  color: var(--sf-color-muted, #666666);
1229
1429
  }
1430
+ .sfa-flow__saved.is-saved {
1431
+ color: var(--sf-color-accent, #1a1a1a);
1432
+ }
1433
+ .sfa-flow__saved-check {
1434
+ display: inline-grid;
1435
+ place-items: center;
1436
+ width: 20px;
1437
+ height: 20px;
1438
+ border-radius: 999px;
1439
+ background: var(--sf-color-accent, #1a1a1a);
1440
+ color: var(--sf-color-accent-fg, #ffffff);
1441
+ font-size: 0.75rem;
1442
+ }
1230
1443
  .sfa-flow__saved.is-error {
1231
- display: flex;
1232
- align-items: center;
1233
- justify-content: center;
1234
1444
  gap: calc(var(--sfa-unit) * 3);
1235
1445
  color: var(--sf-color-danger, #b00020);
1236
1446
  }
1447
+ .sfa-flow__hint {
1448
+ flex-basis: 100%;
1449
+ margin: 0;
1450
+ font-size: 0.875rem;
1451
+ color: var(--sf-color-muted, #666666);
1452
+ }
1453
+ .sfa-flow__foot-actions {
1454
+ display: flex;
1455
+ flex: 1;
1456
+ gap: calc(var(--sfa-unit) * 2.5);
1457
+ }
1458
+ .sfa-flow__step-count,
1459
+ .sfa-flow__btn-text {
1460
+ display: none;
1461
+ }
1237
1462
  .sfa-flow__chips {
1238
1463
  display: flex;
1239
1464
  flex-wrap: wrap;
@@ -1276,7 +1501,45 @@ a.sfa-setup__action {
1276
1501
  }
1277
1502
  @media (min-width: 900px) {
1278
1503
  .sfa-flow__steps,
1504
+ .sfa-flow__foot-actions,
1505
+ .sfa-flow__foot .sfa-flow__hint {
1506
+ display: none;
1507
+ }
1508
+ .sfa-flow__head {
1509
+ position: sticky;
1510
+ top: 0;
1511
+ z-index: 5;
1512
+ min-height: 64px;
1513
+ border-bottom: 1px solid var(--sfa-accent-soft);
1514
+ background: var(--sf-color-bg, #ffffff);
1515
+ }
1516
+ .sfa-flow__title {
1517
+ flex: none;
1518
+ text-align: left;
1519
+ font-size: 1.125rem;
1520
+ }
1521
+ .sfa-flow__step-count {
1522
+ display: block;
1523
+ flex: 1;
1524
+ margin: 0;
1525
+ font-size: 0.875rem;
1526
+ font-weight: 700;
1527
+ color: var(--sf-color-muted, #666666);
1528
+ }
1529
+ .sfa-flow__btn-text {
1530
+ display: inline;
1531
+ margin-left: calc(var(--sfa-unit) * 1.5);
1532
+ font-weight: 700;
1533
+ }
1534
+ .sfa-flow__section {
1535
+ scroll-margin-top: 88px;
1536
+ }
1279
1537
  .sfa-flow__foot {
1538
+ position: sticky;
1539
+ bottom: 0;
1540
+ padding-block: calc(var(--sfa-unit) * 2);
1541
+ }
1542
+ .sfa-flow__foot:not(:has(.sfa-flow__saved)) {
1280
1543
  display: none;
1281
1544
  }
1282
1545
  .sfa-flow__body {
@@ -1293,7 +1556,7 @@ a.sfa-setup__action {
1293
1556
  }
1294
1557
  .sfa-flow__aside {
1295
1558
  position: sticky;
1296
- top: calc(var(--sfa-unit) * 4);
1559
+ top: 88px;
1297
1560
  }
1298
1561
  .sfa-flow__desk-actions {
1299
1562
  display: flex;
@@ -1305,7 +1568,7 @@ a.sfa-setup__action {
1305
1568
  gap: calc(var(--sfa-unit) * 1.5);
1306
1569
  padding: calc(var(--sfa-unit) * 7) calc(var(--sfa-unit) * 4);
1307
1570
  border: 2px dashed var(--sf-color-border, #c8c8c8);
1308
- border-radius: calc(var(--sf-radius, 4px) * 4);
1571
+ border-radius: var(--sfa-radius-md);
1309
1572
  background: var(--sf-color-surface, #f6f6f6);
1310
1573
  color: var(--sf-color-accent, #1a1a1a);
1311
1574
  text-align: center;
@@ -1340,7 +1603,7 @@ a.sfa-setup__action {
1340
1603
  aspect-ratio: 1;
1341
1604
  overflow: hidden;
1342
1605
  border: 2px solid transparent;
1343
- border-radius: calc(var(--sf-radius, 4px) * 3);
1606
+ border-radius: var(--sfa-radius-sm);
1344
1607
  background: var(--sf-color-surface, #f6f6f6);
1345
1608
  font-size: 0.75rem;
1346
1609
  text-align: center;
@@ -1387,14 +1650,14 @@ a.sfa-setup__action {
1387
1650
  .sfa-flow__tip {
1388
1651
  margin: 0;
1389
1652
  padding: calc(var(--sfa-unit) * 3) calc(var(--sfa-unit) * 3.5);
1390
- border-radius: calc(var(--sf-radius, 4px) * 3);
1653
+ border-radius: var(--sfa-radius-sm);
1391
1654
  background: var(--sfa-accent-soft);
1392
1655
  font-size: 0.875rem;
1393
1656
  }
1394
1657
  .sfa-flow__preview {
1395
- padding: calc(var(--sfa-unit) * 3.5);
1658
+ padding: calc(var(--sfa-unit) * 4);
1396
1659
  border: 1px solid var(--sf-color-border, #e0e0e0);
1397
- border-radius: calc(var(--sf-radius, 4px) * 5);
1660
+ border-radius: var(--sfa-radius-lg);
1398
1661
  background: var(--sf-color-surface, #f6f6f6);
1399
1662
  }
1400
1663
  .sfa-flow__preview-label {
@@ -1406,14 +1669,16 @@ a.sfa-setup__action {
1406
1669
  color: var(--sf-color-muted, #666666);
1407
1670
  }
1408
1671
  .sfa-flow__card {
1409
- width: 60%;
1672
+ width: 100%;
1673
+ max-width: 280px;
1674
+ margin-inline: auto;
1410
1675
  }
1411
1676
  .sfa-flow__card-photo {
1412
1677
  display: grid;
1413
1678
  place-items: center;
1414
1679
  aspect-ratio: 1;
1415
1680
  overflow: hidden;
1416
- border-radius: calc(var(--sf-radius, 4px) * 3);
1681
+ border-radius: var(--sfa-radius-sm);
1417
1682
  background: var(--sf-color-bg, #ffffff);
1418
1683
  color: var(--sf-color-muted, #666666);
1419
1684
  font-size: 0.8125rem;
@@ -1448,7 +1713,7 @@ a.sfa-setup__action {
1448
1713
  width: 170px;
1449
1714
  height: 170px;
1450
1715
  overflow: hidden;
1451
- border-radius: calc(var(--sf-radius, 4px) * 7);
1716
+ border-radius: var(--sfa-radius-lg);
1452
1717
  background: var(--sf-color-surface, #f6f6f6);
1453
1718
  box-shadow: var(--sfa-shadow-raised);
1454
1719
  animation: sfa-pop calc(var(--sf-motion-duration, 150ms) * 3)
@@ -1486,6 +1751,24 @@ a.sfa-setup__action {
1486
1751
  transition: none;
1487
1752
  }
1488
1753
  }
1754
+
1755
+ .sfa-flow__thumb--add {
1756
+ border: 2px dashed var(--sf-color-border, #c8c8c8);
1757
+ }
1758
+ .sfa-flow__dropzone--tile {
1759
+ width: 100%;
1760
+ height: 100%;
1761
+ align-content: center;
1762
+ padding: calc(var(--sfa-unit) * 2);
1763
+ border: 0;
1764
+ border-radius: 0;
1765
+ }
1766
+ .sfa-flow__dropzone--tile .sfa-flow__dropzone-icon {
1767
+ font-size: 1.75rem;
1768
+ }
1769
+ .sfa-flow__dropzone--tile strong {
1770
+ font-size: 0.8125rem;
1771
+ }
1489
1772
  .sfa-rates {
1490
1773
  list-style: none;
1491
1774
  margin: calc(var(--sf-space-unit, 0.25rem) * 4) 0;
@@ -1513,6 +1796,26 @@ a.sfa-setup__action {
1513
1796
  flex-wrap: wrap;
1514
1797
  gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1515
1798
  }
1799
+ .sfa-shipping__feedback {
1800
+ display: grid;
1801
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1802
+ margin-top: calc(var(--sf-space-unit, 0.25rem) * 3);
1803
+ }
1804
+ .sfa-rate > .sfa-field:first-child {
1805
+ grid-column: 1 / -1;
1806
+ }
1807
+ .sfa-rate__money {
1808
+ display: flex;
1809
+ align-items: center;
1810
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1811
+ }
1812
+ .sfa-rate__money input {
1813
+ flex: 1;
1814
+ min-width: 0;
1815
+ }
1816
+ .sfa-rate__prefix {
1817
+ font-weight: 600;
1818
+ }
1516
1819
  .sfa-empty-state {
1517
1820
  display: grid;
1518
1821
  justify-items: center;
@@ -1550,8 +1853,7 @@ a.sfa-setup__action {
1550
1853
  }
1551
1854
  .sfa-batch,
1552
1855
  .sfa-queue {
1553
- max-width: 640px;
1554
- margin-inline: auto;
1856
+ max-width: 720px;
1555
1857
  }
1556
1858
  .sfa-batch__card,
1557
1859
  .sfa-piece {
@@ -1661,3 +1963,142 @@ a.sfa-setup__action {
1661
1963
  box-sizing: border-box;
1662
1964
  max-width: 100%;
1663
1965
  }
1966
+
1967
+ .sfa-dropzone {
1968
+ box-sizing: border-box;
1969
+ display: grid;
1970
+ justify-items: center;
1971
+ gap: calc(var(--sfa-unit, 0.25rem) * 2);
1972
+ width: 100%;
1973
+ padding: calc(var(--sfa-unit, 0.25rem) * 10)
1974
+ calc(var(--sfa-unit, 0.25rem) * 4);
1975
+ border: 2px dashed var(--sf-color-accent, #1a1a1a);
1976
+ border-radius: var(--sf-radius, 12px);
1977
+ background: var(--sfa-accent-soft);
1978
+ text-align: center;
1979
+ cursor: pointer;
1980
+ }
1981
+ .sfa-dropzone:focus-within {
1982
+ outline: 2px solid var(--sf-color-accent, #1a1a1a);
1983
+ outline-offset: 2px;
1984
+ }
1985
+ .sfa-dropzone__icon {
1986
+ display: grid;
1987
+ place-items: center;
1988
+ width: 48px;
1989
+ height: 48px;
1990
+ border-radius: 999px;
1991
+ background: var(--sf-color-accent, #1a1a1a);
1992
+ color: var(--sf-color-accent-fg, #ffffff);
1993
+ font-size: 1.75rem;
1994
+ }
1995
+ .sfa-dropzone__label {
1996
+ font-size: 1.125rem;
1997
+ font-weight: 700;
1998
+ }
1999
+ .sfa-dropzone__hint {
2000
+ color: var(--sf-color-muted, #666666);
2001
+ }
2002
+ .sfa-piece__heading {
2003
+ font-family: var(--sf-font-display, inherit);
2004
+ font-size: 1.625rem;
2005
+ line-height: 1.15;
2006
+ }
2007
+ .sfa-piece progress {
2008
+ height: 8px;
2009
+ appearance: none;
2010
+ border: 0;
2011
+ border-radius: 999px;
2012
+ overflow: hidden;
2013
+ background: var(--sfa-accent-soft);
2014
+ accent-color: var(--sf-color-accent, #1a1a1a);
2015
+ }
2016
+ .sfa-piece progress::-webkit-progress-bar {
2017
+ background: var(--sfa-accent-soft);
2018
+ }
2019
+ .sfa-piece progress::-webkit-progress-value {
2020
+ background: var(--sf-color-accent, #1a1a1a);
2021
+ }
2022
+ .sfa-piece progress::-moz-progress-bar {
2023
+ background: var(--sf-color-accent, #1a1a1a);
2024
+ }
2025
+ .sfa-piece__foot {
2026
+ position: sticky;
2027
+ bottom: calc(64px + env(safe-area-inset-bottom, 0px));
2028
+ z-index: 5;
2029
+ display: flex;
2030
+ flex-wrap: nowrap;
2031
+ justify-content: flex-end;
2032
+ gap: calc(var(--sfa-unit, 0.25rem) * 2);
2033
+ margin: 0 calc(var(--sfa-unit, 0.25rem) * -5)
2034
+ calc(var(--sfa-unit, 0.25rem) * -5);
2035
+ padding: calc(var(--sfa-unit, 0.25rem) * 3) calc(var(--sfa-unit, 0.25rem) * 5);
2036
+ border-top: 1px solid var(--sfa-accent-soft);
2037
+ border-radius: 0 0 var(--sf-radius, 12px) var(--sf-radius, 12px);
2038
+ background: var(--sf-color-bg, #ffffff);
2039
+ }
2040
+ .sfa-piece__foot .sfa-btn {
2041
+ flex: 1;
2042
+ white-space: nowrap;
2043
+ }
2044
+ .sfa-piece__foot .sfa-btn--primary {
2045
+ flex: 1.4;
2046
+ }
2047
+ .sfa-piece__photo img {
2048
+ display: block;
2049
+ height: min(40vh, 14rem);
2050
+ }
2051
+ .sfa-piece--celebrate {
2052
+ justify-items: center;
2053
+ text-align: center;
2054
+ }
2055
+ .sfa-piece__badge {
2056
+ display: grid;
2057
+ place-items: center;
2058
+ width: 64px;
2059
+ height: 64px;
2060
+ border-radius: 999px;
2061
+ background: var(--sfa-success-soft);
2062
+ color: var(--sfa-success);
2063
+ font-size: 2rem;
2064
+ font-weight: 700;
2065
+ }
2066
+ .sfa-piece__actions--center {
2067
+ justify-content: center;
2068
+ }
2069
+ .sfa-summary__list li {
2070
+ min-width: 0;
2071
+ }
2072
+ .sfa-summary__row--open {
2073
+ box-sizing: border-box;
2074
+ grid-template-columns: 56px 1fr auto auto;
2075
+ width: 100%;
2076
+ min-height: 48px;
2077
+ padding: 0;
2078
+ border: 0;
2079
+ background: none;
2080
+ color: inherit;
2081
+ font: inherit;
2082
+ text-align: left;
2083
+ cursor: pointer;
2084
+ }
2085
+ .sfa-summary__row--open:hover .sfa-summary__name {
2086
+ text-decoration: underline;
2087
+ }
2088
+ .sfa-summary__row--open .sfa-summary__price {
2089
+ font-weight: 700;
2090
+ color: var(--sf-color-danger, #b00020);
2091
+ }
2092
+ .sfa-summary__chevron {
2093
+ font-size: 1.5rem;
2094
+ color: var(--sf-color-muted, #666666);
2095
+ }
2096
+ @media (min-width: 900px) {
2097
+ .sfa-piece__foot {
2098
+ bottom: 0;
2099
+ }
2100
+ .sfa-piece__photo img {
2101
+ height: auto;
2102
+ max-height: 24rem;
2103
+ }
2104
+ }