@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.
Files changed (251) hide show
  1. package/custom-elements.json +5230 -1007
  2. package/dist/components/_base/moni-element.d.ts +16 -9
  3. package/dist/components/_base/moni-element.d.ts.map +1 -1
  4. package/dist/components/_base/moni-element.js +63 -9
  5. package/dist/components/index.js +2 -2
  6. package/dist/components/loading-shapes.d.ts +19 -0
  7. package/dist/components/loading-shapes.d.ts.map +1 -1
  8. package/dist/components/loading-shapes.js +19 -0
  9. package/dist/components/moni-app-bar.d.ts +72 -62
  10. package/dist/components/moni-app-bar.d.ts.map +1 -1
  11. package/dist/components/moni-app-bar.js +72 -62
  12. package/dist/components/moni-badge.d.ts +64 -65
  13. package/dist/components/moni-badge.d.ts.map +1 -1
  14. package/dist/components/moni-badge.js +64 -66
  15. package/dist/components/moni-bottom-sheet.d.ts +129 -61
  16. package/dist/components/moni-bottom-sheet.d.ts.map +1 -1
  17. package/dist/components/moni-bottom-sheet.js +217 -131
  18. package/dist/components/moni-button-group.d.ts +107 -29
  19. package/dist/components/moni-button-group.d.ts.map +1 -1
  20. package/dist/components/moni-button-group.js +107 -29
  21. package/dist/components/moni-button-segment.d.ts +53 -12
  22. package/dist/components/moni-button-segment.d.ts.map +1 -1
  23. package/dist/components/moni-button-segment.js +53 -12
  24. package/dist/components/moni-button.d.ts +116 -38
  25. package/dist/components/moni-button.d.ts.map +1 -1
  26. package/dist/components/moni-button.js +128 -38
  27. package/dist/components/moni-card.d.ts +68 -50
  28. package/dist/components/moni-card.d.ts.map +1 -1
  29. package/dist/components/moni-card.js +68 -50
  30. package/dist/components/moni-carousel.d.ts +484 -53
  31. package/dist/components/moni-carousel.d.ts.map +1 -1
  32. package/dist/components/moni-carousel.js +1024 -245
  33. package/dist/components/moni-checkbox.d.ts +49 -46
  34. package/dist/components/moni-checkbox.d.ts.map +1 -1
  35. package/dist/components/moni-checkbox.js +55 -48
  36. package/dist/components/moni-chip.d.ts +100 -33
  37. package/dist/components/moni-chip.d.ts.map +1 -1
  38. package/dist/components/moni-chip.js +104 -34
  39. package/dist/components/moni-color-field.d.ts +99 -24
  40. package/dist/components/moni-color-field.d.ts.map +1 -1
  41. package/dist/components/moni-color-field.js +99 -24
  42. package/dist/components/moni-context-menu.d.ts +72 -26
  43. package/dist/components/moni-context-menu.d.ts.map +1 -1
  44. package/dist/components/moni-context-menu.js +76 -30
  45. package/dist/components/moni-dialog.d.ts +84 -59
  46. package/dist/components/moni-dialog.d.ts.map +1 -1
  47. package/dist/components/moni-dialog.js +105 -58
  48. package/dist/components/moni-divider.d.ts +39 -27
  49. package/dist/components/moni-divider.d.ts.map +1 -1
  50. package/dist/components/moni-divider.js +42 -30
  51. package/dist/components/moni-expansion.d.ts +32 -22
  52. package/dist/components/moni-expansion.d.ts.map +1 -1
  53. package/dist/components/moni-expansion.js +32 -22
  54. package/dist/components/moni-fab-menu.d.ts +61 -23
  55. package/dist/components/moni-fab-menu.d.ts.map +1 -1
  56. package/dist/components/moni-fab-menu.js +69 -31
  57. package/dist/components/moni-fab.d.ts +86 -28
  58. package/dist/components/moni-fab.d.ts.map +1 -1
  59. package/dist/components/moni-fab.js +92 -34
  60. package/dist/components/moni-file-field.d.ts +118 -30
  61. package/dist/components/moni-file-field.d.ts.map +1 -1
  62. package/dist/components/moni-file-field.js +118 -30
  63. package/dist/components/moni-icon.d.ts +40 -35
  64. package/dist/components/moni-icon.d.ts.map +1 -1
  65. package/dist/components/moni-icon.js +43 -38
  66. package/dist/components/moni-list-item.d.ts +46 -33
  67. package/dist/components/moni-list-item.d.ts.map +1 -1
  68. package/dist/components/moni-list-item.js +61 -41
  69. package/dist/components/moni-list.d.ts +30 -20
  70. package/dist/components/moni-list.d.ts.map +1 -1
  71. package/dist/components/moni-list.js +36 -21
  72. package/dist/components/moni-loading-indicator.d.ts +54 -22
  73. package/dist/components/moni-loading-indicator.d.ts.map +1 -1
  74. package/dist/components/moni-loading-indicator.js +54 -22
  75. package/dist/components/moni-menu-item.d.ts +23 -16
  76. package/dist/components/moni-menu-item.d.ts.map +1 -1
  77. package/dist/components/moni-menu-item.js +23 -16
  78. package/dist/components/moni-menu.d.ts +81 -28
  79. package/dist/components/moni-menu.d.ts.map +1 -1
  80. package/dist/components/moni-menu.js +81 -30
  81. package/dist/components/moni-morph-modal.d.ts +141 -0
  82. package/dist/components/moni-morph-modal.d.ts.map +1 -1
  83. package/dist/components/moni-morph-modal.js +295 -58
  84. package/dist/components/moni-nav-item.d.ts +59 -29
  85. package/dist/components/moni-nav-item.d.ts.map +1 -1
  86. package/dist/components/moni-nav-item.js +59 -29
  87. package/dist/components/moni-nav.d.ts +94 -35
  88. package/dist/components/moni-nav.d.ts.map +1 -1
  89. package/dist/components/moni-nav.js +94 -35
  90. package/dist/components/moni-progress.d.ts +99 -55
  91. package/dist/components/moni-progress.d.ts.map +1 -1
  92. package/dist/components/moni-progress.js +99 -55
  93. package/dist/components/moni-radio.d.ts +62 -50
  94. package/dist/components/moni-radio.d.ts.map +1 -1
  95. package/dist/components/moni-radio.js +65 -52
  96. package/dist/components/moni-ripple.d.ts +74 -59
  97. package/dist/components/moni-ripple.d.ts.map +1 -1
  98. package/dist/components/moni-ripple.js +74 -59
  99. package/dist/components/moni-segmented-button.d.ts +91 -16
  100. package/dist/components/moni-segmented-button.d.ts.map +1 -1
  101. package/dist/components/moni-segmented-button.js +94 -17
  102. package/dist/components/moni-select-option.d.ts +30 -23
  103. package/dist/components/moni-select-option.d.ts.map +1 -1
  104. package/dist/components/moni-select-option.js +30 -23
  105. package/dist/components/moni-select.d.ts +300 -35
  106. package/dist/components/moni-select.d.ts.map +1 -1
  107. package/dist/components/moni-select.js +323 -39
  108. package/dist/components/moni-side-sheet.d.ts +94 -32
  109. package/dist/components/moni-side-sheet.d.ts.map +1 -1
  110. package/dist/components/moni-side-sheet.js +94 -32
  111. package/dist/components/moni-slider.d.ts +152 -41
  112. package/dist/components/moni-slider.d.ts.map +1 -1
  113. package/dist/components/moni-slider.js +154 -42
  114. package/dist/components/moni-snackbar.d.ts +53 -43
  115. package/dist/components/moni-snackbar.d.ts.map +1 -1
  116. package/dist/components/moni-snackbar.js +53 -43
  117. package/dist/components/moni-split-button.d.ts +63 -18
  118. package/dist/components/moni-split-button.d.ts.map +1 -1
  119. package/dist/components/moni-split-button.js +63 -18
  120. package/dist/components/moni-step.d.ts +36 -24
  121. package/dist/components/moni-step.d.ts.map +1 -1
  122. package/dist/components/moni-step.js +41 -29
  123. package/dist/components/moni-stepper.d.ts +64 -27
  124. package/dist/components/moni-stepper.d.ts.map +1 -1
  125. package/dist/components/moni-stepper.js +72 -34
  126. package/dist/components/moni-switch.d.ts +57 -46
  127. package/dist/components/moni-switch.d.ts.map +1 -1
  128. package/dist/components/moni-switch.js +59 -47
  129. package/dist/components/moni-tab.d.ts +26 -18
  130. package/dist/components/moni-tab.d.ts.map +1 -1
  131. package/dist/components/moni-tab.js +29 -21
  132. package/dist/components/moni-tabs.d.ts +34 -28
  133. package/dist/components/moni-tabs.d.ts.map +1 -1
  134. package/dist/components/moni-tabs.js +34 -28
  135. package/dist/components/moni-text-field.d.ts +139 -29
  136. package/dist/components/moni-text-field.d.ts.map +1 -1
  137. package/dist/components/moni-text-field.js +157 -31
  138. package/dist/components/moni-textarea.d.ts +127 -29
  139. package/dist/components/moni-textarea.d.ts.map +1 -1
  140. package/dist/components/moni-textarea.js +131 -32
  141. package/dist/components/moni-time-picker.d.ts +114 -24
  142. package/dist/components/moni-time-picker.d.ts.map +1 -1
  143. package/dist/components/moni-time-picker.js +127 -33
  144. package/dist/components/moni-toolbar.d.ts +37 -23
  145. package/dist/components/moni-toolbar.d.ts.map +1 -1
  146. package/dist/components/moni-toolbar.js +37 -23
  147. package/dist/components/moni-tooltip.d.ts +100 -36
  148. package/dist/components/moni-tooltip.d.ts.map +1 -1
  149. package/dist/components/moni-tooltip.js +104 -40
  150. package/dist/components/moni-typography.d.ts +68 -30
  151. package/dist/components/moni-typography.d.ts.map +1 -1
  152. package/dist/components/moni-typography.js +70 -32
  153. package/dist/styles/tokens.css +7 -7
  154. package/dist/types/events.d.ts +17 -0
  155. package/dist/types/events.d.ts.map +1 -0
  156. package/dist/types/events.js +1 -0
  157. package/dist/utils/event-emitter.d.ts +13 -0
  158. package/dist/utils/event-emitter.d.ts.map +1 -0
  159. package/dist/utils/event-emitter.js +13 -0
  160. package/package.json +2 -1
  161. package/src/components/_base/moni-element.ts +73 -9
  162. package/src/components/index.ts +2 -2
  163. package/src/components/loading-shapes.ts +19 -0
  164. package/src/components/moni-app-bar.test.ts +10 -10
  165. package/src/components/moni-app-bar.ts +72 -62
  166. package/src/components/moni-badge.ts +64 -66
  167. package/src/components/moni-bottom-sheet.test.ts +39 -45
  168. package/src/components/moni-bottom-sheet.ts +222 -131
  169. package/src/components/moni-button-group.test.ts +14 -14
  170. package/src/components/moni-button-group.ts +107 -29
  171. package/src/components/moni-button-segment.ts +53 -12
  172. package/src/components/moni-button.test.ts +28 -26
  173. package/src/components/moni-button.ts +139 -39
  174. package/src/components/moni-card.test.ts +6 -6
  175. package/src/components/moni-card.ts +70 -50
  176. package/src/components/moni-carousel.test.ts +12 -12
  177. package/src/components/moni-carousel.ts +1129 -269
  178. package/src/components/moni-checkbox.test.ts +7 -7
  179. package/src/components/moni-checkbox.ts +62 -48
  180. package/src/components/moni-chip.test.ts +17 -17
  181. package/src/components/moni-chip.ts +112 -34
  182. package/src/components/moni-color-field.test.ts +5 -5
  183. package/src/components/moni-color-field.ts +108 -24
  184. package/src/components/moni-context-menu.test.ts +11 -11
  185. package/src/components/moni-context-menu.ts +76 -30
  186. package/src/components/moni-dialog.ts +108 -59
  187. package/src/components/moni-divider.test.ts +4 -4
  188. package/src/components/moni-divider.ts +42 -30
  189. package/src/components/moni-expansion.ts +32 -22
  190. package/src/components/moni-fab-menu.test.ts +11 -11
  191. package/src/components/moni-fab-menu.ts +69 -31
  192. package/src/components/moni-fab.test.ts +16 -16
  193. package/src/components/moni-fab.ts +100 -34
  194. package/src/components/moni-file-field.test.ts +8 -8
  195. package/src/components/moni-file-field.ts +132 -30
  196. package/src/components/moni-icon.test.ts +11 -11
  197. package/src/components/moni-icon.ts +43 -38
  198. package/src/components/moni-list-item.test.ts +10 -10
  199. package/src/components/moni-list-item.ts +61 -41
  200. package/src/components/moni-list.ts +37 -21
  201. package/src/components/moni-loading-indicator.test.ts +3 -3
  202. package/src/components/moni-loading-indicator.ts +54 -22
  203. package/src/components/moni-menu-item.ts +23 -16
  204. package/src/components/moni-menu.test.ts +7 -7
  205. package/src/components/moni-menu.ts +87 -30
  206. package/src/components/moni-morph-modal.test.ts +18 -17
  207. package/src/components/moni-morph-modal.ts +327 -60
  208. package/src/components/moni-nav-item.ts +59 -29
  209. package/src/components/moni-nav.test.ts +11 -11
  210. package/src/components/moni-nav.ts +94 -35
  211. package/src/components/moni-progress.test.ts +9 -9
  212. package/src/components/moni-progress.ts +100 -56
  213. package/src/components/moni-radio.test.ts +8 -8
  214. package/src/components/moni-radio.ts +71 -51
  215. package/src/components/moni-ripple.ts +74 -59
  216. package/src/components/moni-segmented-button.test.ts +4 -4
  217. package/src/components/moni-segmented-button.ts +94 -17
  218. package/src/components/moni-select-option.ts +30 -23
  219. package/src/components/moni-select.test.ts +11 -11
  220. package/src/components/moni-select.ts +361 -50
  221. package/src/components/moni-side-sheet.test.ts +7 -7
  222. package/src/components/moni-side-sheet.ts +94 -32
  223. package/src/components/moni-slider.test.ts +7 -7
  224. package/src/components/moni-slider.ts +165 -42
  225. package/src/components/moni-snackbar.test.ts +8 -8
  226. package/src/components/moni-snackbar.ts +53 -43
  227. package/src/components/moni-split-button.ts +63 -18
  228. package/src/components/moni-step.test.ts +7 -7
  229. package/src/components/moni-step.ts +41 -29
  230. package/src/components/moni-stepper.test.ts +7 -7
  231. package/src/components/moni-stepper.ts +72 -34
  232. package/src/components/moni-switch.test.ts +12 -12
  233. package/src/components/moni-switch.ts +66 -47
  234. package/src/components/moni-tab.test.ts +5 -5
  235. package/src/components/moni-tab.ts +29 -21
  236. package/src/components/moni-tabs.ts +34 -28
  237. package/src/components/moni-text-field.test.ts +13 -13
  238. package/src/components/moni-text-field.ts +181 -30
  239. package/src/components/moni-textarea.test.ts +17 -17
  240. package/src/components/moni-textarea.ts +155 -31
  241. package/src/components/moni-time-picker.test.ts +5 -5
  242. package/src/components/moni-time-picker.ts +128 -33
  243. package/src/components/moni-toolbar.test.ts +8 -8
  244. package/src/components/moni-toolbar.ts +37 -23
  245. package/src/components/moni-tooltip.test.ts +15 -15
  246. package/src/components/moni-tooltip.ts +107 -40
  247. package/src/components/moni-typography.test.ts +10 -10
  248. package/src/components/moni-typography.ts +73 -32
  249. package/src/styles/tokens.css +7 -7
  250. package/src/types/events.ts +17 -0
  251. 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 component.
