@moni-labs/moni-ui 0.3.0 → 0.3.2
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/custom-elements.json +5230 -1007
- package/dist/components/_base/moni-element.d.ts +16 -9
- package/dist/components/_base/moni-element.d.ts.map +1 -1
- package/dist/components/_base/moni-element.js +63 -9
- package/dist/components/index.js +2 -2
- package/dist/components/loading-shapes.d.ts +19 -0
- package/dist/components/loading-shapes.d.ts.map +1 -1
- package/dist/components/loading-shapes.js +19 -0
- package/dist/components/moni-app-bar.d.ts +72 -62
- package/dist/components/moni-app-bar.d.ts.map +1 -1
- package/dist/components/moni-app-bar.js +72 -62
- package/dist/components/moni-badge.d.ts +64 -65
- package/dist/components/moni-badge.d.ts.map +1 -1
- package/dist/components/moni-badge.js +64 -66
- package/dist/components/moni-bottom-sheet.d.ts +129 -61
- package/dist/components/moni-bottom-sheet.d.ts.map +1 -1
- package/dist/components/moni-bottom-sheet.js +217 -131
- package/dist/components/moni-button-group.d.ts +107 -29
- package/dist/components/moni-button-group.d.ts.map +1 -1
- package/dist/components/moni-button-group.js +107 -29
- package/dist/components/moni-button-segment.d.ts +53 -12
- package/dist/components/moni-button-segment.d.ts.map +1 -1
- package/dist/components/moni-button-segment.js +53 -12
- package/dist/components/moni-button.d.ts +116 -38
- package/dist/components/moni-button.d.ts.map +1 -1
- package/dist/components/moni-button.js +128 -38
- package/dist/components/moni-card.d.ts +68 -50
- package/dist/components/moni-card.d.ts.map +1 -1
- package/dist/components/moni-card.js +68 -50
- package/dist/components/moni-carousel.d.ts +484 -53
- package/dist/components/moni-carousel.d.ts.map +1 -1
- package/dist/components/moni-carousel.js +1024 -245
- package/dist/components/moni-checkbox.d.ts +49 -46
- package/dist/components/moni-checkbox.d.ts.map +1 -1
- package/dist/components/moni-checkbox.js +55 -48
- package/dist/components/moni-chip.d.ts +100 -33
- package/dist/components/moni-chip.d.ts.map +1 -1
- package/dist/components/moni-chip.js +104 -34
- package/dist/components/moni-color-field.d.ts +99 -24
- package/dist/components/moni-color-field.d.ts.map +1 -1
- package/dist/components/moni-color-field.js +99 -24
- package/dist/components/moni-context-menu.d.ts +72 -26
- package/dist/components/moni-context-menu.d.ts.map +1 -1
- package/dist/components/moni-context-menu.js +76 -30
- package/dist/components/moni-dialog.d.ts +84 -59
- package/dist/components/moni-dialog.d.ts.map +1 -1
- package/dist/components/moni-dialog.js +105 -58
- package/dist/components/moni-divider.d.ts +39 -27
- package/dist/components/moni-divider.d.ts.map +1 -1
- package/dist/components/moni-divider.js +42 -30
- package/dist/components/moni-expansion.d.ts +32 -22
- package/dist/components/moni-expansion.d.ts.map +1 -1
- package/dist/components/moni-expansion.js +32 -22
- package/dist/components/moni-fab-menu.d.ts +61 -23
- package/dist/components/moni-fab-menu.d.ts.map +1 -1
- package/dist/components/moni-fab-menu.js +69 -31
- package/dist/components/moni-fab.d.ts +86 -28
- package/dist/components/moni-fab.d.ts.map +1 -1
- package/dist/components/moni-fab.js +92 -34
- package/dist/components/moni-file-field.d.ts +118 -30
- package/dist/components/moni-file-field.d.ts.map +1 -1
- package/dist/components/moni-file-field.js +118 -30
- package/dist/components/moni-icon.d.ts +40 -35
- package/dist/components/moni-icon.d.ts.map +1 -1
- package/dist/components/moni-icon.js +43 -38
- package/dist/components/moni-list-item.d.ts +46 -33
- package/dist/components/moni-list-item.d.ts.map +1 -1
- package/dist/components/moni-list-item.js +61 -41
- package/dist/components/moni-list.d.ts +30 -20
- package/dist/components/moni-list.d.ts.map +1 -1
- package/dist/components/moni-list.js +36 -21
- package/dist/components/moni-loading-indicator.d.ts +54 -22
- package/dist/components/moni-loading-indicator.d.ts.map +1 -1
- package/dist/components/moni-loading-indicator.js +54 -22
- package/dist/components/moni-menu-item.d.ts +23 -16
- package/dist/components/moni-menu-item.d.ts.map +1 -1
- package/dist/components/moni-menu-item.js +23 -16
- package/dist/components/moni-menu.d.ts +81 -28
- package/dist/components/moni-menu.d.ts.map +1 -1
- package/dist/components/moni-menu.js +81 -30
- package/dist/components/moni-morph-modal.d.ts +141 -0
- package/dist/components/moni-morph-modal.d.ts.map +1 -1
- package/dist/components/moni-morph-modal.js +295 -58
- package/dist/components/moni-nav-item.d.ts +59 -29
- package/dist/components/moni-nav-item.d.ts.map +1 -1
- package/dist/components/moni-nav-item.js +59 -29
- package/dist/components/moni-nav.d.ts +94 -35
- package/dist/components/moni-nav.d.ts.map +1 -1
- package/dist/components/moni-nav.js +94 -35
- package/dist/components/moni-progress.d.ts +99 -55
- package/dist/components/moni-progress.d.ts.map +1 -1
- package/dist/components/moni-progress.js +99 -55
- package/dist/components/moni-radio.d.ts +62 -50
- package/dist/components/moni-radio.d.ts.map +1 -1
- package/dist/components/moni-radio.js +65 -52
- package/dist/components/moni-ripple.d.ts +74 -59
- package/dist/components/moni-ripple.d.ts.map +1 -1
- package/dist/components/moni-ripple.js +74 -59
- package/dist/components/moni-segmented-button.d.ts +91 -16
- package/dist/components/moni-segmented-button.d.ts.map +1 -1
- package/dist/components/moni-segmented-button.js +94 -17
- package/dist/components/moni-select-option.d.ts +30 -23
- package/dist/components/moni-select-option.d.ts.map +1 -1
- package/dist/components/moni-select-option.js +30 -23
- package/dist/components/moni-select.d.ts +300 -35
- package/dist/components/moni-select.d.ts.map +1 -1
- package/dist/components/moni-select.js +323 -39
- package/dist/components/moni-side-sheet.d.ts +94 -32
- package/dist/components/moni-side-sheet.d.ts.map +1 -1
- package/dist/components/moni-side-sheet.js +94 -32
- package/dist/components/moni-slider.d.ts +152 -41
- package/dist/components/moni-slider.d.ts.map +1 -1
- package/dist/components/moni-slider.js +154 -42
- package/dist/components/moni-snackbar.d.ts +53 -43
- package/dist/components/moni-snackbar.d.ts.map +1 -1
- package/dist/components/moni-snackbar.js +53 -43
- package/dist/components/moni-split-button.d.ts +63 -18
- package/dist/components/moni-split-button.d.ts.map +1 -1
- package/dist/components/moni-split-button.js +63 -18
- package/dist/components/moni-step.d.ts +36 -24
- package/dist/components/moni-step.d.ts.map +1 -1
- package/dist/components/moni-step.js +41 -29
- package/dist/components/moni-stepper.d.ts +64 -27
- package/dist/components/moni-stepper.d.ts.map +1 -1
- package/dist/components/moni-stepper.js +72 -34
- package/dist/components/moni-switch.d.ts +57 -46
- package/dist/components/moni-switch.d.ts.map +1 -1
- package/dist/components/moni-switch.js +59 -47
- package/dist/components/moni-tab.d.ts +26 -18
- package/dist/components/moni-tab.d.ts.map +1 -1
- package/dist/components/moni-tab.js +29 -21
- package/dist/components/moni-tabs.d.ts +34 -28
- package/dist/components/moni-tabs.d.ts.map +1 -1
- package/dist/components/moni-tabs.js +34 -28
- package/dist/components/moni-text-field.d.ts +139 -29
- package/dist/components/moni-text-field.d.ts.map +1 -1
- package/dist/components/moni-text-field.js +157 -31
- package/dist/components/moni-textarea.d.ts +127 -29
- package/dist/components/moni-textarea.d.ts.map +1 -1
- package/dist/components/moni-textarea.js +131 -32
- package/dist/components/moni-time-picker.d.ts +114 -24
- package/dist/components/moni-time-picker.d.ts.map +1 -1
- package/dist/components/moni-time-picker.js +127 -33
- package/dist/components/moni-toolbar.d.ts +37 -23
- package/dist/components/moni-toolbar.d.ts.map +1 -1
- package/dist/components/moni-toolbar.js +37 -23
- package/dist/components/moni-tooltip.d.ts +100 -36
- package/dist/components/moni-tooltip.d.ts.map +1 -1
- package/dist/components/moni-tooltip.js +104 -40
- package/dist/components/moni-typography.d.ts +68 -30
- package/dist/components/moni-typography.d.ts.map +1 -1
- package/dist/components/moni-typography.js +70 -32
- package/dist/styles/tokens.css +7 -7
- package/dist/types/events.d.ts +17 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +1 -0
- package/dist/utils/event-emitter.d.ts +13 -0
- package/dist/utils/event-emitter.d.ts.map +1 -0
- package/dist/utils/event-emitter.js +13 -0
- package/package.json +2 -1
- package/src/components/_base/moni-element.ts +73 -9
- package/src/components/index.ts +2 -2
- package/src/components/loading-shapes.ts +19 -0
- package/src/components/moni-app-bar.test.ts +10 -10
- package/src/components/moni-app-bar.ts +72 -62
- package/src/components/moni-badge.ts +64 -66
- package/src/components/moni-bottom-sheet.test.ts +39 -45
- package/src/components/moni-bottom-sheet.ts +222 -131
- package/src/components/moni-button-group.test.ts +14 -14
- package/src/components/moni-button-group.ts +107 -29
- package/src/components/moni-button-segment.ts +53 -12
- package/src/components/moni-button.test.ts +28 -26
- package/src/components/moni-button.ts +139 -39
- package/src/components/moni-card.test.ts +6 -6
- package/src/components/moni-card.ts +70 -50
- package/src/components/moni-carousel.test.ts +12 -12
- package/src/components/moni-carousel.ts +1129 -269
- package/src/components/moni-checkbox.test.ts +7 -7
- package/src/components/moni-checkbox.ts +62 -48
- package/src/components/moni-chip.test.ts +17 -17
- package/src/components/moni-chip.ts +112 -34
- package/src/components/moni-color-field.test.ts +5 -5
- package/src/components/moni-color-field.ts +108 -24
- package/src/components/moni-context-menu.test.ts +11 -11
- package/src/components/moni-context-menu.ts +76 -30
- package/src/components/moni-dialog.ts +108 -59
- package/src/components/moni-divider.test.ts +4 -4
- package/src/components/moni-divider.ts +42 -30
- package/src/components/moni-expansion.ts +32 -22
- package/src/components/moni-fab-menu.test.ts +11 -11
- package/src/components/moni-fab-menu.ts +69 -31
- package/src/components/moni-fab.test.ts +16 -16
- package/src/components/moni-fab.ts +100 -34
- package/src/components/moni-file-field.test.ts +8 -8
- package/src/components/moni-file-field.ts +132 -30
- package/src/components/moni-icon.test.ts +11 -11
- package/src/components/moni-icon.ts +43 -38
- package/src/components/moni-list-item.test.ts +10 -10
- package/src/components/moni-list-item.ts +61 -41
- package/src/components/moni-list.ts +37 -21
- package/src/components/moni-loading-indicator.test.ts +3 -3
- package/src/components/moni-loading-indicator.ts +54 -22
- package/src/components/moni-menu-item.ts +23 -16
- package/src/components/moni-menu.test.ts +7 -7
- package/src/components/moni-menu.ts +87 -30
- package/src/components/moni-morph-modal.test.ts +18 -17
- package/src/components/moni-morph-modal.ts +327 -60
- package/src/components/moni-nav-item.ts +59 -29
- package/src/components/moni-nav.test.ts +11 -11
- package/src/components/moni-nav.ts +94 -35
- package/src/components/moni-progress.test.ts +9 -9
- package/src/components/moni-progress.ts +100 -56
- package/src/components/moni-radio.test.ts +8 -8
- package/src/components/moni-radio.ts +71 -51
- package/src/components/moni-ripple.ts +74 -59
- package/src/components/moni-segmented-button.test.ts +4 -4
- package/src/components/moni-segmented-button.ts +94 -17
- package/src/components/moni-select-option.ts +30 -23
- package/src/components/moni-select.test.ts +11 -11
- package/src/components/moni-select.ts +361 -50
- package/src/components/moni-side-sheet.test.ts +7 -7
- package/src/components/moni-side-sheet.ts +94 -32
- package/src/components/moni-slider.test.ts +7 -7
- package/src/components/moni-slider.ts +165 -42
- package/src/components/moni-snackbar.test.ts +8 -8
- package/src/components/moni-snackbar.ts +53 -43
- package/src/components/moni-split-button.ts +63 -18
- package/src/components/moni-step.test.ts +7 -7
- package/src/components/moni-step.ts +41 -29
- package/src/components/moni-stepper.test.ts +7 -7
- package/src/components/moni-stepper.ts +72 -34
- package/src/components/moni-switch.test.ts +12 -12
- package/src/components/moni-switch.ts +66 -47
- package/src/components/moni-tab.test.ts +5 -5
- package/src/components/moni-tab.ts +29 -21
- package/src/components/moni-tabs.ts +34 -28
- package/src/components/moni-text-field.test.ts +13 -13
- package/src/components/moni-text-field.ts +181 -30
- package/src/components/moni-textarea.test.ts +17 -17
- package/src/components/moni-textarea.ts +155 -31
- package/src/components/moni-time-picker.test.ts +5 -5
- package/src/components/moni-time-picker.ts +128 -33
- package/src/components/moni-toolbar.test.ts +8 -8
- package/src/components/moni-toolbar.ts +37 -23
- package/src/components/moni-tooltip.test.ts +15 -15
- package/src/components/moni-tooltip.ts +107 -40
- package/src/components/moni-typography.test.ts +10 -10
- package/src/components/moni-typography.ts +73 -32
- package/src/styles/tokens.css +7 -7
- package/src/types/events.ts +17 -0
- package/src/utils/event-emitter.ts +26 -0
|
@@ -11,59 +11,81 @@ import { unsafeStatic, html as staticHtml } from 'lit/static-html.js';
|
|
|
11
11
|
import { MoniElement, sharedStyles } from './_base/index.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* Material Design 3 Typography
|
|
14
|
+
* Componente Material Design 3 Typography (Tipografía).
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* Un componente de texto especializado que aplica la escala tipográfica M3. Asegura
|
|
17
|
+
* que la tipografía sea consistente, accesible y correctamente estilizada en toda la
|
|
18
|
+
* aplicación sin requerir clases CSS manuales.
|
|
19
19
|
*
|
|
20
|
-
* **
|
|
20
|
+
* **Categorías de Escala Tipográfica:**
|
|
21
|
+
* - `display`: El texto más grande en la pantalla, reservado para texto corto e importante
|
|
22
|
+
* o números. Funciona mejor en pantallas grandes. (Renderiza `<h1>` por defecto).
|
|
23
|
+
* - `headline`: Texto de alto énfasis para encabezados primarios de página/sección.
|
|
24
|
+
* (Renderiza `<h2>` por defecto).
|
|
25
|
+
* - `title`: Texto de énfasis medio utilizado para encabezados de diálogos o títulos
|
|
26
|
+
* de sección más pequeños. (Renderiza `<h3>` por defecto).
|
|
27
|
+
* - `body`: Texto de párrafo estándar utilizado para contenido largo.
|
|
28
|
+
* (Renderiza `<p>` por defecto).
|
|
29
|
+
* - `label`: Texto pequeño y utilitario usado para botones, leyendas y elementos
|
|
30
|
+
* de formulario. (Renderiza `<label>` por defecto).
|
|
21
31
|
*
|
|
22
|
-
*
|
|
23
|
-
* - `display`: The largest text on the screen, reserved for short, important
|
|
24
|
-
* text or numerals. Works best on large screens. (Renders `<h1>` by default).
|
|
25
|
-
* - `headline`: High-emphasis text for primary page/section headers.
|
|
26
|
-
* (Renders `<h2>` by default).
|
|
27
|
-
* - `title`: Medium-emphasis text used for dialog headers or smaller section
|
|
28
|
-
* titles. (Renders `<h3>` by default).
|
|
29
|
-
* - `body`: Standard paragraph text used for long-form content.
|
|
30
|
-
* (Renders `<p>` by default).
|
|
31
|
-
* - `label`: Small, utilitarian text used for buttons, captions, and form
|
|
32
|
-
* elements. (Renders `<label>` by default).
|
|
32
|
+
* Cada categoría soporta tres tamaños: `large`, `medium` y `small`.
|
|
33
33
|
*
|
|
34
|
-
*
|
|
34
|
+
* **Etiquetas Semánticas:**
|
|
35
|
+
* El componente selecciona automáticamente una etiqueta semántica HTML apropiada basada en
|
|
36
|
+
* la variante. Puedes sobrescribir esto explícitamente configurando el atributo `as`
|
|
37
|
+
* (ej., para renderizar un estilo `headline` pero usando una etiqueta `<span>` por razones
|
|
38
|
+
* de SEO o estructurales).
|
|
35
39
|
*
|
|
36
|
-
*
|
|
37
|
-
* The component automatically selects an appropriate HTML semantic tag based on
|
|
38
|
-
* the variant. You can explicitly override this by setting the `as` attribute
|
|
39
|
-
* (e.g., to render a `headline` style but using a `<span>` tag for SEO or
|
|
40
|
-
* structural reasons).
|
|
40
|
+
* @element moni-typography
|
|
41
41
|
*
|
|
42
42
|
* @example
|
|
43
43
|
* ```html
|
|
44
|
-
* <!--
|
|
45
|
-
* <moni-typography variant="display" size="large">
|
|
44
|
+
* <!-- Renderiza un <h1> con estilos display-large -->
|
|
45
|
+
* <moni-typography variant="display" size="large">Texto Héroe</moni-typography>
|
|
46
46
|
*
|
|
47
|
-
* <!--
|
|
48
|
-
* <moni-typography variant="body">
|
|
47
|
+
* <!-- Renderiza un <p> con estilos body-medium -->
|
|
48
|
+
* <moni-typography variant="body">Texto de párrafo estándar.</moni-typography>
|
|
49
49
|
*
|
|
50
|
-
* <!--
|
|
51
|
-
* <moni-typography variant="title" as="span">
|
|
50
|
+
* <!-- Sobrescribiendo la etiqueta semántica -->
|
|
51
|
+
* <moni-typography variant="title" as="span">Título en línea</moni-typography>
|
|
52
52
|
* ```
|
|
53
53
|
*
|
|
54
|
-
* @slot default -
|
|
54
|
+
* @slot default - El contenido de texto a mostrar.
|
|
55
|
+
* @csspart text - El elemento semántico interno (ej., h1, p, span) que envuelve el texto.
|
|
55
56
|
*/
|
|
56
57
|
@customElement('moni-typography')
|
|
57
58
|
export class MoniTypography extends MoniElement {
|
|
59
|
+
/**
|
|
60
|
+
* La categoría de la escala tipográfica M3 a aplicar.
|
|
61
|
+
* Dicta la lógica base de font-family, line-height, weight, y letter-spacing.
|
|
62
|
+
* @type {'display' | 'headline' | 'title' | 'body' | 'label'}
|
|
63
|
+
*/
|
|
58
64
|
@property({ reflect: true })
|
|
59
65
|
variant: 'display' | 'headline' | 'title' | 'body' | 'label' = 'body';
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* El tamaño dentro de la categoría de variante elegida.
|
|
69
|
+
* @type {'large' | 'medium' | 'small'}
|
|
70
|
+
*/
|
|
60
71
|
@property({ reflect: true })
|
|
61
72
|
size: 'large' | 'medium' | 'small' = 'medium';
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Sobrescribe la etiqueta semántica HTML por defecto (ej. 'h1', 'p', 'span')
|
|
76
|
+
* que se asigna automáticamente basándose en la variante (`variant`).
|
|
77
|
+
* @type {string | null}
|
|
78
|
+
*/
|
|
62
79
|
@property({ reflect: true })
|
|
63
80
|
as: string | null = null;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Contenido de texto simple opcional. Típicamente usarías el slot por defecto en su lugar.
|
|
84
|
+
* @type {string}
|
|
85
|
+
*/
|
|
64
86
|
@property({ reflect: true }) text = '';
|
|
65
87
|
|
|
66
|
-
/**
|
|
88
|
+
/** Etiqueta semántica por defecto para cada variante según la especificación M3. */
|
|
67
89
|
private static _tagFor(
|
|
68
90
|
variant: 'display' | 'headline' | 'title' | 'body' | 'label'
|
|
69
91
|
): string {
|
|
@@ -81,11 +103,30 @@ export class MoniTypography extends MoniElement {
|
|
|
81
103
|
}
|
|
82
104
|
}
|
|
83
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Renderiza el elemento tipográfico con una etiqueta HTML seleccionada dinámicamente.
|
|
108
|
+
*
|
|
109
|
+
* **Selección dinámica de etiquetas:**
|
|
110
|
+
* `_tagFor(variant)` infiere el elemento HTML semántico de la variante de tipografía
|
|
111
|
+
* (ej. `'display-large'` → `<h1>`, `'body-medium'` → `<p>`).
|
|
112
|
+
* El atributo `as` sobrescribe esta inferencia para contextos semánticos personalizados
|
|
113
|
+
* (ej. usar `as="div"` cuando la tipografía está dentro de un `<dl>`).
|
|
114
|
+
*
|
|
115
|
+
* **¿Por qué `staticHtml` + `unsafeStatic`?**
|
|
116
|
+
* Lit 3 no permite expresiones dinámicas en posiciones de nombres de etiquetas
|
|
117
|
+
* (`<${tag}>` lanzaría un error de plantilla). `staticHtml` es un template tag
|
|
118
|
+
* provisto por Lit que sí permite la interpolación estática de etiquetas, y `unsafeStatic`
|
|
119
|
+
* envuelve el string para marcarlo como de confianza (sin riesgo XSS ya que `tag` proviene de
|
|
120
|
+
* un enum controlado vía `_tagFor()`).
|
|
121
|
+
*
|
|
122
|
+
* El string `cls` (`variant + size`) mapea directamente a clases de utilidad
|
|
123
|
+
* de tipografía (ej. `'display large'`).
|
|
124
|
+
*/
|
|
84
125
|
override render() {
|
|
85
126
|
const cls = `${this.variant} ${this.size}`;
|
|
86
127
|
const tag = this.as ?? MoniTypography._tagFor(this.variant);
|
|
87
|
-
//
|
|
88
|
-
// "Bindings in tag names are not supported"
|
|
128
|
+
// Renderiza la etiqueta dinámica con `unsafeStatic` para evitar el error
|
|
129
|
+
// "Bindings in tag names are not supported" de lit 3.
|
|
89
130
|
const tagStatic = unsafeStatic(tag);
|
|
90
131
|
return staticHtml`<${tagStatic}
|
|
91
132
|
class=${cls}
|
package/src/styles/tokens.css
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
--radius-full: 9999px;
|
|
95
95
|
|
|
96
96
|
/* ─── Card radius (overridable per card via --moni-radius-card) ─── */
|
|
97
|
-
--radius-card: var(--moni-radius-card,
|
|
97
|
+
--radius-card: var(--moni-radius-card, 1.5rem);
|
|
98
98
|
|
|
99
99
|
/* ─── List dividers (overridable per list via --moni-list-divider) ─── */
|
|
100
100
|
--moni-list-divider: var(--moni-list-divider-fallback, 0);
|
|
@@ -120,12 +120,12 @@
|
|
|
120
120
|
--duration-emphasized: 500ms;
|
|
121
121
|
--duration-long: 800ms;
|
|
122
122
|
|
|
123
|
-
/* ─── Elevación / sombras M3 ─── */
|
|
124
|
-
--shadow-1:
|
|
125
|
-
--shadow-2:
|
|
126
|
-
--shadow-3:
|
|
127
|
-
--shadow-4:
|
|
128
|
-
--shadow-5:
|
|
123
|
+
/* ─── Elevación / sombras M3 & Minimalist ─── */
|
|
124
|
+
--shadow-1: 0 1px 2px 0 rgba(0, 0, 0, 0.04);
|
|
125
|
+
--shadow-2: 0 2px 4px -1px rgba(0, 0, 0, 0.04), 0 1px 2px -1px rgba(0, 0, 0, 0.02);
|
|
126
|
+
--shadow-3: 0 4px 8px -2px rgba(0, 0, 0, 0.04), 0 2px 4px -2px rgba(0, 0, 0, 0.02);
|
|
127
|
+
--shadow-4: 0 8px 16px -4px rgba(0, 0, 0, 0.04), 0 4px 8px -4px rgba(0, 0, 0, 0.02);
|
|
128
|
+
--shadow-5: 0 12px 24px -8px rgba(0, 0, 0, 0.05), 0 8px 16px -8px rgba(0, 0, 0, 0.03);
|
|
129
129
|
|
|
130
130
|
/* ─── Grain opacity ─── */
|
|
131
131
|
--moni-grain-opacity: var(--moni-grain-opacity, 0.03);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface MoniEventDetail<T = unknown> {
|
|
2
|
+
value?: T;
|
|
3
|
+
/** Índice del elemento (para listas/colecciones) */
|
|
4
|
+
index?: number;
|
|
5
|
+
/** Elementos múltiples (para slots o selecciones múltiples) */
|
|
6
|
+
items?: any[];
|
|
7
|
+
/** Nodos del DOM asociados (para slots) */
|
|
8
|
+
nodes?: Node[];
|
|
9
|
+
/** Evento nativo original que disparó la acción */
|
|
10
|
+
originalEvent?: Event;
|
|
11
|
+
/** El elemento asociado al evento */
|
|
12
|
+
item?: T;
|
|
13
|
+
/** Referencia física al DOM node */
|
|
14
|
+
card?: HTMLElement | null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type MoniEvent<T = unknown> = CustomEvent<MoniEventDetail<T>>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { MoniEventDetail } from '../types/events';
|
|
2
|
+
|
|
3
|
+
export interface EventEmitterOptions<T> {
|
|
4
|
+
detail?: MoniEventDetail<T>;
|
|
5
|
+
bubbles?: boolean; // Default: true
|
|
6
|
+
composed?: boolean; // Default: true
|
|
7
|
+
cancelable?: boolean; // Default: false
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Helper para emitir Custom Events estandarizados en la librería moni-ui.
|
|
12
|
+
* Asegura que los eventos crucen el Shadow DOM por defecto y unifican el `detail`.
|
|
13
|
+
*/
|
|
14
|
+
export function emitMoniEvent<T>(
|
|
15
|
+
element: HTMLElement,
|
|
16
|
+
eventName: string,
|
|
17
|
+
options?: EventEmitterOptions<T>
|
|
18
|
+
): boolean {
|
|
19
|
+
const event = new CustomEvent(eventName, {
|
|
20
|
+
bubbles: options?.bubbles ?? true,
|
|
21
|
+
composed: options?.composed ?? true,
|
|
22
|
+
cancelable: options?.cancelable ?? false,
|
|
23
|
+
detail: options?.detail ?? {},
|
|
24
|
+
});
|
|
25
|
+
return element.dispatchEvent(event);
|
|
26
|
+
}
|