@lickle/docs 0.0.0-dev.1

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 (407) hide show
  1. package/README.md +3 -0
  2. package/dist/esm/_lib/fs/index.js +20 -0
  3. package/dist/esm/_lib/fs/index.js.map +1 -0
  4. package/dist/esm/_lib/fs/watch.js +30 -0
  5. package/dist/esm/_lib/fs/watch.js.map +1 -0
  6. package/dist/esm/_lib/index.js +9 -0
  7. package/dist/esm/_lib/index.js.map +1 -0
  8. package/dist/esm/_lib/jiti/index.js +16 -0
  9. package/dist/esm/_lib/jiti/index.js.map +1 -0
  10. package/dist/esm/_lib/path/index.js +42 -0
  11. package/dist/esm/_lib/path/index.js.map +1 -0
  12. package/dist/esm/_lib/pkg/index.js +128 -0
  13. package/dist/esm/_lib/pkg/index.js.map +1 -0
  14. package/dist/esm/_lib/repo/index.js +100 -0
  15. package/dist/esm/_lib/repo/index.js.map +1 -0
  16. package/dist/esm/_lib/slug/index.js +23 -0
  17. package/dist/esm/_lib/slug/index.js.map +1 -0
  18. package/dist/esm/_lib/t.js +2 -0
  19. package/dist/esm/_lib/t.js.map +1 -0
  20. package/dist/esm/_lib/tsconfig/index.js +12 -0
  21. package/dist/esm/_lib/tsconfig/index.js.map +1 -0
  22. package/dist/esm/_lib/util/index.js +54 -0
  23. package/dist/esm/_lib/util/index.js.map +1 -0
  24. package/dist/esm/cli/cmd/dev.js +74 -0
  25. package/dist/esm/cli/cmd/dev.js.map +1 -0
  26. package/dist/esm/cli/cmd/index.js +4 -0
  27. package/dist/esm/cli/cmd/index.js.map +1 -0
  28. package/dist/esm/cli/cmd/init.js +74 -0
  29. package/dist/esm/cli/cmd/init.js.map +1 -0
  30. package/dist/esm/cli/cmd/json.js +28 -0
  31. package/dist/esm/cli/cmd/json.js.map +1 -0
  32. package/dist/esm/cli/env.js +5 -0
  33. package/dist/esm/cli/env.js.map +1 -0
  34. package/dist/esm/cli/index.js +13 -0
  35. package/dist/esm/cli/index.js.map +1 -0
  36. package/dist/esm/cli/vite/client/index.jsx +20 -0
  37. package/dist/esm/cli/vite/client/index.jsx.map +1 -0
  38. package/dist/esm/cli/vite/index.js +100 -0
  39. package/dist/esm/cli/vite/index.js.map +1 -0
  40. package/dist/esm/cli.js +5 -0
  41. package/dist/esm/cli.js.map +1 -0
  42. package/dist/esm/config/defaults.js +32 -0
  43. package/dist/esm/config/defaults.js.map +1 -0
  44. package/dist/esm/config/file.js +48 -0
  45. package/dist/esm/config/file.js.map +1 -0
  46. package/dist/esm/config/index.js +7 -0
  47. package/dist/esm/config/index.js.map +1 -0
  48. package/dist/esm/config/load.js +79 -0
  49. package/dist/esm/config/load.js.map +1 -0
  50. package/dist/esm/config/types.js +2 -0
  51. package/dist/esm/config/types.js.map +1 -0
  52. package/dist/esm/core/index.js +3 -0
  53. package/dist/esm/core/index.js.map +1 -0
  54. package/dist/esm/core/project/debug.js +26 -0
  55. package/dist/esm/core/project/debug.js.map +1 -0
  56. package/dist/esm/core/project/index.js +39 -0
  57. package/dist/esm/core/project/index.js.map +1 -0
  58. package/dist/esm/core/project/naming.js +39 -0
  59. package/dist/esm/core/project/naming.js.map +1 -0
  60. package/dist/esm/core/project/routing.js +173 -0
  61. package/dist/esm/core/project/routing.js.map +1 -0
  62. package/dist/esm/core/project/types.js +4 -0
  63. package/dist/esm/core/project/types.js.map +1 -0
  64. package/dist/esm/core/reflect/index.js +10 -0
  65. package/dist/esm/core/reflect/index.js.map +1 -0
  66. package/dist/esm/core/reflect/indexed.js +195 -0
  67. package/dist/esm/core/reflect/indexed.js.map +1 -0
  68. package/dist/esm/core/reflect/resolve.js +157 -0
  69. package/dist/esm/core/reflect/resolve.js.map +1 -0
  70. package/dist/esm/core/reflect/scan.js +787 -0
  71. package/dist/esm/core/reflect/scan.js.map +1 -0
  72. package/dist/esm/core/reflect/state.js +29 -0
  73. package/dist/esm/core/reflect/state.js.map +1 -0
  74. package/dist/esm/core/reflect/types.js +16 -0
  75. package/dist/esm/core/reflect/types.js.map +1 -0
  76. package/dist/esm/core/reflect/walk.js +106 -0
  77. package/dist/esm/core/reflect/walk.js.map +1 -0
  78. package/dist/esm/solidjs/index.js +2 -0
  79. package/dist/esm/solidjs/index.js.map +1 -0
  80. package/dist/esm/solidjs/jsx-runtime.js +2 -0
  81. package/dist/esm/solidjs/jsx-runtime.js.map +1 -0
  82. package/dist/esm/ui/App.jsx +71 -0
  83. package/dist/esm/ui/App.jsx.map +1 -0
  84. package/dist/esm/ui/components/Breadcrumb.jsx +45 -0
  85. package/dist/esm/ui/components/Breadcrumb.jsx.map +1 -0
  86. package/dist/esm/ui/components/Code/index.jsx +89 -0
  87. package/dist/esm/ui/components/Code/index.jsx.map +1 -0
  88. package/dist/esm/ui/components/Comment.jsx +176 -0
  89. package/dist/esm/ui/components/Comment.jsx.map +1 -0
  90. package/dist/esm/ui/components/Declaration.jsx +147 -0
  91. package/dist/esm/ui/components/Declaration.jsx.map +1 -0
  92. package/dist/esm/ui/components/Header.jsx +66 -0
  93. package/dist/esm/ui/components/Header.jsx.map +1 -0
  94. package/dist/esm/ui/components/Layout.jsx +44 -0
  95. package/dist/esm/ui/components/Layout.jsx.map +1 -0
  96. package/dist/esm/ui/components/Link.jsx +34 -0
  97. package/dist/esm/ui/components/Link.jsx.map +1 -0
  98. package/dist/esm/ui/components/LivePreview/Example.jsx +76 -0
  99. package/dist/esm/ui/components/LivePreview/Example.jsx.map +1 -0
  100. package/dist/esm/ui/components/LivePreview/Sandbox.jsx +25 -0
  101. package/dist/esm/ui/components/LivePreview/Sandbox.jsx.map +1 -0
  102. package/dist/esm/ui/components/LivePreview/index.js +4 -0
  103. package/dist/esm/ui/components/LivePreview/index.js.map +1 -0
  104. package/dist/esm/ui/components/LivePreview/transform.js +16 -0
  105. package/dist/esm/ui/components/LivePreview/transform.js.map +1 -0
  106. package/dist/esm/ui/components/Markdown.jsx +14 -0
  107. package/dist/esm/ui/components/Markdown.jsx.map +1 -0
  108. package/dist/esm/ui/components/Page.jsx +121 -0
  109. package/dist/esm/ui/components/Page.jsx.map +1 -0
  110. package/dist/esm/ui/components/References.jsx +32 -0
  111. package/dist/esm/ui/components/References.jsx.map +1 -0
  112. package/dist/esm/ui/components/SearchPalette.jsx +178 -0
  113. package/dist/esm/ui/components/SearchPalette.jsx.map +1 -0
  114. package/dist/esm/ui/components/Sidebar.jsx +63 -0
  115. package/dist/esm/ui/components/Sidebar.jsx.map +1 -0
  116. package/dist/esm/ui/components/Syntax.jsx +10 -0
  117. package/dist/esm/ui/components/Syntax.jsx.map +1 -0
  118. package/dist/esm/ui/components/ThemeToggle.jsx +25 -0
  119. package/dist/esm/ui/components/ThemeToggle.jsx.map +1 -0
  120. package/dist/esm/ui/components/Type.jsx +444 -0
  121. package/dist/esm/ui/components/Type.jsx.map +1 -0
  122. package/dist/esm/ui/components/index.js +16 -0
  123. package/dist/esm/ui/components/index.js.map +1 -0
  124. package/dist/esm/ui/context/components.jsx +30 -0
  125. package/dist/esm/ui/context/components.jsx.map +1 -0
  126. package/dist/esm/ui/context/global.js +15 -0
  127. package/dist/esm/ui/context/global.js.map +1 -0
  128. package/dist/esm/ui/context/index.js +5 -0
  129. package/dist/esm/ui/context/index.js.map +1 -0
  130. package/dist/esm/ui/context/markup/index.jsx +25 -0
  131. package/dist/esm/ui/context/markup/index.jsx.map +1 -0
  132. package/dist/esm/ui/context/markup/markdown.js +34 -0
  133. package/dist/esm/ui/context/markup/markdown.js.map +1 -0
  134. package/dist/esm/ui/context/markup/shiki.js +58 -0
  135. package/dist/esm/ui/context/markup/shiki.js.map +1 -0
  136. package/dist/esm/ui/context/markup/util.js +22 -0
  137. package/dist/esm/ui/context/markup/util.js.map +1 -0
  138. package/dist/esm/ui/context/project/index.jsx +27 -0
  139. package/dist/esm/ui/context/project/index.jsx.map +1 -0
  140. package/dist/esm/ui/context/project/indexed.js +47 -0
  141. package/dist/esm/ui/context/project/indexed.js.map +1 -0
  142. package/dist/esm/ui/context/project/types.js +2 -0
  143. package/dist/esm/ui/context/project/types.js.map +1 -0
  144. package/dist/esm/ui/context/theme.jsx +36 -0
  145. package/dist/esm/ui/context/theme.jsx.map +1 -0
  146. package/dist/esm/ui/hooks/index.js +94 -0
  147. package/dist/esm/ui/hooks/index.js.map +1 -0
  148. package/dist/esm/ui/index.js +5 -0
  149. package/dist/esm/ui/index.js.map +1 -0
  150. package/dist/esm/ui/renderer.jsx +21 -0
  151. package/dist/esm/ui/renderer.jsx.map +1 -0
  152. package/dist/esm/ui/util/comment.js +14 -0
  153. package/dist/esm/ui/util/comment.js.map +1 -0
  154. package/dist/esm/ui/util/kind.js +85 -0
  155. package/dist/esm/ui/util/kind.js.map +1 -0
  156. package/dist/esm/ui/util/markdown.js +66 -0
  157. package/dist/esm/ui/util/markdown.js.map +1 -0
  158. package/dist/esm/ui/util/search.js +75 -0
  159. package/dist/esm/ui/util/search.js.map +1 -0
  160. package/dist/ts/_lib/fs/index.d.ts +6 -0
  161. package/dist/ts/_lib/fs/index.d.ts.map +1 -0
  162. package/dist/ts/_lib/fs/watch.d.ts +14 -0
  163. package/dist/ts/_lib/fs/watch.d.ts.map +1 -0
  164. package/dist/ts/_lib/index.d.ts +10 -0
  165. package/dist/ts/_lib/index.d.ts.map +1 -0
  166. package/dist/ts/_lib/jiti/index.d.ts +2 -0
  167. package/dist/ts/_lib/jiti/index.d.ts.map +1 -0
  168. package/dist/ts/_lib/path/index.d.ts +12 -0
  169. package/dist/ts/_lib/path/index.d.ts.map +1 -0
  170. package/dist/ts/_lib/pkg/index.d.ts +28 -0
  171. package/dist/ts/_lib/pkg/index.d.ts.map +1 -0
  172. package/dist/ts/_lib/repo/index.d.ts +30 -0
  173. package/dist/ts/_lib/repo/index.d.ts.map +1 -0
  174. package/dist/ts/_lib/slug/index.d.ts +4 -0
  175. package/dist/ts/_lib/slug/index.d.ts.map +1 -0
  176. package/dist/ts/_lib/t.d.ts +11 -0
  177. package/dist/ts/_lib/t.d.ts.map +1 -0
  178. package/dist/ts/_lib/tsconfig/index.d.ts +8 -0
  179. package/dist/ts/_lib/tsconfig/index.d.ts.map +1 -0
  180. package/dist/ts/_lib/util/index.d.ts +9 -0
  181. package/dist/ts/_lib/util/index.d.ts.map +1 -0
  182. package/dist/ts/cli/cmd/dev.d.ts +27 -0
  183. package/dist/ts/cli/cmd/dev.d.ts.map +1 -0
  184. package/dist/ts/cli/cmd/index.d.ts +4 -0
  185. package/dist/ts/cli/cmd/index.d.ts.map +1 -0
  186. package/dist/ts/cli/cmd/init.d.ts +14 -0
  187. package/dist/ts/cli/cmd/init.d.ts.map +1 -0
  188. package/dist/ts/cli/cmd/json.d.ts +12 -0
  189. package/dist/ts/cli/cmd/json.d.ts.map +1 -0
  190. package/dist/ts/cli/env.d.ts +2 -0
  191. package/dist/ts/cli/env.d.ts.map +1 -0
  192. package/dist/ts/cli/index.d.ts +78 -0
  193. package/dist/ts/cli/index.d.ts.map +1 -0
  194. package/dist/ts/cli/vite/client/index.d.ts +10 -0
  195. package/dist/ts/cli/vite/client/index.d.ts.map +1 -0
  196. package/dist/ts/cli/vite/index.d.ts +12 -0
  197. package/dist/ts/cli/vite/index.d.ts.map +1 -0
  198. package/dist/ts/cli.d.ts +3 -0
  199. package/dist/ts/cli.d.ts.map +1 -0
  200. package/dist/ts/config/defaults.d.ts +10 -0
  201. package/dist/ts/config/defaults.d.ts.map +1 -0
  202. package/dist/ts/config/file.d.ts +3 -0
  203. package/dist/ts/config/file.d.ts.map +1 -0
  204. package/dist/ts/config/index.d.ts +6 -0
  205. package/dist/ts/config/index.d.ts.map +1 -0
  206. package/dist/ts/config/load.d.ts +36 -0
  207. package/dist/ts/config/load.d.ts.map +1 -0
  208. package/dist/ts/config/types.d.ts +56 -0
  209. package/dist/ts/config/types.d.ts.map +1 -0
  210. package/dist/ts/core/index.d.ts +3 -0
  211. package/dist/ts/core/index.d.ts.map +1 -0
  212. package/dist/ts/core/project/debug.d.ts +3 -0
  213. package/dist/ts/core/project/debug.d.ts.map +1 -0
  214. package/dist/ts/core/project/index.d.ts +17 -0
  215. package/dist/ts/core/project/index.d.ts.map +1 -0
  216. package/dist/ts/core/project/naming.d.ts +23 -0
  217. package/dist/ts/core/project/naming.d.ts.map +1 -0
  218. package/dist/ts/core/project/routing.d.ts +61 -0
  219. package/dist/ts/core/project/routing.d.ts.map +1 -0
  220. package/dist/ts/core/project/types.d.ts +56 -0
  221. package/dist/ts/core/project/types.d.ts.map +1 -0
  222. package/dist/ts/core/reflect/index.d.ts +22 -0
  223. package/dist/ts/core/reflect/index.d.ts.map +1 -0
  224. package/dist/ts/core/reflect/indexed.d.ts +83 -0
  225. package/dist/ts/core/reflect/indexed.d.ts.map +1 -0
  226. package/dist/ts/core/reflect/resolve.d.ts +3 -0
  227. package/dist/ts/core/reflect/resolve.d.ts.map +1 -0
  228. package/dist/ts/core/reflect/scan.d.ts +218 -0
  229. package/dist/ts/core/reflect/scan.d.ts.map +1 -0
  230. package/dist/ts/core/reflect/state.d.ts +44 -0
  231. package/dist/ts/core/reflect/state.d.ts.map +1 -0
  232. package/dist/ts/core/reflect/types.d.ts +289 -0
  233. package/dist/ts/core/reflect/types.d.ts.map +1 -0
  234. package/dist/ts/core/reflect/walk.d.ts +28 -0
  235. package/dist/ts/core/reflect/walk.d.ts.map +1 -0
  236. package/dist/ts/solidjs/index.d.ts +2 -0
  237. package/dist/ts/solidjs/index.d.ts.map +1 -0
  238. package/dist/ts/solidjs/jsx-runtime.d.ts +2 -0
  239. package/dist/ts/solidjs/jsx-runtime.d.ts.map +1 -0
  240. package/dist/ts/ui/App.d.ts +17 -0
  241. package/dist/ts/ui/App.d.ts.map +1 -0
  242. package/dist/ts/ui/components/Breadcrumb.d.ts +4 -0
  243. package/dist/ts/ui/components/Breadcrumb.d.ts.map +1 -0
  244. package/dist/ts/ui/components/Code/index.d.ts +17 -0
  245. package/dist/ts/ui/components/Code/index.d.ts.map +1 -0
  246. package/dist/ts/ui/components/Comment.d.ts +49 -0
  247. package/dist/ts/ui/components/Comment.d.ts.map +1 -0
  248. package/dist/ts/ui/components/Declaration.d.ts +122 -0
  249. package/dist/ts/ui/components/Declaration.d.ts.map +1 -0
  250. package/dist/ts/ui/components/Header.d.ts +5 -0
  251. package/dist/ts/ui/components/Header.d.ts.map +1 -0
  252. package/dist/ts/ui/components/Layout.d.ts +5 -0
  253. package/dist/ts/ui/components/Layout.d.ts.map +1 -0
  254. package/dist/ts/ui/components/Link.d.ts +15 -0
  255. package/dist/ts/ui/components/Link.d.ts.map +1 -0
  256. package/dist/ts/ui/components/LivePreview/Example.d.ts +16 -0
  257. package/dist/ts/ui/components/LivePreview/Example.d.ts.map +1 -0
  258. package/dist/ts/ui/components/LivePreview/Sandbox.d.ts +20 -0
  259. package/dist/ts/ui/components/LivePreview/Sandbox.d.ts.map +1 -0
  260. package/dist/ts/ui/components/LivePreview/index.d.ts +4 -0
  261. package/dist/ts/ui/components/LivePreview/index.d.ts.map +1 -0
  262. package/dist/ts/ui/components/LivePreview/transform.d.ts +19 -0
  263. package/dist/ts/ui/components/LivePreview/transform.d.ts.map +1 -0
  264. package/dist/ts/ui/components/Markdown.d.ts +11 -0
  265. package/dist/ts/ui/components/Markdown.d.ts.map +1 -0
  266. package/dist/ts/ui/components/Page.d.ts +21 -0
  267. package/dist/ts/ui/components/Page.d.ts.map +1 -0
  268. package/dist/ts/ui/components/References.d.ts +2 -0
  269. package/dist/ts/ui/components/References.d.ts.map +1 -0
  270. package/dist/ts/ui/components/SearchPalette.d.ts +5 -0
  271. package/dist/ts/ui/components/SearchPalette.d.ts.map +1 -0
  272. package/dist/ts/ui/components/Sidebar.d.ts +5 -0
  273. package/dist/ts/ui/components/Sidebar.d.ts.map +1 -0
  274. package/dist/ts/ui/components/Syntax.d.ts +15 -0
  275. package/dist/ts/ui/components/Syntax.d.ts.map +1 -0
  276. package/dist/ts/ui/components/ThemeToggle.d.ts +2 -0
  277. package/dist/ts/ui/components/ThemeToggle.d.ts.map +1 -0
  278. package/dist/ts/ui/components/Type.d.ts +82 -0
  279. package/dist/ts/ui/components/Type.d.ts.map +1 -0
  280. package/dist/ts/ui/components/index.d.ts +15 -0
  281. package/dist/ts/ui/components/index.d.ts.map +1 -0
  282. package/dist/ts/ui/context/components.d.ts +124 -0
  283. package/dist/ts/ui/context/components.d.ts.map +1 -0
  284. package/dist/ts/ui/context/global.d.ts +210 -0
  285. package/dist/ts/ui/context/global.d.ts.map +1 -0
  286. package/dist/ts/ui/context/index.d.ts +5 -0
  287. package/dist/ts/ui/context/index.d.ts.map +1 -0
  288. package/dist/ts/ui/context/markup/index.d.ts +20 -0
  289. package/dist/ts/ui/context/markup/index.d.ts.map +1 -0
  290. package/dist/ts/ui/context/markup/markdown.d.ts +4 -0
  291. package/dist/ts/ui/context/markup/markdown.d.ts.map +1 -0
  292. package/dist/ts/ui/context/markup/shiki.d.ts +17 -0
  293. package/dist/ts/ui/context/markup/shiki.d.ts.map +1 -0
  294. package/dist/ts/ui/context/markup/util.d.ts +11 -0
  295. package/dist/ts/ui/context/markup/util.d.ts.map +1 -0
  296. package/dist/ts/ui/context/project/index.d.ts +25 -0
  297. package/dist/ts/ui/context/project/index.d.ts.map +1 -0
  298. package/dist/ts/ui/context/project/indexed.d.ts +4 -0
  299. package/dist/ts/ui/context/project/indexed.d.ts.map +1 -0
  300. package/dist/ts/ui/context/project/types.d.ts +13 -0
  301. package/dist/ts/ui/context/project/types.d.ts.map +1 -0
  302. package/dist/ts/ui/context/theme.d.ts +12 -0
  303. package/dist/ts/ui/context/theme.d.ts.map +1 -0
  304. package/dist/ts/ui/hooks/index.d.ts +29 -0
  305. package/dist/ts/ui/hooks/index.d.ts.map +1 -0
  306. package/dist/ts/ui/index.d.ts +5 -0
  307. package/dist/ts/ui/index.d.ts.map +1 -0
  308. package/dist/ts/ui/renderer.d.ts +200 -0
  309. package/dist/ts/ui/renderer.d.ts.map +1 -0
  310. package/dist/ts/ui/util/comment.d.ts +4 -0
  311. package/dist/ts/ui/util/comment.d.ts.map +1 -0
  312. package/dist/ts/ui/util/kind.d.ts +15 -0
  313. package/dist/ts/ui/util/kind.d.ts.map +1 -0
  314. package/dist/ts/ui/util/markdown.d.ts +8 -0
  315. package/dist/ts/ui/util/markdown.d.ts.map +1 -0
  316. package/dist/ts/ui/util/search.d.ts +20 -0
  317. package/dist/ts/ui/util/search.d.ts.map +1 -0
  318. package/package.json +89 -0
  319. package/src/_lib/fs/index.ts +23 -0
  320. package/src/_lib/fs/watch.ts +40 -0
  321. package/src/_lib/index.ts +9 -0
  322. package/src/_lib/jiti/index.ts +18 -0
  323. package/src/_lib/path/index.ts +44 -0
  324. package/src/_lib/pkg/index.ts +165 -0
  325. package/src/_lib/repo/index.ts +138 -0
  326. package/src/_lib/slug/index.ts +26 -0
  327. package/src/_lib/t.ts +17 -0
  328. package/src/_lib/tsconfig/index.ts +20 -0
  329. package/src/_lib/util/index.ts +53 -0
  330. package/src/cli/cmd/dev.ts +86 -0
  331. package/src/cli/cmd/index.ts +3 -0
  332. package/src/cli/cmd/init.ts +80 -0
  333. package/src/cli/cmd/json.ts +28 -0
  334. package/src/cli/env.ts +6 -0
  335. package/src/cli/index.ts +14 -0
  336. package/src/cli/vite/client/index.html +27 -0
  337. package/src/cli/vite/client/index.tsx +30 -0
  338. package/src/cli/vite/client/public/apple-touch-icon.png +0 -0
  339. package/src/cli/vite/client/public/favicon-96x96.png +0 -0
  340. package/src/cli/vite/client/public/favicon.ico +0 -0
  341. package/src/cli/vite/client/public/favicon.svg +1 -0
  342. package/src/cli/vite/client/public/site.webmanifest +21 -0
  343. package/src/cli/vite/client/public/web-app-manifest-192x192.png +0 -0
  344. package/src/cli/vite/client/public/web-app-manifest-512x512.png +0 -0
  345. package/src/cli/vite/index.ts +115 -0
  346. package/src/cli.ts +6 -0
  347. package/src/config/defaults.ts +36 -0
  348. package/src/config/file.ts +53 -0
  349. package/src/config/index.ts +11 -0
  350. package/src/config/load.ts +95 -0
  351. package/src/config/types.ts +59 -0
  352. package/src/core/index.ts +2 -0
  353. package/src/core/project/debug.ts +30 -0
  354. package/src/core/project/index.ts +58 -0
  355. package/src/core/project/naming.ts +49 -0
  356. package/src/core/project/routing.ts +234 -0
  357. package/src/core/project/types.ts +47 -0
  358. package/src/core/reflect/index.ts +18 -0
  359. package/src/core/reflect/indexed.ts +242 -0
  360. package/src/core/reflect/resolve.ts +159 -0
  361. package/src/core/reflect/scan.ts +816 -0
  362. package/src/core/reflect/state.ts +75 -0
  363. package/src/core/reflect/types.ts +164 -0
  364. package/src/core/reflect/walk.ts +121 -0
  365. package/src/solidjs/index.ts +1 -0
  366. package/src/solidjs/jsx-runtime.ts +1 -0
  367. package/src/ui/App.tsx +115 -0
  368. package/src/ui/components/Breadcrumb.tsx +53 -0
  369. package/src/ui/components/Code/index.tsx +112 -0
  370. package/src/ui/components/Comment.tsx +221 -0
  371. package/src/ui/components/Declaration.tsx +210 -0
  372. package/src/ui/components/Header.tsx +99 -0
  373. package/src/ui/components/Layout.tsx +62 -0
  374. package/src/ui/components/Link.tsx +43 -0
  375. package/src/ui/components/LivePreview/Example.tsx +104 -0
  376. package/src/ui/components/LivePreview/Sandbox.tsx +36 -0
  377. package/src/ui/components/LivePreview/index.ts +3 -0
  378. package/src/ui/components/LivePreview/transform.ts +28 -0
  379. package/src/ui/components/Markdown.tsx +16 -0
  380. package/src/ui/components/Page.tsx +162 -0
  381. package/src/ui/components/References.tsx +34 -0
  382. package/src/ui/components/SearchPalette.tsx +266 -0
  383. package/src/ui/components/Sidebar.tsx +107 -0
  384. package/src/ui/components/Syntax.tsx +10 -0
  385. package/src/ui/components/ThemeToggle.tsx +50 -0
  386. package/src/ui/components/Type.tsx +583 -0
  387. package/src/ui/components/index.ts +15 -0
  388. package/src/ui/context/components.tsx +103 -0
  389. package/src/ui/context/global.ts +33 -0
  390. package/src/ui/context/index.ts +4 -0
  391. package/src/ui/context/markup/index.tsx +39 -0
  392. package/src/ui/context/markup/markdown.ts +37 -0
  393. package/src/ui/context/markup/shiki.ts +72 -0
  394. package/src/ui/context/markup/util.ts +20 -0
  395. package/src/ui/context/project/index.tsx +47 -0
  396. package/src/ui/context/project/indexed.ts +52 -0
  397. package/src/ui/context/project/types.ts +14 -0
  398. package/src/ui/context/theme.tsx +45 -0
  399. package/src/ui/hooks/index.ts +116 -0
  400. package/src/ui/index.ts +4 -0
  401. package/src/ui/renderer.tsx +31 -0
  402. package/src/ui/util/comment.ts +12 -0
  403. package/src/ui/util/kind.ts +120 -0
  404. package/src/ui/util/markdown.ts +74 -0
  405. package/src/ui/util/search.ts +84 -0
  406. package/theme.css +301 -0
  407. package/tsconfig.client.json +12 -0
