atomsystem 0.1.48 → 0.1.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +147 -55
  2. package/atom.design.md +155 -0
  3. package/atom.uxPattern.md +431 -0
  4. package/components/ui/Badge.tsx +20 -0
  5. package/components/ui/Button.tsx +33 -0
  6. package/components/ui/Card.tsx +20 -0
  7. package/components/ui/Input.tsx +35 -0
  8. package/components/ui/Modal.tsx +54 -0
  9. package/components/ui/index.ts +5 -0
  10. package/css/atom-ui.css +216 -0
  11. package/dist/cli.cjs +105 -0
  12. package/dist/cli.cjs.map +1 -0
  13. package/dist/cli.d.cts +1 -0
  14. package/dist/cli.d.ts +1 -0
  15. package/dist/cli.js +97 -0
  16. package/dist/cli.js.map +1 -0
  17. package/dist/index.cjs +7897 -0
  18. package/dist/index.cjs.map +1 -0
  19. package/dist/index.d.cts +218 -0
  20. package/dist/index.d.ts +218 -0
  21. package/dist/index.js +7845 -451
  22. package/dist/index.js.map +1 -0
  23. package/package.json +120 -81
  24. package/presets/default.design.md +155 -0
  25. package/presets/uxPattern.md +431 -0
  26. package/skills/atomsystem.skill.md +104 -0
  27. package/tokens/token.json +319 -0
  28. package/tokens/tokens.json +318 -976
  29. package/app/templates/Animations/Animation.tsx +0 -282
  30. package/app/templates/Badge/Badge.tsx +0 -28
  31. package/app/templates/Badge/badge.css +0 -28
  32. package/app/templates/Button/Button.tsx +0 -31
  33. package/app/templates/Button/button.css +0 -135
  34. package/app/templates/Card/Card.tsx +0 -50
  35. package/app/templates/Card/card.css +0 -17
  36. package/app/templates/Checkbox/Checkbox.tsx +0 -55
  37. package/app/templates/Checkbox/checkbox.css +0 -38
  38. package/app/templates/CodeBlock/CodeBlock.tsx +0 -68
  39. package/app/templates/Collapse/Collapse.tsx +0 -207
  40. package/app/templates/Collapse/collapse.css +0 -24
  41. package/app/templates/Dropdown/Dropdown.css +0 -112
  42. package/app/templates/Dropdown/Dropdown.tsx +0 -103
  43. package/app/templates/Input/Input.tsx +0 -29
  44. package/app/templates/Input/input.css +0 -24
  45. package/app/templates/Label/Label.tsx +0 -22
  46. package/app/templates/Modal/Modal.tsx +0 -71
  47. package/app/templates/Modal/modal.css +0 -98
  48. package/app/templates/Navigation/Navigation.tsx +0 -169
  49. package/app/templates/Navigation/navigation.css +0 -59
  50. package/app/templates/Pagination/Pagination.tsx +0 -104
  51. package/app/templates/Pagination/pagination.css +0 -66
  52. package/app/templates/Radio/Radio.tsx +0 -45
  53. package/app/templates/Radio/radio.css +0 -29
  54. package/app/templates/Select/Select.tsx +0 -143
  55. package/app/templates/Select/select.css +0 -47
  56. package/app/templates/Sidebar/Sidebar.tsx +0 -139
  57. package/app/templates/Sidebar/sidebar.css +0 -4
  58. package/app/templates/TOC/TOC.tsx +0 -165
  59. package/app/templates/Tab/Tab.tsx +0 -117
  60. package/app/templates/Tab/tab.css +0 -56
  61. package/app/templates/Table/Table.tsx +0 -54
  62. package/app/templates/Table/table.css +0 -58
  63. package/app/templates/Theme/Theme.tsx +0 -122
  64. package/app/templates/Toast/Toast.tsx +0 -106
  65. package/app/templates/Toast/toast.css +0 -69
  66. package/build/build-tokens.js +0 -223
  67. package/build/css/_variables.css +0 -251
  68. package/build/typescript/theme.ts +0 -6
  69. package/css/text.css +0 -18
