@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,51 +1,140 @@
1
+ /**
2
+ * @file components/moni-app-bar.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
7
+
1
8
  import { html, css, nothing } from 'lit';
2
9
  import { customElement, property } from 'lit/decorators.js';
3
10
  import { MoniElement, sharedStyles } from './_base/index.js';
4
11
 
5
12
  /**
6
- * Material 3 App Bar (`m3-docs/components/app-bars/specs.md`).
13
+ * Material Design 3 App Bar component.
14
+ *
15
+ * App bars provide navigation and action controls at the top (or bottom) of a
16
+ * screen. They are positioned sticky by default so they remain visible as the
17
+ * user scrolls through content.
18
+ *
19
+ * **M3 spec reference:** `m3-docs/components/app-bars/specs.md`
20
+ *
21
+ * **Placement:**
22
+ * - `top` (default) — 64dp header fixed above page content. Uses `position: sticky`
23
+ * with `inset-block-start: 0` so it stays at the top of the scroll container.
24
+ * - `bottom` — Mobile navigation footer anchored to the bottom of the viewport.
25
+ * Ideal for housing primary navigation icons and an optional FAB.
7
26
  *
8
- * App bars are placed at the top of a screen to help users navigate.
9
- * Two main placements:
10
- * - **top** (default): header above content. Standard height **64dp**.
11
- * - **bottom**: footer below content (mobile pattern). Houses navigation
12
- * icons and an optional FAB anchor.
27
+ * **Variants:**
28
+ * - `standard` — Flat surface (no shadow) when content is at the top. Best for most UIs.
29
+ * - `floating` Always elevated with `--elevate2` shadow. Use when the bar visually
30
+ * floats above the content regardless of scroll position.
13
31
  *
14
- * Two variants:
15
- * - **standard** (default): flat surface with no shadow at rest.
16
- * - **floating**: gains an elevation 2 shadow when content scrolls under it.
32
+ * **Sizes:**
33
+ * - `default` — 64dp (4rem) tall. Standard for most use cases.
34
+ * - `prominent` 152dp (9.5rem) tall. Use when a subtitle or expanded area is needed.
35
+ * The `subtitle` attribute is only rendered in this size.
17
36
  *
18
- * Two size modes:
19
- * - **default**: 64dp tall.
20
- * - **prominent**: 152dp tall, used when a subtitle is shown.
37
+ * @example
38
+ * ```html
39
+ * <!-- Top app bar with navigation icon and action buttons -->
40
+ * <moni-app-bar title="Settings">
41
+ * <moni-button slot="leading" shape="circle" variant="text" icon="menu"></moni-button>
42
+ * <moni-button slot="trailing" shape="circle" variant="text" icon="search"></moni-button>
43
+ * <moni-button slot="trailing" shape="circle" variant="text" icon="more_vert"></moni-button>
44
+ * </moni-app-bar>
45
+ * ```
21
46
  *
22
- * Center-aligned title (M3 spec): title is centered horizontally.
23
- * Navigation icons go to the leading edge; actions to the trailing edge.
47
+ * @example
48
+ * ```html
49
+ * <!-- Prominent app bar with subtitle -->
50
+ * <moni-app-bar size="prominent" title="Inbox" subtitle="12 unread messages" elevated>
51
+ * </moni-app-bar>
52
+ * ```
24
53
  *
25
- * Attributes:
26
- * - placement: top (default) | bottom
27
- * - variant: standard (default) | floating
28
- * - size: default (default, 64dp) | prominent (152dp)
29
- * - title: text content of the title (centered)
30
- * - subtitle: optional subtitle shown below the title (prominent only)
31
- * - elevated: present → adds elevation 2 shadow (e.g. when scrolled)
54
+ * @slot leading - Navigation icon(s) placed on the leading (start) edge.
55
+ * @slot trailing - Action icon(s) placed on the trailing (end) edge.
56
+ * @slot fab - FAB anchored to the trailing edge (bottom placement only).
57
+ * @slot default - Additional content (e.g. a tab bar below the title row).
32
58
  *
33
- * Slots:
34
- * - leading: navigation icon(s) on the leading edge
35
- * - trailing: action icon(s) on the trailing edge
36
- * - fab: (bottom only) FAB anchored to the trailing edge
37
- * - default: any extra content (e.g. tabs)
59
+ * @csspart bar - The inner grid container.
60
+ * @csspart leading - The leading slot wrapper.
61
+ * @csspart trailing - The trailing slot wrapper.
62
+ * @csspart title - The title text element.
63
+ * @csspart subtitle - The subtitle text element (prominent size only).
64
+ * @csspart actions - The actions slot wrapper (prominent size only).
38
65
  */
