@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.
Files changed (66) hide show
  1. package/package.json +1 -1
  2. package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +2 -1
  3. package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +14 -0
  4. package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +11 -6
  5. package/skills/wix-app/references/editor-react-component/REACT-PATTERNS.md +3 -17
  6. package/skills/wix-app/references/editor-react-component/SSR.md +119 -0
  7. package/skills/wix-design-system/SKILL.md +1 -1
  8. package/skills/wix-headless/references/BUILD-astro.md +5 -7
  9. package/skills/wix-headless/references/DESIGN_SYSTEM.md +6 -16
  10. package/skills/wix-headless/references/SETUP.md +1 -1
  11. package/skills/wix-headless/references/astro/bookings/COMPONENTS.md +41 -333
  12. package/skills/wix-headless/references/astro/bookings/SERVICES_PAGES.md +77 -428
  13. package/skills/wix-headless/references/astro/cms/FAQ_KNOWLEDGE_BASE.md +2 -2
  14. package/skills/wix-headless/references/astro/designer/INSTRUCTIONS.md +7 -10
  15. package/skills/wix-headless/references/astro/ecom/CART_WIRING.md +2 -2
  16. package/skills/wix-headless/references/astro/ecom/COMPONENTS_CSS.md +3 -3
  17. package/skills/wix-headless/references/astro/gift-cards/COMPONENTS.md +2 -2
  18. package/skills/wix-headless/references/astro/stores/BACK_IN_STOCK.md +7 -7
  19. package/skills/wix-headless/references/astro/stores/COMPONENTS_CSS.md +4 -4
  20. package/skills/wix-headless/references/astro/stores/PRODUCT_PAGES.md +2 -2
  21. package/skills/wix-headless/references/astro/templates/Footer.astro +4 -4
  22. package/skills/wix-headless/references/astro/templates/Navigation.astro +4 -4
  23. package/skills/wix-headless/references/astro/templates/bookings/AvailabilityCalendar.tsx +298 -142
  24. package/skills/wix-headless/references/astro/templates/bookings/BookingForm.tsx +104 -162
  25. package/skills/wix-headless/references/astro/templates/bookings/ServiceBookingFlow.tsx +35 -14
  26. package/skills/wix-headless/references/astro/templates/bookings/ServiceCard.astro +11 -2
  27. package/skills/wix-headless/references/astro/templates/bookings/booking-confirmation.astro +23 -85
  28. package/skills/wix-headless/references/astro/templates/bookings/bookingDriver.ts +245 -0
  29. package/skills/wix-headless/references/astro/templates/bookings/components-bookings.css +209 -198
  30. package/skills/wix-headless/references/astro/templates/bookings/services/[slug].astro +114 -19
  31. package/skills/wix-headless/references/astro/templates/bookings/services/index.astro +131 -15
  32. package/skills/wix-headless/references/astro/templates/ecom/CartView.tsx +3 -3
  33. package/skills/wix-headless/references/astro/templates/ecom/cart.astro +3 -3
  34. package/skills/wix-headless/references/astro/templates/ecom/components-ecom.css +17 -17
  35. package/skills/wix-headless/references/astro/templates/ecom/thank-you.astro +3 -3
  36. package/skills/wix-headless/references/astro/templates/gift-cards/_home-teaser-snippet.astro +4 -4
  37. package/skills/wix-headless/references/astro/templates/gift-cards/components-gift-cards.css +19 -18
  38. package/skills/wix-headless/references/astro/templates/gift-cards/gift-cards.astro +3 -3
  39. package/skills/wix-headless/references/astro/templates/global.css +17 -15
  40. package/skills/wix-headless/references/astro/templates/index.astro +4 -4
  41. package/skills/wix-headless/references/astro/templates/stores/components-stores.css +31 -31
  42. package/skills/wix-headless/references/astro/templates/stores/products/[slug].astro +4 -4
  43. package/skills/wix-headless/references/bookings/FLOW.md +246 -0
  44. package/skills/wix-headless/references/bookings/INSTRUCTIONS.md +65 -76
  45. package/skills/wix-headless/references/bookings/SERVICES_DATA.md +60 -0
  46. package/skills/wix-headless/references/custom/bookings/WIRING.md +169 -60
  47. package/skills/wix-headless/references/shared/DESIGN_MD.md +2 -3
  48. package/skills/wix-headless/references/shared/IMPLEMENTER.md +4 -4
  49. package/skills/wix-headless/references/shared/STYLING.md +15 -18
  50. package/skills/wix-headless/references/stores/INSTRUCTIONS.md +2 -2
  51. package/skills/wix-headless/references/verticals/bookings.md +9 -9
  52. package/skills/wix-headless/scripts/compose.mjs +4 -19
  53. package/skills/wix-headless/scripts/emit-design-tokens.mjs +0 -3
  54. package/skills/wix-manage/SKILL.md +12 -0
  55. package/skills/wix-manage/references/app-installation/install-wix-apps.md +3 -27
  56. package/skills/wix-manage/references/bookings/create-appointment-service.md +254 -0
  57. package/skills/wix-manage/references/bookings/create-booking-service-from-prompt.md +37 -0
  58. package/skills/wix-manage/references/bookings/create-class-service.md +233 -0
  59. package/skills/wix-manage/references/bookings/create-course-service.md +237 -0
  60. package/skills/wix-manage/references/cms/cms-data-items-crud.md +2 -1
  61. package/skills/wix-manage/references/cms/cms-schema-management.md +1 -1
  62. package/skills/wix-manage/references/stores/create-product-from-image.md +154 -2
  63. package/skills/wix-headless/references/astro/templates/bookings/ManageBooking.tsx +0 -84
  64. package/skills/wix-headless/references/astro/templates/bookings/api/confirm-booking.ts +0 -34
  65. package/skills/wix-headless/references/astro/templates/bookings/api/waitlist.ts +0 -74
  66. 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