@@ -0,0 +1,25 @@
1
+ import { onMount, onCleanup } from 'solid-js';
2
+ /** Plain child `div` — no isolation. */
3
+ const inline = (root) => {
4
+ const target = document.createElement('div');
5
+ root.appendChild(target);
6
+ return { target, dispose: () => target.remove(), reset: () => target.replaceChildren() };
7
+ };
8
+ // Shadow DOM / iframe strategies can be added here later (iframe will need an
9
+ // async/ready variant since its document isn't available synchronously).
10
+ const strategies = { inline };
11
+ /**
12
+ * A contained render location. Resolves a target element via the chosen
13
+ * isolation strategy and hands it back through `ref` once mounted.
14
+ */
15
+ export const Sandbox = (props) => {
16
+ let root;
17
+ onMount(() => {
18
+ const strategy = strategies[props.isolate ?? 'inline'] ?? inline;
19
+ const { target, dispose } = strategy(root);
20
+ props.ref?.(target);
21
+ onCleanup(dispose);
22
+ });
23
+ return <div ref={root} class={props.class}/>;
24
+ };
25
+ //# sourceMappingURL=Sandbox.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sandbox.jsx","sourceRoot":"","sources":["../../../../../src/ui/components/LivePreview/Sandbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAW7C,wCAAwC;AACxC,MAAM,MAAM,GAAsB,CAAC,IAAI,EAAE,EAAE;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC5C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAA;AAC1F,CAAC,CAAA;AAED,8EAA8E;AAC9E,yEAAyE;AACzE,MAAM,UAAU,GAA8C,EAAE,MAAM,EAAE,CAAA;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAwF,EAAE,EAAE;IAClH,IAAI,IAAqB,CAAA;IACzB,OAAO,CAAC,GAAG,EAAE;QACX,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,MAAM,CAAA;QAChE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC1C,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;QACnB,SAAS,CAAC,OAAO,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAG,CAAA;AAC/C,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from "./transform.js";
2
+ export * from "./Sandbox.jsx";
3
+ export * from "./Example.jsx";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ui/components/LivePreview/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { transform as sucraseTransform } from 'sucrase';
2
+ /**
3
+ * Transform a TS/JSX snippet into runnable JS. Framework-agnostic: point
4
+ * `jsxPragma` / `jsxFragmentPragma` at whatever runtime you inject when
5
+ * executing the result.
6
+ */
7
+ export const transform = (src, options = {}) => {
8
+ const code = sucraseTransform(src, {
9
+ transforms: options.transforms ?? ['typescript', 'jsx'],
10
+ jsxPragma: options.jsxPragma,
11
+ jsxFragmentPragma: options.jsxFragmentPragma,
12
+ production: options.production ?? true,
13
+ }).code;
14
+ return code;
15
+ };
16
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../../src/ui/components/LivePreview/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAkB,MAAM,SAAS,CAAA;AAcvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,UAA0B,EAAE,EAAU,EAAE;IAC7E,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE;QACjC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;QACvD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;KACvC,CAAC,CAAC,IAAI,CAAA;IACP,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { createMemo, Show } from 'solid-js';
2
+ import cn from '@lickle/cn';
3
+ import { useMarkup } from "../context/index.js";
4
+ export const Markdown = (props) => {
5
+ const markup = useMarkup();
6
+ const html = createMemo(() => markup.marked()?.parse(props.source, { async: false }));
7
+ return <Show when={html()}>{(h) => <div class={cn('markdown', props.class)} innerHTML={h()}/>}</Show>;
8
+ };
9
+ Markdown.Inline = (props) => {
10
+ const markup = useMarkup();
11
+ const html = createMemo(() => markup.marked()?.parse(props.source ?? '', { async: false }));
12
+ return <Show when={html()}>{(h) => <div class={cn('markdown-tight', props.class)} innerHTML={h()}/>}</Show>;
13
+ };
14
+ //# sourceMappingURL=Markdown.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Markdown.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAyC,EAAE,EAAE;IACpE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACrF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AACxG,CAAC,CAAA;AAED,QAAQ,CAAC,MAAM,GAAG,CAAC,KAA0C,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAC3F,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AAC9G,CAAC,CAAA"}
@@ -0,0 +1,121 @@
1
+ import { For, Show, createMemo } from 'solid-js';
2
+ import { A } from '@solidjs/router';
3
+ import { createSlot, useProject } from "../context/index.js";
4
+ import { useReferences } from "../hooks/index.js";
5
+ import { labelOf, pluralLabel, groupOrder } from "../util/kind.js";
6
+ import { commentSummaryText } from "../util/comment.js";
7
+ import { Declaration } from "./Declaration.jsx";
8
+ import { Breadcrumb } from "./Breadcrumb.jsx";
9
+ import { Markdown } from "./Markdown.jsx";
10
+ import { Type } from "./Type.jsx";
11
+ export const Page = createSlot('page', (props) => (<article>
12
+ <PageHeader {...props}/>
13
+ <Declaration decl={props.decl}/>
14
+ <Children route={props.route}/>
15
+ <References id={props.decl.id}/>
16
+ </article>));
17
+ /** Renders a markdown page — its `content` parsed inline. */
18
+ export const MarkdownPage = createSlot('page.markdown', (props) => (<article>
19
+ <Markdown source={props.route.page.content}/>
20
+ </article>));
21
+ export const PageHeader = createSlot('page.header', (props) => (<header class="mb-5">
22
+ <Breadcrumb id={props.decl.id}/>
23
+ <div class="flex items-baseline gap-3 flex-wrap">
24
+ <h1 class="text-2xl font-semibold tracking-tight font-mono">{props.route.label}</h1>
25
+ <Type.KindLabel kind={props.decl.kind}/>
26
+ <Show when={props.decl.comment?.tags?.some((t) => t.tag === '@deprecated')}>
27
+ <span class="text-xs uppercase tracking-wider text-mute">· deprecated</span>
28
+ </Show>
29
+ </div>
30
+ <Source sources={props.decl.sources}/>
31
+ </header>));
32
+ /** Stock source-location renderer. Replaceable via `slots.source`. */
33
+ export const Source = createSlot('page.source', (props) => {
34
+ const project = useProject();
35
+ return (<Show when={props.sources?.[0]}>
36
+ {(s) => {
37
+ const link = project().sourceLink(s());
38
+ const text = `${s().file}:${s().line}`;
39
+ if (link) {
40
+ return (<a href={link} class="text-xs text-mute mt-2 font-mono">
41
+ {text}
42
+ </a>);
43
+ }
44
+ return <div class="text-xs text-mute mt-2 font-mono">{text}</div>;
45
+ }}
46
+ </Show>);
47
+ });
48
+ /** Child pages of a module / namespace, grouped by kind and linked from the route tree. */
49
+ const Children = (props) => {
50
+ const project = useProject();
51
+ const groups = createMemo(() => groupChildren(project(), props.route.children));
52
+ return (<For each={groups()}>
53
+ {(group) => (<section class="mt-8">
54
+ <h2 class="text-sm font-semibold mb-3 pb-1.5 border-b border-line capitalize">{group.title}</h2>
55
+ <ul class="space-y-3">
56
+ <For each={group.items}>{(row) => <ChildRowView row={row}/>}</For>
57
+ </ul>
58
+ </section>)}
59
+ </For>);
60
+ };
61
+ const ChildRowView = (props) => (<li>
62
+ <div class="flex items-baseline gap-2.5 min-w-0">
63
+ <Type.KindBadge kind={props.row.kind} class="w-3.5 shrink-0"/>
64
+ <A href={`/${props.row.route.slug}`} class="font-mono font-semibold text-sm hover:opacity-70">
65
+ {props.row.route.label}
66
+ </A>
67
+ <Show when={props.row.decl}>{(d) => <Signature decl={d()}/>}</Show>
68
+ </div>
69
+ <Show when={props.row.summary}>
70
+ <p class="text-sm text-mute mt-1 pl-6 line-clamp-2">{props.row.summary}</p>
71
+ </Show>
72
+ </li>);
73
+ /** A terse inline type cue next to a member name (function params / variable type). */
74
+ const Signature = (props) => {
75
+ const d = props.decl;
76
+ if (d.kind === 'function' && d.signatures[0])
77
+ return (<span class="font-mono text-sm text-mute min-w-0 truncate">
78
+ <Type.SignatureExpr sig={d.signatures[0]}/>
79
+ </span>);
80
+ if (d.kind === 'variable')
81
+ return (<span class="font-mono text-sm text-mute min-w-0 truncate">
82
+ : <Type type={d.type}/>
83
+ </span>);
84
+ return null;
85
+ };
86
+ /** Bucket child routes by declaration kind, ordered by the canonical group order. */
87
+ const groupChildren = (project, children) => {
88
+ const buckets = new Map();
89
+ for (const route of children) {
90
+ const decl = project.byId(route.page.id);
91
+ const kind = decl?.kind ?? 'module';
92
+ const title = pluralLabel(kind);
93
+ const arr = buckets.get(title) ?? [];
94
+ arr.push({ route, decl, kind, summary: commentSummaryText(decl?.comment) });
95
+ buckets.set(title, arr);
96
+ }
97
+ return [...buckets.entries()]
98
+ .sort(([a], [b]) => groupOrder(a) - groupOrder(b) || a.localeCompare(b))
99
+ .map(([title, items]) => ({ title, items: items.sort((a, b) => a.route.label.localeCompare(b.route.label)) }));
100
+ };
101
+ export const References = createSlot('page.references', (props) => {
102
+ const rows = useReferences(() => props.id);
103
+ return (<Show when={rows().length}>
104
+ <section class="mt-10 lk-references">
105
+ <h2 class="font-semibold text-xl mb-4 pb-2 border-b border-line">Used in</h2>
106
+ <ul class="grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5 items-baseline">
107
+ <For each={rows()}>{(r) => <ReferenceRowView row={r}/>}</For>
108
+ </ul>
109
+ </section>
110
+ </Show>);
111
+ });
112
+ const ReferenceRowView = (props) => (<li class="contents">
113
+ <span class="text-xs uppercase tracking-wider text-mute">{labelOf(props.row.decl.kind)}</span>
114
+ <A href={`/${props.row.slug}`} class="font-mono hover:opacity-70 min-w-0 wrap-break-word">
115
+ <Show when={props.row.module}>
116
+ <span class="text-mute">{props.row.module}.</span>
117
+ </Show>
118
+ <span class="font-medium">{props.row.name}</span>
119
+ </A>
120
+ </li>);
121
+ //# sourceMappingURL=Page.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Page.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Page.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ // import { For, Show } from 'solid-js'
2
+ // import { A } from '@solidjs/router'
3
+ export {};
4
+ // import { useReferences, type ReferenceRow } from '../hooks/index.ts'
5
+ // import { createSlot } from '../theme/slots/slot.tsx'
6
+ // import { labelOf } from '../util/kind.ts'
7
+ // export const References = createSlot('references', (props: { id: number }) => {
8
+ // const rows = useReferences(() => props.id)
9
+ // return (
10
+ // <Show when={rows().length}>
11
+ // <section class="mt-10 lk-references">
12
+ // <h2 class="font-semibold text-xl mb-4 pb-2 border-b border-line">Used in</h2>
13
+ // <ul>
14
+ // <For each={rows()}>{(r) => <ReferenceRowView row={r} />}</For>
15
+ // </ul>
16
+ // </section>
17
+ // </Show>
18
+ // )
19
+ // })
20
+ // const ReferenceRowView = (props: { row: ReferenceRow }) => (
21
+ // <li>
22
+ // <span class="kind">{labelOf(props.row.decl.kind)}</span>
23
+ // <A href={`/r/${props.row.slug}`} class="symbol font-mono hover:opacity-70">
24
+ // <Show when={props.row.module}>
25
+ // <span class="text-mute">{props.row.module}.</span>
26
+ // </Show>
27
+ // <span class="font-medium">{props.row.name}</span>
28
+ // </A>
29
+ // <span class="summary">{props.row.summary}</span>
30
+ // </li>
31
+ // )
32
+ //# sourceMappingURL=References.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"References.jsx","sourceRoot":"","sources":["../../../../src/ui/components/References.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;;AAEtC,uEAAuE;AACvE,uDAAuD;AACvD,4CAA4C;AAE5C,kFAAkF;AAClF,+CAA+C;AAE/C,aAAa;AACb,kCAAkC;AAClC,8CAA8C;AAC9C,wFAAwF;AACxF,eAAe;AACf,2EAA2E;AAC3E,gBAAgB;AAChB,mBAAmB;AACnB,cAAc;AACd,MAAM;AACN,KAAK;AAEL,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;AAC/D,kFAAkF;AAClF,uCAAuC;AACvC,6DAA6D;AAC7D,gBAAgB;AAChB,0DAA0D;AAC1D,WAAW;AACX,uDAAuD;AACvD,UAAU;AACV,IAAI"}
@@ -0,0 +1,178 @@
1
+ import { For, Show, createEffect, createMemo, createResource, createSignal, on, onCleanup } from 'solid-js';
2
+ import { useNavigate } from '@solidjs/router';
3
+ import { useProject } from "../context/index.js";
4
+ import {} from "../util/search.js";
5
+ import { useSearch } from "../hooks/index.js";
6
+ import {} from "../util/kind.js";
7
+ import { Type } from "./Type.jsx";
8
+ const DEBOUNCE_MS = 80;
9
+ const DEFAULT_LIMIT = 12;
10
+ export const SearchPalette = (props) => {
11
+ const navigate = useNavigate();
12
+ const search = useSearch();
13
+ const project = useProject();
14
+ const [engine] = createResource(props.open, async (isOpen) => (isOpen ? await search() : undefined));
15
+ const [term, setTerm] = createSignal('');
16
+ const [debounced, setDebounced] = createSignal('');
17
+ const [highlight, setHighlight] = createSignal(0);
18
+ let inputRef;
19
+ createEffect(() => {
20
+ const t = term();
21
+ const timer = setTimeout(() => setDebounced(t), DEBOUNCE_MS);
22
+ onCleanup(() => clearTimeout(timer));
23
+ });
24
+ createEffect(on(props.open, (isOpen) => {
25
+ if (!isOpen)
26
+ return;
27
+ setTerm('');
28
+ setDebounced('');
29
+ setHighlight(0);
30
+ queueMicrotask(() => inputRef?.focus());
31
+ }));
32
+ const [hits] = createResource(() => [engine(), debounced()], async ([e, t]) => (e ? await e.query(t) : []));
33
+ // Before the user types, suggest the first module's entries so the palette
34
+ // opens with something to browse instead of an empty box.
35
+ const firstModule = createMemo(() => project().routes.find((r) => r.sidebar && r.page.kind !== 'markdown'));
36
+ const suggestions = createMemo(() => {
37
+ const mod = firstModule();
38
+ return mod ? childHits(project(), mod).slice(0, DEFAULT_LIMIT) : [];
39
+ });
40
+ const hasTerm = () => debounced().trim().length > 0;
41
+ const list = createMemo(() => (hasTerm() ? (hits() ?? []) : suggestions()));
42
+ createEffect(on(list, (l) => {
43
+ if (highlight() >= l.length)
44
+ setHighlight(0);
45
+ }));
46
+ const choose = (hit) => {
47
+ navigate(`/${hit.slug}`);
48
+ props.onClose();
49
+ };
50
+ const onKeyDown = (e) => {
51
+ const l = list();
52
+ if (e.key === 'ArrowDown') {
53
+ e.preventDefault();
54
+ if (l.length)
55
+ setHighlight((i) => (i + 1) % l.length);
56
+ }
57
+ else if (e.key === 'ArrowUp') {
58
+ e.preventDefault();
59
+ if (l.length)
60
+ setHighlight((i) => (i - 1 + l.length) % l.length);
61
+ }
62
+ else if (e.key === 'Enter') {
63
+ e.preventDefault();
64
+ const hit = l[highlight()];
65
+ if (hit)
66
+ choose(hit);
67
+ }
68
+ else if (e.key === 'Escape') {
69
+ e.preventDefault();
70
+ props.onClose();
71
+ }
72
+ };
73
+ return (<Show when={props.open()}>
74
+ <div class="fixed inset-0 z-50 bg-black/40 backdrop-blur-sm flex items-start justify-center p-4" onClick={() => props.onClose()} role="presentation">
75
+ <div class="w-full max-w-xl mt-[12vh] bg-bg border border-line rounded-xl shadow-2xl overflow-hidden flex flex-col max-h-[70vh]" onClick={(e) => e.stopPropagation()} role="dialog" aria-label="Search">
76
+ <div class="flex items-center gap-3 px-4 py-3.5 border-b border-line">
77
+ <SearchGlyph class="text-mute shrink-0"/>
78
+ <input ref={inputRef} type="text" value={term()} onInput={(e) => setTerm(e.currentTarget.value)} onKeyDown={onKeyDown} placeholder="Search functions, types, classes…" class="flex-1 bg-transparent outline-none text-[0.95rem] placeholder:text-mute" autocomplete="off" spellcheck={false}/>
79
+ <Kbd>esc</Kbd>
80
+ </div>
81
+
82
+ <Show when={list().length} fallback={<EmptyState loading={engine.loading} term={debounced()}/>}>
83
+ <Show when={!hasTerm() && firstModule()}>
84
+ {(mod) => (<p class="px-5 pt-3 pb-1 text-[0.7rem] uppercase tracking-wider font-semibold text-mute">
85
+ {mod().label}
86
+ </p>)}
87
+ </Show>
88
+ <ul class="flex-1 overflow-y-auto p-2" role="listbox">
89
+ <For each={list()}>
90
+ {(hit, i) => (<li role="option" aria-selected={i() === highlight()} class="group flex items-center gap-3 px-3 py-2 rounded-lg cursor-pointer scroll-mt-2" classList={{ 'bg-hover': i() === highlight() }} onMouseEnter={() => setHighlight(i())} onClick={() => choose(hit)}>
91
+ <span class="flex items-center justify-center w-6 h-6 rounded-md border border-line bg-hover/50 shrink-0" classList={{ 'border-accent/40': i() === highlight() }}>
92
+ <Type.KindBadge kind={hit.kind} class="w-3.5"/>
93
+ </span>
94
+ <span class="font-mono font-semibold text-sm shrink-0">{hit.name}</span>
95
+ <Show when={hit.qualified && hit.qualified !== hit.name}>
96
+ <span class="font-mono text-xs text-mute truncate">{hit.qualified}</span>
97
+ </Show>
98
+ <Show when={hit.file}>
99
+ <span class="font-mono text-[0.7rem] text-mute truncate ml-auto pl-3 opacity-70">{hit.file}</span>
100
+ </Show>
101
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="shrink-0 text-mute transition-opacity" classList={{ 'opacity-0': i() !== highlight(), 'opacity-100': i() === highlight() }} aria-hidden="true">
102
+ <path d="M5 12h14M13 6l6 6-6 6" stroke-linecap="round" stroke-linejoin="round"/>
103
+ </svg>
104
+ </li>)}
105
+ </For>
106
+ </ul>
107
+ </Show>
108
+
109
+ <div class="flex items-center gap-4 px-4 py-2 border-t border-line text-[0.7rem] text-mute">
110
+ <span class="flex items-center gap-1.5">
111
+ <Kbd>↑</Kbd>
112
+ <Kbd>↓</Kbd>
113
+ <span>navigate</span>
114
+ </span>
115
+ <span class="flex items-center gap-1.5">
116
+ <Kbd>↵</Kbd>
117
+ <span>open</span>
118
+ </span>
119
+ <Show when={list().length}>
120
+ <span class="ml-auto tabular-nums">
121
+ {list().length} result{list().length === 1 ? '' : 's'}
122
+ </span>
123
+ </Show>
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </Show>);
128
+ };
129
+ /** Map a route's direct children into search-hit rows for the default listing. */
130
+ const childHits = (project, route) => {
131
+ const out = [];
132
+ for (const child of route.children) {
133
+ if (child.page.kind === 'markdown')
134
+ continue;
135
+ const decl = project.byId(child.page.id);
136
+ out.push({
137
+ name: child.label,
138
+ qualified: child.page.qualified,
139
+ kind: (decl?.kind ?? 'module'),
140
+ slug: child.slug,
141
+ file: decl?.sources?.[0]?.file ?? '',
142
+ });
143
+ }
144
+ return out;
145
+ };
146
+ const EmptyState = (props) => (<div class="flex-1 flex flex-col items-center justify-center text-center gap-3 px-6 py-16">
147
+ <Show when={!props.loading} fallback={<>
148
+ <Spinner />
149
+ <p class="text-sm text-mute">Building search index…</p>
150
+ </>}>
151
+ <div class="flex items-center justify-center w-12 h-12 rounded-full bg-hover text-mute">
152
+ <SearchGlyph size={22}/>
153
+ </div>
154
+ <Show when={props.term} fallback={<>
155
+ <p class="text-sm font-medium text-fg">Search the API</p>
156
+ <p class="text-xs text-mute max-w-xs leading-relaxed">
157
+ Jump to any function, type, class or interface by name.
158
+ </p>
159
+ </>}>
160
+ <p class="text-sm font-medium text-fg">
161
+ No matches for <span class="font-mono">“{props.term}”</span>
162
+ </p>
163
+ <p class="text-xs text-mute">Try a shorter or different term.</p>
164
+ </Show>
165
+ </Show>
166
+ </div>);
167
+ const Kbd = (props) => (<kbd class="font-mono text-[0.65rem] text-mute bg-hover border border-line rounded px-1.5 py-0.5 leading-none">
168
+ {props.children}
169
+ </kbd>);
170
+ const SearchGlyph = (props) => (<svg width={props.size ?? 16} height={props.size ?? 16} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class={props.class} aria-hidden="true">
171
+ <circle cx="11" cy="11" r="7"/>
172
+ <path d="m20 20-3.5-3.5" stroke-linecap="round"/>
173
+ </svg>);
174
+ const Spinner = () => (<svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="animate-spin text-mute" aria-hidden="true">
175
+ <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" class="opacity-25"/>
176
+ <path d="M21 12a9 9 0 0 0-9-9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
177
+ </svg>);
178
+ //# sourceMappingURL=SearchPalette.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchPalette.jsx","sourceRoot":"","sources":["../../../../src/ui/components/SearchPalette.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { For, Show, createMemo, createSignal } from 'solid-js';
2
+ import { A, useLocation } from '@solidjs/router';
3
+ import { createSlot, useProject } from "../context/index.js";
4
+ import { Type } from "./Type.jsx";
5
+ export const Sidebar = createSlot('sidebar', (props) => {
6
+ const project = useProject();
7
+ const routes = createMemo(() => project().routes.filter((r) => r.sidebar));
8
+ return (<aside class={`text-[0.8125rem] ${props.class ?? ''}`}>
9
+ <nav class="pt-5 pb-10 px-2.5 space-y-0.5">
10
+ <NavList nodes={routes()} depth={0} onNavigate={props.onNavigate}/>
11
+ </nav>
12
+ </aside>);
13
+ });
14
+ /** A list of sibling routes, with a `group` header inserted whenever it changes. */
15
+ const NavList = (props) => (<For each={props.nodes}>
16
+ {(node, i) => (<>
17
+ <Show when={node.group && node.group !== props.nodes[i() - 1]?.group}>
18
+ <GroupHeader label={node.group} depth={props.depth}/>
19
+ </Show>
20
+ <NavNode node={node} depth={props.depth} onNavigate={props.onNavigate}/>
21
+ </>)}
22
+ </For>);
23
+ const GroupHeader = (props) => (<div class="pt-4 pb-1 px-2 text-[0.7rem] uppercase tracking-wider font-semibold text-mute first:pt-1" style={{ 'padding-left': indent(props.depth) }}>
24
+ {props.label}
25
+ </div>);
26
+ const NavNode = (props) => {
27
+ const loc = useLocation();
28
+ const kids = createMemo(() => props.node.children.filter((c) => c.sidebar));
29
+ const hasChildren = () => kids().length > 0;
30
+ const isActive = () => loc.pathname === `/${props.node.slug}`;
31
+ const [open, setOpen] = createSignal(false);
32
+ return (<div>
33
+ <div class="flex items-center" style={{ 'padding-left': indent(props.depth) }}>
34
+ <Show when={hasChildren()} fallback={<span class="w-5 shrink-0"/>}>
35
+ <button type="button" aria-label={open() ? 'Collapse' : 'Expand'} aria-expanded={open()} onClick={() => setOpen((v) => !v)} class="p-1 rounded-md text-mute hover:bg-hover hover:text-fg transition-colors cursor-pointer">
36
+ <Chevron open={open()}/>
37
+ </button>
38
+ </Show>
39
+ <A href={`/${props.node.slug}`} class="flex-1 flex items-center gap-2 rounded-md px-1.5 py-1 text-mute hover:bg-hover hover:text-fg transition-colors min-w-0" classList={{ '!text-fg !bg-hover font-medium': isActive() }} onClick={() => props.onNavigate?.()}>
40
+ <KindCue node={props.node}/>
41
+ <span class="font-mono truncate">{props.node.label}</span>
42
+ </A>
43
+ </div>
44
+ <Show when={hasChildren() && open()}>
45
+ <NavList nodes={kids()} depth={props.depth + 1} onNavigate={props.onNavigate}/>
46
+ </Show>
47
+ </div>);
48
+ };
49
+ const indent = (depth) => `${depth * 0.75}rem`;
50
+ const KindCue = (props) => {
51
+ const project = useProject();
52
+ const kind = () => {
53
+ const page = props.node.page;
54
+ if (page.kind === 'markdown')
55
+ return undefined;
56
+ return project().byId(page.id)?.kind;
57
+ };
58
+ return <Show when={kind()}>{(k) => <Type.KindBadge kind={k()} class="text-[0.7rem]! w-3.5 shrink-0"/>}</Show>;
59
+ };
60
+ const Chevron = (props) => (<svg width="10" height="10" viewBox="0 0 12 12" class={`shrink-0 text-mute transition-transform ${props.open ? 'rotate-90' : ''}`} aria-hidden="true">
61
+ <path d="M4 2.5 7.5 6 4 9.5" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round"/>
62
+ </svg>);
63
+ //# sourceMappingURL=Sidebar.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Sidebar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export var Syntax;
2
+ (function (Syntax) {
3
+ /** Muted punctuation — brackets, commas, `=`, etc. */
4
+ Syntax.Punct = (p) => <span class="text-mute">{p.children}</span>;
5
+ /** Accent keyword — `const`, `type`, `extends`, intrinsics. */
6
+ Syntax.Kw = (p) => <span class="text-accent">{p.children}</span>;
7
+ /** Default-styled identifier. */
8
+ Syntax.Name = (p) => <span>{p.children}</span>;
9
+ })(Syntax || (Syntax = {}));
10
+ //# sourceMappingURL=Syntax.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Syntax.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Syntax.tsx"],"names":[],"mappings":"AAAA,MAAM,KAAW,MAAM,CAStB;AATD,WAAiB,MAAM;IACrB,sDAAsD;IACzC,YAAK,GAAG,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAE7F,+DAA+D;IAClD,SAAE,GAAG,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAE5F,iCAAiC;IACpB,WAAI,GAAG,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AAC5E,CAAC,EATgB,MAAM,KAAN,MAAM,QAStB"}
@@ -0,0 +1,25 @@
1
+ import { useTheme } from "../context/theme.jsx";
2
+ import { For } from 'solid-js';
3
+ const ICONS = {
4
+ light: 'M12 4V2M12 22v-2M4 12H2m20 0h-2M5.6 5.6 4.2 4.2m15.6 15.6-1.4-1.4M5.6 18.4 4.2 19.8M19.8 4.2l-1.4 1.4M12 7a5 5 0 1 0 0 10 5 5 0 0 0 0-10Z',
5
+ dark: 'M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z',
6
+ system: 'M3 6h18v10H3z M8 20h8 M12 16v4',
7
+ };
8
+ const LABELS = { light: 'Light', dark: 'Dark', system: 'System' };
9
+ export const ThemeToggle = () => {
10
+ const { mode, setMode } = useTheme();
11
+ const order = ['system', 'light', 'dark'];
12
+ return (<div role="radiogroup" aria-label="Theme" class="inline-flex items-center gap-0.5">
13
+
14
+ <For each={order}>
15
+ {(m) => (<button type="button" role="radio" aria-checked={mode() === m} title={LABELS[m]} onClick={() => setMode(m)} class="px-2 py-1 rounded-[5px] transition-colors duration-150 text-mute hover:text-fg cursor-pointer" classList={{
16
+ 'bg-hover text-fg': mode() === m,
17
+ }}>
18
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
19
+ <path d={ICONS[m]}/>
20
+ </svg>
21
+ </button>)}
22
+ </For>
23
+ </div>);
24
+ };
25
+ //# sourceMappingURL=ThemeToggle.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.jsx","sourceRoot":"","sources":["../../../../src/ui/components/ThemeToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,MAAM,KAAK,GAA8B;IACvC,KAAK,EACH,2IAA2I;IAC7I,IAAI,EAAE,iDAAiD;IACvD,MAAM,EAAE,gCAAgC;CACzC,CAAA;AAED,MAAM,MAAM,GAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAA;IACpC,MAAM,KAAK,GAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAEtD,OAAO,CACL,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAEhF;;MAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CACf;QAAA,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACN,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,IAAI,CAAC,OAAO,CACZ,YAAY,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAC3B,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACjB,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC1B,KAAK,CAAC,+FAA+F,CACrG,SAAS,CAAC,CAAC;gBACT,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC;aACjC,CAAC,CAEF;YAAA,CAAC,GAAG,CACF,KAAK,CAAC,IAAI,CACV,MAAM,CAAC,IAAI,CACX,OAAO,CAAC,WAAW,CACnB,IAAI,CAAC,MAAM,CACX,MAAM,CAAC,cAAc,CACrB,YAAY,CAAC,KAAK,CAClB,cAAc,CAAC,OAAO,CACtB,eAAe,CAAC,OAAO,CAEvB;cAAA,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACpB;YAAA,EAAE,GAAG,CACP;UAAA,EAAE,MAAM,CAAC,CACV,CACH;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAA;AACH,CAAC,CAAA"}