@sc-360-v2/storefront-cms-library 0.5.52 → 0.5.53

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.
package/dist/faq.scss CHANGED
@@ -169,9 +169,13 @@
169
169
  --_ctm-mob-dn-cd-an-im-sw-sd,
170
170
  var(--_ctm-tab-dn-cd-an-im-sw-sd, var(--_ctm-dn-cd-an-im-sw-sd))
171
171
  )
172
- var(
173
- --_ctm-mob-dn-cd-an-im-sw-sd,
174
- var(--_ctm-tab-dn-cd-an-im-sw-sd, var(--_ctm-dn-cd-an-im-sw-sd))
172
+ // The colour slot repeated `sw-sd` (spread) instead of `sw-cr`. Angle
173
+ // resolves to two lengths, so the value came out as five lengths and no
174
+ // colour — invalid, and the whole declaration was dropped. That is why no
175
+ // shadow appeared here however the panel was set.
176
+ var(
177
+ --_ctm-mob-dn-cd-an-im-sw-cr,
178
+ var(--_ctm-tab-dn-cd-an-im-sw-cr, var(--_ctm-dn-cd-an-im-sw-cr))
175
179
  )
176
180
  );
177
181
 
@@ -279,6 +283,20 @@
279
283
  --_ctm-mob-dn-cd-an-im-ue,
280
284
  var(--_ctm-tab-dn-cd-an-im-ue, var(--_ctm-dn-cd-an-im-ue))
281
285
  );
286
+ // Collapsed item > title > Text Transform, and the word wrap/break pair the
287
+ // typography panel renders alongside it.
288
+ text-transform: var(
289
+ --_ctm-mob-dn-cd-an-im-tt-tm,
290
+ var(--_ctm-tab-dn-cd-an-im-tt-tm, var(--_ctm-dn-cd-an-im-tt-tm, none))
291
+ );
292
+ word-wrap: var(
293
+ --_ctm-mob-dn-cd-an-im-wd-wp,
294
+ var(--_ctm-tab-dn-cd-an-im-wd-wp, var(--_ctm-dn-cd-an-im-wd-wp, normal))
295
+ );
296
+ word-break: var(
297
+ --_ctm-mob-dn-cd-an-im-wd-bk,
298
+ var(--_ctm-tab-dn-cd-an-im-wd-bk, var(--_ctm-dn-cd-an-im-wd-bk, normal))
299
+ );
282
300
  }
283
301
  .icon {
284
302
  display: var(--_sf-show-icon-ff, flex);
@@ -301,7 +319,13 @@
301
319
  }
