@visulima/dev-toolbar 1.0.0-alpha.4 → 1.0.0-alpha.40

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 (175) hide show
  1. package/CHANGELOG.md +321 -0
  2. package/LICENSE.md +137 -5
  3. package/README.md +75 -18
  4. package/bin/mcp.js +29 -0
  5. package/dist/apps/a11y/index.d.ts +3 -2
  6. package/dist/apps/a11y/index.js +21 -2
  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 +30 -1
  13. package/dist/apps/module-graph/index.d.ts +3 -2
  14. package/dist/apps/module-graph/index.js +20 -1
  15. package/dist/apps/performance/index.d.ts +3 -2
  16. package/dist/apps/performance/index.js +17 -1
  17. package/dist/apps/seo/index.d.ts +3 -2
  18. package/dist/apps/seo/index.js +17 -1
  19. package/dist/apps/settings/index.d.ts +3 -2
  20. package/dist/apps/settings/index.js +17 -1
  21. package/dist/apps/tailwind/index.d.ts +3 -2
  22. package/dist/apps/tailwind/index.js +5 -5
  23. package/dist/apps/timeline/index.d.ts +3 -2
  24. package/dist/apps/timeline/index.js +18 -1
  25. package/dist/apps/vite-config/index.d.ts +3 -2
  26. package/dist/apps/vite-config/index.js +16 -1
  27. package/dist/client/overlay.d.ts +1 -1
  28. package/dist/client/overlay.js +1 -1
  29. package/dist/index.d.ts +133 -8
  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 +7 -1
  34. package/dist/packem_shared/Alert-CZq7C43v.js +1 -0
  35. package/dist/packem_shared/Badge-PpblpNWg.js +1 -0
  36. package/dist/packem_shared/Button-CAKvtfij.js +1 -0
  37. package/dist/packem_shared/Card-BSy2oRiS.js +1 -0
  38. package/dist/packem_shared/Icon-0XYV-4AL.js +1 -0
  39. package/dist/packem_shared/Input-Dc1WiT01.js +1 -0
  40. package/dist/packem_shared/Label-BZh8XxUb.js +1 -0
  41. package/dist/packem_shared/Popover-DuiU8EPg.js +1 -0
  42. package/dist/packem_shared/Progress-C90LC--2.js +1 -0
  43. package/dist/packem_shared/Select-CwD-d0pi.js +1 -0
  44. package/dist/packem_shared/Separator-PSjfhX_W.js +1 -0
  45. package/dist/packem_shared/Skeleton-BAFrGUR1.js +1 -0
  46. package/dist/packem_shared/Switch-Wpsp5M3p.js +1 -0
  47. package/dist/packem_shared/Tabs-BdNFQd3c.js +1 -0
  48. package/dist/packem_shared/Textarea-DP9gpte-.js +1 -0
  49. package/dist/packem_shared/Tooltip-DVeuszoY.js +1 -0
  50. package/dist/packem_shared/annotation-settings-DlLZO5Zp.js +1 -0
  51. package/dist/packem_shared/annotation-store-CXMIg0dM.js +1 -0
  52. package/dist/packem_shared/app.d-SmKEDxsI.d.ts +229 -0
  53. package/dist/packem_shared/clsx-CtZWcPHt.js +1 -0
  54. package/dist/packem_shared/createClientRPCContext-80V9c3Qu.js +1 -0
  55. package/dist/packem_shared/createDevToolbarHook-CzejbqD2.js +1 -0
  56. package/dist/packem_shared/createServerRPCContext-C30tqEfQ.js +1 -0
  57. package/dist/packem_shared/getGlobalHook-GRSqUNJ3.js +1 -0
  58. package/dist/packem_shared/getTimelineStore-BT5sImVb.js +1 -0
  59. package/dist/packem_shared/global-api.d-DeaCvII9.d.ts +546 -0
  60. package/dist/packem_shared/loadSettings-C0pUyx9j.js +1 -0
  61. package/dist/packem_shared/server.d-ZkcY0pge.d.ts +39 -0
  62. package/dist/packem_shared/sharedToolbarStylesheet-DNABzHAf.js +2 -0
  63. package/dist/packem_shared/store-Dqy0FbGw.js +1 -0
  64. package/dist/packem_shared/use-theme-DIqZkPAe.js +1 -0
  65. package/dist/toolbar/index.d.ts +152 -49
  66. package/dist/toolbar/index.js +3 -3
  67. package/dist/ui/index.d.ts +382 -17
  68. package/dist/ui/index.js +1 -1
  69. package/dist/vite-plugin.d.ts +183 -141
  70. package/dist/vite-plugin.js +5 -2
  71. package/package.json +41 -22
  72. package/dist/apps/a11y/a11y-app.d.ts +0 -5
  73. package/dist/apps/a11y/a11y-store.d.ts +0 -42
  74. package/dist/apps/a11y/a11y-tooltip.d.ts +0 -11
  75. package/dist/apps/inspector/inspector-app.d.ts +0 -12
  76. package/dist/apps/module-graph/module-graph-app.d.ts +0 -5
  77. package/dist/apps/more/index.d.ts +0 -3
  78. package/dist/apps/more/index.js +0 -2
  79. package/dist/apps/more/more-app.d.ts +0 -5
  80. package/dist/apps/performance/performance-app.d.ts +0 -5
  81. package/dist/apps/performance/performance-tooltip.d.ts +0 -5
  82. package/dist/apps/seo/seo-app.d.ts +0 -5
  83. package/dist/apps/settings/settings-app.d.ts +0 -4
  84. package/dist/apps/tailwind/tailwind-app.d.ts +0 -5
  85. package/dist/apps/timeline/timeline-app.d.ts +0 -5
  86. package/dist/apps/vite-config/vite-config-app.d.ts +0 -5
  87. package/dist/hooks/create-hook.d.ts +0 -12
  88. package/dist/hooks/events.d.ts +0 -7
  89. package/dist/hooks/global-hook.d.ts +0 -15
  90. package/dist/hooks/index.d.ts +0 -6
  91. package/dist/packem_shared/Alert-H-x1JuZ0.js +0 -1
  92. package/dist/packem_shared/Badge-C30mDKKG.js +0 -1
  93. package/dist/packem_shared/Button-DODNCTPZ.js +0 -1
  94. package/dist/packem_shared/Card-DdI7Wn3t.js +0 -1
  95. package/dist/packem_shared/Icon-DWFLZkwW.js +0 -1
  96. package/dist/packem_shared/Input-GfbOwAkK.js +0 -1
  97. package/dist/packem_shared/Label-Bzi47aUf.js +0 -1
  98. package/dist/packem_shared/Popover-CLt7YhUF.js +0 -1
  99. package/dist/packem_shared/Progress-vGfFpxRn.js +0 -1
  100. package/dist/packem_shared/Separator-DQGeJPQg.js +0 -1
  101. package/dist/packem_shared/Skeleton-BYXau6jM.js +0 -1
  102. package/dist/packem_shared/Switch-BeC78S_T.js +0 -1
  103. package/dist/packem_shared/Tabs-CXERaeAp.js +0 -1
  104. package/dist/packem_shared/Textarea-DvbSX13V.js +0 -1
  105. package/dist/packem_shared/Tooltip-tlBN-NdK.js +0 -1
  106. package/dist/packem_shared/cn-DWLJYh3h.js +0 -1
  107. package/dist/packem_shared/createClientRPCContext-DgRxrllw.js +0 -1
  108. package/dist/packem_shared/createDevToolbarHook-4bZZiHPI.js +0 -1
  109. package/dist/packem_shared/createServerRPCContext-CEm1Ymkn.js +0 -1
  110. package/dist/packem_shared/getTimelineStore-B1cfjWV8.js +0 -1
  111. package/dist/packem_shared/loadSettings-hvjR4fcS.js +0 -1
  112. package/dist/packem_shared/setupGlobalHook-CCf9Logv.js +0 -1
  113. package/dist/packem_shared/sharedToolbarStylesheet-DOV-Jwcm.js +0 -2
  114. package/dist/packem_shared/store-DaUtLjf3.js +0 -1
  115. package/dist/packem_shared/use-theme-BOw3dPpY.js +0 -1
  116. package/dist/performance/monitor.d.ts +0 -116
  117. package/dist/rpc/client.d.ts +0 -9
  118. package/dist/rpc/functions/module-graph.d.ts +0 -17
  119. package/dist/rpc/functions/open-in-editor.d.ts +0 -16
  120. package/dist/rpc/functions/tailwind-config.d.ts +0 -15
  121. package/dist/rpc/functions/vite-config.d.ts +0 -9
  122. package/dist/rpc/server.d.ts +0 -15
  123. package/dist/timeline/capture.d.ts +0 -8
  124. package/dist/timeline/index.d.ts +0 -8
  125. package/dist/timeline/store.d.ts +0 -42
  126. package/dist/toolbar/app-manager.d.ts +0 -104
  127. package/dist/toolbar/components/app-button.d.ts +0 -19
  128. package/dist/toolbar/components/app-canvas.d.ts +0 -12
  129. package/dist/toolbar/components/app-tooltip-overlay.d.ts +0 -12
  130. package/dist/toolbar/components/first-visit-hint.d.ts +0 -16
  131. package/dist/toolbar/components/index.d.ts +0 -4
  132. package/dist/toolbar/components/pinned-tooltip-card.d.ts +0 -22
  133. package/dist/toolbar/components/toolbar-bar.d.ts +0 -14
  134. package/dist/toolbar/components/toolbar-container.d.ts +0 -55
  135. package/dist/toolbar/components/vite-overlay-button.d.ts +0 -14
  136. package/dist/toolbar/context/index.d.ts +0 -2
  137. package/dist/toolbar/context/toolbar-context.d.ts +0 -107
  138. package/dist/toolbar/global-api.d.ts +0 -24
  139. package/dist/toolbar/helpers.d.ts +0 -8
  140. package/dist/toolbar/hooks/index.d.ts +0 -10
  141. package/dist/toolbar/hooks/use-apps.d.ts +0 -15
  142. package/dist/toolbar/hooks/use-frame-state.d.ts +0 -100
  143. package/dist/toolbar/hooks/use-panel-visible.d.ts +0 -23
  144. package/dist/toolbar/hooks/use-position.d.ts +0 -24
  145. package/dist/toolbar/hooks/use-theme.d.ts +0 -15
  146. package/dist/toolbar/hooks/use-toolbar.d.ts +0 -16
  147. package/dist/toolbar/settings.d.ts +0 -17
  148. package/dist/toolbar/stylesheet.d.ts +0 -3
  149. package/dist/toolbar/utils/index.d.ts +0 -12
  150. package/dist/types/app.d.ts +0 -175
  151. package/dist/types/global-api.d.ts +0 -91
  152. package/dist/types/hooks.d.ts +0 -86
  153. package/dist/types/index.d.ts +0 -12
  154. package/dist/types/messaging.d.ts +0 -43
  155. package/dist/types/rpc.d.ts +0 -97
  156. package/dist/types/timeline.d.ts +0 -62
  157. package/dist/types/toolbar.d.ts +0 -56
  158. package/dist/ui/components/alert.d.ts +0 -20
  159. package/dist/ui/components/badge.d.ts +0 -10
  160. package/dist/ui/components/button.d.ts +0 -12
  161. package/dist/ui/components/card.d.ts +0 -17
  162. package/dist/ui/components/icon.d.ts +0 -20
  163. package/dist/ui/components/input.d.ts +0 -8
  164. package/dist/ui/components/label.d.ts +0 -8
  165. package/dist/ui/components/popover.d.ts +0 -27
  166. package/dist/ui/components/progress.d.ts +0 -8
  167. package/dist/ui/components/separator.d.ts +0 -9
  168. package/dist/ui/components/skeleton.d.ts +0 -7
  169. package/dist/ui/components/switch.d.ts +0 -12
  170. package/dist/ui/components/tabs.d.ts +0 -29
  171. package/dist/ui/components/textarea.d.ts +0 -8
  172. package/dist/ui/components/tooltip.d.ts +0 -19
  173. package/dist/utils/cn.d.ts +0 -8
  174. package/dist/vite/inject-source.d.ts +0 -24
  175. package/dist/vite/matcher.d.ts +0 -6
