@sc-360-v2/storefront-cms-library 0.5.50 → 0.5.51

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 (38) hide show
  1. package/dist/brand-basic-elements.scss +109 -46
  2. package/dist/brand.scss +6 -0
  3. package/dist/breadcrumbs.scss +144 -51
  4. package/dist/builder.js +1 -1
  5. package/dist/bundle copy.scss +2805 -0
  6. package/dist/bundle.scss +74 -48
  7. package/dist/bundleDetails.scss +1360 -275
  8. package/dist/button copy.scss +271 -0
  9. package/dist/cart.scss +85 -4
  10. package/dist/category.scss +25 -4
  11. package/dist/container.scss +20 -17
  12. package/dist/embed-temp.scss +2 -2
  13. package/dist/hotspot.scss +12 -3
  14. package/dist/language-selector.scss +42 -0
  15. package/dist/line.scss +54 -36
  16. package/dist/login.scss +225 -69
  17. package/dist/map.scss +354 -147
  18. package/dist/marchandiserSets.scss +34 -0
  19. package/dist/product-actions.scss +53 -0
  20. package/dist/product-basic-elements.scss +50 -4
  21. package/dist/productDetails.scss +33 -0
  22. package/dist/quick-links.scss +23 -2
  23. package/dist/repeater copy.scss +635 -0
  24. package/dist/repeater-grid-toggle.scss +93 -3
  25. package/dist/repeater-item.scss +5 -1
  26. package/dist/review-cart.scss +7 -1
  27. package/dist/search.scss +45 -5
  28. package/dist/styles.css +1 -1
  29. package/dist/tab-v2.scss +724 -583
  30. package/dist/text-temp-v2.scss +7 -1
  31. package/dist/types/builder/tools/element-edit/breadcrumbs.d.ts +26 -0
  32. package/dist/types/builder/tools/element-edit/cart.d.ts +7 -0
  33. package/dist/types/builder/tools/element-edit/map.d.ts +0 -1
  34. package/dist/types/builder/tools/element-edit/quickLinks.d.ts +6 -0
  35. package/dist/types/builder/tools/element-edit/search.d.ts +4 -61
  36. package/dist/types/builder/tools/element-edit/tabsV2.d.ts +110 -1
  37. package/dist/upload-media.scss +14 -2
  38. package/package.json +1 -1
