@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.
- package/README.md +37 -27
- package/dist/assets/storefront/.env.example +14 -14
- package/dist/assets/storefront/messages/de.json +2 -3
- package/dist/assets/storefront/messages/en.json +2 -3
- package/dist/assets/storefront/next.config.ts +22 -21
- package/dist/assets/storefront/package.json +75 -75
- package/dist/assets/storefront/public/scenarios/customer/logo.svg +4 -0
- package/dist/assets/storefront/src/app/[locale]/layout.tsx +0 -4
- package/dist/assets/storefront/src/app/[locale]/sign-in/login-form.tsx +70 -102
- package/dist/assets/storefront/src/app/[locale]/sign-in/page.tsx +2 -3
- package/dist/assets/storefront/src/config/scenario-meta.ts +3 -7
- package/dist/assets/storefront/src/config/scenario.ts +14 -30
- package/dist/assets/storefront/src/graphql-env.d.ts +456 -0
- package/dist/assets/storefront/src/scenarios/customer/branding.ts +142 -0
- package/dist/assets/storefront/src/scenarios/customer/hero.tsx +76 -0
- package/dist/assets/storefront/src/scenarios/{default → customer}/index.ts +3 -3
- package/dist/assets/storefront/src/scenarios/{default → customer}/meta.ts +1 -1
- package/dist/assets/storefront/src/schema.graphql +5852 -0
- package/dist/assets/storefront/tsconfig.json +17 -8
- package/dist/assets/templates/README.md.hbs +1 -1
- package/dist/assets/templates/docker-compose.yml.hbs +0 -4
- package/dist/assets/templates/env.hbs +13 -7
- package/dist/assets/templates/environment.d.ts.hbs +1 -5
- package/dist/assets/templates/npmrc.hbs +1 -1
- package/dist/assets/templates/populate.ts.hbs +17 -0
- package/dist/assets/templates/server-package.json.hbs +3 -2
- package/dist/bin/run.js +17 -3
- package/dist/bin/run.js.map +1 -1
- package/dist/cli.d.ts +6 -1
- package/dist/cli.js +147 -25
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/plugin-registry.d.ts +43 -6
- package/dist/plugin-registry.js +139 -421
- package/dist/plugin-registry.js.map +1 -1
- package/dist/registry.d.ts +18 -0
- package/dist/registry.js +29 -0
- package/dist/registry.js.map +1 -0
- package/dist/scaffold-shared.d.ts +19 -0
- package/dist/scaffold-shared.js +114 -0
- package/dist/scaffold-shared.js.map +1 -0
- package/dist/scaffold-storefront-only.d.ts +6 -0
- package/dist/scaffold-storefront-only.js +101 -0
- package/dist/scaffold-storefront-only.js.map +1 -0
- package/dist/scaffolder.js +22 -42
- package/dist/scaffolder.js.map +1 -1
- package/dist/storefront-copier.d.ts +26 -3
- package/dist/storefront-copier.js +63 -12
- package/dist/storefront-copier.js.map +1 -1
- package/dist/template-renderer.d.ts +24 -7
- package/dist/template-renderer.js +32 -64
- package/dist/template-renderer.js.map +1 -1
- package/dist/types.d.ts +46 -27
- package/package.json +3 -1
- package/dist/assets/storefront/.env.local +0 -1
- package/dist/assets/storefront/public/scenarios/b2b-wholesale/hero/hero-bg.webp +0 -0
- package/dist/assets/storefront/public/scenarios/b2b-wholesale/logo.svg +0 -4
- package/dist/assets/storefront/public/scenarios/default/logo.svg +0 -4
- package/dist/assets/storefront/public/scenarios/kaminpro/hero/hero-bg.webp +0 -0
- package/dist/assets/storefront/public/scenarios/kaminpro/logo.svg +0 -7
- package/dist/assets/storefront/src/components/shared/scenario-paused.tsx +0 -80
- package/dist/assets/storefront/src/scenarios/b2b-wholesale/branding.ts +0 -180
- package/dist/assets/storefront/src/scenarios/b2b-wholesale/hero.tsx +0 -122
- package/dist/assets/storefront/src/scenarios/b2b-wholesale/index.ts +0 -21
- package/dist/assets/storefront/src/scenarios/b2b-wholesale/meta.ts +0 -3
- package/dist/assets/storefront/src/scenarios/default/branding.ts +0 -148
- package/dist/assets/storefront/src/scenarios/default/hero.tsx +0 -107
- package/dist/assets/storefront/src/scenarios/kaminpro/auth-gate.tsx +0 -36
- package/dist/assets/storefront/src/scenarios/kaminpro/branding.ts +0 -238
- package/dist/assets/storefront/src/scenarios/kaminpro/cart-items.tsx +0 -359
- package/dist/assets/storefront/src/scenarios/kaminpro/hero.tsx +0 -123
- package/dist/assets/storefront/src/scenarios/kaminpro/index.ts +0 -50
- package/dist/assets/storefront/src/scenarios/kaminpro/meta.ts +0 -9
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/banners.tsx +0 -21
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/bom-basket.tsx +0 -221
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/btn.tsx +0 -38
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/chip.tsx +0 -35
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/config-header.tsx +0 -72
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/field-row.tsx +0 -126
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/info-dot.tsx +0 -38
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/login-notice.tsx +0 -81
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/module-panel.tsx +0 -144
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/quote-dialog.tsx +0 -110
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/schematic.tsx +0 -674
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/why-panel.tsx +0 -66
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/configurator-pdp.tsx +0 -43
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/configurator-shell.tsx +0 -320
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/lib/data.ts +0 -150
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/lib/types.ts +0 -30
- package/dist/assets/storefront/src/scenarios/kaminpro/pdp/styles.css +0 -104
- package/dist/assets/storefront/src/scenarios/kaminpro/shop-by-system.tsx +0 -97
- package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/decision-tree.ts +0 -261
- package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/page.tsx +0 -21
- package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/wizard.tsx +0 -600
- 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 {
|
|
3
|
+
import { CustomerHero } from './hero';
|
|
4
4
|
|
|
5
|
-
export const
|
|
5
|
+
export const customerScenario: ScenarioConfig = {
|
|
6
6
|
branding,
|
|
7
7
|
overrides: {
|
|
8
8
|
home: {
|
|
9
|
-
Hero:
|
|
9
|
+
Hero: CustomerHero,
|
|
10
10
|
},
|
|
11
11
|
},
|
|
12
12
|
};
|