@moni-labs/moni-ui 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/custom-elements.json +5230 -1007
  2. package/dist/components/_base/moni-element.d.ts +16 -9
  3. package/dist/components/_base/moni-element.d.ts.map +1 -1
  4. package/dist/components/_base/moni-element.js +63 -9
  5. package/dist/components/index.js +2 -2
  6. package/dist/components/loading-shapes.d.ts +19 -0
  7. package/dist/components/loading-shapes.d.ts.map +1 -1
  8. package/dist/components/loading-shapes.js +19 -0
  9. package/dist/components/moni-app-bar.d.ts +72 -62
  10. package/dist/components/moni-app-bar.d.ts.map +1 -1
  11. package/dist/components/moni-app-bar.js +72 -62
  12. package/dist/components/moni-badge.d.ts +64 -65
  13. package/dist/components/moni-badge.d.ts.map +1 -1
  14. package/dist/components/moni-badge.js +64 -66
  15. package/dist/components/moni-bottom-sheet.d.ts +129 -61
  16. package/dist/components/moni-bottom-sheet.d.ts.map +1 -1
  17. package/dist/components/moni-bottom-sheet.js +217 -131
  18. package/dist/components/moni-button-group.d.ts +107 -29
  19. package/dist/components/moni-button-group.d.ts.map +1 -1
  20. package/dist/components/moni-button-group.js +107 -29
  21. package/dist/components/moni-button-segment.d.ts +53 -12
  22. package/dist/components/moni-button-segment.d.ts.map +1 -1
  23. package/dist/components/moni-button-segment.js +53 -12
  24. package/dist/components/moni-button.d.ts +116 -38
  25. package/dist/components/moni-button.d.ts.map +1 -1
  26. package/dist/components/moni-button.js +128 -38
  27. package/dist/components/moni-card.d.ts +68 -50
  28. package/dist/components/moni-card.d.ts.map +1 -1
  29. package/dist/components/moni-card.js +68 -50
  30. package/dist/components/moni-carousel.d.ts +484 -53
  31. package/dist/components/moni-carousel.d.ts.map +1 -1
  32. package/dist/components/moni-carousel.js +1024 -245
  33. package/dist/components/moni-checkbox.d.ts +49 -46
  34. package/dist/components/moni-checkbox.d.ts.map +1 -1
  35. package/dist/components/moni-checkbox.js +55 -48
  36. package/dist/components/moni-chip.d.ts +100 -33
  37. package/dist/components/moni-chip.d.ts.map +1 -1
  38. package/dist/components/moni-chip.js +104 -34
  39. package/dist/components/moni-color-field.d.ts +99 -24
  40. package/dist/components/moni-color-field.d.ts.map +1 -1
  41. package/dist/components/moni-color-field.js +99 -24
  42. package/dist/components/moni-context-menu.d.ts +72 -26
  43. package/dist/components/moni-context-menu.d.ts.map +1 -1
  44. package/dist/components/moni-context-menu.js +76 -30
  45. package/dist/components/moni-dialog.d.ts +84 -59
  46. package/dist/components/moni-dialog.d.ts.map +1 -1
  47. package/dist/components/moni-dialog.js +105 -58
  48. package/dist/components/moni-divider.d.ts +39 -27
  49. package/dist/components/moni-divider.d.ts.map +1 -1
  50. package/dist/components/moni-divider.js +42 -30
  51. package/dist/components/moni-expansion.d.ts +32 -22
  52. package/dist/components/moni-expansion.d.ts.map +1 -1
  53. package/dist/components/moni-expansion.js +32 -22
  54. package/dist/components/moni-fab-menu.d.ts +61 -23
  55. package/dist/components/moni-fab-menu.d.ts.map +1 -1
  56. package/dist/components/moni-fab-menu.js +69 -31
  57. package/dist/components/moni-fab.d.ts +86 -28
  58. package/dist/components/moni-fab.d.ts.map +1 -1
  59. package/dist/components/moni-fab.js +92 -34
  60. package/dist/components/moni-file-field.d.ts +118 -30
  61. package/dist/components/moni-file-field.d.ts.map +1 -1
  62. package/dist/components/moni-file-field.js +118 -30
  63. package/dist/components/moni-icon.d.ts +40 -35
  64. package/dist/components/moni-icon.d.ts.map +1 -1
  65. package/dist/components/moni-icon.js +43 -38
  66. package/dist/components/moni-list-item.d.ts +46 -33
  67. package/dist/components/moni-list-item.d.ts.map +1 -1
  68. package/dist/components/moni-list-item.js +61 -41
  69. package/dist/components/moni-list.d.ts +30 -20
  70. package/dist/components/moni-list.d.ts.map +1 -1
  71. package/dist/components/moni-list.js +36 -21
  72. package/dist/components/moni-loading-indicator.d.ts +54 -22
  73. package/dist/components/moni-loading-indicator.d.ts.map +1 -1
  74. package/dist/components/moni-loading-indicator.js +54 -22
  75. package/dist/components/moni-menu-item.d.ts +23 -16
  76. package/dist/components/moni-menu-item.d.ts.map +1 -1
  77. package/dist/components/moni-menu-item.js +23 -16
  78. package/dist/components/moni-menu.d.ts +81 -28
  79. package/dist/components/moni-menu.d.ts.map +1 -1
  80. package/dist/components/moni-menu.js +81 -30
  81. package/dist/components/moni-morph-modal.d.ts +141 -0
  82. package/dist/components/moni-morph-modal.d.ts.map +1 -1
  83. package/dist/components/moni-morph-modal.js +295 -58
  84. package/dist/components/moni-nav-item.d.ts +59 -29
  85. package/dist/components/moni-nav-item.d.ts.map +1 -1
  86. package/dist/components/moni-nav-item.js +59 -29
  87. package/dist/components/moni-nav.d.ts +94 -35
  88. package/dist/components/moni-nav.d.ts.map +1 -1
  89. package/dist/components/moni-nav.js +94 -35
  90. package/dist/components/moni-progress.d.ts +99 -55
  91. package/dist/components/moni-progress.d.ts.map +1 -1
  92. package/dist/components/moni-progress.js +99 -55
  93. package/dist/components/moni-radio.d.ts +62 -50
  94. package/dist/components/moni-radio.d.ts.map +1 -1
  95. package/dist/components/moni-radio.js +65 -52
  96. package/dist/components/moni-ripple.d.ts +74 -59
  97. package/dist/components/moni-ripple.d.ts.map +1 -1
  98. package/dist/components/moni-ripple.js +74 -59
  99. package/dist/components/moni-segmented-button.d.ts +91 -16
  100. package/dist/components/moni-segmented-button.d.ts.map +1 -1
  101. package/dist/components/moni-segmented-button.js +94 -17
  102. package/dist/components/moni-select-option.d.ts +30 -23
  103. package/dist/components/moni-select-option.d.ts.map +1 -1
  104. package/dist/components/moni-select-option.js +30 -23
  105. package/dist/components/moni-select.d.ts +300 -35
  106. package/dist/components/moni-select.d.ts.map +1 -1
  107. package/dist/components/moni-select.js +323 -39
  108. package/dist/components/moni-side-sheet.d.ts +94 -32
  109. package/dist/components/moni-side-sheet.d.ts.map +1 -1
  110. package/dist/components/moni-side-sheet.js +94 -32
  111. package/dist/components/moni-slider.d.ts +152 -41
  112. package/dist/components/moni-slider.d.ts.map +1 -1
  113. package/dist/components/moni-slider.js +154 -42
  114. package/dist/components/moni-snackbar.d.ts +53 -43
  115. package/dist/components/moni-snackbar.d.ts.map +1 -1
  116. package/dist/components/moni-snackbar.js +53 -43
  117. package/dist/components/moni-split-button.d.ts +63 -18
  118. package/dist/components/moni-split-button.d.ts.map +1 -1
  119. package/dist/components/moni-split-button.js +63 -18
  120. package/dist/components/moni-step.d.ts +36 -24
  121. package/dist/components/moni-step.d.ts.map +1 -1
  122. package/dist/components/moni-step.js +41 -29
  123. package/dist/components/moni-stepper.d.ts +64 -27
  124. package/dist/components/moni-stepper.d.ts.map +1 -1
  125. package/dist/components/moni-stepper.js +72 -34
  126. package/dist/components/moni-switch.d.ts +57 -46
  127. package/dist/components/moni-switch.d.ts.map +1 -1
  128. package/dist/components/moni-switch.js +59 -47
  129. package/dist/components/moni-tab.d.ts +26 -18
  130. package/dist/components/moni-tab.d.ts.map +1 -1
  131. package/dist/components/moni-tab.js +29 -21
  132. package/dist/components/moni-tabs.d.ts +34 -28
  133. package/dist/components/moni-tabs.d.ts.map +1 -1
  134. package/dist/components/moni-tabs.js +34 -28
  135. package/dist/components/moni-text-field.d.ts +139 -29
  136. package/dist/components/moni-text-field.d.ts.map +1 -1
  137. package/dist/components/moni-text-field.js +157 -31
  138. package/dist/components/moni-textarea.d.ts +127 -29
  139. package/dist/components/moni-textarea.d.ts.map +1 -1
  140. package/dist/components/moni-textarea.js +131 -32
  141. package/dist/components/moni-time-picker.d.ts +114 -24
  142. package/dist/components/moni-time-picker.d.ts.map +1 -1
  143. package/dist/components/moni-time-picker.js +127 -33
  144. package/dist/components/moni-toolbar.d.ts +37 -23
  145. package/dist/components/moni-toolbar.d.ts.map +1 -1
  146. package/dist/components/moni-toolbar.js +37 -23
  147. package/dist/components/moni-tooltip.d.ts +100 -36
  148. package/dist/components/moni-tooltip.d.ts.map +1 -1
  149. package/dist/components/moni-tooltip.js +104 -40
  150. package/dist/components/moni-typography.d.ts +68 -30
  151. package/dist/components/moni-typography.d.ts.map +1 -1
  152. package/dist/components/moni-typography.js +70 -32
  153. package/dist/styles/tokens.css +7 -7
  154. package/dist/types/events.d.ts +17 -0
  155. package/dist/types/events.d.ts.map +1 -0
  156. package/dist/types/events.js +1 -0
  157. package/dist/utils/event-emitter.d.ts +13 -0
  158. package/dist/utils/event-emitter.d.ts.map +1 -0
  159. package/dist/utils/event-emitter.js +13 -0
  160. package/package.json +2 -1
  161. package/src/components/_base/moni-element.ts +73 -9
  162. package/src/components/index.ts +2 -2
  163. package/src/components/loading-shapes.ts +19 -0
  164. package/src/components/moni-app-bar.test.ts +10 -10
  165. package/src/components/moni-app-bar.ts +72 -62
  166. package/src/components/moni-badge.ts +64 -66
  167. package/src/components/moni-bottom-sheet.test.ts +39 -45
  168. package/src/components/moni-bottom-sheet.ts +222 -131
  169. package/src/components/moni-button-group.test.ts +14 -14
  170. package/src/components/moni-button-group.ts +107 -29
  171. package/src/components/moni-button-segment.ts +53 -12
  172. package/src/components/moni-button.test.ts +28 -26
  173. package/src/components/moni-button.ts +139 -39
  174. package/src/components/moni-card.test.ts +6 -6
  175. package/src/components/moni-card.ts +70 -50
  176. package/src/components/moni-carousel.test.ts +12 -12
  177. package/src/components/moni-carousel.ts +1129 -269
  178. package/src/components/moni-checkbox.test.ts +7 -7
  179. package/src/components/moni-checkbox.ts +62 -48
  180. package/src/components/moni-chip.test.ts +17 -17
  181. package/src/components/moni-chip.ts +112 -34
  182. package/src/components/moni-color-field.test.ts +5 -5
  183. package/src/components/moni-color-field.ts +108 -24
  184. package/src/components/moni-context-menu.test.ts +11 -11
  185. package/src/components/moni-context-menu.ts +76 -30
  186. package/src/components/moni-dialog.ts +108 -59
  187. package/src/components/moni-divider.test.ts +4 -4
  188. package/src/components/moni-divider.ts +42 -30
  189. package/src/components/moni-expansion.ts +32 -22
  190. package/src/components/moni-fab-menu.test.ts +11 -11
  191. package/src/components/moni-fab-menu.ts +69 -31
  192. package/src/components/moni-fab.test.ts +16 -16
  193. package/src/components/moni-fab.ts +100 -34
  194. package/src/components/moni-file-field.test.ts +8 -8
  195. package/src/components/moni-file-field.ts +132 -30
  196. package/src/components/moni-icon.test.ts +11 -11
  197. package/src/components/moni-icon.ts +43 -38
  198. package/src/components/moni-list-item.test.ts +10 -10
  199. package/src/components/moni-list-item.ts +61 -41
  200. package/src/components/moni-list.ts +37 -21
  201. package/src/components/moni-loading-indicator.test.ts +3 -3
  202. package/src/components/moni-loading-indicator.ts +54 -22
  203. package/src/components/moni-menu-item.ts +23 -16
  204. package/src/components/moni-menu.test.ts +7 -7
  205. package/src/components/moni-menu.ts +87 -30
  206. package/src/components/moni-morph-modal.test.ts +18 -17
  207. package/src/components/moni-morph-modal.ts +327 -60
  208. package/src/components/moni-nav-item.ts +59 -29
  209. package/src/components/moni-nav.test.ts +11 -11
  210. package/src/components/moni-nav.ts +94 -35
  211. package/src/components/moni-progress.test.ts +9 -9
  212. package/src/components/moni-progress.ts +100 -56
  213. package/src/components/moni-radio.test.ts +8 -8
  214. package/src/components/moni-radio.ts +71 -51
  215. package/src/components/moni-ripple.ts +74 -59
  216. package/src/components/moni-segmented-button.test.ts +4 -4
  217. package/src/components/moni-segmented-button.ts +94 -17
  218. package/src/components/moni-select-option.ts +30 -23
  219. package/src/components/moni-select.test.ts +11 -11
  220. package/src/components/moni-select.ts +361 -50
  221. package/src/components/moni-side-sheet.test.ts +7 -7
  222. package/src/components/moni-side-sheet.ts +94 -32
  223. package/src/components/moni-slider.test.ts +7 -7
  224. package/src/components/moni-slider.ts +165 -42
  225. package/src/components/moni-snackbar.test.ts +8 -8
  226. package/src/components/moni-snackbar.ts +53 -43
  227. package/src/components/moni-split-button.ts +63 -18
  228. package/src/components/moni-step.test.ts +7 -7
  229. package/src/components/moni-step.ts +41 -29
  230. package/src/components/moni-stepper.test.ts +7 -7
  231. package/src/components/moni-stepper.ts +72 -34
  232. package/src/components/moni-switch.test.ts +12 -12
  233. package/src/components/moni-switch.ts +66 -47
  234. package/src/components/moni-tab.test.ts +5 -5
  235. package/src/components/moni-tab.ts +29 -21
  236. package/src/components/moni-tabs.ts +34 -28
  237. package/src/components/moni-text-field.test.ts +13 -13
  238. package/src/components/moni-text-field.ts +181 -30
  239. package/src/components/moni-textarea.test.ts +17 -17
  240. package/src/components/moni-textarea.ts +155 -31
  241. package/src/components/moni-time-picker.test.ts +5 -5
  242. package/src/components/moni-time-picker.ts +128 -33
  243. package/src/components/moni-toolbar.test.ts +8 -8
  244. package/src/components/moni-toolbar.ts +37 -23
  245. package/src/components/moni-tooltip.test.ts +15 -15
  246. package/src/components/moni-tooltip.ts +107 -40
  247. package/src/components/moni-typography.test.ts +10 -10
  248. package/src/components/moni-typography.ts +73 -32
  249. package/src/styles/tokens.css +7 -7
  250. package/src/types/events.ts +17 -0
  251. package/src/utils/event-emitter.ts +26 -0