@@ -0,0 +1,271 @@
1
+ @use "sass:map";
2
+ @use "sass:list";
3
+
4
+ @use "./functions.scss" as *;
5
+
6
+ [data-div-type="element"] {
7
+ &[data-element-type="button"] {
8
+ height: var(--_ctm-mob-lt-ht, var(--_ctm-tab-lt-ht, var(--_ctm-lt-ht))) !important;
9
+
10
+ & > .wrapper {
11
+ // width: 100%;
12
+ height: 100%;
13
+ }
14
+
15
+ &[data-show-shadow="false"] {
16
+ --_show-shadow: none;
17
+ }
18
+ &[data-icon-position="left"] {
19
+ --_sf-fd-bn: row;
20
+ }
21
+ &[data-icon-position="right"] {
22
+ --_sf-fd-bn: row-reverse;
23
+ }
24
+ &[data-icon-position="center"] {
25
+ --_sf-fd-bn: row;
26
+ }
27
+
28
+ &:hover {
29
+ --_sf-hr-bd-cr: var(
30
+ --_ctm-mob-dn-hr-se-bd-cr,
31
+ var(--_ctm-tab-dn-hr-se-bd-cr, var(--_ctm-dn-hr-se-bd-cr))
32
+ );
33
+ --_sf-hr-br-cr: var(
34
+ --_ctm-mob-dn-hr-se-br-cr,
35
+ var(--_ctm-tab-dn-hr-se-br-cr, var(--_ctm-dn-hr-se-br-cr))
36
+ );
37
+ --_sf-hr-br-st: var(
38
+ --_ctm-mob-dn-hr-se-br-se,
39
+ var(--_ctm-tab-dn-hr-se-br-se, var(--_ctm-dn-hr-se-br-se))
40
+ );
41
+ --_sf-hr-br-wh: var(
42
+ --_ctm-mob-dn-hr-se-br-wh,
43
+ var(--_ctm-tab-dn-hr-se-br-wh, var(--_ctm-dn-hr-se-br-wh))
44
+ );
45
+ --_sf-hr-br-br: var(
46
+ --_ctm-mob-dn-hr-se-br-rs,
47
+ var(--_ctm-tab-dn-hr-se-br-rs, var(--_ctm-dn-hr-se-br-rs))
48
+ );
49
+ --_sf-hr-bx-sw: var(
50
+ --_ctm-mob-dn-hr-se-sw-ae,
51
+ var(--_ctm-tab-dn-hr-se-sw-ae, var(--_ctm-dn-hr-se-sw-ae))
52
+ )
53
+ var(--_ctm-mob-dn-hr-se-sw-br, var(--_ctm-tab-dn-hr-se-sw-br, var(--_ctm-dn-hr-se-sw-br)))
54
+ var(--_ctm-mob-dn-hr-se-sw-sd, var(--_ctm-tab-dn-hr-se-sw-sd, var(--_ctm-dn-hr-se-sw-sd)))
55
+ var(--_ctm-mob-dn-hr-se-sw-cr, var(--_ctm-tab-dn-hr-se-sw-cr, var(--_ctm-dn-hr-se-sw-cr)));
56
+
57
+ --_sf-hr-fc: var(
58
+ --_ctm-mob-dn-hr-se-cr,
59
+ var(--_ctm-tab-dn-hr-se-cr, var(--_ctm-dn-hr-se-cr))
60
+ );
61
+ --_sf-hr-ff: var(
62
+ --_ctm-mob-dn-hr-se-ft-fy,
63
+ var(--_ctm-tab-dn-hr-se-ft-fy, var(--_ctm-dn-hr-se-ft-fy))
64
+ );
65
+ --_sf-hr-fs: var(
66
+ --_ctm-mob-dn-hr-se-ft-se,
67
+ var(--_ctm-tab-dn-hr-se-ft-se, var(--_ctm-dn-hr-se-ft-se))
68
+ );
69
+ --_sf-hr-fw: var(
70
+ --_ctm-mob-dn-hr-se-ft-wt,
71
+ var(--_ctm-tab-dn-hr-se-ft-wt, var(--_ctm-dn-hr-se-ft-wt))
72
+ );
73
+ --_sf-hr-ft: var(
74
+ --_ctm-mob-dn-hr-se-ft-se-ic,
75
+ var(--_ctm-tab-dn-hr-se-ft-se-ic, var(--_ctm-dn-hr-se-ft-se-ic))
76
+ );
77
+ --_sf-hr-ta: var(
78
+ --_ctm-mob-dn-hr-se-tt-an,
79
+ var(--_ctm-tab-dn-hr-se-tt-an, var(--_ctm-dn-hr-se-tt-an))
80
+ );
81
+ --_sf-hr-ls: var(
82
+ --_ctm-mob-dn-hr-se-lr-sg,
83
+ var(--_ctm-tab-dn-hr-se-lr-sg, var(--_ctm-dn-hr-se-lr-sg))
84
+ );
85
+ --_sf-hr-lh: var(
86
+ --_ctm-mob-dn-hr-se-le-ht,
87
+ var(--_ctm-tab-dn-hr-se-le-ht, var(--_ctm-dn-hr-se-le-ht))
88
+ );
89
+
90
+ --_sf-hr-ic-wt: var(
91
+ --_ctm-mob-dn-hr-se-in-se,
92
+ var(--_ctm-tab-dn-hr-se-in-se, var(--_ctm-dn-hr-se-in-se))
93
+ );
94
+ --_sf-hr-ic-ht: var(
95
+ --_ctm-mob-dn-hr-se-in-se,
96
+ var(--_ctm-tab-dn-hr-se-in-se, var(--_ctm-dn-hr-se-in-se))
97
+ );
98
+ --_sf-hr-ic-st: var(
99
+ --_ctm-mob-dn-hr-se-in-c1,
100
+ var(--_ctm-tab-dn-hr-se-in-c1, var(--_ctm-dn-hr-se-in-c1))
101
+ );
102
+ --_sf-hr-tt-dn: var(
103
+ --_ctm-mob-dn-hr-se-ue,
104
+ var(--_ctm-tab-dn-hr-se-ue, var(--_ctm-dn-hr-se-ue))
105
+ );
106
+
107
+ &[data-hover-show-shadow="false"] {
108
+ --_hover-show-shadow: none;
109
+ }
110
+ &[data-hover-show-icon="false"] {
111
+ --_hover-show-icon: none;
112
+ }
113
+ }
114
+ &[data-show-icon="false"] {
115
+ --_show-icon: none;
116
+ }
117
+ &[data-element-style="Icon"] {
118
+ &[data-icon-position="left"] {
119
+ --_sf-jc: start;
120
+ }
121
+ &[data-icon-position="right"] {
122
+ --_sf-jc: end;
123
+ }
124
+ &[data-icon-position="center"] {
125
+ --_sf-jc: center;
126
+ }
127
+ }
128
+
129
+ .btn__with__text {
130
+ background-color: var(
131
+ --_sf-hr-bd-cr,
132
+ var(--_ctm-mob-dn-dt-se-bd-cr, var(--_ctm-tab-dn-dt-se-bd-cr, var(--_ctm-dn-dt-se-bd-cr)))
133
+ );
134
+ // padding: var(--_ctm-lt-pg, var(--_tst-lt-pg));
135
+ padding: prepareMediaVariable(--_ctm-lt-pg);
136
+ // (8px, var(--_sf-element-vt-pd)) min(15px, var(--_sf-element-hr-pd));
137
+ display: flex;
138
+ flex-direction: var(--_sf-fd-bn);
139
+ align-items: center;
140
+ // justify-content: var(--_sf-jc, center);
141
+ justify-content: var(
142
+ --_ctm-mob-lt-tt-an,
143
+ var(--_ctm-tab-lt-tt-an, var(--_ctm-lt-tt-an, center))
144
+ );
145
+ gap: var(--_ctm-mob-lt-gp, var(--_ctm-tab-lt-gp, var(--_ctm-lt-gp)));
146
+
147
+ width: 100%;
148
+ height: 100%;
149
+
150
+ border-radius: var(
151
+ --_sf-hr-br-br,
152
+ var(--_ctm-mob-dn-dt-se-br-rs, var(--_ctm-tab-dn-dt-se-br-rs, var(--_ctm-dn-dt-se-br-rs)))
153
+ );
154
+ box-shadow: var(
155
+ --_hover-show-shadow,
156
+ var(
157
+ --_sf-hr-bx-sw,
158
+ var(
159
+ --_show-shadow,
160
+ var(
161
+ --_ctm-mob-dn-dt-se-sw-ae,
162
+ var(--_ctm-tab-dn-dt-se-sw-ae, var(--_ctm-dn-dt-se-sw-ae))
163
+ )
164
+ var(
165
+ --_ctm-mob-dn-dt-se-sw-br,
166
+ var(--_ctm-tab-dn-dt-se-sw-br, var(--_ctm-dn-dt-se-sw-br))
167
+ )
168
+ var(
169
+ --_ctm-mob-dn-dt-se-sw-sd,
170
+ var(--_ctm-tab-dn-dt-se-sw-sd, var(--_ctm-dn-dt-se-sw-sd))
171
+ )
172
+ var(
173
+ --_ctm-mob-dn-dt-se-sw-cr,
174
+ var(--_ctm-tab-dn-dt-se-sw-cr, var(--_ctm-dn-dt-se-sw-cr))
175
+ )
176
+ )
177
+ )
178
+ );
179
+ &[data-show-border="true"] {
180
+ border-color: var(
181
+ --_sf-hr-br-cr,
182
+ var(--_ctm-mob-dn-dt-se-br-cr, var(--_ctm-tab-dn-dt-se-br-cr, var(--_ctm-dn-dt-se-br-cr)))
183
+ );
184
+ border-style: var(
185
+ --_sf-hr-br-st,
186
+ var(--_ctm-mob-dn-dt-se-br-se, var(--_ctm-tab-dn-dt-se-br-se, var(--_ctm-dn-dt-se-br-se)))
187
+ );
188
+ border-width: var(
189
+ --_sf-hr-br-wh,
190
+ var(--_ctm-mob-dn-dt-se-br-wh, var(--_ctm-tab-dn-dt-se-br-wh, var(--_ctm-dn-dt-se-br-wh)))
191
+ );
192
+ }
193
+
194
+ .txt {
195
+ display: flex;
196
+ color: var(
197
+ --_sf-hr-fc,
198
+ var(--_ctm-mob-dn-dt-se-cr, var(--_ctm-tab-dn-dt-se-cr, var(--_ctm-dn-dt-se-cr)))
199
+ );
200
+ font-family: var(
201
+ --_sf-hr-ff,
202
+ var(--_ctm-mob-dn-dt-se-ft-fy, var(--_ctm-tab-dn-dt-se-ft-fy, var(--_ctm-dn-dt-se-ft-fy)))
203
+ );
204
+ font-size: var(
205
+ --_sf-hr-fs,
206
+ var(--_ctm-mob-dn-dt-se-ft-se, var(--_ctm-tab-dn-dt-se-ft-se, var(--_ctm-dn-dt-se-ft-se)))
207
+ );
208
+ font-weight: var(
209
+ --_sf-hr-fw,
210
+ var(--_ctm-mob-dn-dt-se-ft-wt, var(--_ctm-tab-dn-dt-se-ft-wt, var(--_ctm-dn-dt-se-ft-wt)))
211
+ );
212
+ font-style: var(
213
+ --_sf-hr-ft,
214
+ var(
215
+ --_ctm-mob-dn-dt-se-ft-se-ic,
216
+ var(--_ctm-tab-dn-dt-se-ft-se-ic, var(--_ctm-dn-dt-se-ft-se-ic))
217
+ )
218
+ );
219
+ text-align: var(
220
+ --_sf-hr-ta,
221
+ var(--_ctm-mob-dn-dt-se-tt-an, var(--_ctm-tab-dn-dt-se-tt-an, var(--_ctm-dn-dt-se-tt-an)))
222
+ );
223
+ letter-spacing: var(
224
+ --_sf-hr-ls,
225
+ var(--_ctm-mob-dn-dt-se-lr-sg, var(--_ctm-tab-dn-dt-se-lr-sg, var(--_ctm-dn-dt-se-lr-sg)))
226
+ );
227
+ line-height: var(
228
+ --_sf-hr-lh,
229
+ var(--_ctm-mob-dn-dt-se-le-ht, var(--_ctm-tab-dn-dt-se-le-ht, var(--_ctm-dn-dt-se-le-ht)))
230
+ );
231
+ text-decoration: var(
232
+ --_sf-hr-tt-dn,
233
+ var(--_ctm-mob-dn-dt-se-ue, var(--_ctm-tab-dn-dt-se-ue, var(--_ctm-dn-dt-se-ue)))
234
+ );
235
+ }
236
+
237
+ .icon {
238
+ display: var(--_hover-show-icon, var(--_show-icon, flex));
239
+ svg {
240
+ width: var(
241
+ --_sf-hr-ic-wt,
242
+ var(
243
+ --_ctm-mob-dn-dt-se-in-se,
244
+ var(--_ctm-tab-dn-dt-se-in-se, var(--_ctm-dn-dt-se-in-se))
245
+ )
246
+ );
247
+ height: var(
248
+ --_sf-hr-ic-ht,
249
+ var(
250
+ --_ctm-mob-dn-dt-se-in-se,
251
+ var(--_ctm-tab-dn-dt-se-in-se, var(--_ctm-dn-dt-se-in-se))
252
+ )
253
+ );
254
+ path {
255
+ stroke: var(
256
+ --_sf-hr-ic-st,
257
+ var(
258
+ --_ctm-mob-dn-dt-se-in-c1,
259
+ var(--_ctm-tab-dn-dt-se-in-c1, var(--_ctm-dn-dt-se-in-c1))
260
+ )
261
+ );
262
+ }
263
+ }
264
+ }
265
+ [data-element-style="Text"] {
266
+ display: inline-block;
267
+ width: 100%;
268
+ }
269
+ }
270
+ }
271
+ }
package/dist/cart.scss CHANGED
@@ -44,7 +44,10 @@
44
44
  display: flex;