302
320
  .accordion-items {
303
321
  display: flex;
304
- gap: 8px;
322
+ align-items: center;
323
+ // Info Icon > Icon Gap. Was a hardcoded 8px, so there was no way to space
324
+ // the info icon away from the title.
325
+ gap: var(
326
+ --_ctm-mob-dn-io-in-in-gp,
327
+ var(--_ctm-tab-dn-io-in-in-gp, var(--_ctm-dn-io-in-in-gp, 8px))
328
+ );
305
329
  .icon {
306
330
  display: var(--_hover-show-icon, var(--_show-icon, flex));
307
331
  svg {
@@ -464,6 +488,19 @@
464
488
  --_ctm-mob-dn-ed-an-im-ue,
465
489
  var(--_ctm-tab-dn-ed-an-im-ue, var(--_ctm-dn-ed-an-im-ue))
466
490
  );
491
+ // Expanded item > title > Text Transform and the word wrap/break pair.
492
+ text-transform: var(
493
+ --_ctm-mob-dn-ed-an-im-tt-tm,
494
+ var(--_ctm-tab-dn-ed-an-im-tt-tm, var(--_ctm-dn-ed-an-im-tt-tm, none))
495
+ );
496
+ word-wrap: var(
497
+ --_ctm-mob-dn-ed-an-im-wd-wp,
498
+ var(--_ctm-tab-dn-ed-an-im-wd-wp, var(--_ctm-dn-ed-an-im-wd-wp, normal))
499
+ );
500
+ word-break: var(
501
+ --_ctm-mob-dn-ed-an-im-wd-bk,
502
+ var(--_ctm-tab-dn-ed-an-im-wd-bk, var(--_ctm-dn-ed-an-im-wd-bk, normal))
503
+ );
467
504
  }
468
505
  .icon {
469
506
  display: var(--_sf-show-icon-ff, flex);
@@ -486,7 +523,13 @@
486
523
  }
487
524
  .accordion-items {
488
525
  display: flex;
489
- gap: 8px;
526
+ align-items: center;
527
+ // The expanded item has its own copy of this rule, so the Info Icon gap has
528
+ // to be read here too — changing it only moved the collapsed items.
529
+ gap: var(
530
+ --_ctm-mob-dn-io-in-in-gp,
531
+ var(--_ctm-tab-dn-io-in-in-gp, var(--_ctm-dn-io-in-in-gp, 8px))
532
+ );
490
533
  .icon {
491
534
  display: var(--_hover-show-icon, var(--_show-icon, flex));
492
535
  svg {
@@ -7,6 +7,7 @@ $icon: "flex__ili_span_icn";
7
7
  $text: "flex__ili_span_txt";
8
8
  $textContaner: "flex__ili__container";
9
9
  $desc: "flex__ili__description";
10
+ $overflowSelector: ".flex__overflow";
10
11
  $pos2: (
11
12
  hrz: (
12
13
  keys: (
@@ -57,6 +58,7 @@ $pos2: (
57
58
  ),
58
59
  ),
59
60
  );
61
+
60
62
  [data-div-type="element"] {
61
63
  &[data-element-type="icon-list"] {
62
64
  & > .wrapper {
@@ -75,6 +77,7 @@ $pos2: (
75
77
  flex-wrap: prepareMediaVariable(--_ctm-lt-fx-wp);
76
78
  --_ctm-custom-lt-im-gp: #{prepareMediaVariable(--_ctm-lt-cn-gp, 0px)};
77
79
  }
80
+
78
81
  &.vtl {
79
82
  flex-direction: column;
80
83
  justify-content: prepareMediaVariable(--_ctm-lt-an-is);
@@ -87,6 +90,7 @@ $pos2: (
87
90
  border-style: prepareMediaVariable(--_ctm-dn-lt-br-se);
88
91
  border-width: prepareMediaVariable(--_ctm-dn-lt-br-wh);
89
92
  }
93
+
90
94
  border-radius: prepareMediaVariable(--_ctm-dn-lt-br-rs);
91
95
  background-color: prepareMediaVariable(--_ctm-dn-lt-bd-cr);
92
96
 
@@ -103,7 +107,7 @@ $pos2: (
103
107
  position: var(--_p-relative);
104
108
 
105
109
  @each $key, $value in $pos2 {
106
- $isVertical: $key == vtl;
110
+ $isVertical: $key ==vtl;
107
111
  $keys: map.get($value, keys);
108
112
  $afterKeys: map.get($keys, after);
109
113
  $afterPos: map.get($value, after);
@@ -134,6 +138,7 @@ $pos2: (
134
138
  }
135
139
  }
136
140
  }
141
+
137
142
  &::after {
138
143
  content: "";
139
144
  position: var(--_p-absolute);
@@ -192,6 +197,7 @@ $pos2: (
192
197
  align-self: prepareMediaVariable(--_ctm-dn-tt-cr-vl-at);
193
198
  padding: prepareMediaVariable(--_ctm-dn-tt-cr-pg);
194
199
  row-gap: prepareMediaVariable(--_ctm-dn-tt-cr-im-gp, 0px);
200
+
195
201
  &[data-show-divider="true"] {
196
202
  // margin-inline-start: calc(
197
203
  // #{prepareMediaVariable(--_ctm-dn-lt-lt-gp)} +
@@ -205,6 +211,7 @@ $pos2: (
205
211
  )
206
212
  );
207
213
  position: relative;
214
+
208
215
  @each $key, $value in map.get(map.get($pos2, hrz), after) {
209
216
  &[data-divider-pos="#{$key}"] {
210
217
  &::before {
@@ -214,6 +221,7 @@ $pos2: (
214
221
  }
215
222
  }
216
223
  }
224
+
217
225
  &::before {
218
226
  content: "";
219
227
  background: prepareMediaVariable(--_ctm-dn-tt-cr-dr-cr);
@@ -239,6 +247,7 @@ $pos2: (
239
247
  border-radius: prepareMediaVariable(--_ctm-dn-tt-cr-dr-br-rs);
240
248
  }
241
249
  }
250
+
242
251
  & > .#{$text} {
243
252
  &,
244
253
  * {
@@ -258,6 +267,10 @@ $pos2: (
258
267
  word-wrap: var(--_txt-ht-wd-wp, prepareMediaVariable(--_ctm-dn-tt-dt-se-wd-wp));
259
268
  word-break: var(--_txt-ht-wd-bk, prepareMediaVariable(--_ctm-dn-tt-dt-se-wd-bk));
260
269
  }
270
+
271
+ &#{$overflowSelector} {
272
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
273
+ }
261
274
  }
262
275
 
263
276
  & > .#{$desc} {
@@ -276,7 +289,12 @@ $pos2: (
276
289
  word-wrap: #{prepareMediaVariable(--_ctm-dn-dn-wd-wp)};
277
290
  word-break: #{prepareMediaVariable(--_ctm-dn-dn-wd-bk)};
278
291
  }
292
+
293
+ &#{$overflowSelector} {
294
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
295
+ }
279
296
  }
297
+
280
298
  a {
281
299
  color: inherit;
282
300
  text-decoration: none;
@@ -56,6 +56,9 @@ $isFlexboxElementChild: ".flx > .wrapper > *";
56
56
  aspect-ratio: 1/0.01;
57
57
  }
58
58
  & > .wrapper {
59
+ // The element trades its fixed height for an aspect-ratio here, so the
60
+ // wrapper cannot keep tracking --_ctm-lt-ht.
61
+ height: 100%;
59
62
  & > div {
60
63
  height: 100%;
61
64
  }
@@ -83,10 +86,18 @@ $isFlexboxElementChild: ".flx > .wrapper > *";
83
86
 
84
87
  & > .wrapper {
85
88
  width: 100%;
89
+ // Padding, border and shadow below are painted on this box, so it has to
90
+ // match the element instead of sizing to the image. Without a definite
91
+ // border-box height the border lands outside the element's fixed height
92
+ // and the top/bottom edges get clipped; without border-box the width grows
93
+ // past the element and the outline sits wider than the image.
94
+ // Tracks the var rather than 100% because the element drops its own height
95
+ // while resizing, dragging or in full view.
96
+ height: prepareMediaVariable(--_ctm-lt-ht);
97
+ box-sizing: border-box;
86
98
  // overflow: clip;
87
99
  rotate: calc(var(--_ctm-dn-re) * 1deg);
88
100
 
89
- // height: 100%;
90
101
  &:is(:not(:has([class*="crop__main"]) *)) {
91
102
  padding: var(--_ctm-mob-lt-pg, var(--_ctm-tab-lt-pg, var(--_ctm-lt-pg)));
92
103
  background-color: var(--_ctm-mob-dn-bd-cr, var(--_ctm-tab-dn-bd-cr, var(--_ctm-dn-bd-cr)));
@@ -129,7 +140,9 @@ $isFlexboxElementChild: ".flx > .wrapper > *";
129
140
  --_sf-cd-gp: calc(var(--_sf-gp) * 0.5);
130
141
  row-gap: var(--_sf-gp);
131
142
  width: 100%;
132
- height: prepareMediaVariable(--_ctm-lt-ht);
143
+ // Fills the wrapper's content box, so padding and border inset the image
144
+ // instead of stacking on top of the element height.
145
+ height: 100%;
133
146
  // border-radius: var(--_ctm-mob-dn-br-rs, var(--_ctm-tab-dn-br-rs, var(--_ctm-dn-br-rs)));
134
147
  // height: 100%;
135
148
  // &:is(:not(:has([class*="crop__main"]) *)) {
@@ -1,7 +1,44 @@
1
- @use "sass:map";
1
+ @use "sass:map";
2
2
  @use "sass:list";
3
3
  @use "./functions.scss" as *;
4
4
 
5
+ // Widget Style > Placeholder Text. The section is per-state (Default / Hover) and its
6
+ // typography reached the stylesheet as `--_ctm-dn-wt-se-{dt,hr}-se-*` that nothing
7
+ // read, so both states looked dead in the panel. Both states publish the same
8
+ // `--_sf-wt-*` names and the hovered widget wins the cascade.
9
+ //
10
+ // Deliberately no final fallback inside these chains: an untouched property stays
11
+ // invalid at computed-value time, which is what lets the consumers fall back to
12
+ // `--_ctm-dn-wt-pr-tt-*`. Those come from the retired Widget Placeholder Text
13
+ // section — Widget Style absorbed it, so the fallback exists only for pages saved
14
+ // before the merge. Same shape the divider already uses for its
15
+ // hover-falls-back-to-default chain below.
16
+ $widgetFontProps:
17
+ ft-fy, ft-se, cr, ft-wt, ft-se-ic, ue, tt-an, lr-sg, le-ht, tt-tm, wd-wp, wd-bk, pg;
18
+
19
+ @mixin widgetStateFont($state, $fallbackState: null) {
20
+ @each $p in $widgetFontProps {
21
+ $inner: if(
22
+ $fallbackState == null,
23
+ var(--_ctm-dn-wt-se-#{$state}-#{$p}),
24
+ var(
25
+ --_ctm-dn-wt-se-#{$state}-#{$p},
26
+ var(
27
+ --_ctm-mob-dn-wt-se-#{$fallbackState}-#{$p},
28
+ var(
29
+ --_ctm-tab-dn-wt-se-#{$fallbackState}-#{$p},
30
+ var(--_ctm-dn-wt-se-#{$fallbackState}-#{$p})
31
+ )
32
+ )
33
+ )
34
+ );
35
+ --_sf-wt-#{$p}: var(
36
+ --_ctm-mob-dn-wt-se-#{$state}-#{$p},
37
+ var(--_ctm-tab-dn-wt-se-#{$state}-#{$p}, #{$inner})
38
+ );
39
+ }
40
+ }
41
+
5
42
  [data-div-type="element"] {
6
43
  &[data-element-type="languageMenu"],
7
44
  &[data-element-type="currencySelector"],
@@ -115,7 +152,7 @@
115
152
  display: flex;
116
153
  gap: var(--_ctm-mob-lt-gp-bn-is, var(--_ctm-tab-lt-gp-bn-is, var(--_ctm-lt-gp-bn-is)));
117
154
 
118
- // "Show Border" switches widget style (default/hover), widget dropdown and
155
+ // "Show Border" switches — widget style (default/hover), widget dropdown and
119
156
  // item style (default/hover/selected). Each state is gated on its own switch.
120
157
  // border-style is reset alongside the width: a state whose width variables are
121
158
  // unset resolves border-width to the initial `medium`, so zeroing the width
@@ -431,7 +468,7 @@
431
468
  overflow-x: auto;
432
469
  }
433
470
  // Matched when *either* state wants a divider, so the rules below exist and each
434
- // state can then decide visibility for itself gating on the default state alone
471
+ // state can then decide visibility for itself — gating on the default state alone
435
472
  // meant a divider switched on only for hover could never appear.
436
473
  &:is([data-show-divider="true"], [data-show-divider-hover="true"]) {
437
474
  // Divider weight/colour resolve through these two, so the hover block below
@@ -543,25 +580,28 @@
543
580
  position: relative;
544
581
  min-width: 0;
545
582
 
546
- // Widget Placeholder Text > padding. It used to sit on `.value__selected__new`
547
- // only, which is the *empty* state as soon as an option was selected the
548
- // markup switched to this branch and the padding appeared to do nothing.
549
- padding: prepareMediaVariable(--_ctm-dn-wt-pr-tt-pg);
583
+ // Widget Style > padding (was Widget Placeholder Text > padding). It used to sit
584
+ // on `.value__selected__new` only, which is the *empty* state — as soon as an
585
+ // option was selected the markup switched to this branch and the padding
586
+ // appeared to do nothing.
587
+ padding: var(--_sf-wt-pg, prepareMediaVariable(--_ctm-dn-wt-pr-tt-pg));
550
588
  gap: var(--_ctm-mob-lt-im-sg, var(--_ctm-tab-lt-im-sg, var(--_ctm-lt-im-sg)));
551
589
  .language__name {
552
590
  width: 100%;
553
- font-family: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-fy);
554
- font-size: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-se);
555
- color: prepareMediaVariable(--_ctm-dn-wt-pr-tt-cr);
556
- font-weight: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-wt);
557
- text-decoration: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ue);
558
- font-style: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-se-ic);
559
- text-align: prepareMediaVariable(--_ctm-dn-wt-pr-tt-tt-an);
560
- letter-spacing: prepareMediaVariable(--_ctm-dn-wt-pr-tt-lr-sg);
561
- line-height: prepareMediaVariable(--_ctm-dn-wt-pr-tt-le-ht);
562
- text-transform: prepareMediaVariable(--_ctm-dn-wt-pr-tt-tt-tm);
563
- word-wrap: prepareMediaVariable(--_ctm-dn-wt-pr-tt-wd-wp, normal);
564
- word-break: prepareMediaVariable(--_ctm-dn-wt-pr-tt-wd-bk, normal);
591
+ // Widget Style's per-state values first; the retired Widget Placeholder Text
592
+ // variables remain only as a fallback for pages saved before the two merged.
593
+ font-family: var(--_sf-wt-ft-fy, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-fy));
594
+ font-size: var(--_sf-wt-ft-se, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-se));
595
+ color: var(--_sf-wt-cr, prepareMediaVariable(--_ctm-dn-wt-pr-tt-cr));
596
+ font-weight: var(--_sf-wt-ft-wt, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-wt));
597
+ text-decoration: var(--_sf-wt-ue, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ue));
598
+ font-style: var(--_sf-wt-ft-se-ic, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-se-ic));
599
+ text-align: var(--_sf-wt-tt-an, prepareMediaVariable(--_ctm-dn-wt-pr-tt-tt-an));
600
+ letter-spacing: var(--_sf-wt-lr-sg, prepareMediaVariable(--_ctm-dn-wt-pr-tt-lr-sg));
601
+ line-height: var(--_sf-wt-le-ht, prepareMediaVariable(--_ctm-dn-wt-pr-tt-le-ht));
602
+ text-transform: var(--_sf-wt-tt-tm, prepareMediaVariable(--_ctm-dn-wt-pr-tt-tt-tm));
603
+ word-wrap: var(--_sf-wt-wd-wp, prepareMediaVariable(--_ctm-dn-wt-pr-tt-wd-wp, normal));
604
+ word-break: var(--_sf-wt-wd-bk, prepareMediaVariable(--_ctm-dn-wt-pr-tt-wd-bk, normal));
565
605
  }
566
606
  }
567
607
 
@@ -579,7 +619,7 @@
579
619
  word-wrap: var(--_sf-hr-wd-wp, prepareMediaVariable(--_ctm-dn-im-se-dt-se-wd-wp, normal));
580
620
  word-break: var(--_sf-hr-wd-bk, prepareMediaVariable(--_ctm-dn-im-se-dt-se-wd-bk, normal));
581
621
 
582
- // text-align only has room to act once the label owns the line box as a
622
+ // text-align only has room to act once the label owns the line box — as a
583
623
  // content-sized flex item it hugged its text, so every alignment looked the
584
624
  // same. `min-width: 0` keeps it shrinkable so a larger font size truncates
585
625
  // instead of overflowing the widget.
@@ -610,20 +650,24 @@
610
650
  width: 100%;
611
651
  // padding: 8px 12px;
612
652
  // text-align: left;
613
- font-family: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-fy);
614
- font-size: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-se);
615
- color: prepareMediaVariable(--_ctm-dn-wt-pr-tt-cr);
653
+ // Same order as `.option_select .language__name` above: Widget Style's per-state
654
+ // typography first, Widget Placeholder Text second. This is the empty branch —
655
+ // the two swap in the markup as soon as an option is picked, so they have to
656
+ // resolve identically or the text would jump on first selection.
657
+ font-family: var(--_sf-wt-ft-fy, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-fy));
658
+ font-size: var(--_sf-wt-ft-se, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-se));
659
+ color: var(--_sf-wt-cr, prepareMediaVariable(--_ctm-dn-wt-pr-tt-cr));
616
660
  // color: var(--_gray-600);
