@smart-coder-labs/apple-design-system 1.0.17 → 1.2.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.
@@ -0,0 +1,2 @@
1
+ export declare const updateComponents: () => Promise<void>;
2
+ //# sourceMappingURL=update-components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-components.d.ts","sourceRoot":"","sources":["../../../cli/commands/update-components.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gBAAgB,qBA4H5B,CAAC"}
@@ -0,0 +1,114 @@
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.updateComponents = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const ora_1 = __importDefault(require("ora"));
11
+ const prompts_1 = __importDefault(require("prompts"));
12
+ const registry_1 = require("../utils/registry");
13
+ const updateComponents = async () => {
14
+ // 1. Load config
15
+ let config = { componentsDir: "./components/ui" };
16
+ if (fs_extra_1.default.existsSync("design-system.json")) {
17
+ try {
18
+ config = await fs_extra_1.default.readJSON("design-system.json");
19
+ }
20
+ catch (e) {
21
+ console.warn("Could not read design-system.json, using defaults.");
22
+ }
23
+ }
24
+ else {
25
+ console.warn("design-system.json not found. Using default ./components/ui");
26
+ }
27
+ const resolvedComponentsDir = path_1.default.resolve(process.cwd(), config.componentsDir);
28
+ // 2. Check if components directory exists
29
+ if (!fs_extra_1.default.existsSync(resolvedComponentsDir)) {
30
+ console.log(chalk_1.default.yellow(`Components directory not found at ${config.componentsDir}`));
31
+ return;
32
+ }
33
+ // 3. Get installed components
34
+ const spinner = (0, ora_1.default)("Scanning for installed components...").start();
35
+ const files = await fs_extra_1.default.readdir(resolvedComponentsDir);
36
+ const availableComponents = await (0, registry_1.getAvailableComponents)();
37
+ const installedComponents = files
38
+ .filter((file) => file.endsWith(".tsx") || file.endsWith(".ts"))
39
+ .map((file) => path_1.default.basename(file, path_1.default.extname(file)))
40
+ .filter((name) => availableComponents.includes(name))
41
+ .sort();
42
+ spinner.stop();
43
+ if (installedComponents.length === 0) {
44
+ console.log(chalk_1.default.yellow("No installed components found."));
45
+ return;
46
+ }
47
+ console.log(chalk_1.default.blue(`\nFound ${installedComponents.length} installed components:\n`));
48
+ // 4. Present selection options
49
+ const response = await (0, prompts_1.default)([
50
+ {
51
+ type: "select",
52
+ name: "updateMode",
53
+ message: "What would you like to do?",
54
+ choices: [
55
+ { title: "Update all components", value: "all" },
56
+ { title: "Select specific components", value: "select" },
57
+ ],
58
+ },
59
+ ]);
60
+ let componentsToUpdate = [];
61
+ if (response.updateMode === "all") {
62
+ componentsToUpdate = installedComponents;
63
+ console.log(chalk_1.default.green(`\n✓ Selected all ${installedComponents.length} components`));
64
+ }
65
+ else {
66
+ // Let user select specific components
67
+ const selectResponse = await (0, prompts_1.default)({
68
+ type: "multiselect",
69
+ name: "items",
70
+ message: "Which components would you like to update?",
71
+ choices: installedComponents.map((c) => ({ title: c, value: c })),
72
+ min: 1,
73
+ });
74
+ componentsToUpdate = selectResponse.items;
75
+ if (!componentsToUpdate || componentsToUpdate.length === 0) {
76
+ console.log(chalk_1.default.yellow("No components selected."));
77
+ return;
78
+ }
79
+ console.log(chalk_1.default.green(`\n✓ Selected ${componentsToUpdate.length} components`));
80
+ }
81
+ // 5. Fetch and update components
82
+ const updateSpinner = (0, ora_1.default)("Updating components...").start();
83
+ let successCount = 0;
84
+ let failCount = 0;
85
+ for (const component of componentsToUpdate) {
86
+ updateSpinner.text = `Updating ${component}...`;
87
+ try {
88
+ const source = await (0, registry_1.getComponentSource)(component);
89
+ if (!source) {
90
+ updateSpinner.warn(`Component '${component}' not found in registry.`);
91
+ failCount++;
92
+ continue;
93
+ }
94
+ const destPath = path_1.default.resolve(resolvedComponentsDir, `${component}.tsx`);
95
+ await fs_extra_1.default.writeFile(destPath, source);
96
+ updateSpinner.succeed(`Updated ${component}`);
97
+ successCount++;
98
+ }
99
+ catch (error) {
100
+ updateSpinner.warn(`Failed to update ${component}: ${error}`);
101
+ failCount++;
102
+ }
103
+ }
104
+ updateSpinner.stop();
105
+ // 6. Summary
106
+ console.log(chalk_1.default.bold("\n=== Update Summary ==="));
107
+ console.log(chalk_1.default.green(`✓ Successfully updated: ${successCount} components`));
108
+ if (failCount > 0) {
109
+ console.log(chalk_1.default.red(`✗ Failed to update: ${failCount} components`));
110
+ }
111
+ console.log(chalk_1.default.bold.green("\nDone!"));
112
+ };
113
+ exports.updateComponents = updateComponents;
114
+ //# sourceMappingURL=update-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-components.js","sourceRoot":"","sources":["../../../cli/commands/update-components.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -5,6 +5,7 @@ const commander_1 = require("commander");
5
5
  const init_1 = require("./commands/init");
6
6
  const add_1 = require("./commands/add");
7
7
  const update_1 = require("./commands/update");
8
+ const update_components_1 = require("./commands/update-components");
8
9
  const program = new commander_1.Command();