45
45
  align-items: center;
46
46
  cursor: pointer;
47
- gap: 12px;
47
+ gap: var(
48
+ --_ctm-mob-dn-ct-cr-im-gp,
49
+ var(--_ctm-tab-dn-ct-cr-im-gp, var(--_ctm-dn-ct-cr-im-gp))
50
+ );
48
51
 
49
52
  .cart__div {
50
53
  position: relative;
@@ -59,6 +62,19 @@
59
62
  &.cart__button {
60
63
  display: flex;
61
64
  position: relative;
65
+ // Reserve the icon box on the container span, not only on the inner
66
+ // <svg>. The icon SVG is fetched async (SirvIcon), so before it
67
+ // arrives the span would collapse to 0 and then grow when the icon
68
+ // pops in — a layout shift (CLS) in the header. Sizing the span with
69
+ // the SAME variable the svg uses holds the space from first paint.
70
+ width: var(
71
+ --_ctm-mob-dn-ct-in-in-se,
72
+ var(--_ctm-tab-dn-ct-in-in-se, var(--_ctm-dn-ct-in-in-se))
73
+ );
74
+ height: var(
75
+ --_ctm-mob-dn-ct-in-in-se,
76
+ var(--_ctm-tab-dn-ct-in-in-se, var(--_ctm-dn-ct-in-in-se))
77
+ );
62
78
  // inset: var(
63
79
  // --_ctm-mob-dn-ct-in-in-pn-wh-ss,
64
80
  // var(--_ctm-tab-dn-ct-in-in-pn-wh-ss, var(--_ctm-dn-ct-in-in-pn-wh-ss))
@@ -163,13 +179,29 @@
163
179
  );
164
180
  // height: 20px;
165
181
  // width: 20px;
182
+ // Width bounds: the badge stays circular for a single digit and grows no
183
+ // wider than the longest formatted count ("999" before it becomes "1k").
184
+ // `width: max-content` is what makes the bounds bite -- the badge is
185
+ // position:absolute, so without an explicit width it is sized shrink-to-fit
186
+ // against .cart__div (and stretched edge-to-edge whenever `inset` resolves
187
+ // to both a left and a right value), which leaves min/max-width inert.
188
+ // Final width is clamp(20px, count + padding, 44px).
189
+ width: max-content;
190
+ min-width: 20px;
191
+ max-width: 80px;
192
+ box-sizing: border-box;
193
+ // Driven by the Cart Item Count > Padding control. The schema does declare
194
+ // `padding`, so `--_ctm-*-dn-ct-is-ct-pg` is emitted for any element saved
195
+ // since; the final literal fallback covers elements saved before that and
196
+ // keeps the declaration valid when the variable is absent. It was hardcoded
197
+ // to 12px 4px, which is why the control had no effect.
166
198
  padding: var(
167
199
  --_ctm-mob-dn-ct-is-ct-pg,
168
- var(--_ctm-tab-dn-ct-is-ct-pg, var(--_ctm-dn-ct-is-ct-pg))
200
+ var(--_ctm-tab-dn-ct-is-ct-pg, var(--_ctm-dn-ct-is-ct-pg, 12px 4px))
169
201
  );
170
202
  position: absolute;
171
- // top: -3px;
172
- // right: -7px;
203
+ top: -3px !important;
204
+ right: -7px !important;
173
205
  inset: var(
174
206
  --_ctm-mob-dn-ct-in-in-pn-wh-ss,
175
207
  var(--_ctm-tab-dn-ct-in-in-pn-wh-ss, var(--_ctm-dn-ct-in-in-pn-wh-ss))
@@ -177,6 +209,13 @@
177
209
  display: flex;
178
210
  align-items: center;
179
211
  justify-content: center;
212
+ white-space: nowrap;
213
+ overflow: hidden;
214
+
215
+ span {
216
+ overflow: hidden;
217
+ text-overflow: ellipsis;
218
+ }
180
219
  }
181
220
  }
