@wix/agent-skills 1.8.0 → 1.10.0
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/package.json +1 -1
- package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +2 -1
- package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +14 -0
- package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +11 -6
- package/skills/wix-app/references/editor-react-component/REACT-PATTERNS.md +3 -17
- package/skills/wix-app/references/editor-react-component/SSR.md +119 -0
- package/skills/wix-design-system/SKILL.md +1 -1
- package/skills/wix-headless/references/BUILD-astro.md +5 -7
- package/skills/wix-headless/references/DESIGN_SYSTEM.md +6 -16
- package/skills/wix-headless/references/SETUP.md +1 -1
- package/skills/wix-headless/references/astro/bookings/COMPONENTS.md +41 -333
- package/skills/wix-headless/references/astro/bookings/SERVICES_PAGES.md +77 -428
- package/skills/wix-headless/references/astro/cms/FAQ_KNOWLEDGE_BASE.md +2 -2
- package/skills/wix-headless/references/astro/designer/INSTRUCTIONS.md +7 -10
- package/skills/wix-headless/references/astro/ecom/CART_WIRING.md +2 -2
- package/skills/wix-headless/references/astro/ecom/COMPONENTS_CSS.md +3 -3
- package/skills/wix-headless/references/astro/gift-cards/COMPONENTS.md +2 -2
- package/skills/wix-headless/references/astro/stores/BACK_IN_STOCK.md +7 -7
- package/skills/wix-headless/references/astro/stores/COMPONENTS_CSS.md +4 -4
- package/skills/wix-headless/references/astro/stores/PRODUCT_PAGES.md +2 -2
- package/skills/wix-headless/references/astro/templates/Footer.astro +4 -4
- package/skills/wix-headless/references/astro/templates/Navigation.astro +4 -4
- package/skills/wix-headless/references/astro/templates/bookings/AvailabilityCalendar.tsx +298 -142
- package/skills/wix-headless/references/astro/templates/bookings/BookingForm.tsx +104 -162
- package/skills/wix-headless/references/astro/templates/bookings/ServiceBookingFlow.tsx +35 -14
- package/skills/wix-headless/references/astro/templates/bookings/ServiceCard.astro +11 -2
- package/skills/wix-headless/references/astro/templates/bookings/booking-confirmation.astro +23 -85
- package/skills/wix-headless/references/astro/templates/bookings/bookingDriver.ts +245 -0
- package/skills/wix-headless/references/astro/templates/bookings/components-bookings.css +209 -198
- package/skills/wix-headless/references/astro/templates/bookings/services/[slug].astro +114 -19
- package/skills/wix-headless/references/astro/templates/bookings/services/index.astro +131 -15
- package/skills/wix-headless/references/astro/templates/ecom/CartView.tsx +3 -3
- package/skills/wix-headless/references/astro/templates/ecom/cart.astro +3 -3
- package/skills/wix-headless/references/astro/templates/ecom/components-ecom.css +17 -17
- package/skills/wix-headless/references/astro/templates/ecom/thank-you.astro +3 -3
- package/skills/wix-headless/references/astro/templates/gift-cards/_home-teaser-snippet.astro +4 -4
- package/skills/wix-headless/references/astro/templates/gift-cards/components-gift-cards.css +19 -18
- package/skills/wix-headless/references/astro/templates/gift-cards/gift-cards.astro +3 -3
- package/skills/wix-headless/references/astro/templates/global.css +17 -15
- package/skills/wix-headless/references/astro/templates/index.astro +4 -4
- package/skills/wix-headless/references/astro/templates/stores/components-stores.css +31 -31
- package/skills/wix-headless/references/astro/templates/stores/products/[slug].astro +4 -4
- package/skills/wix-headless/references/bookings/FLOW.md +246 -0
- package/skills/wix-headless/references/bookings/INSTRUCTIONS.md +65 -76
- package/skills/wix-headless/references/bookings/SERVICES_DATA.md +60 -0
- package/skills/wix-headless/references/custom/bookings/WIRING.md +169 -60
- package/skills/wix-headless/references/shared/DESIGN_MD.md +2 -3
- package/skills/wix-headless/references/shared/IMPLEMENTER.md +4 -4
- package/skills/wix-headless/references/shared/STYLING.md +15 -18
- package/skills/wix-headless/references/stores/INSTRUCTIONS.md +2 -2
- package/skills/wix-headless/references/verticals/bookings.md +9 -9
- package/skills/wix-headless/scripts/compose.mjs +4 -19
- package/skills/wix-headless/scripts/emit-design-tokens.mjs +0 -3
- package/skills/wix-manage/SKILL.md +12 -0
- package/skills/wix-manage/references/app-installation/install-wix-apps.md +3 -27
- package/skills/wix-manage/references/bookings/create-appointment-service.md +254 -0
- package/skills/wix-manage/references/bookings/create-booking-service-from-prompt.md +37 -0
- package/skills/wix-manage/references/bookings/create-class-service.md +233 -0
- package/skills/wix-manage/references/bookings/create-course-service.md +237 -0
- package/skills/wix-manage/references/cms/cms-data-items-crud.md +2 -1
- package/skills/wix-manage/references/cms/cms-schema-management.md +1 -1
- package/skills/wix-manage/references/stores/create-product-from-image.md +154 -2
- package/skills/wix-headless/references/astro/templates/bookings/ManageBooking.tsx +0 -84
- package/skills/wix-headless/references/astro/templates/bookings/api/confirm-booking.ts +0 -34
- package/skills/wix-headless/references/astro/templates/bookings/api/waitlist.ts +0 -74
- package/skills/wix-headless/references/astro/templates/bookings/manage-booking.astro +0 -76
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* Reuses tokens declared by the designer foundation: --color-cream,
|
|
9
9
|
* --color-cream-deep, --color-ink, --color-ink-soft, --color-muted,
|
|
10
10
|
* --color-rule, --color-paper, --color-bark/espresso/gold-deep,
|
|
11
|
-
* --
|
|
12
|
-
*
|
|
11
|
+
* --radius-sm, --font-body, --font-display. (Spacing uses Tailwind's numeric
|
|
12
|
+
* scale — gap-4, py-24 — not a design token.) If a token isn't in your design
|
|
13
|
+
* system, fall back to a
|
|
13
14
|
* sibling token; do NOT invent new ones.
|
|
14
15
|
*/
|
|
15
16
|
|
|
@@ -20,8 +21,8 @@
|
|
|
20
21
|
.gift-card-form {
|
|
21
22
|
display: flex;
|
|
22
23
|
flex-direction: column;
|
|
23
|
-
gap:
|
|
24
|
-
margin-top:
|
|
24
|
+
gap: 1.5rem;
|
|
25
|
+
margin-top: 1.5rem;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
.gift-card-fieldset {
|
|
@@ -33,14 +34,14 @@
|
|
|
33
34
|
.gift-card-amounts {
|
|
34
35
|
display: flex;
|
|
35
36
|
flex-wrap: wrap;
|
|
36
|
-
gap:
|
|
37
|
-
margin-top:
|
|
37
|
+
gap: 0.75rem;
|
|
38
|
+
margin-top: 0.75rem;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
.gift-card-grid {
|
|
41
42
|
display: grid;
|
|
42
43
|
grid-template-columns: 1fr 1fr;
|
|
43
|
-
gap:
|
|
44
|
+
gap: 1rem;
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
.gift-card-field {
|
|
@@ -101,20 +102,20 @@
|
|
|
101
102
|
.gift-card-page {
|
|
102
103
|
max-width: 80rem;
|
|
103
104
|
margin: 0 auto;
|
|
104
|
-
padding:
|
|
105
|
+
padding: 4rem 1.5rem 6rem;
|
|
105
106
|
}
|
|
106
107
|
|
|
107
108
|
.gift-card-grid-wrap {
|
|
108
109
|
display: grid;
|
|
109
110
|
grid-template-columns: 1fr;
|
|
110
|
-
gap:
|
|
111
|
+
gap: 3rem;
|
|
111
112
|
align-items: start;
|
|
112
113
|
}
|
|
113
114
|
|
|
114
115
|
@media (min-width: 768px) {
|
|
115
116
|
.gift-card-grid-wrap {
|
|
116
117
|
grid-template-columns: 1fr 1fr;
|
|
117
|
-
gap:
|
|
118
|
+
gap: 6rem;
|
|
118
119
|
}
|
|
119
120
|
}
|
|
120
121
|
|
|
@@ -139,7 +140,7 @@
|
|
|
139
140
|
}
|
|
140
141
|
|
|
141
142
|
.gift-card-body h1 {
|
|
142
|
-
margin:
|
|
143
|
+
margin: 1rem 0 1rem;
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
.gift-card-lede {
|
|
@@ -148,11 +149,11 @@
|
|
|
148
149
|
line-height: 1.7;
|
|
149
150
|
color: var(--color-ink-soft);
|
|
150
151
|
max-width: 48ch;
|
|
151
|
-
margin: 0 0
|
|
152
|
+
margin: 0 0 2rem;
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
.gift-card-fineprint {
|
|
155
|
-
margin-top:
|
|
156
|
+
margin-top: 1.5rem;
|
|
156
157
|
font-family: var(--font-body);
|
|
157
158
|
font-size: 0.8125rem;
|
|
158
159
|
line-height: 1.6;
|
|
@@ -165,14 +166,14 @@
|
|
|
165
166
|
/* -------------------------------------------------------------------------- */
|
|
166
167
|
|
|
167
168
|
.gift-card-teaser {
|
|
168
|
-
padding:
|
|
169
|
+
padding: 6rem 1.5rem;
|
|
169
170
|
background: var(--color-cream-deep, var(--color-paper, var(--color-cream)));
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
.gift-card-teaser-link {
|
|
173
174
|
display: grid;
|
|
174
175
|
grid-template-columns: 1fr;
|
|
175
|
-
gap:
|
|
176
|
+
gap: 3rem;
|
|
176
177
|
max-width: 80rem;
|
|
177
178
|
margin: 0 auto;
|
|
178
179
|
align-items: center;
|
|
@@ -183,7 +184,7 @@
|
|
|
183
184
|
@media (min-width: 768px) {
|
|
184
185
|
.gift-card-teaser-link {
|
|
185
186
|
grid-template-columns: 1fr 1fr;
|
|
186
|
-
gap:
|
|
187
|
+
gap: 6rem;
|
|
187
188
|
}
|
|
188
189
|
}
|
|
189
190
|
|
|
@@ -206,7 +207,7 @@
|
|
|
206
207
|
}
|
|
207
208
|
|
|
208
209
|
.gift-card-teaser-body h2 {
|
|
209
|
-
margin:
|
|
210
|
+
margin: 1rem 0 1rem;
|
|
210
211
|
}
|
|
211
212
|
|
|
212
213
|
.gift-card-teaser-lede {
|
|
@@ -215,5 +216,5 @@
|
|
|
215
216
|
line-height: 1.7;
|
|
216
217
|
color: var(--color-ink-soft);
|
|
217
218
|
max-width: 44ch;
|
|
218
|
-
margin: 0 0
|
|
219
|
+
margin: 0 0 1.5rem;
|
|
219
220
|
}
|
|
@@ -18,8 +18,8 @@ const heroImage = resolveWixImageUrl(product.image, 800, 800);
|
|
|
18
18
|
title={product.name}
|
|
19
19
|
description={product.description}
|
|
20
20
|
>
|
|
21
|
-
<section class="py-
|
|
22
|
-
<div class="max-w-wide mx-auto px-
|
|
21
|
+
<section class="py-16 md:py-24">
|
|
22
|
+
<div class="max-w-wide mx-auto px-8 grid grid-cols-1 md:grid-cols-2 gap-12 md:gap-24 items-center">
|
|
23
23
|
<div class="aspect-square bg-cream rounded-sm overflow-hidden">
|
|
24
24
|
{heroImage && (
|
|
25
25
|
<img
|
|
@@ -34,7 +34,7 @@ const heroImage = resolveWixImageUrl(product.image, 800, 800);
|
|
|
34
34
|
)}
|
|
35
35
|
</div>
|
|
36
36
|
|
|
37
|
-
<div class="flex flex-col gap-
|
|
37
|
+
<div class="flex flex-col gap-6">
|
|
38
38
|
<p class="eyebrow">A gift, considered</p>
|
|
39
39
|
<h1 class="font-display text-5xl leading-tight">{product.name}</h1>
|
|
40
40
|
<p class="text-ink-soft leading-relaxed">{product.description}</p>
|
|
@@ -10,10 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
@theme {
|
|
12
12
|
/* {{theme}} — Composer substitutes the full palette here from designTokens:
|
|
13
|
-
every --color-*, --font-*, --
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
every --color-*, --font-*, --container-*, and --radius-* line. The
|
|
14
|
+
required-token set (enforced by compose.mjs) MUST all be present, or
|
|
15
|
+
components render unstyled. Spacing is NOT a token here — it uses
|
|
16
|
+
Tailwind's built-in numeric scale (gap-4, py-24, …); never add a named
|
|
17
|
+
--spacing-* scale, since that namespace also powers the width utilities
|
|
18
|
+
(max-w-*/w-*) and would shadow them. */
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
/* Reading-width helper so prose pages center without guessing Tailwind sizes. */
|
|
@@ -25,7 +27,7 @@
|
|
|
25
27
|
/* Shared button primitive — declared with @utility so the variants below can
|
|
26
28
|
@apply it (a plain contract class is NOT @apply-able in Tailwind v4). */
|
|
27
29
|
@utility btn {
|
|
28
|
-
@apply inline-flex items-center justify-center px-
|
|
30
|
+
@apply inline-flex items-center justify-center px-6 py-4 rounded-md font-medium;
|
|
29
31
|
transition: background-color 200ms ease, color 200ms ease, border-color 200ms ease;
|
|
30
32
|
}
|
|
31
33
|
|
|
@@ -130,7 +132,7 @@
|
|
|
130
132
|
height: 1px;
|
|
131
133
|
background: var(--color-accent);
|
|
132
134
|
opacity: 0.6;
|
|
133
|
-
margin-block:
|
|
135
|
+
margin-block: 1.5rem;
|
|
134
136
|
}
|
|
135
137
|
|
|
136
138
|
/* ── Universal site chrome ────────────────────────────────────────────────── */
|
|
@@ -204,8 +206,8 @@ body[data-navigating="true"] .product-grid {
|
|
|
204
206
|
min-width: 12rem;
|
|
205
207
|
display: flex;
|
|
206
208
|
flex-direction: column;
|
|
207
|
-
gap:
|
|
208
|
-
padding:
|
|
209
|
+
gap: 0.25rem;
|
|
210
|
+
padding: 0.75rem;
|
|
209
211
|
background: var(--color-paper);
|
|
210
212
|
border: 1px solid var(--color-rule);
|
|
211
213
|
border-radius: var(--radius-md);
|
|
@@ -223,7 +225,7 @@ body[data-navigating="true"] .product-grid {
|
|
|
223
225
|
.site-nav-sublink {
|
|
224
226
|
font-size: 0.875rem;
|
|
225
227
|
color: var(--color-ink-soft, var(--color-mute));
|
|
226
|
-
padding-block:
|
|
228
|
+
padding-block: 0.25rem;
|
|
227
229
|
}
|
|
228
230
|
.site-nav-sublink:hover,
|
|
229
231
|
.site-nav-sublink[aria-current="page"] {
|
|
@@ -237,13 +239,13 @@ body[data-navigating="true"] .product-grid {
|
|
|
237
239
|
.category-rail-inner {
|
|
238
240
|
display: flex;
|
|
239
241
|
flex-wrap: wrap;
|
|
240
|
-
gap:
|
|
241
|
-
padding-block:
|
|
242
|
+
gap: 0.75rem;
|
|
243
|
+
padding-block: 1rem;
|
|
242
244
|
}
|
|
243
245
|
.category-pill {
|
|
244
246
|
display: inline-flex;
|
|
245
247
|
align-items: center;
|
|
246
|
-
padding:
|
|
248
|
+
padding: 0.25rem 1rem;
|
|
247
249
|
border: 1px solid var(--color-rule);
|
|
248
250
|
border-radius: var(--radius-sm);
|
|
249
251
|
font-size: 0.8125rem;
|
|
@@ -262,12 +264,12 @@ body[data-navigating="true"] .product-grid {
|
|
|
262
264
|
border-color: var(--color-ink);
|
|
263
265
|
}
|
|
264
266
|
.pagination {
|
|
265
|
-
margin-block:
|
|
267
|
+
margin-block: 2rem;
|
|
266
268
|
}
|
|
267
269
|
.pagination-inner {
|
|
268
270
|
display: flex;
|
|
269
271
|
justify-content: space-between;
|
|
270
|
-
gap:
|
|
272
|
+
gap: 1rem;
|
|
271
273
|
}
|
|
272
274
|
.pagination-link {
|
|
273
275
|
color: var(--color-ink);
|
|
@@ -282,5 +284,5 @@ body[data-navigating="true"] .product-grid {
|
|
|
282
284
|
.breadcrumbs {
|
|
283
285
|
font-size: 0.8125rem;
|
|
284
286
|
color: var(--color-mute);
|
|
285
|
-
margin-bottom:
|
|
287
|
+
margin-bottom: 0.75rem;
|
|
286
288
|
}
|
|
@@ -17,8 +17,8 @@ import Layout from '../layouts/Layout.astro';
|
|
|
17
17
|
---
|
|
18
18
|
<Layout>
|
|
19
19
|
<section class="relative">
|
|
20
|
-
<div class="max-w-6xl mx-auto px-
|
|
21
|
-
<div class="flex flex-col gap-
|
|
20
|
+
<div class="max-w-6xl mx-auto px-6 py-24 grid grid-cols-1 md:grid-cols-2 gap-16 items-center">
|
|
21
|
+
<div class="flex flex-col gap-6">
|
|
22
22
|
<h1 class="font-display text-4xl md:text-5xl leading-tight">{{shell.heroHeadline}}</h1>
|
|
23
23
|
<p class="text-lg text-mute max-w-prose">{{shell.heroSub}}</p>
|
|
24
24
|
</div>
|
|
@@ -34,7 +34,7 @@ import Layout from '../layouts/Layout.astro';
|
|
|
34
34
|
|
|
35
35
|
{{home-markers}}
|
|
36
36
|
|
|
37
|
-
<section class="max-w-6xl mx-auto px-
|
|
37
|
+
<section class="max-w-6xl mx-auto px-6 py-24 grid grid-cols-1 md:grid-cols-2 gap-16 items-center">
|
|
38
38
|
<div
|
|
39
39
|
class="about-image rounded-md order-last md:order-first"
|
|
40
40
|
data-decorative-slot="about"
|
|
@@ -42,7 +42,7 @@ import Layout from '../layouts/Layout.astro';
|
|
|
42
42
|
>
|
|
43
43
|
<!-- orchestrator injects <img src={decorativeImages.about} …> here -->
|
|
44
44
|
</div>
|
|
45
|
-
<div class="flex flex-col gap-
|
|
45
|
+
<div class="flex flex-col gap-4 max-w-prose">
|
|
46
46
|
<hr class="editorial-rule w-16 ml-0" />
|
|
47
47
|
<h2 class="font-display text-3xl leading-tight">The story behind {{brand.name}}</h2>
|
|
48
48
|
<p class="text-ink leading-relaxed">
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
.product-grid {
|
|
29
29
|
display: grid;
|
|
30
30
|
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
|
31
|
-
gap:
|
|
31
|
+
gap: 2rem;
|
|
32
32
|
transition: opacity 200ms ease;
|
|
33
33
|
}
|
|
34
34
|
body[data-navigating="true"] .product-grid {
|
|
@@ -40,8 +40,8 @@ body[data-navigating="true"] .product-grid {
|
|
|
40
40
|
position: relative;
|
|
41
41
|
display: flex;
|
|
42
42
|
flex-direction: column;
|
|
43
|
-
gap:
|
|
44
|
-
padding-bottom:
|
|
43
|
+
gap: 1rem;
|
|
44
|
+
padding-bottom: 1rem;
|
|
45
45
|
background: var(--color-paper, var(--color-cream));
|
|
46
46
|
border-radius: var(--radius-xl);
|
|
47
47
|
overflow: hidden;
|
|
@@ -59,7 +59,7 @@ body[data-navigating="true"] .product-grid {
|
|
|
59
59
|
|
|
60
60
|
.product-card-media {
|
|
61
61
|
position: relative;
|
|
62
|
-
margin:
|
|
62
|
+
margin: 1rem;
|
|
63
63
|
aspect-ratio: 4 / 5;
|
|
64
64
|
background: var(--color-paper-warm, var(--color-cream));
|
|
65
65
|
border-radius: var(--radius-md);
|
|
@@ -75,8 +75,8 @@ body[data-navigating="true"] .product-grid {
|
|
|
75
75
|
.product-card-body {
|
|
76
76
|
display: flex;
|
|
77
77
|
flex-direction: column;
|
|
78
|
-
gap:
|
|
79
|
-
padding-inline:
|
|
78
|
+
gap: 0.5rem;
|
|
79
|
+
padding-inline: 1rem;
|
|
80
80
|
}
|
|
81
81
|
.product-card-name {
|
|
82
82
|
margin: 0;
|
|
@@ -95,8 +95,8 @@ body[data-navigating="true"] .product-grid {
|
|
|
95
95
|
|
|
96
96
|
.product-card-ribbon {
|
|
97
97
|
position: absolute;
|
|
98
|
-
top:
|
|
99
|
-
left:
|
|
98
|
+
top: 1rem;
|
|
99
|
+
left: 1rem;
|
|
100
100
|
padding: 0.375rem 0.625rem;
|
|
101
101
|
background: var(--color-accent);
|
|
102
102
|
color: var(--color-ink);
|
|
@@ -110,8 +110,8 @@ body[data-navigating="true"] .product-grid {
|
|
|
110
110
|
}
|
|
111
111
|
.product-card-index {
|
|
112
112
|
position: absolute;
|
|
113
|
-
top:
|
|
114
|
-
right:
|
|
113
|
+
top: 1rem;
|
|
114
|
+
right: 1rem;
|
|
115
115
|
padding: 0.375rem 0.5rem;
|
|
116
116
|
background: rgba(255, 255, 255, 0.85);
|
|
117
117
|
color: var(--color-ink);
|
|
@@ -132,19 +132,19 @@ body[data-navigating="true"] .product-grid {
|
|
|
132
132
|
background: var(--color-paper-warm, var(--color-cream));
|
|
133
133
|
border: 1px solid var(--color-rule);
|
|
134
134
|
border-left: 2px solid var(--color-accent);
|
|
135
|
-
padding:
|
|
135
|
+
padding: 1.5rem;
|
|
136
136
|
border-radius: var(--radius-md);
|
|
137
137
|
display: flex;
|
|
138
138
|
flex-direction: column;
|
|
139
|
-
gap:
|
|
139
|
+
gap: 1rem;
|
|
140
140
|
}
|
|
141
141
|
.offer-callout-item {
|
|
142
142
|
display: flex;
|
|
143
143
|
flex-direction: column;
|
|
144
|
-
gap:
|
|
144
|
+
gap: 0.5rem;
|
|
145
145
|
}
|
|
146
146
|
.offer-callout-item + .offer-callout-item {
|
|
147
|
-
padding-top:
|
|
147
|
+
padding-top: 1rem;
|
|
148
148
|
border-top: 1px solid var(--color-rule);
|
|
149
149
|
}
|
|
150
150
|
.offer-callout-badge {
|
|
@@ -190,7 +190,7 @@ body[data-navigating="true"] .product-grid {
|
|
|
190
190
|
of this template used `@apply font-heading text-bark/70 bg-parchment …`,
|
|
191
191
|
which assumed a different token vocabulary than current designer output
|
|
192
192
|
(`paper`/`ink`/`font-display` …) and built-failed on every run that loaded
|
|
193
|
-
it. Direct `var(--color-paper)` / `
|
|
193
|
+
it. Direct `var(--color-paper)` / `0.75rem` calls work against
|
|
194
194
|
any designer-published token set as long as the core scales exist (they
|
|
195
195
|
always do). Use fallback chains (`var(--color-paper-warm, var(--color-cream))`)
|
|
196
196
|
when a token is sometimes-published.
|
|
@@ -200,8 +200,8 @@ body[data-navigating="true"] .product-grid {
|
|
|
200
200
|
.option-group {
|
|
201
201
|
display: flex;
|
|
202
202
|
flex-direction: column;
|
|
203
|
-
gap:
|
|
204
|
-
margin-bottom:
|
|
203
|
+
gap: 0.75rem;
|
|
204
|
+
margin-bottom: 1.5rem;
|
|
205
205
|
}
|
|
206
206
|
.option-label {
|
|
207
207
|
font-family: var(--font-display);
|
|
@@ -213,10 +213,10 @@ body[data-navigating="true"] .product-grid {
|
|
|
213
213
|
.option-choices {
|
|
214
214
|
display: flex;
|
|
215
215
|
flex-wrap: wrap;
|
|
216
|
-
gap:
|
|
216
|
+
gap: 0.75rem;
|
|
217
217
|
}
|
|
218
218
|
.option-pill {
|
|
219
|
-
padding:
|
|
219
|
+
padding: 0.75rem 1rem;
|
|
220
220
|
border: 1px solid var(--color-ink);
|
|
221
221
|
background: transparent;
|
|
222
222
|
color: var(--color-ink);
|
|
@@ -255,14 +255,14 @@ body[data-navigating="true"] .product-grid {
|
|
|
255
255
|
cursor: not-allowed;
|
|
256
256
|
}
|
|
257
257
|
.quantity-value {
|
|
258
|
-
padding:
|
|
258
|
+
padding: 0.75rem 1rem;
|
|
259
259
|
font-variant-numeric: tabular-nums;
|
|
260
260
|
}
|
|
261
261
|
|
|
262
262
|
/* --- Modifier free-text input (ProductPurchase.tsx, FREE_TEXT render type) --- */
|
|
263
263
|
.modifier-text {
|
|
264
264
|
width: 100%;
|
|
265
|
-
padding:
|
|
265
|
+
padding: 0.75rem;
|
|
266
266
|
font-family: var(--font-body);
|
|
267
267
|
font-size: 0.875rem;
|
|
268
268
|
border: 1px solid var(--color-rule);
|
|
@@ -290,9 +290,9 @@ body[data-navigating="true"] .product-grid {
|
|
|
290
290
|
.back-in-stock-form {
|
|
291
291
|
display: flex;
|
|
292
292
|
flex-direction: column;
|
|
293
|
-
gap:
|
|
294
|
-
margin-top:
|
|
295
|
-
padding:
|
|
293
|
+
gap: 1rem;
|
|
294
|
+
margin-top: 1rem;
|
|
295
|
+
padding: 1.5rem;
|
|
296
296
|
border: 1px solid var(--color-rule);
|
|
297
297
|
border-radius: var(--radius-md);
|
|
298
298
|
background: var(--color-paper, var(--color-cream));
|
|
@@ -300,7 +300,7 @@ body[data-navigating="true"] .product-grid {
|
|
|
300
300
|
.back-in-stock-headline {
|
|
301
301
|
display: flex;
|
|
302
302
|
flex-direction: column;
|
|
303
|
-
gap:
|
|
303
|
+
gap: 0.75rem;
|
|
304
304
|
}
|
|
305
305
|
.back-in-stock-eyebrow {
|
|
306
306
|
font-family: var(--font-display);
|
|
@@ -326,11 +326,11 @@ body[data-navigating="true"] .product-grid {
|
|
|
326
326
|
display: flex;
|
|
327
327
|
flex-direction: row;
|
|
328
328
|
flex-wrap: wrap;
|
|
329
|
-
gap:
|
|
329
|
+
gap: 0.75rem;
|
|
330
330
|
}
|
|
331
331
|
.back-in-stock-input {
|
|
332
332
|
flex: 1;
|
|
333
|
-
padding:
|
|
333
|
+
padding: 0.75rem 1rem;
|
|
334
334
|
font-family: var(--font-body);
|
|
335
335
|
font-size: 0.875rem;
|
|
336
336
|
border: 1px solid var(--color-rule);
|
|
@@ -345,7 +345,7 @@ body[data-navigating="true"] .product-grid {
|
|
|
345
345
|
border-color: var(--color-ink);
|
|
346
346
|
}
|
|
347
347
|
.back-in-stock-submit {
|
|
348
|
-
padding:
|
|
348
|
+
padding: 0.75rem 1.5rem;
|
|
349
349
|
font-family: var(--font-display);
|
|
350
350
|
font-size: 0.75rem;
|
|
351
351
|
text-transform: uppercase;
|
|
@@ -370,8 +370,8 @@ body[data-navigating="true"] .product-grid {
|
|
|
370
370
|
color: var(--color-error, var(--color-accent));
|
|
371
371
|
}
|
|
372
372
|
.back-in-stock-success {
|
|
373
|
-
margin-top:
|
|
374
|
-
padding:
|
|
373
|
+
margin-top: 1rem;
|
|
374
|
+
padding: 1.5rem;
|
|
375
375
|
border: 1px solid var(--color-rule);
|
|
376
376
|
border-radius: var(--radius-md);
|
|
377
377
|
background: var(--color-paper, var(--color-cream));
|
|
@@ -390,7 +390,7 @@ body[data-navigating="true"] .product-grid {
|
|
|
390
390
|
margin: 0;
|
|
391
391
|
}
|
|
392
392
|
.stock-status.back-in-stock-alt {
|
|
393
|
-
margin-top:
|
|
393
|
+
margin-top: 0.75rem;
|
|
394
394
|
font-family: var(--font-body);
|
|
395
395
|
font-size: 0.875rem;
|
|
396
396
|
font-style: italic;
|
|
@@ -89,14 +89,14 @@ const viewContentPayload = {
|
|
|
89
89
|
hasSeoTags={hasSeoTags}
|
|
90
90
|
>
|
|
91
91
|
{hasSeoTags && <SeoTags slot="head" tags={seoTags} />}
|
|
92
|
-
<main class="py-
|
|
93
|
-
<div class="max-w-wide mx-auto px-
|
|
92
|
+
<main class="py-16">
|
|
93
|
+
<div class="max-w-wide mx-auto px-8">
|
|
94
94
|
<a href="/products" class="text-mute text-sm tracking-wide uppercase">← Back to products</a>
|
|
95
|
-
<div class="grid grid-cols-1 md:grid-cols-[7fr_5fr] gap-
|
|
95
|
+
<div class="grid grid-cols-1 md:grid-cols-[7fr_5fr] gap-12 md:gap-24 mt-8 items-start">
|
|
96
96
|
<div class="aspect-[4/5] bg-cream rounded-sm overflow-hidden">
|
|
97
97
|
{imageUrl && <img src={imageUrl} alt={product.name ?? "Product"} class="w-full h-full object-cover" />}
|
|
98
98
|
</div>
|
|
99
|
-
<div class="flex flex-col gap-
|
|
99
|
+
<div class="flex flex-col gap-6 md:sticky md:top-12">
|
|
100
100
|
<h1 class="font-display text-4xl leading-tight">{product.name}</h1>
|
|
101
101
|
{price && <p class="text-xl text-ink-soft">{price}</p>}
|
|
102
102
|
{description && <p class="text-ink-soft leading-relaxed">{description}</p>}
|