@sc-360-v2/storefront-cms-library 0.5.70 → 0.5.72

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 (141) hide show
  1. package/dist/add-existing-form.scss +68 -68
  2. package/dist/add-products-tab-details.scss +4071 -4071
  3. package/dist/add-products-tab-uom-details.scss +1106 -1106
  4. package/dist/add-products-tab.scss +2377 -2377
  5. package/dist/allocation-header-quota-details.scss +609 -609
  6. package/dist/allocations-quota-details.scss +525 -525
  7. package/dist/amount-estimator.scss +1192 -1192
  8. package/dist/animation-control.scss +23 -23
  9. package/dist/badge.scss +408 -408
  10. package/dist/brand-basic-elements.scss +387 -387
  11. package/dist/brand.scss +142 -142
  12. package/dist/breadcrumbs.scss +966 -966
  13. package/dist/builder.js +1 -1
  14. package/dist/bulk-order-pad.scss +692 -692
  15. package/dist/bundleDetails.scss +6189 -6189
  16. package/dist/buy-for-tab-container.scss +141 -141
  17. package/dist/buy-for-tab.scss +649 -649
  18. package/dist/buy-for-tabs-container-item.scss +80 -80
  19. package/dist/buyForPopup.scss +339 -339
  20. package/dist/cart-details.scss +3986 -3986
  21. package/dist/cart-products-sidebar.scss +211 -211
  22. package/dist/cart-wrapper.scss +127 -127
  23. package/dist/cartDropdownOverlay.scss +653 -653
  24. package/dist/cartGrouping.scss +89 -89
  25. package/dist/category-groups-element.scss +739 -739
  26. package/dist/category-groups-quota-details.scss +626 -626
  27. package/dist/category.scss +137 -137
  28. package/dist/categoryDetails.scss +61 -61
  29. package/dist/categoryWidget.scss +34 -34
  30. package/dist/checkbox-radio.scss +124 -124
  31. package/dist/code-temp.scss +59 -59
  32. package/dist/colorpicker_v2.scss +62 -62
  33. package/dist/common-element.scss +35 -35
  34. package/dist/confirm-modal.scss +370 -370
  35. package/dist/confirmationModal.scss +139 -139
  36. package/dist/contact-us.scss +105 -105
  37. package/dist/container.scss +168 -168
  38. package/dist/custom-fonts.scss +100 -100
  39. package/dist/customization-tree.scss +162 -162
  40. package/dist/default-dropdown.scss +259 -259
  41. package/dist/dropdownTemplate.scss +699 -699
  42. package/dist/editCartItem.scss +110 -110
  43. package/dist/embed-temp.scss +73 -73
  44. package/dist/embroider-preview-element.scss +94 -94
  45. package/dist/embroider-template-1-v2.scss +1105 -1105
  46. package/dist/embroider-template-1.scss +501 -501
  47. package/dist/embroidery.scss +247 -247
  48. package/dist/employee-bulk-order.scss +4060 -4060
  49. package/dist/emtpy-templates.scss +165 -165
  50. package/dist/faq.scss +696 -696
  51. package/dist/fb-dropdown.scss +135 -135
  52. package/dist/filter-results.scss +361 -361
  53. package/dist/flex-text-editor.scss +271 -271
  54. package/dist/form-preview.scss +530 -530
  55. package/dist/global-styles.scss +198 -198
  56. package/dist/grid.scss +169 -169
  57. package/dist/icon-library.scss +78 -78
  58. package/dist/image-for-product.scss +21 -21
  59. package/dist/image-temp.scss +203 -203
  60. package/dist/item-stock.scss +93 -93
  61. package/dist/kitDetails.scss +5739 -5739
  62. package/dist/kits.scss +305 -305
  63. package/dist/language-selector.scss +948 -948
  64. package/dist/last-x-orders.scss +285 -285
  65. package/dist/layouter-item.scss +141 -141
  66. package/dist/layouter-pro-item.scss +139 -139
  67. package/dist/layouter-pro.scss +134 -134
  68. package/dist/layouter.scss +491 -491
  69. package/dist/light-box-v2.scss +155 -155
  70. package/dist/lightbox.scss +78 -78
  71. package/dist/loader.scss +37 -37
  72. package/dist/login.scss +29 -11
  73. package/dist/marchandiserSets.scss +141 -141
  74. package/dist/mega-menu-container.scss +152 -152
  75. package/dist/menu-item.scss +19 -19
  76. package/dist/menu-v2.scss +999 -999
  77. package/dist/menu.scss +174 -174
  78. package/dist/multi-select-dropdown.scss +316 -316
  79. package/dist/my-templates.scss +477 -477
  80. package/dist/my-wishlist.scss +27 -27
  81. package/dist/option-bar.scss +886 -886
  82. package/dist/order-processing.scss +61 -61
  83. package/dist/order-status.scss +74 -0
  84. package/dist/overflow-module.scss +63 -63
  85. package/dist/past-orders.scss +1039 -1039
  86. package/dist/payment-methods.scss +307 -307
  87. package/dist/phone-input.scss +208 -208
  88. package/dist/pickup-locations.scss +1359 -1359
  89. package/dist/position-module.scss +95 -95
  90. package/dist/prefix-list.scss +86 -86
  91. package/dist/product-actions.scss +2872 -2872
  92. package/dist/product-basic-elements.scss +600 -600
  93. package/dist/product-customizations.scss +155 -155
  94. package/dist/product-inventory.scss +1621 -1621
  95. package/dist/product-labels.scss +265 -265
  96. package/dist/product-price.scss +3392 -3392
  97. package/dist/product-promotions.scss +3224 -3224
  98. package/dist/product-sizechart.scss +1921 -1921
  99. package/dist/product.scss +140 -140
  100. package/dist/profile.scss +824 -824
  101. package/dist/quantity-selector.scss +1074 -1074
  102. package/dist/quick-inventory-check.scss +285 -285
  103. package/dist/quick-links.scss +627 -627
  104. package/dist/quota-details.scss +526 -526
  105. package/dist/repeater-embla-controls.scss +211 -211
  106. package/dist/repeater-grid-toggle.scss +206 -206
  107. package/dist/repeater-item.scss +152 -152
  108. package/dist/repeater.scss +946 -946
  109. package/dist/request-for-quotes.scss +841 -841
  110. package/dist/responsive-behaviour.scss +29 -29
  111. package/dist/rfqs.scss +861 -861
  112. package/dist/scroll.scss +414 -414
  113. package/dist/search.scss +689 -689
  114. package/dist/section.scss +276 -276
  115. package/dist/shareCartSideBar.scss +254 -254
  116. package/dist/shipping-estimator.scss +41 -41
  117. package/dist/shipping-payments.scss +2518 -2518
  118. package/dist/simple-list.scss +338 -338
  119. package/dist/skeleton.scss +64 -64
  120. package/dist/sort.scss +176 -176
  121. package/dist/spotlight.scss +1706 -1706
  122. package/dist/stack.scss +171 -171
  123. package/dist/static-global.scss +292 -292
  124. package/dist/static-text.scss +52 -52
  125. package/dist/stockStatus.scss +70 -70
  126. package/dist/store-locations.scss +1592 -1592
  127. package/dist/sub-category.scss +74 -74
  128. package/dist/submit-quote.scss +275 -275
  129. package/dist/tab-container-item.scss +80 -80
  130. package/dist/tab-container.scss +141 -141
  131. package/dist/table.scss +9 -0
  132. package/dist/tabs.scss +440 -440
  133. package/dist/text-temp.scss +109 -109
  134. package/dist/theme-classes.scss +421 -421
  135. package/dist/toaster.scss +392 -392
  136. package/dist/toggle-button.scss +32 -32
  137. package/dist/transform-properties-module.scss +20 -20
  138. package/dist/types/builder/tools/element-edit/login.d.ts +1 -0
  139. package/dist/types/builder/tools/element-edit/resetPassword.d.ts +1 -0
  140. package/dist/wishlist-overlay.scss +48 -48
  141. package/package.json +1 -1