182
221
 
@@ -222,6 +261,18 @@
222
261
  --_ctm-mob-dn-mi-ct-tt-ue,
223
262
  var(--_ctm-tab-dn-mi-ct-tt-ue, var(--_ctm-dn-mi-ct-tt-ue))
224
263
  );
264
+ text-transform: var(
265
+ --_ctm-mob-dn-mi-ct-tt-tt-tm,
266
+ var(--_ctm-tab-dn-mi-ct-tt-tt-tm, var(--_ctm-dn-mi-ct-tt-tt-tm, none))
267
+ );
268
+ word-wrap: var(
269
+ --_ctm-mob-dn-mi-ct-tt-wd-wp,
270
+ var(--_ctm-tab-dn-mi-ct-tt-wd-wp, var(--_ctm-dn-mi-ct-tt-wd-wp, normal))
271
+ );
272
+ word-break: var(
273
+ --_ctm-mob-dn-mi-ct-tt-wd-bk,
274
+ var(--_ctm-tab-dn-mi-ct-tt-wd-bk, var(--_ctm-dn-mi-ct-tt-wd-bk, normal))
275
+ );
225
276
 
226
277
  a {
227
278
  display: flex;
@@ -261,6 +312,18 @@
261
312
  --_ctm-mob-dn-mi-ct-tt-le-ht-dc,
262
313
  var(--_ctm-tab-dn-mi-ct-tt-le-ht-dc, var(--_ctm-dn-mi-ct-tt-le-ht-dc))
263
314
  );
