easyorders 0.1.8 → 0.1.9

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.
@@ -0,0 +1,284 @@
1
+ <section
2
+ class="shop-the-look shop-the-look--{{ section_data.surface | default: 'cream' }}"
3
+ style="--stl-accent: {{ section_data.accent_color | default: '#C9A962' }};"
4
+ >
5
+ <header class="shop-the-look__head">
6
+ {% if section_data.eyebrow != blank %}
7
+ <p class="shop-the-look__eyebrow">{{ section_data.eyebrow }}</p>
8
+ {% endif %}
9
+ {% if section_data.title != blank %}
10
+ <h2 class="shop-the-look__title">{{ section_data.title }}</h2>
11
+ {% endif %}
12
+ {% if section_data.subtitle != blank %}
13
+ <p class="shop-the-look__subtitle">{{ section_data.subtitle }}</p>
14
+ {% endif %}
15
+ </header>
16
+
17
+ <div class="shop-the-look__layout">
18
+ <a class="shop-the-look__hero" href="{{ section_data.look_url | default: '/products' }}">
19
+ <div class="shop-the-look__hero-visual">
20
+ {% if section_data.look_image != blank %}
21
+ <img
22
+ class="shop-the-look__hero-img"
23
+ src="{{ section_data.look_image }}"
24
+ alt="{{ section_data.look_title | default: 'Look' }}"
25
+ loading="lazy"
26
+ width="900"
27
+ height="1120"
28
+ />
29
+ {% else %}
30
+ <div class="shop-the-look__hero-placeholder" aria-hidden="true"></div>
31
+ {% endif %}
32
+ <div class="shop-the-look__hero-shade" aria-hidden="true"></div>
33
+ </div>
34
+ <div class="shop-the-look__hero-copy">
35
+ {% if section_data.look_title != blank %}
36
+ <span class="shop-the-look__hero-title">{{ section_data.look_title }}</span>
37
+ {% endif %}
38
+ {% if section_data.look_caption != blank %}
39
+ <span class="shop-the-look__hero-caption">{{ section_data.look_caption }}</span>
40
+ {% endif %}
41
+ {% if section_data.look_cta_label != blank %}
42
+ <span class="shop-the-look__hero-cta">{{ section_data.look_cta_label }}</span>
43
+ {% endif %}
44
+ </div>
45
+ </a>
46
+
47
+ {% if section_data.picks and section_data.picks.size > 0 %}
48
+ <div class="shop-the-look__picks">
49
+ {% for pick in section_data.picks %}
50
+ <a class="shop-the-look__pick" href="{{ pick.url | default: '#' }}">
51
+ <div class="shop-the-look__pick-frame">
52
+ {% if pick.image != blank %}
53
+ <img
54
+ class="shop-the-look__pick-img"
55
+ src="{{ pick.image }}"
56
+ alt="{{ pick.title }}"
57
+ loading="lazy"
58
+ width="320"
59
+ height="400"
60
+ />
61
+ {% else %}
62
+ <div class="shop-the-look__pick-fallback" aria-hidden="true"></div>
63
+ {% endif %}
64
+ </div>
65
+ <div class="shop-the-look__pick-meta">
66
+ {% if pick.title != blank %}
67
+ <span class="shop-the-look__pick-title">{{ pick.title }}</span>
68
+ {% endif %}
69
+ {% if pick.price != blank %}
70
+ <span class="shop-the-look__pick-price">{{ pick.price }}</span>
71
+ {% endif %}
72
+ </div>
73
+ </a>
74
+ {% endfor %}
75
+ </div>
76
+ {% endif %}
77
+ </div>
78
+ </section>
79
+
80
+ <style>
81
+ .shop-the-look {
82
+ padding: clamp(2.5rem, 5vw, 4rem) 1.25rem;
83
+ }
84
+ .shop-the-look--cream {
85
+ background: #f3efe8;
86
+ color: #1c1a17;
87
+ }
88
+ .shop-the-look--charcoal {
89
+ background: #1e1c24;
90
+ color: #f4eee6;
91
+ }
92
+ .shop-the-look__head {
93
+ max-width: 40rem;
94
+ margin-bottom: clamp(1.75rem, 3vw, 2.5rem);
95
+ }
96
+ .shop-the-look__eyebrow {
97
+ margin: 0 0 0.4rem;
98
+ font-size: 0.7rem;
99
+ font-weight: 600;
100
+ letter-spacing: 0.28em;
101
+ text-transform: uppercase;
102
+ color: var(--stl-accent, #c9a962);
103
+ }
104
+ .shop-the-look__title {
105
+ margin: 0 0 0.5rem;
106
+ font-family: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
107
+ font-weight: 500;
108
+ font-size: clamp(1.75rem, 4vw, 2.35rem);
109
+ line-height: 1.15;
110
+ }
111
+ .shop-the-look__subtitle {
112
+ margin: 0;
113
+ font-size: 1rem;
114
+ line-height: 1.65;
115
+ opacity: 0.82;
116
+ }
117
+ .shop-the-look__layout {
118
+ max-width: 1160px;
119
+ margin: 0 auto;
120
+ display: grid;
121
+ gap: clamp(1.25rem, 3vw, 2rem);
122
+ align-items: stretch;
123
+ }
124
+ @media (min-width: 960px) {
125
+ .shop-the-look__layout {
126
+ grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
127
+ }
128
+ }
129
+ .shop-the-look__hero {
130
+ position: relative;
131
+ display: block;
132
+ border-radius: 8px;
133
+ overflow: hidden;
134
+ text-decoration: none;
135
+ color: inherit;
136
+ min-height: clamp(300px, 52vh, 540px);
137
+ box-shadow: 0 24px 60px rgba(0, 0, 0, 0.12);
138
+ transition: transform 0.25s ease, box-shadow 0.25s ease;
139
+ }
140
+ .shop-the-look--charcoal .shop-the-look__hero {
141
+ box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
142
+ }
143
+ .shop-the-look__hero:hover {
144
+ transform: translateY(-3px);
145
+ box-shadow: 0 32px 72px rgba(0, 0, 0, 0.18);
146
+ }
147
+ .shop-the-look__hero-visual {
148
+ position: absolute;
149
+ inset: 0;
150
+ }
151
+ .shop-the-look__hero-img {
152
+ width: 100%;
153
+ height: 100%;
154
+ object-fit: cover;
155
+ display: block;
156
+ }
157
+ .shop-the-look__hero-placeholder {
158
+ width: 100%;
159
+ height: 100%;
160
+ background: linear-gradient(135deg, #c4bbb0, #8a8278);
161
+ }
162
+ .shop-the-look--charcoal .shop-the-look__hero-placeholder {
163
+ background: linear-gradient(135deg, #3d3848, #1a1820);
164
+ }
165
+ .shop-the-look__hero-shade {
166
+ position: absolute;
167
+ inset: 0;
168
+ background: linear-gradient(to top, rgba(12, 10, 14, 0.88) 0%, transparent 55%);
169
+ pointer-events: none;
170
+ }
171
+ .shop-the-look__hero-copy {
172
+ position: relative;
173
+ z-index: 1;
174
+ padding: clamp(1.25rem, 3vw, 2rem);
175
+ display: flex;
176
+ flex-direction: column;
177
+ gap: 0.35rem;
178
+ align-items: flex-start;
179
+ justify-content: flex-end;
180
+ min-height: 100%;
181
+ color: #faf7f2;
182
+ }
183
+ .shop-the-look__hero-title {
184
+ font-family: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
185
+ font-size: clamp(1.35rem, 3vw, 1.85rem);
186
+ font-weight: 500;
187
+ }
188
+ .shop-the-look__hero-caption {
189
+ font-size: 0.92rem;
190
+ line-height: 1.5;
191
+ opacity: 0.88;
192
+ max-width: 26rem;
193
+ }
194
+ .shop-the-look__hero-cta {
195
+ margin-top: 0.5rem;
196
+ display: inline-flex;
197
+ padding: 0.55rem 1.2rem;
198
+ border-radius: 999px;
199
+ font-size: 0.68rem;
200
+ font-weight: 700;
201
+ letter-spacing: 0.14em;
202
+ text-transform: uppercase;
203
+ background: var(--stl-accent, #c9a962);
204
+ color: #141218;
205
+ }
206
+ .shop-the-look__picks {
207
+ display: flex;
208
+ flex-direction: column;
209
+ gap: 0.85rem;
210
+ }
211
+ @media (max-width: 959px) {
212
+ .shop-the-look__picks {
213
+ flex-flow: row nowrap;
214
+ overflow-x: auto;
215
+ padding-bottom: 0.35rem;
216
+ scroll-snap-type: x mandatory;
217
+ -webkit-overflow-scrolling: touch;
218
+ }
219
+ .shop-the-look__pick {
220
+ flex: 0 0 min(220px, 72vw);
221
+ scroll-snap-align: start;
222
+ }
223
+ }
224
+ .shop-the-look__pick {
225
+ display: flex;
226
+ gap: 0.85rem;
227
+ align-items: center;
228
+ text-decoration: none;
229
+ color: inherit;
230
+ padding: 0.65rem;
231
+ border-radius: 8px;
232
+ background: rgba(255, 255, 255, 0.55);
233
+ border: 1px solid rgba(28, 26, 23, 0.06);
234
+ transition: background 0.2s ease, transform 0.2s ease;
235
+ }
236
+ .shop-the-look--charcoal .shop-the-look__pick {
237
+ background: rgba(255, 255, 255, 0.05);
238
+ border-color: rgba(255, 255, 255, 0.08);
239
+ }
240
+ .shop-the-look__pick:hover {
241
+ background: rgba(255, 255, 255, 0.85);
242
+ transform: translateX(2px);
243
+ }
244
+ .shop-the-look--charcoal .shop-the-look__pick:hover {
245
+ background: rgba(255, 255, 255, 0.1);
246
+ }
247
+ .shop-the-look__pick-frame {
248
+ flex-shrink: 0;
249
+ width: 76px;
250
+ height: 96px;
251
+ border-radius: 4px;
252
+ overflow: hidden;
253
+ background: #ddd8d0;
254
+ }
255
+ .shop-the-look--charcoal .shop-the-look__pick-frame {
256
+ background: #2a2630;
257
+ }
258
+ .shop-the-look__pick-img,
259
+ .shop-the-look__pick-fallback {
260
+ width: 100%;
261
+ height: 100%;
262
+ object-fit: cover;
263
+ display: block;
264
+ }
265
+ .shop-the-look__pick-fallback {
266
+ background: linear-gradient(160deg, #b0a69a, #7d756c);
267
+ }
268
+ .shop-the-look__pick-meta {
269
+ display: flex;
270
+ flex-direction: column;
271
+ gap: 0.2rem;
272
+ min-width: 0;
273
+ }
274
+ .shop-the-look__pick-title {
275
+ font-size: 0.9rem;
276
+ font-weight: 600;
277
+ line-height: 1.35;
278
+ }
279
+ .shop-the-look__pick-price {
280
+ font-size: 0.82rem;
281
+ opacity: 0.75;
282
+ letter-spacing: 0.03em;
283
+ }
284
+ </style>
@@ -0,0 +1,47 @@
1
+ {
2
+ "icon": "https://api.iconify.design/lucide:shield-check.svg",
3
+ "label": "Trust promise strip",
4
+ "section_schema": [
5
+ {
6
+ "name": "style",
7
+ "type": "select",
8
+ "default": "soft",
9
+ "description": "Background treatment",
10
+ "options": [
11
+ { "label": "Soft neutral", "value": "soft" },
12
+ { "label": "High contrast", "value": "contrast" }
13
+ ]
14
+ },
15
+ {
16
+ "name": "accent_color",
17
+ "type": "color",
18
+ "default": "#C9A962",
19
+ "description": "Icon tint and highlights"
20
+ },
21
+ {
22
+ "name": "promises",
23
+ "type": "object_array",
24
+ "description": "Service promises",
25
+ "fields": [
26
+ {
27
+ "name": "icon",
28
+ "type": "string",
29
+ "default": "",
30
+ "description": "Optional small icon or logo URL"
31
+ },
32
+ {
33
+ "name": "title",
34
+ "type": "string",
35
+ "default": "Complimentary shipping",
36
+ "description": "Promise title"
37
+ },
38
+ {
39
+ "name": "text",
40
+ "type": "string",
41
+ "default": "On all orders over a threshold—tracked and insured.",
42
+ "description": "Short supporting copy"
43
+ }
44
+ ]
45
+ }
46
+ ]
47
+ }
@@ -0,0 +1,96 @@
1
+ <section
2
+ class="trust-promise trust-promise--{{ section_data.style | default: 'soft' }}"
3
+ style="--tp-accent: {{ section_data.accent_color | default: '#C9A962' }};"
4
+ >
5
+ {% if section_data.promises and section_data.promises.size > 0 %}
6
+ <div class="trust-promise__row">
7
+ {% for item in section_data.promises %}
8
+ <div class="trust-promise__item">
9
+ <div class="trust-promise__icon-wrap" aria-hidden="true">
10
+ {% if item.icon != blank %}
11
+ <img class="trust-promise__icon" src="{{ item.icon }}" alt="" width="36" height="36" loading="lazy" />
12
+ {% else %}
13
+ <span class="trust-promise__icon-fallback"></span>
14
+ {% endif %}
15
+ </div>
16
+ <div class="trust-promise__text">
17
+ {% if item.title != blank %}
18
+ <h3 class="trust-promise__title">{{ item.title }}</h3>
19
+ {% endif %}
20
+ {% if item.text != blank %}
21
+ <p class="trust-promise__desc">{{ item.text }}</p>
22
+ {% endif %}
23
+ </div>
24
+ </div>
25
+ {% endfor %}
26
+ </div>
27
+ {% endif %}
28
+ </section>
29
+
30
+ <style>
31
+ .trust-promise {
32
+ padding: 1.75rem 1.25rem;
33
+ border-block: 1px solid rgba(20, 18, 24, 0.06);
34
+ }
35
+ .trust-promise--soft {
36
+ background: #faf8f5;
37
+ color: #2a2622;
38
+ }
39
+ .trust-promise--contrast {
40
+ background: #141218;
41
+ color: #f4eee6;
42
+ border-color: rgba(255, 255, 255, 0.08);
43
+ }
44
+ .trust-promise__row {
45
+ max-width: 1100px;
46
+ margin: 0 auto;
47
+ display: grid;
48
+ gap: 1.5rem 2rem;
49
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
50
+ align-items: flex-start;
51
+ }
52
+ .trust-promise__item {
53
+ display: flex;
54
+ gap: 1rem;
55
+ align-items: flex-start;
56
+ }
57
+ .trust-promise__icon-wrap {
58
+ flex-shrink: 0;
59
+ width: 44px;
60
+ height: 44px;
61
+ border-radius: 50%;
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ background: color-mix(in srgb, var(--tp-accent, #c9a962) 16%, transparent);
66
+ border: 1px solid color-mix(in srgb, var(--tp-accent, #c9a962) 35%, transparent);
67
+ }
68
+ .trust-promise--contrast .trust-promise__icon-wrap {
69
+ background: rgba(255, 255, 255, 0.06);
70
+ border-color: rgba(255, 255, 255, 0.12);
71
+ }
72
+ .trust-promise__icon {
73
+ width: 22px;
74
+ height: 22px;
75
+ object-fit: contain;
76
+ }
77
+ .trust-promise__icon-fallback {
78
+ width: 10px;
79
+ height: 10px;
80
+ border-radius: 50%;
81
+ background: var(--tp-accent, #c9a962);
82
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--tp-accent, #c9a962) 35%, transparent);
83
+ }
84
+ .trust-promise__title {
85
+ margin: 0 0 0.35rem;
86
+ font-size: 0.95rem;
87
+ font-weight: 600;
88
+ letter-spacing: 0.02em;
89
+ }
90
+ .trust-promise__desc {
91
+ margin: 0;
92
+ font-size: 0.88rem;
93
+ line-height: 1.55;
94
+ opacity: 0.82;
95
+ }
96
+ </style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easyorders",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "CLI tool for creating and developing Easy Orders themes",
5
5
  "type": "module",
6
6
  "bin": {