@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-text-field.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);
@@ -12,17 +18,56 @@ import { MoniElement, sharedStyles, fieldStyles } from './_base/index.js';
12
18
  import './moni-icon.js';
13
19
  import './moni-progress.js';
14
20
  /**
15
- * Visual-only text field. Renders the `.field` family of BeerCSS helpers
16
- * with a native `<input>`.
21
+ * Material Design 3 Text Field component.
22
+ *
23
+ * A full-featured input field that wraps a native `<input>` inside the M3
24
+ * field shell (`.field` class from `fieldStyles`). Supports floating labels,
25
+ * filled and outlined variants, leading/trailing icons, helper text, and
26
+ * error states.
27
+ *
28
+ * **M3 spec reference:** `m3-docs/components/text-fields/specs.md`
29
+ *
30
+ * **Visual architecture:**
31
+ * Uses `fieldStyles` for the complete CSS field shell. The field container
32
+ * is a `<div class="field [modifiers]">` wrapping:
33
+ * 1. Optional leading icon.
34
+ * 2. Native `<input>` element.
35
+ * 3. Floating `<label>` (when `label` is set).
36
+ * 4. Optional trailing icon or loading spinner.
37
+ * 5. `<output>` for helper/error text.
38
+ *
39
+ * **Visual-only contract:**
40
+ * This component does **not** listen to `@input` events to sync the `value`
41
+ * attribute back from the underlying `<input>`. Consumers must either:
42
+ * - Submit the native form (the `<input name>` participates in form submission).
43
+ * - Listen to `change` or `input` events via standard DOM event handling.
44
+ * - Use a framework binding (e.g. `bind:value` in Svelte, `v-model` in Vue).
45
+ *
46
+ * @example
47
+ * ```html
48
+ * <moni-text-field
49
+ * label="Email address"
50
+ * type="email"
51
+ * name="email"
52
+ * icon="mail"
53
+ * variant="outlined"
54
+ * helper="We'll never share your email."
55
+ * ></moni-text-field>
17
56
  *
18
- * This component is **visual-only**: it does NOT listen to `@input` to
19
- * sync the `value` attribute back from the underlying input. Consumers
20
- * either use form submission or wire their own change handling.
57
+ * <moni-text-field
58
+ * label="Amount"
59
+ * type="number"
60
+ * prefix="$"
61
+ * error
62
+ * error-text="Value must be positive"
63
+ * ></moni-text-field>
64
+ * ```
21
65
  *
22
- * Attributes:
23
- * - name, label, value, variant, size, shape, type, icon, trailing-icon,
24
- * prefix, suffix, helper, error, error-text, disabled, placeholder see below.
25
- * - loading: present shows indeterminate circular progress
66
+ * @csspart field - The outer `.field` div container.
67
+ * @csspart input - The native `<input>` element.
68
+ * @csspart label - The floating `<label>` element.
69
+ * @csspart helper - The helper `<output>` element.
70
+ * @csspart error-output - The error `<output>` element.
26
71
  */