- * --spacing-{sm,md,lg,xl,2xl,3xl,4xl}, --radius-sm, --font-body,
12
- * --font-display. If a token isn't in your design system, fall back to a
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: var(--spacing-lg);
24
- margin-top: var(--spacing-lg);
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: var(--spacing-sm);
37
- margin-top: var(--spacing-sm);
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: var(--spacing-md);
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: var(--spacing-3xl) var(--spacing-lg) var(--spacing-4xl);
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: var(--spacing-2xl);
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: var(--spacing-4xl);
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: var(--spacing-md) 0 var(--spacing-md);
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 var(--spacing-xl);
152
+ margin: 0 0 2rem;
152
153
  }
153
154
 
154
155
  .gift-card-fineprint {
155
- margin-top: var(--spacing-lg);
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: var(--spacing-4xl) var(--spacing-lg);
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: var(--spacing-2xl);
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: var(--spacing-4xl);
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: var(--spacing-md) 0 var(--spacing-md);
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 var(--spacing-lg);
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-3xl md:py-4xl">
22
- <div class="max-w-wide mx-auto px-xl grid grid-cols-1 md:grid-cols-2 gap-2xl md:gap-4xl items-center">
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-lg">
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-*, --spacing-* (2xs..4xl), --container-*, and
14
- --radius-* line. The required-token set (enforced by compose.mjs)
15
- MUST all be present, or components render unstyled. Container scale is
16
- separate from spacing — never alias --container-3xl to --spacing-3xl. */
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-lg py-md rounded-md font-medium;
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: var(--spacing-lg);
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: var(--spacing-2xs);
208
- padding: var(--spacing-sm);
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: var(--spacing-2xs);
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: var(--spacing-sm);
241
- padding-block: var(--spacing-md);
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: var(--spacing-2xs) var(--spacing-md);
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: var(--spacing-xl);
267
+ margin-block: 2rem;
266
268
  }
267
269
  .pagination-inner {
268
270
  display: flex;
269
271
  justify-content: space-between;
270
- gap: var(--spacing-md);
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: var(--spacing-sm);
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-lg py-4xl grid grid-cols-1 md:grid-cols-2 gap-3xl items-center">
21
- <div class="flex flex-col gap-lg">
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-lg py-4xl grid grid-cols-1 md:grid-cols-2 gap-3xl items-center">
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-md max-w-prose">
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: var(--spacing-xl);
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: var(--spacing-md);
44
- padding-bottom: var(--spacing-md);
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: var(--spacing-md);
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: var(--spacing-xs);
79
- padding-inline: var(--spacing-md);
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: var(--spacing-md);
99
- left: var(--spacing-md);
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: var(--spacing-md);
114
- right: var(--spacing-md);
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: var(--spacing-lg);
135
+ padding: 1.5rem;
136
136
  border-radius: var(--radius-md);
137
137
  display: flex;
138
138
  flex-direction: column;
139
- gap: var(--spacing-md);
139
+ gap: 1rem;
140
140
  }
141
141
  .offer-callout-item {
142
142
  display: flex;
143
143
  flex-direction: column;
144
- gap: var(--spacing-xs);
144
+ gap: 0.5rem;
145
145
  }
146
146
  .offer-callout-item + .offer-callout-item {
147
- padding-top: var(--spacing-md);
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)` / `var(--spacing-sm)` calls work against
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: var(--spacing-sm);
204
- margin-bottom: var(--spacing-lg);
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: var(--spacing-sm);
216
+ gap: 0.75rem;
217
217
  }
218
218
  .option-pill {
219
- padding: var(--spacing-sm) var(--spacing-md);
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: var(--spacing-sm) var(--spacing-md);
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: var(--spacing-sm);
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: var(--spacing-md);
294
- margin-top: var(--spacing-md);
295
- padding: var(--spacing-lg);
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: var(--spacing-sm);
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: var(--spacing-sm);
329
+ gap: 0.75rem;
330
330
  }
331
331
  .back-in-stock-input {
332
332
  flex: 1;
333
- padding: var(--spacing-sm) var(--spacing-md);
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: var(--spacing-sm) var(--spacing-lg);
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: var(--spacing-md);
374
- padding: var(--spacing-lg);
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: var(--spacing-sm);
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-3xl">
93
- <div class="max-w-wide mx-auto px-xl">
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">&larr; Back to products</a>
95
- <div class="grid grid-cols-1 md:grid-cols-[7fr_5fr] gap-2xl md:gap-4xl mt-xl items-start">
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-lg md:sticky md:top-2xl">
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>}