@@ -6,78 +6,81 @@
6
6
  */
7
7
  import { MoniElement } from './_base/index.js';
8
8
  /**
9
- * Material Design 3 Checkbox component.
9
+ * Componente Material Design 3 Checkbox.
10
10
  *
11
- * Checkboxes allow users to select one or more items from a set, or toggle
12
- * a single binary option. They are visual-only shellsthe consumer is
13
- * responsible for wiring up form submission and validation logic.
11
+ * Los checkboxes permiten a los usuarios seleccionar uno o más elementos de un conjunto, o alternar
12
+ * una sola opción binaria. Son envolturas solo visualesel consumidor es
13
+ * responsable de conectar la lógica de envío y validación del formulario.
14
14
  *
15
- * **Visual architecture (BeerCSS pattern):**
16
- * The native `<input type="checkbox">` occupies real layout space (16×16 minimum)
17
- * but is visually hidden via `opacity: 0`. A `<span>` sibling rendered after
18
- * the input holds two pseudo-elements:
19
- * - `::before` — the visible checkbox icon (Material Symbols ligature).
20
- * - `::after` — the hover/focus state layer ripple ring.
15
+ * **Arquitectura visual (Patrón BeerCSS):**
16
+ * El `<input type="checkbox">` nativo ocupa espacio real en el diseño (mínimo 16×16)
17
+ * pero está oculto visualmente con `opacity: 0`. Un hermano `<span>` renderizado después
18
+ * del input contiene dos pseudo-elementos:
19
+ * - `::before` — el icono visible del checkbox (ligadura de Material Symbols).
20
+ * - `::after` — el anillo de onda (ripple) de la capa de estado hover/focus.
21
21
  *
22
- * The `::before` content switches between:
23
- * - `'check_box_outline_blank'` (unchecked)
24
- * - `'check_box'` (checked)
25
- * - `'indeterminate_check_box'` (native indeterminate state)
22
+ * El contenido de `::before` cambia entre:
23
+ * - `'check_box_outline_blank'` (desmarcado)
24
+ * - `'check_box'` (marcado)
25
+ * - `'indeterminate_check_box'` (estado nativo indeterminado)
26
26
  *
27
- * **Form integration:**
28
- * Setting `name` and `value` passes them to the native `<input>` element,
29
- * enabling participation in HTML form submissions.
27
+ * **Integración de formulario:**
28
+ * Establecer `name` y `value` los pasa al elemento `<input>` nativo,
29
+ * permitiendo la participación en envíos de formularios HTML.
30
30
  *
31
- * @fires change - Bubbles and is composed. Fired when the checkbox is toggled.
32
- * The consumer can read `element.checked` for the new state.
31
+ * @fires moni-change - Burbujea y está compuesto. Se dispara cuando se alterna el checkbox.
32
+ * El consumidor puede leer `element.checked` para el nuevo estado.
33
33
  *
34
34
  * @example
35
35
  * ```html
36
- * <moni-checkbox label="Accept terms" name="terms" value="yes"></moni-checkbox>
36
+ * <moni-checkbox label="Aceptar términos" name="terms" value="yes"></moni-checkbox>
37
37
  *
38
38
  * <script>
39
- * document.querySelector('moni-checkbox').addEventListener('change', (e) => {
39
+ * document.querySelector('moni-checkbox').addEventListener('moni-change', (e) => {
40
40
  * console.log('checked:', e.target.checked);
41
41
  * });
42
42
  * </script>
43
43
  * ```
44
44
  *
45
- * @csspart checkbox - The outer `<label>` element.
45
+ * @csspart checkbox - El elemento exterior `<label>`.
46
46
  */