9
10
  program
10
11
  .name("apple-design-system")
@@ -24,5 +25,9 @@ program
24
25
  .description("Update installed components to the latest version")
25
26
  .argument("[components...]", "The components to update")
26
27
  .action((components) => (0, update_1.update)(components));
28
+ program
29
+ .command("update-components")
30
+ .description("Interactively update components from the design system (with UI selection)")
31
+ .action(() => (0, update_components_1.updateComponents)());
27
32
  program.parse();
28
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,0CAAuC;AACvC,wCAAqC;AACrC,8CAA2C;AAE3C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,qBAAqB,CAAC;KAC3B,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,WAAI,CAAC,CAAC;AAEhB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,iCAAiC,CAAC;KAC9C,QAAQ,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;KACpD,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAA,SAAG,EAAC,UAAU,CAAC,CAAC,CAAC;AAE3C,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,QAAQ,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,CAAC;AAE9C,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,0CAAuC;AACvC,wCAAqC;AACrC,8CAA2C;AAC3C,oEAAgE;AAEhE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,qBAAqB,CAAC;KAC3B,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,WAAI,CAAC,CAAC;AAEhB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,iCAAiC,CAAC;KAC9C,QAAQ,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;KACpD,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAA,SAAG,EAAC,UAAU,CAAC,CAAC,CAAC;AAE3C,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,QAAQ,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,CAAC;AAE9C,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,4EAA4E,CAAC;KACzF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,oCAAgB,GAAE,CAAC,CAAC;AAEpC,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smart-coder-labs/apple-design-system",
3
- "version": "1.0.17",
3
+ "version": "1.2.0",
4
4
  "description": "Design system completo estilo Apple (macOS/iOS/VisionOS) con Framer Motion",
5
5
  "keywords": [
6
6
  "apple-design-system",
@@ -41,10 +41,16 @@
41
41
  "README.md",
42
42
  "LICENSE"
43
43
  ],
44
+ "engines": {
45
+ "node": ">=20.19.0"
46
+ },
44
47
  "scripts": {
45
48
  "clean": "rm -rf dist",
46
49
  "lint": "eslint . --ext .ts,.tsx",
47
50
  "type-check": "tsc --noEmit",
51
+ "test": "vitest run",
52
+ "test:watch": "vitest",
53
+ "test:ui": "vitest --ui",
48
54
  "build": "npm run clean && tsc -p tsconfig.build.json",
49
55
  "build:registry": "ts-node scripts/build-registry.ts",
50
56
  "prepublishOnly": "npm run build",
@@ -52,6 +58,7 @@
52
58
  "build-storybook": "storybook build"
53
59
  },
54
60
  "dependencies": {
61
+ "canvas-confetti": "^1.9.4",
55
62
  "chalk": "^4.1.2",
56
63
  "commander": "^11.1.0",
57
64
  "fs-extra": "^11.2.0",
@@ -59,14 +66,15 @@
59
66
  "prompts": "^2.4.2"
60
67
  },
61
68
  "devDependencies": {
62
- "html2canvas": "^1.4.1",
63
- "jspdf": "^4.0.0",
64
- "markdown-it": "^14.1.0",
65
- "zod": "^3.22.4",
66
- "@storybook/addon-docs": "^10.0.8",
67
- "@storybook/addon-onboarding": "^10.0.8",
68
- "@storybook/react-vite": "^10.0.8",
69
+ "@storybook/addon-docs": "^10.4.0",
70
+ "@storybook/addon-onboarding": "^10.4.0",
71
+ "@storybook/react-vite": "^10.4.0",
69
72
  "@tailwindcss/postcss": "^4.1.18",
73
+ "@testing-library/dom": "^10.4.1",
74
+ "@testing-library/jest-dom": "^6.9.1",
75
+ "@testing-library/react": "^16.3.2",
76
+ "@testing-library/user-event": "^14.6.1",
77
+ "@types/canvas-confetti": "^1.9.0",
70
78
  "@types/fs-extra": "^11.0.4",
71
79
  "@types/google.maps": "^3.58.1",
72
80
  "@types/html2canvas": "^0.5.35",
@@ -76,19 +84,29 @@
76
84
  "@types/prompts": "^2.4.9",
77
85
  "@types/react": "^19.0.0",
78
86
  "@types/react-dom": "^19.0.0",
87
+ "@vitejs/plugin-react": "^6.0.1",
88
+ "@vitest/ui": "^4.1.6",
79
89
  "autoprefixer": "^10.4.16",
80
90
  "class-variance-authority": "^0.7.1",
81
91
  "clsx": "^2.1.1",
82
92
  "framer-motion": "^12.23.24",
93
+ "html2canvas": "^1.4.1",
94
+ "jsdom": "^29.1.1",
95
+ "jspdf": "^4.0.0",
83
96
  "lucide-react": "^0.554.0",
97
+ "markdown-it": "^14.1.0",
84
98
  "postcss": "^8.5.6",
85
99
  "react": "^19.2.0",
86
100
  "react-dom": "^19.2.0",
87
- "storybook": "^10.0.8",
101
+ "storybook": "^10.4.0",
102
+ "storybook-dark-mode": "^5.0.0",
88
103
  "tailwind-merge": "^3.4.0",
89
104
  "tailwindcss": "^4.1.18",
90
105
  "ts-node": "^10.9.2",
91
- "typescript": "^5.3.3"
106
+ "typescript": "^5.3.3",
107
+ "vitest": "^4.1.5",
108
+ "vitest-axe": "^0.1.0",
109
+ "zod": "^3.22.4"
92
110
  },
93
111
  "peerDependencies": {
94
112
  "react": "^19.2.0",