microui-wc 0.1.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 (609) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +33 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  4. package/.github/workflows/ci.yml +42 -0
  5. package/.github/workflows/deploy-pages.yml +112 -0
  6. package/AGENTS.md +2366 -0
  7. package/CHANGELOG.md +47 -0
  8. package/CODE_OF_CONDUCT.md +59 -0
  9. package/CONTRIBUTING.md +156 -0
  10. package/LICENSE +190 -0
  11. package/README.md +254 -0
  12. package/SECURITY.md +58 -0
  13. package/app/.generated/routes/alerts.js +8 -0
  14. package/app/.generated/routes/avatars.js +8 -0
  15. package/app/.generated/routes/badges.js +8 -0
  16. package/app/.generated/routes/buttons.js +10 -0
  17. package/app/.generated/routes/cards.js +10 -0
  18. package/app/.generated/routes/checkboxes.js +9 -0
  19. package/app/.generated/routes/chips.js +8 -0
  20. package/app/.generated/routes/dropdowns.js +9 -0
  21. package/app/.generated/routes/home.js +7 -0
  22. package/app/.generated/routes/icons.js +9 -0
  23. package/app/.generated/routes/inputs.js +10 -0
  24. package/app/.generated/routes/installation.js +7 -0
  25. package/app/.generated/routes/layout.js +9 -0
  26. package/app/.generated/routes/modals.js +9 -0
  27. package/app/.generated/routes/navbar.js +7 -0
  28. package/app/.generated/routes/progress.js +9 -0
  29. package/app/.generated/routes/radios.js +9 -0
  30. package/app/.generated/routes/switches.js +9 -0
  31. package/app/.generated/routes/tabs.js +8 -0
  32. package/app/.generated/routes/toasts.js +9 -0
  33. package/app/index.html +67 -0
  34. package/app/pages/alerts.html +23 -0
  35. package/app/pages/avatars.html +22 -0
  36. package/app/pages/badges.html +22 -0
  37. package/app/pages/buttons.html +71 -0
  38. package/app/pages/cards.html +54 -0
  39. package/app/pages/checkboxes.html +39 -0
  40. package/app/pages/chips.html +23 -0
  41. package/app/pages/dropdowns.html +41 -0
  42. package/app/pages/home.html +59 -0
  43. package/app/pages/icons.html +29 -0
  44. package/app/pages/inputs.html +66 -0
  45. package/app/pages/installation.html +34 -0
  46. package/app/pages/layout.html +30 -0
  47. package/app/pages/modals.html +21 -0
  48. package/app/pages/navbar.html +22 -0
  49. package/app/pages/progress.html +35 -0
  50. package/app/pages/radios.html +40 -0
  51. package/app/pages/switches.html +39 -0
  52. package/app/pages/tabs.html +30 -0
  53. package/app/pages/toasts.html +22 -0
  54. package/app-dist/index.html +67 -0
  55. package/app-dist/pages/alerts.html +23 -0
  56. package/app-dist/pages/avatars.html +22 -0
  57. package/app-dist/pages/badges.html +22 -0
  58. package/app-dist/pages/buttons.html +71 -0
  59. package/app-dist/pages/cards.html +54 -0
  60. package/app-dist/pages/checkboxes.html +39 -0
  61. package/app-dist/pages/chips.html +23 -0
  62. package/app-dist/pages/dropdowns.html +41 -0
  63. package/app-dist/pages/home.html +59 -0
  64. package/app-dist/pages/icons.html +29 -0
  65. package/app-dist/pages/inputs.html +66 -0
  66. package/app-dist/pages/installation.html +34 -0
  67. package/app-dist/pages/layout.html +30 -0
  68. package/app-dist/pages/modals.html +21 -0
  69. package/app-dist/pages/navbar.html +22 -0
  70. package/app-dist/pages/progress.html +35 -0
  71. package/app-dist/pages/radios.html +40 -0
  72. package/app-dist/pages/switches.html +39 -0
  73. package/app-dist/pages/tabs.html +30 -0
  74. package/app-dist/pages/toasts.html +22 -0
  75. package/app-dist/pages.json +217 -0
  76. package/app-dist/routes/alerts.js +5 -0
  77. package/app-dist/routes/avatars.js +1 -0
  78. package/app-dist/routes/badges.js +1 -0
  79. package/app-dist/routes/buttons.js +1 -0
  80. package/app-dist/routes/cards.js +1 -0
  81. package/app-dist/routes/checkboxes.js +9 -0
  82. package/app-dist/routes/chips.js +4 -0
  83. package/app-dist/routes/chunk-019e5e2f.js +5 -0
  84. package/app-dist/routes/chunk-0m4j19yd.js +2 -0
  85. package/app-dist/routes/chunk-0tmmp5q0.js +1 -0
  86. package/app-dist/routes/chunk-10xn709r.js +1 -0
  87. package/app-dist/routes/chunk-15m2qcda.js +2 -0
  88. package/app-dist/routes/chunk-1bh8g23n.js +1 -0
  89. package/app-dist/routes/chunk-1vg0v937.js +1 -0
  90. package/app-dist/routes/chunk-1zvcgy3j.js +1 -0
  91. package/app-dist/routes/chunk-2afb0861.js +1 -0
  92. package/app-dist/routes/chunk-2c6ttpzt.js +5 -0
  93. package/app-dist/routes/chunk-3dy30fhs.js +1 -0
  94. package/app-dist/routes/chunk-426dnces.js +13 -0
  95. package/app-dist/routes/chunk-44kgxery.js +1 -0
  96. package/app-dist/routes/chunk-47fdnejd.js +33 -0
  97. package/app-dist/routes/chunk-49a6t2vq.js +1 -0
  98. package/app-dist/routes/chunk-4fe1rm5b.js +1 -0
  99. package/app-dist/routes/chunk-4ggmvkta.js +33 -0
  100. package/app-dist/routes/chunk-4vkz81q7.js +33 -0
  101. package/app-dist/routes/chunk-4w4tmj8f.js +31 -0
  102. package/app-dist/routes/chunk-532s62kr.js +31 -0
  103. package/app-dist/routes/chunk-5hm3bssy.js +33 -0
  104. package/app-dist/routes/chunk-5vrh24hc.js +1 -0
  105. package/app-dist/routes/chunk-61pcg25a.js +1 -0
  106. package/app-dist/routes/chunk-6nfhygvf.js +1 -0
  107. package/app-dist/routes/chunk-700e7je6.js +33 -0
  108. package/app-dist/routes/chunk-7fsn17kg.js +1 -0
  109. package/app-dist/routes/chunk-7k789b32.js +1 -0
  110. package/app-dist/routes/chunk-7r46q0ys.js +36 -0
  111. package/app-dist/routes/chunk-86fmc1fr.js +5 -0
  112. package/app-dist/routes/chunk-8qth37vw.js +1 -0
  113. package/app-dist/routes/chunk-924wv8n0.js +1 -0
  114. package/app-dist/routes/chunk-9mbhgxk9.js +1 -0
  115. package/app-dist/routes/chunk-a216hyd9.js +1 -0
  116. package/app-dist/routes/chunk-akzxykh9.js +33 -0
  117. package/app-dist/routes/chunk-b3dcvy8c.js +1 -0
  118. package/app-dist/routes/chunk-b74zahz5.js +31 -0
  119. package/app-dist/routes/chunk-bftj53p2.js +5 -0
  120. package/app-dist/routes/chunk-c01hnz3e.js +1 -0
  121. package/app-dist/routes/chunk-d8pvv5km.js +1 -0
  122. package/app-dist/routes/chunk-dev0aezr.js +2 -0
  123. package/app-dist/routes/chunk-dh6vnv0e.js +1 -0
  124. package/app-dist/routes/chunk-dn2cbpva.js +36 -0
  125. package/app-dist/routes/chunk-dvn0my90.js +1 -0
  126. package/app-dist/routes/chunk-dvq8mnve.js +36 -0
  127. package/app-dist/routes/chunk-e8c2gc4d.js +5 -0
  128. package/app-dist/routes/chunk-ejf9ak2x.js +1 -0
  129. package/app-dist/routes/chunk-f083m55s.js +1 -0
  130. package/app-dist/routes/chunk-fnrj28s1.js +31 -0
  131. package/app-dist/routes/chunk-fvg3yjdp.js +31 -0
  132. package/app-dist/routes/chunk-g7k381n1.js +1 -0
  133. package/app-dist/routes/chunk-h01kq2ae.js +13 -0
  134. package/app-dist/routes/chunk-h4dk761v.js +5 -0
  135. package/app-dist/routes/chunk-hmx91z2x.js +5 -0
  136. package/app-dist/routes/chunk-hxbg4m42.js +36 -0
  137. package/app-dist/routes/chunk-jbjnfp2b.js +2 -0
  138. package/app-dist/routes/chunk-jxtz5vv6.js +36 -0
  139. package/app-dist/routes/chunk-jxzcs0ey.js +36 -0
  140. package/app-dist/routes/chunk-kt7wwhcx.js +1 -0
  141. package/app-dist/routes/chunk-kzptszyc.js +33 -0
  142. package/app-dist/routes/chunk-mhgca4w4.js +2 -0
  143. package/app-dist/routes/chunk-mhswxa20.js +1 -0
  144. package/app-dist/routes/chunk-n8zfeex6.js +1 -0
  145. package/app-dist/routes/chunk-pee47b2r.js +1 -0
  146. package/app-dist/routes/chunk-pesmw829.js +1 -0
  147. package/app-dist/routes/chunk-pgc4c6f3.js +36 -0
  148. package/app-dist/routes/chunk-q8egegm1.js +1 -0
  149. package/app-dist/routes/chunk-q9mn2qyq.js +36 -0
  150. package/app-dist/routes/chunk-qh0rtaf3.js +5 -0
  151. package/app-dist/routes/chunk-qqhmk6ye.js +2 -0
  152. package/app-dist/routes/chunk-qrxygmf7.js +33 -0
  153. package/app-dist/routes/chunk-r46yzksx.js +36 -0
  154. package/app-dist/routes/chunk-rgpbw2w0.js +5 -0
  155. package/app-dist/routes/chunk-rnpzv3d8.js +2 -0
  156. package/app-dist/routes/chunk-s5v8cv05.js +2 -0
  157. package/app-dist/routes/chunk-sbwn5bpc.js +1 -0
  158. package/app-dist/routes/chunk-sqbg8jbt.js +33 -0
  159. package/app-dist/routes/chunk-sv8dqnf7.js +1 -0
  160. package/app-dist/routes/chunk-t67sw3za.js +1 -0
  161. package/app-dist/routes/chunk-tjdpqwdf.js +31 -0
  162. package/app-dist/routes/chunk-tq2mfghg.js +1 -0
  163. package/app-dist/routes/chunk-ttn10vt6.js +1 -0
  164. package/app-dist/routes/chunk-v2hzpjxr.js +1 -0
  165. package/app-dist/routes/chunk-wfjjkw9y.js +1 -0
  166. package/app-dist/routes/chunk-wt8cxzmf.js +31 -0
  167. package/app-dist/routes/chunk-x45d372k.js +5 -0
  168. package/app-dist/routes/chunk-y3wsazkt.js +1 -0
  169. package/app-dist/routes/chunk-y7pmgc7t.js +33 -0
  170. package/app-dist/routes/chunk-zefdt2q3.js +31 -0
  171. package/app-dist/routes/dropdowns.js +6 -0
  172. package/app-dist/routes/home.js +1 -0
  173. package/app-dist/routes/icons.js +1 -0
  174. package/app-dist/routes/inputs.js +12 -0
  175. package/app-dist/routes/installation.js +1 -0
  176. package/app-dist/routes/layout.js +1 -0
  177. package/app-dist/routes/modals.js +7 -0
  178. package/app-dist/routes/navbar.js +1 -0
  179. package/app-dist/routes/progress.js +1 -0
  180. package/app-dist/routes/radios.js +6 -0
  181. package/app-dist/routes/switches.js +6 -0
  182. package/app-dist/routes/tabs.js +1 -0
  183. package/app-dist/routes/toasts.js +16 -0
  184. package/assets/fonts/material-symbols-mini.woff2 +0 -0
  185. package/assets/fonts/material-symbols.woff2 +0 -0
  186. package/assets/fonts/roboto-400.woff2 +0 -0
  187. package/assets/fonts/roboto-500.woff2 +0 -0
  188. package/assets/fonts/roboto-700.woff2 +0 -0
  189. package/assets/logo-banner-400.jpg +0 -0
  190. package/assets/logo-banner-400.webp +0 -0
  191. package/assets/logo-banner-800.webp +0 -0
  192. package/assets/logo-banner.jpg +0 -0
  193. package/assets/logo-icon-64.jpg +0 -0
  194. package/assets/logo-icon-64.webp +0 -0
  195. package/assets/logo-icon.jpg +0 -0
  196. package/assets/logo-square.jpg +0 -0
  197. package/bun.lock +312 -0
  198. package/bunfig.toml +4 -0
  199. package/custom-elements.json +1916 -0
  200. package/demo/api/sample-data.json +38 -0
  201. package/demo/content/alerts.html +115 -0
  202. package/demo/content/avatars.html +70 -0
  203. package/demo/content/badges.html +65 -0
  204. package/demo/content/buttons.html +188 -0
  205. package/demo/content/callouts.html +91 -0
  206. package/demo/content/cards.html +121 -0
  207. package/demo/content/checkboxes.html +178 -0
  208. package/demo/content/chips.html +67 -0
  209. package/demo/content/codeblocks.html +101 -0
  210. package/demo/content/confirms.html +115 -0
  211. package/demo/content/datatables.html +149 -0
  212. package/demo/content/dividers.html +119 -0
  213. package/demo/content/dropdowns.html +89 -0
  214. package/demo/content/enterprise.html +252 -0
  215. package/demo/content/home.html +149 -0
  216. package/demo/content/icons.html +89 -0
  217. package/demo/content/inputs.html +135 -0
  218. package/demo/content/installation.html +16 -0
  219. package/demo/content/layout.html +136 -0
  220. package/demo/content/modals.html +141 -0
  221. package/demo/content/navbar.html +70 -0
  222. package/demo/content/progress.html +119 -0
  223. package/demo/content/radios.html +88 -0
  224. package/demo/content/skeletons.html +109 -0
  225. package/demo/content/spinners.html +96 -0
  226. package/demo/content/switches.html +84 -0
  227. package/demo/content/tables.html +124 -0
  228. package/demo/content/tabs.html +85 -0
  229. package/demo/content/toasts.html +116 -0
  230. package/demo/content/tooltips.html +107 -0
  231. package/demo/content/virtual-lists.html +233 -0
  232. package/demo/favicon.ico +0 -0
  233. package/demo/favicon.png +0 -0
  234. package/demo/full.html +52 -0
  235. package/demo/iife.html +46 -0
  236. package/demo/manifest.json +34 -0
  237. package/demo/pages/datatable-demo.html +237 -0
  238. package/demo/pages/prompt-ui-demo.html +218 -0
  239. package/demo/pages/responsive-demo.html +122 -0
  240. package/demo/pages/schema-form-demo.html +270 -0
  241. package/demo/robots.txt +6 -0
  242. package/demo/shell.html +712 -0
  243. package/demo/sw.js +387 -0
  244. package/dist/AGENTS.md +2366 -0
  245. package/dist/README.md +254 -0
  246. package/dist/chunks/advanced.js +174 -0
  247. package/dist/chunks/chunk-1nhr1wrq.js +14 -0
  248. package/dist/chunks/chunk-hssyjbr0.js +2 -0
  249. package/dist/chunks/chunk-k8etzx0z.js +2 -0
  250. package/dist/chunks/chunk-rr1et8fg.js +2 -0
  251. package/dist/chunks/chunk-sjcx4fd5.js +6 -0
  252. package/dist/chunks/chunk-v1c777xh.js +5 -0
  253. package/dist/chunks/chunk-w5k5vwjd.js +13 -0
  254. package/dist/chunks/core.js +10 -0
  255. package/dist/chunks/display.js +17 -0
  256. package/dist/chunks/feedback.js +15 -0
  257. package/dist/chunks/forms.js +48 -0
  258. package/dist/chunks/layout.js +9 -0
  259. package/dist/components/chunk-4tezav8r.js +2 -0
  260. package/dist/components/chunk-fqyb2pms.js +2 -0
  261. package/dist/components/chunk-h7cdbhxw.js +13 -0
  262. package/dist/components/chunk-mzd8jwrs.js +2 -0
  263. package/dist/components/chunk-qwmxyn8e.js +2 -0
  264. package/dist/components/chunk-redtk47a.js +14 -0
  265. package/dist/components/mu-alert.js +5 -0
  266. package/dist/components/mu-api-table.js +33 -0
  267. package/dist/components/mu-avatar.js +1 -0
  268. package/dist/components/mu-badge.js +1 -0
  269. package/dist/components/mu-bottom-nav.js +1 -0
  270. package/dist/components/mu-button.js +1 -0
  271. package/dist/components/mu-callout.js +1 -0
  272. package/dist/components/mu-card.js +1 -0
  273. package/dist/components/mu-checkbox.js +9 -0
  274. package/dist/components/mu-chip.js +4 -0
  275. package/dist/components/mu-code.js +48 -0
  276. package/dist/components/mu-confirm.js +10 -0
  277. package/dist/components/mu-container.js +1 -0
  278. package/dist/components/mu-datatable.js +96 -0
  279. package/dist/components/mu-divider.js +1 -0
  280. package/dist/components/mu-doc-page.js +26 -0
  281. package/dist/components/mu-drawer-item.js +9 -0
  282. package/dist/components/mu-drawer.js +1 -0
  283. package/dist/components/mu-dropdown.js +6 -0
  284. package/dist/components/mu-error-boundary.js +10 -0
  285. package/dist/components/mu-example.js +38 -0
  286. package/dist/components/mu-fetch.js +1 -0
  287. package/dist/components/mu-form.js +1 -0
  288. package/dist/components/mu-grid.js +1 -0
  289. package/dist/components/mu-icon.js +5 -0
  290. package/dist/components/mu-input.js +12 -0
  291. package/dist/components/mu-layout.js +1 -0
  292. package/dist/components/mu-lazy.js +1 -0
  293. package/dist/components/mu-modal.js +7 -0
  294. package/dist/components/mu-navbar.js +1 -0
  295. package/dist/components/mu-page.js +1 -0
  296. package/dist/components/mu-progress.js +1 -0
  297. package/dist/components/mu-prompt-ui.js +20 -0
  298. package/dist/components/mu-radio.js +6 -0
  299. package/dist/components/mu-repeat.js +1 -0
  300. package/dist/components/mu-router.js +6 -0
  301. package/dist/components/mu-schema-form.js +76 -0
  302. package/dist/components/mu-sidebar.js +1 -0
  303. package/dist/components/mu-skeleton.js +13 -0
  304. package/dist/components/mu-spinner.js +1 -0
  305. package/dist/components/mu-stack.js +1 -0
  306. package/dist/components/mu-switch.js +6 -0
  307. package/dist/components/mu-table.js +1 -0
  308. package/dist/components/mu-tabs.js +1 -0
  309. package/dist/components/mu-textarea.js +11 -0
  310. package/dist/components/mu-theme-toggle.js +5 -0
  311. package/dist/components/mu-toast.js +4 -0
  312. package/dist/components/mu-tooltip.js +10 -0
  313. package/dist/components/mu-virtual-list.js +33 -0
  314. package/dist/components.css +1 -0
  315. package/dist/microui.css +1 -0
  316. package/dist/microui.d.ts +234 -0
  317. package/dist/microui.esm.js +549 -0
  318. package/dist/microui.esm.js.map +79 -0
  319. package/dist/microui.min.js +549 -0
  320. package/dist/microui.min.js.map +79 -0
  321. package/dist/routes/alerts.js +1 -0
  322. package/dist/routes/avatars.js +1 -0
  323. package/dist/routes/badges.js +1 -0
  324. package/dist/routes/buttons.js +1 -0
  325. package/dist/routes/callouts.js +1 -0
  326. package/dist/routes/cards.js +1 -0
  327. package/dist/routes/checkboxes.js +9 -0
  328. package/dist/routes/chips.js +4 -0
  329. package/dist/routes/chunk-19wgcncm.js +2 -0
  330. package/dist/routes/chunk-1khyr3v1.js +33 -0
  331. package/dist/routes/chunk-4rhxe97g.js +1 -0
  332. package/dist/routes/chunk-5qah04bh.js +2 -0
  333. package/dist/routes/chunk-7gfxy70n.js +5 -0
  334. package/dist/routes/chunk-e86zbeta.js +1 -0
  335. package/dist/routes/chunk-fagt36h6.js +2 -0
  336. package/dist/routes/chunk-fed7zr7m.js +1 -0
  337. package/dist/routes/chunk-hwj7pfwp.js +1 -0
  338. package/dist/routes/chunk-mhvcs2f8.js +5 -0
  339. package/dist/routes/chunk-nv3bddmj.js +13 -0
  340. package/dist/routes/chunk-q3f2aeqe.js +7 -0
  341. package/dist/routes/chunk-qxxa8trk.js +1 -0
  342. package/dist/routes/chunk-rw15y9zh.js +1 -0
  343. package/dist/routes/chunk-sfb7x11v.js +5 -0
  344. package/dist/routes/chunk-swyhghrm.js +48 -0
  345. package/dist/routes/chunk-sxddjs2d.js +2 -0
  346. package/dist/routes/chunk-vby0zg5w.js +17 -0
  347. package/dist/routes/chunk-w6zqjqqs.js +9 -0
  348. package/dist/routes/chunk-z960rexd.js +38 -0
  349. package/dist/routes/codeblocks.js +1 -0
  350. package/dist/routes/confirms.js +10 -0
  351. package/dist/routes/datatables.js +96 -0
  352. package/dist/routes/dividers.js +1 -0
  353. package/dist/routes/dropdowns.js +6 -0
  354. package/dist/routes/enterprise.js +15 -0
  355. package/dist/routes/home.js +1 -0
  356. package/dist/routes/icons.js +1 -0
  357. package/dist/routes/inputs.js +22 -0
  358. package/dist/routes/installation.js +1 -0
  359. package/dist/routes/layout.js +1 -0
  360. package/dist/routes/modals.js +1 -0
  361. package/dist/routes/navbar.js +1 -0
  362. package/dist/routes/page-components.json +316 -0
  363. package/dist/routes/progress.js +1 -0
  364. package/dist/routes/radios.js +6 -0
  365. package/dist/routes/route-deps.json +156 -0
  366. package/dist/routes/shell-critical.js +1 -0
  367. package/dist/routes/shell-deferred.js +1 -0
  368. package/dist/routes/shell.js +20 -0
  369. package/dist/routes/skeletons.js +13 -0
  370. package/dist/routes/spinners.js +1 -0
  371. package/dist/routes/src/chunks/core.js +36 -0
  372. package/dist/routes/switches.js +6 -0
  373. package/dist/routes/tables.js +1 -0
  374. package/dist/routes/tabs.js +1 -0
  375. package/dist/routes/toasts.js +1 -0
  376. package/dist/routes/tooltips.js +10 -0
  377. package/dist/routes/virtual-lists.js +33 -0
  378. package/dist/styles/common.css +1 -0
  379. package/dist/styles/components/animations.css +1 -0
  380. package/dist/styles/components/avatar.css +1 -0
  381. package/dist/styles/components/badge.css +1 -0
  382. package/dist/styles/components/bottom-nav.css +1 -0
  383. package/dist/styles/components/button.css +1 -0
  384. package/dist/styles/components/card.css +1 -0
  385. package/dist/styles/components/checkbox.css +1 -0
  386. package/dist/styles/components/chip.css +1 -0
  387. package/dist/styles/components/datatable.css +1 -0
  388. package/dist/styles/components/divider.css +1 -0
  389. package/dist/styles/components/drawer-item.css +1 -0
  390. package/dist/styles/components/drawer.css +1 -0
  391. package/dist/styles/components/grid.css +1 -0
  392. package/dist/styles/components/icon.css +1 -0
  393. package/dist/styles/components/input.css +1 -0
  394. package/dist/styles/components/layout.css +1 -0
  395. package/dist/styles/components/navbar.css +1 -0
  396. package/dist/styles/components/overlays.css +1 -0
  397. package/dist/styles/components/progress.css +1 -0
  398. package/dist/styles/components/prompt-ui.css +1 -0
  399. package/dist/styles/components/radio.css +1 -0
  400. package/dist/styles/components/schema-form.css +1 -0
  401. package/dist/styles/components/switch.css +1 -0
  402. package/dist/styles/components/tabs.css +1 -0
  403. package/dist/styles/components/tooltip.css +1 -0
  404. package/dist/styles/components/virtual-list.css +1 -0
  405. package/dist/tokens.css +1 -0
  406. package/docs/api-reference.md +175 -0
  407. package/docs/component-schema.md +231 -0
  408. package/docs/components.md +269 -0
  409. package/docs/design-system.md +183 -0
  410. package/docs/getting-started.md +198 -0
  411. package/docs/message-protocol.md +262 -0
  412. package/docs/utility-classes.md +205 -0
  413. package/lighthouse-audit.mjs +113 -0
  414. package/package.json +45 -0
  415. package/scripts/analyze-components.js +105 -0
  416. package/scripts/build-app.js +193 -0
  417. package/scripts/build-framework.js +444 -0
  418. package/scripts/build-utils.js +101 -0
  419. package/scripts/test-isolated.js +151 -0
  420. package/server.js +256 -0
  421. package/src/chunks/advanced.js +27 -0
  422. package/src/chunks/core.js +61 -0
  423. package/src/chunks/display.js +25 -0
  424. package/src/chunks/feedback.js +15 -0
  425. package/src/chunks/forms.js +25 -0
  426. package/src/chunks/layout.js +27 -0
  427. package/src/components/mu-alert.js +96 -0
  428. package/src/components/mu-api-table.js +167 -0
  429. package/src/components/mu-avatar.js +94 -0
  430. package/src/components/mu-badge.js +32 -0
  431. package/src/components/mu-bottom-nav.js +115 -0
  432. package/src/components/mu-button.js +61 -0
  433. package/src/components/mu-callout.js +71 -0
  434. package/src/components/mu-card.js +36 -0
  435. package/src/components/mu-checkbox.js +186 -0
  436. package/src/components/mu-chip.js +125 -0
  437. package/src/components/mu-code.js +534 -0
  438. package/src/components/mu-confirm.js +268 -0
  439. package/src/components/mu-container.js +53 -0
  440. package/src/components/mu-datatable.js +517 -0
  441. package/src/components/mu-divider.js +40 -0
  442. package/src/components/mu-doc-page.js +100 -0
  443. package/src/components/mu-drawer-item.js +158 -0
  444. package/src/components/mu-drawer.js +305 -0
  445. package/src/components/mu-dropdown.js +239 -0
  446. package/src/components/mu-error-boundary.js +191 -0
  447. package/src/components/mu-example.js +335 -0
  448. package/src/components/mu-fetch.js +256 -0
  449. package/src/components/mu-form.js +133 -0
  450. package/src/components/mu-grid.js +63 -0
  451. package/src/components/mu-icon.js +211 -0
  452. package/src/components/mu-input.js +142 -0
  453. package/src/components/mu-layout.js +129 -0
  454. package/src/components/mu-lazy.js +94 -0
  455. package/src/components/mu-modal.js +160 -0
  456. package/src/components/mu-navbar.js +71 -0
  457. package/src/components/mu-page.js +77 -0
  458. package/src/components/mu-progress.js +54 -0
  459. package/src/components/mu-prompt-ui.js +382 -0
  460. package/src/components/mu-radio.js +200 -0
  461. package/src/components/mu-repeat.js +135 -0
  462. package/src/components/mu-router.js +169 -0
  463. package/src/components/mu-schema-form.js +441 -0
  464. package/src/components/mu-sidebar.js +81 -0
  465. package/src/components/mu-skeleton.js +69 -0
  466. package/src/components/mu-spinner.js +30 -0
  467. package/src/components/mu-stack.js +59 -0
  468. package/src/components/mu-switch.js +150 -0
  469. package/src/components/mu-table.js +80 -0
  470. package/src/components/mu-tabs.js +112 -0
  471. package/src/components/mu-textarea.js +96 -0
  472. package/src/components/mu-theme-toggle.js +52 -0
  473. package/src/components/mu-toast.js +151 -0
  474. package/src/components/mu-tooltip.js +182 -0
  475. package/src/components/mu-virtual-list.js +184 -0
  476. package/src/core/MuElement.js +562 -0
  477. package/src/core/agent-api.js +771 -0
  478. package/src/core/breakpoints.js +195 -0
  479. package/src/core/bus.js +378 -0
  480. package/src/core/component-schema.js +287 -0
  481. package/src/core/feature-registry.js +241 -0
  482. package/src/core/form-state.js +252 -0
  483. package/src/core/http.js +104 -0
  484. package/src/core/keyboard.js +105 -0
  485. package/src/core/layers.js +71 -0
  486. package/src/core/render.js +201 -0
  487. package/src/core/ripple.js +158 -0
  488. package/src/core/router.js +100 -0
  489. package/src/core/scheduler.js +109 -0
  490. package/src/core/signals.js +164 -0
  491. package/src/core/store.js +268 -0
  492. package/src/core/theme.js +68 -0
  493. package/src/core/transitions.js +72 -0
  494. package/src/core/utils.js +30 -0
  495. package/src/index.d.ts +234 -0
  496. package/src/index.js +308 -0
  497. package/src/styles/animations.css +252 -0
  498. package/src/styles/common.css +82 -0
  499. package/src/styles/components/animations.css +129 -0
  500. package/src/styles/components/avatar.css +83 -0
  501. package/src/styles/components/badge.css +80 -0
  502. package/src/styles/components/bottom-nav.css +37 -0
  503. package/src/styles/components/button.css +348 -0
  504. package/src/styles/components/card.css +138 -0
  505. package/src/styles/components/checkbox.css +201 -0
  506. package/src/styles/components/chip.css +93 -0
  507. package/src/styles/components/datatable.css +180 -0
  508. package/src/styles/components/divider.css +49 -0
  509. package/src/styles/components/drawer-item.css +123 -0
  510. package/src/styles/components/drawer.css +273 -0
  511. package/src/styles/components/grid.css +189 -0
  512. package/src/styles/components/icon.css +40 -0
  513. package/src/styles/components/input.css +203 -0
  514. package/src/styles/components/layout.css +121 -0
  515. package/src/styles/components/navbar.css +91 -0
  516. package/src/styles/components/overlays.css +329 -0
  517. package/src/styles/components/progress.css +79 -0
  518. package/src/styles/components/prompt-ui.css +286 -0
  519. package/src/styles/components/radio.css +17 -0
  520. package/src/styles/components/schema-form.css +85 -0
  521. package/src/styles/components/switch.css +69 -0
  522. package/src/styles/components/tabs.css +145 -0
  523. package/src/styles/components/tooltip.css +93 -0
  524. package/src/styles/components/virtual-list.css +36 -0
  525. package/src/styles/components.css +3677 -0
  526. package/src/styles/routes/home.css +97 -0
  527. package/src/styles/tokens.css +675 -0
  528. package/tests/agents/agent-integration.test.js +76 -0
  529. package/tests/benchmark.html +296 -0
  530. package/tests/build/scan-components.test.js +173 -0
  531. package/tests/components/all-components.test.js +245 -0
  532. package/tests/components/all-missing-components.test.js +574 -0
  533. package/tests/components/mu-alert.test.js +113 -0
  534. package/tests/components/mu-avatar.test.js +148 -0
  535. package/tests/components/mu-badge.test.js +92 -0
  536. package/tests/components/mu-button.test.js +112 -0
  537. package/tests/components/mu-card.test.js +89 -0
  538. package/tests/components/mu-checkbox.test.js +158 -0
  539. package/tests/components/mu-chip.test.js +118 -0
  540. package/tests/components/mu-container.test.js +120 -0
  541. package/tests/components/mu-divider.test.js +98 -0
  542. package/tests/components/mu-drawer-item.test.js +199 -0
  543. package/tests/components/mu-drawer.test.js +96 -0
  544. package/tests/components/mu-dropdown.test.js +125 -0
  545. package/tests/components/mu-form.test.js +138 -0
  546. package/tests/components/mu-grid.test.js +135 -0
  547. package/tests/components/mu-icon.test.js +110 -0
  548. package/tests/components/mu-input.test.js +131 -0
  549. package/tests/components/mu-lazy.test.js +103 -0
  550. package/tests/components/mu-modal.test.js +275 -0
  551. package/tests/components/mu-navbar.test.js +101 -0
  552. package/tests/components/mu-progress.test.js +115 -0
  553. package/tests/components/mu-radio.test.js +114 -0
  554. package/tests/components/mu-repeat.test.js +106 -0
  555. package/tests/components/mu-sidebar.test.js +126 -0
  556. package/tests/components/mu-skeleton.test.js +162 -0
  557. package/tests/components/mu-stack.test.js +143 -0
  558. package/tests/components/mu-switch.test.js +292 -0
  559. package/tests/components/mu-table.test.js +124 -0
  560. package/tests/components/mu-tabs.test.js +104 -0
  561. package/tests/components/mu-textarea.test.js +115 -0
  562. package/tests/components/mu-toast.test.js +321 -0
  563. package/tests/components/mu-tooltip.test.js +133 -0
  564. package/tests/components/mu-virtual-list.test.js +109 -0
  565. package/tests/core/MuElement.test.js +120 -0
  566. package/tests/core/agent-api.test.js +125 -0
  567. package/tests/core/all-core-modules.test.js +442 -0
  568. package/tests/core/bus.test.js +364 -0
  569. package/tests/core/component-schema.test.js +160 -0
  570. package/tests/core/feature-registry.test.js +198 -0
  571. package/tests/core/form-state.test.js +167 -0
  572. package/tests/core/http.test.js +119 -0
  573. package/tests/core/keyboard.test.js +319 -0
  574. package/tests/core/layers.test.js +129 -0
  575. package/tests/core/namespaced-stores.test.js +114 -0
  576. package/tests/core/render.test.js +121 -0
  577. package/tests/core/ripple.test.js +131 -0
  578. package/tests/core/router.test.js +89 -0
  579. package/tests/core/scheduler.test.js +121 -0
  580. package/tests/core/signals.test.js +128 -0
  581. package/tests/core/store.test.js +171 -0
  582. package/tests/core/transitions.test.js +82 -0
  583. package/tests/e2e/accessibility-harness.html +58 -0
  584. package/tests/e2e/accessibility.test.js +401 -0
  585. package/tests/e2e/agent-features.test.js +372 -0
  586. package/tests/e2e/card-spacing.test.js +287 -0
  587. package/tests/e2e/components.test.js +439 -0
  588. package/tests/e2e/demo-routes.test.js +478 -0
  589. package/tests/e2e/layout-css-fallback.test.js +334 -0
  590. package/tests/e2e/mu-alert.e2e.test.js +111 -0
  591. package/tests/e2e/mu-checkbox.test.js +489 -0
  592. package/tests/e2e/mu-chip.test.js +347 -0
  593. package/tests/e2e/mu-form.test.js +499 -0
  594. package/tests/e2e/mu-icon.test.js +114 -0
  595. package/tests/e2e/mu-radio.test.js +113 -0
  596. package/tests/e2e/mu-skeleton.test.js +140 -0
  597. package/tests/e2e/mu-switch.test.js +415 -0
  598. package/tests/e2e/mu-tabs.test.js +494 -0
  599. package/tests/e2e/mu-textarea.test.js +242 -0
  600. package/tests/e2e/mu-virtual-list.test.js +427 -0
  601. package/tests/e2e/perf-memory.test.js +161 -0
  602. package/tests/e2e/puppeteer-helper.js +137 -0
  603. package/tests/e2e/puppeteer.test.js +226 -0
  604. package/tests/e2e/pwa.test.js +261 -0
  605. package/tests/e2e/test-harness.html +319 -0
  606. package/tests/manual/test-components.html +120 -0
  607. package/tests/memory-test.html +309 -0
  608. package/tests/setup-dom.js +93 -0
  609. package/tests/visual-test.html +301 -0
