@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
@@ -14,45 +14,45 @@ import { html, css } from 'lit';
14
14
  import { customElement, property } from 'lit/decorators.js';
15
15
  import { MoniElement, sharedStyles } from './_base/index.js';
16
16
  /**
17
- * Material Design 3 Expansion panel component.
17
+ * Componente Material Design 3 Expansion panel (Panel de expansión).
18
18
  *
19
- * A lightweight wrapper around the native HTML `<details>` and `<summary>`
20
- * elements, styled according to M3 surface and elevation guidelines.
21
- * Expansion panels contain creation flows and allow lightweight editing of an element.
19
+ * Un envoltorio ligero alrededor de los elementos HTML nativos `<details>` y `<summary>`,
20
+ * estilizado de acuerdo con las pautas de superficie y elevación de M3.
21
+ * Los paneles de expansión contienen flujos de creación y permiten la edición ligera de un elemento.
22
22
  *
23
- * **Visual architecture:**
24
- * The component renders a `<details>` element with a `<summary>` that acts
25
- * as the expandable header. The default slot content is placed inside the
26
- * `<details>` tag (but outside the `<summary>`), naturally hiding and showing
27
- * based on the native behavior. An M3 `expand_more` icon is added via a CSS
28
- * `::after` pseudo-element and rotates when the panel is open.
23
+ * **Arquitectura visual:**
24
+ * El componente renderiza un elemento `<details>` con un `<summary>` que actúa
25
+ * como el encabezado expandible. El contenido del slot por defecto se coloca dentro de la
26
+ * etiqueta `<details>` (pero fuera del `<summary>`), ocultándose y mostrándose naturalmente
27
+ * según el comportamiento nativo. Se añade un icono `expand_more` de M3 mediante un
28
+ * pseudo-elemento CSS `::after` que rota cuando el panel está abierto.
29
29
  *
30
- * **Usage:**
31
- * Set the `title` attribute for a simple text header, or use the `summary`
32
- * slot to project custom rich content (like icons or secondary text) into the
33
- * header area.
30
+ * **Uso:**
31
+ * Establezca el atributo `title` para un encabezado de texto simple, o use el slot `summary`
32
+ * para proyectar contenido enriquecido personalizado (como iconos o texto secundario) en el
33
+ * área del encabezado.
34
34
  *
35
35
  * @example
36
36
  * ```html
37
- * <!-- Simple text title -->
38
- * <moni-expansion title="Advanced Settings">
39
- * <p>Enable developer mode features here.</p>
37
+ * <!-- Título de texto simple -->
38
+ * <moni-expansion title="Configuración Avanzada">
39
+ * <p>Habilite las características del modo de desarrollador aquí.</p>
40
40
  * </moni-expansion>
41
41
  *
42
- * <!-- Rich summary content via slot -->
42
+ * <!-- Contenido de resumen enriquecido a través de slot -->
43
43
  * <moni-expansion open>
44
44
  * <div slot="summary" style="display: flex; gap: 8px;">
45
45
  * <moni-icon>person</moni-icon>
46
- * <span>Personal Information</span>
46
+ * <span>Información Personal</span>
47
47
  * </div>
48
48
  * <form>
49
- * <moni-text-field label="Name"></moni-text-field>
49
+ * <moni-text-field label="Nombre"></moni-text-field>
50
50
  * </form>
51
51
  * </moni-expansion>
52
52
  * ```
53
53
  *
54
- * @slot default - The content of the expansion panel body.
55
- * @slot summary - Custom header content (overrides the `title` attribute).
54
+ * @slot default - El contenido del cuerpo del panel de expansión.
55
+ * @slot summary - Contenido personalizado del encabezado (sobrescribe el atributo `title`).
56
56
  */