617
- font-weight: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-wt);
618
- text-decoration: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ue);
619
- font-style: prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-se-ic);
620
- text-align: prepareMediaVariable(--_ctm-dn-wt-pr-tt-tt-an);
621
- letter-spacing: prepareMediaVariable(--_ctm-dn-wt-pr-tt-lr-sg);
622
- line-height: prepareMediaVariable(--_ctm-dn-wt-pr-tt-le-ht);
623
- padding: prepareMediaVariable(--_ctm-dn-wt-pr-tt-pg);
624
- text-transform: prepareMediaVariable(--_ctm-dn-wt-pr-tt-tt-tm);
625
- word-wrap: prepareMediaVariable(--_ctm-dn-wt-pr-tt-wd-wp, normal);
626
- word-break: prepareMediaVariable(--_ctm-dn-wt-pr-tt-wd-bk, normal);
661
+ font-weight: var(--_sf-wt-ft-wt, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-wt));
662
+ text-decoration: var(--_sf-wt-ue, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ue));
663
+ font-style: var(--_sf-wt-ft-se-ic, prepareMediaVariable(--_ctm-dn-wt-pr-tt-ft-se-ic));
664
+ text-align: var(--_sf-wt-tt-an, prepareMediaVariable(--_ctm-dn-wt-pr-tt-tt-an));
665
+ letter-spacing: var(--_sf-wt-lr-sg, prepareMediaVariable(--_ctm-dn-wt-pr-tt-lr-sg));
666
+ line-height: var(--_sf-wt-le-ht, prepareMediaVariable(--_ctm-dn-wt-pr-tt-le-ht));
667
+ padding: var(--_sf-wt-pg, prepareMediaVariable(--_ctm-dn-wt-pr-tt-pg));
668
+ text-transform: var(--_sf-wt-tt-tm, prepareMediaVariable(--_ctm-dn-wt-pr-tt-tt-tm));
669
+ word-wrap: var(--_sf-wt-wd-wp, prepareMediaVariable(--_ctm-dn-wt-pr-tt-wd-wp, normal));
670
+ word-break: var(--_sf-wt-wd-bk, prepareMediaVariable(--_ctm-dn-wt-pr-tt-wd-bk, normal));
627
671
  min-width: 0;
