@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
@@ -7,49 +7,49 @@
7
7
  import { MoniElement } from './_base/index.js';
8
8
  import './moni-icon.js';
9
9
  /**
10
- * Material Design 3 Navigation Item component.
10
+ * Componente Material Design 3 Navigation Item (Elemento de Navegación).
11
11
  *
12
- * A single destination item within a `<moni-nav>` container. Renders as an
13
- * accessible `<a>` element with an icon, label, and M3 state layer.
12
+ * Un elemento de destino individual dentro de un contenedor `<moni-nav>`. Se renderiza como un
13
+ * elemento `<a>` accesible con un icono, etiqueta y capa de estado M3.
14
14
  *
15
- * **M3 spec references:**
16
- * - Navigation bar item: `m3-docs/components/navigation-bar/specs.md`
17
- * - Navigation rail item: `m3-docs/components/navigation-rail/specs.md`
18
- * - Navigation drawer item: `m3-docs/components/navigation-drawer/specs.md`
15
+ * **Referencias a la especificación M3:**
16
+ * - Elemento de barra de navegación: `m3-docs/components/navigation-bar/specs.md`
17
+ * - Elemento de riel de navegación: `m3-docs/components/navigation-rail/specs.md`
18
+ * - Elemento de cajón de navegación: `m3-docs/components/navigation-drawer/specs.md`
19
19
  *
20
- * **Layout adaptation:**
21
- * The `placement`, `variant`, and `layout` properties are forwarded from
22
- * the parent `<moni-nav>` (typically via attribute binding in the parent's
23
- * render method). The nav item uses these to conditionally render:
24
- * - Icon + label below (navigation bar).
25
- * - Icon only + horizontal label (rail).
26
- * - Icon + full label (drawer).
20
+ * **Adaptación de diseño:**
21
+ * Las propiedades `placement`, `variant` y `layout` son retransmitidas desde
22
+ * el padre `<moni-nav>` (típicamente a través de vinculación de atributos en el
23
+ * método render del padre). El elemento de navegación las usa para renderizar condicionalmente:
24
+ * - Icono + etiqueta abajo (barra de navegación).
25
+ * - Solo icono + etiqueta horizontal (riel).
26
+ * - Icono + etiqueta completa (cajón).
27
27
  *
28
- * **Responsive behavior:**
29
- * Uses `window.matchMedia('(min-width: 601px)')` to detect medium screens
30
- * and stores the result in `_isMediumScreen`. This drives automatic layout
31
- * switching between bar and rail styles.
28
+ * **Comportamiento responsivo:**
29
+ * Usa `window.matchMedia('(min-width: 601px)')` para detectar pantallas medianas
30
+ * y almacena el resultado en `_isMediumScreen`. Esto impulsa el cambio de diseño
31
+ * automático entre estilos de barra y riel.
32
32
  *
33
- * **Active state:**
34
- * The `active` attribute applies the M3 active indicator: a pill-shaped
35
- * `secondary-container` background behind the icon and a darker label color.
33
+ * **Estado activo:**
34
+ * El atributo `active` aplica el indicador activo M3: un fondo `secondary-container`
35
+ * en forma de píldora detrás del icono y un color de etiqueta más oscuro.
36
36
  *
37
37
  * @example
38
38
  * ```html
39
39
  * <moni-nav placement="bottom">
40
- * <moni-nav-item href="/" icon="home" label="Home" active></moni-nav-item>
41
- * <moni-nav-item href="/search" icon="search" label="Search"></moni-nav-item>
42
- * <moni-nav-item href="/profile" icon="person" label="Profile">
43
- * <moni-badge value="3"></moni-badge> <!-- notification badge -->
40
+ * <moni-nav-item href="/" icon="home" label="Inicio" active></moni-nav-item>
41
+ * <moni-nav-item href="/search" icon="search" label="Buscar"></moni-nav-item>
42
+ * <moni-nav-item href="/profile" icon="person" label="Perfil">
43
+ * <moni-badge value="3"></moni-badge> <!-- insignia de notificación -->
44
44
  * </moni-nav-item>
45
45
  * </moni-nav>
46
46
  * ```
47
47
  *
48
- * @slot default - Additional content slotted after the icon (e.g. `<moni-badge>`).
48
+ * @slot default - Contenido adicional colocado después del icono (ej. `<moni-badge>`).
49
49
  *
50
- * @csspart item - The outer `<a>` element.
51
- * @csspart icon - The icon container.
52
- * @csspart label - The label text element.
50
+ * @csspart item - El elemento exterior `<a>`.
51
+ * @csspart icon - El contenedor del icono.
52
+ * @csspart label - El elemento de texto de la etiqueta.
53
53
  */