27
72
  let MoniTextField = class MoniTextField extends MoniElement {
28
73
  constructor() {
@@ -1,27 +1,57 @@
1
+ /**
2
+ * @file components/moni-textarea.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
  import './moni-progress.js';
4
10
  /**
5
- * Visual-only textarea. Same field shell as moni-text-field but renders a
6
- * `<textarea>`. Visual-only: no `@input` listener.
7
- *
8
- * M3 spec (`m3-docs/components/text-fields/specs.md`): the textarea supports
9
- * both **filled** and **outlined** variants. When `maxlength` is set, a
10
- * character counter is shown next to the supporting text
11
- * (`{value.length} / {maxlength}`).
12
- *
13
- * Attributes:
14
- * - name, label, value, variant, size, shape, disabled, helper, error,
15
- * error-text, placeholder see moni-text-field.
16
- * - icon: leading Material Symbols name
17
- * - trailing-icon: trailing Material Symbols name
18
- * - prefix: short text rendered before the input (e.g. "https://")
19
- * - suffix: short text rendered after the input (e.g. ".com")
20
- * - loading: present shows indeterminate circular progress
21
- * - rows: native textarea rows attribute (default 3)
22
- * - maxlength: when set, displays a character counter
23
- * (auto-shown; can be hidden via `no-counter`)
24
- * - no-counter: suppress the character counter even when maxlength is set
11
+ * Material Design 3 Textarea component.
12
+ *
13
+ * A multi-line text input field designed for collecting longer amounts of text,
14
+ * such as comments, descriptions, or messages.
15
+ *
16
+ * **M3 spec reference:** `m3-docs/components/text-fields/specs.md`
17
+ *
18
+ * **Visual architecture:**
19
+ * It shares the exact same `.field` shell and styling engine as
20
+ * `<moni-text-field>`, but internally renders a native `<textarea>` instead
21
+ * of an `<input>`. This ensures visual consistency across all form elements
22
+ * regarding floating labels, helper text, error states, and icons.
23
+ *
24
+ * **Character Counter:**
25
+ * If the `maxlength` attribute is set, the textarea automatically displays
26
+ * a character counter (`{current length} / {maxlength}`) positioned at the
27
+ * trailing edge of the supporting text area (bottom right). This can be
28
+ * suppressed by setting the `no-counter` attribute.
29
+ *
30
+ * **State management:**
31
+ * This component is purely visual and presentational. It reflects attributes
32
+ * down to the native textarea, but it does NOT attach internal `@input` or
33
+ * `@change` listeners. Consumers should attach standard DOM listeners directly
34
+ * to this element to capture user input, just as they would with a native
35
+ * textarea.
36
+ *
37
+ * @example
38
+ * ```html
39
+ * <!-- Standard filled textarea -->
40
+ * <moni-textarea label="Description" rows="4"></moni-textarea>
41
+ *
42
+ * <!-- Outlined textarea with character counter -->
43
+ * <moni-textarea
44
+ * variant="outlined"
45
+ * label="Bio"
46
+ * maxlength="160"
47
+ * ></moni-textarea>
48
+ * ```
49
+ *
50
+ * @csspart field - The outer `.field` div container.
51
+ * @csspart input - The native `<textarea>` element.
52
+ * @csspart label - The floating `<label>` element.
53
+ * @csspart helper - The helper/error text area.
54
+ * @csspart counter - The character counter element.
25
55
  */
26
56
  export declare class MoniTextarea extends MoniElement {
27
57
  name: string;
@@ -46,7 +76,7 @@ export declare class MoniTextarea extends MoniElement {
46
76
  private _input;
47
77
  updated(changed: Map<string, unknown>): void;
48
78
  static styles: import("lit").CSSResult[];
49
- render(): import("lit-html").TemplateResult<1>;
79
+ render(): import("lit").TemplateResult<1>;
50
80
  }
51
81
  declare global {
52
82
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-textarea.d.ts","sourceRoot":"","sources":["../../src/components/moni-textarea.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAA6B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,gBAAgB,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBACa,YAAa,SAAQ,WAAW;IACf,IAAI,SAAM;IACV,KAAK,SAAM;IACX,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAY;IAEvE,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAY;IAExD,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAc;IACvB,IAAI,SAAM;IACkB,YAAY,SAAM;IAC9C,MAAM,SAAM;IACZ,MAAM,SAAM;IACE,IAAI,SAAK;IACT,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3E,SAAS,UAAS;IAC0B,OAAO,UAAS;IAChB,QAAQ,UAAS;IAChC,MAAM,SAAM;IACa,SAAS,SAAM;IACzB,KAAK,UAAS;IAC7B,KAAK,SAAM;IACX,WAAW,SAAM;IAE3B,OAAO,CAAC,MAAM,CAAuB;IAE/C,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU9C,OAAgB,MAAM,4BAA+B;IAE5C,MAAM;CAkGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,YAAY,CAAC;KAC9B;CACD;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"moni-textarea.d.ts","sourceRoot":"","sources":["../../src/components/moni-textarea.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAA6B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,gBAAgB,CAAC;AACxB,OAAO,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBACa,YAAa,SAAQ,WAAW;IACf,IAAI,SAAM;IACV,KAAK,SAAM;IACX,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAY;IAEvE,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAY;IAExD,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAc;IACvB,IAAI,SAAM;IACkB,YAAY,SAAM;IAC9C,MAAM,SAAM;IACZ,MAAM,SAAM;IACE,IAAI,SAAK;IACT,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3E,SAAS,UAAS;IAC0B,OAAO,UAAS;IAChB,QAAQ,UAAS;IAChC,MAAM,SAAM;IACa,SAAS,SAAM;IACzB,KAAK,UAAS;IAC7B,KAAK,SAAM;IACX,WAAW,SAAM;IAE3B,OAAO,CAAC,MAAM,CAAuB;IAE/C,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU9C,OAAgB,MAAM,4BAA+B;IAE5C,MAAM;CAkGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,YAAY,CAAC;KAC9B;CACD;AAED,eAAe,YAAY,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file components/moni-textarea.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);
@@ -12,26 +18,50 @@ import { MoniElement, sharedStyles, fieldStyles } from './_base/index.js';
12
18
  import './moni-icon.js';
13
19
  import './moni-progress.js';
14
20
  /**
15
- * Visual-only textarea. Same field shell as moni-text-field but renders a
16
- * `<textarea>`. Visual-only: no `@input` listener.
21
+ * Material Design 3 Textarea component.
22
+ *
23
+ * A multi-line text input field designed for collecting longer amounts of text,
24
+ * such as comments, descriptions, or messages.
25
+ *
26
+ * **M3 spec reference:** `m3-docs/components/text-fields/specs.md`
27
+ *
28
+ * **Visual architecture:**
29
+ * It shares the exact same `.field` shell and styling engine as
30
+ * `<moni-text-field>`, but internally renders a native `<textarea>` instead
31
+ * of an `<input>`. This ensures visual consistency across all form elements
32
+ * regarding floating labels, helper text, error states, and icons.
33
+ *
34
+ * **Character Counter:**
35
+ * If the `maxlength` attribute is set, the textarea automatically displays
36
+ * a character counter (`{current length} / {maxlength}`) positioned at the
37
+ * trailing edge of the supporting text area (bottom right). This can be
38
+ * suppressed by setting the `no-counter` attribute.
39
+ *
40
+ * **State management:**
41
+ * This component is purely visual and presentational. It reflects attributes
42
+ * down to the native textarea, but it does NOT attach internal `@input` or
43
+ * `@change` listeners. Consumers should attach standard DOM listeners directly
44
+ * to this element to capture user input, just as they would with a native
45
+ * textarea.
46
+ *
47
+ * @example
48
+ * ```html
49
+ * <!-- Standard filled textarea -->
50
+ * <moni-textarea label="Description" rows="4"></moni-textarea>
17
51
  *
18
- * M3 spec (`m3-docs/components/text-fields/specs.md`): the textarea supports
19
- * both **filled** and **outlined** variants. When `maxlength` is set, a
20
- * character counter is shown next to the supporting text
21
- * (`{value.length} / {maxlength}`).
52
+ * <!-- Outlined textarea with character counter -->
53
+ * <moni-textarea
54
+ * variant="outlined"
55
+ * label="Bio"
56
+ * maxlength="160"
57
+ * ></moni-textarea>
58
+ * ```
22
59
  *
23
- * Attributes:
24
- * - name, label, value, variant, size, shape, disabled, helper, error,
25
- * error-text, placeholder see moni-text-field.
26
- * - icon: leading Material Symbols name
27
- * - trailing-icon: trailing Material Symbols name
28
- * - prefix: short text rendered before the input (e.g. "https://")
29
- * - suffix: short text rendered after the input (e.g. ".com")
30
- * - loading: present → shows indeterminate circular progress
31
- * - rows: native textarea rows attribute (default 3)
32
- * - maxlength: when set, displays a character counter
33
- * (auto-shown; can be hidden via `no-counter`)
34
- * - no-counter: suppress the character counter even when maxlength is set
60
+ * @csspart field - The outer `.field` div container.
61
+ * @csspart input - The native `<textarea>` element.
62
+ * @csspart label - The floating `<label>` element.
63
+ * @csspart helper - The helper/error text area.
64
+ * @csspart counter - The character counter element.
35
65
  */
36
66
  let MoniTextarea = class MoniTextarea extends MoniElement {
37
67
  constructor() {
@@ -1,20 +1,50 @@
1
+ /**
2
+ * @file components/moni-time-picker.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
1
7
  import { PropertyValues } from 'lit';
2
8
  import { MoniElement } from './_base/index.js';
3
9
  import './moni-icon.js';
4
10
  import './moni-button.js';
5
11
  /**
6
- * Material Design 3 Time Picker Component.
7
- * Supports interactive clock face (dial) and manual keyboard input.
12
+ * Material Design 3 Time Picker component.
13
+ *
14
+ * A highly interactive control that allows users to select a specific time.
15
+ * It provides two distinct input modes:
16
+ * 1. **Dial mode:** An interactive clock face where users can drag or click
17
+ * to select hours and minutes.
18
+ * 2. **Input mode:** Standard text inputs for precise keyboard entry.
19
+ *
20
+ * **M3 spec reference:** `m3-docs/components/time-pickers/specs.md`
21
+ *
22
+ * **Time formats & modes:**
23
+ * - The `value` property expects and always outputs a 24-hour formatted string
24
+ * (`HH:MM`, e.g., `"14:30"`).
25
+ * - Setting `use-24-hour` configures the visual presentation to use a 24-hour
26
+ * clock dial (inner and outer rings) and removes the AM/PM toggle. Otherwise,
27
+ * it uses a standard 12-hour dial with an AM/PM toggle.
28
+ *
29
+ * **Responsive design:**
30
+ * The `orientation` attribute configures the layout. `vertical` stacks the
31
+ * time display above the clock face, `horizontal` places them side-by-side,
32
+ * and `auto` responds to the container/viewport width automatically.
33
+ *
34
+ * @fires change - Fired when the selected time changes interactively. The
35
+ * `detail.value` contains the new time in `HH:MM` format.
36
+ * @fires cancel - Fired when the 'Cancel' button is clicked.
37
+ * @fires ok - Fired when the 'OK' button is clicked. The `detail.value`
38
+ * contains the final confirmed time.
8
39
  *
9
- * Attributes:
10
- * - value: Time value in "HH:MM" 24h format (default "00:00")
11
- * - use24Hour: If true, uses 24-hour mode without AM/PM toggle (default false)
12
- * - mode: "dial" | "input" (default "dial")
40
+ * @example
41
+ * ```html
42
+ * <!-- 12-hour format (AM/PM) -->
43
+ * <moni-time-picker value="14:30"></moni-time-picker>
13
44
  *
14
- * Events:
15
- * - change: Fired when value changes (detail: { value })
16
- * - cancel: Fired when cancel button is clicked
17
- * - ok: Fired when OK button is clicked (detail: { value })
45
+ * <!-- 24-hour format -->
46
+ * <moni-time-picker use-24-hour value="14:30"></moni-time-picker>
47
+ * ```
18
48
  */
19
49
  export declare class MoniTimePicker extends MoniElement {
20
50
  value: string;
@@ -40,7 +70,7 @@ export declare class MoniTimePicker extends MoniElement {
40
70
  private handleMinuteInputChange;
41
71
  static styles: import("lit").CSSResult[];
42
72
  private renderDialClockFace;
43
- render(): import("lit-html").TemplateResult<1>;
73
+ render(): import("lit").TemplateResult<1>;
44
74
  }
45
75
  declare global {
46
76
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-time-picker.d.ts","sourceRoot":"","sources":["../../src/components/moni-time-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;GAaG;AACH,qBACa,cAAe,SAAQ,WAAW;IACjB,KAAK,SAAW;IACyB,SAAS,UAAS;IAC3D,IAAI,EAAE,MAAM,GAAG,OAAO,CAAU;IAChC,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAU;IAE7E,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,MAAM,CAAqB;IAEnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;IAEb,OAAO,CAAC,WAAW,CAAC,CAAiB;IAE3D,OAAO,CAAC,UAAU,CAAS;cAER,UAAU,CAAC,iBAAiB,EAAE,cAAc;IAM/D,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,uBAAuB;IAY/B,OAAgB,MAAM,4BAqXpB;IAEF,OAAO,CAAC,mBAAmB;IAwIlB,MAAM;CAsFf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,kBAAkB,EAAE,cAAc,CAAC;KACnC;CACD;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"moni-time-picker.d.ts","sourceRoot":"","sources":["../../src/components/moni-time-picker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBACa,cAAe,SAAQ,WAAW;IACjB,KAAK,SAAW;IACyB,SAAS,UAAS;IAC3D,IAAI,EAAE,MAAM,GAAG,OAAO,CAAU;IAChC,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAU;IAE7E,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,MAAM,CAAqB;IAEnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;IAEb,OAAO,CAAC,WAAW,CAAC,CAAiB;IAE3D,OAAO,CAAC,UAAU,CAAS;cAER,UAAU,CAAC,iBAAiB,EAAE,cAAc;IAM/D,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,uBAAuB;IAY/B,OAAgB,MAAM,4BAqXpB;IAEF,OAAO,CAAC,mBAAmB;IAwIlB,MAAM;CAsFf;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-time-picker.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,18 +16,42 @@ import { MoniElement, sharedStyles } from './_base/index.js';
10
16
  import './moni-icon.js';
11
17
  import './moni-button.js';
12
18
  /**
13
- * Material Design 3 Time Picker Component.
14
- * Supports interactive clock face (dial) and manual keyboard input.
19
+ * Material Design 3 Time Picker component.
20
+ *
21
+ * A highly interactive control that allows users to select a specific time.
22
+ * It provides two distinct input modes:
23
+ * 1. **Dial mode:** An interactive clock face where users can drag or click
24
+ * to select hours and minutes.
25
+ * 2. **Input mode:** Standard text inputs for precise keyboard entry.
26
+ *
27
+ * **M3 spec reference:** `m3-docs/components/time-pickers/specs.md`
28
+ *
29
+ * **Time formats & modes:**
30
+ * - The `value` property expects and always outputs a 24-hour formatted string
31
+ * (`HH:MM`, e.g., `"14:30"`).
32
+ * - Setting `use-24-hour` configures the visual presentation to use a 24-hour
33
+ * clock dial (inner and outer rings) and removes the AM/PM toggle. Otherwise,
34
+ * it uses a standard 12-hour dial with an AM/PM toggle.
35
+ *
36
+ * **Responsive design:**
37
+ * The `orientation` attribute configures the layout. `vertical` stacks the
38
+ * time display above the clock face, `horizontal` places them side-by-side,
39
+ * and `auto` responds to the container/viewport width automatically.
40
+ *
41
+ * @fires change - Fired when the selected time changes interactively. The
42
+ * `detail.value` contains the new time in `HH:MM` format.
43
+ * @fires cancel - Fired when the 'Cancel' button is clicked.
44
+ * @fires ok - Fired when the 'OK' button is clicked. The `detail.value`
45
+ * contains the final confirmed time.
15
46
  *
16
- * Attributes:
17
- * - value: Time value in "HH:MM" 24h format (default "00:00")
18
- * - use24Hour: If true, uses 24-hour mode without AM/PM toggle (default false)
19
- * - mode: "dial" | "input" (default "dial")
47
+ * @example
48
+ * ```html
49
+ * <!-- 12-hour format (AM/PM) -->
50
+ * <moni-time-picker value="14:30"></moni-time-picker>
20
51
  *
21
- * Events:
22
- * - change: Fired when value changes (detail: { value })
23
- * - cancel: Fired when cancel button is clicked
24
- * - ok: Fired when OK button is clicked (detail: { value })
52
+ * <!-- 24-hour format -->
53
+ * <moni-time-picker use-24-hour value="14:30"></moni-time-picker>
54
+ * ```
25
55
  */
26
56
  let MoniTimePicker = class MoniTimePicker extends MoniElement {
27
57
  constructor() {
@@ -1,30 +1,58 @@
1
+ /**
2
+ * @file components/moni-toolbar.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
- * Material 3 Toolbar (`m3-docs/components/top-app-bar/specs.md`).
9
+ * Material Design 3 Top App Bar (Toolbar) component.
10
+ *
11
+ * Top app bars display information and actions at the top of a screen.
12
+ * They are used for branding, screen titles, navigation, and actions.
13
+ *
14
+ * **M3 spec reference:** `m3-docs/components/top-app-bar/specs.md`
15
+ *
16
+ * **Note:** This is the standard top-level toolbar. For bottom navigation
17
+ * bars (often used on mobile), use `<moni-app-bar>`.
18
+ *
19
+ * **Variants:**
20
+ * - `standard` (default): A full-width bar (64dp height) that sits flush
21
+ * against the top of the screen.
22
+ * - `floating`: A detached bar with a 4dp margin and rounded 8dp corners,
23
+ * appearing to float above the content.
4
24
  *
5
- * This is the larger/top-level variant. If you need the compact
6
- * Navigation Bar at the bottom of the screen, use `<moni-app-bar>`.
25
+ * **Scroll behavior:**
26
+ * When the `scroll` attribute is present, the toolbar visually responds to
27
+ * scrolling by increasing its elevation (shadow) and dynamically shifting
28
+ * its surface color to indicate depth over the scrolling content.
7
29
  *
8
- * Supported M3 types:
9
- * - **standard** (default): 64dp height, flat surface color, bottom shadow.
10
- * - **floating**: 4dp margin, rounded 8dp corners, elevated.
30
+ * @example
31
+ * ```html
32
+ * <!-- Standard toolbar with navigation and actions -->
33
+ * <moni-toolbar title="Inbox">
34
+ * <moni-icon-button slot="leading" icon="menu"></moni-icon-button>
35
+ * <moni-icon-button slot="trailing" icon="search"></moni-icon-button>
36
+ * <moni-icon-button slot="trailing" icon="more_vert"></moni-icon-button>
37
+ * </moni-toolbar>
11
38
  *
12
- * Slots:
13
- * - default: title / center content.
14
- * - leading: navigation icon/button.
15
- * - trailing: action icons/buttons.
16
- * - action-button: floating action button (moni-fab) anchored right.
39
+ * <!-- Floating toolbar with an attached FAB -->
40
+ * <moni-toolbar type="floating" title="Notes">
41
+ * <moni-fab slot="action-button" icon="add"></moni-fab>
42
+ * </moni-toolbar>
43
+ * ```
17
44
  *
18
- * Attributes:
19
- * - type: standard (default) | floating
20
- * - scroll: true | false (default). When true, elevation increases on scroll.
45
+ * @slot default - The title text or center content.
46
+ * @slot leading - Navigation icon/button placed on the far left.
47
+ * @slot trailing - Action icons/buttons placed on the far right.
48
+ * @slot action-button - A floating action button (FAB) anchored to the right side.
21
49
  */
22
50
  export declare class MoniToolbar extends MoniElement {
23
51
  type: 'standard' | 'floating';
24
52
  scrolled: boolean;
25
53
  title: string;
26
54
  static styles: import("lit").CSSResult[];
27
- render(): import("lit-html").TemplateResult<1>;
55
+ render(): import("lit").TemplateResult<1>;
28
56
  }
29
57
  declare global {
30
58
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"moni-toolbar.d.ts","sourceRoot":"","sources":["../../src/components/moni-toolbar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,WAAY,SAAQ,WAAW;IAE3C,IAAI,EAAE,UAAU,GAAG,UAAU,CAAc;IAE3C,QAAQ,UAAS;IACY,KAAK,SAAM;IAExC,OAAgB,MAAM,4BA8DpB;IAEO,MAAM;CAcf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,WAAW,CAAC;KAC5B;CACD;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"moni-toolbar.d.ts","sourceRoot":"","sources":["../../src/components/moni-toolbar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBACa,WAAY,SAAQ,WAAW;IAE3C,IAAI,EAAE,UAAU,GAAG,UAAU,CAAc;IAE3C,QAAQ,UAAS;IACY,KAAK,SAAM;IAExC,OAAgB,MAAM,4BA8DpB;IAEO,MAAM;CAcf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,WAAW,CAAC;KAC5B;CACD;AAED,eAAe,WAAW,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file components/moni-toolbar.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,24 +14,46 @@ import { html, css } from 'lit';
8
14
  import { customElement, property } from 'lit/decorators.js';
9
15
  import { MoniElement, sharedStyles } from './_base/index.js';
10
16
  /**
11
- * Material 3 Toolbar (`m3-docs/components/top-app-bar/specs.md`).
17
+ * Material Design 3 Top App Bar (Toolbar) component.
18
+ *
19
+ * Top app bars display information and actions at the top of a screen.
20
+ * They are used for branding, screen titles, navigation, and actions.
21
+ *
22
+ * **M3 spec reference:** `m3-docs/components/top-app-bar/specs.md`
23
+ *
24
+ * **Note:** This is the standard top-level toolbar. For bottom navigation
25
+ * bars (often used on mobile), use `<moni-app-bar>`.
26
+ *
27
+ * **Variants:**
28
+ * - `standard` (default): A full-width bar (64dp height) that sits flush
29
+ * against the top of the screen.
30
+ * - `floating`: A detached bar with a 4dp margin and rounded 8dp corners,
31
+ * appearing to float above the content.
12
32
  *
13
- * This is the larger/top-level variant. If you need the compact
14
- * Navigation Bar at the bottom of the screen, use `<moni-app-bar>`.
33
+ * **Scroll behavior:**
34
+ * When the `scroll` attribute is present, the toolbar visually responds to
35
+ * scrolling by increasing its elevation (shadow) and dynamically shifting
36
+ * its surface color to indicate depth over the scrolling content.
15
37
  *
16
- * Supported M3 types:
17
- * - **standard** (default): 64dp height, flat surface color, bottom shadow.
18
- * - **floating**: 4dp margin, rounded 8dp corners, elevated.
38
+ * @example
39
+ * ```html
40
+ * <!-- Standard toolbar with navigation and actions -->
41
+ * <moni-toolbar title="Inbox">
42
+ * <moni-icon-button slot="leading" icon="menu"></moni-icon-button>
43
+ * <moni-icon-button slot="trailing" icon="search"></moni-icon-button>
44
+ * <moni-icon-button slot="trailing" icon="more_vert"></moni-icon-button>
45
+ * </moni-toolbar>
19
46
  *
20
- * Slots:
21
- * - default: title / center content.
22
- * - leading: navigation icon/button.
23
- * - trailing: action icons/buttons.
24
- * - action-button: floating action button (moni-fab) anchored right.
47
+ * <!-- Floating toolbar with an attached FAB -->
48
+ * <moni-toolbar type="floating" title="Notes">
49
+ * <moni-fab slot="action-button" icon="add"></moni-fab>
50
+ * </moni-toolbar>
51
+ * ```
25
52
  *
26
- * Attributes:
27
- * - type: standard (default) | floating
28
- * - scroll: true | false (default). When true, elevation increases on scroll.
53
+ * @slot default - The title text or center content.
54
+ * @slot leading - Navigation icon/button placed on the far left.
55
+ * @slot trailing - Action icons/buttons placed on the far right.
56
+ * @slot action-button - A floating action button (FAB) anchored to the right side.
29
57
  */
30
58
  let MoniToolbar = class MoniToolbar extends MoniElement {
31
59
  constructor() {
@@ -1,33 +1,63 @@
1
+ /**
2
+ * @file components/moni-tooltip.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
- * Tooltip that faithfully ports BeerCSS's `.tooltip` styles and adds M3
4
- * Expressive semantics.
9
+ * Material Design 3 Tooltip component.
10
+ *
11
+ * Tooltips provide contextual text labels or rich content that appear when
12
+ * users hover over, focus on, or tap an element. They surface supplementary
13
+ * information that helps users understand interface elements without
14
+ * permanently occupying screen space.
15
+ *
16
+ * **M3 spec reference:** `m3-docs/components/tooltips/specs.md`
17
+ *
18
+ * **Types:**
19
+ * - **Plain** (default) — Text-only label for simple descriptions (max 1 line).
20
+ * - **Rich** (`rich` attribute) — HTML content including formatted text,
21
+ * links, and icons. Rich tooltips can contain multiple lines and action links.
22
+ *
23
+ * **Placements:**
24
+ * - `top` (default), `top-start`, `top-end`
25
+ * - `bottom`, `bottom-start`, `bottom-end`
26
+ *
27
+ * **Trigger mechanism:**
28
+ * The tooltip uses `position: absolute` inside the parent element. The parent
29
+ * must have `position: relative` (set automatically via `connectedCallback`).
30
+ * Hover/focus events on the parent trigger the tooltip's CSS `:hover` and
31
+ * `:focus-within` selectors, which drive the show/hide transition.
32
+ *
33
+ * **Accessibility:**
34
+ * - The tooltip has `role="tooltip"`.
35
+ * - For keyboard accessibility, the parent should have `aria-describedby`
36
+ * pointing to the tooltip's `id` attribute. The component exposes a
37
+ * `tooltipId` getter for this purpose.
38
+ * - The `Escape` key closes rich tooltips.
5
39
  *
6
- * **M3 spec** (`m3-docs/components/tooltips/specs.md`):
7
- * - Two types: **plain** (text only) and **rich** (HTML content).
8
- * - 6 placements: top, top-start, top-end, bottom, bottom-start, bottom-end.
9
- * - Trigger: hover (mouse) or focus (keyboard) on the parent.
10
- * - Auto-dismiss: tooltip hides on `mouseleave` / `focusout` / `Escape`.
40
+ * @example
41
+ * ```html
42
+ * <!-- Plain tooltip -->
43
+ * <button aria-describedby="save-tip">
44
+ * Save
45
+ * <moni-tooltip id="save-tip" text="Ctrl+S"></moni-tooltip>
46
+ * </button>
11
47
  *
12
- * The component delegates trigger detection to the parent element (consistent
13
- * with the original BeerCSS port). The tooltip element is `position: absolute`
14
- * inside the parent so it follows the trigger naturally.
48
+ * <!-- Rich tooltip -->
49
+ * <button>
50
+ * Filter
51
+ * <moni-tooltip rich position="bottom">
52
+ * <strong>Filter by date</strong>
53
+ * <p>Select a date range to filter results.</p>
54
+ * </moni-tooltip>
55
+ * </button>
56
+ * ```
15
57
  *
16
- * **Accessibility**:
17
- * - The tooltip has `role="tooltip"` (M3 spec).
18
- * - When `rich` content is used, the parent should also have
19
- * `aria-describedby="<tooltip-id>"`. The component sets a unique `id` on
20
- * the tooltip element and exposes it via `tooltipId` getter.
21
- * - `Escape` closes the tooltip (WAI-ARIA tooltip pattern).
58
+ * @slot default - Rich content for the tooltip body (only used when `rich=true`).
22
59
  *
23
- * Attributes:
24
- * - text: tooltip text (plain tooltip)
25
- * - position: top (default) | top-start | top-end | bottom | bottom-start | bottom-end
26
- * - size: '' (default) | small | medium | large
27
- * - rich: boolean — when true, the default slot accepts arbitrary HTML
28
- * for rich content (links, icons, etc.). When false (default),
29
- * the slot is rendered as text only.
30
- * - id: forwarded to the tooltip element (useful for aria-describedby)
60
+ * @csspart tooltip - The tooltip container element.
31
61
  */
32
62
  export declare class MoniTooltip extends MoniElement {
33
63
  text: string;
@@ -54,7 +84,7 @@ export declare class MoniTooltip extends MoniElement {
54
84
  */
55
85
  get tooltipId(): string;
56
86
  static styles: import("lit").CSSResult[];
57
- render(): import("lit-html").TemplateResult<1>;
87
+ render(): import("lit").TemplateResult<1>;
58
88
  }
59
89
  declare global {
60
90
  interface HTMLElementTagNameMap {