628
672
  display: -webkit-box;
629
673
  -webkit-box-orient: vertical;
@@ -659,6 +703,11 @@
659
703
 
660
704
  .dropdown__button__wrapper {
661
705
  width: 100%;
706
+ // Widget Style > Placeholder Text, default state. Published here rather than
707
+ // on the text nodes because the hover state below has to override it, and
708
+ // `.value__selected__new` / `.option_select .language__name` are two separate
709
+ // branches of the same markup.
710
+ @include widgetStateFont(dt-se);
662
711
  padding: var(--_ctm-mob-lt-im-pg, var(--_ctm-tab-lt-im-pg, var(--_ctm-lt-im-pg)));
663
712
  background-color: var(
664
713
  --_ctm-mob-dn-wt-se-dt-se-bd-cr,
@@ -705,6 +754,9 @@
705
754
  )
706
755
  );
707
756
  &:hover {
757
+ // Hover state, falling back to the default state per property so a widget
758
+ // that only sets a hover colour keeps the default font, size and the rest.
759
+ @include widgetStateFont(hr-se, dt-se);
708
760
  background-color: var(
709
761
  --_ctm-mob-dn-wt-se-hr-se-bd-cr,
710
762
  var(--_ctm-tab-dn-wt-se-hr-se-bd-cr, var(--_ctm-dn-wt-se-hr-se-bd-cr))
@@ -756,6 +808,20 @@
756
808
  // nowrap` here inherited down and defeated the multi-line clamp.
757
809
  overflow: hidden;
758
810
  }
811
+
812
+ // Widget Style > Hover > Text Overflow. The clamp pair reaches the DOM as an
813
+ // inline style (it is `controls`, not CSS), so hover cannot be expressed by
814
+ // the variable cascade above — the element publishes both pairs on the label
815
+ // and this rule chooses the hovered one, falling back to the default pair.
816
+ // Safe to scope on the wrapper: the options list is its sibling, not a
817
+ // descendant, so option labels keep their own Item Style clamp.
818
+ &:hover {
819
+ .language__name,
820
+ .value__selected__new {
821
+ -webkit-line-clamp: var(--_sf-it-clamp-hr, var(--_sf-it-clamp, 1));
822
+ white-space: var(--_sf-it-ws-hr, var(--_sf-it-ws, nowrap));
823
+ }
824
+ }
759
825
  }
