@moni-labs/moni-ui 0.2.0 → 0.3.0

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 (323) hide show
  1. package/README.md +52 -194
  2. package/custom-elements.json +1636 -350
  3. package/dist/actions/index.d.ts +6 -0
  4. package/dist/actions/index.d.ts.map +1 -1
  5. package/dist/actions/index.js +6 -0
  6. package/dist/components/_base/field-styles.d.ts +51 -16
  7. package/dist/components/_base/field-styles.d.ts.map +1 -1
  8. package/dist/components/_base/field-styles.js +164 -36
  9. package/dist/components/_base/index.d.ts +25 -0
  10. package/dist/components/_base/index.d.ts.map +1 -1
  11. package/dist/components/_base/index.js +25 -0
  12. package/dist/components/_base/interaction-styles.d.ts +39 -12
  13. package/dist/components/_base/interaction-styles.d.ts.map +1 -1
  14. package/dist/components/_base/interaction-styles.js +85 -33
  15. package/dist/components/_base/moni-element.d.ts +43 -8
  16. package/dist/components/_base/moni-element.d.ts.map +1 -1
  17. package/dist/components/_base/moni-element.js +43 -8
  18. package/dist/components/_base/shared-styles.d.ts +41 -17
  19. package/dist/components/_base/shared-styles.d.ts.map +1 -1
  20. package/dist/components/_base/shared-styles.js +113 -21
  21. package/dist/components/index.d.ts +6 -0
  22. package/dist/components/index.d.ts.map +1 -1
  23. package/dist/components/index.js +6 -0
  24. package/dist/components/loading-shapes.d.ts +6 -0
  25. package/dist/components/loading-shapes.d.ts.map +1 -1
  26. package/dist/components/loading-shapes.js +6 -0
  27. package/dist/components/moni-app-bar.d.ts +128 -33
  28. package/dist/components/moni-app-bar.d.ts.map +1 -1
  29. package/dist/components/moni-app-bar.js +121 -26
  30. package/dist/components/moni-badge.d.ts +122 -14
  31. package/dist/components/moni-badge.d.ts.map +1 -1
  32. package/dist/components/moni-badge.js +122 -14
  33. package/dist/components/moni-bottom-sheet.d.ts +120 -15
  34. package/dist/components/moni-bottom-sheet.d.ts.map +1 -1
  35. package/dist/components/moni-bottom-sheet.js +116 -12
  36. package/dist/components/moni-button-group.d.ts +53 -27
  37. package/dist/components/moni-button-group.d.ts.map +1 -1
  38. package/dist/components/moni-button-group.js +49 -23
  39. package/dist/components/moni-button-segment.d.ts +28 -8
  40. package/dist/components/moni-button-segment.d.ts.map +1 -1
  41. package/dist/components/moni-button-segment.js +27 -7
  42. package/dist/components/moni-button.d.ts +51 -32
  43. package/dist/components/moni-button.d.ts.map +1 -1
  44. package/dist/components/moni-button.js +50 -31
  45. package/dist/components/moni-card.d.ts +91 -31
  46. package/dist/components/moni-card.d.ts.map +1 -1
  47. package/dist/components/moni-card.js +86 -26
  48. package/dist/components/moni-carousel.d.ts +67 -17
  49. package/dist/components/moni-carousel.d.ts.map +1 -1
  50. package/dist/components/moni-carousel.js +59 -16
  51. package/dist/components/moni-checkbox.d.ts +122 -17
  52. package/dist/components/moni-checkbox.d.ts.map +1 -1
  53. package/dist/components/moni-checkbox.js +118 -14
  54. package/dist/components/moni-chip.d.ts +56 -30
  55. package/dist/components/moni-chip.d.ts.map +1 -1
  56. package/dist/components/moni-chip.js +51 -25
  57. package/dist/components/moni-color-field.d.ts +44 -6
  58. package/dist/components/moni-color-field.d.ts.map +1 -1
  59. package/dist/components/moni-color-field.js +43 -5
  60. package/dist/components/moni-context-menu.d.ts +44 -22
  61. package/dist/components/moni-context-menu.d.ts.map +1 -1
  62. package/dist/components/moni-context-menu.js +43 -21
  63. package/dist/components/moni-dialog.d.ts +107 -15
  64. package/dist/components/moni-dialog.d.ts.map +1 -1
  65. package/dist/components/moni-dialog.js +105 -14
  66. package/dist/components/moni-divider.d.ts +50 -15
  67. package/dist/components/moni-divider.d.ts.map +1 -1
  68. package/dist/components/moni-divider.js +49 -14
  69. package/dist/components/moni-expansion.d.ts +44 -8
  70. package/dist/components/moni-expansion.d.ts.map +1 -1
  71. package/dist/components/moni-expansion.js +43 -7
  72. package/dist/components/moni-fab-menu.d.ts +39 -20
  73. package/dist/components/moni-fab-menu.d.ts.map +1 -1
  74. package/dist/components/moni-fab-menu.js +38 -19
  75. package/dist/components/moni-fab.d.ts +49 -23
  76. package/dist/components/moni-fab.d.ts.map +1 -1
  77. package/dist/components/moni-fab.js +46 -20
  78. package/dist/components/moni-file-field.d.ts +54 -14
  79. package/dist/components/moni-file-field.d.ts.map +1 -1
  80. package/dist/components/moni-file-field.js +53 -13
  81. package/dist/components/moni-icon.d.ts +78 -11
  82. package/dist/components/moni-icon.d.ts.map +1 -1
  83. package/dist/components/moni-icon.js +77 -10
  84. package/dist/components/moni-list-item.d.ts +61 -30
  85. package/dist/components/moni-list-item.d.ts.map +1 -1
  86. package/dist/components/moni-list-item.js +55 -24
  87. package/dist/components/moni-list.d.ts +37 -13
  88. package/dist/components/moni-list.d.ts.map +1 -1
  89. package/dist/components/moni-list.js +36 -12
  90. package/dist/components/moni-loading-indicator.d.ts +38 -11
  91. package/dist/components/moni-loading-indicator.d.ts.map +1 -1
  92. package/dist/components/moni-loading-indicator.js +37 -10
  93. package/dist/components/moni-menu-item.d.ts +31 -8
  94. package/dist/components/moni-menu-item.d.ts.map +1 -1
  95. package/dist/components/moni-menu-item.js +30 -7
  96. package/dist/components/moni-menu.d.ts +58 -33
  97. package/dist/components/moni-menu.d.ts.map +1 -1
  98. package/dist/components/moni-menu.js +51 -26
  99. package/dist/components/moni-morph-modal.d.ts +7 -1
  100. package/dist/components/moni-morph-modal.d.ts.map +1 -1
  101. package/dist/components/moni-morph-modal.js +46 -24
  102. package/dist/components/moni-nav-item.d.ts +50 -10
  103. package/dist/components/moni-nav-item.d.ts.map +1 -1
  104. package/dist/components/moni-nav-item.js +48 -8
  105. package/dist/components/moni-nav.d.ts +57 -22
  106. package/dist/components/moni-nav.d.ts.map +1 -1
  107. package/dist/components/moni-nav.js +53 -18
  108. package/dist/components/moni-progress.d.ts +108 -20
  109. package/dist/components/moni-progress.d.ts.map +1 -1
  110. package/dist/components/moni-progress.js +104 -16
  111. package/dist/components/moni-radio.d.ts +106 -14
  112. package/dist/components/moni-radio.d.ts.map +1 -1
  113. package/dist/components/moni-radio.js +104 -13
  114. package/dist/components/moni-ripple.d.ts +121 -10
  115. package/dist/components/moni-ripple.d.ts.map +1 -1
  116. package/dist/components/moni-ripple.js +120 -9
  117. package/dist/components/moni-segmented-button.d.ts +31 -11
  118. package/dist/components/moni-segmented-button.d.ts.map +1 -1
  119. package/dist/components/moni-segmented-button.js +30 -10
  120. package/dist/components/moni-select-option.d.ts +43 -9
  121. package/dist/components/moni-select-option.d.ts.map +1 -1
  122. package/dist/components/moni-select-option.js +41 -7
  123. package/dist/components/moni-select.d.ts +59 -2
  124. package/dist/components/moni-select.d.ts.map +1 -1
  125. package/dist/components/moni-select.js +58 -1
  126. package/dist/components/moni-shape.d.ts +1 -1
  127. package/dist/components/moni-side-sheet.d.ts +56 -19
  128. package/dist/components/moni-side-sheet.d.ts.map +1 -1
  129. package/dist/components/moni-side-sheet.js +53 -16
  130. package/dist/components/moni-slider.d.ts +56 -25
  131. package/dist/components/moni-slider.d.ts.map +1 -1
  132. package/dist/components/moni-slider.js +55 -24
  133. package/dist/components/moni-snackbar.d.ts +86 -17
  134. package/dist/components/moni-snackbar.d.ts.map +1 -1
  135. package/dist/components/moni-snackbar.js +85 -16
  136. package/dist/components/moni-split-button.d.ts +38 -9
  137. package/dist/components/moni-split-button.d.ts.map +1 -1
  138. package/dist/components/moni-split-button.js +37 -8
  139. package/dist/components/moni-step.d.ts +42 -9
  140. package/dist/components/moni-step.d.ts.map +1 -1
  141. package/dist/components/moni-step.js +41 -8
  142. package/dist/components/moni-stepper.d.ts +43 -6
  143. package/dist/components/moni-stepper.d.ts.map +1 -1
  144. package/dist/components/moni-stepper.js +42 -5
  145. package/dist/components/moni-switch.d.ts +103 -16
  146. package/dist/components/moni-switch.d.ts.map +1 -1
  147. package/dist/components/moni-switch.js +99 -13
  148. package/dist/components/moni-tab.d.ts +35 -8
  149. package/dist/components/moni-tab.d.ts.map +1 -1
  150. package/dist/components/moni-tab.js +34 -7
  151. package/dist/components/moni-tabs.d.ts +51 -13
  152. package/dist/components/moni-tabs.d.ts.map +1 -1
  153. package/dist/components/moni-tabs.js +48 -10
  154. package/dist/components/moni-text-field.d.ts +55 -10
  155. package/dist/components/moni-text-field.d.ts.map +1 -1
  156. package/dist/components/moni-text-field.js +54 -9
  157. package/dist/components/moni-textarea.d.ts +51 -21
  158. package/dist/components/moni-textarea.d.ts.map +1 -1
  159. package/dist/components/moni-textarea.js +48 -18
  160. package/dist/components/moni-time-picker.d.ts +41 -11
  161. package/dist/components/moni-time-picker.d.ts.map +1 -1
  162. package/dist/components/moni-time-picker.js +40 -10
  163. package/dist/components/moni-toolbar.d.ts +43 -15
  164. package/dist/components/moni-toolbar.d.ts.map +1 -1
  165. package/dist/components/moni-toolbar.js +42 -14
  166. package/dist/components/moni-tooltip.d.ts +55 -25
  167. package/dist/components/moni-tooltip.d.ts.map +1 -1
  168. package/dist/components/moni-tooltip.js +54 -24
  169. package/dist/components/moni-typography.d.ts +43 -18
  170. package/dist/components/moni-typography.d.ts.map +1 -1
  171. package/dist/components/moni-typography.js +42 -17
  172. package/dist/index.d.ts +47 -0
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +59 -2
  175. package/dist/styles/tailwind.css +67 -0
  176. package/dist/styles/tokens.css +111 -99
  177. package/dist/utils/color.d.ts +181 -2
  178. package/dist/utils/color.d.ts.map +1 -1
  179. package/dist/utils/color.js +182 -4
  180. package/dist/utils/theme.svelte.d.ts +305 -2
  181. package/dist/utils/theme.svelte.d.ts.map +1 -1
  182. package/dist/utils/theme.svelte.js +331 -2
  183. package/dist/web-components.d.ts +28 -0
  184. package/dist/web-components.d.ts.map +1 -1
  185. package/dist/web-components.js +29 -2
  186. package/package.json +1 -1
  187. package/src/actions/index.ts +7 -0
  188. package/src/components/_base/field-styles.ts +165 -37
  189. package/src/components/_base/index.ts +27 -0
  190. package/src/components/_base/interaction-styles.ts +86 -33
  191. package/src/components/_base/moni-element.ts +44 -8
  192. package/src/components/_base/shared-styles.ts +114 -21
  193. package/src/components/index.ts +7 -0
  194. package/src/components/loading-shapes.ts +7 -0
  195. package/src/components/moni-app-bar.ts +127 -26
  196. package/src/components/moni-badge.ts +128 -14
  197. package/src/components/moni-bottom-sheet.ts +125 -13
  198. package/src/components/moni-button-group.ts +50 -23
  199. package/src/components/moni-button-segment.ts +28 -7
  200. package/src/components/moni-button.ts +51 -31
  201. package/src/components/moni-card.ts +90 -26
  202. package/src/components/moni-carousel.ts +67 -16
  203. package/src/components/moni-checkbox.ts +125 -14
  204. package/src/components/moni-chip.ts +52 -25
  205. package/src/components/moni-color-field.ts +44 -5
  206. package/src/components/moni-context-menu.ts +44 -21
  207. package/src/components/moni-dialog.ts +111 -14
  208. package/src/components/moni-divider.ts +50 -14
  209. package/src/components/moni-expansion.ts +44 -7
  210. package/src/components/moni-fab-menu.ts +39 -19
  211. package/src/components/moni-fab.ts +47 -20
  212. package/src/components/moni-file-field.ts +54 -13
  213. package/src/components/moni-icon.ts +80 -10
  214. package/src/components/moni-list-item.ts +56 -24
  215. package/src/components/moni-list.ts +37 -12
  216. package/src/components/moni-loading-indicator.ts +38 -10
  217. package/src/components/moni-menu-item.ts +31 -7
  218. package/src/components/moni-menu.ts +52 -26
  219. package/src/components/moni-morph-modal.ts +58 -24
  220. package/src/components/moni-nav-item.ts +49 -8
  221. package/src/components/moni-nav.ts +54 -18
  222. package/src/components/moni-progress.ts +109 -16
  223. package/src/components/moni-radio.ts +111 -13
  224. package/src/components/moni-ripple.ts +126 -9
  225. package/src/components/moni-segmented-button.ts +31 -10
  226. package/src/components/moni-select-option.ts +42 -7
  227. package/src/components/moni-select.ts +79 -1
  228. package/src/components/moni-side-sheet.ts +54 -16
  229. package/src/components/moni-slider.ts +56 -24
  230. package/src/components/moni-snackbar.ts +90 -16
  231. package/src/components/moni-split-button.ts +38 -8
  232. package/src/components/moni-step.ts +42 -8
  233. package/src/components/moni-stepper.ts +43 -5
  234. package/src/components/moni-switch.ts +106 -13
  235. package/src/components/moni-tab.ts +35 -7
  236. package/src/components/moni-tabs.ts +49 -10
  237. package/src/components/moni-text-field.ts +55 -9
  238. package/src/components/moni-textarea.ts +49 -18
  239. package/src/components/moni-time-picker.ts +41 -10
  240. package/src/components/moni-toolbar.ts +43 -14
  241. package/src/components/moni-tooltip.ts +55 -24
  242. package/src/components/moni-typography.ts +43 -17
  243. package/src/index.ts +67 -3
  244. package/src/styles/tailwind.css +67 -0
  245. package/src/styles/tokens.css +111 -99
  246. package/src/types/svelte-runes.d.ts +64 -2
  247. package/src/utils/color.ts +286 -5
  248. package/src/utils/theme.svelte.ts +411 -2
  249. package/src/web-components.ts +31 -2
  250. package/dist/assets/shapes/arch.svg +0 -1
  251. package/dist/assets/shapes/arrow.svg +0 -1
  252. package/dist/assets/shapes/boom.svg +0 -1
  253. package/dist/assets/shapes/burst.svg +0 -1
  254. package/dist/assets/shapes/circle.svg +0 -1
  255. package/dist/assets/shapes/clamshell.svg +0 -1
  256. package/dist/assets/shapes/diamond.svg +0 -1
  257. package/dist/assets/shapes/fan.svg +0 -1
  258. package/dist/assets/shapes/flower.svg +0 -1
  259. package/dist/assets/shapes/gem.svg +0 -1
  260. package/dist/assets/shapes/ghost-ish.svg +0 -1
  261. package/dist/assets/shapes/heart.svg +0 -1
  262. package/dist/assets/shapes/leaf-clover4.svg +0 -1
  263. package/dist/assets/shapes/leaf-clover8.svg +0 -1
  264. package/dist/assets/shapes/loading-indicator.svg +0 -1
  265. package/dist/assets/shapes/oval.svg +0 -1
  266. package/dist/assets/shapes/pentagon.svg +0 -1
  267. package/dist/assets/shapes/pill.svg +0 -1
  268. package/dist/assets/shapes/pixel-circle.svg +0 -1
  269. package/dist/assets/shapes/pixel-triangle.svg +0 -1
  270. package/dist/assets/shapes/puffy-diamond.svg +0 -1
  271. package/dist/assets/shapes/puffy.svg +0 -1
  272. package/dist/assets/shapes/semicircle.svg +0 -1
  273. package/dist/assets/shapes/sided-cookie12.svg +0 -1
  274. package/dist/assets/shapes/sided-cookie4.svg +0 -1
  275. package/dist/assets/shapes/sided-cookie6.svg +0 -1
  276. package/dist/assets/shapes/sided-cookie7.svg +0 -1
  277. package/dist/assets/shapes/sided-cookie9.svg +0 -1
  278. package/dist/assets/shapes/slanted.svg +0 -1
  279. package/dist/assets/shapes/soft-boom.svg +0 -1
  280. package/dist/assets/shapes/soft-burst.svg +0 -1
  281. package/dist/assets/shapes/square.svg +0 -1
  282. package/dist/assets/shapes/sunny.svg +0 -1
  283. package/dist/assets/shapes/triangle.svg +0 -1
  284. package/dist/assets/shapes/very-sunny.svg +0 -1
  285. package/dist/assets/shapes/wavy-circle.svg +0 -1
  286. package/dist/assets/shapes/wavy.svg +0 -1
  287. package/src/assets/shapes/arch.svg +0 -1
  288. package/src/assets/shapes/arrow.svg +0 -1
  289. package/src/assets/shapes/boom.svg +0 -1
  290. package/src/assets/shapes/burst.svg +0 -1
  291. package/src/assets/shapes/circle.svg +0 -1
  292. package/src/assets/shapes/clamshell.svg +0 -1
  293. package/src/assets/shapes/diamond.svg +0 -1
  294. package/src/assets/shapes/fan.svg +0 -1
  295. package/src/assets/shapes/flower.svg +0 -1
  296. package/src/assets/shapes/gem.svg +0 -1
  297. package/src/assets/shapes/ghost-ish.svg +0 -1
  298. package/src/assets/shapes/heart.svg +0 -1
  299. package/src/assets/shapes/leaf-clover4.svg +0 -1
  300. package/src/assets/shapes/leaf-clover8.svg +0 -1
  301. package/src/assets/shapes/loading-indicator.svg +0 -1
  302. package/src/assets/shapes/oval.svg +0 -1
  303. package/src/assets/shapes/pentagon.svg +0 -1
  304. package/src/assets/shapes/pill.svg +0 -1
  305. package/src/assets/shapes/pixel-circle.svg +0 -1
  306. package/src/assets/shapes/pixel-triangle.svg +0 -1
  307. package/src/assets/shapes/puffy-diamond.svg +0 -1
  308. package/src/assets/shapes/puffy.svg +0 -1
  309. package/src/assets/shapes/semicircle.svg +0 -1
  310. package/src/assets/shapes/sided-cookie12.svg +0 -1
  311. package/src/assets/shapes/sided-cookie4.svg +0 -1
  312. package/src/assets/shapes/sided-cookie6.svg +0 -1
  313. package/src/assets/shapes/sided-cookie7.svg +0 -1
  314. package/src/assets/shapes/sided-cookie9.svg +0 -1
  315. package/src/assets/shapes/slanted.svg +0 -1
  316. package/src/assets/shapes/soft-boom.svg +0 -1
  317. package/src/assets/shapes/soft-burst.svg +0 -1
  318. package/src/assets/shapes/square.svg +0 -1
  319. package/src/assets/shapes/sunny.svg +0 -1
  320. package/src/assets/shapes/triangle.svg +0 -1
  321. package/src/assets/shapes/very-sunny.svg +0 -1
  322. package/src/assets/shapes/wavy-circle.svg +0 -1
  323. package/src/assets/shapes/wavy.svg +0 -1
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file components/moni-loading-indicator.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
8
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
9
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -9,18 +15,39 @@ import { customElement, property, query } from 'lit/decorators.js';
9
15
  import { MoniElement, sharedStyles } from './_base/index.js';