315
+ text-transform: var(
316
+ --_ctm-mob-dn-mi-ct-tt-tt-tm-dc,
317
+ var(--_ctm-tab-dn-mi-ct-tt-tt-tm-dc, var(--_ctm-dn-mi-ct-tt-tt-tm-dc, none))
318
+ );
319
+ word-wrap: var(
320
+ --_ctm-mob-dn-mi-ct-tt-wd-wp-dc,
321
+ var(--_ctm-tab-dn-mi-ct-tt-wd-wp-dc, var(--_ctm-dn-mi-ct-tt-wd-wp-dc, normal))
322
+ );
323
+ word-break: var(
324
+ --_ctm-mob-dn-mi-ct-tt-wd-bk-dc,
325
+ var(--_ctm-tab-dn-mi-ct-tt-wd-bk-dc, var(--_ctm-dn-mi-ct-tt-wd-bk-dc, normal))
326
+ );
264
327
  }
265
328
  }
266
329
  }
@@ -308,5 +371,23 @@
308
371
  &[data-show-shadow="false"] {
309
372
  --_show-shadow: none;
310
373
  }
374
+
375
+ // "Show Border" switches. Each design section paints its border from CSS variables,
376
+ // so the switch reaches the stylesheet as a data attribute and the matching
377
+ // border-width is zeroed here. Kept at the end of the block and matched to the same
378
+ // selector depth as the rules above — anywhere earlier and the section rules would
379
+ // win the tie on source order.
380
+ &[data-cart-container-border="false"] > .wrapper {
381
+ border-width: 0;
382
+ border-style: none;
383
+ }
384
+ &[data-cart-icon-border="false"] > .wrapper .cart__section .cart__button {
385
+ border-width: 0;
386
+ border-style: none;
387
+ }
388
+ &[data-cart-count-border="false"] > .wrapper .cart__section .badge {
389
+ border-width: 0;
390
+ border-style: none;
391
+ }
311
392
  }