47
47
  export declare class MoniCheckbox extends MoniElement {
48
+ static formAssociated: boolean;
49
+ private _internals;
50
+ constructor();
48
51
  /**
49
- * Text label displayed to the right of the checkbox icon.
52
+ * Texto de la etiqueta mostrado a la derecha del icono del checkbox.
50
53
  *
51
- * When non-empty, the label is rendered as a text node inside the `<span>`.
52
- * When empty, the default slot is rendered instead, allowing slotted HTML.
54
+ * Cuando no está vacío, la etiqueta se renderiza como un nodo de texto dentro del `<span>`.
55
+ * Cuando está vacío, el slot por defecto se renderiza en su lugar, permitiendo HTML en el slot.
53
56
  *
54
57
  * @default ''
55
58
  */
56
59
  label: string;
57
60
  /**
58
- * Whether the checkbox is currently checked.
61
+ * Si el checkbox está actualmente marcado.
59
62
  *
60
- * Reflected as an attribute so CSS attribute selectors and external state
61
- * readers can observe the checked state without accessing the JS property.
62
- * Synced to the native input via `updated()`.
63
+ * Reflejado como un atributo para que los selectores de atributos CSS y los lectores
64
+ * de estado externos puedan observar el estado marcado sin acceder a la propiedad JS.
65
+ * Sincronizado con el input nativo a través de `updated()`.
63
66
  *
64
67
  * @default false
65
68
  */
66
69
  checked: boolean;
67
70
  /**
68
- * When `true`, the native input is disabled: the checkbox is not interactive
69
- * and renders at 50% opacity.
71
+ * Cuando es `true`, el input nativo se deshabilita: el checkbox no es interactivo
72
+ * y se renderiza con opacidad del 50%.
70
73
  *
71
74
  * @default false
72
75
  */
73
76
  disabled: boolean;
74
77
  /**
75
- * Visual size of the checkbox icon.
78
+ * Tamaño visual del icono del checkbox.
76
79
  *
77
- * Maps to the `--_size` custom property which controls both the invisible
78
- * input's hit area and the visible `::before` icon size.
80
+ * Se mapea a la propiedad personalizada `--_size` que controla tanto el área de impacto
81
+ * del input invisible como el tamaño del icono visible `::before`.
79
82
  *
80
- * | Value | `--_size` |
83
+ * | Valor | `--_size` |
81
84
  * |------------|-----------|
82
85
  * | `'small'` | 1rem |
83
86
  * | `'medium'` | 1.5rem |
@@ -88,30 +91,30 @@ export declare class MoniCheckbox extends MoniElement {
88
91
  */
89
92
  size: 'small' | 'medium' | 'large' | 'extra';
90
93
  /**
91
- * Forwarded to the native `<input name>` attribute.
92
- * Required for grouping checkboxes within a form.
94
+ * Reenviado al atributo `<input name>` nativo.
95
+ * Requerido para agrupar checkboxes dentro de un formulario.
93
96
  *
94
97
  * @default ''
95
98
  */
96
99
  name: string;
97
100
  /**
98
- * Forwarded to the native `<input value>` attribute.
99
- * The value submitted in a form when this checkbox is checked.
101
+ * Reenviado al atributo `<input value>` nativo.
102
+ * El valor enviado en un formulario cuando este checkbox está marcado.
100
103
  *
101
104
  * @default ''
102
105
  */
103
106
  value: string;
104
- /** Direct reference to the native input element for programmatic access. */
107
+ /** Referencia directa al elemento input nativo para acceso programático. */
105
108
  private _input;
106
109
  /**
107
- * Syncs `checked` and `disabled` back to the native input element after
108
- * Lit's render cycle, ensuring the DOM stays in sync with component state.
110
+ * Sincroniza `checked` y `disabled` de vuelta al elemento input nativo después
111
+ * del ciclo de renderizado de Lit, asegurando que el DOM se mantenga sincronizado con el estado del componente.
109
112
  *
110
- * This is necessary because Lit's `.property=${value}` binding updates the
111
- * DOM property, but the `live()` directive and direct property assignment
112
- * are more reliable for boolean inputs across browser implementations.
113
+ * Esto es necesario porque el enlace `.property=${value}` de Lit actualiza la
114
+ * propiedad DOM, pero la directiva `live()` y la asignación directa de propiedad
115
+ * son más fiables para entradas booleanas en diferentes implementaciones de navegadores.
113
116
  *
114
- * @param changed - Map of changed property names to their previous values.
117
+ * @param changed - Mapa de nombres de propiedades cambiadas a sus valores anteriores.
115
118
  */
116
119
  updated(changed: Map<string, unknown>): void;
117
120
  static styles: import("lit").CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"moni-checkbox.d.ts","sourceRoot":"","sources":["../../src/components/moni-checkbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBACa,YAAa,SAAQ,WAAW;IAC5C;;;;;;;OAOG;IAC0B,KAAK,SAAM;IAExC;;;;;;;;OAQG;IACyC,OAAO,UAAS;IAE5D;;;;;OAKG;IACyC,QAAQ,UAAS;IAE7D;;;;;;;;;;;;;;OAcG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAY;IAExD;;;;;OAKG;IAC0B,IAAI,SAAM;IAEvC;;;;;OAKG;IAC0B,KAAK,SAAM;IAExC,4EAA4E;IAC5D,OAAO,CAAC,MAAM,CAAoB;IAElD;;;;;;;;;OASG;IACM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAO9C,OAAgB,MAAM,4BAoHpB;IAEF;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;;;;OAOG;IACM,MAAM;CAiBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,YAAY,CAAC;KAC9B;CACD;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"moni-checkbox.d.ts","sourceRoot":"","sources":["../../src/components/moni-checkbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBACa,YAAa,SAAQ,WAAW;IAC5C,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAO,CAAC,UAAU,CAAmB;;IAOrC;;;;;;;OAOG;IAC0B,KAAK,SAAM;IAExC;;;;;;;;OAQG;IACyC,OAAO,UAAS;IAE5D;;;;;OAKG;IACyC,QAAQ,UAAS;IAE7D;;;;;;;;;;;;;;OAcG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAY;IAExD;;;;;OAKG;IAC0B,IAAI,SAAM;IAEvC;;;;;OAKG;IAC0B,KAAK,SAAM;IAExC,4EAA4E;IAC5D,OAAO,CAAC,MAAM,CAAoB;IAElD;;;;;;;;;OASG;IACM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU9C,OAAgB,MAAM,4BAoHpB;IAEF;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;IAOjB;;;;;;;OAOG;IACM,MAAM;CAiBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,YAAY,CAAC;KAC9B;CACD;AAED,eAAe,YAAY,CAAC"}
@@ -15,81 +15,83 @@ import { customElement, property, query } from 'lit/decorators.js';
15
15
  import { ifDefined } from 'lit/directives/if-defined.js';
16
16
  import { live } from 'lit/directives/live.js';
17
17
  import { MoniElement, sharedStyles } from './_base/index.js';
18
+ import { emitMoniEvent } from '../utils/event-emitter.js';
18
19
  /**
19
- * Material Design 3 Checkbox component.
20
+ * Componente Material Design 3 Checkbox.
20
21
  *
21
- * Checkboxes allow users to select one or more items from a set, or toggle
22
- * a single binary option. They are visual-only shellsthe consumer is
23
- * responsible for wiring up form submission and validation logic.
22
+ * Los checkboxes permiten a los usuarios seleccionar uno o más elementos de un conjunto, o alternar
23
+ * una sola opción binaria. Son envolturas solo visualesel consumidor es
24
+ * responsable de conectar la lógica de envío y validación del formulario.
24
25
  *
25
- * **Visual architecture (BeerCSS pattern):**
26
- * The native `<input type="checkbox">` occupies real layout space (16×16 minimum)
27
- * but is visually hidden via `opacity: 0`. A `<span>` sibling rendered after
28
- * the input holds two pseudo-elements:
29
- * - `::before` — the visible checkbox icon (Material Symbols ligature).
30
- * - `::after` — the hover/focus state layer ripple ring.
26
+ * **Arquitectura visual (Patrón BeerCSS):**
27
+ * El `<input type="checkbox">` nativo ocupa espacio real en el diseño (mínimo 16×16)
28
+ * pero está oculto visualmente con `opacity: 0`. Un hermano `<span>` renderizado después
29
+ * del input contiene dos pseudo-elementos:
30
+ * - `::before` — el icono visible del checkbox (ligadura de Material Symbols).
31
+ * - `::after` — el anillo de onda (ripple) de la capa de estado hover/focus.
31
32
  *
32
- * The `::before` content switches between:
33
- * - `'check_box_outline_blank'` (unchecked)
34
- * - `'check_box'` (checked)
35
- * - `'indeterminate_check_box'` (native indeterminate state)
33
+ * El contenido de `::before` cambia entre:
34
+ * - `'check_box_outline_blank'` (desmarcado)
35
+ * - `'check_box'` (marcado)
36
+ * - `'indeterminate_check_box'` (estado nativo indeterminado)
36
37
  *
37
- * **Form integration:**
38
- * Setting `name` and `value` passes them to the native `<input>` element,
39
- * enabling participation in HTML form submissions.
38
+ * **Integración de formulario:**
39
+ * Establecer `name` y `value` los pasa al elemento `<input>` nativo,
40
+ * permitiendo la participación en envíos de formularios HTML.
40
41
  *
41
- * @fires change - Bubbles and is composed. Fired when the checkbox is toggled.
42
- * The consumer can read `element.checked` for the new state.
42
+ * @fires moni-change - Burbujea y está compuesto. Se dispara cuando se alterna el checkbox.
43
+ * El consumidor puede leer `element.checked` para el nuevo estado.
43
44
  *
44
45
  * @example
45
46
  * ```html
46
- * <moni-checkbox label="Accept terms" name="terms" value="yes"></moni-checkbox>
47
+ * <moni-checkbox label="Aceptar términos" name="terms" value="yes"></moni-checkbox>
47
48
  *
48
49
  * <script>
49
- * document.querySelector('moni-checkbox').addEventListener('change', (e) => {
50
+ * document.querySelector('moni-checkbox').addEventListener('moni-change', (e) => {
50
51
  * console.log('checked:', e.target.checked);
51
52
  * });
52
53
  * </script>
53
54
  * ```
54
55
  *
55
- * @csspart checkbox - The outer `<label>` element.
56
+ * @csspart checkbox - El elemento exterior `<label>`.
56
57
  */
57
58
  let MoniCheckbox = class MoniCheckbox extends MoniElement {
59
+ static { this.formAssociated = true; }
58
60
  constructor() {
59
- super(...arguments);
61
+ super();
60
62
  /**
61
- * Text label displayed to the right of the checkbox icon.
63
+ * Texto de la etiqueta mostrado a la derecha del icono del checkbox.
62
64
  *
63
- * When non-empty, the label is rendered as a text node inside the `<span>`.
64
- * When empty, the default slot is rendered instead, allowing slotted HTML.
65
+ * Cuando no está vacío, la etiqueta se renderiza como un nodo de texto dentro del `<span>`.
66
+ * Cuando está vacío, el slot por defecto se renderiza en su lugar, permitiendo HTML en el slot.
65
67
  *
66
68
  * @default ''
67
69
  */
68
70
  this.label = '';
69
71
  /**
70
- * Whether the checkbox is currently checked.
72
+ * Si el checkbox está actualmente marcado.
71
73
  *
72
- * Reflected as an attribute so CSS attribute selectors and external state
73
- * readers can observe the checked state without accessing the JS property.
74
- * Synced to the native input via `updated()`.
74
+ * Reflejado como un atributo para que los selectores de atributos CSS y los lectores
75
+ * de estado externos puedan observar el estado marcado sin acceder a la propiedad JS.
76
+ * Sincronizado con el input nativo a través de `updated()`.
75
77
  *
76
78
  * @default false
77
79
  */
78
80
  this.checked = false;
79
81
  /**
80
- * When `true`, the native input is disabled: the checkbox is not interactive
81
- * and renders at 50% opacity.
82
+ * Cuando es `true`, el input nativo se deshabilita: el checkbox no es interactivo
83
+ * y se renderiza con opacidad del 50%.
82
84
  *
83
85
  * @default false
84
86
  */
85
87
  this.disabled = false;
86
88
  /**
87
- * Visual size of the checkbox icon.
89
+ * Tamaño visual del icono del checkbox.
88
90
  *
89
- * Maps to the `--_size` custom property which controls both the invisible
90
- * input's hit area and the visible `::before` icon size.
91
+ * Se mapea a la propiedad personalizada `--_size` que controla tanto el área de impacto
92
+ * del input invisible como el tamaño del icono visible `::before`.
91
93
  *
92
- * | Value | `--_size` |
94
+ * | Valor | `--_size` |
93
95
  * |------------|-----------|
94
96
  * | `'small'` | 1rem |
95
97
  * | `'medium'` | 1.5rem |
@@ -100,34 +102,37 @@ let MoniCheckbox = class MoniCheckbox extends MoniElement {
100
102
  */
101
103
  this.size = 'medium';
102
104
  /**
103
- * Forwarded to the native `<input name>` attribute.
104
- * Required for grouping checkboxes within a form.
105
+ * Reenviado al atributo `<input name>` nativo.
106
+ * Requerido para agrupar checkboxes dentro de un formulario.
105
107
  *
106
108
  * @default ''
107
109
  */
108
110
  this.name = '';
109
111
  /**
110
- * Forwarded to the native `<input value>` attribute.
111
- * The value submitted in a form when this checkbox is checked.
112
+ * Reenviado al atributo `<input value>` nativo.
113
+ * El valor enviado en un formulario cuando este checkbox está marcado.
112
114
  *
113
115
  * @default ''
114
116
  */
115
117
  this.value = '';
118
+ this._internals = this.attachInternals();
116
119
  }
117
120
  /**
118
- * Syncs `checked` and `disabled` back to the native input element after
119
- * Lit's render cycle, ensuring the DOM stays in sync with component state.
121
+ * Sincroniza `checked` y `disabled` de vuelta al elemento input nativo después
122
+ * del ciclo de renderizado de Lit, asegurando que el DOM se mantenga sincronizado con el estado del componente.
120
123
  *
121
- * This is necessary because Lit's `.property=${value}` binding updates the
122
- * DOM property, but the `live()` directive and direct property assignment
123
- * are more reliable for boolean inputs across browser implementations.
124
+ * Esto es necesario porque el enlace `.property=${value}` de Lit actualiza la
125
+ * propiedad DOM, pero la directiva `live()` y la asignación directa de propiedad
126
+ * son más fiables para entradas booleanas en diferentes implementaciones de navegadores.
124
127
  *
125
- * @param changed - Map of changed property names to their previous values.
128
+ * @param changed - Mapa de nombres de propiedades cambiadas a sus valores anteriores.
126
129
  */
127
130
  updated(changed) {
128
131
  if (this._input) {
129
- if (changed.has('checked'))
132
+ if (changed.has('checked')) {
130
133
  this._input.checked = this.checked;
134
+ this._internals?.setFormValue?.(this.checked ? (this.value || 'on') : null);
135
+ }
131
136
  if (changed.has('disabled'))
132
137
  this._input.disabled = this.disabled;
133
138
  }
@@ -260,7 +265,9 @@ let MoniCheckbox = class MoniCheckbox extends MoniElement {
260
265
  */
261
266
  _onChange(e) {
262
267
  this.checked = e.target.checked;
263
- this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
268
+ emitMoniEvent(this, 'moni-change', {
269
+ detail: { value: this.checked, originalEvent: e }
270
+ });
264
271
  }
265
272
  /**
266
273
  * Renders the accessible checkbox label structure.
@@ -8,70 +8,137 @@ import { MoniElement } from './_base/index.js';
8
8
  import './moni-icon.js';
9
9
  import './moni-progress.js';
10
10
  /**
11
- * Material Design 3 Chip component.
11
+ * Componente Material Design 3 Chip.
12
12
  *
13
- * Chips are compact, interactive elements that represent actions, filters,
14
- * attributes, or user inputs. They are visual-only shellsthe consumer
15
- * owns all state management (selection, removal, active filter state).
13
+ * Los chips (fichas) son elementos compactos e interactivos que representan acciones, filtros,
14
+ * atributos o entradas de usuario. Son contenedores solo visualesel consumidor
15
+ * es dueño de todo el manejo del estado (selección, eliminación, estado de filtro activo).
16
16
  *
17
- * **M3 spec reference:** `m3-docs/components/chips/specs.md`
17
+ * **Referencia de la especificación M3:** `m3-docs/components/chips/specs.md`
18
18
  *
19
- * **Variants:**
20
- * - `assist` (default) — Smart or suggested actions. Uses `var(--outline)` border
21
- * to ensure 3:1 contrast per the M3 accessibility spec. Alias: `outlined`.
22
- * - `filter` — Filters for a content collection. Shows a leading checkmark when
23
- * `selected`. Alias: `fill`.
24
- * - `input` — Represents discrete user input (tags, tokens). Adds a trailing
25
- * remove icon when `removable`.
26
- * - `suggestion` — Product-generated suggestions. Outlined, no icons.
19
+ * **Variantes:**
20
+ * - `assist` (por defecto) — Acciones inteligentes o sugeridas. Usa borde `var(--outline)`
21
+ * para asegurar un contraste de 3:1 según la especificación de accesibilidad de M3. Alias: `outlined`.
22
+ * - `filter` — Filtros para una colección de contenido. Muestra una marca de verificación al principio cuando
23
+ * está `selected`. Alias: `fill`.
24
+ * - `input` — Representa una entrada de usuario discreta (etiquetas, tokens). Añade un icono de
25
+ * eliminación al final cuando es `removable`.
26
+ * - `suggestion` — Sugerencias generadas por el producto. Con contorno, sin iconos.
27
27
  *
28
- * **M3 measurements:**
29
- * - Default height: 32dp (`small` size = M3 spec baseline).
30
- * - Corner radius: 8dp.
31
- * - Icon size: 18dp.
32
- * - `medium` and `large` sizes are Moni extensions with larger touch targets.
28
+ * **Medidas M3:**
29
+ * - Altura por defecto: 32dp (tamaño `small` = línea base de la especificación M3).
30
+ * - Radio de esquina: 8dp.
31
+ * - Tamaño de icono: 18dp.
32
+ * - Los tamaños `medium` y `large` son extensiones de Moni con áreas táctiles más grandes.
33
33
  *
34
- * **Accessibility:**
35
- * `assist` and `suggestion` chips use `var(--outline)` for their stroke to
36
- * guarantee 3:1 contrast against the surface background at rest.
37
- * `filter` and `input` use `outline-variant` at rest but achieve contrast
38
- * through the `secondary-container` fill when selected.
34
+ * **Accesibilidad:**
35
+ * Los chips `assist` y `suggestion` usan `var(--outline)` para su trazo para
36
+ * garantizar un contraste de 3:1 contra el fondo de la superficie en reposo.
37
+ * `filter` e `input` usan `outline-variant` en reposo pero logran contraste
38
+ * a través del relleno `secondary-container` cuando se seleccionan.
39
39
  *
40
- * @fires remove - Bubbles and is composed. Fired when the trailing remove
41
- * icon is clicked on an `input` chip with `removable`.
40
+ * @fires remove - Burbujea y está compuesto. Se dispara cuando el icono de eliminación
41
+ * final se hace clic en un chip `input` con `removable`.
42
42
  *
43
43
  * @example
44
44
  * ```html
45
- * <!-- Filter chip with selected state -->
45
+ * <!-- Chip de filtro con estado seleccionado -->
46
46
  * <moni-chip variant="filter" selected>Technology</moni-chip>
47
47
  *
48
- * <!-- Input chip (tag/token) -->
48
+ * <!-- Chip de entrada (etiqueta/token) -->
49
49
  * <moni-chip variant="input" removable icon="label">TypeScript</moni-chip>
50
50
  *
51
- * <!-- Assist chip with icon -->
51
+ * <!-- Chip de asistencia con icono -->
52
52
  * <moni-chip icon="directions_car">Get directions</moni-chip>
53
53
  * ```
54
54
  *
55
- * @slot default - The chip label text.
56
- * @slot icon - Override for the leading icon (alternative to the `icon` attribute).
55
+ * @slot default - El texto de la etiqueta del chip.
56
+ * @slot icon - Anula el icono inicial (alternativa al atributo `icon`).
57
57
  *
58
- * @csspart chip - The inner `<button>` element.
59
- * @csspart label - The label `<span>` element.
58
+ * @csspart chip - El elemento interno `<button>`.
59
+ * @csspart label - El elemento `<span>` de la etiqueta.
60
60
  */
61
61
  export declare class MoniChip extends MoniElement {
62
+ /**
63
+ * Variante visual del chip.
64
+ * @type {'assist' | 'filter' | 'input' | 'suggestion' | 'outlined' | 'fill'}
65
+ * @default 'assist'
66
+ */
62
67
  variant: 'assist' | 'filter' | 'input' | 'suggestion' | 'outlined' | 'fill';
68
+ /**
69
+ * Define las dimensiones del chip.
70
+ * @type {'small' | 'medium' | 'large'}
71
+ * @default 'small'
72
+ */
63
73
  size: 'small' | 'medium' | 'large';
74
+ /**
75
+ * Forma del radio del borde del chip.
76
+ * @type {'round' | 'no-round' | 'square' | 'circle' | 'left-round' | 'right-round' | 'top-round' | 'bottom-round'}
77
+ * @default 'round'
78
+ */
64
79
  shape: 'round' | 'no-round' | 'square' | 'circle' | 'left-round' | 'right-round' | 'top-round' | 'bottom-round';
80
+ /**
81
+ * Si es true, marca el chip como seleccionado (útil para chips de filtro).
82
+ * @type {boolean}
83
+ */
65
84
  selected: boolean;
85
+ /**
86
+ * Si es true, muestra un icono de cierre al final para permitir la eliminación.
87
+ * @type {boolean}
88
+ */
66
89
  removable: boolean;
90
+ /**
91
+ * Deshabilita el chip.
92
+ * @type {boolean}
93
+ */
67
94
  disabled: boolean;
95
+ /**
96
+ * Si es true, muestra un indicador de carga dentro del chip.
97
+ * @type {boolean}
98
+ */
68
99
  loading: boolean;
100
+ /**
101
+ * Nombre del icono inicial (Material Symbols).
102
+ * @type {string}
103
+ */
69
104
  icon: string;
70
105
  private _hasSlottedIcon;
106
+ /**
107
+ * Manejador del slot interno de icono (Slot Change).
108
+ * Determina si el desarrollador proporcionó un icono dinámicamente vía Light DOM
109
+ * (`<moni-icon slot="icon">`), permitiendo que el componente ajuste
110
+ * sus márgenes internos (`padding`) y espaciados dinámicamente.
111
+ */
71
112
  private _handleSlotChange;
72
- /** Normalize legacy variant names to M3 spec. */
113
+ /**
114
+ * Manejador de clics en el icono de remover.
115
+ * Detiene la propagación para no disparar el clic del chip y emite un evento custom 'remove'.
116
+ */
117
+ private _handleRemoveClick;
118
+ /** Normaliza los nombres de variantes heredadas a la especificación M3. */
73
119
  private get _variant();
74
120
  static styles: import("lit").CSSResult[];
121
+ /**
122
+ * Renderiza el elemento `<button>` del chip con su lista de clases calculada.
123
+ *
124
+ * **Normalización de variantes:**
125
+ * `_variant` mapea nombres de alias heredados (`'outlined'` → `'assist'`, `'fill'` → `'filter'`)
126
+ * a nombres de variantes canónicas de M3 antes de inyectarlos como clases CSS.
127
+ *
128
+ * **Ruta rápida de carga:**
129
+ * Cuando `loading=true`, se devuelve temprano un botón mínimo con solo un indicador de carga
130
+ * (sin slot de icono, sin etiqueta, sin botón de eliminación) con `aria-busy="true"`.
131
+ *
132
+ * **Lógica del botón de eliminación:**
133
+ * `showRemove` es `true` cuando:
134
+ * - `variant='input'` (Especificación M3: los chips de entrada siempre tienen un icono de cierre al final), o
135
+ * - `removable=true` se establece explícitamente.
136
+ *
137
+ * **Resolución de icono:**
138
+ * Si se establece el atributo `icon`, se renderiza un `<moni-icon>`. De lo contrario, se usa el
139
+ * slot nombrado `icon`, con `_hasSlottedIcon` rastreando si se proyectó contenido en el slot
140
+ * (usado para añadir condicionalmente los ajustes de relleno `has-icon`).
141
+ */
75
142
  render(): import("lit").TemplateResult<1>;
76
143
  }
77
144
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-chip.d.ts","sourceRoot":"","sources":["../../src/components/moni-chip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBACa,QAAS,SAAQ,WAAW;IAExC,OAAO,EACJ,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,UAAU,GACV,MAAM,CAAY;IAErB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAW;IAE7C,KAAK,EACF,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,WAAW,GACX,cAAc,CAAW;IACgB,QAAQ,UAAS;IACjB,SAAS,UAAS;IAClB,QAAQ,UAAS;IACjB,OAAO,UAAS;IAC/B,IAAI,SAAM;IAGvC,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,iBAAiB;IAKzB,iDAAiD;IACjD,OAAO,KAAK,QAAQ,GAInB;IAED,OAAgB,MAAM,4BAqLpB;IAEO,MAAM;CA+Df;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"moni-chip.d.ts","sourceRoot":"","sources":["../../src/components/moni-chip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBACa,QAAS,SAAQ,WAAW;IACxC;;;;OAIG;IAEH,OAAO,EACJ,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,UAAU,GACV,MAAM,CAAY;IAErB;;;;OAIG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAW;IAE7C;;;;OAIG;IAEH,KAAK,EACF,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,WAAW,GACX,cAAc,CAAW;IAE5B;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IACyC,SAAS,UAAS;IAE9D;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;;OAGG;IACyC,OAAO,UAAS;IAE5D;;;OAGG;IAC0B,IAAI,SAAM;IAGvC,OAAO,CAAC,eAAe,CAAS;IAEhC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAK1B,2EAA2E;IAC3E,OAAO,KAAK,QAAQ,GAInB;IAED,OAAgB,MAAM,4BAqLpB;IAEF;;;;;;;;;;;;;;;;;;;;OAoBG;IACM,MAAM;CA+Df;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}