@visulima/dev-toolbar 1.0.0-alpha.3 → 1.0.0-alpha.30

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 (172) hide show
  1. package/CHANGELOG.md +266 -0
  2. package/LICENSE.md +137 -5
  3. package/README.md +11 -1
  4. package/bin/mcp.js +29 -0
  5. package/dist/apps/a11y/index.d.ts +3 -2
  6. package/dist/apps/a11y/index.js +3 -3
  7. package/dist/apps/annotations/index.d.ts +4 -0
  8. package/dist/apps/annotations/index.js +18 -0
  9. package/dist/apps/assets/index.d.ts +4 -0
  10. package/dist/apps/assets/index.js +16 -0
  11. package/dist/apps/inspector/index.d.ts +3 -2
  12. package/dist/apps/inspector/index.js +15 -2
  13. package/dist/apps/module-graph/index.d.ts +3 -2
  14. package/dist/apps/module-graph/index.js +2 -2
  15. package/dist/apps/performance/index.d.ts +3 -2
  16. package/dist/apps/performance/index.js +2 -2
  17. package/dist/apps/seo/index.d.ts +3 -2
  18. package/dist/apps/seo/index.js +2 -2
  19. package/dist/apps/settings/index.d.ts +3 -2
  20. package/dist/apps/settings/index.js +2 -2
  21. package/dist/apps/tailwind/index.d.ts +3 -2
  22. package/dist/apps/tailwind/index.js +6 -6
  23. package/dist/apps/timeline/index.d.ts +3 -2
  24. package/dist/apps/timeline/index.js +2 -2
  25. package/dist/apps/vite-config/index.d.ts +3 -2
  26. package/dist/apps/vite-config/index.js +2 -2
  27. package/dist/client/overlay.d.ts +1 -1
  28. package/dist/client/overlay.js +1 -1
  29. package/dist/index.d.ts +143 -7
  30. package/dist/index.js +1 -1
  31. package/dist/mcp/server.d.ts +2 -0
  32. package/dist/mcp/server.js +1 -0
  33. package/dist/packem_chunks/inject-source.js +9 -1
  34. package/dist/packem_shared/Alert-D2CvX4fw.js +1 -0
  35. package/dist/packem_shared/Badge-BEgU04nl.js +1 -0
  36. package/dist/packem_shared/Button-Bkx66Co7.js +1 -0
  37. package/dist/packem_shared/Card-CJa4vHVc.js +1 -0
  38. package/dist/packem_shared/Icon-B6UHkC0o.js +1 -0
  39. package/dist/packem_shared/Input-Cs6aduTi.js +1 -0
  40. package/dist/packem_shared/Label-DyCng4Cp.js +1 -0
  41. package/dist/packem_shared/Popover-BtFVaZYg.js +1 -0
  42. package/dist/packem_shared/Progress-DN6zn-0l.js +1 -0
  43. package/dist/packem_shared/Select-DgQ4ss-s.js +1 -0
  44. package/dist/packem_shared/Separator-D38mKeZv.js +1 -0
  45. package/dist/packem_shared/Skeleton-Dv-tcA1P.js +1 -0
  46. package/dist/packem_shared/Switch-C3NTpeoR.js +1 -0
  47. package/dist/packem_shared/Tabs-DKWMiawt.js +1 -0
  48. package/dist/packem_shared/Textarea-Yfg3dLZi.js +1 -0
  49. package/dist/packem_shared/Tooltip-CioncSXj.js +1 -0
  50. package/dist/packem_shared/annotation-settings-Bv0TH4WI.js +1 -0
  51. package/dist/packem_shared/annotation-store-bLQRYMaI.js +1 -0
  52. package/dist/packem_shared/app.d-SmKEDxsI.d.ts +229 -0
  53. package/dist/packem_shared/clsx-wGlvpUfw.js +1 -0
  54. package/dist/packem_shared/createClientRPCContext-DgRxrllw.js +1 -0
  55. package/dist/packem_shared/createDevToolbarHook-4bZZiHPI.js +1 -0
  56. package/dist/packem_shared/createServerRPCContext-D-yZrEjs.js +1 -0
  57. package/dist/packem_shared/getTimelineStore-B1cfjWV8.js +1 -0
  58. package/dist/packem_shared/global-api.d-BLfn-OUA.d.ts +547 -0
  59. package/dist/packem_shared/{setupGlobalHook-CFuxsCyl.js → setupGlobalHook-CCf9Logv.js} +1 -1
  60. package/dist/packem_shared/sharedToolbarStylesheet-pA-B0Jt2.js +2 -0
  61. package/dist/packem_shared/store-DaUtLjf3.js +1 -0
  62. package/dist/packem_shared/use-frame-state-CxrlPUM5.js +1 -0
  63. package/dist/packem_shared/use-theme-zpm4zmqP.js +1 -0
  64. package/dist/toolbar/index.d.ts +152 -55
  65. package/dist/toolbar/index.js +3 -3
  66. package/dist/ui/index.d.ts +382 -17
  67. package/dist/ui/index.js +1 -1
  68. package/dist/vite-plugin.d.ts +155 -141
  69. package/dist/vite-plugin.js +5 -2
  70. package/package.json +39 -19
  71. package/dist/apps/a11y/a11y-app.d.ts +0 -5
  72. package/dist/apps/a11y/a11y-store.d.ts +0 -46
  73. package/dist/apps/a11y/a11y-tooltip.d.ts +0 -11
  74. package/dist/apps/inspector/inspector-app.d.ts +0 -12
  75. package/dist/apps/module-graph/module-graph-app.d.ts +0 -5
  76. package/dist/apps/more/index.d.ts +0 -3
  77. package/dist/apps/more/index.js +0 -19
  78. package/dist/apps/more/more-app.d.ts +0 -5
  79. package/dist/apps/performance/performance-app.d.ts +0 -5
  80. package/dist/apps/performance/performance-tooltip.d.ts +0 -5
  81. package/dist/apps/seo/seo-app.d.ts +0 -5
  82. package/dist/apps/settings/settings-app.d.ts +0 -4
  83. package/dist/apps/tailwind/tailwind-app.d.ts +0 -5
  84. package/dist/apps/timeline/timeline-app.d.ts +0 -5
  85. package/dist/apps/vite-config/vite-config-app.d.ts +0 -5
  86. package/dist/hooks/create-hook.d.ts +0 -10
  87. package/dist/hooks/events.d.ts +0 -5
  88. package/dist/hooks/global-hook.d.ts +0 -15
  89. package/dist/hooks/index.d.ts +0 -6
  90. package/dist/packem_shared/Alert-H-x1JuZ0.js +0 -1
  91. package/dist/packem_shared/Badge-C30mDKKG.js +0 -1
  92. package/dist/packem_shared/Button-DODNCTPZ.js +0 -1
  93. package/dist/packem_shared/Card-DdI7Wn3t.js +0 -1
  94. package/dist/packem_shared/Icon-DWFLZkwW.js +0 -1
  95. package/dist/packem_shared/Input-GfbOwAkK.js +0 -1
  96. package/dist/packem_shared/Label-Bzi47aUf.js +0 -1
  97. package/dist/packem_shared/Popover-o3Vkvndp.js +0 -1
  98. package/dist/packem_shared/Progress-vGfFpxRn.js +0 -1
  99. package/dist/packem_shared/Separator-DQGeJPQg.js +0 -1
  100. package/dist/packem_shared/Skeleton-BYXau6jM.js +0 -1
  101. package/dist/packem_shared/Switch-BeC78S_T.js +0 -1
  102. package/dist/packem_shared/Tabs-BBc4S-2T.js +0 -1
  103. package/dist/packem_shared/Textarea-DvbSX13V.js +0 -1
  104. package/dist/packem_shared/TimelineStore-BgBrirKd.js +0 -1
  105. package/dist/packem_shared/Tooltip-BwK-2I9P.js +0 -1
  106. package/dist/packem_shared/cn-DWLJYh3h.js +0 -1
  107. package/dist/packem_shared/createClientRPCContext-DzKQpKTk.js +0 -1
  108. package/dist/packem_shared/createDevToolbarHook-DGNxqk8N.js +0 -1
  109. package/dist/packem_shared/createServerRPCContext-CRd6VAWp.js +0 -1
  110. package/dist/packem_shared/sharedToolbarStylesheet-DHHoFz2-.js +0 -2
  111. package/dist/packem_shared/store-BxE0w51s.js +0 -1
  112. package/dist/packem_shared/use-theme-CX1gG6Sv.js +0 -1
  113. package/dist/performance/monitor.d.ts +0 -115
  114. package/dist/rpc/client.d.ts +0 -7
  115. package/dist/rpc/functions/module-graph.d.ts +0 -17
  116. package/dist/rpc/functions/open-in-editor.d.ts +0 -14
  117. package/dist/rpc/functions/tailwind-config.d.ts +0 -12
  118. package/dist/rpc/functions/vite-config.d.ts +0 -7
  119. package/dist/rpc/server.d.ts +0 -12
  120. package/dist/timeline/capture.d.ts +0 -6
  121. package/dist/timeline/index.d.ts +0 -7
  122. package/dist/timeline/store.d.ts +0 -52
  123. package/dist/toolbar/app-manager.d.ts +0 -102
  124. package/dist/toolbar/components/app-button.d.ts +0 -19
  125. package/dist/toolbar/components/app-canvas.d.ts +0 -12
  126. package/dist/toolbar/components/app-tooltip-overlay.d.ts +0 -12
  127. package/dist/toolbar/components/first-visit-hint.d.ts +0 -16
  128. package/dist/toolbar/components/index.d.ts +0 -4
  129. package/dist/toolbar/components/pinned-tooltip-card.d.ts +0 -22
  130. package/dist/toolbar/components/toolbar-bar.d.ts +0 -14
  131. package/dist/toolbar/components/toolbar-container.d.ts +0 -55
  132. package/dist/toolbar/components/vite-overlay-button.d.ts +0 -14
  133. package/dist/toolbar/context/index.d.ts +0 -2
  134. package/dist/toolbar/context/toolbar-context.d.ts +0 -106
  135. package/dist/toolbar/global-api.d.ts +0 -24
  136. package/dist/toolbar/helpers.d.ts +0 -6
  137. package/dist/toolbar/hooks/index.d.ts +0 -10
  138. package/dist/toolbar/hooks/use-apps.d.ts +0 -13
  139. package/dist/toolbar/hooks/use-frame-state.d.ts +0 -94
  140. package/dist/toolbar/hooks/use-panel-visible.d.ts +0 -21
  141. package/dist/toolbar/hooks/use-position.d.ts +0 -22
  142. package/dist/toolbar/hooks/use-theme.d.ts +0 -13
  143. package/dist/toolbar/hooks/use-toolbar.d.ts +0 -14
  144. package/dist/toolbar/settings.d.ts +0 -17
  145. package/dist/toolbar/stylesheet.d.ts +0 -1
  146. package/dist/toolbar/utils/index.d.ts +0 -12
  147. package/dist/types/app.d.ts +0 -175
  148. package/dist/types/global-api.d.ts +0 -102
  149. package/dist/types/hooks.d.ts +0 -88
  150. package/dist/types/index.d.ts +0 -12
  151. package/dist/types/messaging.d.ts +0 -43
  152. package/dist/types/rpc.d.ts +0 -100
  153. package/dist/types/timeline.d.ts +0 -62
  154. package/dist/types/toolbar.d.ts +0 -56
  155. package/dist/ui/components/alert.d.ts +0 -20
  156. package/dist/ui/components/badge.d.ts +0 -10
  157. package/dist/ui/components/button.d.ts +0 -12
  158. package/dist/ui/components/card.d.ts +0 -17
  159. package/dist/ui/components/icon.d.ts +0 -21
  160. package/dist/ui/components/input.d.ts +0 -8
  161. package/dist/ui/components/label.d.ts +0 -8
  162. package/dist/ui/components/popover.d.ts +0 -27
  163. package/dist/ui/components/progress.d.ts +0 -8
  164. package/dist/ui/components/separator.d.ts +0 -9
  165. package/dist/ui/components/skeleton.d.ts +0 -7
  166. package/dist/ui/components/switch.d.ts +0 -12
  167. package/dist/ui/components/tabs.d.ts +0 -29
  168. package/dist/ui/components/textarea.d.ts +0 -8
  169. package/dist/ui/components/tooltip.d.ts +0 -19
  170. package/dist/utils/cn.d.ts +0 -8
  171. package/dist/vite/inject-source.d.ts +0 -25
  172. package/dist/vite/matcher.d.ts +0 -5
