@sc-360-v2/storefront-cms-library 0.5.24 → 0.5.25

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.
@@ -96,6 +96,15 @@ $resizeActive: '[data-cms-element-resizer="true"]';
96
96
  white-space: nowrap;
97
97
  align-items: center;
98
98
 
99
+ padding: var(
100
+ --_ctm-mob-dn-or-im-se-pg,
101
+ var(--_ctm-tab-dn-or-im-se-pg, var(--_ctm-dn-or-im-se-pg))
102
+ );
103
+ gap: var(
104
+ --_ctm-mob-dn-or-im-se-im-gp,
105
+ var(--_ctm-tab-dn-or-im-se-im-gp, var(--_ctm-dn-or-im-se-im-gp))
106
+ );
107
+
99
108
  background-color: var(
100
109
  --_ctm-mob-dn-or-im-se-bd-cr,
101
110
  var(--_ctm-tab-dn-or-im-se-bd-cr, var(--_ctm-dn-or-im-se-bd-cr))
@@ -189,6 +198,14 @@ $resizeActive: '[data-cms-element-resizer="true"]';
189
198
  }
190
199
 
191
200
  &:first-of-type {
201
+ padding: var(
202
+ --_ctm-mob-dn-he-pe-im-se-pg,
203
+ var(--_ctm-tab-dn-he-pe-im-se-pg, var(--_ctm-dn-he-pe-im-se-pg))
204
+ );
205
+ gap: var(
206
+ --_ctm-mob-dn-he-pe-im-se-im-gp,
207
+ var(--_ctm-tab-dn-he-pe-im-se-im-gp, var(--_ctm-dn-he-pe-im-se-im-gp))
208
+ );
192
209
  background-color: var(
193
210
  --_ctm-mob-dn-he-pe-im-se-bd-cr,
194
211
  var(--_ctm-tab-dn-he-pe-im-se-bd-cr, var(--_ctm-dn-he-pe-im-se-bd-cr))
@@ -283,6 +300,14 @@ $resizeActive: '[data-cms-element-resizer="true"]';
283
300
  }
284
301
 
285
302
  &:last-of-type {
303
+ padding: var(
304
+ --_ctm-mob-dn-ct-pe-im-se-pg,
305
+ var(--_ctm-tab-dn-ct-pe-im-se-pg, var(--_ctm-dn-ct-pe-im-se-pg))
306
+ );
307
+ gap: var(
308
+ --_ctm-mob-dn-ct-pe-im-se-im-gp,
309
+ var(--_ctm-tab-dn-ct-pe-im-se-im-gp, var(--_ctm-dn-ct-pe-im-se-im-gp))
310
+ );
286
311
  background-color: var(
287
312
  --_ctm-mob-dn-ct-pe-im-se-bd-cr,
288
313
  var(--_ctm-tab-dn-ct-pe-im-se-bd-cr, var(--_ctm-dn-ct-pe-im-se-bd-cr))
@@ -1,186 +1,186 @@
1
- @use "./functions.scss" as *;
2
- @use "./repeater-embla-controls.scss" as *;
3
-
4
- // Category Groups product grid — display styles (Grid / Cards / Slider) ported
5
- // (light) from the Repeater, rebound to the productGridDesign.layout CSS-variable
6
- // paths (--_ctm-catego-dn-pt-gd-dn-lt-*). Items-per-row / min-column-width /
7
- // gaps are responsive (mob/tab/desktop var fallback). The container box
8
- // (padding + fill/border/radius/shadow) stays on .cg_product_grid in
9
- // category-groups-element.scss. @imported there within the categoryGroups scope.
10
- //
11
- // DOM: .cg_product_grid (root, gets grd|crds|sld + embla + data-control-type)
12
- // > .cg_product_grid_wrapper (gets embla__container in slider mode)
13
- // > .cg_product_card (grid / cards)
14
- // > .embla__slide > .cg_product_card (slider)
15
- // > slider arrows / dots (slider mode)
16
- .cg_product_grid {
17
- // Slider-control intermediate vars consumed by the embla-controls mixin.
18
- --_sf-ic-sz-nn: var(
19
- --_ctm-mob-catego-dn-pt-gd-dn-lt-aw-in-se,
20
- var(--_ctm-tab-catego-dn-pt-gd-dn-lt-aw-in-se, var(--_ctm-catego-dn-pt-gd-dn-lt-aw-in-se, 40px))
21
- );
22
- --_sf-ed-vl-sz: var(
23
- --_ctm-mob-catego-dn-pt-gd-dn-lt-dt-se,
24
- var(--_ctm-tab-catego-dn-pt-gd-dn-lt-dt-se, var(--_ctm-catego-dn-pt-gd-dn-lt-dt-se, 10px))
25
- );
26
-
27
- // ---- Grid mode: auto-fit columns by min column width ----
28
- &.grd {
29
- & > .cg_product_grid_wrapper {
30
- width: 100%;
31
- display: grid;
32
- grid-template-columns: repeat(
33
- auto-fit,
34
- minmax(
35
- var(
36
- --_ctm-mob-catego-dn-pt-gd-dn-lt-mn-cn-wh,
37
- var(
38
- --_ctm-tab-catego-dn-pt-gd-dn-lt-mn-cn-wh,
39
- var(--_ctm-catego-dn-pt-gd-dn-lt-mn-cn-wh, 200px)
40
- )
41
- ),
42
- 1fr
43
- )
44
- );
45
- grid-auto-rows: minmax(
46
- var(
47
- --_ctm-mob-catego-dn-pt-gd-dn-lt-mn-rw-ht,
48
- var(
49
- --_ctm-tab-catego-dn-pt-gd-dn-lt-mn-rw-ht,
50
- var(--_ctm-catego-dn-pt-gd-dn-lt-mn-rw-ht, auto)
51
- )
52
- ),
53
- auto
54
- );
55
- column-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-cn-gp, 24px)};
56
- row-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-rw-gp, 24px)};
57
- }
58
- }
59
-
60
- // ---- Cards mode: fixed items per row (flex calc) ----
61
- &.crds {
62
- & > .cg_product_grid_wrapper {
63
- display: flex;
64
- flex-wrap: wrap;
65
- width: 100%;
66
- column-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-cn-gp, 24px)};
67
- row-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-rw-gp, 24px)};
68
- & > .cg_product_card {
69
- --_col-count: var(
70
- --_ctm-mob-catego-dn-pt-gd-dn-lt-st-is-pr-rw,
71
- var(
72
- --_ctm-tab-catego-dn-pt-gd-dn-lt-st-is-pr-rw,
73
- var(--_ctm-catego-dn-pt-gd-dn-lt-st-is-pr-rw, 3)
74
- )
75
- );
76
- --_col-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-cn-gp, 0px)};
77
- width: calc(
78
- (100% / var(--_col-count)) -
79
- (((var(--_col-count) - 1) * var(--_col-gap)) / (var(--_col-count)))
80
- );
81
- flex: 0 0
82
- calc(
83
- (100% / var(--_col-count)) -
84
- (((var(--_col-count) - 1) * var(--_col-gap)) / (var(--_col-count)))
85
- );
86
- }
87
- }
88
- }
89
-
90
- // ---- Slider mode (Embla) ----
91
- &.sld {
92
- position: relative;
93
- overflow: clip;
94
- --_sf-sl-ct-ic-dt-at-cl: var(
95
- --_ctm-mob-catego-dn-pt-gd-dn-lt-cl-ae-cr,
96
- var(--_ctm-tab-catego-dn-pt-gd-dn-lt-cl-ae-cr, var(--_ctm-catego-dn-pt-gd-dn-lt-cl-ae-cr))
97
- );
98
-
99
- @for $i from 1 through 3 {
100
- &:is([data-control-type="#{$i}"]) {
101
- @if ($i == 3) {
102
- overflow-y: visible;
103
- }
104
- @include CMSRepeaterEmblaControlStyles($i);
105
- }
106
- }
107
-
108
- // Template 3: place the arrows/dots ABOVE the product list (not over the
109
- // images). bottom:100% puts the control's bottom edge at the grid's top
110
- // edge; +8px adds a small gap. overflow-y:visible (set above) lets it
111
- // show above the grid. (Repeater gets this from a saved template.)
112
- &:is([data-control-type="3"]) {
113
- --_sf-rp-ct-t3-top-vl: auto;
114
- --_sf-rp-ct-t3-bottom-vl: calc(100% + 8px);
115
- --_sf-rp-ct-t3-right-vl: 0px;
116
- --_sf-rp-ct-t3-left-vl: auto;
117
- --_sf-rp-ct-t3-transform-vl: none;
118
-
119
- // Restyle template-3 pagination from the connected gray bar into
120
- // separated circular dots + a capsule active indicator.
121
- .pagination__v1 {
122
- gap: 6px;
123
- }
124
- .pagination__v1 > button.embla__dot {
125
- width: var(--_sf-ed-vl-sz, 10px);
126
- height: var(--_sf-ed-vl-sz, 10px);
127
- border-radius: 50%;
128
- background: #d6d6d6;
129
- }
130
- .pagination__v1 > button.embla__dot.embla__dot--selected {
131
- width: max(calc(var(--_sf-ed-vl-sz, 10px) * 2), 20px);
132
- border-radius: 999px;
133
- background: var(--_sf-sl-ct-ic-dt-at-cl, #7c3aed);
134
- }
135
- }
136
-
137
- // Pagination dots: never compress. With many pages the strip scrolls
138
- // horizontally (scrollbar hidden) instead of squishing the dots.
139
- .pagination__v1 {
140
- flex-wrap: nowrap;
141
- overflow-x: auto;
142
- overflow-y: hidden;
143
- scrollbar-width: none;
144
- &::-webkit-scrollbar {
145
- display: none;
146
- }
147
- & > button.embla__dot {
148
- flex-shrink: 0;
149
- }
150
- }
151
-
152
- & > .cg_product_grid_wrapper.embla__container {
153
- display: flex;
154
- width: 100%;
155
- min-height: 100px;
156
- gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-im-gp, 0px)};
157
- --_embla-slide-space: var(
158
- --_ctm-mob-catego-dn-pt-gd-dn-lt-im-gp,
159
- var(--_ctm-tab-catego-dn-pt-gd-dn-lt-im-gp, var(--_ctm-catego-dn-pt-gd-dn-lt-im-gp, 0px))
160
- );
161
- --_embla-col-count: var(
162
- --_ctm-mob-catego-dn-pt-gd-dn-lt-st-is-pr-se,
163
- var(
164
- --_ctm-tab-catego-dn-pt-gd-dn-lt-st-is-pr-se,
165
- var(--_ctm-catego-dn-pt-gd-dn-lt-st-is-pr-se, 3)
166
- )
167
- );
168
- & > .embla__slide {
169
- --_sf-cl-vl: calc(
170
- (100% / var(--_embla-col-count, 3)) -
171
- (
172
- ((var(--_embla-col-count, 3) - 1) * (var(--_embla-slide-space, 10px))) /
173
- (var(--_embla-col-count, 3))
174
- )
175
- );
176
- flex: 0 0 var(--_sf-cl-vl);
177
- width: var(--_sf-cl-vl);
178
- grid-template-rows: minmax(50px, auto);
179
- grid-template-columns: minmax(0px, 1fr);
180
- img {
181
- width: 100%;
182
- }
183
- }
184
- }
185
- }
186
- }
1
+ @use "./functions.scss" as *;
2
+ @use "./repeater-embla-controls.scss" as *;
3
+
4
+ // Category Groups product grid — display styles (Grid / Cards / Slider) ported
5
+ // (light) from the Repeater, rebound to the productGridDesign.layout CSS-variable
6
+ // paths (--_ctm-catego-dn-pt-gd-dn-lt-*). Items-per-row / min-column-width /
7
+ // gaps are responsive (mob/tab/desktop var fallback). The container box
8
+ // (padding + fill/border/radius/shadow) stays on .cg_product_grid in
9
+ // category-groups-element.scss. @imported there within the categoryGroups scope.
10
+ //
11
+ // DOM: .cg_product_grid (root, gets grd|crds|sld + embla + data-control-type)
12
+ // > .cg_product_grid_wrapper (gets embla__container in slider mode)
13
+ // > .cg_product_card (grid / cards)
14
+ // > .embla__slide > .cg_product_card (slider)
15
+ // > slider arrows / dots (slider mode)
16
+ .cg_product_grid {
17
+ // Slider-control intermediate vars consumed by the embla-controls mixin.
18
+ --_sf-ic-sz-nn: var(
19
+ --_ctm-mob-catego-dn-pt-gd-dn-lt-aw-in-se,
20
+ var(--_ctm-tab-catego-dn-pt-gd-dn-lt-aw-in-se, var(--_ctm-catego-dn-pt-gd-dn-lt-aw-in-se, 40px))
21
+ );
22
+ --_sf-ed-vl-sz: var(
23
+ --_ctm-mob-catego-dn-pt-gd-dn-lt-dt-se,
24
+ var(--_ctm-tab-catego-dn-pt-gd-dn-lt-dt-se, var(--_ctm-catego-dn-pt-gd-dn-lt-dt-se, 10px))
25
+ );
26
+
27
+ // ---- Grid mode: auto-fit columns by min column width ----
28
+ &.grd {
29
+ & > .cg_product_grid_wrapper {
30
+ width: 100%;
31
+ display: grid;
32
+ grid-template-columns: repeat(
33
+ auto-fit,
34
+ minmax(
35
+ var(
36
+ --_ctm-mob-catego-dn-pt-gd-dn-lt-mn-cn-wh,
37
+ var(
38
+ --_ctm-tab-catego-dn-pt-gd-dn-lt-mn-cn-wh,
39
+ var(--_ctm-catego-dn-pt-gd-dn-lt-mn-cn-wh, 200px)
40
+ )
41
+ ),
42
+ 1fr
43
+ )
44
+ );
45
+ grid-auto-rows: minmax(
46
+ var(
47
+ --_ctm-mob-catego-dn-pt-gd-dn-lt-mn-rw-ht,
48
+ var(
49
+ --_ctm-tab-catego-dn-pt-gd-dn-lt-mn-rw-ht,
50
+ var(--_ctm-catego-dn-pt-gd-dn-lt-mn-rw-ht, auto)
51
+ )
52
+ ),
53
+ auto
54
+ );
55
+ column-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-cn-gp, 24px)};
56
+ row-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-rw-gp, 24px)};
57
+ }
58
+ }
59
+
60
+ // ---- Cards mode: fixed items per row (flex calc) ----
61
+ &.crds {
62
+ & > .cg_product_grid_wrapper {
63
+ display: flex;
64
+ flex-wrap: wrap;
65
+ width: 100%;
66
+ column-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-cn-gp, 24px)};
67
+ row-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-rw-gp, 24px)};
68
+ & > .cg_product_card {
69
+ --_col-count: var(
70
+ --_ctm-mob-catego-dn-pt-gd-dn-lt-st-is-pr-rw,
71
+ var(
72
+ --_ctm-tab-catego-dn-pt-gd-dn-lt-st-is-pr-rw,
73
+ var(--_ctm-catego-dn-pt-gd-dn-lt-st-is-pr-rw, 3)
74
+ )
75
+ );
76
+ --_col-gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-cn-gp, 0px)};
77
+ width: calc(
78
+ (100% / var(--_col-count)) -
79
+ (((var(--_col-count) - 1) * var(--_col-gap)) / (var(--_col-count)))
80
+ );
81
+ flex: 0 0
82
+ calc(
83
+ (100% / var(--_col-count)) -
84
+ (((var(--_col-count) - 1) * var(--_col-gap)) / (var(--_col-count)))
85
+ );
86
+ }
87
+ }
88
+ }
89
+
90
+ // ---- Slider mode (Embla) ----
91
+ &.sld {
92
+ position: relative;
93
+ overflow: clip;
94
+ --_sf-sl-ct-ic-dt-at-cl: var(
95
+ --_ctm-mob-catego-dn-pt-gd-dn-lt-cl-ae-cr,
96
+ var(--_ctm-tab-catego-dn-pt-gd-dn-lt-cl-ae-cr, var(--_ctm-catego-dn-pt-gd-dn-lt-cl-ae-cr))
97
+ );
98
+
99
+ @for $i from 1 through 3 {
100
+ &:is([data-control-type="#{$i}"]) {
101
+ @if ($i == 3) {
102
+ overflow-y: visible;
103
+ }
104
+ @include CMSRepeaterEmblaControlStyles($i);
105
+ }
106
+ }
107
+
108
+ // Template 3: place the arrows/dots ABOVE the product list (not over the
109
+ // images). bottom:100% puts the control's bottom edge at the grid's top
110
+ // edge; +8px adds a small gap. overflow-y:visible (set above) lets it
111
+ // show above the grid. (Repeater gets this from a saved template.)
112
+ &:is([data-control-type="3"]) {
113
+ --_sf-rp-ct-t3-top-vl: auto;
114
+ --_sf-rp-ct-t3-bottom-vl: calc(100% + 8px);
115
+ --_sf-rp-ct-t3-right-vl: 0px;
116
+ --_sf-rp-ct-t3-left-vl: auto;
117
+ --_sf-rp-ct-t3-transform-vl: none;
118
+
119
+ // Restyle template-3 pagination from the connected gray bar into
120
+ // separated circular dots + a capsule active indicator.
121
+ .pagination__v1 {
122
+ gap: 6px;
123
+ }
124
+ .pagination__v1 > button.embla__dot {
125
+ width: var(--_sf-ed-vl-sz, 10px);
126
+ height: var(--_sf-ed-vl-sz, 10px);
127
+ border-radius: 50%;
128
+ background: #d6d6d6;
129
+ }
130
+ .pagination__v1 > button.embla__dot.embla__dot--selected {
131
+ width: max(calc(var(--_sf-ed-vl-sz, 10px) * 2), 20px);
132
+ border-radius: 999px;
133
+ background: var(--_sf-sl-ct-ic-dt-at-cl, #7c3aed);
134
+ }
135
+ }
136
+
137
+ // Pagination dots: never compress. With many pages the strip scrolls
138
+ // horizontally (scrollbar hidden) instead of squishing the dots.
139
+ .pagination__v1 {
140
+ flex-wrap: nowrap;
141
+ overflow-x: auto;
142
+ overflow-y: hidden;
143
+ scrollbar-width: none;
144
+ &::-webkit-scrollbar {
145
+ display: none;
146
+ }
147
+ & > button.embla__dot {
148
+ flex-shrink: 0;
149
+ }
150
+ }
151
+
152
+ & > .cg_product_grid_wrapper.embla__container {
153
+ display: flex;
154
+ width: 100%;
155
+ min-height: 100px;
156
+ gap: #{prepareMediaVariable(--_ctm-catego-dn-pt-gd-dn-lt-im-gp, 0px)};
157
+ --_embla-slide-space: var(
158
+ --_ctm-mob-catego-dn-pt-gd-dn-lt-im-gp,
159
+ var(--_ctm-tab-catego-dn-pt-gd-dn-lt-im-gp, var(--_ctm-catego-dn-pt-gd-dn-lt-im-gp, 0px))
160
+ );
161
+ --_embla-col-count: var(
162
+ --_ctm-mob-catego-dn-pt-gd-dn-lt-st-is-pr-se,
163
+ var(
164
+ --_ctm-tab-catego-dn-pt-gd-dn-lt-st-is-pr-se,
165
+ var(--_ctm-catego-dn-pt-gd-dn-lt-st-is-pr-se, 3)
166
+ )
167
+ );
168
+ & > .embla__slide {
169
+ --_sf-cl-vl: calc(
170
+ (100% / var(--_embla-col-count, 3)) -
171
+ (
172
+ ((var(--_embla-col-count, 3) - 1) * (var(--_embla-slide-space, 10px))) /
173
+ (var(--_embla-col-count, 3))
174
+ )
175
+ );
176
+ flex: 0 0 var(--_sf-cl-vl);
177
+ width: var(--_sf-cl-vl);
178
+ grid-template-rows: minmax(50px, auto);
179
+ grid-template-columns: minmax(0px, 1fr);
180
+ img {
181
+ width: 100%;
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
package/dist/line.scss CHANGED
@@ -1,257 +1,166 @@
1
- [data-div-type="element"][data-element-type="line"] {
2
- // width: 100%;
3
- width: var(
4
- --_sf-el-wh-st-mx,
5
- calc(
6
- 1% *
7
- var(
8
- --_ctm-mob-ele-nw-wh-vl,
9
- var(--_ctm-tab-ele-nw-wh-vl, var(--_ctm-ele-nw-wh-vl, var(--_sf-nw-wh)))
10
- )
11
- )
12
- );
13
- height: var(--_ctm-lt-ht);
14
-
15
- margin: var(--_ctm-mob-lt-mn, var(--_ctm-tab-lt-mn, var(--_ctm-lt-mn)));
16
-
17
- aspect-ratio: 1 / var(--_sf-aspect-ratio);
18
-
19
- .wrapper {
20
- width: 100%;
21
- // height: 100%;
22
- height: var(--_ctm-lt-ht);
23
- }
24
-
25
- .line__container {
26
- position: relative;
27
- width: 100%;
28
- height: 100%;
29
- display: flex;
30
- align-items: center;
31
- justify-content: center;
32
-
33
- padding: var(--_ctm-mob-lt-pg, var(--_ctm-tab-lt-pg, var(--_ctm-lt-pg)));
34
- background-color: var(
35
- --_ctm-mob-dn-le-wt-bd-cr,
36
- var(--_ctm-tab-dn-le-wt-bd-cr, var(--_ctm-dn-le-wt-bd-cr))
37
- );
38
- border-radius: var(
39
- --_ctm-mob-dn-le-wt-br-rs,
40
- var(--_ctm-tab-dn-le-wt-br-rs, var(--_ctm-dn-le-wt-br-rs))
41
- );
42
-
43
- .line__core {
44
- display: block;
45
- background-color: transparent;
46
- border-top-style: solid;
47
- }
48
- }
49
-
50
- &[data-widget-border="true"] {
51
- .line__container {
52
- border-color: var(
53
- --_ctm-mob-dn-le-wt-br-cr,
54
- var(--_ctm-tab-dn-le-wt-br-cr, var(--_ctm-dn-le-wt-br-cr))
55
- );
56
- border-style: var(
57
- --_ctm-mob-dn-le-wt-br-se,
58
- var(--_ctm-tab-dn-le-wt-br-se, var(--_ctm-dn-le-wt-br-se))
59
- );
60
- border-width: var(
61
- --_ctm-mob-dn-le-wt-br-wh,
62
- var(--_ctm-tab-dn-le-wt-br-wh, var(--_ctm-dn-le-wt-br-wh))
63
- );
64
- }
65
- }
66
-
67
- &[data-widget-shadow="true"] {
68
- .line__container {
69
- box-shadow: var(
70
- --_show-shadow,
71
- var(--_ctm-mob-dn-le-wt-sw-ae, var(--_ctm-tab-dn-le-wt-sw-ae, var(--_ctm-dn-le-wt-sw-ae)))
72
- var(--_ctm-mob-dn-le-wt-sw-br, var(--_ctm-tab-dn-le-wt-sw-br, var(--_ctm-dn-le-wt-sw-br)))
73
- var(--_ctm-mob-dn-le-wt-sw-sd, var(--_ctm-tab-dn-le-wt-sw-sd, var(--_ctm-dn-le-wt-sw-sd)))
74
- var(--_ctm-mob-dn-le-wt-sw-cr, var(--_ctm-tab-dn-le-wt-sw-cr, var(--_ctm-dn-le-wt-sw-cr)))
75
- );
76
- }
77
- }
78
-
79
- // ─── Horizontal Line ─────────────────────
80
- &[data-line-direction="horizontal"] {
81
- .line__core {
82
- width: 100%;
83
- height: 0;
84
- border-width: var(--_ctm-lt-le-ts);
85
- border-color: var(--_ctm-dn-le-cr-bd-cr);
86
- // border-top: var(--_ctm-lt-le-ts) solid var(--_ctm-dn-le-cr-ud);
87
- }
88
-
89
- &[data-line-style="solid"] .line__core {
90
- border-top-style: solid;
91
- border-width: var(--_ctm-lt-le-ts);
92
- border-color: var(--_ctm-dn-le-cr-bd-cr);
93
- }
94
-
95
- &[data-line-style="dotted"] .line__core {
96
- border-top-style: dotted;
97
- border-width: var(--_ctm-lt-le-ts);
98
- border-color: var(--_ctm-dn-le-cr-bd-cr);
99
- }
100
- &[data-line-style="dashed"] .line__core {
101
- border-top-style: dashed;
102
- border-width: var(--_ctm-lt-le-ts);
103
- border-color: var(--_ctm-dn-le-cr-bd-cr);
104
- }
105
- &[data-line-style="double"] .line__core {
106
- border-top-style: double;
107
- border-width: var(--_ctm-lt-le-ts);
108
- border-color: var(--_ctm-dn-le-cr-bd-cr);
109
- }
110
-
111
- &[data-line-style="groove"] .line__core {
112
- border-top-style: groove;
113
- border-width: var(--_ctm-lt-le-ts);
114
- border-color: var(--_ctm-dn-le-cr-bd-cr);
115
- }
116
-
117
- &[data-line-style="ridge"] .line__core {
118
- border-top-style: ridge;
119
- border-width: var(--_ctm-lt-le-ts);
120
- border-color: var(--_ctm-dn-le-cr-bd-cr);
121
- }
122
-
123
- &[data-line-style="inset"] .line__core {
124
- border-top-style: inset;
125
- border-width: var(--_ctm-lt-le-ts);
126
- border-color: var(--_ctm-dn-le-cr-bd-cr);
127
- }
128
-
129
- &[data-line-style="outset"] .line__core {
130
- border-top-style: outset;
131
- border-width: var(--_ctm-lt-le-ts);
132
- border-color: var(--_ctm-dn-le-cr-bd-cr);
133
- }
134
-
135
- &[data-line-style="none"] .line__core {
136
- border-top-style: none;
137
- }
138
-
139
- &[data-line-style="hidden"] .line__core {
140
- border-top-style: hidden;
141
- }
142
- &[data-show-line-end-points="true"] {
143
- .line__container::before,
144
- .line__container::after {
145
- content: "";
146
- position: absolute;
147
- width: 8px;
148
- height: 8px;
149
- background-color: var(--_ctm-dn-le-cr-ud);
150
- top: 50%;
151
- transform: translateY(-50%);
152
- border-radius: 50%;
153
- }
154
-
155
- .line__container::before {
156
- left: 0;
157
- }
158
-
159
- .line__container::after {
160
- right: 0;
161
- }
162
-
163
- &[data-line-end-points="square"] .line__container::before,
164
- &[data-line-end-points="square"] .line__container::after {
165
- border-radius: 0;
166
- }
167
- }
168
- }
169
-
170
- // ─── Vertical Line ───────────────────────
171
- &[data-line-direction="vertical"] {
172
- .line__core {
173
- width: 0;
174
- height: 100%;
175
- border-width: var(--_ctm-lt-le-ts);
176
- border-color: var(--_ctm-dn-le-cr-bd-cr);
177
- // border-left: var(--_ctm-lt-le-ts) solid var(--_ctm-dn-le-cr-ud);
178
- }
179
-
180
- &[data-line-style="solid"] .line__core {
181
- border-left-style: solid;
182
- border-width: var(--_ctm-lt-le-ts);
183
- border-color: var(--_ctm-dn-le-cr-bd-cr);
184
- }
185
-
186
- &[data-line-style="dotted"] .line__core {
187
- border-left-style: dotted;
188
- border-width: var(--_ctm-lt-le-ts);
189
- border-color: var(--_ctm-dn-le-cr-bd-cr);
190
- }
191
- &[data-line-style="dashed"] .line__core {
192
- border-left-style: dashed;
193
- border-width: var(--_ctm-lt-le-ts);
194
- border-color: var(--_ctm-dn-le-cr-bd-cr);
195
- }
196
- &[data-line-style="double"] .line__core {
197
- border-left-style: double;
198
- border-width: var(--_ctm-lt-le-ts);
199
- border-color: var(--_ctm-dn-le-cr-bd-cr);
200
- }
201
-
202
- &[data-line-style="groove"] .line__core {
203
- border-left-style: groove;
204
- border-width: var(--_ctm-lt-le-ts);
205
- border-color: var(--_ctm-dn-le-cr-bd-cr);
206
- }
207
-
208
- &[data-line-style="ridge"] .line__core {
209
- border-left-style: ridge;
210
- border-width: var(--_ctm-lt-le-ts);
211
- border-color: var(--_ctm-dn-le-cr-bd-cr);
212
- }
213
-
214
- &[data-line-style="inset"] .line__core {
215
- border-left-style: inset;
216
- border-width: var(--_ctm-lt-le-ts);
217
- border-color: var(--_ctm-dn-le-cr-bd-cr);
218
- }
219
-
220
- &[data-line-style="outset"] .line__core {
221
- border-left-style: outset;
222
- border-width: var(--_ctm-lt-le-ts);
223
- border-color: var(--_ctm-dn-le-cr-bd-cr);
224
- }
225
-
226
- &[data-line-style="none"] .line__core {
227
- border-left-style: none;
228
- }
229
-
230
- &[data-show-line-end-points="true"] {
231
- .line__container::before,
232
- .line__container::after {
233
- content: "";
234
- position: absolute;
235
- width: 8px;
236
- height: 8px;
237
- background-color: var(--_ctm-dn-le-cr-ud);
238
- left: 50%;
239
- transform: translateX(-50%);
240
- border-radius: 50%; // Default is circle
241
- }
242
-
243
- .line__container::before {
244
- top: 0;
245
- }
246
-
247
- .line__container::after {
248
- bottom: 0;
249
- }
250
-
251
- &[data-line-end-points="square"] .line__container::before,
252
- &[data-line-end-points="square"] .line__container::after {
253
- border-radius: 0;
254
- }
255
- }
256
- }
257
- }
1
+ [data-div-type="element"][data-element-type="line"] {
2
+ // width: 100%;
3
+ width: var(
4
+ --_sf-el-wh-st-mx,
5
+ calc(
6
+ 1% *
7
+ var(
8
+ --_ctm-mob-ele-nw-wh-vl,
9
+ var(--_ctm-tab-ele-nw-wh-vl, var(--_ctm-ele-nw-wh-vl, var(--_sf-nw-wh)))
10
+ )
11
+ )
12
+ );
13
+ height: var(--_ctm-lt-ht);
14
+
15
+ margin: var(--_ctm-mob-lt-mn, var(--_ctm-tab-lt-mn, var(--_ctm-lt-mn)));
16
+
17
+ aspect-ratio: 1 / var(--_sf-aspect-ratio);
18
+
19
+ .wrapper {
20
+ width: 100%;
21
+ // height: 100%;
22
+ height: var(--_ctm-lt-ht);
23
+ }
24
+
25
+ .line__container {
26
+ position: relative;
27
+ width: 100%;
28
+ height: 100%;
29
+ display: flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+
33
+ padding: var(--_ctm-mob-lt-pg, var(--_ctm-tab-lt-pg, var(--_ctm-lt-pg)));
34
+ background-color: var(
35
+ --_ctm-mob-dn-le-wt-bd-cr,
36
+ var(--_ctm-tab-dn-le-wt-bd-cr, var(--_ctm-dn-le-wt-bd-cr))
37
+ );
38
+ border-radius: var(
39
+ --_ctm-mob-dn-le-wt-br-rs,
40
+ var(--_ctm-tab-dn-le-wt-br-rs, var(--_ctm-dn-le-wt-br-rs))
41
+ );
42
+
43
+ .line__core {
44
+ display: block;
45
+ background-color: transparent;
46
+ border-top-style: solid;
47
+ }
48
+ }
49
+
50
+ &[data-widget-border="true"] {
51
+ .line__container {
52
+ border-color: var(
53
+ --_ctm-mob-dn-le-wt-br-cr,
54
+ var(--_ctm-tab-dn-le-wt-br-cr, var(--_ctm-dn-le-wt-br-cr))
55
+ );
56
+ border-style: var(
57
+ --_ctm-mob-dn-le-wt-br-se,
58
+ var(--_ctm-tab-dn-le-wt-br-se, var(--_ctm-dn-le-wt-br-se))
59
+ );
60
+ border-width: var(
61
+ --_ctm-mob-dn-le-wt-br-wh,
62
+ var(--_ctm-tab-dn-le-wt-br-wh, var(--_ctm-dn-le-wt-br-wh))
63
+ );
64
+ }
65
+ }
66
+
67
+ &[data-widget-shadow="true"] {
68
+ .line__container {
69
+ box-shadow: var(
70
+ --_show-shadow,
71
+ var(--_ctm-mob-dn-le-wt-sw-ae, var(--_ctm-tab-dn-le-wt-sw-ae, var(--_ctm-dn-le-wt-sw-ae)))
72
+ var(--_ctm-mob-dn-le-wt-sw-br, var(--_ctm-tab-dn-le-wt-sw-br, var(--_ctm-dn-le-wt-sw-br)))
73
+ var(--_ctm-mob-dn-le-wt-sw-sd, var(--_ctm-tab-dn-le-wt-sw-sd, var(--_ctm-dn-le-wt-sw-sd)))
74
+ var(--_ctm-mob-dn-le-wt-sw-cr, var(--_ctm-tab-dn-le-wt-sw-cr, var(--_ctm-dn-le-wt-sw-cr)))
75
+ );
76
+ }
77
+ }
78
+
79
+ // ─── Horizontal Line ─────────────────────
80
+ &[data-line-direction="horizontal"] {
81
+ .line__core {
82
+ width: 100%;
83
+ height: 0;
84
+ border-top: var(--_ctm-lt-le-ts) solid var(--_ctm-dn-le-cr-ud);
85
+ }
86
+
87
+ &[data-line-style="solid"] .line__core {
88
+ border-top-style: solid;
89
+ }
90
+
91
+ &[data-line-style="dotted"] .line__core {
92
+ border-top-style: dotted;
93
+ }
94
+
95
+ &[data-show-line-end-points="true"] {
96
+ .line__container::before,
97
+ .line__container::after {
98
+ content: "";
99
+ position: absolute;
100
+ width: 8px;
101
+ height: 8px;
102
+ background-color: var(--_ctm-dn-le-cr-ud);
103
+ top: 50%;
104
+ transform: translateY(-50%);
105
+ border-radius: 50%;
106
+ }
107
+
108
+ .line__container::before {
109
+ left: 0;
110
+ }
111
+
112
+ .line__container::after {
113
+ right: 0;
114
+ }
115
+
116
+ &[data-line-end-points="square"] .line__container::before,
117
+ &[data-line-end-points="square"] .line__container::after {
118
+ border-radius: 0;
119
+ }
120
+ }
121
+ }
122
+
123
+ // ─── Vertical Line ───────────────────────
124
+ &[data-line-direction="vertical"] {
125
+ .line__core {
126
+ width: 0;
127
+ height: 100%;
128
+ border-left: var(--_ctm-lt-le-ts) solid var(--_ctm-dn-le-cr-ud);
129
+ }
130
+
131
+ &[data-line-style="solid"] .line__core {
132
+ border-left-style: solid;
133
+ }
134
+
135
+ &[data-line-style="dotted"] .line__core {
136
+ border-left-style: dotted;
137
+ }
138
+
139
+ &[data-show-line-end-points="true"] {
140
+ .line__container::before,
141
+ .line__container::after {
142
+ content: "";
143
+ position: absolute;
144
+ width: 8px;
145
+ height: 8px;
146
+ background-color: var(--_ctm-dn-le-cr-ud);
147
+ left: 50%;
148
+ transform: translateX(-50%);
149
+ border-radius: 50%; // Default is circle
150
+ }
151
+
152
+ .line__container::before {
153
+ top: 0;
154
+ }
155
+
156
+ .line__container::after {
157
+ bottom: 0;
158
+ }
159
+
160
+ &[data-line-end-points="square"] .line__container::before,
161
+ &[data-line-end-points="square"] .line__container::after {
162
+ border-radius: 0;
163
+ }
164
+ }
165
+ }
166
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sc-360-v2/storefront-cms-library",
3
- "version": "0.5.24",
3
+ "version": "0.5.25",
4
4
  "main": "/dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "exports": {