@moni-labs/moni-ui 0.3.1 → 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 +5181 -1043
  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 +471 -53
  31. package/dist/components/moni-carousel.d.ts.map +1 -1
  32. package/dist/components/moni-carousel.js +862 -264
  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 +953 -290
  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,51 +6,96 @@
6
6
  */
7
7
  import { MoniElement } from './_base/index.js';
8
8
  /**
9
- * Material Design 3 Split Button component.
9
+ * Componente Material Design 3 Split Button (Botón dividido).
10
10
  *
11
- * A split button combines a primary action button with a secondary dropdown
12
- * button. The two buttons sit flush against each other, typically sharing
13
- * a background color and elevation, but separated by a distinct border.
11
+ * Un botón dividido combina un botón de acción principal con un botón secundario desplegable.
12
+ * Los dos botones se asientan a ras uno del otro, típicamente compartiendo
13
+ * un color de fondo y elevación, pero separados por un borde distinto.
14
14
  *
15
- * **Visual architecture:**
16
- * The component acts as a layout container (`display: inline-flex`) that
17
- * groups two standard buttons. It overrides the margins of the trailing
18
- * button to create the "connected" look (similar to connected button groups).
15
+ * **Arquitectura visual:**
16
+ * El componente actúa como un contenedor de diseño (`display: inline-flex`) que
17
+ * agrupa dos botones estándar. Anula (overrides) los márgenes del botón posterior (trailing)
18
+ * para crear el aspecto "conectado" (similar a los grupos de botones conectados).
19
19
  *
20
- * **Usage:**
21
- * Consumers must provide exactly two buttons via the named slots:
22
- * - `slot="leading-button"` — The primary action (usually text or text+icon).
23
- * - `slot="trailing-button"` — The secondary action (usually just a dropdown icon).
20
+ * **Uso:**
21
+ * Los consumidores deben proporcionar exactamente dos botones a través de los slots con nombre:
22
+ * - `slot="leading-button"` — La acción principal (usualmente texto o texto+icono).
23
+ * - `slot="trailing-button"` — La acción secundaria (usualmente solo un icono desplegable).
24
24
  *
25
- * Both buttons should be standard `<moni-button>` or `<moni-icon-button>`
26
- * elements configured with matching variants for a cohesive appearance.
25
+ * Ambos botones deben ser elementos `<moni-button>` o `<moni-icon-button>` estándar
26
+ * configurados con variantes coincidentes para una apariencia cohesiva.
27
27
  *
28
28
  * @example
29
29
  * ```html
30
30
  * <moni-split-button variant="filled">
31
- * <moni-button slot="leading-button" icon="send">Send</moni-button>
31
+ * <moni-button slot="leading-button" icon="send">Enviar</moni-button>
32
32
  * <moni-button slot="trailing-button" icon="arrow_drop_down" id="schedule-trigger"></moni-button>
33
33
  * </moni-split-button>
34
34
  *
35
35
  * <moni-menu id="schedule-menu" placement="bottom">
36
- * <moni-menu-item>Schedule send...</moni-menu-item>
36
+ * <moni-menu-item>Programar envío...</moni-menu-item>
37
37
  * </moni-menu>
38
38
  * ```
39
39
  *
40
- * @slot leading-button - The primary action button on the left.
41
- * @slot trailing-button - The secondary action (dropdown trigger) on the right.
40
+ * @slot leading-button - El botón de acción principal a la izquierda.
41
+ * @slot trailing-button - La acción secundaria (disparador desplegable) a la derecha.
42
42
  */
