cmssy-cli 0.16.0 ā 0.18.1
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/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +29 -22
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dev.js +87 -38
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts +1 -5
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +136 -304
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/publish.d.ts +1 -0
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +47 -29
- package/dist/commands/publish.js.map +1 -1
- package/dist/dev-ui/app.js +86 -23
- package/dist/types/block-config.d.ts +1 -1
- package/dist/types/block-config.d.ts.map +1 -1
- package/dist/utils/builder.d.ts.map +1 -1
- package/dist/utils/builder.js +2 -0
- package/dist/utils/builder.js.map +1 -1
- package/dist/utils/field-schema.js +3 -3
- package/dist/utils/field-schema.js.map +1 -1
- package/dist/utils/type-generator.js +1 -1
- package/dist/utils/type-generator.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/init.js
CHANGED
|
@@ -5,7 +5,7 @@ import inquirer from "inquirer";
|
|
|
5
5
|
import ora from "ora";
|
|
6
6
|
import path from "path";
|
|
7
7
|
import { generateTypes } from "../utils/type-generator.js";
|
|
8
|
-
export async function initCommand(name
|
|
8
|
+
export async function initCommand(name) {
|
|
9
9
|
console.log(chalk.blue.bold("\nšØ Cmssy - Initialize Project\n"));
|
|
10
10
|
const answers = await inquirer.prompt([
|
|
11
11
|
{
|
|
@@ -19,25 +19,6 @@ export async function initCommand(name, options) {
|
|
|
19
19
|
return "Project name must contain only lowercase letters, numbers, hyphens, and underscores";
|
|
20
20
|
},
|
|
21
21
|
},
|
|
22
|
-
{
|
|
23
|
-
type: "list",
|
|
24
|
-
name: "framework",
|
|
25
|
-
message: "Framework:",
|
|
26
|
-
choices: [
|
|
27
|
-
{ name: "React", value: "react" },
|
|
28
|
-
{ name: "Vue", value: "vue" },
|
|
29
|
-
{ name: "Angular", value: "angular" },
|
|
30
|
-
{ name: "Svelte", value: "svelte" },
|
|
31
|
-
{ name: "Vanilla JS", value: "vanilla" },
|
|
32
|
-
],
|
|
33
|
-
default: options?.framework || "react",
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
type: "confirm",
|
|
37
|
-
name: "useTailwind",
|
|
38
|
-
message: "Use Tailwind CSS v4?",
|
|
39
|
-
default: true,
|
|
40
|
-
},
|
|
41
22
|
{
|
|
42
23
|
type: "input",
|
|
43
24
|
name: "authorName",
|
|
@@ -58,7 +39,6 @@ export async function initCommand(name, options) {
|
|
|
58
39
|
},
|
|
59
40
|
]);
|
|
60
41
|
const projectPath = path.join(process.cwd(), answers.projectName);
|
|
61
|
-
// Check if directory exists
|
|
62
42
|
if (fs.existsSync(projectPath)) {
|
|
63
43
|
console.error(chalk.red(`\nā Directory "${answers.projectName}" already exists\n`));
|
|
64
44
|
process.exit(1);
|
|
@@ -68,13 +48,14 @@ export async function initCommand(name, options) {
|
|
|
68
48
|
// Create project directory
|
|
69
49
|
fs.mkdirSync(projectPath, { recursive: true });
|
|
70
50
|
// Create directory structure
|
|
71
|
-
const dirs = ["blocks", "templates", "public", ".cmssy"];
|
|
51
|
+
const dirs = ["blocks", "templates", "public", "styles", ".cmssy"];
|
|
72
52
|
dirs.forEach((dir) => {
|
|
73
53
|
fs.mkdirSync(path.join(projectPath, dir), { recursive: true });
|
|
74
54
|
});
|
|
75
55
|
// Create cmssy.config.js
|
|
76
56
|
const config = {
|
|
77
|
-
framework:
|
|
57
|
+
framework: "react",
|
|
58
|
+
projectName: answers.projectName,
|
|
78
59
|
author: {
|
|
79
60
|
name: answers.authorName,
|
|
80
61
|
email: answers.authorEmail,
|
|
@@ -95,60 +76,47 @@ export async function initCommand(name, options) {
|
|
|
95
76
|
dev: "cmssy dev",
|
|
96
77
|
build: "cmssy build",
|
|
97
78
|
},
|
|
98
|
-
dependencies: {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
79
|
+
dependencies: {
|
|
80
|
+
react: "^19.0.0",
|
|
81
|
+
"react-dom": "^19.0.0",
|
|
82
|
+
},
|
|
83
|
+
devDependencies: {
|
|
84
|
+
"@types/react": "^19.0.0",
|
|
85
|
+
"@types/react-dom": "^19.0.0",
|
|
86
|
+
typescript: "^5.7.2",
|
|
105
87
|
tailwindcss: "^4.0.0",
|
|
106
88
|
"@tailwindcss/postcss": "^4.0.0",
|
|
107
89
|
postcss: "^8.4.49",
|
|
108
90
|
"postcss-cli": "^11.0.0",
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (answers.framework === "react") {
|
|
113
|
-
packageJson.dependencies = {
|
|
114
|
-
react: "^19.2.3",
|
|
115
|
-
"react-dom": "^19.2.3",
|
|
116
|
-
};
|
|
117
|
-
packageJson.devDependencies = {
|
|
118
|
-
...packageJson.devDependencies,
|
|
119
|
-
"@types/react": "^19.2.7",
|
|
120
|
-
"@types/react-dom": "^19",
|
|
121
|
-
typescript: "^5.7.2",
|
|
122
|
-
};
|
|
123
|
-
}
|
|
91
|
+
"postcss-import": "^16.1.0",
|
|
92
|
+
},
|
|
93
|
+
};
|
|
124
94
|
fs.writeFileSync(path.join(projectPath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
|
|
125
|
-
// Create tsconfig.json
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
"cmssy-cli/config": ["./node_modules/cmssy-cli/config"],
|
|
145
|
-
},
|
|
95
|
+
// Create tsconfig.json
|
|
96
|
+
const tsConfig = {
|
|
97
|
+
compilerOptions: {
|
|
98
|
+
target: "ES2020",
|
|
99
|
+
module: "ESNext",
|
|
100
|
+
lib: ["ES2020", "DOM", "DOM.Iterable"],
|
|
101
|
+
jsx: "react-jsx",
|
|
102
|
+
moduleResolution: "bundler",
|
|
103
|
+
allowImportingTsExtensions: true,
|
|
104
|
+
resolveJsonModule: true,
|
|
105
|
+
isolatedModules: true,
|
|
106
|
+
noEmit: true,
|
|
107
|
+
strict: true,
|
|
108
|
+
skipLibCheck: true,
|
|
109
|
+
esModuleInterop: true,
|
|
110
|
+
allowSyntheticDefaultImports: true,
|
|
111
|
+
forceConsistentCasingInFileNames: true,
|
|
112
|
+
paths: {
|
|
113
|
+
"cmssy-cli/config": ["./node_modules/cmssy-cli/config"],
|
|
146
114
|
},
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
115
|
+
},
|
|
116
|
+
include: ["blocks/**/*", "templates/**/*"],
|
|
117
|
+
exclude: ["node_modules", "dist", "public"],
|
|
118
|
+
};
|
|
119
|
+
fs.writeFileSync(path.join(projectPath, "tsconfig.json"), JSON.stringify(tsConfig, null, 2) + "\n");
|
|
152
120
|
// Create .gitignore
|
|
153
121
|
const gitignore = `node_modules/
|
|
154
122
|
dist/
|
|
@@ -156,19 +124,45 @@ public/
|
|
|
156
124
|
.env
|
|
157
125
|
.DS_Store
|
|
158
126
|
*.log
|
|
159
|
-
.cmssy
|
|
127
|
+
.cmssy
|
|
160
128
|
`;
|
|
161
129
|
fs.writeFileSync(path.join(projectPath, ".gitignore"), gitignore);
|
|
162
|
-
// Create postcss.config.js
|
|
163
|
-
|
|
164
|
-
const postcssConfig = `export default {
|
|
130
|
+
// Create postcss.config.js
|
|
131
|
+
const postcssConfig = `export default {
|
|
165
132
|
plugins: {
|
|
166
|
-
|
|
133
|
+
"postcss-import": {
|
|
134
|
+
path: ["styles"],
|
|
135
|
+
},
|
|
136
|
+
"@tailwindcss/postcss": {},
|
|
167
137
|
},
|
|
168
138
|
};
|
|
169
139
|
`;
|
|
170
|
-
|
|
171
|
-
|
|
140
|
+
fs.writeFileSync(path.join(projectPath, "postcss.config.js"), postcssConfig);
|
|
141
|
+
// Create styles/main.css
|
|
142
|
+
const mainCss = `@import "tailwindcss";
|
|
143
|
+
|
|
144
|
+
/* Set default border color (Tailwind v4 reset uses currentColor) */
|
|
145
|
+
@layer base {
|
|
146
|
+
*,
|
|
147
|
+
::after,
|
|
148
|
+
::before {
|
|
149
|
+
border-color: var(--border, currentColor);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* Custom theme - customize your design system here */
|
|
154
|
+
/* @theme inline {
|
|
155
|
+
--color-primary: var(--primary);
|
|
156
|
+
--color-border: var(--border);
|
|
157
|
+
} */
|
|
158
|
+
|
|
159
|
+
/* CSS variables for theming */
|
|
160
|
+
/* :root {
|
|
161
|
+
--primary: oklch(0.6 0.25 292);
|
|
162
|
+
--border: oklch(0.9 0 0);
|
|
163
|
+
} */
|
|
164
|
+
`;
|
|
165
|
+
fs.writeFileSync(path.join(projectPath, "styles", "main.css"), mainCss);
|
|
172
166
|
// Create .env.example
|
|
173
167
|
const envExample = `# Cmssy API Configuration
|
|
174
168
|
# Run 'cmssy configure' to set these values
|
|
@@ -177,141 +171,59 @@ public/
|
|
|
177
171
|
CMSSY_API_URL=https://api.cmssy.io/graphql
|
|
178
172
|
|
|
179
173
|
# Cmssy API Token (get from Dashboard ā API Tokens)
|
|
180
|
-
# Required scopes: marketplace:publish (for marketplace) or workspace:write (for workspace)
|
|
181
174
|
CMSSY_API_TOKEN=
|
|
182
175
|
|
|
183
|
-
# Workspace ID (
|
|
184
|
-
# Get from Dashboard ā Workspace Settings
|
|
176
|
+
# Workspace ID (for workspace publish)
|
|
185
177
|
CMSSY_WORKSPACE_ID=
|
|
186
178
|
`;
|
|
187
179
|
fs.writeFileSync(path.join(projectPath, ".env.example"), envExample);
|
|
188
180
|
// Create README.md
|
|
189
181
|
const readme = `# ${answers.projectName}
|
|
190
182
|
|
|
191
|
-
Cmssy project for building reusable UI blocks
|
|
183
|
+
Cmssy project for building reusable UI blocks.
|
|
192
184
|
|
|
193
185
|
## Getting Started
|
|
194
186
|
|
|
195
187
|
\`\`\`bash
|
|
196
|
-
# Install dependencies
|
|
197
188
|
npm install
|
|
198
|
-
|
|
199
|
-
# Start development server with hot reload (defaults to http://localhost:3000)
|
|
200
|
-
npm run dev
|
|
201
|
-
|
|
202
|
-
# Or specify a custom port
|
|
203
|
-
cmssy dev -p 3002
|
|
204
|
-
|
|
205
|
-
# Create a new block
|
|
206
|
-
cmssy create block my-block
|
|
207
|
-
|
|
208
|
-
# Build for production
|
|
209
|
-
npm run build
|
|
210
|
-
\`\`\`
|
|
211
|
-
|
|
212
|
-
## Available Commands
|
|
213
|
-
|
|
214
|
-
### Development
|
|
215
|
-
\`\`\`bash
|
|
216
|
-
# Start dev server with preview UI (uses npm script)
|
|
217
189
|
npm run dev
|
|
218
|
-
|
|
219
|
-
# Create a new block
|
|
220
|
-
cmssy create block <name>
|
|
221
|
-
|
|
222
|
-
# Create a new page template
|
|
223
|
-
cmssy create template <name>
|
|
224
|
-
|
|
225
|
-
# Build all blocks and templates (uses npm script)
|
|
226
|
-
npm run build
|
|
227
190
|
\`\`\`
|
|
228
191
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
\`\`\`bash
|
|
232
|
-
# Configure API credentials (run once)
|
|
233
|
-
cmssy configure
|
|
234
|
-
|
|
235
|
-
# MARKETPLACE PUBLISH (public, requires review)
|
|
236
|
-
cmssy publish hero --marketplace # single block
|
|
237
|
-
cmssy publish hero pricing --marketplace # multiple blocks
|
|
238
|
-
cmssy publish --all --marketplace # all blocks/templates
|
|
239
|
-
cmssy publish hero --marketplace --patch # with version bump
|
|
240
|
-
|
|
241
|
-
# WORKSPACE PUBLISH (private, no review)
|
|
242
|
-
cmssy publish hero --workspace ws_abc123 # explicit workspace ID
|
|
243
|
-
cmssy publish --all --workspace # uses CMSSY_WORKSPACE_ID from .env
|
|
244
|
-
cmssy publish hero -w ws_abc123 --minor # with version bump
|
|
245
|
-
|
|
246
|
-
# Preview what would be published
|
|
247
|
-
cmssy publish --all --marketplace --dry-run
|
|
248
|
-
\`\`\`
|
|
192
|
+
## Commands
|
|
249
193
|
|
|
250
|
-
### Syncing from Marketplace
|
|
251
194
|
\`\`\`bash
|
|
252
|
-
#
|
|
253
|
-
cmssy
|
|
254
|
-
|
|
255
|
-
#
|
|
256
|
-
cmssy sync --workspace ws_abc123
|
|
195
|
+
cmssy dev # Start dev server
|
|
196
|
+
cmssy create block <name> # Create new block
|
|
197
|
+
cmssy build # Build for production
|
|
198
|
+
cmssy publish --workspace # Publish to workspace
|
|
257
199
|
\`\`\`
|
|
258
200
|
|
|
259
201
|
## Project Structure
|
|
260
202
|
|
|
261
203
|
\`\`\`
|
|
262
204
|
${answers.projectName}/
|
|
263
|
-
āāā blocks/
|
|
264
|
-
|
|
265
|
-
ā
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
ā ā āāā index.css
|
|
269
|
-
ā āāā package.json
|
|
270
|
-
ā āāā preview.json
|
|
271
|
-
āāā templates/ # Your page templates
|
|
272
|
-
āāā public/ # Build output
|
|
273
|
-
āāā cmssy.config.js # Project configuration
|
|
274
|
-
āāā .env # API credentials (created by configure)
|
|
275
|
-
āāā .env.example # API credentials template
|
|
205
|
+
āāā blocks/ # Your UI blocks
|
|
206
|
+
āāā styles/
|
|
207
|
+
ā āāā main.css # Global Tailwind styles
|
|
208
|
+
āāā public/ # Build output
|
|
209
|
+
āāā cmssy.config.js
|
|
276
210
|
\`\`\`
|
|
277
|
-
|
|
278
|
-
## Configuration
|
|
279
|
-
|
|
280
|
-
Edit \`cmssy.config.js\` to customize:
|
|
281
|
-
- Framework (${answers.framework})
|
|
282
|
-
- Author information
|
|
283
|
-
- Build settings
|
|
284
|
-
|
|
285
|
-
## Framework
|
|
286
|
-
|
|
287
|
-
- ${answers.framework}
|
|
288
|
-
|
|
289
|
-
## Author
|
|
290
|
-
|
|
291
|
-
- ${answers.authorName} ${answers.authorEmail ? `<${answers.authorEmail}>` : ""}
|
|
292
|
-
|
|
293
|
-
## Documentation
|
|
294
|
-
|
|
295
|
-
For more information, visit: https://cmssy.io/docs
|
|
296
211
|
`;
|
|
297
212
|
fs.writeFileSync(path.join(projectPath, "README.md"), readme);
|
|
298
213
|
spinner.succeed("Project structure created");
|
|
299
|
-
// Create example block
|
|
214
|
+
// Create example hero block
|
|
300
215
|
spinner.start("Creating example hero block...");
|
|
301
|
-
const
|
|
302
|
-
fs.mkdirSync(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
// Create React example with or without Tailwind
|
|
306
|
-
const heroComponent = answers.useTailwind
|
|
307
|
-
? `import { BlockContent } from './block';
|
|
216
|
+
const heroBlockPath = path.join(projectPath, "blocks", "hero");
|
|
217
|
+
fs.mkdirSync(path.join(heroBlockPath, "src"), { recursive: true });
|
|
218
|
+
// Hero.tsx
|
|
219
|
+
const heroComponent = `import { BlockContent } from "./block";
|
|
308
220
|
|
|
309
221
|
export default function Hero({ content }: { content: BlockContent }) {
|
|
310
222
|
const {
|
|
311
|
-
heading =
|
|
312
|
-
subheading =
|
|
313
|
-
ctaText =
|
|
314
|
-
ctaUrl =
|
|
223
|
+
heading = "Welcome to Cmssy",
|
|
224
|
+
subheading = "Build reusable UI blocks with React & Tailwind",
|
|
225
|
+
ctaText = "Get Started",
|
|
226
|
+
ctaUrl = "#",
|
|
315
227
|
} = content;
|
|
316
228
|
|
|
317
229
|
return (
|
|
@@ -329,40 +241,20 @@ export default function Hero({ content }: { content: BlockContent }) {
|
|
|
329
241
|
</section>
|
|
330
242
|
);
|
|
331
243
|
}
|
|
332
|
-
`
|
|
333
|
-
: `import { BlockContent } from './block';
|
|
334
|
-
|
|
335
|
-
export default function Hero({ content }: { content: BlockContent }) {
|
|
336
|
-
const {
|
|
337
|
-
heading = 'Welcome to Cmssy',
|
|
338
|
-
subheading = 'Build reusable UI blocks with any framework',
|
|
339
|
-
ctaText = 'Get Started',
|
|
340
|
-
ctaUrl = '#',
|
|
341
|
-
} = content;
|
|
342
|
-
|
|
343
|
-
return (
|
|
344
|
-
<section className="hero">
|
|
345
|
-
<div className="hero-content">
|
|
346
|
-
<h1>{heading}</h1>
|
|
347
|
-
<p>{subheading}</p>
|
|
348
|
-
<a href={ctaUrl} className="cta-button">
|
|
349
|
-
{ctaText}
|
|
350
|
-
</a>
|
|
351
|
-
</div>
|
|
352
|
-
</section>
|
|
353
|
-
);
|
|
354
|
-
}
|
|
355
244
|
`;
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
import { createRoot, Root } from
|
|
359
|
-
import Hero from
|
|
245
|
+
fs.writeFileSync(path.join(heroBlockPath, "src", "Hero.tsx"), heroComponent);
|
|
246
|
+
// index.tsx
|
|
247
|
+
const indexFile = `import { createRoot, Root } from "react-dom/client";
|
|
248
|
+
import Hero from "./Hero";
|
|
249
|
+
import "./index.css";
|
|
360
250
|
|
|
361
251
|
interface BlockContext {
|
|
362
252
|
root: Root;
|
|
363
253
|
}
|
|
364
254
|
|
|
365
255
|
export default {
|
|
256
|
+
__component: Hero,
|
|
257
|
+
|
|
366
258
|
mount(element: HTMLElement, props: any): BlockContext {
|
|
367
259
|
const root = createRoot(element);
|
|
368
260
|
root.render(<Hero content={props} />);
|
|
@@ -370,60 +262,18 @@ export default {
|
|
|
370
262
|
},
|
|
371
263
|
|
|
372
264
|
update(_element: HTMLElement, props: any, ctx: BlockContext): void {
|
|
373
|
-
// Re-render with new props (no unmount = no blink!)
|
|
374
265
|
ctx.root.render(<Hero content={props} />);
|
|
375
266
|
},
|
|
376
267
|
|
|
377
268
|
unmount(_element: HTMLElement, ctx: BlockContext): void {
|
|
378
269
|
ctx.root.unmount();
|
|
379
|
-
}
|
|
270
|
+
},
|
|
380
271
|
};
|
|
381
272
|
`;
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
`
|
|
387
|
-
: `.hero {
|
|
388
|
-
display: flex;
|
|
389
|
-
align-items: center;
|
|
390
|
-
justify-content: center;
|
|
391
|
-
min-height: 400px;
|
|
392
|
-
padding: 2rem;
|
|
393
|
-
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
394
|
-
color: white;
|
|
395
|
-
text-align: center;
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
.hero-content h1 {
|
|
399
|
-
font-size: 3rem;
|
|
400
|
-
margin-bottom: 1rem;
|
|
401
|
-
font-weight: bold;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
.hero-content p {
|
|
405
|
-
font-size: 1.25rem;
|
|
406
|
-
margin-bottom: 2rem;
|
|
407
|
-
opacity: 0.9;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
.cta-button {
|
|
411
|
-
display: inline-block;
|
|
412
|
-
padding: 1rem 2rem;
|
|
413
|
-
background: white;
|
|
414
|
-
color: #667eea;
|
|
415
|
-
text-decoration: none;
|
|
416
|
-
border-radius: 0.5rem;
|
|
417
|
-
font-weight: 600;
|
|
418
|
-
transition: transform 0.2s;
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
.cta-button:hover {
|
|
422
|
-
transform: scale(1.05);
|
|
423
|
-
}
|
|
424
|
-
`;
|
|
425
|
-
fs.writeFileSync(path.join(exampleBlockPath, "src", "index.css"), cssFile);
|
|
426
|
-
// Create minimal package.json for block
|
|
273
|
+
fs.writeFileSync(path.join(heroBlockPath, "src", "index.tsx"), indexFile);
|
|
274
|
+
// index.css
|
|
275
|
+
fs.writeFileSync(path.join(heroBlockPath, "src", "index.css"), `@import "main.css";\n`);
|
|
276
|
+
// package.json
|
|
427
277
|
const blockPackageJson = {
|
|
428
278
|
name: `@${answers.projectName}/blocks.hero`,
|
|
429
279
|
version: "1.0.0",
|
|
@@ -433,75 +283,59 @@ export default {
|
|
|
433
283
|
email: answers.authorEmail,
|
|
434
284
|
},
|
|
435
285
|
};
|
|
436
|
-
fs.writeFileSync(path.join(
|
|
437
|
-
//
|
|
438
|
-
const
|
|
286
|
+
fs.writeFileSync(path.join(heroBlockPath, "package.json"), JSON.stringify(blockPackageJson, null, 2) + "\n");
|
|
287
|
+
// block.config.ts
|
|
288
|
+
const blockConfig = `import { defineBlock } from "cmssy-cli/config";
|
|
439
289
|
|
|
440
290
|
export default defineBlock({
|
|
441
|
-
name:
|
|
442
|
-
description:
|
|
443
|
-
category:
|
|
444
|
-
tags: [
|
|
291
|
+
name: "Hero Section",
|
|
292
|
+
description: "Hero section with heading and CTA",
|
|
293
|
+
category: "marketing",
|
|
294
|
+
tags: ["hero", "landing", "cta"],
|
|
445
295
|
|
|
446
296
|
schema: {
|
|
447
297
|
heading: {
|
|
448
|
-
type:
|
|
449
|
-
label:
|
|
450
|
-
defaultValue:
|
|
298
|
+
type: "singleLine",
|
|
299
|
+
label: "Heading",
|
|
300
|
+
defaultValue: "Welcome to Cmssy",
|
|
451
301
|
},
|
|
452
302
|
subheading: {
|
|
453
|
-
type:
|
|
454
|
-
label:
|
|
455
|
-
defaultValue:
|
|
303
|
+
type: "singleLine",
|
|
304
|
+
label: "Subheading",
|
|
305
|
+
defaultValue: "Build reusable UI blocks with React & Tailwind",
|
|
456
306
|
},
|
|
457
307
|
ctaText: {
|
|
458
|
-
type:
|
|
459
|
-
label:
|
|
460
|
-
defaultValue:
|
|
308
|
+
type: "singleLine",
|
|
309
|
+
label: "CTA Text",
|
|
310
|
+
defaultValue: "Get Started",
|
|
461
311
|
},
|
|
462
312
|
ctaUrl: {
|
|
463
|
-
type:
|
|
464
|
-
label:
|
|
465
|
-
defaultValue:
|
|
313
|
+
type: "link",
|
|
314
|
+
label: "CTA URL",
|
|
315
|
+
defaultValue: "#",
|
|
466
316
|
},
|
|
467
317
|
},
|
|
468
318
|
|
|
469
|
-
pricing: { licenseType:
|
|
319
|
+
pricing: { licenseType: "free" },
|
|
470
320
|
});
|
|
471
321
|
`;
|
|
472
|
-
fs.writeFileSync(path.join(
|
|
473
|
-
//
|
|
322
|
+
fs.writeFileSync(path.join(heroBlockPath, "block.config.ts"), blockConfig);
|
|
323
|
+
// preview.json
|
|
474
324
|
const previewData = {
|
|
475
325
|
heading: "Welcome to Cmssy",
|
|
476
|
-
subheading: "Build reusable UI blocks with
|
|
326
|
+
subheading: "Build reusable UI blocks with React & Tailwind",
|
|
477
327
|
ctaText: "Get Started",
|
|
478
328
|
ctaUrl: "#",
|
|
479
329
|
};
|
|
480
|
-
fs.writeFileSync(path.join(
|
|
481
|
-
// Generate types
|
|
330
|
+
fs.writeFileSync(path.join(heroBlockPath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
|
|
331
|
+
// Generate types
|
|
482
332
|
const heroSchema = {
|
|
483
|
-
heading: {
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
},
|
|
488
|
-
subheading: {
|
|
489
|
-
type: "singleLine",
|
|
490
|
-
label: "Subheading",
|
|
491
|
-
defaultValue: "Build reusable UI blocks with any framework",
|
|
492
|
-
},
|
|
493
|
-
ctaText: {
|
|
494
|
-
type: "singleLine",
|
|
495
|
-
label: "CTA Button Text",
|
|
496
|
-
defaultValue: "Get Started",
|
|
497
|
-
},
|
|
498
|
-
ctaUrl: {
|
|
499
|
-
type: "link",
|
|
500
|
-
label: "CTA Button URL",
|
|
501
|
-
defaultValue: "#",
|
|
502
|
-
},
|
|
333
|
+
heading: { type: "singleLine", label: "Heading", defaultValue: "Welcome to Cmssy" },
|
|
334
|
+
subheading: { type: "singleLine", label: "Subheading", defaultValue: "Build reusable UI blocks" },
|
|
335
|
+
ctaText: { type: "singleLine", label: "CTA Text", defaultValue: "Get Started" },
|
|
336
|
+
ctaUrl: { type: "link", label: "CTA URL", defaultValue: "#" },
|
|
503
337
|
};
|
|
504
|
-
await generateTypes(
|
|
338
|
+
await generateTypes(heroBlockPath, heroSchema);
|
|
505
339
|
spinner.succeed("Example hero block created");
|
|
506
340
|
// Initialize git
|
|
507
341
|
if (answers.initGit) {
|
|
@@ -511,13 +345,11 @@ export default defineBlock({
|
|
|
511
345
|
execSync("git branch -m main", { stdio: "ignore" });
|
|
512
346
|
spinner.succeed("Git repository initialized");
|
|
513
347
|
}
|
|
514
|
-
// Success message
|
|
515
348
|
console.log(chalk.green.bold("\nā Project created successfully!\n"));
|
|
516
349
|
console.log(chalk.cyan("Next steps:\n"));
|
|
517
350
|
console.log(chalk.white(` cd ${answers.projectName}`));
|
|
518
351
|
console.log(chalk.white(" npm install"));
|
|
519
|
-
console.log(chalk.white(" npm run dev"));
|
|
520
|
-
console.log(chalk.gray("\nHappy building! šØ\n"));
|
|
352
|
+
console.log(chalk.white(" npm run dev\n"));
|
|
521
353
|
}
|
|
522
354
|
catch (error) {
|
|
523
355
|
spinner.fail("Failed to create project");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAiBA,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAUD,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EAAE,YAAK,EAC3B,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAiBA,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAUD,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EAAE,YAAK,EAC3B,OAAO,EAAE,cAAc,iBA0RxB"}
|