@@ -1,144 +1,186 @@
1
- import type { Plugin } from "vite";
2
- import type { DevToolbarApp, ServerFunctions } from "./types/index.d.ts";
3
- import type { InjectSourceIgnore } from "./vite/inject-source.d.ts";
1
+ import { Plugin } from 'vite';
2
+ import { R as ReadFileOptions } from "./packem_shared/server.d-ZkcY0pge.js";
3
+ import { D as DevToolbarApp, S as ServerFunctions } from "./packem_shared/app.d-SmKEDxsI.js";
4
+ import "./packem_shared/global-api.d-DeaCvII9.js";
5
+ import '@babel/generator';
6
+ import 'preact';
7
+ interface InjectSourceIgnore {
8
+ /** Component names or patterns to skip. */
9
+ components?: (RegExp | string)[];
10
+ /** File paths or patterns to skip. */
11
+ files?: (RegExp | string)[];
12
+ }
4
13
  /**
5
- * Dev toolbar plugin options
6
- */
7
- export interface DevToolbarOptions {
8
- /**
9
- * append an import to the module id ending with `appendTo` instead of adding a script into body
10
- * useful for projects that do not use html file as an entry
11
- *
12
- * WARNING: only set this if you know exactly what it does.
13
- * @default Empty string (disabled).
14
- */
15
- appendTo?: string | RegExp;
16
- /**
17
- * Built-in apps to enable
18
- */
19
- apps?: {
20
- [key: string]: boolean | undefined;
21
- a11y?: boolean;
22
- inspector?: boolean;
23
- moduleGraph?: boolean;
24
- performance?: boolean;
25
- seo?: boolean;
26
- settings?: boolean;
27
- tailwind?: boolean;
28
- timeline?: boolean;
29
- viteConfig?: boolean;
30
- };
31
- /**
32
- * Whether clicking outside the DevTools panel closes it.
33
- * @default true
34
- */
35
- closeOnOutsideClick?: boolean;
36
- /**
37
- * Custom apps to register
38
- */
39
- customApps?: DevToolbarApp[];
40
- /**
41
- * Whether toolbar is visible by default
42
- */
43
- defaultVisible?: boolean;
44
- /**
45
- * The editor to open when clicking "Open in editor" in the inspector.
46
- * Accepts any value supported by `launch-editor` — an editor name/alias
47
- * (e.g. `"code"`, `"webstorm"`, `"vim"`, `"atom"`) or the full path to
48
- * the editor executable.
49
- *
50
- * If omitted, `launch-editor` auto-detects the editor from the `EDITOR`
51
- * / `VISUAL` environment variables or from the currently running IDE
52
- * process detected on the OS process list.
53
- * @example "webstorm"
54
- * @example "code"
55
- */
56
- editor?: string;
57
- /**
58
- * Initial panel height as a percentage of the viewport height (20–95).
59
- * @default 60
60
- */
61
- height?: number;
62
- /**
63
- * Inject `data-vdt-source="<file>:<line>:<col>"` attributes into every JSX
64
- * opening element during development. This lets the inspector jump directly
65
- * to the source file when an element is clicked.
66
- *
67
- * Only active when `mode === 'development'`. Set `enabled: false` to opt out.
68
- * Use `ignore.files` / `ignore.components` to exclude specific paths or
69
- * component names (strings are treated as glob patterns).
70
- * @default { enabled: true }
71
- */
72
- injectSource?: {
73
- enabled?: boolean;
74
- ignore?: InjectSourceIgnore;
75
- };
76
- /**
77
- * Keyboard shortcut bindings.
78
- * These are project-level defaults; users can still override them via the
79
- * Settings app (stored in localStorage).
80
- */
81
- keybindings?: {
82
- /** Close active app / panel. \@default "Escape" */
83
- close?: string;
84
- /** Toggle the DevTools panel open/closed. \@default "Alt+Shift+D" */
85
- toggle?: string;
86
- };
87
- /**
88
- * Auto-hide the toolbar pill after this many milliseconds of inactivity.
89
- * Set to -1 to never auto-hide.
90
- * @default 5000
91
- */
92
- minimizePanelInactive?: number;
93
- /**
94
- * Toolbar placement (coarse shorthand sets the edge and rough horizontal
95
- * alignment of the toolbar pill).
96
- * @default "bottom-center"
97
- */
98
- placement?: "bottom-left" | "bottom-center" | "bottom-right";
99
- /**
100
- * Which edge of the viewport the toolbar pill is anchored to.
101
- * Takes precedence over the edge implied by `placement`.
102
- * @default "bottom"
103
- */
104
- position?: "bottom" | "left" | "right" | "top";
105
- /**
106
- * Reduce motion for accessibility (disables all CSS animations).
107
- * @default false
108
- */
109
- reduceMotion?: boolean;
110
- /**
111
- * Strip all \@visulima/dev-toolbar imports and virtual modules when building
112
- * for production (i.e. when `command !== 'serve'` or `mode === 'production'`).
113
- * This guarantees the toolbar never ends up in a production bundle even if the
114
- * user accidentally imports our package in application code.
115
- * @default true
116
- */
117
- removeDevtoolsOnBuild?: boolean;
118
- /**
119
- * Only activate the toolbar when the URL contains a specific query parameter.
120
- * Useful for staging/production environments where you want opt-in debugging.
121
- * @example requireUrlFlag: true, urlFlagName: 'debug' → toolbar only shows when URL has ?debug=true
122
- * @default false
123
- */
124
- requireUrlFlag?: boolean;
125
- /**
126
- * Custom server RPC functions
127
- */
128
- serverFunctions?: Partial<ServerFunctions>;
129
- /**
130
- * The URL query parameter name used when requireUrlFlag is true.
131
- * @default 'devtools'
132
- */
133
- urlFlagName?: string;
134
- /**
135
- * Initial panel width as a percentage of the viewport width (20–95).
136
- * Applies when position is "left" or "right".
137
- * @default 80
138
- */
139
- width?: number;
14
+ * Dev toolbar plugin options
15
+ */
16
+ interface DevToolbarOptions {
17
+ /**
18
+ * append an import to the module id ending with `appendTo` instead of adding a script into body
19
+ * useful for projects that do not use html file as an entry
20
+ *
21
+ * WARNING: only set this if you know exactly what it does.
22
+ * @default Empty string (disabled).
23
+ */
24
+ appendTo?: string | RegExp;
25
+ /**
26
+ * Built-in apps to enable. All apps are disabled by default — only
27
+ * `viteConfig`, `settings`, and the "more" drawer are shown out of the box.
28
+ * Explicitly set an app to `true` to enable it.
29
+ * @example { inspector: true, seo: true }
30
+ */
31
+ apps?: {
32
+ [key: string]: boolean | undefined;
33
+ a11y?: boolean;
34
+ annotations?: boolean;
35
+ assets?: boolean;
36
+ inspector?: boolean;
37
+ moduleGraph?: boolean;
38
+ performance?: boolean;
39
+ seo?: boolean;
40
+ settings?: boolean;
41
+ tailwind?: boolean;
42
+ timeline?: boolean;
43
+ viteConfig?: boolean;
44
+ };
45
+ /**
46
+ * Whether clicking outside the DevTools panel closes it.
47
+ * @default true
48
+ */
49
+ closeOnOutsideClick?: boolean;
50
+ /**
51
+ * Custom apps to register
52
+ */
53
+ customApps?: DevToolbarApp[];
54
+ /**
55
+ * Whether toolbar is visible by default
56
+ */
57
+ defaultVisible?: boolean;
58
+ /**
59
+ * The editor to open when clicking "Open in editor" in the inspector.
60
+ * Accepts any value supported by `launch-editor` an editor name/alias
61
+ * (e.g. `"code"`, `"webstorm"`, `"vim"`, `"atom"`) or the full path to
62
+ * the editor executable.
63
+ *
64
+ * If omitted, `launch-editor` auto-detects the editor from the `EDITOR`
65
+ * / `VISUAL` environment variables or from the currently running IDE
66
+ * process detected on the OS process list.
67
+ * @example "webstorm"
68
+ * @example "code"
69
+ */
70
+ editor?: string;
71
+ /**
72
+ * Master switch for the whole plugin. When `false`, `devToolbar()` returns an
73
+ * empty plugin array, so no virtual modules, RPC server, or client overlay are
74
+ * registered the equivalent of removing the plugin from `vite.config.ts`
75
+ * without editing the config.
76
+ *
77
+ * Handy for CI/preview environments:
78
+ * `devToolbar({ enabled: !process.env.CI })`.
79
+ * @default true
80
+ */
81
+ enabled?: boolean;
82
+ /**
83
+ * Initial panel height as a percentage of the viewport height (20–95).
84
+ * @default 60
85
+ */
86
+ height?: number;
87
+ /**
88
+ * Inject `data-vdt-source="&lt;file>:&lt;line>:&lt;col>"` attributes into every JSX
89
+ * opening element during development. This lets the inspector jump directly
90
+ * to the source file when an element is clicked.
91
+ *
92
+ * Only active when `mode === 'development'`. Set `enabled: false` to opt out.
93
+ * Use `ignore.files` / `ignore.components` to exclude specific paths or
94
+ * component names (strings are treated as glob patterns).
95
+ * @default { enabled: true }
96
+ */
97
+ injectSource?: {
98
+ enabled?: boolean;
99
+ ignore?: InjectSourceIgnore;
100
+ };
101
+ /**
102
+ * Keyboard shortcut bindings.
103
+ * These are project-level defaults; users can still override them via the
104
+ * Settings app (stored in localStorage).
105
+ */
106
+ keybindings?: {
107
+ /** Close active app / panel. \@default "Escape" */
108
+ close?: string;
109
+ /** Toggle the DevTools panel open/closed. \@default "Alt+Shift+D" */
110
+ toggle?: string;
111
+ };
112
+ /**
113
+ * Auto-hide the toolbar pill after this many milliseconds of inactivity.
114
+ * Set to -1 to never auto-hide.
115
+ * @default 5000
116
+ */
117
+ minimizePanelInactive?: number;
118
+ /**
119
+ * Toolbar placement (coarse shorthand — sets the edge and rough horizontal
120
+ * alignment of the toolbar pill).
121
+ * @default "bottom-center"
122
+ */
123
+ placement?: "bottom-left" | "bottom-center" | "bottom-right";
124
+ /**
125
+ * Which edge of the viewport the toolbar pill is anchored to.
126
+ * Takes precedence over the edge implied by `placement`.
127
+ * @default "bottom"
128
+ */
129
+ position?: "bottom" | "left" | "right" | "top";
130
+ /**
131
+ * Policy for the built-in `readFile` RPC endpoint, which lets toolbar apps read
132
+ * text files under the project root.
133
+ *
134
+ * Set to `false` to remove the endpoint entirely — recommended when the dev
135
+ * server is exposed on the network (`vite --host`), since any device on the LAN
136
+ * can then call RPC methods. Pass an object to override the allowed extensions.
137
+ *
138
+ * By default the endpoint is restricted to a curated allowlist of source/markup/
139
+ * text extensions, so `.env`, lockfiles, and key material are never served.
140
+ * @default { extensions: curated source/text list }
141
+ */
142
+ readFile?: ReadFileOptions | false;
143
+ /**
144
+ * Reduce motion for accessibility (disables all CSS animations).
145
+ * @default false
146
+ */
147
+ reduceMotion?: boolean;
148
+ /**
149
+ * Strip all \@visulima/dev-toolbar imports and virtual modules when building
150
+ * for production (i.e. when `command !== 'serve'` or `mode === 'production'`).
151
+ * This guarantees the toolbar never ends up in a production bundle even if the
152
+ * user accidentally imports our package in application code.
153
+ * @default true
154
+ */
155
+ removeDevtoolsOnBuild?: boolean;
156
+ /**
157
+ * Only activate the toolbar when the URL contains a specific query parameter.
158
+ * Useful for staging/production environments where you want opt-in debugging.
159
+ * @example requireUrlFlag: true, urlFlagName: 'debug' → toolbar only shows when URL has ?debug=true
160
+ * @default false
161
+ */
162
+ requireUrlFlag?: boolean;
163
+ /**
164
+ * Custom server RPC functions
165
+ */
166
+ serverFunctions?: Partial<ServerFunctions>;
167
+ /**
168
+ * The URL query parameter name used when requireUrlFlag is true.
169
+ * @default 'devtools'
170
+ */
171
+ urlFlagName?: string;
172
+ /**
173
+ * Initial panel width as a percentage of the viewport width (20–95).
174
+ * Applies when position is "left" or "right".
175
+ * @default 80
176
+ */
177
+ width?: number;
140
178
  }
141
179
  /**
142
- * Returns the Vite plugin array for the dev toolbar.
143
- */
144
- export declare const devToolbar: (options?: DevToolbarOptions) => Plugin[];
180
+ * Returns the Vite plugin array for the dev toolbar.
181
+ *
182
+ * Returns an empty array when `options.enabled === false`, so the plugin can be
183
+ * gated for CI/preview builds without removing it from `vite.config.ts`.
184
+ */
185
+ declare const devToolbar: (options?: DevToolbarOptions) => Plugin[];
186
+ export { DevToolbarOptions, devToolbar };
@@ -1,2 +1,5 @@
1
- var j=Object.defineProperty;var c=(e,o)=>j(e,"name",{value:o,configurable:!0});import{createRequire as $}from"node:module";import{normalizePath as F}from"vite";import{createServerRPCContext as C}from"./packem_shared/createServerRPCContext-CEm1Ymkn.js";const w=$(import.meta.url),n=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=c(e=>{if(typeof n<"u"&&n.versions&&n.versions.node){const[o,u]=n.versions.node.split(".").map(Number);if(o>22||o===22&&u>=3||o===20&&u>=16)return n.getBuiltinModule(e)}return w(e)},"__cjs_getBuiltinModule"),T=v("node:fs"),P=v("node:path"),{fileURLToPath:x}=v("node:url");var O=Object.defineProperty,f=c((e,o)=>O(e,"name",{value:o,configurable:!0}),"s");const R=f(()=>F(P.dirname(x(import.meta.url))),"getDevToolbarPath"),I=/\?.+$/,S=/\/dist\/|\/build\//,q=/\.[jt]sx$/,W=f(e=>e.replace(I,""),"removeUrlQuery"),g="?__visulima-dev-toolbar-resource",m="virtual:visulima-dev-toolbar-options",h=`\0${m}`,l="virtual:visulima-dev-toolbar-path:",y="\0__visulima-dev-toolbar-empty",z=f((e={})=>{const o=R(),u=e.removeDevtoolsOnBuild??!0,_=e.injectSource?.enabled??!0;let d;return[{apply:"serve",configResolved(t){d=t},configureServer(t){C(t,e.serverFunctions,{editor:e.editor}),t.ws.on("connection",()=>{t.ws.send({event:"dev-toolbar:init",type:"custom"})})},enforce:"pre",async load(t){if(t===h)return`export default ${JSON.stringify({apps:{a11y:e.apps?.a11y??!0,inspector:e.apps?.inspector??!0,moduleGraph:e.apps?.moduleGraph??!0,performance:e.apps?.performance??!0,seo:e.apps?.seo??!0,settings:e.apps?.settings??!0,tailwind:e.apps?.tailwind??!0,timeline:e.apps?.timeline??!0,viteConfig:e.apps?.viteConfig??!0},base:d.base,closeOnOutsideClick:e.closeOnOutsideClick??!0,defaultVisible:e.defaultVisible??!0,height:e.height??60,keybindings:e.keybindings??{},minimizePanelInactive:e.minimizePanelInactive??5e3,placement:e.placement??"bottom-center",position:e.position??"bottom",reduceMotion:e.reduceMotion??!1,requireUrlFlag:e.requireUrlFlag??!1,urlFlagName:e.urlFlagName??"devtools",width:e.width??80})};`;if(t.endsWith(g)){const r=W(t);return this.addWatchFile(r),await T.promises.readFile(r,"utf8")}},name:"@visulima/dev-toolbar",resolveId(t){if(t===m)return h;if(t.startsWith(l))return`${t.replace(l,`${o}/`)}${g}`},transform(t,r,s){if(s?.ssr)return;const{appendTo:i}=e,a=r.split("?",2)[0];if(i&&a&&(typeof i=="string"&&a.endsWith(i)||i instanceof RegExp&&i.test(a)))return`import '${l}client/overlay.js';
2
- ${t}`},transformIndexHtml(){return e.appendTo?void 0:{html:"",tags:[{attrs:{src:`${d.base||"/"}@id/${l}client/overlay.js`,type:"module"},injectTo:"head-prepend",tag:"script"}]}}},{enforce:"pre",name:"@visulima/dev-toolbar:inject-source",async transform(t,r){if(!_||d.mode!=="development"||r.includes("node_modules")||r.includes("?raw")||S.test(r)||!q.test(r.split("?")[0]??""))return;const{readFile:s}=await import("node:fs/promises");let i;try{const b=await s(r.split("?")[0]??r,"utf8");b!==t&&(i=b)}catch{}const{addSourceToJsx:a}=await import("./packem_chunks/inject-source.js"),p=a(t,r,e.injectSource?.ignore,i);if(p)return{code:p.code??t,map:p.map??void 0}}},{apply(t,{command:r,mode:s}){return u&&(r!=="serve"||s==="production")},load(t){if(t===y)return"export default {};"},name:"@visulima/dev-toolbar:remove-on-build",resolveId(t){if(t===m||t.startsWith(l))return y}}]},"devToolbar");export{z as devToolbar};
1
+ import{createRequire as O}from"node:module";import{normalizePath as R}from"vite";import{createServerRPCContext as N}from"./packem_shared/createServerRPCContext-C30tqEfQ.js";const M=O(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,y=e=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[p,f]=u.versions.node.split(".").map(Number);if(p>22||p===22&&f>=3||p===20&&f>=16)return u.getBuiltinModule(e)}return M(e)},S=y("node:fs"),x=y("node:path"),{fileURLToPath:I}=y("node:url"),P=()=>R(x.dirname(I(import.meta.url))),q=/\?.+$/,D=/\/dist\/|\/build\//,W=/\.[jt]sx$/,B=e=>e.replace(q,""),_="?__visulima-dev-toolbar-resource",b="virtual:visulima-dev-toolbar-options",j=`\0${b}`,m="virtual:visulima-dev-toolbar-path:",$="\0__visulima-dev-toolbar-empty",T=(e,p)=>typeof e!="number"||!Number.isFinite(e)?p:Math.min(95,Math.max(20,e)),U=(e={})=>{if(e.enabled===!1)return[];const p=P(),f=e.removeDevtoolsOnBuild??!0,C=e.injectSource?.enabled??!0;let v;const F={apply:"serve",config(){return{server:{watch:{ignored:["**/.devtoolbar/**"]}}}},configResolved(t){if(v=t,!e.appendTo){const o=new Set(t.plugins.map(i=>i.name));(o.has("tanstack-start-core:config")||o.has("tanstack-react-start:config"))&&(e.appendTo=/router\.tsx$/)}const n=/dev-toolbar[\\/]dist[\\/]|__visulima-dev-toolbar-resource/;for(const o of t.plugins){if(!o.name.includes("babel"))continue;const i=o.transform;if(!i)continue;const a=typeof i=="function"?i:typeof i=="object"&&"handler"in i?i.handler:void 0;if(typeof a!="function")continue;const s=function(c,r,...l){if(!n.test(r))return a.call(this,c,r,...l)};typeof i=="function"?o.transform=s:i.handler=s}},configureServer(t){N(t,e.serverFunctions,{editor:e.editor,readFile:e.readFile}),t.ws.on("connection",()=>{t.ws.send({event:"dev-toolbar:init",type:"custom"})}),t.middlewares.use("/__devtoolbar/events",async(n,o)=>{o.writeHead(200,{"Cache-Control":"no-cache",Connection:"keep-alive","Content-Type":"text/event-stream","X-Accel-Buffering":"no"});const i=(r,l)=>{o.write(`event: ${r}
2
+ data: ${JSON.stringify(l)}
3
+
4
+ `)};i("connected",{timestamp:Date.now()});const{watch:a}=await import("node:fs"),s=x.join(t.config.root,".devtoolbar","annotations.json");let c;try{c=a(s,{persistent:!1},r=>{r==="change"&&i("annotations.changed",{timestamp:Date.now()})}),c.on("error",()=>{})}catch{const{stat:r}=await import("node:fs/promises");let l=0;const h=setInterval(async()=>{try{const d=(await r(s)).mtimeMs;d!==l&&(l=d,i("annotations.changed",{timestamp:Date.now()}))}catch{}},2e3);n.on("close",()=>{clearInterval(h)});return}n.on("close",()=>{c?.close()})})},enforce:"pre",async load(t){if(t===j){const n=(e.customApps??[]).filter(o=>!o.component&&!o.init&&o.view?.type==="iframe").map(o=>({defaultOpen:o.defaultOpen,icon:o.icon,id:o.id,name:o.name,view:o.view}));return`export default ${JSON.stringify({apps:{a11y:e.apps?.a11y??!1,annotations:e.apps?.annotations??e.apps?.inspector??!1,assets:e.apps?.assets??!1,inspector:e.apps?.inspector??!1,moduleGraph:e.apps?.moduleGraph??!1,performance:e.apps?.performance??!1,seo:e.apps?.seo??!1,settings:e.apps?.settings??!0,tailwind:e.apps?.tailwind??!1,timeline:e.apps?.timeline??!1,viteConfig:e.apps?.viteConfig??!0},base:v.base,closeOnOutsideClick:e.closeOnOutsideClick??!0,customApps:n,defaultVisible:e.defaultVisible??!0,editor:e.editor??"",height:T(e.height,60),keybindings:e.keybindings??{},minimizePanelInactive:e.minimizePanelInactive??5e3,placement:e.placement??"bottom-center",position:e.position??"bottom",reduceMotion:e.reduceMotion??!1,requireUrlFlag:e.requireUrlFlag??!1,urlFlagName:e.urlFlagName??"devtools",width:T(e.width,80)})};`}if(t.endsWith(_)){const n=B(t);return this.addWatchFile(n),await S.promises.readFile(n,"utf8")}},name:"@visulima/dev-toolbar",resolveId(t){if(t===b)return j;if(t.startsWith(m))return`${t.replace(m,`${p}/`)}${_}`},transform(t,n,o){if(o?.ssr)return;const{appendTo:i}=e,a=n.split("?",2)[0];if(i&&a&&(typeof i=="string"&&a.endsWith(i)||i instanceof RegExp&&i.test(a)))return`import '${m}client/overlay.js';
5
+ ${t}`},transformIndexHtml(){return e.appendTo?void 0:{html:"",tags:[{attrs:{src:`${v.base||"/"}@id/${m}client/overlay.js`,type:"module"},injectTo:"head-prepend",tag:"script"}]}}},k={apply(t,{command:n,mode:o}){return f&&(n!=="serve"||o==="production")},load(t){if(t===$)return"export default {};"},name:"@visulima/dev-toolbar:remove-on-build",resolveId(t){if(t===b||t.startsWith(m))return $}},w=new Map;return[F,{enforce:"pre",name:"@visulima/dev-toolbar:inject-source",async transform(t,n){if(!C||v.mode!=="development"||n.includes("node_modules")||n.includes("?raw")||D.test(n)||!W.test(n.split("?")[0]??""))return;const o=n.split("?")[0]??n,{readFile:i,stat:a}=await import("node:fs/promises");let s;try{const{mtimeMs:d}=await a(o);s=`${t.length}:${d}`;const g=w.get(n);if(g&&g.key===s)return g.result}catch{}let c;try{const d=await i(o,"utf8");d!==t&&(c=d)}catch{}const{addSourceToJsx:r}=await import("./packem_chunks/inject-source.js"),l=r(t,n,e.injectSource?.ignore,c),h=l?{code:l.code??t,map:l.map??void 0}:void 0;return s!==void 0&&w.set(n,{key:s,result:h}),h}},k]};export{U as devToolbar};
package/package.json CHANGED
@@ -1,15 +1,13 @@
1
1
  {
2
2
  "name": "@visulima/dev-toolbar",
3
- "version": "1.0.0-alpha.4",
3
+ "version": "1.0.0-alpha.40",
4
4
  "description": "Devtools is a set of tools for building advanced devtools for your application",
5
5
  "keywords": [
6
- "visulima",
7
- "dev-toolbar"
6
+ "dev-toolbar",
7
+ "visulima"
8
8
  ],
9
9
  "homepage": "https://visulima.com/packages/dev-toolbar",
10
- "bugs": {
11
- "url": "https://github.com/visulima/visulima/issues"
12
- },
10
+ "bugs": "https://github.com/visulima/visulima/issues",
13
11
  "repository": {
14
12
  "type": "git",
15
13
  "url": "git+https://github.com/visulima/visulima.git",
@@ -49,6 +47,10 @@
49
47
  "types": "./dist/apps/a11y/index.d.ts",
50
48
  "default": "./dist/apps/a11y/index.js"
51
49
  },
50
+ "./apps/assets": {
51
+ "types": "./dist/apps/assets/index.d.ts",
52
+ "default": "./dist/apps/assets/index.js"
53
+ },
52
54
  "./apps/inspector": {
53
55
  "types": "./dist/apps/inspector/index.d.ts",
54
56
  "default": "./dist/apps/inspector/index.js"
@@ -61,10 +63,6 @@
61
63
  "types": "./dist/apps/module-graph/index.d.ts",
62
64
  "default": "./dist/apps/module-graph/index.js"
63
65
  },
64
- "./apps/more": {
65
- "types": "./dist/apps/more/index.d.ts",
66
- "default": "./dist/apps/more/index.js"
67
- },
68
66
  "./apps/performance": {
69
67
  "types": "./dist/apps/performance/index.d.ts",
70
68
  "default": "./dist/apps/performance/index.js"
@@ -81,10 +79,18 @@
81
79
  "types": "./dist/apps/timeline/index.d.ts",
82
80
  "default": "./dist/apps/timeline/index.js"
83
81
  },
82
+ "./apps/annotations": {
83
+ "types": "./dist/apps/annotations/index.d.ts",
84
+ "default": "./dist/apps/annotations/index.js"
85
+ },
84
86
  "./apps/vite-config": {
85
87
  "types": "./dist/apps/vite-config/index.d.ts",
86
88
  "default": "./dist/apps/vite-config/index.js"
87
89
  },
90
+ "./mcp": {
91
+ "types": "./dist/mcp/server.d.ts",
92
+ "default": "./dist/mcp/server.js"
93
+ },
88
94
  "./toolbar": {
89
95
  "types": "./dist/toolbar/index.d.ts",
90
96
  "default": "./dist/toolbar/index.js"
@@ -95,29 +101,42 @@
95
101
  },
96
102
  "./package.json": "./package.json"
97
103
  },
104
+ "bin": {
105
+ "visulima-dev-toolbar-mcp": "./bin/mcp.js"
106
+ },
98
107
  "files": [
108
+ "bin",
99
109
  "dist",
100
110
  "README.md",
101
111
  "CHANGELOG.md"
102
112
  ],
103
113
  "dependencies": {
104
- "@babel/generator": "^7.29.1",
105
- "@babel/parser": "^7.29.0",
106
- "@babel/traverse": "^7.29.0",
107
- "@babel/types": "^7.29.0",
114
+ "@babel/generator": "^8.0.0",
115
+ "@babel/parser": "^8.0.0",
116
+ "@babel/traverse": "^8.0.0",
108
117
  "@floating-ui/dom": "^1.7.6",
109
- "axe-core": "^4.11.1",
110
- "clsx": "^2.1.1",
111
- "launch-editor": "^2.13.1",
112
- "lucide-static": "^0.576.0",
113
- "preact": "^10.28.4",
114
- "tailwind-merge": "^3.5.0"
118
+ "launch-editor": "2.14.1",
119
+ "preact": "^10.29.2"
115
120
  },
116
121
  "peerDependencies": {
117
- "vite": "^6 || ^7 || ^8"
122
+ "@modelcontextprotocol/sdk": "^1.29.0",
123
+ "axe-core": "4.12.1",
124
+ "vite": "^8.0.11",
125
+ "zod": "^3.25.0 || ^4.0.0"
126
+ },
127
+ "peerDependenciesMeta": {
128
+ "@modelcontextprotocol/sdk": {
129
+ "optional": true
130
+ },
131
+ "axe-core": {
132
+ "optional": true
133
+ },
134
+ "zod": {
135
+ "optional": true
136
+ }
118
137
  },
119
138
  "engines": {
120
- "node": ">=22.21"
139
+ "node": "^22.14.0 || >=24.10.0"
121
140
  },
122
141
  "publishConfig": {
123
142
  "access": "public",
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppComponentProps } from "../../types/app.d.ts";
4
- declare const A11yApp: (_props: AppComponentProps) => ComponentChildren;
5
- export default A11yApp;
@@ -1,42 +0,0 @@
1
- type Severity = "critical" | "minor" | "moderate" | "serious";
2
- type Standard = "best-practice" | "wcag21aa" | "wcag22aa" | "wcag2a";
3
- interface A11yNode {
4
- html: string;
5
- selector: string;
6
- }
7
- interface A11yIssue {
8
- helpUrl: string;
9
- id: string;
10
- impact: Severity;
11
- message: string;
12
- nodes: A11yNode[];
13
- wcagTags: string[];
14
- }
15
- interface A11yStoreState {
16
- isScanning: boolean;
17
- issues: A11yIssue[];
18
- lastScan: string | undefined;
19
- scanError: string | undefined;
20
- showOverlays: boolean;
21
- standard: Standard;
22
- }
23
- declare const SEVERITY_ORDER: Severity[];
24
- type Listener = () => void;
25
- declare class A11yStore {
26
- private listeners;
27
- private state;
28
- constructor();
29
- clearHighlights(): void;
30
- getState(): Readonly<A11yStoreState>;
31
- highlightIssue(issue: A11yIssue): void;
32
- scan(disabledRules?: string[]): Promise<void>;
33
- setShowOverlays(show: boolean): void;
34
- setStandard(standard: Standard): void;
35
- subscribe(listener: Listener): () => void;
36
- private notify;
37
- private persist;
38
- private update;
39
- }
40
- declare const a11yStore: A11yStore;
41
- export type { A11yIssue, A11yNode, A11yStoreState, Severity, Standard };
42
- export { a11yStore, SEVERITY_ORDER };
@@ -1,11 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppTooltipProps } from "../../types/app.d.ts";
4
- /**
5
- * Hover tooltip for the Accessibility app button.
6
- * Shows a summary of scan results and quick action buttons.
7
- * @param _props Tooltip props (unused; reads from a11yStore directly)
8
- * @returns Rendered tooltip component
9
- */
10
- declare const A11yTooltip: (_props: AppTooltipProps) => ComponentChildren;
11
- export default A11yTooltip;
@@ -1,12 +0,0 @@
1
- /**
2
- * Start element inspection mode.
3
- * Attaches crosshair cursor, hover highlight overlay, and a floating badge.
4
- * Survives component unmounts — state lives at module level.
5
- * @param onComplete Called when the user clicks an element (after cleanup).
6
- * @param onCancel Called when the user cancels via badge button or Escape.
7
- */
8
- export declare const startGlobalInspection: (onComplete: () => void, onCancel: () => void) => void;
9
- /**
10
- * Cancel any in-progress inspection and clean up all DOM side-effects.
11
- */
12
- export declare const stopGlobalInspection: () => void;
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppComponentProps } from "../../types/app.d.ts";
4
- declare const ModuleGraphApp: ({ helpers }: AppComponentProps) => ComponentChildren;
5
- export default ModuleGraphApp;
@@ -1,3 +0,0 @@
1
- import type { DevToolbarApp } from "../../types/app.d.ts";
2
- declare const moreApp: DevToolbarApp;
3
- export default moreApp;
@@ -1,2 +0,0 @@
1
- var p=Object.defineProperty;var s=(i,t)=>p(i,"name",{value:t,configurable:!0});import m from"lucide-static/icons/more-horizontal.svg?raw";import{addHookName as f}from"preact/devtools";import{useState as u,useEffect as b}from"preact/hooks";import g from"../../packem_shared/cn-DWLJYh3h.js";import{jsxs as o,jsx as r}from"preact/jsx-runtime";var h=Object.defineProperty,n=s((i,t)=>h(i,"name",{value:t,configurable:!0}),"n");const x=n(i=>{const[t,a]=f(u([]),"apps");b(()=>{const e=globalThis.__VISULIMA_DEVTOOLS__;if(!e)return;const l=(e.getApps()??[]).filter(c=>!["dev-toolbar:a11y","dev-toolbar:inspector","dev-toolbar:module-graph","dev-toolbar:more","dev-toolbar:performance","dev-toolbar:seo","dev-toolbar:settings","dev-toolbar:tailwind","dev-toolbar:timeline","dev-toolbar:vite-config"].includes(c.id));a(l)},[]);const d=n(e=>{globalThis.__VISULIMA_DEVTOOLS__?.openApp(e).catch(()=>{})},"openApp");return t.length===0?o("div",{class:"p-8 flex flex-col items-center justify-center min-h-48 gap-5 text-center select-none",children:[r("div",{class:"size-14 bg-primary/5 border border-primary/20 flex items-center justify-center",children:r("svg",{"aria-hidden":"true",class:"size-6 text-primary/40",fill:"none",stroke:"currentColor","stroke-width":"1.5",viewBox:"0 0 24 24",children:r("path",{d:"M12 6v6m0 0v6m0-6h6m-6 0H6","stroke-linecap":"round","stroke-linejoin":"round"})})}),o("div",{class:"space-y-1.5",children:[r("p",{class:"text-[0.8125rem] font-medium text-foreground/70",children:"No additional apps registered"}),r("p",{class:"text-[0.725rem] text-muted-foreground",children:"Register a custom app to see it here"}),r("pre",{class:"mt-3 text-[0.65rem] font-mono text-primary/70 bg-primary/5 border border-primary/15 px-3 py-2 text-left",children:`window.__VISULIMA_DEVTOOLS__
2
- .registerApp({ id, name, icon })`})]})]}):o("div",{class:"p-5",children:[o("h2",{class:"text-[0.65rem] font-bold uppercase tracking-[0.1em] text-muted-foreground mb-3 flex items-center gap-1.5",children:[r("span",{"aria-hidden":"true",class:"text-primary/50",children:"//"}),"Additional Apps"]}),r("div",{class:"grid grid-cols-2 gap-2",children:t.map(e=>o("button",{class:g("flex items-center gap-3 p-3","border border-border bg-card hover:bg-foreground/4","text-left cursor-pointer transition-colors duration-150"),onClick:n(()=>d(e.id),"onClick"),title:e.name,type:"button",children:[r("span",{class:"size-5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase bg-foreground/8 text-foreground/70",children:e.name.slice(0,2)}),r("span",{class:"text-[0.8125rem] font-medium text-foreground truncate",children:e.name})]},e.id))})]})},"MoreApp"),O={component:x,icon:m,id:"dev-toolbar:more",name:"More"};export{O as default};
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppComponentProps } from "../../types/app.d.ts";
4
- declare const MoreApp: (_props: AppComponentProps) => ComponentChildren;
5
- export default MoreApp;
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppComponentProps } from "../../types/app.d.ts";
4
- declare const PerformanceApp: (_props: AppComponentProps) => ComponentChildren;
5
- export default PerformanceApp;
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppTooltipProps } from "../../types/app.d.ts";
4
- declare const PerformanceTooltip: (_props: AppTooltipProps) => ComponentChildren;
5
- export default PerformanceTooltip;
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppComponentProps } from "../../types/app.d.ts";
4
- declare const SeoApp: (_props: AppComponentProps) => ComponentChildren;
5
- export default SeoApp;
@@ -1,4 +0,0 @@
1
- import type { ComponentChildren } from "preact";
2
- import type { AppComponentProps } from "../../types/app.d.ts";
3
- declare const SettingsApp: (_props: AppComponentProps) => ComponentChildren;
4
- export default SettingsApp;
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppComponentProps } from "../../types/app.d.ts";
4
- declare const TailwindApp: ({ helpers }: AppComponentProps) => ComponentChildren;
5
- export default TailwindApp;
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppComponentProps } from "../../types/app.d.ts";
4
- declare const TimelineApp: (_props: AppComponentProps) => ComponentChildren;
5
- export default TimelineApp;
@@ -1,5 +0,0 @@
1
- /** @jsxImportSource preact */
2
- import type { ComponentChildren } from "preact";
3
- import type { AppComponentProps } from "../../types/app.d.ts";
4
- declare const ViteConfigApp: ({ helpers }: AppComponentProps) => ComponentChildren;
5
- export default ViteConfigApp;