@shift-css/cli 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +195 -18
- package/dist/index.js.map +6 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// src/index.ts
|
|
4
|
-
import
|
|
4
|
+
import pc5 from "picocolors";
|
|
5
5
|
// package.json
|
|
6
6
|
var package_default = {
|
|
7
7
|
name: "@shift-css/cli",
|
|
8
|
-
version: "0.
|
|
8
|
+
version: "0.4.0",
|
|
9
9
|
description: "CLI tool for Shift CSS framework setup and migration",
|
|
10
10
|
type: "module",
|
|
11
11
|
bin: {
|
|
@@ -704,28 +704,186 @@ async function initCommand() {
|
|
|
704
704
|
showOutro(pc3.green("✨ Shift CSS initialized!"));
|
|
705
705
|
}
|
|
706
706
|
|
|
707
|
+
// src/commands/types.ts
|
|
708
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
709
|
+
import { join as join3 } from "node:path";
|
|
710
|
+
import pc4 from "picocolors";
|
|
711
|
+
function detectFramework(rootDir) {
|
|
712
|
+
const pkgPath = join3(rootDir, "package.json");
|
|
713
|
+
if (!existsSync(pkgPath)) {
|
|
714
|
+
return "unknown";
|
|
715
|
+
}
|
|
716
|
+
try {
|
|
717
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
718
|
+
const deps = {
|
|
719
|
+
...pkg.dependencies,
|
|
720
|
+
...pkg.devDependencies
|
|
721
|
+
};
|
|
722
|
+
if (deps.react || deps["react-dom"] || deps.next) {
|
|
723
|
+
return "react";
|
|
724
|
+
}
|
|
725
|
+
if (deps.vue || deps.nuxt) {
|
|
726
|
+
return "vue";
|
|
727
|
+
}
|
|
728
|
+
if (deps.svelte || deps["@sveltejs/kit"]) {
|
|
729
|
+
return "svelte";
|
|
730
|
+
}
|
|
731
|
+
} catch {}
|
|
732
|
+
return "unknown";
|
|
733
|
+
}
|
|
734
|
+
function generateReactTypes() {
|
|
735
|
+
return `/**
|
|
736
|
+
* Shift CSS - React Type Definitions
|
|
737
|
+
*
|
|
738
|
+
* This file enables TypeScript support for Shift CSS attributes in JSX.
|
|
739
|
+
* Generated by: npx shift-css types
|
|
740
|
+
*/
|
|
741
|
+
|
|
742
|
+
/// <reference types="@shift-css/core/types/react" />
|
|
743
|
+
`;
|
|
744
|
+
}
|
|
745
|
+
function generateVueTypes() {
|
|
746
|
+
return `/**
|
|
747
|
+
* Shift CSS - Vue Type Definitions
|
|
748
|
+
*
|
|
749
|
+
* This file enables TypeScript support for Shift CSS attributes in Vue templates.
|
|
750
|
+
* Generated by: npx shift-css types
|
|
751
|
+
*/
|
|
752
|
+
|
|
753
|
+
/// <reference types="@shift-css/core/types/vue" />
|
|
754
|
+
`;
|
|
755
|
+
}
|
|
756
|
+
function generateGenericTypes() {
|
|
757
|
+
return `/**
|
|
758
|
+
* Shift CSS - Type Definitions
|
|
759
|
+
*
|
|
760
|
+
* Import the types you need for your framework:
|
|
761
|
+
*
|
|
762
|
+
* React:
|
|
763
|
+
* /// <reference types="@shift-css/core/types/react" />
|
|
764
|
+
*
|
|
765
|
+
* Vue:
|
|
766
|
+
* /// <reference types="@shift-css/core/types/vue" />
|
|
767
|
+
*
|
|
768
|
+
* Generated by: npx shift-css types
|
|
769
|
+
*/
|
|
770
|
+
|
|
771
|
+
// Uncomment the line for your framework:
|
|
772
|
+
// /// <reference types="@shift-css/core/types/react" />
|
|
773
|
+
// /// <reference types="@shift-css/core/types/vue" />
|
|
774
|
+
|
|
775
|
+
export {};
|
|
776
|
+
`;
|
|
777
|
+
}
|
|
778
|
+
function showInstructions(framework) {
|
|
779
|
+
console.log();
|
|
780
|
+
console.log(pc4.bold("\uD83D\uDCDD Next Steps"));
|
|
781
|
+
console.log();
|
|
782
|
+
if (framework === "react") {
|
|
783
|
+
console.log(pc4.dim("Option 1: Add to tsconfig.json (recommended)"));
|
|
784
|
+
console.log();
|
|
785
|
+
console.log(pc4.cyan(" {"));
|
|
786
|
+
console.log(pc4.cyan(' "compilerOptions": {'));
|
|
787
|
+
console.log(pc4.cyan(' "types": ["@shift-css/core/types/react"]'));
|
|
788
|
+
console.log(pc4.cyan(" }"));
|
|
789
|
+
console.log(pc4.cyan(" }"));
|
|
790
|
+
console.log();
|
|
791
|
+
console.log(pc4.dim("Option 2: Add reference to any .d.ts file"));
|
|
792
|
+
console.log();
|
|
793
|
+
console.log(pc4.cyan(' /// <reference types="@shift-css/core/types/react" />'));
|
|
794
|
+
} else if (framework === "vue") {
|
|
795
|
+
console.log(pc4.dim("Option 1: Add to tsconfig.json (recommended)"));
|
|
796
|
+
console.log();
|
|
797
|
+
console.log(pc4.cyan(" {"));
|
|
798
|
+
console.log(pc4.cyan(' "compilerOptions": {'));
|
|
799
|
+
console.log(pc4.cyan(' "types": ["@shift-css/core/types/vue"]'));
|
|
800
|
+
console.log(pc4.cyan(" }"));
|
|
801
|
+
console.log(pc4.cyan(" }"));
|
|
802
|
+
console.log();
|
|
803
|
+
console.log(pc4.dim("Option 2: Add reference to any .d.ts file"));
|
|
804
|
+
console.log();
|
|
805
|
+
console.log(pc4.cyan(' /// <reference types="@shift-css/core/types/vue" />'));
|
|
806
|
+
} else if (framework === "svelte") {
|
|
807
|
+
console.log(pc4.dim("Svelte support is coming soon!"));
|
|
808
|
+
console.log();
|
|
809
|
+
console.log(pc4.dim("For now, you can generate a local .d.ts file:"));
|
|
810
|
+
console.log();
|
|
811
|
+
console.log(pc4.cyan(" npx shift-css types --svelte -o shift.d.ts"));
|
|
812
|
+
} else {
|
|
813
|
+
console.log(pc4.dim("Add to your tsconfig.json based on your framework:"));
|
|
814
|
+
console.log();
|
|
815
|
+
console.log(pc4.cyan(' React: "types": ["@shift-css/core/types/react"]'));
|
|
816
|
+
console.log(pc4.cyan(' Vue: "types": ["@shift-css/core/types/vue"]'));
|
|
817
|
+
console.log(pc4.cyan(" Svelte: Coming soon"));
|
|
818
|
+
}
|
|
819
|
+
console.log();
|
|
820
|
+
console.log(pc4.dim("After setup, you'll get autocomplete for attributes like:"));
|
|
821
|
+
console.log(pc4.green(' s-btn="primary" s-grid="3" s-flex="center"'));
|
|
822
|
+
console.log();
|
|
823
|
+
}
|
|
824
|
+
async function typesCommand(options = {}) {
|
|
825
|
+
const rootDir = process.cwd();
|
|
826
|
+
console.log();
|
|
827
|
+
console.log(pc4.bold("\uD83C\uDFA8 Shift CSS Type Generator"));
|
|
828
|
+
console.log();
|
|
829
|
+
const framework = options.framework || detectFramework(rootDir);
|
|
830
|
+
if (framework !== "unknown") {
|
|
831
|
+
console.log(`${pc4.green("✓")} Detected framework: ${pc4.cyan(framework)}`);
|
|
832
|
+
} else {
|
|
833
|
+
console.log(`${pc4.yellow("!")} Could not detect framework automatically`);
|
|
834
|
+
}
|
|
835
|
+
if (options.output) {
|
|
836
|
+
const outputPath = join3(rootDir, options.output);
|
|
837
|
+
let content;
|
|
838
|
+
switch (framework) {
|
|
839
|
+
case "react":
|
|
840
|
+
content = generateReactTypes();
|
|
841
|
+
break;
|
|
842
|
+
case "vue":
|
|
843
|
+
content = generateVueTypes();
|
|
844
|
+
break;
|
|
845
|
+
default:
|
|
846
|
+
content = generateGenericTypes();
|
|
847
|
+
}
|
|
848
|
+
try {
|
|
849
|
+
writeFileSync(outputPath, content, "utf-8");
|
|
850
|
+
console.log(`${pc4.green("✓")} Created ${pc4.cyan(options.output)}`);
|
|
851
|
+
} catch (error) {
|
|
852
|
+
console.error(`${pc4.red("✗")} Failed to write ${options.output}`);
|
|
853
|
+
if (error instanceof Error) {
|
|
854
|
+
console.error(pc4.dim(error.message));
|
|
855
|
+
}
|
|
856
|
+
process.exit(1);
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
showInstructions(framework);
|
|
860
|
+
}
|
|
861
|
+
|
|
707
862
|
// src/index.ts
|
|
708
863
|
var VERSION = package_default.version;
|
|
709
864
|
function showHelp() {
|
|
710
865
|
console.log(`
|
|
711
|
-
${
|
|
866
|
+
${pc5.bold("Shift CSS CLI")} ${pc5.dim(`v${VERSION}`)}
|
|
712
867
|
|
|
713
|
-
${
|
|
714
|
-
${
|
|
868
|
+
${pc5.dim("Usage:")}
|
|
869
|
+
${pc5.cyan("shift-css")} ${pc5.green("<command>")} ${pc5.dim("[options]")}
|
|
715
870
|
|
|
716
|
-
${
|
|
717
|
-
${
|
|
871
|
+
${pc5.dim("Commands:")}
|
|
872
|
+
${pc5.green("init")} Set up Shift CSS in your project
|
|
718
873
|
Detects existing frameworks and wraps them in @layer legacy
|
|
874
|
+
${pc5.green("types")} Generate TypeScript definitions for Shift CSS attributes
|
|
875
|
+
Detects React/Vue/Svelte and shows setup instructions
|
|
719
876
|
|
|
720
|
-
${
|
|
721
|
-
${
|
|
722
|
-
${
|
|
877
|
+
${pc5.dim("Options:")}
|
|
878
|
+
${pc5.yellow("--help, -h")} Show this help message
|
|
879
|
+
${pc5.yellow("--version, -v")} Show version number
|
|
723
880
|
|
|
724
|
-
${
|
|
725
|
-
${
|
|
726
|
-
${
|
|
881
|
+
${pc5.dim("Examples:")}
|
|
882
|
+
${pc5.cyan("npx shift-css init")}
|
|
883
|
+
${pc5.cyan("npx shift-css types")}
|
|
884
|
+
${pc5.cyan("npx shift-css types --react -o shift.d.ts")}
|
|
727
885
|
|
|
728
|
-
${
|
|
886
|
+
${pc5.dim("Learn more:")} ${pc5.underline("https://getshiftcss.com")}
|
|
729
887
|
`);
|
|
730
888
|
}
|
|
731
889
|
function showVersion() {
|
|
@@ -746,16 +904,35 @@ async function main() {
|
|
|
746
904
|
await initCommand();
|
|
747
905
|
return;
|
|
748
906
|
}
|
|
749
|
-
|
|
750
|
-
|
|
907
|
+
if (command === "types") {
|
|
908
|
+
const options = {};
|
|
909
|
+
for (let i = 1;i < args.length; i++) {
|
|
910
|
+
const arg = args[i];
|
|
911
|
+
if (arg === "--react") {
|
|
912
|
+
options.framework = "react";
|
|
913
|
+
} else if (arg === "--vue") {
|
|
914
|
+
options.framework = "vue";
|
|
915
|
+
} else if (arg === "--svelte") {
|
|
916
|
+
options.framework = "svelte";
|
|
917
|
+
} else if ((arg === "-o" || arg === "--output") && args[i + 1]) {
|
|
918
|
+
options.output = args[++i];
|
|
919
|
+
} else if (arg.startsWith("--output=")) {
|
|
920
|
+
options.output = arg.slice("--output=".length);
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
await typesCommand(options);
|
|
924
|
+
return;
|
|
925
|
+
}
|
|
926
|
+
console.error(pc5.red(`Unknown command: ${command}`));
|
|
927
|
+
console.log(pc5.dim(`Run ${pc5.cyan("shift-css --help")} for usage information.`));
|
|
751
928
|
process.exit(1);
|
|
752
929
|
}
|
|
753
930
|
main().catch((error) => {
|
|
754
|
-
console.error(
|
|
931
|
+
console.error(pc5.red("Error:"), error.message);
|
|
755
932
|
if (process.env.DEBUG) {
|
|
756
933
|
console.error(error.stack);
|
|
757
934
|
}
|
|
758
935
|
process.exit(1);
|
|
759
936
|
});
|
|
760
937
|
|
|
761
|
-
//# debugId=
|
|
938
|
+
//# debugId=2629B6603A680EC964756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/commands/init.ts", "../src/core/detector.ts", "../src/core/generator.ts", "../src/types.ts", "../src/core/scanner.ts", "../src/ui/display.ts", "../src/ui/prompts.ts", "../src/core/color.ts"],
|
|
3
|
+
"sources": ["../src/index.ts", "../src/commands/init.ts", "../src/core/detector.ts", "../src/core/generator.ts", "../src/types.ts", "../src/core/scanner.ts", "../src/ui/display.ts", "../src/ui/prompts.ts", "../src/core/color.ts", "../src/commands/types.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"#!/usr/bin/env node\n/**\n * Shift CSS CLI\n *\n * A \"Guided Hand\" CLI tool that helps set up CSS layer compatibility\n *\n * Usage:\n * npx shift-css init - Initialize Shift CSS in your project\n * npx shift-css --help - Show help\n */\n\nimport pc from 'picocolors';\nimport pkg from '../package.json' with { type: 'json' };\nimport { initCommand } from './commands/init.ts';\n\nconst VERSION = pkg.version;\n\nfunction showHelp(): void {\n\tconsole.log(`\n${pc.bold('Shift CSS CLI')} ${pc.dim(`v${VERSION}`)}\n\n${pc.dim('Usage:')}\n ${pc.cyan('shift-css')} ${pc.green('<command>')} ${pc.dim('[options]')}\n\n${pc.dim('Commands:')}\n ${pc.green('init')} Set up Shift CSS in your project\n Detects existing frameworks and wraps them in @layer legacy\n\n${pc.dim('Options:')}\n ${pc.yellow('--help, -h')} Show this help message\n ${pc.yellow('--version, -v')} Show version number\n\n${pc.dim('Examples:')}\n ${pc.cyan('npx shift-css init')}\n ${pc.cyan('npx shift-css --
|
|
5
|
+
"#!/usr/bin/env node\n/**\n * Shift CSS CLI\n *\n * A \"Guided Hand\" CLI tool that helps set up CSS layer compatibility\n *\n * Usage:\n * npx shift-css init - Initialize Shift CSS in your project\n * npx shift-css --help - Show help\n */\n\nimport pc from 'picocolors';\nimport pkg from '../package.json' with { type: 'json' };\nimport { initCommand } from './commands/init.ts';\nimport { typesCommand } from './commands/types.ts';\n\nconst VERSION = pkg.version;\n\nfunction showHelp(): void {\n\tconsole.log(`\n${pc.bold('Shift CSS CLI')} ${pc.dim(`v${VERSION}`)}\n\n${pc.dim('Usage:')}\n ${pc.cyan('shift-css')} ${pc.green('<command>')} ${pc.dim('[options]')}\n\n${pc.dim('Commands:')}\n ${pc.green('init')} Set up Shift CSS in your project\n Detects existing frameworks and wraps them in @layer legacy\n ${pc.green('types')} Generate TypeScript definitions for Shift CSS attributes\n Detects React/Vue/Svelte and shows setup instructions\n\n${pc.dim('Options:')}\n ${pc.yellow('--help, -h')} Show this help message\n ${pc.yellow('--version, -v')} Show version number\n\n${pc.dim('Examples:')}\n ${pc.cyan('npx shift-css init')}\n ${pc.cyan('npx shift-css types')}\n ${pc.cyan('npx shift-css types --react -o shift.d.ts')}\n\n${pc.dim('Learn more:')} ${pc.underline('https://getshiftcss.com')}\n`);\n}\n\nfunction showVersion(): void {\n\tconsole.log(`shift-css v${VERSION}`);\n}\n\nasync function main(): Promise<void> {\n\tconst args = process.argv.slice(2);\n\tconst command = args[0];\n\n\t// Handle flags\n\tif (command === '--help' || command === '-h') {\n\t\tshowHelp();\n\t\treturn;\n\t}\n\n\tif (command === '--version' || command === '-v') {\n\t\tshowVersion();\n\t\treturn;\n\t}\n\n\t// Handle commands\n\tif (command === 'init' || !command) {\n\t\tawait initCommand();\n\t\treturn;\n\t}\n\n\tif (command === 'types') {\n\t\t// Parse options for types command\n\t\tconst options: { framework?: 'react' | 'vue' | 'svelte'; output?: string } = {};\n\n\t\tfor (let i = 1; i < args.length; i++) {\n\t\t\tconst arg = args[i] as string;\n\t\t\tif (arg === '--react') {\n\t\t\t\toptions.framework = 'react';\n\t\t\t} else if (arg === '--vue') {\n\t\t\t\toptions.framework = 'vue';\n\t\t\t} else if (arg === '--svelte') {\n\t\t\t\toptions.framework = 'svelte';\n\t\t\t} else if ((arg === '-o' || arg === '--output') && args[i + 1]) {\n\t\t\t\toptions.output = args[++i];\n\t\t\t} else if (arg.startsWith('--output=')) {\n\t\t\t\toptions.output = arg.slice('--output='.length);\n\t\t\t}\n\t\t}\n\n\t\tawait typesCommand(options);\n\t\treturn;\n\t}\n\n\t// Unknown command\n\tconsole.error(pc.red(`Unknown command: ${command}`));\n\tconsole.log(pc.dim(`Run ${pc.cyan('shift-css --help')} for usage information.`));\n\tprocess.exit(1);\n}\n\nmain().catch((error: Error) => {\n\tconsole.error(pc.red('Error:'), error.message);\n\tif (process.env.DEBUG) {\n\t\tconsole.error(error.stack);\n\t}\n\tprocess.exit(1);\n});\n",
|
|
6
6
|
"/**\n * Init Command\n * Initialize Shift CSS in a project\n */\n\nimport pc from 'picocolors';\nimport { detectFrameworks } from '../core/detector.ts';\nimport {\n\tconfigExists,\n\tgenerateConfig,\n\tgenerateStylesheet,\n\tstylesheetExists,\n\twriteConfig,\n\twriteStylesheet,\n} from '../core/generator.ts';\nimport { scanForCssFiles } from '../core/scanner.ts';\nimport { DEFAULT_CONFIG, type InitResult } from '../types.ts';\nimport { showNextSteps, showStylesheetPreview } from '../ui/display.ts';\nimport {\n\taskArchitectureMode,\n\taskPrimaryHue,\n\taskStylesheetPath,\n\tconfirmInit,\n\tconfirmOverwrite,\n\tcreateSpinner,\n\tlogSuccess,\n\tlogWarning,\n\tshowIntro,\n\tshowOutro,\n} from '../ui/prompts.ts';\n\n/**\n * Main init command\n */\nexport async function initCommand(): Promise<void> {\n\tconst rootDir = process.cwd();\n\n\tshowIntro();\n\n\t// Check if already initialized\n\tconst hasConfig = await configExists(rootDir);\n\tif (hasConfig) {\n\t\tlogWarning('This project already has a shift.config.json');\n\t\tconst shouldOverwrite = await confirmOverwrite('shift.config.json');\n\t\tif (!shouldOverwrite) {\n\t\t\tshowOutro(pc.yellow('Initialization cancelled'));\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Step 1: Scan for existing CSS frameworks (silent, for detection)\n\tconst spinner = createSpinner();\n\tspinner.start('Scanning project...');\n\n\tconst cssFiles = await scanForCssFiles(rootDir);\n\tconst detectedFrameworks = await detectFrameworks(cssFiles);\n\n\tif (detectedFrameworks.length > 0) {\n\t\tspinner.stop(`Detected existing CSS: ${detectedFrameworks.map((f) => f.type).join(', ')}`);\n\t} else {\n\t\tspinner.stop('Project scanned');\n\t}\n\n\t// Step 2: Ask for architecture mode\n\tconst mode = await askArchitectureMode(detectedFrameworks);\n\n\t// Step 3: Ask for primary hue\n\tconst primaryHue = await askPrimaryHue();\n\n\t// Step 4: Ask for stylesheet path\n\tconst defaultStylesheetPath = DEFAULT_CONFIG.paths.stylesheet;\n\tconst stylesheetPath = await askStylesheetPath(defaultStylesheetPath);\n\n\t// Check if stylesheet already exists\n\tconst hasStylesheet = await stylesheetExists(rootDir, stylesheetPath);\n\tif (hasStylesheet) {\n\t\tconst shouldOverwrite = await confirmOverwrite(stylesheetPath);\n\t\tif (!shouldOverwrite) {\n\t\t\tshowOutro(pc.yellow('Initialization cancelled'));\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Step 5: Preview what will be created\n\tconst stylesheetContent = generateStylesheet(mode, detectedFrameworks);\n\tshowStylesheetPreview(stylesheetContent);\n\n\t// Step 6: Confirm and create files\n\tconst shouldProceed = await confirmInit('shift.config.json', stylesheetPath, mode);\n\n\tif (!shouldProceed) {\n\t\tshowOutro(pc.yellow('Initialization cancelled'));\n\t\treturn;\n\t}\n\n\t// Create config\n\tconst config = generateConfig({\n\t\tmode,\n\t\thues: {\n\t\t\tprimary: primaryHue,\n\t\t\tsecondary: DEFAULT_CONFIG.hues.secondary,\n\t\t\taccent: DEFAULT_CONFIG.hues.accent,\n\t\t\tneutral: primaryHue, // Match neutral to primary for cohesion\n\t\t},\n\t\tpaths: {\n\t\t\tstylesheet: stylesheetPath,\n\t\t},\n\t});\n\n\tspinner.start('Creating files...');\n\n\tconst configPath = await writeConfig(rootDir, config);\n\tconst fullStylesheetPath = await writeStylesheet(rootDir, stylesheetPath, stylesheetContent);\n\n\tspinner.stop('Files created');\n\n\t// Success!\n\tlogSuccess(`Created ${pc.cyan('shift.config.json')}`);\n\tlogSuccess(`Created ${pc.cyan(stylesheetPath)}`);\n\n\tconst result: InitResult = {\n\t\tconfigPath,\n\t\tstylesheetPath: fullStylesheetPath,\n\t\tmode,\n\t\tdetectedFrameworks: detectedFrameworks.length > 0 ? detectedFrameworks : undefined,\n\t};\n\n\t// Show next steps based on mode\n\tshowNextSteps(result);\n\n\tshowOutro(pc.green('✨ Shift CSS initialized!'));\n}\n",
|
|
7
7
|
"/**\n * Framework Detector\n * Identifies CSS frameworks by filename and content patterns\n */\n\nimport { readFile } from 'node:fs/promises';\nimport type { CssFile, DetectedFramework, FrameworkSignature, FrameworkType } from '../types.ts';\n\n/** Framework signatures for detection */\nexport const FRAMEWORK_SIGNATURES: FrameworkSignature[] = [\n\t{\n\t\tname: 'bootstrap',\n\t\tfilePatterns: [\n\t\t\t/bootstrap\\.css$/i,\n\t\t\t/bootstrap\\.min\\.css$/i,\n\t\t\t/bootstrap[\\d.-]+\\.css$/i,\n\t\t\t/bootstrap[\\d.-]+\\.min\\.css$/i,\n\t\t],\n\t\tcontentPatterns: [/\\.btn-primary\\s*\\{/, /\\.container-fluid\\s*\\{/, /\\.navbar-/, /--bs-/],\n\t\tpriority: 10,\n\t\ticon: '🅱️',\n\t\tdisplayName: 'Bootstrap',\n\t},\n\t{\n\t\tname: 'tailwind',\n\t\tfilePatterns: [\n\t\t\t/tailwind\\.css$/i,\n\t\t\t/tailwind\\.min\\.css$/i,\n\t\t\t/tailwind\\.output\\.css$/i,\n\t\t\t/tailwind-output\\.css$/i,\n\t\t],\n\t\tcontentPatterns: [\n\t\t\t/--tw-/,\n\t\t\t/\\.hover\\\\:/,\n\t\t\t/\\.focus\\\\:/,\n\t\t\t/@tailwind\\s+(base|components|utilities)/,\n\t\t\t/\\.-?m[trblxy]?-\\[/,\n\t\t],\n\t\tpriority: 10,\n\t\ticon: '🌊',\n\t\tdisplayName: 'Tailwind CSS',\n\t},\n\t{\n\t\tname: 'bulma',\n\t\tfilePatterns: [/bulma\\.css$/i, /bulma\\.min\\.css$/i],\n\t\tcontentPatterns: [/\\.is-primary\\s*\\{/, /\\.columns\\s*\\{/, /\\.navbar-burger/],\n\t\tpriority: 10,\n\t\ticon: '🎨',\n\t\tdisplayName: 'Bulma',\n\t},\n\t{\n\t\tname: 'foundation',\n\t\tfilePatterns: [/foundation\\.css$/i, /foundation\\.min\\.css$/i],\n\t\tcontentPatterns: [/\\.callout\\s*\\{/, /\\.top-bar\\s*\\{/, /\\.orbit/],\n\t\tpriority: 10,\n\t\ticon: '🏛️',\n\t\tdisplayName: 'Foundation',\n\t},\n\t{\n\t\tname: 'generic-large',\n\t\tfilePatterns: [],\n\t\tcontentPatterns: [],\n\t\tpriority: 1,\n\t\tminSize: 10 * 1024, // 10KB\n\t\ticon: '📄',\n\t\tdisplayName: 'Large CSS File',\n\t},\n];\n\n/**\n * Get framework signature by name\n */\nexport function getSignature(type: FrameworkType): FrameworkSignature | undefined {\n\treturn FRAMEWORK_SIGNATURES.find((s) => s.name === type);\n}\n\n/**\n * Check if filename matches any framework pattern\n */\nfunction matchFilename(\n\tbasename: string\n): { type: FrameworkType; signature: FrameworkSignature } | null {\n\tfor (const sig of FRAMEWORK_SIGNATURES) {\n\t\tif (sig.filePatterns.some((pattern) => pattern.test(basename))) {\n\t\t\treturn { type: sig.name, signature: sig };\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Check if content matches framework patterns\n */\nfunction matchContent(\n\tcontent: string\n): { type: FrameworkType; signature: FrameworkSignature } | null {\n\tfor (const sig of FRAMEWORK_SIGNATURES) {\n\t\tif (sig.contentPatterns.length === 0) continue;\n\t\tconst matches = sig.contentPatterns.filter((pattern) => pattern.test(content));\n\t\t// Require at least 2 content pattern matches for confidence\n\t\tif (matches.length >= 2) {\n\t\t\treturn { type: sig.name, signature: sig };\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Detect frameworks from a list of CSS files\n */\nexport async function detectFrameworks(files: CssFile[]): Promise<DetectedFramework[]> {\n\tconst detected: DetectedFramework[] = [];\n\tconst processedPaths = new Set<string>();\n\n\tfor (const file of files) {\n\t\tif (processedPaths.has(file.path)) continue;\n\n\t\t// Pass 1: Filename matching (fast, high confidence)\n\t\tconst filenameMatch = matchFilename(file.basename);\n\t\tif (filenameMatch) {\n\t\t\tdetected.push({\n\t\t\t\ttype: filenameMatch.type,\n\t\t\t\tfile,\n\t\t\t\tconfidence: 'high',\n\t\t\t\tmatchedBy: 'filename',\n\t\t\t});\n\t\t\tprocessedPaths.add(file.path);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Pass 2: Content analysis for larger files\n\t\tif (file.size > 5 * 1024) {\n\t\t\t// >5KB\n\t\t\ttry {\n\t\t\t\t// Read first 50KB for pattern matching\n\t\t\t\tconst content = await readFileHead(file.path, 50 * 1024);\n\n\t\t\t\tconst contentMatch = matchContent(content);\n\t\t\t\tif (contentMatch) {\n\t\t\t\t\tdetected.push({\n\t\t\t\t\t\ttype: contentMatch.type,\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\tconfidence: 'medium',\n\t\t\t\t\t\tmatchedBy: 'content',\n\t\t\t\t\t});\n\t\t\t\t\tprocessedPaths.add(file.path);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Skip files we can't read\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Pass 3: Size-based detection for large generic files\n\t\tconst genericSig = FRAMEWORK_SIGNATURES.find((s) => s.name === 'generic-large');\n\t\tif (genericSig?.minSize && file.size > genericSig.minSize) {\n\t\t\t// Only flag as generic-large if it's a likely entry point name\n\t\t\tconst entryNames = ['app.css', 'main.css', 'styles.css', 'style.css', 'global.css'];\n\t\t\tif (entryNames.includes(file.basename.toLowerCase())) {\n\t\t\t\tdetected.push({\n\t\t\t\t\ttype: 'generic-large',\n\t\t\t\t\tfile,\n\t\t\t\t\tconfidence: 'low',\n\t\t\t\t\tmatchedBy: 'size',\n\t\t\t\t});\n\t\t\t\tprocessedPaths.add(file.path);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort by file size descending\n\treturn detected.sort((a, b) => b.file.size - a.file.size);\n}\n\n/**\n * Read first N bytes of a file\n */\nasync function readFileHead(filepath: string, maxBytes: number): Promise<string> {\n\tconst content = await readFile(filepath, 'utf-8');\n\treturn content.slice(0, maxBytes);\n}\n\n/**\n * Check if a file already has @layer declarations\n */\nexport async function hasLayerDeclarations(filepath: string): Promise<boolean> {\n\ttry {\n\t\tconst content = await readFile(filepath, 'utf-8');\n\t\treturn /@layer\\s+/.test(content);\n\t} catch {\n\t\treturn false;\n\t}\n}\n",
|
|
8
8
|
"/**\n * Code Generator\n * Creates shift.config.json and scaffolds stylesheets\n */\n\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport {\n\ttype ArchitectureMode,\n\tDEFAULT_CONFIG,\n\ttype DetectedFramework,\n\ttype ShiftConfig,\n} from '../types.ts';\n\n/** Shift CSS layer order */\nconst SHIFT_LAYERS = 'shift.tokens, shift.base, shift.components, shift.utilities';\n\n/**\n * Generate the layer order declaration based on architecture mode\n */\nexport function generateLayerOrder(mode: ArchitectureMode): string {\n\tif (mode === 'hybrid') {\n\t\treturn `@layer legacy, ${SHIFT_LAYERS};`;\n\t}\n\treturn `@layer ${SHIFT_LAYERS};`;\n}\n\n/**\n * Generate config file content\n */\nexport function generateConfig(options: Partial<ShiftConfig> = {}): ShiftConfig {\n\treturn {\n\t\t...DEFAULT_CONFIG,\n\t\t...options,\n\t\thues: {\n\t\t\t...DEFAULT_CONFIG.hues,\n\t\t\t...options.hues,\n\t\t},\n\t\tpaths: {\n\t\t\t...DEFAULT_CONFIG.paths,\n\t\t\t...options.paths,\n\t\t},\n\t};\n}\n\n/**\n * Generate stylesheet content based on architecture mode\n */\nexport function generateStylesheet(\n\tmode: ArchitectureMode,\n\tdetectedFrameworks: DetectedFramework[] = []\n): string {\n\tconst lines: string[] = [];\n\n\t// Header comment\n\tlines.push('/**');\n\tlines.push(' * Shift CSS Entry Point');\n\tlines.push(' * Initialized by shift-css init');\n\tlines.push(' *');\n\tif (mode === 'hybrid') {\n\t\tlines.push(' * Layer order (lowest → highest specificity):');\n\t\tlines.push(' * 1. legacy - Your existing frameworks');\n\t\tlines.push(' * 2. shift.tokens - Design tokens (colors, spacing, typography)');\n\t\tlines.push(' * 3. shift.base - Reset and base styles');\n\t\tlines.push(' * 4. shift.components - UI components');\n\t\tlines.push(' * 5. shift.utilities - Utility classes');\n\t\tlines.push(' * 6. (unlayered) - Your custom overrides (highest specificity)');\n\t} else {\n\t\tlines.push(' * Layer order (lowest → highest specificity):');\n\t\tlines.push(' * 1. shift.tokens - Design tokens (colors, spacing, typography)');\n\t\tlines.push(' * 2. shift.base - Reset and base styles');\n\t\tlines.push(' * 3. shift.components - UI components');\n\t\tlines.push(' * 4. shift.utilities - Utility classes');\n\t\tlines.push(' * 5. (unlayered) - Your custom overrides (highest specificity)');\n\t}\n\tlines.push(' */');\n\tlines.push('');\n\n\t// Layer order declaration\n\tlines.push(generateLayerOrder(mode));\n\tlines.push('');\n\n\t// Shift CSS imports\n\tlines.push('@import \"@shift-css/core/tokens\";');\n\tlines.push('@import \"@shift-css/core/base\";');\n\tlines.push('@import \"@shift-css/core/components\";');\n\tlines.push('@import \"@shift-css/core/utilities\";');\n\tlines.push('');\n\n\t// Legacy layer for hybrid mode\n\tif (mode === 'hybrid') {\n\t\tlines.push('/* Legacy framework imports - add your existing CSS here */');\n\t\tlines.push('@layer legacy {');\n\n\t\tif (detectedFrameworks.length > 0) {\n\t\t\tfor (const fw of detectedFrameworks) {\n\t\t\t\tlines.push(` /* @import \"${fw.file.relativePath}\"; */`);\n\t\t\t}\n\t\t} else {\n\t\t\tlines.push(' /* @import \"your-existing-framework.css\"; */');\n\t\t}\n\n\t\tlines.push('}');\n\t\tlines.push('');\n\t}\n\n\t// Custom styles section\n\tlines.push('/* Your custom styles below */');\n\tlines.push('');\n\n\treturn lines.join('\\n');\n}\n\n/**\n * Write config file to disk\n */\nexport async function writeConfig(rootDir: string, config: ShiftConfig): Promise<string> {\n\tconst configPath = join(rootDir, 'shift.config.json');\n\tconst content = JSON.stringify(config, null, '\\t');\n\tawait writeFile(configPath, `${content}\\n`, 'utf-8');\n\treturn configPath;\n}\n\n/**\n * Write stylesheet to disk\n */\nexport async function writeStylesheet(\n\trootDir: string,\n\trelativePath: string,\n\tcontent: string\n): Promise<string> {\n\tconst fullPath = join(rootDir, relativePath);\n\tconst dir = dirname(fullPath);\n\n\t// Create directory if it doesn't exist\n\tawait mkdir(dir, { recursive: true });\n\tawait writeFile(fullPath, content, 'utf-8');\n\n\treturn fullPath;\n}\n\n/**\n * Check if config file already exists\n */\nexport async function configExists(rootDir: string): Promise<boolean> {\n\ttry {\n\t\tawait readFile(join(rootDir, 'shift.config.json'), 'utf-8');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Read existing config file\n */\nexport async function readConfig(rootDir: string): Promise<ShiftConfig | null> {\n\ttry {\n\t\tconst content = await readFile(join(rootDir, 'shift.config.json'), 'utf-8');\n\t\treturn JSON.parse(content) as ShiftConfig;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Check if stylesheet already exists\n */\nexport async function stylesheetExists(rootDir: string, relativePath: string): Promise<boolean> {\n\ttry {\n\t\tawait readFile(join(rootDir, relativePath), 'utf-8');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n",
|
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
"/**\n * File System Scanner\n * Discovers CSS files in a project\n */\n\nimport { readdir, stat } from 'node:fs/promises';\nimport { basename, join, relative } from 'node:path';\nimport type { CssFile } from '../types.ts';\n\n/** Directories to skip during scanning */\nconst IGNORED_DIRS = new Set([\n\t'node_modules',\n\t'.git',\n\t'.svn',\n\t'.hg',\n\t'dist',\n\t'build',\n\t'coverage',\n\t'.next',\n\t'.nuxt',\n\t'.output',\n\t'.vercel',\n\t'.shift-backup',\n]);\n\n/** Entry point file names in priority order */\nconst ENTRY_POINT_NAMES = [\n\t'main.css',\n\t'styles.css',\n\t'style.css',\n\t'index.css',\n\t'app.css',\n\t'global.css',\n\t'globals.css',\n];\n\n/** Entry point directories in priority order */\nconst ENTRY_POINT_DIRS = ['src', 'styles', 'css', 'assets/css', 'public/css', ''];\n\n/**\n * Recursively scan directory for CSS files\n */\nasync function scanDirectory(dir: string, rootDir: string, files: CssFile[]): Promise<void> {\n\tconst entries = await readdir(dir, { withFileTypes: true });\n\n\tfor (const entry of entries) {\n\t\tconst fullPath = join(dir, entry.name);\n\n\t\tif (entry.isDirectory()) {\n\t\t\tif (!IGNORED_DIRS.has(entry.name)) {\n\t\t\t\tawait scanDirectory(fullPath, rootDir, files);\n\t\t\t}\n\t\t} else if (entry.isFile() && entry.name.endsWith('.css')) {\n\t\t\tconst stats = await stat(fullPath);\n\t\t\tfiles.push({\n\t\t\t\tpath: fullPath,\n\t\t\t\trelativePath: relative(rootDir, fullPath),\n\t\t\t\tbasename: basename(fullPath),\n\t\t\t\tsize: stats.size,\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * Scan project for all CSS files\n */\nexport async function scanForCssFiles(rootDir: string): Promise<CssFile[]> {\n\tconst files: CssFile[] = [];\n\tawait scanDirectory(rootDir, rootDir, files);\n\t// Sort by size descending (larger files first)\n\treturn files.sort((a, b) => b.size - a.size);\n}\n\n/**\n * Find the most likely entry point CSS file\n */\nexport function findEntryPoint(files: CssFile[]): CssFile | null {\n\t// Check each directory in priority order\n\tfor (const dir of ENTRY_POINT_DIRS) {\n\t\tfor (const name of ENTRY_POINT_NAMES) {\n\t\t\tconst targetPath = dir ? `${dir}/${name}` : name;\n\t\t\tconst match = files.find(\n\t\t\t\t(f) => f.relativePath === targetPath || f.relativePath === targetPath.replace(/\\//g, '\\\\')\n\t\t\t);\n\t\t\tif (match) return match;\n\t\t}\n\t}\n\n\t// Fallback: find any file with an entry point name\n\tfor (const name of ENTRY_POINT_NAMES) {\n\t\tconst match = files.find((f) => f.basename === name);\n\t\tif (match) return match;\n\t}\n\n\treturn null;\n}\n\n/**\n * Get potential entry point candidates for user selection\n */\nexport function getEntryPointCandidates(files: CssFile[]): CssFile[] {\n\tconst candidates: CssFile[] = [];\n\tconst seen = new Set<string>();\n\n\t// First, add known entry point names\n\tfor (const name of ENTRY_POINT_NAMES) {\n\t\tconst matches = files.filter((f) => f.basename === name);\n\t\tfor (const match of matches) {\n\t\t\tif (!seen.has(match.path)) {\n\t\t\t\tcandidates.push(match);\n\t\t\t\tseen.add(match.path);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Then add large CSS files that might be entry points\n\tconst largeCssFiles = files.filter(\n\t\t(f) => f.size > 1024 && !seen.has(f.path) && !f.relativePath.includes('vendor')\n\t);\n\tfor (const file of largeCssFiles.slice(0, 5)) {\n\t\tcandidates.push(file);\n\t}\n\n\treturn candidates;\n}\n",
|
|
11
11
|
"/**\n * Display Utilities\n * Colorful terminal output formatting\n */\n\nimport pc from 'picocolors';\nimport { getSignature } from '../core/detector.ts';\nimport type { DetectedFramework, InitResult } from '../types.ts';\n\n/**\n * Format file size for display\n */\nexport function formatSize(bytes: number): string {\n\tif (bytes < 1024) return `${bytes} B`;\n\tconst kb = bytes / 1024;\n\tif (kb < 1024) return `${kb.toFixed(1)} KB`;\n\tconst mb = kb / 1024;\n\treturn `${mb.toFixed(1)} MB`;\n}\n\n/**\n * Display detected frameworks in a nice list\n */\nexport function showDetectedFrameworks(frameworks: DetectedFramework[]): void {\n\tconsole.log('');\n\tconsole.log(pc.bold(' Detected CSS Files:'));\n\tconsole.log('');\n\n\tfor (const fw of frameworks) {\n\t\tconst sig = getSignature(fw.type);\n\t\tconst icon = sig?.icon ?? '📄';\n\t\tconst name = sig?.displayName ?? fw.type;\n\t\tconst size = formatSize(fw.file.size);\n\t\tconst confidence = fw.confidence === 'high' ? '' : pc.dim(` (${fw.confidence} confidence)`);\n\n\t\tconsole.log(` ${icon} ${pc.cyan(fw.file.relativePath)}`);\n\t\tconsole.log(` ${pc.dim(name)} · ${pc.dim(size)}${confidence}`);\n\t\tconsole.log('');\n\t}\n}\n\n/**\n * Display stylesheet preview\n */\nexport function showStylesheetPreview(content: string): void {\n\tconsole.log('');\n\tconsole.log(pc.bold(' Stylesheet Preview:'));\n\tconsole.log('');\n\tconsole.log(pc.dim(' ─'.repeat(40)));\n\tconsole.log('');\n\n\tconst lines = content.split('\\n');\n\tconst maxLines = 25;\n\tconst displayLines = lines.slice(0, maxLines);\n\n\tfor (const line of displayLines) {\n\t\tif (line.startsWith('/**') || line.startsWith(' *') || line.startsWith(' */')) {\n\t\t\tconsole.log(` ${pc.dim(line)}`);\n\t\t} else if (line.startsWith('@layer') || line.startsWith('@import')) {\n\t\t\tconsole.log(` ${pc.cyan(line)}`);\n\t\t} else if (line.includes('/*') && line.includes('*/')) {\n\t\t\tconsole.log(` ${pc.dim(line)}`);\n\t\t} else {\n\t\t\tconsole.log(` ${line}`);\n\t\t}\n\t}\n\n\tif (lines.length > maxLines) {\n\t\tconsole.log(` ${pc.dim(`... ${lines.length - maxLines} more lines`)}`);\n\t}\n\n\tconsole.log('');\n\tconsole.log(pc.dim(' ─'.repeat(40)));\n\tconsole.log('');\n}\n\n/**\n * Display a boxed code snippet for copying\n */\nexport function showCopySnippet(code: string): void {\n\tconsole.log('');\n\tconsole.log(pc.bold(' Copy this code to your CSS file:'));\n\tconsole.log('');\n\tconsole.log(pc.dim(' ─'.repeat(40)));\n\tconsole.log('');\n\n\tfor (const line of code.split('\\n')) {\n\t\tconsole.log(` ${pc.cyan(line)}`);\n\t}\n\n\tconsole.log('');\n\tconsole.log(pc.dim(' ─'.repeat(40)));\n\tconsole.log('');\n}\n\n/**\n * Display success message\n */\nexport function showSuccess(message: string): void {\n\tconsole.log(` ${pc.green('✓')} ${message}`);\n}\n\n/**\n * Display warning message\n */\nexport function showWarning(message: string): void {\n\tconsole.log(` ${pc.yellow('⚠')} ${message}`);\n}\n\n/**\n * Display error message\n */\nexport function showError(message: string): void {\n\tconsole.log(` ${pc.red('✗')} ${message}`);\n}\n\n/**\n * Display info message\n */\nexport function showInfo(message: string): void {\n\tconsole.log(` ${pc.blue('ℹ')} ${message}`);\n}\n\n/**\n * Display next steps after completion\n */\nexport function showNextSteps(result: InitResult): void {\n\tconsole.log('');\n\tconsole.log(pc.bold(' Next steps:'));\n\tconsole.log('');\n\n\t// Step 1: Install\n\tconsole.log(` 1. ${pc.cyan('npm install @shift-css/core')}`);\n\n\t// Step 2: Import the stylesheet\n\tconsole.log(` 2. Import ${pc.cyan(result.stylesheetPath.split('/').pop())} in your app`);\n\n\t// Step 3: Mode-specific guidance\n\tif (result.mode === 'hybrid' && result.detectedFrameworks?.length) {\n\t\tconsole.log(` 3. Uncomment your framework imports in the @layer legacy block`);\n\t\tconsole.log(` 4. Start using Shift CSS components alongside your existing code`);\n\t} else {\n\t\tconsole.log(` 3. Start using Shift CSS components and utilities`);\n\t}\n\n\tconsole.log('');\n\tconsole.log(pc.dim(` 📚 Documentation: https://getshiftcss.com`));\n\tconsole.log('');\n}\n",
|
|
12
12
|
"/**\n * Interactive Prompts\n * User interaction using @clack/prompts\n */\n\nimport * as p from '@clack/prompts';\nimport pc from 'picocolors';\nimport { getColorName, hexToHue, isHexColor, PRESETS } from '../core/color.ts';\nimport type { ArchitectureMode, DetectedFramework } from '../types.ts';\n\n/**\n * Show intro banner\n */\nexport function showIntro(): void {\n\tconsole.clear();\n\tp.intro(pc.bgMagenta(pc.white(' 🎨 Shift CSS Init ')));\n}\n\n/**\n * Show outro message\n */\nexport function showOutro(message: string): void {\n\tp.outro(message);\n}\n\n/**\n * Show cancel message and exit\n */\nexport function handleCancel(): never {\n\tp.cancel('Setup cancelled');\n\tprocess.exit(0);\n}\n\n/**\n * Create a spinner for async operations\n */\nexport function createSpinner(): ReturnType<typeof p.spinner> {\n\treturn p.spinner();\n}\n\n/**\n * Show a note box\n */\nexport function showNote(message: string, title?: string): void {\n\tp.note(message, title);\n}\n\n/**\n * Ask for architecture mode\n */\nexport async function askArchitectureMode(\n\tdetectedFrameworks: DetectedFramework[]\n): Promise<ArchitectureMode> {\n\tconst hasFrameworks = detectedFrameworks.length > 0;\n\n\tconst frameworkHint = hasFrameworks\n\t\t? `Detected: ${detectedFrameworks.map((f) => f.type).join(', ')}`\n\t\t: undefined;\n\n\tconst mode = await p.select({\n\t\tmessage: 'What type of project is this?',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: 'greenfield' as const,\n\t\t\t\tlabel: 'New project (Greenfield)',\n\t\t\t\thint: 'Pure Shift CSS, no legacy frameworks',\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: 'hybrid' as const,\n\t\t\t\tlabel: 'Existing project (Hybrid)',\n\t\t\t\thint: frameworkHint ?? 'Shift CSS alongside existing CSS',\n\t\t\t},\n\t\t],\n\t\tinitialValue: hasFrameworks ? ('hybrid' as const) : ('greenfield' as const),\n\t});\n\n\tif (p.isCancel(mode)) handleCancel();\n\n\treturn mode as ArchitectureMode;\n}\n\n/**\n * Ask for primary seed hue with presets and hex input\n */\nexport async function askPrimaryHue(): Promise<number> {\n\t// Build options from presets + custom\n\tconst presetOptions = PRESETS.map((preset) => ({\n\t\tvalue: preset.hue,\n\t\tlabel: preset.name,\n\t\thint: preset.description,\n\t}));\n\n\tconst hue = await p.select({\n\t\tmessage: 'Choose your brand color:',\n\t\toptions: [\n\t\t\t...presetOptions,\n\t\t\t{ value: -1, label: 'Custom', hint: 'Enter hex code or hue value' },\n\t\t],\n\t});\n\n\tif (p.isCancel(hue)) handleCancel();\n\n\tif (hue === -1) {\n\t\t// Show cheat sheet\n\t\tp.log.info(pc.dim('Hue guide: 20=Red, 90=Yellow, 140=Green, 260=Blue, 320=Purple'));\n\n\t\tconst customValue = await p.text({\n\t\t\tmessage: 'Enter a hex code (#a855f7) or hue (0-360):',\n\t\t\tplaceholder: '#a855f7 or 260',\n\t\t\tvalidate: (value) => {\n\t\t\t\tconst trimmed = value.trim();\n\n\t\t\t\t// Check if hex color\n\t\t\t\tif (isHexColor(trimmed)) {\n\t\t\t\t\tconst parsedHue = hexToHue(trimmed);\n\t\t\t\t\tif (parsedHue === null) return 'Invalid hex color';\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\t// Check if number\n\t\t\t\tconst num = Number.parseInt(trimmed, 10);\n\t\t\t\tif (Number.isNaN(num)) return 'Enter a hex code (#ff0000) or hue number (0-360)';\n\t\t\t\tif (num < 0 || num > 360) return 'Hue must be between 0 and 360';\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t});\n\n\t\tif (p.isCancel(customValue)) handleCancel();\n\n\t\tconst trimmed = (customValue as string).trim();\n\n\t\t// Convert hex to hue\n\t\tif (isHexColor(trimmed)) {\n\t\t\tconst parsedHue = hexToHue(trimmed);\n\t\t\tif (parsedHue !== null) {\n\t\t\t\tconst colorName = getColorName(parsedHue);\n\t\t\t\tp.log.success(\n\t\t\t\t\t`Converted ${pc.cyan(trimmed)} → ${pc.magenta(colorName)} (Hue: ${parsedHue})`\n\t\t\t\t);\n\t\t\t\treturn parsedHue;\n\t\t\t}\n\t\t}\n\n\t\t// Parse as number\n\t\treturn Number.parseInt(trimmed, 10);\n\t}\n\n\t// Show what preset was selected\n\tconst preset = PRESETS.find((p) => p.hue === hue);\n\tif (preset) {\n\t\tconst colorName = getColorName(preset.hue);\n\t\tp.log.info(`${pc.magenta(preset.name)} → ${colorName} (Hue: ${preset.hue})`);\n\t}\n\n\treturn hue as number;\n}\n\n/**\n * Ask for stylesheet path\n */\nexport async function askStylesheetPath(defaultPath: string): Promise<string> {\n\tconst path = await p.text({\n\t\tmessage: 'Where should the stylesheet be created?',\n\t\tplaceholder: defaultPath,\n\t\tdefaultValue: defaultPath,\n\t\tvalidate: (value) => {\n\t\t\tif (!value) return 'Please enter a path';\n\t\t\tif (!value.endsWith('.css')) return 'Path must end with .css';\n\t\t\treturn undefined;\n\t\t},\n\t});\n\n\tif (p.isCancel(path)) handleCancel();\n\n\treturn path as string;\n}\n\n/**\n * Confirm overwriting existing files\n */\nexport async function confirmOverwrite(filePath: string): Promise<boolean> {\n\tconst confirmed = await p.confirm({\n\t\tmessage: `${pc.yellow(filePath)} already exists. Overwrite it?`,\n\t\tinitialValue: false,\n\t});\n\n\tif (p.isCancel(confirmed)) handleCancel();\n\n\treturn confirmed as boolean;\n}\n\n/**\n * Confirm project initialization\n */\nexport async function confirmInit(\n\tconfigPath: string,\n\tstylesheetPath: string,\n\tmode: ArchitectureMode\n): Promise<boolean> {\n\tconst modeLabel = mode === 'greenfield' ? 'Greenfield' : 'Hybrid';\n\n\tshowNote(\n\t\t[\n\t\t\t`${pc.bold('Config:')} ${pc.cyan(configPath)}`,\n\t\t\t`${pc.bold('Stylesheet:')} ${pc.cyan(stylesheetPath)}`,\n\t\t\t`${pc.bold('Mode:')} ${pc.cyan(modeLabel)}`,\n\t\t].join('\\n'),\n\t\t'Files to create'\n\t);\n\n\tconst confirmed = await p.confirm({\n\t\tmessage: 'Proceed with initialization?',\n\t\tinitialValue: true,\n\t});\n\n\tif (p.isCancel(confirmed)) handleCancel();\n\n\treturn confirmed as boolean;\n}\n\n/**\n * Show log message\n */\nexport function log(message: string): void {\n\tp.log.message(message);\n}\n\n/**\n * Show success log\n */\nexport function logSuccess(message: string): void {\n\tp.log.success(message);\n}\n\n/**\n * Show warning log\n */\nexport function logWarning(message: string): void {\n\tp.log.warn(message);\n}\n\n/**\n * Show error log\n */\nexport function logError(message: string): void {\n\tp.log.error(message);\n}\n",
|
|
13
|
-
"/**\n * Color Utilities\n * Hex to OKLCH hue conversion\n */\n\n/**\n * Parse a hex color string to RGB values\n */\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n\t// Remove # if present\n\tconst cleaned = hex.replace(/^#/, '');\n\n\t// Support 3-char shorthand (#f0f -> #ff00ff)\n\tconst fullHex =\n\t\tcleaned.length === 3\n\t\t\t? cleaned\n\t\t\t\t\t.split('')\n\t\t\t\t\t.map((c) => c + c)\n\t\t\t\t\t.join('')\n\t\t\t: cleaned;\n\n\tif (fullHex.length !== 6) return null;\n\n\tconst result = /^([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(fullHex);\n\tif (!result) return null;\n\n\treturn {\n\t\tr: Number.parseInt(result[1], 16),\n\t\tg: Number.parseInt(result[2], 16),\n\t\tb: Number.parseInt(result[3], 16),\n\t};\n}\n\n/**\n * Convert RGB to HSL and extract hue\n * Returns hue in degrees (0-360)\n */\nfunction rgbToHue(r: number, g: number, b: number): number {\n\t// Normalize to 0-1\n\tconst rNorm = r / 255;\n\tconst gNorm = g / 255;\n\tconst bNorm = b / 255;\n\n\tconst max = Math.max(rNorm, gNorm, bNorm);\n\tconst min = Math.min(rNorm, gNorm, bNorm);\n\tconst delta = max - min;\n\n\t// Achromatic (gray) - return neutral hue\n\tif (delta === 0) return 250;\n\n\tlet hue: number;\n\n\tif (max === rNorm) {\n\t\thue = ((gNorm - bNorm) / delta) % 6;\n\t} else if (max === gNorm) {\n\t\thue = (bNorm - rNorm) / delta + 2;\n\t} else {\n\t\thue = (rNorm - gNorm) / delta + 4;\n\t}\n\n\thue = Math.round(hue * 60);\n\tif (hue < 0) hue += 360;\n\n\treturn hue;\n}\n\n/**\n * Convert hex color to OKLCH hue\n * Note: This is a simplified conversion that uses HSL hue as approximation\n * For production, consider using colorjs.io for accurate OKLCH conversion\n */\nexport function hexToHue(hex: string): number | null {\n\tconst rgb = hexToRgb(hex);\n\tif (!rgb) return null;\n\treturn rgbToHue(rgb.r, rgb.g, rgb.b);\n}\n\n/**\n * Check if a string looks like a hex color\n */\nexport function isHexColor(value: string): boolean {\n\treturn /^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/.test(value.trim());\n}\n\n/**\n * Get a human-readable color name for a hue\n */\nexport function getColorName(hue: number): string {\n\t// Normalize hue to 0-360\n\tconst h = ((hue % 360) + 360) % 360;\n\n\tif (h >= 0 && h < 15) return 'Red';\n\tif (h >= 15 && h < 45) return 'Orange';\n\tif (h >= 45 && h < 75) return 'Yellow';\n\tif (h >= 75 && h < 105) return 'Lime';\n\tif (h >= 105 && h < 135) return 'Green';\n\tif (h >= 135 && h < 165) return 'Teal';\n\tif (h >= 165 && h < 195) return 'Cyan';\n\tif (h >= 195 && h < 225) return 'Sky';\n\tif (h >= 225 && h < 255) return 'Blue';\n\tif (h >= 255 && h < 285) return 'Indigo';\n\tif (h >= 285 && h < 315) return 'Purple';\n\tif (h >= 315 && h < 345) return 'Pink';\n\treturn 'Red';\n}\n\n/**\n * Shift CSS preset themes\n */\nexport interface ColorPreset {\n\tname: string;\n\thue: number;\n\tdescription: string;\n}\n\nexport const PRESETS: ColorPreset[] = [\n\t{ name: 'Plasma', hue: 260, description: 'Electric Blue - High-tech default' },\n\t{ name: 'Laser', hue: 320, description: 'Cyber-Pink - Neon futurism' },\n\t{ name: 'Acid', hue: 140, description: 'Toxic Green - Engineering edge' },\n\t{ name: 'Void', hue: 0, description: 'Monochrome - Industrial minimal' },\n];\n"
|
|
13
|
+
"/**\n * Color Utilities\n * Hex to OKLCH hue conversion\n */\n\n/**\n * Parse a hex color string to RGB values\n */\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n\t// Remove # if present\n\tconst cleaned = hex.replace(/^#/, '');\n\n\t// Support 3-char shorthand (#f0f -> #ff00ff)\n\tconst fullHex =\n\t\tcleaned.length === 3\n\t\t\t? cleaned\n\t\t\t\t\t.split('')\n\t\t\t\t\t.map((c) => c + c)\n\t\t\t\t\t.join('')\n\t\t\t: cleaned;\n\n\tif (fullHex.length !== 6) return null;\n\n\tconst result = /^([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(fullHex);\n\tif (!result) return null;\n\n\treturn {\n\t\tr: Number.parseInt(result[1], 16),\n\t\tg: Number.parseInt(result[2], 16),\n\t\tb: Number.parseInt(result[3], 16),\n\t};\n}\n\n/**\n * Convert RGB to HSL and extract hue\n * Returns hue in degrees (0-360)\n */\nfunction rgbToHue(r: number, g: number, b: number): number {\n\t// Normalize to 0-1\n\tconst rNorm = r / 255;\n\tconst gNorm = g / 255;\n\tconst bNorm = b / 255;\n\n\tconst max = Math.max(rNorm, gNorm, bNorm);\n\tconst min = Math.min(rNorm, gNorm, bNorm);\n\tconst delta = max - min;\n\n\t// Achromatic (gray) - return neutral hue\n\tif (delta === 0) return 250;\n\n\tlet hue: number;\n\n\tif (max === rNorm) {\n\t\thue = ((gNorm - bNorm) / delta) % 6;\n\t} else if (max === gNorm) {\n\t\thue = (bNorm - rNorm) / delta + 2;\n\t} else {\n\t\thue = (rNorm - gNorm) / delta + 4;\n\t}\n\n\thue = Math.round(hue * 60);\n\tif (hue < 0) hue += 360;\n\n\treturn hue;\n}\n\n/**\n * Convert hex color to OKLCH hue\n * Note: This is a simplified conversion that uses HSL hue as approximation\n * For production, consider using colorjs.io for accurate OKLCH conversion\n */\nexport function hexToHue(hex: string): number | null {\n\tconst rgb = hexToRgb(hex);\n\tif (!rgb) return null;\n\treturn rgbToHue(rgb.r, rgb.g, rgb.b);\n}\n\n/**\n * Check if a string looks like a hex color\n */\nexport function isHexColor(value: string): boolean {\n\treturn /^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/.test(value.trim());\n}\n\n/**\n * Get a human-readable color name for a hue\n */\nexport function getColorName(hue: number): string {\n\t// Normalize hue to 0-360\n\tconst h = ((hue % 360) + 360) % 360;\n\n\tif (h >= 0 && h < 15) return 'Red';\n\tif (h >= 15 && h < 45) return 'Orange';\n\tif (h >= 45 && h < 75) return 'Yellow';\n\tif (h >= 75 && h < 105) return 'Lime';\n\tif (h >= 105 && h < 135) return 'Green';\n\tif (h >= 135 && h < 165) return 'Teal';\n\tif (h >= 165 && h < 195) return 'Cyan';\n\tif (h >= 195 && h < 225) return 'Sky';\n\tif (h >= 225 && h < 255) return 'Blue';\n\tif (h >= 255 && h < 285) return 'Indigo';\n\tif (h >= 285 && h < 315) return 'Purple';\n\tif (h >= 315 && h < 345) return 'Pink';\n\treturn 'Red';\n}\n\n/**\n * Shift CSS preset themes\n */\nexport interface ColorPreset {\n\tname: string;\n\thue: number;\n\tdescription: string;\n}\n\nexport const PRESETS: ColorPreset[] = [\n\t{ name: 'Plasma', hue: 260, description: 'Electric Blue - High-tech default' },\n\t{ name: 'Laser', hue: 320, description: 'Cyber-Pink - Neon futurism' },\n\t{ name: 'Acid', hue: 140, description: 'Toxic Green - Engineering edge' },\n\t{ name: 'Void', hue: 0, description: 'Monochrome - Industrial minimal' },\n];\n",
|
|
14
|
+
"/**\n * Types Command\n * Generate TypeScript type definitions for Shift CSS attributes\n */\n\nimport { existsSync, readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport pc from 'picocolors';\n\ntype Framework = 'react' | 'vue' | 'svelte' | 'unknown';\n\ninterface TypesOptions {\n\tframework?: Framework;\n\toutput?: string;\n}\n\n/**\n * Detect frontend framework from package.json\n */\nfunction detectFramework(rootDir: string): Framework {\n\tconst pkgPath = join(rootDir, 'package.json');\n\n\tif (!existsSync(pkgPath)) {\n\t\treturn 'unknown';\n\t}\n\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n\t\tconst deps = {\n\t\t\t...pkg.dependencies,\n\t\t\t...pkg.devDependencies,\n\t\t};\n\n\t\tif (deps.react || deps['react-dom'] || deps.next) {\n\t\t\treturn 'react';\n\t\t}\n\n\t\tif (deps.vue || deps.nuxt) {\n\t\t\treturn 'vue';\n\t\t}\n\n\t\tif (deps.svelte || deps['@sveltejs/kit']) {\n\t\t\treturn 'svelte';\n\t\t}\n\t} catch {\n\t\t// Ignore parse errors\n\t}\n\n\treturn 'unknown';\n}\n\n/**\n * Generate React type reference content\n */\nfunction generateReactTypes(): string {\n\treturn `/**\n * Shift CSS - React Type Definitions\n *\n * This file enables TypeScript support for Shift CSS attributes in JSX.\n * Generated by: npx shift-css types\n */\n\n/// <reference types=\"@shift-css/core/types/react\" />\n`;\n}\n\n/**\n * Generate Vue type reference content\n */\nfunction generateVueTypes(): string {\n\treturn `/**\n * Shift CSS - Vue Type Definitions\n *\n * This file enables TypeScript support for Shift CSS attributes in Vue templates.\n * Generated by: npx shift-css types\n */\n\n/// <reference types=\"@shift-css/core/types/vue\" />\n`;\n}\n\n/**\n * Generate generic type reference content\n */\nfunction generateGenericTypes(): string {\n\treturn `/**\n * Shift CSS - Type Definitions\n *\n * Import the types you need for your framework:\n *\n * React:\n * /// <reference types=\"@shift-css/core/types/react\" />\n *\n * Vue:\n * /// <reference types=\"@shift-css/core/types/vue\" />\n *\n * Generated by: npx shift-css types\n */\n\n// Uncomment the line for your framework:\n// /// <reference types=\"@shift-css/core/types/react\" />\n// /// <reference types=\"@shift-css/core/types/vue\" />\n\nexport {};\n`;\n}\n\n/**\n * Show usage instructions\n */\nfunction showInstructions(framework: Framework): void {\n\tconsole.log();\n\tconsole.log(pc.bold('📝 Next Steps'));\n\tconsole.log();\n\n\tif (framework === 'react') {\n\t\tconsole.log(pc.dim('Option 1: Add to tsconfig.json (recommended)'));\n\t\tconsole.log();\n\t\tconsole.log(pc.cyan(' {'));\n\t\tconsole.log(pc.cyan(' \"compilerOptions\": {'));\n\t\tconsole.log(pc.cyan(' \"types\": [\"@shift-css/core/types/react\"]'));\n\t\tconsole.log(pc.cyan(' }'));\n\t\tconsole.log(pc.cyan(' }'));\n\t\tconsole.log();\n\t\tconsole.log(pc.dim('Option 2: Add reference to any .d.ts file'));\n\t\tconsole.log();\n\t\tconsole.log(pc.cyan(' /// <reference types=\"@shift-css/core/types/react\" />'));\n\t} else if (framework === 'vue') {\n\t\tconsole.log(pc.dim('Option 1: Add to tsconfig.json (recommended)'));\n\t\tconsole.log();\n\t\tconsole.log(pc.cyan(' {'));\n\t\tconsole.log(pc.cyan(' \"compilerOptions\": {'));\n\t\tconsole.log(pc.cyan(' \"types\": [\"@shift-css/core/types/vue\"]'));\n\t\tconsole.log(pc.cyan(' }'));\n\t\tconsole.log(pc.cyan(' }'));\n\t\tconsole.log();\n\t\tconsole.log(pc.dim('Option 2: Add reference to any .d.ts file'));\n\t\tconsole.log();\n\t\tconsole.log(pc.cyan(' /// <reference types=\"@shift-css/core/types/vue\" />'));\n\t} else if (framework === 'svelte') {\n\t\tconsole.log(pc.dim('Svelte support is coming soon!'));\n\t\tconsole.log();\n\t\tconsole.log(pc.dim('For now, you can generate a local .d.ts file:'));\n\t\tconsole.log();\n\t\tconsole.log(pc.cyan(' npx shift-css types --svelte -o shift.d.ts'));\n\t} else {\n\t\tconsole.log(pc.dim('Add to your tsconfig.json based on your framework:'));\n\t\tconsole.log();\n\t\tconsole.log(pc.cyan(' React: \"types\": [\"@shift-css/core/types/react\"]'));\n\t\tconsole.log(pc.cyan(' Vue: \"types\": [\"@shift-css/core/types/vue\"]'));\n\t\tconsole.log(pc.cyan(' Svelte: Coming soon'));\n\t}\n\n\tconsole.log();\n\tconsole.log(pc.dim(\"After setup, you'll get autocomplete for attributes like:\"));\n\tconsole.log(pc.green(' s-btn=\"primary\" s-grid=\"3\" s-flex=\"center\"'));\n\tconsole.log();\n}\n\n/**\n * Main types command\n */\nexport async function typesCommand(options: TypesOptions = {}): Promise<void> {\n\tconst rootDir = process.cwd();\n\n\tconsole.log();\n\tconsole.log(pc.bold('🎨 Shift CSS Type Generator'));\n\tconsole.log();\n\n\t// Detect or use specified framework\n\tconst framework = options.framework || detectFramework(rootDir);\n\n\tif (framework !== 'unknown') {\n\t\tconsole.log(`${pc.green('✓')} Detected framework: ${pc.cyan(framework)}`);\n\t} else {\n\t\tconsole.log(`${pc.yellow('!')} Could not detect framework automatically`);\n\t}\n\n\t// Generate and write type file if output specified\n\tif (options.output) {\n\t\tconst outputPath = join(rootDir, options.output);\n\n\t\tlet content: string;\n\t\tswitch (framework) {\n\t\t\tcase 'react':\n\t\t\t\tcontent = generateReactTypes();\n\t\t\t\tbreak;\n\t\t\tcase 'vue':\n\t\t\t\tcontent = generateVueTypes();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontent = generateGenericTypes();\n\t\t}\n\n\t\ttry {\n\t\t\twriteFileSync(outputPath, content, 'utf-8');\n\t\t\tconsole.log(`${pc.green('✓')} Created ${pc.cyan(options.output)}`);\n\t\t} catch (error) {\n\t\t\tconsole.error(`${pc.red('✗')} Failed to write ${options.output}`);\n\t\t\tif (error instanceof Error) {\n\t\t\t\tconsole.error(pc.dim(error.message));\n\t\t\t}\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\n\t// Show instructions\n\tshowInstructions(framework);\n}\n"
|
|
14
15
|
],
|
|
15
|
-
"mappings": "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",
|
|
16
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "2629B6603A680EC964756E2164756E21",
|
|
17
18
|
"names": []
|
|
18
19
|
}
|