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 @@
1
+ import{j as t,k as s}from"./chunk-4tezav8r.js";class i extends t{static baseClass="mu-badge";static cssFile="badge";static observedAttributes=["variant","size"];connectedCallback(){super.connectedCallback(),this.#e()}render(){this.#e()}update(e,a,d){this.#e()}#e(){let e=this.attr("variant","primary"),a=this.attr("size","md");this.className=`mu-badge mu-badge--${e} mu-badge--${a}`}}s("mu-badge",i);export{i as MuBadge};
@@ -0,0 +1 @@
1
+ import{d as x}from"./chunk-qwmxyn8e.js";import{j as y}from"./chunk-4tezav8r.js";class z extends y{static get observedAttributes(){return["hide-on-desktop","value"]}static baseClass="mu-bottom-nav";static cssFile="bottom-nav";constructor(){super();this._unsubscribe=null}get hideOnDesktop(){return this.hasAttribute("hide-on-desktop")}set hideOnDesktop(f){this.toggleAttribute("hide-on-desktop",Boolean(f))}get value(){return this.getAttribute("value")||""}set value(f){this.setAttribute("value",f)}connectedCallback(){if(!this._childrenCaptured)this._userChildren=Array.from(this.children),this._childrenCaptured=!0;super.connectedCallback(),this._setupBreakpointListener(),this._setupListeners(),this._updateVisibility()}disconnectedCallback(){if(super.disconnectedCallback(),this._unsubscribe)this._unsubscribe(),this._unsubscribe=null}attributeChangedCallback(f,g,w){if(!this.isConnected)return;if(f==="hide-on-desktop")this._updateVisibility()}_setupBreakpointListener(){if(this.hideOnDesktop)this._unsubscribe=x.subscribe(()=>{this._updateVisibility()})}_updateVisibility(){if(this.hideOnDesktop&&x.isNotCompact)this.style.display="none";else this.style.display=""}_setupListeners(){this.listen(this,"mu-nav-select",(f)=>{this._updateActiveItem(f.detail.item),this.value=f.detail.href||"",this.emit("change",{value:this.value,item:f.detail.item},{bubbles:!0})})}_updateActiveItem(f){this.querySelectorAll("mu-nav-item, mu-drawer-item").forEach((w)=>{w.active=w===f})}render(){let f=document.createElement("nav");if(f.className="mu-bottom-nav-nav",f.setAttribute("role","menu"),f.setAttribute("aria-label","Bottom navigation"),this.innerHTML="",this.appendChild(f),this._userChildren)this._userChildren.forEach((g)=>f.appendChild(g))}}if(!customElements.get("mu-bottom-nav"))customElements.define("mu-bottom-nav",z);export{z as MuBottomNav};
@@ -0,0 +1 @@
1
+ import{e as H}from"./chunk-h7cdbhxw.js";import{j as x,k as F}from"./chunk-4tezav8r.js";class J extends x{static baseClass="mu-button";static cssFile="button";static observedAttributes=["variant","size","disabled"];connectedCallback(){super.connectedCallback(),this.setAttribute("role","button"),this.setupActivation(()=>this.click()),this.listen(this,"pointerdown",(g)=>{if(!this.isDisabled)H(this,g)})}render(){let g=this.textContent.trim();this.innerHTML=`<span class="mu-button__label">${g}</span>`,this.#g()}update(g,w,q){if(g==="disabled")this.updateTabindex();this.#g()}#g(){let g=this.attr("variant","primary"),w=this.attr("size","md"),q=["filled","elevated","tonal","outlined","text","danger","primary","secondary","ghost"];if(!q.includes(g))this.logError("INVALID_VARIANT",`Invalid button variant '${g}'. Valid: ${q.join(", ")}`);if(this.className=`mu-button mu-button--${g} mu-button--${w}`,this.has("disabled"))this.classList.add("is-disabled")}}F("mu-button",J);export{J as MuButton};
@@ -0,0 +1 @@
1
+ import{j as q,k as w}from"./chunk-4tezav8r.js";class x extends q{static baseClass="mu-callout";static observedAttributes=["variant","title"];render(){this.#b()}update(k,h,b){this.#b()}#b(){let k=this.attr("variant","info"),h={info:{bg:"var(--md-sys-color-primary-container)",border:"var(--md-sys-color-primary)",text:"var(--md-sys-color-on-primary-container)"},warning:{bg:"var(--md-sys-color-error-container)",border:"var(--md-sys-color-error)",text:"var(--md-sys-color-on-error-container)"},success:{bg:"var(--md-sys-color-tertiary-container)",border:"var(--md-sys-color-tertiary)",text:"var(--md-sys-color-on-tertiary-container)"},tip:{bg:"var(--md-sys-color-secondary-container)",border:"var(--md-sys-color-secondary)",text:"var(--md-sys-color-on-secondary-container)"}},b=h[k]||h.info;this.style.display="block",this.style.boxSizing="border-box",this.style.maxWidth="100%",this.style.wordWrap="break-word",this.style.overflowWrap="break-word",this.style.padding="20px",this.style.marginTop="24px",this.style.marginBottom="24px",this.style.background=b.bg,this.style.borderLeft=`4px solid ${b.border}`,this.style.borderRadius="var(--md-sys-shape-corner-medium)",this.style.color=b.text,this.style.lineHeight="1.6"}}w("mu-callout",x);export{x as MuCallout};
@@ -0,0 +1 @@
1
+ import{j as k,k as q}from"./chunk-4tezav8r.js";class x extends k{static baseClass="mu-card";static cssFile="card";static observedAttributes=["variant","padding"];connectedCallback(){super.connectedCallback(),this.#b()}render(){this.#b()}update(b,h,y){this.#b()}#b(){let b=this.attr("variant","flat"),h=this.attr("padding","md");this.className=`mu-card mu-card--${b} mu-card--padding-${h}`}}q("mu-card",x);export{x as MuCard};
@@ -0,0 +1,9 @@
1
+ import{e as X}from"./chunk-h7cdbhxw.js";import{f as W}from"./chunk-fqyb2pms.js";import{j as Q,k as V}from"./chunk-4tezav8r.js";class Y extends Q{static baseClass="mu-checkbox";static cssFile="checkbox";static observedAttributes=["checked","disabled","name","label","indeterminate"];#z=null;connectedCallback(){super.connectedCallback(),this.setAttribute("role","checkbox"),this.setupActivation(()=>this.toggle()),this.listen(this,"pointerdown",(q)=>{if(!this.isDisabled)X(this,q)}),this.listen(this,"click",()=>{if(!this.isDisabled)this.toggle()})}render(){if(this.querySelector(".mu-checkbox__box")){this.#q();return}let q=W(this.attr("label","")||this.textContent);this.innerHTML=`
2
+ <span class="mu-checkbox__box">
3
+ <svg class="mu-checkbox__icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
4
+ <path class="mu-checkbox__check" d="M4 12l6 6L20 6"/>
5
+ <line class="mu-checkbox__indeterminate" x1="5" y1="12" x2="19" y2="12"/>
6
+ </svg>
7
+ </span>
8
+ <span class="mu-checkbox__label">${q}</span>
9
+ `,this.style.display="inline-flex",this.style.alignItems="center",this.style.gap="12px",this.style.cursor=this.has("disabled")?"not-allowed":"pointer",this.style.userSelect="none",this.style.minHeight="48px",this.style.padding="0 4px",this.#q()}update(q,A,B){this.#q()}#q(){let q=this.querySelector(".mu-checkbox__box"),A=this.querySelector(".mu-checkbox__icon"),B=this.querySelector(".mu-checkbox__check"),G=this.querySelector(".mu-checkbox__indeterminate"),O=this.querySelector(".mu-checkbox__label"),z=this.has("disabled"),K=this.has("checked"),J=this.has("indeterminate"),N=K||J;if(this.style.cursor=z?"not-allowed":"pointer",q)if(q.style.width="18px",q.style.height="18px",q.style.borderRadius="2px",q.style.display="flex",q.style.alignItems="center",q.style.justifyContent="center",q.style.transition="all var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)",q.style.flexShrink="0",z)q.style.border="2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)",q.style.background=N?"color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)":"transparent";else q.style.border=`2px solid ${N?"var(--md-sys-color-primary)":"var(--md-sys-color-outline)"}`,q.style.background=N?"var(--md-sys-color-primary)":"transparent";if(A)A.style.width="14px",A.style.height="14px",A.style.color=z?"var(--md-sys-color-surface)":"var(--md-sys-color-on-primary)";if(B)B.style.strokeDasharray=24,B.style.strokeDashoffset=K&&!J?"0":24,B.style.transition="stroke-dashoffset 200ms var(--md-sys-motion-easing-standard, ease-out)";if(G)G.style.strokeDasharray=14,G.style.strokeDashoffset=J?"0":14,G.style.transition="stroke-dashoffset 200ms var(--md-sys-motion-easing-standard, ease-out)";if(O)O.style.color=z?"color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)":"var(--md-sys-color-on-surface)";this.setAttribute("aria-checked",J?"mixed":String(K)),this.setAttribute("aria-disabled",String(z)),this.setAttribute("tabindex",z?"-1":"0")}toggle(){if(this.has("indeterminate"))this.removeAttribute("indeterminate");if(this.has("checked"))this.removeAttribute("checked");else this.setAttribute("checked","");this.emit("mu-change",{checked:this.has("checked"),indeterminate:!1})}get checked(){return this.has("checked")}set checked(q){if(q)this.setAttribute("checked","");else this.removeAttribute("checked")}get indeterminate(){return this.has("indeterminate")}set indeterminate(q){if(q)this.setAttribute("indeterminate","");else this.removeAttribute("indeterminate")}}V("mu-checkbox",Y);export{Y as MuCheckbox};
@@ -0,0 +1,4 @@
1
+ import{e as A}from"./chunk-h7cdbhxw.js";import{j as x,k as z}from"./chunk-4tezav8r.js";class F extends x{static baseClass="mu-chip";static cssFile="chip";static observedAttributes=["selected","removable","variant"];#k=null;connectedCallback(){if(super.connectedCallback(),!this.#k&&!this.querySelector(".mu-chip__label"))this.#k=this.textContent.trim();this.setAttribute("tabindex","0"),this.setAttribute("role","button"),this.setupActivation(()=>{if(!this.has("removable"))this.toggle()}),this.listen(this,"pointerdown",(k)=>{if(!k.target.closest(".mu-chip__remove"))A(this,k)}),this.listen(this,"click",(k)=>{if(k.target.closest(".mu-chip__remove"))this.emit("mu-remove"),this.remove();else if(!this.has("removable"))this.toggle()})}render(){if(this.querySelector(".mu-chip__label")){this.#q();return}let k=this.#k||this.textContent.trim(),w=this.has("removable");this.innerHTML=`
2
+ <span class="mu-chip__label">${k}</span>
3
+ ${w?'<button class="mu-chip__remove" aria-label="Remove">✕</button>':""}
4
+ `,this.#q()}update(k,w,q){this.#q()}#q(){let k=this.has("selected"),w=this.attr("variant","outlined");if(this.style.display="inline-flex",this.style.alignItems="center",this.style.gap="4px",this.style.padding="8px 16px",this.style.borderRadius="8px",this.style.fontSize="var(--md-sys-typescale-label-large-size, 14px)",this.style.cursor="pointer",this.style.userSelect="none",this.style.transition="all var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)",w==="filled"||k)this.style.background=k?"var(--md-sys-color-secondary-container)":"var(--md-sys-color-surface-container-high)",this.style.color=k?"var(--md-sys-color-on-secondary-container)":"var(--md-sys-color-on-surface)",this.style.border="1px solid transparent";else this.style.background="transparent",this.style.color="var(--md-sys-color-on-surface)",this.style.border="1px solid var(--md-sys-color-outline)";let q=this.querySelector(".mu-chip__remove");if(q)q.style.background="none",q.style.border="none",q.style.padding="0",q.style.marginLeft="4px",q.style.cursor="pointer",q.style.color="inherit",q.style.opacity="0.7"}toggle(){if(this.has("selected"))this.removeAttribute("selected");else this.setAttribute("selected","");this.emit("mu-change",{selected:this.has("selected")})}}z("mu-chip",F);export{F as MuChip};
@@ -0,0 +1,48 @@
1
+ import{j as _,k as $}from"./chunk-4tezav8r.js";class w extends _{static baseClass="mu-code";static observedAttributes=["language"];#z=null;connectedCallback(){if(super.connectedCallback(),!this.#z&&!this.querySelector(".mu-code__content"))this.#z=this.textContent}render(){if(this.querySelector(".mu-code__content"))return;let R=this.attr("language","html"),J=this.#z||this.innerHTML,P=document.createElement("div");P.innerHTML=J;let G=P.textContent,O=this.#G(G),z=this.#J(O,R),F=z,K=z.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),Q=this.#F(K,R);this.innerHTML=`
2
+ <div class="mu-code__header">
3
+ <span class="mu-code__language">${R.toUpperCase()}</span>
4
+ <button class="mu-code__copy" title="Copy code">
5
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
6
+ <rect x="9" y="9" width="13" height="13" rx="2" ry="2"/>
7
+ <path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/>
8
+ </svg>
9
+ </button>
10
+ </div>
11
+ <pre class="mu-code__pre"><code class="mu-code__content">${Q}</code></pre>
12
+ `,this.#K(),this.#O(F)}#F(R,J){let P=()=>{let G=[],O=0;return{addMarker:(K,Q)=>{let U=O++,Z=String.fromCharCode(57600+U),X=String.fromCharCode(57344),Y=String.fromCharCode(57345),W=X+Z+Y;return G.push({marker:W,content:K,className:Q}),W},resolveMarkers:(K)=>{for(let{marker:Q,content:U,className:Z}of G)K=K.replace(Q,`<span class="${Z}">${U}</span>`);return K}}};if(J==="html"||J==="xml"){let{addMarker:G,resolveMarkers:O}=P(),z=R;return z=z.replace(/(&lt;!--[\s\S]*?--&gt;)/g,(F)=>G(F,"mu-code__comment")),z=z.replace(/(&lt;!DOCTYPE[^&]*&gt;)/gi,(F)=>G(F,"mu-code__keyword")),z=z.replace(/("[^"]*")/g,(F)=>G(F,"mu-code__string")),z=z.replace(/(\s)([\w-]+)(=)/g,(F,K,Q,U)=>`${K}${G(Q,"mu-code__attr")}${U}`),z=z.replace(/(&lt;\/?)([\w-]+)/g,(F,K,Q)=>`${K}${G(Q,"mu-code__tag")}`),O(z)}if(J==="javascript"||J==="js"||J==="typescript"||J==="ts"){let{addMarker:G,resolveMarkers:O}=P(),z=R;return z=z.replace(/(\/\*[\s\S]*?\*\/)/g,(F)=>G(F,"mu-code__comment")),z=z.replace(/(\/\/.*)/g,(F)=>G(F,"mu-code__comment")),z=z.replace(/(`[^`]*`)/g,(F)=>G(F,"mu-code__string")),z=z.replace(/('[^']*'|"[^"]*")/g,(F)=>G(F,"mu-code__string")),z=z.replace(/\b(\d+\.?\d*(?:e[+-]?\d+)?)\b/gi,(F)=>G(F,"mu-code__number")),z=z.replace(/\b(const|let|var|function|return|if|else|for|while|do|switch|case|break|continue|class|extends|import|export|from|default|async|await|new|this|super|typeof|instanceof|in|of|try|catch|finally|throw|yield|static|get|set)\b/g,(F)=>G(F,"mu-code__keyword")),z=z.replace(/\b(true|false|null|undefined|NaN|Infinity)\b/g,(F)=>G(F,"mu-code__builtin")),z=z.replace(/\b([a-zA-Z_]\w*)\s*(?=\()/g,(F,K)=>G(K,"mu-code__function")),O(z)}if(J==="css"||J==="scss"||J==="sass"){let{addMarker:G,resolveMarkers:O}=P(),z=R;return z=z.replace(/(\/\*[\s\S]*?\*\/)/g,(F)=>G(F,"mu-code__comment")),z=z.replace(/('[^']*'|"[^"]*")/g,(F)=>G(F,"mu-code__string")),z=z.replace(/(@[\w-]+)/g,(F)=>G(F,"mu-code__keyword")),z=z.replace(/\b(\d+\.?\d*)(px|em|rem|%|vh|vw|s|ms|deg|fr)\b/g,(F,K,Q)=>`${G(K,"mu-code__number")}${G(Q,"mu-code__builtin")}`),z=z.replace(/\b(\d+\.?\d*)\b/g,(F)=>G(F,"mu-code__number")),z=z.replace(/(#[0-9a-fA-F]{3,8})\b/g,(F)=>G(F,"mu-code__string")),z=z.replace(/\b([\w-]+)\s*:/g,(F,K)=>`${G(K,"mu-code__attr")}:`),z=z.replace(/(^|[{,\s])([.#]?[\w-]+)(?=\s*[{,])/gm,(F,K,Q)=>`${K}${G(Q,"mu-code__tag")}`),O(z)}if(J==="json"){let{addMarker:G,resolveMarkers:O}=P(),z=R;return z=z.replace(/("[^"]*")\s*:/g,(F,K)=>`${G(K,"mu-code__attr")}:`),z=z.replace(/:\s*("[^"]*")/g,(F,K)=>`: ${G(K,"mu-code__string")}`),z=z.replace(/:\s*(-?\d+\.?\d*)/g,(F,K)=>`: ${G(K,"mu-code__number")}`),z=z.replace(/\b(true|false|null)\b/g,(F)=>G(F,"mu-code__builtin")),O(z)}if(J==="bash"||J==="sh"||J==="shell"){let{addMarker:G,resolveMarkers:O}=P(),z=R;return z=z.replace(/(#.*)/g,(F)=>G(F,"mu-code__comment")),z=z.replace(/('[^']*'|"[^"]*")/g,(F)=>G(F,"mu-code__string")),z=z.replace(/(\$\{?\w+\}?)/g,(F)=>G(F,"mu-code__attr")),z=z.replace(/\b(cd|ls|echo|cat|grep|find|sudo|npm|npx|bun|node|git|curl|wget|mkdir|rm|cp|mv|chmod|chown)\b/g,(F)=>G(F,"mu-code__keyword")),z=z.replace(/(\s)(--?[\w-]+)/g,(F,K,Q)=>`${K}${G(Q,"mu-code__builtin")}`),O(z)}return R}#G(R){let J=R.split(`
13
+ `);while(J.length>0&&J[0].trim()==="")J.shift();while(J.length>0&&J[J.length-1].trim()==="")J.pop();if(J.length===0)return"";let P=1/0;for(let G of J){if(G.trim()==="")continue;let O=G.match(/^(\s*)/),z=O?O[1].length:0;P=Math.min(P,z)}if(P===1/0||P===0)return J.join(`
14
+ `);return J.map((G)=>{if(G.trim()==="")return"";return G.slice(P)}).join(`
15
+ `)}#J(R,J){let G=R.split(`
16
+ `),O=[],z=0;for(let F=0;F<G.length;F++){let K=G[F].trim();if(K===""){O.push("");continue}let Q=0,U=0;if(J==="html"){let X=(K.match(/<[a-zA-Z][^>]*(?<!\/)\s*>/g)||[]).length,Y=(K.match(/<\/[^>]+>/g)||[]).length,W=(K.match(/<[^>]+\/>/g)||[]).length;Q=X-W,U=Y}else{let X=!1,Y="";for(let W=0;W<K.length;W++){let V=K[W],A=W>0?K[W-1]:"";if((V==='"'||V==="'"||V==="`")&&A!=="\\"){if(!X)X=!0,Y=V;else if(V===Y)X=!1}if(!X){if(V==="{"||V==="["||V==="(")Q++;if(V==="}"||V==="]"||V===")")U++}}}if((J==="html"?K.startsWith("</"):/^[}\]\)]/.test(K))&&U>0)z=Math.max(0,z-1),U--;O.push(" ".repeat(z)+K),z=Math.max(0,z+Q-U)}return O.join(`
17
+ `)}#K(){if(this.style.display="block",this.style.background="var(--md-sys-color-surface-container-highest)",this.closest("mu-example"))this.style.borderTopLeftRadius="0",this.style.borderTopRightRadius="0",this.style.borderBottomLeftRadius="var(--md-sys-shape-corner-medium)",this.style.borderBottomRightRadius="var(--md-sys-shape-corner-medium)";else this.style.borderRadius="var(--md-sys-shape-corner-medium)";this.style.overflow="hidden",this.style.fontFamily="'Fira Code', 'Consolas', monospace",this.style.fontSize="13px";let J=this.querySelector(".mu-code__header");if(J)J.style.display="flex",J.style.justifyContent="space-between",J.style.alignItems="center",J.style.padding="8px 16px",J.style.background="var(--md-sys-color-surface-container)",J.style.borderBottom="1px solid var(--md-sys-color-outline-variant)";let P=this.querySelector(".mu-code__language");if(P)P.style.fontSize="11px",P.style.fontWeight="600",P.style.color="var(--md-sys-color-primary)",P.style.letterSpacing="0.5px";let G=this.querySelector(".mu-code__copy");if(G)G.style.background="transparent",G.style.border="none",G.style.cursor="pointer",G.style.color="var(--md-sys-color-on-surface-variant)",G.style.padding="4px",G.style.borderRadius="4px",G.style.display="flex",G.style.transition="all 0.2s ease";let O=this.querySelector(".mu-code__pre");if(O)O.style.margin="0",O.style.padding="16px",O.style.overflow="auto",O.style.maxHeight="400px";let z=this.querySelector(".mu-code__content");if(z)z.style.color="var(--md-sys-color-on-surface)";let F=document.createElement("style");F.textContent=`
18
+ .mu-code__tag { color: var(--md-sys-color-primary); }
19
+ .mu-code__attr { color: var(--md-sys-color-tertiary); }
20
+ .mu-code__string { color: var(--md-sys-color-secondary); }
21
+ .mu-code__keyword { color: var(--md-sys-color-primary); font-weight: 500; }
22
+ .mu-code__comment { color: var(--md-sys-color-outline); font-style: italic; }
23
+ .mu-code__number { color: var(--md-sys-color-error); }
24
+ .mu-code__function { color: var(--md-sys-color-tertiary); }
25
+ .mu-code__builtin { color: var(--md-sys-color-primary); font-weight: 500; }
26
+ .mu-code__copy:hover {
27
+ background: var(--md-sys-color-primary-container) !important;
28
+ color: var(--md-sys-color-on-primary-container) !important;
29
+ }
30
+ .mu-code__copy:active {
31
+ background: var(--md-sys-color-primary) !important;
32
+ color: var(--md-sys-color-on-primary) !important;
33
+ transform: scale(0.95);
34
+ }
35
+ .mu-code__copy.copied {
36
+ background: #c8e6c9 !important;
37
+ color: #1b5e20 !important;
38
+ }
39
+ `;let K=document.getElementById("mu-code-styles");if(K)K.remove();F.id="mu-code-styles",document.head.appendChild(F)}#O(R){let J=this.querySelector(".mu-code__copy");if(J)this.listen(J,"click",async()=>{try{await navigator.clipboard.writeText(R.trim()),J.classList.add("copied"),J.innerHTML=`
40
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
41
+ <polyline points="20 6 9 17 4 12"/>
42
+ </svg>
43
+ `,this.setTimeout(()=>{J.classList.remove("copied"),J.innerHTML=`
44
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
45
+ <rect x="9" y="9" width="13" height="13" rx="2" ry="2"/>
46
+ <path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/>
47
+ </svg>
48
+ `},2000)}catch(P){console.error("Copy failed:",P)}})}}$("mu-code",w);export{w as MuCode};
@@ -0,0 +1,10 @@
1
+ import{f as G}from"./chunk-fqyb2pms.js";import{k as O}from"./chunk-4tezav8r.js";import{l as K}from"./mu-modal.js";var F=null;async function U(k,z={}){let{title:y="Confirm",confirmText:A="Confirm",cancelText:I="Cancel",variant:J="primary"}=z;if(F)F.remove();return new Promise((N)=>{let q=document.createElement("mu-confirm");q.setAttribute("title",y),q.setAttribute("message",k),q.setAttribute("confirm-text",A),q.setAttribute("cancel-text",I),q.setAttribute("variant",J),q.addEventListener("mu-confirm",()=>{q.remove(),F=null,N(!0)}),q.addEventListener("mu-cancel",()=>{q.remove(),F=null,N(!1)}),F=q,document.body.appendChild(q),q.open()})}class P extends K{static baseClass="mu-confirm";static cssFile="dialog";static observedAttributes=["title","message","confirm-text","cancel-text","variant","open","size"];#k=null;connectedCallback(){if(!this.hasAttribute("data-rendered"))this.setAttribute("data-rendered","true");Object.getPrototypeOf(K.prototype).connectedCallback.call(this)}render(){if(this.querySelector("dialog"))return;let k=G(this.attr("title","Confirm")),z=G(this.attr("message","Are you sure?")),y=G(this.attr("confirm-text","Confirm")),A=G(this.attr("cancel-text","Cancel")),J=this.attr("variant","primary")==="danger"?"danger":"filled";this.innerHTML=`
2
+ <dialog class="mu-confirm__dialog">
3
+ <h3 class="mu-confirm__title">${k}</h3>
4
+ <p class="mu-confirm__message">${z}</p>
5
+ <div class="mu-confirm__actions">
6
+ <mu-button variant="text" data-action="cancel">${A}</mu-button>
7
+ <mu-button variant="${J}" data-action="confirm">${y}</mu-button>
8
+ </div>
9
+ </dialog>
10
+ `,this.#k=this.querySelector("dialog"),this.#q()}handleAction(k,z,y){if(k==="cancel")this.cancel();else if(k==="confirm")this.confirm()}#q(){if(this.#k=this.querySelector("dialog"),!this.#k)return;this.listen(this.#k,"close",()=>{this.removeAttribute("open"),this.classList.remove("is-open","is-visible"),document.body.style.overflow=""}),this.listen(this.#k,"cancel",(k)=>{k.preventDefault(),this.cancel()}),this.listen(this.#k,"click",(k)=>{if(k.target===this.#k)this.cancel()})}update(k,z,y){if(k==="open"){if(z!==null)this.#y()}}#y(){if(!this.#k||this.#k.open)return;this.classList.add("is-open"),this.#k.showModal(),document.body.style.overflow="hidden";let k=this.querySelector(".mu-confirm__confirm");if(k)requestAnimationFrame(()=>{requestAnimationFrame(()=>k.focus())});requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.classList.add("is-visible")})})}open(){this.setAttribute("open","")}close(){if(!this.#k)return;this.classList.remove("is-visible");let k=!1,z=()=>{if(k)return;if(k=!0,this.#k&&this.#k.open)this.#k.close();this.removeAttribute("open"),this.classList.remove("is-open"),document.body.style.overflow=""},y=this.#k,A=(I)=>{if(I.target===y)y.removeEventListener("transitionend",A),z()};y.addEventListener("transitionend",A),this.setTimeout(()=>{y.removeEventListener("transitionend",A),z()},200)}confirm(){this.close(),this.emit("mu-confirm")}cancel(){this.close(),this.emit("mu-cancel")}}O("mu-confirm",P);export{U as muConfirm,P as MuConfirm};
@@ -0,0 +1 @@
1
+ import{j as i,k as n}from"./chunk-4tezav8r.js";class a extends i{static baseClass="mu-container";static observedAttributes=["size","padding","center"];render(){this.#t()}update(t,e,s){this.#t()}#t(){let t=this.attr("size","lg"),e=this.attr("padding","md"),s=this.has("center"),d={sm:"640px",md:"768px",lg:"1024px",xl:"1280px",full:"100%"},o={none:"0",sm:"8px",md:"16px",lg:"24px",xl:"32px"};if(this.style.maxWidth=d[t]||t,this.style.padding=o[e]||e,this.style.width="100%",s)this.style.marginLeft="auto",this.style.marginRight="auto"}}n("mu-container",a);export{a as MuContainer};
@@ -0,0 +1,96 @@
1
+ import{b as E}from"./chunk-mzd8jwrs.js";import{f as Z}from"./chunk-fqyb2pms.js";import{j as C}from"./chunk-4tezav8r.js";class F extends C{static get observedAttributes(){return["columns","page-size","sortable","selectable","filterable","empty-message"]}static baseClass="mu-datatable";static cssFile="datatable";constructor(){super();this._data=[],this._filteredData=[],this._columns=[],this._currentPage=1,this._sortField=null,this._sortDirection="asc",this._selectedRows=new Set,this._filterValue=""}get columns(){let z=this.getAttribute("columns");if(z)try{return JSON.parse(z)}catch(J){return console.warn("[mu-datatable] Invalid columns JSON:",J),[]}return this._columns}set columns(z){if(this._columns=Array.isArray(z)?z:[],this.isConnected)this.render()}get pageSize(){return parseInt(this.getAttribute("page-size"))||10}set pageSize(z){this.setAttribute("page-size",z)}get sortable(){return this.hasAttribute("sortable")}get selectable(){return this.hasAttribute("selectable")}get filterable(){return this.hasAttribute("filterable")}get emptyMessage(){return this.getAttribute("empty-message")||"No data available"}connectedCallback(){super.connectedCallback(),this.render()}attributeChangedCallback(z,J,G){if(this.isConnected&&J!==G)this.render()}setData(z){this._data=Array.isArray(z)?z:[],this._filteredData=[...this._data],this._currentPage=1,this._selectedRows.clear(),this._applySort(),this.render(),this.emit("mu-data-change",{data:this._data,count:this._data.length},{bubbles:!0})}getData(){return[...this._data]}getSortState(){return{field:this._sortField,direction:this._sortDirection}}getSelectedRows(){return this._data.filter((z,J)=>this._selectedRows.has(J))}getPageInfo(){let z=Math.ceil(this._filteredData.length/this.pageSize);return{page:this._currentPage,pageSize:this.pageSize,totalPages:z,totalRows:this._filteredData.length}}goToPage(z){let J=Math.ceil(this._filteredData.length/this.pageSize)||1;this._currentPage=Math.max(1,Math.min(z,J)),this.render(),this.emit("mu-page-change",this.getPageInfo(),{bubbles:!0})}sortBy(z,J){if(this._sortField===z&&!J)this._sortDirection=this._sortDirection==="asc"?"desc":"asc";else this._sortField=z,this._sortDirection=J||"asc";this._applySort(),this.render(),this.emit("mu-sort-change",this.getSortState(),{bubbles:!0})}filter(z){this._filterValue=z.toLowerCase(),this._applyFilter(),this._currentPage=1,this.render(!1)}_applySort(){if(!this._sortField)return;this._filteredData.sort((z,J)=>{let G=z[this._sortField]??"",K=J[this._sortField]??"";if(typeof G==="number"&&typeof K==="number")return this._sortDirection==="asc"?G-K:K-G;let O=String(G).toLowerCase(),Q=String(K).toLowerCase(),W=O.localeCompare(Q);return this._sortDirection==="asc"?W:-W})}_applyFilter(){if(!this._filterValue){this._filteredData=[...this._data];return}let z=this.columns.filter((G)=>G.filterable!==!1),J=z.length>0?z.map((G)=>G.field):this.columns.map((G)=>G.field);this._filteredData=this._data.filter((G)=>{return J.some((K)=>{return String(G[K]??"").toLowerCase().includes(this._filterValue)})})}_getPageData(){let z=(this._currentPage-1)*this.pageSize,J=z+this.pageSize;return this._filteredData.slice(z,J)}_handleHeaderClick(z){if(this.columns.find((G)=>G.field===z)?.sortable!==!1&&this.sortable)this.sortBy(z)}_handleRowSelect(z,J){let G=(this._currentPage-1)*this.pageSize+z;if(J)this._selectedRows.add(G);else this._selectedRows.delete(G);this.render(),this.emit("mu-selection-change",{selected:this.getSelectedRows()},{bubbles:!0})}_handleSelectAll(z){let J=this._getPageData(),G=(this._currentPage-1)*this.pageSize;J.forEach((K,O)=>{if(z)this._selectedRows.add(G+O);else this._selectedRows.delete(G+O)}),this.render(),this.emit("mu-selection-change",{selected:this.getSelectedRows()},{bubbles:!0})}render(z=!0){let J=this.columns,G=this._getPageData(),{page:K,totalPages:O,totalRows:Q}=this.getPageInfo(),W=(this._currentPage-1)*this.pageSize,_=G.length>0&&G.every((X,$)=>this._selectedRows.has(W+$)),Y=this.querySelector(".mu-datatable-table tbody"),N=this.querySelector(".mu-datatable-info"),U=this.querySelector(".mu-datatable-pagination");if(!z&&Y){if(Y.innerHTML=this._renderTbody(G,J,W,_),N)N.innerHTML=`${Q} row${Q!==1?"s":""}${this._selectedRows.size>0?` · ${this._selectedRows.size} selected`:""}`;if(U)U.innerHTML=this._renderPaginationContent(K,O,Q);else if(O>1){let X=this.querySelector(".mu-datatable-wrapper");if(X)X.insertAdjacentHTML("beforeend",this._renderPagination(K,O,Q))}this._attachEventListeners();return}this.innerHTML=`
2
+ <div class="mu-datatable-wrapper">
3
+ ${this.filterable?`
4
+ <div class="mu-datatable-toolbar">
5
+ <div class="mu-datatable-search">
6
+ <input
7
+ type="search"
8
+ placeholder="Search..."
9
+ value="${Z(this._filterValue)}"
10
+ >
11
+ </div>
12
+ <div class="mu-datatable-info">
13
+ ${Q} row${Q!==1?"s":""}
14
+ ${this._selectedRows.size>0?` · ${this._selectedRows.size} selected`:""}
15
+ </div>
16
+ </div>
17
+ `:""}
18
+
19
+ <table class="mu-datatable-table">
20
+ <thead>
21
+ <tr>
22
+ ${this.selectable?`
23
+ <th class="mu-datatable-checkbox-cell">
24
+ <input
25
+ type="checkbox"
26
+ ${_?"checked":""}
27
+ data-select-all
28
+ >
29
+ </th>
30
+ `:""}
31
+ ${J.map((X)=>{let $=X.sortable!==!1&&this.sortable,q=this._sortField===X.field,j=q?this._sortDirection==="asc"?"↑":"↓":"↕";return`
32
+ <th
33
+ class="${$?"mu-datatable-sortable":""} ${q?"mu-datatable-sorted":""}"
34
+ data-field="${Z(X.field)}"
35
+ >
36
+ ${Z(X.label||X.field)}
37
+ ${$?`<span class="mu-datatable-sort-icon">${j}</span>`:""}
38
+ </th>
39
+ `}).join("")}
40
+ </tr>
41
+ </thead>
42
+ <tbody>
43
+ ${this._renderTbody(G,J,W,_)}
44
+ </tbody>
45
+ </table>
46
+
47
+ ${this._renderPagination(K,O,Q)}
48
+ </div>
49
+ `,this._attachEventListeners()}_renderTbody(z,J,G,K){if(z.length===0)return`
50
+ <tr>
51
+ <td colspan="${J.length+(this.selectable?1:0)}" class="mu-datatable-empty-state">
52
+ ${Z(this.emptyMessage)}
53
+ </td>
54
+ </tr>
55
+ `;return z.map((O,Q)=>{let W=G+Q,_=this._selectedRows.has(W);return`
56
+ <tr class="${_?"mu-datatable-selected":""}" data-row-index="${Q}">
57
+ ${this.selectable?`
58
+ <td class="mu-datatable-checkbox-cell">
59
+ <input
60
+ type="checkbox"
61
+ ${_?"checked":""}
62
+ data-row-select="${Q}"
63
+ >
64
+ </td>
65
+ `:""}
66
+ ${J.map((Y)=>`
67
+ <td data-field="${Z(Y.field)}">
68
+ ${Y.render?Y.render(O[Y.field],O):Z(O[Y.field]??"")}
69
+ </td>
70
+ `).join("")}
71
+ </tr>
72
+ `}).join("")}_renderPagination(z,J,G){if(J<=1)return"";return`
73
+ <div class="mu-datatable-pagination">
74
+ ${this._renderPaginationContent(z,J,G)}
75
+ </div>
76
+ `}_renderPaginationContent(z,J,G){return`
77
+ <div class="mu-datatable-pagination-info">
78
+ Showing ${(z-1)*this.pageSize+1}–${Math.min(z*this.pageSize,G)} of ${G}
79
+ </div>
80
+ <div class="mu-datatable-pagination-controls">
81
+ <button class="mu-datatable-pagination-btn" data-page="prev" ${z<=1?"disabled":""}>
82
+
83
+ </button>
84
+ ${this._getPaginationButtons(z,J)}
85
+ <button class="mu-datatable-pagination-btn" data-page="next" ${z>=J?"disabled":""}>
86
+
87
+ </button>
88
+ </div>
89
+ `}_getPaginationButtons(z,J){let G=[],K=5,O=Math.max(1,z-Math.floor(2.5)),Q=Math.min(J,O+5-1);if(Q-O<4)O=Math.max(1,Q-5+1);for(let W=O;W<=Q;W++)G.push(`
90
+ <button
91
+ class="mu-datatable-pagination-btn ${W===z?"mu-datatable-pagination-btn-active":""}"
92
+ data-page="${W}"
93
+ >
94
+ ${W}
95
+ </button>
96
+ `);return G.join("")}_attachEventListeners(){this.querySelectorAll("th.mu-datatable-sortable").forEach((G)=>{this.listen(G,"click",()=>{this._handleHeaderClick(G.dataset.field)})}),this.querySelectorAll(".mu-datatable-pagination-btn[data-page]").forEach((G)=>{this.listen(G,"click",()=>{let K=G.dataset.page;if(K==="prev")this.goToPage(this._currentPage-1);else if(K==="next")this.goToPage(this._currentPage+1);else this.goToPage(parseInt(K))})}),this.querySelectorAll("[data-row-select]").forEach((G)=>{this.listen(G,"change",(K)=>{this._handleRowSelect(parseInt(G.dataset.rowSelect),K.target.checked)})});let z=this.querySelector("[data-select-all]");if(z)this.listen(z,"change",(G)=>{this._handleSelectAll(G.target.checked)});let J=this.querySelector(".mu-datatable-search input");if(J){let G=E((K)=>this.filter(K),300);this.listen(J,"input",(K)=>G(K.target.value))}}}if(!customElements.get("mu-datatable"))customElements.define("mu-datatable",F);export{F as MuDataTable};
@@ -0,0 +1 @@
1
+ import{j as t,k as s}from"./chunk-4tezav8r.js";class r extends t{static baseClass="mu-divider";static cssFile="divider";static observedAttributes=["vertical","inset"];render(){let e=this.has("vertical"),i=this.has("inset");if(this.style.display="block",this.style.background="var(--md-sys-color-outline-variant)",this.style.flexShrink="0",e)this.style.width="1px",this.style.minHeight="24px",this.style.margin=i?"0 8px":"0";else this.style.height="1px",this.style.width="100%",this.style.margin=i?"0 16px":"0"}update(e,i,d){this.render()}}s("mu-divider",r);export{r as MuDivider};
@@ -0,0 +1,26 @@
1
+ import{j as I,k as J}from"./chunk-4tezav8r.js";class K extends I{static baseClass="mu-doc-page";static observedAttributes=["title","selector","description"];#h=0;connectedCallback(){super.connectedCallback(),requestAnimationFrame(()=>this.#k())}render(){let h=this.attr("title","Component"),k=this.attr("selector",""),A=this.attr("description",""),q=this.querySelector('[slot="overview"]'),z=this.querySelector('[slot="api"]'),B=this.querySelector('[slot="styling"]'),F=this.querySelector('[slot="examples"]'),N=q?q.innerHTML:"",O=z?z.innerHTML:"",Q=B?B.innerHTML:"",R=F?F.innerHTML:"";this.innerHTML=`
2
+ <h1 class="page-title">${h}</h1>
3
+ <p class="page-subtitle">
4
+ ${k?`<code>&lt;${k}&gt;</code> `:""}${A}
5
+ </p>
6
+
7
+ <mu-tabs active="0" class="mu-doc-page__tabs" style="margin-bottom: 24px;">
8
+ <mu-tab>OVERVIEW</mu-tab>
9
+ <mu-tab>API</mu-tab>
10
+ <mu-tab>STYLING</mu-tab>
11
+ <mu-tab>EXAMPLES</mu-tab>
12
+ </mu-tabs>
13
+
14
+ <div class="mu-doc-page__content mu-doc-page__overview">
15
+ ${N}
16
+ </div>
17
+ <div class="mu-doc-page__content mu-doc-page__api" style="display: none;">
18
+ ${O}
19
+ </div>
20
+ <div class="mu-doc-page__content mu-doc-page__styling" style="display: none;">
21
+ ${Q}
22
+ </div>
23
+ <div class="mu-doc-page__content mu-doc-page__examples" style="display: none;">
24
+ ${R}
25
+ </div>
26
+ `,this.style.display="block"}#k(){let h=this.querySelector(".mu-doc-page__tabs"),k=this.querySelectorAll(".mu-doc-page__content");if(h)this.listen(h,"mu-tab-change",(A)=>{this.#h=A.detail.index,k.forEach((q,z)=>{q.style.display=z===this.#h?"block":"none"})})}}J("mu-doc-page",K);export{K as MuDocPage};
@@ -0,0 +1,9 @@
1
+ import{f as z}from"./chunk-fqyb2pms.js";import{j as J}from"./chunk-4tezav8r.js";import"./mu-icon.js";class F extends J{static get observedAttributes(){return["icon","href","active","badge","disabled","layout","label"]}static baseClass="mu-drawer-item";static cssFile="drawer-item";constructor(){super();this._capturedLabel="";let k=Array.from(this.childNodes).filter((q)=>q.nodeType===Node.TEXT_NODE).map((q)=>q.textContent.trim()).join("").trim();if(k)this._capturedLabel=k}get icon(){return this.getAttribute("icon")||""}set icon(k){this.setAttribute("icon",k)}get href(){return this.getAttribute("href")||""}set href(k){this.setAttribute("href",k)}get active(){return this.hasAttribute("active")}set active(k){this.toggleAttribute("active",Boolean(k))}get badge(){return this.getAttribute("badge")}set badge(k){k?this.setAttribute("badge",k):this.removeAttribute("badge")}get disabled(){return this.hasAttribute("disabled")}set disabled(k){this.toggleAttribute("disabled",Boolean(k))}get layout(){return this.getAttribute("layout")||"horizontal"}set layout(k){this.setAttribute("layout",k)}get label(){return this.getAttribute("label")||this._capturedLabel||""}set label(k){this.setAttribute("label",k)}connectedCallback(){if(!this._capturedLabel&&this.hasAttribute("label"))this._capturedLabel=this.getAttribute("label");if(!this._capturedLabel&&!this.hasAttribute("label")){if(this._capturedLabel=this.textContent.trim(),this._capturedLabel)this.setAttribute("label",this._capturedLabel)}super.connectedCallback(),this._setupListeners(),this.setAttribute("tabindex","0"),this.setAttribute("role","menuitem"),this.setupActivation(()=>this._handleClick(new MouseEvent("click")))}attributeChangedCallback(k,q,B){if(q!==B&&this.isConnected)this.render()}_setupListeners(){this.listen(this,"click",this._handleClick.bind(this))}_handleClick(k){if(this.disabled){k.preventDefault();return}if(this.href){if(this.href.startsWith("#"))k.preventDefault(),window.location.hash=this.href}this.emit("mu-nav-select",{href:this.href,item:this},{bubbles:!0,composed:!0})}render(){let k=z(this.label),q=k.length>0,B=this.badge?`<span class="mu-drawer-item-badge">${z(this.badge)}</span>`:"",G=this.href?"a":"button",K=this.href?`href="${z(this.href)}"`:"",N=this.disabled?this.href?'aria-disabled="true"':"disabled":"",O=k?`aria-label="${k}"`:"";this.innerHTML=`
2
+ <${G} class="mu-drawer-item-link" ${K} ${N} ${O}>
3
+ <span class="mu-drawer-item-icon">
4
+ <mu-icon name="${z(this.icon)}" size="24"></mu-icon>
5
+ </span>
6
+ ${q?`<span class="mu-drawer-item-label" aria-hidden="true">${k}</span>`:""}
7
+ ${B}
8
+ </${G}>
9
+ `}}if(!customElements.get("mu-drawer-item"))customElements.define("mu-drawer-item",F);if(!customElements.get("mu-nav-item"))customElements.define("mu-nav-item",class extends F{connectedCallback(){if(!this.hasAttribute("layout"))this.setAttribute("layout","vertical");super.connectedCallback()}});export{F as MuNavItem,F as MuDrawerItem};
@@ -0,0 +1 @@
1
+ import{d as L}from"./chunk-qwmxyn8e.js";import{j as P}from"./chunk-4tezav8r.js";class N{#B=[];#G=!1;constructor(){this.#H()}#H(){if(this.#G||typeof window>"u")return;document.addEventListener("keydown",(B)=>{if(B.key==="Escape"&&this.#B.length>0)B.preventDefault(),B.stopPropagation(),this.#B[this.#B.length-1].callback()}),this.#G=!0}pushEscapeHandler(B,G){let H={element:B,callback:G};return this.#B.push(H),()=>{let J=this.#B.indexOf(H);if(J>-1)this.#B.splice(J,1)}}isTopmost(B){if(this.#B.length===0)return!1;return this.#B[this.#B.length-1].element===B}get stackDepth(){return this.#B.length}}var O=new N;class Q extends P{static get observedAttributes(){return["mode","open","expand-on-hover","position"]}static baseClass="mu-drawer";static cssFile="drawer";constructor(){super();this._currentMode="expanded",this._isHovering=!1,this._unsubscribe=null}get mode(){return this.getAttribute("mode")||"auto"}set mode(B){this.setAttribute("mode",B)}get open(){return this.hasAttribute("open")}set open(B){this.toggleAttribute("open",Boolean(B))}get expandOnHover(){return this.hasAttribute("expand-on-hover")}set expandOnHover(B){this.toggleAttribute("expand-on-hover",Boolean(B))}get position(){return this.getAttribute("position")||"start"}set position(B){this.setAttribute("position",B)}connectedCallback(){if(!this._slotsCaptured)this._slots={header:this.querySelector('[slot="header"]'),footer:this.querySelector('[slot="footer"]'),default:Array.from(this.children).filter((B)=>!B.hasAttribute("slot"))},this._slotsCaptured=!0;super.connectedCallback(),this._setupBreakpointListener(),this._setupListeners(),this._forceUpdateMode()}_getInitialMode(){let B=this.mode,G=L.isCompact,H=L.isMedium;if(B==="permanent")return"expanded";else if(B==="temporary")return"hidden";else if(B==="rail")return G?"hidden":"rail";else if(G)return"hidden";else if(H)return"rail";else return"expanded"}_forceUpdateMode(){this._currentMode=this._getInitialMode(),this._applyMode()}disconnectedCallback(){if(super.disconnectedCallback(),this._unsubscribe)this._unsubscribe(),this._unsubscribe=null;this._unsubEsc?.(),this._unsubEsc=null}attributeChangedCallback(B,G,H){if(!this.isConnected)return;if(B==="open")this._updateOpenState();else if(B==="mode")this._updateMode()}_setupBreakpointListener(){this._unsubscribe=L.subscribe(()=>{this._updateMode()})}_updateMode(){let B=this.mode,G=L.isCompact,H=L.isMedium,J;if(B==="permanent")J="expanded";else if(B==="temporary")J="hidden";else if(B==="rail")J=G?"hidden":"rail";else if(G)J="hidden";else if(H)J="rail";else J="expanded";if(J!==this._currentMode)this._currentMode=J,this._applyMode()}_applyMode(){let B=this.querySelector(".mu-drawer-nav");if(!B)return;if(B.classList.remove("mu-drawer-mode-expanded","mu-drawer-mode-rail","mu-drawer-mode-hidden"),B.classList.add(`mu-drawer-mode-${this._currentMode}`),this.querySelectorAll("mu-drawer-item").forEach((H)=>{if(this._currentMode==="rail"&&!this._isHovering)H.setAttribute("hide-label","");else H.removeAttribute("hide-label")}),this._currentMode==="hidden"&&!this.open)this._hideScrim()}_setupListeners(){let B=this.querySelector(".mu-drawer-scrim");if(B)this.listen(B,"click",()=>{this.open=!1});let G=this.querySelector(".mu-drawer-nav");if(G&&this.expandOnHover)this.listen(G,"mouseenter",()=>{if(this._currentMode==="rail")this._isHovering=!0,G.classList.add("mu-drawer-expanded-hover"),this._applyMode()}),this.listen(G,"mouseleave",()=>{if(this._currentMode==="rail")this._isHovering=!1,G.classList.remove("mu-drawer-expanded-hover"),this._applyMode()});this.listen(this,"mu-nav-select",(H)=>{if(this._currentMode==="hidden"&&this.open)this.open=!1;this._updateActiveItem(H.detail.item)}),this._unsubEsc=null}_updateActiveItem(B){this.querySelectorAll("mu-drawer-item").forEach((H)=>{H.active=H===B})}_updateOpenState(){let B=this.querySelector(".mu-drawer-nav");if(this.open){if(B?.classList.add("mu-drawer-open"),this._currentMode==="hidden")this._showScrim(),this._unsubEsc=O.pushEscapeHandler(this,()=>{this.open=!1})}else B?.classList.remove("mu-drawer-open"),this._hideScrim(),this._unsubEsc?.(),this._unsubEsc=null}_showScrim(){let B=this.querySelector(".mu-drawer-scrim");if(B)B.classList.add("mu-drawer-scrim-visible")}_hideScrim(){let B=this.querySelector(".mu-drawer-scrim");if(B)B.classList.remove("mu-drawer-scrim-visible")}toggle(){this.open=!this.open}render(){this.innerHTML="";let B=document.createElement("div");B.className="mu-drawer-scrim",this.appendChild(B);let G=document.createElement("nav");G.className=`mu-drawer-nav mu-drawer-mode-${this._getInitialMode()}`,G.setAttribute("role","navigation");let H=document.createElement("div");if(H.className="mu-drawer-header",this._slots.header)H.appendChild(this._slots.header);G.appendChild(H);let J=document.createElement("div");if(J.className="mu-drawer-content",J.setAttribute("role","menu"),this._slots.default)this._slots.default.forEach((T)=>J.appendChild(T));if(G.appendChild(J),this._slots.footer)G.appendChild(this._slots.footer);this.appendChild(G)}}if(!customElements.get("mu-drawer"))customElements.define("mu-drawer",Q);export{Q as MuDrawer};
@@ -0,0 +1,6 @@
1
+ import{f as Q}from"./chunk-fqyb2pms.js";import{j as G,k as J}from"./chunk-4tezav8r.js";class S extends G{static baseClass="mu-dropdown";static cssFile="input";static observedAttributes=["placeholder","value","disabled"];#k=null;#q=null;#z=[];connectedCallback(){super.connectedCallback(),this.listen(window,"scroll",()=>this.#B(),{capture:!0,passive:!0}),this.listen(window,"resize",()=>this.#B(),{passive:!0})}disconnectedCallback(){super.disconnectedCallback(),this.#k?.remove()}render(){if(this.querySelector(".mu-dropdown__trigger")&&this.#k)return;requestAnimationFrame(()=>this.#C())}#C(){if(this.querySelector(".mu-dropdown__trigger")&&this.#k)return;let k=this.getAttribute("placeholder")||"Select",z=this.querySelectorAll("mu-option");this.#z=Array.from(z).map((q)=>({value:q.getAttribute("value")||q.textContent.trim(),label:q.textContent.trim()})),this.#q=document.createElement("button"),this.#q.className="mu-dropdown__trigger",this.#q.type="button";let F=Q(k),B=`mu-dropdown-menu-${Math.random().toString(36).slice(2,9)}`;this.#q.setAttribute("aria-haspopup","listbox"),this.#q.setAttribute("aria-expanded","false"),this.#q.setAttribute("aria-label",F),this.#q.setAttribute("popovertarget",B),this.#q.innerHTML=`
2
+ <span class="mu-dropdown__value">${F}</span>
3
+ <svg class="mu-dropdown__arrow" width="10" height="6" viewBox="0 0 10 6" fill="none" stroke="currentColor" stroke-width="1.5">
4
+ <path d="M1 1l4 4 4-4"/>
5
+ </svg>
6
+ `,this.listen(this.#q,"keydown",(q)=>{if(!this.hasAttribute("disabled")){if(q.key==="ArrowDown"||q.key==="Enter"||q.key===" ")q.preventDefault(),this.open()}}),this.innerHTML="",this.appendChild(this.#q),this.#k=document.createElement("div"),this.#k.id=B,this.#k.className="mu-dropdown__menu",this.#k.setAttribute("popover","auto"),this.#k.setAttribute("role","listbox"),this.#k.tabIndex=-1,this.listen(this.#k,"toggle",(q)=>{if(q.newState==="open")this.classList.add("is-open"),this.#q?.setAttribute("aria-expanded","true"),this.#B(),requestAnimationFrame(()=>{let C=this.getAttribute("value");(C?this.#k.querySelector(`[data-value="${C}"]`):this.#k.firstChild)?.focus()});else this.classList.remove("is-open"),this.#q?.setAttribute("aria-expanded","false")}),this.listen(this.#k,"keydown",(q)=>this.#F(q)),this.#z.forEach((q)=>{let C=document.createElement("div");C.className="mu-dropdown__option",C.setAttribute("data-value",q.value),C.textContent=q.label,C.setAttribute("role","option"),C.tabIndex=-1,this.listen(C,"click",()=>this.select(q.value,q.label)),this.#k.appendChild(C)}),this.appendChild(this.#k)}#F(k){let z=Array.from(this.#k.querySelectorAll(".mu-dropdown__option")),F=document.activeElement,B=z.indexOf(F);if(k.key==="ArrowDown")k.preventDefault(),(z[B+1]||z[0])?.focus();else if(k.key==="ArrowUp")k.preventDefault(),(z[B-1]||z[z.length-1])?.focus();else if(k.key==="Enter"||k.key===" "){if(k.preventDefault(),B>=0){let q=this.#z[B];this.select(q.value,q.label)}}else if(k.key==="Escape")k.preventDefault(),this.close(),this.#q?.focus()}#B(){if(!this.#k||!this.#q)return;let k=this.#q.getBoundingClientRect(),z=this.#k.scrollHeight||200,q=window.innerHeight-k.bottom-8<z&&k.top>z?k.top-z-4:k.bottom+4;Object.assign(this.#k.style,{position:"fixed",margin:"0",top:`${q}px`,left:`${k.left}px`,width:`${k.width}px`,minWidth:"160px",maxHeight:"280px"})}toggle(){if(this.#k?.matches(":popover-open"))this.close();else this.open()}open(){if(this.hasAttribute("disabled")||!this.#k)return;this.#k.showPopover()}close(){if(this.#k?.matches(":popover-open"))this.#k.hidePopover()}select(k,z){let F=this.querySelector(".mu-dropdown__value");if(F)F.textContent=z;this.setAttribute("value",k),this.#k?.querySelectorAll(".mu-dropdown__option").forEach((B)=>B.classList.toggle("is-active",B.getAttribute("data-value")===k)),this.emit("mu-select",{value:k,label:z}),this.close()}get value(){return this.getAttribute("value")||""}set value(k){this.setAttribute("value",k)}}class U extends G{static baseClass="mu-dropdown__option";connectedCallback(){super.connectedCallback(),this.setAttribute("role","option")}render(){}}J("mu-dropdown",S);J("mu-option",U);export{U as MuOption,S as MuDropdown};
@@ -0,0 +1,10 @@
1
+ import{j as D,k as I}from"./chunk-4tezav8r.js";var z=[];function O(){return[...z]}function P(){z.length=0}class J extends D{static baseClass="mu-error-boundary";static observedAttributes=["fallback"];#q=!1;#w=null;#x="";connectedCallback(){super.connectedCallback(),this.#x=this.innerHTML,this.listen(this,"error",this.#z.bind(this)),this.#A()}#A(){let q=window.onerror;window.onerror=(w,x,K,L,A)=>{if(this.#D(A))return this.#z({detail:{error:A,message:w}}),!0;if(q)return q(w,x,K,L,A);return!1}}#D(q){if(!q?.stack)return!1;return Array.from(this.querySelectorAll("*")).filter((x)=>x.tagName.startsWith("MU-")).map((x)=>x.tagName.toLowerCase()).some((x)=>q.stack.includes(x))}#z(q){let w=q?.detail?.error||q?.error||q;if(this.#q)return;if(this.#q=!0,this.#w=w,z.push({timestamp:Date.now(),component:this.id||"mu-error-boundary",error:{message:w?.message||String(w),stack:w?.stack,name:w?.name},context:{originalContent:this.#x.slice(0,200),parentUrl:window.location.href}}),z.length>50)z.shift();this.#I(),this.emit("mu-error",{error:w,boundary:this,recover:()=>this.recover()}),q?.stopPropagation?.()}#I(){let q=this.getAttribute("fallback");if(q)this.innerHTML=q;else this.innerHTML=`
2
+ <div class="mu-error-boundary__fallback" role="alert" aria-live="polite">
3
+ <mu-icon name="error" style="--mu-icon-size: 48px; color: var(--md-sys-color-error);"></mu-icon>
4
+ <p class="mu-error-boundary__title">Something went wrong</p>
5
+ <p class="mu-error-boundary__message">${this.#w?.message||"An unexpected error occurred"}</p>
6
+ <mu-button variant="outlined" onclick="this.closest('mu-error-boundary').recover()">
7
+ Try Again
8
+ </mu-button>
9
+ </div>
10
+ `;this.classList.add("has-error")}render(){this.style.display="block"}recover(){this.#q=!1,this.#w=null,this.classList.remove("has-error"),this.innerHTML=this.#x,this.emit("mu-recover")}get hasError(){return this.#q}get error(){return this.#w}}I("mu-error-boundary",J);export{O as getErrors,P as clearErrors,J as MuErrorBoundary};
@@ -0,0 +1,38 @@
1
+ import{f as $}from"./chunk-fqyb2pms.js";import{j as Z,k as _}from"./chunk-4tezav8r.js";class v extends Z{static baseClass="mu-example";static observedAttributes=["title"];#q=!1;render(){let J=this.attr("title","Example"),A=this.querySelector('[slot="demo"]'),D=this.querySelector('[slot="code"]'),G=A?A.innerHTML:"",P=D?D.textContent:A?A.innerHTML:"";if(A)A.remove();if(D)D.remove();let F=this.#A(P),U=$(F);this.innerHTML=`
2
+ <div class="mu-example__card">
3
+ <div class="mu-example__header">
4
+ <span class="mu-example__title">${J}</span>
5
+ <div class="mu-example__actions">
6
+ <button class="mu-example__btn" data-action="link" title="Copy link">
7
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
8
+ <path d="M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71"/>
9
+ <path d="M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71"/>
10
+ </svg>
11
+ </button>
12
+ <button class="mu-example__btn" data-action="code" title="View source">
13
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
14
+ <polyline points="16 18 22 12 16 6"/>
15
+ <polyline points="8 6 2 12 8 18"/>
16
+ </svg>
17
+ </button>
18
+ </div>
19
+ </div>
20
+ <div class="mu-example__demo">
21
+ ${G}
22
+ </div>
23
+ <div class="mu-example__code" style="display: none;">
24
+ <mu-code language="html">${U}</mu-code>
25
+ </div>
26
+ </div>
27
+ `,this.#D()}#A(J){let A=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),D=new Set(["a","abbr","b","bdo","br","cite","code","dfn","em","i","kbd","q","s","samp","small","span","strong","sub","sup","u","var"]),G="",P=0,F=" ",K=J.replace(/>\s+</g,"><").replace(/\s+/g," ").trim().split(/(<[^>]+>)/g).filter((Q)=>Q.trim());for(let Q=0;Q<K.length;Q++){let q=K[Q].trim();if(!q)continue;let V=q.startsWith("<"),W=q.startsWith("</"),z=q.endsWith("/>")||V&&A.has(q.match(/<\/?(\w+)/)?.[1]?.toLowerCase());if(W)P=Math.max(0,P-1);let X=V?q.match(/<\/?(\w+)/)?.[1]?.toLowerCase():null,Y=X&&D.has(X);if(V)if(!Y||W){if(G&&!G.endsWith(`
28
+ `))G+=`
29
+ `;G+=F.repeat(P)+q}else G+=q;else G+=q;if(V&&!W&&!z&&!Y)P++}return G.trim()}#D(){this.style.display="block",this.style.marginBottom="24px";let J=this.querySelector(".mu-example__card");if(J)J.style.background="var(--md-sys-color-surface)",J.style.border="1px solid var(--md-sys-color-outline-variant)",J.style.borderRadius="var(--md-sys-shape-corner-large)";let A=this.querySelector(".mu-example__header");if(A)A.style.display="flex",A.style.justifyContent="space-between",A.style.alignItems="center",A.style.padding="12px 16px",A.style.borderBottom="1px solid var(--md-sys-color-outline-variant)",A.style.background="var(--md-sys-color-surface-container-low)",A.style.borderRadius="var(--md-sys-shape-corner-large) var(--md-sys-shape-corner-large) 0 0";let D=this.querySelector(".mu-example__title");if(D)D.style.fontWeight="500",D.style.fontSize="var(--md-sys-typescale-title-small-size)",D.style.color="var(--md-sys-color-on-surface)",D.style.minWidth="0",D.style.overflow="hidden",D.style.textOverflow="ellipsis",D.style.whiteSpace="nowrap";let G=this.querySelector(".mu-example__actions");if(G)G.style.display="flex",G.style.gap="4px";this.querySelectorAll(".mu-example__btn").forEach((q)=>{q.style.background="transparent",q.style.border="none",q.style.cursor="pointer",q.style.padding="8px",q.style.borderRadius="50%",q.style.color="var(--md-sys-color-on-surface-variant)",q.style.display="flex",q.style.alignItems="center",q.style.justifyContent="center",q.style.transition="all 0.2s ease"});let F=this.querySelector(".mu-example__demo");if(F){F.style.boxSizing="border-box",F.style.width="100%",F.style.maxWidth="100%",F.style.padding="24px",F.style.display="flex",F.style.flexWrap="wrap",F.style.gap="16px",F.style.alignItems="center",F.style.justifyContent="flex-start";let q=new Set(["MU-STACK","MU-GRID","MU-LAYOUT"]);Array.from(F.children).forEach((V)=>{if(!q.has(V.tagName))V.style.flexShrink="0"})}let U=this.querySelector(".mu-example__code");if(U)U.style.borderTop="1px solid var(--md-sys-color-outline-variant)";let K=this.querySelector(".mu-example__code mu-code");if(K){K.style.borderTopLeftRadius="0",K.style.borderTopRightRadius="0",K.style.maxHeight="400px",K.style.overflow="auto";let q=K.querySelector(".mu-code__header");if(q)q.style.borderRadius="0"}let Q=document.createElement("style");if(Q.textContent=`
30
+ .mu-example__btn:hover {
31
+ background: var(--md-sys-color-surface-container-high) !important;
32
+ color: var(--md-sys-color-primary) !important;
33
+ }
34
+ .mu-example__btn.active {
35
+ background: var(--md-sys-color-primary-container) !important;
36
+ color: var(--md-sys-color-on-primary-container) !important;
37
+ }
38
+ `,!document.querySelector("#mu-example-styles"))Q.id="mu-example-styles",document.head.appendChild(Q)}handleAction(J,A,D){if(J==="code"){let G=this.querySelector(".mu-example__code");if(G){if(this.#q=!this.#q,G.style.display=this.#q?"block":"none",A.classList.toggle("active",this.#q),this.#q)requestAnimationFrame(()=>{requestAnimationFrame(()=>{let P=this.closest(".mu-layout-main")||document.querySelector(".mu-layout-main")||document.documentElement,F=G.getBoundingClientRect(),U=P.getBoundingClientRect?.()||{top:0,bottom:window.innerHeight};if(F.bottom>U.bottom){let K=F.bottom-U.bottom+20;P.scrollBy({top:K,behavior:"smooth"})}})})}}else if(J==="link")this.#F(A)}async#F(J){let A=window.location.href;try{await navigator.clipboard.writeText(A),J.style.color="var(--md-sys-color-primary)",this.setTimeout(()=>{J.style.color=""},2000)}catch(D){console.error("Copy failed:",D)}}}_("mu-example",v);export{v as MuExample};
@@ -0,0 +1 @@
1
+ import{j as G,k as H}from"./chunk-4tezav8r.js";class K extends G{static baseClass="mu-fetch";static observedAttributes=["url","method","auto","interval"];state="idle";data=null;error=null;_controller=null;_intervalId=null;connectedCallback(){if(this._loadingTemplate=this.querySelector('template[slot="loading"]')?.innerHTML||"<mu-spinner></mu-spinner>",this._errorTemplate=this.querySelector('template[slot="error"]')?.innerHTML||'<mu-alert variant="error">Error loading data</mu-alert>',this._emptyTemplate=this.querySelector('template[slot="empty"]')?.innerHTML||"<p>No data</p>",super.connectedCallback(),this.has("auto")||this.hasAttribute("url"))this.fetch();let x=parseInt(this.attr("interval","0"));if(x>0)this.setInterval(()=>this.fetch(),x)}render(){switch(this.innerHTML="",this.state){case"loading":let x=document.createElement("div");x.className="mu-fetch__loading",x.innerHTML=this._loadingTemplate,this.appendChild(x);break;case"error":let z=document.createElement("div");z.className="mu-fetch__error";let A=this.error?.message||"Unknown error";if(this._errorTemplate&&this._errorTemplate.includes("${error}"))z.textContent=`Error: ${A}`;else{let q=document.createElement("mu-alert");q.setAttribute("variant","error"),q.textContent=A,z.appendChild(q)}this.appendChild(z);break;case"success":if(!this.data||Array.isArray(this.data)&&this.data.length===0){let q=document.createElement("div");q.className="mu-fetch__empty",q.innerHTML=this._emptyTemplate,this.appendChild(q)}else{let q=document.createElement("div");if(q.className="mu-fetch__data",this.renderItem&&Array.isArray(this.data))this.data.forEach((D)=>{let B=this.renderItem(D);if(B instanceof Node)q.appendChild(B);else{let L=document.createElement("div");L.innerHTML=B,q.insertAdjacentHTML("beforeend",B)}});else{let D=document.createElement("slot");D.name="data",q.appendChild(D),this.emit("mu-data",{data:this.data})}this.appendChild(q)}break}}async fetch(x={}){let z=this.attr("url","");if(!z)return console.warn("mu-fetch: No URL provided"),null;if(this._controller)this._controller.abort();this._controller=new AbortController,this.state="loading",this.error=null,this.render(),this.emit("mu-loading");try{let A=this.attr("method","GET"),q=await fetch(z,{method:A,signal:this._controller.signal,headers:{"Content-Type":"application/json",...x.headers},...x});if(!q.ok){let D=`HTTP ${q.status}: ${q.statusText}`;try{let B=await q.json();if(B.message)D=B.message}catch(B){}throw Error(D)}return this.data=await q.json(),this.state="success",this.render(),this.emit("mu-success",{data:this.data}),this.data}catch(A){if(A.name==="AbortError")return null;return this.error=A,this.state="error",this.render(),this.emit("mu-error",{error:this.error}),null}}refetch(){return this.fetch()}set renderItem(x){this._renderItem=x}get renderItem(){return this._renderItem}update(x,z,A){if(x==="url"&&z!==A)this.fetch()}disconnectedCallback(){if(super.disconnectedCallback(),this._controller)this._controller.abort()}}H("mu-fetch",K);export{K as MuFetch};
@@ -0,0 +1 @@
1
+ import{j as v,k as w}from"./chunk-4tezav8r.js";class x extends v{static baseClass="mu-form";static observedAttributes=["action","method"];connectedCallback(){super.connectedCallback(),this.listen(this,"submit",(k)=>{k.preventDefault(),this.#k()}),this.listen(this,"keydown",(k)=>{if(k.key==="Enter"&&k.target.matches("input"))k.preventDefault(),this.#k()})}render(){if(this.setAttribute("role","form"),this.hasAttribute("debug"))requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!this.querySelector("mu-input, mu-button, mu-select, mu-textarea, input, button, select, textarea"))this.logError("EMPTY_FORM","Form appears to be empty. Add input controls.")})})}#k(){let k=this.getFormData(),q=this.validate();if(q)this.emit("mu-submit",{data:k,isValid:q});else this.emit("mu-invalid",{data:k,errors:this.#q()})}getFormData(){let k={};return this.querySelectorAll("mu-input[name]").forEach((q)=>{k[q.getAttribute("name")]=q.value}),this.querySelectorAll("input[name], select[name], textarea[name]").forEach((q)=>{if(q.type==="checkbox")k[q.name]=q.checked;else k[q.name]=q.value}),k}validate(){let k=!0;return this.querySelectorAll("[required]").forEach((q)=>{if(!(q.value||q.getAttribute("value")||"").trim())q.classList.add("is-invalid"),k=!1;else q.classList.remove("is-invalid")}),k}#q(){let k=[];return this.querySelectorAll(".is-invalid").forEach((q)=>{k.push({name:q.getAttribute("name"),message:"This field is required"})}),k}reset(){this.querySelectorAll("mu-input").forEach((k)=>{k.value=""}),this.querySelectorAll("input, select, textarea").forEach((k)=>{k.value=""}),this.querySelectorAll(".is-invalid").forEach((k)=>{k.classList.remove("is-invalid")}),this.emit("mu-reset")}}w("mu-form",x);export{x as MuForm};
@@ -0,0 +1 @@
1
+ import{j as q,k as x}from"./chunk-4tezav8r.js";class z extends q{static baseClass="mu-grid";static cssFile="grid";static observedAttributes=["cols","rows","gap","align"];render(){this.#b()}update(h,b,k){this.#b()}#b(){let h=this.attr("cols","1"),b=this.attr("rows",""),k=this.attr("gap","md"),A=this.attr("align","stretch"),B={none:"0",xs:"4px",sm:"8px",md:"16px",lg:"24px",xl:"32px"};if(this.style.display="grid",this.style.gridTemplateColumns=h.includes("fr")||h.includes("px")?h:`repeat(${h}, 1fr)`,b)this.style.gridTemplateRows=b.includes("fr")||b.includes("px")?b:`repeat(${b}, 1fr)`;this.style.gap=B[k]||k,this.style.alignItems=A}}x("mu-grid",z);export{z as MuGrid};
@@ -0,0 +1,5 @@
1
+ import{j as Q,k as R}from"./chunk-4tezav8r.js";var D={check:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z",close:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z",add:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z",remove:"M19 13H5v-2h14z",edit:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75z",delete:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z",search:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z",menu:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z",chevron_right:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z",chevron_left:"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z",expand_more:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z",expand_less:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",home:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z",arrow_back:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z",arrow_forward:"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z",info:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2zm0-8h-2V7h2z",warning:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z",error:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2zm0-4h-2V7h2z",check_circle:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z",cancel:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12z",success:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z",settings:"M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z",person:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z",light_mode:"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5M2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1m18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1M11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1m0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1M5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41zm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0z",dark_mode:"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1z",visibility:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3",visibility_off:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z",download:"M5 20h14v-2H5v2zM19 9h-4V3H9v6H5l7 7 7-7z",smart_button:"M22 9v6c0 1.1-.9 2-2 2h-1v-2h1V9H4v6h6v2H4c-1.1 0-2-.9-2-2V9c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2zm-7.5 11 1.09-2.41L18 16.5l-2.41-1.09L14.5 13l-1.09 2.41L11 16.5l2.41 1.09L14.5 20zm2.5-5 .62-1.38L19 14l-1.38-.62L17 12l-.62 1.38L15 14l1.38.62L17 16zm-2.5 5 1.09-2.41L18 16.5l-2.41-1.09L14.5 13l-1.09 2.41L11 16.5l2.41 1.09L14.5 20z",text_fields:"M2.5 4v3h5v12h3V7h5V4h-13zm19 5h-9v3h3v7h3v-7h3V9z",check_box:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z",toggle_on:"M17 7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h10c2.76 0 5-2.24 5-5s-2.24-5-5-5zm0 8c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z",radio_button_checked:"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z",arrow_drop_down_circle:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 12-4-4h8l-4 4z",view_carousel:"M7 19h10V4H7v15zm-5-2h4V6H2v11zM18 6v11h4V6h-4z",grid_view:"M3 3v8h8V3H3zm6 6H5V5h4v4zm-6 4v8h8v-8H3zm6 6H5v-4h4v4zm4-16v8h8V3h-8zm6 6h-4V5h4v4zm-6 4v8h8v-8h-8zm6 6h-4v-4h4v4z",tab:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h10v4h8v10z",notifications:"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z",open_in_new:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z",hourglass_empty:"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5-4-4V4h8v3.5l-4 4z",account_circle:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 4c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6zm0 14c-2.03 0-4.43-.82-6.14-2.88C7.55 15.8 9.68 15 12 15s4.45.8 6.14 2.12C16.43 19.18 14.03 20 12 20z",fiber_manual_record:"M12 12m-8 0a8 8 0 1 0 16 0 8 8 0 1 0-16 0",label:"M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z",emoji_emotions:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z",business:"M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z",input:"M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4.01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14c0-1.11-.9-2-2-2zM11 16l4-4-4-4v3H1v2h10v3z",category:"M12 2l-5.5 9h11L12 2zm0 3.84L13.93 9h-3.87L12 5.84zM17.5 13c-2.49 0-4.5 2.01-4.5 4.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5-2.01-4.5-4.5-4.5zm0 7c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5zM3 21.5h8v-8H3v8zm2-6h4v4H5v-4z",widgets:"M13 13v8h8v-8h-8zM3 21h8v-8H3v8zM3 3v8h8V3H3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66-5.66-5.65z",smart_toy:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3zM7.5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S9.83 13 9 13s-1.5-.67-1.5-1.5zM16 17H8v-2h8v2zm-1-4c-.83 0-1.5-.67-1.5-1.5S14.17 10 15 10s1.5.67 1.5 1.5S15.83 13 15 13z",notification_important:"M18 16v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-6 6c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm1-15.06c1.77.52 3 2.14 3 4.06v5.5l1 1v.5H7v-.5l1-1V11c0-1.92 1.23-3.54 3-4.06V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v.94zM13 11h-2v6h2v-6zm0-4h-2v2h2V7z",folder_managed:"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-2.06 11L15 15.28 12.06 17l.78-3.33-2.59-2.24 3.41-.29L15 8l1.34 3.14 3.41.29-2.59 2.24.78 3.33z",shield:"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z",apps:"M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z",monitoring:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7 12h2v5H7v-5zm4-3h2v8h-2V9zm4-3h2v11h-2V6z"},q={check:"check",close:"close",add:"add",remove:"remove",edit:"edit",delete:"delete",search:"search",menu:"menu",chevron_right:"chevron_right",chevron_left:"chevron_left",expand_more:"expand_more",expand_less:"expand_less",home:"home",arrow_back:"arrow_back",arrow_forward:"arrow_forward",info:"info",warning:"warning",error:"error",success:"check_circle",check_circle:"check_circle",cancel:"cancel",settings:"settings",person:"person",light_mode:"light_mode",dark_mode:"dark_mode",sun:"light_mode",moon:"dark_mode",user:"person",visibility:"visibility",visibility_off:"visibility_off",download:"download",smart_button:"smart_button",text_fields:"text_fields",check_box:"check_box",toggle_on:"toggle_on",radio_button_checked:"radio_button_checked",arrow_drop_down_circle:"arrow_drop_down_circle",view_carousel:"view_carousel",grid_view:"grid_view",tab:"tab",notifications:"notifications",open_in_new:"open_in_new",hourglass_empty:"hourglass_empty",account_circle:"account_circle",fiber_manual_record:"fiber_manual_record",label:"label",emoji_emotions:"emoji_emotions",business:"business",input:"input",category:"category",widgets:"widgets",smart_toy:"smart_toy",notification_important:"notification_important",folder_managed:"folder_managed",shield:"shield",apps:"apps",monitoring:"monitoring",plus:"add",minus:"remove"};class T extends Q{static baseClass="mu-icon";static cssFile="icon";static observedAttributes=["name","size","svg","filled","font"];render(){let k=this.attr("name","info"),w=this.attr("size","24"),J=this.has("font"),U=this.has("filled");this.setAttribute("role","img"),this.setAttribute("aria-hidden","true");let X=q[k]?k:k,K=D[k]||D[q[k]];if(!J&&K){this.innerHTML=`
2
+ <svg width="${w}" height="${w}" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
3
+ <path d="${K}"></path>
4
+ </svg>
5
+ `;return}let W=q[k]||k;if(!q[k]&&!D[k])this.logError("UNKNOWN_ICON",`Icon name "${k}" not found in predefined icons. Using font fallback.`);this.innerHTML=`<span class="material-symbols-outlined" aria-hidden="true">${W}</span>`;let H=this.querySelector("span");if(H){if(H.style.fontSize=`${w}px`,U)H.style.fontVariationSettings="'FILL' 1"}}update(k,w,J){this.render()}}var $=Object.keys(q),b=Object.keys(D);R("mu-icon",T);export{b as SvgIconNames,T as MuIcon,$ as IconNames};
@@ -0,0 +1,12 @@
1
+ import{f as q}from"./chunk-fqyb2pms.js";import{j as K,k as O}from"./chunk-4tezav8r.js";class Q extends K{static baseClass="mu-input";static cssFile="input";static observedAttributes=["type","placeholder","value","disabled","variant","size","label"];#g=null;render(){if(this.querySelector(".mu-input__field")){this.#g=this.querySelector("input"),this.#k();return}let k=this.attr("type","text"),g=this.attr("placeholder",""),D=this.attr("label",""),R=this.attr("value",""),A=D||g,U=!A;if(!A&&!this.getAttribute("aria-label"))this.logError("A11Y_MISSING_LABEL","Input must have a label or aria-label attribute.");let G=this.id||`mu-input-${Math.random().toString(36).substring(2,9)}`,B=q(A),J=q(g),W=q(R);this.innerHTML=`
2
+ ${B?`<label class="mu-input__label" for="${G}">${B}</label>`:""}
3
+ <input
4
+ class="mu-input__field"
5
+ id="${G}"
6
+ type="${k}"
7
+ ${U?`placeholder="${J}"`:""}
8
+ ${!B?`aria-label="${J||"Text input"}"`:""}
9
+ value="${W}"
10
+ ${this.has("disabled")?"disabled":""}
11
+ />
12
+ `,this.#g=this.querySelector("input"),this.#k(),this.#q(),this.listen(this.#g,"input",(Y)=>{this.#q(),this.emit("mu-input",{value:Y.target.value})}),this.listen(this.#g,"focus",()=>{this.emit("mu-focus")}),this.listen(this.#g,"blur",()=>{this.emit("mu-blur")})}#q(){if(this.#g?.value)this.classList.add("has-value");else this.classList.remove("has-value")}update(k,g,D){if(!this.#g)return;switch(k){case"value":this.#g.value=g??"";break;case"placeholder":this.#g.placeholder=g??"";break;case"type":this.#g.type=g??"text";break;case"disabled":this.#g.disabled=this.has("disabled");break}this.#k()}#k(){let k=this.attr("variant","outlined"),g=this.attr("size","md");if(this.className=`mu-input mu-input--${k} mu-input--${g}`,this.has("disabled"))this.classList.add("is-disabled")}get value(){return this.#g?.value??""}set value(k){if(this.#g)this.#g.value=k}focus(){this.#g?.focus()}}O("mu-input",Q);export{Q as MuInput};
@@ -0,0 +1 @@
1
+ import{j as I}from"./chunk-4tezav8r.js";class J extends I{static get observedAttributes(){return["has-drawer","has-bottom-nav"]}static baseClass="mu-layout";static cssFile="layout";constructor(){super()}connectedCallback(){if(!this._slotsCaptured)this._slots={header:this.querySelector('[slot="header"]'),drawer:this.querySelector('[slot="drawer"]'),footer:this.querySelector('[slot="footer"]'),bottom:this.querySelector('[slot="bottom"]'),default:Array.from(this.children).filter((g)=>!g.hasAttribute("slot"))},this._slotsCaptured=!0;super.connectedCallback(),this._setupScrollReset(),this._updateLayout()}disconnectedCallback(){super.disconnectedCallback()}_setupScrollReset(){this.listen(window,"hashchange",()=>{let g=this.querySelector(".mu-layout-main");if(g)g.scrollTop=0})}_updateLayout(){let g=this._slots.drawer!==null,k=this._slots.bottom!==null;this.toggleAttribute("has-drawer",g),this.toggleAttribute("has-bottom-nav",k)}render(){this.innerHTML="";let g=document.createElement("div");g.className="mu-layout-wrapper";let k=document.createElement("header");if(k.className="mu-layout-header",this._slots.header)k.appendChild(this._slots.header);g.appendChild(k);let q=document.createElement("div");q.className="mu-layout-body";let z=document.createElement("aside");if(z.className="mu-layout-drawer",this._slots.drawer)z.appendChild(this._slots.drawer);q.appendChild(z);let A=document.createElement("div");A.className="mu-layout-main";let F=document.createElement("main");if(F.className="mu-layout-content",this._slots.default)this._slots.default.forEach((K)=>F.appendChild(K));A.appendChild(F),q.appendChild(A),g.appendChild(q);let G=document.createElement("footer");if(G.className="mu-layout-footer",this._slots.footer)G.appendChild(this._slots.footer);g.appendChild(G),this.appendChild(g);let H=document.createElement("div");if(H.className="mu-layout-bottom",this._slots.bottom)H.appendChild(this._slots.bottom);this.appendChild(H)}}if(!customElements.get("mu-layout"))customElements.define("mu-layout",J);export{J as MuLayout};
@@ -0,0 +1 @@
1
+ import{j as x,k as A}from"./chunk-4tezav8r.js";class B extends x{static baseClass="mu-lazy";static observedAttributes=["root-margin","threshold"];#k=null;#q=!1;connectedCallback(){super.connectedCallback();let k=this.attr("root-margin","200px"),q=parseFloat(this.attr("threshold","0"));this.#k=new IntersectionObserver((w)=>{if(w[0].isIntersecting&&!this.#q)this.#w()},{rootMargin:k,threshold:q}),this.#k.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this.#k?.disconnect()}render(){let k=this.querySelector('[slot="placeholder"]');if(k)k.style.display="block";let q=this.querySelector("template");if(q)q.style.display="none"}#w(){this.#q=!0,this.#k?.disconnect();let k=this.querySelector("template"),q=this.querySelector('[slot="placeholder"]');if(k){let w=k.content.cloneNode(!0);this.appendChild(w),k.remove()}if(q)q.remove();this.emit("mu-loaded"),this.classList.add("is-loaded")}load(){if(!this.#q)this.#w()}}A("mu-lazy",B);export{B as MuLazy};
@@ -0,0 +1,7 @@
1
+ import{j as K,k as Q}from"./chunk-4tezav8r.js";var Y="scheduler"in globalThis;function J(){return new Promise((q)=>{requestAnimationFrame(()=>requestAnimationFrame(q))})}class R extends K{static baseClass="mu-modal";static cssFile="dialog";static observedAttributes=["open","size"];#q=null;connectedCallback(){if(!this.hasAttribute("data-rendered"))this._userContent=this.innerHTML,this.setAttribute("data-rendered","true");super.connectedCallback(),this.#G()}render(){if(this.querySelector("dialog"))return;let q=this.attr("size","md"),G=this._userContent||"";this.innerHTML=`
2
+ <dialog class="mu-modal__dialog mu-modal--${q}">
3
+ <button class="mu-modal__close" aria-label="Close">✕</button>
4
+ <div class="mu-modal__body">${G}</div>
5
+ </dialog>
6
+ `,this.#q=this.querySelector("dialog")}#G(){if(this.#q=this.querySelector("dialog"),!this.#q)return;this.listen(this.#q,"close",()=>{this.removeAttribute("open"),this.classList.remove("is-open","is-visible"),document.body.style.overflow="",this.emit("mu-close")}),this.listen(this.#q,"cancel",(G)=>{G.preventDefault(),this.close()}),this.listen(this.#q,"click",(G)=>{if(G.target===this.#q)this.close()});let q=this.querySelector(".mu-modal__close");if(q)this.listen(q,"click",()=>{this.close()})}update(q,G,H){if(q==="open"){if(G!==null)this.#H()}}#H(){if(!this.#q||this.#q.open)return;this.classList.add("is-open"),this.#q.showModal(),document.body.style.overflow="hidden",J().then(()=>this.classList.add("is-visible"))}open(){this.setAttribute("open","")}close(){if(!this.#q)return;this.classList.remove("is-visible");let q=!1,G=()=>{if(q)return;if(q=!0,this.#q&&this.#q.open)this.#q.close();this.removeAttribute("open"),this.classList.remove("is-open"),document.body.style.overflow="",this.emit("mu-close")},H=this.#q,I=(X)=>{if(X.target===H)H.removeEventListener("transitionend",I),G()};H.addEventListener("transitionend",I),this.setTimeout(()=>{H.removeEventListener("transitionend",I),G()},200)}}Q("mu-modal",R);export{R as MuModal};
7
+ export{R as l};
@@ -0,0 +1 @@
1
+ import{j as g,k as q}from"./chunk-4tezav8r.js";class w extends g{static baseClass="mu-navbar";static cssFile="navbar";static observedAttributes=["sticky","variant"];render(){if(this.style.display="flex",this.style.alignItems="center",this.style.justifyContent="space-between",this.style.padding="0 var(--md-sys-spacing-md, 16px)",this.style.height="64px",this.style.background="var(--md-sys-color-surface-container)",this.style.borderBottom="1px solid var(--md-sys-color-outline-variant)",this.has("sticky"))this.style.position="sticky",this.style.top="0",this.style.zIndex="100"}}class x extends g{static baseClass="mu-navbar__brand";render(){this.style.fontWeight="600",this.style.fontSize="1.25rem"}}class z extends g{static baseClass="mu-navbar__links";render(){}}class D extends g{static baseClass="mu-navbar__actions";render(){this.style.display="flex",this.style.gap="var(--md-sys-spacing-sm, 8px)",this.style.alignItems="center"}}q("mu-navbar",w);q("mu-navbar-brand",x);q("mu-navbar-links",z);q("mu-navbar-actions",D);export{z as MuNavbarLinks,x as MuNavbarBrand,D as MuNavbarActions,w as MuNavbar};
@@ -0,0 +1 @@
1
+ import{j as w,k as x}from"./chunk-4tezav8r.js";class z extends w{static baseClass="mu-page";static observedAttributes=["route","title"];get route(){return this.attr("route","")}get pageTitle(){return this.attr("title","")}get dependencies(){let k=this.querySelector('script[type="x-dependencies"]');if(!k)return[];return k.textContent.split(/[\n,]/).map((h)=>h.trim()).filter((h)=>h&&h.startsWith("mu-"))}connectedCallback(){if(super.connectedCallback(),this.querySelector("template"))this.render()}render(){let k=this.querySelector("template");if(k){let h=k.content.cloneNode(!0),q=this.querySelector('script[type="x-dependencies"]');if(this.innerHTML="",q)this.appendChild(q);this.appendChild(h)}}}x("mu-page",z);export{z as MuPage};
@@ -0,0 +1 @@
1
+ import{j as z,k as A}from"./chunk-4tezav8r.js";class B extends z{static baseClass="mu-progress";static cssFile="progress";static observedAttributes=["value","max","variant"];#h=null;render(){if(this.querySelector(".mu-progress__bar")){this.#h=this.querySelector(".mu-progress__bar");return}this.innerHTML='<span class="mu-progress__bar"></span>',this.#h=this.querySelector(".mu-progress__bar"),this.setAttribute("role","progressbar"),this.#q(),this.#w()}update(h,q,w){if(h==="value"||h==="max")this.#q();this.#w()}#q(){let h=parseFloat(this.attr("value","0")),q=parseFloat(this.attr("max","100")),w=Math.min(100,Math.max(0,h/q*100));if(this.#h)this.#h.style.width=`${w}%`;this.setAttribute("aria-valuenow",h.toString()),this.setAttribute("aria-valuemax",q.toString())}#w(){let h=this.attr("variant","primary");this.className=`mu-progress mu-progress--${h}`}}A("mu-progress",B);export{B as MuProgress};
@@ -0,0 +1,20 @@
1
+ import{f as W}from"./chunk-fqyb2pms.js";import{j as G}from"./chunk-4tezav8r.js";class X extends G{static get observedAttributes(){return["placeholder","loading","disabled","multiline"]}static baseClass="mu-prompt-input";static cssFile="prompt-ui";constructor(){super();this._value=""}get placeholder(){return this.getAttribute("placeholder")||"Type a message..."}get loading(){return this.hasAttribute("loading")}set loading(q){if(q)this.setAttribute("loading","");else this.removeAttribute("loading")}get disabled(){return this.hasAttribute("disabled")}get multiline(){return this.hasAttribute("multiline")}get value(){return this._value}set value(q){this._value=q;let y=this.querySelector(".mu-prompt-input-field");if(y)y.value=q}connectedCallback(){super.connectedCallback(),this.render()}attributeChangedCallback(q,y,z){if(this.isConnected&&y!==z)this.render()}_submit(){if(this.loading||this.disabled||!this._value.trim())return;this.dispatchEvent(new CustomEvent("mu-submit",{bubbles:!0,detail:{value:this._value.trim()}}))}_handleKeydown(q){if(q.key==="Enter"&&!q.shiftKey&&!this.multiline)q.preventDefault(),this._submit();else if(q.key==="Enter"&&q.metaKey)q.preventDefault(),this._submit()}render(){let q=this.multiline;this.innerHTML=`
2
+ <div class="mu-prompt-input-container ${this.loading?"mu-prompt-input-loading":""}">
3
+ ${q?`<textarea class="mu-prompt-input-field" placeholder="${this.placeholder}" ${this.disabled?"disabled":""}></textarea>`:`<input class="mu-prompt-input-field" type="text" placeholder="${this.placeholder}" ${this.disabled?"disabled":""} />`}
4
+ <button class="mu-prompt-input-submit" ${this.disabled||this.loading?"disabled":""}>
5
+ ${this.loading?'<div class="mu-prompt-input-spinner"></div>':'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/></svg>'}
6
+ </button>
7
+ </div>
8
+ `;let y=this.querySelector(".mu-prompt-input-field"),z=this.querySelector(".mu-prompt-input-submit");y.value=this._value,this.listen(y,"input",(F)=>{this._value=F.target.value,this.dispatchEvent(new CustomEvent("mu-input",{bubbles:!0,detail:{value:this._value}}))}),this.listen(y,"keydown",(F)=>this._handleKeydown(F)),this.listen(z,"click",()=>this._submit())}}class Y extends G{static get observedAttributes(){return["language","filename"]}static baseClass="mu-code-block";constructor(){super()}get language(){return this.getAttribute("language")||"text"}get filename(){return this.getAttribute("filename")}connectedCallback(){super.connectedCallback(),this.render()}attributeChangedCallback(q,y,z){if(this.isConnected&&y!==z)this.render()}async _copy(){let q=this.textContent.trim();try{await navigator.clipboard.writeText(q);let y=this.querySelector(".mu-code-block-copy-btn");y.textContent="✓ Copied",this.setTimeout(()=>{y.textContent="Copy"},2000)}catch(y){console.error("Failed to copy:",y)}}render(){let q=this.textContent.trim();this.innerHTML=`
9
+ <div class="mu-code-block-container">
10
+ <div class="mu-code-block-header">
11
+ ${this.filename?`<span class="mu-code-block-filename">${this.filename}</span>`:`<span class="mu-code-block-language">${this.language}</span>`}
12
+ <button class="mu-code-block-copy-btn">Copy</button>
13
+ </div>
14
+ <pre class="mu-code-block-pre"><code>${W(q)}</code></pre>
15
+ </div>
16
+ `,this.listen(this.querySelector(".mu-code-block-copy-btn"),"click",()=>this._copy())}}class Z extends G{static get observedAttributes(){return["actions"]}static baseClass="mu-agent-toolbar";constructor(){super()}get actions(){let q=this.getAttribute("actions");return q?q.split(",").map((y)=>y.trim()):["copy","regenerate","thumbsUp","thumbsDown"]}connectedCallback(){super.connectedCallback(),this.render()}render(){let q={copy:{icon:"\uD83D\uDCCB",label:"Copy"},regenerate:{icon:"\uD83D\uDD04",label:"Regenerate"},thumbsUp:{icon:"\uD83D\uDC4D",label:"Good response"},thumbsDown:{icon:"\uD83D\uDC4E",label:"Poor response"},edit:{icon:"✏️",label:"Edit"},share:{icon:"↗️",label:"Share"}},y=this.actions.filter((z)=>q[z]).map((z)=>`
17
+ <button class="mu-agent-toolbar-btn" data-action="${z}" title="${q[z].label}">
18
+ ${q[z].icon}
19
+ </button>
20
+ `).join("");this.innerHTML=y}handleAction(q,y,z){this.dispatchEvent(new CustomEvent("mu-action",{bubbles:!0,detail:{action:q}}))}}class _ extends G{static get observedAttributes(){return["role","avatar","name","timestamp"]}static baseClass="mu-message-bubble";constructor(){super();this._originalContent=null}get role(){return this.getAttribute("role")||"user"}get avatar(){return this.getAttribute("avatar")}get name(){return this.getAttribute("name")||(this.role==="user"?"You":"Assistant")}get timestamp(){return this.getAttribute("timestamp")}connectedCallback(){if(super.connectedCallback(),!this._originalContent)this._originalContent=Array.from(this.childNodes);this.render()}attributeChangedCallback(q,y,z){if(this.isConnected&&y!==z)this.render()}render(){let q=this.role==="user",y=q?"\uD83D\uDC64":"\uD83E\uDD16",z=q?"mu-message-bubble-user":"mu-message-bubble-assistant",F=document.createElement("div");F.className=`mu-message-bubble-message ${z}`;let J=document.createElement("div");if(J.className=`mu-message-bubble-avatar ${z}`,this.avatar){let D=document.createElement("img");D.src=this.avatar,D.alt=this.name,J.appendChild(D)}else J.textContent=y;F.appendChild(J);let K=document.createElement("div");K.className="mu-message-bubble-content";let N=document.createElement("div");N.className=`mu-message-bubble-header ${z}`;let O=document.createElement("span");if(O.className="mu-message-bubble-name",O.textContent=this.name,N.appendChild(O),this.timestamp){let D=document.createElement("span");D.className="mu-message-bubble-timestamp",D.textContent=this.timestamp,N.appendChild(D)}K.appendChild(N);let Q=document.createElement("div");if(Q.className=`mu-message-bubble-bubble ${z}`,this._originalContent)this._originalContent.forEach((D)=>Q.appendChild(D.cloneNode(!0)));K.appendChild(Q),F.appendChild(K),this.innerHTML="",this.appendChild(F)}}if(!customElements.get("mu-prompt-input"))customElements.define("mu-prompt-input",X);if(!customElements.get("mu-code-block"))customElements.define("mu-code-block",Y);if(!customElements.get("mu-agent-toolbar"))customElements.define("mu-agent-toolbar",Z);if(!customElements.get("mu-message-bubble"))customElements.define("mu-message-bubble",_);export{X as MuPromptInput,_ as MuMessageBubble,Y as MuCodeBlock,Z as MuAgentToolbar};
@@ -0,0 +1,6 @@
1
+ import{e as P}from"./chunk-h7cdbhxw.js";import{f as O}from"./chunk-fqyb2pms.js";import{j as K,k as N}from"./chunk-4tezav8r.js";class Q extends K{static baseClass="mu-radio-group";static cssFile="radio";static observedAttributes=["name","value"];connectedCallback(){super.connectedCallback(),this.setAttribute("role","radiogroup"),this.listen(this,"pointerdown",(z)=>{let q=z.target;while(q&&q.tagName!=="MU-RADIO")q=q.parentElement;if(q&&!q.hasAttribute("disabled"))P(q,z)}),this.listen(this,"click",(z)=>{let q=z.target;while(q&&q.tagName!=="MU-RADIO")q=q.parentElement;if(q&&!q.hasAttribute("disabled"))this.select(q.getAttribute("value"))})}render(){this.style.display="flex",this.style.flexDirection="column",this.style.gap="8px",this.setTimeout(()=>this.#q(),0)}update(z,q,J){if(z==="value")this.#q()}#q(){let z=this.attr("value","");this.querySelectorAll("mu-radio").forEach((q)=>{if(q.attr("value")===z)q.setAttribute("checked","");else q.removeAttribute("checked")})}select(z){this.setAttribute("value",z),this.emit("mu-change",{value:z})}get value(){return this.attr("value","")}set value(z){this.setAttribute("value",z)}}class U extends K{static baseClass="mu-radio";static observedAttributes=["value","checked","disabled","label"];#q="";#z=!1;connectedCallback(){super.connectedCallback(),this.setAttribute("role","radio"),this.setupActivation(()=>{let z=this.closest("mu-radio-group");if(z)z.select(this.getAttribute("value"))})}render(){if(!this.#z)this.#q=O(this.attr("label","")||this.textContent.trim()),this.#z=!0;this.innerHTML=`
2
+ <span class="mu-radio__circle">
3
+ <span class="mu-radio__dot"></span>
4
+ </span>
5
+ <span class="mu-radio__label">${this.#q}</span>
6
+ `,this.style.display="inline-flex",this.style.alignItems="center",this.style.gap="12px",this.style.cursor=this.has("disabled")?"not-allowed":"pointer",this.style.userSelect="none",this.style.minHeight="48px",this.style.padding="0 4px",this.#B()}update(z,q,J){if(z==="checked"||z==="disabled")this.#B();else if(z==="label"){this.#q=q;let B=this.querySelector(".mu-radio__label");if(B)B.textContent=q}}#B(){let z=this.querySelector(".mu-radio__circle"),q=this.querySelector(".mu-radio__dot"),J=this.querySelector(".mu-radio__label"),B=this.has("checked"),F=this.has("disabled");if(this.style.cursor=F?"not-allowed":"pointer",z)if(z.style.width="20px",z.style.height="20px",z.style.borderRadius="50%",z.style.display="flex",z.style.alignItems="center",z.style.justifyContent="center",z.style.transition="border-color var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)",F)z.style.border="2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)";else z.style.border=`2px solid ${B?"var(--md-sys-color-primary)":"var(--md-sys-color-outline)"}`;if(q)if(q.style.width="10px",q.style.height="10px",q.style.borderRadius="50%",q.style.transform=B?"scale(0.5)":"scale(0)",q.style.transition="transform var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)",F)q.style.background="color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)";else q.style.background="var(--md-sys-color-primary)";if(J)J.style.color=F?"color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)":"var(--md-sys-color-on-surface)";this.setAttribute("aria-checked",String(B)),this.setAttribute("aria-disabled",String(F)),this.setAttribute("tabindex",F?"-1":"0")}}N("mu-radio-group",Q);N("mu-radio",U);export{Q as MuRadioGroup,U as MuRadio};
@@ -0,0 +1 @@
1
+ import{a as L}from"./chunk-mzd8jwrs.js";import{j as O,k as P}from"./chunk-4tezav8r.js";class Q extends O{static baseClass="mu-repeat";static observedAttributes=[];#b=[];#q=(q,A)=>A;#z=(q)=>`<div>${JSON.stringify(q)}</div>`;#g=new Map;set items(q){let A=this.#b;this.#b=q||[],L.schedule(()=>this.#A(A))}get items(){return this.#b}set keyFn(q){this.#q=q}set renderItem(q){this.#z=q}render(){this.style.display="contents"}#A(q){let A=new Set,S=document.createDocumentFragment();for(let b=0;b<this.#b.length;b++){let z=this.#q(this.#b[b],b);A.add(z)}for(let[b,z]of this.#g)if(!A.has(b))z.remove(),this.#g.delete(b);let G=null;for(let b=0;b<this.#b.length;b++){let z=this.#b[b],D=this.#q(z,b),g=this.#g.get(D);if(!g){let B=document.createElement("div");B.innerHTML=this.#z(z,b),g=B.firstElementChild||B,g.dataset.muKey=D,this.#g.set(D,g)}else{let B=this.#z(z,b);if(g.outerHTML!==B){let J=document.createElement("div");J.innerHTML=B;let H=J.firstElementChild||J;H.dataset.muKey=D,g.replaceWith(H),this.#g.set(D,H),g=H}}if(G){if(g.previousElementSibling!==G)G.after(g)}else if(this.firstElementChild!==g)this.prepend(g);G=g}}getElement(q){return this.#g.get(q)}refresh(){this.#g.clear(),this.innerHTML="",L.schedule(()=>this.#A([]))}}P("mu-repeat",Q);export{Q as MuRepeat};