@@ -0,0 +1,216 @@
1
+ /**
2
+ * AtomSystem Universal Framework-Agnostic CSS
3
+ * Compatible with React, Vue, Angular, Vanilla JS, and jQuery.
4
+ */
5
+
6
+ :root {
7
+ --font-sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
8
+
9
+ /* Semantic Color Tokens */
10
+ --atom-bg-primary: #ffffff;
11
+ --atom-bg-secondary: #f8f9fa;
12
+ --atom-bg-surface: #ffffff;
13
+ --atom-text-primary: #191f28;
14
+ --atom-text-secondary: #8b95a1;
15
+ --atom-text-muted: #b0b8c1;
16
+ --atom-border-subtle: #f2f4f6;
17
+ --atom-border-strong: #e5e8eb;
18
+
19
+ /* Brand Accent Tokens */
20
+ --atom-primary: #3182f6;
21
+ --atom-primary-hover: #1b64da;
22
+ --atom-primary-light: #e8f3ff;
23
+ --atom-destructive: #f04452;
24
+ --atom-destructive-hover: #dc2626;
25
+ --atom-success: #10b981;
26
+ --atom-warning: #f59e0b;
27
+
28
+ /* Typography & Radius */
29
+ --atom-radius-sm: 8px;
30
+ --atom-radius-md: 12px;
31
+ --atom-radius-lg: 16px;
32
+ --atom-radius-full: 9999px;
33
+ --atom-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
34
+ --atom-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
35
+ --atom-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
36
+ }
37
+
38
+ @media (prefers-color-scheme: dark) {
39
+ :root {
40
+ --atom-bg-primary: #0f1115;
41
+ --atom-bg-secondary: #171a21;
42
+ --atom-bg-surface: #1e222d;
43
+ --atom-text-primary: #f2f4f6;
44
+ --atom-text-secondary: #8b95a1;
45
+ --atom-text-muted: #4e5968;
46
+ --atom-border-subtle: #222631;
47
+ --atom-border-strong: #2c3240;
48
+
49
+ --atom-primary: #3b82f6;
50
+ --atom-primary-hover: #60a5fa;
51
+ --atom-primary-light: #1e293b;
52
+ --atom-destructive: #f87171;
53
+ --atom-destructive-hover: #ef4444;
54
+ }
55
+ }
56
+
57
+ /* === Universal Component Classes === */
58
+
59
+ /* Buttons */
60
+ .atom-btn {
61
+ display: inline-flex;
62
+ align-items: center;
63
+ justify-content: center;
64
+ gap: 0.5rem;
65
+ font-family: var(--font-sans);
66
+ font-size: 0.875rem;
67
+ font-weight: 600;
68
+ padding: 0.5rem 1rem;
69
+ border-radius: var(--atom-radius-md);
70
+ border: 1px solid transparent;
71
+ cursor: pointer;
72
+ transition: all 0.15s ease-in-out;
73
+ text-decoration: none;
74
+ user-select: none;
75
+ }
76
+ .atom-btn:focus-visible {
77
+ outline: 2px solid var(--atom-primary);
78
+ outline-offset: 2px;
79
+ }
80
+ .atom-btn:disabled, .atom-btn[aria-disabled="true"] {
81
+ opacity: 0.5;
82
+ cursor: not-allowed;
83
+ pointer-events: none;
84
+ }
85
+
86
+ .atom-btn-primary {
87
+ background-color: var(--atom-primary);
88
+ color: #ffffff;
89
+ }
90
+ .atom-btn-primary:hover:not(:disabled) {
91
+ background-color: var(--atom-primary-hover);
92
+ }
93
+
94
+ .atom-btn-secondary {
95
+ background-color: var(--atom-bg-secondary);
96
+ color: var(--atom-text-primary);
97
+ border-color: var(--atom-border-strong);
98
+ }
99
+ .atom-btn-secondary:hover:not(:disabled) {
100
+ background-color: var(--atom-border-subtle);
101
+ }
102
+
103
+ .atom-btn-outline {
104
+ background-color: transparent;
105
+ color: var(--atom-text-primary);
106
+ border-color: var(--atom-border-strong);
107
+ }
108
+ .atom-btn-outline:hover:not(:disabled) {
109
+ background-color: var(--atom-bg-secondary);
110
+ }
111
+
112
+ .atom-btn-destructive {
113
+ background-color: var(--atom-destructive);
114
+ color: #ffffff;
115
+ }
116
+ .atom-btn-destructive:hover:not(:disabled) {
117
+ background-color: var(--atom-destructive-hover);
118
+ }
119
+
120
+ .atom-btn-sm {
121
+ font-size: 0.75rem;
122
+ padding: 0.25rem 0.625rem;
123
+ border-radius: var(--atom-radius-sm);
124
+ }
125
+ .atom-btn-lg {
126
+ font-size: 1rem;
127
+ padding: 0.75rem 1.5rem;
128
+ border-radius: var(--atom-radius-lg);
129
+ }
130
+
131
+ /* Cards */
132
+ .atom-card {
133
+ background-color: var(--atom-bg-surface);
134
+ border: 1px solid var(--atom-border-subtle);
135
+ border-radius: var(--atom-radius-lg);
136
+ padding: 1.25rem;
137
+ box-shadow: var(--atom-shadow-sm);
138
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
139
+ }
140
+ .atom-card-interactive {
141
+ cursor: pointer;
142
+ }
143
+ .atom-card-interactive:hover {
144
+ border-color: var(--atom-primary);
145
+ box-shadow: var(--atom-shadow-md);
146
+ }
147
+
148
+ /* Inputs */
149
+ .atom-input {
150
+ display: block;
151
+ width: 100%;
152
+ font-family: var(--font-sans);
153
+ font-size: 0.875rem;
154
+ padding: 0.5rem 0.75rem;
155
+ border-radius: var(--atom-radius-md);
156
+ border: 1px solid var(--atom-border-strong);
157
+ background-color: var(--atom-bg-surface);
158
+ color: var(--atom-text-primary);
159
+ outline: none;
160
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
161
+ }
162
+ .atom-input:focus {
163
+ border-color: var(--atom-primary);
164
+ box-shadow: 0 0 0 3px var(--atom-primary-light);
165
+ }
166
+ .atom-input::placeholder {
167
+ color: var(--atom-text-muted);
168
+ }
169
+
170
+ /* Badges */
171
+ .atom-badge {
172
+ display: inline-flex;
173
+ align-items: center;
174
+ gap: 0.25rem;
175
+ font-size: 0.75rem;
176
+ font-weight: 600;
177
+ padding: 0.2rem 0.5rem;
178
+ border-radius: var(--atom-radius-full);
179
+ background-color: var(--atom-bg-secondary);
180
+ color: var(--atom-text-secondary);
181
+ border: 1px solid var(--atom-border-subtle);
182
+ }
183
+ .atom-badge-primary {
184
+ background-color: var(--atom-primary-light);
185
+ color: var(--atom-primary);
186
+ border-color: transparent;
187
+ }
188
+ .atom-badge-success {
189
+ background-color: rgba(16, 185, 129, 0.15);
190
+ color: #10b981;
191
+ border-color: transparent;
192
+ }
193
+
194
+ /* Typography Helpers */
195
+ .atom-title-1 {
196
+ font-size: 1.5rem;
197
+ font-weight: 700;
198
+ line-height: 1.25;
199
+ color: var(--atom-text-primary);
200
+ }
201
+ .atom-title-2 {
202
+ font-size: 1.25rem;
203
+ font-weight: 600;
204
+ line-height: 1.35;
205
+ color: var(--atom-text-primary);
206
+ }
207
+ .atom-body-1 {
208
+ font-size: 1rem;
209
+ line-height: 1.5;
210
+ color: var(--atom-text-primary);
211
+ }
212
+ .atom-body-2 {
213
+ font-size: 0.875rem;
214
+ line-height: 1.45;
215
+ color: var(--atom-text-secondary);
216
+ }
package/dist/cli.cjs ADDED
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ var fs = require('fs');
5
+ var path = require('path');
6
+ var url = require('url');
7
+
8
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
12
+ var path__default = /*#__PURE__*/_interopDefault(path);
13
+
14
+ function getPkgRoot() {
15
+ try {
16
+ if (typeof __dirname !== "undefined") {
17
+ return path__default.default.resolve(__dirname, "..");
18
+ }
19
+ const currentFile = url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli.cjs', document.baseURI).href)));
20
+ return path__default.default.resolve(path__default.default.dirname(currentFile), "..");
21
+ } catch {
22
+ return process.cwd();
23
+ }
24
+ }
25
+ var PKG_ROOT = getPkgRoot();
26
+ var args = process.argv.slice(2);
27
+ var command = args[0] || "help";
28
+ function copyFileSafe(src, dest, label) {
29
+ const targetDir = path__default.default.dirname(dest);
30
+ if (!fs__default.default.existsSync(targetDir)) {
31
+ fs__default.default.mkdirSync(targetDir, { recursive: true });
32
+ }
33
+ fs__default.default.copyFileSync(src, dest);
34
+ console.log(` \u2713 Created ${label} -> ${path__default.default.relative(process.cwd(), dest)}`);
35
+ }
36
+ function handleInit() {
37
+ const cwd = process.cwd();
38
+ console.log("\n\u{1F680} Initializing AtomSystem in your project...\n");
39
+ const srcSkill = path__default.default.join(PKG_ROOT, "skills", "atomsystem.skill.md");
40
+ const destSkill = path__default.default.join(cwd, ".agents", "skills", "atomsystem", "SKILL.md");
41
+ if (fs__default.default.existsSync(srcSkill)) {
42
+ copyFileSafe(srcSkill, destSkill, "AI Skill (.agents/skills/atomsystem/SKILL.md)");
43
+ }
44
+ const srcDesign = path__default.default.join(PKG_ROOT, "presets", "default.design.md");
45
+ const destDesign = path__default.default.join(cwd, "atom.design.md");
46
+ if (fs__default.default.existsSync(srcDesign)) {
47
+ copyFileSafe(srcDesign, destDesign, "Design Guide (atom.design.md)");
48
+ }
49
+ const srcPattern = path__default.default.join(PKG_ROOT, "presets", "uxPattern.md");
50
+ const destPattern = path__default.default.join(cwd, "atom.uxPattern.md");
51
+ if (fs__default.default.existsSync(srcPattern)) {
52
+ copyFileSafe(srcPattern, destPattern, "UX Pattern Guide (atom.uxPattern.md)");
53
+ }
54
+ const srcToken = path__default.default.join(PKG_ROOT, "tokens", "token.json");
55
+ const destToken = path__default.default.join(cwd, "tokens", "token.json");
56
+ if (fs__default.default.existsSync(srcToken)) {
57
+ copyFileSafe(srcToken, destToken, "Token JSON (tokens/token.json)");
58
+ }
59
+ console.log("\n\u2728 AtomSystem initialization completed!");
60
+ console.log("\n\u{1F4CC} Next Steps:");
61
+ console.log("1. Import AtomSystem CSS in your app (e.g. layout.tsx, App.vue, index.html):");
62
+ console.log(' import "atomsystem/css/atom-ui.css";');
63
+ console.log("2. Ask your AI coding assistant (Antigravity, Cursor, Copilot) to build UI:");
64
+ console.log(' "atom.design.md\uC640 atom.uxPattern.md\uB97C \uCC38\uACE0\uD558\uC5EC \uACB0\uC81C \uD654\uBA74 \uCEF4\uD3EC\uB10C\uD2B8\uB97C \uB9CC\uB4E4\uC5B4\uC918."\n');
65
+ }
66
+ function showHelp() {
67
+ console.log(`
68
+ AtomSystem CLI - Universal Design Token & Agentic UI System
69
+
70
+ Usage:
71
+ npx atomsystem <command> [options]
72
+
73
+ Commands:
74
+ init Initialize AtomSystem assets (AI Skill, design.md, uxPattern.md, token.json)
75
+ help Display this help message
76
+ version Print version info
77
+ `);
78
+ }
79
+ function showVersion() {
80
+ const pkgPath = path__default.default.join(PKG_ROOT, "package.json");
81
+ if (fs__default.default.existsSync(pkgPath)) {
82
+ const pkg = JSON.parse(fs__default.default.readFileSync(pkgPath, "utf-8"));
83
+ console.log(`atomsystem v${pkg.version}`);
84
+ } else {
85
+ console.log("atomsystem v0.1.50");
86
+ }
87
+ }
88
+ switch (command) {
89
+ case "init":
90
+ handleInit();
91
+ break;
92
+ case "version":
93
+ case "-v":
94
+ case "--version":
95
+ showVersion();
96
+ break;
97
+ case "help":
98
+ case "-h":
99
+ case "--help":
100
+ default:
101
+ showHelp();
102
+ break;
103
+ }
104
+ //# sourceMappingURL=cli.cjs.map
105
+ //# sourceMappingURL=cli.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.ts"],"names":["path","fileURLToPath","fs"],"mappings":"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","file":"cli.cjs","sourcesContent":["#!/usr/bin/env node\nimport fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nfunction getPkgRoot(): string {\n try {\n if (typeof __dirname !== 'undefined') {\n return path.resolve(__dirname, '..');\n }\n const currentFile = fileURLToPath(import.meta.url);\n return path.resolve(path.dirname(currentFile), '..');\n } catch {\n return process.cwd();\n }\n}\n\nconst PKG_ROOT = getPkgRoot();\nconst args = process.argv.slice(2);\nconst command = args[0] || 'help';\n\nfunction copyFileSafe(src: string, dest: string, label: string) {\n const targetDir = path.dirname(dest);\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n }\n fs.copyFileSync(src, dest);\n console.log(` ✓ Created ${label} -> ${path.relative(process.cwd(), dest)}`);\n}\n\nfunction handleInit() {\n const cwd = process.cwd();\n console.log('\\n🚀 Initializing AtomSystem in your project...\\n');\n\n // 1. Install AI Agent Skill\n const srcSkill = path.join(PKG_ROOT, 'skills', 'atomsystem.skill.md');\n const destSkill = path.join(cwd, '.agents', 'skills', 'atomsystem', 'SKILL.md');\n if (fs.existsSync(srcSkill)) {\n copyFileSafe(srcSkill, destSkill, 'AI Skill (.agents/skills/atomsystem/SKILL.md)');\n }\n\n // 2. Install Design Guide (.design.md)\n const srcDesign = path.join(PKG_ROOT, 'presets', 'default.design.md');\n const destDesign = path.join(cwd, 'atom.design.md');\n if (fs.existsSync(srcDesign)) {\n copyFileSafe(srcDesign, destDesign, 'Design Guide (atom.design.md)');\n }\n\n // 3. Install UX Pattern Guide (.uxPattern.md)\n const srcPattern = path.join(PKG_ROOT, 'presets', 'uxPattern.md');\n const destPattern = path.join(cwd, 'atom.uxPattern.md');\n if (fs.existsSync(srcPattern)) {\n copyFileSafe(srcPattern, destPattern, 'UX Pattern Guide (atom.uxPattern.md)');\n }\n\n // 4. Install Token JSON (tokens.json)\n const srcToken = path.join(PKG_ROOT, 'tokens', 'token.json');\n const destToken = path.join(cwd, 'tokens', 'token.json');\n if (fs.existsSync(srcToken)) {\n copyFileSafe(srcToken, destToken, 'Token JSON (tokens/token.json)');\n }\n\n console.log('\\n✨ AtomSystem initialization completed!');\n console.log('\\n📌 Next Steps:');\n console.log('1. Import AtomSystem CSS in your app (e.g. layout.tsx, App.vue, index.html):');\n console.log(' import \"atomsystem/css/atom-ui.css\";');\n console.log('2. Ask your AI coding assistant (Antigravity, Cursor, Copilot) to build UI:');\n console.log(' \"atom.design.md와 atom.uxPattern.md를 참고하여 결제 화면 컴포넌트를 만들어줘.\"\\n');\n}\n\nfunction showHelp() {\n console.log(`\nAtomSystem CLI - Universal Design Token & Agentic UI System\n\nUsage:\n npx atomsystem <command> [options]\n\nCommands:\n init Initialize AtomSystem assets (AI Skill, design.md, uxPattern.md, token.json)\n help Display this help message\n version Print version info\n`);\n}\n\nfunction showVersion() {\n const pkgPath = path.join(PKG_ROOT, 'package.json');\n if (fs.existsSync(pkgPath)) {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n console.log(`atomsystem v${pkg.version}`);\n } else {\n console.log('atomsystem v0.1.50');\n }\n}\n\nswitch (command) {\n case 'init':\n handleInit();\n break;\n case 'version':\n case '-v':\n case '--version':\n showVersion();\n break;\n case 'help':\n case '-h':\n case '--help':\n default:\n showHelp();\n break;\n}\n\n"]}
package/dist/cli.d.cts ADDED
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/cli.js ADDED
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { fileURLToPath } from 'url';
5
+
6
+ function getPkgRoot() {
7
+ try {
8
+ if (typeof __dirname !== "undefined") {
9
+ return path.resolve(__dirname, "..");
10
+ }
11
+ const currentFile = fileURLToPath(import.meta.url);
12
+ return path.resolve(path.dirname(currentFile), "..");
13
+ } catch {
14
+ return process.cwd();
15
+ }
16
+ }
17
+ var PKG_ROOT = getPkgRoot();
18
+ var args = process.argv.slice(2);
19
+ var command = args[0] || "help";
20
+ function copyFileSafe(src, dest, label) {
21
+ const targetDir = path.dirname(dest);
22
+ if (!fs.existsSync(targetDir)) {
23
+ fs.mkdirSync(targetDir, { recursive: true });
24
+ }
25
+ fs.copyFileSync(src, dest);
26
+ console.log(` \u2713 Created ${label} -> ${path.relative(process.cwd(), dest)}`);
27
+ }
28
+ function handleInit() {
29
+ const cwd = process.cwd();
30
+ console.log("\n\u{1F680} Initializing AtomSystem in your project...\n");
31
+ const srcSkill = path.join(PKG_ROOT, "skills", "atomsystem.skill.md");
32
+ const destSkill = path.join(cwd, ".agents", "skills", "atomsystem", "SKILL.md");
33
+ if (fs.existsSync(srcSkill)) {
34
+ copyFileSafe(srcSkill, destSkill, "AI Skill (.agents/skills/atomsystem/SKILL.md)");
35
+ }
36
+ const srcDesign = path.join(PKG_ROOT, "presets", "default.design.md");
37
+ const destDesign = path.join(cwd, "atom.design.md");
38
+ if (fs.existsSync(srcDesign)) {
39
+ copyFileSafe(srcDesign, destDesign, "Design Guide (atom.design.md)");
40
+ }
41
+ const srcPattern = path.join(PKG_ROOT, "presets", "uxPattern.md");
42
+ const destPattern = path.join(cwd, "atom.uxPattern.md");
43
+ if (fs.existsSync(srcPattern)) {
44
+ copyFileSafe(srcPattern, destPattern, "UX Pattern Guide (atom.uxPattern.md)");
45
+ }
46
+ const srcToken = path.join(PKG_ROOT, "tokens", "token.json");
47
+ const destToken = path.join(cwd, "tokens", "token.json");
48
+ if (fs.existsSync(srcToken)) {
49
+ copyFileSafe(srcToken, destToken, "Token JSON (tokens/token.json)");
50
+ }
51
+ console.log("\n\u2728 AtomSystem initialization completed!");
52
+ console.log("\n\u{1F4CC} Next Steps:");
53
+ console.log("1. Import AtomSystem CSS in your app (e.g. layout.tsx, App.vue, index.html):");
54
+ console.log(' import "atomsystem/css/atom-ui.css";');
55
+ console.log("2. Ask your AI coding assistant (Antigravity, Cursor, Copilot) to build UI:");
56
+ console.log(' "atom.design.md\uC640 atom.uxPattern.md\uB97C \uCC38\uACE0\uD558\uC5EC \uACB0\uC81C \uD654\uBA74 \uCEF4\uD3EC\uB10C\uD2B8\uB97C \uB9CC\uB4E4\uC5B4\uC918."\n');
57
+ }
58
+ function showHelp() {
59
+ console.log(`
60
+ AtomSystem CLI - Universal Design Token & Agentic UI System
61
+
62
+ Usage:
63
+ npx atomsystem <command> [options]
64
+
65
+ Commands:
66
+ init Initialize AtomSystem assets (AI Skill, design.md, uxPattern.md, token.json)
67
+ help Display this help message
68
+ version Print version info
69
+ `);
70
+ }
71
+ function showVersion() {
72
+ const pkgPath = path.join(PKG_ROOT, "package.json");
73
+ if (fs.existsSync(pkgPath)) {
74
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
75
+ console.log(`atomsystem v${pkg.version}`);
76
+ } else {
77
+ console.log("atomsystem v0.1.50");
78
+ }
79
+ }
80
+ switch (command) {
81
+ case "init":
82
+ handleInit();
83
+ break;
84
+ case "version":
85
+ case "-v":
86
+ case "--version":
87
+ showVersion();
88
+ break;
89
+ case "help":
90
+ case "-h":
91
+ case "--help":
92
+ default:
93
+ showHelp();
94
+ break;
95
+ }
96
+ //# sourceMappingURL=cli.js.map
97
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.ts"],"names":[],"mappings":"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","file":"cli.js","sourcesContent":["#!/usr/bin/env node\nimport fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nfunction getPkgRoot(): string {\n try {\n if (typeof __dirname !== 'undefined') {\n return path.resolve(__dirname, '..');\n }\n const currentFile = fileURLToPath(import.meta.url);\n return path.resolve(path.dirname(currentFile), '..');\n } catch {\n return process.cwd();\n }\n}\n\nconst PKG_ROOT = getPkgRoot();\nconst args = process.argv.slice(2);\nconst command = args[0] || 'help';\n\nfunction copyFileSafe(src: string, dest: string, label: string) {\n const targetDir = path.dirname(dest);\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n }\n fs.copyFileSync(src, dest);\n console.log(` ✓ Created ${label} -> ${path.relative(process.cwd(), dest)}`);\n}\n\nfunction handleInit() {\n const cwd = process.cwd();\n console.log('\\n🚀 Initializing AtomSystem in your project...\\n');\n\n // 1. Install AI Agent Skill\n const srcSkill = path.join(PKG_ROOT, 'skills', 'atomsystem.skill.md');\n const destSkill = path.join(cwd, '.agents', 'skills', 'atomsystem', 'SKILL.md');\n if (fs.existsSync(srcSkill)) {\n copyFileSafe(srcSkill, destSkill, 'AI Skill (.agents/skills/atomsystem/SKILL.md)');\n }\n\n // 2. Install Design Guide (.design.md)\n const srcDesign = path.join(PKG_ROOT, 'presets', 'default.design.md');\n const destDesign = path.join(cwd, 'atom.design.md');\n if (fs.existsSync(srcDesign)) {\n copyFileSafe(srcDesign, destDesign, 'Design Guide (atom.design.md)');\n }\n\n // 3. Install UX Pattern Guide (.uxPattern.md)\n const srcPattern = path.join(PKG_ROOT, 'presets', 'uxPattern.md');\n const destPattern = path.join(cwd, 'atom.uxPattern.md');\n if (fs.existsSync(srcPattern)) {\n copyFileSafe(srcPattern, destPattern, 'UX Pattern Guide (atom.uxPattern.md)');\n }\n\n // 4. Install Token JSON (tokens.json)\n const srcToken = path.join(PKG_ROOT, 'tokens', 'token.json');\n const destToken = path.join(cwd, 'tokens', 'token.json');\n if (fs.existsSync(srcToken)) {\n copyFileSafe(srcToken, destToken, 'Token JSON (tokens/token.json)');\n }\n\n console.log('\\n✨ AtomSystem initialization completed!');\n console.log('\\n📌 Next Steps:');\n console.log('1. Import AtomSystem CSS in your app (e.g. layout.tsx, App.vue, index.html):');\n console.log(' import \"atomsystem/css/atom-ui.css\";');\n console.log('2. Ask your AI coding assistant (Antigravity, Cursor, Copilot) to build UI:');\n console.log(' \"atom.design.md와 atom.uxPattern.md를 참고하여 결제 화면 컴포넌트를 만들어줘.\"\\n');\n}\n\nfunction showHelp() {\n console.log(`\nAtomSystem CLI - Universal Design Token & Agentic UI System\n\nUsage:\n npx atomsystem <command> [options]\n\nCommands:\n init Initialize AtomSystem assets (AI Skill, design.md, uxPattern.md, token.json)\n help Display this help message\n version Print version info\n`);\n}\n\nfunction showVersion() {\n const pkgPath = path.join(PKG_ROOT, 'package.json');\n if (fs.existsSync(pkgPath)) {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n console.log(`atomsystem v${pkg.version}`);\n } else {\n console.log('atomsystem v0.1.50');\n }\n}\n\nswitch (command) {\n case 'init':\n handleInit();\n break;\n case 'version':\n case '-v':\n case '--version':\n showVersion();\n break;\n case 'help':\n case '-h':\n case '--help':\n default:\n showHelp();\n break;\n}\n\n"]}