@atelier-ui/create-workspace 0.0.2 → 0.0.4
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/package.json
CHANGED
|
@@ -3,12 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.presetGenerator = presetGenerator;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
|
6
|
-
const generators_1 = require("@nx/angular/generators");
|
|
7
|
-
const react_1 = require("@nx/react");
|
|
8
6
|
const SITE_URL = 'https://atelier-ui.netlify.app';
|
|
9
7
|
function presetGenerator(tree, options) {
|
|
10
8
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
11
|
-
var _a;
|
|
9
|
+
var _a, _b;
|
|
12
10
|
const frameworks = ((_a = options.frameworks) !== null && _a !== void 0 ? _a : 'angular')
|
|
13
11
|
.split(',')
|
|
14
12
|
.map((f) => f.trim())
|
|
@@ -19,7 +17,9 @@ function presetGenerator(tree, options) {
|
|
|
19
17
|
for (const framework of frameworks) {
|
|
20
18
|
const appName = `workshop-${framework}`;
|
|
21
19
|
if (framework === 'angular') {
|
|
22
|
-
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
const { applicationGenerator: angularAppGenerator } = yield (0, devkit_1.ensurePackage)('@nx/angular', devkit_1.NX_VERSION);
|
|
22
|
+
yield angularAppGenerator(tree, {
|
|
23
23
|
name: appName,
|
|
24
24
|
directory: appName,
|
|
25
25
|
style: 'css',
|
|
@@ -32,7 +32,9 @@ function presetGenerator(tree, options) {
|
|
|
32
32
|
deps['@atelier-ui/angular'] = 'latest';
|
|
33
33
|
}
|
|
34
34
|
if (framework === 'react') {
|
|
35
|
-
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
const { applicationGenerator: reactAppGenerator } = yield (0, devkit_1.ensurePackage)('@nx/react', devkit_1.NX_VERSION);
|
|
37
|
+
yield reactAppGenerator(tree, {
|
|
36
38
|
name: appName,
|
|
37
39
|
directory: appName,
|
|
38
40
|
style: 'css',
|
|
@@ -45,7 +47,7 @@ function presetGenerator(tree, options) {
|
|
|
45
47
|
}
|
|
46
48
|
if (framework === 'vue') {
|
|
47
49
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
-
const { applicationGenerator: vueAppGenerator } = yield (0, devkit_1.ensurePackage)('@nx/vue',
|
|
50
|
+
const { applicationGenerator: vueAppGenerator } = yield (0, devkit_1.ensurePackage)('@nx/vue', devkit_1.NX_VERSION);
|
|
49
51
|
yield vueAppGenerator(tree, {
|
|
50
52
|
name: appName,
|
|
51
53
|
directory: appName,
|
|
@@ -56,7 +58,74 @@ function presetGenerator(tree, options) {
|
|
|
56
58
|
});
|
|
57
59
|
deps['@atelier-ui/vue'] = 'latest';
|
|
58
60
|
}
|
|
61
|
+
// Inject CSS tokens import into the app's global stylesheet
|
|
62
|
+
const stylesPath = `${appName}/src/styles.css`;
|
|
63
|
+
const existing = tree.exists(stylesPath) ? ((_b = tree.read(stylesPath, 'utf-8')) !== null && _b !== void 0 ? _b : '') : '';
|
|
64
|
+
tree.write(stylesPath, `@import '@atelier-ui/${framework}/styles/tokens.css';\n\n${existing}`);
|
|
59
65
|
}
|
|
66
|
+
// Write CLAUDE.md with framework-specific guidance
|
|
67
|
+
const frameworkSections = frameworks
|
|
68
|
+
.map((f) => {
|
|
69
|
+
if (f === 'angular') {
|
|
70
|
+
return `### Angular (\`@atelier-ui/angular\`)
|
|
71
|
+
- Selectors: \`llm-button\`, \`llm-input\`, \`llm-dialog\`, …
|
|
72
|
+
- Import: \`import { LlmButtonComponent } from '@atelier-ui/angular';\`
|
|
73
|
+
- Add to \`@Component({ imports: [LlmButtonComponent] })\`
|
|
74
|
+
- Form controls implement Signal Forms (\`FormValueControl\` / \`FormCheckboxControl\`)`;
|
|
75
|
+
}
|
|
76
|
+
if (f === 'react') {
|
|
77
|
+
return `### React (\`@atelier-ui/react\`)
|
|
78
|
+
- Elements: \`<LlmButton>\`, \`<LlmInput>\`, \`<LlmDialog>\`, …
|
|
79
|
+
- Import: \`import { LlmButton } from '@atelier-ui/react';\`
|
|
80
|
+
- Event handlers follow \`onXxx\` / \`onXxxChange\` convention
|
|
81
|
+
- Toast: use \`useLlmToast()\` hook inside \`<LlmToastProvider>\``;
|
|
82
|
+
}
|
|
83
|
+
if (f === 'vue') {
|
|
84
|
+
return `### Vue (\`@atelier-ui/vue\`)
|
|
85
|
+
- Elements: \`<LlmButton>\`, \`<LlmInput>\`, \`<LlmDialog>\`, …
|
|
86
|
+
- Import: \`import { LlmButton } from '@atelier-ui/vue';\`
|
|
87
|
+
- Two-way binding: \`v-model\` and \`v-model:value\` where applicable
|
|
88
|
+
- Toast: use \`useLlmToast()\` composable`;
|
|
89
|
+
}
|
|
90
|
+
return '';
|
|
91
|
+
})
|
|
92
|
+
.join('\n\n');
|
|
93
|
+
tree.write('CLAUDE.md', `# Atelier UI Workshop
|
|
94
|
+
|
|
95
|
+
This workspace contains Atelier UI component library apps for hands-on AI development training.
|
|
96
|
+
|
|
97
|
+
## MCP Tools — always use these before writing component code
|
|
98
|
+
|
|
99
|
+
The MCP servers are pre-configured in \`.claude/settings.json\` and connect automatically.
|
|
100
|
+
|
|
101
|
+
| Tool | When to call it |
|
|
102
|
+
|---|---|
|
|
103
|
+
| \`get_component_docs(component)\` | Before using any component — returns exact props, types, defaults |
|
|
104
|
+
| \`list_components()\` | To see all 22 available components grouped by category |
|
|
105
|
+
| \`search_components(query)\` | When you know the intent ("form input") but not the component name |
|
|
106
|
+
| \`get_stories(component)\` | To see real usage examples and variants |
|
|
107
|
+
| \`get_theming_guide()\` | Before customising colors, spacing, or dark mode |
|
|
108
|
+
|
|
109
|
+
**Rule:** call the MCP server first, then write code. Never guess prop names.
|
|
110
|
+
|
|
111
|
+
## Component Libraries
|
|
112
|
+
|
|
113
|
+
${frameworkSections}
|
|
114
|
+
|
|
115
|
+
## Global styles
|
|
116
|
+
|
|
117
|
+
CSS design tokens are imported in each app's \`src/styles.css\`.
|
|
118
|
+
All \`--ui-*\` custom properties are available globally (colors, spacing, radius, typography, shadows).
|
|
119
|
+
|
|
120
|
+
## Apps
|
|
121
|
+
|
|
122
|
+
${frameworks.map((f) => `- \`workshop-${f}\` — run with \`npx nx serve workshop-${f}\``).join('\n')}
|
|
123
|
+
|
|
124
|
+
## Reference
|
|
125
|
+
|
|
126
|
+
- Component browser + exercises: ${SITE_URL}
|
|
127
|
+
- MCP Playground (inspect tool responses): ${SITE_URL}/mcp
|
|
128
|
+
`);
|
|
60
129
|
// Install selected @atelier-ui/* packages
|
|
61
130
|
const installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, deps, {});
|
|
62
131
|
// Write .claude/settings.json with MCP servers for selected frameworks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../../../libs/create-workspace/src/generators/preset/preset.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../../../libs/create-workspace/src/generators/preset/preset.ts"],"names":[],"mappings":"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"}
|