@vendure-platform/create 0.1.0 → 0.2.1-nightly.202605190703

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 (97) hide show
  1. package/README.md +37 -27
  2. package/dist/assets/storefront/.env.example +14 -14
  3. package/dist/assets/storefront/messages/de.json +2 -3
  4. package/dist/assets/storefront/messages/en.json +2 -3
  5. package/dist/assets/storefront/next.config.ts +22 -21
  6. package/dist/assets/storefront/package.json +75 -75
  7. package/dist/assets/storefront/public/scenarios/customer/logo.svg +4 -0
  8. package/dist/assets/storefront/src/app/[locale]/layout.tsx +0 -4
  9. package/dist/assets/storefront/src/app/[locale]/sign-in/login-form.tsx +70 -102
  10. package/dist/assets/storefront/src/app/[locale]/sign-in/page.tsx +2 -3
  11. package/dist/assets/storefront/src/config/scenario-meta.ts +3 -7
  12. package/dist/assets/storefront/src/config/scenario.ts +14 -30
  13. package/dist/assets/storefront/src/graphql-env.d.ts +456 -0
  14. package/dist/assets/storefront/src/scenarios/customer/branding.ts +142 -0
  15. package/dist/assets/storefront/src/scenarios/customer/hero.tsx +76 -0
  16. package/dist/assets/storefront/src/scenarios/{default → customer}/index.ts +3 -3
  17. package/dist/assets/storefront/src/scenarios/{default → customer}/meta.ts +1 -1
  18. package/dist/assets/storefront/src/schema.graphql +5852 -0
  19. package/dist/assets/storefront/tsconfig.json +17 -8
  20. package/dist/assets/templates/README.md.hbs +1 -1
  21. package/dist/assets/templates/docker-compose.yml.hbs +0 -4
  22. package/dist/assets/templates/env.hbs +13 -7
  23. package/dist/assets/templates/environment.d.ts.hbs +1 -5
  24. package/dist/assets/templates/npmrc.hbs +1 -1
  25. package/dist/assets/templates/populate.ts.hbs +17 -0
  26. package/dist/assets/templates/server-package.json.hbs +3 -2
  27. package/dist/bin/run.js +17 -3
  28. package/dist/bin/run.js.map +1 -1
  29. package/dist/cli.d.ts +6 -1
  30. package/dist/cli.js +147 -25
  31. package/dist/cli.js.map +1 -1
  32. package/dist/index.d.ts +5 -3
  33. package/dist/index.js +9 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/plugin-registry.d.ts +43 -6
  36. package/dist/plugin-registry.js +139 -421
  37. package/dist/plugin-registry.js.map +1 -1
  38. package/dist/registry.d.ts +18 -0
  39. package/dist/registry.js +29 -0
  40. package/dist/registry.js.map +1 -0
  41. package/dist/scaffold-shared.d.ts +19 -0
  42. package/dist/scaffold-shared.js +114 -0
  43. package/dist/scaffold-shared.js.map +1 -0
  44. package/dist/scaffold-storefront-only.d.ts +6 -0
  45. package/dist/scaffold-storefront-only.js +101 -0
  46. package/dist/scaffold-storefront-only.js.map +1 -0
  47. package/dist/scaffolder.js +22 -42
  48. package/dist/scaffolder.js.map +1 -1
  49. package/dist/storefront-copier.d.ts +26 -3
  50. package/dist/storefront-copier.js +63 -12
  51. package/dist/storefront-copier.js.map +1 -1
  52. package/dist/template-renderer.d.ts +24 -7
  53. package/dist/template-renderer.js +32 -64
  54. package/dist/template-renderer.js.map +1 -1
  55. package/dist/types.d.ts +46 -27
  56. package/package.json +3 -1
  57. package/dist/assets/storefront/.env.local +0 -1
  58. package/dist/assets/storefront/public/scenarios/b2b-wholesale/hero/hero-bg.webp +0 -0
  59. package/dist/assets/storefront/public/scenarios/b2b-wholesale/logo.svg +0 -4
  60. package/dist/assets/storefront/public/scenarios/default/logo.svg +0 -4
  61. package/dist/assets/storefront/public/scenarios/kaminpro/hero/hero-bg.webp +0 -0
  62. package/dist/assets/storefront/public/scenarios/kaminpro/logo.svg +0 -7
  63. package/dist/assets/storefront/src/components/shared/scenario-paused.tsx +0 -80
  64. package/dist/assets/storefront/src/scenarios/b2b-wholesale/branding.ts +0 -180
  65. package/dist/assets/storefront/src/scenarios/b2b-wholesale/hero.tsx +0 -122
  66. package/dist/assets/storefront/src/scenarios/b2b-wholesale/index.ts +0 -21
  67. package/dist/assets/storefront/src/scenarios/b2b-wholesale/meta.ts +0 -3
  68. package/dist/assets/storefront/src/scenarios/default/branding.ts +0 -148
  69. package/dist/assets/storefront/src/scenarios/default/hero.tsx +0 -107
  70. package/dist/assets/storefront/src/scenarios/kaminpro/auth-gate.tsx +0 -36
  71. package/dist/assets/storefront/src/scenarios/kaminpro/branding.ts +0 -238
  72. package/dist/assets/storefront/src/scenarios/kaminpro/cart-items.tsx +0 -359
  73. package/dist/assets/storefront/src/scenarios/kaminpro/hero.tsx +0 -123
  74. package/dist/assets/storefront/src/scenarios/kaminpro/index.ts +0 -50
  75. package/dist/assets/storefront/src/scenarios/kaminpro/meta.ts +0 -9
  76. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/banners.tsx +0 -21
  77. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/bom-basket.tsx +0 -221
  78. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/btn.tsx +0 -38
  79. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/chip.tsx +0 -35
  80. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/config-header.tsx +0 -72
  81. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/field-row.tsx +0 -126
  82. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/info-dot.tsx +0 -38
  83. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/login-notice.tsx +0 -81
  84. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/module-panel.tsx +0 -144
  85. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/quote-dialog.tsx +0 -110
  86. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/schematic.tsx +0 -674
  87. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/why-panel.tsx +0 -66
  88. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/configurator-pdp.tsx +0 -43
  89. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/configurator-shell.tsx +0 -320
  90. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/lib/data.ts +0 -150
  91. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/lib/types.ts +0 -30
  92. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/styles.css +0 -104
  93. package/dist/assets/storefront/src/scenarios/kaminpro/shop-by-system.tsx +0 -97
  94. package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/decision-tree.ts +0 -261
  95. package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/page.tsx +0 -21
  96. package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/wizard.tsx +0 -600
  97. package/dist/assets/storefront/src/schema.graphql.placeholder +0 -5