54
54
  export declare class MoniNavItem extends MoniElement {
55
55
  href: string;
@@ -62,11 +62,41 @@ export declare class MoniNavItem extends MoniElement {
62
62
  layout: string;
63
63
  private _isMediumScreen;
64
64
  private _query;
65
+ /**
66
+ * Hook de inicialización (Lit).
67
+ * Vincula un listener de `MediaQueryList` nativo para poder reaccionar en tiempo real
68
+ * cuando la pantalla cruza el breakpoint de 600px, adaptando la disposición
69
+ * (horizontal vs vertical) del ícono y la etiqueta automáticamente.
70
+ */
65
71
  connectedCallback(): void;
72
+ /**
73
+ * Hook de destrucción (Lit).
74
+ * Desvincula rigurosamente el listener del `matchMedia` para
75
+ * prevenir fugas de memoria (memory leaks).
76
+ */
66
77
  disconnectedCallback(): void;
78
+ /**
79
+ * Callback asíncrono disparado nativamente por el navegador cuando
80
+ * cambian las condiciones del Media Query.
81
+ * Actualiza el estado reactivo `_isMediumScreen` lo que fuerza a Lit a re-renderizar.
82
+ */
67
83
  private _handleQueryChange;
68
84
  get computedLayout(): 'vertical' | 'horizontal';
69
85
  static styles: import("lit").CSSResult[];
86
+ /**
87
+ * Renderiza el elemento de navegación como un `<a>` o `<button>` con ranura de icono, etiqueta y badge (insignia).
88
+ *
89
+ * **Indicador activo:**
90
+ * La barra de navegación M3 usa un indicador en forma de píldora detrás del icono del
91
+ * elemento activo. Esto se implementa como el pseudo-elemento `::before` en
92
+ * `.item` que crece de `0` a `64px` de ancho usando una transición CSS.
93
+ * La clase `active` en `.item` activa la transición y también establece
94
+ * `aria-current="page"` para lectores de pantalla.
95
+ *
96
+ * **Ranura para badge (insignia):**
97
+ * `[slot="badge"]` se renderiza posicionado absolutamente sobre la esquina superior final del icono.
98
+ * Los consumidores colocan un `<moni-badge>` aquí para cuentas de notificaciones.
99
+ */
70
100
  render(): import("lit").TemplateResult<1>;
71
101
  }
72
102
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-nav-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBACa,WAAY,SAAQ,WAAW;IACd,IAAI,SAAO;IACX,MAAM,SAAM;IACZ,IAAI,SAAM;IACV,KAAK,SAAM;IACI,MAAM,UAAS;IAC9B,SAAS,SAAS;IAClB,OAAO,SAAU;IACjB,MAAM,SAAU;IAG7C,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,MAAM,CAEN;IAEC,iBAAiB;IAQjB,oBAAoB;IAO7B,OAAO,CAAC,kBAAkB,CAExB;IAEF,IAAI,cAAc,IAAI,UAAU,GAAG,YAAY,CAQ9C;IAED,OAAgB,MAAM,4BAmIpB;IAEO,MAAM;CAqCf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,WAAW,CAAC;KAC7B;CACD;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"moni-nav-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBACa,WAAY,SAAQ,WAAW;IACd,IAAI,SAAO;IACX,MAAM,SAAM;IACZ,IAAI,SAAM;IACV,KAAK,SAAM;IACI,MAAM,UAAS;IAC9B,SAAS,SAAS;IAClB,OAAO,SAAU;IACjB,MAAM,SAAU;IAG7C,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,MAAM,CAEN;IAER;;;;;OAKG;IACM,iBAAiB;IAQ1B;;;;OAIG;IACM,oBAAoB;IAO7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAExB;IAEF,IAAI,cAAc,IAAI,UAAU,GAAG,YAAY,CAQ9C;IAED,OAAgB,MAAM,4BAmIpB;IAEF;;;;;;;;;;;;;OAaG;IACM,MAAM;CAqCf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,WAAW,CAAC;KAC7B;CACD;AAED,eAAe,WAAW,CAAC"}
@@ -16,49 +16,49 @@ import { ifDefined } from 'lit/directives/if-defined.js';
16
16
  import { MoniElement, sharedStyles } from './_base/index.js';
