@vendure-platform/create 0.2.1-nightly.202605191523 → 0.2.1

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 (124) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/assets/storefront/next.config.ts +1 -19
  3. package/dist/assets/storefront/package.json +1 -3
  4. package/dist/assets/storefront/src/components/commerce/packaging-unit-selector.tsx +6 -1
  5. package/dist/assets/storefront/src/components/commerce/product-info.tsx +4 -4
  6. package/dist/assets/storefront/src/graphql-env.d.ts +25 -22
  7. package/dist/assets/storefront/src/lib/vendure/queries.ts +6 -0
  8. package/dist/assets/storefront/src/schema.graphql +204 -111
  9. package/dist/assets/templates/README.md.hbs +5 -0
  10. package/dist/assets/templates/environment.d.ts.hbs +3 -0
  11. package/dist/assets/templates/populate.ts.hbs +1 -14
  12. package/dist/assets/templates/server-package.json.hbs +7 -7
  13. package/dist/assets/templates/vendure-config.ts.hbs +9 -3
  14. package/dist/scaffolder.js +1 -1
  15. package/dist/scaffolder.js.map +1 -1
  16. package/dist/storefront-copier.js +4 -1
  17. package/dist/storefront-copier.js.map +1 -1
  18. package/dist/template-renderer.d.ts +32 -1
  19. package/dist/template-renderer.js +39 -4
  20. package/dist/template-renderer.js.map +1 -1
  21. package/package.json +2 -2
  22. package/dist/assets/demo-data/assets/branding/logo.svg +0 -4
  23. package/dist/assets/demo-data/assets/images/absorbent-pad.webp +0 -0
  24. package/dist/assets/demo-data/assets/images/adjustable-wrench.webp +0 -0
  25. package/dist/assets/demo-data/assets/images/anchor-bolt.webp +0 -0
  26. package/dist/assets/demo-data/assets/images/angle-grinder.webp +0 -0
  27. package/dist/assets/demo-data/assets/images/barrier-tape.webp +0 -0
  28. package/dist/assets/demo-data/assets/images/bench-grinder.webp +0 -0
  29. package/dist/assets/demo-data/assets/images/bracket.webp +0 -0
  30. package/dist/assets/demo-data/assets/images/broom.webp +0 -0
  31. package/dist/assets/demo-data/assets/images/bucket.webp +0 -0
  32. package/dist/assets/demo-data/assets/images/cable-gland.webp +0 -0
  33. package/dist/assets/demo-data/assets/images/cable-tie.webp +0 -0
  34. package/dist/assets/demo-data/assets/images/cable-tray.webp +0 -0
  35. package/dist/assets/demo-data/assets/images/cable.webp +0 -0
  36. package/dist/assets/demo-data/assets/images/chimney-base-kit.webp +0 -0
  37. package/dist/assets/demo-data/assets/images/chimney-cowl-bird-guard.webp +0 -0
  38. package/dist/assets/demo-data/assets/images/chimney-cowl-open.webp +0 -0
  39. package/dist/assets/demo-data/assets/images/chimney-storm-collar.webp +0 -0
  40. package/dist/assets/demo-data/assets/images/chimney-wall-bracket.webp +0 -0
  41. package/dist/assets/demo-data/assets/images/circular-saw.webp +0 -0
  42. package/dist/assets/demo-data/assets/images/cleaning-spray.webp +0 -0
  43. package/dist/assets/demo-data/assets/images/conduit.webp +0 -0
  44. package/dist/assets/demo-data/assets/images/cordless-drill.webp +0 -0
  45. package/dist/assets/demo-data/assets/images/drill-bits.webp +0 -0
  46. package/dist/assets/demo-data/assets/images/dust-mask.webp +0 -0
  47. package/dist/assets/demo-data/assets/images/ear-defenders.webp +0 -0
  48. package/dist/assets/demo-data/assets/images/ear-plugs.webp +0 -0
  49. package/dist/assets/demo-data/assets/images/extension-lead.webp +0 -0
  50. package/dist/assets/demo-data/assets/images/eye-wash-station.webp +0 -0
  51. package/dist/assets/demo-data/assets/images/face-shield.webp +0 -0
  52. package/dist/assets/demo-data/assets/images/file-set.webp +0 -0
  53. package/dist/assets/demo-data/assets/images/first-aid-kit.webp +0 -0
  54. package/dist/assets/demo-data/assets/images/floor-sign.webp +0 -0
  55. package/dist/assets/demo-data/assets/images/flue-bend-45.webp +0 -0
  56. package/dist/assets/demo-data/assets/images/flue-bend-90.webp +0 -0
  57. package/dist/assets/demo-data/assets/images/flue-section-1000mm.webp +0 -0
  58. package/dist/assets/demo-data/assets/images/flue-section-250mm.webp +0 -0
  59. package/dist/assets/demo-data/assets/images/flue-section-500mm.webp +0 -0
  60. package/dist/assets/demo-data/assets/images/fuse.webp +0 -0
  61. package/dist/assets/demo-data/assets/images/glove-dispenser.webp +0 -0
  62. package/dist/assets/demo-data/assets/images/grinding-disc.webp +0 -0
  63. package/dist/assets/demo-data/assets/images/hacksaw.webp +0 -0
  64. package/dist/assets/demo-data/assets/images/hammer.webp +0 -0
  65. package/dist/assets/demo-data/assets/images/hand-sanitiser.webp +0 -0
  66. package/dist/assets/demo-data/assets/images/head-torch.webp +0 -0
  67. package/dist/assets/demo-data/assets/images/heat-gun.webp +0 -0
  68. package/dist/assets/demo-data/assets/images/hex-bolt.webp +0 -0
  69. package/dist/assets/demo-data/assets/images/hex-key-set.webp +0 -0
  70. package/dist/assets/demo-data/assets/images/hex-nut.webp +0 -0
  71. package/dist/assets/demo-data/assets/images/hi-vis-jacket.webp +0 -0
  72. package/dist/assets/demo-data/assets/images/hi-vis-vest.webp +0 -0
  73. package/dist/assets/demo-data/assets/images/hose-clamp.webp +0 -0
  74. package/dist/assets/demo-data/assets/images/impact-driver.webp +0 -0
  75. package/dist/assets/demo-data/assets/images/jigsaw.webp +0 -0
  76. package/dist/assets/demo-data/assets/images/junction-box.webp +0 -0
  77. package/dist/assets/demo-data/assets/images/knee-pads.webp +0 -0
  78. package/dist/assets/demo-data/assets/images/machine-screw.webp +0 -0
  79. package/dist/assets/demo-data/assets/images/made-to-order-configurable-chimney.webp +0 -0
  80. package/dist/assets/demo-data/assets/images/mallet.webp +0 -0
  81. package/dist/assets/demo-data/assets/images/mcb.webp +0 -0
  82. package/dist/assets/demo-data/assets/images/mop.webp +0 -0
  83. package/dist/assets/demo-data/assets/images/paper-towels.webp +0 -0
  84. package/dist/assets/demo-data/assets/images/pipe-wrench.webp +0 -0
  85. package/dist/assets/demo-data/assets/images/pliers-set.webp +0 -0
  86. package/dist/assets/demo-data/assets/images/pry-bar.webp +0 -0
  87. package/dist/assets/demo-data/assets/images/rcd.webp +0 -0
  88. package/dist/assets/demo-data/assets/images/reciprocating-saw.webp +0 -0
  89. package/dist/assets/demo-data/assets/images/rivet.webp +0 -0
  90. package/dist/assets/demo-data/assets/images/roof-flashing-high-pitch.webp +0 -0
  91. package/dist/assets/demo-data/assets/images/roof-flashing-low-pitch.webp +0 -0
  92. package/dist/assets/demo-data/assets/images/safety-boots.webp +0 -0
  93. package/dist/assets/demo-data/assets/images/safety-glasses.webp +0 -0
  94. package/dist/assets/demo-data/assets/images/safety-harness.webp +0 -0
  95. package/dist/assets/demo-data/assets/images/safety-helmet.webp +0 -0
  96. package/dist/assets/demo-data/assets/images/safety-sign.webp +0 -0
  97. package/dist/assets/demo-data/assets/images/sanding-disc.webp +0 -0
  98. package/dist/assets/demo-data/assets/images/saw-blade.webp +0 -0
  99. package/dist/assets/demo-data/assets/images/screwdriver-set.webp +0 -0
  100. package/dist/assets/demo-data/assets/images/screwdriver.webp +0 -0
  101. package/dist/assets/demo-data/assets/images/self-tapping-screw.webp +0 -0
  102. package/dist/assets/demo-data/assets/images/socket-set.webp +0 -0
  103. package/dist/assets/demo-data/assets/images/socket.webp +0 -0
  104. package/dist/assets/demo-data/assets/images/spanner-set.webp +0 -0
  105. package/dist/assets/demo-data/assets/images/spanner.webp +0 -0
  106. package/dist/assets/demo-data/assets/images/spill-kit.webp +0 -0
  107. package/dist/assets/demo-data/assets/images/spirit-level.webp +0 -0
  108. package/dist/assets/demo-data/assets/images/switch.webp +0 -0
  109. package/dist/assets/demo-data/assets/images/tape-measure.webp +0 -0
  110. package/dist/assets/demo-data/assets/images/terminal-block.webp +0 -0
  111. package/dist/assets/demo-data/assets/images/threaded-rod.webp +0 -0
  112. package/dist/assets/demo-data/assets/images/torque-wrench.webp +0 -0
  113. package/dist/assets/demo-data/assets/images/utility-knife.webp +0 -0
  114. package/dist/assets/demo-data/assets/images/wall-pass-sleeve.webp +0 -0
  115. package/dist/assets/demo-data/assets/images/wall-plug.webp +0 -0
  116. package/dist/assets/demo-data/assets/images/washer.webp +0 -0
  117. package/dist/assets/demo-data/assets/images/waste-bin.webp +0 -0
  118. package/dist/assets/demo-data/assets/images/wire-connector.webp +0 -0
  119. package/dist/assets/demo-data/assets/images/wire-cutters.webp +0 -0
  120. package/dist/assets/demo-data/assets/images/wood-screw.webp +0 -0
  121. package/dist/assets/demo-data/assets/images/work-gloves.webp +0 -0
  122. package/dist/assets/demo-data/assets/images/work-light.webp +0 -0
  123. package/dist/assets/demo-data/assets/initial-data.json +0 -667
  124. package/dist/assets/demo-data/assets/products.csv +0 -779
