@rexvane/piweb 0.3.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 (535) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +128 -0
  3. package/assets/showcase.png +0 -0
  4. package/bin/pi.js +50 -0
  5. package/bin/piweb.js +12 -0
  6. package/next.config.ts +21 -0
  7. package/package.json +88 -0
  8. package/postcss.config.mjs +7 -0
  9. package/public/file-icons/3d.svg +1 -0
  10. package/public/file-icons/LICENSE +8 -0
  11. package/public/file-icons/adobe-illustrator.svg +1 -0
  12. package/public/file-icons/adobe-photoshop.svg +1 -0
  13. package/public/file-icons/agent.svg +1 -0
  14. package/public/file-icons/asciidoc.svg +1 -0
  15. package/public/file-icons/assembly.svg +1 -0
  16. package/public/file-icons/astro.svg +1 -0
  17. package/public/file-icons/audio.svg +1 -0
  18. package/public/file-icons/authors.svg +1 -0
  19. package/public/file-icons/babel.svg +1 -0
  20. package/public/file-icons/bibliography.svg +1 -0
  21. package/public/file-icons/bicep.svg +1 -0
  22. package/public/file-icons/blender.svg +1 -0
  23. package/public/file-icons/bun.svg +1 -0
  24. package/public/file-icons/c.svg +1 -0
  25. package/public/file-icons/certificate.svg +1 -0
  26. package/public/file-icons/changelog.svg +1 -0
  27. package/public/file-icons/clojure.svg +1 -0
  28. package/public/file-icons/cmake.svg +1 -0
  29. package/public/file-icons/codeowners.svg +1 -0
  30. package/public/file-icons/commitlint.svg +1 -0
  31. package/public/file-icons/conduct.svg +1 -0
  32. package/public/file-icons/console.svg +1 -0
  33. package/public/file-icons/contributing.svg +1 -0
  34. package/public/file-icons/cpp.svg +1 -0
  35. package/public/file-icons/csharp.svg +1 -0
  36. package/public/file-icons/css.svg +1 -0
  37. package/public/file-icons/cursor.svg +1 -0
  38. package/public/file-icons/dart.svg +1 -0
  39. package/public/file-icons/database.svg +1 -0
  40. package/public/file-icons/deno.svg +1 -0
  41. package/public/file-icons/diff.svg +1 -0
  42. package/public/file-icons/docker.svg +1 -0
  43. package/public/file-icons/document.svg +1 -0
  44. package/public/file-icons/editorconfig.svg +1 -0
  45. package/public/file-icons/ejs.svg +1 -0
  46. package/public/file-icons/elixir.svg +1 -0
  47. package/public/file-icons/elm.svg +1 -0
  48. package/public/file-icons/email.svg +1 -0
  49. package/public/file-icons/erlang.svg +1 -0
  50. package/public/file-icons/eslint.svg +1 -0
  51. package/public/file-icons/favicon.svg +1 -0
  52. package/public/file-icons/file.svg +1 -0
  53. package/public/file-icons/folder-admin-open.svg +1 -0
  54. package/public/file-icons/folder-admin.svg +1 -0
  55. package/public/file-icons/folder-android-open.svg +1 -0
  56. package/public/file-icons/folder-android.svg +1 -0
  57. package/public/file-icons/folder-api-open.svg +1 -0
  58. package/public/file-icons/folder-api.svg +1 -0
  59. package/public/file-icons/folder-app-open.svg +1 -0
  60. package/public/file-icons/folder-app.svg +1 -0
  61. package/public/file-icons/folder-archive-open.svg +1 -0
  62. package/public/file-icons/folder-archive.svg +1 -0
  63. package/public/file-icons/folder-atom-open.svg +1 -0
  64. package/public/file-icons/folder-atom.svg +1 -0
  65. package/public/file-icons/folder-audio-open.svg +1 -0
  66. package/public/file-icons/folder-audio.svg +1 -0
  67. package/public/file-icons/folder-aws-open.svg +1 -0
  68. package/public/file-icons/folder-aws.svg +1 -0
  69. package/public/file-icons/folder-backup-open.svg +1 -0
  70. package/public/file-icons/folder-backup.svg +1 -0
  71. package/public/file-icons/folder-benchmark-open.svg +1 -0
  72. package/public/file-icons/folder-benchmark.svg +1 -0
  73. package/public/file-icons/folder-cart-open.svg +1 -0
  74. package/public/file-icons/folder-cart.svg +1 -0
  75. package/public/file-icons/folder-ci-open.svg +1 -0
  76. package/public/file-icons/folder-ci.svg +1 -0
  77. package/public/file-icons/folder-circleci-open.svg +1 -0
  78. package/public/file-icons/folder-circleci.svg +1 -0
  79. package/public/file-icons/folder-class-open.svg +1 -0
  80. package/public/file-icons/folder-class.svg +1 -0
  81. package/public/file-icons/folder-client-open.svg +1 -0
  82. package/public/file-icons/folder-client.svg +1 -0
  83. package/public/file-icons/folder-command-open.svg +1 -0
  84. package/public/file-icons/folder-command.svg +1 -0
  85. package/public/file-icons/folder-components-open.svg +1 -0
  86. package/public/file-icons/folder-components.svg +1 -0
  87. package/public/file-icons/folder-config-open.svg +1 -0
  88. package/public/file-icons/folder-config.svg +1 -0
  89. package/public/file-icons/folder-console-open.svg +1 -0
  90. package/public/file-icons/folder-console.svg +1 -0
  91. package/public/file-icons/folder-content-open.svg +1 -0
  92. package/public/file-icons/folder-content.svg +1 -0
  93. package/public/file-icons/folder-context-open.svg +1 -0
  94. package/public/file-icons/folder-context.svg +1 -0
  95. package/public/file-icons/folder-contract-open.svg +1 -0
  96. package/public/file-icons/folder-contract.svg +1 -0
  97. package/public/file-icons/folder-controller-open.svg +1 -0
  98. package/public/file-icons/folder-controller.svg +1 -0
  99. package/public/file-icons/folder-core-open.svg +1 -0
  100. package/public/file-icons/folder-core.svg +1 -0
  101. package/public/file-icons/folder-coverage-open.svg +1 -0
  102. package/public/file-icons/folder-coverage.svg +1 -0
  103. package/public/file-icons/folder-css-open.svg +1 -0
  104. package/public/file-icons/folder-css.svg +1 -0
  105. package/public/file-icons/folder-database-open.svg +1 -0
  106. package/public/file-icons/folder-database.svg +1 -0
  107. package/public/file-icons/folder-debug-open.svg +1 -0
  108. package/public/file-icons/folder-debug.svg +1 -0
  109. package/public/file-icons/folder-deprecated-open.svg +1 -0
  110. package/public/file-icons/folder-deprecated.svg +1 -0
  111. package/public/file-icons/folder-desktop-open.svg +1 -0
  112. package/public/file-icons/folder-desktop.svg +1 -0
  113. package/public/file-icons/folder-dist-open.svg +1 -0
  114. package/public/file-icons/folder-dist.svg +1 -0
  115. package/public/file-icons/folder-docker-open.svg +1 -0
  116. package/public/file-icons/folder-docker.svg +1 -0
  117. package/public/file-icons/folder-docs-open.svg +1 -0
  118. package/public/file-icons/folder-docs.svg +1 -0
  119. package/public/file-icons/folder-element-open.svg +1 -0
  120. package/public/file-icons/folder-element.svg +1 -0
  121. package/public/file-icons/folder-environment-open.svg +1 -0
  122. package/public/file-icons/folder-environment.svg +1 -0
  123. package/public/file-icons/folder-event-open.svg +1 -0
  124. package/public/file-icons/folder-event.svg +1 -0
  125. package/public/file-icons/folder-examples-open.svg +1 -0
  126. package/public/file-icons/folder-examples.svg +1 -0
  127. package/public/file-icons/folder-features-open.svg +1 -0
  128. package/public/file-icons/folder-features.svg +1 -0
  129. package/public/file-icons/folder-font-open.svg +1 -0
  130. package/public/file-icons/folder-font.svg +1 -0
  131. package/public/file-icons/folder-functions-open.svg +1 -0
  132. package/public/file-icons/folder-functions.svg +1 -0
  133. package/public/file-icons/folder-generator-open.svg +1 -0
  134. package/public/file-icons/folder-generator.svg +1 -0
  135. package/public/file-icons/folder-git-open.svg +1 -0
  136. package/public/file-icons/folder-git.svg +1 -0
  137. package/public/file-icons/folder-github-open.svg +1 -0
  138. package/public/file-icons/folder-github.svg +1 -0
  139. package/public/file-icons/folder-gitlab-open.svg +1 -0
  140. package/public/file-icons/folder-gitlab.svg +1 -0
  141. package/public/file-icons/folder-graphql-open.svg +1 -0
  142. package/public/file-icons/folder-graphql.svg +1 -0
  143. package/public/file-icons/folder-helper-open.svg +1 -0
  144. package/public/file-icons/folder-helper.svg +1 -0
  145. package/public/file-icons/folder-hook-open.svg +1 -0
  146. package/public/file-icons/folder-hook.svg +1 -0
  147. package/public/file-icons/folder-husky-open.svg +1 -0
  148. package/public/file-icons/folder-husky.svg +1 -0
  149. package/public/file-icons/folder-i18n-open.svg +1 -0
  150. package/public/file-icons/folder-i18n.svg +1 -0
  151. package/public/file-icons/folder-images-open.svg +1 -0
  152. package/public/file-icons/folder-images.svg +1 -0
  153. package/public/file-icons/folder-include-open.svg +1 -0
  154. package/public/file-icons/folder-include.svg +1 -0
  155. package/public/file-icons/folder-intellij-open.svg +1 -0
  156. package/public/file-icons/folder-intellij.svg +1 -0
  157. package/public/file-icons/folder-interface-open.svg +1 -0
  158. package/public/file-icons/folder-interface.svg +1 -0
  159. package/public/file-icons/folder-ios-open.svg +1 -0
  160. package/public/file-icons/folder-ios.svg +1 -0
  161. package/public/file-icons/folder-java-open.svg +1 -0
  162. package/public/file-icons/folder-java.svg +1 -0
  163. package/public/file-icons/folder-job-open.svg +1 -0
  164. package/public/file-icons/folder-job.svg +1 -0
  165. package/public/file-icons/folder-jupyter-open.svg +1 -0
  166. package/public/file-icons/folder-jupyter.svg +1 -0
  167. package/public/file-icons/folder-keys-open.svg +1 -0
  168. package/public/file-icons/folder-keys.svg +1 -0
  169. package/public/file-icons/folder-kubernetes-open.svg +1 -0
  170. package/public/file-icons/folder-kubernetes.svg +1 -0
  171. package/public/file-icons/folder-layout-open.svg +1 -0
  172. package/public/file-icons/folder-layout.svg +1 -0
  173. package/public/file-icons/folder-less-open.svg +1 -0
  174. package/public/file-icons/folder-less.svg +1 -0
  175. package/public/file-icons/folder-lib-open.svg +1 -0
  176. package/public/file-icons/folder-lib.svg +1 -0
  177. package/public/file-icons/folder-log-open.svg +1 -0
  178. package/public/file-icons/folder-log.svg +1 -0
  179. package/public/file-icons/folder-messages-open.svg +1 -0
  180. package/public/file-icons/folder-messages.svg +1 -0
  181. package/public/file-icons/folder-meta-open.svg +1 -0
  182. package/public/file-icons/folder-meta.svg +1 -0
  183. package/public/file-icons/folder-middleware-open.svg +1 -0
  184. package/public/file-icons/folder-middleware.svg +1 -0
  185. package/public/file-icons/folder-migrations-open.svg +1 -0
  186. package/public/file-icons/folder-migrations.svg +1 -0
  187. package/public/file-icons/folder-mobile-open.svg +1 -0
  188. package/public/file-icons/folder-mobile.svg +1 -0
  189. package/public/file-icons/folder-mock-open.svg +1 -0
  190. package/public/file-icons/folder-mock.svg +1 -0
  191. package/public/file-icons/folder-molecule-open.svg +1 -0
  192. package/public/file-icons/folder-molecule.svg +1 -0
  193. package/public/file-icons/folder-next-open.svg +1 -0
  194. package/public/file-icons/folder-next.svg +1 -0
  195. package/public/file-icons/folder-node-open.svg +1 -0
  196. package/public/file-icons/folder-node.svg +1 -0
  197. package/public/file-icons/folder-nuxt-open.svg +1 -0
  198. package/public/file-icons/folder-nuxt.svg +1 -0
  199. package/public/file-icons/folder-open.svg +1 -0
  200. package/public/file-icons/folder-organism-open.svg +1 -0
  201. package/public/file-icons/folder-organism.svg +1 -0
  202. package/public/file-icons/folder-packages-open.svg +1 -0
  203. package/public/file-icons/folder-packages.svg +1 -0
  204. package/public/file-icons/folder-plugin-open.svg +1 -0
  205. package/public/file-icons/folder-plugin.svg +1 -0
  206. package/public/file-icons/folder-prisma-open.svg +1 -0
  207. package/public/file-icons/folder-prisma.svg +1 -0
  208. package/public/file-icons/folder-prompts-open.svg +1 -0
  209. package/public/file-icons/folder-prompts.svg +1 -0
  210. package/public/file-icons/folder-proto-open.svg +1 -0
  211. package/public/file-icons/folder-proto.svg +1 -0
  212. package/public/file-icons/folder-public-open.svg +1 -0
  213. package/public/file-icons/folder-public.svg +1 -0
  214. package/public/file-icons/folder-python-open.svg +1 -0
  215. package/public/file-icons/folder-python.svg +1 -0
  216. package/public/file-icons/folder-queue-open.svg +1 -0
  217. package/public/file-icons/folder-queue.svg +1 -0
  218. package/public/file-icons/folder-resource-open.svg +1 -0
  219. package/public/file-icons/folder-resource.svg +1 -0
  220. package/public/file-icons/folder-review-open.svg +1 -0
  221. package/public/file-icons/folder-review.svg +1 -0
  222. package/public/file-icons/folder-robot-open.svg +1 -0
  223. package/public/file-icons/folder-robot.svg +1 -0
  224. package/public/file-icons/folder-routes-open.svg +1 -0
  225. package/public/file-icons/folder-routes.svg +1 -0
  226. package/public/file-icons/folder-rust-open.svg +1 -0
  227. package/public/file-icons/folder-rust.svg +1 -0
  228. package/public/file-icons/folder-sass-open.svg +1 -0
  229. package/public/file-icons/folder-sass.svg +1 -0
  230. package/public/file-icons/folder-scripts-open.svg +1 -0
  231. package/public/file-icons/folder-scripts.svg +1 -0
  232. package/public/file-icons/folder-secure-open.svg +1 -0
  233. package/public/file-icons/folder-secure.svg +1 -0
  234. package/public/file-icons/folder-seeders-open.svg +1 -0
  235. package/public/file-icons/folder-seeders.svg +1 -0
  236. package/public/file-icons/folder-server-open.svg +1 -0
  237. package/public/file-icons/folder-server.svg +1 -0
  238. package/public/file-icons/folder-shared-open.svg +1 -0
  239. package/public/file-icons/folder-shared.svg +1 -0
  240. package/public/file-icons/folder-skills-open.svg +1 -0
  241. package/public/file-icons/folder-skills.svg +1 -0
  242. package/public/file-icons/folder-src-open.svg +1 -0
  243. package/public/file-icons/folder-src.svg +1 -0
  244. package/public/file-icons/folder-store-open.svg +1 -0
  245. package/public/file-icons/folder-store.svg +1 -0
  246. package/public/file-icons/folder-storybook-open.svg +1 -0
  247. package/public/file-icons/folder-storybook.svg +1 -0
  248. package/public/file-icons/folder-supabase-open.svg +1 -0
  249. package/public/file-icons/folder-supabase.svg +1 -0
  250. package/public/file-icons/folder-svelte-open.svg +1 -0
  251. package/public/file-icons/folder-svelte.svg +1 -0
  252. package/public/file-icons/folder-target-open.svg +1 -0
  253. package/public/file-icons/folder-target.svg +1 -0
  254. package/public/file-icons/folder-tasks-open.svg +1 -0
  255. package/public/file-icons/folder-tasks.svg +1 -0
  256. package/public/file-icons/folder-temp-open.svg +1 -0
  257. package/public/file-icons/folder-temp.svg +1 -0
  258. package/public/file-icons/folder-template-open.svg +1 -0
  259. package/public/file-icons/folder-template.svg +1 -0
  260. package/public/file-icons/folder-terraform-open.svg +1 -0
  261. package/public/file-icons/folder-terraform.svg +1 -0
  262. package/public/file-icons/folder-test-open.svg +1 -0
  263. package/public/file-icons/folder-test.svg +1 -0
  264. package/public/file-icons/folder-theme-open.svg +1 -0
  265. package/public/file-icons/folder-theme.svg +1 -0
  266. package/public/file-icons/folder-tools-open.svg +1 -0
  267. package/public/file-icons/folder-tools.svg +1 -0
  268. package/public/file-icons/folder-turborepo-open.svg +1 -0
  269. package/public/file-icons/folder-turborepo.svg +1 -0
  270. package/public/file-icons/folder-typescript-open.svg +1 -0
  271. package/public/file-icons/folder-typescript.svg +1 -0
  272. package/public/file-icons/folder-ui-open.svg +1 -0
  273. package/public/file-icons/folder-ui.svg +1 -0
  274. package/public/file-icons/folder-utils-open.svg +1 -0
  275. package/public/file-icons/folder-utils.svg +1 -0
  276. package/public/file-icons/folder-video-open.svg +1 -0
  277. package/public/file-icons/folder-video.svg +1 -0
  278. package/public/file-icons/folder-views-open.svg +1 -0
  279. package/public/file-icons/folder-views.svg +1 -0
  280. package/public/file-icons/folder-vscode-open.svg +1 -0
  281. package/public/file-icons/folder-vscode.svg +1 -0
  282. package/public/file-icons/folder.svg +1 -0
  283. package/public/file-icons/font.svg +1 -0
  284. package/public/file-icons/fsharp.svg +1 -0
  285. package/public/file-icons/gemfile.svg +1 -0
  286. package/public/file-icons/git.svg +1 -0
  287. package/public/file-icons/go-mod.svg +1 -0
  288. package/public/file-icons/go.svg +1 -0
  289. package/public/file-icons/gradle.svg +1 -0
  290. package/public/file-icons/graphql.svg +1 -0
  291. package/public/file-icons/groovy.svg +1 -0
  292. package/public/file-icons/h.svg +1 -0
  293. package/public/file-icons/handlebars.svg +1 -0
  294. package/public/file-icons/haskell.svg +1 -0
  295. package/public/file-icons/hcl.svg +1 -0
  296. package/public/file-icons/heroku.svg +1 -0
  297. package/public/file-icons/hpp.svg +1 -0
  298. package/public/file-icons/html.svg +1 -0
  299. package/public/file-icons/husky.svg +1 -0
  300. package/public/file-icons/i18n.svg +1 -0
  301. package/public/file-icons/image.svg +1 -0
  302. package/public/file-icons/java.svg +1 -0
  303. package/public/file-icons/javascript.svg +1 -0
  304. package/public/file-icons/jenkins.svg +1 -0
  305. package/public/file-icons/jest.svg +1 -0
  306. package/public/file-icons/jsconfig.svg +1 -0
  307. package/public/file-icons/json.svg +1 -0
  308. package/public/file-icons/julia.svg +1 -0
  309. package/public/file-icons/jupyter.svg +1 -0
  310. package/public/file-icons/just.svg +1 -0
  311. package/public/file-icons/key.svg +1 -0
  312. package/public/file-icons/kotlin.svg +1 -0
  313. package/public/file-icons/lerna.svg +1 -0
  314. package/public/file-icons/less.svg +1 -0
  315. package/public/file-icons/license.svg +1 -0
  316. package/public/file-icons/lintstaged.svg +1 -0
  317. package/public/file-icons/liquid.svg +1 -0
  318. package/public/file-icons/lock.svg +1 -0
  319. package/public/file-icons/log.svg +1 -0
  320. package/public/file-icons/lua.svg +1 -0
  321. package/public/file-icons/makefile.svg +1 -0
  322. package/public/file-icons/markdown.svg +1 -0
  323. package/public/file-icons/maven.svg +1 -0
  324. package/public/file-icons/mdx.svg +1 -0
  325. package/public/file-icons/netlify.svg +1 -0
  326. package/public/file-icons/next.svg +1 -0
  327. package/public/file-icons/nim.svg +1 -0
  328. package/public/file-icons/nix.svg +1 -0
  329. package/public/file-icons/nodejs.svg +1 -0
  330. package/public/file-icons/nodemon.svg +1 -0
  331. package/public/file-icons/npm.svg +1 -0
  332. package/public/file-icons/nx.svg +1 -0
  333. package/public/file-icons/objective-c.svg +1 -0
  334. package/public/file-icons/objective-cpp.svg +1 -0
  335. package/public/file-icons/ocaml.svg +1 -0
  336. package/public/file-icons/pdf.svg +1 -0
  337. package/public/file-icons/php.svg +1 -0
  338. package/public/file-icons/pm2-ecosystem.svg +1 -0
  339. package/public/file-icons/pnpm.svg +1 -0
  340. package/public/file-icons/poetry.svg +1 -0
  341. package/public/file-icons/postcss.svg +1 -0
  342. package/public/file-icons/powerpoint.svg +1 -0
  343. package/public/file-icons/powershell.svg +1 -0
  344. package/public/file-icons/prettier.svg +1 -0
  345. package/public/file-icons/prisma.svg +1 -0
  346. package/public/file-icons/prolog.svg +1 -0
  347. package/public/file-icons/proto.svg +1 -0
  348. package/public/file-icons/pug.svg +1 -0
  349. package/public/file-icons/python-misc.svg +1 -0
  350. package/public/file-icons/python.svg +1 -0
  351. package/public/file-icons/r.svg +1 -0
  352. package/public/file-icons/razor.svg +1 -0
  353. package/public/file-icons/react.svg +1 -0
  354. package/public/file-icons/react_ts.svg +1 -0
  355. package/public/file-icons/readme.svg +1 -0
  356. package/public/file-icons/renovate.svg +1 -0
  357. package/public/file-icons/robots.svg +1 -0
  358. package/public/file-icons/rollup.svg +1 -0
  359. package/public/file-icons/ruby.svg +1 -0
  360. package/public/file-icons/rust.svg +1 -0
  361. package/public/file-icons/sass.svg +1 -0
  362. package/public/file-icons/scala.svg +1 -0
  363. package/public/file-icons/semantic-release.svg +1 -0
  364. package/public/file-icons/settings.svg +1 -0
  365. package/public/file-icons/shader.svg +1 -0
  366. package/public/file-icons/sml.svg +1 -0
  367. package/public/file-icons/solidity.svg +1 -0
  368. package/public/file-icons/stylus.svg +1 -0
  369. package/public/file-icons/svelte.svg +1 -0
  370. package/public/file-icons/svg.svg +1 -0
  371. package/public/file-icons/swift.svg +1 -0
  372. package/public/file-icons/table.svg +1 -0
  373. package/public/file-icons/tailwindcss.svg +1 -0
  374. package/public/file-icons/taskfile.svg +1 -0
  375. package/public/file-icons/terraform.svg +1 -0
  376. package/public/file-icons/test-js.svg +1 -0
  377. package/public/file-icons/test-jsx.svg +1 -0
  378. package/public/file-icons/test-ts.svg +1 -0
  379. package/public/file-icons/tex.svg +1 -0
  380. package/public/file-icons/toml.svg +1 -0
  381. package/public/file-icons/travis.svg +1 -0
  382. package/public/file-icons/tsconfig.svg +1 -0
  383. package/public/file-icons/tune.svg +1 -0
  384. package/public/file-icons/turborepo.svg +1 -0
  385. package/public/file-icons/typescript-def.svg +1 -0
  386. package/public/file-icons/typescript.svg +1 -0
  387. package/public/file-icons/unity.svg +1 -0
  388. package/public/file-icons/uv.svg +1 -0
  389. package/public/file-icons/vala.svg +1 -0
  390. package/public/file-icons/vercel.svg +1 -0
  391. package/public/file-icons/video.svg +1 -0
  392. package/public/file-icons/vim.svg +1 -0
  393. package/public/file-icons/vite.svg +1 -0
  394. package/public/file-icons/vitest.svg +1 -0
  395. package/public/file-icons/vlang.svg +1 -0
  396. package/public/file-icons/vue.svg +1 -0
  397. package/public/file-icons/webassembly.svg +1 -0
  398. package/public/file-icons/webpack.svg +1 -0
  399. package/public/file-icons/word.svg +1 -0
  400. package/public/file-icons/xml.svg +1 -0
  401. package/public/file-icons/yaml.svg +1 -0
  402. package/public/file-icons/yarn.svg +1 -0
  403. package/public/file-icons/zig.svg +1 -0
  404. package/public/file-icons/zip.svg +1 -0
  405. package/public/provider-icons/antgroup-color.svg +1 -0
  406. package/public/provider-icons/anthropic.svg +1 -0
  407. package/public/provider-icons/azure-color.svg +1 -0
  408. package/public/provider-icons/baseten.svg +1 -0
  409. package/public/provider-icons/bedrock-color.svg +1 -0
  410. package/public/provider-icons/cerebras-color.svg +1 -0
  411. package/public/provider-icons/cloudflare-color.svg +1 -0
  412. package/public/provider-icons/deepseek-color.svg +1 -0
  413. package/public/provider-icons/fireworks-color.svg +1 -0
  414. package/public/provider-icons/githubcopilot.svg +1 -0
  415. package/public/provider-icons/google-color.svg +1 -0
  416. package/public/provider-icons/googlecloud-color.svg +1 -0
  417. package/public/provider-icons/groq.svg +1 -0
  418. package/public/provider-icons/huggingface-color.svg +1 -0
  419. package/public/provider-icons/kimi-color.svg +1 -0
  420. package/public/provider-icons/minimax-color.svg +1 -0
  421. package/public/provider-icons/mistral-color.svg +1 -0
  422. package/public/provider-icons/moonshot.svg +1 -0
  423. package/public/provider-icons/nvidia-color.svg +1 -0
  424. package/public/provider-icons/openai.svg +1 -0
  425. package/public/provider-icons/opencode.svg +1 -0
  426. package/public/provider-icons/openrouter-color.svg +1 -0
  427. package/public/provider-icons/qwen-color.svg +1 -0
  428. package/public/provider-icons/together-color.svg +1 -0
  429. package/public/provider-icons/vercel.svg +1 -0
  430. package/public/provider-icons/xai.svg +1 -0
  431. package/public/provider-icons/xiaomimimo.svg +1 -0
  432. package/public/provider-icons/zai.svg +1 -0
  433. package/scripts/build-output.mjs +131 -0
  434. package/scripts/dev.mjs +18 -0
  435. package/scripts/entrypoint.mjs +8 -0
  436. package/scripts/install-build.mjs +134 -0
  437. package/scripts/launcher.mjs +249 -0
  438. package/scripts/pick-folder.ps1 +110 -0
  439. package/scripts/postinstall.mjs +12 -0
  440. package/scripts/process-runner.mjs +60 -0
  441. package/scripts/release.mjs +172 -0
  442. package/scripts/sync-file-icons.mjs +118 -0
  443. package/scripts/sync-provider-icons.mjs +41 -0
  444. package/src/app/api/agent/[id]/events/route.ts +81 -0
  445. package/src/app/api/agent/[id]/route.ts +24 -0
  446. package/src/app/api/agent/[id]/tree/route.ts +49 -0
  447. package/src/app/api/agent/new/route.ts +19 -0
  448. package/src/app/api/config/route.ts +22 -0
  449. package/src/app/api/files/route.ts +63 -0
  450. package/src/app/api/git/route.ts +32 -0
  451. package/src/app/api/growth/route.ts +50 -0
  452. package/src/app/api/health/route.ts +7 -0
  453. package/src/app/api/models/route.ts +129 -0
  454. package/src/app/api/pi-settings/route.ts +22 -0
  455. package/src/app/api/plugins/route.ts +79 -0
  456. package/src/app/api/security/route.ts +41 -0
  457. package/src/app/api/sessions/[id]/export/route.ts +25 -0
  458. package/src/app/api/sessions/[id]/route.ts +37 -0
  459. package/src/app/api/sessions/route.ts +23 -0
  460. package/src/app/api/skills/route.ts +39 -0
  461. package/src/app/api/update/route.ts +33 -0
  462. package/src/app/api/version/route.ts +8 -0
  463. package/src/app/api/web-auth/route.ts +80 -0
  464. package/src/app/api/workspaces/route.ts +78 -0
  465. package/src/app/globals.css +2039 -0
  466. package/src/app/icon.svg +21 -0
  467. package/src/app/layout.tsx +29 -0
  468. package/src/app/login/page.tsx +111 -0
  469. package/src/app/page.tsx +10 -0
  470. package/src/components/AppShell.tsx +1171 -0
  471. package/src/components/ChatInput.tsx +729 -0
  472. package/src/components/ChatWindow.tsx +1320 -0
  473. package/src/components/ContextMeter.tsx +131 -0
  474. package/src/components/DiffView.tsx +139 -0
  475. package/src/components/ExtensionUI.tsx +181 -0
  476. package/src/components/FileViewer.tsx +555 -0
  477. package/src/components/FullDiff.tsx +220 -0
  478. package/src/components/GitPanel.tsx +357 -0
  479. package/src/components/GrowthTree.tsx +317 -0
  480. package/src/components/ModelSelector.tsx +286 -0
  481. package/src/components/OutlineRail.tsx +166 -0
  482. package/src/components/PiMark.tsx +79 -0
  483. package/src/components/ProjectPanel.tsx +309 -0
  484. package/src/components/ProviderBrand.tsx +28 -0
  485. package/src/components/ProviderSetupModal.module.css +560 -0
  486. package/src/components/ProviderSetupModal.tsx +559 -0
  487. package/src/components/SessionSidebar.tsx +1066 -0
  488. package/src/components/SettingsPanel.tsx +2216 -0
  489. package/src/components/TrajectoryAnalyzer.module.css +225 -0
  490. package/src/components/TrajectoryView.tsx +289 -0
  491. package/src/components/icons.tsx +443 -0
  492. package/src/hooks/useFileViewer.ts +58 -0
  493. package/src/hooks/useGrowth.ts +635 -0
  494. package/src/hooks/usePiWeb.ts +900 -0
  495. package/src/i18n.tsx +1043 -0
  496. package/src/lib/agent-manager.ts +1348 -0
  497. package/src/lib/app-root.ts +4 -0
  498. package/src/lib/auth.ts +51 -0
  499. package/src/lib/command-validation.ts +116 -0
  500. package/src/lib/enter-behavior.ts +40 -0
  501. package/src/lib/extension-ui.ts +134 -0
  502. package/src/lib/file-icons.json +557 -0
  503. package/src/lib/file-icons.ts +39 -0
  504. package/src/lib/files-service.ts +280 -0
  505. package/src/lib/git-service.ts +255 -0
  506. package/src/lib/growth-rounds.ts +84 -0
  507. package/src/lib/growth-service.ts +586 -0
  508. package/src/lib/growth-tracker.ts +328 -0
  509. package/src/lib/growth-tree.ts +245 -0
  510. package/src/lib/growth-turns.ts +23 -0
  511. package/src/lib/highlight.ts +59 -0
  512. package/src/lib/model-draft.ts +103 -0
  513. package/src/lib/models-service.ts +852 -0
  514. package/src/lib/path-security.ts +101 -0
  515. package/src/lib/pi-settings.ts +115 -0
  516. package/src/lib/pi.ts +367 -0
  517. package/src/lib/plugins-service.ts +312 -0
  518. package/src/lib/process-format.ts +261 -0
  519. package/src/lib/provider-display.ts +57 -0
  520. package/src/lib/security-service.ts +52 -0
  521. package/src/lib/semver.ts +39 -0
  522. package/src/lib/session-reader.ts +204 -0
  523. package/src/lib/settings-write-lock.ts +45 -0
  524. package/src/lib/skills-service.ts +97 -0
  525. package/src/lib/text-sanitize.ts +20 -0
  526. package/src/lib/theme.ts +137 -0
  527. package/src/lib/trajectory.ts +294 -0
  528. package/src/lib/types.ts +300 -0
  529. package/src/lib/update-service.ts +129 -0
  530. package/src/lib/version.ts +6 -0
  531. package/src/lib/web-auth-shared.ts +35 -0
  532. package/src/lib/web-auth.ts +53 -0
  533. package/src/lib/workspace-store.ts +261 -0
  534. package/src/proxy.ts +53 -0
  535. package/tsconfig.json +49 -0