312
393
  }
@@ -91,10 +91,31 @@ $resizeActive: '[data-cms-element-resizer="true"]';
91
91
  padding: var(--_ctm-cat-lt-pg, var(--_tst-lt-pg));
92
92
 
93
93
  // height: 100%;
94
- border-color: var(--_ctm-cat-dn-br-cr, var(--_tst-dn-br-cr));
95
- border-style: var(--_ctm-cat-dn-br-se, var(--_tst-dn-br-se));
96
- border-width: var(--_ctm-cat-dn-br-wh, var(--_tst-dn-br-wh));
97
- border-radius: var(--_ctm-cat-dn-br-rs, var(--_tst-dn-br-rs));
94
+ // Each of these reads the mobile and tablet variables ahead of the desktop one.
95
+ // They previously used the desktop variable alone, so anything set while editing in
96
+ // the tablet or mobile breakpoint was written but never applied.
97
+ border-color: var(
98
+ --_ctm-mob-cat-dn-br-cr,
99
+ var(--_ctm-tab-cat-dn-br-cr, var(--_ctm-cat-dn-br-cr, var(--_tst-dn-br-cr)))
100
+ );
101
+ border-style: var(
102
+ --_ctm-mob-cat-dn-br-se,
103
+ var(--_ctm-tab-cat-dn-br-se, var(--_ctm-cat-dn-br-se, var(--_tst-dn-br-se)))
104
+ );
105
+ border-width: var(
106
+ --_ctm-mob-cat-dn-br-wh,
107
+ var(--_ctm-tab-cat-dn-br-wh, var(--_ctm-cat-dn-br-wh, var(--_tst-dn-br-wh)))
108
+ );
109
+ border-radius: var(
110
+ --_ctm-mob-cat-dn-br-rs,
111
+ var(--_ctm-tab-cat-dn-br-rs, var(--_ctm-cat-dn-br-rs, var(--_tst-dn-br-rs)))
112
+ );
113
+ // "Show Border" switch. The border above is painted from CSS variables, so the
114
+ // switch arrives as a data attribute and zeroes the width when it is off.
115
+ &[data-show-border="false"] {
116
+ border-width: 0;
117
+ border-style: none;
118
+ }
98
119
  box-shadow: var(
99
120
  --_show-shadow,
100
121
  var(--_ctm-cat-dn-sw-ae, var(--_tst-dn-sw-ae)) var(--_ctm-cat-dn-sw-br, var(--_tst-dn-sw-br))
@@ -80,18 +80,22 @@ $activeElementSelector: "[data-has-clicked='true']";
80
80
  );
