@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
@@ -15,35 +15,35 @@ 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 Tab component.
18
+ * Componente Material Design 3 Tab (Pestaña).
19
19
  *
20
- * An individual interactive tab element designed to be placed inside a
21
- * `<moni-tabs>` container. Tabs organize content across different screens,
22
- * data sets, and other interactions.
20
+ * Un elemento interactivo de pestaña individual diseñado para ser colocado dentro de un
21
+ * contenedor `<moni-tabs>`. Las pestañas organizan el contenido en diferentes pantallas,
22
+ * conjuntos de datos y otras interacciones.
23
23
  *
24
- * **M3 spec reference:** `m3-docs/components/tabs/specs.md`
24
+ * **Referencia a la especificación M3:** `m3-docs/components/tabs/specs.md`
25
25
  *
26
- * **Visual layout & interaction:**
27
- * Internally renders as an `<a>` element to support native link behavior when
28
- * an `href` is provided, but behaves visually as a tab button. It displays a
29
- * text label and an optional Material icon. If the parent `<moni-tabs>` has the
30
- * `vertical` attribute set, the layout automatically adjusts to stack the icon
31
- * above the text.
26
+ * **Diseño visual e interacción:**
27
+ * Internamente se renderiza como un elemento `<a>` para soportar el comportamiento nativo
28
+ * de enlace cuando se proporciona un `href`, pero se comporta visualmente como un botón de pestaña.
29
+ * Muestra una etiqueta de texto y un icono opcional de Material. Si el `<moni-tabs>` padre tiene el
30
+ * atributo `vertical` configurado, el diseño se ajusta automáticamente para apilar el icono
31
+ * encima del texto.
32
32
  *
33
- * **State:**
34
- * The `active` attribute highlights the tab, applying the primary color to the
35
- * text and rendering the active indicator line (handled via CSS in the parent
36
- * container or pseudo-elements).
33
+ * **Estado:**
34
+ * El atributo `active` resalta la pestaña, aplicando el color principal (primary) al
35
+ * texto y renderizando la línea indicadora activa (manejado vía CSS en el contenedor
36
+ * padre o mediante pseudo-elementos).
37
37
  *
38
38
  * @example
39
39
  * ```html
40
40
  * <moni-tabs>
41
- * <moni-tab active icon="home" label="Home"></moni-tab>
42
- * <moni-tab icon="settings" label="Settings" href="/settings"></moni-tab>
41
+ * <moni-tab active icon="home" label="Inicio"></moni-tab>
42
+ * <moni-tab icon="settings" label="Ajustes" href="/settings"></moni-tab>
43
43
  * </moni-tabs>
44
44
  * ```
45
45
  *
46
- * @csspart tab - The inner `<a>` element acting as the tab button.
46
+ * @csspart tab - El elemento `<a>` interno que actúa como botón de pestaña.
47
47
  */
