@mimi-ng/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.
Files changed (30) hide show
  1. package/README.md +20 -1
  2. package/dist/init/css.js +1 -1
  3. package/dist/init/index.js +25 -0
  4. package/dist/init/paths.js +20 -0
  5. package/dist/registry.json +112 -1
  6. package/dist/templates/blocks/login-01/index.ts +1 -0
  7. package/dist/templates/blocks/login-01/login-01.html +174 -0
  8. package/dist/templates/blocks/login-01/login-01.ts +105 -0
  9. package/dist/templates/blocks/login-02/index.ts +1 -0
  10. package/dist/templates/blocks/login-02/login-02.html +186 -0
  11. package/dist/templates/blocks/login-02/login-02.ts +92 -0
  12. package/dist/templates/blocks/otp-01/index.ts +1 -0
  13. package/dist/templates/blocks/otp-01/otp-01.html +166 -0
  14. package/dist/templates/blocks/otp-01/otp-01.ts +212 -0
  15. package/dist/templates/blocks/pricing-01/index.ts +1 -0
  16. package/dist/templates/blocks/pricing-01/pricing-01.html +173 -0
  17. package/dist/templates/blocks/pricing-01/pricing-01.ts +178 -0
  18. package/dist/templates/blocks/settings-01/index.ts +1 -0
  19. package/dist/templates/blocks/settings-01/settings-01.html +424 -0
  20. package/dist/templates/blocks/settings-01/settings-01.ts +382 -0
  21. package/dist/templates/blocks/signup-01/index.ts +1 -0
  22. package/dist/templates/blocks/signup-01/signup-01.html +332 -0
  23. package/dist/templates/blocks/signup-01/signup-01.ts +176 -0
  24. package/dist/templates/components/tabs/tabs.ts +88 -23
  25. package/dist/ui/index.js +128 -10
  26. package/dist/ui/schema.json +26 -2
  27. package/dist/utils/project.js +35 -0
  28. package/dist/utils/tailwind.js +80 -0
  29. package/dist/utils/write-files.js +37 -7
  30. package/package.json +1 -1
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasFileChanges = exports.emptyReport = exports.MANIFEST = exports.BASE_DIR = void 0;
3
+ exports.isBlockFile = exports.hasFileChanges = exports.emptyReport = exports.MANIFEST = exports.BASE_DIR = void 0;
4
4
  exports.projectPathOf = projectPathOf;
5
+ exports.targetPathOf = targetPathOf;
5
6
  exports.basePathOf = basePathOf;
6
7
  exports.writeTemplates = writeTemplates;
7
8
  exports.blockedMessages = blockedMessages;
@@ -9,6 +10,7 @@ exports.compareVersions = compareVersions;
9
10
  exports.updatedMessages = updatedMessages;
10
11
  const schematics_1 = require("@angular-devkit/schematics");
11
12
  const registry_1 = require("../registry");
13
+ const project_1 = require("./project");
12
14
  /** Carpeta de las copias originales, en la raíz del workspace. Debe quedar en git. */
13
15
  exports.BASE_DIR = '.mimi/base';
14
16
  /** Versión de Mimi con la que se escribió la base de cada archivo. */
