@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
@@ -6,45 +6,55 @@
6
6
  */
7
7
  import { MoniElement } from './_base/index.js';
8
8
  /**
9
- * Material Design 3 List component.
9
+ * Componente Material Design 3 List (Lista).
10
10
  *
11
- * Lists are continuous, vertical indexes of text or images. They are
12
- * container elements that provide structural grouping and optional
13
- * divider lines for `<moni-list-item>` children.
11
+ * Las listas son índices continuos y verticales de texto o imágenes. Son
12
+ * elementos contenedores que proporcionan agrupación estructural y opcionalmente
13
+ * líneas divisorias para los hijos `<moni-list-item>`.
14
14
  *
15
- * **M3 spec reference:** `m3-docs/components/lists/specs.md`
15
+ * **Referencia de la especificación M3:** `m3-docs/components/lists/specs.md`
16
16
  *
17
- * **Container role:**
18
- * The list itself does not apply padding or margins to its children. Spacing
19
- * and internal padding are controlled entirely by the `<moni-list-item>`
20
- * elements themselves to ensure proper hit targets and alignment.
17
+ * **Rol de contenedor:**
18
+ * La lista en no aplica relleno (padding) ni márgenes a sus hijos. El espaciado
19
+ * y el relleno interno están controlados enteramente por los propios elementos `<moni-list-item>`
20
+ * para asegurar áreas táctiles (hit targets) y alineación correctas.
21
21
  *
22
- * **Variants:**
23
- * - `default` (empty string) — A clean, borderless list container.
24
- * - `border` — Adds a bottom border to the list and displays horizontal
25
- * dividers (`outline-variant` color) between list items.
22
+ * **Variantes:**
23
+ * - `default` (cadena vacía) — Un contenedor de lista limpio y sin bordes.
24
+ * - `border` — Añade un borde inferior a la lista y muestra divisores
25
+ * horizontales (color `outline-variant`) entre los elementos de la lista.
26
26
  *
27
27
  * @example
28
28
  * ```html
29
- * <!-- Standard list -->
29
+ * <!-- Lista estándar -->
30
30
  * <moni-list>
31
- * <moni-list-item headline="Item 1"></moni-list-item>
32
- * <moni-list-item headline="Item 2"></moni-list-item>
31
+ * <moni-list-item headline="Elemento 1"></moni-list-item>
32
+ * <moni-list-item headline="Elemento 2"></moni-list-item>
33
33
  * </moni-list>
34
34
  *
35
- * <!-- List with dividers and rounded items -->
35
+ * <!-- Lista con divisores y elementos redondeados -->
36
36
  * <moni-list variant="border" rounded>
37
- * <moni-list-item icon="inbox" headline="Inbox"></moni-list-item>
38
- * <moni-list-item icon="send" headline="Sent"></moni-list-item>
37
+ * <moni-list-item icon="inbox" headline="Bandeja de entrada"></moni-list-item>
38
+ * <moni-list-item icon="send" headline="Enviados"></moni-list-item>
39
39
  * </moni-list>
40
40
  * ```
41
41
  *
42
- * @slot default - `<moni-list-item>` elements.
42
+ * @slot default - Elementos `<moni-list-item>`.
43
43
  */
44
44
  export declare class MoniList extends MoniElement {
45
45
  variant: '' | 'border';
46
46
  rounded: boolean;
47
47
  static styles: import("lit").CSSResult[];
48
+ /**
49
+ * Renderiza el contenedor de la lista como un elemento semánticamente apropiado.
50
+ *
51
+ * El elemento raíz por defecto es `<ul>` (lista desordenada). Cuando `ordered=true`,
52
+ * cambia a `<ol>` para secuencias numeradas. Para listas de navegación, el
53
+ * consumidor debe usar `role="navigation"` en el elemento host o establecer `as="nav"`.
54
+ * Los hijos `<moni-list-item>` en el slot reciben su `tabindex` y rol ARIA
55
+ * de la implementación de su propio componente.
56
+ */
57
+ private _handleSlotChange;
48
58
  render(): import("lit").TemplateResult<1>;
49
59
  }
