microui-wc 0.1.0 → 0.1.2

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 (343) hide show
  1. package/AGENTS.md +71 -71
  2. package/CHANGELOG.md +1 -1
  3. package/README.md +14 -9
  4. package/dist/AGENTS.md +116 -116
  5. package/dist/README.md +21 -16
  6. package/dist/components.css +1 -1
  7. package/dist/microui.css +1 -1
  8. package/dist/microui.esm.js.map +1 -1
  9. package/dist/microui.min.js.map +1 -1
  10. package/dist/styles/components/switch.css +1 -1
  11. package/docs/getting-started.md +3 -3
  12. package/package.json +38 -10
  13. package/src/components/mu-schema-form.js +1 -1
  14. package/src/styles/components/switch.css +7 -8
  15. package/src/styles/components.css +6 -6
  16. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
  17. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -33
  18. package/.github/PULL_REQUEST_TEMPLATE.md +0 -28
  19. package/.github/workflows/ci.yml +0 -42
  20. package/.github/workflows/deploy-pages.yml +0 -112
  21. package/CODE_OF_CONDUCT.md +0 -59
  22. package/CONTRIBUTING.md +0 -156
  23. package/SECURITY.md +0 -58
  24. package/app/.generated/routes/alerts.js +0 -8
  25. package/app/.generated/routes/avatars.js +0 -8
  26. package/app/.generated/routes/badges.js +0 -8
  27. package/app/.generated/routes/buttons.js +0 -10
  28. package/app/.generated/routes/cards.js +0 -10
  29. package/app/.generated/routes/checkboxes.js +0 -9
  30. package/app/.generated/routes/chips.js +0 -8
  31. package/app/.generated/routes/dropdowns.js +0 -9
  32. package/app/.generated/routes/home.js +0 -7
  33. package/app/.generated/routes/icons.js +0 -9
  34. package/app/.generated/routes/inputs.js +0 -10
  35. package/app/.generated/routes/installation.js +0 -7
  36. package/app/.generated/routes/layout.js +0 -9
  37. package/app/.generated/routes/modals.js +0 -9
  38. package/app/.generated/routes/navbar.js +0 -7
  39. package/app/.generated/routes/progress.js +0 -9
  40. package/app/.generated/routes/radios.js +0 -9
  41. package/app/.generated/routes/switches.js +0 -9
  42. package/app/.generated/routes/tabs.js +0 -8
  43. package/app/.generated/routes/toasts.js +0 -9
  44. package/app/index.html +0 -67
  45. package/app/pages/alerts.html +0 -23
  46. package/app/pages/avatars.html +0 -22
  47. package/app/pages/badges.html +0 -22
  48. package/app/pages/buttons.html +0 -71
  49. package/app/pages/cards.html +0 -54
  50. package/app/pages/checkboxes.html +0 -39
  51. package/app/pages/chips.html +0 -23
  52. package/app/pages/dropdowns.html +0 -41
  53. package/app/pages/home.html +0 -59
  54. package/app/pages/icons.html +0 -29
  55. package/app/pages/inputs.html +0 -66
  56. package/app/pages/installation.html +0 -34
  57. package/app/pages/layout.html +0 -30
  58. package/app/pages/modals.html +0 -21
  59. package/app/pages/navbar.html +0 -22
  60. package/app/pages/progress.html +0 -35
  61. package/app/pages/radios.html +0 -40
  62. package/app/pages/switches.html +0 -39
  63. package/app/pages/tabs.html +0 -30
  64. package/app/pages/toasts.html +0 -22
  65. package/app-dist/index.html +0 -67
  66. package/app-dist/pages/alerts.html +0 -23
  67. package/app-dist/pages/avatars.html +0 -22
  68. package/app-dist/pages/badges.html +0 -22
  69. package/app-dist/pages/buttons.html +0 -71
  70. package/app-dist/pages/cards.html +0 -54
  71. package/app-dist/pages/checkboxes.html +0 -39
  72. package/app-dist/pages/chips.html +0 -23
  73. package/app-dist/pages/dropdowns.html +0 -41
  74. package/app-dist/pages/home.html +0 -59
  75. package/app-dist/pages/icons.html +0 -29
  76. package/app-dist/pages/inputs.html +0 -66
  77. package/app-dist/pages/installation.html +0 -34
  78. package/app-dist/pages/layout.html +0 -30
  79. package/app-dist/pages/modals.html +0 -21
  80. package/app-dist/pages/navbar.html +0 -22
  81. package/app-dist/pages/progress.html +0 -35
  82. package/app-dist/pages/radios.html +0 -40
  83. package/app-dist/pages/switches.html +0 -39
  84. package/app-dist/pages/tabs.html +0 -30
  85. package/app-dist/pages/toasts.html +0 -22
  86. package/app-dist/pages.json +0 -217
  87. package/app-dist/routes/alerts.js +0 -5
  88. package/app-dist/routes/avatars.js +0 -1
  89. package/app-dist/routes/badges.js +0 -1
  90. package/app-dist/routes/buttons.js +0 -1
  91. package/app-dist/routes/cards.js +0 -1
  92. package/app-dist/routes/checkboxes.js +0 -9
  93. package/app-dist/routes/chips.js +0 -4
  94. package/app-dist/routes/chunk-019e5e2f.js +0 -5
  95. package/app-dist/routes/chunk-0m4j19yd.js +0 -2
  96. package/app-dist/routes/chunk-0tmmp5q0.js +0 -1
  97. package/app-dist/routes/chunk-10xn709r.js +0 -1
  98. package/app-dist/routes/chunk-15m2qcda.js +0 -2
  99. package/app-dist/routes/chunk-1bh8g23n.js +0 -1
  100. package/app-dist/routes/chunk-1vg0v937.js +0 -1
  101. package/app-dist/routes/chunk-1zvcgy3j.js +0 -1
  102. package/app-dist/routes/chunk-2afb0861.js +0 -1
  103. package/app-dist/routes/chunk-2c6ttpzt.js +0 -5
  104. package/app-dist/routes/chunk-3dy30fhs.js +0 -1
  105. package/app-dist/routes/chunk-426dnces.js +0 -13
  106. package/app-dist/routes/chunk-44kgxery.js +0 -1
  107. package/app-dist/routes/chunk-47fdnejd.js +0 -33
  108. package/app-dist/routes/chunk-49a6t2vq.js +0 -1
  109. package/app-dist/routes/chunk-4fe1rm5b.js +0 -1
  110. package/app-dist/routes/chunk-4ggmvkta.js +0 -33
  111. package/app-dist/routes/chunk-4vkz81q7.js +0 -33
  112. package/app-dist/routes/chunk-4w4tmj8f.js +0 -31
  113. package/app-dist/routes/chunk-532s62kr.js +0 -31
  114. package/app-dist/routes/chunk-5hm3bssy.js +0 -33
  115. package/app-dist/routes/chunk-5vrh24hc.js +0 -1
  116. package/app-dist/routes/chunk-61pcg25a.js +0 -1
  117. package/app-dist/routes/chunk-6nfhygvf.js +0 -1
  118. package/app-dist/routes/chunk-700e7je6.js +0 -33
  119. package/app-dist/routes/chunk-7fsn17kg.js +0 -1
  120. package/app-dist/routes/chunk-7k789b32.js +0 -1
  121. package/app-dist/routes/chunk-7r46q0ys.js +0 -36
  122. package/app-dist/routes/chunk-86fmc1fr.js +0 -5
  123. package/app-dist/routes/chunk-8qth37vw.js +0 -1
  124. package/app-dist/routes/chunk-924wv8n0.js +0 -1
  125. package/app-dist/routes/chunk-9mbhgxk9.js +0 -1
  126. package/app-dist/routes/chunk-a216hyd9.js +0 -1
  127. package/app-dist/routes/chunk-akzxykh9.js +0 -33
  128. package/app-dist/routes/chunk-b3dcvy8c.js +0 -1
  129. package/app-dist/routes/chunk-b74zahz5.js +0 -31
  130. package/app-dist/routes/chunk-bftj53p2.js +0 -5
  131. package/app-dist/routes/chunk-c01hnz3e.js +0 -1
  132. package/app-dist/routes/chunk-d8pvv5km.js +0 -1
  133. package/app-dist/routes/chunk-dev0aezr.js +0 -2
  134. package/app-dist/routes/chunk-dh6vnv0e.js +0 -1
  135. package/app-dist/routes/chunk-dn2cbpva.js +0 -36
  136. package/app-dist/routes/chunk-dvn0my90.js +0 -1
  137. package/app-dist/routes/chunk-dvq8mnve.js +0 -36
  138. package/app-dist/routes/chunk-e8c2gc4d.js +0 -5
  139. package/app-dist/routes/chunk-ejf9ak2x.js +0 -1
  140. package/app-dist/routes/chunk-f083m55s.js +0 -1
  141. package/app-dist/routes/chunk-fnrj28s1.js +0 -31
  142. package/app-dist/routes/chunk-fvg3yjdp.js +0 -31
  143. package/app-dist/routes/chunk-g7k381n1.js +0 -1
  144. package/app-dist/routes/chunk-h01kq2ae.js +0 -13
  145. package/app-dist/routes/chunk-h4dk761v.js +0 -5
  146. package/app-dist/routes/chunk-hmx91z2x.js +0 -5
  147. package/app-dist/routes/chunk-hxbg4m42.js +0 -36
  148. package/app-dist/routes/chunk-jbjnfp2b.js +0 -2
  149. package/app-dist/routes/chunk-jxtz5vv6.js +0 -36
  150. package/app-dist/routes/chunk-jxzcs0ey.js +0 -36
  151. package/app-dist/routes/chunk-kt7wwhcx.js +0 -1
  152. package/app-dist/routes/chunk-kzptszyc.js +0 -33
  153. package/app-dist/routes/chunk-mhgca4w4.js +0 -2
  154. package/app-dist/routes/chunk-mhswxa20.js +0 -1
  155. package/app-dist/routes/chunk-n8zfeex6.js +0 -1
  156. package/app-dist/routes/chunk-pee47b2r.js +0 -1
  157. package/app-dist/routes/chunk-pesmw829.js +0 -1
  158. package/app-dist/routes/chunk-pgc4c6f3.js +0 -36
  159. package/app-dist/routes/chunk-q8egegm1.js +0 -1
  160. package/app-dist/routes/chunk-q9mn2qyq.js +0 -36
  161. package/app-dist/routes/chunk-qh0rtaf3.js +0 -5
  162. package/app-dist/routes/chunk-qqhmk6ye.js +0 -2
  163. package/app-dist/routes/chunk-qrxygmf7.js +0 -33
  164. package/app-dist/routes/chunk-r46yzksx.js +0 -36
  165. package/app-dist/routes/chunk-rgpbw2w0.js +0 -5
  166. package/app-dist/routes/chunk-rnpzv3d8.js +0 -2
  167. package/app-dist/routes/chunk-s5v8cv05.js +0 -2
  168. package/app-dist/routes/chunk-sbwn5bpc.js +0 -1
  169. package/app-dist/routes/chunk-sqbg8jbt.js +0 -33
  170. package/app-dist/routes/chunk-sv8dqnf7.js +0 -1
  171. package/app-dist/routes/chunk-t67sw3za.js +0 -1
  172. package/app-dist/routes/chunk-tjdpqwdf.js +0 -31
  173. package/app-dist/routes/chunk-tq2mfghg.js +0 -1
  174. package/app-dist/routes/chunk-ttn10vt6.js +0 -1
  175. package/app-dist/routes/chunk-v2hzpjxr.js +0 -1
  176. package/app-dist/routes/chunk-wfjjkw9y.js +0 -1
  177. package/app-dist/routes/chunk-wt8cxzmf.js +0 -31
  178. package/app-dist/routes/chunk-x45d372k.js +0 -5
  179. package/app-dist/routes/chunk-y3wsazkt.js +0 -1
  180. package/app-dist/routes/chunk-y7pmgc7t.js +0 -33
  181. package/app-dist/routes/chunk-zefdt2q3.js +0 -31
  182. package/app-dist/routes/dropdowns.js +0 -6
  183. package/app-dist/routes/home.js +0 -1
  184. package/app-dist/routes/icons.js +0 -1
  185. package/app-dist/routes/inputs.js +0 -12
  186. package/app-dist/routes/installation.js +0 -1
  187. package/app-dist/routes/layout.js +0 -1
  188. package/app-dist/routes/modals.js +0 -7
  189. package/app-dist/routes/navbar.js +0 -1
  190. package/app-dist/routes/progress.js +0 -1
  191. package/app-dist/routes/radios.js +0 -6
  192. package/app-dist/routes/switches.js +0 -6
  193. package/app-dist/routes/tabs.js +0 -1
  194. package/app-dist/routes/toasts.js +0 -16
  195. package/assets/fonts/material-symbols-mini.woff2 +0 -0
  196. package/assets/fonts/material-symbols.woff2 +0 -0
  197. package/assets/fonts/roboto-400.woff2 +0 -0
  198. package/assets/fonts/roboto-500.woff2 +0 -0
  199. package/assets/fonts/roboto-700.woff2 +0 -0
  200. package/assets/logo-banner-400.jpg +0 -0
  201. package/assets/logo-banner-400.webp +0 -0
  202. package/assets/logo-banner-800.webp +0 -0
  203. package/assets/logo-banner.jpg +0 -0
  204. package/assets/logo-icon-64.jpg +0 -0
  205. package/assets/logo-icon-64.webp +0 -0
  206. package/assets/logo-icon.jpg +0 -0
  207. package/assets/logo-square.jpg +0 -0
  208. package/bun.lock +0 -312
  209. package/bunfig.toml +0 -4
  210. package/custom-elements.json +0 -1916
  211. package/demo/api/sample-data.json +0 -38
  212. package/demo/content/alerts.html +0 -115
  213. package/demo/content/avatars.html +0 -70
  214. package/demo/content/badges.html +0 -65
  215. package/demo/content/buttons.html +0 -188
  216. package/demo/content/callouts.html +0 -91
  217. package/demo/content/cards.html +0 -121
  218. package/demo/content/checkboxes.html +0 -178
  219. package/demo/content/chips.html +0 -67
  220. package/demo/content/codeblocks.html +0 -101
  221. package/demo/content/confirms.html +0 -115
  222. package/demo/content/datatables.html +0 -149
  223. package/demo/content/dividers.html +0 -119
  224. package/demo/content/dropdowns.html +0 -89
  225. package/demo/content/enterprise.html +0 -252
  226. package/demo/content/home.html +0 -149
  227. package/demo/content/icons.html +0 -89
  228. package/demo/content/inputs.html +0 -135
  229. package/demo/content/installation.html +0 -16
  230. package/demo/content/layout.html +0 -136
  231. package/demo/content/modals.html +0 -141
  232. package/demo/content/navbar.html +0 -70
  233. package/demo/content/progress.html +0 -119
  234. package/demo/content/radios.html +0 -88
  235. package/demo/content/skeletons.html +0 -109
  236. package/demo/content/spinners.html +0 -96
  237. package/demo/content/switches.html +0 -84
  238. package/demo/content/tables.html +0 -124
  239. package/demo/content/tabs.html +0 -85
  240. package/demo/content/toasts.html +0 -116
  241. package/demo/content/tooltips.html +0 -107
  242. package/demo/content/virtual-lists.html +0 -233
  243. package/demo/favicon.ico +0 -0
  244. package/demo/favicon.png +0 -0
  245. package/demo/full.html +0 -52
  246. package/demo/iife.html +0 -46
  247. package/demo/manifest.json +0 -34
  248. package/demo/pages/datatable-demo.html +0 -237
  249. package/demo/pages/prompt-ui-demo.html +0 -218
  250. package/demo/pages/responsive-demo.html +0 -122
  251. package/demo/pages/schema-form-demo.html +0 -270
  252. package/demo/robots.txt +0 -6
  253. package/demo/shell.html +0 -712
  254. package/demo/sw.js +0 -387
  255. package/lighthouse-audit.mjs +0 -113
  256. package/scripts/analyze-components.js +0 -105
  257. package/scripts/build-app.js +0 -193
  258. package/scripts/build-framework.js +0 -444
  259. package/scripts/build-utils.js +0 -101
  260. package/scripts/test-isolated.js +0 -151
  261. package/server.js +0 -256
  262. package/tests/agents/agent-integration.test.js +0 -76
  263. package/tests/benchmark.html +0 -296
  264. package/tests/build/scan-components.test.js +0 -173
  265. package/tests/components/all-components.test.js +0 -245
  266. package/tests/components/all-missing-components.test.js +0 -574
  267. package/tests/components/mu-alert.test.js +0 -113
  268. package/tests/components/mu-avatar.test.js +0 -148
  269. package/tests/components/mu-badge.test.js +0 -92
  270. package/tests/components/mu-button.test.js +0 -112
  271. package/tests/components/mu-card.test.js +0 -89
  272. package/tests/components/mu-checkbox.test.js +0 -158
  273. package/tests/components/mu-chip.test.js +0 -118
  274. package/tests/components/mu-container.test.js +0 -120
  275. package/tests/components/mu-divider.test.js +0 -98
  276. package/tests/components/mu-drawer-item.test.js +0 -199
  277. package/tests/components/mu-drawer.test.js +0 -96
  278. package/tests/components/mu-dropdown.test.js +0 -125
  279. package/tests/components/mu-form.test.js +0 -138
  280. package/tests/components/mu-grid.test.js +0 -135
  281. package/tests/components/mu-icon.test.js +0 -110
  282. package/tests/components/mu-input.test.js +0 -131
  283. package/tests/components/mu-lazy.test.js +0 -103
  284. package/tests/components/mu-modal.test.js +0 -275
  285. package/tests/components/mu-navbar.test.js +0 -101
  286. package/tests/components/mu-progress.test.js +0 -115
  287. package/tests/components/mu-radio.test.js +0 -114
  288. package/tests/components/mu-repeat.test.js +0 -106
  289. package/tests/components/mu-sidebar.test.js +0 -126
  290. package/tests/components/mu-skeleton.test.js +0 -162
  291. package/tests/components/mu-stack.test.js +0 -143
  292. package/tests/components/mu-switch.test.js +0 -292
  293. package/tests/components/mu-table.test.js +0 -124
  294. package/tests/components/mu-tabs.test.js +0 -104
  295. package/tests/components/mu-textarea.test.js +0 -115
  296. package/tests/components/mu-toast.test.js +0 -321
  297. package/tests/components/mu-tooltip.test.js +0 -133
  298. package/tests/components/mu-virtual-list.test.js +0 -109
  299. package/tests/core/MuElement.test.js +0 -120
  300. package/tests/core/agent-api.test.js +0 -125
  301. package/tests/core/all-core-modules.test.js +0 -442
  302. package/tests/core/bus.test.js +0 -364
  303. package/tests/core/component-schema.test.js +0 -160
  304. package/tests/core/feature-registry.test.js +0 -198
  305. package/tests/core/form-state.test.js +0 -167
  306. package/tests/core/http.test.js +0 -119
  307. package/tests/core/keyboard.test.js +0 -319
  308. package/tests/core/layers.test.js +0 -129
  309. package/tests/core/namespaced-stores.test.js +0 -114
  310. package/tests/core/render.test.js +0 -121
  311. package/tests/core/ripple.test.js +0 -131
  312. package/tests/core/router.test.js +0 -89
  313. package/tests/core/scheduler.test.js +0 -121
  314. package/tests/core/signals.test.js +0 -128
  315. package/tests/core/store.test.js +0 -171
  316. package/tests/core/transitions.test.js +0 -82
  317. package/tests/e2e/accessibility-harness.html +0 -58
  318. package/tests/e2e/accessibility.test.js +0 -401
  319. package/tests/e2e/agent-features.test.js +0 -372
  320. package/tests/e2e/card-spacing.test.js +0 -287
  321. package/tests/e2e/components.test.js +0 -439
  322. package/tests/e2e/demo-routes.test.js +0 -478
  323. package/tests/e2e/layout-css-fallback.test.js +0 -334
  324. package/tests/e2e/mu-alert.e2e.test.js +0 -111
  325. package/tests/e2e/mu-checkbox.test.js +0 -489
  326. package/tests/e2e/mu-chip.test.js +0 -347
  327. package/tests/e2e/mu-form.test.js +0 -499
  328. package/tests/e2e/mu-icon.test.js +0 -114
  329. package/tests/e2e/mu-radio.test.js +0 -113
  330. package/tests/e2e/mu-skeleton.test.js +0 -140
  331. package/tests/e2e/mu-switch.test.js +0 -415
  332. package/tests/e2e/mu-tabs.test.js +0 -494
  333. package/tests/e2e/mu-textarea.test.js +0 -242
  334. package/tests/e2e/mu-virtual-list.test.js +0 -427
  335. package/tests/e2e/perf-memory.test.js +0 -161
  336. package/tests/e2e/puppeteer-helper.js +0 -137
  337. package/tests/e2e/puppeteer.test.js +0 -226
  338. package/tests/e2e/pwa.test.js +0 -261
  339. package/tests/e2e/test-harness.html +0 -319
  340. package/tests/manual/test-components.html +0 -120
  341. package/tests/memory-test.html +0 -309
  342. package/tests/setup-dom.js +0 -93
  343. package/tests/visual-test.html +0 -301