10
16
  import { loadingIndicatorPolygons } from './loading-shapes.js';
11
17
  /**
12
- * Shape-shifting indeterminate loading indicator based on Material 3 Expressive spec.
18
+ * Material Design 3 Loading Indicator component.
19
+ *
20
+ * An indeterminate loading indicator that visually represents an unspecified
21
+ * wait time. Unlike standard circular spinners, this component uses a morphing
22
+ * polygon animation that shifts between shapes (circle, rounded square, etc.)
23
+ * in accordance with the high-fidelity M3 Expressive motion specifications.
24
+ *
25
+ * **Variants:**
26
+ * - `uncontained` (default) — A standalone morphing shape that inherits color
27
+ * from its text context (or defaults to `primary`).
28
+ * - `contained` — The morphing shape is placed inside a circular container
29
+ * with a distinct background color, useful for high-contrast loading states
30
+ * or overlaying imagery.
31
+ *
32
+ * **Animation & Accessibility:**
33
+ * The component manages its own SVG `<animate>` tags. The animation is
34
+ * automatically started/stopped via `connectedCallback`/`disconnectedCallback`
35
+ * to save CPU cycles when the element is off-screen. It applies standard ARIA
36
+ * roles (`role="progressbar"`) and value attributes to ensure screen readers
37
+ * identify it correctly as an indeterminate loading state.
38
+ *
39
+ * @example
40
+ * ```html
41
+ * <!-- Uncontained indicator -->
42
+ * <moni-loading-indicator></moni-loading-indicator>
13
43
  *
14
- * Attributes:
15
- * - variant: 'uncontained' (default) | 'contained'
44
+ * <!-- Contained indicator (default container is secondary-container) -->
45
+ * <moni-loading-indicator variant="contained"></moni-loading-indicator>
46
+ * ```
16
47
  *
17
- * CSS custom properties for customization:
18
- * - --moni-loading-indicator-size: Size of the active indicator (default: 2.375rem)
19
- * - --moni-loading-indicator-active-color: Active indicator color in uncontained mode (default: var(--primary))
20
- * - --moni-loading-indicator-contained-active-color: Active indicator color in contained mode (default: var(--on-primary-container))
21
- * - --moni-loading-indicator-contained-container-color: Background color of container in contained mode (default: var(--secondary-container))
22
- * - --moni-loading-indicator-container-shape: Border radius of container in contained mode (default: 9999px)
23
- * - --moni-loading-indicator-container-size: Container size (default: 3rem)
48
+ * @csspart container - The outer `.container` wrapper.
49
+ * @csspart svg - The inner `<svg>` element.
50
+ * @csspart shape - The `<path>` element that morphs.
24
51
  */