17
17
  import './moni-icon.js';
18
18
  /**
19
- * Material Design 3 Navigation Item component.
19
+ * Componente Material Design 3 Navigation Item (Elemento de Navegación).
20
20
  *
21
- * A single destination item within a `<moni-nav>` container. Renders as an
22
- * accessible `<a>` element with an icon, label, and M3 state layer.
21
+ * Un elemento de destino individual dentro de un contenedor `<moni-nav>`. Se renderiza como un
22
+ * elemento `<a>` accesible con un icono, etiqueta y capa de estado M3.
23
23
  *
24
- * **M3 spec references:**
25
- * - Navigation bar item: `m3-docs/components/navigation-bar/specs.md`
26
- * - Navigation rail item: `m3-docs/components/navigation-rail/specs.md`
27
- * - Navigation drawer item: `m3-docs/components/navigation-drawer/specs.md`
24
+ * **Referencias a la especificación M3:**
25
+ * - Elemento de barra de navegación: `m3-docs/components/navigation-bar/specs.md`
26
+ * - Elemento de riel de navegación: `m3-docs/components/navigation-rail/specs.md`
27
+ * - Elemento de cajón de navegación: `m3-docs/components/navigation-drawer/specs.md`
28
28
  *
29
- * **Layout adaptation:**
30
- * The `placement`, `variant`, and `layout` properties are forwarded from
31
- * the parent `<moni-nav>` (typically via attribute binding in the parent's
32
- * render method). The nav item uses these to conditionally render:
33
- * - Icon + label below (navigation bar).
34
- * - Icon only + horizontal label (rail).
35
- * - Icon + full label (drawer).
29
+ * **Adaptación de diseño:**
30
+ * Las propiedades `placement`, `variant` y `layout` son retransmitidas desde
31
+ * el padre `<moni-nav>` (típicamente a través de vinculación de atributos en el
32
+ * método render del padre). El elemento de navegación las usa para renderizar condicionalmente:
33
+ * - Icono + etiqueta abajo (barra de navegación).
34
+ * - Solo icono + etiqueta horizontal (riel).
35
+ * - Icono + etiqueta completa (cajón).
36
36
  *
37
- * **Responsive behavior:**
38
- * Uses `window.matchMedia('(min-width: 601px)')` to detect medium screens
39
- * and stores the result in `_isMediumScreen`. This drives automatic layout
40
- * switching between bar and rail styles.
37
+ * **Comportamiento responsivo:**
38
+ * Usa `window.matchMedia('(min-width: 601px)')` para detectar pantallas medianas
39
+ * y almacena el resultado en `_isMediumScreen`. Esto impulsa el cambio de diseño
40
+ * automático entre estilos de barra y riel.
41
41
  *
42
- * **Active state:**
43
- * The `active` attribute applies the M3 active indicator: a pill-shaped
44
- * `secondary-container` background behind the icon and a darker label color.
42
+ * **Estado activo:**
43
+ * El atributo `active` aplica el indicador activo M3: un fondo `secondary-container`
44
+ * en forma de píldora detrás del icono y un color de etiqueta más oscuro.
45
45
  *
46
46
  * @example
47
47
  * ```html
48
48
  * <moni-nav placement="bottom">
49
- * <moni-nav-item href="/" icon="home" label="Home" active></moni-nav-item>
50
- * <moni-nav-item href="/search" icon="search" label="Search"></moni-nav-item>
51
- * <moni-nav-item href="/profile" icon="person" label="Profile">
52
- * <moni-badge value="3"></moni-badge> <!-- notification badge -->
49
+ * <moni-nav-item href="/" icon="home" label="Inicio" active></moni-nav-item>
50
+ * <moni-nav-item href="/search" icon="search" label="Buscar"></moni-nav-item>
51
+ * <moni-nav-item href="/profile" icon="person" label="Perfil">
52
+ * <moni-badge value="3"></moni-badge> <!-- insignia de notificación -->
53
53
  * </moni-nav-item>
54
54
  * </moni-nav>
55
55
  * ```
56
56
  *
57
- * @slot default - Additional content slotted after the icon (e.g. `<moni-badge>`).
57
+ * @slot default - Contenido adicional colocado después del icono (ej. `<moni-badge>`).
58
58
  *
59
- * @csspart item - The outer `<a>` element.
60
- * @csspart icon - The icon container.
61
- * @csspart label - The label text element.
59
+ * @csspart item - El elemento exterior `<a>`.
60
+ * @csspart icon - El contenedor del icono.
61
+ * @csspart label - El elemento de texto de la etiqueta.
62
62
  */