package/CHANGELOG.md ADDED
@@ -0,0 +1,15 @@
1
+ ## 0.2.1 (2026-05-20)
2
+
3
+ _Initial release._
4
+
5
+ ### 🚀 Features
6
+
7
+ - deliver standalone storefront to EE customers (EE-104) ([#290](https://github.com/vendurehq/vendure-platform/pull/290))
8
+
9
+ ### 🩹 Fixes
10
+
11
+ - scaffolder cleanup pass after Nigel review ([#314](https://github.com/vendurehq/vendure-platform/pull/314))
12
+ - pin typeorm to ^0.3.27 in scaffolded server template ([#313](https://github.com/vendurehq/vendure-platform/pull/313))
13
+ - land all issues found during end-to-end create-flow testing (EE-153) ([#304](https://github.com/vendurehq/vendure-platform/pull/304))
14
+ - wire up private registry scope mapping + actionable 401 hint (EE-151) ([#300](https://github.com/vendurehq/vendure-platform/pull/300))
15
+ - target ^3.6.2 stable for @vendure packages in scaffolder template ([#243](https://github.com/vendurehq/vendure-platform/pull/243))
@@ -5,16 +5,6 @@ import createNextIntlPlugin from 'next-intl/plugin';
5
5
  const vendurePort = process.env.VENDURE_PORT ?? '3500';
6
6
  const storefrontPort = process.env.STOREFRONT_PORT ?? '3001';
7
7
 
8
- const activeScenario = process.env.NEXT_PUBLIC_SCENARIO ?? 'default';
9
-
10
- // Build-time CSS swap: `@/styles/globals` resolves to the active scenario's
11
- // globals.css. Today only the `vendure-branded` scenario has its own (which
12
- // imports `@vendure-io/design-tokens`); every other scenario falls back to
13
- // the shared storefront globals.css.
14
- const scenarioGlobalsCss = activeScenario === 'vendure-branded'
15
- ? path.resolve(__dirname, 'src/scenarios/vendure-branded/globals.css')
16
- : path.resolve(__dirname, 'src/app/[locale]/globals.css');
17
-
18
8
  const withNextIntl = createNextIntlPlugin('./src/i18n/request.ts');
19
9
 
20
10
  const nextConfig: NextConfig = {
@@ -50,15 +40,7 @@ const nextConfig: NextConfig = {
50
40
  NEXT_PUBLIC_SITE_URL: process.env.NEXT_PUBLIC_SITE_URL ?? `http://localhost:${storefrontPort}`,
51
41
  ...(process.env.VENDURE_CHANNEL_TOKEN ? { VENDURE_CHANNEL_TOKEN: process.env.VENDURE_CHANNEL_TOKEN } : {}),
52
42
  REVALIDATION_SECRET: process.env.REVALIDATION_SECRET,
53
- NEXT_PUBLIC_SCENARIO: process.env.NEXT_PUBLIC_SCENARIO ?? 'default',
54
- },
55
- webpack: (config) => {
56
- config.resolve = config.resolve ?? {};
57
- config.resolve.alias = {
58
- ...(config.resolve.alias ?? {}),
59
- '@/styles/globals.css': scenarioGlobalsCss,
60
- };
61
- return config;
43
+ NEXT_PUBLIC_SCENARIO: process.env.NEXT_PUBLIC_SCENARIO ?? 'customer',
62
44
  },
63
45
  images: {
64
46
  // This is necessary to display images from your local Vendure instance
@@ -37,8 +37,7 @@
37
37
  "@radix-ui/react-toggle": "^1.1.10",
38
38
  "@radix-ui/react-toggle-group": "^1.1.11",
39
39
  "@radix-ui/react-tooltip": "^1.2.8",
40
- "@vendure-io/design-tokens": "^1.1.2",
41
- "@vendure-platform/storefront-client": "^0.2.1-nightly.202605191523",
40
+ "@vendure-platform/storefront-client": "^0.2.1",
42
41
  "class-variance-authority": "^0.7.1",
43
42
  "clsx": "^2.1.1",
44
43
  "cmdk": "^1.1.1",
@@ -67,7 +66,6 @@
67
66
  "@types/node": "^20.19.25",
68
67
  "@types/react": "^19.2.7",
69
68
  "@types/react-dom": "^19.2.3",
70
- "baseline-browser-mapping": "^2.9.14",
71
69
  "eslint": "^9.39.1",
72
70
  "eslint-config-next": "16.0.0",
73
71
  "tailwindcss": "^4.1.17",
@@ -59,7 +59,12 @@ export function PackagingUnitSelector({
59
59
 
60
60
  // Effective pieces at minQuantity: e.g. 1 box × 50 = 50 pieces
61
61
  const effectivePieces = pu.minQuantity * pu.conversionFactor;
62
- const perPiecePrice = getTierAdjustedPiecePrice(baseVariantPrice, sortedTiers, effectivePieces);
62
+ // Prefer the packaging-unit's own tier ladder so any
63
+ // packaging-unit-gated discounts are reflected on the card.
64
+ const puTiers = pu.priceTiers
65
+ ? [...pu.priceTiers].filter(t => t.minQuantity != null).sort((a, b) => a.minQuantity! - b.minQuantity!)
66
+ : sortedTiers;
67
+ const perPiecePrice = getTierAdjustedPiecePrice(baseVariantPrice, puTiers, effectivePieces);
63
68
  const displayPrice = Math.round(perPiecePrice * pu.conversionFactor);
64
69
 
65
70
  const stockLevel = pu.effectiveStockLevel;
@@ -217,8 +217,8 @@ export function ProductInfo({ product, searchParams, shoppingLists, currencyCode
217
217
  if (!selectedVariant) return null;
218
218
  const factor = selectedPackagingUnit?.conversionFactor ?? 1;
219
219
  const effectiveQuantity = quantity * factor;
220
+ const tiers = selectedPackagingUnit?.priceTiers ?? selectedVariant.priceTiers;
220
221
  let perPiecePrice = selectedVariant.price;
221
- const tiers = selectedVariant.priceTiers;
222
222
  if (tiers) {
223
223
  const sorted = [...tiers].filter(t => t.minQuantity != null).sort((a, b) => a.minQuantity! - b.minQuantity!);
224
224
  for (const tier of sorted) {
@@ -506,11 +506,11 @@ export function ProductInfo({ product, searchParams, shoppingLists, currencyCode
506
506
  </div>
507
507
 
508
508
  {/* Volume Pricing — reference material, post-action */}
509
- {selectedVariant?.priceTiers && (
509
+ {(selectedPackagingUnit?.priceTiers ?? selectedVariant?.priceTiers) && (
510
510
  <div className="mt-6">
511
511
  <PriceTiers
512
- tiers={selectedVariant.priceTiers}
513
- basePrice={selectedVariant.price}
512
+ tiers={(selectedPackagingUnit?.priceTiers ?? selectedVariant?.priceTiers) as PriceTier[]}
513
+ basePrice={selectedVariant?.price ?? 0}
514
514
  quantity={quantity}
515
515
  onTierClick={(minQty) => setQuantityInput(String(minQty))}
516
516
  conversionFactor={selectedPackagingUnit?.conversionFactor}