@digilogiclabs/create-saas-app 1.9.0 → 1.9.2
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/bin/index.js +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.js +1173 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/mobile/base/template/package.json +1 -1
- package/dist/templates/web/base/template/package.json +1 -1
- package/dist/templates/web/ui-auth/template/package.json +2 -2
- package/dist/templates/web/ui-auth-payments/template/package.json +2 -2
- package/dist/templates/web/ui-auth-payments-audio/template/package.json +2 -2
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +136 -107
- package/dist/templates/web/ui-auth-payments-video/template/package.json +2 -2
- package/dist/templates/web/ui-only/template/package.json +2 -2
- package/dist/templates/web/ui-package-test/template/package.json +2 -2
- package/package.json +2 -2
- package/src/templates/mobile/base/template/package.json +1 -1
- package/src/templates/web/base/template/package.json +1 -1
- package/src/templates/web/ui-auth/template/package.json +2 -2
- package/src/templates/web/ui-auth-payments/template/package.json +2 -2
- package/src/templates/web/ui-auth-payments-audio/template/package.json +2 -2
- package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +136 -107
- package/src/templates/web/ui-auth-payments-video/template/package.json +2 -2
- package/src/templates/web/ui-only/template/package.json +2 -2
- package/src/templates/web/ui-package-test/template/package.json +2 -2
- package/dist/cli/commands/add.d.ts +0 -6
- package/dist/cli/commands/add.d.ts.map +0 -1
- package/dist/cli/commands/add.js +0 -39
- package/dist/cli/commands/add.js.map +0 -1
- package/dist/cli/commands/create.d.ts +0 -28
- package/dist/cli/commands/create.d.ts.map +0 -1
- package/dist/cli/commands/create.js +0 -130
- package/dist/cli/commands/create.js.map +0 -1
- package/dist/cli/commands/index.d.ts +0 -4
- package/dist/cli/commands/index.d.ts.map +0 -1
- package/dist/cli/commands/index.js +0 -20
- package/dist/cli/commands/index.js.map +0 -1
- package/dist/cli/commands/update.d.ts +0 -6
- package/dist/cli/commands/update.d.ts.map +0 -1
- package/dist/cli/commands/update.js +0 -68
- package/dist/cli/commands/update.js.map +0 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -59
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/prompts/index.d.ts +0 -2
- package/dist/cli/prompts/index.d.ts.map +0 -1
- package/dist/cli/prompts/index.js +0 -18
- package/dist/cli/prompts/index.js.map +0 -1
- package/dist/cli/prompts/project-setup.d.ts +0 -5
- package/dist/cli/prompts/project-setup.d.ts.map +0 -1
- package/dist/cli/prompts/project-setup.js +0 -251
- package/dist/cli/prompts/project-setup.js.map +0 -1
- package/dist/cli/utils/git.d.ts +0 -9
- package/dist/cli/utils/git.d.ts.map +0 -1
- package/dist/cli/utils/git.js +0 -77
- package/dist/cli/utils/git.js.map +0 -1
- package/dist/cli/utils/index.d.ts +0 -5
- package/dist/cli/utils/index.d.ts.map +0 -1
- package/dist/cli/utils/index.js +0 -21
- package/dist/cli/utils/index.js.map +0 -1
- package/dist/cli/utils/logger.d.ts +0 -16
- package/dist/cli/utils/logger.d.ts.map +0 -1
- package/dist/cli/utils/logger.js +0 -55
- package/dist/cli/utils/logger.js.map +0 -1
- package/dist/cli/utils/package-manager.d.ts +0 -8
- package/dist/cli/utils/package-manager.d.ts.map +0 -1
- package/dist/cli/utils/package-manager.js +0 -92
- package/dist/cli/utils/package-manager.js.map +0 -1
- package/dist/cli/utils/spinner.d.ts +0 -7
- package/dist/cli/utils/spinner.d.ts.map +0 -1
- package/dist/cli/utils/spinner.js +0 -48
- package/dist/cli/utils/spinner.js.map +0 -1
- package/dist/cli/validators/dependencies.d.ts +0 -15
- package/dist/cli/validators/dependencies.d.ts.map +0 -1
- package/dist/cli/validators/dependencies.js +0 -108
- package/dist/cli/validators/dependencies.js.map +0 -1
- package/dist/cli/validators/index.d.ts +0 -3
- package/dist/cli/validators/index.d.ts.map +0 -1
- package/dist/cli/validators/index.js +0 -19
- package/dist/cli/validators/index.js.map +0 -1
- package/dist/cli/validators/project-name.d.ts +0 -5
- package/dist/cli/validators/project-name.d.ts.map +0 -1
- package/dist/cli/validators/project-name.js +0 -151
- package/dist/cli/validators/project-name.js.map +0 -1
- package/dist/generators/file-processor.d.ts +0 -28
- package/dist/generators/file-processor.d.ts.map +0 -1
- package/dist/generators/file-processor.js +0 -203
- package/dist/generators/file-processor.js.map +0 -1
- package/dist/generators/index.d.ts +0 -4
- package/dist/generators/index.d.ts.map +0 -1
- package/dist/generators/index.js +0 -20
- package/dist/generators/index.js.map +0 -1
- package/dist/generators/package-installer.d.ts +0 -29
- package/dist/generators/package-installer.d.ts.map +0 -1
- package/dist/generators/package-installer.js +0 -167
- package/dist/generators/package-installer.js.map +0 -1
- package/dist/generators/template-generator.d.ts +0 -48
- package/dist/generators/template-generator.d.ts.map +0 -1
- package/dist/generators/template-generator.js +0 -274
- package/dist/generators/template-generator.js.map +0 -1
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createProject = createProject;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const logger_1 = require("../utils/logger");
|
|
9
|
-
const spinner_1 = require("../utils/spinner");
|
|
10
|
-
const project_name_1 = require("../validators/project-name");
|
|
11
|
-
const dependencies_1 = require("../validators/dependencies");
|
|
12
|
-
const project_setup_1 = require("../prompts/project-setup");
|
|
13
|
-
const template_generator_1 = require("../../generators/template-generator");
|
|
14
|
-
const package_installer_1 = require("../../generators/package-installer");
|
|
15
|
-
const git_1 = require("../utils/git");
|
|
16
|
-
async function createProject(platform, template, name, options = {}) {
|
|
17
|
-
try {
|
|
18
|
-
// Validate Node.js version
|
|
19
|
-
if (!(await (0, dependencies_1.validateNodeVersion)())) {
|
|
20
|
-
process.exit(1);
|
|
21
|
-
}
|
|
22
|
-
// Validate platform
|
|
23
|
-
const validPlatforms = ['web', 'mobile', 'both'];
|
|
24
|
-
if (!validPlatforms.includes(platform)) {
|
|
25
|
-
logger_1.logger.error(`Invalid platform: ${platform}. Must be one of: ${validPlatforms.join(', ')}`);
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
// Set up initial configuration
|
|
29
|
-
let config = {
|
|
30
|
-
platform: platform,
|
|
31
|
-
template: template || 'base',
|
|
32
|
-
name: name || 'my-saas-app',
|
|
33
|
-
auth: options.auth || 'supabase',
|
|
34
|
-
database: options.database || 'supabase',
|
|
35
|
-
theme: options.theme || 'default',
|
|
36
|
-
themeColor: options.themeColor || 'blue',
|
|
37
|
-
defaultTheme: options.defaultTheme || 'system',
|
|
38
|
-
install: options.install !== false,
|
|
39
|
-
git: options.git !== false,
|
|
40
|
-
};
|
|
41
|
-
// Interactive prompts if not in yes mode
|
|
42
|
-
if (!options.yes) {
|
|
43
|
-
config = await (0, project_setup_1.getProjectPrompts)(config);
|
|
44
|
-
}
|
|
45
|
-
// Validate project name
|
|
46
|
-
if (!(0, project_name_1.validateProjectName)(config.name)) {
|
|
47
|
-
process.exit(1);
|
|
48
|
-
}
|
|
49
|
-
const projectPath = path_1.default.resolve(process.cwd(), config.name);
|
|
50
|
-
// Validate project path
|
|
51
|
-
if (!(await (0, project_name_1.validateProjectPath)(projectPath))) {
|
|
52
|
-
process.exit(1);
|
|
53
|
-
}
|
|
54
|
-
// Display configuration
|
|
55
|
-
logger_1.logger.title('🚀 Creating your SaaS application');
|
|
56
|
-
logger_1.logger.info(`Platform: ${config.platform}`);
|
|
57
|
-
logger_1.logger.info(`Template: ${config.template}`);
|
|
58
|
-
logger_1.logger.info(`Project: ${config.name}`);
|
|
59
|
-
logger_1.logger.info(`Auth: ${config.auth}`);
|
|
60
|
-
logger_1.logger.info(`Database: ${config.database}`);
|
|
61
|
-
logger_1.logger.info(`Theme: ${config.theme}`);
|
|
62
|
-
logger_1.logger.info(`Theme Color: ${config.themeColor}`);
|
|
63
|
-
logger_1.logger.info(`Default Theme: ${config.defaultTheme}`);
|
|
64
|
-
logger_1.logger.newLine();
|
|
65
|
-
// Generate project structure
|
|
66
|
-
const templateSpinner = (0, spinner_1.spinner)('Generating project structure...');
|
|
67
|
-
try {
|
|
68
|
-
const generator = new template_generator_1.TemplateGenerator(config);
|
|
69
|
-
await generator.generate(projectPath);
|
|
70
|
-
templateSpinner.succeed('Project structure created');
|
|
71
|
-
}
|
|
72
|
-
catch (_error) {
|
|
73
|
-
templateSpinner.fail('Failed to generate project structure');
|
|
74
|
-
throw _error;
|
|
75
|
-
}
|
|
76
|
-
// Install dependencies
|
|
77
|
-
if (config.install) {
|
|
78
|
-
const installSpinner = (0, spinner_1.spinner)('Installing dependencies...');
|
|
79
|
-
try {
|
|
80
|
-
const installer = new package_installer_1.PackageInstaller(projectPath);
|
|
81
|
-
await installer.install();
|
|
82
|
-
installSpinner.succeed('Dependencies installed');
|
|
83
|
-
}
|
|
84
|
-
catch (_error) {
|
|
85
|
-
installSpinner.fail('Failed to install dependencies');
|
|
86
|
-
logger_1.logger.warn('You can install dependencies manually by running:');
|
|
87
|
-
logger_1.logger.code(`cd ${config.name} && npm install`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Initialize git repository
|
|
91
|
-
if (config.git) {
|
|
92
|
-
const gitSpinner = (0, spinner_1.spinner)('Initializing git repository...');
|
|
93
|
-
try {
|
|
94
|
-
await (0, git_1.initializeGit)(projectPath);
|
|
95
|
-
gitSpinner.succeed('Git repository initialized');
|
|
96
|
-
}
|
|
97
|
-
catch (_error) {
|
|
98
|
-
gitSpinner.fail('Failed to initialize git repository');
|
|
99
|
-
logger_1.logger.warn('You can initialize git manually by running:');
|
|
100
|
-
logger_1.logger.code(`cd ${config.name} && git init`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// Success message with next steps
|
|
104
|
-
logger_1.logger.newLine();
|
|
105
|
-
logger_1.logger.success('🎉 Project created successfully!');
|
|
106
|
-
logger_1.logger.newLine();
|
|
107
|
-
logger_1.logger.title('Next steps:');
|
|
108
|
-
logger_1.logger.code(`cd ${config.name}`);
|
|
109
|
-
if (!config.install) {
|
|
110
|
-
logger_1.logger.code('npm install');
|
|
111
|
-
}
|
|
112
|
-
if (config.platform === 'web' || config.platform === 'both') {
|
|
113
|
-
logger_1.logger.code('npm run dev');
|
|
114
|
-
logger_1.logger.info('Open http://localhost:3000 in your browser');
|
|
115
|
-
}
|
|
116
|
-
if (config.platform === 'mobile' || config.platform === 'both') {
|
|
117
|
-
logger_1.logger.code('npx expo start');
|
|
118
|
-
logger_1.logger.info('Scan QR code with Expo Go app');
|
|
119
|
-
}
|
|
120
|
-
logger_1.logger.newLine();
|
|
121
|
-
logger_1.logger.info('📚 Documentation: https://docs.digilogiclabs.com');
|
|
122
|
-
logger_1.logger.info('💬 Support: https://discord.gg/digilogiclabs');
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
logger_1.logger.error('Failed to create project:');
|
|
126
|
-
logger_1.logger.error(error instanceof Error ? error.message : String(error));
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./create"), exports);
|
|
18
|
-
__exportStar(require("./add"), exports);
|
|
19
|
-
__exportStar(require("./update"), exports);
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,wCAAsB;AACtB,2CAAyB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,aAAkB,iBAqDnE"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.updateDependencies = updateDependencies;
|
|
7
|
-
const logger_1 = require("../utils/logger");
|
|
8
|
-
const spinner_1 = require("../utils/spinner");
|
|
9
|
-
const package_manager_1 = require("../utils/package-manager");
|
|
10
|
-
const execa_1 = __importDefault(require("execa"));
|
|
11
|
-
const DIGILOGIC_PACKAGES = [
|
|
12
|
-
'@digilogiclabs/saas-factory-ui',
|
|
13
|
-
'@digilogiclabs/saas-factory-auth',
|
|
14
|
-
'@digilogiclabs/saas-factory-billing',
|
|
15
|
-
'@digilogiclabs/saas-factory-analytics',
|
|
16
|
-
];
|
|
17
|
-
async function updateDependencies(options = {}) {
|
|
18
|
-
try {
|
|
19
|
-
logger_1.logger.title('Updating Digi Logic Labs dependencies');
|
|
20
|
-
const packageManager = await (0, package_manager_1.detectPackageManager)();
|
|
21
|
-
logger_1.logger.info(`Using package manager: ${packageManager}`);
|
|
22
|
-
if (options.check) {
|
|
23
|
-
const checkSpinner = (0, spinner_1.spinner)('Checking for updates...');
|
|
24
|
-
// Check for outdated packages
|
|
25
|
-
try {
|
|
26
|
-
const result = await (0, execa_1.default)(packageManager, ['outdated', ...DIGILOGIC_PACKAGES], {
|
|
27
|
-
reject: false,
|
|
28
|
-
});
|
|
29
|
-
checkSpinner.succeed('Update check completed');
|
|
30
|
-
if (result.stdout) {
|
|
31
|
-
logger_1.logger.info('Available updates:');
|
|
32
|
-
logger_1.logger.log(result.stdout);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
logger_1.logger.success('All Digi Logic Labs packages are up to date!');
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
checkSpinner.fail('Failed to check for updates');
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
const updateSpinner = (0, spinner_1.spinner)('Updating packages...');
|
|
45
|
-
try {
|
|
46
|
-
// Update packages
|
|
47
|
-
const command = await (0, package_manager_1.getAddCommand)(packageManager, DIGILOGIC_PACKAGES);
|
|
48
|
-
await (0, execa_1.default)(command[0], command.slice(1), {
|
|
49
|
-
stdio: 'inherit',
|
|
50
|
-
});
|
|
51
|
-
updateSpinner.succeed('Packages updated successfully');
|
|
52
|
-
logger_1.logger.newLine();
|
|
53
|
-
logger_1.logger.success('All Digi Logic Labs packages have been updated!');
|
|
54
|
-
logger_1.logger.info("Don't forget to test your application after updating.");
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
updateSpinner.fail('Failed to update packages');
|
|
58
|
-
throw error;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
logger_1.logger.error('Failed to update dependencies:');
|
|
64
|
-
logger_1.logger.error(error instanceof Error ? error.message : String(error));
|
|
65
|
-
process.exit(1);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":";;;;;AAgBA,gDAqDC;AArED,4CAAyC;AACzC,8CAA2C;AAC3C,8DAA+E;AAC/E,kDAA0B;AAM1B,MAAM,kBAAkB,GAAG;IACzB,gCAAgC;IAChC,kCAAkC;IAClC,qCAAqC;IACrC,uCAAuC;CACxC,CAAC;AAEK,KAAK,UAAU,kBAAkB,CAAC,UAAyB,EAAE;IAClE,IAAI,CAAC;QACH,eAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,MAAM,IAAA,sCAAoB,GAAE,CAAC;QACpD,eAAM,CAAC,IAAI,CAAC,0BAA0B,cAAc,EAAE,CAAC,CAAC;QAExD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,YAAY,GAAG,IAAA,iBAAO,EAAC,yBAAyB,CAAC,CAAC;YAExD,8BAA8B;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAA,eAAK,EAAC,cAAc,EAAE,CAAC,UAAU,EAAE,GAAG,kBAAkB,CAAC,EAAE;oBAC9E,MAAM,EAAE,KAAK;iBACd,CAAC,CAAC;gBAEH,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;gBAE/C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,eAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBAClC,eAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACjD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,IAAA,iBAAO,EAAC,sBAAsB,CAAC,CAAC;YAEtD,IAAI,CAAC;gBACH,kBAAkB;gBAClB,MAAM,OAAO,GAAG,MAAM,IAAA,+BAAa,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBACxE,MAAM,IAAA,eAAK,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACxC,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;gBAEH,aAAa,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;gBAEvD,eAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,eAAM,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;gBAClE,eAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAChD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC/C,eAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/cli/index.d.ts
DELETED
package/dist/cli/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAsD9B,eAAe,OAAO,CAAC"}
|
package/dist/cli/index.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const commander_1 = require("commander");
|
|
7
|
-
const create_1 = require("./commands/create");
|
|
8
|
-
const add_1 = require("./commands/add");
|
|
9
|
-
const update_1 = require("./commands/update");
|
|
10
|
-
const logger_1 = require("./utils/logger");
|
|
11
|
-
const package_json_1 = __importDefault(require("../../package.json"));
|
|
12
|
-
const program = new commander_1.Command();
|
|
13
|
-
program
|
|
14
|
-
.name('create-saas-app')
|
|
15
|
-
.description('Create modern SaaS applications with Digi Logic Labs packages')
|
|
16
|
-
.version(package_json_1.default.version);
|
|
17
|
-
program
|
|
18
|
-
.command('create')
|
|
19
|
-
.alias('c')
|
|
20
|
-
.description('Create a new SaaS application')
|
|
21
|
-
.argument('<platform>', 'Platform: web, mobile, or both')
|
|
22
|
-
.argument('[template]', 'Template: base, dashboard, saas (web) | base, tabs, stack (mobile)')
|
|
23
|
-
.argument('[name]', 'Project name')
|
|
24
|
-
.option('-a, --auth <provider>', 'Auth provider: firebase, supabase')
|
|
25
|
-
.option('-d, --database <provider>', 'Database provider: supabase, firebase')
|
|
26
|
-
.option('-t, --theme <theme>', 'Theme: default, corporate, startup')
|
|
27
|
-
.option('-c, --theme-color <color>', 'Theme color: blue, green, purple, orange, red, slate')
|
|
28
|
-
.option('--default-theme <mode>', 'Default theme mode: light, dark, system')
|
|
29
|
-
.option('--no-install', 'Skip package installation')
|
|
30
|
-
.option('--no-git', 'Skip git initialization')
|
|
31
|
-
.option('-y, --yes', 'Skip interactive prompts')
|
|
32
|
-
.action(create_1.createProject);
|
|
33
|
-
program
|
|
34
|
-
.command('add')
|
|
35
|
-
.alias('a')
|
|
36
|
-
.description('Add features to existing project')
|
|
37
|
-
.argument('<feature>', 'Feature to add: auth, billing, analytics, etc.')
|
|
38
|
-
.option('-p, --provider <provider>', 'Service provider')
|
|
39
|
-
.action(add_1.addFeature);
|
|
40
|
-
program
|
|
41
|
-
.command('update')
|
|
42
|
-
.alias('u')
|
|
43
|
-
.description('Update Digi Logic Labs dependencies')
|
|
44
|
-
.option('--check', 'Check for updates without installing')
|
|
45
|
-
.action(update_1.updateDependencies);
|
|
46
|
-
// Handle unknown commands
|
|
47
|
-
program.on('command:*', () => {
|
|
48
|
-
logger_1.logger.error(`Unknown command: ${program.args.join(' ')}`);
|
|
49
|
-
logger_1.logger.info('Run "create-saas-app --help" for available commands');
|
|
50
|
-
process.exit(1);
|
|
51
|
-
});
|
|
52
|
-
// Show help if no arguments provided
|
|
53
|
-
if (!process.argv.slice(2).length) {
|
|
54
|
-
program.outputHelp();
|
|
55
|
-
process.exit(0);
|
|
56
|
-
}
|
|
57
|
-
program.parse();
|
|
58
|
-
exports.default = program;
|
|
59
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,8CAAkD;AAClD,wCAA4C;AAC5C,8CAAuD;AACvD,2CAAwC;AACxC,sEAA6C;AAE7C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,sBAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,YAAY,EAAE,gCAAgC,CAAC;KACxD,QAAQ,CAAC,YAAY,EAAE,oEAAoE,CAAC;KAC5F,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;KAClC,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,CAAC;KACpE,MAAM,CAAC,2BAA2B,EAAE,uCAAuC,CAAC;KAC5E,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;KACnE,MAAM,CAAC,2BAA2B,EAAE,sDAAsD,CAAC;KAC3F,MAAM,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;KAC3E,MAAM,CAAC,cAAc,EAAE,2BAA2B,CAAC;KACnD,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC;KAC7C,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,WAAW,EAAE,gDAAgD,CAAC;KACvE,MAAM,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;KACvD,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;KACzD,MAAM,CAAC,2BAAkB,CAAC,CAAC;AAE9B,0BAA0B;AAC1B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,eAAM,CAAC,KAAK,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3D,eAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,qCAAqC;AACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,kBAAe,OAAO,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./project-setup"), exports);
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/prompts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { ProjectConfig } from '../commands/create';
|
|
2
|
-
export declare function getProjectPrompts(initialConfig: ProjectConfig): Promise<ProjectConfig>;
|
|
3
|
-
export declare function getAuthSetupPrompts(authProvider: string): Promise<any>;
|
|
4
|
-
export declare function getThemeCustomizationPrompts(theme: string): Promise<any>;
|
|
5
|
-
//# sourceMappingURL=project-setup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-setup.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/project-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAiK5F;AAED,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,gBAkD7D;AAED,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,MAAM,gBA+B/D"}
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getProjectPrompts = getProjectPrompts;
|
|
7
|
-
exports.getAuthSetupPrompts = getAuthSetupPrompts;
|
|
8
|
-
exports.getThemeCustomizationPrompts = getThemeCustomizationPrompts;
|
|
9
|
-
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
-
const project_name_1 = require("../validators/project-name");
|
|
11
|
-
const logger_1 = require("../utils/logger");
|
|
12
|
-
async function getProjectPrompts(initialConfig) {
|
|
13
|
-
logger_1.logger.title('🛠️ Project Configuration');
|
|
14
|
-
const questions = [
|
|
15
|
-
{
|
|
16
|
-
type: 'input',
|
|
17
|
-
name: 'name',
|
|
18
|
-
message: 'Project name:',
|
|
19
|
-
default: initialConfig.name,
|
|
20
|
-
validate: (input) => {
|
|
21
|
-
if (!(0, project_name_1.validateProjectName)(input)) {
|
|
22
|
-
const suggestion = (0, project_name_1.suggestProjectName)(input);
|
|
23
|
-
return `Invalid project name. Try: ${suggestion}`;
|
|
24
|
-
}
|
|
25
|
-
return true;
|
|
26
|
-
},
|
|
27
|
-
filter: (input) => input.trim(),
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
type: 'list',
|
|
31
|
-
name: 'platform',
|
|
32
|
-
message: 'Select platform:',
|
|
33
|
-
choices: [
|
|
34
|
-
{ name: '🌐 Web (Next.js)', value: 'web' },
|
|
35
|
-
{ name: '📱 Mobile (Expo)', value: 'mobile' },
|
|
36
|
-
{ name: '🚀 Both (Full-stack)', value: 'both' },
|
|
37
|
-
],
|
|
38
|
-
default: initialConfig.platform,
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
type: 'list',
|
|
42
|
-
name: 'template',
|
|
43
|
-
message: 'Select template:',
|
|
44
|
-
choices: (answers) => {
|
|
45
|
-
if (answers.platform === 'web') {
|
|
46
|
-
return [
|
|
47
|
-
{ name: '📄 Base - Clean starter template', value: 'base' },
|
|
48
|
-
{
|
|
49
|
-
name: '📦 UI Only - With @digilogiclabs/saas-factory-ui (no auth)',
|
|
50
|
-
value: 'ui-only',
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
name: '🔐 UI + Auth - With UI components and authentication',
|
|
54
|
-
value: 'ui-auth',
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: '💳 UI + Auth + Payments - Full SaaS with payments integration',
|
|
58
|
-
value: 'ui-auth-payments',
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: '🎵 Audio Player App - Full SaaS with audio streaming features',
|
|
62
|
-
value: 'ui-auth-payments-audio',
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
name: '🎬 Video Player App - Full SaaS with video streaming features',
|
|
66
|
-
value: 'ui-auth-payments-video',
|
|
67
|
-
},
|
|
68
|
-
{ name: '📊 Dashboard - Admin dashboard with analytics', value: 'dashboard' },
|
|
69
|
-
{ name: '💼 SaaS - Multi-tenant SaaS application', value: 'saas' },
|
|
70
|
-
];
|
|
71
|
-
}
|
|
72
|
-
else if (answers.platform === 'mobile') {
|
|
73
|
-
return [
|
|
74
|
-
{ name: '📱 Base - Simple mobile app', value: 'base' },
|
|
75
|
-
{ name: '📑 Tabs - Tab navigation', value: 'tabs' },
|
|
76
|
-
{ name: '📚 Stack - Stack navigation', value: 'stack' },
|
|
77
|
-
];
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
return [{ name: '🚀 Base - Web + Mobile starter', value: 'base' }];
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
default: initialConfig.template,
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
type: 'list',
|
|
87
|
-
name: 'auth',
|
|
88
|
-
message: 'Select authentication provider:',
|
|
89
|
-
choices: [
|
|
90
|
-
{ name: '⚡ Supabase - Open source alternative', value: 'supabase' },
|
|
91
|
-
{ name: "🔥 Firebase - Google's platform", value: 'firebase' },
|
|
92
|
-
],
|
|
93
|
-
default: initialConfig.auth,
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
type: 'list',
|
|
97
|
-
name: 'database',
|
|
98
|
-
message: 'Select database provider:',
|
|
99
|
-
choices: (answers) => {
|
|
100
|
-
// Smart defaults based on auth choice
|
|
101
|
-
const choices = [
|
|
102
|
-
{ name: '⚡ Supabase - PostgreSQL with real-time', value: 'supabase' },
|
|
103
|
-
{ name: '🔥 Firebase - NoSQL with real-time', value: 'firebase' },
|
|
104
|
-
];
|
|
105
|
-
// Suggest matching auth provider
|
|
106
|
-
if (answers.auth === 'firebase') {
|
|
107
|
-
return choices.reverse();
|
|
108
|
-
}
|
|
109
|
-
return choices;
|
|
110
|
-
},
|
|
111
|
-
default: (answers) => {
|
|
112
|
-
// Auto-match auth provider if possible, but prefer Supabase
|
|
113
|
-
return answers.auth === 'firebase' ? 'firebase' : 'supabase';
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
type: 'list',
|
|
118
|
-
name: 'theme',
|
|
119
|
-
message: 'Select theme:',
|
|
120
|
-
choices: [
|
|
121
|
-
{ name: '🎨 Default - Clean and modern', value: 'default' },
|
|
122
|
-
{ name: '🏢 Corporate - Professional business theme', value: 'corporate' },
|
|
123
|
-
{ name: '🚀 Startup - Bold and innovative', value: 'startup' },
|
|
124
|
-
],
|
|
125
|
-
default: initialConfig.theme,
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
type: 'list',
|
|
129
|
-
name: 'themeColor',
|
|
130
|
-
message: 'Select theme color:',
|
|
131
|
-
choices: [
|
|
132
|
-
{ name: '🔵 Blue - Classic and trustworthy', value: 'blue' },
|
|
133
|
-
{ name: '🟢 Green - Fresh and natural', value: 'green' },
|
|
134
|
-
{ name: '🟣 Purple - Creative and modern', value: 'purple' },
|
|
135
|
-
{ name: '🟠 Orange - Energetic and friendly', value: 'orange' },
|
|
136
|
-
{ name: '🔴 Red - Bold and attention-grabbing', value: 'red' },
|
|
137
|
-
{ name: '⚫ Slate - Professional and minimal', value: 'slate' },
|
|
138
|
-
],
|
|
139
|
-
default: initialConfig.themeColor,
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
type: 'list',
|
|
143
|
-
name: 'defaultTheme',
|
|
144
|
-
message: 'Select default theme mode:',
|
|
145
|
-
choices: [
|
|
146
|
-
{ name: '🌙 System - Follow system preference', value: 'system' },
|
|
147
|
-
{ name: '☀️ Light - Always light mode', value: 'light' },
|
|
148
|
-
{ name: '🌙 Dark - Always dark mode', value: 'dark' },
|
|
149
|
-
],
|
|
150
|
-
default: initialConfig.defaultTheme,
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
type: 'confirm',
|
|
154
|
-
name: 'install',
|
|
155
|
-
message: 'Install dependencies?',
|
|
156
|
-
default: initialConfig.install,
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
type: 'confirm',
|
|
160
|
-
name: 'git',
|
|
161
|
-
message: 'Initialize git repository?',
|
|
162
|
-
default: initialConfig.git,
|
|
163
|
-
},
|
|
164
|
-
];
|
|
165
|
-
const answers = await inquirer_1.default.prompt(questions);
|
|
166
|
-
return {
|
|
167
|
-
...initialConfig,
|
|
168
|
-
...answers,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
async function getAuthSetupPrompts(authProvider) {
|
|
172
|
-
logger_1.logger.title(`🔐 ${authProvider} Configuration`);
|
|
173
|
-
if (authProvider === 'firebase') {
|
|
174
|
-
const questions = [
|
|
175
|
-
{
|
|
176
|
-
type: 'input',
|
|
177
|
-
name: 'projectId',
|
|
178
|
-
message: 'Firebase Project ID:',
|
|
179
|
-
validate: (input) => input.length > 0 || 'Project ID is required',
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
type: 'input',
|
|
183
|
-
name: 'apiKey',
|
|
184
|
-
message: 'Firebase API Key:',
|
|
185
|
-
validate: (input) => input.length > 0 || 'API Key is required',
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
type: 'input',
|
|
189
|
-
name: 'authDomain',
|
|
190
|
-
message: 'Firebase Auth Domain:',
|
|
191
|
-
validate: (input) => input.length > 0 || 'Auth Domain is required',
|
|
192
|
-
},
|
|
193
|
-
];
|
|
194
|
-
return await inquirer_1.default.prompt(questions);
|
|
195
|
-
}
|
|
196
|
-
else if (authProvider === 'supabase') {
|
|
197
|
-
const questions = [
|
|
198
|
-
{
|
|
199
|
-
type: 'input',
|
|
200
|
-
name: 'url',
|
|
201
|
-
message: 'Supabase URL:',
|
|
202
|
-
validate: (input) => {
|
|
203
|
-
if (!input.length)
|
|
204
|
-
return 'URL is required';
|
|
205
|
-
if (!input.startsWith('https://'))
|
|
206
|
-
return 'URL must start with https://';
|
|
207
|
-
return true;
|
|
208
|
-
},
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
type: 'input',
|
|
212
|
-
name: 'anonKey',
|
|
213
|
-
message: 'Supabase Anon Key:',
|
|
214
|
-
validate: (input) => input.length > 0 || 'Anon Key is required',
|
|
215
|
-
},
|
|
216
|
-
];
|
|
217
|
-
return await inquirer_1.default.prompt(questions);
|
|
218
|
-
}
|
|
219
|
-
return {};
|
|
220
|
-
}
|
|
221
|
-
async function getThemeCustomizationPrompts(theme) {
|
|
222
|
-
logger_1.logger.title(`🎨 ${theme} Theme Customization`);
|
|
223
|
-
const questions = [
|
|
224
|
-
{
|
|
225
|
-
type: 'input',
|
|
226
|
-
name: 'primaryColor',
|
|
227
|
-
message: 'Primary color (hex):',
|
|
228
|
-
default: theme === 'corporate' ? '#1e40af' : theme === 'startup' ? '#7c3aed' : '#3b82f6',
|
|
229
|
-
validate: (input) => {
|
|
230
|
-
if (!/^#[0-9A-F]{6}$/i.test(input)) {
|
|
231
|
-
return 'Please enter a valid hex color (e.g., #3b82f6)';
|
|
232
|
-
}
|
|
233
|
-
return true;
|
|
234
|
-
},
|
|
235
|
-
},
|
|
236
|
-
{
|
|
237
|
-
type: 'input',
|
|
238
|
-
name: 'fontFamily',
|
|
239
|
-
message: 'Font family:',
|
|
240
|
-
default: theme === 'corporate' ? 'Inter' : theme === 'startup' ? 'Poppins' : 'System UI',
|
|
241
|
-
},
|
|
242
|
-
{
|
|
243
|
-
type: 'confirm',
|
|
244
|
-
name: 'darkMode',
|
|
245
|
-
message: 'Enable dark mode support?',
|
|
246
|
-
default: true,
|
|
247
|
-
},
|
|
248
|
-
];
|
|
249
|
-
return await inquirer_1.default.prompt(questions);
|
|
250
|
-
}
|
|
251
|
-
//# sourceMappingURL=project-setup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-setup.js","sourceRoot":"","sources":["../../../src/cli/prompts/project-setup.ts"],"names":[],"mappings":"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"}
|