@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.
- package/dist/allocationDetails.scss +34 -53
- package/dist/builder.js +1 -1
- package/dist/countdown.scss +47 -4
- package/dist/filters.scss +344 -83
- package/dist/icons-builder.js +1 -1
- package/dist/icons-website.js +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.js +1 -1
- package/dist/login.scss +6 -2
- package/dist/product-actions.scss +2872 -2585
- package/dist/product-highlights.scss +48 -50
- package/dist/product-image-allocation.scss +35 -59
- package/dist/quotes.scss +84 -3
- package/dist/table.scss +141 -39
- package/dist/types/builder/elements/bundle-categories/index.d.ts +35 -0
- package/dist/types/builder/index.d.ts +2 -1
- package/dist/types/builder/tools/element-edit/bundleCategories.d.ts +30 -0
- package/dist/types/builder/tools/element-edit/countdown.d.ts +8 -2
- package/dist/types/builder/tools/element-edit/filters.d.ts +3 -0
- package/dist/types/builder/tools/element-edit/index.d.ts +2 -1
- package/dist/types/builder/tools/element-edit/productActions.d.ts +3 -0
- package/dist/types/builder/tools/element-edit/quotes.d.ts +50 -0
- package/dist/types/builder/tools/element-edit/table.d.ts +14 -0
- package/dist/uploadMedia.js +1 -1
- package/package.json +1 -1
package/dist/countdown.scss
CHANGED
|
@@ -48,6 +48,12 @@ $dividerValues: (
|
|
|
48
48
|
// padding: var(--_lt-pg);
|
|
49
49
|
// width: var(--_ctm-lt-wh, var(--_tst-lt-wh));
|
|
50
50
|
// width: var(--_sf-nw-wh, var(--_tst-lt-wh));
|
|
51
|
+
// Size bounds for the whole countdown. 480px is the narrowest the widget lays out
|
|
52
|
+
// cleanly — below it the counters and the title start fighting for the same space
|
|
53
|
+
// — and 600px keeps it from stretching so wide that the two sit far apart. The
|
|
54
|
+
// Width control still applies between the two.
|
|
55
|
+
// min-width: 480px !important;
|
|
56
|
+
min-width: 600px !important;
|
|
51
57
|
width: var(
|
|
52
58
|
--_sf-el-wh-st-mx,
|
|
53
59
|
calc(
|
|
@@ -292,6 +298,10 @@ $dividerValues: (
|
|
|
292
298
|
display: flex;
|
|
293
299
|
flex-direction: column;
|
|
294
300
|
position: relative;
|
|
301
|
+
// Same reasoning as `.countdown`: without this the title's own width acts as a
|
|
302
|
+
// floor, so the text column refuses to give ground and squeezes the counters
|
|
303
|
+
// out of the widget instead of the two sharing what space there is.
|
|
304
|
+
min-width: 0;
|
|
295
305
|
|
|
296
306
|
background-color: var(
|
|
297
307
|
--_ctm-mob-dn-cn-wt-tt-cr-dn-bd-cr,
|
|
@@ -318,13 +328,20 @@ $dividerValues: (
|
|
|
318
328
|
);
|
|
319
329
|
h1 {
|
|
320
330
|
white-space: nowrap;
|
|
331
|
+
// The title is deliberately kept on one line, so once the column is narrower
|
|
332
|
+
// than the words it has to be cut off rather than bleed across the counters
|
|
333
|
+
// beside it — which is what "SESSIO" running under the digits was.
|
|
334
|
+
overflow: hidden;
|
|
335
|
+
text-overflow: ellipsis;
|
|
321
336
|
}
|
|
322
337
|
}
|
|
323
338
|
|
|
324
339
|
.content__container {
|
|
325
340
|
display: flex;
|
|
326
341
|
flex-direction: column;
|
|
327
|
-
|
|
342
|
+
// Text Container Width, from the widget's text-container layout. 100% is what
|
|
343
|
+
// was hardcoded here, so an untouched countdown is unchanged.
|
|
344
|
+
width: prepareMediaVariable(--_ctm-dn-cn-wt-tt-cr-lt-tt-cr-wh, 100%);
|
|
328
345
|
gap: #{prepareMediaVariable(--_ctm-dn-cn-wt-tt-cr-lt-te-ad-dn-sg)};
|
|
329
346
|
|
|
330
347
|
h1 {
|
|
@@ -534,11 +551,24 @@ $dividerValues: (
|
|
|
534
551
|
width: 100%;
|
|
535
552
|
display: grid;
|
|
536
553
|
grid-auto-flow: column;
|
|
554
|
+
// Counters and dividers on one centre line. Grid items stretch by default, so
|
|
555
|
+
// each column filled the row height and its contents settled wherever their own
|
|
556
|
+
// box put them — which is why the dividers never lined up with the digits.
|
|
557
|
+
align-items: center;
|
|
558
|
+
// And centred along the row. Auto tracks absorb the widget's spare width, but
|
|
559
|
+
// `.countdown__element` is `width: max-content`, so a counter cannot stretch
|
|
560
|
+
// and was left sitting at the START of its track — while a divider, having no
|
|
561
|
+
// width of its own, did stretch and centred its icon in the middle of its own
|
|
562
|
+
// track. The two settled to different places, so a divider never landed
|
|
563
|
+
// halfway between the counters either side of it.
|
|
564
|
+
justify-items: center;
|
|
537
565
|
column-gap: 4px;
|
|
538
566
|
text-align: center;
|
|
539
567
|
|
|
540
|
-
|
|
541
|
-
|
|
568
|
+
// No scrolling here: the element carries a 480px floor (see the min-width on
|
|
569
|
+
// the root below), which is enough to lay the counters out in full, so there
|
|
570
|
+
// is nothing to scroll to. The counters keep their natural minimum size and
|
|
571
|
+
// the text column beside them gives way first.
|
|
542
572
|
&[data-text-align="left"] {
|
|
543
573
|
.countdown__element .countdown__digits {
|
|
544
574
|
justify-content: flex-start;
|
|
@@ -802,14 +832,27 @@ $dividerValues: (
|
|
|
802
832
|
);
|
|
803
833
|
}
|
|
804
834
|
}
|
|
835
|
+
// The divider between two counters. `.countdown` is a column grid, so this is a
|
|
836
|
+
// grid item sitting beside the `.countdown__element` boxes.
|
|
837
|
+
//
|
|
838
|
+
// `align-self: center` matters: grid items stretch by default, so the separator
|
|
839
|
+
// filled the row's full height and the icon inside it centred against that,
|
|
840
|
+
// rather than against the digits it sits between. The `margin-top: 6px` that
|
|
841
|
+
// used to nudge it back was a guess at one particular counter height and threw
|
|
842
|
+
// the alignment out again at any other size.
|
|
805
843
|
.separator {
|
|
806
844
|
display: flex;
|
|
807
845
|
align-items: center;
|
|
808
846
|
justify-content: center;
|
|
847
|
+
align-self: center;
|
|
848
|
+
// Kills the inline-SVG baseline gap, which otherwise adds a few pixels under
|
|
849
|
+
// the glyph and reads as the icon sitting high.
|
|
850
|
+
line-height: 0;
|
|
851
|
+
flex-shrink: 0;
|
|
809
852
|
svg {
|
|
810
853
|
width: prepareMediaVariable(--_ctm-dn-dr-se-in-se);
|
|
811
854
|
height: prepareMediaVariable(--_ctm-dn-dr-se-in-se);
|
|
812
|
-
|
|
855
|
+
display: block;
|
|
813
856
|
|
|
814
857
|
path {
|
|
815
858
|
stroke: prepareMediaVariable(--_ctm-dn-dr-se-in-c1);
|
package/dist/filters.scss
CHANGED
|
@@ -205,6 +205,21 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
205
205
|
--_ctm-mob-dn-cr-al-tt-dt-se-bd-cr,
|
|
206
206
|
var(--_ctm-tab-dn-cr-al-tt-dt-se-bd-cr, var(--_ctm-dn-cr-al-tt-dt-se-bd-cr))
|
|
207
207
|
);
|
|
208
|
+
// Border of the Clear All button. The section has carried border colour,
|
|
209
|
+
// style, width and the Show Border toggle all along, but this rule read
|
|
210
|
+
// none of them, so the whole Border tab did nothing.
|
|
211
|
+
border-color: prepareMediaVariable(--_ctm-dn-cr-al-tt-dt-se-br-cr, transparent);
|
|
212
|
+
border-style: prepareMediaVariable(--_ctm-dn-cr-al-tt-dt-se-br-se, solid);
|
|
213
|
+
border-width: prepareMediaVariable(--_ctm-dn-cr-al-tt-dt-se-br-wh, 0);
|
|
214
|
+
&[data-clear-all-text-border="false"] {
|
|
215
|
+
border: none;
|
|
216
|
+
}
|
|
217
|
+
// Text Overflow clamps to N lines; the renderer adds the class and
|
|
218
|
+
// publishes the count as --_sf-line-clamp.
|
|
219
|
+
&.flex__overflow {
|
|
220
|
+
white-space: normal;
|
|
221
|
+
@include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
|
|
222
|
+
}
|
|
208
223
|
border-radius: var(
|
|
209
224
|
--_ctm-mob-dn-cr-al-tt-dt-se-br-rs,
|
|
210
225
|
var(--_ctm-tab-dn-cr-al-tt-dt-se-br-rs, var(--_ctm-dn-cr-al-tt-dt-se-br-rs))
|
|
@@ -369,6 +384,15 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
369
384
|
align-items: center;
|
|
370
385
|
gap: 10px;
|
|
371
386
|
flex-wrap: wrap;
|
|
387
|
+
|
|
388
|
+
// Selected Items View. "Wrap" is the flowing row above — the default and
|
|
389
|
+
// what this has always been. "Vertical" stacks one chip per line, each
|
|
390
|
+
// sized to its own text rather than stretched across the column.
|
|
391
|
+
&[data-selected-items-view="Vertical"] {
|
|
392
|
+
flex-direction: column;
|
|
393
|
+
flex-wrap: nowrap;
|
|
394
|
+
align-items: flex-start;
|
|
395
|
+
}
|
|
372
396
|
// .selected_item {
|
|
373
397
|
// display: flex;
|
|
374
398
|
// gap: 8px;
|
|
@@ -802,49 +826,182 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
802
826
|
transition: all 400ms ease-in-out;
|
|
803
827
|
}
|
|
804
828
|
}
|
|
829
|
+
// Search Bar. Until now only Border, Border Radius and Padding reached
|
|
830
|
+
// CSS from here, which is why Background Color, the text properties and
|
|
831
|
+
// Box Shadow all looked dead — nothing read their variables.
|
|
832
|
+
//
|
|
833
|
+
// The section carries Default / Focus states now, so everything reads
|
|
834
|
+
// `sh-br-dt-se-*` (searchBar.defaultState). The old flat `sh-br-*` name is
|
|
835
|
+
// kept as the fallback on the three that were live before the split, so a
|
|
836
|
+
// bar styled on an already-published page does not jump.
|
|
805
837
|
.filter__search {
|
|
806
838
|
display: flex;
|
|
807
839
|
align-items: center;
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
840
|
+
width: 100%;
|
|
841
|
+
|
|
842
|
+
padding: prepareMediaVariable(
|
|
843
|
+
--_ctm-dn-sh-br-dt-se-pg,
|
|
844
|
+
prepareMediaVariable(--_ctm-dn-sh-br-pg)
|
|
812
845
|
);
|
|
813
|
-
|
|
814
|
-
border-color:
|
|
815
|
-
--
|
|
816
|
-
|
|
817
|
-
--_ctm-mob-dn-sh-br-br-cr,
|
|
818
|
-
var(--_ctm-tab-dn-sh-br-br-cr, var(--_ctm-dn-sh-br-br-cr))
|
|
819
|
-
)
|
|
846
|
+
background-color: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-bd-cr);
|
|
847
|
+
border-color: prepareMediaVariable(
|
|
848
|
+
--_ctm-dn-sh-br-dt-se-br-cr,
|
|
849
|
+
prepareMediaVariable(--_ctm-dn-sh-br-br-cr)
|
|
820
850
|
);
|
|
821
|
-
border-style:
|
|
822
|
-
--
|
|
823
|
-
|
|
824
|
-
--_ctm-mob-dn-sh-br-br-se,
|
|
825
|
-
var(--_ctm-tab-dn-sh-br-br-se, var(--_ctm-dn-sh-br-br-se))
|
|
826
|
-
)
|
|
851
|
+
border-style: prepareMediaVariable(
|
|
852
|
+
--_ctm-dn-sh-br-dt-se-br-se,
|
|
853
|
+
prepareMediaVariable(--_ctm-dn-sh-br-br-se)
|
|
827
854
|
);
|
|
828
|
-
border-width:
|
|
829
|
-
--
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
855
|
+
border-width: prepareMediaVariable(
|
|
856
|
+
--_ctm-dn-sh-br-dt-se-br-wh,
|
|
857
|
+
prepareMediaVariable(--_ctm-dn-sh-br-br-wh)
|
|
858
|
+
);
|
|
859
|
+
border-radius: prepareMediaVariable(
|
|
860
|
+
--_ctm-dn-sh-br-dt-se-br-rs,
|
|
861
|
+
prepareMediaVariable(--_ctm-dn-sh-br-br-rs)
|
|
834
862
|
);
|
|
835
|
-
// border-radius: 6px;
|
|
836
|
-
border-radius: prepareMediaVariable(--_ctm-dn-sh-br-br-rs);
|
|
837
|
-
width: 100%;
|
|
838
863
|
|
|
864
|
+
// Opt-in, like every other Show Shadow in this element: the bar has
|
|
865
|
+
// never cast one, so it only appears once the toggle is on.
|
|
866
|
+
box-shadow: none;
|
|
867
|
+
&[data-show-shadow="true"] {
|
|
868
|
+
box-shadow: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-sw-ae, 0 0)
|
|
869
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-sw-br, 0)
|
|
870
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-sw-sd, 0)
|
|
871
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-sw-cr, transparent);
|
|
872
|
+
}
|
|
873
|
+
&[data-show-border="false"] {
|
|
874
|
+
border: none;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
// Text properties apply to the input and its placeholder, which is the
|
|
878
|
+
// only text this section owns.
|
|
879
|
+
input[type="text"] {
|
|
880
|
+
padding-left: 6px;
|
|
881
|
+
background-color: transparent;
|
|
882
|
+
color: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-cr);
|
|
883
|
+
font-family: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-ft-fy);
|
|
884
|
+
font-size: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-ft-se);
|
|
885
|
+
font-weight: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-ft-wt);
|
|
886
|
+
font-style: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-ft-se-ic);
|
|
887
|
+
text-align: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-tt-an);
|
|
888
|
+
letter-spacing: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-lr-sg);
|
|
889
|
+
line-height: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-le-ht);
|
|
890
|
+
text-decoration: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-ue);
|
|
891
|
+
text-transform: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-tt-tm);
|
|
892
|
+
word-wrap: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-wd-wp);
|
|
893
|
+
word-break: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-wd-bk);
|
|
894
|
+
|
|
895
|
+
&::placeholder {
|
|
896
|
+
color: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-cr);
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
// The magnifier. Size and colour come from the Icon tab; `showIcon`
|
|
901
|
+
// hides it without removing the button from the flow.
|
|
839
902
|
button {
|
|
840
903
|
display: flex;
|
|
841
904
|
svg {
|
|
842
|
-
width: 18px;
|
|
843
|
-
height: 18px;
|
|
905
|
+
width: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-in-se, 18px);
|
|
906
|
+
height: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-in-se, 18px);
|
|
907
|
+
|
|
908
|
+
// A library glyph paints with `stroke` on its paths while an
|
|
909
|
+
// uploaded one may use `fill`, or set either on the root.
|
|
910
|
+
&[stroke]:not([stroke="none"]),
|
|
911
|
+
[stroke]:not([stroke="none"]) {
|
|
912
|
+
stroke: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-in-c1);
|
|
913
|
+
}
|
|
914
|
+
&[fill]:not([fill="none"]),
|
|
915
|
+
[fill]:not([fill="none"]) {
|
|
916
|
+
fill: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-in-c1);
|
|
917
|
+
}
|
|
918
|
+
stroke-width: prepareMediaVariable(--_ctm-dn-sh-br-dt-se-se-wh);
|
|
919
|
+
}
|
|
920
|
+
&[data-show-icon="false"] {
|
|
921
|
+
display: none;
|
|
844
922
|
}
|
|
845
923
|
}
|
|
846
|
-
|
|
847
|
-
|
|
924
|
+
|
|
925
|
+
// Focus State. `:focus-within` rather than `:focus`, because the focus
|
|
926
|
+
// lands on the input while the styling belongs to the bar around it.
|
|
927
|
+
// Each property falls back to its own default-state value, so a focus
|
|
928
|
+
// style nobody has set is simply the default one.
|
|
929
|
+
&:focus-within {
|
|
930
|
+
padding: prepareMediaVariable(
|
|
931
|
+
--_ctm-dn-sh-br-fs-se-pg,
|
|
932
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-pg)
|
|
933
|
+
);
|
|
934
|
+
background-color: prepareMediaVariable(
|
|
935
|
+
--_ctm-dn-sh-br-fs-se-bd-cr,
|
|
936
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-bd-cr)
|
|
937
|
+
);
|
|
938
|
+
border-color: prepareMediaVariable(
|
|
939
|
+
--_ctm-dn-sh-br-fs-se-br-cr,
|
|
940
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-br-cr)
|
|
941
|
+
);
|
|
942
|
+
border-style: prepareMediaVariable(
|
|
943
|
+
--_ctm-dn-sh-br-fs-se-br-se,
|
|
944
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-br-se)
|
|
945
|
+
);
|
|
946
|
+
border-width: prepareMediaVariable(
|
|
947
|
+
--_ctm-dn-sh-br-fs-se-br-wh,
|
|
948
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-br-wh)
|
|
949
|
+
);
|
|
950
|
+
border-radius: prepareMediaVariable(
|
|
951
|
+
--_ctm-dn-sh-br-fs-se-br-rs,
|
|
952
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-br-rs)
|
|
953
|
+
);
|
|
954
|
+
|
|
955
|
+
&[data-focus-show-shadow="true"] {
|
|
956
|
+
box-shadow: prepareMediaVariable(--_ctm-dn-sh-br-fs-se-sw-ae, 0 0)
|
|
957
|
+
prepareMediaVariable(--_ctm-dn-sh-br-fs-se-sw-br, 0)
|
|
958
|
+
prepareMediaVariable(--_ctm-dn-sh-br-fs-se-sw-sd, 0)
|
|
959
|
+
prepareMediaVariable(--_ctm-dn-sh-br-fs-se-sw-cr, transparent);
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
input[type="text"] {
|
|
963
|
+
color: prepareMediaVariable(
|
|
964
|
+
--_ctm-dn-sh-br-fs-se-cr,
|
|
965
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-cr)
|
|
966
|
+
);
|
|
967
|
+
font-size: prepareMediaVariable(
|
|
968
|
+
--_ctm-dn-sh-br-fs-se-ft-se,
|
|
969
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-ft-se)
|
|
970
|
+
);
|
|
971
|
+
font-weight: prepareMediaVariable(
|
|
972
|
+
--_ctm-dn-sh-br-fs-se-ft-wt,
|
|
973
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-ft-wt)
|
|
974
|
+
);
|
|
975
|
+
text-transform: prepareMediaVariable(
|
|
976
|
+
--_ctm-dn-sh-br-fs-se-tt-tm,
|
|
977
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-tt-tm)
|
|
978
|
+
);
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
button svg {
|
|
982
|
+
width: prepareMediaVariable(
|
|
983
|
+
--_ctm-dn-sh-br-fs-se-in-se,
|
|
984
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-in-se, 18px)
|
|
985
|
+
);
|
|
986
|
+
height: prepareMediaVariable(
|
|
987
|
+
--_ctm-dn-sh-br-fs-se-in-se,
|
|
988
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-in-se, 18px)
|
|
989
|
+
);
|
|
990
|
+
&[stroke]:not([stroke="none"]),
|
|
991
|
+
[stroke]:not([stroke="none"]) {
|
|
992
|
+
stroke: prepareMediaVariable(
|
|
993
|
+
--_ctm-dn-sh-br-fs-se-in-c1,
|
|
994
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-in-c1)
|
|
995
|
+
);
|
|
996
|
+
}
|
|
997
|
+
&[fill]:not([fill="none"]),
|
|
998
|
+
[fill]:not([fill="none"]) {
|
|
999
|
+
fill: prepareMediaVariable(
|
|
1000
|
+
--_ctm-dn-sh-br-fs-se-in-c1,
|
|
1001
|
+
prepareMediaVariable(--_ctm-dn-sh-br-dt-se-in-c1)
|
|
1002
|
+
);
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
848
1005
|
}
|
|
849
1006
|
}
|
|
850
1007
|
}
|
|
@@ -915,6 +1072,15 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
915
1072
|
}
|
|
916
1073
|
}
|
|
917
1074
|
.more__button {
|
|
1075
|
+
// Padding of the More Button. The key was in the schema and the panel
|
|
1076
|
+
// rendered it under Border Radius, but nothing here read it.
|
|
1077
|
+
padding: prepareMediaVariable(--_ctm-dn-me-bn-dt-se-pg, 0);
|
|
1078
|
+
&:hover {
|
|
1079
|
+
padding: prepareMediaVariable(
|
|
1080
|
+
--_ctm-dn-me-bn-hr-se-pg,
|
|
1081
|
+
prepareMediaVariable(--_ctm-dn-me-bn-dt-se-pg, 0)
|
|
1082
|
+
);
|
|
1083
|
+
}
|
|
918
1084
|
// font-size: 12px;
|
|
919
1085
|
// text-transform: uppercase;
|
|
920
1086
|
// font-weight: var(--_fw-500);
|
|
@@ -1581,7 +1747,11 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
1581
1747
|
// Input checkbox Starts
|
|
1582
1748
|
.checkbox__radio {
|
|
1583
1749
|
display: flex;
|
|
1584
|
-
|
|
1750
|
+
// `flex-start`, not `center`: once the box can be resized or padded it is often
|
|
1751
|
+
// taller than one line of label text, and centring made a wrapped label sit
|
|
1752
|
+
// visibly off its box. Starting both at the top keeps the box level with the
|
|
1753
|
+
// label's first line at any size.
|
|
1754
|
+
align-items: flex-start;
|
|
1585
1755
|
gap: 8px;
|
|
1586
1756
|
position: relative;
|
|
1587
1757
|
// margin-bottom: 12px;
|
|
@@ -1679,8 +1849,34 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
1679
1849
|
}
|
|
1680
1850
|
|
|
1681
1851
|
.checkmark {
|
|
1682
|
-
|
|
1683
|
-
|
|
1852
|
+
// Layout Options of the Checkbox Unchecked / Checked sections. These were
|
|
1853
|
+
// hardcoded, so Width, Height and Padding wrote variables no rule read. 18px
|
|
1854
|
+
// is the schema default and what was hardcoded here, so an untouched checkbox
|
|
1855
|
+
// is unchanged. `box-sizing` keeps the configured Width the outer size once a
|
|
1856
|
+
// padding or a border is added, and `flex-shrink: 0` stops a long option label
|
|
1857
|
+
// squashing a box that has been made bigger — the row stays aligned.
|
|
1858
|
+
box-sizing: border-box;
|
|
1859
|
+
flex-shrink: 0;
|
|
1860
|
+
width: prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-wh, 18px);
|
|
1861
|
+
height: prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-ht, 18px);
|
|
1862
|
+
padding: prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-pg, 0);
|
|
1863
|
+
|
|
1864
|
+
// Unchecked hover. The checkbox variant had no hover rule at all, so the
|
|
1865
|
+
// Hover state of Checkbox Unchecked Style reached nothing here.
|
|
1866
|
+
&:hover {
|
|
1867
|
+
width: prepareMediaVariable(
|
|
1868
|
+
--_ctm-dn-cx-ud-se-hr-se-wh,
|
|
1869
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-wh, 18px)
|
|
1870
|
+
);
|
|
1871
|
+
height: prepareMediaVariable(
|
|
1872
|
+
--_ctm-dn-cx-ud-se-hr-se-ht,
|
|
1873
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-ht, 18px)
|
|
1874
|
+
);
|
|
1875
|
+
padding: prepareMediaVariable(
|
|
1876
|
+
--_ctm-dn-cx-ud-se-hr-se-pg,
|
|
1877
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-pg, 0)
|
|
1878
|
+
);
|
|
1879
|
+
}
|
|
1684
1880
|
// border: 1px solid var(--_gray-500);
|
|
1685
1881
|
// background-color: var(--_base-white);
|
|
1686
1882
|
display: flex;
|
|
@@ -1820,6 +2016,20 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
1820
2016
|
}
|
|
1821
2017
|
|
|
1822
2018
|
.checkbox__radio input:checked ~ .checkmark {
|
|
2019
|
+
// Checked has its own Layout Options, falling back to the unchecked ones so a
|
|
2020
|
+
// box that is only sized on one of the two sections stays a square.
|
|
2021
|
+
width: prepareMediaVariable(
|
|
2022
|
+
--_ctm-dn-cx-cd-se-dt-se-wh,
|
|
2023
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-wh, 18px)
|
|
2024
|
+
);
|
|
2025
|
+
height: prepareMediaVariable(
|
|
2026
|
+
--_ctm-dn-cx-cd-se-dt-se-ht,
|
|
2027
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-ht, 18px)
|
|
2028
|
+
);
|
|
2029
|
+
padding: prepareMediaVariable(
|
|
2030
|
+
--_ctm-dn-cx-cd-se-dt-se-pg,
|
|
2031
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-pg, 0)
|
|
2032
|
+
);
|
|
1823
2033
|
background-color: var(
|
|
1824
2034
|
--_ctm-mob-dn-cx-cd-se-dt-se-bd-cr,
|
|
1825
2035
|
var(--_ctm-tab-dn-cx-cd-se-dt-se-bd-cr, var(--_ctm-dn-cx-cd-se-dt-se-bd-cr))
|
|
@@ -1876,6 +2086,20 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
1876
2086
|
}
|
|
1877
2087
|
|
|
1878
2088
|
&:hover {
|
|
2089
|
+
// Hover carries its own Layout Options, each falling back to the default
|
|
2090
|
+
// state so a box only sized on Default keeps that size on hover.
|
|
2091
|
+
width: prepareMediaVariable(
|
|
2092
|
+
--_ctm-dn-cx-cd-se-hr-se-wh,
|
|
2093
|
+
prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-wh, 18px)
|
|
2094
|
+
);
|
|
2095
|
+
height: prepareMediaVariable(
|
|
2096
|
+
--_ctm-dn-cx-cd-se-hr-se-ht,
|
|
2097
|
+
prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-ht, 18px)
|
|
2098
|
+
);
|
|
2099
|
+
padding: prepareMediaVariable(
|
|
2100
|
+
--_ctm-dn-cx-cd-se-hr-se-pg,
|
|
2101
|
+
prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-pg, 0)
|
|
2102
|
+
);
|
|
1879
2103
|
background-color: var(
|
|
1880
2104
|
--_ctm-mob-dn-cx-cd-se-hr-se-bd-cr,
|
|
1881
2105
|
var(--_ctm-tab-dn-cx-cd-se-hr-se-bd-cr, var(--_ctm-dn-cx-cd-se-hr-se-bd-cr))
|
|
@@ -1941,15 +2165,16 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
1941
2165
|
justify-content: center;
|
|
1942
2166
|
}
|
|
1943
2167
|
svg {
|
|
1944
|
-
//
|
|
1945
|
-
//
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
2168
|
+
// Icon Size of the hover state. These read a plain `-se`, a name nothing
|
|
2169
|
+
// emits — iconSize becomes `in-se`. Falls back to the default state's
|
|
2170
|
+
// size so an icon only sized on Default keeps that size on hover.
|
|
2171
|
+
width: prepareMediaVariable(
|
|
2172
|
+
--_ctm-dn-cx-cd-se-hr-se-in-se,
|
|
2173
|
+
prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-in-se, 13px)
|
|
1949
2174
|
);
|
|
1950
|
-
height:
|
|
1951
|
-
--_ctm-
|
|
1952
|
-
|
|
2175
|
+
height: prepareMediaVariable(
|
|
2176
|
+
--_ctm-dn-cx-cd-se-hr-se-in-se,
|
|
2177
|
+
prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-in-se, 13px)
|
|
1953
2178
|
);
|
|
1954
2179
|
path {
|
|
1955
2180
|
// stroke: var(--_base-white);
|
|
@@ -1981,16 +2206,11 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
1981
2206
|
display: none;
|
|
1982
2207
|
}
|
|
1983
2208
|
svg {
|
|
1984
|
-
//
|
|
1985
|
-
//
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
);
|
|
1990
|
-
height: var(
|
|
1991
|
-
--_ctm-mob-dn-cx-cd-se-dt-se-se,
|
|
1992
|
-
var(--_ctm-tab-dn-cx-cd-se-dt-se-se, var(--_ctm-dn-cx-cd-se-dt-se-se))
|
|
1993
|
-
);
|
|
2209
|
+
// Icon Size. `iconSize` carries `property: "iconSize"`, which
|
|
2210
|
+
// splitCamelCaseAndJoin turns into `in-se` — these read plain `-se`, a
|
|
2211
|
+
// name nothing emits, so the control moved a variable no rule used.
|
|
2212
|
+
width: prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-in-se, 13px);
|
|
2213
|
+
height: prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-in-se, 13px);
|
|
1994
2214
|
path {
|
|
1995
2215
|
// stroke: var(--_base-white);
|
|
1996
2216
|
stroke: var(
|
|
@@ -2025,7 +2245,9 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
2025
2245
|
|
|
2026
2246
|
.filter__checkbox__radio {
|
|
2027
2247
|
display: flex;
|
|
2028
|
-
|
|
2248
|
+
// Same reasoning as .checkbox__radio above.
|
|
2249
|
+
align-items: flex-start;
|
|
2250
|
+
gap: 8px;
|
|
2029
2251
|
cursor: pointer;
|
|
2030
2252
|
position: relative;
|
|
2031
2253
|
|
|
@@ -2038,9 +2260,17 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
2038
2260
|
}
|
|
2039
2261
|
|
|
2040
2262
|
.filter__checkmark {
|
|
2263
|
+
// The radio variant — what Selection Type "Single Select" renders, and the
|
|
2264
|
+
// element's default. Its size was hardcoded, so the Checkbox sections' Layout
|
|
2265
|
+
// Options only ever moved the checkbox variant. Same variables, same 18px
|
|
2266
|
+
// fallback, and `flex-shrink: 0` so a resized box is not squeezed by a long
|
|
2267
|
+
// option label beside it.
|
|
2268
|
+
box-sizing: border-box;
|
|
2269
|
+
flex-shrink: 0;
|
|
2270
|
+
width: prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-wh, 18px);
|
|
2271
|
+
height: prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-ht, 18px);
|
|
2272
|
+
padding: prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-pg, 0);
|
|
2041
2273
|
display: inline-block;
|
|
2042
|
-
height: 18px;
|
|
2043
|
-
width: 18px;
|
|
2044
2274
|
// border: 2px solid #ccc;
|
|
2045
2275
|
// background-color: #fff;
|
|
2046
2276
|
position: relative;
|
|
@@ -2100,6 +2330,19 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
2100
2330
|
);
|
|
2101
2331
|
}
|
|
2102
2332
|
&:hover {
|
|
2333
|
+
// Layout Options of the hover state, falling back to the default state.
|
|
2334
|
+
width: prepareMediaVariable(
|
|
2335
|
+
--_ctm-dn-cx-ud-se-hr-se-wh,
|
|
2336
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-wh, 18px)
|
|
2337
|
+
);
|
|
2338
|
+
height: prepareMediaVariable(
|
|
2339
|
+
--_ctm-dn-cx-ud-se-hr-se-ht,
|
|
2340
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-ht, 18px)
|
|
2341
|
+
);
|
|
2342
|
+
padding: prepareMediaVariable(
|
|
2343
|
+
--_ctm-dn-cx-ud-se-hr-se-pg,
|
|
2344
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-pg, 0)
|
|
2345
|
+
);
|
|
2103
2346
|
&[data-show-hover-unchecked-border="true"] {
|
|
2104
2347
|
border-color: var(
|
|
2105
2348
|
--_sf-hr-br-cr,
|
|
@@ -2180,6 +2423,20 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
2180
2423
|
}
|
|
2181
2424
|
|
|
2182
2425
|
input[type="radio"]:checked ~ .filter__checkmark {
|
|
2426
|
+
// Checked carries its own Layout Options, falling back to the unchecked ones
|
|
2427
|
+
// so a radio sized on only one of the two sections stays round.
|
|
2428
|
+
width: prepareMediaVariable(
|
|
2429
|
+
--_ctm-dn-cx-cd-se-dt-se-wh,
|
|
2430
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-wh, 18px)
|
|
2431
|
+
);
|
|
2432
|
+
height: prepareMediaVariable(
|
|
2433
|
+
--_ctm-dn-cx-cd-se-dt-se-ht,
|
|
2434
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-ht, 18px)
|
|
2435
|
+
);
|
|
2436
|
+
padding: prepareMediaVariable(
|
|
2437
|
+
--_ctm-dn-cx-cd-se-dt-se-pg,
|
|
2438
|
+
prepareMediaVariable(--_ctm-dn-cx-ud-se-dt-se-pg, 0)
|
|
2439
|
+
);
|
|
2183
2440
|
// border-color: #007bff;
|
|
2184
2441
|
&[data-show-default-checked-shadow="true"] {
|
|
2185
2442
|
box-shadow: var(
|
|
@@ -2283,15 +2540,14 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
2283
2540
|
display: block;
|
|
2284
2541
|
}
|
|
2285
2542
|
svg {
|
|
2286
|
-
//
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
--_ctm-
|
|
2290
|
-
var(--_ctm-tab-dn-cx-cd-se-hr-se-se, var(--_ctm-dn-cx-cd-se-hr-se-se))
|
|
2543
|
+
// Same `-se` / `in-se` mix-up as the checkbox copy above.
|
|
2544
|
+
width: prepareMediaVariable(
|
|
2545
|
+
--_ctm-dn-cx-cd-se-hr-se-in-se,
|
|
2546
|
+
prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-in-se, 13px)
|
|
2291
2547
|
);
|
|
2292
|
-
height:
|
|
2293
|
-
--_ctm-
|
|
2294
|
-
|
|
2548
|
+
height: prepareMediaVariable(
|
|
2549
|
+
--_ctm-dn-cx-cd-se-hr-se-in-se,
|
|
2550
|
+
prepareMediaVariable(--_ctm-dn-cx-cd-se-dt-se-in-se, 13px)
|
|
2295
2551
|
);
|
|
2296
2552
|
path {
|
|
2297
2553
|
// stroke: var(--_base-white);
|
|
@@ -2428,7 +2684,10 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
2428
2684
|
position: relative;
|
|
2429
2685
|
width: 100%;
|
|
2430
2686
|
height: 5px;
|
|
2431
|
-
|
|
2687
|
+
// The 30px bottom used to reserve room for the two values, which hung off the
|
|
2688
|
+
// track absolutely. They sit under it in normal flow now, so the track only
|
|
2689
|
+
// needs its own breathing room.
|
|
2690
|
+
margin: 16px 0 0 0;
|
|
2432
2691
|
// background-color: var(--_primary-400);
|
|
2433
2692
|
// background: linear-gradient(
|
|
2434
2693
|
// to right,
|
|
@@ -2601,13 +2860,26 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
2601
2860
|
text-align: center;
|
|
2602
2861
|
}
|
|
2603
2862
|
|
|
2863
|
+
// The two price values under the slider. They used to be absolutely positioned
|
|
2864
|
+
// off the track at hardcoded offsets (left: 42px / right: 45px with a 50%
|
|
2865
|
+
// translate), so at narrow widths they drifted over each other and over the
|
|
2866
|
+
// thumbs, and neither sat at its end of the track. They are a flex row now, one
|
|
2867
|
+
// value pinned to each end.
|
|
2868
|
+
.range-values {
|
|
2869
|
+
display: flex;
|
|
2870
|
+
justify-content: space-between;
|
|
2871
|
+
align-items: center;
|
|
2872
|
+
gap: 8px;
|
|
2873
|
+
width: 100%;
|
|
2874
|
+
margin-top: 8px;
|
|
2875
|
+
}
|
|
2876
|
+
|
|
2604
2877
|
.min-tooltip,
|
|
2605
2878
|
.max-tooltip {
|
|
2606
|
-
|
|
2607
|
-
|
|
2879
|
+
display: flex;
|
|
2880
|
+
align-items: center;
|
|
2608
2881
|
font-size: 12px;
|
|
2609
2882
|
color: var(--_thm-cs-be-se-1);
|
|
2610
|
-
// background-color: #fff;
|
|
2611
2883
|
border: 1px solid var(--_thm-cs-be-se-3);
|
|
2612
2884
|
border-radius: 5px;
|
|
2613
2885
|
white-space: nowrap;
|
|
@@ -2620,30 +2892,19 @@ $resizeActive: '[data-cms-element-resizer="true"]';
|
|
|
2620
2892
|
}
|
|
2621
2893
|
}
|
|
2622
2894
|
}
|
|
2623
|
-
&:focus-within {
|
|
2624
|
-
outline: 2px solid var(--_gray-200);
|
|
2625
|
-
border: 1px solid var(--_gray-300);
|
|
2626
|
-
}
|
|
2627
|
-
}
|
|
2628
|
-
|
|
2629
|
-
.min-tooltip {
|
|
2630
|
-
left: 42px;
|
|
2631
|
-
top: 20px;
|
|
2632
|
-
transform: translateX(-50%);
|
|
2633
2895
|
input {
|
|
2634
2896
|
padding-left: 0px !important;
|
|
2635
2897
|
text-align: left !important;
|
|
2636
2898
|
}
|
|
2899
|
+
&:focus-within {
|
|
2900
|
+
outline: 2px solid var(--_gray-200);
|
|
2901
|
+
border: 1px solid var(--_gray-300);
|
|
2902
|
+
}
|
|
2637
2903
|
}
|
|
2638
2904
|
|
|
2905
|
+
// The max value reads right-to-left against the end of the track.
|
|
2639
2906
|
.max-tooltip {
|
|
2640
|
-
|
|
2641
|
-
top: 20px;
|
|
2642
|
-
transform: translateX(50%);
|
|
2643
|
-
input {
|
|
2644
|
-
padding-left: 0px !important;
|
|
2645
|
-
text-align: left !important;
|
|
2646
|
-
}
|
|
2907
|
+
justify-content: flex-end;
|
|
2647
2908
|
}
|
|
2648
2909
|
|
|
2649
2910
|
.price-range-container {
|