57
57
  let MoniExpansion = class MoniExpansion extends MoniElement {
58
58
  constructor() {
@@ -106,6 +106,16 @@ let MoniExpansion = class MoniExpansion extends MoniElement {
106
106
  }
107
107
  `
108
108
  ]; }
109
+ /**
110
+ * Renderiza el panel de expansión utilizando el elemento nativo `<details>`.
111
+ *
112
+ * El atributo `open` en
113
+ * `:host` impulsa la rotación de la flecha indicadora CSS (`::after` en `summary`).
114
+ *
115
+ * **Estructura de slots:**
116
+ * - `[slot="summary"]` — la fila de encabezado siempre visible (título, iconos).
117
+ * - Slot por defecto — la región de contenido colapsable.
118
+ */
109
119
  render() {
110
120
  return html `<details ?open=${this.open} part="expansion">
111
121
  <summary part="summary">
@@ -8,41 +8,41 @@ import { MoniElement } from './_base/index.js';
8
8
  import './moni-fab.js';
9
9
  import './moni-icon.js';
10
10
  /**
11
- * Material Design 3 FAB Menu component.
11
+ * Componente Material Design 3 FAB Menu (Menú FAB).
12
12
  *
13
- * A specialized container that combines a main `<moni-fab>` trigger with a
14
- * `<menu>` of secondary FABs. It allows multiple actions to be tucked away
15
- * behind a single primary Floating Action Button, reducing screen clutter.
13
+ * Un contenedor especializado que combina un disparador principal `<moni-fab>` con un
14
+ * `<menu>` de FABs secundarios. Permite ocultar múltiples acciones
15
+ * detrás de un solo Botón de Acción Flotante primario, reduciendo el desorden en la pantalla.
16
16
  *
17
- * **M3 spec reference:** `m3-docs/components/floating-action-buttons/specs.md` (FAB menus)
17
+ * **Referencia de la especificación M3:** `m3-docs/components/floating-action-buttons/specs.md` (Menús FAB)
18
18
  *
19
- * **Trigger and animation:**
20
- * The component wires the primary trigger FAB's `click` event to toggle its
21
- * internal `open` state. When `open=true`, the nested secondary FABs scale up
22
- * and fade in via CSS transitions. Consumers can also control the `open` state
23
- * programmatically by setting the attribute.
19
+ * **Disparador y animación:**
20
+ * El componente enlaza el evento `click` del FAB disparador principal para alternar su
21
+ * estado interno `open`. Cuando `open=true`, los FABs secundarios anidados se escalan
22
+ * y aparecen mediante transiciones CSS. Los consumidores también pueden controlar el estado `open`
23
+ * programáticamente estableciendo el atributo.
24
24
  *
25
- * **Focus management (Accessibility):**
26
- * - When the menu opens, focus automatically moves to the first focusable
27
- * secondary item (or remains on the trigger if empty).
28
- * - While open, the `Tab` key cycles focus strictly within the menu items to
29
- * prevent keyboard focus from escaping (focus trap).
30
- * - Pressing `Escape` or clicking anywhere outside the menu closes it and
31
- * returns focus to the primary trigger FAB.
25
+ * **Gestión del foco (Accesibilidad):**
26
+ * - Cuando el menú se abre, el foco se mueve automáticamente al primer elemento secundario
27
+ * enfocable (o permanece en el disparador si está vacío).
28
+ * - Mientras está abierto, la tecla `Tab` cicla el foco estrictamente dentro de los elementos del menú para
29
+ * evitar que el foco del teclado escape (trampa de foco).
30
+ * - Presionar `Escape` o hacer clic en cualquier lugar fuera del menú lo cierra y
31
+ * devuelve el foco al FAB disparador primario.
32
32
  *
33
33
  * @example
34
34
  * ```html
35
- * <!-- Bottom-trailing FAB menu opening upwards -->
35
+ * <!-- Menú FAB en la parte inferior derecha que se abre hacia arriba -->
36
36
  * <moni-fab-menu icon="add" color="tertiary" direction="up">
37
- * <moni-fab size="small" icon="edit" label="Draft"></moni-fab>
38
- * <moni-fab size="small" icon="photo_camera" label="Camera"></moni-fab>
37
+ * <moni-fab size="small" icon="edit" label="Borrador"></moni-fab>
38
+ * <moni-fab size="small" icon="photo_camera" label="Cámara"></moni-fab>
39
39
  * </moni-fab-menu>
40
40
  * ```
41
41
  *
42
- * @slot default - The secondary `<moni-fab>` elements that appear when open.
42
+ * @slot default - Los elementos `<moni-fab>` secundarios que aparecen cuando está abierto.
43
43
  *
44
- * @csspart trigger - The primary `<moni-fab>` trigger element.
45
- * @csspart menu - The `<menu>` container holding the secondary items.
44
+ * @csspart trigger - El elemento disparador `<moni-fab>` primario.
45
+ * @csspart menu - El contenedor `<menu>` que contiene los elementos secundarios.
46
46
  */
47
47
  export declare class MoniFabMenu extends MoniElement {
48
48
  open: boolean;
@@ -55,17 +55,55 @@ export declare class MoniFabMenu extends MoniElement {
55
55
  private _trigger;
56
56
  private _menu;
57
57
  private _previouslyFocused;
58
+ /**
59
+ * Wrapper estático para el manejador de clics globales.
60
+ * Conserva el contexto léxico `this` al ser inyectado/removido en `document`.
61
+ */
58
62
  private _onDocClick;
63
+ /**
64
+ * Wrapper estático para el manejador de teclado global.
65
+ * Facilita la limpieza del listener de Escape/Navegación al desmontar el componente.
66
+ */
59
67
  private _onDocKeydown;
68
+ /**
69
+ * Hook del ciclo de vida (Lit). Se ejecuta una sola vez tras el primer renderizado.
70
+ * Espera a que el Shadow DOM se materialice por completo y enlaza el evento nativo
71
+ * `click` directamente sobre el FAB (Floating Action Button) principal que acciona el menú.
72
+ */
60
73
  firstUpdated(): Promise<void>;
74
+ /**
75
+ * Limpieza rigurosa de memoria (Garbage Collection).
76
+ * Remueve absolutamente todos los listeners asíncronos (document y trigger local)
77
+ * para evitar colisiones de eventos fantasma y pérdidas de rendimiento (memory leaks).
78
+ */
61
79
  disconnectedCallback(): void;
62
80
  updated(changed: Map<string, unknown>): void;
81
+ /**
82
+ * Alterna explícitamente el estado `open` del menú.
83
+ * Se dispara exclusivamente al interactuar física o focalmente con el FAB principal.
84
+ */
63
85
  private _onTriggerClick;
64
86
  private _syncOpenState;
65
87
  private _handleDocClick;
66
88
  private _handleDocKeydown;
67
89
  private _firstFocusableMenuItem;
68
90
  static styles: import("lit").CSSResult[];
91
+ /**
92
+ * Renderiza el speed-dial FAB como un FAB disparador + menú colapsable de FABs de acción.
93
+ *
94
+ * **Patrón Speed-dial:**
95
+ * El FAB disparador siempre es visible. Cuando `open=true`, los elementos de acción en
96
+ * el slot por defecto se revelan con una animación en cascada. Los elementos se colapsan
97
+ * de nuevo con una cascada invertida.
98
+ *
99
+ * **Dirección de cascada:**
100
+ * Cuando `placement='bottom'`, los elementos se expanden hacia arriba (índice 0 en la parte inferior).
101
+ * Cuando `placement='top'`, los elementos se expanden hacia abajo.
102
+ *
103
+ * **`aria-expanded`:**
104
+ * Se establece en el botón disparador para comunicar el estado abierto/cerrado a los lectores de pantalla.
105
+ * Cada FAB de acción en el slot lleva `aria-label` que el consumidor debe proporcionar.
106
+ */
69
107
  render(): import("lit").TemplateResult<1>;
70
108
  }
71
109
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-fab-menu.d.ts","sourceRoot":"","sources":["../../src/components/moni-fab-menu.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,eAAe,CAAC;AACvB,OAAO,gBAAgB,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBACa,WAAY,SAAQ,WAAW;IACC,IAAI,UAAS;IAC5B,IAAI,SAAS;IAE1C,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE9C,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAa;IAEpE,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAa;IAExC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAQ;IAEnD,QAAQ,EACL,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,GACd,aAAa,CAAqB;IAElB,OAAO,CAAC,QAAQ,CAAW;IAC1B,OAAO,CAAC,KAAK,CAAe;IAEhD,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,aAAa,CAAmD;IAEzD,YAAY;IAQlB,oBAAoB;IAOpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOrD,OAAO,CAAC,eAAe,CAErB;IAEF,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,uBAAuB;IAQ/B,OAAgB,MAAM,4BA8EpB;IAEO,MAAM;CAef;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,WAAW,CAAC;KAC7B;CACD;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"moni-fab-menu.d.ts","sourceRoot":"","sources":["../../src/components/moni-fab-menu.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,eAAe,CAAC;AACvB,OAAO,gBAAgB,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBACa,WAAY,SAAQ,WAAW;IACC,IAAI,UAAS;IAC5B,IAAI,SAAS;IAE1C,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE9C,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAa;IAEpE,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAa;IAExC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAQ;IAEnD,QAAQ,EACL,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,GACd,aAAa,CAAqB;IAElB,OAAO,CAAC,QAAQ,CAAW;IAC1B,OAAO,CAAC,KAAK,CAAe;IAEhD,OAAO,CAAC,kBAAkB,CAA4B;IACtD;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA8C;IACjE;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAmD;IAExE;;;;OAIG;IACY,YAAY;IAQ3B;;;;OAIG;IACM,oBAAoB;IAOpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOrD;;;OAGG;IACH,OAAO,CAAC,eAAe,CAErB;IAEF,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,uBAAuB;IAQ/B,OAAgB,MAAM,4BA8EpB;IAEF;;;;;;;;;;;;;;;OAeG;IACM,MAAM;CAef;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,WAAW,CAAC;KAC7B;CACD;AAED,eAAe,WAAW,CAAC"}
@@ -16,41 +16,41 @@ import { MoniElement, sharedStyles } from './_base/index.js';
16
16
  import './moni-fab.js';
17
17
  import './moni-icon.js';
18
18
  /**
19
- * Material Design 3 FAB Menu component.
19
+ * Componente Material Design 3 FAB Menu (Menú FAB).
20
20
  *
21
- * A specialized container that combines a main `<moni-fab>` trigger with a
22
- * `<menu>` of secondary FABs. It allows multiple actions to be tucked away
23
- * behind a single primary Floating Action Button, reducing screen clutter.
21
+ * Un contenedor especializado que combina un disparador principal `<moni-fab>` con un
22
+ * `<menu>` de FABs secundarios. Permite ocultar múltiples acciones
23
+ * detrás de un solo Botón de Acción Flotante primario, reduciendo el desorden en la pantalla.
24
24
  *
25
- * **M3 spec reference:** `m3-docs/components/floating-action-buttons/specs.md` (FAB menus)
25
+ * **Referencia de la especificación M3:** `m3-docs/components/floating-action-buttons/specs.md` (Menús FAB)
26
26
  *
27
- * **Trigger and animation:**
28
- * The component wires the primary trigger FAB's `click` event to toggle its
29
- * internal `open` state. When `open=true`, the nested secondary FABs scale up
30
- * and fade in via CSS transitions. Consumers can also control the `open` state
31
- * programmatically by setting the attribute.
27
+ * **Disparador y animación:**
28
+ * El componente enlaza el evento `click` del FAB disparador principal para alternar su
29
+ * estado interno `open`. Cuando `open=true`, los FABs secundarios anidados se escalan
30
+ * y aparecen mediante transiciones CSS. Los consumidores también pueden controlar el estado `open`
31
+ * programáticamente estableciendo el atributo.
32
32
  *
33
- * **Focus management (Accessibility):**
34
- * - When the menu opens, focus automatically moves to the first focusable
35
- * secondary item (or remains on the trigger if empty).
36
- * - While open, the `Tab` key cycles focus strictly within the menu items to
37
- * prevent keyboard focus from escaping (focus trap).
38
- * - Pressing `Escape` or clicking anywhere outside the menu closes it and
39
- * returns focus to the primary trigger FAB.
33
+ * **Gestión del foco (Accesibilidad):**
34
+ * - Cuando el menú se abre, el foco se mueve automáticamente al primer elemento secundario
35
+ * enfocable (o permanece en el disparador si está vacío).
36
+ * - Mientras está abierto, la tecla `Tab` cicla el foco estrictamente dentro de los elementos del menú para
37
+ * evitar que el foco del teclado escape (trampa de foco).
38
+ * - Presionar `Escape` o hacer clic en cualquier lugar fuera del menú lo cierra y
39
+ * devuelve el foco al FAB disparador primario.
40
40
  *
41
41
  * @example
42
42
  * ```html
43
- * <!-- Bottom-trailing FAB menu opening upwards -->
43
+ * <!-- Menú FAB en la parte inferior derecha que se abre hacia arriba -->
44
44
  * <moni-fab-menu icon="add" color="tertiary" direction="up">
45
- * <moni-fab size="small" icon="edit" label="Draft"></moni-fab>
46
- * <moni-fab size="small" icon="photo_camera" label="Camera"></moni-fab>
45
+ * <moni-fab size="small" icon="edit" label="Borrador"></moni-fab>
46
+ * <moni-fab size="small" icon="photo_camera" label="Cámara"></moni-fab>
47
47
  * </moni-fab-menu>
48
48
  * ```
49
49
  *
50
- * @slot default - The secondary `<moni-fab>` elements that appear when open.
50
+ * @slot default - Los elementos `<moni-fab>` secundarios que aparecen cuando está abierto.
51
51
  *
52
- * @csspart trigger - The primary `<moni-fab>` trigger element.
53
- * @csspart menu - The `<menu>` container holding the secondary items.
52
+ * @csspart trigger - El elemento disparador `<moni-fab>` primario.
53
+ * @csspart menu - El contenedor `<menu>` que contiene los elementos secundarios.
54
54
  */
55
55
  let MoniFabMenu = class MoniFabMenu extends MoniElement {
56
56
  constructor() {
@@ -63,19 +63,41 @@ let MoniFabMenu = class MoniFabMenu extends MoniElement {
63
63
  this.direction = 'up';
64
64
  this.position = 'bottom-trailing';
65
65
  this._previouslyFocused = null;
66
+ /**
67
+ * Wrapper estático para el manejador de clics globales.
68
+ * Conserva el contexto léxico `this` al ser inyectado/removido en `document`.
69
+ */
66
70
  this._onDocClick = (e) => this._handleDocClick(e);
71
+ /**
72
+ * Wrapper estático para el manejador de teclado global.
73
+ * Facilita la limpieza del listener de Escape/Navegación al desmontar el componente.
74
+ */
67
75
  this._onDocKeydown = (e) => this._handleDocKeydown(e);
76
+ /**
77
+ * Alterna explícitamente el estado `open` del menú.
78
+ * Se dispara exclusivamente al interactuar física o focalmente con el FAB principal.
79
+ */
68
80
  this._onTriggerClick = () => {
69
81
  this.open = !this.open;
70
82
  };
71
83
  }
84
+ /**
85
+ * Hook del ciclo de vida (Lit). Se ejecuta una sola vez tras el primer renderizado.
86
+ * Espera a que el Shadow DOM se materialice por completo y enlaza el evento nativo
87
+ * `click` directamente sobre el FAB (Floating Action Button) principal que acciona el menú.
88
+ */
72
89
  async firstUpdated() {
73
- // Wait for all children to finish rendering before wiring listeners
90
+ // Esperar a que todos los hijos terminen de renderizarse antes de enlazar los detectores
74
91
  await this.updateComplete;
75
92
  if (this._trigger) {
76
93
  this._trigger.addEventListener('click', this._onTriggerClick);
77
94
  }
78
95
  }
96
+ /**
97
+ * Limpieza rigurosa de memoria (Garbage Collection).
98
+ * Remueve absolutamente todos los listeners asíncronos (document y trigger local)
99
+ * para evitar colisiones de eventos fantasma y pérdidas de rendimiento (memory leaks).
100
+ */
79
101
  disconnectedCallback() {
80
102
  super.disconnectedCallback();
81
103
  this._trigger?.removeEventListener('click', this._onTriggerClick);
@@ -90,11 +112,11 @@ let MoniFabMenu = class MoniFabMenu extends MoniElement {
90
112
  }
91
113
  _syncOpenState() {
92
114
  if (this.open) {
93
- // Save current focus so we can restore it on close.
115
+ // Guarda el foco actual para poder restaurarlo al cerrar.
94
116
  this._previouslyFocused = this.getRootNode()
95
117
  .activeElement;
96
- // Move focus to the first focusable item in the menu, or the
97
- // trigger as a fallback (per WAI-ARIA menu pattern).
118
+ // Mueve el foco al primer elemento enfocable en el menú, o al
119
+ // disparador como respaldo (según el patrón de menú WAI-ARIA).
98
120
  const first = this._firstFocusableMenuItem();
99
121
  if (first) {
100
122
  first.focus();
@@ -102,12 +124,12 @@ let MoniFabMenu = class MoniFabMenu extends MoniElement {
102
124
  else {
103
125
  this._trigger?.focus();
104
126
  }
105
- // Install document listeners for click-outside and Escape.
127
+ // Instala detectores en el documento para clic fuera y Escape.
106
128
  document.addEventListener('click', this._onDocClick, true);
107
129
  document.addEventListener('keydown', this._onDocKeydown, true);
108
130
  }
109
131
  else {
110
- // Restore focus to the trigger (or the previously focused element).
132
+ // Restaura el foco al disparador (o al elemento previamente enfocado).
111
133
  const restore = this._previouslyFocused ?? this._trigger;
112
134
  restore?.focus();
113
135
  this._previouslyFocused = null;
@@ -192,7 +214,7 @@ let MoniFabMenu = class MoniFabMenu extends MoniElement {
192
214
  transform: scale(1);
193
215
  }
194
216
 
195
- /* Directional placement relative to the trigger */
217
+ /* Colocación direccional relativa al disparador */
196
218
  :host([direction='up']) .fab-menu {
197
219
  inset: auto auto calc(100% + 0.5rem) 0;
198
220
  flex-direction: column-reverse;
@@ -216,9 +238,25 @@ let MoniFabMenu = class MoniFabMenu extends MoniElement {
216
238
  }
217
239
  `
218
240
  ]; }
241
+ /**
242
+ * Renderiza el speed-dial FAB como un FAB disparador + menú colapsable de FABs de acción.
243
+ *
244
+ * **Patrón Speed-dial:**
245
+ * El FAB disparador siempre es visible. Cuando `open=true`, los elementos de acción en
246
+ * el slot por defecto se revelan con una animación en cascada. Los elementos se colapsan
247
+ * de nuevo con una cascada invertida.
248
+ *
249
+ * **Dirección de cascada:**
250
+ * Cuando `placement='bottom'`, los elementos se expanden hacia arriba (índice 0 en la parte inferior).
251
+ * Cuando `placement='top'`, los elementos se expanden hacia abajo.
252
+ *
253
+ * **`aria-expanded`:**
254
+ * Se establece en el botón disparador para comunicar el estado abierto/cerrado a los lectores de pantalla.
255
+ * Cada FAB de acción en el slot lleva `aria-label` que el consumidor debe proporcionar.
256
+ */
219
257
  render() {
220
258
  return html `<div class="wrap">
221
- <!-- div role=menu allows any slotted content (not just <li>) -->
259
+ <!-- div role=menu permite cualquier contenido en el slot (no solo <li>) -->
222
260
  <div class="fab-menu" role="menu" part="menu">
223
261
  <slot></slot>
224
262
  </div>
@@ -7,62 +7,120 @@
7
7
  import { MoniElement } from './_base/index.js';
8
8
  import './moni-icon.js';
9
9
  /**
10
- * Material Design 3 Floating Action Button (FAB) component.
10
+ * Componente Material Design 3 Floating Action Button (FAB).
11
11
  *
12
- * FABs represent the primary, or most common, action on a screen. They appear
13
- * in front of all screen content, typically as a circular shape with an icon in
14
- * its center.
12
+ * Los FABs representan la acción principal, o más común, en una pantalla. Aparecen
13
+ * frente a todo el contenido de la pantalla, típicamente como una forma circular con un icono en
14
+ * su centro.
15
15
  *
16
- * **M3 spec reference:** `m3-docs/components/floating-action-buttons/specs.md`
16
+ * **Referencia de la especificación M3:** `m3-docs/components/floating-action-buttons/specs.md`
17
17
  *
18
- * **M3 Expressive Updates & Deprecations (May 2025):**
19
- * - `size="small"` is **no longer recommended** by M3. Use `medium` (40dp or 56dp)
20
- * or `large` (96dp). Deprecated in v0.3.1; will be removed in v1.0.
21
- * - `shape="circle"` is **not part of M3**. M3 FABs use a `rounded` shape with a
22
- * 16dp corner radius (which morphs to a `full` radius on hover/focus).
23
- * Deprecated in v0.3.1; will be removed in v1.0.
24
- * - `color="surface"` is **no longer recommended**. Use `primary`, `secondary`,
25
- * or `tertiary` to ensure proper color mapping to the M3 theme.
18
+ * **Actualizaciones y Deprecaciones de M3 Expressive (Mayo 2025):**
19
+ * - `size="small"` **ya no es recomendado** por M3. Use `medium` (40dp o 56dp)
20
+ * o `large` (96dp). Deprecado en v0.3.1; se eliminará en v1.0.
21
+ * - `shape="circle"` **no es parte de M3**. Los FABs M3 usan una forma `rounded` (redondeada) con un
22
+ * radio de esquina de 16dp (que se transforma a un radio `full` al pasar el cursor/enfocar).
23
+ * Deprecado en v0.3.1; se eliminará en v1.0.
24
+ * - `color="surface"` **ya no es recomendado**. Use `primary`, `secondary`,
25
+ * o `tertiary` para asegurar un mapeo de color adecuado al tema M3.
26
26
  *
27
- * **Extended FABs:**
28
- * When `extended` is true, the FAB displays a text label next to the icon.
29
- * Extended FABs are wider and are typically used when the action needs explicit
30
- * text to be clear. The `expanded` attribute forces the FAB to its full extended
31
- * width, useful for animating between standard and extended states on scroll.
27
+ * **FABs Extendidos:**
28
+ * Cuando `extended` es true, el FAB muestra una etiqueta de texto junto al icono.
29
+ * Los FABs extendidos son más anchos y se usan típicamente cuando la acción necesita texto explícito
30
+ * para ser clara. El atributo `expanded` fuerza al FAB a su ancho extendido completo,
31
+ * útil para animar entre los estados estándar y extendido al desplazarse.
32
32
  *
33
- * **Positioning:**
34
- * The `position` attribute applies predefined absolute/fixed positioning
35
- * (e.g. `bottom-trailing`), snapping the FAB to standard screen corners.
33
+ * **Posicionamiento:**
34
+ * El atributo `position` aplica un posicionamiento absoluto/fijo predefinido
35
+ * (ej. `bottom-trailing`), encajando el FAB en las esquinas estándar de la pantalla.
36
36
  *
37
37
  * @example
38
38
  * ```html
39
- * <!-- Standard primary FAB -->
39
+ * <!-- FAB primario estándar -->
40
40
  * <moni-fab icon="edit"></moni-fab>
41
41
  *
42
- * <!-- Extended tertiary FAB -->
43
- * <moni-fab color="tertiary" extended icon="add" label="New task"></moni-fab>
42
+ * <!-- FAB terciario extendido -->
43
+ * <moni-fab color="tertiary" extended icon="add" label="Nueva tarea"></moni-fab>
44
44
  *
45
- * <!-- Positioned FAB -->
45
+ * <!-- FAB posicionado -->
46
46
  * <moni-fab position="bottom-trailing" icon="navigation"></moni-fab>
47
47
  * ```
48
48
  *
49
- * @csspart button - The internal `<button>` element.
50
- * @csspart icon - The container for the icon.
51
- * @csspart label - The text label (only visible when extended).
49
+ * @csspart button - El elemento `<button>` interno.
50
+ * @csspart icon - El contenedor para el icono.
51
+ * @csspart label - La etiqueta de texto (solo visible cuando está extendido).
52
52
  */
53
53
  export declare class MoniFab extends MoniElement {
54
54
  private static _deprecationWarned;
55
+ /**
56
+ * Define las dimensiones del FAB.
57
+ * `small` está deprecado en M3 Expressive.
58
+ * @type {'small' | 'medium' | 'large'}
59
+ * @default 'medium'
60
+ */
55
61
  size: 'small' | 'medium' | 'large';
62
+ /**
63
+ * Mapeo de color semántico del FAB.
64
+ * `surface` está deprecado en M3.
65
+ * @type {'primary' | 'secondary' | 'tertiary' | 'surface'}
66
+ * @default 'primary'
67
+ */
56
68
  color: 'primary' | 'secondary' | 'tertiary' | 'surface';
69
+ /**
70
+ * Forma de las esquinas del FAB.
71
+ * `circle` está deprecado en M3 (los FABs deben ser cuadrados redondeados).
72
+ * @type {'rounded' | 'circle'}
73
+ * @default 'rounded'
74
+ */
57
75
  shape: 'rounded' | 'circle';
76
+ /**
77
+ * Alias heredado de `expanded`. Indica si el FAB muestra una etiqueta de texto.
78
+ * @type {boolean}
79
+ */
58
80
  extended: boolean;
81
+ /**
82
+ * Si es true, expande el FAB para mostrar su etiqueta de texto junto al icono.
83
+ * @type {boolean}
84
+ */
59
85
  expanded: boolean;
86
+ /**
87
+ * Deshabilita el FAB.
88
+ * @type {boolean}
89
+ */
60
90
  disabled: boolean;
91
+ /**
92
+ * Nombre del icono (Material Symbols) mostrado dentro del FAB.
93
+ * @type {string}
94
+ * @default 'add'
95
+ */
61
96
  icon: string;
97
+ /**
98
+ * Etiqueta de texto mostrada cuando el FAB se expande/extiende.
99
+ * @type {string}
100
+ */
62
101
  label: string;
102
+ /**
103
+ * Fija la posición del FAB relativa a los bordes de la pantalla.
104
+ * @type {'bottom-trailing' | 'bottom-leading' | 'top-trailing' | 'top-leading'}
105
+ * @default 'bottom-trailing'
106
+ */
63
107
  position: 'bottom-trailing' | 'bottom-leading' | 'top-trailing' | 'top-leading';
64
108
  connectedCallback(): void;
65
109
  static styles: import("lit").CSSResult[];
110
+ /**
111
+ * Renderiza el botón FAB con su icono, etiqueta extendida opcional, y estado de carga.
112
+ *
113
+ * **Composición de clases:**
114
+ * - `'fab'` — estilos base del FAB (redondo, 56dp, elevado).
115
+ * - `this.size` (`'small'` = 40dp, `'large'` = 96dp, por defecto = 56dp).
116
+ * - `this.variant` — esquema de color (`'primary'`, `'secondary'`, `'tertiary'`, `'surface'`).
117
+ * - `'extended'` — se añade cuando se establece `label`; ensancha el FAB en forma de píldora
118
+ * y revela el texto de la etiqueta con una transición CSS `max-width`.
119
+ *
120
+ * **Estado de carga:**
121
+ * Cuando `loading=true`, un spinner `<moni-progress>` reemplaza el icono. La etiqueta
122
+ * permanece visible para mantener el ancho del FAB extendido y prevenir saltos de diseño.
123
+ */
66
124
  render(): import("lit").TemplateResult<1>;
67
125
  }
68
126
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-fab.d.ts","sourceRoot":"","sources":["../../src/components/moni-fab.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBACa,OAAQ,SAAQ,WAAW;IACvC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAS;IAG1C,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE9C,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAa;IAEpE,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAa;IACI,QAAQ,UAAS;IACjB,QAAQ,UAAS;IACjB,QAAQ,UAAS;IAChC,IAAI,SAAS;IACb,KAAK,SAAM;IAExC,QAAQ,EACL,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,GACd,aAAa,CAAqB;IAE5B,iBAAiB,IAAI,IAAI;IAkBlC,OAAgB,MAAM,4BA6JpB;IAEO,MAAM;CAyBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,UAAU,EAAE,OAAO,CAAC;KACpB;CACD;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"moni-fab.d.ts","sourceRoot":"","sources":["../../src/components/moni-fab.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBACa,OAAQ,SAAQ,WAAW;IACvC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAS;IAE1C;;;;;OAKG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE9C;;;;;OAKG;IAEH,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAa;IAEpE;;;;;OAKG;IAEH,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAa;IAExC;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;;;OAIG;IAC0B,IAAI,SAAS;IAE1C;;;OAGG;IAC0B,KAAK,SAAM;IAExC;;;;OAIG;IAEH,QAAQ,EACL,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,GACd,aAAa,CAAqB;IAE5B,iBAAiB,IAAI,IAAI;IAkBlC,OAAgB,MAAM,4BA6JpB;IAEF;;;;;;;;;;;;;OAaG;IACM,MAAM;CAyBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,UAAU,EAAE,OAAO,CAAC;KACpB;CACD;AAED,eAAe,OAAO,CAAC"}