@vendure-platform/create 0.5.1 → 1.0.0-major.202609160652.120.4

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 (176) hide show
  1. package/README.md +48 -36
  2. package/dist/add-to-existing.d.ts +20 -14
  3. package/dist/add-to-existing.js +1 -1
  4. package/dist/assets/demo-data/assets/branding/logo.svg +4 -0
  5. package/dist/assets/demo-data/assets/images/absorbent-pad.webp +0 -0
  6. package/dist/assets/demo-data/assets/images/adjustable-wrench.webp +0 -0
  7. package/dist/assets/demo-data/assets/images/anchor-bolt.webp +0 -0
  8. package/dist/assets/demo-data/assets/images/angle-grinder.webp +0 -0
  9. package/dist/assets/demo-data/assets/images/barrier-tape.webp +0 -0
  10. package/dist/assets/demo-data/assets/images/bench-grinder.webp +0 -0
  11. package/dist/assets/demo-data/assets/images/bracket.webp +0 -0
  12. package/dist/assets/demo-data/assets/images/broom.webp +0 -0
  13. package/dist/assets/demo-data/assets/images/bucket.webp +0 -0
  14. package/dist/assets/demo-data/assets/images/cable-gland.webp +0 -0
  15. package/dist/assets/demo-data/assets/images/cable-tie.webp +0 -0
  16. package/dist/assets/demo-data/assets/images/cable-tray.webp +0 -0
  17. package/dist/assets/demo-data/assets/images/cable.webp +0 -0
  18. package/dist/assets/demo-data/assets/images/chimney-base-kit.webp +0 -0
  19. package/dist/assets/demo-data/assets/images/chimney-cowl-bird-guard.webp +0 -0
  20. package/dist/assets/demo-data/assets/images/chimney-cowl-open.webp +0 -0
  21. package/dist/assets/demo-data/assets/images/chimney-storm-collar.webp +0 -0
  22. package/dist/assets/demo-data/assets/images/chimney-wall-bracket.webp +0 -0
  23. package/dist/assets/demo-data/assets/images/circular-saw.webp +0 -0
  24. package/dist/assets/demo-data/assets/images/cleaning-spray.webp +0 -0
  25. package/dist/assets/demo-data/assets/images/conduit.webp +0 -0
  26. package/dist/assets/demo-data/assets/images/cordless-drill.webp +0 -0
  27. package/dist/assets/demo-data/assets/images/drill-bits.webp +0 -0
  28. package/dist/assets/demo-data/assets/images/dust-mask.webp +0 -0
  29. package/dist/assets/demo-data/assets/images/ear-defenders.webp +0 -0
  30. package/dist/assets/demo-data/assets/images/ear-plugs.webp +0 -0
  31. package/dist/assets/demo-data/assets/images/extension-lead.webp +0 -0
  32. package/dist/assets/demo-data/assets/images/eye-wash-station.webp +0 -0
  33. package/dist/assets/demo-data/assets/images/face-shield.webp +0 -0
  34. package/dist/assets/demo-data/assets/images/file-set.webp +0 -0
  35. package/dist/assets/demo-data/assets/images/first-aid-kit.webp +0 -0
  36. package/dist/assets/demo-data/assets/images/floor-sign.webp +0 -0
  37. package/dist/assets/demo-data/assets/images/flue-bend-45.webp +0 -0
  38. package/dist/assets/demo-data/assets/images/flue-bend-90.webp +0 -0
  39. package/dist/assets/demo-data/assets/images/flue-section-1000mm.webp +0 -0
  40. package/dist/assets/demo-data/assets/images/flue-section-250mm.webp +0 -0
  41. package/dist/assets/demo-data/assets/images/flue-section-500mm.webp +0 -0
  42. package/dist/assets/demo-data/assets/images/fuse.webp +0 -0
  43. package/dist/assets/demo-data/assets/images/glove-dispenser.webp +0 -0
  44. package/dist/assets/demo-data/assets/images/grinding-disc.webp +0 -0
  45. package/dist/assets/demo-data/assets/images/hacksaw.webp +0 -0
  46. package/dist/assets/demo-data/assets/images/hammer.webp +0 -0
  47. package/dist/assets/demo-data/assets/images/hand-sanitiser.webp +0 -0
  48. package/dist/assets/demo-data/assets/images/head-torch.webp +0 -0
  49. package/dist/assets/demo-data/assets/images/heat-gun.webp +0 -0
  50. package/dist/assets/demo-data/assets/images/hex-bolt.webp +0 -0
  51. package/dist/assets/demo-data/assets/images/hex-key-set.webp +0 -0
  52. package/dist/assets/demo-data/assets/images/hex-nut.webp +0 -0
  53. package/dist/assets/demo-data/assets/images/hi-vis-jacket.webp +0 -0
  54. package/dist/assets/demo-data/assets/images/hi-vis-vest.webp +0 -0
  55. package/dist/assets/demo-data/assets/images/hose-clamp.webp +0 -0
  56. package/dist/assets/demo-data/assets/images/impact-driver.webp +0 -0
  57. package/dist/assets/demo-data/assets/images/jigsaw.webp +0 -0
  58. package/dist/assets/demo-data/assets/images/junction-box.webp +0 -0
  59. package/dist/assets/demo-data/assets/images/knee-pads.webp +0 -0
  60. package/dist/assets/demo-data/assets/images/machine-screw.webp +0 -0
  61. package/dist/assets/demo-data/assets/images/made-to-order-configurable-chimney.webp +0 -0
  62. package/dist/assets/demo-data/assets/images/mallet.webp +0 -0
  63. package/dist/assets/demo-data/assets/images/mcb.webp +0 -0
  64. package/dist/assets/demo-data/assets/images/mop.webp +0 -0
  65. package/dist/assets/demo-data/assets/images/paper-towels.webp +0 -0
  66. package/dist/assets/demo-data/assets/images/pipe-wrench.webp +0 -0
  67. package/dist/assets/demo-data/assets/images/pliers-set.webp +0 -0
  68. package/dist/assets/demo-data/assets/images/pry-bar.webp +0 -0
  69. package/dist/assets/demo-data/assets/images/rcd.webp +0 -0
  70. package/dist/assets/demo-data/assets/images/reciprocating-saw.webp +0 -0
  71. package/dist/assets/demo-data/assets/images/rivet.webp +0 -0
  72. package/dist/assets/demo-data/assets/images/roof-flashing-high-pitch.webp +0 -0
  73. package/dist/assets/demo-data/assets/images/roof-flashing-low-pitch.webp +0 -0
  74. package/dist/assets/demo-data/assets/images/safety-boots.webp +0 -0
  75. package/dist/assets/demo-data/assets/images/safety-glasses.webp +0 -0
  76. package/dist/assets/demo-data/assets/images/safety-harness.webp +0 -0
  77. package/dist/assets/demo-data/assets/images/safety-helmet.webp +0 -0
  78. package/dist/assets/demo-data/assets/images/safety-sign.webp +0 -0
  79. package/dist/assets/demo-data/assets/images/sanding-disc.webp +0 -0
  80. package/dist/assets/demo-data/assets/images/saw-blade.webp +0 -0
  81. package/dist/assets/demo-data/assets/images/screwdriver-set.webp +0 -0
  82. package/dist/assets/demo-data/assets/images/screwdriver.webp +0 -0
  83. package/dist/assets/demo-data/assets/images/self-tapping-screw.webp +0 -0
  84. package/dist/assets/demo-data/assets/images/socket-set.webp +0 -0
  85. package/dist/assets/demo-data/assets/images/socket.webp +0 -0
  86. package/dist/assets/demo-data/assets/images/spanner-set.webp +0 -0
  87. package/dist/assets/demo-data/assets/images/spanner.webp +0 -0
  88. package/dist/assets/demo-data/assets/images/spill-kit.webp +0 -0
  89. package/dist/assets/demo-data/assets/images/spirit-level.webp +0 -0
  90. package/dist/assets/demo-data/assets/images/switch.webp +0 -0
  91. package/dist/assets/demo-data/assets/images/tape-measure.webp +0 -0
  92. package/dist/assets/demo-data/assets/images/terminal-block.webp +0 -0
  93. package/dist/assets/demo-data/assets/images/threaded-rod.webp +0 -0
  94. package/dist/assets/demo-data/assets/images/torque-wrench.webp +0 -0
  95. package/dist/assets/demo-data/assets/images/utility-knife.webp +0 -0
  96. package/dist/assets/demo-data/assets/images/wall-pass-sleeve.webp +0 -0
  97. package/dist/assets/demo-data/assets/images/wall-plug.webp +0 -0
  98. package/dist/assets/demo-data/assets/images/washer.webp +0 -0
  99. package/dist/assets/demo-data/assets/images/waste-bin.webp +0 -0
  100. package/dist/assets/demo-data/assets/images/wire-connector.webp +0 -0
  101. package/dist/assets/demo-data/assets/images/wire-cutters.webp +0 -0
  102. package/dist/assets/demo-data/assets/images/wood-screw.webp +0 -0
  103. package/dist/assets/demo-data/assets/images/work-gloves.webp +0 -0
  104. package/dist/assets/demo-data/assets/images/work-light.webp +0 -0
  105. package/dist/assets/demo-data/assets/initial-data.json +667 -0
  106. package/dist/assets/demo-data/assets/products.csv +779 -0
  107. package/dist/assets/storefront/.env.example +7 -0
  108. package/dist/assets/storefront/next-env.d.ts +2 -1
  109. package/dist/assets/storefront/next.config.ts +14 -13
  110. package/dist/assets/storefront/package.json +3 -2
  111. package/dist/assets/storefront/src/app/[locale]/account/addresses/page.tsx +2 -0
  112. package/dist/assets/storefront/src/app/[locale]/account/approvals/page.tsx +2 -0
  113. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/page.tsx +2 -0
  114. package/dist/assets/storefront/src/app/[locale]/account/company/page.tsx +2 -0
  115. package/dist/assets/storefront/src/app/[locale]/account/company/payment-methods/page.tsx +2 -0
  116. package/dist/assets/storefront/src/app/[locale]/account/company/roles/page.tsx +2 -0
  117. package/dist/assets/storefront/src/app/[locale]/account/company/users/page.tsx +2 -0
  118. package/dist/assets/storefront/src/app/[locale]/account/profile/page.tsx +2 -0
  119. package/dist/assets/storefront/src/app/[locale]/account/quick-order/page.tsx +2 -0
  120. package/dist/assets/storefront/src/app/[locale]/account/quotes/[id]/page.tsx +10 -6
  121. package/dist/assets/storefront/src/app/[locale]/cart/order-summary.tsx +8 -5
  122. package/dist/assets/storefront/src/app/[locale]/cart/promotion-code.tsx +9 -6
  123. package/dist/assets/storefront/src/app/[locale]/checkout/page.tsx +2 -0
  124. package/dist/assets/storefront/src/app/[locale]/layout.tsx +3 -3
  125. package/dist/assets/storefront/src/app/[locale]/order-confirmation/[code]/order-confirmation.tsx +2 -60
  126. package/dist/assets/storefront/src/components/commerce/product-card-list.tsx +4 -2
  127. package/dist/assets/storefront/src/components/commerce/product-card.tsx +4 -2
  128. package/dist/assets/storefront/src/components/commerce/quote-action-buttons.tsx +31 -14
  129. package/dist/assets/storefront/src/config/capabilities.ts +49 -0
  130. package/dist/assets/storefront/src/config/scenario.ts +10 -0
  131. package/dist/assets/storefront/src/graphql-env.d.ts +47 -41
  132. package/dist/assets/storefront/src/i18n/server.ts +33 -5
  133. package/dist/assets/storefront/src/lib/backend-health.ts +11 -3
  134. package/dist/assets/storefront/src/lib/vendure/api.ts +7 -4
  135. package/dist/assets/storefront/src/lib/vendure/capability-documents.ts +252 -0
  136. package/dist/assets/storefront/src/lib/vendure/capability-drift.ts +187 -0
  137. package/dist/assets/storefront/src/lib/vendure/capability-schema.ts +358 -0
  138. package/dist/assets/storefront/src/lib/vendure/capability-ui.ts +15 -0
  139. package/dist/assets/storefront/src/lib/vendure/mutations.ts +835 -532
  140. package/dist/assets/storefront/src/lib/vendure/queries.ts +862 -519
  141. package/dist/assets/storefront/src/proxy.ts +11 -0
  142. package/dist/assets/storefront/src/schema.graphql +337 -243
  143. package/dist/assets/templates/CLAUDE.md.hbs +1 -0
  144. package/dist/assets/templates/README.md.hbs +24 -1
  145. package/dist/assets/templates/docker-compose.yml.hbs +4 -0
  146. package/dist/assets/templates/env.hbs +34 -9
  147. package/dist/assets/templates/environment.d.ts.hbs +3 -0
  148. package/dist/assets/templates/gitignore.hbs +7 -4
  149. package/dist/assets/templates/index.ts.hbs +1 -1
  150. package/dist/assets/templates/migrate.ts.hbs +55 -0
  151. package/dist/assets/templates/npmrc.hbs +7 -2
  152. package/dist/assets/templates/platform-edition.ts.hbs +23 -0
  153. package/dist/assets/templates/populate.ts.hbs +3 -3
  154. package/dist/assets/templates/server-package.json.hbs +15 -8
  155. package/dist/assets/templates/vendure-config.ts.hbs +25 -2
  156. package/dist/assets/templates/vite.config.mts.hbs +5 -0
  157. package/dist/bin/run.js +1 -1
  158. package/dist/cli.js +1 -1
  159. package/dist/console-onboarding.d.ts +44 -0
  160. package/dist/console-onboarding.js +1 -0
  161. package/dist/hub-projects.d.ts +48 -0
  162. package/dist/hub-projects.js +1 -0
  163. package/dist/plugin-registry.d.ts +65 -5
  164. package/dist/plugin-registry.js +1 -1
  165. package/dist/registry.d.ts +16 -13
  166. package/dist/registry.js +1 -1
  167. package/dist/scaffold-shared.js +1 -1
  168. package/dist/scaffold-storefront-only.js +1 -1
  169. package/dist/scaffolder.js +1 -1
  170. package/dist/storefront-copier.d.ts +9 -2
  171. package/dist/storefront-copier.js +1 -1
  172. package/dist/template-renderer.d.ts +31 -9
  173. package/dist/template-renderer.js +1 -1
  174. package/dist/types.d.ts +75 -24
  175. package/package.json +14 -2
  176. package/dist/assets/storefront/src/middleware.ts +0 -11
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Build-time capability set for the storefront.
3
+ *
4
+ * The server composes its GraphQL schema from the capability modules the
5
+ * deployment is entitled to, so a document that selects a field belonging to an
6
+ * absent module fails validation on every request. The storefront therefore has
7
+ * to know which capability-gated fields it may select before it builds its
8
+ * documents.
9
+ *
10
+ * `NEXT_PUBLIC_VENDURE_CAPABILITIES` is a comma-separated list of the capability
11
+ * keys the target deployment is granted, baked at build time like
12
+ * `NEXT_PUBLIC_SCENARIO`. It is a composition hint, not an authorization
13
+ * boundary: the server remains authoritative and rejects anything this list
14
+ * gets wrong.
15
+ *
16
+ * The variable is required. No default is safe: assuming every capability makes
17
+ * a Starter storefront select fields its server does not expose. An empty value
18
+ * is a deliberate choice and means the server grants none of the capabilities
19
+ * the storefront selects.
20
+ */
21
+ const RAW_CAPABILITIES = process.env.NEXT_PUBLIC_VENDURE_CAPABILITIES;
22
+
23
+ function parseCapabilities(raw: string | undefined): ReadonlySet<string> {
24
+ if (raw === undefined) {
25
+ throw new Error(
26
+ 'NEXT_PUBLIC_VENDURE_CAPABILITIES is not set. Set it to the comma-separated capability keys ' +
27
+ 'of the Vendure server this storefront connects to, which are the keys of that ' +
28
+ "server's capability profile, and build again. @vendure-platform/create writes them to " +
29
+ 'the storefront .env.local. Set an empty value only when the server grants none of the ' +
30
+ 'capabilities the storefront selects.',
31
+ );
32
+ }
33
+ return new Set(
34
+ raw
35
+ .split(',')
36
+ .map((key) => key.trim())
37
+ .filter((key) => key.length > 0),
38
+ );
39
+ }
40
+
41
+ const GRANTED = parseCapabilities(RAW_CAPABILITIES);
42
+
43
+ /** True when the deployment is expected to expose `key`'s schema. */
44
+ export function hasCapability(key: string): boolean {
45
+ return GRANTED.has(key);
46
+ }
47
+
48
+ /** Configurator forms, rules, saved configurations, and the configured order journey. */
49
+ export const hasConfiguratorForms = hasCapability('configurator.forms');
@@ -141,6 +141,16 @@ export interface CartSlotOverrides {
141
141
  */
142
142
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
143
143
  CartItems?: ServerComponent<any>;
144
+
145
+ /**
146
+ * Banner slot rendered above the cart content. Receives the active order
147
+ * (or null when empty/awaiting approval). Use for scenario-specific
148
+ * call-outs.
149
+ *
150
+ * `app/[locale]/cart/cart.tsx` reads this slot unconditionally, so the
151
+ * declaration has to be here even though no customer scenario fills it.
152
+ */
153
+ Banner?: ServerComponent;
144
154
  }
145
155
 
146
156
  // =============================================================