43
43
  export declare class MoniSplitButton extends MoniElement {
44
+ /**
45
+ * Variante visual del contenedor del botón dividido.
46
+ * Pasa las sugerencias de estilo apropiadas a sus hijos.
47
+ * @type {'filled' | 'tonal' | 'outlined' | 'elevated'}
48
+ * @default 'filled'
49
+ */
44
50
  variant: 'filled' | 'tonal' | 'outlined' | 'elevated';
51
+ /**
52
+ * Tamaño global aplicado a ambos botones en los slots.
53
+ * @type {'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'extra'}
54
+ * @default 'medium'
55
+ */
45
56
  size: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'extra';
57
+ /**
58
+ * El espacio (gap) CSS entre los botones líder y posterior.
59
+ * Normalmente 1px o 0 según la especificación M3.
60
+ * @type {string}
61
+ */
46
62
  gap: string;
47
63
  private leadingElements;
48
64
  private trailingElements;
49
65
  static styles: import("lit").CSSResult[];
66
+ /**
67
+ * Hook del ciclo de vida reactivo (Lit).
68
+ * Responde a cualquier cambio en `variant`, `size` o `gap`
69
+ * forzando una actualización hacia todos los botones anidados.
70
+ */
50
71
  protected updated(changedProperties: Map<string | number | symbol, unknown>): void;
72
+ /**
73
+ * Manejador del slot change.
74
+ * Cuando los botones líder o cola se inyectan en el DOM,
75
+ * propaga las configuraciones físicas.
76
+ */
51
77
  private handleSlotChange;
52
78
  private getGapValue;
79
+ /**
80
+ * Sincronizador de Propiedades.
81
+ * Distingue explícitamente entre el botón primario (leading) y el secundario (trailing)
82
+ * que usualmente alberga un ícono de dropdown. A cada uno se le inyecta un `shape`
83
+ * distinto (`left-round-flat` vs `right-round-flat`) para que juntos formen una cápsula pill uniforme.
84
+ */
53
85
  private updateChildren;
86
+ /**
87
+ * Renderiza el botón dividido como un control compuesto: botón de acción principal + disparador desplegable.
88
+ *
89
+ * **Diseño de dos zonas:**
90
+ * - Botón principal (zona líder) — la acción principal; lleva el `icon` y
91
+ * la etiqueta del slot por defecto. Al hacer clic se dispara el evento principal `click`.
92
+ * - Disparador desplegable (zona posterior) — un botón de icono secundario (icono `expand_more`)
93
+ * que abre el menú desplegable. Ambas zonas comparten el mismo `variant` y `size`.
94
+ *
95
+ * **Borde compartido:**
96
+ * Los dos botones usan los atributos de forma (shape) `left-round` / `right-round` para
97
+ * crear una sola píldora (pill) conectada con un borde interior compartido.
98
+ */
54
99
  render(): import("lit").TemplateResult<1>;
55
100
  }
56
101
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-split-button.d.ts","sourceRoot":"","sources":["../../src/components/moni-split-button.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,eAAgB,SAAQ,WAAW;IAE/C,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAY;IAGjE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAG9E,GAAG,SAAM;IAGT,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,gBAAgB,CAAiB;IAEzC,OAAgB,MAAM,4BAoBpB;cAEiB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC;IAOpF,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;IAuBb,MAAM;CAYf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,eAAe,CAAC;KACrC;CACD;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"moni-split-button.d.ts","sourceRoot":"","sources":["../../src/components/moni-split-button.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,eAAgB,SAAQ,WAAW;IAC/C;;;;;OAKG;IAEH,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAY;IAEjE;;;;OAIG;IAEH,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE9E;;;;OAIG;IAEH,GAAG,SAAM;IAGT,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,gBAAgB,CAAiB;IAEzC,OAAgB,MAAM,4BAoBpB;IAEF;;;;OAIG;cACgB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC;IAOpF;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAWnB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;;;;;;;;;;OAYG;IACM,MAAM;CAYf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,eAAe,CAAC;KACrC;CACD;AAED,eAAe,eAAe,CAAC"}
@@ -14,45 +14,61 @@ import { html, css } from 'lit';
14
14
  import { customElement, property, queryAssignedElements } from 'lit/decorators.js';
15
15
  import { MoniElement, sharedStyles } from './_base/index.js';