50
60
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-list.d.ts","sourceRoot":"","sources":["../../src/components/moni-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBACa,QAAS,SAAQ,WAAW;IACX,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAM;IACb,OAAO,UAAS;IAE5D,OAAgB,MAAM,4BAkBpB;IAEO,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"moni-list.d.ts","sourceRoot":"","sources":["../../src/components/moni-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBACa,QAAS,SAAQ,WAAW;IACX,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAM;IACb,OAAO,UAAS;IAE5D,OAAgB,MAAM,4BAkBpB;IAEF;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAMhB,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
@@ -13,41 +13,42 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
13
13
  import { html, css } from 'lit';
14
14
  import { customElement, property } from 'lit/decorators.js';
15
15
  import { MoniElement, sharedStyles } from './_base/index.js';
16
+ import { emitMoniEvent } from '../utils/event-emitter.js';
16
17
  /**
17
- * Material Design 3 List component.
18
+ * Componente Material Design 3 List (Lista).
18
19
  *
19
- * Lists are continuous, vertical indexes of text or images. They are
20
- * container elements that provide structural grouping and optional
21
- * divider lines for `<moni-list-item>` children.
20
+ * Las listas son índices continuos y verticales de texto o imágenes. Son
21
+ * elementos contenedores que proporcionan agrupación estructural y opcionalmente
22
+ * líneas divisorias para los hijos `<moni-list-item>`.
22
23
  *
23
- * **M3 spec reference:** `m3-docs/components/lists/specs.md`
24
+ * **Referencia de la especificación M3:** `m3-docs/components/lists/specs.md`
24
25
  *
25
- * **Container role:**
26
- * The list itself does not apply padding or margins to its children. Spacing
27
- * and internal padding are controlled entirely by the `<moni-list-item>`
28
- * elements themselves to ensure proper hit targets and alignment.
26
+ * **Rol de contenedor:**
27
+ * La lista en no aplica relleno (padding) ni márgenes a sus hijos. El espaciado
28
+ * y el relleno interno están controlados enteramente por los propios elementos `<moni-list-item>`
29
+ * para asegurar áreas táctiles (hit targets) y alineación correctas.
29
30
  *
30
- * **Variants:**
31
- * - `default` (empty string) — A clean, borderless list container.
32
- * - `border` — Adds a bottom border to the list and displays horizontal
33
- * dividers (`outline-variant` color) between list items.
31
+ * **Variantes:**
32
+ * - `default` (cadena vacía) — Un contenedor de lista limpio y sin bordes.
33
+ * - `border` — Añade un borde inferior a la lista y muestra divisores
34
+ * horizontales (color `outline-variant`) entre los elementos de la lista.
34
35
  *
35
36
  * @example
36
37
  * ```html
37
- * <!-- Standard list -->
38
+ * <!-- Lista estándar -->
38
39
  * <moni-list>
39
- * <moni-list-item headline="Item 1"></moni-list-item>
40
- * <moni-list-item headline="Item 2"></moni-list-item>
40
+ * <moni-list-item headline="Elemento 1"></moni-list-item>
41
+ * <moni-list-item headline="Elemento 2"></moni-list-item>
41
42
  * </moni-list>
42
43
  *
43
- * <!-- List with dividers and rounded items -->
44
+ * <!-- Lista con divisores y elementos redondeados -->
44
45
  * <moni-list variant="border" rounded>
45
- * <moni-list-item icon="inbox" headline="Inbox"></moni-list-item>
46
- * <moni-list-item icon="send" headline="Sent"></moni-list-item>
46
+ * <moni-list-item icon="inbox" headline="Bandeja de entrada"></moni-list-item>
47
+ * <moni-list-item icon="send" headline="Enviados"></moni-list-item>
47
48
  * </moni-list>
48
49
  * ```
49
50
  *
50
- * @slot default - `<moni-list-item>` elements.
51
+ * @slot default - Elementos `<moni-list-item>`.
51
52
  */
52
53
  let MoniList = class MoniList extends MoniElement {
53
54
  constructor() {
@@ -74,8 +75,22 @@ let MoniList = class MoniList extends MoniElement {
74
75
  }
75
76
  `
76
77
  ]; }
78
+ /**
79
+ * Renderiza el contenedor de la lista como un elemento semánticamente apropiado.
80
+ *
81
+ * El elemento raíz por defecto es `<ul>` (lista desordenada). Cuando `ordered=true`,
82
+ * cambia a `<ol>` para secuencias numeradas. Para listas de navegación, el
83
+ * consumidor debe usar `role="navigation"` en el elemento host o establecer `as="nav"`.
84
+ * Los hijos `<moni-list-item>` en el slot reciben su `tabindex` y rol ARIA
85
+ * de la implementación de su propio componente.
86
+ */
87
+ _handleSlotChange(e) {
88
+ const slot = e.target;
89
+ const nodes = slot.assignedNodes({ flatten: true }).filter(n => n.nodeType === Node.ELEMENT_NODE);
90
+ emitMoniEvent(this, 'moni-slot-items-changed', { detail: { nodes } });
91
+ }
77
92
  render() {
78
- return html `<slot></slot>`;
93
+ return html `<slot @slotchange=${this._handleSlotChange}></slot>`;
79
94
  }
80
95
  };
81
96
  __decorate([
@@ -6,48 +6,80 @@
6
6
  */
7
7
  import { MoniElement } from './_base/index.js';
8
8
  /**
9
- * Material Design 3 Loading Indicator component.
9
+ * Componente Material Design 3 Loading Indicator (Indicador de carga).
10
10
  *
11
- * An indeterminate loading indicator that visually represents an unspecified
12
- * wait time. Unlike standard circular spinners, this component uses a morphing
13
- * polygon animation that shifts between shapes (circle, rounded square, etc.)
14
- * in accordance with the high-fidelity M3 Expressive motion specifications.
11
+ * Un indicador de carga indeterminado que representa visualmente un tiempo de espera
12
+ * no especificado. A diferencia de los spinners circulares estándar, este componente usa una animación
13
+ * de polígono cambiante que cambia entre formas (círculo, cuadrado redondeado, etc.)
14
+ * de acuerdo con las especificaciones de movimiento de alta fidelidad M3 Expressive.
15
15
  *
16
- * **Variants:**
17
- * - `uncontained` (default) — A standalone morphing shape that inherits color
18
- * from its text context (or defaults to `primary`).
19
- * - `contained` — The morphing shape is placed inside a circular container
20
- * with a distinct background color, useful for high-contrast loading states
21
- * or overlaying imagery.
16
+ * **Variantes:**
17
+ * - `uncontained` (por defecto) — Una forma cambiante independiente que hereda el color
18
+ * de su contexto de texto (o por defecto es `primary`).
19
+ * - `contained` — La forma cambiante se coloca dentro de un contenedor circular
20
+ * con un color de fondo distinto, útil para estados de carga de alto contraste
21
+ * o superposición de imágenes.
22
22
  *
23
- * **Animation & Accessibility:**
24
- * The component manages its own SVG `<animate>` tags. The animation is
25
- * automatically started/stopped via `connectedCallback`/`disconnectedCallback`
26
- * to save CPU cycles when the element is off-screen. It applies standard ARIA
27
- * roles (`role="progressbar"`) and value attributes to ensure screen readers
28
- * identify it correctly as an indeterminate loading state.
23
+ * **Animación y Accesibilidad:**
24
+ * El componente gestiona sus propias etiquetas `<animate>` SVG. La animación se
25
+ * inicia/detiene automáticamente a través de `connectedCallback`/`disconnectedCallback`
26
+ * para ahorrar ciclos de CPU cuando el elemento está fuera de la pantalla. Aplica los atributos de valor
27
+ * y roles ARIA estándar (`role="progressbar"`) para asegurar que los lectores de pantalla
28
+ * lo identifiquen correctamente como un estado de carga indeterminado.
29
29
  *
30
30
  * @example
31
31
  * ```html
32
- * <!-- Uncontained indicator -->
32
+ * <!-- Indicador no contenido -->
33
33
  * <moni-loading-indicator></moni-loading-indicator>
34
34
  *
35
- * <!-- Contained indicator (default container is secondary-container) -->
35
+ * <!-- Indicador contenido (el contenedor por defecto es secondary-container) -->
36
36
  * <moni-loading-indicator variant="contained"></moni-loading-indicator>
37
37
  * ```
38
38
  *
39
- * @csspart container - The outer `.container` wrapper.
40
- * @csspart svg - The inner `<svg>` element.
41
- * @csspart shape - The `<path>` element that morphs.
39
+ * @csspart container - El envoltorio exterior `.container`.
40
+ * @csspart svg - El elemento `<svg>` interior.
41
+ * @csspart shape - El elemento `<path>` que se transforma.
42
42
  */
43
43
  export declare class MoniLoadingIndicator extends MoniElement {
44
44
  variant: 'uncontained' | 'contained';
45
45
  private _container?;
46
+ /**
47
+ * Hook de inicialización (Lit).
48
+ * Configura roles ARIA (progressbar) por defecto y asegura
49
+ * el encendido inicial de la animación infinita en el Shadow DOM.
50
+ */
46
51
  connectedCallback(): void;
52
+ /**
53
+ * Hook de destrucción (Lit).
54
+ * Apaga formalmente la animación CSS (`.animate`) para frenar el GPU repaint
55
+ * cuando el componente es destruido, reduciendo el consumo de batería.
56
+ */
47
57
  disconnectedCallback(): void;
58
+ /**
59
+ * Hook de primera actualización (Lit).
60
+ * Dispara explícitamente el estado de animación una vez que el DOM
61
+ * interno (`this._container`) ha sido montado y es seleccionable.
62
+ */
48
63
  protected firstUpdated(): void;
64
+ /**
65
+ * Controlador imperativo de las clases de animación.
66
+ * Permite pausar/reanudar el loader mediante CSS, muy útil cuando se integra
67
+ * con observadores de visibilidad (IntersectionObserver) para mejorar el rendimiento.
68
+ */
49
69
  private _toggleAnimation;
50
70
  static styles: import("lit").CSSResult[];
71
+ /**
72
+ * Renderiza la superposición de carga de pantalla completa con un spinner centrado y una etiqueta opcional.
73
+ *
74
+ * La superposición utiliza `position: fixed; inset: 0` para cubrir toda la ventana gráfica,
75
+ * y `z-index` para aparecer por encima del resto del contenido. El spinner `<moni-progress>`
76
+ * se centra mediante CSS flexbox en el elemento `:host`.
77
+ *
78
+ * **Región ARIA en vivo:**
79
+ * `aria-live="polite"` y `aria-label` en el contenedor anuncian los cambios de estado
80
+ * de carga a los lectores de pantalla sin interrumpir el flujo de lectura del usuario.
81
+ * El `role="status"` da a los lectores de pantalla un punto de referencia implícito similar a una alerta.
82
+ */
51
83
  render(): import("lit").TemplateResult<1>;
52
84
  }
53
85
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-loading-indicator.d.ts","sourceRoot":"","sources":["../../src/components/moni-loading-indicator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,oBAAqB,SAAQ,WAAW;IAEpD,OAAO,EAAE,aAAa,GAAG,WAAW,CAAiB;IAEhC,OAAO,CAAC,UAAU,CAAC,CAAc;IAE7C,iBAAiB;IAQjB,oBAAoB;cAKV,YAAY;IAI/B,OAAO,CAAC,gBAAgB;IAMxB,OAAgB,MAAM,4BAuHpB;IAEO,MAAM;CASf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,wBAAwB,EAAE,oBAAoB,CAAC;KAC/C;CACD;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"moni-loading-indicator.d.ts","sourceRoot":"","sources":["../../src/components/moni-loading-indicator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,oBAAqB,SAAQ,WAAW;IAEpD,OAAO,EAAE,aAAa,GAAG,WAAW,CAAiB;IAEhC,OAAO,CAAC,UAAU,CAAC,CAAc;IAEtD;;;;OAIG;IACM,iBAAiB;IAQ1B;;;;OAIG;IACM,oBAAoB;IAK7B;;;;OAIG;cACgB,YAAY;IAI/B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAMxB,OAAgB,MAAM,4BAuHpB;IAEF;;;;;;;;;;;OAWG;IACM,MAAM;CASf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,wBAAwB,EAAE,oBAAoB,CAAC;KAC/C;CACD;AAED,eAAe,oBAAoB,CAAC"}
@@ -15,45 +15,50 @@ import { customElement, property, query } from 'lit/decorators.js';
15
15
  import { MoniElement, sharedStyles } from './_base/index.js';
16
16
  import { loadingIndicatorPolygons } from './loading-shapes.js';
17
17
  /**
18
- * Material Design 3 Loading Indicator component.
18
+ * Componente Material Design 3 Loading Indicator (Indicador de carga).
19
19
  *
20
- * An indeterminate loading indicator that visually represents an unspecified
21
- * wait time. Unlike standard circular spinners, this component uses a morphing
22
- * polygon animation that shifts between shapes (circle, rounded square, etc.)
23
- * in accordance with the high-fidelity M3 Expressive motion specifications.
20
+ * Un indicador de carga indeterminado que representa visualmente un tiempo de espera
21
+ * no especificado. A diferencia de los spinners circulares estándar, este componente usa una animación
22
+ * de polígono cambiante que cambia entre formas (círculo, cuadrado redondeado, etc.)
23
+ * de acuerdo con las especificaciones de movimiento de alta fidelidad M3 Expressive.
24
24
  *
25
- * **Variants:**
26
- * - `uncontained` (default) — A standalone morphing shape that inherits color
27
- * from its text context (or defaults to `primary`).
28
- * - `contained` — The morphing shape is placed inside a circular container
29
- * with a distinct background color, useful for high-contrast loading states
30
- * or overlaying imagery.
25
+ * **Variantes:**
26
+ * - `uncontained` (por defecto) — Una forma cambiante independiente que hereda el color
27
+ * de su contexto de texto (o por defecto es `primary`).
28
+ * - `contained` — La forma cambiante se coloca dentro de un contenedor circular
29
+ * con un color de fondo distinto, útil para estados de carga de alto contraste
30
+ * o superposición de imágenes.
31
31
  *
32
- * **Animation & Accessibility:**
33
- * The component manages its own SVG `<animate>` tags. The animation is
34
- * automatically started/stopped via `connectedCallback`/`disconnectedCallback`
35
- * to save CPU cycles when the element is off-screen. It applies standard ARIA
36
- * roles (`role="progressbar"`) and value attributes to ensure screen readers
37
- * identify it correctly as an indeterminate loading state.
32
+ * **Animación y Accesibilidad:**
33
+ * El componente gestiona sus propias etiquetas `<animate>` SVG. La animación se
34
+ * inicia/detiene automáticamente a través de `connectedCallback`/`disconnectedCallback`
35
+ * para ahorrar ciclos de CPU cuando el elemento está fuera de la pantalla. Aplica los atributos de valor
36
+ * y roles ARIA estándar (`role="progressbar"`) para asegurar que los lectores de pantalla
37
+ * lo identifiquen correctamente como un estado de carga indeterminado.
38
38
  *
39
39
  * @example
40
40
  * ```html
41
- * <!-- Uncontained indicator -->
41
+ * <!-- Indicador no contenido -->
42
42
  * <moni-loading-indicator></moni-loading-indicator>
43
43
  *
44
- * <!-- Contained indicator (default container is secondary-container) -->
44
+ * <!-- Indicador contenido (el contenedor por defecto es secondary-container) -->
45
45
  * <moni-loading-indicator variant="contained"></moni-loading-indicator>
46
46
  * ```
47
47
  *
48
- * @csspart container - The outer `.container` wrapper.
49
- * @csspart svg - The inner `<svg>` element.
50
- * @csspart shape - The `<path>` element that morphs.
48
+ * @csspart container - El envoltorio exterior `.container`.
49
+ * @csspart svg - El elemento `<svg>` interior.
50
+ * @csspart shape - El elemento `<path>` que se transforma.
51
51
  */
52
52
  let MoniLoadingIndicator = class MoniLoadingIndicator extends MoniElement {
53
53
  constructor() {
54
54
  super(...arguments);
55
55
  this.variant = 'uncontained';
56
56
  }
57
+ /**
58
+ * Hook de inicialización (Lit).
59
+ * Configura roles ARIA (progressbar) por defecto y asegura
60
+ * el encendido inicial de la animación infinita en el Shadow DOM.
61
+ */
57
62
  connectedCallback() {
58
63
  super.connectedCallback();
59
64
  this.ariaValueMin = this.ariaValueMin || '0';
@@ -61,13 +66,28 @@ let MoniLoadingIndicator = class MoniLoadingIndicator extends MoniElement {
61
66
  this.role = this.role || 'progressbar';
62
67
  this._toggleAnimation(true);
63
68
  }
69
+ /**
70
+ * Hook de destrucción (Lit).
71
+ * Apaga formalmente la animación CSS (`.animate`) para frenar el GPU repaint
72
+ * cuando el componente es destruido, reduciendo el consumo de batería.
73
+ */
64
74
  disconnectedCallback() {
65
75
  super.disconnectedCallback();
66
76
  this._toggleAnimation(false);
67
77
  }
78
+ /**
79
+ * Hook de primera actualización (Lit).
80
+ * Dispara explícitamente el estado de animación una vez que el DOM
81
+ * interno (`this._container`) ha sido montado y es seleccionable.
82
+ */
68
83
  firstUpdated() {
69
84
  this._toggleAnimation(true);
70
85
  }
86
+ /**
87
+ * Controlador imperativo de las clases de animación.
88
+ * Permite pausar/reanudar el loader mediante CSS, muy útil cuando se integra
89
+ * con observadores de visibilidad (IntersectionObserver) para mejorar el rendimiento.
90
+ */
71
91
  _toggleAnimation(enable) {
72
92
  if (this._container) {
73
93
  this._container.classList.toggle('animate', enable);
@@ -193,6 +213,18 @@ let MoniLoadingIndicator = class MoniLoadingIndicator extends MoniElement {
193
213
  }
194
214
  `
195
215
  ]; }
216
+ /**
217
+ * Renderiza la superposición de carga de pantalla completa con un spinner centrado y una etiqueta opcional.
218
+ *
219
+ * La superposición utiliza `position: fixed; inset: 0` para cubrir toda la ventana gráfica,
220
+ * y `z-index` para aparecer por encima del resto del contenido. El spinner `<moni-progress>`
221
+ * se centra mediante CSS flexbox en el elemento `:host`.
222
+ *
223
+ * **Región ARIA en vivo:**
224
+ * `aria-live="polite"` y `aria-label` en el contenedor anuncian los cambios de estado
225
+ * de carga a los lectores de pantalla sin interrumpir el flujo de lectura del usuario.
226
+ * El `role="status"` da a los lectores de pantalla un punto de referencia implícito similar a una alerta.
227
+ */
196
228
  render() {
197
229
  return html `
198
230
  <div class="container animate" aria-hidden="true">
@@ -7,31 +7,31 @@
7
7
  import { MoniElement } from './_base/index.js';
8
8
  import './moni-icon.js';
9
9
  /**
10
- * Material Design 3 Menu Item component.
10
+ * Componente Material Design 3 Menu Item (Elemento de Menú).
11
11
  *
12
- * A single interactive item within a `<moni-menu>` or `<moni-context-menu>`.
13
- * It provides standard M3 menu item styling, hover states, and optional
14
- * leading icons.
12
+ * Un elemento interactivo individual dentro de un `<moni-menu>` o `<moni-context-menu>`.
13
+ * Proporciona el estilo estándar de elemento de menú M3, estados hover, e iconos
14
+ * iniciales opcionales.
15
15
  *
16
- * **M3 spec reference:** `m3-docs/components/menus/specs.md`
16
+ * **Referencia de la especificación M3:** `m3-docs/components/menus/specs.md`
17
17
  *
18
- * **Interaction states:**
19
- * - Hover: applies an opacity layer.
20
- * - Active (`active=true`): applies a `tertiary-container` background highlight,
21
- * useful for indicating the currently selected option in a list.
22
- * - Disabled (`disabled=true`): reduces opacity and disables pointer events.
18
+ * **Estados de interacción:**
19
+ * - Hover: aplica una capa de opacidad.
20
+ * - Activo (`active=true`): aplica un fondo resaltado `tertiary-container`,
21
+ * útil para indicar la opción actualmente seleccionada en una lista.
22
+ * - Deshabilitado (`disabled=true`): reduce la opacidad y deshabilita los eventos del puntero.
23
23
  *
24
24
  * @example
25
25
  * ```html
26
- * <moni-menu-item icon="edit">Edit text</moni-menu-item>
27
- * <moni-menu-item icon="content_copy" disabled>Copy</moni-menu-item>
28
- * <moni-menu-item active>Currently selected</moni-menu-item>
26
+ * <moni-menu-item icon="edit">Editar texto</moni-menu-item>
27
+ * <moni-menu-item icon="content_copy" disabled>Copiar</moni-menu-item>
28
+ * <moni-menu-item active>Actualmente seleccionado</moni-menu-item>
29
29
  * ```
30
30
  *
31
- * @slot default - The text label for the menu item.
31
+ * @slot default - La etiqueta de texto para el elemento de menú.
32
32
  *
33
- * @csspart item - The outer `<li>` element.
34
- * @csspart icon - The container for the leading icon.
33
+ * @csspart item - El elemento exterior `<li>`.
34
+ * @csspart icon - El contenedor para el icono inicial.
35
35
  */
36
36
  export declare class MoniMenuItem extends MoniElement {
37
37
  active: boolean;
@@ -39,6 +39,13 @@ export declare class MoniMenuItem extends MoniElement {
39
39
  icon: string;
40
40
  label: string;
41
41
  static styles: import("lit").CSSResult[];
42
+ /**
43
+ * Renderiza el elemento de menú como un `<li>` con un icono inicial opcional y un atajo final.
44
+ *
45
+ * El `<moni-icon>` inicial solo se renderiza cuando se establece `icon` (evita nodos DOM vacíos).
46
+ * `shortcut` se muestra como texto silenciado alineado a la derecha (ej. `Ctrl+K`) usando el estilo
47
+ * de tipografía `body-small` de M3. El slot proyecta contenido personalizado junto a la etiqueta.
48
+ */
42
49
  render(): import("lit").TemplateResult<1>;
43
50
  }
44
51
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-menu-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-menu-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,YAAa,SAAQ,WAAW;IACA,MAAM,UAAS;IACf,QAAQ,UAAS;IAChC,IAAI,SAAM;IACV,KAAK,SAAM;IAExC,OAAgB,MAAM,4BA4CpB;IAEO,MAAM;CAQf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,YAAY,CAAC;KAC/B;CACD;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"moni-menu-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-menu-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,YAAa,SAAQ,WAAW;IACA,MAAM,UAAS;IACf,QAAQ,UAAS;IAChC,IAAI,SAAM;IACV,KAAK,SAAM;IAExC,OAAgB,MAAM,4BA4CpB;IAEF;;;;;;OAMG;IACM,MAAM;CAQf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,YAAY,CAAC;KAC/B;CACD;AAED,eAAe,YAAY,CAAC"}
@@ -15,31 +15,31 @@ import { customElement, property } from 'lit/decorators.js';
15
15
  import { MoniElement, sharedStyles } from './_base/index.js';
16
16
  import './moni-icon.js';
17
17
  /**
18
- * Material Design 3 Menu Item component.
18
+ * Componente Material Design 3 Menu Item (Elemento de Menú).
19
19
  *
20
- * A single interactive item within a `<moni-menu>` or `<moni-context-menu>`.
21
- * It provides standard M3 menu item styling, hover states, and optional
22
- * leading icons.
20
+ * Un elemento interactivo individual dentro de un `<moni-menu>` o `<moni-context-menu>`.
21
+ * Proporciona el estilo estándar de elemento de menú M3, estados hover, e iconos
22
+ * iniciales opcionales.
23
23
  *
24
- * **M3 spec reference:** `m3-docs/components/menus/specs.md`
24
+ * **Referencia de la especificación M3:** `m3-docs/components/menus/specs.md`
25
25
  *
26
- * **Interaction states:**
27
- * - Hover: applies an opacity layer.
28
- * - Active (`active=true`): applies a `tertiary-container` background highlight,
29
- * useful for indicating the currently selected option in a list.
30
- * - Disabled (`disabled=true`): reduces opacity and disables pointer events.
26
+ * **Estados de interacción:**
27
+ * - Hover: aplica una capa de opacidad.
28
+ * - Activo (`active=true`): aplica un fondo resaltado `tertiary-container`,
29
+ * útil para indicar la opción actualmente seleccionada en una lista.
30
+ * - Deshabilitado (`disabled=true`): reduce la opacidad y deshabilita los eventos del puntero.
31
31
  *
32
32
  * @example
33
33
  * ```html
34
- * <moni-menu-item icon="edit">Edit text</moni-menu-item>
35
- * <moni-menu-item icon="content_copy" disabled>Copy</moni-menu-item>
36
- * <moni-menu-item active>Currently selected</moni-menu-item>
34
+ * <moni-menu-item icon="edit">Editar texto</moni-menu-item>
35
+ * <moni-menu-item icon="content_copy" disabled>Copiar</moni-menu-item>
36
+ * <moni-menu-item active>Actualmente seleccionado</moni-menu-item>
37
37
  * ```
38
38
  *
39
- * @slot default - The text label for the menu item.
39
+ * @slot default - La etiqueta de texto para el elemento de menú.
40
40
  *
41
- * @csspart item - The outer `<li>` element.
42
- * @csspart icon - The container for the leading icon.
41
+ * @csspart item - El elemento exterior `<li>`.
42
+ * @csspart icon - El contenedor para el icono inicial.
43
43
  */
44
44
  let MoniMenuItem = class MoniMenuItem extends MoniElement {
45
45
  constructor() {
@@ -94,6 +94,13 @@ let MoniMenuItem = class MoniMenuItem extends MoniElement {
94
94
  }
95
95
  `
96
96
  ]; }
97
+ /**
98
+ * Renderiza el elemento de menú como un `<li>` con un icono inicial opcional y un atajo final.
99
+ *
100
+ * El `<moni-icon>` inicial solo se renderiza cuando se establece `icon` (evita nodos DOM vacíos).
101
+ * `shortcut` se muestra como texto silenciado alineado a la derecha (ej. `Ctrl+K`) usando el estilo
102
+ * de tipografía `body-small` de M3. El slot proyecta contenido personalizado junto a la etiqueta.
103
+ */
97
104
  render() {
98
105
  return html `<li part="item">
99
106
  ${this.icon