package/dist/AGENTS.md CHANGED
@@ -2,53 +2,53 @@
2
2
 
3
3
  > **SOTA reference for AI coding assistants.** This document is optimized for LLMs generating microUI code.
4
4
 
5
- ## 🚨 REGOLE INVIOLABILI
5
+ ## 🚨 MANDATORY RULES
6
6
 
7
7
  > [!CAUTION]
8
- > Queste regole NON POSSONO MAI essere violate. Qualsiasi codice che viola queste regole deve essere rifiutato.
8
+ > These rules can NEVER be violated. Any code that violates these rules must be rejected.
9
9
 
10
10
  ### ❌ NO SHADOW DOM
11
11
 
12
- **microUI NON DEVE MAI usare Shadow DOM.** Tutti i componenti devono:
13
- - Usare Light DOM (il DOM normale)
14
- - Inserire gli elementi direttamente nel documento
15
- - Usare classi CSS con prefisso `mu-` per l'incapsulamento
16
- - Mai usare `this.attachShadow()` o `this.shadowRoot`
12
+ **microUI must NEVER use Shadow DOM.** All components must:
13
+ - Use Light DOM (normal DOM)
14
+ - Insert elements directly into the document
15
+ - Use CSS classes with `mu-` prefix for encapsulation
16
+ - Never use `this.attachShadow()` or `this.shadowRoot`
17
17
 