16
16
  /**
17
- * Material Design 3 Split Button component.
17
+ * Componente Material Design 3 Split Button (Botón dividido).
18
18
  *
19
- * A split button combines a primary action button with a secondary dropdown
20
- * button. The two buttons sit flush against each other, typically sharing
21
- * a background color and elevation, but separated by a distinct border.
19
+ * Un botón dividido combina un botón de acción principal con un botón secundario desplegable.
20
+ * Los dos botones se asientan a ras uno del otro, típicamente compartiendo
21
+ * un color de fondo y elevación, pero separados por un borde distinto.
22
22
  *
23
- * **Visual architecture:**
24
- * The component acts as a layout container (`display: inline-flex`) that
25
- * groups two standard buttons. It overrides the margins of the trailing
26
- * button to create the "connected" look (similar to connected button groups).
23
+ * **Arquitectura visual:**
24
+ * El componente actúa como un contenedor de diseño (`display: inline-flex`) que
25
+ * agrupa dos botones estándar. Anula (overrides) los márgenes del botón posterior (trailing)
26
+ * para crear el aspecto "conectado" (similar a los grupos de botones conectados).
27
27
  *
28
- * **Usage:**
29
- * Consumers must provide exactly two buttons via the named slots:
30
- * - `slot="leading-button"` — The primary action (usually text or text+icon).
31
- * - `slot="trailing-button"` — The secondary action (usually just a dropdown icon).
28
+ * **Uso:**
29
+ * Los consumidores deben proporcionar exactamente dos botones a través de los slots con nombre:
30
+ * - `slot="leading-button"` — La acción principal (usualmente texto o texto+icono).
31
+ * - `slot="trailing-button"` — La acción secundaria (usualmente solo un icono desplegable).
32
32
  *
33
- * Both buttons should be standard `<moni-button>` or `<moni-icon-button>`
34
- * elements configured with matching variants for a cohesive appearance.
33
+ * Ambos botones deben ser elementos `<moni-button>` o `<moni-icon-button>` estándar
34
+ * configurados con variantes coincidentes para una apariencia cohesiva.
35
35
  *
36
36
  * @example
37
37
  * ```html
38
38
  * <moni-split-button variant="filled">
39
- * <moni-button slot="leading-button" icon="send">Send</moni-button>
39
+ * <moni-button slot="leading-button" icon="send">Enviar</moni-button>
40
40
  * <moni-button slot="trailing-button" icon="arrow_drop_down" id="schedule-trigger"></moni-button>
41
41
  * </moni-split-button>
42
42
  *
43
43
  * <moni-menu id="schedule-menu" placement="bottom">
44
- * <moni-menu-item>Schedule send...</moni-menu-item>
44
+ * <moni-menu-item>Programar envío...</moni-menu-item>
45
45
  * </moni-menu>
46
46
  * ```
47
47
  *
48
- * @slot leading-button - The primary action button on the left.
49
- * @slot trailing-button - The secondary action (dropdown trigger) on the right.
48
+ * @slot leading-button - El botón de acción principal a la izquierda.
49
+ * @slot trailing-button - La acción secundaria (disparador desplegable) a la derecha.
50
50
  */
