@vendure-platform/create 0.2.1-nightly.202605191555 → 0.2.2
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/CHANGELOG.md +22 -0
- package/README.md +11 -0
- package/dist/add-to-existing.d.ts +80 -0
- package/dist/add-to-existing.js +508 -0
- package/dist/add-to-existing.js.map +1 -0
- package/dist/assets/storefront/next.config.ts +1 -19
- package/dist/assets/storefront/package.json +1 -3
- package/dist/assets/storefront/src/components/commerce/packaging-unit-selector.tsx +6 -1
- package/dist/assets/storefront/src/components/commerce/product-info.tsx +4 -4
- package/dist/assets/storefront/src/graphql-env.d.ts +25 -22
- package/dist/assets/storefront/src/lib/vendure/queries.ts +6 -0
- package/dist/assets/storefront/src/schema.graphql +204 -111
- package/dist/assets/templates/README.md.hbs +5 -0
- package/dist/assets/templates/bunfig.toml.hbs +17 -0
- package/dist/assets/templates/env.hbs +5 -2
- package/dist/assets/templates/environment.d.ts.hbs +3 -0
- package/dist/assets/templates/gitignore.hbs +6 -0
- package/dist/assets/templates/npmrc.hbs +2 -0
- package/dist/assets/templates/populate.ts.hbs +1 -14
- package/dist/assets/templates/server-package.json.hbs +6 -6
- package/dist/assets/templates/vendure-config.ts.hbs +9 -3
- package/dist/bin/run.js +27 -0
- package/dist/bin/run.js.map +1 -1
- package/dist/cli.js +34 -1
- package/dist/cli.js.map +1 -1
- package/dist/scaffold-shared.js +15 -5
- package/dist/scaffold-shared.js.map +1 -1
- package/dist/scaffolder.js +8 -3
- package/dist/scaffolder.js.map +1 -1
- package/dist/sort-package-json.d.ts +12 -0
- package/dist/sort-package-json.js +26 -0
- package/dist/sort-package-json.js.map +1 -0
- package/dist/storefront-copier.d.ts +12 -0
- package/dist/storefront-copier.js +38 -8
- package/dist/storefront-copier.js.map +1 -1
- package/dist/template-renderer.d.ts +63 -1
- package/dist/template-renderer.js +81 -5
- package/dist/template-renderer.js.map +1 -1
- package/dist/types.d.ts +32 -0
- package/package.json +4 -4
- package/dist/assets/demo-data/assets/branding/logo.svg +0 -4
- package/dist/assets/demo-data/assets/images/absorbent-pad.webp +0 -0
- package/dist/assets/demo-data/assets/images/adjustable-wrench.webp +0 -0
- package/dist/assets/demo-data/assets/images/anchor-bolt.webp +0 -0
- package/dist/assets/demo-data/assets/images/angle-grinder.webp +0 -0
- package/dist/assets/demo-data/assets/images/barrier-tape.webp +0 -0
- package/dist/assets/demo-data/assets/images/bench-grinder.webp +0 -0
- package/dist/assets/demo-data/assets/images/bracket.webp +0 -0
- package/dist/assets/demo-data/assets/images/broom.webp +0 -0
- package/dist/assets/demo-data/assets/images/bucket.webp +0 -0
- package/dist/assets/demo-data/assets/images/cable-gland.webp +0 -0
- package/dist/assets/demo-data/assets/images/cable-tie.webp +0 -0
- package/dist/assets/demo-data/assets/images/cable-tray.webp +0 -0
- package/dist/assets/demo-data/assets/images/cable.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-base-kit.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-cowl-bird-guard.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-cowl-open.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-storm-collar.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-wall-bracket.webp +0 -0
- package/dist/assets/demo-data/assets/images/circular-saw.webp +0 -0
- package/dist/assets/demo-data/assets/images/cleaning-spray.webp +0 -0
- package/dist/assets/demo-data/assets/images/conduit.webp +0 -0
- package/dist/assets/demo-data/assets/images/cordless-drill.webp +0 -0
- package/dist/assets/demo-data/assets/images/drill-bits.webp +0 -0
- package/dist/assets/demo-data/assets/images/dust-mask.webp +0 -0
- package/dist/assets/demo-data/assets/images/ear-defenders.webp +0 -0
- package/dist/assets/demo-data/assets/images/ear-plugs.webp +0 -0
- package/dist/assets/demo-data/assets/images/extension-lead.webp +0 -0
- package/dist/assets/demo-data/assets/images/eye-wash-station.webp +0 -0
- package/dist/assets/demo-data/assets/images/face-shield.webp +0 -0
- package/dist/assets/demo-data/assets/images/file-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/first-aid-kit.webp +0 -0
- package/dist/assets/demo-data/assets/images/floor-sign.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-bend-45.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-bend-90.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-section-1000mm.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-section-250mm.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-section-500mm.webp +0 -0
- package/dist/assets/demo-data/assets/images/fuse.webp +0 -0
- package/dist/assets/demo-data/assets/images/glove-dispenser.webp +0 -0
- package/dist/assets/demo-data/assets/images/grinding-disc.webp +0 -0
- package/dist/assets/demo-data/assets/images/hacksaw.webp +0 -0
- package/dist/assets/demo-data/assets/images/hammer.webp +0 -0
- package/dist/assets/demo-data/assets/images/hand-sanitiser.webp +0 -0
- package/dist/assets/demo-data/assets/images/head-torch.webp +0 -0
- package/dist/assets/demo-data/assets/images/heat-gun.webp +0 -0
- package/dist/assets/demo-data/assets/images/hex-bolt.webp +0 -0
- package/dist/assets/demo-data/assets/images/hex-key-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/hex-nut.webp +0 -0
- package/dist/assets/demo-data/assets/images/hi-vis-jacket.webp +0 -0
- package/dist/assets/demo-data/assets/images/hi-vis-vest.webp +0 -0
- package/dist/assets/demo-data/assets/images/hose-clamp.webp +0 -0
- package/dist/assets/demo-data/assets/images/impact-driver.webp +0 -0
- package/dist/assets/demo-data/assets/images/jigsaw.webp +0 -0
- package/dist/assets/demo-data/assets/images/junction-box.webp +0 -0
- package/dist/assets/demo-data/assets/images/knee-pads.webp +0 -0
- package/dist/assets/demo-data/assets/images/machine-screw.webp +0 -0
- package/dist/assets/demo-data/assets/images/made-to-order-configurable-chimney.webp +0 -0
- package/dist/assets/demo-data/assets/images/mallet.webp +0 -0
- package/dist/assets/demo-data/assets/images/mcb.webp +0 -0
- package/dist/assets/demo-data/assets/images/mop.webp +0 -0
- package/dist/assets/demo-data/assets/images/paper-towels.webp +0 -0
- package/dist/assets/demo-data/assets/images/pipe-wrench.webp +0 -0
- package/dist/assets/demo-data/assets/images/pliers-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/pry-bar.webp +0 -0
- package/dist/assets/demo-data/assets/images/rcd.webp +0 -0
- package/dist/assets/demo-data/assets/images/reciprocating-saw.webp +0 -0
- package/dist/assets/demo-data/assets/images/rivet.webp +0 -0
- package/dist/assets/demo-data/assets/images/roof-flashing-high-pitch.webp +0 -0
- package/dist/assets/demo-data/assets/images/roof-flashing-low-pitch.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-boots.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-glasses.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-harness.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-helmet.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-sign.webp +0 -0
- package/dist/assets/demo-data/assets/images/sanding-disc.webp +0 -0
- package/dist/assets/demo-data/assets/images/saw-blade.webp +0 -0
- package/dist/assets/demo-data/assets/images/screwdriver-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/screwdriver.webp +0 -0
- package/dist/assets/demo-data/assets/images/self-tapping-screw.webp +0 -0
- package/dist/assets/demo-data/assets/images/socket-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/socket.webp +0 -0
- package/dist/assets/demo-data/assets/images/spanner-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/spanner.webp +0 -0
- package/dist/assets/demo-data/assets/images/spill-kit.webp +0 -0
- package/dist/assets/demo-data/assets/images/spirit-level.webp +0 -0
- package/dist/assets/demo-data/assets/images/switch.webp +0 -0
- package/dist/assets/demo-data/assets/images/tape-measure.webp +0 -0
- package/dist/assets/demo-data/assets/images/terminal-block.webp +0 -0
- package/dist/assets/demo-data/assets/images/threaded-rod.webp +0 -0
- package/dist/assets/demo-data/assets/images/torque-wrench.webp +0 -0
- package/dist/assets/demo-data/assets/images/utility-knife.webp +0 -0
- package/dist/assets/demo-data/assets/images/wall-pass-sleeve.webp +0 -0
- package/dist/assets/demo-data/assets/images/wall-plug.webp +0 -0
- package/dist/assets/demo-data/assets/images/washer.webp +0 -0
- package/dist/assets/demo-data/assets/images/waste-bin.webp +0 -0
- package/dist/assets/demo-data/assets/images/wire-connector.webp +0 -0
- package/dist/assets/demo-data/assets/images/wire-cutters.webp +0 -0
- package/dist/assets/demo-data/assets/images/wood-screw.webp +0 -0
- package/dist/assets/demo-data/assets/images/work-gloves.webp +0 -0
- package/dist/assets/demo-data/assets/images/work-light.webp +0 -0
- package/dist/assets/demo-data/assets/initial-data.json +0 -667
- package/dist/assets/demo-data/assets/products.csv +0 -779
|
@@ -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 ?? '
|
|
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-
|
|
41
|
-
"@vendure-platform/storefront-client": "^0.2.1-nightly.202605191555",
|
|
40
|
+
"@vendure-platform/storefront-client": "^0.2.2",
|
|
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
|
-
|
|
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
|
|
513
|
-
basePrice={selectedVariant
|
|
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}
|