@@ -0,0 +1,142 @@
1
+ import type { StorefrontBranding } from '@/config/branding';
2
+
3
+ /**
4
+ * Neutral branding shipped to customer scaffolds. Stripped of demo-rig
5
+ * features (no quick-login UI, no health-gate overlay) and Vendure-specific
6
+ * vendor links — customers can swap colors, copy, and logo to their brand.
7
+ */
8
+
9
+ const baseVars: Record<string, string> = {
10
+ '--radius': '0.5rem',
11
+ };
12
+
13
+ const heroColors: Record<string, string> = {
14
+ '--hero-gradient-from': '#0f172a',
15
+ '--hero-gradient-via': '#1e293b',
16
+ '--hero-gradient-to': '#0f172a',
17
+ '--hero-accent': '#38bdf8',
18
+ '--hero-accent-bg': '#0ea5e9',
19
+ '--hero-accent-bg-hover': '#0284c7',
20
+ '--hero-accent-foreground': '#ffffff',
21
+ '--hero-text': '#f1f5f9',
22
+ '--hero-text-muted': '#94a3b8',
23
+ '--hero-border': '#334155',
24
+ '--hero-badge-bg': 'rgba(14, 165, 233, 0.1)',
25
+ '--hero-badge-border': 'rgba(14, 165, 233, 0.2)',
26
+ };
27
+
28
+ const darkColors: Record<string, string> = {
29
+ ...baseVars,
30
+
31
+ '--background': '#0f172a',
32
+ '--foreground': '#f1f5f9',
33
+
34
+ '--card': '#1e293b',
35
+ '--card-foreground': '#f1f5f9',
36
+ '--popover': '#1e293b',
37
+ '--popover-foreground': '#f1f5f9',
38
+
39
+ '--primary': '#0ea5e9',
40
+ '--primary-foreground': '#ffffff',
41
+
42
+ '--secondary': '#1e293b',
43
+ '--secondary-foreground': '#f1f5f9',
44
+
45
+ '--muted': '#0f172a',
46
+ '--muted-foreground': '#94a3b8',
47
+
48
+ '--accent': '#1e293b',
49
+ '--accent-foreground': '#f1f5f9',
50
+
51
+ '--destructive': '#ef4444',
52
+
53
+ '--border': '#334155',
54
+ '--input': '#0f172a',
55
+ '--ring': '#0ea5e9',
56
+
57
+ '--chart-1': '#0ea5e9',
58
+ '--chart-2': '#22c55e',
59
+ '--chart-3': '#eab308',
60
+ '--chart-4': '#f97316',
61
+ '--chart-5': '#ef4444',
62
+
63
+ '--sidebar': '#0f172a',
64
+ '--sidebar-foreground': '#f1f5f9',
65
+ '--sidebar-primary': '#0ea5e9',
66
+ '--sidebar-primary-foreground': '#ffffff',
67
+ '--sidebar-accent': '#1e293b',
68
+ '--sidebar-accent-foreground': '#f1f5f9',
69
+ '--sidebar-border': '#334155',
70
+ '--sidebar-ring': '#0ea5e9',
71
+
72
+ ...heroColors,
73
+ };
74
+
75
+ const lightColors: Record<string, string> = {
76
+ ...baseVars,
77
+
78
+ '--background': '#ffffff',
79
+ '--foreground': '#0f172a',
80
+
81
+ '--card': '#f8fafc',
82
+ '--card-foreground': '#0f172a',
83
+ '--popover': '#ffffff',
84
+ '--popover-foreground': '#0f172a',
85
+
86
+ '--primary': '#0ea5e9',
87
+ '--primary-foreground': '#ffffff',
88
+
89
+ '--secondary': '#f1f5f9',
90
+ '--secondary-foreground': '#0f172a',
91
+
92
+ '--muted': '#f1f5f9',
93
+ '--muted-foreground': '#64748b',
94
+
95
+ '--accent': '#f1f5f9',
96
+ '--accent-foreground': '#0f172a',
97
+
98
+ '--destructive': '#dc2626',
99
+
100
+ '--border': '#e2e8f0',
101
+ '--input': '#e2e8f0',
102
+ '--ring': '#0ea5e9',
103
+
104
+ '--chart-1': '#0ea5e9',
105
+ '--chart-2': '#16a34a',
106
+ '--chart-3': '#ca8a04',
107
+ '--chart-4': '#ea580c',
108
+ '--chart-5': '#dc2626',
109
+
110
+ '--sidebar': '#f8fafc',
111
+ '--sidebar-foreground': '#0f172a',
112
+ '--sidebar-primary': '#0ea5e9',
113
+ '--sidebar-primary-foreground': '#ffffff',
114
+ '--sidebar-accent': '#f1f5f9',
115
+ '--sidebar-accent-foreground': '#0f172a',
116
+ '--sidebar-border': '#e2e8f0',
117
+ '--sidebar-ring': '#0ea5e9',
118
+
119
+ ...heroColors,
120
+ };
121
+
122
+ export const branding: StorefrontBranding = {
123
+ siteName: 'My Shop',
124
+ siteDescription: 'A storefront powered by Vendure.',
125
+
126
+ logo: { src: '/scenarios/customer/logo.svg', alt: 'My Shop', width: 28, height: 28 },
127
+
128
+ colors: {
129
+ dark: darkColors,
130
+ light: lightColors,
131
+ },
132
+ footer: {
133
+ copyright: 'My Shop',
134
+ },
135
+
136
+ metadata: {
137
+ themeColor: '#0f172a',
138
+ defaultDescription: 'A storefront powered by Vendure.',
139
+ homepageTitle: 'My Shop',
140
+ homepageDescription: 'A storefront powered by Vendure.',
141
+ },
142
+ };
@@ -0,0 +1,76 @@
1
+ import { getTranslations } from 'next-intl/server';
2
+ import { Button } from '@/components/ui/button';
3
+ import { Link } from '@/i18n/navigation';
4
+ import { getBranding } from '@/config/branding';
5
+ import { ArrowRight } from 'lucide-react';
6
+
7
+ /**
8
+ * Generic hero shipped with the `customer` scenario. Purely visual — no
9
+ * vendor-specific copy or imagery. Customers replace this entire component
10
+ * (or swap the Hero slot in their scenario) for their own brand intro.
11
+ *
12
+ * Hero copy is sourced from `branding.metadata.{homepageTitle,homepageDescription}`
13
+ * so customers can change the wording without editing this component.
14
+ *
15
+ * Translations: the CTA label uses the `Hero.browseCatalogue` key from
16
+ * `messages/<locale>.json`, so the button is localised for all 26 supported
17
+ * locales out of the box.
18
+ *
19
+ * Implemented as an async Server Component (not `'use client'`) so the
20
+ * `getBranding()` lookup — which transitively pulls in the full scenario
21
+ * registry — stays out of the client bundle. A client-side hero would force
22
+ * webpack to bundle every other scenario's client-only code, and scenarios
23
+ * like `kaminpro` reach into `'use cache'` server code which can't be
24
+ * imported from a client component.
25
+ */
26
+ export async function CustomerHero() {
27
+ const t = await getTranslations('Hero');
28
+ const branding = getBranding();
29
+ return (
30
+ <section
31
+ aria-labelledby="customer-hero-heading"
32
+ className="relative overflow-hidden"
33
+ style={{
34
+ background: `linear-gradient(to bottom right, var(--hero-gradient-from), var(--hero-gradient-via), var(--hero-gradient-to))`,
35
+ }}
36
+ >
37
+ <div className="absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.02)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.02)_1px,transparent_1px)] bg-[size:48px_48px]" />
38
+
39
+ <div className="container mx-auto px-4 pt-[calc(var(--page-top-offset)+3rem)] pb-12 md:pt-[calc(var(--page-top-offset)+5rem)] md:pb-20 relative">
40
+ <div className="max-w-3xl mx-auto text-center space-y-6">
41
+ <h1
42
+ id="customer-hero-heading"
43
+ className="text-4xl md:text-5xl lg:text-6xl font-bold tracking-tight"
44
+ style={{ color: 'var(--hero-text)' }}
45
+ >
46
+ {branding.metadata.homepageTitle}
47
+ </h1>
48
+
49
+ <p
50
+ className="text-lg md:text-xl max-w-2xl mx-auto"
51
+ style={{ color: 'var(--hero-text-muted)' }}
52
+ >
53
+ {branding.metadata.homepageDescription}
54
+ </p>
55
+
56
+ <div className="flex flex-col sm:flex-row gap-3 justify-center items-center pt-4">
57
+ <Button
58
+ asChild
59
+ size="lg"
60
+ className="min-w-[180px] font-semibold"
61
+ style={{
62
+ backgroundColor: 'var(--hero-accent-bg)',
63
+ color: 'var(--hero-accent-foreground)',
64
+ }}
65
+ >
66
+ <Link href="/search" prefetch={false}>
67
+ {t('browseCatalogue')}
68
+ <ArrowRight className="ml-2 w-4 h-4" />
69
+ </Link>
70
+ </Button>
71
+ </div>
72
+ </div>
73
+ </div>
74
+ </section>
75
+ );
76
+ }
@@ -1,12 +1,12 @@
1
1
  import type { ScenarioConfig } from '@/config/scenario';
2
2
  import { branding } from './branding';
3
- import { DefaultHero } from './hero';
3
+ import { CustomerHero } from './hero';
4
4
 
5
- export const defaultScenario: ScenarioConfig = {
5
+ export const customerScenario: ScenarioConfig = {
6
6
  branding,
7
7
  overrides: {
8
8
  home: {
9
- Hero: DefaultHero,
9
+ Hero: CustomerHero,
10
10
  },
11
11
  },
12
12
  };
@@ -1,3 +1,3 @@
1
1
  import type {ScenarioMeta} from '@/config/scenario-meta';
2
2
 
3
- export const defaultMeta: ScenarioMeta = {};
3
+ export const customerMeta: ScenarioMeta = {};