25
52
  let MoniLoadingIndicator = class MoniLoadingIndicator extends MoniElement {
26
53
  constructor() {
@@ -1,14 +1,37 @@
1
+ /**
2
+ * @file components/moni-menu-item.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  import { MoniElement } from './_base/index.js';
2
8
  import './moni-icon.js';
3
9
  /**
4
- * Visual-only menu item. Renders an `<li>` styled with the BeerCSS
5
- * `menu > li` rule.
10
+ * Material Design 3 Menu Item component.
11
+ *
12
+ * A single interactive item within a `<moni-menu>` or `<moni-context-menu>`.
13
+ * It provides standard M3 menu item styling, hover states, and optional
14
+ * leading icons.
15
+ *
16
+ * **M3 spec reference:** `m3-docs/components/menus/specs.md`
17
+ *
18
+ * **Interaction states:**
19
+ * - Hover: applies an opacity layer.
20
+ * - Active (`active=true`): applies a `tertiary-container` background highlight,
21
+ * useful for indicating the currently selected option in a list.
22
+ * - Disabled (`disabled=true`): reduces opacity and disables pointer events.
23
+ *
24
+ * @example
25
+ * ```html
26
+ * <moni-menu-item icon="edit">Edit text</moni-menu-item>
27
+ * <moni-menu-item icon="content_copy" disabled>Copy</moni-menu-item>
28
+ * <moni-menu-item active>Currently selected</moni-menu-item>
29
+ * ```
30
+ *
31
+ * @slot default - The text label for the menu item.
6
32
  *
7
- * Attributes:
8
- * - active: present tertiary-container highlight
9
- * - disabled: present
10
- * - icon: Material Symbols name
11
- * - label: item text
33
+ * @csspart item - The outer `<li>` element.
34
+ * @csspart icon - The container for the leading icon.
12
35
  */
13
36
  export declare class MoniMenuItem extends MoniElement {
14
37
  active: boolean;
@@ -16,7 +39,7 @@ export declare class MoniMenuItem extends MoniElement {
16
39
  icon: string;
17
40
  label: string;
18
41
  static styles: import("lit").CSSResult[];
19
- render(): import("lit-html").TemplateResult<1>;
42
+ render(): import("lit").TemplateResult<1>;
20
43
  }
21
44
  declare global {
22
45
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-menu-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-menu-item.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;GASG;AACH,qBACa,YAAa,SAAQ,WAAW;IACA,MAAM,UAAS;IACf,QAAQ,UAAS;IAChC,IAAI,SAAM;IACV,KAAK,SAAM;IAExC,OAAgB,MAAM,4BA4CpB;IAEO,MAAM;CAQf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,YAAY,CAAC;KAC/B;CACD;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"moni-menu-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-menu-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,YAAa,SAAQ,WAAW;IACA,MAAM,UAAS;IACf,QAAQ,UAAS;IAChC,IAAI,SAAM;IACV,KAAK,SAAM;IAExC,OAAgB,MAAM,4BA4CpB;IAEO,MAAM;CAQf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,YAAY,CAAC;KAC/B;CACD;AAED,eAAe,YAAY,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file components/moni-menu-item.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
8
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
9
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -9,14 +15,31 @@ import { customElement, property } from 'lit/decorators.js';
9
15
  import { MoniElement, sharedStyles } from './_base/index.js';
10
16
  import './moni-icon.js';
11
17
  /**
12
- * Visual-only menu item. Renders an `<li>` styled with the BeerCSS
13
- * `menu > li` rule.
18
+ * Material Design 3 Menu Item component.
19
+ *
20
+ * A single interactive item within a `<moni-menu>` or `<moni-context-menu>`.
21
+ * It provides standard M3 menu item styling, hover states, and optional
22
+ * leading icons.
23
+ *
24
+ * **M3 spec reference:** `m3-docs/components/menus/specs.md`
25
+ *
26
+ * **Interaction states:**
27
+ * - Hover: applies an opacity layer.
28
+ * - Active (`active=true`): applies a `tertiary-container` background highlight,
29
+ * useful for indicating the currently selected option in a list.
30
+ * - Disabled (`disabled=true`): reduces opacity and disables pointer events.
31
+ *
32
+ * @example
33
+ * ```html
34
+ * <moni-menu-item icon="edit">Edit text</moni-menu-item>
35
+ * <moni-menu-item icon="content_copy" disabled>Copy</moni-menu-item>
36
+ * <moni-menu-item active>Currently selected</moni-menu-item>
37
+ * ```
38
+ *
39
+ * @slot default - The text label for the menu item.
14
40
  *
15
- * Attributes:
16
- * - active: present tertiary-container highlight
17
- * - disabled: present
18
- * - icon: Material Symbols name
19
- * - label: item text
41
+ * @csspart item - The outer `<li>` element.
42
+ * @csspart icon - The container for the leading icon.
20
43
  */
21
44
  let MoniMenuItem = class MoniMenuItem extends MoniElement {
22
45
  constructor() {
@@ -1,37 +1,62 @@
1
+ /**
2
+ * @file components/moni-menu.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  import { MoniElement } from './_base/index.js';
2
8
  /**
3
- * Menu that faithfully ports BeerCSS's `menu` styles.
4
- *
5
- * BeerCSS uses a plain `<menu>` with class `.active` toggled by JS
6
- * NO Popover API. The menu positions itself as `position: absolute`
7
- * relative to the nearest positioned ancestor.
8
- *
9
- * Shadow DOM note: we keep :host as `display: contents` so the inner
10
- * `<menu>` can position relative to the consumer's layout context.
11
- * The consumer must have `position: relative` on the trigger's wrapper.
12
- *
13
- * **M3 spec** (`m3-docs/components/menus/guidelines.md`): menus should
14
- * auto-flip to the opposite side when there isn't enough viewport space
15
- * in the requested placement.
16
- *
17
- * **Flip implementation** (P4.3):
18
- * - Modern browsers (Chrome 125+, Edge 125+, Safari 18+): uses CSS
19
- * `@position-try-fallback` (Baseline 2024) when `flip` is set.
20
- * - Older browsers (Firefox, Safari < 18): JS polyfill. After the menu
21
- * becomes active, we measure the inner `<menu>` rect; if it overflows
22
- * the viewport on the requested side, we set `_resolvedPlacement`
23
- * to the opposite side and the CSS picks up the change.
24
- *
25
- * Attributes:
26
- * - placement: bottom (default) | top | left | right | min | max
27
- * - no-wrap: present
28
- * - space: no-space | space | small-space | medium-space | large-space | extra-space
29
- * - active: present → menu is visible
30
- * - flip: present → enable auto-flip when there is no viewport space
31
- * (works on all browsers; CSS-native when supported)
32
- *
33
- * Slots:
34
- * - default: menu items (moni-menu-item or li elements)
9
+ * Material Design 3 Menu component.
10
+ *
11
+ * Menus display a list of choices on a temporary surface. They appear when
12
+ * users interact with a button, action, or other control.
13
+ *
14
+ * **M3 spec reference:** `m3-docs/components/menus/guidelines.md`
15
+ *
16
+ * **Positioning architecture:**
17
+ * The menu uses `position: absolute` relative to its nearest positioned
18
+ * ancestor. The component's `:host` uses `display: contents`, meaning the
19
+ * inner `<menu>` element directly participates in the consumer's layout context.
20
+ * **Crucial:** The consumer must apply `position: relative` to the wrapper
21
+ * element that contains both the trigger and the `<moni-menu>`.
22
+ *
23
+ * **Auto-flip positioning:**
24
+ * Per M3 guidelines, menus should flip to the opposite side of the anchor
25
+ * if they overflow the viewport.
26
+ * - **Modern browsers (Chrome/Edge 125+, Safari 18+):** Uses CSS anchor
27
+ * positioning and `@position-try-fallback` natively when `flip=true`.
28
+ * - **Fallback:** A JavaScript polyfill measures the menu after it opens. If
29
+ * it overflows the requested `placement`, it sets an internal state to flip
30
+ * the placement classes.
31
+ *
32
+ * **State management:**
33
+ * The `active` attribute controls visibility. Consumers must listen to trigger
34
+ * events (like `click`) and toggle the `active` property.
35
+ *
36
+ * @example
37
+ * ```html
38
+ * <!-- Wrapper must have position: relative -->
39
+ * <div style="position: relative; display: inline-block;">
40
+ * <moni-button id="menu-trigger">Open Menu</moni-button>
41
+ *
42
+ * <moni-menu placement="bottom" flip id="my-menu">
43
+ * <moni-menu-item icon="edit">Edit</moni-menu-item>
44
+ * <moni-menu-item icon="content_copy">Copy</moni-menu-item>
45
+ * <moni-divider></moni-divider>
46
+ * <moni-menu-item icon="delete">Delete</moni-menu-item>
47
+ * </moni-menu>
48
+ * </div>
49
+ *
50
+ * <script>
51
+ * const btn = document.getElementById('menu-trigger');
52
+ * const menu = document.getElementById('my-menu');
53
+ * btn.addEventListener('click', () => menu.active = !menu.active);
54
+ * </script>
55
+ * ```
56
+ *
57
+ * @slot default - `<moni-menu-item>`, `<moni-divider>`, or raw `<li>` elements.
58
+ *
59
+ * @csspart menu - The inner `<menu>` container.
35
60
  */
36
61
  export declare class MoniMenu extends MoniElement {
37
62
  placement: 'bottom' | 'top' | 'left' | 'right' | 'min' | 'max';
@@ -44,7 +69,7 @@ export declare class MoniMenu extends MoniElement {
44
69
  updated(changed: Map<string, unknown>): void;
45
70
  private _maybeFlip;
46
71
  static styles: import("lit").CSSResult[];
47
- render(): import("lit-html").TemplateResult<1>;
72
+ render(): import("lit").TemplateResult<1>;
48
73
  }
49
74
  declare global {
50
75
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-menu.d.ts","sourceRoot":"","sources":["../../src/components/moni-menu.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBACa,QAAS,SAAQ,WAAW;IAExC,SAAS,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAY;IACR,MAAM,UAAS;IACrC,MAAM,UAAS;IAE3D,KAAK,EACF,UAAU,GACV,OAAO,GACP,aAAa,GACb,cAAc,GACd,aAAa,GACb,aAAa,CAAc;IACc,IAAI,UAAS;IAEhD,OAAO,CAAC,kBAAkB,CAMf;IAEL,OAAO,CAAC,OAAO,CAAC,CAAc;IAEpC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAS9C,OAAO,CAAC,UAAU;IAuBlB,OAAgB,MAAM,4BAkKpB;IAEO,MAAM;CAkBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"moni-menu.d.ts","sourceRoot":"","sources":["../../src/components/moni-menu.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,qBACa,QAAS,SAAQ,WAAW;IAExC,SAAS,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAY;IACR,MAAM,UAAS;IACrC,MAAM,UAAS;IAE3D,KAAK,EACF,UAAU,GACV,OAAO,GACP,aAAa,GACb,cAAc,GACd,aAAa,GACb,aAAa,CAAc;IACc,IAAI,UAAS;IAEhD,OAAO,CAAC,kBAAkB,CAMf;IAEL,OAAO,CAAC,OAAO,CAAC,CAAc;IAEpC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAS9C,OAAO,CAAC,UAAU;IAuBlB,OAAgB,MAAM,4BAkKpB;IAEO,MAAM;CAkBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file components/moni-menu.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
8
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
9
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -8,38 +14,57 @@ import { html, css } from 'lit';
8
14
  import { customElement, property, query, state } from 'lit/decorators.js';
9
15
  import { MoniElement, sharedStyles } from './_base/index.js';
10
16
  /**
11
- * Menu that faithfully ports BeerCSS's `menu` styles.
17
+ * Material Design 3 Menu component.
18
+ *
19
+ * Menus display a list of choices on a temporary surface. They appear when
20
+ * users interact with a button, action, or other control.
21
+ *
22
+ * **M3 spec reference:** `m3-docs/components/menus/guidelines.md`
23
+ *
24
+ * **Positioning architecture:**
25
+ * The menu uses `position: absolute` relative to its nearest positioned
26
+ * ancestor. The component's `:host` uses `display: contents`, meaning the
27
+ * inner `<menu>` element directly participates in the consumer's layout context.
28
+ * **Crucial:** The consumer must apply `position: relative` to the wrapper
29
+ * element that contains both the trigger and the `<moni-menu>`.
30
+ *
31
+ * **Auto-flip positioning:**
32
+ * Per M3 guidelines, menus should flip to the opposite side of the anchor
33
+ * if they overflow the viewport.
34
+ * - **Modern browsers (Chrome/Edge 125+, Safari 18+):** Uses CSS anchor
35
+ * positioning and `@position-try-fallback` natively when `flip=true`.
36
+ * - **Fallback:** A JavaScript polyfill measures the menu after it opens. If
37
+ * it overflows the requested `placement`, it sets an internal state to flip
38
+ * the placement classes.
12
39
  *
13
- * BeerCSS uses a plain `<menu>` with class `.active` toggled by JS —
14
- * NO Popover API. The menu positions itself as `position: absolute`
15
- * relative to the nearest positioned ancestor.
40
+ * **State management:**
41
+ * The `active` attribute controls visibility. Consumers must listen to trigger
42
+ * events (like `click`) and toggle the `active` property.
16
43
  *
17
- * Shadow DOM note: we keep :host as `display: contents` so the inner
18
- * `<menu>` can position relative to the consumer's layout context.
19
- * The consumer must have `position: relative` on the trigger's wrapper.
44
+ * @example
45
+ * ```html
46
+ * <!-- Wrapper must have position: relative -->
47
+ * <div style="position: relative; display: inline-block;">
48
+ * <moni-button id="menu-trigger">Open Menu</moni-button>
20
49
  *
21
- * **M3 spec** (`m3-docs/components/menus/guidelines.md`): menus should
22
- * auto-flip to the opposite side when there isn't enough viewport space
23
- * in the requested placement.
50
+ * <moni-menu placement="bottom" flip id="my-menu">
51
+ * <moni-menu-item icon="edit">Edit</moni-menu-item>
52
+ * <moni-menu-item icon="content_copy">Copy</moni-menu-item>
53
+ * <moni-divider></moni-divider>
54
+ * <moni-menu-item icon="delete">Delete</moni-menu-item>
55
+ * </moni-menu>
56
+ * </div>
24
57
  *
25
- * **Flip implementation** (P4.3):
26
- * - Modern browsers (Chrome 125+, Edge 125+, Safari 18+): uses CSS
27
- * `@position-try-fallback` (Baseline 2024) when `flip` is set.
28
- * - Older browsers (Firefox, Safari < 18): JS polyfill. After the menu
29
- * becomes active, we measure the inner `<menu>` rect; if it overflows
30
- * the viewport on the requested side, we set `_resolvedPlacement`
31
- * to the opposite side and the CSS picks up the change.
58
+ * <script>
59
+ * const btn = document.getElementById('menu-trigger');
60
+ * const menu = document.getElementById('my-menu');
61
+ * btn.addEventListener('click', () => menu.active = !menu.active);
62
+ * </script>
63
+ * ```
32
64
  *
33
- * Attributes:
34
- * - placement: bottom (default) | top | left | right | min | max
35
- * - no-wrap: present
36
- * - space: no-space | space | small-space | medium-space | large-space | extra-space
37
- * - active: present → menu is visible
38
- * - flip: present → enable auto-flip when there is no viewport space
39
- * (works on all browsers; CSS-native when supported)
65
+ * @slot default - `<moni-menu-item>`, `<moni-divider>`, or raw `<li>` elements.
40
66
  *
41
- * Slots:
42
- * - default: menu items (moni-menu-item or li elements)
67
+ * @csspart menu - The inner `<menu>` container.
43
68
  */
44
69
  let MoniMenu = class MoniMenu extends MoniElement {
45
70
  constructor() {
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file components/moni-morph-modal.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  import { MoniElement } from './_base/index.js';
2
8
  import './moni-icon.js';
3
9
  type Placement = 'center' | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end' | 'viewport-center' | 'viewport-top' | 'viewport-bottom' | 'viewport-left' | 'viewport-right' | 'viewport-top-left' | 'viewport-top-right' | 'viewport-bottom-left' | 'viewport-bottom-right';
@@ -67,7 +73,7 @@ export declare class MoniMorphModal extends MoniElement {
67
73
  private _computeFinalRect;
68
74
  private _parseSize;
69
75
  static styles: import("lit").CSSResult[];
70
- render(): import("lit-html").TemplateResult<1>;
76
+ render(): import("lit").TemplateResult<1>;
71
77
  }
72
78
  declare global {
73
79
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-morph-modal.d.ts","sourceRoot":"","sources":["../../src/components/moni-morph-modal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAI7D,OAAO,gBAAgB,CAAC;AAQxB,KAAK,SAAS,GACX,QAAQ,GACR,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,GACP,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,CAAC;AAgD3B,qBACa,cAAe,SAAQ,WAAW;IACjB,MAAM,SAAM;IACuB,IAAI,UAAS;IACb,KAAK,UAAQ;IAChD,SAAS,EAAE,SAAS,CAAY;IACH,aAAa,SAC9D;IACkD,cAAc,SAChE;IAET,mBAAmB,UAAQ;IAE3B,UAAU,UAAQ;IAElB,eAAe,UAAS;IAExB,UAAU,UAAS;IAEnB,kBAAkB,SAAM;IAExB,WAAW,UAAQ;IAEnB,UAAU,UAAS;IAEnB,WAAW,UAAS;IAEH,OAAO,CAAC,MAAM,CAAkB;IAC1B,OAAO,CAAC,MAAM,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAkB;IACtC,OAAO,CAAC,OAAO,CAAe;IAEtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,OAAO,CAAO;IACtB,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,MAAM,CAAC,UAAU,CAAwB;IACjD,OAAO,CAAC,kBAAkB,CAA8D;IAExF,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAmD;IACxE,OAAO,CAAC,WAAW,CAKjB;IAEO,iBAAiB,IAAI,IAAI;IAOzB,oBAAoB,IAAI,IAAI;IAiB5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAW9C,OAAO,CAAC,cAAc;IAgBtB,IAAI,IAAI,IAAI;IAkKZ,OAAO,CAAC,2BAA2B;IAgBnC,IAAI,IAAI,IAAI;IA0JZ,MAAM,IAAI,IAAI;IAKd,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,gBAAgB;IAqDxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;IAoF3B,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,iBAAiB;IAuIzB,OAAO,CAAC,UAAU;IAYlB,OAAgB,MAAM,4BAqHpB;IAEO,MAAM;CA4Cf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,kBAAkB,EAAE,cAAc,CAAC;KACnC;CACD;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"moni-morph-modal.d.ts","sourceRoot":"","sources":["../../src/components/moni-morph-modal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAI7D,OAAO,gBAAgB,CAAC;AAQxB,KAAK,SAAS,GACX,QAAQ,GACR,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,GACP,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,CAAC;AA2E3B,qBACa,cAAe,SAAQ,WAAW;IACjB,MAAM,SAAM;IACuB,IAAI,UAAS;IACb,KAAK,UAAQ;IAChD,SAAS,EAAE,SAAS,CAAY;IACH,aAAa,SAC9D;IACkD,cAAc,SAChE;IAET,mBAAmB,UAAQ;IAE3B,UAAU,UAAQ;IAElB,eAAe,UAAS;IAExB,UAAU,UAAS;IAEnB,kBAAkB,SAAM;IAExB,WAAW,UAAQ;IAEnB,UAAU,UAAS;IAEnB,WAAW,UAAS;IAEH,OAAO,CAAC,MAAM,CAAkB;IAC1B,OAAO,CAAC,MAAM,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAkB;IACtC,OAAO,CAAC,OAAO,CAAe;IAEtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,OAAO,CAAO;IACtB,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,MAAM,CAAC,UAAU,CAAwB;IACjD,OAAO,CAAC,kBAAkB,CAA8D;IAExF,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAmD;IACxE,OAAO,CAAC,WAAW,CAKjB;IAEO,iBAAiB,IAAI,IAAI;IAOzB,oBAAoB,IAAI,IAAI;IAiB5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAW9C,OAAO,CAAC,cAAc;IAgBtB,IAAI,IAAI,IAAI;IAkKZ,OAAO,CAAC,2BAA2B;IAgBnC,IAAI,IAAI,IAAI;IA0JZ,MAAM,IAAI,IAAI;IAKd,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,gBAAgB;IAqDxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;IAoF3B,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,iBAAiB;IAuIzB,OAAO,CAAC,UAAU;IAYlB,OAAgB,MAAM,4BAqHpB;IAEO,MAAM;CA4Cf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,kBAAkB,EAAE,cAAc,CAAC;KACnC;CACD;AAED,eAAe,cAAc,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file components/moni-morph-modal.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
8
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
9
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -16,33 +22,49 @@ gsap.registerPlugin(Flip, CustomEase);
16
22
  CustomEase.create('morph-open', '0.15, 0.85, 0.2, 1');
17
23
  CustomEase.create('morph-close', '0.4, 0, 0.2, 1');
18
24
  /**
19
- * Morph-modal: abre un panel Material Design 3 a partir de cualquier elemento
20
- * del DOM usando una animación FLIP (First / Last / Invert / Play) con GSAP.
25
+ * Material Design 3 Morph Modal component.
26
+ *
27
+ * A highly interactive dialog that uses GSAP FLIP (First, Last, Invert, Play)
28
+ * animations to seamlessly "morph" any clicked element on the page into a full
29
+ * modal surface, and morph it back when closed.
30
+ *
31
+ * **Motion choreography:**
32
+ * This component implements the complex M3 container transform pattern. When
33
+ * triggered, the source element visually expands into the modal. The modal's
34
+ * background color, border radius, and typography fade and cross-dissolve
35
+ * perfectly with the origin element.
36
+ *
37
+ * **Triggering mechanism:**
38
+ * Consumers must provide the `triggerEvent` property containing the original
39
+ * pointer/click `Event` that initiated the open action. The component extracts
40
+ * the `event.target` (or uses `clientX/Y` as a fallback) to determine the exact
41
+ * origin coordinates for the GSAP FLIP animation.
42
+ *
43
+ * **Dialog behavior:**
44
+ * Internally, it uses the native `<dialog>` element. It traps focus, supports
45
+ * `Escape` to close, and handles scrim/backdrop clicks (which trigger the
46
+ * reverse morph animation before actually closing the native dialog).
47
+ *
48
+ * @example
49
+ * ```html
50
+ * <moni-morph-modal id="myModal" title="Details">
51
+ * <p>This modal morphed from the button you just clicked.</p>
52
+ * </moni-morph-modal>
21
53
  *
22
- * El elemento disparador (`target`) no se modifica estructuralmente; solo se
23
- * lee su rectángulo y estilos computados para hacer coincidir el punto inicial
24
- * de la morph-animation. El contenido del panel se declara dentro del propio
25
- * componente, de forma recursiva: dentro de un `<moni-morph-modal>` abierto se
26
- * puede declarar otro `<moni-morph-modal>` apuntando a un botón interior.
54
+ * <moni-button id="openBtn">Open Details</moni-button>
27
55
  *
28
- * Attributes:
29
- * - target: selector CSS del elemento disparador.
30
- * - open: estado abierto/cerrado (reflejado).
31
- * - modal: si se muestra fondo oscuro (scrim).
32
- * - placement: posición final del panel expandido.
33
- * - expanded-width: ancho del panel (px, rem, %, vw).
34
- * - expanded-height: alto del panel (px, rem, %, vh).
35
- * - close-on-click-outside: cierra al clicar fuera.
36
- * - close-on-esc: cierra con Escape.
37
- * - show-close-button: muestra una “X” en el header.
38
- * - morph-label: anima el label/icono del target hacia el header.
39
- * - morph-label-selector: selector dentro del target para targets arbitrarios.
56
+ * <script>
57
+ * const modal = document.getElementById('myModal');
58
+ * document.getElementById('openBtn').addEventListener('click', (e) => {
59
+ * modal.triggerEvent = e; // Pass the event so it knows where to morph from
60
+ * modal.open = true;
61
+ * });
62
+ * </script>
63
+ * ```
40
64
  *
41
- * Slots:
42
- * - default: cuerpo del panel.
43
- * - header: encabezado.
44
- * - footer: acciones al pie.
45
- * - trigger-label: contenido explícito a animar desde el target.
65
+ * @slot default - The main body content of the modal.
66
+ * @slot header - Custom header content (overrides `title` attribute).
67
+ * @slot actions - Action buttons displayed at the bottom right.
46
68
  */
47
69
  const litBool = {
48
70
  fromAttribute: (value) => value !== 'false' && value !== null,
@@ -1,15 +1,55 @@
1
+ /**
2
+ * @file components/moni-nav-item.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  import { MoniElement } from './_base/index.js';
2
8
  import './moni-icon.js';
3
9
  /**
4
- * Visual-only navigation item. Renders an `<a>` styled with the BeerCSS
5
- * nav link helper.
6
- *
7
- * Attributes:
8
- * - href: link target
9
- * - target: link target
10
- * - icon: Material Symbols name
11
- * - label: link text
12
- * - active: present active style
10
+ * Material Design 3 Navigation Item component.
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.
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`
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).
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.
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.
36
+ *
37
+ * @example
38
+ * ```html
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 -->
44
+ * </moni-nav-item>
45
+ * </moni-nav>
46
+ * ```
47
+ *
48
+ * @slot default - Additional content slotted after the icon (e.g. `<moni-badge>`).
49
+ *
50
+ * @csspart item - The outer `<a>` element.
51
+ * @csspart icon - The icon container.
52
+ * @csspart label - The label text element.
13
53
  */
14
54
  export declare class MoniNavItem extends MoniElement {
15
55
  href: string;
@@ -27,7 +67,7 @@ export declare class MoniNavItem extends MoniElement {
27
67
  private _handleQueryChange;
28
68
  get computedLayout(): 'vertical' | 'horizontal';
29
69
  static styles: import("lit").CSSResult[];
30
- render(): import("lit-html").TemplateResult<1>;
70
+ render(): import("lit").TemplateResult<1>;
31
71
  }
32
72
  declare global {
33
73
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-nav-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav-item.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;GAUG;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;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,3 +1,9 @@
1
+ /**
2
+ * @file components/moni-nav-item.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
8
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
9
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -10,15 +16,49 @@ import { ifDefined } from 'lit/directives/if-defined.js';
10
16
  import { MoniElement, sharedStyles } from './_base/index.js';
11
17
  import './moni-icon.js';
12
18
  /**
13
- * Visual-only navigation item. Renders an `<a>` styled with the BeerCSS
14
- * nav link helper.
19
+ * Material Design 3 Navigation Item component.
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.
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`
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).
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.
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.
45
+ *
46
+ * @example
47
+ * ```html
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 -->
53
+ * </moni-nav-item>
54
+ * </moni-nav>
55
+ * ```
56
+ *
57
+ * @slot default - Additional content slotted after the icon (e.g. `<moni-badge>`).
15
58
  *
16
- * Attributes:
17
- * - href: link target
18
- * - target: link target
19
- * - icon: Material Symbols name
20
- * - label: link text
21
- * - active: present → active style
59
+ * @csspart item - The outer `<a>` element.
60
+ * @csspart icon - The icon container.
61
+ * @csspart label - The label text element.
22
62
  */
23
63
  let MoniNavItem = class MoniNavItem extends MoniElement {
24
64
  constructor() {