@sc-360-v2/storefront-cms-library 0.5.63 → 0.5.65

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.
@@ -103,63 +103,61 @@
103
103
  .item {
104
104
  width: prepareMediaVariable(--_ctm-lt-im-wh);
105
105
  height: prepareMediaVariable(--_ctm-lt-im-ht);
106
- padding: var(--_ctm-mob-lt-im-pg, var(--_ctm-tab-lt-im-pg, var(--_ctm-lt-im-pg)));
107
106
 
108
- background-color: var(
109
- --_ctm-mob-dn-im-se-bd-cr,
110
- var(--_ctm-tab-dn-im-se-bd-cr, var(--_ctm-dn-im-se-bd-cr))
111
- );
107
+ position: relative;
108
+ img {
109
+ object-fit: cover;
110
+ display: block;
111
+ height: 100%;
112
+ width: 100%;
113
+ box-sizing: border-box;
112
114
 
113
- border-color: var(
114
- --_ctm-mob-dn-im-se-br-cr,
115
- var(--_ctm-tab-dn-im-se-br-cr, var(--_ctm-dn-im-se-br-cr))
116
- );
115
+ padding: var(--_ctm-mob-lt-im-pg, var(--_ctm-tab-lt-im-pg, var(--_ctm-lt-im-pg)));
117
116
 
118
- border-style: var(
119
- --_ctm-mob-dn-im-se-br-se,
120
- var(--_ctm-tab-dn-im-se-br-se, var(--_ctm-dn-im-se-br-se))
121
- );
117
+ background-color: var(
118
+ --_ctm-mob-dn-im-se-bd-cr,
119
+ var(--_ctm-tab-dn-im-se-bd-cr, var(--_ctm-dn-im-se-bd-cr))
120
+ );
122
121
 
123
- border-width: var(
124
- --_ctm-mob-dn-im-se-br-wh,
125
- var(--_ctm-tab-dn-im-se-br-wh, var(--_ctm-dn-im-se-br-wh))
126
- );
122
+ border-color: var(
123
+ --_ctm-mob-dn-im-se-br-cr,
124
+ var(--_ctm-tab-dn-im-se-br-cr, var(--_ctm-dn-im-se-br-cr))
125
+ );
127
126
 
128
- border-radius: var(
129
- --_ctm-mob-dn-im-se-br-rs,
130
- var(--_ctm-tab-dn-im-se-br-rs, var(--_ctm-dn-im-se-br-rs))
131
- );
127
+ border-style: var(
128
+ --_ctm-mob-dn-im-se-br-se,
129
+ var(--_ctm-tab-dn-im-se-br-se, var(--_ctm-dn-im-se-br-se))
130
+ );
132
131
 
133
- box-shadow: var(
134
- --_show-shadow,
135
- var(
136
- --_ctm-mob-dn-im-se-sw-ae,
137
- var(--_ctm-tab-dn-im-se-sw-ae, var(--_ctm-dn-im-se-sw-ae))
138
- )
139
- var(
140
- --_ctm-mob-dn-im-se-sw-br,
141
- var(--_ctm-tab-dn-im-se-sw-br, var(--_ctm-dn-im-se-sw-br))
142
- )
143
- var(
144
- --_ctm-mob-dn-im-se-sw-sd,
145
- var(--_ctm-tab-dn-im-se-sw-sd, var(--_ctm-dn-im-se-sw-sd))
146
- )
147
- var(
148
- --_ctm-mob-dn-im-se-sw-cr,
149
- var(--_ctm-tab-dn-im-se-sw-cr, var(--_ctm-dn-im-se-sw-cr))
150
- )
151
- );
132
+ border-width: var(
133
+ --_ctm-mob-dn-im-se-br-wh,
134
+ var(--_ctm-tab-dn-im-se-br-wh, var(--_ctm-dn-im-se-br-wh))
135
+ );
152
136
 
153
- position: relative;
154
- img {
155
- object-fit: cover;
156
- height: 100%;
157
- width: 100%;
158
- // Item Style > Border Radius rounds the item box, but the image is painted
159
- // over its corners. `overflow: hidden` on the item would clip it, except the
160
- // divider ::before sits outside the box (see dividerGapOffset) and would go
161
- // with it — so round the image itself instead.
162
- border-radius: inherit;
137
+ border-radius: var(
138
+ --_ctm-mob-dn-im-se-br-rs,
139
+ var(--_ctm-tab-dn-im-se-br-rs, var(--_ctm-dn-im-se-br-rs))
140
+ );
141
+
142
+ box-shadow: var(
143
+ --_show-shadow,
144
+ var(
145
+ --_ctm-mob-dn-im-se-sw-ae,
146
+ var(--_ctm-tab-dn-im-se-sw-ae, var(--_ctm-dn-im-se-sw-ae))
147
+ )
148
+ var(
149
+ --_ctm-mob-dn-im-se-sw-br,
150
+ var(--_ctm-tab-dn-im-se-sw-br, var(--_ctm-dn-im-se-sw-br))
151
+ )
152
+ var(
153
+ --_ctm-mob-dn-im-se-sw-sd,
154
+ var(--_ctm-tab-dn-im-se-sw-sd, var(--_ctm-dn-im-se-sw-sd))
155
+ )
156
+ var(
157
+ --_ctm-mob-dn-im-se-sw-cr,
158
+ var(--_ctm-tab-dn-im-se-sw-cr, var(--_ctm-dn-im-se-sw-cr))
159
+ )
160
+ );
163
161
  }
164
162
  }
165
163
  .items__container {
@@ -512,23 +512,20 @@
512
512
  margin-top: 10px;
513
513
  }
514
514
  }