48
48
  let MoniTab = class MoniTab extends MoniElement {
49
49
  constructor() {
@@ -118,8 +118,8 @@ let MoniTab = class MoniTab extends MoniElement {
118
118
  block-size: auto;
119
119
  }
120
120
 
121
- /* M3 indicator-size='min': 24dp tall (centered on tab) with
122
- 8dp top/bottom radiusmatches M3 spec § Indicator anatomy. */
121
+ /* M3 indicator-size='min': 24dp de altura (centrado en la pestaña) con
122
+ radio superior/inferior de 8dp coincide con la especificación M3 § Indicator anatomy. */
123
123
  :host-context(moni-tabs[indicator-size='min']) a.active::before {
124
124
  margin: 0 auto;
125
125
  max-inline-size: min(100%, 4rem);
@@ -135,12 +135,20 @@ let MoniTab = class MoniTab extends MoniElement {
135
135
  border-radius: 0.5rem;
136
136
  }
137
137
 
138
- /* M3 indicator-size='max': full tab height, no rounding. */
138
+ /* M3 indicator-size='max': altura completa de la pestaña, sin redondeo. */
139
139
  :host-context(moni-tabs[indicator-size='max']) a.active::before {
140
140
  border-radius: 0;
141
141
  }
142
142
  `
143
143
  ]; }
144
+ /**
145
+ * Renderiza el botón de pestaña con un icono opcional y etiqueta.
146
+ *
147
+ * El botón de pestaña es un elemento `<a>` con `aria-selected` para
148
+ * cumplimiento WCAG. La clase `active` controla la transición de subrayado
149
+ * del indicador CSS (a través del pseudo-elemento `::before`). El `<moni-icon>`
150
+ * opcional se renderiza antes del texto de la etiqueta cuando se establece `icon`.
151
+ */
144
152
  render() {
145
153
  return html `<a
146
154
  href=${this.href || '#'}
@@ -6,50 +6,50 @@
6
6
  */
7
7
  import { MoniElement } from './_base/index.js';
8
8
  /**
9
- * Material Design 3 Tabs container component.
9
+ * Componente Material Design 3 Tabs container (Contenedor de pestañas).
10
10
  *
11
- * A navigational container that groups multiple `<moni-tab>` elements. Tabs
12
- * organize content into high-level categories and allow the user to switch
13
- * between them.
11
+ * Un contenedor de navegación que agrupa múltiples elementos `<moni-tab>`. Las pestañas
12
+ * organizan el contenido en categorías de alto nivel y permiten al usuario alternar
13
+ * entre ellas.
14
14
  *
15
- * **M3 spec reference:** `m3-docs/components/tabs/specs.md`
15
+ * **Referencia a la especificación M3:** `m3-docs/components/tabs/specs.md`
16
16
  *
17
- * **Modes (Primary vs Secondary):**
18
- * - `primary` (default): Used for top-level navigation at the highest hierarchy,
19
- * often placed directly below a top app bar. They span the full width and
20
- * feature a prominent active indicator.
21
- * - `secondary`: Used for deeper content hierarchies within a specific area
22
- * or page. They are typically more subtle.
17
+ * **Modos (Primario vs Secundario):**
18
+ * - `primary` (por defecto): Usado para navegación de nivel superior en la jerarquía más alta,
19
+ * a menudo colocado directamente debajo de una barra de aplicación superior (top app bar).
20
+ * Abarcan todo el ancho y presentan un indicador activo prominente.
21
+ * - `secondary`: Usado para jerarquías de contenido más profundas dentro de un área
22
+ * o página específica. Típicamente son más sutiles.
23
23
  *
24
- * **Layout & Alignment:**
25
- * - `scrollable`: If the number of tabs exceeds the container width, this
26
- * enables horizontal scrolling (`overflow-x: auto`) rather than squishing.
27
- * - `align`: Controls how the tabs are distributed (`default` space-around,
28
- * `left`, `center`, or `right`).
29
- * - `vertical`: Stacks the icon above the text label inside the child tabs.
24
+ * **Diseño y alineación:**
25
+ * - `scrollable`: Si el número de pestañas excede el ancho del contenedor, esto
26
+ * habilita el desplazamiento horizontal (`overflow-x: auto`) en lugar de aplastarlas.
27
+ * - `align`: Controla cómo se distribuyen las pestañas (`default` space-around,
28
+ * `left`, `center`, o `right`).
29
+ * - `vertical`: Apila el icono sobre la etiqueta de texto dentro de las pestañas hijas.
30
30
  *
31
- * **Active Indicator:**
32
- * The `indicator-size` attribute allows customizing the width of the active
33
- * underline indicator (`default` fits the tab content, `min` is narrow, `max`
34
- * fills the full tab width).
31
+ * **Indicador Activo:**
32
+ * El atributo `indicator-size` permite personalizar el ancho del
33
+ * indicador de subrayado activo (`default` se ajusta al contenido de la pestaña, `min` es estrecho, `max`
34
+ * llena todo el ancho de la pestaña).
35
35
  *
36
36
  * @example
37
37
  * ```html
38
- * <!-- Primary, scrollable tabs -->
38
+ * <!-- Pestañas primarias, con desplazamiento (scrollable) -->
39
39
  * <moni-tabs scrollable>
40
- * <moni-tab active label="Flights"></moni-tab>
41
- * <moni-tab label="Trips"></moni-tab>
42
- * <moni-tab label="Explore"></moni-tab>
40
+ * <moni-tab active label="Vuelos"></moni-tab>
41
+ * <moni-tab label="Viajes"></moni-tab>
42
+ * <moni-tab label="Explorar"></moni-tab>
43
43
  * </moni-tabs>
44
44
  *
45
- * <!-- Secondary, centered tabs with vertical layout -->
45
+ * <!-- Pestañas secundarias, centradas con diseño vertical -->
46
46
  * <moni-tabs mode="secondary" align="center" vertical>
47
47
  * <moni-tab active icon="video_camera_front" label="Video"></moni-tab>
48
- * <moni-tab icon="photo_camera" label="Photo"></moni-tab>
48
+ * <moni-tab icon="photo_camera" label="Foto"></moni-tab>
49
49
  * </moni-tabs>
50
50
  * ```
51
51
  *
52
- * @slot default - `<moni-tab>` child elements.
52
+ * @slot default - Elementos hijos `<moni-tab>`.
53
53
  */
54
54
  export declare class MoniTabs extends MoniElement {
55
55
  mode: 'primary' | 'secondary';
@@ -58,6 +58,12 @@ export declare class MoniTabs extends MoniElement {
58
58
  align: 'default' | 'left' | 'center' | 'right';
59
59
  indicatorSize: 'default' | 'min' | 'max';
60
60
  static styles: import("lit").CSSResult[];
61
+ /**
62
+ * Renderiza el contenedor de navegación.
63
+ * Construye dinámicamente las clases CSS que habilitan los selectores estructurales
64
+ * (`mode`, `align`, `indicatorSize`) permitiendo que el componente hijo `moni-tab`
65
+ * herede estilos contextuales sin necesidad de inyectar variables complejas.
66
+ */
61
67
  render(): import("lit").TemplateResult<1>;
62
68
  }
63
69
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-tabs.d.ts","sourceRoot":"","sources":["../../src/components/moni-tabs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBACa,QAAS,SAAQ,WAAW;IAExC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAa;IACE,UAAU,UAAS;IACnB,QAAQ,UAAS;IAE7D,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAa;IAE3D,aAAa,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK,CAAa;IAErD,OAAgB,MAAM,4BAsCpB;IAEO,MAAM;CAcf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"moni-tabs.d.ts","sourceRoot":"","sources":["../../src/components/moni-tabs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBACa,QAAS,SAAQ,WAAW;IAExC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAa;IACE,UAAU,UAAS;IACnB,QAAQ,UAAS;IAE7D,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAa;IAE3D,aAAa,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK,CAAa;IAErD,OAAgB,MAAM,4BAsCpB;IAEF;;;;;OAKG;IACM,MAAM;CAcf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
@@ -14,50 +14,50 @@ 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 Tabs container component.
17
+ * Componente Material Design 3 Tabs container (Contenedor de pestañas).
18
18
  *
19
- * A navigational container that groups multiple `<moni-tab>` elements. Tabs
20
- * organize content into high-level categories and allow the user to switch
21
- * between them.
19
+ * Un contenedor de navegación que agrupa múltiples elementos `<moni-tab>`. Las pestañas
20
+ * organizan el contenido en categorías de alto nivel y permiten al usuario alternar
21
+ * entre ellas.
22
22
  *
23
- * **M3 spec reference:** `m3-docs/components/tabs/specs.md`
23
+ * **Referencia a la especificación M3:** `m3-docs/components/tabs/specs.md`
24
24
  *
25
- * **Modes (Primary vs Secondary):**
26
- * - `primary` (default): Used for top-level navigation at the highest hierarchy,
27
- * often placed directly below a top app bar. They span the full width and
28
- * feature a prominent active indicator.
29
- * - `secondary`: Used for deeper content hierarchies within a specific area
30
- * or page. They are typically more subtle.
25
+ * **Modos (Primario vs Secundario):**
26
+ * - `primary` (por defecto): Usado para navegación de nivel superior en la jerarquía más alta,
27
+ * a menudo colocado directamente debajo de una barra de aplicación superior (top app bar).
28
+ * Abarcan todo el ancho y presentan un indicador activo prominente.
29
+ * - `secondary`: Usado para jerarquías de contenido más profundas dentro de un área
30
+ * o página específica. Típicamente son más sutiles.
31
31
  *
32
- * **Layout & Alignment:**
33
- * - `scrollable`: If the number of tabs exceeds the container width, this
34
- * enables horizontal scrolling (`overflow-x: auto`) rather than squishing.
35
- * - `align`: Controls how the tabs are distributed (`default` space-around,
36
- * `left`, `center`, or `right`).
37
- * - `vertical`: Stacks the icon above the text label inside the child tabs.
32
+ * **Diseño y alineación:**
33
+ * - `scrollable`: Si el número de pestañas excede el ancho del contenedor, esto
34
+ * habilita el desplazamiento horizontal (`overflow-x: auto`) en lugar de aplastarlas.
35
+ * - `align`: Controla cómo se distribuyen las pestañas (`default` space-around,
36
+ * `left`, `center`, o `right`).
37
+ * - `vertical`: Apila el icono sobre la etiqueta de texto dentro de las pestañas hijas.
38
38
  *
39
- * **Active Indicator:**
40
- * The `indicator-size` attribute allows customizing the width of the active
41
- * underline indicator (`default` fits the tab content, `min` is narrow, `max`
42
- * fills the full tab width).
39
+ * **Indicador Activo:**
40
+ * El atributo `indicator-size` permite personalizar el ancho del
41
+ * indicador de subrayado activo (`default` se ajusta al contenido de la pestaña, `min` es estrecho, `max`
42
+ * llena todo el ancho de la pestaña).
43
43
  *
44
44
  * @example
45
45
  * ```html
46
- * <!-- Primary, scrollable tabs -->
46
+ * <!-- Pestañas primarias, con desplazamiento (scrollable) -->
47
47
  * <moni-tabs scrollable>
48
- * <moni-tab active label="Flights"></moni-tab>
49
- * <moni-tab label="Trips"></moni-tab>
50
- * <moni-tab label="Explore"></moni-tab>
48
+ * <moni-tab active label="Vuelos"></moni-tab>
49
+ * <moni-tab label="Viajes"></moni-tab>
50
+ * <moni-tab label="Explorar"></moni-tab>
51
51
  * </moni-tabs>
52
52
  *
53
- * <!-- Secondary, centered tabs with vertical layout -->
53
+ * <!-- Pestañas secundarias, centradas con diseño vertical -->
54
54
  * <moni-tabs mode="secondary" align="center" vertical>
55
55
  * <moni-tab active icon="video_camera_front" label="Video"></moni-tab>
56
- * <moni-tab icon="photo_camera" label="Photo"></moni-tab>
56
+ * <moni-tab icon="photo_camera" label="Foto"></moni-tab>
57
57
  * </moni-tabs>
58
58
  * ```
59
59
  *
60
- * @slot default - `<moni-tab>` child elements.
60
+ * @slot default - Elementos hijos `<moni-tab>`.
61
61
  */
62
62
  let MoniTabs = class MoniTabs extends MoniElement {
63
63
  constructor() {
@@ -107,6 +107,12 @@ let MoniTabs = class MoniTabs extends MoniElement {
107
107
  }
108
108
  `
109
109
  ]; }
110
+ /**
111
+ * Renderiza el contenedor de navegación.
112
+ * Construye dinámicamente las clases CSS que habilitan los selectores estructurales
113
+ * (`mode`, `align`, `indicatorSize`) permitiendo que el componente hijo `moni-tab`
114
+ * herede estilos contextuales sin necesidad de inyectar variables complejas.
115
+ */
110
116
  render() {
111
117
  const classes = [
112
118
  'tabs',
@@ -8,78 +8,188 @@ import { MoniElement } from './_base/index.js';
8
8
  import './moni-icon.js';
9
9
  import './moni-progress.js';
10
10
  /**
11
- * Material Design 3 Text Field component.
11
+ * Componente Material Design 3 Text Field (Campo de texto).
12
12
  *
13
- * A full-featured input field that wraps a native `<input>` inside the M3
14
- * field shell (`.field` class from `fieldStyles`). Supports floating labels,
15
- * filled and outlined variants, leading/trailing icons, helper text, and
16
- * error states.
13
+ * Un campo de entrada con todas las funciones que envuelve un `<input>` nativo dentro de la
14
+ * estructura de campo M3 (clase `.field` de `fieldStyles`). Soporta etiquetas flotantes,
15
+ * variantes llenas (filled) y contorneadas (outlined), iconos iniciales/finales (leading/trailing),
16
+ * texto de ayuda y estados de error.
17
17
  *
18
- * **M3 spec reference:** `m3-docs/components/text-fields/specs.md`
18
+ * **Referencia a la especificación M3:** `m3-docs/components/text-fields/specs.md`
19
19
  *
20
- * **Visual architecture:**
21
- * Uses `fieldStyles` for the complete CSS field shell. The field container
22
- * is a `<div class="field [modifiers]">` wrapping:
23
- * 1. Optional leading icon.
24
- * 2. Native `<input>` element.
25
- * 3. Floating `<label>` (when `label` is set).
26
- * 4. Optional trailing icon or loading spinner.
27
- * 5. `<output>` for helper/error text.
20
+ * **Arquitectura visual:**
21
+ * Utiliza `fieldStyles` para toda la estructura CSS del campo. El contenedor del campo
22
+ * es un `<div class="field [modifiers]">` que envuelve:
23
+ * 1. Icono inicial (leading) opcional.
24
+ * 2. Elemento `<input>` nativo.
25
+ * 3. `<label>` flotante (cuando se establece `label`).
26
+ * 4. Icono final (trailing) opcional o indicador de carga (spinner).
27
+ * 5. `<output>` para texto de ayuda/error.
28
28
  *
29
- * **Visual-only contract:**
30
- * This component does **not** listen to `@input` events to sync the `value`
31
- * attribute back from the underlying `<input>`. Consumers must either:
32
- * - Submit the native form (the `<input name>` participates in form submission).
33
- * - Listen to `change` or `input` events via standard DOM event handling.
34
- * - Use a framework binding (e.g. `bind:value` in Svelte, `v-model` in Vue).
29
+ * **Sincronización de eventos:**
30
+ * Emite `moni-input` en cada tipeo y `moni-change` al consolidar el valor (blur/enter).
31
+ * El valor interno del componente (`this.value`) se mantiene sincronizado automáticamente.
35
32
  *
36
33
  * @example
37
34
  * ```html
38
35
  * <moni-text-field
39
- * label="Email address"
36
+ * label="Dirección de correo"
40
37
  * type="email"
41
38
  * name="email"
42
39
  * icon="mail"
43
40
  * variant="outlined"
44
- * helper="We'll never share your email."
41
+ * helper="Nunca compartiremos tu correo."
45
42
  * ></moni-text-field>
46
43
  *
47
44
  * <moni-text-field
48
- * label="Amount"
45
+ * label="Monto"
49
46
  * type="number"
50
47
  * prefix="$"
51
48
  * error
52
- * error-text="Value must be positive"
49
+ * error-text="El valor debe ser positivo"
53
50
  * ></moni-text-field>
54
51
  * ```
55
52
  *
56
- * @csspart field - The outer `.field` div container.
57
- * @csspart input - The native `<input>` element.
58
- * @csspart label - The floating `<label>` element.
59
- * @csspart helper - The helper `<output>` element.
60
- * @csspart error-output - The error `<output>` element.
53
+ * @csspart field - El contenedor div `.field` exterior.
54
+ * @csspart input - El elemento `<input>` nativo.
55
+ * @csspart label - El elemento `<label>` flotante.
56
+ * @csspart helper - El elemento `<output>` de ayuda.
57
+ * @csspart error-output - El elemento `<output>` de error.
61
58
  */
62
59
  export declare class MoniTextField extends MoniElement {
60
+ static formAssociated: boolean;
61
+ private _internals;
62
+ constructor();
63
+ /**
64
+ * El nombre del input, enviado con los datos del formulario.
65
+ * @type {string}
66
+ */
63
67
  name: string;
68
+ /**
69
+ * El texto de la etiqueta flotante.
70
+ * @type {string}
71
+ */
64
72
  label: string;
73
+ /**
74
+ * Variante visual del campo de texto.
75
+ * @type {'filled' | 'outlined'}
76
+ * @default 'filled'
77
+ */
65
78
  variant: 'filled' | 'outlined';
79
+ /**
80
+ * Define las dimensiones del campo de texto.
81
+ * @type {'small' | 'medium' | 'large' | 'extra'}
82
+ * @default 'medium'
83
+ */
66
84
  size: 'small' | 'medium' | 'large' | 'extra';
85
+ /**
86
+ * Forma del radio del borde (border-radius) del campo.
87
+ * @type {'round' | 'square' | 'no-round'}
88
+ * @default 'no-round'
89
+ */
67
90
  shape: 'round' | 'square' | 'no-round';
91
+ /**
92
+ * El tipo de input HTML nativo.
93
+ * @type {'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search'}
94
+ * @default 'text'
95
+ */
68
96
  type: 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search';
97
+ /**
98
+ * Nombre del icono inicial (leading) (Material Symbols).
99
+ * @type {string}
100
+ */
69
101
  icon: string;
102
+ /**
103
+ * Nombre del icono final (trailing) (Material Symbols).
104
+ * @type {string}
105
+ */
70
106
  trailingIcon: string;
107
+ /**
108
+ * Prefijo de texto corto mostrado antes del valor del input.
109
+ * @type {string}
110
+ */
71
111
  prefix: string;
112
+ /**
113
+ * Sufijo de texto corto mostrado después del valor del input.
114
+ * @type {string}
115
+ */
72
116
  suffix: string;
117
+ /**
118
+ * Texto de ayuda mostrado debajo del campo.
119
+ * @type {string}
120
+ */
73
121
  helper: string;
122
+ /**
123
+ * Texto de error mostrado debajo del campo cuando `error` es true.
124
+ * Sobrescribe el texto de ayuda.
125
+ * @type {string}
126
+ */
74
127
  errorText: string;
128
+ /**
129
+ * Si es true, establece el campo en un estado de error.
130
+ * @type {boolean}
131
+ */
75
132
  error: boolean;
133
+ /**
134
+ * Si es true, muestra un indicador de carga (progreso lineal/circular) al final.
135
+ * @type {boolean}
136
+ */
76
137
  loading: boolean;
138
+ /**
139
+ * Deshabilita el campo de texto.
140
+ * @type {boolean}
141
+ */
77
142
  disabled: boolean;
143
+ /**
144
+ * El valor actual del input.
145
+ * @type {string}
146
+ */
78
147
  value: string;
148
+ /**
149
+ * Texto de marcador de posición (placeholder) mostrado cuando el input está vacío y la etiqueta es flotante.
150
+ * @type {string}
151
+ */
79
152
  placeholder: string;
80
153
  private _input;
154
+ /**
155
+ * Sincroniza imperativamente las propiedades DOM del `<input>` nativo después de cada actualización reactiva.
156
+ *
157
+ * Las vinculaciones `?value` y `?disabled` de Lit establecen *atributos* HTML, no *propiedades* DOM.
158
+ * Para un `<input>`, el atributo `value` solo establece el valor *inicial*; la propiedad DOM
159
+ * `input.value` refleja el valor actual tecleado por el usuario. Después de una actualización reactiva que
160
+ * cambia `this.value` (ej. reinicio programático), debemos escribir directamente a la propiedad
161
+ * DOM para sobrescribir lo que el usuario ha tecleado. Esto también es crítico para los consumidores
162
+ * de React y Vue que mutan la propiedad del Custom Element directamente, omitiendo el flujo
163
+ * de atributos de Lit.
164
+ *
165
+ * @param changed - Mapa de los nombres de propiedades a sus valores anteriores que causaron esta actualización.
166
+ */
81
167
  updated(changed: Map<string, unknown>): void;
168
+ private _handleInput;
169
+ private _handleChange;
82
170
  static styles: import("lit").CSSResult[];
171
+ /**
172
+ * Renderiza el campo de texto con animación de etiqueta flotante, iconos iniciales/finales, y texto de ayuda.
173
+ *
174
+ * **Composición de `fieldClasses`:**
175
+ * - `field` — siempre presente; diseño base del campo.
176
+ * - `label` — habilita el comportamiento de la etiqueta flotante vía CSS.
177
+ * - `fill` / `border` — variante filled vs outlined.
178
+ * - `small` / `large` / `extra` — modificador de tamaño.
179
+ * - `prefix` — desplaza la etiqueta cuando hay un icono inicial (leading) presente.
180
+ * - `suffix` — reserva espacio final (trailing) para el icono/texto de sufijo.
181
+ * - `invalid` — aplica colores de error cuando `error=true` o falla la validación nativa.
182
+ *
183
+ * **Flotación de la etiqueta (Label float):**
184
+ * `isActive` es true cuando `value` no está vacío o se establece un `placeholder`.
185
+ * Los selectores CSS `.field.label input:focus ~ label`, `.field.label.active label`
186
+ * flotan la etiqueta a la parte superior del borde del campo. Este componente
187
+ * establece `isActive` para evitar que la etiqueta colapse cuando un valor está preestablecido.
188
+ *
189
+ * **Zonas inicial / final (Leading / trailing):**
190
+ * `hasLeading` y `hasTrailing` añaden condicionalmente las clases CSS `prefix`/`suffix`
191
+ * y renderizan el icono o los elementos de texto de prefijo/sufijo.
192
+ */
83
193
  render(): import("lit").TemplateResult<1>;
84
194
  }
85
195
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-text-field.d.ts","sourceRoot":"","sources":["../../src/components/moni-text-field.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAA6B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,gBAAgB,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,aAAc,SAAQ,WAAW;IAChB,IAAI,SAAM;IACV,KAAK,SAAM;IACX,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAY;IAEvE,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAY;IAExD,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAc;IAEpD,IAAI,EACD,MAAM,GACN,UAAU,GACV,OAAO,GACP,QAAQ,GACR,KAAK,GACL,KAAK,GACL,QAAQ,CAAU;IACQ,IAAI,SAAM;IACkB,YAAY,SAAM;IAC9C,MAAM,SAAM;IACZ,MAAM,SAAM;IACZ,MAAM,SAAM;IACa,SAAS,SAAM;IACzB,KAAK,UAAS;IACd,OAAO,UAAS;IAChB,QAAQ,UAAS;IAChC,KAAK,SAAM;IACX,WAAW,SAAM;IAE9B,OAAO,CAAC,MAAM,CAAoB;IAEzC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAO9C,OAAgB,MAAM,4BAA+B;IAE5C,MAAM;CA8Ef;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,iBAAiB,EAAE,aAAa,CAAC;KACjC;CACD;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"moni-text-field.d.ts","sourceRoot":"","sources":["../../src/components/moni-text-field.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAA6B,MAAM,kBAAkB,CAAC;AAE1E,OAAO,gBAAgB,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,qBACa,aAAc,SAAQ,WAAW;IAC7C,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAO,CAAC,UAAU,CAAmB;;IAOrC;;;OAGG;IAC0B,IAAI,SAAM;IAEvC;;;OAGG;IAC0B,KAAK,SAAM;IAExC;;;;OAIG;IAC0B,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAY;IAEvE;;;;OAIG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAY;IAExD;;;;OAIG;IAEH,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAc;IAEpD;;;;OAIG;IAEH,IAAI,EACD,MAAM,GACN,UAAU,GACV,OAAO,GACP,QAAQ,GACR,KAAK,GACL,KAAK,GACL,QAAQ,CAAU;IAErB;;;OAGG;IAC0B,IAAI,SAAM;IAEvC;;;OAGG;IACsD,YAAY,SAAM;IAE3E;;;OAGG;IAC0B,MAAM,SAAM;IAEzC;;;OAGG;IAC0B,MAAM,SAAM;IAEzC;;;OAGG;IAC0B,MAAM,SAAM;IAEzC;;;;OAIG;IACmD,SAAS,SAAM;IAErE;;;OAGG;IACyC,KAAK,UAAS;IAE1D;;;OAGG;IACyC,OAAO,UAAS;IAE5D;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IAC0B,KAAK,SAAM;IAExC;;;OAGG;IAC0B,WAAW,SAAM;IAE9B,OAAO,CAAC,MAAM,CAAoB;IAElD;;;;;;;;;;;;OAYG;IACM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU9C,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IAQrB,OAAgB,MAAM,4BAA+B;IAErD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACM,MAAM;CAgFf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,iBAAiB,EAAE,aAAa,CAAC;KACjC;CACD;AAED,eAAe,aAAa,CAAC"}