18
18
  ```javascript
19
- // ❌ VIETATO - Non usare MAI
19
+ // ❌ FORBIDDEN - Never use this
20
20
  this.attachShadow({ mode: 'open' });
21
21
  this.shadowRoot.innerHTML = '...';
22
22
 
23
- // ✅ CORRETTO - Usa Light DOM
23
+ // ✅ CORRECT - Usa Light DOM
24
24
  this.innerHTML = '...';
25
25
  this.classList.add('mu-component');
26
26
  ```
27
27
 
28
- ### 🧪 TEST ISOLATION OBBLIGATORIA
28
+ ### 🧪 MANDATORY TEST ISOLATION
29
29
 
30
- **I test DEVONO essere eseguiti con `test-isolated.js`**, mai con `bun test` diretto.
30
+ **Tests MUST be run with `test-isolated.js`**, never with `bun test` directly.
31
31
 
32
32
  ```bash
33
- # ❌ SBAGLIATO - Test falliscono per linkedom globalThis pollution
33
+ # ❌ WRONG - Tests fail due to linkedom globalThis pollution
34
34
  bun test tests/components
35
35
 
36
- # ✅ CORRETTO - Ogni test in processo separato
36
+ # ✅ CORRECT - Each test in separate process
37
37
  bun run scripts/test-isolated.js
38
38
 
39
- # ✅ CORRETTO - E2E tests
39
+ # ✅ CORRECT - E2E tests
40
40
  bun run test:e2e
41
41
  ```