@@ -1,64 +1,64 @@
1
- // `.skeleton__element` and `@keyframes skeleton-shimmer` are NOT defined here.
2
- //
3
- // They used to be — a copy of the library's old skeleton.scss. But global-styles.scss
4
- // also defines them (mirrored from storefront-websites globals, which is what the
5
- // shared elements are written against), and both files load into the builder. The two
6
- // definitions did not replace each other, they stacked:
7
- //
8
- // old rule -> .skeleton__element::before { absolute gradient + shimmer }
9
- // new rule -> .skeleton__element::after { absolute gradient + shimmer }
10
- //
11
- // so every skeleton ran TWO shimmer sweeps at once (0.6 alpha over 0.4), which read as
12
- // a flicker in the builder canvas. The old `border-radius: 6px` also leaked through,
13
- // since the new rules never set one — corners the same skeleton does not have on the
14
- // storefront. Confirmed in the browser on the cms-builder page: both pseudo-elements
15
- // had `animation-name: skeleton-shimmer` and the box computed `border-radius: 6px`.
16
- //
17
- // global-styles.scss is now the single definition, so the builder and the storefront
18
- // render these skeletons identically. Everything the old block set that still matters
19
- // (`display: block`, `min-height`, background) is already there. Nothing in the CMS
20
- // used `.skeleton__element.rounded` — the dashboard Skeleton is a CSS module with its
21
- // own scoped class, and the shared Skeleton component sets its radius inline.
22
- //
23
- // If a skeleton style needs changing, change it in ONE of the two mirrored files
24
- // (globals.scss in storefront-websites, global-styles.scss here) and copy it across.
25
-
26
- // dropdown skeletons
27
- .dpd_skeleton {
28
- display: flex;
29
- flex-direction: column;
30
- gap: 4px;
31
- padding: 4px;
32
- }
33
-
34
- // dropdown skeletons
35
- .opt1_skeleton {
36
- display: flex;
37
- flex-direction: column;
38
- padding: 4px 12px;
39
- }
40
-
41
- .opt2_skeleton {
42
- display: flex;
43
- flex-direction: column;
44
- gap: 16px;
45
- padding: 8px;
46
- .emp_types {
47
- display: flex;
48
- flex-direction: column;
49
- gap: 6px;
50
- .emp_type {
51
- display: flex;
52
- gap: 8px;
53
- }
54
- .emp_dtls {
55
- display: flex;
56
- flex-direction: column;
57
- gap: 6px;
58
- .emp_code {
59
- display: flex;
60
- gap: 8px;
61
- }
62
- }
63
- }
64
- }
1
+ // `.skeleton__element` and `@keyframes skeleton-shimmer` are NOT defined here.
2
+ //
3
+ // They used to be — a copy of the library's old skeleton.scss. But global-styles.scss
4
+ // also defines them (mirrored from storefront-websites globals, which is what the
5
+ // shared elements are written against), and both files load into the builder. The two
6
+ // definitions did not replace each other, they stacked:
7
+ //
8
+ // old rule -> .skeleton__element::before { absolute gradient + shimmer }
9
+ // new rule -> .skeleton__element::after { absolute gradient + shimmer }
10
+ //
11
+ // so every skeleton ran TWO shimmer sweeps at once (0.6 alpha over 0.4), which read as
12
+ // a flicker in the builder canvas. The old `border-radius: 6px` also leaked through,
13
+ // since the new rules never set one — corners the same skeleton does not have on the
14
+ // storefront. Confirmed in the browser on the cms-builder page: both pseudo-elements
15
+ // had `animation-name: skeleton-shimmer` and the box computed `border-radius: 6px`.
16
+ //
17
+ // global-styles.scss is now the single definition, so the builder and the storefront
18
+ // render these skeletons identically. Everything the old block set that still matters
19
+ // (`display: block`, `min-height`, background) is already there. Nothing in the CMS
20
+ // used `.skeleton__element.rounded` — the dashboard Skeleton is a CSS module with its
21
+ // own scoped class, and the shared Skeleton component sets its radius inline.
22
+ //
23
+ // If a skeleton style needs changing, change it in ONE of the two mirrored files
24
+ // (globals.scss in storefront-websites, global-styles.scss here) and copy it across.
25
+
26
+ // dropdown skeletons
27
+ .dpd_skeleton {
28
+ display: flex;
29
+ flex-direction: column;
30
+ gap: 4px;
31
+ padding: 4px;
32
+ }
33
+
34
+ // dropdown skeletons
35
+ .opt1_skeleton {
36
+ display: flex;
37
+ flex-direction: column;
38
+ padding: 4px 12px;
39
+ }
40
+
41
+ .opt2_skeleton {
42
+ display: flex;
43
+ flex-direction: column;
44
+ gap: 16px;
45
+ padding: 8px;
46
+ .emp_types {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: 6px;
50
+ .emp_type {
51
+ display: flex;
52
+ gap: 8px;
53
+ }
54
+ .emp_dtls {
55
+ display: flex;
56
+ flex-direction: column;
57
+ gap: 6px;
58
+ .emp_code {
59
+ display: flex;
60
+ gap: 8px;
61
+ }
62
+ }
63
+ }
64
+ }
package/dist/sort.scss CHANGED
@@ -1,176 +1,176 @@
1
- @use "sass:map";
2
- @use "sass:list";
3
- @use "./functions.scss" as *;
4
-
5
- $resizerId: "[data-cms-tool='cms-element-resizer']";
6
- $resizeActive: '[data-cms-element-resizer="true"]';
7
- [data-div-type="element"] {
8
- &[data-element-type="sort"] {
9
- width: var(
10
- --_sf-el-wh-st-mx,
11
- calc(
12
- 1% *
13
- var(
14
- --_ctm-mob-ele-nw-wh-vl,
15
- var(--_ctm-tab-ele-nw-wh-vl, var(--_ctm-ele-nw-wh-vl, var(--_sf-nw-wh)))
16
- )
17
- )
18
- );
19
- margin: var(--_ctm-mob-lt-mn, var(--_ctm-tab-lt-mn, var(--_ctm-lt-mn)));
20
-
21
- // The Design tab's Sort Button toggles. Both are CONTROLS with no CSS property of
22
- // their own, so the element publishes them as data attributes and the styling has
23
- // to act on them here — an unhandled toggle stores a value that never reaches the
24
- // page, which is what the whole Design tab did before these variables were wired.
25
- &[data-sort-button-shadow="false"] {
26
- --_show-shadow-sort-button: none;
27
- }
28
- &[data-sort-button-border="false"] {
29
- .est__dropdown {
30
- border: none;
31
- }
32
- }
33
-
34
- & > div {
35
- &.wrapper {
36
- width: 100%;
37
- }
38
- }
39
- //Dropdown
40
- .est__dropdown__main {
41
- position: relative;
42
- width: 100%;
43
-
44
- label {
45
- font-size: 14px;
46
- color: var(--_gray-700);
47
- margin-bottom: 8px;
48
- display: block;
49
- }
50
-
51
- .est__dropdown {
52
- cursor: pointer;
53
- position: relative;
54
- display: flex;
55
- justify-content: space-between;
56
- align-items: center;
57
- gap: 8px;
58
- width: 100%;
59
-
60
- // Design > Sort Button. `--_ctm-dn-st-bn-*` is what the schema's
61
- // design.sortButton scope emits: splitCamelCaseAndJoin("design") -> "dn",
62
- // ("sortButton") -> "st-bn". The literals stay as the fallbacks so an element
63
- // saved before the Design tab existed keeps the look it had.
64
- background-color: prepareMediaVariable(--_ctm-dn-st-bn-bd-cr, #fff);
65
- border-color: prepareMediaVariable(--_ctm-dn-st-bn-br-cr, transparent);
66
- border-style: prepareMediaVariable(--_ctm-dn-st-bn-br-se, solid);
67
- border-width: prepareMediaVariable(--_ctm-dn-st-bn-br-wh, 0);
68
- border-radius: prepareMediaVariable(--_ctm-dn-st-bn-br-rs, 6px);
69
- box-shadow: var(
70
- --_show-shadow-sort-button,
71
- prepareMediaVariable(--_ctm-dn-st-bn-sw-ae, 0 0)
72
- prepareMediaVariable(--_ctm-dn-st-bn-sw-br, 0)
73
- prepareMediaVariable(--_ctm-dn-st-bn-sw-sd, 0)
74
- prepareMediaVariable(--_ctm-dn-st-bn-sw-cr, transparent)
75
- );
76
-
77
- .value__selected {
78
- display: flex;
79
- align-items: baseline;
80
- gap: 4px;
81
- // The title and the value are laid out side by side, so the pair has to be
82
- // allowed to shrink — without min-width the flex item keeps its content
83
- // width and pushes the chevron out of a narrow element instead of clamping.
84
- min-width: 0;
85
- flex: 1;
86
- }
87
-
88
- // Text Overflow is a CONTROL, not CSS: the element adds this class and
89
- // publishes the line count inline, one variable per typography scope.
90
- .sort__title.flex__overflow {
91
- white-space: normal;
92
- @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
93
- }
94
- .selected__option.flex__overflow {
95
- white-space: normal;
96
- @include restrictToLinesShow(#{var(--_sf-line-clamp-desc, 1)});
97
- }
98
-
99
- // Design > Sort Title (design.sortTitle -> "dn-st-te")
100
- .sort__title {
101
- color: prepareMediaVariable(--_ctm-dn-st-te-cr, var(--_gray-700));
102
- font-family: var(--_sf-hr-ff, prepareMediaVariable(--_ctm-dn-st-te-ft-fy, inherit));
103
- font-size: prepareMediaVariable(--_ctm-dn-st-te-ft-se, inherit);
104
- font-weight: prepareMediaVariable(--_ctm-dn-st-te-ft-wt, inherit);
105
- font-style: prepareMediaVariable(--_ctm-dn-st-te-ft-se-ic, normal);
106
- text-align: prepareMediaVariable(--_ctm-dn-st-te-tt-an, left);
107
- letter-spacing: prepareMediaVariable(--_ctm-dn-st-te-lr-sg, normal);
108
- line-height: prepareMediaVariable(--_ctm-dn-st-te-le-ht, normal);
109
- text-decoration: prepareMediaVariable(--_ctm-dn-st-te-ue, none);
110
- }
111
-
112
- // Design > Selected Option (design.selectedOption -> "dn-sd-on")
113
- .selected__option {
114
- color: prepareMediaVariable(--_ctm-dn-sd-on-cr, var(--_gray-700));
115
- font-family: var(--_sf-hr-ff, prepareMediaVariable(--_ctm-dn-sd-on-ft-fy, inherit));
116
- font-size: prepareMediaVariable(--_ctm-dn-sd-on-ft-se, inherit);
117
- font-weight: prepareMediaVariable(--_ctm-dn-sd-on-ft-wt, inherit);
118
- font-style: prepareMediaVariable(--_ctm-dn-sd-on-ft-se-ic, normal);
119
- text-align: prepareMediaVariable(--_ctm-dn-sd-on-tt-an, left);
120
- letter-spacing: prepareMediaVariable(--_ctm-dn-sd-on-lr-sg, normal);
121
- line-height: prepareMediaVariable(--_ctm-dn-sd-on-le-ht, normal);
122
- text-decoration: prepareMediaVariable(--_ctm-dn-sd-on-ue, none);
123
- }
124
-
125
- &.open .list {
126
- display: flex;
127
- }
128
-
129
- .list {
130
- display: none;
131
- flex-direction: column;
132
- border: 1px solid var(--_gray-200);
133
- border-radius: 6px;
134
- position: absolute;
135
- top: 100%;
136
- left: 0;
137
- width: 100%;
138
- background-color: #fff;
139
- border-radius: 4px;
140
- z-index: var(--_higher-zIndex);
141
- max-height: 200px;
142
- overflow-y: auto;
143
-
144
- &.top {
145
- bottom: 100%;
146
- top: auto;
147
- }
148
-
149
- .list__option {
150
- padding: 12px;
151
- cursor: pointer;
152
- // The list has no design scope of its own. It borrows the Selected
153
- // Option's type so the open list matches the closed control — colour and
154
- // alignment are left to the list's own resting/hover rules below, which
155
- // are what make an option look clickable.
156
- font-family: var(--_sf-hr-ff, prepareMediaVariable(--_ctm-dn-sd-on-ft-fy, inherit));
157
- font-size: prepareMediaVariable(--_ctm-dn-sd-on-ft-se, inherit);
158
- font-weight: prepareMediaVariable(--_ctm-dn-sd-on-ft-wt, inherit);
159
- letter-spacing: prepareMediaVariable(--_ctm-dn-sd-on-lr-sg, normal);
160
- color: var(--_gray-700);
161
-
162
- &:hover {
163
- background-color: var(--_primary-25);
164
- color: var(--_primary-400);
165
- }
166
-
167
- &[aria-selected="true"] {
168
- background-color: var(--_primary-25);
169
- color: var(--_primary-400);
170
- }
171
- }
172
- }
173
- }
174
- }
175
- }
176
- }
1
+ @use "sass:map";
2
+ @use "sass:list";
3
+ @use "./functions.scss" as *;
4
+
5
+ $resizerId: "[data-cms-tool='cms-element-resizer']";
6
+ $resizeActive: '[data-cms-element-resizer="true"]';
7
+ [data-div-type="element"] {
8
+ &[data-element-type="sort"] {
9
+ width: var(
10
+ --_sf-el-wh-st-mx,
11
+ calc(
12
+ 1% *
13
+ var(
14
+ --_ctm-mob-ele-nw-wh-vl,
15
+ var(--_ctm-tab-ele-nw-wh-vl, var(--_ctm-ele-nw-wh-vl, var(--_sf-nw-wh)))
16
+ )
17
+ )
18
+ );
19
+ margin: var(--_ctm-mob-lt-mn, var(--_ctm-tab-lt-mn, var(--_ctm-lt-mn)));
20
+
21
+ // The Design tab's Sort Button toggles. Both are CONTROLS with no CSS property of
22
+ // their own, so the element publishes them as data attributes and the styling has
23
+ // to act on them here — an unhandled toggle stores a value that never reaches the
24
+ // page, which is what the whole Design tab did before these variables were wired.
25
+ &[data-sort-button-shadow="false"] {
26
+ --_show-shadow-sort-button: none;
27
+ }
28
+ &[data-sort-button-border="false"] {
29
+ .est__dropdown {
30
+ border: none;
31
+ }
32
+ }
33
+
34
+ & > div {
35
+ &.wrapper {
36
+ width: 100%;
37
+ }
38
+ }
39
+ //Dropdown
40
+ .est__dropdown__main {
41
+ position: relative;
42
+ width: 100%;
43
+
44
+ label {
45
+ font-size: 14px;
46
+ color: var(--_gray-700);
47
+ margin-bottom: 8px;
48
+ display: block;
49
+ }
50
+
51
+ .est__dropdown {
52
+ cursor: pointer;
53
+ position: relative;
54
+ display: flex;
55
+ justify-content: space-between;
56
+ align-items: center;
57
+ gap: 8px;
58
+ width: 100%;
59
+
60
+ // Design > Sort Button. `--_ctm-dn-st-bn-*` is what the schema's
61
+ // design.sortButton scope emits: splitCamelCaseAndJoin("design") -> "dn",
62
+ // ("sortButton") -> "st-bn". The literals stay as the fallbacks so an element
63
+ // saved before the Design tab existed keeps the look it had.
64
+ background-color: prepareMediaVariable(--_ctm-dn-st-bn-bd-cr, #fff);
65
+ border-color: prepareMediaVariable(--_ctm-dn-st-bn-br-cr, transparent);
66
+ border-style: prepareMediaVariable(--_ctm-dn-st-bn-br-se, solid);
67
+ border-width: prepareMediaVariable(--_ctm-dn-st-bn-br-wh, 0);
68
+ border-radius: prepareMediaVariable(--_ctm-dn-st-bn-br-rs, 6px);
69
+ box-shadow: var(
70
+ --_show-shadow-sort-button,
71
+ prepareMediaVariable(--_ctm-dn-st-bn-sw-ae, 0 0)
72
+ prepareMediaVariable(--_ctm-dn-st-bn-sw-br, 0)
73
+ prepareMediaVariable(--_ctm-dn-st-bn-sw-sd, 0)
74
+ prepareMediaVariable(--_ctm-dn-st-bn-sw-cr, transparent)
75
+ );
76
+
77
+ .value__selected {
78
+ display: flex;
79
+ align-items: baseline;
80
+ gap: 4px;
81
+ // The title and the value are laid out side by side, so the pair has to be
82
+ // allowed to shrink — without min-width the flex item keeps its content
83
+ // width and pushes the chevron out of a narrow element instead of clamping.
84
+ min-width: 0;
85
+ flex: 1;
86
+ }
87
+
88
+ // Text Overflow is a CONTROL, not CSS: the element adds this class and
89
+ // publishes the line count inline, one variable per typography scope.
90
+ .sort__title.flex__overflow {
91
+ white-space: normal;
92
+ @include restrictToLinesShow(#{var(--_sf-line-clamp, 1)});
93
+ }
94
+ .selected__option.flex__overflow {
95
+ white-space: normal;
96
+ @include restrictToLinesShow(#{var(--_sf-line-clamp-desc, 1)});
97
+ }
98
+
99
+ // Design > Sort Title (design.sortTitle -> "dn-st-te")
100
+ .sort__title {
101
+ color: prepareMediaVariable(--_ctm-dn-st-te-cr, var(--_gray-700));
102
+ font-family: var(--_sf-hr-ff, prepareMediaVariable(--_ctm-dn-st-te-ft-fy, inherit));
103
+ font-size: prepareMediaVariable(--_ctm-dn-st-te-ft-se, inherit);
104
+ font-weight: prepareMediaVariable(--_ctm-dn-st-te-ft-wt, inherit);
105
+ font-style: prepareMediaVariable(--_ctm-dn-st-te-ft-se-ic, normal);
106
+ text-align: prepareMediaVariable(--_ctm-dn-st-te-tt-an, left);
107
+ letter-spacing: prepareMediaVariable(--_ctm-dn-st-te-lr-sg, normal);
108
+ line-height: prepareMediaVariable(--_ctm-dn-st-te-le-ht, normal);
109
+ text-decoration: prepareMediaVariable(--_ctm-dn-st-te-ue, none);
110
+ }
111
+
112
+ // Design > Selected Option (design.selectedOption -> "dn-sd-on")
113
+ .selected__option {
114
+ color: prepareMediaVariable(--_ctm-dn-sd-on-cr, var(--_gray-700));
115
+ font-family: var(--_sf-hr-ff, prepareMediaVariable(--_ctm-dn-sd-on-ft-fy, inherit));
116
+ font-size: prepareMediaVariable(--_ctm-dn-sd-on-ft-se, inherit);
117
+ font-weight: prepareMediaVariable(--_ctm-dn-sd-on-ft-wt, inherit);
118
+ font-style: prepareMediaVariable(--_ctm-dn-sd-on-ft-se-ic, normal);
119
+ text-align: prepareMediaVariable(--_ctm-dn-sd-on-tt-an, left);
120
+ letter-spacing: prepareMediaVariable(--_ctm-dn-sd-on-lr-sg, normal);
121
+ line-height: prepareMediaVariable(--_ctm-dn-sd-on-le-ht, normal);
122
+ text-decoration: prepareMediaVariable(--_ctm-dn-sd-on-ue, none);
123
+ }
124
+
125
+ &.open .list {
126
+ display: flex;
127
+ }
128
+
129
+ .list {
130
+ display: none;
131
+ flex-direction: column;
132
+ border: 1px solid var(--_gray-200);
133
+ border-radius: 6px;
134
+ position: absolute;
135
+ top: 100%;
136
+ left: 0;
137
+ width: 100%;
138
+ background-color: #fff;
139
+ border-radius: 4px;
140
+ z-index: var(--_higher-zIndex);
141
+ max-height: 200px;
142
+ overflow-y: auto;
143
+
144
+ &.top {
145
+ bottom: 100%;
146
+ top: auto;
147
+ }
148
+
149
+ .list__option {
150
+ padding: 12px;
151
+ cursor: pointer;
152
+ // The list has no design scope of its own. It borrows the Selected
153
+ // Option's type so the open list matches the closed control — colour and
154
+ // alignment are left to the list's own resting/hover rules below, which
155
+ // are what make an option look clickable.
156
+ font-family: var(--_sf-hr-ff, prepareMediaVariable(--_ctm-dn-sd-on-ft-fy, inherit));
157
+ font-size: prepareMediaVariable(--_ctm-dn-sd-on-ft-se, inherit);
158
+ font-weight: prepareMediaVariable(--_ctm-dn-sd-on-ft-wt, inherit);
159
+ letter-spacing: prepareMediaVariable(--_ctm-dn-sd-on-lr-sg, normal);
160
+ color: var(--_gray-700);
161
+
162
+ &:hover {
163
+ background-color: var(--_primary-25);
164
+ color: var(--_primary-400);
165
+ }
166
+
167
+ &[aria-selected="true"] {
168
+ background-color: var(--_primary-25);
169
+ color: var(--_primary-400);
170
+ }
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }