@machinemetrics/mm-react-components 0.2.3-1 → 0.2.3-11

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 (99) hide show
  1. package/README.md +96 -30
  2. package/agent-docs/agent-documentation-reference.md +247 -0
  3. package/agent-docs/ai-agent-guide.md +554 -0
  4. package/agent-docs/ai-agent-init-guide.md +461 -0
  5. package/agent-docs/chakra-migration-readme.md +265 -0
  6. package/agent-docs/chakra-migration-troubleshooting.md +649 -0
  7. package/agent-docs/component-mapping-reference.md +466 -0
  8. package/agent-docs/init-readme.md +283 -0
  9. package/agent-docs/init-troubleshooting.md +550 -0
  10. package/agent-docs/setup-reference.md +365 -0
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/README.md +96 -30
  13. package/dist/components/ui/alert-dialog.d.ts +15 -0
  14. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  15. package/dist/components/ui/alert.d.ts +10 -0
  16. package/dist/components/ui/alert.d.ts.map +1 -0
  17. package/dist/components/ui/avatar.d.ts +7 -0
  18. package/dist/components/ui/avatar.d.ts.map +1 -0
  19. package/dist/components/ui/breadcrumb.d.ts +12 -0
  20. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  21. package/dist/components/ui/button.d.ts +1 -1
  22. package/dist/components/ui/button.d.ts.map +1 -1
  23. package/dist/components/ui/card.d.ts +10 -0
  24. package/dist/components/ui/card.d.ts.map +1 -0
  25. package/dist/components/ui/chart.d.ts +41 -0
  26. package/dist/components/ui/chart.d.ts.map +1 -0
  27. package/dist/components/ui/form.d.ts +25 -0
  28. package/dist/components/ui/form.d.ts.map +1 -0
  29. package/dist/components/ui/progress.d.ts +1 -0
  30. package/dist/components/ui/progress.d.ts.map +1 -1
  31. package/dist/components/ui/separator.d.ts +5 -0
  32. package/dist/components/ui/separator.d.ts.map +1 -0
  33. package/dist/components/ui/sonner.d.ts +4 -0
  34. package/dist/components/ui/sonner.d.ts.map +1 -0
  35. package/dist/components/ui/textarea.d.ts +4 -0
  36. package/dist/components/ui/textarea.d.ts.map +1 -0
  37. package/dist/docs/GETTING_STARTED.md +293 -0
  38. package/dist/index.d.ts +14 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/lib/mm-react-components.css +1 -0
  41. package/dist/main.d.ts +0 -1
  42. package/dist/main.d.ts.map +1 -1
  43. package/dist/mm-react-components.es.js +10964 -927
  44. package/dist/mm-react-components.es.js.map +1 -1
  45. package/dist/mm-react-components.umd.js +27 -9
  46. package/dist/mm-react-components.umd.js.map +1 -1
  47. package/dist/preview/AlertDialogPreview.d.ts +2 -0
  48. package/dist/preview/AlertDialogPreview.d.ts.map +1 -0
  49. package/dist/preview/AlertPreview.d.ts +2 -0
  50. package/dist/preview/AlertPreview.d.ts.map +1 -0
  51. package/dist/preview/AvatarPreview.d.ts +2 -0
  52. package/dist/preview/AvatarPreview.d.ts.map +1 -0
  53. package/dist/preview/BreadcrumbPreview.d.ts +2 -0
  54. package/dist/preview/BreadcrumbPreview.d.ts.map +1 -0
  55. package/dist/preview/CardPreview.d.ts +2 -0
  56. package/dist/preview/CardPreview.d.ts.map +1 -0
  57. package/dist/preview/ChartPreview.d.ts +2 -0
  58. package/dist/preview/ChartPreview.d.ts.map +1 -0
  59. package/dist/preview/CheckboxPreview.d.ts.map +1 -1
  60. package/dist/preview/DataTablePreview.d.ts.map +1 -1
  61. package/dist/preview/FormPreview.d.ts +2 -0
  62. package/dist/preview/FormPreview.d.ts.map +1 -0
  63. package/dist/preview/InputPreview.d.ts.map +1 -1
  64. package/dist/preview/LabelPreview.d.ts.map +1 -1
  65. package/dist/preview/RadioGroupPreview.d.ts.map +1 -1
  66. package/dist/preview/SeparatorPreview.d.ts +2 -0
  67. package/dist/preview/SeparatorPreview.d.ts.map +1 -0
  68. package/dist/preview/SonnerPreview.d.ts +2 -0
  69. package/dist/preview/SonnerPreview.d.ts.map +1 -0
  70. package/dist/preview/TabsPreview.d.ts.map +1 -1
  71. package/dist/preview/TextareaPreview.d.ts +2 -0
  72. package/dist/preview/TextareaPreview.d.ts.map +1 -0
  73. package/dist/preview/data-table/data-table-preview_column-content.d.ts +1 -1
  74. package/dist/preview/data-table/data-table-preview_column-content.d.ts.map +1 -1
  75. package/dist/preview/page-header/PageHeaderPreview.d.ts.map +1 -1
  76. package/dist/scripts/chakra-to-shadcn-migrator/chakra-to-shadcn.config.json +512 -0
  77. package/dist/scripts/chakra-to-shadcn-migrator/lib/args.js +63 -0
  78. package/dist/scripts/chakra-to-shadcn-migrator/lib/colors.js +14 -0
  79. package/dist/scripts/chakra-to-shadcn-migrator/lib/config.js +15 -0
  80. package/dist/scripts/chakra-to-shadcn-migrator/lib/deps.js +125 -0
  81. package/dist/scripts/chakra-to-shadcn-migrator/lib/file-io.js +44 -0
  82. package/dist/scripts/chakra-to-shadcn-migrator/lib/render.js +89 -0
  83. package/dist/scripts/chakra-to-shadcn-migrator/lib/transform.js +550 -0
  84. package/dist/scripts/chakra-to-shadcn-migrator/package.json +11 -0
  85. package/dist/scripts/init.cjs +208 -0
  86. package/dist/scripts/npx-init.cjs +409 -0
  87. package/dist/tailwind.base.config.js +88 -0
  88. package/dist/themes/carbide.css +187 -32
  89. package/package.json +58 -10
  90. package/src/index.css +99 -498
  91. package/dist/index.css +0 -536
  92. package/dist/tailwind.config.export.js +0 -153
  93. package/dist/themes/complete.css +0 -8
  94. package/scripts/README.md +0 -171
  95. package/scripts/chakra-to-shadcn-migrator/README.md +0 -107
  96. package/src/themes/carbide.css +0 -1257
  97. package/src/themes/complete.css +0 -8
  98. package/tailwind.config.export.js +0 -153
  99. /package/{scripts → dist/scripts}/chakra-to-shadcn-migrator/bin/chakra-to-shadcn.js +0 -0
@@ -0,0 +1,125 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+
4
+ export function updateDependencies(projectRoot, config, apply) {
5
+ const pkgPath = path.join(projectRoot, 'package.json');
6
+ const report = {
7
+ packageFound: fs.existsSync(pkgPath),
8
+ removed: [],
9
+ devRemoved: [],
10
+ added: [],
11
+ devAdded: [],
12
+ };
13
+ if (!report.packageFound) return report;
14
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
15
+ const deps = { ...(pkg.dependencies ?? {}) };
16
+ const devDeps = { ...(pkg.devDependencies ?? {}) };
17
+
18
+ for (const dep of config.dependenciesToRemove ?? []) {
19
+ if (dep in deps) {
20
+ report.removed.push({
21
+ name: dep,
22
+ from: 'dependencies',
23
+ version: deps[dep],
24
+ });
25
+ if (apply) delete deps[dep];
26
+ }
27
+ if (dep in devDeps) {
28
+ report.devRemoved.push({
29
+ name: dep,
30
+ from: 'devDependencies',
31
+ version: devDeps[dep],
32
+ });
33
+ if (apply) delete devDeps[dep];
34
+ }
35
+ }
36
+
37
+ for (const [dep, version] of Object.entries(config.dependenciesToAdd ?? {})) {
38
+ if (deps[dep] !== version) {
39
+ report.added.push({ name: dep, version });
40
+ if (apply) deps[dep] = version;
41
+ }
42
+ }
43
+
44
+ for (const [dep, version] of Object.entries(
45
+ config.devDependenciesToAdd ?? {},
46
+ )) {
47
+ if (devDeps[dep] !== version) {
48
+ report.devAdded.push({ name: dep, version });
49
+ if (apply) devDeps[dep] = version;
50
+ }
51
+ }
52
+
53
+ if (apply) {
54
+ const next = { ...pkg };
55
+ next.dependencies = Object.keys(deps).length ? deps : undefined;
56
+ next.devDependencies = Object.keys(devDeps).length ? devDeps : undefined;
57
+ fs.writeFileSync(pkgPath, `${JSON.stringify(next, null, 2)}\n`, 'utf8');
58
+ }
59
+
60
+ return report;
61
+ }
62
+
63
+ export function renderDependencyReport(report, applied, { bold, colorize }) {
64
+ console.log(bold('\nStep 1 – Align npm dependencies (Zero-Config)'));
65
+ if (!report.packageFound) {
66
+ console.log(colorize(' package.json not found in project root.', 'red'));
67
+ return;
68
+ }
69
+ if (
70
+ !report.removed.length &&
71
+ !report.devRemoved.length &&
72
+ !report.added.length &&
73
+ !report.devAdded.length
74
+ ) {
75
+ console.log(colorize(' No dependency changes required.', 'gray'));
76
+ console.log(
77
+ colorize(
78
+ ' 💡 Zero-config setup: Only @machinemetrics/mm-react-components needed!',
79
+ 'cyan',
80
+ ),
81
+ );
82
+ return;
83
+ }
84
+
85
+ const printEntries = (entries, verb) => {
86
+ for (const entry of entries) {
87
+ const where = entry.from ? ` (${entry.from})` : '';
88
+ console.log(
89
+ ` - ${verb} ${colorize(entry.name, 'green')}${where}${entry.version ? ` @ ${entry.version}` : ''}`,
90
+ );
91
+ }
92
+ };
93
+
94
+ if (!applied) {
95
+ if (report.removed.length || report.devRemoved.length) {
96
+ console.log(colorize(' Remove Chakra packages:', 'yellow'));
97
+ printEntries([...report.removed, ...report.devRemoved], 'remove');
98
+ }
99
+ if (report.added.length || report.devAdded.length) {
100
+ console.log(
101
+ colorize(' Add MM React Components (zero-config):', 'yellow'),
102
+ );
103
+ printEntries([...report.added, ...report.devAdded], 'add');
104
+ console.log(
105
+ colorize(
106
+ ' 💡 No build tools required - using pre-compiled CSS!',
107
+ 'cyan',
108
+ ),
109
+ );
110
+ }
111
+ } else {
112
+ if (report.removed.length || report.devRemoved.length) {
113
+ printEntries([...report.removed, ...report.devRemoved], 'removed');
114
+ }
115
+ if (report.added.length || report.devAdded.length) {
116
+ printEntries([...report.added, ...report.devAdded], 'added');
117
+ console.log(
118
+ colorize(
119
+ ' ✔ Zero-config setup complete - no build tools needed!',
120
+ 'green',
121
+ ),
122
+ );
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,44 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+
4
+ export function collectSourceFiles(projectRoot, customSources, includeTests) {
5
+ const roots = customSources?.length ? customSources : ['src'];
6
+ const files = [];
7
+ const ignoredFolders = new Set([
8
+ 'node_modules',
9
+ '.git',
10
+ 'dist',
11
+ 'build',
12
+ 'coverage',
13
+ '.turbo',
14
+ '.next',
15
+ ]);
16
+
17
+ for (const rootRelative of roots) {
18
+ const rootPath = path.join(projectRoot, rootRelative);
19
+ if (!fs.existsSync(rootPath)) continue;
20
+ walk(rootPath);
21
+ }
22
+
23
+ function walk(current) {
24
+ const stat = fs.statSync(current);
25
+ if (stat.isDirectory()) {
26
+ const base = path.basename(current);
27
+ if (ignoredFolders.has(base)) return;
28
+ const entries = fs.readdirSync(current);
29
+ for (const entry of entries) {
30
+ walk(path.join(current, entry));
31
+ }
32
+ } else if (stat.isFile()) {
33
+ if (!/\.[tj]sx?$/.test(current)) return;
34
+ const relative = path.relative(projectRoot, current);
35
+ if (!includeTests) {
36
+ if (relative.includes('__tests__')) return;
37
+ if (/\.test\.|\.spec\.|\.stories\./.test(relative)) return;
38
+ }
39
+ files.push({ absolute: current, relative });
40
+ }
41
+ }
42
+
43
+ return files;
44
+ }
@@ -0,0 +1,89 @@
1
+ export function renderProviderInstructions(config, { bold }) {
2
+ const instructions = config.providerInstructions ?? [];
3
+ if (!instructions.length) return;
4
+ console.log(bold('\nStep 2 – Update top-level providers'));
5
+ instructions.forEach((text, index) => {
6
+ console.log(` ${index + 1}. ${text}`);
7
+ });
8
+ }
9
+
10
+ export function renderPostSteps(config, { bold }) {
11
+ const steps = config.postSteps ?? [];
12
+ if (!steps.length) return;
13
+ console.log(bold('\nStep 4 – Finish up'));
14
+ steps.forEach((step, index) => {
15
+ console.log(` ${index + 1}. ${step}`);
16
+ });
17
+ }
18
+
19
+ export function renderImportReport(reports, applyMode, config, { colorize }) {
20
+ if (!reports.length) {
21
+ console.log(
22
+ colorize(' No Chakra imports were found in the scanned files.', 'gray'),
23
+ );
24
+ return;
25
+ }
26
+ for (const fileReport of reports) {
27
+ console.log(`\n • ${colorize(fileReport.file, 'cyan')}`);
28
+ for (const moduleInfo of fileReport.modules) {
29
+ const { module, convertible, manual, missingConfig, skipped } =
30
+ moduleInfo;
31
+ if (missingConfig) {
32
+ console.log(
33
+ ` - ${colorize('No mapping config for', 'red')} ${module}.`,
34
+ );
35
+ continue;
36
+ }
37
+ if (moduleInfo.jsxReplaced?.length) {
38
+ console.log(
39
+ ` - ${colorize('JSX replaced', 'green')}: ${moduleInfo.jsxReplaced.join(', ')}`,
40
+ );
41
+ }
42
+ if (moduleInfo.compoundTransformed?.length) {
43
+ console.log(
44
+ ` - ${colorize('Compound components', 'green')}: ${moduleInfo.compoundTransformed.join(', ')}`,
45
+ );
46
+ }
47
+ if (manual?.length) {
48
+ const names = manual
49
+ .map((spec) => spec.local || spec.imported)
50
+ .join(', ');
51
+ console.log(
52
+ ` - ${colorize('Manual follow-up required', 'yellow')}: ${names}`,
53
+ );
54
+ }
55
+ if (convertible?.length) {
56
+ const names = convertible
57
+ .map(({ specifier, mapping }) => {
58
+ const target =
59
+ mapping.module ??
60
+ config.moduleMappings?.[module]?.default?.module ??
61
+ 'n/a';
62
+ const rename =
63
+ mapping.import && mapping.import !== specifier.local
64
+ ? ` → ${mapping.import}`
65
+ : '';
66
+ return `${specifier.local}${rename} (${target})`;
67
+ })
68
+ .join(', ');
69
+ console.log(` - ${colorize('Mapped', 'green')} ${names}`);
70
+ }
71
+ if (applyMode && skipped) {
72
+ console.log(
73
+ ` - ${colorize('Skipped automatic rewrite', 'red')} – unresolved specifiers remain.`,
74
+ );
75
+ }
76
+ }
77
+ if (fileReport.importsRemoved?.length) {
78
+ const allRemoved = fileReport.importsRemoved
79
+ .flatMap((r) => r.specifiers)
80
+ .join(', ');
81
+ console.log(
82
+ ` - ${colorize('Removed unused imports', 'gray')}: ${allRemoved}`,
83
+ );
84
+ }
85
+ if (applyMode && fileReport.applied) {
86
+ console.log(` ${colorize('✔ Imports/JSX rewritten', 'green')}`);
87
+ }
88
+ }
89
+ }