@mimi-ng/cli 0.1.1 → 0.3.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/README.md +28 -1
- package/dist/init/css.js +17 -0
- package/dist/init/index.js +7 -5
- package/dist/init/items.js +9 -0
- package/dist/registry.json +482 -1
- package/dist/templates/components/avatar/avatar.ts +1 -1
- package/dist/templates/components/avatar/avatar.variants.ts +4 -4
- package/dist/templates/components/badge/badge.ts +41 -6
- package/dist/templates/components/badge/badge.variants.ts +105 -11
- package/dist/templates/components/button/button.ts +74 -7
- package/dist/templates/components/button/button.variants.ts +145 -21
- package/dist/templates/components/calendar/calendar-texts.ts +72 -0
- package/dist/templates/components/calendar/calendar.ts +588 -0
- package/dist/templates/components/calendar/dates.ts +181 -0
- package/dist/templates/components/calendar/index.ts +3 -0
- package/dist/templates/components/card/card.ts +8 -5
- package/dist/templates/components/checkbox/checkbox.ts +3 -3
- package/dist/templates/components/chip/chip-texts.ts +40 -0
- package/dist/templates/components/chip/chip.ts +116 -0
- package/dist/templates/components/chip/index.ts +2 -0
- package/dist/templates/components/color-picker/color-picker-texts.ts +57 -0
- package/dist/templates/components/color-picker/color-picker.ts +718 -0
- package/dist/templates/components/color-picker/color.ts +157 -0
- package/dist/templates/components/color-picker/index.ts +3 -0
- package/dist/templates/components/combobox/combobox-texts.ts +70 -0
- package/dist/templates/components/combobox/combobox.ts +798 -0
- package/dist/templates/components/combobox/index.ts +2 -0
- package/dist/templates/components/confirm/confirm-texts.ts +46 -0
- package/dist/templates/components/confirm/confirm.ts +190 -0
- package/dist/templates/components/confirm/index.ts +2 -0
- package/dist/templates/components/context-menu/context-menu.ts +378 -0
- package/dist/templates/components/context-menu/index.ts +14 -0
- package/dist/templates/components/date-picker/date-picker.ts +240 -0
- package/dist/templates/components/date-picker/index.ts +3 -0
- package/dist/templates/components/date-range/date-range.ts +308 -0
- package/dist/templates/components/date-range/index.ts +1 -0
- package/dist/templates/components/dialog/dialog-texts.ts +41 -0
- package/dist/templates/components/dialog/dialog.ts +701 -0
- package/dist/templates/components/dialog/index.ts +18 -0
- package/dist/templates/components/dropdown-menu/dropdown-menu.ts +252 -0
- package/dist/templates/components/dropdown-menu/index.ts +14 -0
- package/dist/templates/components/file-upload/file-upload-texts.ts +77 -0
- package/dist/templates/components/file-upload/file-upload.ts +698 -0
- package/dist/templates/components/file-upload/index.ts +2 -0
- package/dist/templates/components/form-field/form-error.ts +1 -1
- package/dist/templates/components/form-field/form-field.ts +3 -2
- package/dist/templates/components/input/input.variants.ts +6 -4
- package/dist/templates/components/input-mask/index.ts +1 -0
- package/dist/templates/components/input-mask/input-mask.ts +319 -0
- package/dist/templates/components/input-otp/index.ts +1 -0
- package/dist/templates/components/input-otp/input-otp.ts +212 -0
- package/dist/templates/components/menu/index.ts +15 -0
- package/dist/templates/components/menu/menu.ts +656 -0
- package/dist/templates/components/number-input/index.ts +2 -0
- package/dist/templates/components/number-input/number-input-texts.ts +46 -0
- package/dist/templates/components/number-input/number-input.ts +450 -0
- package/dist/templates/components/option-list/index.ts +11 -0
- package/dist/templates/components/option-list/option-list.ts +518 -0
- package/dist/templates/components/pagination/index.ts +2 -0
- package/dist/templates/components/pagination/pagination-page-size.ts +74 -0
- package/dist/templates/components/pagination/pagination-texts.ts +69 -0
- package/dist/templates/components/pagination/pagination.ts +443 -0
- package/dist/templates/components/password/index.ts +2 -0
- package/dist/templates/components/password/password-texts.ts +68 -0
- package/dist/templates/components/password/password.ts +363 -0
- package/dist/templates/components/popover/index.ts +12 -0
- package/dist/templates/components/popover/popover.ts +407 -0
- package/dist/templates/components/progress/index.ts +1 -0
- package/dist/templates/components/progress/progress.ts +217 -0
- package/dist/templates/components/select/index.ts +12 -0
- package/dist/templates/components/select/select-texts.ts +62 -0
- package/dist/templates/components/select/select.ts +1086 -0
- package/dist/templates/components/separator/separator.variants.ts +10 -7
- package/dist/templates/components/skeleton/skeleton.ts +4 -1
- package/dist/templates/components/slider/index.ts +2 -0
- package/dist/templates/components/slider/slider-texts.ts +26 -0
- package/dist/templates/components/slider/slider.ts +425 -0
- package/dist/templates/components/switch/switch.ts +6 -6
- package/dist/templates/components/tabs/index.ts +2 -0
- package/dist/templates/components/tabs/tabs.ts +426 -0
- package/dist/templates/components/tags-input/index.ts +2 -0
- package/dist/templates/components/tags-input/tags-input-texts.ts +44 -0
- package/dist/templates/components/tags-input/tags-input.ts +303 -0
- package/dist/templates/components/textarea/textarea.variants.ts +14 -11
- package/dist/templates/components/toast/index.ts +3 -0
- package/dist/templates/components/toast/toast-config.ts +45 -0
- package/dist/templates/components/toast/toast-texts.ts +46 -0
- package/dist/templates/components/toast/toast.ts +1000 -0
- package/dist/templates/components/toggle-group/index.ts +1 -0
- package/dist/templates/components/toggle-group/toggle-group.ts +406 -0
- package/dist/templates/components/toolbar/index.ts +1 -0
- package/dist/templates/components/toolbar/toolbar.ts +377 -0
- package/dist/templates/components/tooltip/index.ts +7 -0
- package/dist/templates/components/tooltip/tooltip.ts +407 -0
- package/dist/templates/theme/provider.ts +75 -6
- package/dist/templates/theme/theme-base.css +410 -9
- package/dist/templates/theme/types.ts +494 -4
- package/dist/templates/utils/cn.ts +15 -1
- package/dist/templates/utils/control-styles.ts +2 -2
- package/dist/templates/utils/overlay.ts +153 -0
- package/dist/ui/index.js +184 -8
- package/dist/ui/schema.json +100 -0
- package/dist/utils/write-files.js +166 -59
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -46,7 +46,9 @@ ng g mimi # menú para elegir (terminal interactiva)
|
|
|
46
46
|
ng g @mimi-ng/cli:ui button # forma larga (si Mimi no está en schematicCollections)
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
Cada componente se copia a `src/app/components/ui/<nombre>`, con lo que necesite, y se instalan las dependencias que falten.
|
|
49
|
+
Cada componente se copia a `src/app/components/ui/<nombre>`, con lo que necesite, y se instalan las dependencias que falten. Algunos usan por dentro `@angular/cdk` y `@angular/aria`, paquetes oficiales del equipo de Angular: `ng g mimi` los instala cuando hacen falta (aria en la versión exacta de tu cdk) y agrega los estilos del CDK a tu CSS global. Mimi necesita `@angular/cdk` y `@angular/aria` 22.2.4 o posterior (con 22.2.3, Combobox y Select pueden fallar al destruirse): si ya los tienes en una versión anterior, `ng g mimi` te avisa (no los cambia por ti); actualízalos con `ng update @angular/cdk @angular/aria`. Más en [Fundamentos](https://ng.mimiworks.dev/docs/foundations).
|
|
50
|
+
|
|
51
|
+
Después lo importas como cualquier otro:
|
|
50
52
|
|
|
51
53
|
```ts
|
|
52
54
|
import { MimiButton } from '@/components/ui/button';
|
|
@@ -65,13 +67,38 @@ export class App {}
|
|
|
65
67
|
- **Badge**: `ng g mimi badge` · [documentación](https://ng.mimiworks.dev/docs/components/badge)
|
|
66
68
|
- **Button**: `ng g mimi button` · [documentación](https://ng.mimiworks.dev/docs/components/button)
|
|
67
69
|
- **Card**: `ng g mimi card` · [documentación](https://ng.mimiworks.dev/docs/components/card)
|
|
70
|
+
- **Calendar**: `ng g mimi calendar` · [documentación](https://ng.mimiworks.dev/docs/components/date-picker)
|
|
68
71
|
- **Checkbox**: `ng g mimi checkbox` · [documentación](https://ng.mimiworks.dev/docs/components/switch)
|
|
72
|
+
- **Color Picker**: `ng g mimi color-picker` · [documentación](https://ng.mimiworks.dev/docs/components/color-picker)
|
|
73
|
+
- **Combobox**: `ng g mimi combobox` · [documentación](https://ng.mimiworks.dev/docs/components/combobox)
|
|
74
|
+
- **Confirm**: `ng g mimi confirm` · [documentación](https://ng.mimiworks.dev/docs/components/confirm)
|
|
75
|
+
- **Context Menu**: `ng g mimi context-menu` · [documentación](https://ng.mimiworks.dev/docs/components/context-menu)
|
|
76
|
+
- **Date Picker**: `ng g mimi date-picker` · [documentación](https://ng.mimiworks.dev/docs/components/date-picker)
|
|
77
|
+
- **Date Range**: `ng g mimi date-range` · [documentación](https://ng.mimiworks.dev/docs/components/date-range)
|
|
78
|
+
- **Dialog**: `ng g mimi dialog` · [documentación](https://ng.mimiworks.dev/docs/components/dialog)
|
|
79
|
+
- **Dropdown Menu**: `ng g mimi dropdown-menu` · [documentación](https://ng.mimiworks.dev/docs/components/dropdown-menu)
|
|
80
|
+
- **File Upload**: `ng g mimi file-upload` · [documentación](https://ng.mimiworks.dev/docs/components/file-upload)
|
|
69
81
|
- **FormField**: `ng g mimi form-field` · [documentación](https://ng.mimiworks.dev/docs/components/form-field)
|
|
70
82
|
- **Input**: `ng g mimi input` · [documentación](https://ng.mimiworks.dev/docs/components/input)
|
|
83
|
+
- **Input Mask**: `ng g mimi input-mask` · [documentación](https://ng.mimiworks.dev/docs/components/input-mask)
|
|
84
|
+
- **Input OTP**: `ng g mimi input-otp` · [documentación](https://ng.mimiworks.dev/docs/components/input-otp)
|
|
85
|
+
- **Number Input**: `ng g mimi number-input` · [documentación](https://ng.mimiworks.dev/docs/components/number-input)
|
|
86
|
+
- **Pagination**: `ng g mimi pagination` · [documentación](https://ng.mimiworks.dev/docs/components/pagination)
|
|
87
|
+
- **Password**: `ng g mimi password` · [documentación](https://ng.mimiworks.dev/docs/components/password)
|
|
88
|
+
- **Popover**: `ng g mimi popover` · [documentación](https://ng.mimiworks.dev/docs/components/popover)
|
|
89
|
+
- **Progress**: `ng g mimi progress` · [documentación](https://ng.mimiworks.dev/docs/components/progress)
|
|
90
|
+
- **Select**: `ng g mimi select` · [documentación](https://ng.mimiworks.dev/docs/components/select)
|
|
71
91
|
- **Separator**: `ng g mimi separator` · [documentación](https://ng.mimiworks.dev/docs/components/separator)
|
|
72
92
|
- **Skeleton**: `ng g mimi skeleton` · [documentación](https://ng.mimiworks.dev/docs/components/skeleton)
|
|
93
|
+
- **Slider**: `ng g mimi slider` · [documentación](https://ng.mimiworks.dev/docs/components/slider)
|
|
73
94
|
- **Switch**: `ng g mimi switch` · [documentación](https://ng.mimiworks.dev/docs/components/switch)
|
|
95
|
+
- **Tabs**: `ng g mimi tabs` · [documentación](https://ng.mimiworks.dev/docs/components/tabs)
|
|
74
96
|
- **Textarea**: `ng g mimi textarea` · [documentación](https://ng.mimiworks.dev/docs/components/input)
|
|
97
|
+
- **Tags Input**: `ng g mimi tags-input` · [documentación](https://ng.mimiworks.dev/docs/components/tags-input)
|
|
98
|
+
- **Toast**: `ng g mimi toast` · [documentación](https://ng.mimiworks.dev/docs/components/toast)
|
|
99
|
+
- **Toggle Group**: `ng g mimi toggle-group` · [documentación](https://ng.mimiworks.dev/docs/components/toggle-group)
|
|
100
|
+
- **Toolbar**: `ng g mimi toolbar` · [documentación](https://ng.mimiworks.dev/docs/components/toolbar)
|
|
101
|
+
- **Tooltip**: `ng g mimi tooltip` · [documentación](https://ng.mimiworks.dev/docs/components/tooltip)
|
|
75
102
|
|
|
76
103
|
## Tus cambios
|
|
77
104
|
|
package/dist/init/css.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.findTailwindImport = findTailwindImport;
|
|
4
4
|
exports.insertAfterTailwind = insertAfterTailwind;
|
|
5
|
+
exports.insertAfterTheme = insertAfterTheme;
|
|
5
6
|
exports.hasDirective = hasDirective;
|
|
6
7
|
/** `@import "tailwindcss";` o `@import 'tailwindcss' source(none);`, en su propia línea. */
|
|
7
8
|
const TAILWIND_IMPORT = /^[ \t]*@import\s+(["'])tailwindcss\1([^;\n]*);[^\n]*$/m;
|
|
@@ -25,6 +26,22 @@ function insertAfterTailwind(css, lines) {
|
|
|
25
26
|
const insert = lines.map((line) => eol + line).join('');
|
|
26
27
|
return css.slice(0, found.end) + insert + css.slice(found.end);
|
|
27
28
|
}
|
|
29
|
+
/** `@import` del tema de Mimi (`…/theme/theme-base.css`), en su propia línea. */
|
|
30
|
+
const THEME_IMPORT = /^[ \t]*@import\s+(["'])[^"'\n]*theme-base\.css\1[^;\n]*;[^\n]*$/m;
|
|
31
|
+
/**
|
|
32
|
+
* Inserta líneas después del `@import` del tema o, si no está, después del de Tailwind.
|
|
33
|
+
* Devuelve null si no hay ninguno de los dos (no se sabe dónde ponerlas).
|
|
34
|
+
*/
|
|
35
|
+
function insertAfterTheme(css, lines) {
|
|
36
|
+
const theme = THEME_IMPORT.exec(css);
|
|
37
|
+
if (!theme)
|
|
38
|
+
return findTailwindImport(css) ? insertAfterTailwind(css, lines) : null;
|
|
39
|
+
if (lines.length === 0)
|
|
40
|
+
return css;
|
|
41
|
+
const end = theme.index + theme[0].length;
|
|
42
|
+
const eol = eolOf(css);
|
|
43
|
+
return css.slice(0, end) + lines.map((line) => eol + line).join('') + css.slice(end);
|
|
44
|
+
}
|
|
28
45
|
/** ¿Ya hay un `@import` o `@source` con esa ruta (con comillas simples o dobles)? */
|
|
29
46
|
function hasDirective(css, directive, path) {
|
|
30
47
|
const escaped = path.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
package/dist/init/index.js
CHANGED
|
@@ -9,11 +9,10 @@ const registry_1 = require("../registry");
|
|
|
9
9
|
const project_1 = require("../utils/project");
|
|
10
10
|
const write_files_1 = require("../utils/write-files");
|
|
11
11
|
const css_1 = require("./css");
|
|
12
|
+
const items_1 = require("./items");
|
|
12
13
|
const paths_1 = require("./paths");
|
|
13
14
|
/** Alias que usan todos los componentes. Lo configurable es la carpeta a la que apunta. */
|
|
14
15
|
exports.ALIAS = '@/components/ui/*';
|
|
15
|
-
/** Ítems del registro que copia init: el tema y las utilidades base. */
|
|
16
|
-
const INIT_ITEMS = ['theme', 'utils/cn', 'utils/control-styles'];
|
|
17
16
|
/** Paquetes que instala init (versiones del registro). */
|
|
18
17
|
const INIT_PACKAGES = ['clsx', 'tailwind-merge', 'class-variance-authority'];
|
|
19
18
|
const ICONS_PACKAGE = '@lucide/angular';
|
|
@@ -35,7 +34,7 @@ function init(options) {
|
|
|
35
34
|
const report = (0, write_files_1.emptyReport)();
|
|
36
35
|
return (0, schematics_1.chain)([
|
|
37
36
|
(0, write_files_1.writeTemplates)({
|
|
38
|
-
|
|
37
|
+
items: items_1.INIT_ITEMS.flatMap((item) => (0, registry_1.resolveItems)(item)),
|
|
39
38
|
componentsDir: plan.componentsDir,
|
|
40
39
|
overwrite: options.overwrite ?? false,
|
|
41
40
|
version: registry_1.registry.version,
|
|
@@ -219,7 +218,7 @@ function writeMimiConfig(plan) {
|
|
|
219
218
|
if (plan.mimiConfig)
|
|
220
219
|
return;
|
|
221
220
|
const config = {
|
|
222
|
-
style: '
|
|
221
|
+
style: 'mimi',
|
|
223
222
|
tailwind: { css: plan.cssPath },
|
|
224
223
|
aliases: {
|
|
225
224
|
components: plan.componentsDir,
|
|
@@ -270,10 +269,13 @@ function nextSteps(plan, report, icons) {
|
|
|
270
269
|
for (const file of report.overwritten) {
|
|
271
270
|
context.logger.info(`Reemplazado: ${plan.componentsDir}/${file}`);
|
|
272
271
|
}
|
|
273
|
-
const itemOf = (file) => INIT_ITEMS.find((item) => registry_1.registry.items[item].files.includes(file)) ?? file;
|
|
272
|
+
const itemOf = (file) => items_1.INIT_ITEMS.find((item) => registry_1.registry.items[item].files.includes(file)) ?? file;
|
|
274
273
|
for (const message of (0, write_files_1.updatedMessages)(report, itemOf, registry_1.registry.version)) {
|
|
275
274
|
context.logger.info(message);
|
|
276
275
|
}
|
|
276
|
+
for (const message of (0, write_files_1.blockedMessages)(report, plan.componentsDir, registry_1.registry.version)) {
|
|
277
|
+
context.logger.warn(message);
|
|
278
|
+
}
|
|
277
279
|
if (!plan.changed && !(0, write_files_1.hasFileChanges)(report)) {
|
|
278
280
|
context.logger.info('Mimi ya estaba configurado; no hubo cambios.');
|
|
279
281
|
return;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.INIT_ITEMS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Ítems del registro que copia init: el tema y las utilidades base. `ng g mimi` también los
|
|
6
|
+
* revisa (y los actualiza si el usuario no los modificó), para que el tema no quede en una
|
|
7
|
+
* versión anterior a la de los componentes.
|
|
8
|
+
*/
|
|
9
|
+
exports.INIT_ITEMS = ['theme', 'utils/cn', 'utils/control-styles'];
|
package/dist/registry.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.3.0",
|
|
3
3
|
"suggestedDependencies": {
|
|
4
4
|
"@lucide/angular": "^1.47.0"
|
|
5
5
|
},
|
|
@@ -29,6 +29,57 @@
|
|
|
29
29
|
"@angular/forms": "^22.0.0"
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
|
+
"utils/overlay": {
|
|
33
|
+
"type": "util",
|
|
34
|
+
"files": [
|
|
35
|
+
"utils/overlay.ts"
|
|
36
|
+
],
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"@angular/cdk": "^22.2.4"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"menu": {
|
|
42
|
+
"type": "util",
|
|
43
|
+
"files": [
|
|
44
|
+
"components/menu/menu.ts",
|
|
45
|
+
"components/menu/index.ts"
|
|
46
|
+
],
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"@angular/aria": "^22.2.4"
|
|
49
|
+
},
|
|
50
|
+
"registryDependencies": [
|
|
51
|
+
"utils/cn",
|
|
52
|
+
"utils/overlay"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"chip": {
|
|
56
|
+
"type": "util",
|
|
57
|
+
"files": [
|
|
58
|
+
"components/chip/chip.ts",
|
|
59
|
+
"components/chip/chip-texts.ts",
|
|
60
|
+
"components/chip/index.ts"
|
|
61
|
+
],
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"@angular/cdk": "^22.2.4"
|
|
64
|
+
},
|
|
65
|
+
"registryDependencies": [
|
|
66
|
+
"utils/cn",
|
|
67
|
+
"utils/control-styles"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
"option-list": {
|
|
71
|
+
"type": "util",
|
|
72
|
+
"files": [
|
|
73
|
+
"components/option-list/option-list.ts",
|
|
74
|
+
"components/option-list/index.ts"
|
|
75
|
+
],
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"@angular/aria": "^22.2.4"
|
|
78
|
+
},
|
|
79
|
+
"registryDependencies": [
|
|
80
|
+
"utils/cn"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
32
83
|
"theme": {
|
|
33
84
|
"type": "theme",
|
|
34
85
|
"files": [
|
|
@@ -106,6 +157,380 @@
|
|
|
106
157
|
"utils/field-state"
|
|
107
158
|
]
|
|
108
159
|
},
|
|
160
|
+
"confirm": {
|
|
161
|
+
"type": "component",
|
|
162
|
+
"files": [
|
|
163
|
+
"components/confirm/confirm.ts",
|
|
164
|
+
"components/confirm/confirm-texts.ts",
|
|
165
|
+
"components/confirm/index.ts"
|
|
166
|
+
],
|
|
167
|
+
"registryDependencies": [
|
|
168
|
+
"button",
|
|
169
|
+
"dialog",
|
|
170
|
+
"utils/cn"
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
"context-menu": {
|
|
174
|
+
"type": "component",
|
|
175
|
+
"files": [
|
|
176
|
+
"components/context-menu/context-menu.ts",
|
|
177
|
+
"components/context-menu/index.ts"
|
|
178
|
+
],
|
|
179
|
+
"peerDependencies": {
|
|
180
|
+
"@angular/cdk": "^22.2.4"
|
|
181
|
+
},
|
|
182
|
+
"cssImports": [
|
|
183
|
+
"@angular/cdk/overlay-prebuilt.css"
|
|
184
|
+
],
|
|
185
|
+
"registryDependencies": [
|
|
186
|
+
"menu",
|
|
187
|
+
"utils/overlay"
|
|
188
|
+
]
|
|
189
|
+
},
|
|
190
|
+
"dialog": {
|
|
191
|
+
"type": "component",
|
|
192
|
+
"files": [
|
|
193
|
+
"components/dialog/dialog.ts",
|
|
194
|
+
"components/dialog/dialog-texts.ts",
|
|
195
|
+
"components/dialog/index.ts"
|
|
196
|
+
],
|
|
197
|
+
"peerDependencies": {
|
|
198
|
+
"@angular/cdk": "^22.2.4"
|
|
199
|
+
},
|
|
200
|
+
"cssImports": [
|
|
201
|
+
"@angular/cdk/overlay-prebuilt.css"
|
|
202
|
+
],
|
|
203
|
+
"registryDependencies": [
|
|
204
|
+
"utils/cn",
|
|
205
|
+
"utils/control-styles",
|
|
206
|
+
"utils/overlay"
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
"tabs": {
|
|
210
|
+
"type": "component",
|
|
211
|
+
"files": [
|
|
212
|
+
"components/tabs/tabs.ts",
|
|
213
|
+
"components/tabs/index.ts"
|
|
214
|
+
],
|
|
215
|
+
"dependencies": {
|
|
216
|
+
"class-variance-authority": "^0.7.1"
|
|
217
|
+
},
|
|
218
|
+
"peerDependencies": {
|
|
219
|
+
"@angular/aria": "^22.2.4"
|
|
220
|
+
},
|
|
221
|
+
"registryDependencies": [
|
|
222
|
+
"utils/cn",
|
|
223
|
+
"utils/control-styles"
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
"toast": {
|
|
227
|
+
"type": "component",
|
|
228
|
+
"files": [
|
|
229
|
+
"components/toast/toast.ts",
|
|
230
|
+
"components/toast/toast-config.ts",
|
|
231
|
+
"components/toast/toast-texts.ts",
|
|
232
|
+
"components/toast/index.ts"
|
|
233
|
+
],
|
|
234
|
+
"dependencies": {
|
|
235
|
+
"class-variance-authority": "^0.7.1"
|
|
236
|
+
},
|
|
237
|
+
"peerDependencies": {
|
|
238
|
+
"@angular/cdk": "^22.2.4"
|
|
239
|
+
},
|
|
240
|
+
"registryDependencies": [
|
|
241
|
+
"button",
|
|
242
|
+
"utils/cn",
|
|
243
|
+
"utils/control-styles",
|
|
244
|
+
"utils/overlay"
|
|
245
|
+
]
|
|
246
|
+
},
|
|
247
|
+
"pagination": {
|
|
248
|
+
"type": "component",
|
|
249
|
+
"files": [
|
|
250
|
+
"components/pagination/pagination.ts",
|
|
251
|
+
"components/pagination/pagination-page-size.ts",
|
|
252
|
+
"components/pagination/pagination-texts.ts",
|
|
253
|
+
"components/pagination/index.ts"
|
|
254
|
+
],
|
|
255
|
+
"dependencies": {
|
|
256
|
+
"class-variance-authority": "^0.7.1"
|
|
257
|
+
},
|
|
258
|
+
"peerDependencies": {
|
|
259
|
+
"@angular/cdk": "^22.2.4"
|
|
260
|
+
},
|
|
261
|
+
"registryDependencies": [
|
|
262
|
+
"button",
|
|
263
|
+
"input",
|
|
264
|
+
"select",
|
|
265
|
+
"utils/cn"
|
|
266
|
+
]
|
|
267
|
+
},
|
|
268
|
+
"input-mask": {
|
|
269
|
+
"type": "component",
|
|
270
|
+
"files": [
|
|
271
|
+
"components/input-mask/input-mask.ts",
|
|
272
|
+
"components/input-mask/index.ts"
|
|
273
|
+
],
|
|
274
|
+
"peerDependencies": {
|
|
275
|
+
"@angular/forms": "^22.0.0"
|
|
276
|
+
},
|
|
277
|
+
"registryDependencies": [
|
|
278
|
+
"utils/cn",
|
|
279
|
+
"utils/field-state"
|
|
280
|
+
]
|
|
281
|
+
},
|
|
282
|
+
"input-otp": {
|
|
283
|
+
"type": "component",
|
|
284
|
+
"files": [
|
|
285
|
+
"components/input-otp/input-otp.ts",
|
|
286
|
+
"components/input-otp/index.ts"
|
|
287
|
+
],
|
|
288
|
+
"peerDependencies": {
|
|
289
|
+
"@angular/forms": "^22.0.0"
|
|
290
|
+
},
|
|
291
|
+
"registryDependencies": [
|
|
292
|
+
"utils/cn",
|
|
293
|
+
"utils/field-state"
|
|
294
|
+
]
|
|
295
|
+
},
|
|
296
|
+
"number-input": {
|
|
297
|
+
"type": "component",
|
|
298
|
+
"files": [
|
|
299
|
+
"components/number-input/number-input.ts",
|
|
300
|
+
"components/number-input/number-input-texts.ts",
|
|
301
|
+
"components/number-input/index.ts"
|
|
302
|
+
],
|
|
303
|
+
"peerDependencies": {
|
|
304
|
+
"@angular/forms": "^22.0.0"
|
|
305
|
+
},
|
|
306
|
+
"registryDependencies": [
|
|
307
|
+
"utils/cn",
|
|
308
|
+
"utils/field-state"
|
|
309
|
+
]
|
|
310
|
+
},
|
|
311
|
+
"password": {
|
|
312
|
+
"type": "component",
|
|
313
|
+
"files": [
|
|
314
|
+
"components/password/password.ts",
|
|
315
|
+
"components/password/password-texts.ts",
|
|
316
|
+
"components/password/index.ts"
|
|
317
|
+
],
|
|
318
|
+
"peerDependencies": {
|
|
319
|
+
"@angular/cdk": "^22.2.4"
|
|
320
|
+
},
|
|
321
|
+
"registryDependencies": [
|
|
322
|
+
"input",
|
|
323
|
+
"utils/cn",
|
|
324
|
+
"utils/control-styles"
|
|
325
|
+
]
|
|
326
|
+
},
|
|
327
|
+
"progress": {
|
|
328
|
+
"type": "component",
|
|
329
|
+
"files": [
|
|
330
|
+
"components/progress/progress.ts",
|
|
331
|
+
"components/progress/index.ts"
|
|
332
|
+
],
|
|
333
|
+
"registryDependencies": [
|
|
334
|
+
"utils/cn"
|
|
335
|
+
]
|
|
336
|
+
},
|
|
337
|
+
"slider": {
|
|
338
|
+
"type": "component",
|
|
339
|
+
"files": [
|
|
340
|
+
"components/slider/slider.ts",
|
|
341
|
+
"components/slider/slider-texts.ts",
|
|
342
|
+
"components/slider/index.ts"
|
|
343
|
+
],
|
|
344
|
+
"peerDependencies": {
|
|
345
|
+
"@angular/cdk": "^22.2.4",
|
|
346
|
+
"@angular/forms": "^22.0.0"
|
|
347
|
+
},
|
|
348
|
+
"registryDependencies": [
|
|
349
|
+
"utils/cn",
|
|
350
|
+
"utils/control-styles",
|
|
351
|
+
"utils/field-state"
|
|
352
|
+
]
|
|
353
|
+
},
|
|
354
|
+
"combobox": {
|
|
355
|
+
"type": "component",
|
|
356
|
+
"files": [
|
|
357
|
+
"components/combobox/combobox.ts",
|
|
358
|
+
"components/combobox/combobox-texts.ts",
|
|
359
|
+
"components/combobox/index.ts"
|
|
360
|
+
],
|
|
361
|
+
"peerDependencies": {
|
|
362
|
+
"@angular/aria": "^22.2.4",
|
|
363
|
+
"@angular/cdk": "^22.2.4",
|
|
364
|
+
"@angular/forms": "^22.0.0"
|
|
365
|
+
},
|
|
366
|
+
"cssImports": [
|
|
367
|
+
"@angular/cdk/overlay-prebuilt.css"
|
|
368
|
+
],
|
|
369
|
+
"registryDependencies": [
|
|
370
|
+
"chip",
|
|
371
|
+
"option-list",
|
|
372
|
+
"utils/cn",
|
|
373
|
+
"utils/field-state",
|
|
374
|
+
"utils/overlay"
|
|
375
|
+
]
|
|
376
|
+
},
|
|
377
|
+
"calendar": {
|
|
378
|
+
"type": "component",
|
|
379
|
+
"files": [
|
|
380
|
+
"components/calendar/calendar.ts",
|
|
381
|
+
"components/calendar/calendar-texts.ts",
|
|
382
|
+
"components/calendar/dates.ts",
|
|
383
|
+
"components/calendar/index.ts"
|
|
384
|
+
],
|
|
385
|
+
"peerDependencies": {
|
|
386
|
+
"@angular/cdk": "^22.2.4"
|
|
387
|
+
},
|
|
388
|
+
"registryDependencies": [
|
|
389
|
+
"utils/cn",
|
|
390
|
+
"utils/control-styles"
|
|
391
|
+
]
|
|
392
|
+
},
|
|
393
|
+
"date-picker": {
|
|
394
|
+
"type": "component",
|
|
395
|
+
"files": [
|
|
396
|
+
"components/date-picker/date-picker.ts",
|
|
397
|
+
"components/date-picker/index.ts"
|
|
398
|
+
],
|
|
399
|
+
"peerDependencies": {
|
|
400
|
+
"@angular/forms": "^22.0.0"
|
|
401
|
+
},
|
|
402
|
+
"registryDependencies": [
|
|
403
|
+
"calendar",
|
|
404
|
+
"popover",
|
|
405
|
+
"utils/cn",
|
|
406
|
+
"utils/control-styles",
|
|
407
|
+
"utils/field-state"
|
|
408
|
+
]
|
|
409
|
+
},
|
|
410
|
+
"date-range": {
|
|
411
|
+
"type": "component",
|
|
412
|
+
"files": [
|
|
413
|
+
"components/date-range/date-range.ts",
|
|
414
|
+
"components/date-range/index.ts"
|
|
415
|
+
],
|
|
416
|
+
"peerDependencies": {
|
|
417
|
+
"@angular/forms": "^22.0.0"
|
|
418
|
+
},
|
|
419
|
+
"registryDependencies": [
|
|
420
|
+
"calendar",
|
|
421
|
+
"date-picker",
|
|
422
|
+
"popover",
|
|
423
|
+
"utils/cn",
|
|
424
|
+
"utils/control-styles",
|
|
425
|
+
"utils/field-state"
|
|
426
|
+
]
|
|
427
|
+
},
|
|
428
|
+
"file-upload": {
|
|
429
|
+
"type": "component",
|
|
430
|
+
"files": [
|
|
431
|
+
"components/file-upload/file-upload.ts",
|
|
432
|
+
"components/file-upload/file-upload-texts.ts",
|
|
433
|
+
"components/file-upload/index.ts"
|
|
434
|
+
],
|
|
435
|
+
"peerDependencies": {
|
|
436
|
+
"@angular/cdk": "^22.2.4",
|
|
437
|
+
"@angular/forms": "^22.0.0"
|
|
438
|
+
},
|
|
439
|
+
"registryDependencies": [
|
|
440
|
+
"button",
|
|
441
|
+
"progress",
|
|
442
|
+
"utils/cn",
|
|
443
|
+
"utils/control-styles",
|
|
444
|
+
"utils/field-state"
|
|
445
|
+
]
|
|
446
|
+
},
|
|
447
|
+
"color-picker": {
|
|
448
|
+
"type": "component",
|
|
449
|
+
"files": [
|
|
450
|
+
"components/color-picker/color-picker.ts",
|
|
451
|
+
"components/color-picker/color-picker-texts.ts",
|
|
452
|
+
"components/color-picker/color.ts",
|
|
453
|
+
"components/color-picker/index.ts"
|
|
454
|
+
],
|
|
455
|
+
"peerDependencies": {
|
|
456
|
+
"@angular/forms": "^22.0.0"
|
|
457
|
+
},
|
|
458
|
+
"registryDependencies": [
|
|
459
|
+
"input",
|
|
460
|
+
"popover",
|
|
461
|
+
"utils/cn",
|
|
462
|
+
"utils/control-styles",
|
|
463
|
+
"utils/field-state"
|
|
464
|
+
]
|
|
465
|
+
},
|
|
466
|
+
"tags-input": {
|
|
467
|
+
"type": "component",
|
|
468
|
+
"files": [
|
|
469
|
+
"components/tags-input/tags-input.ts",
|
|
470
|
+
"components/tags-input/tags-input-texts.ts",
|
|
471
|
+
"components/tags-input/index.ts"
|
|
472
|
+
],
|
|
473
|
+
"peerDependencies": {
|
|
474
|
+
"@angular/forms": "^22.0.0"
|
|
475
|
+
},
|
|
476
|
+
"registryDependencies": [
|
|
477
|
+
"chip",
|
|
478
|
+
"utils/cn",
|
|
479
|
+
"utils/field-state"
|
|
480
|
+
]
|
|
481
|
+
},
|
|
482
|
+
"toggle-group": {
|
|
483
|
+
"type": "component",
|
|
484
|
+
"files": [
|
|
485
|
+
"components/toggle-group/toggle-group.ts",
|
|
486
|
+
"components/toggle-group/index.ts"
|
|
487
|
+
],
|
|
488
|
+
"dependencies": {
|
|
489
|
+
"class-variance-authority": "^0.7.1"
|
|
490
|
+
},
|
|
491
|
+
"peerDependencies": {
|
|
492
|
+
"@angular/cdk": "^22.2.4",
|
|
493
|
+
"@angular/forms": "^22.0.0"
|
|
494
|
+
},
|
|
495
|
+
"registryDependencies": [
|
|
496
|
+
"utils/cn",
|
|
497
|
+
"utils/control-styles"
|
|
498
|
+
]
|
|
499
|
+
},
|
|
500
|
+
"toolbar": {
|
|
501
|
+
"type": "component",
|
|
502
|
+
"files": [
|
|
503
|
+
"components/toolbar/toolbar.ts",
|
|
504
|
+
"components/toolbar/index.ts"
|
|
505
|
+
],
|
|
506
|
+
"dependencies": {
|
|
507
|
+
"class-variance-authority": "^0.7.1"
|
|
508
|
+
},
|
|
509
|
+
"peerDependencies": {
|
|
510
|
+
"@angular/cdk": "^22.2.4"
|
|
511
|
+
},
|
|
512
|
+
"registryDependencies": [
|
|
513
|
+
"utils/cn",
|
|
514
|
+
"utils/control-styles"
|
|
515
|
+
]
|
|
516
|
+
},
|
|
517
|
+
"dropdown-menu": {
|
|
518
|
+
"type": "component",
|
|
519
|
+
"files": [
|
|
520
|
+
"components/dropdown-menu/dropdown-menu.ts",
|
|
521
|
+
"components/dropdown-menu/index.ts"
|
|
522
|
+
],
|
|
523
|
+
"peerDependencies": {
|
|
524
|
+
"@angular/cdk": "^22.2.4"
|
|
525
|
+
},
|
|
526
|
+
"cssImports": [
|
|
527
|
+
"@angular/cdk/overlay-prebuilt.css"
|
|
528
|
+
],
|
|
529
|
+
"registryDependencies": [
|
|
530
|
+
"menu",
|
|
531
|
+
"utils/overlay"
|
|
532
|
+
]
|
|
533
|
+
},
|
|
109
534
|
"form-field": {
|
|
110
535
|
"type": "component",
|
|
111
536
|
"files": [
|
|
@@ -135,6 +560,45 @@
|
|
|
135
560
|
"utils/field-state"
|
|
136
561
|
]
|
|
137
562
|
},
|
|
563
|
+
"popover": {
|
|
564
|
+
"type": "component",
|
|
565
|
+
"files": [
|
|
566
|
+
"components/popover/popover.ts",
|
|
567
|
+
"components/popover/index.ts"
|
|
568
|
+
],
|
|
569
|
+
"peerDependencies": {
|
|
570
|
+
"@angular/cdk": "^22.2.4"
|
|
571
|
+
},
|
|
572
|
+
"cssImports": [
|
|
573
|
+
"@angular/cdk/overlay-prebuilt.css"
|
|
574
|
+
],
|
|
575
|
+
"registryDependencies": [
|
|
576
|
+
"utils/cn",
|
|
577
|
+
"utils/overlay"
|
|
578
|
+
]
|
|
579
|
+
},
|
|
580
|
+
"select": {
|
|
581
|
+
"type": "component",
|
|
582
|
+
"files": [
|
|
583
|
+
"components/select/select.ts",
|
|
584
|
+
"components/select/select-texts.ts",
|
|
585
|
+
"components/select/index.ts"
|
|
586
|
+
],
|
|
587
|
+
"peerDependencies": {
|
|
588
|
+
"@angular/aria": "^22.2.4",
|
|
589
|
+
"@angular/cdk": "^22.2.4",
|
|
590
|
+
"@angular/forms": "^22.0.0"
|
|
591
|
+
},
|
|
592
|
+
"cssImports": [
|
|
593
|
+
"@angular/cdk/overlay-prebuilt.css"
|
|
594
|
+
],
|
|
595
|
+
"registryDependencies": [
|
|
596
|
+
"utils/cn",
|
|
597
|
+
"utils/control-styles",
|
|
598
|
+
"utils/field-state",
|
|
599
|
+
"utils/overlay"
|
|
600
|
+
]
|
|
601
|
+
},
|
|
138
602
|
"separator": {
|
|
139
603
|
"type": "component",
|
|
140
604
|
"files": [
|
|
@@ -174,6 +638,23 @@
|
|
|
174
638
|
"utils/field-state"
|
|
175
639
|
]
|
|
176
640
|
},
|
|
641
|
+
"tooltip": {
|
|
642
|
+
"type": "component",
|
|
643
|
+
"files": [
|
|
644
|
+
"components/tooltip/tooltip.ts",
|
|
645
|
+
"components/tooltip/index.ts"
|
|
646
|
+
],
|
|
647
|
+
"peerDependencies": {
|
|
648
|
+
"@angular/cdk": "^22.2.4"
|
|
649
|
+
},
|
|
650
|
+
"cssImports": [
|
|
651
|
+
"@angular/cdk/overlay-prebuilt.css"
|
|
652
|
+
],
|
|
653
|
+
"registryDependencies": [
|
|
654
|
+
"utils/cn",
|
|
655
|
+
"utils/overlay"
|
|
656
|
+
]
|
|
657
|
+
},
|
|
177
658
|
"textarea": {
|
|
178
659
|
"type": "component",
|
|
179
660
|
"files": [
|
|
@@ -117,7 +117,7 @@ export class MimiAvatarFallback {
|
|
|
117
117
|
|
|
118
118
|
protected readonly classes = computed(() =>
|
|
119
119
|
cn(
|
|
120
|
-
'flex size-full items-center justify-center rounded-
|
|
120
|
+
'flex size-full items-center justify-center rounded-[var(--mimi-avatar-radius,calc(infinity*1px))] bg-[color:var(--mimi-avatar-bg,var(--mimi-secondary))] font-semibold text-[color:var(--mimi-avatar-fg,var(--mimi-secondary-foreground))]',
|
|
121
121
|
this.userClass(),
|
|
122
122
|
// Al final: con la imagen cargada se oculta aunque el usuario pase `flex`.
|
|
123
123
|
this.avatar.status() === 'loaded' && 'hidden',
|
|
@@ -6,13 +6,13 @@ import { cva, type VariantProps } from 'class-variance-authority';
|
|
|
6
6
|
* default 40px / 14px, lg 56px / 18px (el tamaño de letra lo heredan las iniciales).
|
|
7
7
|
*/
|
|
8
8
|
export const avatarVariants = cva(
|
|
9
|
-
'relative inline-flex shrink-0 overflow-hidden rounded-
|
|
9
|
+
'relative inline-flex shrink-0 overflow-hidden rounded-[var(--mimi-avatar-radius,calc(infinity*1px))] bg-muted select-none',
|
|
10
10
|
{
|
|
11
11
|
variants: {
|
|
12
12
|
size: {
|
|
13
|
-
sm: 'size-
|
|
14
|
-
default: 'size-
|
|
15
|
-
lg: 'size-
|
|
13
|
+
sm: 'size-[var(--mimi-avatar-size-sm,2rem)] text-xs',
|
|
14
|
+
default: 'size-[var(--mimi-avatar-size,2.5rem)] text-sm',
|
|
15
|
+
lg: 'size-[var(--mimi-avatar-size-lg,3.5rem)] text-lg',
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
18
|
defaultVariants: { size: 'default' },
|