63
63
  let MoniNavItem = class MoniNavItem extends MoniElement {
64
64
  constructor() {
@@ -75,10 +75,21 @@ let MoniNavItem = class MoniNavItem extends MoniElement {
75
75
  this._query = typeof window !== 'undefined' && typeof window.matchMedia === 'function'
76
76
  ? window.matchMedia('(min-width: 601px)')
77
77
  : null;
78
+ /**
79
+ * Callback asíncrono disparado nativamente por el navegador cuando
80
+ * cambian las condiciones del Media Query.
81
+ * Actualiza el estado reactivo `_isMediumScreen` lo que fuerza a Lit a re-renderizar.
82
+ */
78
83
  this._handleQueryChange = (e) => {
79
84
  this._isMediumScreen = e.matches;
80
85
  };
81
86
  }
87
+ /**
88
+ * Hook de inicialización (Lit).
89
+ * Vincula un listener de `MediaQueryList` nativo para poder reaccionar en tiempo real
90
+ * cuando la pantalla cruza el breakpoint de 600px, adaptando la disposición
91
+ * (horizontal vs vertical) del ícono y la etiqueta automáticamente.
92
+ */
82
93
  connectedCallback() {
83
94
  super.connectedCallback();
84
95
  if (this._query) {
@@ -86,6 +97,11 @@ let MoniNavItem = class MoniNavItem extends MoniElement {
86
97
  this._isMediumScreen = this._query.matches;
87
98
  }
88
99
  }
100
+ /**
101
+ * Hook de destrucción (Lit).
102
+ * Desvincula rigurosamente el listener del `matchMedia` para
103
+ * prevenir fugas de memoria (memory leaks).
104
+ */
89
105
  disconnectedCallback() {
90
106
  super.disconnectedCallback();
91
107
  if (this._query) {
@@ -233,6 +249,20 @@ let MoniNavItem = class MoniNavItem extends MoniElement {
233
249
  }
234
250
  `
235
251
  ]; }
252
+ /**
253
+ * Renderiza el elemento de navegación como un `<a>` o `<button>` con ranura de icono, etiqueta y badge (insignia).
254
+ *
255
+ * **Indicador activo:**
256
+ * La barra de navegación M3 usa un indicador en forma de píldora detrás del icono del
257
+ * elemento activo. Esto se implementa como el pseudo-elemento `::before` en
258
+ * `.item` que crece de `0` a `64px` de ancho usando una transición CSS.
259
+ * La clase `active` en `.item` activa la transición y también establece
260
+ * `aria-current="page"` para lectores de pantalla.
261
+ *
262
+ * **Ranura para badge (insignia):**
263
+ * `[slot="badge"]` se renderiza posicionado absolutamente sobre la esquina superior final del icono.
264
+ * Los consumidores colocan un `<moni-badge>` aquí para cuentas de notificaciones.
265
+ */
236
266
  render() {
237
267
  const isHorizontal = this.computedLayout === 'horizontal';
238
268
  const iconEl = html `
@@ -6,56 +6,56 @@
6
6
  */
7
7
  import { MoniElement } from './_base/index.js';
8
8
  /**
9
- * Material Design 3 Navigation container component.
9
+ * Componente contenedor de Navegación Material Design 3.
10
10
  *
11
- * `<moni-nav>` is the container that wraps `<moni-nav-item>` elements and
12
- * controls the M3 navigation pattern: navigation bar, navigation rail, or
13
- * navigation drawer.
11
+ * `<moni-nav>` es el contenedor que envuelve los elementos `<moni-nav-item>` y
12
+ * controla el patrón de navegación M3: barra de navegación, riel de navegación o
13
+ * cajón de navegación.
14
14
  *
15
- * **M3 spec references:**
16
- * - Navigation bar: `m3-docs/components/navigation-bar/specs.md`
17
- * - Navigation rail: `m3-docs/components/navigation-rail/specs.md`
18
- * - Navigation drawer: `m3-docs/components/navigation-drawer/specs.md`
15
+ * **Referencias a la especificación M3:**
16
+ * - Barra de navegación: `m3-docs/components/navigation-bar/specs.md`
17
+ * - Riel de navegación: `m3-docs/components/navigation-rail/specs.md`
18
+ * - Cajón de navegación: `m3-docs/components/navigation-drawer/specs.md`
19
19
  *
20
- * **Navigation patterns:**
21
- * - **Navigation bar** (`placement="bottom"`) — Horizontal bar of icon+label
22
- * items at the bottom of the screen. Best for 3–5 top-level destinations.
23
- * - **Navigation rail** (`variant="rail"`) — Vertical rail of icon+label items
24
- * on the side of the screen. Best for medium/expanded breakpoints.
25
- * - **Standard drawer** (`variant="drawer"`) — Always-visible vertical panel
26
- * with full text labels. No scrim. Best for large screens.
27
- * - **Modal drawer** (`variant="drawer" modal`) — Overlay drawer with scrim.
28
- * Opened/closed via the `open` property. Traps keyboard focus while open.
29
- * Closes on `Escape` key press.
20
+ * **Patrones de navegación:**
21
+ * - **Barra de navegación** (`placement="bottom"`) — Barra horizontal de elementos de icono+etiqueta
22
+ * en la parte inferior de la pantalla. Ideal para 3–5 destinos de nivel superior.
23
+ * - **Riel de navegación** (`variant="rail"`) — Riel vertical de elementos de icono+etiqueta
24
+ * en el lateral de la pantalla. Ideal para puntos de interrupción medianos/expandidos.
25
+ * - **Cajón estándar** (`variant="drawer"`) — Panel vertical siempre visible
26
+ * con etiquetas de texto completo. Sin atenuación (scrim). Ideal para pantallas grandes.
27
+ * - **Cajón modal** (`variant="drawer" modal`) — Cajón superpuesto con atenuación (scrim).
28
+ * Se abre/cierra a través de la propiedad `open`. Atrapa el foco del teclado mientras está abierto.
29
+ * Se cierra al presionar la tecla `Escape`.
30
30
  *
31
- * **Keyboard handling:**
32
- * When `modal=true`, the component adds a global `keydown` listener in
33
- * `connectedCallback` that closes the drawer on `Escape`. The listener is
34
- * removed in `disconnectedCallback`.
31
+ * **Manejo del teclado:**
32
+ * Cuando `modal=true`, el componente añade un listener global de `keydown` en
33
+ * `connectedCallback` que cierra el cajón con `Escape`. El listener se
34
+ * elimina en `disconnectedCallback`.
35
35
  *
36
36
  * @example
37
37
  * ```html
38
- * <!-- Bottom navigation bar -->
38
+ * <!-- Barra de navegación inferior -->
39
39
  * <moni-nav placement="bottom">
40
- * <moni-nav-item icon="home" label="Home" active></moni-nav-item>
41
- * <moni-nav-item icon="search" label="Search"></moni-nav-item>
42
- * <moni-nav-item icon="person" label="Profile"></moni-nav-item>
40
+ * <moni-nav-item icon="home" label="Inicio" active></moni-nav-item>
41
+ * <moni-nav-item icon="search" label="Buscar"></moni-nav-item>
42
+ * <moni-nav-item icon="person" label="Perfil"></moni-nav-item>
43
43
  * </moni-nav>
44
44
  *
45
- * <!-- Modal navigation drawer -->
45
+ * <!-- Cajón de navegación modal -->
46
46
  * <moni-nav variant="drawer" modal open placement="left">
47
- * <h3 slot="header">My App</h3>
48
- * <moni-nav-item icon="home" label="Home" active></moni-nav-item>
49
- * <moni-nav-item icon="settings" label="Settings"></moni-nav-item>
47
+ * <h3 slot="header">Mi App</h3>
48
+ * <moni-nav-item icon="home" label="Inicio" active></moni-nav-item>
49
+ * <moni-nav-item icon="settings" label="Ajustes"></moni-nav-item>
50
50
  * </moni-nav>
51
51
  * ```
52
52
  *
53
- * @slot default - `<moni-nav-item>` children.
54
- * @slot header - Content above the nav items (drawer variant only).
55
- * @slot footer - Content below the nav items (drawer variant only).
53
+ * @slot default - Hijos `<moni-nav-item>`.
54
+ * @slot header - Contenido encima de los elementos de navegación (solo variante drawer).
55
+ * @slot footer - Contenido debajo de los elementos de navegación (solo variante drawer).
56
56
  *
57
- * @csspart nav - The inner `<nav>` element.
58
- * @csspart scrim - The backdrop scrim (modal drawer only).
57
+ * @csspart nav - El elemento `<nav>` interior.
58
+ * @csspart scrim - El atenuador de fondo (scrim) (solo cajón modal).
59
59
  */
60
60
  export declare class MoniNav extends MoniElement {
61
61
  placement: 'top' | 'bottom' | 'left' | 'right';
@@ -63,13 +63,72 @@ export declare class MoniNav extends MoniElement {
63
63
  modal: boolean;
64
64
  open: boolean;
65
65
  layout: 'vertical' | 'horizontal' | 'auto';
66
+ /**
67
+ * Hook de inicialización (Lit).
68
+ * Vincula el listener global para teclado, asegurando que `_onKeydown` mantenga
69
+ * el contexto correcto de `this` al ser disparado por el documento.
70
+ */
66
71
  connectedCallback(): void;
72
+ /**
73
+ * Hook de destrucción (Lit).
74
+ * Remueve el listener de teclado global para evitar fugas de memoria (memory leaks)
75
+ * cuando el componente de navegación es retirado del DOM.
76
+ */
67
77
  disconnectedCallback(): void;
78
+ /**
79
+ * Manejador global de eventos de teclado.
80
+ * Implementa el patrón de accesibilidad estándar: Si el drawer es modal y está abierto,
81
+ * presionar la tecla Escape forzará su cierre inmediato.
82
+ */
68
83
  private _onKeydown;
84
+ /**
85
+ * Función de cierre rápido invocada típicamente al hacer clic en el backdrop/scrim.
86
+ * Modifica directamente la propiedad `open` a false si la navegación opera en modo modal.
87
+ */
69
88
  private _closeModal;
89
+ /**
90
+ * Propaga los cambios estructurales a todos los hijos `<moni-nav-item>` insertados en la ranura.
91
+ *
92
+ * Cuando `placement`, `variant`, `layout`, `modal` o `open` cambian en el
93
+ * `<moni-nav>` padre, los elementos hijos `<moni-nav-item>` también deben actualizar su estado
94
+ * de diseño calculado (layout) y de apertura. Esto se hace imperativamente a través de `_propagateToItems()` en lugar
95
+ * de a través de la API de Contexto de Lit para evitar la sobrecarga del Proveedor de Contexto para una simple
96
+ * relación padre→hijo.
97
+ *
98
+ * @param changed - Mapa de los nombres de las propiedades reactivas que desencadenaron este ciclo de actualización.
99
+ */
70
100
  updated(changed: Map<string, unknown>): void;
101
+ /**
102
+ * Patrón de inyección de propiedades "Top-Down" sin usar Context API.
103
+ * Pasa las variables arquitectónicas (`placement`, `variant`, `layout`) a los `moni-nav-item`
104
+ * hijos para que ellos puedan adaptar su CSS (ej: ocultar la etiqueta en la variante 'rail').
105
+ * Se lanza al inicializar o cada vez que cambia una prop en el contenedor.
106
+ */
71
107
  private _propagateToItems;
72
108
  static styles: import("lit").CSSResult[];
109
+ /**
110
+ * Renderiza el contenedor de navegación con su superposición opcional de atenuación (scrim).
111
+ *
112
+ * **Composición de clases:**
113
+ * - `this.placement` (`'left'`, `'right'`, `'bottom'`) — posiciona el cajón
114
+ * o la barra de navegación inferior contra el borde correcto de la ventana gráfica.
115
+ * - `'max'` — agregado cuando `variant='drawer'`; expande la navegación a toda altura
116
+ * y ancho según la especificación M3 Navigation Drawer.
117
+ *
118
+ * **Atenuación de cajón modal (Modal drawer scrim):**
119
+ * `isModalDrawer` es `true` cuando `variant='drawer'` Y `modal=true`. En este
120
+ * caso, se renderiza un div `.scrim` detrás del cajón como una superposición
121
+ * de hacer-clic-para-descartar. La atenuación tiene `aria-hidden="true"` ya que es puramente visual.
122
+ *
123
+ * **Atributo `[open]`:**
124
+ * La vinculación `?open=${this.open}` agrega/elimina el atributo `open` en el
125
+ * elemento `<nav>`. Los selectores de atributo CSS `[open]` impulsan la transición
126
+ * de deslizamiento hacia adentro/afuera, manteniendo la animación completamente en CSS (no se requiere GSAP para este componente).
127
+ *
128
+ * **Punto de referencia ARIA (ARIA landmark):**
129
+ * El elemento `<nav>` se usa directamente (no un `<div role="navigation">`) para
130
+ * proporcionar un punto de referencia ARIA implícito al que pueden saltar los lectores de pantalla.
131
+ */
73
132
  render(): import("lit").TemplateResult<1>;
74
133
  }
75
134
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-nav.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,OAAQ,SAAQ,WAAW;IAEvC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAS;IAEvD,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAU;IACQ,KAAK,UAAS;IACd,IAAI,UAAQ;IAExD,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAU;IAE3C,iBAAiB;IAMjB,oBAAoB;IAK7B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,WAAW;IAMV,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAY9C,OAAO,CAAC,iBAAiB,CAOvB;IAEF,OAAgB,MAAM,4BAoJpB;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-nav.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,OAAQ,SAAQ,WAAW;IAEvC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAS;IAEvD,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAU;IACQ,KAAK,UAAS;IACd,IAAI,UAAQ;IAExD,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAU;IAEpD;;;;OAIG;IACM,iBAAiB;IAM1B;;;;OAIG;IACM,oBAAoB;IAK7B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAMlB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;;;;;;OAUG;IACM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAY9C;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAOvB;IAEF,OAAgB,MAAM,4BAoJpB;IAEF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACM,MAAM;CAyBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,UAAU,EAAE,OAAO,CAAC;KACpB;CACD;AAED,eAAe,OAAO,CAAC"}