@buoy-design/cli 0.1.7 → 0.1.10

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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commands/anchor.d.ts +3 -0
  3. package/dist/commands/anchor.d.ts.map +1 -0
  4. package/dist/commands/anchor.js +487 -0
  5. package/dist/commands/anchor.js.map +1 -0
  6. package/dist/commands/architect.d.ts +9 -0
  7. package/dist/commands/architect.d.ts.map +1 -0
  8. package/dist/commands/architect.js +183 -0
  9. package/dist/commands/architect.js.map +1 -0
  10. package/dist/commands/build.d.ts.map +1 -1
  11. package/dist/commands/build.js +250 -77
  12. package/dist/commands/build.js.map +1 -1
  13. package/dist/commands/dock.d.ts +3 -0
  14. package/dist/commands/dock.d.ts.map +1 -0
  15. package/dist/commands/dock.js +881 -0
  16. package/dist/commands/dock.js.map +1 -0
  17. package/dist/commands/import.d.ts +13 -0
  18. package/dist/commands/import.d.ts.map +1 -0
  19. package/dist/commands/import.js +324 -0
  20. package/dist/commands/import.js.map +1 -0
  21. package/dist/commands/index.d.ts +3 -2
  22. package/dist/commands/index.d.ts.map +1 -1
  23. package/dist/commands/index.js +3 -2
  24. package/dist/commands/index.js.map +1 -1
  25. package/dist/commands/init.d.ts.map +1 -1
  26. package/dist/commands/init.js +230 -6
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/detect/project-detector.d.ts +7 -0
  29. package/dist/detect/project-detector.d.ts.map +1 -1
  30. package/dist/detect/project-detector.js +130 -1
  31. package/dist/detect/project-detector.js.map +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/integrations/github.d.ts +53 -0
  36. package/dist/integrations/github.d.ts.map +1 -1
  37. package/dist/integrations/github.js +141 -0
  38. package/dist/integrations/github.js.map +1 -1
  39. package/dist/integrations/index.d.ts +2 -2
  40. package/dist/integrations/index.d.ts.map +1 -1
  41. package/dist/integrations/index.js +1 -1
  42. package/dist/integrations/index.js.map +1 -1
  43. package/dist/services/architect.d.ts +70 -0
  44. package/dist/services/architect.d.ts.map +1 -0
  45. package/dist/services/architect.js +409 -0
  46. package/dist/services/architect.js.map +1 -0
  47. package/package.json +13 -13
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Buoy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createAnchorCommand(): Command;
3
+ //# sourceMappingURL=anchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/commands/anchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4FpC,wBAAgB,mBAAmB,IAAI,OAAO,CAuC7C"}
@@ -0,0 +1,487 @@
1
+ import { Command } from 'commander';
2
+ import { writeFileSync, existsSync, readFileSync, mkdirSync } from 'fs';
3
+ import { writeFile } from 'fs/promises';
4
+ import { resolve, relative } from 'path';
5
+ import { homedir } from 'os';
6
+ import chalk from 'chalk';
7
+ import { spinner, success, error, info, warning, header, keyValue, newline } from '../output/reporters.js';
8
+ import { ProjectDetector } from '../detect/project-detector.js';
9
+ import { DesignSystemArchitect } from '../services/architect.js';
10
+ import { GitHubArchitectClient, parseRepoString } from '../integrations/index.js';
11
+ const STYLE_PRESETS = {
12
+ minimal: {
13
+ name: 'Minimal & Clean',
14
+ description: 'Subtle colors, generous whitespace, thin borders',
15
+ colors: { primary: '#0f172a', secondary: '#64748b', accent: '#3b82f6', neutral: '#f8fafc' },
16
+ borderRadius: '0.375rem',
17
+ spacing: 'spacious',
18
+ },
19
+ bold: {
20
+ name: 'Bold & Vibrant',
21
+ description: 'Strong colors, high contrast, prominent elements',
22
+ colors: { primary: '#7c3aed', secondary: '#ec4899', accent: '#f59e0b', neutral: '#1e1b4b' },
23
+ borderRadius: '0.75rem',
24
+ spacing: 'comfortable',
25
+ },
26
+ soft: {
27
+ name: 'Soft & Friendly',
28
+ description: 'Pastel tones, rounded corners, warm feel',
29
+ colors: { primary: '#6366f1', secondary: '#a78bfa', accent: '#f472b6', neutral: '#faf5ff' },
30
+ borderRadius: '1rem',
31
+ spacing: 'comfortable',
32
+ },
33
+ corporate: {
34
+ name: 'Corporate & Professional',
35
+ description: 'Conservative palette, structured layout, trust signals',
36
+ colors: { primary: '#1e40af', secondary: '#475569', accent: '#059669', neutral: '#f1f5f9' },
37
+ borderRadius: '0.25rem',
38
+ spacing: 'compact',
39
+ },
40
+ };
41
+ const BUOY_CONFIG_DIR = resolve(homedir(), '.buoy');
42
+ const BUOY_CONFIG_FILE = resolve(BUOY_CONFIG_DIR, 'config.json');
43
+ function loadGlobalConfig() {
44
+ try {
45
+ if (existsSync(BUOY_CONFIG_FILE)) {
46
+ return JSON.parse(readFileSync(BUOY_CONFIG_FILE, 'utf-8'));
47
+ }
48
+ }
49
+ catch {
50
+ // Ignore errors, return empty config
51
+ }
52
+ return {};
53
+ }
54
+ function saveGlobalConfig(config) {
55
+ if (!existsSync(BUOY_CONFIG_DIR)) {
56
+ mkdirSync(BUOY_CONFIG_DIR, { recursive: true });
57
+ }
58
+ writeFileSync(BUOY_CONFIG_FILE, JSON.stringify(config, null, 2));
59
+ }
60
+ function getAnthropicApiKey() {
61
+ // Check environment variable first
62
+ if (process.env.ANTHROPIC_API_KEY) {
63
+ return process.env.ANTHROPIC_API_KEY;
64
+ }
65
+ // Check global config
66
+ const config = loadGlobalConfig();
67
+ return config.anthropicApiKey || null;
68
+ }
69
+ export function createAnchorCommand() {
70
+ const cmd = new Command('anchor')
71
+ .description('Anchor your design system - analyze code and establish tokens')
72
+ .option('--fresh', 'Generate a fresh design system instead of extracting from code')
73
+ .option('--style <style>', 'Style preset for fresh build: minimal, bold, soft, corporate')
74
+ .option('--primary-color <color>', 'Primary brand color (hex)')
75
+ .option('--framework <framework>', 'Target framework: react, vue, svelte, vanilla')
76
+ .option('--output <path>', 'Output directory or file path', '.')
77
+ .option('--extend <file>', 'Extend existing token file')
78
+ .option('--set-key <key>', 'Set your Anthropic API key')
79
+ .option('--no-ai', 'Skip AI analysis (use heuristics only)')
80
+ .option('--pr', 'Create a GitHub PR with the generated tokens')
81
+ .option('--github-token <token>', 'GitHub token for PR creation (or use GITHUB_TOKEN env)')
82
+ .option('--github-repo <repo>', 'GitHub repo in owner/repo format (or use GITHUB_REPOSITORY env)')
83
+ .option('--json', 'Output as JSON')
84
+ .action(async (options) => {
85
+ // Handle setting API key
86
+ if (options.setKey) {
87
+ const config = loadGlobalConfig();
88
+ config.anthropicApiKey = options.setKey;
89
+ saveGlobalConfig(config);
90
+ success('Anthropic API key saved to ~/.buoy/config.json');
91
+ info('You can now run: buoy build');
92
+ return;
93
+ }
94
+ const cwd = process.cwd();
95
+ // Fresh mode: Generate new design system with AI
96
+ if (options.fresh) {
97
+ await buildFreshDesignSystem(cwd, options);
98
+ return;
99
+ }
100
+ // Default mode: Analyze codebase and extract tokens
101
+ await buildFromCodebase(cwd, options);
102
+ });
103
+ return cmd;
104
+ }
105
+ /**
106
+ * Build design system by analyzing codebase (default mode)
107
+ * Extracts tokens from hardcoded values found in code
108
+ */
109
+ async function buildFromCodebase(cwd, options) {
110
+ const spin = spinner('Analyzing codebase...');
111
+ try {
112
+ // Initialize architect
113
+ const architect = new DesignSystemArchitect();
114
+ // Run analysis
115
+ const result = await architect.analyze({
116
+ projectRoot: cwd,
117
+ noAI: !options.ai,
118
+ onProgress: (msg) => {
119
+ spin.text = msg;
120
+ }
121
+ });
122
+ spin.stop();
123
+ const { diagnosis } = result;
124
+ // JSON output
125
+ if (options.json) {
126
+ console.log(JSON.stringify({
127
+ diagnosis,
128
+ generatedTokens: result.generatedTokensFile
129
+ }, null, 2));
130
+ return;
131
+ }
132
+ // Display diagnosis
133
+ header('Design System Analysis');
134
+ newline();
135
+ // Maturity score with visual
136
+ const scoreBar = createScoreBar(diagnosis.maturityScore);
137
+ console.log(`${chalk.bold('Maturity Score:')} ${scoreBar} ${diagnosis.maturityScore}/100`);
138
+ console.log(`${chalk.bold('Level:')} ${formatMaturityLevel(diagnosis.maturityLevel)}`);
139
+ newline();
140
+ // CSS Analysis
141
+ console.log(chalk.bold.underline('What We Found'));
142
+ keyValue('Unique Colors', String(diagnosis.cssAnalysis.uniqueColors));
143
+ keyValue('Unique Spacing Values', String(diagnosis.cssAnalysis.uniqueSpacing));
144
+ keyValue('Unique Fonts', String(diagnosis.cssAnalysis.uniqueFonts));
145
+ keyValue('Tokenization', `${diagnosis.cssAnalysis.tokenizationScore}%`);
146
+ keyValue('Hardcoded Values', String(diagnosis.cssAnalysis.hardcodedValues));
147
+ newline();
148
+ // Recommendations
149
+ if (diagnosis.recommendations.length > 0) {
150
+ console.log(chalk.bold.underline('Recommendations'));
151
+ for (const rec of diagnosis.recommendations) {
152
+ const priorityIcon = rec.priority === 'high' ? chalk.red('!')
153
+ : rec.priority === 'medium' ? chalk.yellow('~')
154
+ : chalk.blue('-');
155
+ console.log(` ${priorityIcon} ${chalk.bold(rec.title)}`);
156
+ console.log(` ${rec.description}`);
157
+ newline();
158
+ }
159
+ }
160
+ // Suggested tokens preview
161
+ if (diagnosis.suggestedTokens.length > 0) {
162
+ console.log(chalk.bold.underline('Generated Tokens (Preview)'));
163
+ const colorTokens = diagnosis.suggestedTokens.filter((t) => t.category === 'color').slice(0, 5);
164
+ const spacingTokens = diagnosis.suggestedTokens.filter((t) => t.category === 'spacing').slice(0, 5);
165
+ if (colorTokens.length > 0) {
166
+ console.log(' Colors:');
167
+ for (const token of colorTokens) {
168
+ console.log(` ${chalk.cyan(token.name)}: ${token.value} ${chalk.dim(`(replaces ${token.usageCount} values)`)}`);
169
+ }
170
+ }
171
+ if (spacingTokens.length > 0) {
172
+ console.log(' Spacing:');
173
+ for (const token of spacingTokens) {
174
+ console.log(` ${chalk.cyan(token.name)}: ${token.value} ${chalk.dim(`(replaces ${token.usageCount} values)`)}`);
175
+ }
176
+ }
177
+ newline();
178
+ }
179
+ // Output to file if requested
180
+ if (options.output && options.output !== '.') {
181
+ await writeFile(options.output, result.generatedTokensFile);
182
+ success(`Generated tokens written to ${options.output}`);
183
+ return;
184
+ }
185
+ // Create PR if requested
186
+ if (options.pr) {
187
+ const token = (options.githubToken || process.env.GITHUB_TOKEN);
188
+ const repo = (options.githubRepo || process.env.GITHUB_REPOSITORY);
189
+ if (!token || !repo) {
190
+ warning('GitHub token and repo required for PR creation.');
191
+ info('Provide --github-token and --github-repo, or set GITHUB_TOKEN and GITHUB_REPOSITORY env vars');
192
+ newline();
193
+ // Still output the tokens
194
+ info('Generated design-tokens.css:');
195
+ console.log(chalk.gray('─'.repeat(50)));
196
+ console.log(result.generatedTokensFile);
197
+ console.log(chalk.gray('─'.repeat(50)));
198
+ return;
199
+ }
200
+ spin.start();
201
+ spin.text = 'Creating PR...';
202
+ try {
203
+ const { owner, repo: repoName } = parseRepoString(repo);
204
+ const client = new GitHubArchitectClient({
205
+ token,
206
+ owner,
207
+ repo: repoName
208
+ });
209
+ const pr = await client.createDesignTokensPR(result.generatedTokensFile, result.prDescription);
210
+ spin.stop();
211
+ success(`Created PR #${pr.number}`);
212
+ info(`View at: ${pr.url}`);
213
+ }
214
+ catch (err) {
215
+ spin.stop();
216
+ const msg = err instanceof Error ? err.message : String(err);
217
+ error(`Failed to create PR: ${msg}`);
218
+ // Fallback: output tokens
219
+ info('Generated tokens:');
220
+ console.log(result.generatedTokensFile);
221
+ }
222
+ }
223
+ else {
224
+ // Just output the tokens
225
+ info('Generated design-tokens.css:');
226
+ console.log(chalk.gray('─'.repeat(50)));
227
+ console.log(result.generatedTokensFile);
228
+ console.log(chalk.gray('─'.repeat(50)));
229
+ newline();
230
+ info('Run with --pr to create a GitHub PR, or --output <path> to save to file');
231
+ }
232
+ }
233
+ catch (err) {
234
+ spin.stop();
235
+ const message = err instanceof Error ? err.message : String(err);
236
+ error(`Build failed: ${message}`);
237
+ process.exit(1);
238
+ }
239
+ }
240
+ /**
241
+ * Build fresh design system with AI (--fresh mode)
242
+ * Generates new tokens from scratch based on style presets
243
+ */
244
+ async function buildFreshDesignSystem(cwd, options) {
245
+ // Check for API key
246
+ const apiKey = getAnthropicApiKey();
247
+ if (!apiKey) {
248
+ error('Anthropic API key required for --fresh mode');
249
+ console.log('');
250
+ info('Set your API key with one of these methods:');
251
+ console.log('');
252
+ console.log(chalk.cyan(' Option 1: ') + 'Environment variable');
253
+ console.log(chalk.dim(' export ANTHROPIC_API_KEY=sk-ant-...'));
254
+ console.log('');
255
+ console.log(chalk.cyan(' Option 2: ') + 'Save to Buoy config');
256
+ console.log(chalk.dim(' buoy build --set-key sk-ant-...'));
257
+ console.log('');
258
+ info('Get your API key at: https://console.anthropic.com/');
259
+ return;
260
+ }
261
+ const spin = spinner('Analyzing project...');
262
+ try {
263
+ // Detect project info
264
+ const detector = new ProjectDetector(cwd);
265
+ const projectInfo = await detector.detect();
266
+ // Determine framework
267
+ let framework = options.framework;
268
+ if (!framework && projectInfo.frameworks.length > 0) {
269
+ const f = projectInfo.frameworks[0];
270
+ framework = f.name;
271
+ spin.stop();
272
+ info(`Detected framework: ${chalk.cyan(f.name)}`);
273
+ spin.start();
274
+ }
275
+ framework = framework || 'vanilla';
276
+ // Determine style
277
+ const style = options.style || 'minimal';
278
+ const preset = STYLE_PRESETS[style] || STYLE_PRESETS.minimal;
279
+ spin.text = 'Generating design system with Claude...';
280
+ // Call Claude API
281
+ const designSystem = await generateDesignSystem(apiKey, {
282
+ framework,
283
+ style: preset,
284
+ primaryColor: options.primaryColor,
285
+ projectName: projectInfo.name,
286
+ existingTokens: options.extend ? loadExistingTokens(options.extend) : undefined,
287
+ });
288
+ spin.stop();
289
+ // Write output files
290
+ const outputDir = resolve(cwd, options.output || '.');
291
+ header('Generated Design System');
292
+ newline();
293
+ // Write tokens.json
294
+ const tokensPath = resolve(outputDir, 'tokens.json');
295
+ writeFileSync(tokensPath, JSON.stringify(designSystem.tokens, null, 2));
296
+ success(`Created ${relative(cwd, tokensPath)}`);
297
+ // Write CSS variables
298
+ const cssPath = resolve(outputDir, 'tokens.css');
299
+ writeFileSync(cssPath, designSystem.css);
300
+ success(`Created ${relative(cwd, cssPath)}`);
301
+ // Write Tailwind config if applicable
302
+ if (framework === 'react' || framework === 'nextjs' || framework === 'vue' || framework === 'svelte') {
303
+ const tailwindPath = resolve(outputDir, 'tailwind.tokens.js');
304
+ writeFileSync(tailwindPath, designSystem.tailwind);
305
+ success(`Created ${relative(cwd, tailwindPath)}`);
306
+ }
307
+ newline();
308
+ info('Next steps:');
309
+ info(' 1. Review the generated tokens');
310
+ info(' 2. Import tokens.css in your app');
311
+ info(' 3. Run ' + chalk.cyan('buoy status') + ' to check alignment');
312
+ }
313
+ catch (err) {
314
+ spin.stop();
315
+ const message = err instanceof Error ? err.message : String(err);
316
+ error(`Build failed: ${message}`);
317
+ if (message.includes('401') || message.includes('authentication')) {
318
+ info('Your API key may be invalid. Check it at https://console.anthropic.com/');
319
+ }
320
+ process.exit(1);
321
+ }
322
+ }
323
+ function createScoreBar(score) {
324
+ const filled = Math.round(score / 10);
325
+ const empty = 10 - filled;
326
+ const color = score >= 60 ? chalk.green
327
+ : score >= 40 ? chalk.yellow
328
+ : chalk.red;
329
+ return color('█'.repeat(filled)) + chalk.gray('░'.repeat(empty));
330
+ }
331
+ function formatMaturityLevel(level) {
332
+ const levels = {
333
+ 'none': chalk.red('None'),
334
+ 'emerging': chalk.yellow('Emerging'),
335
+ 'defined': chalk.blue('Defined'),
336
+ 'managed': chalk.cyan('Managed'),
337
+ 'optimized': chalk.green('Optimized')
338
+ };
339
+ return levels[level] || level;
340
+ }
341
+ function loadExistingTokens(filePath) {
342
+ try {
343
+ const content = readFileSync(filePath, 'utf-8');
344
+ return JSON.parse(content);
345
+ }
346
+ catch {
347
+ return undefined;
348
+ }
349
+ }
350
+ async function generateDesignSystem(apiKey, options) {
351
+ const prompt = buildPrompt(options);
352
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
353
+ method: 'POST',
354
+ headers: {
355
+ 'Content-Type': 'application/json',
356
+ 'x-api-key': apiKey,
357
+ 'anthropic-version': '2023-06-01',
358
+ },
359
+ body: JSON.stringify({
360
+ model: 'claude-sonnet-4-20250514',
361
+ max_tokens: 4096,
362
+ messages: [
363
+ {
364
+ role: 'user',
365
+ content: prompt,
366
+ },
367
+ ],
368
+ }),
369
+ });
370
+ if (!response.ok) {
371
+ const errorBody = await response.text();
372
+ throw new Error(`Anthropic API error: ${response.status} - ${errorBody}`);
373
+ }
374
+ const data = await response.json();
375
+ const textContent = data.content.find(c => c.type === 'text');
376
+ if (!textContent?.text) {
377
+ throw new Error('No response from Claude');
378
+ }
379
+ // Parse the response to extract JSON blocks
380
+ return parseClaudeResponse(textContent.text);
381
+ }
382
+ function buildPrompt(options) {
383
+ const primaryColor = options.primaryColor || options.style.colors.primary;
384
+ return `You are a design system expert. Generate a complete design token system for a ${options.framework} project called "${options.projectName}".
385
+
386
+ Style: ${options.style.name}
387
+ Description: ${options.style.description}
388
+ Primary Color: ${primaryColor}
389
+
390
+ ${options.existingTokens ? `Extend these existing tokens:\n${JSON.stringify(options.existingTokens, null, 2)}\n` : ''}
391
+
392
+ Generate a comprehensive design token system with:
393
+ 1. Color palette (primary, secondary, accent, neutral, semantic colors like success/error/warning)
394
+ 2. Typography scale (font sizes, line heights, font weights)
395
+ 3. Spacing scale (consistent increments)
396
+ 4. Border radii
397
+ 5. Shadows
398
+ 6. Breakpoints
399
+
400
+ Respond with exactly three code blocks:
401
+
402
+ \`\`\`json
403
+ {
404
+ "colors": { ... },
405
+ "typography": { ... },
406
+ "spacing": { ... },
407
+ "radii": { ... },
408
+ "shadows": { ... },
409
+ "breakpoints": { ... }
410
+ }
411
+ \`\`\`
412
+
413
+ \`\`\`css
414
+ :root {
415
+ /* CSS variables here */
416
+ }
417
+ \`\`\`
418
+
419
+ \`\`\`javascript
420
+ // Tailwind theme extension
421
+ module.exports = {
422
+ theme: {
423
+ extend: { ... }
424
+ }
425
+ }
426
+ \`\`\`
427
+
428
+ Be thorough and include semantic color tokens for UI states. Use the primary color to derive a harmonious palette.`;
429
+ }
430
+ function parseClaudeResponse(response) {
431
+ // Extract JSON block
432
+ const jsonMatch = response.match(/```json\s*([\s\S]*?)```/);
433
+ const cssMatch = response.match(/```css\s*([\s\S]*?)```/);
434
+ const jsMatch = response.match(/```javascript\s*([\s\S]*?)```/) || response.match(/```js\s*([\s\S]*?)```/);
435
+ let tokens = {};
436
+ let css = '';
437
+ let tailwind = '';
438
+ if (jsonMatch?.[1]) {
439
+ try {
440
+ tokens = JSON.parse(jsonMatch[1].trim());
441
+ }
442
+ catch {
443
+ // Use empty tokens if parsing fails
444
+ tokens = { error: 'Failed to parse generated tokens' };
445
+ }
446
+ }
447
+ if (cssMatch?.[1]) {
448
+ css = cssMatch[1].trim();
449
+ }
450
+ else {
451
+ css = generateFallbackCss(tokens);
452
+ }
453
+ if (jsMatch?.[1]) {
454
+ tailwind = jsMatch[1].trim();
455
+ }
456
+ else {
457
+ tailwind = generateFallbackTailwind(tokens);
458
+ }
459
+ return { tokens, css, tailwind };
460
+ }
461
+ function generateFallbackCss(tokens) {
462
+ const lines = ['/* Generated by buoy build */', ':root {'];
463
+ const flattenObject = (obj, prefix = '') => {
464
+ for (const [key, value] of Object.entries(obj)) {
465
+ const varName = prefix ? `${prefix}-${key}` : key;
466
+ if (typeof value === 'object' && value !== null) {
467
+ flattenObject(value, varName);
468
+ }
469
+ else {
470
+ lines.push(` --${varName}: ${value};`);
471
+ }
472
+ }
473
+ };
474
+ flattenObject(tokens);
475
+ lines.push('}');
476
+ return lines.join('\n');
477
+ }
478
+ function generateFallbackTailwind(tokens) {
479
+ return `// Generated by buoy build
480
+ /** @type {import('tailwindcss').Config} */
481
+ module.exports = {
482
+ theme: {
483
+ extend: ${JSON.stringify(tokens, null, 4).replace(/\n/g, '\n ')}
484
+ }
485
+ };`;
486
+ }
487
+ //# sourceMappingURL=anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.js","sourceRoot":"","sources":["../../src/commands/anchor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Buoy Architect Command
3
+ *
4
+ * Analyzes a codebase, diagnoses design system maturity,
5
+ * and creates a PR with suggested design tokens.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare function createArchitectCommand(): Command;
9
+ //# sourceMappingURL=architect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../src/commands/architect.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,sBAAsB,IAAI,OAAO,CAwLhD"}