package/CHANGELOG.md CHANGED
@@ -1,3 +1,269 @@
1
+ ## @visulima/dev-toolbar [1.0.0-alpha.30](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.29...@visulima/dev-toolbar@1.0.0-alpha.30) (2026-05-27)
2
+
3
+ ## @visulima/dev-toolbar [1.0.0-alpha.29](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.28...@visulima/dev-toolbar@1.0.0-alpha.29) (2026-05-26)
4
+
5
+ ### Miscellaneous Chores
6
+
7
+ * sorted package.json ([b47c545](https://github.com/visulima/visulima/commit/b47c545591600fdab17d5cd3a3fbc68b61e199da))
8
+
9
+ ## @visulima/dev-toolbar [1.0.0-alpha.28](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.27...@visulima/dev-toolbar@1.0.0-alpha.28) (2026-05-26)
10
+
11
+ ### Bug Fixes
12
+
13
+ * **security:** address codeql findings across packages ([3366f9c](https://github.com/visulima/visulima/commit/3366f9c07d54bdde5242fbd90780baa4634de179))
14
+
15
+ ### Miscellaneous Chores
16
+
17
+ * **ci-stability:** green CI across vis, native, lint, tests, attw ([#651](https://github.com/visulima/visulima/issues/651)) ([d4eb684](https://github.com/visulima/visulima/commit/d4eb684b5f75c818c9251048c605a0ed54a268e3))
18
+ * **repo:** apply eslint --fix and prettier --fix across packages ([#650](https://github.com/visulima/visulima/issues/650)) ([2e26a84](https://github.com/visulima/visulima/commit/2e26a84774f218f21345e9a8ecd68236b6542743)), closes [#620](https://github.com/visulima/visulima/issues/620)
19
+ * **repo:** sort package.json keys across all packages ([e1fd9ab](https://github.com/visulima/visulima/commit/e1fd9ab467ef96a98c777da1572ff6a50fcf7e71))
20
+
21
+ ### Tests
22
+
23
+ * **repo:** add dist runtime + types integration tests ([32ee300](https://github.com/visulima/visulima/commit/32ee300b7184117a0ddf9f9d390f75f8932d5ed9))
24
+ * **repo:** cover bin entry points in dist integration suite ([7479ef1](https://github.com/visulima/visulima/commit/7479ef113cf5ccef25692619082afb1b6a0eecab))
25
+
26
+ ## @visulima/dev-toolbar [1.0.0-alpha.27](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.26...@visulima/dev-toolbar@1.0.0-alpha.27) (2026-05-20)
27
+
28
+ ### Tests
29
+
30
+ * **dev-toolbar:** rebind localStorage globals for Node 25 ([ee5e1f8](https://github.com/visulima/visulima/commit/ee5e1f8774cce170c95248d9c4d74d91fafe90e7))
31
+
32
+ ## @visulima/dev-toolbar [1.0.0-alpha.26](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.25...@visulima/dev-toolbar@1.0.0-alpha.26) (2026-05-19)
33
+
34
+ ## @visulima/dev-toolbar [1.0.0-alpha.25](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.24...@visulima/dev-toolbar@1.0.0-alpha.25) (2026-05-16)
35
+
36
+ ## @visulima/dev-toolbar [1.0.0-alpha.24](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.23...@visulima/dev-toolbar@1.0.0-alpha.24) (2026-05-14)
37
+
38
+ ### Bug Fixes
39
+
40
+ * **dev-toolbar:** cast form element to AnnotationElement shape ([618e91e](https://github.com/visulima/visulima/commit/618e91e5535a75f1d2d0132e0f7085987af79b34))
41
+ * **dev-toolbar:** scope JSX inject to enclosing function ([1b7e82a](https://github.com/visulima/visulima/commit/1b7e82af78cd599bd35b58a2f3e232c25b7e5192))
42
+ * **dev-toolbar:** silence unnecessary-type-assertion on form element cast ([86282de](https://github.com/visulima/visulima/commit/86282de06a3581be69210a12f12e307ac6ca99c8))
43
+
44
+ ### Miscellaneous Chores
45
+
46
+ * **error:** apply prettier and eslint formatting sweep ([25c5eaf](https://github.com/visulima/visulima/commit/25c5eaf4989bddfe860b52aea113b3e229fea84f))
47
+
48
+ ## @visulima/dev-toolbar [1.0.0-alpha.23](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.22...@visulima/dev-toolbar@1.0.0-alpha.23) (2026-05-11)
49
+
50
+ ## @visulima/dev-toolbar [1.0.0-alpha.22](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.21...@visulima/dev-toolbar@1.0.0-alpha.22) (2026-05-11)
51
+
52
+ ## @visulima/dev-toolbar [1.0.0-alpha.21](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.20...@visulima/dev-toolbar@1.0.0-alpha.21) (2026-05-10)
53
+
54
+ ## @visulima/dev-toolbar [1.0.0-alpha.20](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.19...@visulima/dev-toolbar@1.0.0-alpha.20) (2026-05-10)
55
+
56
+ ## @visulima/dev-toolbar [1.0.0-alpha.19](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.18...@visulima/dev-toolbar@1.0.0-alpha.19) (2026-05-07)
57
+
58
+ ## @visulima/dev-toolbar [1.0.0-alpha.18](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.17...@visulima/dev-toolbar@1.0.0-alpha.18) (2026-05-07)
59
+
60
+ ### Miscellaneous Chores
61
+
62
+ * **dev-toolbar:** bump peer ranges for @modelcontextprotocol/sdk and vite ([b6bbb40](https://github.com/visulima/visulima/commit/b6bbb406766e74f822ffe9956e85acf5feaa1ded))
63
+
64
+ ## @visulima/dev-toolbar [1.0.0-alpha.17](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.16...@visulima/dev-toolbar@1.0.0-alpha.17) (2026-05-06)
65
+
66
+ ## @visulima/dev-toolbar [1.0.0-alpha.16](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.15...@visulima/dev-toolbar@1.0.0-alpha.16) (2026-05-06)
67
+
68
+ ### Miscellaneous Chores
69
+
70
+ * **dev-toolbar:** apply prettier and eslint quote-style auto-fix ([3bb9b50](https://github.com/visulima/visulima/commit/3bb9b50337d5bbc0e3a1bd372a69ceebad1fb188))
71
+ * **dev-toolbar:** housekeeping cleanup ([d7c5ed5](https://github.com/visulima/visulima/commit/d7c5ed5518069405476212d8a9814af50cf2ef15))
72
+
73
+ ## @visulima/dev-toolbar [1.0.0-alpha.15](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.14...@visulima/dev-toolbar@1.0.0-alpha.15) (2026-05-04)
74
+
75
+ ### Miscellaneous Chores
76
+
77
+ * **dev-toolbar:** allow zod v4 and align eslint-plugin-zod with catalog ([70733ad](https://github.com/visulima/visulima/commit/70733ad6155c3bc460d2bc0943f88af59b7b6725))
78
+
79
+ ## @visulima/dev-toolbar [1.0.0-alpha.14](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.13...@visulima/dev-toolbar@1.0.0-alpha.14) (2026-04-30)
80
+
81
+ ### Miscellaneous Chores
82
+
83
+ * **dev-toolbar:** upgrade packem to 2.0.0-alpha.76 ([4a496ed](https://github.com/visulima/visulima/commit/4a496edb863ecd414c34ff043d49ba3171538ccd))
84
+ * re-sort workspace package.json files via vis sort-package-json ([f625696](https://github.com/visulima/visulima/commit/f625696cfac974325774b3243e1a83c3d23acbd7))
85
+ * simplify pnpm-workspace packages list ([7cab221](https://github.com/visulima/visulima/commit/7cab221163632d9b7aa044a6f88c49083103a869))
86
+
87
+ ## @visulima/dev-toolbar [1.0.0-alpha.13](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.12...@visulima/dev-toolbar@1.0.0-alpha.13) (2026-04-22)
88
+
89
+ ### Bug Fixes
90
+
91
+ * Remove JSR configuration generation script and generated jsr.json files ([#616](https://github.com/visulima/visulima/issues/616)) ([533744b](https://github.com/visulima/visulima/commit/533744b103b74896941db5b727173e617a27a63b))
92
+
93
+ ## @visulima/dev-toolbar [1.0.0-alpha.12](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.11...@visulima/dev-toolbar@1.0.0-alpha.12) (2026-04-21)
94
+
95
+ ### Miscellaneous Chores
96
+
97
+ * jsr.json update and lock file ([73fce38](https://github.com/visulima/visulima/commit/73fce38c7cb4603f3fffb88609b1b18e2feb4937))
98
+
99
+ ## @visulima/dev-toolbar [1.0.0-alpha.11](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.10...@visulima/dev-toolbar@1.0.0-alpha.11) (2026-04-21)
100
+
101
+ ### Miscellaneous Chores
102
+
103
+ * update the jsr.json ([864ab7e](https://github.com/visulima/visulima/commit/864ab7e71c4b5ae82f64792d1ae8debfea2c539b))
104
+
105
+ ## @visulima/dev-toolbar [1.0.0-alpha.10](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.9...@visulima/dev-toolbar@1.0.0-alpha.10) (2026-04-21)
106
+
107
+ ### Bug Fixes
108
+
109
+ * **dev-toolbar:** resolve type errors in annotation overlay and perf monitor ([b201aa6](https://github.com/visulima/visulima/commit/b201aa6605a9fa030ce74f58743e10a042183156))
110
+ * **tui:** inline component and hook barrel exports in ink entry ([1cf8dd2](https://github.com/visulima/visulima/commit/1cf8dd25c91a2001268fb9d964d95df649bf7832))
111
+
112
+ ### Miscellaneous Chores
113
+
114
+ * **api-platform:** apply pending lint and source updates ([3fb0043](https://github.com/visulima/visulima/commit/3fb0043a4cf35f752ca89a09a077100ae0142da8))
115
+ * bump engines.node to ^22.14.0 || >=24.10.0 ([c3d0931](https://github.com/visulima/visulima/commit/c3d0931d1504e4f21ebf50ea680cfa7ce4ba15ce))
116
+ * **dev-toolbar:** apply formatter and type refinements ([167c654](https://github.com/visulima/visulima/commit/167c654ae2f7c57a4ff7d0c84f5196de4a72c8d7))
117
+ * **dev-toolbar:** apply pending changes ([e16638c](https://github.com/visulima/visulima/commit/e16638c00907a4612fa53f74f141bd3aac9f6ca9))
118
+ * **dev-toolbar:** apply pending lint and source updates ([ece08e1](https://github.com/visulima/visulima/commit/ece08e16c85e927d1eead02eea69f15d5ea1a3dc))
119
+ * **dev-toolbar:** enforce curly braces and apply lint fixes ([1b6797e](https://github.com/visulima/visulima/commit/1b6797ec1844979a7bb3ac3aa094e42a4fe3a68b))
120
+ * fixed jsr.json ([5d85e51](https://github.com/visulima/visulima/commit/5d85e5179de38e284ec433b14d77c71a1619c8d6))
121
+
122
+ ### Code Refactoring
123
+
124
+ * replace inline import() types with top-level imports ([4569a4c](https://github.com/visulima/visulima/commit/4569a4ca04723da069f985855dcfab292f7347e1))
125
+
126
+ ### Tests
127
+
128
+ * **tui, dev-toolbar:** fix expect.assertions counts on looped assertions ([898bc59](https://github.com/visulima/visulima/commit/898bc59ef217f7c8ee2aa7fdf7da3d355c028b13))
129
+
130
+ ## @visulima/dev-toolbar [1.0.0-alpha.9](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.8...@visulima/dev-toolbar@1.0.0-alpha.9) (2026-04-15)
131
+
132
+ ### Bug Fixes
133
+
134
+ * **dev-toolbar:** add missing DOM property types and tighten getOptionValue fallback ([55326d0](https://github.com/visulima/visulima/commit/55326d02b173211608aefa994aa0e5f54705120d))
135
+ * **dev-toolbar:** replace bogus .toBe(true) assertions with proper matchers ([e672ca4](https://github.com/visulima/visulima/commit/e672ca459bf8d3e9141e277755bc35f2b59dac07))
136
+ * **error-debugging:** resolve eslint and type-safety issues ([886dbff](https://github.com/visulima/visulima/commit/886dbffe3f744c9493fcc54e781de3fd21eebf78))
137
+
138
+ ## @visulima/dev-toolbar [1.0.0-alpha.8](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.7...@visulima/dev-toolbar@1.0.0-alpha.8) (2026-04-08)
139
+
140
+ ### Bug Fixes
141
+
142
+ * **dev-toolbar:** resolve eslint errors ([225128a](https://github.com/visulima/visulima/commit/225128ab192d318b9d997ad793c7c43384e2431e))
143
+ * remove deprecated baseUrl and downlevelIteration from tsconfigs ([a708366](https://github.com/visulima/visulima/commit/a708366b5c3bc73cfde480a712ed397bd921fb93))
144
+ * resolve failing tests across multiple packages ([2b4b6f0](https://github.com/visulima/visulima/commit/2b4b6f04169b60fdc4cf77b293015436a272c0fb))
145
+
146
+ ### Miscellaneous Chores
147
+
148
+ * added og images ([02d9d1e](https://github.com/visulima/visulima/commit/02d9d1e47be3ce75679ea89e857dc4e4bfe4946b))
149
+ * apply linting and formatting fixes across packages ([5d150a5](https://github.com/visulima/visulima/commit/5d150a578f9ce861c791843c683deeb849b774a9))
150
+ * **dev-toolbar:** add tsconfig.eslint.json for type-aware linting ([d2c864a](https://github.com/visulima/visulima/commit/d2c864a01f9c4805975596c9de8af4a04ac4beaa))
151
+ * **dev-toolbar:** apply auto-fix formatting ([3a80a7d](https://github.com/visulima/visulima/commit/3a80a7daaadcc9705ebb153bfea617e4a5029379))
152
+ * **dev-toolbar:** apply prettier formatting ([a6d5528](https://github.com/visulima/visulima/commit/a6d5528602966810f03eb30c7883b8fd53088d40))
153
+ * **dev-toolbar:** expand braceless if statements to block syntax ([b059279](https://github.com/visulima/visulima/commit/b059279c444036b52c94515d852ec20cd782692e))
154
+ * **dev-toolbar:** expand inline if-return to block syntax ([db834ab](https://github.com/visulima/visulima/commit/db834ab5b42ff3dca9ef90e478c690e8367d4df8))
155
+ * **dev-toolbar:** expand inline if-return to block syntax ([90ffee8](https://github.com/visulima/visulima/commit/90ffee895f5fa746932e6a4e2a3323b621af763f))
156
+ * **dev-toolbar:** migrate .prettierrc.cjs to prettier.config.js ([1cd3cc7](https://github.com/visulima/visulima/commit/1cd3cc72156127384babc0238cfe90b328683cf3))
157
+ * update bundled dependency licenses ([6ace4c6](https://github.com/visulima/visulima/commit/6ace4c69d41fc1fd0a744fbca8ca219ba631b4ab))
158
+
159
+ ## @visulima/dev-toolbar [1.0.0-alpha.7](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.6...@visulima/dev-toolbar@1.0.0-alpha.7) (2026-03-26)
160
+
161
+ ### Features
162
+
163
+ * **web:** auto-generate packages page from workspace metadata ([623e520](https://github.com/visulima/visulima/commit/623e5207693a7fe720f5f2f179593a3654c880e3))
164
+
165
+ ## @visulima/dev-toolbar [1.0.0-alpha.6](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.5...@visulima/dev-toolbar@1.0.0-alpha.6) (2026-03-26)
166
+
167
+ ### Features
168
+
169
+ * **dev-toolbar:** add accessibility info capture to inspector ([2b98ee6](https://github.com/visulima/visulima/commit/2b98ee6249759d1d2c42504354ebf3a92db4a6e6))
170
+ * **dev-toolbar:** add custom Select component replacing native <select> ([c9c8685](https://github.com/visulima/visulima/commit/c9c8685ea3a05c28ea89d5f5d852d56bc8cbcad0))
171
+ * **dev-toolbar:** add viewport rulers with draggable guidelines to inspector ([9df079a](https://github.com/visulima/visulima/commit/9df079a83563b1afc617d76df78259082ea98817))
172
+ * **dev-toolbar:** add visual annotation system with MCP agent integration ([be88cfe](https://github.com/visulima/visulima/commit/be88cfe30f3f624075167762e9c9780653dd34e9))
173
+ * **dev-toolbar:** redesign annotation popups, add toast notifications, improve docs ([cca080f](https://github.com/visulima/visulima/commit/cca080fc6098a692e681ee5b140f8c5c3a810a2c))
174
+
175
+ ### Bug Fixes
176
+
177
+ * **api-platform:** use workspace:* for internal [@visulima](https://github.com/visulima) deps ([daa2b0b](https://github.com/visulima/visulima/commit/daa2b0bfb491b42bc83c369fec2dcd7950f082b0))
178
+ * **dev-toolbar:** address code review findings across toolbar components ([449a300](https://github.com/visulima/visulima/commit/449a300226e4ccaee52ad258d5eccf6f77a72343))
179
+ * **dev-toolbar:** align inspector floating badge with main toolbar styling ([8ea1814](https://github.com/visulima/visulima/commit/8ea1814b596126b71231fd124c036f1e450275ef))
180
+ * **dev-toolbar:** audit Select component, add tests, fix pre-existing type error ([c8452d3](https://github.com/visulima/visulima/commit/c8452d3b495e9707579490155e6689c40cff9568))
181
+ * **dev-toolbar:** auto-detect TanStack Start and shield Preact from React Compiler ([6e9fa57](https://github.com/visulima/visulima/commit/6e9fa571ded1ff53d8809cee47fb404897320e9f))
182
+ * **dev-toolbar:** fix coordinate bugs, orphaned elements, and doc inaccuracies ([efa9c54](https://github.com/visulima/visulima/commit/efa9c544c9a8591c6efe6fd4a9995b411c054f54))
183
+ * **dev-toolbar:** open inspector popup at click point and add visible drag handle ([c012aed](https://github.com/visulima/visulima/commit/c012aed47eeabf2047d5a7a7e46cab807de902f3))
184
+ * **dev-toolbar:** prevent querySelector crash on area selection element paths ([ecd64d4](https://github.com/visulima/visulima/commit/ecd64d4b418e74cc582da0cd5efdb9f5e8e95d2b))
185
+ * **dev-toolbar:** resolve all TypeScript, ESLint, and Prettier errors in annotation system ([2fae465](https://github.com/visulima/visulima/commit/2fae4658017d61262293a41bef13348bbfc70e41))
186
+ * **dev-toolbar:** use correct ARIA role in select search tests ([2e1ddfe](https://github.com/visulima/visulima/commit/2e1ddfed1b49697a2d772c5a6b61bf3b6538a43b))
187
+ * **dev-toolbar:** use workspace:* for internal [@visulima](https://github.com/visulima) deps ([26ea008](https://github.com/visulima/visulima/commit/26ea00878218a34f89587fb9a2157cb379e98733))
188
+ * **web:** improve build setup with incremental stats caching and prod install ([fe33e75](https://github.com/visulima/visulima/commit/fe33e75827586779b4b3a0c6d57b39f889ee6207))
189
+
190
+ ### Documentation
191
+
192
+ * **dev-toolbar:** update examples to use native Vite 8 resolve.tsconfigPaths ([d54d3f7](https://github.com/visulima/visulima/commit/d54d3f71714fc600e4b965e1ab2bdbe0cc442ba6))
193
+
194
+ ### Miscellaneous Chores
195
+
196
+ * **dev-toolbar:** migrate deps to pnpm catalogs ([a43badc](https://github.com/visulima/visulima/commit/a43badcc8cd19d9c3c9cda4b2d75e272d76d51c8))
197
+ * **dev-toolbar:** update dependencies ([8cac2a2](https://github.com/visulima/visulima/commit/8cac2a2068d902ee8196f8e1f50d658644be7e70))
198
+ * update gen file ([8794258](https://github.com/visulima/visulima/commit/87942584bc22cab96a14094d2ec46ec667179490))
199
+ * visulima website ([#591](https://github.com/visulima/visulima/issues/591)) ([59ab2e2](https://github.com/visulima/visulima/commit/59ab2e2befb03e51cd2088956f83d9b87de6d033))
200
+
201
+ ### Code Refactoring
202
+
203
+ * **dev-toolbar:** use native Vite 8 tsconfigPaths in cloudflare example ([fb15d1d](https://github.com/visulima/visulima/commit/fb15d1df62040853a36e7926382765e902380d3a))
204
+ * **dev-toolbar:** use native Vite 8 tsconfigPaths in tanstack-start example ([d89aef7](https://github.com/visulima/visulima/commit/d89aef7c2ba4a8443897d3f7cb9ada494d38d2c4))
205
+ * **docs:** migrate Nextra components to fumadocs-ui, remove Nextra stripping ([484878f](https://github.com/visulima/visulima/commit/484878f01879363ef5e9a0282904dc4627d6060c))
206
+
207
+ ## @visulima/dev-toolbar [1.0.0-alpha.5](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.4...@visulima/dev-toolbar@1.0.0-alpha.5) (2026-03-06)
208
+
209
+ ### Features
210
+
211
+ * **dev-toolbar:** add assets app export and make axe-core an optional peer dependency ([812bc8d](https://github.com/visulima/visulima/commit/812bc8d45ef760862d43f59665e1f86c7d4a5008))
212
+ * **dev-toolbar:** add singleton guard, SEO JSON-LD validation, editor preference, and tests ([7584425](https://github.com/visulima/visulima/commit/758442518f8390b1faa0fd553d7ed1aaa4d9c037))
213
+ * **dev-toolbar:** implement iframe app rendering and custom app registration ([a1585a8](https://github.com/visulima/visulima/commit/a1585a8bd3624ae13b40fa386cd66b62c29ca08f))
214
+ * **dev-toolbar:** keep inspector active after element click and fix UX issues ([8f7e88a](https://github.com/visulima/visulima/commit/8f7e88a874f6412a15bf2adde9ddd95948b07c22))
215
+ * **dev-toolbar:** overhaul vite config app UI with env masking and improved layout ([7cfee9d](https://github.com/visulima/visulima/commit/7cfee9da5957fb9ffbcc940d9948909c4677efb6))
216
+ * **dev-toolbar:** redesign vite config app with tabbed interface ([087df63](https://github.com/visulima/visulima/commit/087df630dc378933e54d1587d40c99f19fca0df0))
217
+ * **dev-toolbar:** remove more overflow app ([cd3f369](https://github.com/visulima/visulima/commit/cd3f369c176c598d2e9a2bcdef194b7d457d343f))
218
+
219
+ ### Bug Fixes
220
+
221
+ * **dev-toolbar:** move removePopupOutsideHandler declaration before first use ([d734a84](https://github.com/visulima/visulima/commit/d734a847b7f0b4574f081b9b78b2fce3d2b0e698))
222
+ * **dev-toolbar:** resolve all ESLint errors across src files ([165b471](https://github.com/visulima/visulima/commit/165b471c95099bff76ba78d054664e79cfcdcb9a))
223
+ * **dev-toolbar:** resolve ESLint errors in test files and config ([ea7e46c](https://github.com/visulima/visulima/commit/ea7e46c13db73431738a8f75febb847f3e7e530b))
224
+ * **dev-toolbar:** resolve ESLint errors in vite-config app and RPC function ([fedce68](https://github.com/visulima/visulima/commit/fedce686ca59ba5d5b82cd10abfffa8d91a738c1))
225
+ * **dev-toolbar:** split single-line mock factories to satisfy max-statements-per-line ([025b972](https://github.com/visulima/visulima/commit/025b9722b6e854cf1ae53694597e64c63493f730))
226
+ * **dev-toolbar:** update packem to 2.0.0-alpha.54 ([f9779c9](https://github.com/visulima/visulima/commit/f9779c9e8dc7637db3bfef341cb66233469f653f))
227
+ * removed old test ([bfa9e78](https://github.com/visulima/visulima/commit/bfa9e784b2e183ed481d432290070ee554b357ac))
228
+
229
+ ### Performance Improvements
230
+
231
+ * **dev-toolbar:** replace tailwind-merge with clsx in cn() utility ([6c4740c](https://github.com/visulima/visulima/commit/6c4740c8ce890d955cecbf634dada65fd8a99769))
232
+
233
+ ### Documentation
234
+
235
+ * **dev-toolbar:** add assets app documentation ([bea25b9](https://github.com/visulima/visulima/commit/bea25b96f7f7dbb2f3952b6c04d38d032569760d))
236
+ * **dev-toolbar:** add iframe app documentation and remove more app references ([03dab85](https://github.com/visulima/visulima/commit/03dab85a92c5ee27b18db018c9dc263a1a3f1ea4))
237
+ * **dev-toolbar:** add vite-overlay integration guide ([8f6f25a](https://github.com/visulima/visulima/commit/8f6f25aae43f0c32380ede56a93915897a4a939f))
238
+ * **dev-toolbar:** update a11y docs to reflect optional axe-core peer dependency ([50396e8](https://github.com/visulima/visulima/commit/50396e8b18c56e716d119a468fa0b1219e789dff))
239
+ * **dev-toolbar:** update built-in app docs for opt-in defaults and add SEO structured data section ([e95050a](https://github.com/visulima/visulima/commit/e95050aa419fe1a85664ccd5c88a3967de70b113))
240
+
241
+ ### Miscellaneous Chores
242
+
243
+ * **dev-toolbar:** enable a11y in tanstack-start-cloudflare example and fix LICENSE whitespace ([e02cd3e](https://github.com/visulima/visulima/commit/e02cd3edf2426c709d8247cc77f999f56315438e))
244
+ * **dev-toolbar:** update dependencies ([1be313b](https://github.com/visulima/visulima/commit/1be313bf37cd32739ddbb275e1af58dcf029e9a1))
245
+ * **dev-toolbar:** update examples to enable assets and inspector apps ([b3dc74d](https://github.com/visulima/visulima/commit/b3dc74d999acbfe4ee564a141dea47cf5ea2f71a))
246
+ * update dependencies and fix vite-react-rolldown example ([8811909](https://github.com/visulima/visulima/commit/8811909e90877b0041e4b08cdd797d58749464e9))
247
+ * year update ([47f4105](https://github.com/visulima/visulima/commit/47f410596ce7190cfea36a073db32e0cec50bbcd))
248
+
249
+ ### Code Refactoring
250
+
251
+ * **dev-toolbar:** replace cn wrapper with direct clsx imports ([6ac069b](https://github.com/visulima/visulima/commit/6ac069bf0f2e772f0a5626a47d9034b824a5b23a))
252
+ * **dev-toolbar:** replace cn() wrapper with clsx() directly ([e774b36](https://github.com/visulima/visulima/commit/e774b367f9270dd9e43fcf0b7147a8cd23a1734a))
253
+
254
+ ## @visulima/dev-toolbar [1.0.0-alpha.4](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.3...@visulima/dev-toolbar@1.0.0-alpha.4) (2026-03-04)
255
+
256
+ ### Bug Fixes
257
+
258
+ * allowed vite 8 ([807071e](https://github.com/visulima/visulima/commit/807071ea041e1beaf7e773ac6bbd23efa9f33b32))
259
+ * **dev-toolbar:** exclude inspector and tailwind from More "Additional Apps" ([812252a](https://github.com/visulima/visulima/commit/812252a96916ac346765631a0997ff2150e54e40))
260
+
261
+ ### Miscellaneous Chores
262
+
263
+ * deps update ([9be09e9](https://github.com/visulima/visulima/commit/9be09e95e2bce8fe52e88b186c43b8cc6bae865c))
264
+ * **dev-toolbar:** fix all ESLint errors and warnings across src and tests ([a14d2ed](https://github.com/visulima/visulima/commit/a14d2ed116b23ff1c61db28324b76aa55931919c))
265
+ * **dev-toolbar:** remove external Google Fonts dependency ([2e81646](https://github.com/visulima/visulima/commit/2e81646f49a886d8ef9df7f9c951c87363f9b50d))
266
+
1
267
  ## @visulima/dev-toolbar [1.0.0-alpha.3](https://github.com/visulima/visulima/compare/@visulima/dev-toolbar@1.0.0-alpha.2...@visulima/dev-toolbar@1.0.0-alpha.3) (2026-03-03)
2
268
 
3
269
  ### Features
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 visulima
3
+ Copyright (c) 2026 visulima
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -24,16 +24,123 @@ SOFTWARE.
24
24
 
25
25
  # Licenses of bundled dependencies
26
26
  The published @visulima/dev-toolbar artifact additionally contains code with the following licenses:
27
- ISC
27
+ ISC, MIT
28
28
 
29
29
  # Bundled dependencies:
30
+ ## @babel/helper-string-parser
31
+ License: MIT
32
+ By: The Babel Team
33
+ Repository: https://github.com/babel/babel.git
34
+
35
+ > MIT License
36
+ >
37
+ > Copyright (c) 2014-present Sebastian McKenzie and other contributors
38
+ >
39
+ > Permission is hereby granted, free of charge, to any person obtaining
40
+ > a copy of this software and associated documentation files (the
41
+ > "Software"), to deal in the Software without restriction, including
42
+ > without limitation the rights to use, copy, modify, merge, publish,
43
+ > distribute, sublicense, and/or sell copies of the Software, and to
44
+ > permit persons to whom the Software is furnished to do so, subject to
45
+ > the following conditions:
46
+ >
47
+ > The above copyright notice and this permission notice shall be
48
+ > included in all copies or substantial portions of the Software.
49
+ >
50
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
51
+ > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
52
+ > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
53
+ > NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
54
+ > LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
55
+ > OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
56
+ > WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
57
+
58
+ ---------------------------------------
59
+
60
+ ## @babel/helper-validator-identifier
61
+ License: MIT
62
+ By: The Babel Team
63
+ Repository: https://github.com/babel/babel.git
64
+
65
+ > MIT License
66
+ >
67
+ > Copyright (c) 2014-present Sebastian McKenzie and other contributors
68
+ >
69
+ > Permission is hereby granted, free of charge, to any person obtaining
70
+ > a copy of this software and associated documentation files (the
71
+ > "Software"), to deal in the Software without restriction, including
72
+ > without limitation the rights to use, copy, modify, merge, publish,
73
+ > distribute, sublicense, and/or sell copies of the Software, and to
74
+ > permit persons to whom the Software is furnished to do so, subject to
75
+ > the following conditions:
76
+ >
77
+ > The above copyright notice and this permission notice shall be
78
+ > included in all copies or substantial portions of the Software.
79
+ >
80
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
81
+ > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
82
+ > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
83
+ > NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
84
+ > LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
85
+ > OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
86
+ > WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
87
+
88
+ ---------------------------------------
89
+
90
+ ## @babel/types
91
+ License: MIT
92
+ By: The Babel Team
93
+ Repository: https://github.com/babel/babel.git
94
+
95
+ > MIT License
96
+ >
97
+ > Copyright (c) 2014-present Sebastian McKenzie and other contributors
98
+ >
99
+ > Permission is hereby granted, free of charge, to any person obtaining
100
+ > a copy of this software and associated documentation files (the
101
+ > "Software"), to deal in the Software without restriction, including
102
+ > without limitation the rights to use, copy, modify, merge, publish,
103
+ > distribute, sublicense, and/or sell copies of the Software, and to
104
+ > permit persons to whom the Software is furnished to do so, subject to
105
+ > the following conditions:
106
+ >
107
+ > The above copyright notice and this permission notice shall be
108
+ > included in all copies or substantial portions of the Software.
109
+ >
110
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
111
+ > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
112
+ > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
113
+ > NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
114
+ > LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
115
+ > OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
116
+ > WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
117
+
118
+ ---------------------------------------
119
+
120
+ ## clsx
121
+ License: MIT
122
+ By: Luke Edwards
123
+ Repository: lukeed/clsx
124
+
125
+ > MIT License
126
+ >
127
+ > Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
128
+ >
129
+ > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
130
+ >
131
+ > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
132
+ >
133
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
134
+
135
+ ---------------------------------------
136
+
30
137
  ## lucide-static
31
138
  License: ISC
32
139
  Repository: https://github.com/lucide-icons/lucide.git
33
140
 
34
141
  > ISC License
35
142
  >
36
- > Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2026 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2026.
143
+ > Copyright (c) 2026 Lucide Icons and Contributors
37
144
  >
38
145
  > Permission to use, copy, modify, and/or distribute this software for any
39
146
  > purpose with or without fee is hereby granted, provided that the above
@@ -49,9 +156,13 @@ Repository: https://github.com/lucide-icons/lucide.git
49
156
  >
50
157
  > ---
51
158
  >
52
- > The MIT License (MIT) (for portions derived from Feather)
159
+ > The following Lucide icons are derived from the Feather project:
160
+ >
161
+ > airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
162
+ >
163
+ > The MIT License (MIT) (for the icons listed above)
53
164
  >
54
- > Copyright (c) 2013-2026 Cole Bemis
165
+ > Copyright (c) 2013-present Cole Bemis
55
166
  >
56
167
  > Permission is hereby granted, free of charge, to any person obtaining a copy
57
168
  > of this software and associated documentation files (the "Software"), to deal
@@ -74,4 +185,25 @@ Repository: https://github.com/lucide-icons/lucide.git
74
185
  <!-- /DEPENDENCIES -->
75
186
 
76
187
  <!-- TYPE_DEPENDENCIES -->
188
+
189
+ # Licenses of bundled types
190
+ The published @visulima/dev-toolbar artifact additionally contains code with the following licenses:
191
+ MIT
192
+
193
+ # Bundled types:
194
+ ## clsx
195
+ License: MIT
196
+ By: Luke Edwards
197
+ Repository: lukeed/clsx
198
+
199
+ > MIT License
200
+ >
201
+ > Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
202
+ >
203
+ > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
204
+ >
205
+ > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
206
+ >
207
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
208
+
77
209
  <!-- /TYPE_DEPENDENCIES -->
package/README.md CHANGED
@@ -1,4 +1,14 @@
1
- <!-- START_PACKAGE_OG_IMAGE_PLACEHOLDER --><!-- END_PACKAGE_OG_IMAGE_PLACEHOLDER -->
1
+ <!-- START_PACKAGE_OG_IMAGE_PLACEHOLDER -->
2
+
3
+ <a href="https://www.anolilab.com/open-source" align="center">
4
+
5
+ <img src="__assets__/package-og.svg" alt="dev-toolbar" />
6
+
7
+ </a>
8
+
9
+ <h3 align="center">Devtools is a set of tools for building advanced devtools for your application</h3>
10
+
11
+ <!-- END_PACKAGE_OG_IMAGE_PLACEHOLDER -->
2
12
 
3
13
  <br />
4
14
 
package/bin/mcp.js ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * MCP server for `@visulima/dev-toolbar` annotations.
5
+ *
6
+ * Usage:
7
+ * npx visulima-dev-toolbar-mcp
8
+ *
9
+ * Configure in .mcp.json:
10
+ * {
11
+ * "mcpServers": {
12
+ * "dev-toolbar": {
13
+ * "command": "npx",
14
+ * "args": ["visulima-dev-toolbar-mcp"],
15
+ * "cwd": "/absolute/path/to/project"
16
+ * }
17
+ * }
18
+ * }
19
+ *
20
+ * Requires @modelcontextprotocol/sdk to be installed.
21
+ */
22
+
23
+ // eslint-disable-next-line antfu/no-import-dist -- bin entry point runs after build
24
+ import { startMcpServer } from "../dist/mcp/server.js";
25
+
26
+ startMcpServer().catch((error) => {
27
+ console.error("Failed to start MCP server:", error);
28
+ process.exit(1);
29
+ });
@@ -1,3 +1,4 @@
1
- import type { DevToolbarApp } from "../../types/app.d.ts";
1
+ import { D as DevToolbarApp } from "../../packem_shared/app.d-SmKEDxsI.js";
2
+ import 'preact';
2
3
  declare const a11yApp: DevToolbarApp;
3
- export default a11yApp;
4
+ export { a11yApp as default };
@@ -1,4 +1,4 @@
1
- var Y=Object.defineProperty;var A=(a,e)=>Y(a,"name",{value:e,configurable:!0});import{addHookName as S}from"preact/devtools";import{useState as w,useEffect as U}from"preact/hooks";import u from"../../packem_shared/cn-DWLJYh3h.js";import{jsxs as i,jsx as t,Fragment as H}from"preact/jsx-runtime";import y from"../../packem_shared/Button-DODNCTPZ.js";import{Alert as X,AlertDescription as Z}from"../../packem_shared/Alert-H-x1JuZ0.js";const ee=`<!-- @license lucide-static v0.576.0 - ISC -->
1
+ var X=Object.defineProperty;var O=(a,e)=>X(a,"name",{value:e,configurable:!0});import{addHookName as k}from"preact/devtools";import{clsx as d}from"../../packem_shared/clsx-wGlvpUfw.js";import{useState as C,useEffect as L}from"preact/hooks";import{jsxs as i,jsx as t,Fragment as W}from"preact/jsx-runtime";import w from"../../packem_shared/Button-Bkx66Co7.js";import{Alert as Y,AlertDescription as Z}from"../../packem_shared/Alert-D2CvX4fw.js";const ee=`<!-- @license lucide-static v1.16.0 - ISC -->
2
2
  <svg
3
3
  class="lucide lucide-accessibility"
4
4
  xmlns="http://www.w3.org/2000/svg"
@@ -17,5 +17,5 @@ var Y=Object.defineProperty;var A=(a,e)=>Y(a,"name",{value:e,configurable:!0});i
17
17
  <path d="M4.24 14.5a5 5 0 0 0 6.88 6" />
18
18
  <path d="M13.76 17.5a5 5 0 0 0-6.88-6" />
19
19
  </svg>
20
- `;var te=Object.defineProperty,f=A((a,e)=>te(a,"name",{value:e,configurable:!0}),"i$2");const M=["critical","serious","moderate","minor"],re={critical:"rgb(239,68,68)",minor:"rgb(100,116,139)",moderate:"rgb(249,115,22)",serious:"rgb(234,179,8)"},ne={"best-practice":["best-practice"],wcag2a:["wcag2a"],wcag21aa:["wcag2a","wcag2aa","wcag21a","wcag21aa"],wcag22aa:["wcag2a","wcag2aa","wcag21a","wcag21aa","wcag22a","wcag22aa"]},_="__vdt_a11y__",se=f(()=>{try{const a=sessionStorage.getItem(_);if(a){const e=JSON.parse(a);if(Array.isArray(e.issues))return{issues:e.issues,lastScan:e.lastScan??null}}}catch{}return{issues:[],lastScan:null}},"loadFromSession"),W=f((a,e)=>{const s=a;s.dataset.vdtA11y=e,s.style.setProperty("outline",`2px solid ${re[e]}`,"important"),s.style.setProperty("outline-offset","2px","important")},"setHighlight"),$=f(()=>{for(const a of document.querySelectorAll("[data-vdt-a11y]")){const e=a;delete e.dataset.vdtA11y,e.style.removeProperty("outline"),e.style.removeProperty("outline-offset")}},"clearHighlightsDOM"),G=f(a=>{$();for(const e of a)for(const s of e.nodes)try{const r=document.querySelector(s.selector);r&&W(r,e.impact)}catch{}},"applyOverlaysDOM"),ae=f(a=>{const e=a.at(-1);return Array.isArray(e)?e.join(" "):String(e??"")},"nodeSelector"),ie=f((a,e)=>{const s=[];for(const r of a)e.includes(r.id)||s.push({helpUrl:r.helpUrl,id:r.id,impact:r.impact??"minor",message:r.help,nodes:r.nodes.map(o=>({html:o.html,selector:ae(o.target)})),wcagTags:r.tags.filter(o=>o.startsWith("wcag")||o==="best-practice")});return s},"convertViolations"),oe=f(async a=>{const e=await import("axe-core"),s=typeof e.default?.run=="function"?e.default:e;if(typeof s.run!="function")throw new TypeError("axe-core could not be loaded — .run is not available");return s.run(document,{exclude:[["dev-toolbar"]],runOnly:{type:"tag",values:ne[a]}})},"runAxeScan");class le{static{A(this,"f")}static{f(this,"A11yStore")}listeners=new Set;state;constructor(){const{issues:e,lastScan:s}=se();this.state={isScanning:!1,issues:e,lastScan:s,scanError:null,showOverlays:!1,standard:"wcag21aa"}}clearHighlights(){$()}getState(){return this.state}highlightIssue(e){$();let s=!1;for(const r of e.nodes)try{const o=document.querySelector(r.selector);o&&(W(o,e.impact),s||(o.scrollIntoView({behavior:"smooth",block:"center"}),s=!0))}catch{}}async scan(e=[]){if(!this.state.isScanning){this.update({isScanning:!0,scanError:null});try{const s=await oe(this.state.standard),r=ie(s.violations,e);this.update({isScanning:!1,issues:r,lastScan:new Date().toISOString()}),this.persist(),this.state.showOverlays&&G(r)}catch(s){this.update({isScanning:!1,scanError:s instanceof Error?s.message:String(s)})}}}setShowOverlays(e){this.update({showOverlays:e}),e?G(this.state.issues):$()}setStandard(e){this.update({standard:e})}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){for(const e of this.listeners)e()}persist(){try{sessionStorage.setItem(_,JSON.stringify({issues:this.state.issues,lastScan:this.state.lastScan}))}catch{}}update(e){this.state={...this.state,...e},this.notify()}}const c=new le;var ce=Object.defineProperty,l=A((a,e)=>ce(a,"name",{value:e,configurable:!0}),"o");const I={critical:"Critical",minor:"Minor",moderate:"Moderate",serious:"Serious"},z={critical:"text-destructive",minor:"text-muted-foreground",moderate:"text-warning-foreground",serious:"text-warning-foreground"},de={critical:"bg-destructive/10 border-destructive/30",minor:"bg-foreground/4 border-border",moderate:"bg-warning/10 border-warning/30",serious:"bg-warning/10 border-warning/30"},ue={critical:"bg-destructive",minor:"bg-muted-foreground/50",moderate:"bg-warning",serious:"bg-warning"},ge=l(({count:a,isActive:e,onClick:s,severity:r})=>i("button",{class:u("flex flex-col items-center gap-1 px-3 py-2.5 border cursor-pointer transition-colors",e?"ring-1 ring-inset ring-primary/40":"hover:bg-foreground/6",de[r]),onClick:s,title:`${e?"Clear":"Filter by"} ${I[r]}`,type:"button",children:[t("span",{class:u("text-xl font-bold tabular-nums leading-none",z[r]),children:a}),t("span",{class:"text-[0.6rem] font-semibold uppercase tracking-wider text-muted-foreground",children:I[r]})]}),"SeverityBucket"),pe=l(({isSelected:a,issue:e,onClick:s,onDisable:r})=>i("div",{class:u("p-3 border cursor-pointer transition-colors",a?"bg-foreground/6 border-primary/30":"border-border hover:bg-foreground/3"),onClick:s,children:[i("div",{class:"flex items-start gap-2 mb-1.5",children:[t("span",{class:u("mt-1 size-2 rounded-full shrink-0",ue[e.impact])}),t("span",{class:"text-[0.75rem] font-semibold text-foreground flex-1 leading-snug",children:e.id}),t("span",{class:u("text-[0.6rem] font-bold uppercase tracking-wide shrink-0",z[e.impact]),children:I[e.impact]})]}),t("p",{class:"text-[0.7rem] text-muted-foreground leading-relaxed mb-2 ml-4",children:e.message}),e.nodes.length>0&&i("div",{class:"mb-2 ml-4 space-y-0.5",children:[e.nodes.slice(0,3).map((o,p)=>t("code",{class:"block text-[0.65rem] text-foreground/70 font-mono bg-foreground/5 px-2 py-1 truncate",children:o.selector},p)),e.nodes.length>3&&i("span",{class:"text-[0.62rem] text-muted-foreground/60",children:["+",e.nodes.length-3," more element",e.nodes.length>4?"s":""]})]}),i("div",{class:"flex items-center gap-2 flex-wrap ml-4",children:[e.wcagTags.slice(0,3).map(o=>t("span",{class:"text-[0.58rem] font-mono uppercase bg-primary/8 text-primary/70 border border-primary/20 px-1.5 py-0.5",children:o},o)),t("span",{class:"flex-1"}),t("a",{class:"text-[0.62rem] text-primary/70 hover:text-primary transition-colors",href:e.helpUrl,onClick:l(o=>o.stopPropagation(),"onClick"),rel:"noopener noreferrer",target:"_blank",children:"Learn more ↗"}),t("button",{class:"text-[0.62rem] text-muted-foreground/60 hover:text-muted-foreground transition-colors cursor-pointer bg-transparent border-0 p-0",onClick:l(o=>{o.stopPropagation(),r(e.id)},"onClick"),title:"Disable this rule for current session",type:"button",children:"Disable"})]})]}),"IssueCard"),me=l(a=>{const[e,s]=S(w(()=>c.getState()),"storeState"),[r,o]=S(w([]),"disabledRules"),[p,j]=S(w(null),"minSeverity"),[v,k]=S(w(null),"activeIssueId"),[m,d]=S(w(null),"filterSeverity");U(()=>c.subscribe(()=>s(c.getState())),[]),U(()=>c.clearHighlights.bind(c),[]);const{isScanning:h,issues:b,lastScan:J,scanError:R,showOverlays:N,standard:V}=e,T=J!==null||R!==null,L=l(()=>{d(null),k(null),c.scan(r)},"handleScan"),q=l(n=>{v===n.id?(k(null),c.clearHighlights(),N&&c.setShowOverlays(!0)):(k(n.id),c.highlightIssue(n))},"handleIssueClick"),F=l(n=>{o(g=>[...g,n])},"handleDisableRule"),E=b.filter(n=>!(r.includes(n.id)||m&&n.impact!==m||p&&M.indexOf(n.impact)>M.indexOf(p))),K=l(n=>b.filter(g=>!r.includes(g.id)&&g.impact===n).length,"countBy");return i("div",{class:"flex flex-col h-full",children:[i("div",{class:"shrink-0 flex items-center gap-2 px-4 py-2.5 border-b border-border bg-foreground/2 flex-wrap",children:[t(y,{class:u(h?"border-primary/30 text-primary/50 bg-primary/5":""),disabled:h,onClick:L,size:"sm",variant:"outline",children:h?"Scanning…":"Scan page"}),i("label",{class:"flex items-center gap-1.5 text-[0.7rem] text-muted-foreground",children:["Standard",i("select",{class:"bg-card border border-border text-foreground text-[0.7rem] px-1.5 py-1 cursor-pointer",onChange:l(n=>c.setStandard(n.target.value),"onChange"),style:"color-scheme: dark",value:V,children:[t("option",{value:"wcag21aa",children:"WCAG 2.1 AA"}),t("option",{value:"wcag22aa",children:"WCAG 2.2 AA"}),t("option",{value:"wcag2a",children:"WCAG 2.0 A"}),t("option",{value:"best-practice",children:"Best Practice"})]})]}),i("label",{class:"flex items-center gap-1.5 text-[0.7rem] text-muted-foreground",children:["Min",i("select",{class:"bg-card border border-border text-foreground text-[0.7rem] px-1.5 py-1 cursor-pointer",onChange:l(n=>{const{value:g}=n.target;j(g||null)},"onChange"),style:"color-scheme: dark",value:p??"",children:[t("option",{value:"",children:"All"}),t("option",{value:"critical",children:"Critical only"}),t("option",{value:"serious",children:"Serious+"}),t("option",{value:"moderate",children:"Moderate+"})]})]}),t(y,{class:u(N?"border-primary/30 text-primary bg-primary/8":""),onClick:l(()=>c.setShowOverlays(!N),"onClick"),size:"sm",title:"Toggle visual highlights on affected elements",variant:"outline",children:"Overlays"}),T&&b.length>0&&i(H,{children:[t(y,{class:"ml-auto",onClick:l(()=>{const n=new Blob([JSON.stringify(b,null,2)],{type:"application/json"}),g=URL.createObjectURL(n),C=document.createElement("a");C.href=g,C.download="a11y-audit.json",C.click(),URL.revokeObjectURL(g)},"onClick"),size:"sm",title:"Export audit results as JSON",variant:"outline",children:"JSON"}),t(y,{onClick:l(()=>{const n=l(x=>`"${x.replaceAll('"','""')}"`,"q"),g=["Rule ID","Severity","Message","Selector","HTML","WCAG Tags"].join(","),C=b.flatMap(x=>x.nodes.map(B=>[n(x.id),n(x.impact),n(x.message),n(B.selector),n(B.html),n(x.wcagTags.join("; "))].join(","))),Q=new Blob([[g,...C].join(`
21
- `)],{type:"text/csv"}),P=URL.createObjectURL(Q),D=document.createElement("a");D.href=P,D.download="a11y-audit.csv",D.click(),URL.revokeObjectURL(P)},"onClick"),size:"sm",title:"Export audit results as CSV",variant:"outline",children:"CSV"})]})]}),i("div",{class:"flex-1 overflow-y-auto devtools-content-scroll",children:[R&&t(X,{class:"rounded-none border-x-0 border-t-0",variant:"destructive",children:i(Z,{children:["Scan failed: ",R]})}),!T&&!h&&i("div",{class:"flex flex-col items-center justify-center gap-4 p-8 min-h-48 text-center",children:[t("p",{class:"text-[0.8125rem] text-muted-foreground max-w-sm",children:"Run an accessibility audit using axe-core to detect WCAG violations on this page."}),t(y,{onClick:L,variant:"outline",children:"Start scan"})]}),h&&t("div",{class:"flex items-center justify-center gap-3 p-8 min-h-48",children:t("span",{class:"text-[0.8rem] text-muted-foreground",children:"Scanning for accessibility issues…"})}),T&&!h&&!R&&i("div",{class:"p-5 space-y-4",children:[t("div",{class:"grid grid-cols-4 gap-2",children:M.map(n=>t(ge,{count:K(n),isActive:m===n,onClick:l(()=>d(m===n?null:n),"onClick"),severity:n},n))}),E.length===0?i("div",{class:"p-6 text-center border border-border",children:[t("p",{class:"text-[0.8125rem] font-medium text-foreground/70",children:b.length===0?"No violations found!":"No issues match the current filters."}),b.length===0&&t("p",{class:"mt-1 text-[0.7rem] text-muted-foreground",children:"Great — the page passes all rules for the selected standard."})]}):i("section",{children:[i("div",{class:"flex items-center gap-2 mb-2",children:[i("span",{class:"text-[0.65rem] font-bold uppercase tracking-[0.1em] text-muted-foreground",children:[t("span",{"aria-hidden":"true",class:"text-primary/50",children:"//"})," ",E.length," issue",E.length===1?"":"s",m?` · ${I[m]} only`:""]}),m&&t(y,{class:"h-auto p-0 text-[0.62rem]",onClick:l(()=>d(null),"onClick"),variant:"link",children:"Clear ×"})]}),t("div",{class:"space-y-2",children:E.map(n=>t(pe,{isSelected:v===n.id,issue:n,onClick:l(()=>q(n),"onClick"),onDisable:F},n.id))})]}),r.length>0&&i("div",{class:"flex items-center gap-2 text-[0.65rem] text-muted-foreground/60",children:[i("span",{children:[r.length," rule",r.length===1?"":"s"," disabled this session."]}),t(y,{class:"h-auto p-0 text-[0.62rem]",onClick:l(()=>o([]),"onClick"),variant:"link",children:"Reset"})]})]})]})]})},"A11yApp");var he=Object.defineProperty,O=A((a,e)=>he(a,"name",{value:e,configurable:!0}),"i$1");const fe={critical:"text-destructive",minor:"text-muted-foreground",moderate:"text-warning-foreground",serious:"text-warning-foreground"},be={critical:"Crit",minor:"Min",moderate:"Mod",serious:"Ser"},xe=O(a=>{const e=new Date(a).getTime();if(Number.isNaN(e))return"unknown";const s=Math.max(0,Math.floor((Date.now()-e)/1e3));if(s<10)return"just now";if(s<60)return`${s}s ago`;const r=Math.floor(s/60);return r<60?`${r} min ago`:`${Math.floor(r/60)} hr ago`},"formatElapsed"),ye=O(a=>{const[e,s]=S(w(()=>c.getState()),"state");U(()=>c.subscribe(()=>s(c.getState())),[]);const{isScanning:r,issues:o,lastScan:p,showOverlays:j}=e,v=o.length,k=o.reduce((d,h)=>(d[h.impact]=(d[h.impact]??0)+1,d),{critical:0,minor:0,moderate:0,serious:0}),m=O(d=>k[d],"countBy");return i("div",{class:"space-y-3 min-w-[200px]",children:[p?i(H,{children:[i("div",{class:"flex items-baseline gap-2",children:[t("span",{class:u("text-2xl font-bold tabular-nums leading-none",v>0?"text-destructive":"text-success-foreground"),children:v}),i("span",{class:"text-[0.65rem] text-muted-foreground",children:["violation",v===1?"":"s"]})]}),t("div",{class:"grid grid-cols-4 gap-1.5",children:M.map(d=>i("div",{class:"flex flex-col items-center gap-0.5",children:[t("span",{class:u("text-[0.85rem] font-bold tabular-nums leading-none",fe[d]),children:m(d)}),t("span",{class:"text-[0.55rem] uppercase tracking-wide text-muted-foreground/70",children:be[d]})]},d))}),i("p",{class:"text-[0.62rem] text-muted-foreground/50",children:["Scanned ",xe(p)]})]}):i("div",{children:[t("p",{class:"text-[0.72rem] text-muted-foreground",children:"No scan run yet."}),t("p",{class:"text-[0.65rem] text-muted-foreground/50 mt-0.5",children:"Scan this page to detect WCAG violations."})]}),i("div",{class:"flex items-center gap-2 pt-2 border-t border-border/50",children:[t("button",{class:u("flex-1 px-2.5 py-1.5 text-[0.7rem] font-medium border transition-colors cursor-pointer",r?"border-primary/30 text-primary/50 bg-primary/5 cursor-not-allowed":"border-border text-foreground bg-transparent hover:bg-foreground/5"),disabled:r,onClick:O(()=>{c.scan()},"onClick"),type:"button",children:r?"Scanning…":p?"Re-scan":"Scan"}),t("button",{class:u("px-2.5 py-1.5 text-[0.7rem] border transition-colors",o.length===0?"border-border/50 text-muted-foreground/40 bg-transparent cursor-not-allowed":u("cursor-pointer",j?"border-primary/30 text-primary bg-primary/8":"border-border text-muted-foreground bg-transparent hover:text-foreground")),disabled:o.length===0,onClick:O(()=>c.setShowOverlays(!j),"onClick"),title:"Toggle visual highlights on affected elements",type:"button",children:"Overlays"})]})]})},"A11yTooltip"),je={component:me,icon:ee,id:"dev-toolbar:a11y",name:"Accessibility",tooltip:ye};export{je as default};
20
+ `;var te=Object.defineProperty,x=O((a,e)=>te(a,"name",{value:e,configurable:!0}),"i$3");const E=["critical","serious","moderate","minor"],re={critical:"rgb(239,68,68)",minor:"rgb(100,116,139)",moderate:"rgb(249,115,22)",serious:"rgb(234,179,8)"},se={"best-practice":["best-practice"],wcag2a:["wcag2a"],wcag21aa:["wcag2a","wcag2aa","wcag21a","wcag21aa"],wcag22aa:["wcag2a","wcag2aa","wcag21a","wcag21aa","wcag22a","wcag22aa"]},_="__vdt_a11y__",ne=x(()=>{try{const a=sessionStorage.getItem(_);if(a){const e=JSON.parse(a);if(Array.isArray(e.issues))return{issues:e.issues,lastScan:e.lastScan??void 0}}}catch{}return{issues:[],lastScan:void 0}},"loadFromSession"),z=x((a,e)=>{const n=a;n.dataset.vdtA11y=e,n.style.setProperty("outline",`2px solid ${re[e]}`,"important"),n.style.setProperty("outline-offset","2px","important")},"setHighlight"),I=x(()=>{for(const a of document.querySelectorAll("[data-vdt-a11y]")){const e=a;delete e.dataset.vdtA11y,e.style.removeProperty("outline"),e.style.removeProperty("outline-offset")}},"clearHighlightsDOM"),H=x(a=>{I();for(const e of a)for(const n of e.nodes)try{const r=document.querySelector(n.selector);r&&z(r,e.impact)}catch{}},"applyOverlaysDOM"),ae=x(a=>{const e=a.at(-1);return Array.isArray(e)?e.join(" "):String(e??"")},"nodeSelector"),ie=x((a,e)=>{const n=[];for(const r of a)e.includes(r.id)||n.push({helpUrl:r.helpUrl,id:r.id,impact:r.impact??"minor",message:r.help,nodes:r.nodes.map(o=>({html:o.html,selector:ae(o.target)})),wcagTags:r.tags.filter(o=>o.startsWith("wcag")||o==="best-practice")});return n},"convertViolations"),oe=x(async a=>{const e=await import("axe-core"),n=typeof e.default?.run=="function"?e.default:e;if(typeof n.run!="function")throw new TypeError("axe-core could not be loaded — .run is not available");return n.run(document,{exclude:[["dev-toolbar"]],runOnly:{type:"tag",values:se[a]}})},"runAxeScan");class ce{static{O(this,"v")}static{x(this,"A11yStore")}listeners=new Set;state;constructor(){const{issues:e,lastScan:n}=ne();this.state={isScanning:!1,issues:e,lastScan:n,scanError:void 0,showOverlays:!1,standard:"wcag21aa"}}clearHighlights(){I()}getState(){return this.state}highlightIssue(e){I();let n=!1;for(const r of e.nodes)try{const o=document.querySelector(r.selector);o&&(z(o,e.impact),n||(o.scrollIntoView({behavior:"smooth",block:"center"}),n=!0))}catch{}}async scan(e=[]){if(!this.state.isScanning){this.update({isScanning:!0,scanError:void 0});try{const n=await oe(this.state.standard),r=ie(n.violations,e);this.update({isScanning:!1,issues:r,lastScan:new Date().toISOString()}),this.persist(),this.state.showOverlays&&H(r)}catch(n){this.update({isScanning:!1,scanError:n instanceof Error?n.message:String(n)})}}}setShowOverlays(e){this.update({showOverlays:e}),e?H(this.state.issues):I()}setStandard(e){this.update({standard:e})}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){for(const e of this.listeners)e()}persist(){try{sessionStorage.setItem(_,JSON.stringify({issues:this.state.issues,lastScan:this.state.lastScan}))}catch{}}update(e){this.state={...this.state,...e},this.notify()}}const l=new ce;var le=Object.defineProperty,c=O((a,e)=>le(a,"name",{value:e,configurable:!0}),"i$2");const N={critical:"Critical",minor:"Minor",moderate:"Moderate",serious:"Serious"},J={critical:"text-destructive",minor:"text-muted-foreground",moderate:"text-warning-foreground",serious:"text-warning-foreground"},de={critical:"bg-destructive/10 border-destructive/30",minor:"bg-foreground/4 border-border",moderate:"bg-warning/10 border-warning/30",serious:"bg-warning/10 border-warning/30"},ue={critical:"bg-destructive",minor:"bg-muted-foreground/50",moderate:"bg-warning",serious:"bg-warning"},ge=c(({count:a,isActive:e,onClick:n,severity:r})=>i("button",{class:d("flex flex-col items-center gap-1 px-3 py-2.5 border cursor-pointer transition-colors",e?"ring-1 ring-inset ring-primary/40":"hover:bg-foreground/6",de[r]),onClick:n,title:`${e?"Clear":"Filter by"} ${N[r]}`,type:"button",children:[t("span",{class:d("text-xl font-bold tabular-nums leading-none",J[r]),children:a}),t("span",{class:"text-[0.6rem] font-semibold uppercase tracking-wider text-muted-foreground",children:N[r]})]}),"SeverityBucket"),pe=c(({isSelected:a,issue:e,onClick:n,onDisable:r})=>i("div",{class:d("p-3 border cursor-pointer transition-colors",a?"bg-foreground/6 border-primary/30":"border-border hover:bg-foreground/3"),onClick:n,children:[i("div",{class:"flex items-start gap-2 mb-1.5",children:[t("span",{class:d("mt-1 size-2 rounded-full shrink-0",ue[e.impact])}),t("span",{class:"text-[0.75rem] font-semibold text-foreground flex-1 leading-snug",children:e.id}),t("span",{class:d("text-[0.6rem] font-bold uppercase tracking-wide shrink-0",J[e.impact]),children:N[e.impact]})]}),t("p",{class:"text-[0.7rem] text-muted-foreground leading-relaxed mb-2 ml-4",children:e.message}),e.nodes.length>0&&i("div",{class:"mb-2 ml-4 space-y-0.5",children:[e.nodes.slice(0,3).map((o,p)=>t("code",{class:"block text-[0.65rem] text-foreground/70 font-mono bg-foreground/5 px-2 py-1 truncate",children:o.selector},p)),e.nodes.length>3&&i("span",{class:"text-[0.62rem] text-muted-foreground/60",children:["+",e.nodes.length-3," more element",e.nodes.length>4?"s":""]})]}),i("div",{class:"flex items-center gap-2 flex-wrap ml-4",children:[e.wcagTags.slice(0,3).map(o=>t("span",{class:"text-[0.58rem] font-mono uppercase bg-primary/8 text-primary/70 border border-primary/20 px-1.5 py-0.5",children:o},o)),t("span",{class:"flex-1"}),t("a",{class:"text-[0.62rem] text-primary/70 hover:text-primary transition-colors",href:e.helpUrl,onClick:c(o=>o.stopPropagation(),"onClick"),rel:"noopener noreferrer",target:"_blank",children:"Learn more ↗"}),t("button",{class:"text-[0.62rem] text-muted-foreground/60 hover:text-muted-foreground transition-colors cursor-pointer bg-transparent border-0 p-0",onClick:c(o=>{o.stopPropagation(),r(e.id)},"onClick"),title:"Disable this rule for current session",type:"button",children:"Disable"})]})]}),"IssueCard"),me=c(a=>{const[e,n]=k(C(()=>l.getState()),"storeState"),[r,o]=k(C([]),"disabledRules"),[p,M]=k(C(void 0),"minSeverity"),[S,v]=k(C(void 0),"activeIssueId"),[m,f]=k(C(void 0),"filterSeverity");L(()=>l.subscribe(()=>n(l.getState())),[]),L(()=>l.clearHighlights.bind(l),[]);const{isScanning:b,issues:h,lastScan:u,scanError:$,showOverlays:T,standard:q}=e,U=u!==void 0||$!==void 0,P=c(()=>{f(void 0),v(void 0),l.scan(r).catch(()=>{})},"handleScan"),V=c(s=>{S===s.id?(v(void 0),l.clearHighlights(),T&&l.setShowOverlays(!0)):(v(s.id),l.highlightIssue(s))},"handleIssueClick"),F=c(s=>{o(g=>[...g,s])},"handleDisableRule"),R=h.filter(s=>!(r.includes(s.id)||m&&s.impact!==m||p&&E.indexOf(s.impact)>E.indexOf(p))),K=c(s=>h.filter(g=>!r.includes(g.id)&&g.impact===s).length,"countBy");return i("div",{class:"flex flex-col h-full",children:[i("div",{class:"shrink-0 flex items-center gap-2 px-4 py-2.5 border-b border-border bg-foreground/2 flex-wrap",children:[t(w,{class:d(b?"border-primary/30 text-primary/50 bg-primary/5":""),disabled:b,onClick:P,size:"sm",variant:"outline",children:b?"Scanning…":"Scan page"}),i("label",{class:"flex items-center gap-1.5 text-[0.7rem] text-muted-foreground",children:["Standard",i("select",{class:"bg-card border border-border text-foreground text-[0.7rem] px-1.5 py-1 cursor-pointer",onChange:c(s=>l.setStandard(s.target.value),"onChange"),style:"color-scheme: dark",value:q,children:[t("option",{value:"wcag21aa",children:"WCAG 2.1 AA"}),t("option",{value:"wcag22aa",children:"WCAG 2.2 AA"}),t("option",{value:"wcag2a",children:"WCAG 2.0 A"}),t("option",{value:"best-practice",children:"Best Practice"})]})]}),i("label",{class:"flex items-center gap-1.5 text-[0.7rem] text-muted-foreground",children:["Min",i("select",{class:"bg-card border border-border text-foreground text-[0.7rem] px-1.5 py-1 cursor-pointer",onChange:c(s=>{const{value:g}=s.target;M(g||void 0)},"onChange"),style:"color-scheme: dark",value:p??"",children:[t("option",{value:"",children:"All"}),t("option",{value:"critical",children:"Critical only"}),t("option",{value:"serious",children:"Serious+"}),t("option",{value:"moderate",children:"Moderate+"})]})]}),t(w,{class:d(T?"border-primary/30 text-primary bg-primary/8":""),onClick:c(()=>l.setShowOverlays(!T),"onClick"),size:"sm",title:"Toggle visual highlights on affected elements",variant:"outline",children:"Overlays"}),U&&h.length>0&&i(W,{children:[t(w,{class:"ml-auto",onClick:c(()=>{const s=new Blob([JSON.stringify(h,void 0,2)],{type:"application/json"}),g=URL.createObjectURL(s),A=document.createElement("a");A.href=g,A.download="a11y-audit.json",A.click(),URL.revokeObjectURL(g)},"onClick"),size:"sm",title:"Export audit results as JSON",variant:"outline",children:"JSON"}),t(w,{onClick:c(()=>{const s=c(y=>`"${y.replaceAll('"','""')}"`,"q"),g=["Rule ID","Severity","Message","Selector","HTML","WCAG Tags"].join(","),A=h.flatMap(y=>y.nodes.map(G=>[s(y.id),s(y.impact),s(y.message),s(G.selector),s(G.html),s(y.wcagTags.join("; "))].join(","))),Q=new Blob([[g,...A].join(`
21
+ `)],{type:"text/csv"}),B=URL.createObjectURL(Q),D=document.createElement("a");D.href=B,D.download="a11y-audit.csv",D.click(),URL.revokeObjectURL(B)},"onClick"),size:"sm",title:"Export audit results as CSV",variant:"outline",children:"CSV"})]})]}),i("div",{class:"flex-1 overflow-y-auto devtools-content-scroll",children:[$&&t(Y,{class:"rounded-none border-x-0 border-t-0",variant:"destructive",children:i(Z,{children:["Scan failed: ",$]})}),!U&&!b&&i("div",{class:"flex flex-col items-center justify-center gap-4 p-8 min-h-48 text-center",children:[t("p",{class:"text-[0.8125rem] text-muted-foreground max-w-sm",children:"Run an accessibility audit using axe-core to detect WCAG violations on this page."}),t(w,{onClick:P,variant:"outline",children:"Start scan"})]}),b&&t("div",{class:"flex items-center justify-center gap-3 p-8 min-h-48",children:t("span",{class:"text-[0.8rem] text-muted-foreground",children:"Scanning for accessibility issues…"})}),U&&!b&&!$&&i("div",{class:"p-5 space-y-4",children:[t("div",{class:"grid grid-cols-4 gap-2",children:E.map(s=>t(ge,{count:K(s),isActive:m===s,onClick:c(()=>f(m===s?void 0:s),"onClick"),severity:s},s))}),R.length===0?i("div",{class:"p-6 text-center border border-border",children:[t("p",{class:"text-[0.8125rem] font-medium text-foreground/70",children:h.length===0?"No violations found!":"No issues match the current filters."}),h.length===0&&t("p",{class:"mt-1 text-[0.7rem] text-muted-foreground",children:"Great — the page passes all rules for the selected standard."})]}):i("section",{children:[i("div",{class:"flex items-center gap-2 mb-2",children:[i("span",{class:"text-[0.65rem] font-bold uppercase tracking-[0.1em] text-muted-foreground",children:[t("span",{"aria-hidden":"true",class:"text-primary/50",children:"//"})," ",R.length," issue",R.length===1?"":"s",m?` · ${N[m]} only`:""]}),m&&t(w,{class:"h-auto p-0 text-[0.62rem]",onClick:c(()=>f(void 0),"onClick"),variant:"link",children:"Clear ×"})]}),t("div",{class:"space-y-2",children:R.map(s=>t(pe,{isSelected:S===s.id,issue:s,onClick:c(()=>V(s),"onClick"),onDisable:F},s.id))})]}),r.length>0&&i("div",{class:"flex items-center gap-2 text-[0.65rem] text-muted-foreground/60",children:[i("span",{children:[r.length," rule",r.length===1?"":"s"," disabled this session."]}),t(w,{class:"h-auto p-0 text-[0.62rem]",onClick:c(()=>o([]),"onClick"),variant:"link",children:"Reset"})]})]})]})]})},"A11yApp");var he=Object.defineProperty,j=O((a,e)=>he(a,"name",{value:e,configurable:!0}),"i$1");const fe={critical:"text-destructive",minor:"text-muted-foreground",moderate:"text-warning-foreground",serious:"text-warning-foreground"},be={critical:"Crit",minor:"Min",moderate:"Mod",serious:"Ser"},xe=j(a=>{const e=new Date(a).getTime();if(Number.isNaN(e))return"unknown";const n=Math.max(0,Math.floor((Date.now()-e)/1e3));if(n<10)return"just now";if(n<60)return`${n}s ago`;const r=Math.floor(n/60);return r<60?`${r} min ago`:`${Math.floor(r/60)} hr ago`},"formatElapsed"),ve=j(a=>{const[e,n]=k(C(()=>l.getState()),"state");L(()=>l.subscribe(()=>n(l.getState())),[]);const{isScanning:r,issues:o,lastScan:p,showOverlays:M}=e,S=o.length,v={critical:0,minor:0,moderate:0,serious:0};for(const u of o)v[u.impact]=(v[u.impact]??0)+1;const m=j(u=>v[u],"countBy");let f;r?f="Scanning…":p?f="Re-scan":f="Scan";const b=M?"border-primary/30 text-primary bg-primary/8":"border-border text-muted-foreground bg-transparent hover:text-foreground",h=o.length===0?"border-border/50 text-muted-foreground/40 bg-transparent cursor-not-allowed":d("cursor-pointer",b);return i("div",{class:"space-y-3 min-w-[200px]",children:[p?i(W,{children:[i("div",{class:"flex items-baseline gap-2",children:[t("span",{class:d("text-2xl font-bold tabular-nums leading-none",S>0?"text-destructive":"text-success-foreground"),children:S}),i("span",{class:"text-[0.65rem] text-muted-foreground",children:["violation",S===1?"":"s"]})]}),t("div",{class:"grid grid-cols-4 gap-1.5",children:E.map(u=>i("div",{class:"flex flex-col items-center gap-0.5",children:[t("span",{class:d("text-[0.85rem] font-bold tabular-nums leading-none",fe[u]),children:m(u)}),t("span",{class:"text-[0.55rem] uppercase tracking-wide text-muted-foreground/70",children:be[u]})]},u))}),i("p",{class:"text-[0.62rem] text-muted-foreground/50",children:["Scanned ",xe(p)]})]}):i("div",{children:[t("p",{class:"text-[0.72rem] text-muted-foreground",children:"No scan run yet."}),t("p",{class:"text-[0.65rem] text-muted-foreground/50 mt-0.5",children:"Scan this page to detect WCAG violations."})]}),i("div",{class:"flex items-center gap-2 pt-2 border-t border-border/50",children:[t("button",{class:d("flex-1 px-2.5 py-1.5 text-[0.7rem] font-medium border transition-colors cursor-pointer",r?"border-primary/30 text-primary/50 bg-primary/5 cursor-not-allowed":"border-border text-foreground bg-transparent hover:bg-foreground/5"),disabled:r,onClick:j(()=>{l.scan().catch(()=>{})},"onClick"),type:"button",children:f}),t("button",{class:d("px-2.5 py-1.5 text-[0.7rem] border transition-colors",h),disabled:o.length===0,onClick:j(()=>l.setShowOverlays(!M),"onClick"),title:"Toggle visual highlights on affected elements",type:"button",children:"Overlays"})]})]})},"A11yTooltip"),je={component:me,icon:ee,id:"dev-toolbar:a11y",name:"Accessibility",tooltip:ve};export{je as default};
@@ -0,0 +1,4 @@
1
+ import { D as DevToolbarApp } from "../../packem_shared/app.d-SmKEDxsI.js";
2
+ import 'preact';
3
+ declare const annotationsApp: DevToolbarApp;
4
+ export { annotationsApp as default };