@@ -0,0 +1,557 @@
1
+ {
2
+ "defaults": {
3
+ "file": "file",
4
+ "folder": "folder",
5
+ "folderOpen": "folder-open"
6
+ },
7
+ "ext": {
8
+ "7z": "zip",
9
+ "adoc": "asciidoc",
10
+ "ai": "adobe-illustrator",
11
+ "asc": "key",
12
+ "asm": "assembly",
13
+ "astro": "astro",
14
+ "avi": "video",
15
+ "avif": "image",
16
+ "bash": "console",
17
+ "bat": "console",
18
+ "bib": "bibliography",
19
+ "bicep": "bicep",
20
+ "blend": "blender",
21
+ "bmp": "image",
22
+ "bz2": "zip",
23
+ "c": "c",
24
+ "cc": "cpp",
25
+ "cer": "certificate",
26
+ "cfg": "settings",
27
+ "cjs": "javascript",
28
+ "clj": "clojure",
29
+ "cmake": "cmake",
30
+ "cmd": "console",
31
+ "conf": "settings",
32
+ "cpp": "cpp",
33
+ "crt": "certificate",
34
+ "cs": "csharp",
35
+ "cshtml": "razor",
36
+ "css": "css",
37
+ "csv": "table",
38
+ "d.ts": "typescript-def",
39
+ "dart": "dart",
40
+ "db": "database",
41
+ "diff": "diff",
42
+ "doc": "word",
43
+ "docx": "word",
44
+ "ejs": "ejs",
45
+ "elm": "elm",
46
+ "env": "tune",
47
+ "eot": "font",
48
+ "erl": "erlang",
49
+ "ex": "elixir",
50
+ "exs": "elixir",
51
+ "fbx": "3d",
52
+ "fish": "console",
53
+ "flac": "audio",
54
+ "fs": "fsharp",
55
+ "gif": "image",
56
+ "glsl": "shader",
57
+ "gltf": "3d",
58
+ "go": "go",
59
+ "gpg": "key",
60
+ "gql": "graphql",
61
+ "gradle": "gradle",
62
+ "graphql": "graphql",
63
+ "groovy": "groovy",
64
+ "gz": "zip",
65
+ "h": "h",
66
+ "hbs": "handlebars",
67
+ "hcl": "hcl",
68
+ "hlsl": "shader",
69
+ "hpp": "hpp",
70
+ "hs": "haskell",
71
+ "htm": "html",
72
+ "html": "html",
73
+ "ico": "image",
74
+ "ics": "email",
75
+ "ini": "settings",
76
+ "ipynb": "jupyter",
77
+ "java": "java",
78
+ "jl": "julia",
79
+ "jpeg": "image",
80
+ "jpg": "image",
81
+ "js": "javascript",
82
+ "json": "json",
83
+ "json5": "json",
84
+ "jsonc": "json",
85
+ "jsonl": "json",
86
+ "jsx": "react",
87
+ "key": "key",
88
+ "kt": "kotlin",
89
+ "kts": "kotlin",
90
+ "less": "less",
91
+ "liquid": "liquid",
92
+ "lock": "lock",
93
+ "log": "log",
94
+ "lua": "lua",
95
+ "m": "objective-c",
96
+ "markdown": "markdown",
97
+ "md": "markdown",
98
+ "mdx": "mdx",
99
+ "mjs": "javascript",
100
+ "mk": "makefile",
101
+ "mkv": "video",
102
+ "ml": "ocaml",
103
+ "mm": "objective-cpp",
104
+ "mo": "i18n",
105
+ "mov": "video",
106
+ "mp3": "audio",
107
+ "mp4": "video",
108
+ "nim": "nim",
109
+ "nix": "nix",
110
+ "obj": "3d",
111
+ "ogg": "video",
112
+ "otf": "font",
113
+ "owl": "xml",
114
+ "patch": "git",
115
+ "pdf": "pdf",
116
+ "pem": "key",
117
+ "php": "php",
118
+ "pl": "prolog",
119
+ "plist": "xml",
120
+ "png": "image",
121
+ "po": "i18n",
122
+ "pot": "i18n",
123
+ "ppt": "powerpoint",
124
+ "pptx": "powerpoint",
125
+ "prisma": "prisma",
126
+ "properties": "settings",
127
+ "proto": "proto",
128
+ "ps1": "powershell",
129
+ "psd": "adobe-photoshop",
130
+ "psm1": "powershell",
131
+ "pub": "key",
132
+ "pug": "pug",
133
+ "py": "python",
134
+ "pyc": "python-misc",
135
+ "pyi": "python",
136
+ "r": "r",
137
+ "rar": "zip",
138
+ "razor": "razor",
139
+ "rb": "ruby",
140
+ "rdf": "xml",
141
+ "rs": "rust",
142
+ "rst": "markdown",
143
+ "rtf": "word",
144
+ "s": "assembly",
145
+ "sass": "sass",
146
+ "scala": "scala",
147
+ "scss": "sass",
148
+ "sh": "console",
149
+ "shader": "shader",
150
+ "sig": "sml",
151
+ "sol": "solidity",
152
+ "spec.js": "test-js",
153
+ "spec.ts": "test-ts",
154
+ "sql": "database",
155
+ "sqlite": "database",
156
+ "sqlite3": "database",
157
+ "stl": "3d",
158
+ "styl": "stylus",
159
+ "svelte": "svelte",
160
+ "svg": "svg",
161
+ "swift": "swift",
162
+ "tar": "zip",
163
+ "test.js": "test-js",
164
+ "test.ts": "test-ts",
165
+ "test.tsx": "test-jsx",
166
+ "tex": "tex",
167
+ "tf": "terraform",
168
+ "tfvars": "terraform",
169
+ "tgz": "zip",
170
+ "toml": "toml",
171
+ "ts": "typescript",
172
+ "tsv": "table",
173
+ "tsx": "react_ts",
174
+ "ttf": "font",
175
+ "txt": "document",
176
+ "unity": "unity",
177
+ "v": "vlang",
178
+ "vala": "vala",
179
+ "vim": "vim",
180
+ "vue": "vue",
181
+ "wasm": "webassembly",
182
+ "wat": "webassembly",
183
+ "wav": "audio",
184
+ "webm": "video",
185
+ "webp": "image",
186
+ "woff": "font",
187
+ "woff2": "font",
188
+ "xls": "table",
189
+ "xlsx": "table",
190
+ "xml": "xml",
191
+ "xz": "zip",
192
+ "yaml": "yaml",
193
+ "yml": "yaml",
194
+ "zig": "zig",
195
+ "zip": "zip",
196
+ "zsh": "console"
197
+ },
198
+ "name": {
199
+ ".babelrc": "babel",
200
+ ".cursorrules": "cursor",
201
+ ".editorconfig": "editorconfig",
202
+ ".env.development": "tune",
203
+ ".env.example": "tune",
204
+ ".env.local": "tune",
205
+ ".env.production": "tune",
206
+ ".env.test": "tune",
207
+ ".eslintrc": "eslint",
208
+ ".eslintrc.js": "eslint",
209
+ ".eslintrc.json": "eslint",
210
+ ".gitattributes": "git",
211
+ ".gitignore": "git",
212
+ ".gitkeep": "git",
213
+ ".gitmodules": "git",
214
+ ".huskyrc": "husky",
215
+ ".lintstagedrc": "lintstaged",
216
+ ".npmrc": "npm",
217
+ ".nvmrc": "nodejs",
218
+ ".prettierignore": "prettier",
219
+ ".prettierrc": "prettier",
220
+ ".releaserc": "semantic-release",
221
+ ".travis.yml": "travis",
222
+ "agents.md": "agent",
223
+ "authors": "authors",
224
+ "babel.config.js": "babel",
225
+ "bun.lock": "bun",
226
+ "bun.lockb": "bun",
227
+ "changelog": "changelog",
228
+ "changelog.md": "changelog",
229
+ "cmakelists.txt": "cmake",
230
+ "code_of_conduct.md": "conduct",
231
+ "codeowners": "codeowners",
232
+ "commitlint.config.js": "commitlint",
233
+ "compose.yaml": "docker",
234
+ "compose.yml": "docker",
235
+ "composer.lock": "json",
236
+ "contributing.md": "contributing",
237
+ "deno.json": "deno",
238
+ "deno.jsonc": "deno",
239
+ "docker-compose.yaml": "docker",
240
+ "docker-compose.yml": "docker",
241
+ "dockerfile": "docker",
242
+ "ecosystem.config.js": "pm2-ecosystem",
243
+ "eslint.config.js": "eslint",
244
+ "eslint.config.mjs": "eslint",
245
+ "favicon.ico": "favicon",
246
+ "gemfile": "gemfile",
247
+ "go.mod": "go-mod",
248
+ "go.sum": "go-mod",
249
+ "jenkinsfile": "jenkins",
250
+ "jest.config.js": "jest",
251
+ "jest.config.ts": "jest",
252
+ "jsconfig.json": "jsconfig",
253
+ "justfile": "just",
254
+ "lerna.json": "lerna",
255
+ "license": "license",
256
+ "license.md": "license",
257
+ "license.txt": "license",
258
+ "makefile": "makefile",
259
+ "netlify.toml": "netlify",
260
+ "next.config.js": "next",
261
+ "next.config.mjs": "next",
262
+ "next.config.ts": "next",
263
+ "nodemon.json": "nodemon",
264
+ "now.json": "vercel",
265
+ "nx.json": "nx",
266
+ "package-lock.json": "nodejs",
267
+ "package.json": "nodejs",
268
+ "pipfile": "python-misc",
269
+ "pnpm-lock.yaml": "pnpm",
270
+ "poetry.lock": "poetry",
271
+ "pom.xml": "maven",
272
+ "postcss.config.js": "postcss",
273
+ "postcss.config.mjs": "postcss",
274
+ "procfile": "heroku",
275
+ "pyproject.toml": "python-misc",
276
+ "rakefile": "ruby",
277
+ "readme": "readme",
278
+ "readme.md": "readme",
279
+ "renovate.json": "renovate",
280
+ "requirements.txt": "python-misc",
281
+ "robots.txt": "robots",
282
+ "rollup.config.js": "rollup",
283
+ "rollup.config.mjs": "rollup",
284
+ "security.md": "lock",
285
+ "tailwind.config.js": "tailwindcss",
286
+ "tailwind.config.ts": "tailwindcss",
287
+ "taskfile.yml": "taskfile",
288
+ "tsconfig.base.json": "tsconfig",
289
+ "tsconfig.json": "tsconfig",
290
+ "turbo.json": "turborepo",
291
+ "uv.lock": "uv",
292
+ "vercel.json": "vercel",
293
+ "vite.config.js": "vite",
294
+ "vite.config.ts": "vite",
295
+ "vitest.config.mts": "vitest",
296
+ "vitest.config.ts": "vitest",
297
+ "webpack.config.js": "webpack",
298
+ "yarn.lock": "yarn"
299
+ },
300
+ "folder": {
301
+ "__mocks__": "folder-mock",
302
+ "__pycache__": "folder-python",
303
+ "__tests__": "folder-test",
304
+ ".cache": "folder-temp",
305
+ ".circleci": "folder-circleci",
306
+ ".git": "folder-git",
307
+ ".github": "folder-github",
308
+ ".gitlab": "folder-gitlab",
309
+ ".husky": "folder-husky",
310
+ ".idea": "folder-intellij",
311
+ ".next": "folder-next",
312
+ ".nuxt": "folder-nuxt",
313
+ ".pytest_cache": "folder-python",
314
+ ".svelte-kit": "folder-svelte",
315
+ ".turbo": "folder-turborepo",
316
+ ".venv": "folder-environment",
317
+ ".vscode": "folder-vscode",
318
+ "@types": "folder-typescript",
319
+ "admin": "folder-admin",
320
+ "agent": "folder-robot",
321
+ "agents": "folder-robot",
322
+ "android": "folder-android",
323
+ "api": "folder-api",
324
+ "apis": "folder-api",
325
+ "app": "folder-app",
326
+ "apps": "folder-app",
327
+ "archive": "folder-archive",
328
+ "archives": "folder-archive",
329
+ "assets": "folder-resource",
330
+ "atoms": "folder-atom",
331
+ "audio": "folder-audio",
332
+ "auth": "folder-secure",
333
+ "aws": "folder-aws",
334
+ "azure": "folder-aws",
335
+ "backend": "folder-server",
336
+ "backup": "folder-backup",
337
+ "backups": "folder-backup",
338
+ "benchmark": "folder-benchmark",
339
+ "benchmarks": "folder-benchmark",
340
+ "bin": "folder-dist",
341
+ "blog": "folder-docs",
342
+ "build": "folder-dist",
343
+ "cache": "folder-temp",
344
+ "cart": "folder-cart",
345
+ "certificates": "folder-secure",
346
+ "certs": "folder-secure",
347
+ "chat": "folder-messages",
348
+ "ci": "folder-ci",
349
+ "cli": "folder-command",
350
+ "client": "folder-client",
351
+ "command": "folder-command",
352
+ "commands": "folder-command",
353
+ "common": "folder-shared",
354
+ "components": "folder-components",
355
+ "config": "folder-config",
356
+ "configs": "folder-config",
357
+ "configuration": "folder-config",
358
+ "console": "folder-console",
359
+ "content": "folder-content",
360
+ "context": "folder-context",
361
+ "contexts": "folder-context",
362
+ "contract": "folder-contract",
363
+ "contracts": "folder-contract",
364
+ "controller": "folder-controller",
365
+ "controllers": "folder-controller",
366
+ "core": "folder-core",
367
+ "coverage": "folder-coverage",
368
+ "css": "folder-css",
369
+ "data": "folder-database",
370
+ "database": "folder-database",
371
+ "db": "folder-database",
372
+ "debug": "folder-debug",
373
+ "demo": "folder-examples",
374
+ "demos": "folder-examples",
375
+ "deprecated": "folder-deprecated",
376
+ "design": "folder-theme",
377
+ "designs": "folder-theme",
378
+ "desktop": "folder-desktop",
379
+ "dist": "folder-dist",
380
+ "doc": "folder-docs",
381
+ "docker": "folder-docker",
382
+ "docs": "folder-docs",
383
+ "documentation": "folder-docs",
384
+ "draft": "folder-mock",
385
+ "drafts": "folder-mock",
386
+ "e2e": "folder-coverage",
387
+ "element": "folder-element",
388
+ "elements": "folder-element",
389
+ "env": "folder-environment",
390
+ "environment": "folder-environment",
391
+ "environments": "folder-environment",
392
+ "event": "folder-event",
393
+ "events": "folder-event",
394
+ "example": "folder-examples",
395
+ "examples": "folder-examples",
396
+ "extension": "folder-plugin",
397
+ "extensions": "folder-plugin",
398
+ "feature": "folder-features",
399
+ "features": "folder-features",
400
+ "fixture": "folder-mock",
401
+ "fixtures": "folder-mock",
402
+ "font": "folder-font",
403
+ "fonts": "folder-font",
404
+ "frontend": "folder-client",
405
+ "functions": "folder-functions",
406
+ "gcp": "folder-aws",
407
+ "gen": "folder-generator",
408
+ "generated": "folder-generator",
409
+ "gql": "folder-graphql",
410
+ "graphql": "folder-graphql",
411
+ "helper": "folder-helper",
412
+ "helpers": "folder-helper",
413
+ "history": "folder-backup",
414
+ "hooks": "folder-hook",
415
+ "i18n": "folder-i18n",
416
+ "icon": "folder-images",
417
+ "icons": "folder-images",
418
+ "image": "folder-images",
419
+ "images": "folder-images",
420
+ "img": "folder-images",
421
+ "include": "folder-include",
422
+ "includes": "folder-include",
423
+ "infra": "folder-server",
424
+ "infrastructure": "folder-server",
425
+ "interfaces": "folder-interface",
426
+ "ios": "folder-ios",
427
+ "java": "folder-java",
428
+ "job": "folder-job",
429
+ "jobs": "folder-job",
430
+ "k8s": "folder-kubernetes",
431
+ "keys": "folder-keys",
432
+ "kubernetes": "folder-kubernetes",
433
+ "lambda": "folder-functions",
434
+ "lang": "folder-i18n",
435
+ "langs": "folder-i18n",
436
+ "layout": "folder-layout",
437
+ "layouts": "folder-layout",
438
+ "less": "folder-less",
439
+ "lib": "folder-lib",
440
+ "libraries": "folder-lib",
441
+ "library": "folder-lib",
442
+ "libs": "folder-lib",
443
+ "locale": "folder-i18n",
444
+ "locales": "folder-i18n",
445
+ "log": "folder-log",
446
+ "logs": "folder-log",
447
+ "media": "folder-video",
448
+ "messages": "folder-messages",
449
+ "meta": "folder-meta",
450
+ "metadata": "folder-meta",
451
+ "middleware": "folder-middleware",
452
+ "middlewares": "folder-middleware",
453
+ "migration": "folder-migrations",
454
+ "migrations": "folder-migrations",
455
+ "mobile": "folder-mobile",
456
+ "mock": "folder-mock",
457
+ "mocks": "folder-mock",
458
+ "model": "folder-class",
459
+ "models": "folder-class",
460
+ "module": "folder-plugin",
461
+ "modules": "folder-plugin",
462
+ "molecules": "folder-molecule",
463
+ "node_modules": "folder-node",
464
+ "notebook": "folder-jupyter",
465
+ "notebooks": "folder-jupyter",
466
+ "organisms": "folder-organism",
467
+ "out": "folder-dist",
468
+ "output": "folder-dist",
469
+ "package": "folder-packages",
470
+ "packages": "folder-packages",
471
+ "pages": "folder-views",
472
+ "plugin": "folder-plugin",
473
+ "plugins": "folder-plugin",
474
+ "posts": "folder-docs",
475
+ "prisma": "folder-prisma",
476
+ "prompt": "folder-prompts",
477
+ "prompts": "folder-prompts",
478
+ "proto": "folder-proto",
479
+ "provider": "folder-controller",
480
+ "providers": "folder-controller",
481
+ "public": "folder-public",
482
+ "python": "folder-python",
483
+ "queue": "folder-queue",
484
+ "release": "folder-dist",
485
+ "res": "folder-resource",
486
+ "resource": "folder-resource",
487
+ "resources": "folder-resource",
488
+ "review": "folder-review",
489
+ "reviews": "folder-review",
490
+ "router": "folder-routes",
491
+ "routers": "folder-routes",
492
+ "routes": "folder-routes",
493
+ "rust": "folder-rust",
494
+ "sample": "folder-examples",
495
+ "samples": "folder-examples",
496
+ "sass": "folder-sass",
497
+ "schema": "folder-class",
498
+ "schemas": "folder-class",
499
+ "script": "folder-scripts",
500
+ "scripts": "folder-scripts",
501
+ "scss": "folder-sass",
502
+ "secrets": "folder-keys",
503
+ "seed": "folder-seeders",
504
+ "seeds": "folder-seeders",
505
+ "server": "folder-server",
506
+ "service": "folder-controller",
507
+ "services": "folder-controller",
508
+ "settings": "folder-config",
509
+ "shared": "folder-shared",
510
+ "site": "folder-public",
511
+ "skill": "folder-skills",
512
+ "skills": "folder-skills",
513
+ "sounds": "folder-audio",
514
+ "source": "folder-src",
515
+ "spec": "folder-test",
516
+ "specs": "folder-test",
517
+ "src": "folder-src",
518
+ "static": "folder-resource",
519
+ "store": "folder-store",
520
+ "stores": "folder-store",
521
+ "stories": "folder-storybook",
522
+ "style": "folder-css",
523
+ "styles": "folder-css",
524
+ "supabase": "folder-supabase",
525
+ "target": "folder-target",
526
+ "tasks": "folder-tasks",
527
+ "temp": "folder-temp",
528
+ "template": "folder-template",
529
+ "templates": "folder-template",
530
+ "terraform": "folder-terraform",
531
+ "test": "folder-test",
532
+ "tests": "folder-test",
533
+ "theme": "folder-theme",
534
+ "themes": "folder-theme",
535
+ "third-party": "folder-lib",
536
+ "tmp": "folder-temp",
537
+ "tooling": "folder-tools",
538
+ "tools": "folder-tools",
539
+ "translations": "folder-i18n",
540
+ "types": "folder-typescript",
541
+ "typings": "folder-typescript",
542
+ "ui": "folder-ui",
543
+ "util": "folder-utils",
544
+ "utils": "folder-utils",
545
+ "vendor": "folder-lib",
546
+ "vendors": "folder-lib",
547
+ "venv": "folder-environment",
548
+ "video": "folder-video",
549
+ "videos": "folder-video",
550
+ "view": "folder-views",
551
+ "views": "folder-views",
552
+ "web": "folder-public",
553
+ "website": "folder-public",
554
+ "widget": "folder-components",
555
+ "widgets": "folder-components"
556
+ }
557
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 文件 / 文件夹图标:按扩展名、完整文件名、文件夹名查 material-icon-theme 的精简映射,
3
+ * 返回 public/file-icons 下的 SVG 路径。映射表由 scripts/sync-file-icons.mjs 生成。
4
+ */
5
+ import icons from "./file-icons.json";
6
+
7
+ interface IconMap {
8
+ defaults: { file: string; folder: string; folderOpen: string };
9
+ ext: Record<string, string>;
10
+ name: Record<string, string>;
11
+ folder: Record<string, string>;
12
+ }
13
+
14
+ const map = icons as IconMap;
15
+
16
+ function src(id: string): string {
17
+ return `/file-icons/${id}.svg`;
18
+ }
19
+
20
+ /** 文件图标:先按完整文件名,再按最长匹配的多段扩展名(d.ts > ts) */
21
+ export function fileIconSrc(fileName: string): string {
22
+ const lower = fileName.toLowerCase();
23
+ const byName = map.name[lower];
24
+ if (byName) return src(byName);
25
+ const parts = lower.split(".");
26
+ for (let i = 1; i < parts.length; i += 1) {
27
+ const ext = parts.slice(i).join(".");
28
+ const id = map.ext[ext];
29
+ if (id) return src(id);
30
+ }
31
+ return src(map.defaults.file);
32
+ }
33
+
34
+ /** 文件夹图标:按文件夹名,展开态用 -open 变体 */
35
+ export function folderIconSrc(dirName: string, open: boolean): string {
36
+ const id = map.folder[dirName.toLowerCase()];
37
+ if (id) return src(open ? `${id}-open` : id);
38
+ return src(open ? map.defaults.folderOpen : map.defaults.folder);
39
+ }