@@ -34,7 +36,26 @@ exports.hasFileChanges = hasFileChanges;
34
36
  function projectPathOf(file) {
35
37
  return file.replace(/^components\//, '');
36
38
  }
37
- /** Copia original en .mimi/base, con la misma estructura (`.mimi/base/button/button.ts`). */
39
+ /** Prefijo de los archivos de un Block en las plantillas (`blocks/login-01/login-01.ts`). */
40
+ const BLOCKS_PREFIX = 'blocks/';
41
+ /** ¿Es un archivo de un Block? */
42
+ const isBlockFile = (file) => file.startsWith(BLOCKS_PREFIX);
43
+ exports.isBlockFile = isBlockFile;
44
+ /**
45
+ * Ruta en el proyecto de un archivo de las plantillas: los Blocks van a su carpeta, sin
46
+ * `blocks/` (`blocks/login-01/login-01.ts` → `<blocksDir>/login-01/login-01.ts`); el resto, a la
47
+ * de componentes (ver projectPathOf).
48
+ */
49
+ function targetPathOf(file, componentsDir, blocksDir) {
50
+ return (0, exports.isBlockFile)(file)
51
+ ? `${blocksDir}/${file.slice(BLOCKS_PREFIX.length)}`
52
+ : `${componentsDir}/${projectPathOf(file)}`;
53
+ }
54
+ /**
55
+ * Copia original en .mimi/base, con la misma estructura (`.mimi/base/button/button.ts`). Los
56
+ * Blocks conservan `blocks/` (`.mimi/base/blocks/login-01/login-01.ts`), y esa es también su
57
+ * clave en el manifiesto.
58
+ */
38
59
  function basePathOf(file) {
39
60
  return `${exports.BASE_DIR}/${projectPathOf(file)}`;
40
61
  }
@@ -88,7 +109,7 @@ function writeTemplates(options) {
88
109
  const write = (tree) => {
89
110
  const manifest = readManifest(tree);
90
111
  let manifestChanged = false;
91
- const targetOf = (file) => `${options.componentsDir}/${projectPathOf(file)}`;
112
+ const targetOf = (file) => targetPathOf(file, options.componentsDir, options.blocksDir ?? (0, project_1.defaultBlocksDir)(options.componentsDir));
92
113
  const stateOf = (file) => {
93
114
  const target = targetOf(file);
94
115
  if (!tree.exists(target))
@@ -219,8 +240,8 @@ function writeTemplates(options) {
219
240
  * Los avisos de los ítems que no se escribieron (`report.blocked`): qué no se actualizó, por qué
220
241
  * y qué hacer. Nunca dicen «actualizado».
221
242
  */
222
- function blockedMessages(report, componentsDir, version) {
223
- const path = (file) => `${componentsDir}/${projectPathOf(file)}`;
243
+ function blockedMessages(report, componentsDir, version, blocksDir = (0, project_1.defaultBlocksDir)(componentsDir)) {
244
+ const path = (file) => targetPathOf(file, componentsDir, blocksDir);
224
245
  return report.blocked.map(({ item, files, dependency, installed }) => {
225
246
  if (dependency) {
226
247
  const needs = `necesita ${dependency} ${version}, que no se actualizó (ver el aviso de ${dependency}).`;
@@ -228,9 +249,18 @@ function blockedMessages(report, componentsDir, version) {
228
249
  ? `${item} no se actualizó a ${version}: ${needs}`
229
250
  : `${item} no se agregó: ${needs}`;
230
251
  }
231
- const isTheme = registry_1.registry.items[item]?.type === 'theme';
232
- const label = isTheme ? 'El tema' : item;
252
+ const type = registry_1.registry.items[item]?.type;
233
253
  const dir = projectPathOf(files[0]).split('/').slice(0, -1).join('/');
254
+ if (type === 'block') {
255
+ // Lo normal es editar un Block (es una pantalla del usuario): el aviso no alarma (B.1-b).
256
+ return (`${item} no se actualizó a ${version}: es tu pantalla y la modificaste ` +
257
+ `(${files.map(path).join(', ')}), así que no se tocó ninguno de sus archivos. Es lo ` +
258
+ `normal con un Block. La versión de Mimi que modificaste está en ${exports.BASE_DIR}/${dir}/, ` +
259
+ 'para comparar. Si quieres la nueva, guarda tus cambios (por ejemplo, en git) y vuelve ' +
260
+ 'a ejecutar el comando con --overwrite: reemplaza tu pantalla entera.');
261
+ }
262
+ const isTheme = type === 'theme';
263
+ const label = isTheme ? 'El tema' : item;
234
264
  return (`${label} no se actualizó a ${version} porque modificaste ${files.map(path).join(', ')}. ` +
235
265
  'No se cambió ninguno de sus archivos, para no mezclar versiones.' +
236
266
  (isTheme
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mimi-ng/cli",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Angular + Tailwind CSS 4 UI components that a CLI copies into your project, so you own the code. Schematics for ng add and ng generate.",
5
5
  "keywords": [
6
6
  "angular",