14
+ * Componente Material Design 3 Typography (Tipografía).
15
15
  *
16
- * A specialized text component that enforces the M3 type scale. It ensures
17
- * typography is consistent, accessible, and correctly styled across the
18
- * application without requiring manual CSS classes.
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
- * **M3 spec reference:** `m3-docs/components/typography/specs.md`
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
- * **Type Scale Categories:**
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
- * Each category supports three sizes: `large`, `medium`, and `small`.
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
- * **Semantic Tags:**
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
- * <!-- Renders an <h1> with display-large styles -->
45
- * <moni-typography variant="display" size="large">Hero Text</moni-typography>
44
+ * <!-- Renderiza un <h1> con estilos display-large -->
45
+ * <moni-typography variant="display" size="large">Texto Héroe</moni-typography>
46
46
  *
47
- * <!-- Renders a <p> with body-medium styles -->
48
- * <moni-typography variant="body">Standard paragraph text.</moni-typography>
47
+ * <!-- Renderiza un <p> con estilos body-medium -->
48
+ * <moni-typography variant="body">Texto de párrafo estándar.</moni-typography>
49
49
  *
50
- * <!-- Overriding the semantic tag -->
51
- * <moni-typography variant="title" as="span">Inline title</moni-typography>
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 - The text content to display.
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
- /** Default semantic tag for each variant per M3 spec. */
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
- // Render the dynamic tag with `unsafeStatic` so we don't hit the
88
- // "Bindings in tag names are not supported" error from lit 3.
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}
@@ -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, var(--radius-md, 0.75rem));
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: 0px 1px 2px 0px rgba(0, 0, 0, 0.3), 0px 1px 3px 1px rgba(0, 0, 0, 0.15);
125
- --shadow-2: 0px 1px 2px 0px rgba(0, 0, 0, 0.3), 0px 2px 6px 2px rgba(0, 0, 0, 0.15);
126
- --shadow-3: 0px 1px 3px 0px rgba(0, 0, 0, 0.3), 0px 4px 8px 3px rgba(0, 0, 0, 0.15);
127
- --shadow-4: 0px 2px 3px 0px rgba(0, 0, 0, 0.3), 0px 6px 10px 4px rgba(0, 0, 0, 0.15);
128
- --shadow-5: 0px 4px 4px 0px rgba(0, 0, 0, 0.3), 0px 8px 12px 6px rgba(0, 0, 0, 0.15);
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
+ }