81
81
 
82
82
  &[data-show-border="true"] {
83
- border-color: var(
84
- --_ctm-mob-con-dn-br-cr,
85
- var(--_ctm-tab-con-dn-br-cr, var(--_ctm-con-dn-br-cr))
86
- );
87
- border-style: var(
88
- --_ctm-mob-con-dn-br-se,
89
- var(--_ctm-tab-con-dn-br-se, var(--_ctm-con-dn-br-se))
90
- );
91
- border-width: var(
92
- --_ctm-mob-con-dn-br-wh,
93
- var(--_ctm-tab-con-dn-br-wh, var(--_ctm-con-dn-br-wh))
94
- );
83
+ & > div {
84
+ &.wrapper {
85
+ border-color: var(
86
+ --_ctm-mob-con-dn-br-cr,
87
+ var(--_ctm-tab-con-dn-br-cr, var(--_ctm-con-dn-br-cr))
88
+ );
89
+ border-style: var(
90
+ --_ctm-mob-con-dn-br-se,
91
+ var(--_ctm-tab-con-dn-br-se, var(--_ctm-con-dn-br-se))
92
+ );
93
+ border-width: var(
94
+ --_ctm-mob-con-dn-br-wh,
95
+ var(--_ctm-tab-con-dn-br-wh, var(--_ctm-con-dn-br-wh))
96
+ );
97
+ }
98
+ }
95
99
  }
96
100
  &[data-show-shadow="true"] {
97
101
  // box-shadow: var(--_ctm-mob-dn-sw-ae, var(--_ctm-tab-con-dn-sw-ae, var(--_ctm-dn-sw-ae)))
@@ -114,7 +118,10 @@ $activeElementSelector: "[data-has-clicked='true']";
114
118
  grid-template-columns: 100% !important;
115
119
  min-height: prepareMediaVariable(--_ctm-con-lt-mn-ht);
116
120
  padding: var(--_ctm-mob-con-lt-pg, var(--_ctm-tab-con-lt-pg, var(--_ctm-con-lt-pg)));
117
-
121
+ border-radius: var(
122
+ --_ctm-mob-con-dn-br-rs,
123
+ var(--_ctm-tab-con-dn-br-rs, var(--_ctm-con-dn-br-rs))
124
+ );
118
125
  // background-color: var(
119
126
  // --_ctm-mob-con-dn-bd-cr,
120
127
  // var(--_ctm-tab-con-dn-bd-cr, var(--_ctm-con-dn-bd-cr))
@@ -139,10 +146,6 @@ $activeElementSelector: "[data-has-clicked='true']";
139
146
  // --_ctm-mob-con-dn-bd-se,
140
147
  // var(--_ctm-tab-con-dn-bd-se, var(--_ctm-con-dn-bd-se))
141
148
  // );
142
- border-radius: var(
143
- --_ctm-mob-con-dn-br-rs,
144
- var(--_ctm-tab-con-dn-br-rs, var(--_ctm-con-dn-br-rs))
145
- );
146
149
  }
147
150
  }
148
151
 
@@ -20,7 +20,7 @@
20
20
  )
21
21
  );
22
22
  margin: var(--_ctm-mob-lt-mn, var(--_ctm-tab-lt-mn, var(--_ctm-lt-mn)));
23
- min-height: var(--_ctm-mob-lt-ht, var(--_ctm-tab-lt-ht, var(--_ctm-lt-ht)));
23
+
24
24
  // aspect-ratio: 1 / var(--_sf-aspect-ratio);
