@timbenniks/contentstack-platform-app-scaffold 0.1.5 → 0.1.7
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 +141 -0
- package/dist/commands/scaffold.d.ts +1 -0
- package/dist/commands/scaffold.d.ts.map +1 -1
- package/dist/commands/scaffold.js +5 -0
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/services/prompts.d.ts.map +1 -1
- package/dist/services/prompts.js +178 -15
- package/dist/services/prompts.js.map +1 -1
- package/dist/services/scaffold.d.ts.map +1 -1
- package/dist/services/scaffold.js +5 -0
- package/dist/services/scaffold.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/dist/types.js.map +1 -1
- package/oclif.manifest.json +13 -1
- package/package.json +1 -1
- package/templates/nextjs/app/assets/page.tsx.hbs +3 -2
- package/templates/nextjs/app/brandkit/page.tsx.hbs +3 -2
- package/templates/nextjs/app/entries/page.tsx.hbs +3 -2
- package/templates/nextjs/app/globals.css.hbs +77 -0
- package/templates/nextjs/app/launch/page.tsx.hbs +3 -2
- package/templates/nextjs/app/layout.tsx.hbs +1 -1
- package/templates/nextjs/app/page.tsx.hbs +10 -8
package/README.md
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# @timbenniks/contentstack-platform-app-scaffold
|
|
2
|
+
|
|
3
|
+
CLI tool to scaffold full-stack Contentstack apps using the [Platform SDK](https://www.npmjs.com/package/@timbenniks/contentstack-platform-sdk). It creates a production-ready Next.js project with shadcn/ui, Tailwind v4, and Contentstack design tokens — wired up with CMA proxies, OAuth, Launch, and Brand Kit support.
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
1. Runs `create-next-app@latest` with TypeScript, Tailwind v4, and App Router
|
|
8
|
+
2. Initializes [shadcn/ui](https://ui.shadcn.com) with Button and Card components
|
|
9
|
+
3. Adds `@timbenniks/contentstack-platform-sdk` as a dependency
|
|
10
|
+
4. Overlays Contentstack-specific files based on the features you select:
|
|
11
|
+
- **CMA** — Server proxy at `/api/cma`, entries and assets pages with React hooks
|
|
12
|
+
- **OAuth** — Auth.js v5 integration with `createContentstackAuth`, sign-in/sign-out UI
|
|
13
|
+
- **Launch** — Server proxy at `/api/launch`, projects page
|
|
14
|
+
- **Brand Kit** — Server proxy at `/api/brandkit`, brand kits page
|
|
15
|
+
5. Maps the SDK's Venus Design System tokens to shadcn CSS variables via `tokens.css`
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
### As a Contentstack CLI plugin
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
csdx plugins:install @timbenniks/contentstack-platform-app-scaffold
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Then run:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
csdx scaffold my-app
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Standalone with npx
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx @timbenniks/contentstack-platform-app-scaffold scaffold my-app
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Global install
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install -g @timbenniks/contentstack-platform-app-scaffold
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
### Interactive mode
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
csdx scaffold my-app
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The CLI will prompt you for:
|
|
52
|
+
- **Framework** — Next.js (more coming soon)
|
|
53
|
+
- **Region** — `us`, `eu`, `au`, `azure-na`, `azure-eu`, `gcp-na`, `gcp-eu`
|
|
54
|
+
- **Features** — CMA, OAuth, Launch, Brand Kit
|
|
55
|
+
- **OAuth scopes** — if OAuth is selected
|
|
56
|
+
- **Package manager** — npm, yarn, or pnpm
|
|
57
|
+
|
|
58
|
+
### Non-interactive mode
|
|
59
|
+
|
|
60
|
+
Pass all options as flags to skip prompts:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
csdx scaffold my-app \
|
|
64
|
+
--framework nextjs \
|
|
65
|
+
--region eu \
|
|
66
|
+
--features cma,oauth \
|
|
67
|
+
--scopes "user:read,cm.entries.management:read,cm.assets.management:read" \
|
|
68
|
+
--package-manager pnpm
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Flags
|
|
72
|
+
|
|
73
|
+
| Flag | Description | Default |
|
|
74
|
+
|------|-------------|---------|
|
|
75
|
+
| `--framework` | Framework (`nextjs`) | prompted |
|
|
76
|
+
| `--region` | Contentstack region | prompted |
|
|
77
|
+
| `--features` | Comma-separated: `cma`, `oauth`, `launch`, `brandkit` | prompted |
|
|
78
|
+
| `--scopes` | Comma-separated OAuth scopes | prompted if oauth selected |
|
|
79
|
+
| `--package-manager` | `npm`, `yarn`, or `pnpm` | prompted |
|
|
80
|
+
| `--no-install` | Skip dependency installation | `false` |
|
|
81
|
+
|
|
82
|
+
## Generated project structure
|
|
83
|
+
|
|
84
|
+
With all features enabled (`cma,oauth,launch,brandkit`):
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
my-app/
|
|
88
|
+
├── app/
|
|
89
|
+
│ ├── api/
|
|
90
|
+
│ │ ├── auth/[...nextauth]/route.ts # OAuth handlers
|
|
91
|
+
│ │ ├── cma/[...path]/route.ts # CMA proxy
|
|
92
|
+
│ │ ├── launch/[...path]/route.ts # Launch proxy
|
|
93
|
+
│ │ └── brandkit/[...path]/route.ts # Brand Kit proxy
|
|
94
|
+
│ ├── entries/page.tsx # Entries page (useEntries hook)
|
|
95
|
+
│ ├── assets/page.tsx # Assets page (useAssets hook)
|
|
96
|
+
│ ├── launch/page.tsx # Launch projects page
|
|
97
|
+
│ ├── brandkit/page.tsx # Brand Kits page
|
|
98
|
+
│ ├── globals.css # shadcn + Venus Design System tokens
|
|
99
|
+
│ ├── layout.tsx # Root layout with Providers
|
|
100
|
+
│ ├── page.tsx # Home with sign-in/sign-out
|
|
101
|
+
│ └── providers.tsx # ContentstackProvider wrapper
|
|
102
|
+
├── lib/
|
|
103
|
+
│ └── auth.ts # createContentstackAuth config
|
|
104
|
+
├── types/
|
|
105
|
+
│ └── next-auth.d.ts # Session type augmentation
|
|
106
|
+
├── .env.example # All required env vars
|
|
107
|
+
├── next.config.ts # SDK transpile config
|
|
108
|
+
└── package.json
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Environment variables
|
|
112
|
+
|
|
113
|
+
After scaffolding, copy `.env.example` to `.env.local` and fill in your credentials:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
cp .env.example .env.local
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The required variables depend on your feature selection:
|
|
120
|
+
|
|
121
|
+
| Variable | Required when |
|
|
122
|
+
|----------|--------------|
|
|
123
|
+
| `CONTENTSTACK_REGION` | Always |
|
|
124
|
+
| `CONTENTSTACK_API_KEY` | Always |
|
|
125
|
+
| `CONTENTSTACK_MANAGEMENT_TOKEN` | CMA without OAuth |
|
|
126
|
+
| `CONTENTSTACK_APP_ID` | OAuth |
|
|
127
|
+
| `CONTENTSTACK_CLIENT_ID` | OAuth |
|
|
128
|
+
| `CONTENTSTACK_CLIENT_SECRET` | OAuth |
|
|
129
|
+
| `AUTH_SECRET` | OAuth |
|
|
130
|
+
| `CONTENTSTACK_ORGANIZATION_UID` | Launch or Brand Kit |
|
|
131
|
+
| `CONTENTSTACK_AUTHTOKEN` | Launch/Brand Kit without OAuth |
|
|
132
|
+
| `CONTENTSTACK_BRAND_KIT_UID` | Brand Kit |
|
|
133
|
+
|
|
134
|
+
## Requirements
|
|
135
|
+
|
|
136
|
+
- Node.js >= 18
|
|
137
|
+
- npm, yarn, or pnpm
|
|
138
|
+
|
|
139
|
+
## License
|
|
140
|
+
|
|
141
|
+
MIT
|
|
@@ -10,6 +10,7 @@ export default class Scaffold extends Command {
|
|
|
10
10
|
region: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
11
|
features: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
12
|
scopes: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
theme: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
14
|
"package-manager": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
15
|
"no-install": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AA0BlD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,MAAM,CAAC,WAAW,SAAuD;IAEzE,MAAM,CAAC,QAAQ,WAId;IAED,MAAM,CAAC,IAAI;;MAKV;IAED,MAAM,CAAC,KAAK;;;;;;;;MA2BX;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB3B"}
|
|
@@ -44,6 +44,10 @@ class Scaffold extends core_1.Command {
|
|
|
44
44
|
scopes: core_1.Flags.string({
|
|
45
45
|
description: "Comma-separated OAuth scopes",
|
|
46
46
|
}),
|
|
47
|
+
theme: core_1.Flags.string({
|
|
48
|
+
description: `Theme mode (${types_1.VALID_THEME_MODES.join("|")})`,
|
|
49
|
+
options: [...types_1.VALID_THEME_MODES],
|
|
50
|
+
}),
|
|
47
51
|
"package-manager": core_1.Flags.string({
|
|
48
52
|
description: `Package manager (${types_1.VALID_PACKAGE_MANAGERS.join("|")})`,
|
|
49
53
|
options: types_1.VALID_PACKAGE_MANAGERS,
|
|
@@ -61,6 +65,7 @@ class Scaffold extends core_1.Command {
|
|
|
61
65
|
region: flags.region,
|
|
62
66
|
features: flags.features ? parseFeatures(flags.features) : undefined,
|
|
63
67
|
scopes: flags.scopes ? parseScopes(flags.scopes) : undefined,
|
|
68
|
+
theme: flags.theme,
|
|
64
69
|
packageManager: flags["package-manager"],
|
|
65
70
|
install: !flags["no-install"],
|
|
66
71
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":";;AAAA,sCAAkD;AAClD,iDAAgD;AAChD,mDAA+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAKV,eAAe,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAKV,eAAe,EAEhB,MAAM,UAAU,CAAA;AAmMjB,wBAAsB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CA8GjF"}
|
package/dist/services/prompts.js
CHANGED
|
@@ -52,25 +52,169 @@ const FEATURE_LABELS = {
|
|
|
52
52
|
brandkit: "Brand Kit AI",
|
|
53
53
|
};
|
|
54
54
|
const OAUTH_SCOPES = [
|
|
55
|
-
|
|
56
|
-
{
|
|
55
|
+
// User (always shown when oauth is selected)
|
|
56
|
+
{
|
|
57
|
+
value: "user:read",
|
|
58
|
+
label: "user:read",
|
|
59
|
+
hint: "View user details (required)",
|
|
60
|
+
feature: "oauth",
|
|
61
|
+
},
|
|
62
|
+
// Content types
|
|
63
|
+
{
|
|
64
|
+
value: "cm.content-types.management:read",
|
|
65
|
+
label: "cm.content-types.management:read",
|
|
66
|
+
hint: "View all content types",
|
|
67
|
+
feature: "cma",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
value: "cm.content-types.management:write",
|
|
71
|
+
label: "cm.content-types.management:write",
|
|
72
|
+
hint: "Create, update, remove content types",
|
|
73
|
+
feature: "cma",
|
|
74
|
+
},
|
|
75
|
+
// Entries
|
|
57
76
|
{
|
|
58
77
|
value: "cm.entries.management:read",
|
|
59
78
|
label: "cm.entries.management:read",
|
|
60
|
-
hint: "
|
|
79
|
+
hint: "View all entries",
|
|
80
|
+
feature: "cma",
|
|
61
81
|
},
|
|
62
82
|
{
|
|
63
83
|
value: "cm.entries.management:write",
|
|
64
84
|
label: "cm.entries.management:write",
|
|
65
|
-
hint: "
|
|
85
|
+
hint: "Create, update, remove entries",
|
|
86
|
+
feature: "cma",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
value: "cm.entry:publish",
|
|
90
|
+
label: "cm.entry:publish",
|
|
91
|
+
hint: "Publish an entry",
|
|
92
|
+
feature: "cma",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
value: "cm.entry:unpublish",
|
|
96
|
+
label: "cm.entry:unpublish",
|
|
97
|
+
hint: "Unpublish an entry",
|
|
98
|
+
feature: "cma",
|
|
99
|
+
},
|
|
100
|
+
// Assets
|
|
101
|
+
{
|
|
102
|
+
value: "cm.assets.management:read",
|
|
103
|
+
label: "cm.assets.management:read",
|
|
104
|
+
hint: "View all assets",
|
|
105
|
+
feature: "cma",
|
|
66
106
|
},
|
|
67
|
-
{ value: "cm.assets.management:read", label: "cm.assets.management:read", hint: "Read assets" },
|
|
68
107
|
{
|
|
69
108
|
value: "cm.assets.management:write",
|
|
70
109
|
label: "cm.assets.management:write",
|
|
71
|
-
hint: "
|
|
110
|
+
hint: "Create, update, remove assets",
|
|
111
|
+
feature: "cma",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
value: "cm.asset:publish",
|
|
115
|
+
label: "cm.asset:publish",
|
|
116
|
+
hint: "Publish an asset",
|
|
117
|
+
feature: "cma",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
value: "cm.asset:unpublish",
|
|
121
|
+
label: "cm.asset:unpublish",
|
|
122
|
+
hint: "Unpublish an asset",
|
|
123
|
+
feature: "cma",
|
|
124
|
+
},
|
|
125
|
+
// Taxonomies
|
|
126
|
+
{
|
|
127
|
+
value: "cm.taxonomies.management:read",
|
|
128
|
+
label: "cm.taxonomies.management:read",
|
|
129
|
+
hint: "View all taxonomies",
|
|
130
|
+
feature: "cma",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
value: "cm.taxonomies.management:write",
|
|
134
|
+
label: "cm.taxonomies.management:write",
|
|
135
|
+
hint: "Create, update, delete taxonomies",
|
|
136
|
+
feature: "cma",
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
value: "cm.taxonomy.terms:read",
|
|
140
|
+
label: "cm.taxonomy.terms:read",
|
|
141
|
+
hint: "View taxonomy terms",
|
|
142
|
+
feature: "cma",
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
value: "cm.taxonomy.terms:write",
|
|
146
|
+
label: "cm.taxonomy.terms:write",
|
|
147
|
+
hint: "Create, update, delete taxonomy terms",
|
|
148
|
+
feature: "cma",
|
|
149
|
+
},
|
|
150
|
+
// Environments & languages
|
|
151
|
+
{
|
|
152
|
+
value: "cm.environments.management:read",
|
|
153
|
+
label: "cm.environments.management:read",
|
|
154
|
+
hint: "View all environments",
|
|
155
|
+
feature: "cma",
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
value: "cm.languages.management:read",
|
|
159
|
+
label: "cm.languages.management:read",
|
|
160
|
+
hint: "View all languages",
|
|
161
|
+
feature: "cma",
|
|
162
|
+
},
|
|
163
|
+
// Workflows & releases
|
|
164
|
+
{
|
|
165
|
+
value: "cm.workflows.management:read",
|
|
166
|
+
label: "cm.workflows.management:read",
|
|
167
|
+
hint: "View all workflows",
|
|
168
|
+
feature: "cma",
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
value: "cm.releases.management:read",
|
|
172
|
+
label: "cm.releases.management:read",
|
|
173
|
+
hint: "View all releases",
|
|
174
|
+
feature: "cma",
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
value: "cm.releases.management:write",
|
|
178
|
+
label: "cm.releases.management:write",
|
|
179
|
+
hint: "Create, update, remove releases",
|
|
180
|
+
feature: "cma",
|
|
181
|
+
},
|
|
182
|
+
// Brand Kit
|
|
183
|
+
{
|
|
184
|
+
value: "brand-kits:read",
|
|
185
|
+
label: "brand-kits:read",
|
|
186
|
+
hint: "View Brand Kits and Voice Profiles",
|
|
187
|
+
feature: "brandkit",
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
value: "brand-kits:manage",
|
|
191
|
+
label: "brand-kits:manage",
|
|
192
|
+
hint: "Manage Brand Kits and Knowledge Vault",
|
|
193
|
+
feature: "brandkit",
|
|
194
|
+
},
|
|
195
|
+
// Launch
|
|
196
|
+
{
|
|
197
|
+
value: "launch.projects:read",
|
|
198
|
+
label: "launch.projects:read",
|
|
199
|
+
hint: "Read Launch projects",
|
|
200
|
+
feature: "launch",
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
value: "launch.projects:write",
|
|
204
|
+
label: "launch.projects:write",
|
|
205
|
+
hint: "Create, update Launch projects",
|
|
206
|
+
feature: "launch",
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
value: "launch.projects:delete",
|
|
210
|
+
label: "launch.projects:delete",
|
|
211
|
+
hint: "Delete Launch projects",
|
|
212
|
+
feature: "launch",
|
|
72
213
|
},
|
|
73
214
|
];
|
|
215
|
+
function getScopesForFeatures(features) {
|
|
216
|
+
return OAUTH_SCOPES.filter((s) => s.value !== "user:read" && (s.feature === "oauth" || features.includes(s.feature)));
|
|
217
|
+
}
|
|
74
218
|
async function runPrompts(cliOptions) {
|
|
75
219
|
p.intro("Create Contentstack App");
|
|
76
220
|
const projectName = cliOptions.projectName ??
|
|
@@ -116,17 +260,35 @@ async function runPrompts(cliOptions) {
|
|
|
116
260
|
}));
|
|
117
261
|
if (p.isCancel(features))
|
|
118
262
|
process.exit(0);
|
|
119
|
-
let scopes = cliOptions.scopes
|
|
263
|
+
let scopes = cliOptions.scopes ? [...new Set(["user:read", ...cliOptions.scopes])] : [];
|
|
120
264
|
if (features.includes("oauth") && cliOptions.scopes === undefined) {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
265
|
+
const availableScopes = getScopesForFeatures(features);
|
|
266
|
+
if (availableScopes.length > 0) {
|
|
267
|
+
const selectedScopes = await p.multiselect({
|
|
268
|
+
message: "OAuth scopes (user:read is always included):",
|
|
269
|
+
options: availableScopes,
|
|
270
|
+
required: false,
|
|
271
|
+
});
|
|
272
|
+
if (p.isCancel(selectedScopes))
|
|
273
|
+
process.exit(0);
|
|
274
|
+
scopes = ["user:read", ...selectedScopes];
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
scopes = ["user:read"];
|
|
278
|
+
}
|
|
129
279
|
}
|
|
280
|
+
const theme = cliOptions.theme ??
|
|
281
|
+
(await p.select({
|
|
282
|
+
message: "Theme mode:",
|
|
283
|
+
options: [
|
|
284
|
+
{ value: "light", label: "Light", hint: "Always light mode" },
|
|
285
|
+
{ value: "dark", label: "Dark", hint: "Always dark mode" },
|
|
286
|
+
{ value: "system", label: "System", hint: "Follow OS preference" },
|
|
287
|
+
],
|
|
288
|
+
initialValue: "light",
|
|
289
|
+
}));
|
|
290
|
+
if (p.isCancel(theme))
|
|
291
|
+
process.exit(0);
|
|
130
292
|
const detectedPm = (0, package_manager_1.detectPackageManager)();
|
|
131
293
|
const packageManager = cliOptions.packageManager ??
|
|
132
294
|
(await p.select({
|
|
@@ -146,6 +308,7 @@ async function runPrompts(cliOptions) {
|
|
|
146
308
|
region: region,
|
|
147
309
|
features: features,
|
|
148
310
|
scopes,
|
|
311
|
+
theme: theme,
|
|
149
312
|
packageManager: packageManager,
|
|
150
313
|
install: cliOptions.install,
|
|
151
314
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAkB,eAAe,EAAmB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAkB,eAAe,EAAmB,MAAM,UAAU,CAAA;AAyDhF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FtE"}
|
|
@@ -61,6 +61,11 @@ function buildContext(options) {
|
|
|
61
61
|
brandkit: options.features.includes("brandkit"),
|
|
62
62
|
},
|
|
63
63
|
scopes: options.scopes,
|
|
64
|
+
theme: options.theme,
|
|
65
|
+
themeClass: options.theme === "system" ? "" : options.theme,
|
|
66
|
+
isLightTheme: options.theme === "light",
|
|
67
|
+
isDarkTheme: options.theme === "dark",
|
|
68
|
+
isSystemTheme: options.theme === "system",
|
|
64
69
|
};
|
|
65
70
|
}
|
|
66
71
|
/** Get the --use-<pm> flag for create-next-app */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export type Feature = "cma" | "oauth" | "launch" | "brandkit";
|
|
|
6
6
|
export type Framework = "nextjs";
|
|
7
7
|
/** Supported package managers */
|
|
8
8
|
export type PackageManager = "npm" | "yarn" | "pnpm";
|
|
9
|
+
/** Theme mode for the scaffolded app */
|
|
10
|
+
export type ThemeMode = "light" | "dark" | "system";
|
|
9
11
|
/** Options parsed from CLI flags (partially filled) */
|
|
10
12
|
export interface CLIOptions {
|
|
11
13
|
projectName?: string;
|
|
@@ -13,6 +15,7 @@ export interface CLIOptions {
|
|
|
13
15
|
region?: Region;
|
|
14
16
|
features?: Feature[];
|
|
15
17
|
scopes?: string[];
|
|
18
|
+
theme?: ThemeMode;
|
|
16
19
|
packageManager?: PackageManager;
|
|
17
20
|
install: boolean;
|
|
18
21
|
}
|
|
@@ -23,6 +26,7 @@ export interface ResolvedOptions {
|
|
|
23
26
|
region: Region;
|
|
24
27
|
features: Feature[];
|
|
25
28
|
scopes: string[];
|
|
29
|
+
theme: ThemeMode;
|
|
26
30
|
packageManager: PackageManager;
|
|
27
31
|
install: boolean;
|
|
28
32
|
}
|
|
@@ -38,9 +42,15 @@ export interface TemplateContext {
|
|
|
38
42
|
brandkit: boolean;
|
|
39
43
|
};
|
|
40
44
|
scopes: string[];
|
|
45
|
+
theme: ThemeMode;
|
|
46
|
+
themeClass: string;
|
|
47
|
+
isLightTheme: boolean;
|
|
48
|
+
isDarkTheme: boolean;
|
|
49
|
+
isSystemTheme: boolean;
|
|
41
50
|
}
|
|
42
51
|
export declare const VALID_REGIONS: Region[];
|
|
43
52
|
export declare const VALID_FEATURES: Feature[];
|
|
44
53
|
export declare const VALID_FRAMEWORKS: Framework[];
|
|
45
54
|
export declare const VALID_PACKAGE_MANAGERS: PackageManager[];
|
|
55
|
+
export declare const VALID_THEME_MODES: ThemeMode[];
|
|
46
56
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvF,0CAA0C;AAC1C,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE7D,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAA;AAEhC,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAEpD,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,OAAO,CAAA;IAC1B,QAAQ,EAAE;QACR,GAAG,EAAE,OAAO,CAAA;QACZ,KAAK,EAAE,OAAO,CAAA;QACd,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,MAAM,EAAE,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvF,0CAA0C;AAC1C,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE7D,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAA;AAEhC,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAEpD,wCAAwC;AACxC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEnD,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,OAAO,CAAA;IAC1B,QAAQ,EAAE;QACR,GAAG,EAAE,OAAO,CAAA;QACZ,KAAK,EAAE,OAAO,CAAA;QACd,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,EAQjC,CAAA;AACD,eAAO,MAAM,cAAc,EAAE,OAAO,EAA2C,CAAA;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,EAAe,CAAA;AACvD,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAA4B,CAAA;AAC/E,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAAgC,CAAA"}
|
package/dist/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VALID_PACKAGE_MANAGERS = exports.VALID_FRAMEWORKS = exports.VALID_FEATURES = exports.VALID_REGIONS = void 0;
|
|
3
|
+
exports.VALID_THEME_MODES = exports.VALID_PACKAGE_MANAGERS = exports.VALID_FRAMEWORKS = exports.VALID_FEATURES = exports.VALID_REGIONS = void 0;
|
|
4
4
|
exports.VALID_REGIONS = [
|
|
5
5
|
"us",
|
|
6
6
|
"eu",
|
|
@@ -13,4 +13,5 @@ exports.VALID_REGIONS = [
|
|
|
13
13
|
exports.VALID_FEATURES = ["cma", "oauth", "launch", "brandkit"];
|
|
14
14
|
exports.VALID_FRAMEWORKS = ["nextjs"];
|
|
15
15
|
exports.VALID_PACKAGE_MANAGERS = ["npm", "yarn", "pnpm"];
|
|
16
|
+
exports.VALID_THEME_MODES = ["light", "dark", "system"];
|
|
16
17
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA0Da,QAAA,aAAa,GAAa;IACrC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,UAAU;IACV,QAAQ;IACR,QAAQ;CACT,CAAA;AACY,QAAA,cAAc,GAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;AAClE,QAAA,gBAAgB,GAAgB,CAAC,QAAQ,CAAC,CAAA;AAC1C,QAAA,sBAAsB,GAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAClE,QAAA,iBAAiB,GAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA"}
|
package/oclif.manifest.json
CHANGED
|
@@ -56,6 +56,18 @@
|
|
|
56
56
|
"multiple": false,
|
|
57
57
|
"type": "option"
|
|
58
58
|
},
|
|
59
|
+
"theme": {
|
|
60
|
+
"description": "Theme mode (light|dark|system)",
|
|
61
|
+
"name": "theme",
|
|
62
|
+
"hasDynamicHelp": false,
|
|
63
|
+
"multiple": false,
|
|
64
|
+
"options": [
|
|
65
|
+
"light",
|
|
66
|
+
"dark",
|
|
67
|
+
"system"
|
|
68
|
+
],
|
|
69
|
+
"type": "option"
|
|
70
|
+
},
|
|
59
71
|
"package-manager": {
|
|
60
72
|
"description": "Package manager (npm|yarn|pnpm)",
|
|
61
73
|
"name": "package-manager",
|
|
@@ -91,5 +103,5 @@
|
|
|
91
103
|
]
|
|
92
104
|
}
|
|
93
105
|
},
|
|
94
|
-
"version": "0.1.
|
|
106
|
+
"version": "0.1.7"
|
|
95
107
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import { useAssets } from "@timbenniks/contentstack-platform-sdk/react/hooks"
|
|
4
|
+
import Link from "next/link"
|
|
4
5
|
import { Button } from "@/components/ui/button"
|
|
5
6
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
|
|
6
7
|
|
|
@@ -32,8 +33,8 @@ export default function AssetsPage() {
|
|
|
32
33
|
</CardContent>
|
|
33
34
|
</Card>
|
|
34
35
|
|
|
35
|
-
<Button variant="outline"
|
|
36
|
-
<
|
|
36
|
+
<Button variant="outline" className="mt-6">
|
|
37
|
+
<Link href="/">Back to home</Link>
|
|
37
38
|
</Button>
|
|
38
39
|
</main>
|
|
39
40
|
)
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { BrandKit } from "@timbenniks/contentstack-platform-sdk/brandkit"
|
|
4
4
|
import { useBrandKit } from "@timbenniks/contentstack-platform-sdk/react/hooks"
|
|
5
|
+
import Link from "next/link"
|
|
5
6
|
import { Button } from "@/components/ui/button"
|
|
6
7
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
|
|
7
8
|
import { useEffect, useState } from "react"
|
|
@@ -48,8 +49,8 @@ export default function BrandKitPage() {
|
|
|
48
49
|
</CardContent>
|
|
49
50
|
</Card>
|
|
50
51
|
|
|
51
|
-
<Button variant="outline"
|
|
52
|
-
<
|
|
52
|
+
<Button variant="outline" className="mt-6">
|
|
53
|
+
<Link href="/">Back to home</Link>
|
|
53
54
|
</Button>
|
|
54
55
|
</main>
|
|
55
56
|
)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import { useEntries } from "@timbenniks/contentstack-platform-sdk/react/hooks"
|
|
4
|
+
import Link from "next/link"
|
|
4
5
|
import { Button } from "@/components/ui/button"
|
|
5
6
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
|
|
6
7
|
|
|
@@ -34,8 +35,8 @@ export default function EntriesPage() {
|
|
|
34
35
|
</CardContent>
|
|
35
36
|
</Card>
|
|
36
37
|
|
|
37
|
-
<Button variant="outline"
|
|
38
|
-
<
|
|
38
|
+
<Button variant="outline" className="mt-6">
|
|
39
|
+
<Link href="/">Back to home</Link>
|
|
39
40
|
</Button>
|
|
40
41
|
</main>
|
|
41
42
|
)
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
@import "tw-animate-css";
|
|
3
3
|
@import "shadcn/tailwind.css";
|
|
4
4
|
@import "@timbenniks/contentstack-platform-sdk/ui/tokens.css";
|
|
5
|
+
{{#if isSystemTheme}}
|
|
5
6
|
|
|
6
7
|
@custom-variant dark (&:is(.dark *));
|
|
8
|
+
{{/if}}
|
|
7
9
|
|
|
8
10
|
@theme inline {
|
|
9
11
|
--color-background: var(--background);
|
|
@@ -53,6 +55,42 @@
|
|
|
53
55
|
* Token values come from @timbenniks/contentstack-platform-sdk/ui/tokens.css
|
|
54
56
|
* See: https://github.com/timbenniks/contentstack-platform-sdk
|
|
55
57
|
*/
|
|
58
|
+
{{#if isDarkTheme}}
|
|
59
|
+
:root {
|
|
60
|
+
--radius: 0.5rem;
|
|
61
|
+
--background: var(--cs-color-brand-secondary-dark);
|
|
62
|
+
--foreground: var(--cs-color-base-white-5);
|
|
63
|
+
--card: var(--cs-color-brand-secondary-darker);
|
|
64
|
+
--card-foreground: var(--cs-color-base-white-5);
|
|
65
|
+
--popover: var(--cs-color-brand-secondary-darker);
|
|
66
|
+
--popover-foreground: var(--cs-color-base-white-5);
|
|
67
|
+
--primary: var(--cs-color-brand-primary-base);
|
|
68
|
+
--primary-foreground: var(--cs-color-base-white-5);
|
|
69
|
+
--secondary: var(--cs-color-brand-secondary-darker);
|
|
70
|
+
--secondary-foreground: var(--cs-color-base-white-10);
|
|
71
|
+
--muted: var(--cs-color-brand-secondary-darker);
|
|
72
|
+
--muted-foreground: var(--cs-color-brand-secondary-lighter);
|
|
73
|
+
--accent: var(--cs-color-brand-primary-dark);
|
|
74
|
+
--accent-foreground: var(--cs-color-brand-primary-light);
|
|
75
|
+
--destructive: var(--cs-color-brand-warning-base);
|
|
76
|
+
--border: var(--cs-color-brand-secondary-base);
|
|
77
|
+
--input: var(--cs-color-brand-secondary-base);
|
|
78
|
+
--ring: var(--cs-color-brand-primary-base);
|
|
79
|
+
--chart-1: var(--cs-color-brand-primary-light);
|
|
80
|
+
--chart-2: var(--cs-color-brand-success-base);
|
|
81
|
+
--chart-3: var(--cs-color-brand-info-base);
|
|
82
|
+
--chart-4: var(--cs-color-brand-attention-base);
|
|
83
|
+
--chart-5: var(--cs-color-accent-medium-orchid);
|
|
84
|
+
--sidebar: var(--cs-color-brand-secondary-darker);
|
|
85
|
+
--sidebar-foreground: var(--cs-color-base-white-5);
|
|
86
|
+
--sidebar-primary: var(--cs-color-brand-primary-base);
|
|
87
|
+
--sidebar-primary-foreground: var(--cs-color-base-white-5);
|
|
88
|
+
--sidebar-accent: var(--cs-color-brand-primary-dark);
|
|
89
|
+
--sidebar-accent-foreground: var(--cs-color-brand-primary-light);
|
|
90
|
+
--sidebar-border: var(--cs-color-brand-secondary-base);
|
|
91
|
+
--sidebar-ring: var(--cs-color-brand-primary-base);
|
|
92
|
+
}
|
|
93
|
+
{{else}}
|
|
56
94
|
:root {
|
|
57
95
|
--radius: 0.5rem;
|
|
58
96
|
--background: var(--cs-color-base-white-5);
|
|
@@ -87,6 +125,45 @@
|
|
|
87
125
|
--sidebar-border: var(--cs-color-brand-secondary-lightest);
|
|
88
126
|
--sidebar-ring: var(--cs-color-brand-primary-base);
|
|
89
127
|
}
|
|
128
|
+
{{#if isSystemTheme}}
|
|
129
|
+
|
|
130
|
+
@media (prefers-color-scheme: dark) {
|
|
131
|
+
:root {
|
|
132
|
+
--background: var(--cs-color-brand-secondary-dark);
|
|
133
|
+
--foreground: var(--cs-color-base-white-5);
|
|
134
|
+
--card: var(--cs-color-brand-secondary-darker);
|
|
135
|
+
--card-foreground: var(--cs-color-base-white-5);
|
|
136
|
+
--popover: var(--cs-color-brand-secondary-darker);
|
|
137
|
+
--popover-foreground: var(--cs-color-base-white-5);
|
|
138
|
+
--primary: var(--cs-color-brand-primary-base);
|
|
139
|
+
--primary-foreground: var(--cs-color-base-white-5);
|
|
140
|
+
--secondary: var(--cs-color-brand-secondary-darker);
|
|
141
|
+
--secondary-foreground: var(--cs-color-base-white-10);
|
|
142
|
+
--muted: var(--cs-color-brand-secondary-darker);
|
|
143
|
+
--muted-foreground: var(--cs-color-brand-secondary-lighter);
|
|
144
|
+
--accent: var(--cs-color-brand-primary-dark);
|
|
145
|
+
--accent-foreground: var(--cs-color-brand-primary-light);
|
|
146
|
+
--destructive: var(--cs-color-brand-warning-base);
|
|
147
|
+
--border: var(--cs-color-brand-secondary-base);
|
|
148
|
+
--input: var(--cs-color-brand-secondary-base);
|
|
149
|
+
--ring: var(--cs-color-brand-primary-base);
|
|
150
|
+
--chart-1: var(--cs-color-brand-primary-light);
|
|
151
|
+
--chart-2: var(--cs-color-brand-success-base);
|
|
152
|
+
--chart-3: var(--cs-color-brand-info-base);
|
|
153
|
+
--chart-4: var(--cs-color-brand-attention-base);
|
|
154
|
+
--chart-5: var(--cs-color-accent-medium-orchid);
|
|
155
|
+
--sidebar: var(--cs-color-brand-secondary-darker);
|
|
156
|
+
--sidebar-foreground: var(--cs-color-base-white-5);
|
|
157
|
+
--sidebar-primary: var(--cs-color-brand-primary-base);
|
|
158
|
+
--sidebar-primary-foreground: var(--cs-color-base-white-5);
|
|
159
|
+
--sidebar-accent: var(--cs-color-brand-primary-dark);
|
|
160
|
+
--sidebar-accent-foreground: var(--cs-color-brand-primary-light);
|
|
161
|
+
--sidebar-border: var(--cs-color-brand-secondary-base);
|
|
162
|
+
--sidebar-ring: var(--cs-color-brand-primary-base);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
{{/if}}
|
|
166
|
+
{{/if}}
|
|
90
167
|
|
|
91
168
|
@layer base {
|
|
92
169
|
* {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { LaunchProject } from "@timbenniks/contentstack-platform-sdk/launch"
|
|
4
4
|
import { useLaunch } from "@timbenniks/contentstack-platform-sdk/react/hooks"
|
|
5
|
+
import Link from "next/link"
|
|
5
6
|
import { Button } from "@/components/ui/button"
|
|
6
7
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
|
|
7
8
|
import { useEffect, useState } from "react"
|
|
@@ -48,8 +49,8 @@ export default function LaunchPage() {
|
|
|
48
49
|
</CardContent>
|
|
49
50
|
</Card>
|
|
50
51
|
|
|
51
|
-
<Button variant="outline"
|
|
52
|
-
<
|
|
52
|
+
<Button variant="outline" className="mt-6">
|
|
53
|
+
<Link href="/">Back to home</Link>
|
|
53
54
|
</Button>
|
|
54
55
|
</main>
|
|
55
56
|
)
|
|
@@ -26,7 +26,7 @@ export default function RootLayout({
|
|
|
26
26
|
children: React.ReactNode
|
|
27
27
|
}>) {
|
|
28
28
|
return (
|
|
29
|
-
<html lang="en">
|
|
29
|
+
<html lang="en"{{#if themeClass}} className="{{themeClass}}"{{/if}}>
|
|
30
30
|
<body className={`${geistSans.variable} ${geistMono.variable} antialiased`}>
|
|
31
31
|
{{#if hasClientFeatures}}<Providers>{children}</Providers>{{else}}{children}{{/if}}
|
|
32
32
|
</body>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{{#if features.oauth}}
|
|
2
2
|
import { auth, signIn, signOut } from "@/lib/auth"
|
|
3
|
+
import Link from "next/link"
|
|
3
4
|
import { Button } from "@/components/ui/button"
|
|
4
5
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
|
|
5
6
|
|
|
@@ -24,8 +25,8 @@ export default async function Home() {
|
|
|
24
25
|
<CardDescription>Manage your entries and assets</CardDescription>
|
|
25
26
|
</CardHeader>
|
|
26
27
|
<CardContent className="flex gap-2">
|
|
27
|
-
<Button variant="secondary"
|
|
28
|
-
<Button variant="secondary"
|
|
28
|
+
<Button variant="secondary"><Link href="/entries">Entries</Link></Button>
|
|
29
|
+
<Button variant="secondary"><Link href="/assets">Assets</Link></Button>
|
|
29
30
|
</CardContent>
|
|
30
31
|
</Card>
|
|
31
32
|
{{/if}}
|
|
@@ -36,7 +37,7 @@ export default async function Home() {
|
|
|
36
37
|
<CardDescription>Manage your deployment projects</CardDescription>
|
|
37
38
|
</CardHeader>
|
|
38
39
|
<CardContent>
|
|
39
|
-
<Button variant="secondary"
|
|
40
|
+
<Button variant="secondary"><Link href="/launch">Projects</Link></Button>
|
|
40
41
|
</CardContent>
|
|
41
42
|
</Card>
|
|
42
43
|
{{/if}}
|
|
@@ -47,7 +48,7 @@ export default async function Home() {
|
|
|
47
48
|
<CardDescription>Manage your brand kits and voice profiles</CardDescription>
|
|
48
49
|
</CardHeader>
|
|
49
50
|
<CardContent>
|
|
50
|
-
<Button variant="secondary"
|
|
51
|
+
<Button variant="secondary"><Link href="/brandkit">Brand Kits</Link></Button>
|
|
51
52
|
</CardContent>
|
|
52
53
|
</Card>
|
|
53
54
|
{{/if}}
|
|
@@ -95,6 +96,7 @@ export default async function Home() {
|
|
|
95
96
|
)
|
|
96
97
|
}
|
|
97
98
|
{{else}}
|
|
99
|
+
import Link from "next/link"
|
|
98
100
|
import { Button } from "@/components/ui/button"
|
|
99
101
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
|
|
100
102
|
|
|
@@ -126,8 +128,8 @@ export default function Home() {
|
|
|
126
128
|
<CardTitle>Content Management</CardTitle>
|
|
127
129
|
</CardHeader>
|
|
128
130
|
<CardContent className="flex gap-2">
|
|
129
|
-
<Button variant="secondary"
|
|
130
|
-
<Button variant="secondary"
|
|
131
|
+
<Button variant="secondary"><Link href="/entries">Entries</Link></Button>
|
|
132
|
+
<Button variant="secondary"><Link href="/assets">Assets</Link></Button>
|
|
131
133
|
</CardContent>
|
|
132
134
|
</Card>
|
|
133
135
|
{{/if}}
|
|
@@ -138,7 +140,7 @@ export default function Home() {
|
|
|
138
140
|
<CardTitle>Launch</CardTitle>
|
|
139
141
|
</CardHeader>
|
|
140
142
|
<CardContent>
|
|
141
|
-
<Button variant="secondary"
|
|
143
|
+
<Button variant="secondary"><Link href="/launch">Projects</Link></Button>
|
|
142
144
|
</CardContent>
|
|
143
145
|
</Card>
|
|
144
146
|
{{/if}}
|
|
@@ -149,7 +151,7 @@ export default function Home() {
|
|
|
149
151
|
<CardTitle>Brand Kit AI</CardTitle>
|
|
150
152
|
</CardHeader>
|
|
151
153
|
<CardContent>
|
|
152
|
-
<Button variant="secondary"
|
|
154
|
+
<Button variant="secondary"><Link href="/brandkit">Brand Kits</Link></Button>
|
|
153
155
|
</CardContent>
|
|
154
156
|
</Card>
|
|
155
157
|
{{/if}}
|