@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,176 @@
1
+ import { createMemo, For, Show } from 'solid-js';
2
+ import { createSlot } from "../context/index.js";
3
+ import { useCommentMarkdown } from "../hooks/index.js";
4
+ import { CodeBlock } from "./Code/index.jsx";
5
+ import { Markdown } from "./Markdown.jsx";
6
+ import { Type } from "./Type.jsx";
7
+ import { Link } from "./Link.jsx";
8
+ /**
9
+ * Render a single doc comment: summary markdown first, then every tag in
10
+ * source order. Consecutive `@param` (or `@property`) runs are merged into
11
+ * one labelled table so a five-parameter signature reads as one block.
12
+ *
13
+ * Per-tag rendering goes through the component registry — `defaults` from
14
+ * `theme/tags/`, with user overrides taking precedence. Unknown tags fall
15
+ * through to {@link UnknownTag}.
16
+ */
17
+ export const Comment = createSlot('comment', (props) => {
18
+ return (<Show when={props.comment}>
19
+ {(c) => {
20
+ const summary = useCommentMarkdown(c);
21
+ const groups = createMemo(() => groupTags(c().tags ?? []));
22
+ return (<Show when={summary() || props.comment?.tags?.length}>
23
+ <div class={props.class}>
24
+ <Show when={summary()}>{(c) => <Markdown source={c()}/>}</Show>
25
+ <For each={groups()}>
26
+ {(g) => {
27
+ if (g.kind === '@param')
28
+ return <Parameters tags={g.items}/>;
29
+ if (g.kind === '@property')
30
+ return <Properties tags={g.items}/>;
31
+ if (g.tag.tag === '@module')
32
+ return null;
33
+ return <Tag tag={g.tag}/>;
34
+ }}
35
+ </For>
36
+ </div>
37
+ </Show>);
38
+ }}
39
+ </Show>);
40
+ });
41
+ const Properties = createSlot('comment.properties', (p) => <NamedTable title="Properties" tags={p.tags}/>);
42
+ const Parameters = createSlot('comment.parameters', (p) => <NamedTable title="Parameters" tags={p.tags}/>);
43
+ const NamedTable = (props) => {
44
+ return (<section class="mt-6">
45
+ <div class="flex items-baseline gap-2 mb-2">
46
+ <h4 class="text-mute uppercase text-[0.7rem] font-semibold tracking-wider">{props.title}</h4>
47
+ </div>
48
+ <dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1.5 items-baseline">
49
+ <For each={props.tags}>{(it) => <NamedRow item={it}/>}</For>
50
+ </dl>
51
+ </section>);
52
+ };
53
+ const NamedRow = (props) => (<>
54
+ <dt class="font-mono text-sm whitespace-nowrap">
55
+ <span class="font-semibold">{props.item.name}</span>
56
+ <Show when={props.item.optional}>
57
+ <span class="text-mute">?</span>
58
+ </Show>
59
+ <Show when={props.item.type}>
60
+ <>
61
+ <span class="text-mute">: </span>
62
+ <Type type={props.item.type}/>
63
+ </>
64
+ </Show>
65
+ <Show when={props.item.default}>
66
+ <span class="text-mute"> = {props.item.default}</span>
67
+ </Show>
68
+ </dt>
69
+ <dd class="text-sm text-mute min-w-0">
70
+ <Show when={trimLead(props.item.text)}>
71
+ <Markdown.Inline source={trimLead(props.item.text)}/>
72
+ </Show>
73
+ </dd>
74
+ </>);
75
+ /** Strip a single leading `- ` so `@param foo - desc` collapses cleanly. */
76
+ const trimLead = (s) => (s ?? '').replace(/^\s*-\s*/, '').trim();
77
+ const groupTags = (tags) => {
78
+ const out = [];
79
+ const pushRun = (kind, item) => {
80
+ const last = out[out.length - 1];
81
+ if (last && last.kind === kind)
82
+ last.items.push(item);
83
+ else
84
+ out.push({ kind, items: [item] });
85
+ };
86
+ for (const t of tags) {
87
+ if (t.tag === '@param')
88
+ pushRun('@param', t);
89
+ else if (t.tag === '@property')
90
+ pushRun('@property', t);
91
+ else
92
+ out.push({ kind: 'tag', tag: t });
93
+ }
94
+ return out;
95
+ };
96
+ export const Tag = createSlot('tag', (props) => {
97
+ if (props.tag.tag === '@returns')
98
+ return <TagReturns tag={props.tag}/>;
99
+ if (props.tag.tag === '@throws')
100
+ return <TagThrows tag={props.tag}/>;
101
+ if (props.tag.tag === '@type')
102
+ return <TagType tag={props.tag}/>;
103
+ if (props.tag.tag === '@satisfies')
104
+ return <TagSatisfies tag={props.tag}/>;
105
+ if (props.tag.tag === '@example')
106
+ return <TagExample tag={props.tag}/>;
107
+ if (props.tag.tag === '@see')
108
+ return <TagSee tag={props.tag}/>;
109
+ if (props.tag.tag === '@template')
110
+ return <TagTemplate tag={props.tag}/>;
111
+ return <TagOther tag={props.tag}/>;
112
+ });
113
+ /** Section frame shared across tag renderers. */
114
+ export const TagSection = (props) => (<section class="mt-6">
115
+ <div class="flex items-baseline gap-2 mb-2">
116
+ <TagTitle tag={props.tag}/>
117
+ <Show when={props.description}>
118
+ {(description) => (<div class="text-xs text-mute min-w-0">
119
+ <Markdown.Inline source={description()}/>
120
+ </div>)}
121
+ </Show>
122
+ </div>
123
+ {props.children}
124
+ </section>);
125
+ const TagTitle = (props) => {
126
+ const title = props.tag.tag.replace(/^@/, '');
127
+ return <h4 class="text-mute uppercase text-[0.7rem] font-semibold tracking-wider">{title}</h4>;
128
+ };
129
+ export const TagExample = createSlot('tag.example', (props) => (<TagSection tag={props.tag}>
130
+ <CodeBlock code={props.tag.code}/>
131
+ </TagSection>));
132
+ export const TagReturns = createSlot('tag.returns', (props) => (<TagSection tag={props.tag}>
133
+ <Type.Inline type={props.tag.type} text={props.tag.text}/>
134
+ </TagSection>));
135
+ export const TagSatisfies = createSlot('tag.satisfies', (props) => (<TagSection tag={props.tag}>
136
+ <Type.Inline type={props.tag.type} text={props.tag.text}/>
137
+ </TagSection>));
138
+ export const TagSee = createSlot('tag.see', (props) => (<TagSection tag={props.tag}>
139
+ <Show when={props.tag.target}>
140
+ <div class="font-mono text-sm mb-1">
141
+ <Link.ByName name={props.tag.target ?? ''}/>
142
+ </div>
143
+ </Show>
144
+ </TagSection>));
145
+ export const TagTemplate = createSlot('tag.template', (props) => (<TagSection tag={props.tag}>
146
+ <dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1.5 items-baseline">
147
+ <For each={props.tag.generics}>
148
+ {(tp) => (<>
149
+ <dt class="font-mono text-sm font-semibold">{tp.name}</dt>
150
+ <dd class="text-sm text-mute">
151
+ <Show when={tp.constraint}>
152
+ <>
153
+ <span class="text-accent">extends </span>
154
+ <Type type={tp.constraint}/>
155
+ </>
156
+ </Show>
157
+ </dd>
158
+ </>)}
159
+ </For>
160
+ </dl>
161
+ <Show when={props.tag.text?.trim()}>
162
+ <div class="mt-2">
163
+ <Markdown.Inline source={props.tag.text}/>
164
+ </div>
165
+ </Show>
166
+ </TagSection>));
167
+ export const TagThrows = createSlot('tag.throws', (props) => (<TagSection tag={props.tag}>
168
+ <Type.Inline type={props.tag.type} text={props.tag.text}/>
169
+ </TagSection>));
170
+ export const TagType = createSlot('tag.type', (props) => (<TagSection tag={props.tag}>
171
+ <Type.Inline type={props.tag.type} text={props.tag.text}/>
172
+ </TagSection>));
173
+ export const TagOther = createSlot('tag.*', (props) => (<TagSection tag={props.tag}>
174
+ <Markdown source={props.tag.text ?? ''}/>
175
+ </TagSection>));
176
+ //# sourceMappingURL=Comment.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Comment.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Comment.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ import { For, Show } from 'solid-js';
2
+ import { Dynamic } from 'solid-js/web';
3
+ import { createSlot } from "../context/index.js";
4
+ import { Syntax } from "./Syntax.jsx";
5
+ import { Comment } from "./Comment.jsx";
6
+ import { Type } from "./Type.jsx";
7
+ /**
8
+ * Dispatch a declaration to its per-kind renderer. Implemented via `Dynamic`
9
+ * (not an `if`/`switch`) so the active sub-component swaps reactively when
10
+ * `props.decl.kind` changes — otherwise navigating between pages of different
11
+ * kinds would freeze on the original branch.
12
+ */
13
+ export const Declaration = createSlot('declaration', (props) => (<Dynamic component={dispatch(props.decl.kind)} decl={props.decl}/>));
14
+ const dispatch = (kind) => RENDERERS[kind];
15
+ /** Heritage line — `extends A, B` / `implements C`. */
16
+ const ExtendsLine = (props) => (<Show when={props.types?.length}>
17
+ <div class="text-sm text-mute font-mono mt-2">
18
+ <span class="text-accent">{props.label} </span>
19
+ <Type.Join sep=", " items={props.types}/>
20
+ </div>
21
+ </Show>);
22
+ export const DeclarationFunction = createSlot('declaration.function', (props) => (<div class="mt-2">
23
+ <For each={props.decl.signatures}>
24
+ {(sig) => <Type.SignatureLine sig={sig} name={props.decl.name} id={props.decl.id} kind="function"/>}
25
+ </For>
26
+ <Comment comment={props.decl.comment}/>
27
+ </div>));
28
+ export const DeclarationVariable = createSlot('declaration.variable', (props) => (<div>
29
+ <div class="font-mono text-sm leading-relaxed">
30
+ <Syntax.Kw>const </Syntax.Kw>
31
+ <span class="font-semibold">{props.decl.name}</span>
32
+ <Syntax.Punct>: </Syntax.Punct>
33
+ <Type type={props.decl.type}/>
34
+ <Show when={props.decl.defaultValue}>
35
+ <Syntax.Punct>{` = ${props.decl.defaultValue}`}</Syntax.Punct>
36
+ </Show>
37
+ </div>
38
+ <Comment comment={props.decl.comment}/>
39
+ </div>));
40
+ export const DeclarationTypeAlias = createSlot('declaration.type-alias', (props) => (<div>
41
+ <div class="font-mono text-sm leading-relaxed">
42
+ <Syntax.Kw>type </Syntax.Kw>
43
+ <span class="font-semibold">{props.decl.name}</span>
44
+ <Type.Generics generics={props.decl.generics}/>
45
+ <Syntax.Punct> = </Syntax.Punct>
46
+ <Type type={props.decl.type}/>
47
+ </div>
48
+ <Comment comment={props.decl.comment}/>
49
+ </div>));
50
+ export const DeclarationClass = createSlot('declaration.class', (props) => (<div>
51
+ <ExtendsLine label="extends" types={props.decl.extends}/>
52
+ <ExtendsLine label="implements" types={props.decl.implements}/>
53
+ <Comment comment={props.decl.comment}/>
54
+ <Members constructors={props.decl.constructors} properties={props.decl.properties} methods={props.decl.methods} indexSignature={props.decl.indexSignature}/>
55
+ </div>));
56
+ export const DeclarationInterface = createSlot('declaration.interface', (props) => (<div>
57
+ <ExtendsLine label="extends" types={props.decl.extends}/>
58
+ <Comment comment={props.decl.comment}/>
59
+ <Members properties={props.decl.properties} methods={props.decl.methods} callSignatures={props.decl.callSignatures} constructSignatures={props.decl.constructSignatures} indexSignature={props.decl.indexSignature}/>
60
+ </div>));
61
+ /** Section heading matching the module-children layout in `Page.tsx`. */
62
+ const MemberSection = (props) => (<Show when={props.when}>
63
+ <section class="mt-8">
64
+ <h2 class="text-sm font-semibold mb-3 pb-1.5 border-b border-line capitalize">{props.title}</h2>
65
+ {props.children}
66
+ </section>
67
+ </Show>);
68
+ const PropertyRow = (props) => (<div class="py-2">
69
+ <div class="font-mono text-sm leading-relaxed">
70
+ <span class="font-semibold">{props.prop.name}</span>
71
+ <Show when={props.prop.optional}>
72
+ <Syntax.Punct>?</Syntax.Punct>
73
+ </Show>
74
+ <Syntax.Punct>: </Syntax.Punct>
75
+ <Type type={props.prop.type}/>
76
+ <Show when={props.prop.defaultValue}>
77
+ <Syntax.Punct>{` = ${props.prop.defaultValue}`}</Syntax.Punct>
78
+ </Show>
79
+ </div>
80
+ <Show when={props.prop.comment}>
81
+ <div class="mt-1">
82
+ <Comment comment={props.prop.comment}/>
83
+ </div>
84
+ </Show>
85
+ </div>);
86
+ const IndexRow = (props) => (<div class="font-mono text-sm leading-relaxed py-2">
87
+ <Syntax.Punct>[</Syntax.Punct>
88
+ <span class="font-semibold">{props.sig.parameter.name}</span>
89
+ <Syntax.Punct>: </Syntax.Punct>
90
+ <Type type={props.sig.parameter.type}/>
91
+ <Syntax.Punct>]: </Syntax.Punct>
92
+ <Type type={props.sig.type}/>
93
+ </div>);
94
+ /** Member listing shared by classes and interfaces. */
95
+ const Members = (props) => (<>
96
+ <MemberSection title="Constructors" when={props.constructors?.length}>
97
+ <For each={props.constructors}>{(sig) => <Type.Signature sig={sig} name="constructor" kind="constructor"/>}</For>
98
+ </MemberSection>
99
+ <MemberSection title="Properties" when={props.properties?.length || props.indexSignature}>
100
+ <For each={props.properties}>{(p) => <PropertyRow prop={p}/>}</For>
101
+ <Show when={props.indexSignature}>{(sig) => <IndexRow sig={sig()}/>}</Show>
102
+ </MemberSection>
103
+ <MemberSection title="Methods" when={props.methods?.length}>
104
+ <For each={props.methods}>
105
+ {(m) => <For each={m.signatures}>{(sig) => <Type.Signature sig={sig} name={m.name} kind="method"/>}</For>}
106
+ </For>
107
+ </MemberSection>
108
+ <MemberSection title="Call Signatures" when={props.callSignatures?.length}>
109
+ <For each={props.callSignatures}>{(sig) => <Type.Signature sig={sig}/>}</For>
110
+ </MemberSection>
111
+ <MemberSection title="Construct Signatures" when={props.constructSignatures?.length}>
112
+ <For each={props.constructSignatures}>{(sig) => <Type.Signature sig={sig} kind="constructor"/>}</For>
113
+ </MemberSection>
114
+ </>);
115
+ export const DeclarationEnum = createSlot('declaration.enum', (props) => (<div>
116
+ <Comment comment={props.decl.comment}/>
117
+ <MemberSection title="Members" when={props.decl.members?.length}>
118
+ <For each={props.decl.members}>{(m) => <EnumMemberRow member={m}/>}</For>
119
+ </MemberSection>
120
+ </div>));
121
+ const EnumMemberRow = (props) => (<div class="py-2">
122
+ <div class="font-mono text-sm leading-relaxed">
123
+ <span class="font-semibold">{props.member.name}</span>
124
+ <Show when={props.member.value !== undefined}>
125
+ <Syntax.Punct>{` = ${typeof props.member.value === 'string' ? `"${props.member.value}"` : props.member.value}`}</Syntax.Punct>
126
+ </Show>
127
+ </div>
128
+ <Show when={props.member.comment}>
129
+ <div class="mt-1">
130
+ <Comment comment={props.member.comment}/>
131
+ </div>
132
+ </Show>
133
+ </div>);
134
+ export const DeclarationModule = createSlot('declaration.module', (props) => <Comment comment={props.decl.comment}/>);
135
+ export const DeclarationNamespace = createSlot('declaration.namespace', (props) => (<Comment comment={props.decl.comment}/>));
136
+ const RENDERERS = {
137
+ class: DeclarationClass,
138
+ interface: DeclarationInterface,
139
+ enum: DeclarationEnum,
140
+ function: DeclarationFunction,
141
+ variable: DeclarationVariable,
142
+ 'type-alias': DeclarationTypeAlias,
143
+ module: DeclarationModule,
144
+ namespace: DeclarationNamespace,
145
+ export: () => null,
146
+ };
147
+ //# sourceMappingURL=Declaration.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Declaration.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Declaration.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { For, Show, createMemo } from 'solid-js';
2
+ import { A } from '@solidjs/router';
3
+ import { useProject } from "../context/index.js";
4
+ import { createSlot } from "../context/index.js";
5
+ import { ThemeToggle } from "./ThemeToggle.jsx";
6
+ const isMac = () => typeof navigator !== 'undefined' && /mac/i.test(navigator.platform || navigator.userAgent || '');
7
+ const ICON_BY_NAME = {
8
+ github: 'github-icon',
9
+ bluesky: 'bluesky-icon',
10
+ discord: 'discord-icon',
11
+ x: 'x-icon',
12
+ twitter: 'x-icon',
13
+ npm: 'documentation-icon',
14
+ };
15
+ const iconFor = (label) => {
16
+ const k = label.toLowerCase();
17
+ return ICON_BY_NAME[k] ?? null;
18
+ };
19
+ export const Header = createSlot('header', (props) => {
20
+ const project = useProject();
21
+ const searchHint = createMemo(() => (isMac() ? '\u2318K' : 'Ctrl K'));
22
+ return (<header class="sticky top-0 z-30 border-b border-line bg-bg/80 backdrop-blur-md backdrop-saturate-150">
23
+ <div class="flex items-center h-14 px-4 lg:px-6 gap-4">
24
+ <button type="button" aria-label="Open menu" class="lg:hidden p-1.5 rounded hover:bg-hover cursor-pointer" onClick={() => props.onMenu?.()}>
25
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round">
26
+ <path d="M4 7h16M4 12h16M4 17h16"/>
27
+ </svg>
28
+ </button>
29
+ <A href="/" class="flex items-baseline gap-2 hover:opacity-70 transition-opacity">
30
+ <span class="font-semibold text-[0.95rem] tracking-tight">{project().name}</span>
31
+ <Show when={project().version}>
32
+ <span class="text-xs text-mute font-mono">v{project().version}</span>
33
+ </Show>
34
+ </A>
35
+
36
+ <button type="button" onClick={() => props.onSearch?.()} aria-label="Search" class="ml-4 flex items-center gap-2 px-2.5 py-1 text-xs text-mute border border-line rounded-md hover:text-fg hover:bg-hover transition-colors cursor-pointer">
37
+ <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8">
38
+ <circle cx="11" cy="11" r="7"/>
39
+ <path d="m20 20-3.5-3.5" stroke-linecap="round"/>
40
+ </svg>
41
+ <span class="hidden sm:inline">Search</span>
42
+ <kbd class="font-mono text-[0.65rem] text-mute">{searchHint()}</kbd>
43
+ </button>
44
+
45
+ <nav class="ml-auto flex items-center gap-1">
46
+ <For each={project().links}>
47
+ {({ label, href }) => {
48
+ const icon = iconFor(label);
49
+ return (<a href={href} target="_blank" rel="noreferrer" class="flex items-center gap-1.5 px-2 py-1 text-xs text-mute hover:text-fg transition-colors duration-150" title={label}>
50
+ <Show when={icon} fallback={<span>{label}</span>}>
51
+ <svg width="14" height="14">
52
+ <use href={`/icons.svg#${icon}`}/>
53
+ </svg>
54
+ <span class="sr-only">{label}</span>
55
+ </Show>
56
+ </a>);
57
+ }}
58
+ </For>
59
+ <div class="ml-2">
60
+ <ThemeToggle />
61
+ </div>
62
+ </nav>
63
+ </div>
64
+ </header>);
65
+ });
66
+ //# sourceMappingURL=Header.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Header.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { createSignal, onCleanup, onMount } from 'solid-js';
2
+ import { useLocation } from '@solidjs/router';
3
+ import { createEffect } from 'solid-js';
4
+ import { createSlot } from "../context/index.js";
5
+ import { SearchPalette } from "./SearchPalette.jsx";
6
+ import { Sidebar } from "./Sidebar.jsx";
7
+ import { Header } from "./Header.jsx";
8
+ export const Layout = createSlot('layout', (props) => {
9
+ const [menuOpen, setMenuOpen] = createSignal(false);
10
+ const [searchOpen, setSearchOpen] = createSignal(false);
11
+ const loc = useLocation();
12
+ createEffect(() => {
13
+ void loc.pathname;
14
+ setMenuOpen(false);
15
+ });
16
+ onMount(() => {
17
+ const onKey = (e) => {
18
+ if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'k') {
19
+ e.preventDefault();
20
+ setSearchOpen((v) => !v);
21
+ }
22
+ };
23
+ window.addEventListener('keydown', onKey);
24
+ onCleanup(() => window.removeEventListener('keydown', onKey));
25
+ });
26
+ return (<div class="min-h-screen flex flex-col">
27
+ <Header onMenu={() => setMenuOpen((v) => !v)} onSearch={() => setSearchOpen(true)}/>
28
+
29
+ <div class="flex-1 grid grid-cols-1 lg:grid-cols-[220px_1fr] max-w-[1400px] w-full mx-auto">
30
+ <Sidebar class="hidden lg:block border-r border-line sticky top-14 self-start h-[calc(100vh-3.5rem)] overflow-y-auto"/>
31
+
32
+ <div class={`lg:hidden fixed inset-0 z-40 bg-black/30 transition-opacity duration-200 ${menuOpen() ? 'opacity-100' : 'opacity-0 pointer-events-none'}`} onClick={() => setMenuOpen(false)}>
33
+ <div class={`absolute inset-y-0 left-0 w-64 bg-bg border-r border-line overflow-y-auto pt-14 transition-transform duration-200 ease-out ${menuOpen() ? 'translate-x-0' : '-translate-x-full'}`} onClick={(e) => e.stopPropagation()}>
34
+ <Sidebar onNavigate={() => setMenuOpen(false)}/>
35
+ </div>
36
+ </div>
37
+
38
+ <main class="min-w-0 px-6 lg:px-12 pt-8 pb-20 max-w-[860px] wrap-break-word">{props.children}</main>
39
+ </div>
40
+
41
+ <SearchPalette open={searchOpen} onClose={() => setSearchOpen(false)}/>
42
+ </div>);
43
+ });
44
+ //# sourceMappingURL=Layout.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Layout.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { Show } from 'solid-js';
2
+ import { A } from '@solidjs/router';
3
+ import { useSlugFor } from "../hooks/index.js";
4
+ import { Syntax } from "./Syntax.jsx";
5
+ export const Link = (props) => {
6
+ return (<A href={props.href} class="underline decoration-line underline-offset-[3px] hover:opacity-70">
7
+ {props.children}
8
+ </A>);
9
+ };
10
+ /**
11
+ * Link to an in-project declaration by id, with a fallback rendering when
12
+ * the target isn't resolvable. The `?` prefix marks anonymous external
13
+ * references the resolver couldn't anchor to anything.
14
+ */
15
+ Link.Type = (props) => {
16
+ const slugs = useSlugFor();
17
+ const slug = () => (props.id != null ? slugs.byId(props.id) : undefined);
18
+ return (<>
19
+ <Show when={props.external === 'anonymous'}>
20
+ <Syntax.Punct>?</Syntax.Punct>
21
+ </Show>
22
+ <Show when={slug()} fallback={<Syntax.Name>{props.name}</Syntax.Name>}>
23
+ <Link href={`/${slug()}`}>{props.name}</Link>
24
+ </Show>
25
+ </>);
26
+ };
27
+ Link.ByName = (props) => {
28
+ const slugs = useSlugFor();
29
+ const slug = () => slugs.byName(props.name);
30
+ return (<Show when={slug()} fallback={<Syntax.Name>{props.name}</Syntax.Name>}>
31
+ <Link href={`/${slug()}`}>{props.name}</Link>
32
+ </Show>);
33
+ };
34
+ //# sourceMappingURL=Link.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAyC,EAAE,EAAE;IAChE,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,mEAAmE,CAC5F;MAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;IAAA,EAAE,CAAC,CAAC,CACL,CAAA;AACH,CAAC,CAAA;AAED;;;;GAIG;AACH,IAAI,CAAC,IAAI,GAAG,CAAC,KAAsG,EAAE,EAAE;IACrH,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACxE,OAAO,CACL,EACE;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,WAAW,CAAC,CACzC;QAAA,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAC/B;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CACpE;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAC9C;MAAA,EAAE,IAAI,CACR;IAAA,GAAG,CACJ,CAAA;AACH,CAAC,CAAA;AAED,IAAI,CAAC,MAAM,GAAG,CAAC,KAAuB,EAAE,EAAE;IACxC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3C,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CACpE;MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAC9C;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,76 @@
1
+ import { createEffect, createSignal, onCleanup, Show } from 'solid-js';
2
+ import { Sandbox } from "./Sandbox.jsx";
3
+ import { firstCodeBlock, langOf } from "../../context/index.js";
4
+ import { CodeEditor } from "../Code/index.jsx";
5
+ import { TagSection } from "../Comment.jsx";
6
+ export const LiveExample = (props) => {
7
+ const preview = useWithPreview(props);
8
+ return (<TagSection tag={props.tag} description={props.tag.caption}>
9
+ <div class="rounded-lg border border-line">
10
+ <div class="p-4 bg-code-bg">
11
+ <CodeEditor lang={props.language ?? langOf(preview.lang)} readonly={props.readonly} value={preview.value} onChange={preview.onChange}/>
12
+ </div>
13
+ <div class="relative min-h-12">
14
+ <Sandbox class="border-t border-line p-4" isolate={props.isolate} ref={preview.onBind}/>
15
+ <Show when={preview.error()}>
16
+ {(msg) => (<div class="absolute inset-0 w-full h-full flex items-center justify-start p-4 text-xs text-red-500 border-t border-red-500/30 ">
17
+ <div class="flex gap-2">
18
+ <span aria-hidden="true" class="select-none leading-5">
19
+
20
+ </span>
21
+ <pre class="overflow-x-auto whitespace-pre-wrap wrap-break-word font-mono leading-5">{msg()}</pre>
22
+ </div>
23
+ </div>)}
24
+ </Show>
25
+ </div>
26
+ </div>
27
+ </TagSection>);
28
+ };
29
+ const useWithPreview = (props) => {
30
+ const block = firstCodeBlock(props.tag.code);
31
+ const [host, setHost] = createSignal(null);
32
+ const [code, setCode] = createSignal(block.code);
33
+ const [error, setError] = createSignal();
34
+ let dispose;
35
+ const teardown = () => {
36
+ try {
37
+ if (typeof dispose === 'function')
38
+ dispose();
39
+ host()?.replaceChildren();
40
+ }
41
+ catch (err) {
42
+ console.error('[LiveExample] teardown failed', err);
43
+ }
44
+ dispose = undefined;
45
+ };
46
+ createEffect(() => {
47
+ const src = code();
48
+ const target = host();
49
+ if (!target)
50
+ return;
51
+ teardown();
52
+ try {
53
+ dispose = props.run(src, target);
54
+ setError(undefined);
55
+ }
56
+ catch (err) {
57
+ target.replaceChildren();
58
+ setError(messageOf(err));
59
+ if (props.onError)
60
+ props.onError(err);
61
+ else
62
+ console.error('[LiveExample] failed to run', err);
63
+ }
64
+ });
65
+ onCleanup(teardown);
66
+ const onChange = (code) => setCode(code);
67
+ const value = () => code();
68
+ const onBind = (h) => setHost(h);
69
+ return { onBind, onChange, value, error, lang: block.lang };
70
+ };
71
+ const messageOf = (err) => {
72
+ if (err instanceof Error)
73
+ return err.message || err.name;
74
+ return String(err);
75
+ };
76
+ //# sourceMappingURL=Example.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Example.jsx","sourceRoot":"","sources":["../../../../../src/ui/components/LivePreview/Example.tsx"],"names":[],"mappings":"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"}