51
51
  let MoniSplitButton = class MoniSplitButton extends MoniElement {
52
52
  constructor() {
53
53
  super(...arguments);
54
+ /**
55
+ * Variante visual del contenedor del botón dividido.
56
+ * Pasa las sugerencias de estilo apropiadas a sus hijos.
57
+ * @type {'filled' | 'tonal' | 'outlined' | 'elevated'}
58
+ * @default 'filled'
59
+ */
54
60
  this.variant = 'filled';
61
+ /**
62
+ * Tamaño global aplicado a ambos botones en los slots.
63
+ * @type {'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'extra'}
64
+ * @default 'medium'
65
+ */
55
66
  this.size = 'medium';
67
+ /**
68
+ * El espacio (gap) CSS entre los botones líder y posterior.
69
+ * Normalmente 1px o 0 según la especificación M3.
70
+ * @type {string}
71
+ */
56
72
  this.gap = '';
57
73
  }
58
74
  static { this.styles = [
@@ -76,12 +92,22 @@ let MoniSplitButton = class MoniSplitButton extends MoniElement {
76
92
  }
77
93
  `
78
94
  ]; }
95
+ /**
96
+ * Hook del ciclo de vida reactivo (Lit).
97
+ * Responde a cualquier cambio en `variant`, `size` o `gap`
98
+ * forzando una actualización hacia todos los botones anidados.
99
+ */
79
100
  updated(changedProperties) {
80
101
  super.updated(changedProperties);
81
102
  if (changedProperties.has('variant') || changedProperties.has('size') || changedProperties.has('gap')) {
82
103
  this.updateChildren();
83
104
  }
84
105
  }
106
+ /**
107
+ * Manejador del slot change.
108
+ * Cuando los botones líder o cola se inyectan en el DOM,
109
+ * propaga las configuraciones físicas.
110
+ */
85
111
  handleSlotChange() {
86
112
  this.updateChildren();
87
113
  }
@@ -101,6 +127,12 @@ let MoniSplitButton = class MoniSplitButton extends MoniElement {
101
127
  return '0.5rem';
102
128
  return gap;
103
129
  }
130
+ /**
131
+ * Sincronizador de Propiedades.
132
+ * Distingue explícitamente entre el botón primario (leading) y el secundario (trailing)
133
+ * que usualmente alberga un ícono de dropdown. A cada uno se le inyecta un `shape`
134
+ * distinto (`left-round-flat` vs `right-round-flat`) para que juntos formen una cápsula pill uniforme.
135
+ */
104
136
  updateChildren() {
105
137
  const leading = this.leadingElements.find((el) => el.tagName.toLowerCase() === 'moni-button' || el.tagName.toLowerCase() === 'moni-icon-button');
106
138
  const trailing = this.trailingElements.find((el) => el.tagName.toLowerCase() === 'moni-button' || el.tagName.toLowerCase() === 'moni-icon-button');
@@ -116,6 +148,19 @@ let MoniSplitButton = class MoniSplitButton extends MoniElement {
116
148
  trailing.setAttribute('variant', this.variant);
117
149
  }
118
150
  }
151
+ /**
152
+ * Renderiza el botón dividido como un control compuesto: botón de acción principal + disparador desplegable.
153
+ *
154
+ * **Diseño de dos zonas:**
155
+ * - Botón principal (zona líder) — la acción principal; lleva el `icon` y
156
+ * la etiqueta del slot por defecto. Al hacer clic se dispara el evento principal `click`.
157
+ * - Disparador desplegable (zona posterior) — un botón de icono secundario (icono `expand_more`)
158
+ * que abre el menú desplegable. Ambas zonas comparten el mismo `variant` y `size`.
159
+ *
160
+ * **Borde compartido:**
161
+ * Los dos botones usan los atributos de forma (shape) `left-round` / `right-round` para
162
+ * crear una sola píldora (pill) conectada con un borde interior compartido.
163
+ */
119
164
  render() {
120
165
  const resolvedGap = this.getGapValue(this.gap);
121
166
  const inlineStyles = resolvedGap
@@ -7,42 +7,42 @@
7
7
  import { MoniElement } from './_base/index.js';
8
8
  import './moni-icon.js';
9
9
  /**
10
- * Material Design 3 Step component.
10
+ * Componente Material Design 3 Step (Paso).
11
11
  *
12
- * An individual step within a `<moni-stepper>`. Steps display progress through
13
- * a sequence of logical and numbered operations.
12
+ * Un paso individual dentro de un `<moni-stepper>`. Los pasos muestran el progreso a través
13
+ * de una secuencia de operaciones lógicas y numeradas.
14
14
  *
15
- * **M3 spec reference:** `m3-docs/components/progress-indicators/specs.md` (Stepper pattern)
15
+ * **Referencia a la especificación M3:** `m3-docs/components/progress-indicators/specs.md` (Patrón Stepper)
16
16
  *
17
- * **Anatomy & Visuals:**
18
- * A step renders a circular indicator containing either its sequence number
19
- * (automatically injected by the parent stepper) or a custom icon. Below or
20
- * beside the indicator (depending on the parent's `orientation`), it renders
21
- * the `title` and an optional `description`.
17
+ * **Anatomía y aspecto visual:**
18
+ * Un paso renderiza un indicador circular que contiene ya sea su número de secuencia
19
+ * (inyectado automáticamente por el stepper padre) o un icono personalizado. Debajo o
20
+ * al lado del indicador (dependiendo de la `orientation` del padre), renderiza
21
+ * el `title` (título) y un `description` (descripción) opcional.
22
22
  *
23
- * **State management:**
24
- * The parent `<moni-stepper>` automatically calculates and injects the `index`,
25
- * `active`, and `completed` properties based on its current state.
26
- * - **Active:** Highlighted with the primary color, indicating the current step.
27
- * - **Completed:** Displayed with a solid primary background and a checkmark
28
- * icon (`completed` state overrides the numeric index).
23
+ * **Gestión del estado:**
24
+ * El `<moni-stepper>` padre calcula e inyecta automáticamente las propiedades `index`,
25
+ * `active` y `completed` basándose en su estado actual.
26
+ * - **Activo (Active):** Resaltado con el color primario, indicando el paso actual.
27
+ * - **Completado (Completed):** Se muestra con un fondo primario sólido y un icono de
28
+ * marca de verificación (el estado `completed` anula el índice numérico).
29
29
  *
30
30
  * @example
31
31
  * ```html
32
- * <!-- Typically used inside a stepper -->
32
+ * <!-- Típicamente usado dentro de un stepper -->
33
33
  * <moni-stepper current="1">
34
- * <moni-step title="Shipping" description="Enter address"></moni-step>
35
- * <moni-step title="Payment" description="Credit card details"></moni-step>
36
- * <moni-step title="Review" description="Confirm order"></moni-step>
34
+ * <moni-step title="Envío" description="Ingresar dirección"></moni-step>
35
+ * <moni-step title="Pago" description="Detalles de tarjeta de crédito"></moni-step>
36
+ * <moni-step title="Revisión" description="Confirmar pedido"></moni-step>
37
37
  * </moni-stepper>
38
38
  *
39
- * <!-- Overriding the icon -->
40
- * <moni-step title="Done" icon="celebration"></moni-step>
39
+ * <!-- Anulando el icono -->
40
+ * <moni-step title="Hecho" icon="celebration"></moni-step>
41
41
  * ```
42
42
  *
43
- * @csspart step-indicator - The circular badge containing the number/icon.
44
- * @csspart title - The main title text.
45
- * @csspart description - The secondary description text.
43
+ * @csspart step-indicator - La insignia circular que contiene el número/icono.
44
+ * @csspart title - El texto principal del título.
45
+ * @csspart description - El texto secundario de la descripción.
46
46
  */
47
47
  export declare class MoniStep extends MoniElement {
48
48
  title: string;
@@ -52,6 +52,18 @@ export declare class MoniStep extends MoniElement {
52
52
  icon: string;
53
53
  index: number;
54
54
  static styles: import("lit").CSSResult[];
55
+ /**
56
+ * Renderiza el indicador del paso y la etiqueta (el conector se hace vía CSS ::after).
57
+ *
58
+ * **Indicador de paso (Step indicator):**
59
+ * - `completed=true` — muestra un icono de marca de verificación.
60
+ * - `active=true` — muestra el número de paso en un contenedor resaltado (vía CSS).
61
+ * - De lo contrario — muestra el número de paso en un estilo tenue.
62
+ *
63
+ * **Contenido del Slot:**
64
+ * El slot por defecto permite a los consumidores proyectar contenido personalizado
65
+ * dentro del cuerpo del paso.
66
+ */
55
67
  render(): import("lit").TemplateResult<1>;
56
68
  }
57
69
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-step.d.ts","sourceRoot":"","sources":["../../src/components/moni-step.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBACa,QAAS,SAAQ,WAAW;IACX,KAAK,SAAM;IACX,WAAW,SAAM;IACF,MAAM,UAAS;IACf,SAAS,UAAS;IACjC,IAAI,SAAM;IACI,KAAK,SAAK;IAErD,OAAgB,MAAM,4BAqGpB;IAEO,MAAM;CAkBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"moni-step.d.ts","sourceRoot":"","sources":["../../src/components/moni-step.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBACa,QAAS,SAAQ,WAAW;IACX,KAAK,SAAM;IACX,WAAW,SAAM;IACF,MAAM,UAAS;IACf,SAAS,UAAS;IACjC,IAAI,SAAM;IACI,KAAK,SAAK;IAErD,OAAgB,MAAM,4BAqGpB;IAEF;;;;;;;;;;;OAWG;IACM,MAAM;CAkBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
@@ -15,42 +15,42 @@ 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 Step component.
18
+ * Componente Material Design 3 Step (Paso).
19
19
  *
20
- * An individual step within a `<moni-stepper>`. Steps display progress through
21
- * a sequence of logical and numbered operations.
20
+ * Un paso individual dentro de un `<moni-stepper>`. Los pasos muestran el progreso a través
21
+ * de una secuencia de operaciones lógicas y numeradas.
22
22
  *
23
- * **M3 spec reference:** `m3-docs/components/progress-indicators/specs.md` (Stepper pattern)
23
+ * **Referencia a la especificación M3:** `m3-docs/components/progress-indicators/specs.md` (Patrón Stepper)
24
24
  *
25
- * **Anatomy & Visuals:**
26
- * A step renders a circular indicator containing either its sequence number
27
- * (automatically injected by the parent stepper) or a custom icon. Below or
28
- * beside the indicator (depending on the parent's `orientation`), it renders
29
- * the `title` and an optional `description`.
25
+ * **Anatomía y aspecto visual:**
26
+ * Un paso renderiza un indicador circular que contiene ya sea su número de secuencia
27
+ * (inyectado automáticamente por el stepper padre) o un icono personalizado. Debajo o
28
+ * al lado del indicador (dependiendo de la `orientation` del padre), renderiza
29
+ * el `title` (título) y un `description` (descripción) opcional.
30
30
  *
31
- * **State management:**
32
- * The parent `<moni-stepper>` automatically calculates and injects the `index`,
33
- * `active`, and `completed` properties based on its current state.
34
- * - **Active:** Highlighted with the primary color, indicating the current step.
35
- * - **Completed:** Displayed with a solid primary background and a checkmark
36
- * icon (`completed` state overrides the numeric index).
31
+ * **Gestión del estado:**
32
+ * El `<moni-stepper>` padre calcula e inyecta automáticamente las propiedades `index`,
33
+ * `active` y `completed` basándose en su estado actual.
34
+ * - **Activo (Active):** Resaltado con el color primario, indicando el paso actual.
35
+ * - **Completado (Completed):** Se muestra con un fondo primario sólido y un icono de
36
+ * marca de verificación (el estado `completed` anula el índice numérico).
37
37
  *
38
38
  * @example
39
39
  * ```html
40
- * <!-- Typically used inside a stepper -->
40
+ * <!-- Típicamente usado dentro de un stepper -->
41
41
  * <moni-stepper current="1">
42
- * <moni-step title="Shipping" description="Enter address"></moni-step>
43
- * <moni-step title="Payment" description="Credit card details"></moni-step>
44
- * <moni-step title="Review" description="Confirm order"></moni-step>
42
+ * <moni-step title="Envío" description="Ingresar dirección"></moni-step>
43
+ * <moni-step title="Pago" description="Detalles de tarjeta de crédito"></moni-step>
44
+ * <moni-step title="Revisión" description="Confirmar pedido"></moni-step>
45
45
  * </moni-stepper>
46
46
  *
47
- * <!-- Overriding the icon -->
48
- * <moni-step title="Done" icon="celebration"></moni-step>
47
+ * <!-- Anulando el icono -->
48
+ * <moni-step title="Hecho" icon="celebration"></moni-step>
49
49
  * ```
50
50
  *
51
- * @csspart step-indicator - The circular badge containing the number/icon.
52
- * @csspart title - The main title text.
53
- * @csspart description - The secondary description text.
51
+ * @csspart step-indicator - La insignia circular que contiene el número/icono.
52
+ * @csspart title - El texto principal del título.
53
+ * @csspart description - El texto secundario de la descripción.
54
54
  */
55
55
  let MoniStep = class MoniStep extends MoniElement {
56
56
  constructor() {
@@ -96,11 +96,11 @@ let MoniStep = class MoniStep extends MoniElement {
96
96
  min-block-size: 4rem;
97
97
  }
98
98
 
99
- /* Vertical connector. Geometry: the dot occupies y=0 to y=2rem at
100
- the top of the step (host is column flex with min-block-size 4rem).
101
- The connector runs from the BOTTOM of the current dot (y=2rem) to
102
- the BOTTOM of the current step (y=100%). This formula stays
103
- calibrated regardless of step height. */
99
+ /* Conector vertical. Geometría: el punto (dot) ocupa y=0 a y=2rem en
100
+ la parte superior del paso (el host es flex de columna con min-block-size 4rem).
101
+ El conector va desde la parte INFERIOR del punto actual (y=2rem) hasta
102
+ la parte INFERIOR del paso actual (y=100%). Esta fórmula se mantiene
103
+ calibrada independientemente de la altura del paso. */
104
104
  :host-context(moni-stepper[orientation='vertical']):host(:not(:last-child))::after {
105
105
  position: absolute;
106
106
  inset-inline-start: calc(1rem - 0.03125rem);
@@ -164,6 +164,18 @@ let MoniStep = class MoniStep extends MoniElement {
164
164
  }
165
165
  `
166
166
  ]; }
167
+ /**
168
+ * Renderiza el indicador del paso y la etiqueta (el conector se hace vía CSS ::after).
169
+ *
170
+ * **Indicador de paso (Step indicator):**
171
+ * - `completed=true` — muestra un icono de marca de verificación.
172
+ * - `active=true` — muestra el número de paso en un contenedor resaltado (vía CSS).
173
+ * - De lo contrario — muestra el número de paso en un estilo tenue.
174
+ *
175
+ * **Contenido del Slot:**
176
+ * El slot por defecto permite a los consumidores proyectar contenido personalizado
177
+ * dentro del cuerpo del paso.
178
+ */
167
179
  render() {
168
180
  const dot = this.completed
169
181
  ? html `<moni-icon name="check"></moni-icon>`
@@ -6,61 +6,98 @@
6
6
  */
7
7
  import { MoniElement } from './_base/index.js';
8
8
  /**
9
- * Material Design 3 Stepper component.
9
+ * Componente Material Design 3 Stepper (Pasos/Progresión).
10
10
  *
11
- * A container for a linear progression of `<moni-step>` elements. Steppers
12
- * convey progress through numbered steps and indicate the user's current
13
- * position within a flow.
11
+ * Un contenedor para una progresión lineal de elementos `<moni-step>`. Los steppers
12
+ * transmiten el progreso a través de pasos numerados e indican la posición
13
+ * actual del usuario dentro de un flujo.
14
14
  *
15
- * **M3 spec reference:** `m3-docs/components/progress-indicators/specs.md`
15
+ * **Referencia a la especificación M3:** `m3-docs/components/progress-indicators/specs.md`
16
16
  *
17
- * **Orchestration:**
18
- * This component acts as the orchestrator for its slotted `<moni-step>` children.
19
- * Whenever the `current` property changes, or children are added/removed, the
20
- * stepper iterates over all child steps and injects their state:
21
- * - Assigns the sequential `index` (0-based) to each step.
22
- * - Sets `active=true` on the step matching the `current` index.
23
- * - Sets `completed=true` on all steps prior to the `current` index.
17
+ * **Orquestación:**
18
+ * Este componente actúa como orquestador para sus hijos `<moni-step>` en los slots.
19
+ * Cada vez que cambia la propiedad `current` o se añaden/eliminan hijos, el
20
+ * stepper itera sobre todos los pasos hijos e inyecta su estado:
21
+ * - Asigna el `index` secuencial (basado en 0) a cada paso.
22
+ * - Establece `active=true` en el paso que coincide con el índice `current`.
23
+ * - Establece `completed=true` en todos los pasos anteriores al índice `current`.
24
24
  *
25
- * **Visual layout:**
26
- * The stepper manages the layout (flex row or column based on `orientation`)
27
- * and ensures the connector lines between steps are rendered correctly via
28
- * CSS pseudo-elements defined in the child `<moni-step>` styling.
25
+ * **Diseño visual:**
26
+ * El stepper maneja el diseño (flex row o column basado en `orientation`)
27
+ * y asegura que las líneas conectoras entre los pasos se rendericen correctamente a través de
28
+ * pseudo-elementos CSS definidos en los estilos del `<moni-step>` hijo.
29
29
  *
30
30
  * @example
31
31
  * ```html
32
32
  * <moni-stepper current="1" orientation="horizontal">
33
- * <moni-step title="Step 1"></moni-step>
34
- * <moni-step title="Step 2"></moni-step>
35
- * <moni-step title="Step 3"></moni-step>
33
+ * <moni-step title="Paso 1"></moni-step>
34
+ * <moni-step title="Paso 2"></moni-step>
35
+ * <moni-step title="Paso 3"></moni-step>
36
36
  * </moni-stepper>
37
37
  *
38
38
  * <script>
39
39
  * const stepper = document.querySelector('moni-stepper');
40
- * // Move to next step
40
+ * // Mover al siguiente paso
41
41
  * stepper.current = 2;
42
42
  * </script>
43
43
  * ```
44
44
  *
45
- * @slot default - `<moni-step>` elements.
45
+ * @slot default - Elementos `<moni-step>`.
46
46
  */
47
47
  export declare class MoniStepper extends MoniElement {
48
48
  orientation: 'horizontal' | 'vertical';
49
49
  current: number;
50
50
  private _steps;
51
+ /**
52
+ * Hook del ciclo de vida reactivo (Lit).
53
+ * Cuando la orientación o el índice actual cambian, sincroniza
54
+ * el estado hacia todos los elementos hijos (`<moni-step>`).
55
+ */
51
56
  updated(changed: Map<string, unknown>): void;
52
57
  /**
53
- * Propagate the `current` index to each child <moni-step>:
54
- * - sets `index` from the child's position
55
- * - sets `completed` on every step before `current`
56
- * - sets `active` on the step at `current`
58
+ * Propaga el índice del paso actual a cada elemento hijo `<moni-step>` en los slots,
59
+ * calculando e inyectando el estado de `index`, `completed` y `active`.
60
+ *
61
+ * **Diferimiento por microtarea (`Promise.resolve().then(...)`):**
62
+ * `@queryAssignedElements` de Lit se ejecuta sincrónicamente y no está disponible hasta
63
+ * después del primer renderizado conectado. Diferirlo a una microtarea asegura que los hijos
64
+ * en los slots hayan terminado su propio ciclo de vida `firstUpdated()` antes de que les escribamos
65
+ * el estado. Sin este diferimiento, escribir `step.active = true` durante el `updated()`
66
+ * del padre puede desencadenar renderizados hijos antes de que se apliquen sus estilos.
57
67
  *
58
- * Deferred to a microtask so that slotted children are guaranteed
59
- * to have finished their first update cycle before we write to them.
68
+ * **Respaldo de `querySelectorAll`:**
69
+ * `_steps` (de `@queryAssignedElements`) devuelve un array vacío antes del primer
70
+ * renderizado o cuando no hay elementos `<moni-step>` presentes en el slot. El respaldo
71
+ * a `querySelectorAll('moni-step')` maneja casos extremos donde se añaden pasos
72
+ * programáticamente sin pasar por el mecanismo de slots de Lit.
73
+ *
74
+ * **Bucle de inyección de estado:**
75
+ * Para cada `<moni-step>` en la posición `stepIndex`:
76
+ * - `stepElement.index = stepIndex` — proporciona el número de paso para su etiqueta.
77
+ * - `stepElement.completed = stepIndex < current` — verdadero para todos los pasos anteriores a `current`.
78
+ * - `stepElement.active = stepIndex === current` — verdadero solo para el paso en `current`.
60
79
  */
61
80
  private _syncSteps;
62
81
  static styles: import("lit").CSSResult[];
82
+ /**
83
+ * Renderiza el contenedor de lista ordenada (`<ol>`) que contiene los hijos `<moni-step>` en los slots.
84
+ *
85
+ * **Anatomía:**
86
+ * - El `<ol>` usa `list-style: none` y un diseño flex (fila o columna, basado en
87
+ * `orientation`) en lugar del renderizado nativo de lista ordenada, porque la
88
+ * visualización del número de paso es manejada por cada hijo `<moni-step>`.
89
+ * - La vinculación del evento `@slotchange` asegura que se llame a `_syncSteps()`
90
+ * cada vez que el consumidor añade o elimina elementos `<moni-step>` en tiempo de ejecución,
91
+ * manteniendo los estados `index`, `active` y `completed` sincronizados.
92
+ * - Cada `<moni-step>` en el slot está estilizado con `flex: 1` para que todos los pasos
93
+ * compartan el ancho disponible equitativamente (horizontal) o la altura (vertical).
94
+ */
63
95
  render(): import("lit").TemplateResult<1>;
96
+ /**
97
+ * Handler dinámico del slot.
98
+ * Detecta si el usuario añade o elimina pasos nativos (`<moni-step>`)
99
+ * desde el DOM en tiempo de ejecución, forzando una re-sincronización.
100
+ */
64
101
  private _onSlotChange;
65
102
  }
66
103
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-stepper.d.ts","sourceRoot":"","sources":["../../src/components/moni-stepper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBACa,WAAY,SAAQ,WAAW;IAE3C,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IACX,OAAO,SAAK;IAGvD,OAAO,CAAC,MAAM,CAAc;IAEnB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU9C;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;IAclB,OAAgB,MAAM,4BAwBpB;IAEO,MAAM;IAMf,OAAO,CAAC,aAAa,CAGnB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,WAAW,CAAC;KAC5B;CACD;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"moni-stepper.d.ts","sourceRoot":"","sources":["../../src/components/moni-stepper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBACa,WAAY,SAAQ,WAAW;IAE3C,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IACX,OAAO,SAAK;IAGvD,OAAO,CAAC,MAAM,CAAc;IAE5B;;;;OAIG;IACM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU9C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,UAAU;IAelB,OAAgB,MAAM,4BAwBpB;IAEF;;;;;;;;;;;;OAYG;IACM,MAAM;IAMf;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAGnB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,WAAW,CAAC;KAC5B;CACD;AAED,eAAe,WAAW,CAAC"}