39
66
  @customElement('moni-app-bar')
40
67
  export class MoniAppBar extends MoniElement {
68
+ /**
69
+ * Determines whether the bar is placed at the top or bottom of the viewport.
70
+ *
71
+ * - `'top'` (default) — Sticky header at the top of the scroll container.
72
+ * - `'bottom'` — Fixed footer; primarily used for mobile bottom navigation patterns.
73
+ *
74
+ * @default 'top'
75
+ */
41
76
  @property({ reflect: true })
42
77
  placement: 'top' | 'bottom' = 'top';
78
+
79
+ /**
80
+ * Visual variant of the app bar.
81
+ *
82
+ * - `'standard'` (default) — Flat surface. No shadow at rest; gains shadow
83
+ * programmatically via the `elevated` attribute when content scrolls beneath it.
84
+ * - `'floating'` — Permanently elevated with `--elevate2` box-shadow.
85
+ *
86
+ * @default 'standard'
87
+ */
43
88
  @property({ reflect: true })
44
89
  variant: 'standard' | 'floating' = 'standard';
90
+
91
+ /**
92
+ * Height variant of the app bar.
93
+ *
94
+ * - `'default'` — 64dp (4rem). Standard M3 top app bar height.
95
+ * - `'prominent'` — 152dp (9.5rem). Use when showing a subtitle or when
96
+ * extra vertical space is needed for a contextual action row.
97
+ *
98
+ * @default 'default'
99
+ */
45
100
  @property({ reflect: true })
46
101
  size: 'default' | 'prominent' = 'default';
102
+
103
+ /**
104
+ * Title text displayed in the center of the app bar.
105
+ *
106
+ * The title is center-aligned per M3 spec. Long titles are truncated with
107
+ * an ellipsis. For semantic HTML, the consumer should also provide an `<h1>`
108
+ * in the page content that matches this title.
109
+ *
110
+ * @default ''
111
+ */
47
112
  @property({ reflect: true }) title = '';
113
+
114
+ /**
115
+ * Optional subtitle displayed below the title.
116
+ *
117
+ * Only rendered when `size="prominent"`. Provides secondary context
118
+ * (e.g. folder name, item count, description).
119
+ *
120
+ * @default ''
121
+ */
48
122
  @property({ reflect: true }) subtitle = '';
123
+
124
+ /**
125
+ * When present, applies `--elevate2` box-shadow to signal that content has
126
+ * scrolled beneath the bar.
127
+ *
128
+ * Consumers are responsible for toggling this attribute reactively based on
129
+ * the scroll position of the main content area:
130
+ * ```ts
131
+ * container.addEventListener('scroll', () => {
132
+ * appBar.elevated = container.scrollTop > 0;
133
+ * });
134
+ * ```
135
+ *
136
+ * @default false
137
+ */
49
138
  @property({ type: Boolean, reflect: true }) elevated = false;
50
139
 
51
140
  static override styles = [
@@ -155,6 +244,18 @@ export class MoniAppBar extends MoniElement {
155
244
  `
156
245
  ];
157
246
 
247
+ /**
248
+ * Renders the app bar grid layout.
249
+ *
250
+ * The inner `.bar` element uses a 3-column CSS grid:
251
+ * - Column 1: leading slot (navigation icon).
252
+ * - Column 2: title (center-aligned, fills remaining space).
253
+ * - Column 3: trailing slot (action icons).
254
+ *
255
+ * In `prominent` size, a subtitle row and an actions row are appended
256
+ * conditionally. The subtitle only renders when the `subtitle` attribute
257
+ * is non-empty; the actions slot always renders for prominent bars.
258
+ */
158
259
  override render() {
159
260
  const hasSubtitle = this.size === 'prominent' && Boolean(this.subtitle);
160
261
  const hasActions = Boolean(this.size === 'prominent');
@@ -1,40 +1,142 @@
1
+ /**
2
+ * @file components/moni-badge.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
7
+
1
8
  import { html, css } from 'lit';
2
9
  import { customElement, property } from 'lit/decorators.js';
3
10
  import { MoniElement, sharedStyles } from './_base/index.js';
4
11
 
5
12
  /**
6
- * Badge that faithfully ports BeerCSS's `.badge` styles.
13
+ * Material Design 3 Badge component.
14
+ *
15
+ * Badges are small status descriptors anchored to a parent element, used to
16
+ * convey supplementary information such as a notification count, online
17
+ * status, or selection indicator.
18
+ *
19
+ * **Positioning contract:**
20
+ * The badge uses `position: absolute` and anchors to the parent element.
21
+ * On `connectedCallback`, if the parent's computed `position` is `'static'`,
22
+ * the badge automatically sets `parent.style.position = 'relative'`.
23
+ * Consumers do not need to manually add `position: relative` to the parent.
24
+ *
25
+ * **Rendering model:**
26
+ * The `:host` displays as `contents`, making it transparent to layout.
27
+ * Only the inner `.badge` span is visually rendered. This allows the badge
28
+ * to be dropped inside any element without affecting its layout flow.
7
29
  *
8
- * BeerCSS `.badge` uses:
9
- * - `position: absolute; inset: 50% auto auto 50%; transform: translate(var(--_x), var(--_y))`
10
- * - Default: --_x: 0, --_y: -100% top-right corner
30
+ * @example
31
+ * ```html
32
+ * <!-- Notification badge on a button -->
33
+ * <div style="position: relative; display: inline-flex;">
34
+ * <moni-button icon="notifications" variant="text"></moni-button>
35
+ * <moni-badge value="5"></moni-badge>
36
+ * </div>
37
+ * ```
11
38
  *
12
- * The parent element MUST have `position: relative` for the badge to anchor correctly.
13
- * We ensure this in connectedCallback.
39
+ * @example
40
+ * ```html
41
+ * <!-- Inline dot badge for status -->
42
+ * <moni-badge shape="min" color="primary" inline></moni-badge>
43
+ * Online
44
+ * ```
14
45
  *
15
- * Attributes:
16
- * - value: text content (also accepts slotted content)
17
- * - position: '' (top-right default) | top | bottom | left | right | none
18
- * - shape: '' (round) | circle | square | min
19
- * - color: error (default) | primary | secondary | tertiary
20
- * - border: present → outlined badge (BeerCSS .badge.border)
21
- * - inline: present → badge becomes inline (BeerCSS .badge.none)
46
+ * @csspart badge - The badge `<span>` element. Override `background-color`,
47
+ * `color`, or `border-radius` to customize appearance.
22
48
  */
23
49
  @customElement('moni-badge')
24
50
  export class MoniBadge extends MoniElement {
51
+ /**
52
+ * Text content of the badge label.
53
+ *
54
+ * Also accepts slotted content — the default slot inside the badge span
55
+ * falls back to this value when no children are slotted.
56
+ * Use an empty string with `shape="min"` to render a dot-only badge.
57
+ *
58
+ * @default ''
59
+ */
25
60
  @property({ reflect: true }) value = '';
61
+
62
+ /**
63
+ * Anchor position relative to the parent element's edges.
64
+ *
65
+ * Uses `inset: 50% auto auto 50%` as the base and adjusts translation:
66
+ * - `''` (default) — top-right corner (translate: 0, -100%).
67
+ * - `'top'` — same as default, explicit alias.
68
+ * - `'bottom'` — bottom-right corner (translate: 0, 0).
69
+ * - `'left'` — top-left corner (translate: -100%, -100%).
70
+ * - `'right'` — top-right corner (translate: 0, -100%).
71
+ * - `'none'` — disables absolute positioning; see also the `inline` attribute.
72
+ *
73
+ * @default ''
74
+ */
26
75
  @property({ reflect: true })
27
76
  position: 'top' | 'bottom' | 'left' | 'right' | 'none' | '' = '';
77
+
78
+ /**
79
+ * Shape of the badge container.
80
+ *
81
+ * - `''` (default) — Rounded pill shape (border-radius: 1rem).
82
+ * - `'circle'` — Alias for pill; the badge is always circular when the
83
+ * content is a single character or absent.
84
+ * - `'square'` — No border-radius (angular badge).
85
+ * - `'min'` — Dot only; content is hidden via `display: none` and the
86
+ * shape is clipped to a small circle via `clip-path`.
87
+ *
88
+ * @default ''
89
+ */
28
90
  @property({ reflect: true })
29
91
  shape: 'circle' | 'square' | 'min' | '' = '';
92
+
93
+ /**
94
+ * Semantic color role of the badge.
95
+ *
96
+ * Maps to the M3 color palette roles:
97
+ * - `'error'` (default) — Red; standard for notification counts and alerts.
98
+ * - `'primary'` — Brand primary color; for selection or active states.
99
+ * - `'secondary'` — Secondary accent; for supplementary indicators.
100
+ * - `'tertiary'` — Tertiary accent; for decorative or informational badges.
101
+ *
102
+ * @default 'error'
103
+ */
30
104
  @property({ reflect: true })
31
105
  color: 'primary' | 'secondary' | 'tertiary' | 'error' = 'error';
106
+
107
+ /**
108
+ * When `true`, the badge renders inline (resets `position: absolute` to
109
+ * `position: relative`) rather than anchoring to the parent.
110
+ *
111
+ * Equivalent to BeerCSS's `.badge.none` class. Use for inline status
112
+ * indicators that flow within text or flex containers.
113
+ *
114
+ * @default false
115
+ */
32
116
  @property({ type: Boolean, reflect: true }) inline = false;
117
+
118
+ /**
119
+ * When present, renders the badge with an outlined style:
120
+ * - Background becomes `--surface` (same as the page background).
121
+ * - Border and text color use the palette color token (e.g. `--error`).
122
+ *
123
+ * Equivalent to BeerCSS's `.badge.border` class.
124
+ *
125
+ * @default false
126
+ */
33
127
  @property({ type: Boolean, reflect: true }) border = false;
34
128
 
129
+ /**
130
+ * Ensures the parent element can contain the absolutely-positioned badge.
131
+ *
132
+ * Reads the parent's computed `position` via `getComputedStyle`. If it is
133
+ * `'static'` (the browser default), sets `parent.style.position = 'relative'`
134
+ * so the badge anchors correctly. This is a convenience that avoids requiring
135
+ * consumers to remember to add `position: relative` to the parent themselves.
136
+ */
35
137
  override connectedCallback() {
36
138
  super.connectedCallback();
37
- // BeerCSS requirement: parent must be position:relative for badge to anchor
139
+ // Ensure the badge's absolutely-positioned anchor point is correct.
38
140
  const parent = this.parentElement;
39
141
  if (parent) {
40
142
  const computed = getComputedStyle(parent);
@@ -115,6 +217,18 @@ export class MoniBadge extends MoniElement {
115
217
  `
116
218
  ];
117
219
 
220
+ /**
221
+ * Renders the badge span with the computed class list.
222
+ *
223
+ * Class composition:
224
+ * - `'badge'` — always present (base styles).
225
+ * - `this.position` — position variant class (e.g. `'bottom'`, `'left'`).
226
+ * - `this.shape` — shape variant class (e.g. `'min'`, `'square'`).
227
+ * - `'none'` — added when `inline=true` to reset absolute positioning.
228
+ *
229
+ * Falsy values are filtered out so no extra spaces appear in the class string.
230
+ * The default slot falls back to the `value` attribute text node.
231
+ */
118
232
  override render() {
119
233
  const classes = [
120
234
  'badge',
@@ -1,42 +1,154 @@
1
+ /**
2
+ * @file components/moni-bottom-sheet.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
7
+
1
8
  import { html, css } from 'lit';
2
9
  import { customElement, property, query } from 'lit/decorators.js';
3
10
  import { MoniElement, sharedStyles } from './_base/index.js';
4
11
 
5
12
  /**
6
- * Visual-only bottom sheet. Renders a `<dialog>` that the consumer opens
7
- * by calling `dialog.showModal()` from the light DOM. The `open` attribute
8
- * mirrors that state.
13
+ * Material Design 3 Bottom Sheet component.
14
+ *
15
+ * Bottom sheets are surfaces anchored to the bottom of the screen that
16
+ * supplement the main view. They display supplementary content, contextual
17
+ * actions, or task flows without fully obscuring the primary content.
18
+ *
19
+ * **M3 spec reference:** `m3-docs/components/sheets-bottom/specs.md`
20
+ *
21
+ * **Implementation note — native `<dialog>` element:**
22
+ * Like `<moni-dialog>`, this component wraps the native `<dialog>` element.
23
+ * The `open` property drives `dialog.showModal()` / `dialog.close()`. When
24
+ * `modal=true` (default), a `::backdrop` scrim is rendered automatically.
25
+ *
26
+ * **Teleportation (body-level mounting):**
27
+ * When `positioning="body"` (default), the component moves itself to
28
+ * `document.body` on `connectedCallback` so the fixed-bottom dialog renders
29
+ * above all stacking contexts. On `disconnectedCallback`, it is moved back
30
+ * to its original DOM position. This avoids clipping by `overflow: hidden`
31
+ * or `transform` ancestors.
32
+ *
33
+ * **Sizes:**
34
+ * - `small` — Compact sheet; suitable for simple action menus.
35
+ * - `medium` — Standard height (default).
36
+ * - `large` — Expanded height (`expandedHeight` controls the max block-size).
37
+ * - `auto` — Content-driven height.
38
+ *
39
+ * @example
40
+ * ```html
41
+ * <moni-bottom-sheet title="Share">
42
+ * <moni-list-item icon="share">Copy link</moni-list-item>
43
+ * <moni-list-item icon="mail">Send via email</moni-list-item>
44
+ * </moni-bottom-sheet>
9
45
  *
10
- * Attributes:
11
- * - open: present visibility on
12
- * - size: small | medium (default) | large | auto
13
- * - modal: present → backdrop rendered
14
- * - title: heading text
46
+ * <script>
47
+ * document.querySelector('moni-bottom-sheet').open = true;
48
+ * </script>
49
+ * ```
15
50
  *
16
- * Slots:
17
- * - handle: grab handle
18
- * - default: body
19
- * - footer: action buttons
51
+ * @slot default - The body content of the bottom sheet.
52
+ * @slot handle - The drag handle area at the top of the sheet.
53
+ * @slot footer - Action buttons at the bottom of the sheet.
54
+ *
55
+ * @csspart dialog - The native `<dialog>` element.
56
+ * @csspart header - The header container with title and close button.
57
+ * @csspart body - The scrollable body content area.
58
+ * @csspart footer - The footer action buttons area.
20
59
  */
21
60
  @customElement('moni-bottom-sheet')
22
61
  export class MoniBottomSheet extends MoniElement {
62
+ /**
63
+ * Controls the open/closed state of the bottom sheet.
64
+ *
65
+ * When set to `true`, calls `dialog.showModal()` or `dialog.show()`
66
+ * depending on the `modal` property. When set to `false`, calls `dialog.close()`.
67
+ *
68
+ * @default false
69
+ */
23
70
  @property({ type: Boolean, reflect: true }) open = false;
71
+
72
+ /**
73
+ * Height variant of the sheet container.
74
+ *
75
+ * - `'small'` — Compact; suitable for quick confirmations.
76
+ * - `'medium'` — Standard height (default).
77
+ * - `'large'` — Fills `expandedHeight` of the viewport.
78
+ * - `'auto'` — Content-driven; height adapts to the slotted content.
79
+ *
80
+ * @default 'medium'
81
+ */
24
82
  @property({ reflect: true })
25
83
  size: 'small' | 'medium' | 'large' | 'auto' = 'medium';
84
+
85
+ /**
86
+ * When `true` (default), the sheet opens as a modal dialog with a backdrop
87
+ * scrim. When `false`, it opens as a non-modal overlay with no scrim.
88
+ *
89
+ * @default true
90
+ */
26
91
  @property({ type: Boolean, reflect: true }) modal = true;
92
+
93
+ /**
94
+ * Heading text displayed in the sheet's header area.
95
+ *
96
+ * @default ''
97
+ */
27
98
  @property({ reflect: true }) title = '';
99
+
100
+ /**
101
+ * Controls how the sheet is positioned in the document.
102
+ *
103
+ * - `'body'` (default) — Teleports the element to `document.body` so
104
+ * the fixed overlay renders above all stacking contexts.
105
+ * - `'fixed'` — Fixed positioning within its current DOM subtree.
106
+ * - `'absolute'` — Absolute within the nearest positioned ancestor.
107
+ * - `'static'` — Static flow (rarely needed; for testing only).
108
+ *
109
+ * @default 'fixed'
110
+ */
28
111
  @property({ reflect: true })
29
112
  positioning: 'body' | 'fixed' | 'absolute' | 'static' = 'fixed';
113
+
114
+ /**
115
+ * Maximum block-size (height) of the sheet when `size="large"`.
116
+ *
117
+ * Accepts any valid CSS `max-block-size` value (e.g. `'85%'`, `'600px'`).
118
+ * Defaults to `'85%'` which is the M3-recommended maximum for bottom sheets
119
+ * on compact screens.
120
+ *
121
+ * @default '85%'
122
+ */
30
123
  @property({ reflect: true, attribute: 'expanded-height' })
31
124
  expandedHeight = '85%';
125
+
126
+ /**
127
+ * Optional maximum inline-size (width) constraint for the sheet.
128
+ *
129
+ * When set (e.g. `'640px'`), the sheet will not exceed this width even on
130
+ * wide displays. Useful for tablet/desktop breakpoints where a centered
131
+ * modal is preferred over a full-width sheet.
132
+ *
133
+ * @default '' (no constraint)
134
+ */
32
135
  @property({ reflect: true, attribute: 'max-width' })
33
136
  maxWidth = '';
34
137
 
138
+ /**
139
+ * Original parent node before teleportation to `document.body`.
140
+ * Used to restore the element's DOM position in `disconnectedCallback`.
141
+ */
35
142
  private _originalParent: Node | null = null;
143
+
144
+ /**
145
+ * Original next sibling before teleportation to `document.body`.
146
+ * Used alongside `_originalParent` to restore the exact DOM position.
147
+ */
36
148
  private _originalSibling: Node | null = null;
37
149
 
150
+ /** Direct reference to the native `<dialog>` element. */
38
151
  @query('dialog') private _dialog!: HTMLDialogElement;
39
-
40
152
  private _isDragging = false;
41
153
  private _startY = 0;
42
154
  private _currentTranslationY = 0;
@@ -1,34 +1,61 @@
1
+ /**
2
+ * @file components/moni-button-group.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
7
+
1
8
  import { html, css, nothing } from 'lit';
2
9
  import { customElement, property, queryAssignedElements } from 'lit/decorators.js';
3
10
  import { MoniElement, sharedStyles } from './_base/index.js';
4
11
 
5
12
  /**
6
- * Visual-only button group. Organizes `moni-button` or `moni-icon-button`
7
- * components in a row.
13
+ * Material Design 3 Button Group component.
14
+ *
15
+ * Organizes multiple `<moni-button>` or `<moni-icon-button>` components
16
+ * into a single row.
17
+ *
18
+ * **Variants:**
19
+ * - `standard` (default) — A simple flex row with a gap between buttons.
20
+ * - `connected` — The M3 Expressive replacement for segmented buttons. In this
21
+ * mode, buttons share borders and form a single continuous pill shape. The
22
+ * group manages the single/multi-select toggle state of its children.
23
+ *
24
+ * **`connected` variant details:**
25
+ * - **Shape propagation:** The group automatically propagates M3 shape classes
26
+ * (`left-round-flat`, `no-round`, `right-round-flat`) to its children so
27
+ * they interlock seamlessly.
28
+ * - **Toggle management:** The group listens to child clicks and toggles their
29
+ * `active` attributes. When `multi=false` (default), only one button can be
30
+ * active at a time (radio button behavior). When `multi=true`, multiple buttons
31
+ * can be active (checkbox behavior).
32
+ * - **Event propagation:** Fires a `'change'` event when the selection changes.
33
+ *
34
+ * **Accessibility:**
35
+ * - Renders with `role="group"` (can be overridden to `toolbar` or `radiogroup`).
36
+ * - Consumers should provide an `aria-label` or `aria-labelledby` attribute
37
+ * to identify the group's purpose to assistive technologies.
38
+ *
39
+ * @fires change - Fired when a button is clicked in `connected` mode and the
40
+ * selection state updates.
8
41
  *
9
- * **`variant="connected"`** is the Material Design 3 Expressive replacement
10
- * for the deprecated `moni-segmented-button` (see
11
- * `m3-docs/components/segmented-buttons/overview.md` § M3 Expressive update).
12
- * In connected mode, segments share borders via propagated `shape` values
13
- * (`left-round-flat`, `no-round`, `right-round-flat` for a gap-less row), and
14
- * the group manages single/multi-select toggle state. This is the
15
- * **only Moni component that intentionally uses `@click` listeners** —
16
- * toggle behavior is essential to the M3 connected button group semantics.
42
+ * @example
43
+ * ```html
44
+ * <!-- Connected single-select group -->
45
+ * <moni-button-group variant="connected" label="Alignment">
46
+ * <moni-button icon="format_align_left" active></moni-button>
47
+ * <moni-button icon="format_align_center"></moni-button>
48
+ * <moni-button icon="format_align_right"></moni-button>
49
+ * </moni-button-group>
17
50
  *
18
- * Accessibility:
19
- * - The host renders `role="group"` (configurable via `role` attribute).
20
- * - `aria-label` / `aria-labelledby` should be set by the consumer to
21
- * identify the group to assistive technology.
51
+ * <!-- Standard button row -->
52
+ * <moni-button-group gap="1rem">
53
+ * <moni-button variant="text">Cancel</moni-button>
54
+ * <moni-button>Save</moni-button>
55
+ * </moni-button-group>
56
+ * ```
22
57
  *
23
- * Attributes:
24
- * - variant: standard (default) | connected
25
- * - size: small | medium (default) | large | extra
26
- * - multi: boolean (default false) — multiple toggles allowed
27
- * - gap: custom gap space (e.g. "8px" or "1rem"); in `connected`
28
- * variant the default is 0.125rem (2dp) per M3 spec
29
- * - role: ARIA role override (default "group")
30
- * - label: aria-label for the group
31
- * - labelled-by: aria-labelledby reference
58
+ * @slot default - The `<moni-button>` elements that make up the group.
32
59
  */
33
60
  @customElement('moni-button-group')
34
61
  export class MoniButtonGroup extends MoniElement {
@@ -1,17 +1,38 @@
1
+ /**
2
+ * @file components/moni-button-segment.ts
3
+ * @package @moni-labs/moni-ui
4
+ * @license MIT
5
+ * @contributors Moni Labs & Contributors
6
+ */
7
+
1
8
  import { html, css } from 'lit';
2
9
  import { customElement, property } from 'lit/decorators.js';
3
10
  import { MoniElement, sharedStyles } from './_base/index.js';
4
11
  import './moni-icon.js';
5
12
 
6
13
  /**
7
- * A selectable segment button designed to be grouped inside a `moni-segmented-button`.
14
+ * Material Design 3 Segmented Button component (Legacy).
15
+ *
16
+ * **Deprecation Notice:** The M3 spec (`m3-docs/components/segmented-buttons/overview.md`)
17
+ * has replaced the bespoke segmented button component with standard buttons arranged
18
+ * in a "connected" group. Please use `<moni-button-group variant="connected">`
19
+ * containing standard `<moni-button>` elements instead of this component.
20
+ *
21
+ * This component remains for backwards compatibility but will be removed in a
22
+ * future major release. It renders a single segment within a `<moni-segmented-button>`.
23
+ *
24
+ * @deprecated Use `<moni-button-group variant="connected">` instead.
25
+ *
26
+ * @example
27
+ * ```html
28
+ * <!-- Legacy usage (not recommended) -->
29
+ * <moni-segmented-button>
30
+ * <moni-button-segment value="day" checked>Day</moni-button-segment>
31
+ * <moni-button-segment value="week">Week</moni-button-segment>
32
+ * </moni-segmented-button>
33
+ * ```
8
34
  *
9
- * Attributes:
10
- * - value: The value of the segment (default "on")
11
- * - checked: Whether the segment is checked/selected
12
- * - disabled: Whether the segment is disabled
13
- * - position: Automatically set by the parent (first | middle | last | solo)
14
- * - hide-check: Hides the checkmark when selected
35
+ * @slot default - The segment label text.
15
36
  */
16
37
  @customElement('moni-button-segment')
17
38
  export class MoniButtonSegment extends MoniElement {