42
42
 
43
- **Perché?** linkedom (usato per simulare DOM in unit test) inquina `globalThis` e il registry dei custom elements. Quando i test vengono eseguiti in parallelo nello stesso processo, le registrazioni entrano in conflitto.
43
+ **Why?** linkedom (used to simulate DOM in unit tests) pollutes `globalThis` and the custom elements registry. When tests are run in parallel in the same process, the registrations conflict.
44
44
 
45
45
  ---
46
46
 
47
47
  ## 🛠️ COMPONENT DEVELOPMENT GUIDELINES
48
48
 
49
- > **Linee guida obbligatorie per creare nuovi componenti microUI.** Seguire queste regole previene memory leak, crash e garantisce consistenza con il framework.
49
+ > **Mandatory guidelines for creating new microUI components.** Following these rules prevents memory leaks, crashes, and ensures consistency with the framework.
50
50
 
51
- ### 📋 Template Componente Completo
51
+ ### 📋 Complete Component Template
52
52
 
53
53
  ```javascript
54
54
  /**
@@ -59,7 +59,7 @@ bun run test:e2e
59
59
  */
60
60
 
61
61
  import { MuElement, define } from '../core/MuElement.js';
62
- import { escapeHTML } from '../core/utils.js'; // Per contenuti user-facing
62
+ import { escapeHTML } from '../core/utils.js'; // For user-facing content
63
63
 
64
64
  export class MuExample extends MuElement {
65
65
  static get observedAttributes() {
@@ -75,17 +75,17 @@ export class MuExample extends MuElement {
75
75
  }
76
76
 
77
77
  // ========================
78
- // LIFECYCLE (OBBLIGATORIO)
78
+ // LIFECYCLE (MANDATORY)
79
79
  // ========================
80
80
 
81
81
  connectedCallback() {
82
- super.connectedCallback(); // ⚠️ OBBLIGATORIO - Inizializza AbortController
82
+ super.connectedCallback(); // ⚠️ MANDATORY - Initializes AbortController
83
83
  this.render();
84
84
  }
85
85
 
86
86
  disconnectedCallback() {
87
- super.disconnectedCallback(); // ⚠️ OBBLIGATORIO se usi timer/subscriptions
88
- // Cleanup subscriptions manuali (es. breakpoints.subscribe)
87
+ super.disconnectedCallback(); // ⚠️ MANDATORY if using timer/subscriptions
88
+ // Cleanup manual subscriptions (e.g. breakpoints.subscribe)
89
89
  }
90
90
 
91
91
  attributeChangedCallback(name, oldVal, newVal) {
@@ -115,7 +115,7 @@ export class MuExample extends MuElement {
115
115
  // ========================
116
116
 
117
117
  render() {
118
- // ✅ SEMPRE escapare contenuti user-facing
118
+ // ✅ ALWAYS escape user-facing content
119
119
  this.innerHTML = `