515
- &[data-control-type="Side"] {
516
- .left-button,
517
- .right-button {
518
- background-color: transparent;
515
+ // Background Shape, exactly as the Gallery Slider element does it: the button is
516
+ // a circle by default, "None" squares it off and "Square" gives it the 4px
517
+ // rounding. Keyed off the BUTTON rather than the `.embla` container, because
518
+ // that is the one place both carousel components publish the attribute.
519
+ .left-button,
520
+ .right-button {
521
+ &[data-background-shape="None"] {
522
+ border-radius: 0;
519
523
  }
520
- }
521
- &[data-background-shape="Round"] {
522
- .left-button,
523
- .right-button {
524
- // background-color: var(
525
- // --_ctm-mob-dn-ie-pn-as-bd-cr,
526
- // var(--_ctm-tab-dn-ie-pn-as-bd-cr, var(--_ctm-dn-ie-pn-as-bd-cr))
527
- // );
528
- &:not(:disabled):hover {
529
- @include BgColorLighter(var(--_thm-py-bs-hr-se-bd-cr), 5%);
530
- }
531
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
524
+ &[data-background-shape="Round"] {
525
+ border-radius: 50%;
526
+ }
527
+ &[data-background-shape="Square"] {
528
+ border-radius: 4px;
532
529
  }
533
530
  }
534
531
 
@@ -638,37 +635,16 @@
638
635
  }
639
636
  }
640
637
  }
641
- // Image > Pagination Arrows: the button's own box. Until now the arrows carried
642
- // only a glyph, a size and a colour, so the Border and Radius tabs of that panel
643
- // had nothing to write to and the box below was hardcoded. Declared once for both
644
- // buttons and placed after them so it wins on source order each still sets its
645
- // own margin and disabled state above.
646
- //
647
- // Every fallback is the value that was hardcoded here before (10px padding, a
648
- // 50% radius, no border), so an arrow nobody has styled looks exactly as it did.
649
- .left-button,
650
- .right-button {
651
- padding: prepareMediaVariable(--_ctm-dn-ie-pn-as-pg, 10px);
652
- background-color: prepareMediaVariable(--_ctm-dn-ie-pn-as-bd-cr, transparent);
653
- border-color: prepareMediaVariable(--_ctm-dn-ie-pn-as-br-cr, transparent);
654
- border-style: prepareMediaVariable(--_ctm-dn-ie-pn-as-br-se, solid);
655
- border-width: prepareMediaVariable(--_ctm-dn-ie-pn-as-br-wh, 0);
656
- // Falls back to 50%, NOT prepareMediaVariable's `inherit` tail — an arrow with
657
- // no configured radius has always been a circle.
658
- border-radius: prepareMediaVariable(--_ctm-dn-ie-pn-as-br-rs, 50%);
659
- // Shadow is opt-in: these arrows have never cast one, so it only appears once
660
- // Show Shadow is switched on.
661
- box-shadow: none;
662
-
663
- &[data-show-shadow="true"] {
664
- box-shadow: prepareMediaVariable(--_ctm-dn-ie-pn-as-sw-ae, 0 0)
665
- prepareMediaVariable(--_ctm-dn-ie-pn-as-sw-br, 0)
666
- prepareMediaVariable(--_ctm-dn-ie-pn-as-sw-sd, 0)
667
- prepareMediaVariable(--_ctm-dn-ie-pn-as-sw-cr, transparent);
668
- }
669
-
670
- &[data-show-border="false"] {
671
- border: none;
638
+ // Image > Pagination Arrows. Only what the panel offers: Background Color and
639
+ // Arrow Color (Background Shape is handled on the container above, Arrow Size by
640
+ // the two rules before this one). Same treatment the Gallery Slider element uses
641
+ // the chosen fill is mixed down to 10%, lifting to 20% on hover, so a solid
642
+ // colour reads as a tint behind the glyph rather than a hard disc.
643
+ :is(.left-button, .right-button) {
644
+ @include BgColorLighter(var(--_ctm-dn-ie-pn-as-bd-cr), 10%);
645
+
646
+ &:not(:disabled):hover {
647
+ @include BgColorLighter(var(--_ctm-dn-ie-pn-as-bd-cr), 20%);
672
648
  }
673
649
 
674
650
  // Arrow Color. Applied to the svg itself and to any descendant that carries a
@@ -686,15 +662,6 @@
686
662
  fill: prepareMediaVariable(--_ctm-dn-ie-pn-as-aw-cr, var(--_gray-500));
687
663
  }
688
664
  }
689
-
690
- // Background Shape overrides the configured radius when it is set to something
691
- // definite; "None" leaves the radius alone.
692
- &[data-background-shape="Round"] {
693
- border-radius: 50%;
694
- }
695
- &[data-background-shape="Square"] {
696
- border-radius: 0;
697
- }
698
665
  }