760
826
 
761
827
  .est__dropdown__button {
@@ -1,4 +1,4 @@
1
- @use "sass:map";
1
+ @use "sass:map";
2
2
  @use "sass:list";
3
3
  @import "./functions.scss";
4
4
  $defaultValues: (
@@ -9,9 +9,18 @@ $defaultValues: (
9
9
 
10
10
  [data-div-type="element"] {
11
11
  &[data-element-type="myTemplates"] {
12
- width: 100% !important;
12
+ // Was `width: 100% !important`, which ignored the percentage the right resize
13
+ // handle writes and left the handle with nothing to drive.
14
+ width: var(
15
+ --_sf-el-wh-st-mx,
16
+ calc(
17
+ 1% * var(--_ctm-mob-ele-nw-wh-vl, var(--_ctm-tab-ele-nw-wh-vl, var(--_ctm-ele-nw-wh-vl)))
18
+ )
19
+ );
13
20
 
14
21
  & > .wrapper {
22
+ // Layout > Padding. The element declares it but nothing read it back.
23
+ padding: var(--_ctm-mob-lt-pg, var(--_ctm-tab-lt-pg, var(--_ctm-lt-pg)));
15
24
  }
16
25
  &[data-show-shadow="false"] {
17
26
  --_show-shadow: none;
@@ -1,17 +1,27 @@
1
- @use "sass:map";
2
- @use "sass:list";
3
-
4
- [data-div-type="element"] {
5
- &[data-element-type="myWishlist"] {
6
- width: 100% !important;
7
-
8
- & > .wrapper {
9
- .template_wrapper {
10
- width: 100%;
11
- }
12
- }
13
- &[data-show-shadow="false"] {
14
- --_show-shadow: none;
15
- }
16
- }
17
- }
1
+ @use "sass:map";
2
+ @use "sass:list";
3
+
4
+ [data-div-type="element"] {
5
+ &[data-element-type="myWishlist"] {
6
+ // Was `width: 100% !important`, which ignored the percentage the right resize
7
+ // handle writes and left the handle with nothing to drive.
8
+ width: var(
9
+ --_sf-el-wh-st-mx,
10
+ calc(
11
+ 1% * var(--_ctm-mob-ele-nw-wh-vl, var(--_ctm-tab-ele-nw-wh-vl, var(--_ctm-ele-nw-wh-vl)))
12
+ )
13
+ );
14
+
15
+ & > .wrapper {
16
+ // Layout > Padding. The element declares it but nothing read it back.
17
+ padding: var(--_ctm-mob-lt-pg, var(--_ctm-tab-lt-pg, var(--_ctm-lt-pg)));
18
+
19
+ .template_wrapper {
20
+ width: 100%;
21
+ }
22
+ }
23
+ &[data-show-shadow="false"] {
24
+ --_show-shadow: none;
25
+ }
26
+ }
27
+ }
package/dist/profile.scss CHANGED
@@ -74,10 +74,6 @@
74
74
  --_sf-hr-bd-cr,
75
75
  var(--_ctm-mob-dn-pe-wt-bd-cr, var(--_ctm-tab-dn-pe-wt-bd-cr, var(--_ctm-dn-pe-wt-bd-cr)))
76
76
  );
77
- border-radius: var(
78
- --_sf-hr-br-br,
79
- var(--_ctm-mob-dn-pe-wt-br-rs, var(--_ctm-tab-dn-pe-wt-br-rs, var(--_ctm-dn-pe-wt-br-rs)))
80
- );
81
77
  box-shadow: var(
82
78
  --_show-shadow,
83
79
  var(--_ctm-mob-dn-pe-wt-sw-ae, var(--_ctm-tab-dn-pe-wt-sw-ae, var(--_ctm-dn-pe-wt-sw-ae)))
@@ -85,6 +81,10 @@
85
81
  var(--_ctm-mob-dn-pe-wt-sw-sd, var(--_ctm-tab-dn-pe-wt-sw-sd, var(--_ctm-dn-pe-wt-sw-sd)))
86
82
  var(--_ctm-mob-dn-pe-wt-sw-cr, var(--_ctm-tab-dn-pe-wt-sw-cr, var(--_ctm-dn-pe-wt-sw-cr)))
87
83
  );
84
+ border-radius: var(
85
+ --_sf-hr-br-br,
86
+ var(--_ctm-mob-dn-pe-wt-br-rs, var(--_ctm-tab-dn-pe-wt-br-rs, var(--_ctm-dn-pe-wt-br-rs)))
87
+ );
88
88
  .profile__section {
89
89
  position: relative;
90
90
  cursor: pointer;
@@ -320,6 +320,8 @@
320
320
  padding: prepareMediaVariable(--_ctm-dn-dn-is-cr-pg);
321
321
  z-index: 100000;
322
322
  overflow: hidden;
323
+ max-height: 200px;
324
+ overflow-y: auto;
323
325
  &[data-show-items-container-border="true"] {
324
326
  border-color: prepareMediaVariable(--_ctm-dn-dn-is-cr-br-cr);
325
327
  border-style: prepareMediaVariable(--_ctm-dn-dn-is-cr-br-se);
@@ -347,16 +349,18 @@
347
349
  --_ctm-mob-dn-dn-is-dt-se-bd-cr,
348
350
  var(--_ctm-tab-dn-dn-is-dt-se-bd-cr, var(--_ctm-dn-dn-is-dt-se-bd-cr))
349
351
  );
352
+
350
353
  .icon {
354
+ display: flex;
355
+ align-items: center;
356
+ align-self: prepareMediaVariable(--_ctm-dn-dn-is-dt-se-vl-at);
357
+
351
358
  svg {
352
- width: prepareMediaVariable(--_ctm-dn-dn-is-cr-in-se);
353
- height: prepareMediaVariable(--_ctm-dn-dn-is-cr-in-se);
359
+ width: prepareMediaVariable(--_ctm-dn-dn-is-dt-se-in-se);
360
+ height: prepareMediaVariable(--_ctm-dn-dn-is-dt-se-in-se);
354
361
 
355
362
  path {
356
- stroke: var(
357
- --_ctm-mob-dn-dn-is-cr-in-c1,
358
- var(--_ctm-tab-dn-ed-in-cr, var(--_ctm-dn-dn-is-cr-in-c1))
359
- );
363
+ stroke: prepareMediaVariable(--_ctm-dn-dn-is-dt-se-in-c1);
360
364
  }
361
365
  }
362
366
  }
@@ -365,6 +369,7 @@
365
369
  // color: #1f2937;
366
370
  display: flex;
367
371
  align-items: center;
372
+ gap: prepareMediaVariable(--_ctm-dn-dn-is-dt-se-in-gp);
368
373
  // transition: background 0.2s;
369
374
  cursor: pointer;
370
375
  &[data-dropdown-items-default-border="true"] {
@@ -389,10 +394,6 @@
389
394
  var(--_ctm-tab-dn-dn-is-dt-se-br-wh, var(--_ctm-dn-dn-is-dt-se-br-wh))
390
395
  )
391
396
  );
392
- gap: var(
393
- --_ctm-mob-dn-dn-is-cr-in-gp,
394
- var(--_ctm-tab-dn-dn-is-cr-in-gp, var(--_ctm-dn-dn-is-cr-in-gp))
395
- );
396
397
  }
397
398
  &[data-dropdown-items-default-shadow="true"] {
398
399
  box-shadow: var(
@@ -615,13 +616,37 @@
615
616
  --_ctm-mob-dn-dn-is-hr-se-ue,
616
617
  var(--_ctm-tab-dn-dn-is-hr-se-ue, var(--_ctm-dn-dn-is-hr-se-ue))
617
618
  );
618
- }
619
619
 
620
- .icon {
621
- font-size: 18px;
622
- display: flex;
623
- align-items: center;
620
+ // Hover icon styling falls back to the default state so an item that was
621
+ // never given a hover icon design does not jump on hover.
622
+ gap: prepareMediaVariable(--_ctm-dn-dn-is-hr-se-in-gp, var(--_ctm-dn-dn-is-dt-se-in-gp));
623
+
624
+ .icon {
625
+ align-self: prepareMediaVariable(
626
+ --_ctm-dn-dn-is-hr-se-vl-at,
627
+ var(--_ctm-dn-dn-is-dt-se-vl-at)
628
+ );
629
+
630
+ svg {
631
+ width: prepareMediaVariable(
632
+ --_ctm-dn-dn-is-hr-se-in-se,
633
+ var(--_ctm-dn-dn-is-dt-se-in-se)
634
+ );
635
+ height: prepareMediaVariable(
636
+ --_ctm-dn-dn-is-hr-se-in-se,
637
+ var(--_ctm-dn-dn-is-dt-se-in-se)
638
+ );
639
+
640
+ path {
641
+ stroke: prepareMediaVariable(
642
+ --_ctm-dn-dn-is-hr-se-in-c1,
643
+ var(--_ctm-dn-dn-is-dt-se-in-c1)
644
+ );
645
+ }
646
+ }
647
+ }
624
648
  }
649
+
625
650
  a {
626
651
  display: block;
627
652
  }