@vue-skuilder/cli 0.1.3 → 0.1.5

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.
@@ -1,6 +1,66 @@
1
1
  import inquirer from 'inquirer';
2
2
  import chalk from 'chalk';
3
3
  import { PREDEFINED_THEMES } from '../types.js';
4
+ /**
5
+ * Convert hex color to closest ANSI color code
6
+ */
7
+ function hexToAnsi(hex) {
8
+ // Remove # if present
9
+ hex = hex.replace('#', '');
10
+ // Convert hex to RGB
11
+ const r = parseInt(hex.substr(0, 2), 16);
12
+ const g = parseInt(hex.substr(2, 2), 16);
13
+ const b = parseInt(hex.substr(4, 2), 16);
14
+ // Convert to 256-color ANSI
15
+ const ansiCode = 16 + (36 * Math.round(r / 255 * 5)) + (6 * Math.round(g / 255 * 5)) + Math.round(b / 255 * 5);
16
+ return `\x1b[48;5;${ansiCode}m`;
17
+ }
18
+ /**
19
+ * Create a color swatch for terminal display
20
+ */
21
+ function createColorSwatch(hex, label) {
22
+ const colorCode = hexToAnsi(hex);
23
+ const reset = '\x1b[0m';
24
+ return `${colorCode} ${reset} ${label}`;
25
+ }
26
+ /**
27
+ * Create theme preview with color swatches
28
+ */
29
+ function createThemePreview(themeName) {
30
+ const theme = PREDEFINED_THEMES[themeName];
31
+ const lightColors = theme.light.colors;
32
+ const primarySwatch = createColorSwatch(lightColors.primary, 'Primary');
33
+ const secondarySwatch = createColorSwatch(lightColors.secondary, 'Secondary');
34
+ const accentSwatch = createColorSwatch(lightColors.accent, 'Accent');
35
+ return `${primarySwatch} ${secondarySwatch} ${accentSwatch}`;
36
+ }
37
+ /**
38
+ * Display comprehensive theme preview after selection
39
+ */
40
+ export function displayThemePreview(themeName) {
41
+ const theme = PREDEFINED_THEMES[themeName];
42
+ console.log(chalk.cyan('\nšŸŽØ Theme Color Palette:'));
43
+ console.log(chalk.white(` ${theme.name.toUpperCase()} THEME`));
44
+ // Light theme colors
45
+ console.log(chalk.white('\n Light Mode:'));
46
+ const lightColors = theme.light.colors;
47
+ console.log(` ${createColorSwatch(lightColors.primary, `Primary: ${lightColors.primary}`)}`);
48
+ console.log(` ${createColorSwatch(lightColors.secondary, `Secondary: ${lightColors.secondary}`)}`);
49
+ console.log(` ${createColorSwatch(lightColors.accent, `Accent: ${lightColors.accent}`)}`);
50
+ console.log(` ${createColorSwatch(lightColors.success, `Success: ${lightColors.success}`)}`);
51
+ console.log(` ${createColorSwatch(lightColors.warning, `Warning: ${lightColors.warning}`)}`);
52
+ console.log(` ${createColorSwatch(lightColors.error, `Error: ${lightColors.error}`)}`);
53
+ // Dark theme colors
54
+ console.log(chalk.white('\n Dark Mode:'));
55
+ const darkColors = theme.dark.colors;
56
+ console.log(` ${createColorSwatch(darkColors.primary, `Primary: ${darkColors.primary}`)}`);
57
+ console.log(` ${createColorSwatch(darkColors.secondary, `Secondary: ${darkColors.secondary}`)}`);
58
+ console.log(` ${createColorSwatch(darkColors.accent, `Accent: ${darkColors.accent}`)}`);
59
+ console.log(` ${createColorSwatch(darkColors.success, `Success: ${darkColors.success}`)}`);
60
+ console.log(` ${createColorSwatch(darkColors.warning, `Warning: ${darkColors.warning}`)}`);
61
+ console.log(` ${createColorSwatch(darkColors.error, `Error: ${darkColors.error}`)}`);
62
+ console.log(chalk.gray(`\n Default mode: ${theme.defaultMode}`));
63
+ }
4
64
  export async function gatherProjectConfig(projectName, options) {
5
65
  console.log(chalk.cyan('\nšŸš€ Creating a new Skuilder course application\n'));
6
66
  let config = {
@@ -61,19 +121,19 @@ export async function gatherProjectConfig(projectName, options) {
61
121
  message: 'Select theme:',
62
122
  choices: [
63
123
  {
64
- name: 'Default (Material Blue)',
124
+ name: `Default (Material Blue) ${createThemePreview('default')}`,
65
125
  value: 'default'
66
126
  },
67
127
  {
68
- name: 'Medical (Healthcare Green)',
128
+ name: `Medical (Healthcare Green) ${createThemePreview('medical')}`,
69
129
  value: 'medical'
70
130
  },
71
131
  {
72
- name: 'Educational (Academic Orange)',
132
+ name: `Educational (Academic Orange) ${createThemePreview('educational')}`,
73
133
  value: 'educational'
74
134
  },
75
135
  {
76
- name: 'Corporate (Professional Gray)',
136
+ name: `Corporate (Professional Gray) ${createThemePreview('corporate')}`,
77
137
  value: 'corporate'
78
138
  }
79
139
  ],
@@ -88,6 +148,8 @@ export async function gatherProjectConfig(projectName, options) {
88
148
  course: answers.courseId,
89
149
  theme: PREDEFINED_THEMES[answers.themeName]
90
150
  };
151
+ // Show comprehensive theme preview
152
+ displayThemePreview(answers.themeName);
91
153
  }
92
154
  else {
93
155
  // Non-interactive mode: use provided options
@@ -117,7 +179,7 @@ export async function confirmProjectCreation(config, projectPath) {
117
179
  if (config.course) {
118
180
  console.log(` Course ID: ${chalk.white(config.course)}`);
119
181
  }
120
- console.log(` Theme: ${chalk.white(config.theme.name)}`);
182
+ console.log(` Theme: ${chalk.white(config.theme.name)} ${createThemePreview(config.theme.name)}`);
121
183
  console.log(` Directory: ${chalk.white(projectPath)}`);
122
184
  const { confirmed } = await inquirer.prompt([
123
185
  {
@@ -129,57 +191,10 @@ export async function confirmProjectCreation(config, projectPath) {
129
191
  ]);
130
192
  return confirmed;
131
193
  }
132
- export async function promptForCustomTheme() {
133
- console.log(chalk.cyan('\nšŸŽØ Custom Theme Configuration\n'));
134
- const answers = await inquirer.prompt([
135
- {
136
- type: 'input',
137
- name: 'name',
138
- message: 'Theme name:',
139
- validate: (input) => input.trim().length > 0 || 'Theme name is required'
140
- },
141
- {
142
- type: 'input',
143
- name: 'primary',
144
- message: 'Primary color (hex):',
145
- default: '#1976D2',
146
- validate: validateHexColor
147
- },
148
- {
149
- type: 'input',
150
- name: 'secondary',
151
- message: 'Secondary color (hex):',
152
- default: '#424242',
153
- validate: validateHexColor
154
- },
155
- {
156
- type: 'input',
157
- name: 'accent',
158
- message: 'Accent color (hex):',
159
- default: '#82B1FF',
160
- validate: validateHexColor
161
- }
162
- ]);
163
- return {
164
- name: answers.name,
165
- colors: {
166
- primary: answers.primary,
167
- secondary: answers.secondary,
168
- accent: answers.accent
169
- }
170
- };
171
- }
172
194
  function formatProjectName(projectName) {
173
195
  return projectName
174
196
  .split(/[-_\s]+/)
175
197
  .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
176
198
  .join(' ');
177
199
  }
178
- function validateHexColor(input) {
179
- const hexColorRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
180
- if (!hexColorRegex.test(input)) {
181
- return 'Please enter a valid hex color (e.g., #1976D2)';
182
- }
183
- return true;
184
- }
185
200
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA6B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE3E;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,sBAAsB;IACtB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE3B,qBAAqB;IACrB,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzC,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,OAAO,aAAa,QAAQ,GAAG,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAa;IACnD,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,SAAS,CAAC;IACxB,OAAO,GAAG,SAAS,KAAK,KAAK,IAAI,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IAEvC,MAAM,aAAa,GAAG,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErE,OAAO,GAAG,aAAa,IAAI,eAAe,IAAI,YAAY,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEjE,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,cAAc,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE3F,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,QAAQ,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,OAAmB;IAEnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAE7E,IAAI,MAAM,GAA2B;QACnC,WAAW;KACZ,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE,iBAAiB,CAAC,WAAW,CAAC;gBACvC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,0BAA0B;aACnF;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,kBAAkB;gBAC3B,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,qCAAqC;wBAC3C,KAAK,EAAE,OAAO;qBACf;oBACD;wBACE,IAAI,EAAE,oCAAoC;wBAC1C,KAAK,EAAE,QAAQ;qBAChB;iBACF;gBACD,OAAO,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;aAC9D;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,uBAAuB;gBAChC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,KAAK,OAAO;gBACpD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBAAE,OAAO,gDAAgD,CAAC;oBAC3E,IAAI,CAAC;wBACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;wBACf,OAAO,IAAI,CAAC;oBACd,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,0BAA0B,CAAC;oBACpC,CAAC;gBACH,CAAC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,iCAAiC;gBAC1C,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,KAAK,OAAO;aACrD;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,2BAA2B,kBAAkB,CAAC,SAAS,CAAC,EAAE;wBAChE,KAAK,EAAE,SAAS;qBACjB;oBACD;wBACE,IAAI,EAAE,8BAA8B,kBAAkB,CAAC,SAAS,CAAC,EAAE;wBACnE,KAAK,EAAE,SAAS;qBACjB;oBACD;wBACE,IAAI,EAAE,iCAAiC,kBAAkB,CAAC,aAAa,CAAC,EAAE;wBAC1E,KAAK,EAAE,aAAa;qBACrB;oBACD;wBACE,IAAI,EAAE,iCAAiC,kBAAkB,CAAC,WAAW,CAAC,EAAE;wBACxE,KAAK,EAAE,WAAW;qBACnB;iBACF;gBACD,OAAO,EAAE,OAAO,CAAC,KAAK;aACvB;SACF,CAAC,CAAC;QAEH,MAAM,GAAG;YACP,GAAG,MAAM;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,QAAQ;YACxB,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC;SAC5C,CAAC;QAEF,mCAAmC;QACnC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,MAAM,GAAG;YACP,WAAW;YACX,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC;YACrC,aAAa,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;YACnE,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,QAAQ;YACxB,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC;SACxC,CAAC;QAEF,oDAAoD;QACpD,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,OAAO,MAAuB,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAqB,EACrB,WAAmB;IAEnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAEnE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAEzD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC1C;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,qCAAqC;YAC9C,OAAO,EAAE,IAAI;SACd;KACF,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAID,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,OAAO,WAAW;SACf,KAAK,CAAC,SAAS,CAAC;SAChB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -11,10 +11,20 @@ export declare function copyDirectory(source: string, destination: string, exclu
11
11
  * Transform package.json to use published dependencies instead of workspace references
12
12
  */
13
13
  export declare function transformPackageJson(packageJsonPath: string, projectName: string, cliVersion: string): Promise<void>;
14
+ /**
15
+ * Create a vite.config.ts to work with published packages instead of workspace sources
16
+ *
17
+ * // [ ] This should be revised so that it works from the existing vite.config.ts in standalone-ui. As is, it recreates 95% of the same config.
18
+ */
19
+ export declare function createViteConfig(viteConfigPath: string): Promise<void>;
14
20
  /**
15
21
  * Generate skuilder.config.json based on project configuration
16
22
  */
17
23
  export declare function generateSkuilderConfig(configPath: string, config: ProjectConfig): Promise<void>;
24
+ /**
25
+ * Generate .gitignore file for the project
26
+ */
27
+ export declare function generateGitignore(gitignorePath: string): Promise<void>;
18
28
  /**
19
29
  * Generate project README.md
20
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAkB,MAAM,aAAa,CAAC;AAK5D;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAa5D;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,MAAM,EAAgD,GACtE,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAkB,MAAM,aAAa,CAAC;AAK5D;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAe5D;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,MAAM,EAAgD,GACtE,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D5E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsH5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgG7F;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -1,5 +1,4 @@
1
- import { promises as fs } from 'fs';
2
- import { existsSync } from 'fs';
1
+ import { promises as fs, existsSync } from 'fs';
3
2
  import path from 'path';
4
3
  import { fileURLToPath } from 'url';
5
4
  import chalk from 'chalk';
@@ -30,7 +29,7 @@ export async function copyDirectory(source, destination, excludePatterns = ['nod
30
29
  const sourcePath = path.join(source, entry.name);
31
30
  const destPath = path.join(destination, entry.name);
32
31
  // Skip excluded patterns
33
- if (excludePatterns.some(pattern => entry.name.includes(pattern))) {
32
+ if (excludePatterns.some((pattern) => entry.name.includes(pattern))) {
34
33
  continue;
35
34
  }
36
35
  if (entry.isDirectory()) {
@@ -60,17 +59,88 @@ export async function transformPackageJson(packageJsonPath, projectName, cliVers
60
59
  }
61
60
  }
62
61
  }
62
+ // Add missing terser devDependency for build minification
63
+ if (packageJson.devDependencies && !packageJson.devDependencies['terser']) {
64
+ packageJson.devDependencies['terser'] = '^5.39.0';
65
+ }
63
66
  // Remove CLI-specific fields that don't belong in generated projects
64
67
  delete packageJson.publishConfig;
65
68
  await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
66
69
  }
70
+ /**
71
+ * Create a vite.config.ts to work with published packages instead of workspace sources
72
+ *
73
+ * // [ ] This should be revised so that it works from the existing vite.config.ts in standalone-ui. As is, it recreates 95% of the same config.
74
+ */
75
+ export async function createViteConfig(viteConfigPath) {
76
+ // Create a clean vite config for standalone projects
77
+ const transformedContent = `// packages/standalone-ui/vite.config.ts
78
+ import { defineConfig } from 'vite';
79
+ import vue from '@vitejs/plugin-vue';
80
+ import { fileURLToPath, URL } from 'node:url';
81
+
82
+ export default defineConfig({
83
+ plugins: [vue()],
84
+ resolve: {
85
+ alias: {
86
+ // Alias for internal src paths
87
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
88
+
89
+ // Add events alias if needed (often required by dependencies)
90
+ events: 'events',
91
+ },
92
+ extensions: ['.js', '.ts', '.json', '.vue'],
93
+ dedupe: [
94
+ // Ensure single instances of core libs and published packages
95
+ 'vue',
96
+ 'vuetify',
97
+ 'pinia',
98
+ 'vue-router',
99
+ '@vue-skuilder/db',
100
+ '@vue-skuilder/common',
101
+ '@vue-skuilder/common-ui',
102
+ '@vue-skuilder/courses',
103
+ ],
104
+ },
105
+ // --- Dependencies optimization ---
106
+ optimizeDeps: {
107
+ // Help Vite pre-bundle dependencies from published packages
108
+ include: [
109
+ '@vue-skuilder/common-ui',
110
+ '@vue-skuilder/db',
111
+ '@vue-skuilder/common',
112
+ '@vue-skuilder/courses',
113
+ ],
114
+ },
115
+ server: {
116
+ port: 5173, // Use standard Vite port for standalone projects
117
+ },
118
+ build: {
119
+ sourcemap: true,
120
+ target: 'es2020',
121
+ minify: 'terser',
122
+ terserOptions: {
123
+ keep_classnames: true,
124
+ },
125
+ },
126
+ // Add define block for process polyfills
127
+ define: {
128
+ global: 'window',
129
+ 'process.env': process.env,
130
+ 'process.browser': true,
131
+ 'process.version': JSON.stringify(process.version),
132
+ },
133
+ });
134
+ `;
135
+ await fs.writeFile(viteConfigPath, transformedContent);
136
+ }
67
137
  /**
68
138
  * Generate skuilder.config.json based on project configuration
69
139
  */
70
140
  export async function generateSkuilderConfig(configPath, config) {
71
141
  const skuilderConfig = {
72
142
  title: config.title,
73
- dataLayerType: config.dataLayerType
143
+ dataLayerType: config.dataLayerType,
74
144
  };
75
145
  if (config.course) {
76
146
  skuilderConfig.course = config.course;
@@ -83,6 +153,127 @@ export async function generateSkuilderConfig(configPath, config) {
83
153
  }
84
154
  await fs.writeFile(configPath, JSON.stringify(skuilderConfig, null, 2));
85
155
  }
156
+ /**
157
+ * Generate .gitignore file for the project
158
+ */
159
+ export async function generateGitignore(gitignorePath) {
160
+ const gitignoreContent = `# Dependencies
161
+ node_modules/
162
+ /.pnp
163
+ .pnp.js
164
+
165
+ # Production builds
166
+ /dist
167
+ /build
168
+
169
+ # Local env files
170
+ .env
171
+ .env.local
172
+ .env.development.local
173
+ .env.test.local
174
+ .env.production.local
175
+
176
+ # Log files
177
+ npm-debug.log*
178
+ yarn-debug.log*
179
+ yarn-error.log*
180
+ pnpm-debug.log*
181
+ lerna-debug.log*
182
+
183
+ # Runtime data
184
+ pids
185
+ *.pid
186
+ *.seed
187
+ *.pid.lock
188
+
189
+ # Coverage directory used by tools like istanbul
190
+ coverage/
191
+ *.lcov
192
+
193
+ # nyc test coverage
194
+ .nyc_output
195
+
196
+ # Dependency directories
197
+ jspm_packages/
198
+
199
+ # TypeScript cache
200
+ *.tsbuildinfo
201
+
202
+ # Optional npm cache directory
203
+ .npm
204
+
205
+ # Optional eslint cache
206
+ .eslintcache
207
+
208
+ # Microbundle cache
209
+ .rpt2_cache/
210
+ .rts2_cache_cjs/
211
+ .rts2_cache_es/
212
+ .rts2_cache_umd/
213
+
214
+ # Optional REPL history
215
+ .node_repl_history
216
+
217
+ # Output of 'npm pack'
218
+ *.tgz
219
+
220
+ # Yarn Integrity file
221
+ .yarn-integrity
222
+
223
+ # parcel-bundler cache (https://parceljs.org/)
224
+ .cache
225
+ .parcel-cache
226
+
227
+ # Next.js build output
228
+ .next
229
+
230
+ # Nuxt.js build / generate output
231
+ .nuxt
232
+ dist
233
+
234
+ # Gatsby files
235
+ .cache/
236
+ public
237
+
238
+ # Storybook build outputs
239
+ .out
240
+ .storybook-out
241
+
242
+ # Temporary folders
243
+ tmp/
244
+ temp/
245
+
246
+ # Editor directories and files
247
+ .vscode/
248
+ .idea
249
+ .DS_Store
250
+ *.suo
251
+ *.ntvs*
252
+ *.njsproj
253
+ *.sln
254
+ *.sw?
255
+
256
+ # OS generated files
257
+ Thumbs.db
258
+
259
+ # Cypress
260
+ /cypress/videos/
261
+ /cypress/screenshots/
262
+
263
+ # Local development
264
+ .env.development
265
+ .env.production
266
+
267
+ # Package manager lockfiles (uncomment if you want to ignore them)
268
+ # package-lock.json
269
+ # yarn.lock
270
+ # pnpm-lock.yaml
271
+
272
+ # Skuilder specific
273
+ /src/data/local-*.json
274
+ `;
275
+ await fs.writeFile(gitignorePath, gitignoreContent);
276
+ }
86
277
  /**
87
278
  * Generate project README.md
88
279
  */
@@ -125,10 +316,42 @@ Course configuration is managed in \`skuilder.config.json\`. You can modify:
125
316
 
126
317
  ## Theme
127
318
 
128
- Current theme: **${config.theme.name}**
129
- - Primary: ${config.theme.colors.primary}
130
- - Secondary: ${config.theme.colors.secondary}
131
- - Accent: ${config.theme.colors.accent}
319
+ Current theme: **${config.theme.name}** (${config.theme.defaultMode} mode)
320
+ - Primary: ${config.theme.light.colors.primary}
321
+ - Secondary: ${config.theme.light.colors.secondary}
322
+ - Accent: ${config.theme.light.colors.accent}
323
+
324
+ This theme includes both light and dark variants. The application will use the ${config.theme.defaultMode} theme by default, but users can toggle between light and dark modes in their settings.
325
+
326
+ ### Theme Customization
327
+
328
+ To customize the theme colors, edit the \`theme\` section in \`skuilder.config.json\`:
329
+
330
+ \`\`\`json
331
+ {
332
+ "theme": {
333
+ "name": "custom",
334
+ "defaultMode": "light",
335
+ "light": {
336
+ "dark": false,
337
+ "colors": {
338
+ "primary": "#your-color",
339
+ "secondary": "#your-color",
340
+ "accent": "#your-color"
341
+ // ... other semantic colors
342
+ }
343
+ },
344
+ "dark": {
345
+ "dark": true,
346
+ "colors": {
347
+ // ... dark variant colors
348
+ }
349
+ }
350
+ }
351
+ }
352
+ \`\`\`
353
+
354
+ The theme system supports all Vuetify semantic colors including error, success, warning, info, background, surface, and text colors. Changes to the configuration file are applied automatically on restart.
132
355
 
133
356
  ## Testing
134
357
 
@@ -159,12 +382,20 @@ export async function processTemplate(projectPath, config, cliVersion) {
159
382
  console.log(chalk.blue('āš™ļø Configuring package.json...'));
160
383
  const packageJsonPath = path.join(projectPath, 'package.json');
161
384
  await transformPackageJson(packageJsonPath, config.projectName, cliVersion);
385
+ console.log(chalk.blue('šŸ”§ Creating vite.config.ts...'));
386
+ const viteConfigPath = path.join(projectPath, 'vite.config.ts');
387
+ if (existsSync(viteConfigPath)) {
388
+ await createViteConfig(viteConfigPath);
389
+ }
162
390
  console.log(chalk.blue('šŸ”§ Generating configuration...'));
163
391
  const configPath = path.join(projectPath, 'skuilder.config.json');
164
392
  await generateSkuilderConfig(configPath, config);
165
393
  console.log(chalk.blue('šŸ“ Creating README...'));
166
394
  const readmePath = path.join(projectPath, 'README.md');
167
395
  await generateReadme(readmePath, config);
396
+ console.log(chalk.blue('šŸ“„ Generating .gitignore...'));
397
+ const gitignorePath = path.join(projectPath, '.gitignore');
398
+ await generateGitignore(gitignorePath);
168
399
  console.log(chalk.green('āœ… Template processing complete!'));
169
400
  }
170
401
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,8CAA8C;IAC9C,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAElD,OAAO,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAChG,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,WAAmB,EACnB,kBAA4B,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;IAEvE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpD,yBAAyB;QACzB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACpE,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,eAAuB,EACvB,WAAmB,EACnB,UAAkB;IAElB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAExC,4BAA4B;IAC5B,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC;IAC/B,WAAW,CAAC,WAAW,GAAG,gCAAgC,WAAW,EAAE,CAAC;IACxE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;IAE9B,yDAAyD;IACzD,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpE,kDAAkD;gBAClD,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,IAAI,WAAW,CAAC,eAAe,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1E,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACpD,CAAC;IAED,qEAAqE;IACrE,OAAO,WAAW,CAAC,aAAa,CAAC;IAEjC,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,cAAsB;IAC3D,qDAAqD;IACrD,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyD5B,CAAC;IAEA,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,MAAqB;IAErB,MAAM,cAAc,GAAmB;QACrC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAChD,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,aAAqB;IAC3D,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkH1B,CAAC;IAEA,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB,EAAE,MAAqB;IAC5E,MAAM,aAAa,GACjB,MAAM,CAAC,aAAa,KAAK,QAAQ;QAC/B,CAAC,CAAC,wDAAwD;QAC1D,CAAC,CAAC,wCAAwC,MAAM,CAAC,UAAU,IAAI,qBAAqB,EAAE,CAAC;IAE3F,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC,KAAK;;;;;;EAMhC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA6BI,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW;aACtD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;eAC/B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;YACtC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;;iFAEqC,MAAM,CAAC,KAAK,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CxG,CAAC;IAEA,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,MAAqB,EACrB,UAAkB;IAElB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,MAAM,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,MAAM,oBAAoB,CAAC,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAChE,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAClE,MAAM,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.1.3",
6
+ "version": "0.1.5",
7
7
  "type": "module",
8
8
  "description": "CLI scaffolding tool for vue-skuilder projects",
9
9
  "bin": {
@@ -33,11 +33,13 @@
33
33
  "course"
34
34
  ],
35
35
  "dependencies": {
36
- "@vue-skuilder/standalone-ui": "^0.1.3",
36
+ "@vue-skuilder/db": "0.1.5",
37
+ "@vue-skuilder/standalone-ui": "^0.1.5",
37
38
  "chalk": "^5.3.0",
38
39
  "commander": "^11.0.0",
39
40
  "fs-extra": "^11.2.0",
40
- "inquirer": "^9.2.0"
41
+ "inquirer": "^9.2.0",
42
+ "pouchdb": "^9.0.0"
41
43
  },
42
44
  "devDependencies": {
43
45
  "@types/fs-extra": "^11.0.0",
package/src/cli.ts CHANGED
@@ -4,7 +4,8 @@ import { Command } from 'commander';
4
4
  import { readFileSync } from 'fs';
5
5
  import { fileURLToPath } from 'url';
6
6
  import { dirname, join } from 'path';
7
- import { initCommand } from './commands/init.js';
7
+ import { createInitCommand } from './commands/init.js';
8
+ import { createPackCommand } from './commands/pack.js';
8
9
 
9
10
  const __filename = fileURLToPath(import.meta.url);
10
11
  const __dirname = dirname(__filename);
@@ -20,16 +21,9 @@ program
20
21
  .description('CLI tool for scaffolding Skuilder course applications')
21
22
  .version(packageJson.version);
22
23
 
23
- program
24
- .command('init')
25
- .argument('<project-name>', 'name of the project to create')
26
- .description('create a new Skuilder course application')
27
- .option('--data-layer <type>', 'data layer type (static|dynamic)', 'dynamic')
28
- .option('--theme <name>', 'theme name (default|medical|educational|corporate)', 'default')
29
- .option('--no-interactive', 'skip interactive prompts')
30
- .option('--couchdb-url <url>', 'CouchDB server URL (for dynamic data layer)')
31
- .option('--course-id <id>', 'course ID to import (for dynamic data layer)')
32
- .action(initCommand);
24
+ // Add commands
25
+ program.addCommand(createInitCommand());
26
+ program.addCommand(createPackCommand());
33
27
 
34
28
  program.on('--help', () => {
35
29
  console.log('');
@@ -37,6 +31,8 @@ program.on('--help', () => {
37
31
  console.log(' $ skuilder init my-anatomy-course');
38
32
  console.log(' $ skuilder init biology-101 --data-layer=static --theme=medical');
39
33
  console.log(' $ skuilder init physics --no-interactive --data-layer=dynamic');
34
+ console.log(' $ skuilder pack sample-course-id');
35
+ console.log(' $ skuilder pack biology-101 --server http://localhost:5984 --username admin');
40
36
  });
41
37
 
42
- program.parse();
38
+ program.parse();