@@ -0,0 +1,141 @@
1
+ <!-- Modals Content Fragment -->
2
+ <div id="page-modals" class="page active">
3
+ <h1 class="page-title">Dialog / Modal</h1>
4
+ <p class="page-subtitle">
5
+ <code>&lt;mu-modal&gt;</code> displays content in an overlay layer
6
+ that blocks interaction with the page below.
7
+ </p>
8
+
9
+ <mu-tabs active="0" id="modal-doc-tabs" style="margin-bottom: 24px;">
10
+ <mu-tab>OVERVIEW</mu-tab>
11
+ <mu-tab>API</mu-tab>
12
+ <mu-tab>STYLING</mu-tab>
13
+ <mu-tab>EXAMPLES</mu-tab>
14
+ </mu-tabs>
15
+
16
+ <div id="modal-overview" class="doc-tab-content">
17
+ <mu-example title="Basic dialog">
18
+ <div slot="demo">
19
+ <mu-button variant="filled" onclick="document.getElementById('demo-modal').open()">Open
20
+ Modal</mu-button>
21
+ <mu-modal id="demo-modal">
22
+ <h2>Modal Title</h2>
23
+ <p>This is the modal content. You can put any content here.</p>
24
+ <mu-stack direction="row" gap="sm" justify="flex-end" style="margin-top: 16px;">
25
+ <mu-button variant="text"
26
+ onclick="document.getElementById('demo-modal').close()">Cancel</mu-button>
27
+ <mu-button variant="filled"
28
+ onclick="document.getElementById('demo-modal').close()">Confirm</mu-button>
29
+ </mu-stack>
30
+ </mu-modal>
31
+ </div>
32
+
33
+ </mu-example>
34
+
35
+ <div class="component-section">
36
+ <h2 class="section-title">When to use</h2>
37
+ <mu-card variant="outlined">
38
+ <mu-stack gap="md">
39
+ <mu-stack direction="row" gap="sm" align="start">
40
+ <mu-icon name="check_circle" size="20"
41
+ style="color: var(--md-sys-color-primary); margin-top: 2px;"></mu-icon>
42
+ <div>
43
+ <strong>Custom content dialogs</strong>
44
+ <div style="font-size: 13px; color: var(--md-sys-color-on-surface-variant);">Forms, complex
45
+ layouts, multi-step wizards, or any non-standard content</div>
46
+ </div>
47
+ </mu-stack>
48
+ <mu-stack direction="row" gap="sm" align="start">
49
+ <mu-icon name="check_circle" size="20"
50
+ style="color: var(--md-sys-color-primary); margin-top: 2px;"></mu-icon>
51
+ <div>
52
+ <strong>Details or previews</strong>
53
+ <div style="font-size: 13px; color: var(--md-sys-color-on-surface-variant);">Image
54
+ galleries, product details, user profiles, expanded views</div>
55
+ </div>
56
+ </mu-stack>
57
+ <mu-stack direction="row" gap="sm" align="start">
58
+ <mu-icon name="check_circle" size="20"
59
+ style="color: var(--md-sys-color-primary); margin-top: 2px;"></mu-icon>
60
+ <div>
61
+ <strong>Modal forms with validation</strong>
62
+ <div style="font-size: 13px; color: var(--md-sys-color-on-surface-variant);">Login,
63
+ settings, feedback, where you need full control over layout</div>
64
+ </div>
65
+ </mu-stack>
66
+ </mu-stack>
67
+ </mu-card>
68
+ </div>
69
+
70
+ <div class="component-section">
71
+ <h2 class="section-title">When NOT to use</h2>
72
+ <mu-stack gap="md">
73
+ <mu-alert severity="warning">Don't use for <strong>simple yes/no confirmations</strong> — use
74
+ <code>&lt;mu-confirm&gt;</code> instead (less code, built-in patterns)</mu-alert>
75
+ <mu-alert severity="warning">Don't use for <strong>temporary notifications</strong> — use
76
+ <code>showToast()</code> instead (auto-dismisses, non-blocking)</mu-alert>
77
+ <mu-alert severity="warning">Don't use for <strong>persistent status messages</strong> — use
78
+ <code>&lt;mu-alert&gt;</code> inline instead (always visible)</mu-alert>
79
+ </mu-stack>
80
+ </div>
81
+
82
+ <div class="component-section"
83
+ style="background: var(--md-sys-color-primary-container); border-left: 4px solid var(--md-sys-color-primary);">
84
+ <h2 class="section-title" style="color: var(--md-sys-color-on-primary-container);">Accessibility
85
+ </h2>
86
+ <p style="color: var(--md-sys-color-on-primary-container); line-height: 1.6;">
87
+ Modal uses <code>role="dialog"</code> and traps focus inside.
88
+ Press Escape or click backdrop to close. Focus returns to trigger on close.
89
+ </p>
90
+ </div>
91
+ </div>
92
+
93
+ <div id="modal-api" class="doc-tab-content" style="display: none;">
94
+ <div class="component-section">
95
+ <h2 class="section-title">Methods</h2>
96
+ <mu-api-table type="methods">
97
+ <mu-api-row name="open" signature="open(): void">Opens the modal</mu-api-row>
98
+ <mu-api-row name="close" signature="close(): void">Closes the modal</mu-api-row>
99
+ </mu-api-table>
100
+ </div>
101
+ <div class="component-section">
102
+ <h2 class="section-title">Events</h2>
103
+ <mu-api-table type="events">
104
+ <mu-api-row name="mu-open" detail="{}">Emitted when modal opens</mu-api-row>
105
+ <mu-api-row name="mu-close" detail="{}">Emitted when modal closes</mu-api-row>
106
+ </mu-api-table>
107
+ </div>
108
+ </div>
109
+
110
+ <div id="modal-styling" class="doc-tab-content" style="display: none;">
111
+ <div class="component-section">
112
+ <h2 class="section-title">CSS Custom Properties</h2>
113
+ <mu-api-table type="tokens">
114
+ <mu-api-row name="--md-sys-color-scrim" default="rgba(0,0,0,0.32)">Backdrop overlay
115
+ color</mu-api-row>
116
+ <mu-api-row name="--md-sys-color-surface" default="#fef7ff">Modal background</mu-api-row>
117
+ <mu-api-row name="--md-sys-shape-corner-extra-large" default="28px">Border
118
+ radius</mu-api-row>
119
+ </mu-api-table>
120
+ </div>
121
+ </div>
122
+
123
+ <div id="modal-examples" class="doc-tab-content" style="display: none;">
124
+ <mu-example title="Confirm dialog">
125
+ <div slot="demo">
126
+ <mu-button variant="danger" onclick="document.getElementById('confirm-modal').open()">Delete
127
+ Item</mu-button>
128
+ <mu-modal id="confirm-modal">
129
+ <h2>Are you sure?</h2>
130
+ <p>This action cannot be undone.</p>
131
+ <mu-stack direction="row" gap="sm" justify="flex-end" style="margin-top: 16px;">
132
+ <mu-button variant="text"
133
+ onclick="document.getElementById('confirm-modal').close()">Cancel</mu-button>
134
+ <mu-button variant="danger"
135
+ onclick="document.getElementById('confirm-modal').close()">Delete</mu-button>
136
+ </mu-stack>
137
+ </mu-modal>
138
+ </div>
139
+ </mu-example>
140
+ </div>
141
+ </div>
@@ -0,0 +1,70 @@
1
+ <!-- Navbar Content Fragment -->
2
+ <div id="page-navbar" class="page active">
3
+ <h1 class="page-title">Navbar</h1>
4
+ <p class="page-subtitle">
5
+ <code>&lt;mu-navbar&gt;</code> provides a responsive navigation bar
6
+ with brand, links, and actions. Supports mobile hamburger menu.
7
+ </p>
8
+
9
+ <mu-tabs active="0" id="navbar-doc-tabs" style="margin-bottom: 24px;">
10
+ <mu-tab>OVERVIEW</mu-tab>
11
+ <mu-tab>API</mu-tab>
12
+ <mu-tab>STYLING</mu-tab>
13
+ <mu-tab>EXAMPLES</mu-tab>
14
+ </mu-tabs>
15
+
16
+ <div id="navbar-overview" class="doc-tab-content">
17
+ <mu-example title="Basic navbar">
18
+ <div slot="demo">
19
+ <mu-navbar>
20
+ <mu-navbar-brand>Brand</mu-navbar-brand>
21
+ <mu-navbar-links>
22
+ <a href="#">Home</a>
23
+ <a href="#">About</a>
24
+ <a href="#">Contact</a>
25
+ </mu-navbar-links>
26
+ </mu-navbar>
27
+ </div>
28
+
29
+ </mu-example>
30
+ </div>
31
+
32
+ <div id="navbar-api" class="doc-tab-content" style="display: none;">
33
+ <div class="component-section">
34
+ <h2 class="section-title">Child Components</h2>
35
+ <mu-api-table type="attributes">
36
+ <mu-api-row name="mu-navbar-brand">Container for logo/brand name</mu-api-row>
37
+ <mu-api-row name="mu-navbar-links">Container for navigation links</mu-api-row>
38
+ <mu-api-row name="mu-navbar-actions">Container for action buttons</mu-api-row>
39
+ </mu-api-table>
40
+ </div>
41
+ </div>
42
+
43
+ <div id="navbar-styling" class="doc-tab-content" style="display: none;">
44
+ <div class="component-section">
45
+ <h2 class="section-title">CSS Custom Properties</h2>
46
+ <mu-api-table type="tokens">
47
+ <mu-api-row name="--md-sys-color-surface" default="#fef7ff">Navbar background</mu-api-row>
48
+ <mu-api-row name="--md-sys-color-on-surface" default="#1d1b20">Text color</mu-api-row>
49
+ </mu-api-table>
50
+ </div>
51
+ </div>
52
+
53
+ <div id="navbar-examples" class="doc-tab-content" style="display: none;">
54
+ <mu-example title="With action buttons">
55
+ <div slot="demo">
56
+ <mu-navbar>
57
+ <mu-navbar-brand>MyApp</mu-navbar-brand>
58
+ <mu-navbar-links>
59
+ <a href="#">Features</a>
60
+ <a href="#">Pricing</a>
61
+ </mu-navbar-links>
62
+ <mu-navbar-actions>
63
+ <mu-button variant="text">Login</mu-button>
64
+ <mu-button variant="filled">Sign Up</mu-button>
65
+ </mu-navbar-actions>
66
+ </mu-navbar>
67
+ </div>
68
+ </mu-example>
69
+ </div>
70
+ </div>
@@ -0,0 +1,119 @@
1
+ <!-- Progress Content Fragment -->
2
+ <div id="page-progress" class="page active">
3
+ <h1 class="page-title">Progress Bar</h1>
4
+ <p class="page-subtitle">
5
+ <code>&lt;mu-progress&gt;</code>
6
+ communicates loading states with linear progress animations.
7
+ </p>
8
+
9
+ <mu-tabs active="0" id="progress-doc-tabs" style="margin-bottom: 24px;">
10
+ <mu-tab>OVERVIEW</mu-tab>
11
+ <mu-tab>API</mu-tab>
12
+ <mu-tab>STYLING</mu-tab>
13
+ <mu-tab>EXAMPLES</mu-tab>
14
+ </mu-tabs>
15
+
16
+ <div id="progress-overview" class="doc-tab-content">
17
+ <mu-example title="Linear progress bar">
18
+ <div slot="demo">
19
+ <mu-stack gap="md" style="width: 100%;">
20
+ <mu-progress value="25"></mu-progress>
21
+ <mu-progress value="50"></mu-progress>
22
+ <mu-progress value="75"></mu-progress>
23
+ <mu-progress value="100"></mu-progress>
24
+ </mu-stack>
25
+ </div>
26
+ </mu-example>
27
+
28
+ <!-- When to use - UNIFIED CARD with list items -->
29
+ <div class="component-section">
30
+ <h3 class="section-title">When to use</h3>
31
+ <mu-card variant="outlined">
32
+ <mu-stack gap="md">
33
+ <mu-stack direction="row" gap="sm" align="start">
34
+ <mu-icon name="check_circle" size="20"
35
+ style="color: var(--md-sys-color-primary); margin-top: 2px;"></mu-icon>
36
+ <div>
37
+ <strong>File uploads or downloads</strong>
38
+ <div style="font-size: 13px; color: var(--md-sys-color-on-surface-variant);">When you can
39
+ calculate progress percentage</div>
40
+ </div>
41
+ </mu-stack>
42
+ <mu-stack direction="row" gap="sm" align="start">
43
+ <mu-icon name="check_circle" size="20"
44
+ style="color: var(--md-sys-color-primary); margin-top: 2px;"></mu-icon>
45
+ <div>
46
+ <strong>Multi-step processes</strong>
47
+ <div style="font-size: 13px; color: var(--md-sys-color-on-surface-variant);">Wizards,
48
+ onboarding flows, form completion</div>
49
+ </div>
50
+ </mu-stack>
51
+ </mu-stack>
52
+ </mu-card>
53
+ </div>
54
+
55
+ <!-- When NOT to use -->
56
+ <div class="component-section">
57
+ <h3 class="section-title">When NOT to use</h3>
58
+ <mu-stack gap="md">
59
+ <mu-alert severity="warning">Don't use for <strong>indeterminate loading</strong> where duration is
60
+ unknown — use <code>&lt;mu-spinner&gt;</code> instead</mu-alert>
61
+ <mu-alert severity="warning">Don't use for <strong>button loading states</strong> — use inline spinner
62
+ or button disabled state</mu-alert>
63
+ </mu-stack>
64
+ </div>
65
+ </div>
66
+
67
+ <div id="progress-api" class="doc-tab-content" style="display: none;">
68
+ <div class="component-section">
69
+ <h2 class="section-title">Attributes</h2>
70
+ <mu-api-table type="attributes">
71
+ <mu-api-row name="value" type="number" default="0">Progress value (0-100)</mu-api-row>
72
+ <mu-api-row name="indeterminate" type="boolean" default="false">Infinite animation
73
+ mode</mu-api-row>
74
+ </mu-api-table>
75
+ </div>
76
+ </div>
77
+
78
+ <div id="progress-styling" class="doc-tab-content" style="display: none;">
79
+ <div class="component-section">
80
+ <h2 class="section-title">CSS Custom Properties</h2>
81
+ <mu-api-table type="tokens">
82
+ <mu-api-row name="--md-sys-color-primary" default="#6750a4">Progress fill color</mu-api-row>
83
+ <mu-api-row name="--md-sys-color-surface-container-highest" default="#e6e0e9">Track
84
+ background</mu-api-row>
85
+ </mu-api-table>
86
+ </div>
87
+ </div>
88
+
89
+ <div id="progress-examples" class="doc-tab-content" style="display: none;">
90
+ <mu-example title="Indeterminate progress">
91
+ <div slot="demo">
92
+ <mu-progress indeterminate></mu-progress>
93
+ </div>
94
+ </mu-example>
95
+
96
+ <mu-example title="Different values">
97
+ <div slot="demo">
98
+ <mu-stack gap="sm" style="width: 100%;">
99
+ <div style="display: flex; justify-content: space-between; font-size: 13px;">
100
+ <span>0%</span>
101
+ <mu-progress value="0" style="flex: 1; margin: 0 12px;"></mu-progress>
102
+ </div>
103
+ <div style="display: flex; justify-content: space-between; font-size: 13px;">
104
+ <span>33%</span>
105
+ <mu-progress value="33" style="flex: 1; margin: 0 12px;"></mu-progress>
106
+ </div>
107
+ <div style="display: flex; justify-content: space-between; font-size: 13px;">
108
+ <span>66%</span>
109
+ <mu-progress value="66" style="flex: 1; margin: 0 12px;"></mu-progress>
110
+ </div>
111
+ <div style="display: flex; justify-content: space-between; font-size: 13px;">
112
+ <span>100%</span>
113
+ <mu-progress value="100" style="flex: 1; margin: 0 12px;"></mu-progress>
114
+ </div>
115
+ </mu-stack>
116
+ </div>
117
+ </mu-example>
118
+ </div>
119
+ </div>
@@ -0,0 +1,88 @@
1
+ <!-- Radios Content Fragment -->
2
+ <div id="page-radios" class="page active">
3
+ <h1 class="page-title">Radio Button</h1>
4
+ <p class="page-subtitle">
5
+ <code>&lt;mu-radio-group&gt;</code> and <code>&lt;mu-radio&gt;</code> allow users
6
+ to select one option from a set. Radio buttons should be used in groups.
7
+ </p>
8
+
9
+ <mu-tabs active="0" id="radio-doc-tabs" style="margin-bottom: 24px;">
10
+ <mu-tab>OVERVIEW</mu-tab>
11
+ <mu-tab>API</mu-tab>
12
+ <mu-tab>STYLING</mu-tab>
13
+ <mu-tab>EXAMPLES</mu-tab>
14
+ </mu-tabs>
15
+
16
+ <div id="radio-overview" class="doc-tab-content">
17
+ <mu-example title="Radio group">
18
+ <div slot="demo">
19
+ <mu-radio-group name="size" value="medium">
20
+ <mu-stack gap="sm">
21
+ <mu-radio value="small">Small</mu-radio>
22
+ <mu-radio value="medium">Medium</mu-radio>
23
+ <mu-radio value="large">Large</mu-radio>
24
+ </mu-stack>
25
+ </mu-radio-group>
26
+ </div>
27
+
28
+ </mu-example>
29
+
30
+ <div class="component-section"
31
+ style="background: var(--md-sys-color-primary-container); border-left: 4px solid var(--md-sys-color-primary);">
32
+ <h2 class="section-title" style="color: var(--md-sys-color-on-primary-container);">Accessibility
33
+ </h2>
34
+ <p style="color: var(--md-sys-color-on-primary-container); line-height: 1.6;">
35
+ Radio groups use <code>role="radiogroup"</code> and manage
36
+ <code>aria-checked</code> on each radio. Arrow keys navigate between options.
37
+ </p>
38
+ </div>
39
+ </div>
40
+
41
+ <div id="radio-api" class="doc-tab-content" style="display: none;">
42
+ <div class="component-section">
43
+ <h2 class="section-title">Attributes (mu-radio-group)</h2>
44
+ <mu-api-table type="attributes">
45
+ <mu-api-row name="name" type="string" default="">Form name for the group</mu-api-row>
46
+ <mu-api-row name="value" type="string" default="">Currently selected value</mu-api-row>
47
+ </mu-api-table>
48
+ </div>
49
+ <div class="component-section">
50
+ <h2 class="section-title">Attributes (mu-radio)</h2>
51
+ <mu-api-table type="attributes">
52
+ <mu-api-row name="value" type="string" default="">Value of this radio option</mu-api-row>
53
+ <mu-api-row name="disabled" type="boolean" default="false">Whether disabled</mu-api-row>
54
+ </mu-api-table>
55
+ </div>
56
+ <div class="component-section">
57
+ <h2 class="section-title">Events</h2>
58
+ <mu-api-table type="events">
59
+ <mu-api-row name="mu-change" detail="{ value: string }">Emitted on group when selection
60
+ changes</mu-api-row>
61
+ </mu-api-table>
62
+ </div>
63
+ </div>
64
+
65
+ <div id="radio-styling" class="doc-tab-content" style="display: none;">
66
+ <div class="component-section">
67
+ <h2 class="section-title">CSS Custom Properties</h2>
68
+ <mu-api-table type="tokens">
69
+ <mu-api-row name="--md-sys-color-primary" default="#6750a4">Selected radio fill</mu-api-row>
70
+ <mu-api-row name="--md-sys-color-outline" default="#79747e">Unselected border</mu-api-row>
71
+ </mu-api-table>
72
+ </div>
73
+ </div>
74
+
75
+ <div id="radio-examples" class="doc-tab-content" style="display: none;">
76
+ <mu-example title="Horizontal layout">
77
+ <div slot="demo">
78
+ <mu-radio-group name="color" value="blue">
79
+ <mu-stack direction="row" gap="md">
80
+ <mu-radio value="red">Red</mu-radio>
81
+ <mu-radio value="green">Green</mu-radio>
82
+ <mu-radio value="blue">Blue</mu-radio>
83
+ </mu-stack>
84
+ </mu-radio-group>
85
+ </div>
86
+ </mu-example>
87
+ </div>
88
+ </div>
@@ -0,0 +1,109 @@
1
+ <div class="page active">
2
+ <h1 class="page-title">Skeleton</h1>
3
+ <p class="page-subtitle">
4
+ <code>&lt;mu-skeleton&gt;</code> displays animated placeholder content
5
+ while the actual content is loading, improving perceived performance.
6
+ </p>
7
+
8
+ <mu-tabs active="0" id="skeleton-doc-tabs" style="margin-bottom: 24px;">
9
+ <mu-tab>OVERVIEW</mu-tab>
10
+ <mu-tab>API</mu-tab>
11
+ <mu-tab>STYLING</mu-tab>
12
+ <mu-tab>EXAMPLES</mu-tab>
13
+ </mu-tabs>
14
+
15
+ <div id="skeleton-overview" class="doc-tab-content">
16
+ <mu-example title="Loading card placeholder">
17
+ <div slot="demo">
18
+ <mu-card variant="outlined" style="max-width: 300px; padding: 16px;">
19
+ <mu-stack direction="row" gap="md" align="start">
20
+ <mu-skeleton variant="circle" size="48px"></mu-skeleton>
21
+ <mu-stack gap="sm" style="flex: 1;">
22
+ <mu-skeleton width="60%" height="16px"></mu-skeleton>
23
+ <mu-skeleton width="40%" height="12px"></mu-skeleton>
24
+ </mu-stack>
25
+ </mu-stack>
26
+ <mu-skeleton variant="text" lines="3" style="margin-top: 16px;"></mu-skeleton>
27
+ </mu-card>
28
+ </div>
29
+ <div slot="code">&lt;mu-skeleton variant="circle" size="48px"&gt;&lt;/mu-skeleton&gt;
30
+ &lt;mu-skeleton width="60%" height="16px"&gt;&lt;/mu-skeleton&gt;
31
+ &lt;mu-skeleton variant="text" lines="3"&gt;&lt;/mu-skeleton&gt;</div>
32
+ </mu-example>
33
+
34
+ <mu-example title="Variant types">
35
+ <div slot="demo">
36
+ <mu-stack gap="lg">
37
+ <mu-stack gap="xs">
38
+ <strong>Rectangle (default)</strong>
39
+ <mu-skeleton width="200px" height="100px"></mu-skeleton>
40
+ </mu-stack>
41
+ <mu-stack gap="xs">
42
+ <strong>Circle</strong>
43
+ <mu-skeleton variant="circle" size="64px"></mu-skeleton>
44
+ </mu-stack>
45
+ <mu-stack gap="xs">
46
+ <strong>Text lines</strong>
47
+ <mu-skeleton variant="text" lines="3"></mu-skeleton>
48
+ </mu-stack>
49
+ </mu-stack>
50
+ </div>
51
+ <div slot="code">&lt;mu-skeleton width="200px" height="100px"&gt;&lt;/mu-skeleton&gt;
52
+ &lt;mu-skeleton variant="circle" size="64px"&gt;&lt;/mu-skeleton&gt;
53
+ &lt;mu-skeleton variant="text" lines="3"&gt;&lt;/mu-skeleton&gt;</div>
54
+ </mu-example>
55
+
56
+ <div class="component-section">
57
+ <h2 class="section-title">When to use</h2>
58
+ <p style="color: var(--md-sys-color-on-surface-variant); line-height: 1.6;">
59
+ Use skeletons to indicate that content is loading. They reduce perceived waiting time
60
+ by showing the layout structure upfront. Prefer skeletons over spinners for
61
+ content-heavy areas.
62
+ </p>
63
+ </div>
64
+ </div>
65
+
66
+ <div id="skeleton-api" class="doc-tab-content" style="display: none;">
67
+ <div class="component-section">
68
+ <h2 class="section-title">Attributes</h2>
69
+ <mu-api-table type="attributes">
70
+ <mu-api-row name="variant" type="string" default="rect">'rect' | 'circle' | 'text'</mu-api-row>
71
+ <mu-api-row name="width" type="string" default="100%">Width for rect variant</mu-api-row>
72
+ <mu-api-row name="height" type="string" default="20px">Height for rect variant</mu-api-row>
73
+ <mu-api-row name="size" type="string" default="40px">Size for circle variant</mu-api-row>
74
+ <mu-api-row name="lines" type="number" default="1">Number of lines for text variant</mu-api-row>
75
+ </mu-api-table>
76
+ </div>
77
+ </div>
78
+
79
+ <div id="skeleton-styling" class="doc-tab-content" style="display: none;">
80
+ <div class="component-section">
81
+ <h2 class="section-title">CSS Custom Properties</h2>
82
+ <mu-api-table type="tokens">
83
+ <mu-api-row name="--md-sys-color-surface-container-highest" default="#e6e0e9">Skeleton background
84
+ color</mu-api-row>
85
+ </mu-api-table>
86
+ </div>
87
+ </div>
88
+
89
+ <div id="skeleton-examples" class="doc-tab-content" style="display: none;">
90
+ <mu-example title="Loading profile">
91
+ <div slot="demo">
92
+ <mu-stack direction="row" gap="md" align="center">
93
+ <mu-skeleton variant="circle" size="56px"></mu-skeleton>
94
+ <mu-stack gap="xs">
95
+ <mu-skeleton width="120px" height="18px"></mu-skeleton>
96
+ <mu-skeleton width="80px" height="14px"></mu-skeleton>
97
+ </mu-stack>
98
+ </mu-stack>
99
+ </div>
100
+ <div slot="code">&lt;mu-stack direction="row" gap="md" align="center"&gt;
101
+ &lt;mu-skeleton variant="circle" size="56px"&gt;&lt;/mu-skeleton&gt;
102
+ &lt;mu-stack gap="xs"&gt;
103
+ &lt;mu-skeleton width="120px" height="18px"&gt;&lt;/mu-skeleton&gt;
104
+ &lt;mu-skeleton width="80px" height="14px"&gt;&lt;/mu-skeleton&gt;
105
+ &lt;/mu-stack&gt;
106
+ &lt;/mu-stack&gt;</div>
107
+ </mu-example>
108
+ </div>
109
+ </div>
@@ -0,0 +1,96 @@
1
+ <div class="page active">
2
+ <h1 class="page-title">Spinner</h1>
3
+ <p class="page-subtitle">
4
+ <code>&lt;mu-spinner&gt;</code> is an MD3 circular progress indicator
5
+ for short loading operations where the wait time is unknown.
6
+ </p>
7
+
8
+ <mu-tabs active="0" id="spinner-doc-tabs" style="margin-bottom: 24px;">
9
+ <mu-tab>OVERVIEW</mu-tab>
10
+ <mu-tab>API</mu-tab>
11
+ <mu-tab>STYLING</mu-tab>
12
+ <mu-tab>EXAMPLES</mu-tab>
13
+ </mu-tabs>
14
+
15
+ <div id="spinner-overview" class="doc-tab-content">
16
+ <mu-example title="Size variants">
17
+ <div slot="demo">
18
+ <mu-stack direction="row" gap="lg" align="center">
19
+ <mu-stack gap="xs" align="center">
20
+ <mu-spinner size="sm"></mu-spinner>
21
+ <small>Small</small>
22
+ </mu-stack>
23
+ <mu-stack gap="xs" align="center">
24
+ <mu-spinner size="md"></mu-spinner>
25
+ <small>Medium</small>
26
+ </mu-stack>
27
+ <mu-stack gap="xs" align="center">
28
+ <mu-spinner size="lg"></mu-spinner>
29
+ <small>Large</small>
30
+ </mu-stack>
31
+ </mu-stack>
32
+ </div>
33
+ <div slot="code">&lt;mu-spinner size="sm"&gt;&lt;/mu-spinner&gt;
34
+ &lt;mu-spinner size="md"&gt;&lt;/mu-spinner&gt;
35
+ &lt;mu-spinner size="lg"&gt;&lt;/mu-spinner&gt;</div>
36
+ </mu-example>
37
+
38
+ <mu-example title="Color variants">
39
+ <div slot="demo">
40
+ <mu-spinner color="primary"></mu-spinner>
41
+ <mu-spinner color="secondary"></mu-spinner>
42
+ <mu-spinner color="tertiary"></mu-spinner>
43
+ </div>
44
+ <div slot="code">&lt;mu-spinner color="primary"&gt;&lt;/mu-spinner&gt;
45
+ &lt;mu-spinner color="secondary"&gt;&lt;/mu-spinner&gt;
46
+ &lt;mu-spinner color="tertiary"&gt;&lt;/mu-spinner&gt;</div>
47
+ </mu-example>
48
+
49
+ <div class="component-section">
50
+ <h2 class="section-title">When to use</h2>
51
+ <p style="color: var(--md-sys-color-on-surface-variant); line-height: 1.6;">
52
+ Use spinners for short, indeterminate loading operations (under 4 seconds).
53
+ For longer operations, use a progress indicator with percentage. For content
54
+ areas, prefer skeletons over spinners.
55
+ </p>
56
+ </div>
57
+ </div>
58
+
59
+ <div id="spinner-api" class="doc-tab-content" style="display: none;">
60
+ <div class="component-section">
61
+ <h2 class="section-title">Attributes</h2>
62
+ <mu-api-table type="attributes">
63
+ <mu-api-row name="size" type="string" default="md">'sm' | 'md' | 'lg'</mu-api-row>
64
+ <mu-api-row name="color" type="string" default="primary">'primary' | 'secondary' |
65
+ 'tertiary'</mu-api-row>
66
+ </mu-api-table>
67
+ </div>
68
+ </div>
69
+
70
+ <div id="spinner-styling" class="doc-tab-content" style="display: none;">
71
+ <div class="component-section">
72
+ <h2 class="section-title">CSS Custom Properties</h2>
73
+ <mu-api-table type="tokens">
74
+ <mu-api-row name="--md-sys-color-primary" default="#6750a4">Primary spinner color</mu-api-row>
75
+ <mu-api-row name="--md-sys-color-secondary" default="#958da5">Secondary spinner color</mu-api-row>
76
+ </mu-api-table>
77
+ </div>
78
+ </div>
79
+
80
+ <div id="spinner-examples" class="doc-tab-content" style="display: none;">
81
+ <mu-example title="Loading button">
82
+ <div slot="demo">
83
+ <mu-button disabled>
84
+ <mu-stack direction="row" gap="sm" align="center">
85
+ <mu-spinner size="sm" color="primary"></mu-spinner>
86
+ <span>Loading...</span>
87
+ </mu-stack>
88
+ </mu-button>
89
+ </div>
90
+ <div slot="code">&lt;mu-button disabled&gt;
91
+ &lt;mu-spinner size="sm"&gt;&lt;/mu-spinner&gt;
92
+ Loading...
93
+ &lt;/mu-button&gt;</div>
94
+ </mu-example>
95
+ </div>
96
+ </div>