699
666
 
700
667
  .icon {
@@ -976,15 +943,24 @@
976
943
 
977
944
  border-color: var(
978
945
  --_show-im-border,
979
- var(--_ctm-mob-dn-ie-im-se-br-cr, var(--_ctm-tab-dn-ie-im-se-br-cr, var(--_ctm-dn-ie-im-se-br-cr)))
946
+ var(
947
+ --_ctm-mob-dn-ie-im-se-br-cr,
948
+ var(--_ctm-tab-dn-ie-im-se-br-cr, var(--_ctm-dn-ie-im-se-br-cr))
949
+ )
980
950
  );
981
951
  border-style: var(
982
952
  --_show-im-border,
983
- var(--_ctm-mob-dn-ie-im-se-br-se, var(--_ctm-tab-dn-ie-im-se-br-se, var(--_ctm-dn-ie-im-se-br-se)))
953
+ var(
954
+ --_ctm-mob-dn-ie-im-se-br-se,
955
+ var(--_ctm-tab-dn-ie-im-se-br-se, var(--_ctm-dn-ie-im-se-br-se))
956
+ )
984
957
  );
985
958
  border-width: var(
986
959
  --_show-im-border,
987
- var(--_ctm-mob-dn-ie-im-se-br-wh, var(--_ctm-tab-dn-ie-im-se-br-wh, var(--_ctm-dn-ie-im-se-br-wh)))
960
+ var(
961
+ --_ctm-mob-dn-ie-im-se-br-wh,
962
+ var(--_ctm-tab-dn-ie-im-se-br-wh, var(--_ctm-dn-ie-im-se-br-wh))
963
+ )
988
964
  );
989
965
  border-radius: var(
990
966
  --_ctm-mob-dn-ie-im-se-br-rs,
package/dist/quotes.scss CHANGED
@@ -4,6 +4,17 @@
4
4
 
5
5
  $resizerId: "[data-cms-tool='cms-element-resizer']";
6
6
  $resizeActive: '[data-cms-element-resizer="true"]';
7
+
8
+ // Design > Icon Actions: the CSS-variable scope of each quick action's sub-section,
9
+ // keyed by the class its span carries. `splitCamelCaseAndJoin` turns the schema's
10
+ // selector keys into these codes, e.g. `sendMessageIcon` -> `sd-me-in`.
11
+ $quote-action-icons: (
12
+ "quotes_send": "sd-me-in",
13
+ "quotes_download": "dd-in",
14
+ "quotes_print": "pt-in",
15
+ "quotes_view": "vw-in",
16
+ "quotes_cancel": "cl-in",
17
+ );
7
18
  [data-div-type="element"] {
8
19
  &[data-element-type="quotes"] {
9
20
  width: var(
@@ -20,7 +31,7 @@ $resizeActive: '[data-cms-element-resizer="true"]';
20
31
 
21
32
  & > div {
22
33
  &.wrapper {
23
- width: 100%;
34
+ width: prepareMediaVariable(--_ctm-lt-wh);
24
35
  padding: var(--_ctm-mob-lt-pg, var(--_ctm-tab-lt-pg, var(--_ctm-lt-pg)));
25
36
  &[data-divider-type="true"] .metric_item {
26
37
  border: 0px !important;
@@ -291,6 +302,34 @@ $resizeActive: '[data-cms-element-resizer="true"]';
291
302
  flex: 1 0 0;
292
303
  align-self: stretch;
293
304
  font-size: 14px;
305
+ & > span {
306
+ display: inline-flex;
307
+ align-items: center;
308
+ cursor: pointer;
309
+ }
310
+
311
+ // Design > Icons gives each action a tab of its own, so each reads its
312
+ // own size / color / stroke width rather than one shared set. The
313
+ // suffixes match the tabs in quotes-element-data.ts: Send, Download,
314
+ // Print, View, Cancel.
315
+ // Design > Icon Actions gives each action a sub-section of its own, so
316
+ // each reads its own size / color / stroke width rather than one shared
317
+ // set. The codes are what `splitCamelCaseAndJoin` makes of those
318
+ // sub-sections: sendMessageIcon -> sd-me-in, downloadIcon -> dd-in, and
319
+ // so on. The fallbacks keep quotes saved before this section looking as
320
+ // they always have.
321
+ @each $class, $scope in $quote-action-icons {
322
+ .#{$class} span svg {
323
+ width: prepareMediaVariable(--_ctm-dn-in-as-#{$scope}-in-se, 20px);
324
+ height: prepareMediaVariable(--_ctm-dn-in-as-#{$scope}-in-se, 20px);
325
+
326
+ path {
327
+ stroke: prepareMediaVariable(--_ctm-dn-in-as-#{$scope}-in-cr, #667085);
328
+ // Overrides the stroke-width presentation attribute baked into the icon markup.
329
+ stroke-width: prepareMediaVariable(--_ctm-dn-in-as-#{$scope}-se-wh, 1.67);
330
+ }
331
+ }
332
+ }
294
333
  }
295
334
  }
296
335
  }
@@ -475,8 +514,43 @@ $resizeActive: '[data-cms-element-resizer="true"]';
475
514
  &[data-background-shape="Round"] {
476
515
  .left-button,
477
516
  .right-button {
478
- background-color: #f2f5f5;
479
- box-sizing: 0 4px 8px rgba(0, 0, 0, 0.1);
517
+ // Pagination Arrows > Background Color, tinted rather than applied flat:
518
+ // 10% of the picked color at rest and 20% on hover, so the arrow reads as
519
+ // a soft chip over the card and the hover is a visible step up. Falls back
520
+ // to the grey these buttons have always used when no color is picked.
521
+ @include BgColorLighter(prepareMediaVariable(--_ctm-dn-pn-as-bd-cr, #f2f5f5), 10%);
522
+
523
+ // Disabled arrows keep the resting tint — a hover response there would
524
+ // suggest a slide that cannot be reached.
525
+ &:not(:disabled):hover {
526
+ @include BgColorLighter(prepareMediaVariable(--_ctm-dn-pn-as-bd-cr, #f2f5f5), 20%);
527
+ }
528
+ }
529
+ }
530
+ // Square and None carry the same tint; only the corners differ. The 50% radius
531
+ // that rounds these buttons is set on `.left-button` / `.right-button` below,
532
+ // so both shapes have to state their own — 6px for Square, square corners for
533
+ // None.
534
+ &[data-background-shape="Square"] {
535
+ .left-button,
536
+ .right-button {
537
+ border-radius: 4px;
538
+ @include BgColorLighter(prepareMediaVariable(--_ctm-dn-pn-as-bd-cr, #f2f5f5), 10%);
539
+
540
+ &:not(:disabled):hover {
541
+ @include BgColorLighter(prepareMediaVariable(--_ctm-dn-pn-as-bd-cr, #f2f5f5), 20%);
542
+ }
543
+ }
544
+ }
545
+ &[data-background-shape="None"] {
546
+ .left-button,
547
+ .right-button {
548
+ border-radius: 0;
549
+ @include BgColorLighter(prepareMediaVariable(--_ctm-dn-pn-as-bd-cr, #f2f5f5), 10%);
550
+
551
+ &:not(:disabled):hover {
552
+ @include BgColorLighter(prepareMediaVariable(--_ctm-dn-pn-as-bd-cr, #f2f5f5), 20%);
553
+ }
480
554
  }
481
555
  }
482
556
  &[data-control-type="Bottom-Overflow"] {
@@ -487,6 +561,13 @@ $resizeActive: '[data-cms-element-resizer="true"]';
487
561
  top: unset;
488
562
  bottom: 6px;
489
563
  }
564
+ // Side-Overflow keeps the cards full width and lays an arrow over each edge,
565
+ // which is what the base rules above already do. Stated as its own block so the
566
+ // option is anchored to a rule rather than working by falling through — the
567
+ // reason the "Left" and "Right" it replaces were indistinguishable.
568
+ &[data-control-type="Side-Overflow"] {
569
+ justify-content: space-between;
570
+ }
490
571
  &[data-control-type="Bottom"] {
491
572
  transform: unset;
492
573
  position: static;
package/dist/table.scss CHANGED
@@ -26,9 +26,10 @@
26
26
  & > .wrapper {
27
27
  width: 100%;
28
28
 
29
- .pagination:hover {
30
- --_sf-bd-cr: var(--_ctm-dn-pn-hr-se-bd-cr, var(--_tst-dn-pn-hr-se-bd-cr));
31
- }
29
+ // No `.pagination:hover` fill rule: hovering anywhere on the strip used to
30
+ // recolour the whole thing from the hover background key. The row's colour comes
31
+ // from Default Page Style now, and Hover State colours the page chip under the
32
+ // pointer rather than the entire bar.
32
33
 
33
34
  .pagination .active:hover {
34
35
  cursor: pointer;
@@ -46,9 +47,24 @@
46
47
  --_sf-hr-lh: var(--_ctm-dn-pn-hr-se-le-ht, var(--_tst-dn-pn-hr-se-le-ht));
47
48
  }
48
49
  }
49
- &[data-widget-shadow="false"] {
50
+ // Table Widget > Box Shadow, as an opt-in on the attribute rather than through the
51
+ // inherited `--_show-shadow` sentinel it used to use.
52
+ //
53
+ // `--_show-shadow` is a custom property, so it INHERITS. 69 element stylesheets
54
+ // set it to `none` on themselves when their own shadow is off, and any one of them
55
+ // wrapping a Table passed that `none` straight down — `var(--_show-shadow, …)`
56
+ // then resolved to `none` and never reached its fallback, so the Table's own Box
57
+ // Shadow did nothing. Keying off the element's own attribute cannot be inherited
58
+ // into. This is the same shape the Load More button in this file already uses.
59
+ &[data-widget-shadow="true"] {
50
60
  .table__wrapper {
51
- --_show-shadow: none;
61
+ box-shadow: var(
62
+ --_ctm-mob-dn-te-wt-sw-ae,
63
+ var(--_ctm-tab-dn-te-wt-sw-ae, var(--_ctm-dn-te-wt-sw-ae))
64
+ )
65
+ var(--_ctm-mob-dn-te-wt-sw-br, var(--_ctm-tab-dn-te-wt-sw-br, var(--_ctm-dn-te-wt-sw-br)))
66
+ var(--_ctm-mob-dn-te-wt-sw-sd, var(--_ctm-tab-dn-te-wt-sw-sd, var(--_ctm-dn-te-wt-sw-sd)))
67
+ var(--_ctm-mob-dn-te-wt-sw-cr, var(--_ctm-tab-dn-te-wt-sw-cr, var(--_ctm-dn-te-wt-sw-cr)));
52
68
  }
53
69
  }
54
70
  &[data-widget-border="true"] {
@@ -241,13 +257,8 @@
241
257
  var(--_ctm-tab-dn-te-wt-br-rs, var(--_ctm-dn-te-wt-br-rs, var(--_tst-dn-te-wt-br-rs)))
242
258
  );
243
259
 
244
- box-shadow: var(
245
- --_show-shadow,
246
- var(--_ctm-mob-dn-te-wt-sw-ae, var(--_ctm-tab-dn-te-wt-sw-ae, var(--_ctm-dn-te-wt-sw-ae)))
247
- var(--_ctm-mob-dn-te-wt-sw-br, var(--_ctm-tab-dn-te-wt-sw-br, var(--_ctm-dn-te-wt-sw-br)))
248
- var(--_ctm-mob-dn-te-wt-sw-sd, var(--_ctm-tab-dn-te-wt-sw-sd, var(--_ctm-dn-te-wt-sw-sd)))
249
- var(--_ctm-mob-dn-te-wt-sw-cr, var(--_ctm-tab-dn-te-wt-sw-cr, var(--_ctm-dn-te-wt-sw-cr)))
250
- );
260
+ // Off by default; the `[data-widget-shadow="true"]` rule above turns it on.
261
+ box-shadow: none;
251
262
 
252
263
  width: 100%;
253
264
 
@@ -375,11 +386,26 @@
375
386
  }
376
387
  tbody {
377
388
  .tbody__row__divider {
378
- background-color: var(
379
- --_ctm-mob-dn-te-rw-bd-cr,
380
- var(--_ctm-tab-dn-te-rw-bd-cr, var(--_ctm-dn-te-rw-bd-cr))
389
+ // Table Rows carries Default / Hover states now. The default state falls
390
+ // back to the old flat `te-rw-bd-cr`, which is what tables saved before
391
+ // the split still paint from.
392
+ background-color: prepareMediaVariable(
393
+ --_ctm-dn-te-rw-dt-se-bd-cr,
394
+ prepareMediaVariable(--_ctm-dn-te-rw-bd-cr)
381
395
  );
382
396
 
397
+ // Hover falls back to the default state, so a row with no hover colour
398
+ // set simply keeps its own.
399
+ &:hover {
400
+ background-color: prepareMediaVariable(
401
+ --_ctm-dn-te-rw-hr-se-bd-cr,
402
+ prepareMediaVariable(
403
+ --_ctm-dn-te-rw-dt-se-bd-cr,
404
+ prepareMediaVariable(--_ctm-dn-te-rw-bd-cr)
405
+ )
406
+ );
407
+ }
408
+
383
409
  height: var(--_ctm-mob-lt-rw-ht, var(--_ctm-tab-lt-rw-ht, var(--_ctm-lt-rw-ht)));
384
410
 
385
411
  .td__col__divider {
@@ -484,33 +510,112 @@
484
510
  align-items: var(--_align-center);
485
511
  justify-content: var(--_ctm-mob-lt-pn-at, var(--_ctm-tab-lt-pn-at, var(--_ctm-lt-pn-at)));
486
512
  margin-top: 10px;
487
- background-color: var(
488
- --_sf-bd-cr,
489
- var(
490
- --_ctm-mob-dn-pn-dt-se-bd-cr,
491
- var(--_ctm-tab-dn-pn-dt-se-bd-cr, var(--_ctm-dn-pn-dt-se-bd-cr))
492
- )
493
- );
513
+ // Default Page Style > Background Color fills the whole pagination row.
514
+ // Note this is the PAGE key, not the arrows' `pn-dt-se-bd-cr` — the bar used
515
+ // to read that one, which is why colouring the arrows flooded the strip.
516
+ background-color: prepareMediaVariable(--_ctm-dn-pn-dt-se-pe-bd-cr, transparent);
517
+ gap: 12px;
494
518
  &.pagination__center {
495
519
  justify-content: var(justify-center);
496
520
  }
497
521
 
522
+ // Pagination arrows, styled the way the Gallery Slider and Allocation Details
523
+ // elements style theirs: a plain 10px-padded button sized by Arrow Size, whose
524
+ // only fill is the chosen Background Color mixed down to 10% (20% on hover),
525
+ // with Background Shape deciding the corner.
498
526
  button {
527
+ padding: 10px;
528
+ border: none;
529
+ border-radius: 50%;
530
+ display: flex;
531
+ align-items: center;
532
+ justify-content: center;
533
+ cursor: pointer;
534
+ outline: none;
535
+ width: prepareMediaVariable(--_ctm-dn-pn-dt-se-aw-se, 20px);
536
+ height: prepareMediaVariable(--_ctm-dn-pn-dt-se-aw-se, 20px);
537
+
538
+ @include BgColorLighter(var(--_ctm-dn-pn-dt-se-bd-cr), 10%);
539
+ // Hover. Pagination offers a Default state only, so there are no hover-state
540
+ // variables to read — the button simply lifts its own fill, which is what it
541
+ // did before the state existed.
542
+ &:not(:disabled):hover {
543
+ @include BgColorLighter(var(--_ctm-dn-pn-dt-se-bd-cr), 20%);
544
+ }
545
+
546
+ // Background Shape. Keyed off the button, which is where the renderer
547
+ // publishes the attribute alongside the copy on the container.
548
+ &[data-background-shape="None"] {
549
+ border-radius: 0;
550
+ }
551
+ &[data-background-shape="Round"] {
552
+ border-radius: 50%;
553
+ }
554
+ &[data-background-shape="Square"] {
555
+ border-radius: 4px;
556
+ }
557
+
499
558
  svg {
500
- width: var(--_width-18);
501
- height: var(--_height-18);
502
- path {
503
- stroke: var(--_gray-500);
504
- // stroke: var(--_ctm-dn-pn-in-c1, var(--_tst-dn-pn-in-c1));
505
- // Overrides the stroke-width presentation attribute baked into the icon markup.
506
- stroke-width: prepareMediaVariable(--_ctm-dn-pn-se-wh, 1.25);
559
+ width: calc(#{prepareMediaVariable(--_ctm-dn-pn-dt-se-aw-se, 20px)} * 0.5);
560
+ height: calc(#{prepareMediaVariable(--_ctm-dn-pn-dt-se-aw-se, 20px)} * 0.5);
561
+
562
+ // Arrow Color. A library glyph paints with `stroke` on its paths while an
563
+ // uploaded one may use `fill`, or set either on the root.
564
+ &[stroke]:not([stroke="none"]),
565
+ [stroke]:not([stroke="none"]) {
566
+ stroke: prepareMediaVariable(--_ctm-dn-pn-dt-se-aw-cr, var(--_gray-500));
567
+ }
568
+ &[fill]:not([fill="none"]),
569
+ [fill]:not([fill="none"]) {
570
+ fill: prepareMediaVariable(--_ctm-dn-pn-dt-se-aw-cr, var(--_gray-500));
507
571
  }
508
572
  }
509
573
  }
510
- span {
574
+ // The page chip. `> span` deliberately, not a bare `span`: the page markup is
575
+ // an outer span wrapping an inner one that holds the number, so a descendant
576
+ // selector matched BOTH — the inner span picked up the padding and the fill
577
+ // and painted a tight box around the digits instead of the chip being filled.
578
+ & > span {
511
579
  float: left;
512
580
  padding: var(--_pd-8) var(--_pd-16);
513
581
  text-decoration: none;
582
+
583
+ // inline-flex so the fill covers the whole padded chip, and so the number
584
+ // sits centred in it once Background Shape rounds the corners.
585
+ display: inline-flex;
586
+ align-items: center;
587
+ justify-content: center;
588
+ box-sizing: border-box;
589
+
590
+ // No fill of its own: Default Page Style > Background Color paints the whole
591
+ // row (see `.pagination` above), so repeating it here would draw a second,
592
+ // tighter block of the same colour on top of it. The chip contributes its
593
+ // Shape, and takes the Hover state's colour while pointed at.
594
+ background-color: transparent;
595
+ &[data-page-shape="rectangle"] {
596
+ border-radius: 0;
597
+ }
598
+ &[data-page-shape="rounded"] {
599
+ border-radius: 4px;
600
+ }
601
+ &[data-page-shape="circle"] {
602
+ border-radius: 50%;
603
+ // A circle needs equal sides, so the chip is at least as wide as it is
604
+ // tall however few digits the number has.
605
+ aspect-ratio: 1;
606
+ padding: var(--_pd-8);
607
+ }
608
+ // No hover fill: Pagination offers a Default state only, so there is no
609
+ // hover-state colour to read. The chip's shape and the row's fill are the
610
+ // whole of Default Page Style.
611
+
612
+ // The inner span is the number itself — it carries the typography, never the
613
+ // chip's box, so it must not repeat the fill or the padding.
614
+ & > span {
615
+ float: none;
616
+ padding: 0;
617
+ background-color: transparent;
618
+ }
514
619
  span {
515
620
  // color: var(--_sf-hr-fc, var(--_ctm-dn-pn-bn-cr, var(--_tst-dn-pn-bn-cr)));
516
621
  // font-size: var(--_sf-hr-fs, var(--_ctm-dn-pn-ft-se, var(--_tst-dn-pn-ft-se)));
@@ -632,16 +737,13 @@
632
737
  );
633
738
  }
634
739
  }
740
+ // Arrow Color / Arrow Size for anything drawn as text in this button; the SVG
741
+ // itself is sized and coloured by the `button svg` rules above. These read the
742
+ // shared arrow keys now, not the `iconSize` / `iconColor` the section carried
743
+ // before it moved to the Slider Arrows shape.
635
744
  .pagination__arrows {
636
- color: var(
637
- --_sf-hr-fc,
638
- var(--_ctm-mob-dn-pn-in-c1, var(--_ctm-tab-dn-pn-in-c1, var(--_ctm-dn-pn-in-c1)))
639
- );
640
-
641
- font-size: var(
642
- --_sf-hr-fs,
643
- var(--_ctm-mob-dn-pn-in-se, var(--_ctm-tab-dn-pn-in-se, var(--_ctm-dn-pn-in-se)))
644
- );
745
+ color: prepareMediaVariable(--_ctm-dn-pn-dt-se-aw-cr);
746
+ font-size: prepareMediaVariable(--_ctm-dn-pn-dt-se-aw-se);
645
747
  }
646
748
  }
647
749
 
@@ -0,0 +1,35 @@
1
+ import { CommonStyleProperties } from "../../../global/style-properties";
2
+ import { CMSHTMLAttributes } from "../../../global/attributes";
3
+ import { AlignSelfValue, BoxSizingValue, GlobalImageAttributes, GridAreaValue, HeightValue, ImageBuilderAttributes, JustifySelfValue, MarginValue, MaxHeightValue, MaxWidthValue, MinHeightValue, MinWidthValue, PaddingValue } from "../../../global/types";
4
+ import { BuilderAttributes, CMSElementInterface } from "../common";
5
+ export interface BundleCategoriesStyleProperties extends CommonStyleProperties {
6
+ minHeight?: MinHeightValue;
7
+ height?: HeightValue;
8
+ minWidth?: MinWidthValue;
9
+ maxWidth?: MaxWidthValue;
10
+ maxHeight?: MaxHeightValue;
11
+ gridArea?: GridAreaValue;
12
+ boxSizing?: BoxSizingValue;
13
+ padding?: PaddingValue;
14
+ marginLeft?: MarginValue;
15
+ marginTop?: MarginValue;
16
+ marginBottom?: MarginValue;
17
+ marginRight?: MarginValue;
18
+ justifySelf?: JustifySelfValue;
19
+ alignSelf?: AlignSelfValue;
20
+ }
21
+ /**
22
+ * Matches Bundle Details, the element this strip was pulled out of — a section
23
+ * composed from elements has to line up with the monolithic one it replaces.
24
+ * Height is auto because the strip is a single row of chips that sizes to them.
25
+ */
26
+ export declare const getDefaultStyles: () => BundleCategoriesStyleProperties;
27
+ export interface CMSBundleCategoriesInterface extends Omit<CMSElementInterface, "attributes"> {
28
+ attributes: {
29
+ HTML: Pick<CMSHTMLAttributes, GlobalImageAttributes>;
30
+ BUILDER: Pick<BuilderAttributes, ImageBuilderAttributes>;
31
+ CUSTOM: any;
32
+ };
33
+ styles: BundleCategoriesStyleProperties;
34
+ childrenStyles?: CommonStyleProperties;
35
+ }
@@ -48,6 +48,7 @@ import * as brandSchema from "./elements/brand/index";
48
48
  import * as brandImageSchema from "./elements/brand-image/index";
49
49
  import * as bundleSchema from "./elements/bundle/index";
50
50
  import * as bundleDetailsSchema from "./elements/bundle-details/index";
51
+ import * as bundleCategoriesSchema from "./elements/bundle-categories/index";
51
52
  import * as lightBoxV2Schema from "./elements/light-box-v2/index";
52
53
  import * as searchSchema from "./elements/search/index";
53
54
  import * as layouterSchema from "./elements/layouter/index";
@@ -96,4 +97,4 @@ import embroideryVectors from "./embroidery-icons/index";
96
97
  import * as pageSchema from "./elements/page";
97
98
  import * as kitDetails from "./elements/kit-details";
98
99
  import * as kitsSchema from "./elements/kits";
99
- export { ElementEditSchema, amountEstimatorSchema, bulkVariantPickerSchema, buttonSchema, cmsTypes, codeSchema, commonFunctions, containerSchema, countdownSchema, embedSchema, enums, faqSchema, gallerySliderSchema, gridSchema, imageHotspotSchema, imageSchema, interfaces, mapSchema, paymentMethodsSchema, pickupLocationsSchema, priceSchema, productActionsSchema, productHighlightsSchema, productImageSchema, productInventorySchema, productPromotionsSchema, quantitySelectorSchema, scrollSchema, sectionSchema, shippingEstimatorSchema, socialIconsSchema, stackSchema, storeLocationsSchema, tabSchema, tableSchema, textSchema, uomSelectorSchema, variantPickerSchema, videoSChema, volumePricingSchema, lightboxSchema, cartSchema, profileSchema, productSchema, repeaterSchema, brandSchema, bundleSchema, bundleDetailsSchema, brandImageSchema, lightBoxV2Schema, searchSchema, layouterSchema, layouterItemSchema, categoryDetailsSchema, contactUsSchema, loginSchema, createFormSchema, resetPasswordSchema, searchResultsHeadingSchema, itemStockSchema, lineItemSchema, tabsV2Schema, tabsContainerSchema, marchandiserSetsSchema, formBuilder, quickLinksSchema, addOrderSchema, buyForTabsSchema, buyForTabsContainerSchema, checkoutSchema, cartSummarySchema, toasterSchema, spotlightSchema, productCustomizationsSchema, iconListSchema, orderStatusSchema, menuV2Schema, menuItemSchema, layouterProSchema, layouterProItemSchema, userElementsSchema, filterResultsSchema, productSizeChartSchema, badgeSchema, cartAttributesSchema, loaderSchema, addProductsTabSchema, shippingPaymentsSchema, couponSchema, megaMenuSchema, megaMenuContainerSchema, simpleListSchema, cartWrapperSchema, embroiderySchema, embroideryVectors, pageSchema, kitDetails, kitsSchema, };
100
+ export { ElementEditSchema, amountEstimatorSchema, bulkVariantPickerSchema, buttonSchema, cmsTypes, codeSchema, commonFunctions, containerSchema, countdownSchema, embedSchema, enums, faqSchema, gallerySliderSchema, gridSchema, imageHotspotSchema, imageSchema, interfaces, mapSchema, paymentMethodsSchema, pickupLocationsSchema, priceSchema, productActionsSchema, productHighlightsSchema, productImageSchema, productInventorySchema, productPromotionsSchema, quantitySelectorSchema, scrollSchema, sectionSchema, shippingEstimatorSchema, socialIconsSchema, stackSchema, storeLocationsSchema, tabSchema, tableSchema, textSchema, uomSelectorSchema, variantPickerSchema, videoSChema, volumePricingSchema, lightboxSchema, cartSchema, profileSchema, productSchema, repeaterSchema, brandSchema, bundleSchema, bundleDetailsSchema, bundleCategoriesSchema, brandImageSchema, lightBoxV2Schema, searchSchema, layouterSchema, layouterItemSchema, categoryDetailsSchema, contactUsSchema, loginSchema, createFormSchema, resetPasswordSchema, searchResultsHeadingSchema, itemStockSchema, lineItemSchema, tabsV2Schema, tabsContainerSchema, marchandiserSetsSchema, formBuilder, quickLinksSchema, addOrderSchema, buyForTabsSchema, buyForTabsContainerSchema, checkoutSchema, cartSummarySchema, toasterSchema, spotlightSchema, productCustomizationsSchema, iconListSchema, orderStatusSchema, menuV2Schema, menuItemSchema, layouterProSchema, layouterProItemSchema, userElementsSchema, filterResultsSchema, productSizeChartSchema, badgeSchema, cartAttributesSchema, loaderSchema, addProductsTabSchema, shippingPaymentsSchema, couponSchema, megaMenuSchema, megaMenuContainerSchema, simpleListSchema, cartWrapperSchema, embroiderySchema, embroideryVectors, pageSchema, kitDetails, kitsSchema, };