@timbenniks/contentstack-platform-app-scaffold 0.1.5 → 0.1.6
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/services/prompts.d.ts.map +1 -1
- package/dist/services/prompts.js +94 -6
- package/dist/services/prompts.js.map +1 -1
- package/oclif.manifest.json +5 -15
- package/package.json +1 -1
- package/templates/nextjs/app/globals.css.hbs +77 -0
- package/templates/nextjs/app/layout.tsx.hbs +1 -1
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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAKV,eAAe,EAChB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/services/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAKV,eAAe,EAChB,MAAM,UAAU,CAAA;AAiIjB,wBAAsB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAyFjF"}
|
package/dist/services/prompts.js
CHANGED
|
@@ -52,23 +52,111 @@ const FEATURE_LABELS = {
|
|
|
52
52
|
brandkit: "Brand Kit AI",
|
|
53
53
|
};
|
|
54
54
|
const OAUTH_SCOPES = [
|
|
55
|
-
|
|
56
|
-
{ value: "
|
|
55
|
+
// User
|
|
56
|
+
{ value: "user:read", label: "user:read", hint: "View user details (required)" },
|
|
57
|
+
// Content types
|
|
58
|
+
{
|
|
59
|
+
value: "cm.content-types.management:read",
|
|
60
|
+
label: "cm.content-types.management:read",
|
|
61
|
+
hint: "View all content types",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
value: "cm.content-types.management:write",
|
|
65
|
+
label: "cm.content-types.management:write",
|
|
66
|
+
hint: "Create, update, remove content types",
|
|
67
|
+
},
|
|
68
|
+
// Entries
|
|
57
69
|
{
|
|
58
70
|
value: "cm.entries.management:read",
|
|
59
71
|
label: "cm.entries.management:read",
|
|
60
|
-
hint: "
|
|
72
|
+
hint: "View all entries",
|
|
61
73
|
},
|
|
62
74
|
{
|
|
63
75
|
value: "cm.entries.management:write",
|
|
64
76
|
label: "cm.entries.management:write",
|
|
65
|
-
hint: "
|
|
77
|
+
hint: "Create, update, remove entries",
|
|
78
|
+
},
|
|
79
|
+
{ value: "cm.entry:publish", label: "cm.entry:publish", hint: "Publish an entry" },
|
|
80
|
+
{ value: "cm.entry:unpublish", label: "cm.entry:unpublish", hint: "Unpublish an entry" },
|
|
81
|
+
// Assets
|
|
82
|
+
{
|
|
83
|
+
value: "cm.assets.management:read",
|
|
84
|
+
label: "cm.assets.management:read",
|
|
85
|
+
hint: "View all assets",
|
|
66
86
|
},
|
|
67
|
-
{ value: "cm.assets.management:read", label: "cm.assets.management:read", hint: "Read assets" },
|
|
68
87
|
{
|
|
69
88
|
value: "cm.assets.management:write",
|
|
70
89
|
label: "cm.assets.management:write",
|
|
71
|
-
hint: "
|
|
90
|
+
hint: "Create, update, remove assets",
|
|
91
|
+
},
|
|
92
|
+
{ value: "cm.asset:publish", label: "cm.asset:publish", hint: "Publish an asset" },
|
|
93
|
+
{ value: "cm.asset:unpublish", label: "cm.asset:unpublish", hint: "Unpublish an asset" },
|
|
94
|
+
// Taxonomies
|
|
95
|
+
{
|
|
96
|
+
value: "cm.taxonomies.management:read",
|
|
97
|
+
label: "cm.taxonomies.management:read",
|
|
98
|
+
hint: "View all taxonomies",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
value: "cm.taxonomies.management:write",
|
|
102
|
+
label: "cm.taxonomies.management:write",
|
|
103
|
+
hint: "Create, update, delete taxonomies",
|
|
104
|
+
},
|
|
105
|
+
{ value: "cm.taxonomy.terms:read", label: "cm.taxonomy.terms:read", hint: "View taxonomy terms" },
|
|
106
|
+
{
|
|
107
|
+
value: "cm.taxonomy.terms:write",
|
|
108
|
+
label: "cm.taxonomy.terms:write",
|
|
109
|
+
hint: "Create, update, delete taxonomy terms",
|
|
110
|
+
},
|
|
111
|
+
// Environments & languages
|
|
112
|
+
{
|
|
113
|
+
value: "cm.environments.management:read",
|
|
114
|
+
label: "cm.environments.management:read",
|
|
115
|
+
hint: "View all environments",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
value: "cm.languages.management:read",
|
|
119
|
+
label: "cm.languages.management:read",
|
|
120
|
+
hint: "View all languages",
|
|
121
|
+
},
|
|
122
|
+
// Workflows & releases
|
|
123
|
+
{
|
|
124
|
+
value: "cm.workflows.management:read",
|
|
125
|
+
label: "cm.workflows.management:read",
|
|
126
|
+
hint: "View all workflows",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
value: "cm.releases.management:read",
|
|
130
|
+
label: "cm.releases.management:read",
|
|
131
|
+
hint: "View all releases",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
value: "cm.releases.management:write",
|
|
135
|
+
label: "cm.releases.management:write",
|
|
136
|
+
hint: "Create, update, remove releases",
|
|
137
|
+
},
|
|
138
|
+
// Brand Kit
|
|
139
|
+
{
|
|
140
|
+
value: "brand-kits:read",
|
|
141
|
+
label: "brand-kits:read",
|
|
142
|
+
hint: "View Brand Kits and Voice Profiles",
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
value: "brand-kits:manage",
|
|
146
|
+
label: "brand-kits:manage",
|
|
147
|
+
hint: "Manage Brand Kits and Knowledge Vault",
|
|
148
|
+
},
|
|
149
|
+
// Launch
|
|
150
|
+
{ value: "launch.projects:read", label: "launch.projects:read", hint: "Read Launch projects" },
|
|
151
|
+
{
|
|
152
|
+
value: "launch.projects:write",
|
|
153
|
+
label: "launch.projects:write",
|
|
154
|
+
hint: "Create, update Launch projects",
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
value: "launch.projects:delete",
|
|
158
|
+
label: "launch.projects:delete",
|
|
159
|
+
hint: "Delete Launch projects",
|
|
72
160
|
},
|
|
73
161
|
];
|
|
74
162
|
async function runPrompts(cliOptions) {
|
|
@@ -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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"}
|
package/oclif.manifest.json
CHANGED
|
@@ -21,9 +21,7 @@
|
|
|
21
21
|
"name": "framework",
|
|
22
22
|
"hasDynamicHelp": false,
|
|
23
23
|
"multiple": false,
|
|
24
|
-
"options": [
|
|
25
|
-
"nextjs"
|
|
26
|
-
],
|
|
24
|
+
"options": ["nextjs"],
|
|
27
25
|
"type": "option"
|
|
28
26
|
},
|
|
29
27
|
"region": {
|
|
@@ -61,11 +59,7 @@
|
|
|
61
59
|
"name": "package-manager",
|
|
62
60
|
"hasDynamicHelp": false,
|
|
63
61
|
"multiple": false,
|
|
64
|
-
"options": [
|
|
65
|
-
"npm",
|
|
66
|
-
"yarn",
|
|
67
|
-
"pnpm"
|
|
68
|
-
],
|
|
62
|
+
"options": ["npm", "yarn", "pnpm"],
|
|
69
63
|
"type": "option"
|
|
70
64
|
},
|
|
71
65
|
"no-install": {
|
|
@@ -84,12 +78,8 @@
|
|
|
84
78
|
"strict": true,
|
|
85
79
|
"enableJsonFlag": false,
|
|
86
80
|
"isESM": false,
|
|
87
|
-
"relativePath": [
|
|
88
|
-
"dist",
|
|
89
|
-
"commands",
|
|
90
|
-
"scaffold.js"
|
|
91
|
-
]
|
|
81
|
+
"relativePath": ["dist", "commands", "scaffold.js"]
|
|
92
82
|
}
|
|
93
83
|
},
|
|
94
|
-
"version": "0.1.
|
|
95
|
-
}
|
|
84
|
+
"version": "0.1.6"
|
|
85
|
+
}
|
package/package.json
CHANGED
|
@@ -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
|
* {
|
|
@@ -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>
|