25
25
  --_aspect-ratio: calc(
26
26
  1 * var(--_ctm-mob-lt-ht, var(--_ctm-tab-lt-ht, var(--_ctm-lt-ht))) /
@@ -29,7 +29,7 @@
29
29
 
30
30
  & > .wrapper {
31
31
  width: 100%;
32
- height: 100%;
32
+ height: var(--_ctm-mob-lt-ht, var(--_ctm-tab-lt-ht, var(--_ctm-lt-ht)));
33
33
  }
34
34
  &[data-show-shadow="false"] {
35
35
  --_show-shadow: none;
package/dist/hotspot.scss CHANGED
@@ -523,7 +523,6 @@ $data: (
523
523
  border-style: prepareMediaVariable(--_ctm-dn-ie-se-br-se);
524
524
  border-color: prepareMediaVariable(--_ctm-dn-ie-se-br-cr);
525
525
  border-width: prepareMediaVariable(--_ctm-dn-ie-se-br-wh);
526
- border-radius: prepareMediaVariable(--_ctm-dn-ie-se-br-rs);
527
526
  }
528
527
  }
529
528
 
@@ -592,6 +591,7 @@ $data: (
592
591
  scale: prepareMediaVariable(--_ctm-dn-ie-se-zm-ie);
593
592
  transition: transform 0.3s ease-in-out;
594
593
  rotate: calc(#{prepareMediaVariable(--_ctm-dn-ie-se-re)} * 1deg);
594
+ border-radius: prepareMediaVariable(--_ctm-dn-ie-se-br-rs);
595
595
 
596
596
  &:hover {
597
597
  &[data-on-hover="Zoom Out"] {
@@ -643,7 +643,12 @@ $data: (
643
643
  top: 50%;
644
644
  left: 50%;
645
645
  translate: -50% -50%;
646
- animation: scaleInOut prepareMediaVariable(--_ctm-dn-ht-se-an-fy) infinite;
646
+
647
+ // Animation gated on the toggle, so turning it off preserves the configured
648
+ // frequency (it no longer has to be reset to 0 to stop).
649
+ &[data-show-animation="true"] {
650
+ animation: scaleInOut prepareMediaVariable(--_ctm-dn-ht-se-an-fy) infinite;
651
+ }
647
652
 
648
653
  &[data-hotspot-shape="circle"] {
649
654
  border-radius: 50%;
@@ -683,7 +688,11 @@ $data: (
683
688
  translate: -50% -50%;
684
689
  box-sizing: border-box;
685
690
  justify-content: center;
686
- animation: scaleInOut prepareMediaVariable(--_ctm-dn-ht-se-an-fy) infinite;
691
+
692
+ // Animation gated on the toggle (see .hotspot__icon note above).
693
+ &[data-show-animation="true"] {
694
+ animation: scaleInOut prepareMediaVariable(--_ctm-dn-ht-se-an-fy) infinite;
695
+ }
687
696
 
688
697
  &[data-hotspot-shape="circle"] {
689
698
  border-radius: 50%;
@@ -115,6 +115,48 @@
115
115
  display: flex;
116
116
  gap: var(--_ctm-mob-lt-gp-bn-is, var(--_ctm-tab-lt-gp-bn-is, var(--_ctm-lt-gp-bn-is)));
117
117
 
118
+ // "Show Border" switches — widget style (default/hover), widget dropdown and
119
+ // item style (default/hover/selected). Each state is gated on its own switch.
120
+ // border-style is reset alongside the width: a state whose width variables are
121
+ // unset resolves border-width to the initial `medium`, so zeroing the width
122
+ // alone still leaves a border painted in whatever border-style is in effect.
123
+ &[data-widget-border="false"] {
124
+ .est__dropdown__main .est__dropdown .dropdown__button__wrapper {
125
+ border-width: 0;
126
+ border-style: none;
127
+ }
128
+ }
129
+ &[data-widget-hover-border="false"] {
130
+ .est__dropdown__main .est__dropdown .dropdown__button__wrapper:hover {
131
+ border-width: 0;
132
+ border-style: none;
133
+ }
134
+ }
135
+ &[data-dropdown-border="false"] {
136
+ .est__dropdown__main .est__dropdown .list {
137
+ border-width: 0;
138
+ border-style: none;
139
+ }
140
+ }
141
+ &[data-item-border="false"] {
142
+ .option:not(:hover):not([data-selected="true"]) {
143
+ border-width: 0;
144
+ border-style: none;
145
+ }
146
+ }
147
+ &[data-item-hover-border="false"] {
148
+ .option:hover:not([data-selected="true"]) {
149
+ border-width: 0;
150
+ border-style: none;
151
+ }
152
+ }
153
+ &[data-item-selected-border="false"] {
154
+ .option[data-selected="true"] {
155
+ border-width: 0;
156
+ border-style: none;
157
+ }
158
+ }
159
+
118
160
  .option:hover {
119
161
  --_sf-hr-bd-cr: var(
120
162
  --_ctm-mob-dn-im-se-hr-se-bd-cr,