120
120
  <div class="mu-example">
121
121
  <label>${escapeHTML(this.label)}</label>
@@ -137,7 +137,7 @@ export class MuExample extends MuElement {
137
137
  _attachEventListeners() {
138
138
  const input = this.querySelector('input');
139
139
 
140
- // ✅ CORRETTO: Usa this.listen() per auto-cleanup
140
+ // ✅ CORRECT: Usa this.listen() per auto-cleanup
141
141
  this.listen(input, 'input', (e) => {
142
142
  this.dispatchEvent(new CustomEvent('mu-input', {
143
143
  bubbles: true,
@@ -145,10 +145,10 @@ export class MuExample extends MuElement {
145
145
  }));
146
146
  });
147
147
 
148
- // ✅ CORRETTO: this.listen() per eventi window/document
148
+ // ✅ CORRECT: this.listen() per eventi window/document
149
149
  this.listen(window, 'resize', () => this._handleResize());
150
150
 
151
- // ✅ CORRETTO: Keyboard accessibility
151
+ // ✅ CORRECT: Keyboard accessibility
152
152
  if (!this.disabled) {
153
153
  this.setupActivation(() => this._handleClick());
154
154
  }
@@ -159,12 +159,12 @@ export class MuExample extends MuElement {
159
159
  // ========================
160
160
 
161
161
  _startPolling() {
162
- // ✅ CORRETTO: Usa this.setInterval() per auto-cleanup
162
+ // ✅ CORRECT: Usa this.setInterval() per auto-cleanup
163
163
  this.setInterval(() => this._poll(), 5000);
164
164
  }
165
165
 
166
166
  _debounce() {
167
- // ✅ CORRETTO: Usa this.setTimeout() per auto-cleanup
167
+ // ✅ CORRECT: Usa this.setTimeout() per auto-cleanup
168
168
  this.setTimeout(() => this._doSomething(), 300);
169
169
  }
170
170
 
@@ -174,7 +174,7 @@ export class MuExample extends MuElement {
174
174
 
175
175
  _validate() {
176
176
  if (!this.label) {
177
- // ✅ Segnala errori per AI agent debugging
177
+ // ✅ Report errors for AI agent debugging
178
178
  this.logError('MISSING_LABEL', 'mu-example requires a label attribute');
179
179
  }
180
180
  }
@@ -186,76 +186,76 @@ if (!customElements.get('mu-example')) {
186
186
  }
187
187
  ```
188
188
 
189
- ### ⚠️ ANTI-PATTERN: Cosa NON Fare Mai
189
+ ### ⚠️ ANTI-PATTERN: What NEVER to Do
190
190
 
191
191
  ```javascript
192
- // ❌ VIETATO: addEventListener diretto (memory leak)
192
+ // ❌ FORBIDDEN: Direct addEventListener (memory leak)
193
193
  this.querySelector('button').addEventListener('click', handler);
194
194
 
195
- // ❌ VIETATO: setTimeout/setInterval raw (memory leak)
195
+ // ❌ FORBIDDEN: setTimeout/setInterval raw (memory leak)
196
196
  setTimeout(() => this.update(), 1000);
197
197
  setInterval(() => this.poll(), 5000);
198
198
 
199
- // ❌ VIETATO: Nessun super.connectedCallback() (AbortController non inizializzato)
199
+ // ❌ FORBIDDEN: No super.connectedCallback() (AbortController not initialized)
200
200
  connectedCallback() {
201
- this.render(); // this.listen() non funzionerà!
201
+ this.render(); // this.listen() won't work!
202
202
  }
203
203
 
204
- // ❌ VIETATO: innerHTML senza escaping (XSS vulnerability)
204
+ // ❌ FORBIDDEN: innerHTML without escaping (XSS vulnerability)
205
205
  this.innerHTML = `<div>${userInput}</div>`;
206
206
 
207
- // ❌ VIETATO: removeEventListener con arrow function (non funziona mai)
207
+ // ❌ FORBIDDEN: removeEventListener with arrow function (never works)
208
208
  window.removeEventListener('resize', () => this.handleResize());
209
209
 
210
- // ❌ VIETATO: Temporal dead zone con setTimeout
210
+ // ❌ FORBIDDEN: Temporal dead zone with setTimeout
211
211
  const id = setTimeout(() => { this._timers.delete(id); }, delay);
212
212
 
213
- // ❌ VIETATO: Shadow DOM
213
+ // ❌ FORBIDDEN: Shadow DOM
214
214
  this.attachShadow({ mode: 'open' });
215
215
 
216
- // ❌ VIETATO: DOM Teleportation senza reset del flag listener (Bug Jan 2026)
217
- // Quando un componente sposta SE STESSO nel DOM (es. appendChild(this)),
218
- // disconnectedCallback aborta i listener ma il flag impedisce ri-registrazione
216
+ // ❌ FORBIDDEN: DOM Teleportation without resetting listener flag (Bug Jan 2026)
217
+ // When a component moves ITSELF in the DOM (e.g. appendChild(this)),
218
+ // disconnectedCallback aborts listeners but the flag prevents re-registration
219
219
  connectedCallback() {
220
- if (!this._listenerSetup) { // ⚠️ Il flag resta true dopo disconnect!
220
+ if (!this._listenerSetup) { // ⚠️ Flag stays true after disconnect!
221
221
  this._listenerSetup = true;
222
- this.listen(this, 'click', handler); // Perso dopo teleportation
222
+ this.listen(this, 'click', handler); // Lost after teleportation
223
223
  }
224
224
  }
225
- // ✅ CORRETTO: Reset del flag in disconnectedCallback
225
+ // ✅ CORRECT: Reset flag in disconnectedCallback
226
226
  disconnectedCallback() {
227
227
  super.disconnectedCallback();
228
- this._listenerSetup = false; // Permette ri-registrazione dopo move
228
+ this._listenerSetup = false; // Allows re-registration after move
229
229
  }
230
230
  ```
231
231
 
232
- ### ✅ PATTERN OBBLIGATORI
232
+ ### ✅ MANDATORY PATTERNS
233
233
 
234
- | Pattern | Metodo | Perché |
234
+ | Pattern | Method | Why |
235
235
  |---------|--------|--------|
236
236
  | **Event Listeners** | `this.listen(target, type, handler)` | Auto-cleanup via AbortController |
237
- | **Timers** | `this.setTimeout()` / `this.setInterval()` | Auto-cleanup su disconnectedCallback |
238
- | **XSS Prevention** | `escapeHTML(userInput)` | Previene injection in innerHTML |
239
- | **Keyboard A11y** | `this.setupActivation(callback)` | Gestisce Enter/Space per elementi interattivi |
240
- | **AI Debugging** | `this.logError(code, message)` | Errori strutturati per AI agents |
241
- | **Lifecycle** | `super.connectedCallback()` | Inizializza AbortController per this.listen() |
242
- | **DOM Teleportation** | Reset flag in `disconnectedCallback()` | Previene listener orfani dopo move |
237
+ | **Timers** | `this.setTimeout()` / `this.setInterval()` | Auto-cleanup on disconnectedCallback |
238
+ | **XSS Prevention** | `escapeHTML(userInput)` | Prevents injection in innerHTML |
239
+ | **Keyboard A11y** | `this.setupActivation(callback)` | Handles Enter/Space for interactive elements |
240
+ | **AI Debugging** | `this.logError(code, message)` | Structured errors for AI agents |
241
+ | **Lifecycle** | `super.connectedCallback()` | Initializes AbortController for this.listen() |
242
+ | **DOM Teleportation** | Reset flag in `disconnectedCallback()` | Prevents orphan listeners after move |
243
243
 
244
244
  ### 🚀 SOTA Patterns (Feb 2026)
245
245
 
246
- Pattern moderni che dovrebbero essere usati per nuovi componenti e per migrazioni.
246
+ Modern patterns that should be used for new components and migrations.
247
247
 
248
- #### ✅ Performance CSS (COMPLETATO - v3.5.28)
248
+ #### ✅ Performance CSS (Implemented)
249
249
 
250
- Il framework applica **by default** le seguenti ottimizzazioni:
250
+ The framework applies **by default** the following optimizations:
251
251
 
252
- | Tecnica | File | Beneficio |
252
+ | Technique | File | Benefit |
253
253
  |---------|------|-----------|
254
- | `will-change` | animations.css | GPU compositor hints per 13+ classi animazione |
255
- | `CSS contain` | layout.css, components.css | Isola repaint scope per mu-layout, modals |
256
- | `content-visibility: auto` | components.css | Skip rendering off-screen per mu-example |
257
- | Speculation Rules API | shell.html | Prefetch route bundle predittivo |
258
- | View Transitions API | shell.html | Animazioni smooth tra pagine SPA |
254
+ | `will-change` | animations.css | GPU compositor hints for 13+ animation classes |
255
+ | `CSS contain` | layout.css, components.css | Isolates repaint scope for mu-layout, modals |
256
+ | `content-visibility: auto` | components.css | Skip rendering off-screen for mu-example |
257
+ | Speculation Rules API | shell.html | Predictive route bundle prefetch |
258
+ | View Transitions API | shell.html | Smooth page transitions in SPA |
259
259
 
260
260
  **Lighthouse Score**: 98/100 Performance, 100/100 Accessibility/BP/SEO
261
261
 
@@ -276,37 +276,37 @@ mu-layout {
276
276
  }
277
277
  ```
278
278
 
279
- #### ✅ Native `<dialog>` per Modal (COMPLETATO)
280
- **mu-modal** usa ora `<dialog>` nativo con `showModal()`:
281
- - Top-layer automatico (niente z-index manuali)
282
- - Focus trap built-in
283
- - ESC key gestito nativamente
284
- - `::backdrop` per scrim animato
285
- - `margin: auto` per centrare
279
+ #### ✅ Native `<dialog>` for Modal (COMPLETED)
280
+ **mu-modal** now uses native `<dialog>` with `showModal()`:
281
+ - Automatic top-layer (no manual z-index)
282
+ - Built-in focus trap
283
+ - Native ESC key handling
284
+ - Animated `::backdrop` scrim
285
+ - `margin: auto` for centering
286
286
 
287
287
  ```javascript
288
288
  // ✅ SOTA: Native dialog
289
289
  this.#dialog = document.createElement('dialog');
290
290
  this.#dialog.showModal();
291
291
 
292
- // ❌ VECCHIO: Position fixed + z-index + manual focus trap
292
+ // ❌ OLD: Position fixed + z-index + manual focus trap
293
293
  this.style.cssText = 'position:fixed;z-index:9999;';
294
294
  document.body.appendChild(this);
295
295
  ```
296
296
 
297
- #### 🔜 Popover API (CANDIDATI)
298
- I seguenti componenti potrebbero beneficiare della **Popover API**:
297
+ #### 🔜 Popover API (CANDIDATES)
298
+ The following components could benefit from the **Popover API**:
299
299
 
300
- | Componente | Pattern Attuale | SOTA Migration |
300
+ | Component | Current Pattern | SOTA Migration |
301
301
  |------------|----------------|----------------|
302
302
  | `mu-dropdown` | Portal container + z-index | `popover` attribute |
303
303
  | `mu-tooltip` | Position fixed + z-index | `popover` attribute |
304
304
 
305
- **Benefici Popover API**:
306
- - Light-dismiss automatico (click outside)
307
- - Top-layer (niente z-index issues)
305
+ **Popover API Benefits**:
306
+ - Automatic light-dismiss (click outside)
307
+ - Top-layer (no z-index issues)
308
308
  - `showPopover()` / `hidePopover()` / `togglePopover()`
309
- - Keyboard accessibility built-in
309
+ - Built-in keyboard accessibility
310
310
 
311
311
  ```html
312
312
  <!-- SOTA: Declarative popover -->
@@ -316,33 +316,33 @@ I seguenti componenti potrebbero beneficiare della **Popover API**:
316
316
 
317
317
  ### 🔒 Security Checklist
318
318
 
319
- Prima di completare un componente, verifica:
319
+ Before completing a component, verify:
320
320
 
321
- - [ ] Tutti i contenuti user-facing usano `escapeHTML()`
322
- - [ ] Attributi interpolati in innerHTML sono escaped
323
- - [ ] Slot content controllato (developer-provided) o escaped
324
- - [ ] Nessun `eval()`, `Function()`, `document.write()`
321
+ - [ ] All user-facing content uses `escapeHTML()`
322
+ - [ ] Interpolated attributes in innerHTML are escaped
323
+ - [ ] Slot content controlled (developer-provided) or escaped
324
+ - [ ] No `eval()`, `Function()`, `document.write()`
325
325
 
326
326
  ### ♿ Accessibility Checklist
327
327
 
328
- - [ ] Elementi interattivi hanno `tabindex="0"`
329
- - [ ] Role ARIA appropriato (`role="button"`, `role="menuitem"`, etc.)
330
- - [ ] `setupActivation()` per attivazione via keyboard (Enter/Space)
331
- - [ ] `aria-label` o label associata per screen reader
332
- - [ ] Stati (`aria-checked`, `aria-expanded`, etc.) aggiornati dinamicamente
328
+ - [ ] Interactive elements have `tabindex="0"`
329
+ - [ ] Appropriate ARIA role (`role="button"`, `role="menuitem"`, etc.)
330
+ - [ ] `setupActivation()` for keyboard activation (Enter/Space)
331
+ - [ ] `aria-label` or associated label for screen readers
332
+ - [ ] States (`aria-checked`, `aria-expanded`, etc.) dynamically updated
333
333
 
334
334
  ### 🧪 Testing Checklist
335
335
 
336
- - [ ] Unit test con `bun run scripts/test-isolated.js`
337
- - [ ] E2E test per interazioni browser reali
336
+ - [ ] Unit test with `bun run scripts/test-isolated.js`
337
+ - [ ] E2E test for real browser interactions
338
338
  - [ ] Coverage ≥97%
339
- - [ ] Test memory leak: componente aggiunto/rimosso dal DOM non lascia listener
339
+ - [ ] Test memory leak: component added/removed from DOM leaves no listeners
340
340
 
341
341
  ---
342
342
 
343
343
  ## TL;DR - Copy-Paste Templates
344
344
 
345
- ### Agent-First Features (v3.5)
345
+ ### Agent-First Features
346
346
  microUI is optimized for AI Agents with deep introspection, runtime feedback, enterprise-scale infrastructure, and 2026 multimodal/MCP support.
347
347
 
348
348
  **1. Introspection (Metadata)**
@@ -359,7 +359,7 @@ const errors = await page.evaluate(() => window.__MICROUI_ERRORS__);
359
359
  if (errors.length > 0) console.error('microUI Errors:', errors);
360
360
  ```
361
361
 
362
- **3. Agent API (v3.3) - LLM-Friendly Component Access**
362
+ **3. Agent API - LLM-Friendly Component Access**
363
363
  Direct API for LLM agents to introspect and interact with components:
364
364
 
365
365
  ```javascript
@@ -385,7 +385,7 @@ const components = microUI.getRegisteredComponents();
385
385
  // Returns: Map<tag, constructor>
386
386
  ```
387
387
 
388
- **4. Enterprise-Scale Features (v3.4) - Large Application Infrastructure**
388
+ **4. Enterprise-Scale Features - Large Application Infrastructure**
389
389
 
390
390
  For building complex, multi-team applications:
391
391
 
@@ -437,7 +437,7 @@ microUI.getErrors(); // All caught errors
437
437
  </mu-error-boundary>
438
438
  ```
439
439
 
440
- **5. Agent Automation (v3.5) - 2026 Multimodal & MCP Support**
440
+ **5. Agent Automation - 2026 Multimodal & MCP Support**
441
441
 
442
442
  Based on UI-TARS, A2UI, and Anthropic MCP research (2025-2026):
443
443
 
@@ -726,7 +726,7 @@ microUI follows **Material Design 3 Window Size Classes** for adaptive layouts:
726
726
 
727
727
  ### Breakpoints API
728
728
  ```javascript
729
- import { breakpoints } from 'microui/core/breakpoints';
729
+ import { breakpoints } from 'microui-wc/core/breakpoints';
730
730
 
731
731
  // Reactive subscriptions (for components that need to react to changes)
732
732
  const unsubscribe = breakpoints.subscribe((size) => {
@@ -789,7 +789,7 @@ class MyComponent extends MuElement {
789
789
 
790
790
  ### Signals (Reactive State)
791
791
  ```javascript
792
- import { signal, computed, effect } from 'microui';
792
+ import { signal, computed, effect } from 'microui-wc';
793
793
 
794
794
  const count = signal(0, 'my-counter'); // name for debugging
795
795
  const doubled = computed(() => count() * 2);
@@ -805,7 +805,7 @@ count.peek(); // Read without tracking
805
805
 
806
806
  ### EventBus (CrossBus)
807
807
  ```javascript
808
- import { bus } from 'microui';
808
+ import { bus } from 'microui-wc';
809
809
 
810
810
  // Subscribe
811
811
  const unsub = bus.on('my:event', (data) => console.log(data));
@@ -822,7 +822,7 @@ unsub();
822
822
  Centralized LIFO stack for handling ESC key in modal-like components. When multiple modals/dropdowns are open, ESC closes only the **topmost** one.
823
823
 
824
824
  ```javascript
825
- import { keyboard } from 'microui/core/keyboard';
825
+ import { keyboard } from 'microui-wc/core/keyboard';
826
826
 
827
827
  class MuMyModal extends MuElement {
828
828
  #unsubEsc = null;
@@ -859,7 +859,7 @@ class MuMyModal extends MuElement {
859
859
  Centralized z-index constants to avoid magic numbers. Auto-injected as CSS custom properties.
860
860
 
861
861
  ```javascript
862
- import { Z_INDEX } from 'microui/core/layers';
862
+ import { Z_INDEX } from 'microui-wc/core/layers';
863
863
 
864
864
  // Use in JavaScript
865
865
  this.style.zIndex = Z_INDEX.modal;
@@ -886,7 +886,7 @@ this.style.zIndex = Z_INDEX.modal;
886
886
 
887
887
  ### Confirm Dialog (Agent-Friendly)
888
888
  ```javascript
889
- import { muConfirm } from 'microui';
889
+ import { muConfirm } from 'microui-wc';
890
890
 
891
891
  // Simple confirm - returns Promise<boolean>
892
892
  const ok = await muConfirm('Delete this item?');
@@ -934,7 +934,7 @@ fetcher.addEventListener('mu-success', (e) => {
934
934
 
935
935
  ### Form State Management
936
936
  ```javascript
937
- import { createFormState } from 'microui';
937
+ import { createFormState } from 'microui-wc';
938
938
 
939
939
  const form = document.querySelector('mu-form');
940
940
  const state = createFormState(form, {
@@ -963,7 +963,7 @@ state.reset(); // Reset to initial values
963
963
 
964
964
  ### Toast Notifications
965
965
  ```javascript
966
- import { showToast } from 'microui';
966
+ import { showToast } from 'microui-wc';
967
967
 
968
968
  showToast('Operation successful', {
969
969
  variant: 'success', // 'info' | 'success' | 'warning' | 'error'
@@ -973,7 +973,7 @@ showToast('Operation successful', {
973
973
 
974
974
  ### Theme Control
975
975
  ```javascript
976
- import { Theme } from 'microui';
976
+ import { Theme } from 'microui-wc';
977
977
 
978
978
  Theme.init(); // Auto-detect or use saved
979
979
  Theme.set('dark'); // 'light' | 'dark' | 'system'
@@ -983,7 +983,7 @@ const current = Theme.get();
983
983
 
984
984
  ### View Transitions
985
985
  ```javascript
986
- import { transition } from 'microui';
986
+ import { transition } from 'microui-wc';
987
987
 
988
988
  await transition(() => {
989
989
  document.querySelector('#content').innerHTML = newHTML;
@@ -1002,7 +1002,7 @@ await microUICache.clear();
1002
1002
 
1003
1003
  // Get cache status
1004
1004
  await microUICache.status();
1005
- // Returns: { version: "2.0.18", caches: { "microui-precache-2.0.18": 5 } }
1005
+ // Returns: { version: "0.1.0", caches: { "microui-precache-2.0.18": 5 } }
1006
1006
 
1007
1007
  // Force check for updates
1008
1008
  await microUICache.update();
@@ -1269,7 +1269,7 @@ microUI provides centralized utilities for safe HTML rendering. **Always use the
1269
1269
 
1270
1270
  ```javascript
1271
1271
  // Import centralized utility
1272
- import { escapeHTML } from 'microui';
1272
+ import { escapeHTML } from 'microui-wc';
1273
1273
 
1274
1274
  // ✅ SAFE: Escape user-provided content
1275
1275
  const userName = '<script>alert("xss")</script>';
@@ -1307,7 +1307,7 @@ dist/
1307
1307
  ├── microui.min.js # Full IIFE bundle (231 KB)
1308
1308
  ├── microui.css # Combined CSS (64 KB)
1309
1309
  ├── microui.d.ts # TypeScript definitions
1310
- ├── routes/ # v3.5 Route Bundles (SOTA)
1310
+ ├── routes/ # Route Bundles (SOTA)
1311
1311
  │ ├── shell.js # App Shell (Navbar, Theme, Bus) - 5 KB
1312
1312
  │ ├── home.js # Home route components
1313
1313
  │ ├── chunk-*.js # Shared dependencies (deduplicated)
@@ -1318,7 +1318,7 @@ dist/
1318
1318
 
1319
1319
  ---
1320
1320
 
1321
- ## Automatic Bundle Dependencies (v3.5)
1321
+ ## Automatic Bundle Dependencies
1322
1322
 
1323
1323
  > **Build-time static analysis** detects which components each page uses.
1324
1324
 
@@ -1376,7 +1376,7 @@ const routes = componentsToRoutes(["mu-tabs", "mu-button"]);
1376
1376
  // [\"buttons\", \"tabs\"]
1377
1377
  ```
1378
1378
 
1379
- ### Auto-Versioning (v3.5.2)
1379
+ ### Auto-Versioning
1380
1380
 
1381
1381
  The build script automatically increments the version cache buster in `demo/shell.html`:
1382
1382
 
@@ -1384,12 +1384,12 @@ The build script automatically increments the version cache buster in `demo/shel
1384
1384
  bun run build:framework
1385
1385
  # Output:
1386
1386
  # 🔄 Updating version cache buster...
1387
- # ✅ Version updated to 2.0.23
1387
+ # ✅ Version updated
1388
1388
  ```
1389
1389
 
1390
1390
  **How it works:**
1391
1391
  - Extracts current version from `?v=X.X.X` pattern
1392
- - Increments patch version (e.g., `2.0.21``2.0.22`)
1392
+ - Increments patch version (e.g., `0.1.0 → 0.1.1`)
1393
1393
  - Replaces all occurrences in demo/shell.html
1394
1394
 
1395
1395
  **Benefits:**
@@ -1400,7 +1400,7 @@ bun run build:framework
1400
1400
 
1401
1401
  ---
1402
1402
 
1403
- ## App Shell Architecture (v3.2)
1403
+ ## App Shell Architecture
1404
1404
 
1405
1405
  For SOTA performance, use the **App Shell** pattern. Load the critical shell first, then lazily load routes.
1406
1406
 
@@ -1562,7 +1562,7 @@ Add to `<head>` for faster loading:
1562
1562
  Use the View Transitions API for cinematic page changes:
1563
1563
 
1564
1564
  ```javascript
1565
- import { transition, transitionNamed } from 'microui';
1565
+ import { transition, transitionNamed } from 'microui-wc';
1566
1566
 
1567
1567
  // Basic transition
1568
1568
  await transition(() => {
@@ -1720,7 +1720,7 @@ btn.render?.();
1720
1720
 
1721
1721
  ---
1722
1722
 
1723
- ## Page-Based App Development (v3.2)
1723
+ ## Page-Based App Development
1724
1724
 
1725
1725
  > **For AI Agents building apps with microUI.** This is the recommended architecture.
1726
1726
 
@@ -1905,7 +1905,7 @@ bun run build:framework
1905
1905
  ### Global Store Pattern
1906
1906
  ```javascript
1907
1907
  // store/index.js - Centralized reactive state
1908
- import { signal, computed, effect } from 'microui';
1908
+ import { signal, computed, effect } from 'microui-wc';
1909
1909
 
1910
1910
  export const store = {
1911
1911
  // Core state
@@ -1952,7 +1952,7 @@ if (savedUser) store.user.set(JSON.parse(savedUser));
1952
1952
  ### Binding State to Components
1953
1953
  ```javascript
1954
1954
  import { store } from './store/index.js';
1955
- import { effect } from 'microui';
1955
+ import { effect } from 'microui-wc';
1956
1956
 
1957
1957
  // Auto-update UI when state changes
1958
1958
  effect(() => {