@tscircuit/fake-snippets 0.0.121 → 0.0.123

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 (737) hide show
  1. package/dist/bundle.js +9422 -0
  2. package/dist/index.d.ts +2190 -0
  3. package/dist/index.js +3961 -0
  4. package/dist/schema.d.ts +3142 -0
  5. package/{fake-snippets-api/lib/db/schema.ts → dist/schema.js} +147 -195
  6. package/package.json +5 -2
  7. package/.github/CODEOWNERS +0 -1
  8. package/.github/workflows/bun-formatcheck.yml +0 -26
  9. package/.github/workflows/bun-pver-release.yml +0 -53
  10. package/.github/workflows/bun-test.yml +0 -28
  11. package/.github/workflows/bun-typecheck.yml +0 -26
  12. package/.github/workflows/bundle-size-analysis.yml +0 -79
  13. package/.github/workflows/stale.yml +0 -40
  14. package/.github/workflows/update-package.yml +0 -58
  15. package/.github/workflows/update-snapshots.yml +0 -49
  16. package/CLAUDE.md +0 -92
  17. package/CONTRIBUTING.md +0 -59
  18. package/api/generated-index.js +0 -456
  19. package/biome.json +0 -67
  20. package/bun-tests/fake-snippets-api/fixtures/get-test-server.ts +0 -141
  21. package/bun-tests/fake-snippets-api/fixtures/preload.ts +0 -18
  22. package/bun-tests/fake-snippets-api/fixtures/start-server.ts +0 -48
  23. package/bun-tests/fake-snippets-api/routes/accounts/get.test.ts +0 -64
  24. package/bun-tests/fake-snippets-api/routes/accounts/get_account_balance.test.ts +0 -14
  25. package/bun-tests/fake-snippets-api/routes/ai_reviews/create.test.ts +0 -21
  26. package/bun-tests/fake-snippets-api/routes/ai_reviews/get.test.ts +0 -16
  27. package/bun-tests/fake-snippets-api/routes/ai_reviews/list.test.ts +0 -14
  28. package/bun-tests/fake-snippets-api/routes/ai_reviews/process_review.test.ts +0 -16
  29. package/bun-tests/fake-snippets-api/routes/bug_reports/create.test.ts +0 -37
  30. package/bun-tests/fake-snippets-api/routes/bug_reports/upload_file.test.ts +0 -89
  31. package/bun-tests/fake-snippets-api/routes/datasheets/create.test.ts +0 -16
  32. package/bun-tests/fake-snippets-api/routes/datasheets/get.test.ts +0 -54
  33. package/bun-tests/fake-snippets-api/routes/datasheets/list.test.ts +0 -49
  34. package/bun-tests/fake-snippets-api/routes/datasheets/process_all_datasheets.test.ts +0 -22
  35. package/bun-tests/fake-snippets-api/routes/datasheets/run_async_tasks.test.ts +0 -19
  36. package/bun-tests/fake-snippets-api/routes/health.test.ts +0 -9
  37. package/bun-tests/fake-snippets-api/routes/order_files/get.test.ts +0 -48
  38. package/bun-tests/fake-snippets-api/routes/order_files/upload.test.ts +0 -77
  39. package/bun-tests/fake-snippets-api/routes/order_quotes/create.test.ts +0 -33
  40. package/bun-tests/fake-snippets-api/routes/orders/create.test.ts +0 -17
  41. package/bun-tests/fake-snippets-api/routes/orders/get.test.ts +0 -199
  42. package/bun-tests/fake-snippets-api/routes/orders/list.test.ts +0 -30
  43. package/bun-tests/fake-snippets-api/routes/orgs/add_member.test.ts +0 -26
  44. package/bun-tests/fake-snippets-api/routes/orgs/create.test.ts +0 -37
  45. package/bun-tests/fake-snippets-api/routes/orgs/get.test.ts +0 -53
  46. package/bun-tests/fake-snippets-api/routes/orgs/get_member.test.ts +0 -110
  47. package/bun-tests/fake-snippets-api/routes/orgs/list.test.ts +0 -17
  48. package/bun-tests/fake-snippets-api/routes/orgs/list_members.test.ts +0 -24
  49. package/bun-tests/fake-snippets-api/routes/orgs/remove_member.test.ts +0 -81
  50. package/bun-tests/fake-snippets-api/routes/orgs/update.test.ts +0 -151
  51. package/bun-tests/fake-snippets-api/routes/package_builds/get.test.ts +0 -279
  52. package/bun-tests/fake-snippets-api/routes/package_builds/list.test.ts +0 -292
  53. package/bun-tests/fake-snippets-api/routes/package_files/create.test.ts +0 -320
  54. package/bun-tests/fake-snippets-api/routes/package_files/create_or_update.test.ts +0 -603
  55. package/bun-tests/fake-snippets-api/routes/package_files/delete.test.ts +0 -233
  56. package/bun-tests/fake-snippets-api/routes/package_files/download.test.ts +0 -248
  57. package/bun-tests/fake-snippets-api/routes/package_files/get.test.ts +0 -230
  58. package/bun-tests/fake-snippets-api/routes/package_files/list.test.ts +0 -212
  59. package/bun-tests/fake-snippets-api/routes/package_releases/create.test.ts +0 -171
  60. package/bun-tests/fake-snippets-api/routes/package_releases/get.test.ts +0 -181
  61. package/bun-tests/fake-snippets-api/routes/package_releases/get_image_generation_fields.test.ts +0 -38
  62. package/bun-tests/fake-snippets-api/routes/package_releases/list.test.ts +0 -149
  63. package/bun-tests/fake-snippets-api/routes/package_releases/update.test.ts +0 -160
  64. package/bun-tests/fake-snippets-api/routes/packages/add_star.test.ts +0 -129
  65. package/bun-tests/fake-snippets-api/routes/packages/create.test.ts +0 -67
  66. package/bun-tests/fake-snippets-api/routes/packages/delete.test.ts +0 -74
  67. package/bun-tests/fake-snippets-api/routes/packages/fork.test.ts +0 -132
  68. package/bun-tests/fake-snippets-api/routes/packages/get.test.ts +0 -112
  69. package/bun-tests/fake-snippets-api/routes/packages/images.test.ts +0 -72
  70. package/bun-tests/fake-snippets-api/routes/packages/list-1.test.ts +0 -145
  71. package/bun-tests/fake-snippets-api/routes/packages/list-2.test.ts +0 -48
  72. package/bun-tests/fake-snippets-api/routes/packages/list_latest.test.ts +0 -110
  73. package/bun-tests/fake-snippets-api/routes/packages/list_trending.test.ts +0 -103
  74. package/bun-tests/fake-snippets-api/routes/packages/remove_star.test.ts +0 -131
  75. package/bun-tests/fake-snippets-api/routes/packages/update.test.ts +0 -217
  76. package/bun-tests/fake-snippets-api/routes/proxy.test.ts +0 -42
  77. package/bun.lock +0 -2724
  78. package/bunfig.toml +0 -3
  79. package/components.json +0 -20
  80. package/dist/assets/404-CnNkOMw-.js +0 -1
  81. package/dist/assets/Analytics-DIw7l2gi.js +0 -84
  82. package/dist/assets/BuildsList-CeqVVhbz.js +0 -1
  83. package/dist/assets/CodeAndPreview-Dycd0s15.js +0 -722
  84. package/dist/assets/DownloadButtonAndMenu-OIUhbKkj.js +0 -194
  85. package/dist/assets/FileSaver.min-BDsOlqKl.js +0 -1
  86. package/dist/assets/Footer-DU-HdqGk.js +0 -1
  87. package/dist/assets/GithubAvatarWithFallback-CQhrBiKP.js +0 -6
  88. package/dist/assets/Header-CI4GZVOv.js +0 -1
  89. package/dist/assets/Header2-CrMDmo3P.js +0 -5
  90. package/dist/assets/NotFound-DaXtEPsC.js +0 -1
  91. package/dist/assets/OrganizationCard-Bs2dw-AL.js +0 -1
  92. package/dist/assets/PackageBreadcrumb-DpOpPbGc.js +0 -6
  93. package/dist/assets/PackageCard-ejE2dLlA.js +0 -16
  94. package/dist/assets/PackageSearchResults-BI3Rtmr2.js +0 -1
  95. package/dist/assets/ProfileRouter-4xNgtXr5.js +0 -6
  96. package/dist/assets/alert-dialog-DrOB4Tui.js +0 -1
  97. package/dist/assets/authorize-D-5R3QHA.js +0 -16
  98. package/dist/assets/badge-Bk-k6kyg.js +0 -1
  99. package/dist/assets/card-CzXDit7x.js +0 -1
  100. package/dist/assets/circle-alert-Du9-4of0.js +0 -6
  101. package/dist/assets/circle-check-big-KaRyRsht.js +0 -6
  102. package/dist/assets/cpu-BnvjzmIA.js +0 -6
  103. package/dist/assets/create-organization-BHNFvE7B.js +0 -1
  104. package/dist/assets/dashboard-DDH4V91X.js +0 -11
  105. package/dist/assets/datasheet-DqKtWt-O.js +0 -1
  106. package/dist/assets/datasheets-4W6pEMf3.js +0 -1
  107. package/dist/assets/dev-login-CbHdDthp.js +0 -1
  108. package/dist/assets/editor-bqg9Yv91.js +0 -1
  109. package/dist/assets/editor_example_1-1000w.webp +0 -0
  110. package/dist/assets/editor_example_1-1200w.webp +0 -0
  111. package/dist/assets/editor_example_1-1600w.webp +0 -0
  112. package/dist/assets/editor_example_1-2000w.webp +0 -0
  113. package/dist/assets/editor_example_1-400w.webp +0 -0
  114. package/dist/assets/editor_example_1-600w.webp +0 -0
  115. package/dist/assets/editor_example_1-800w.webp +0 -0
  116. package/dist/assets/editor_example_1_more_square-1000w.webp +0 -0
  117. package/dist/assets/editor_example_1_more_square-1200w.webp +0 -0
  118. package/dist/assets/editor_example_1_more_square-1600w.webp +0 -0
  119. package/dist/assets/editor_example_1_more_square-2000w.webp +0 -0
  120. package/dist/assets/editor_example_1_more_square-400w.webp +0 -0
  121. package/dist/assets/editor_example_1_more_square-600w.webp +0 -0
  122. package/dist/assets/editor_example_1_more_square-800w.webp +0 -0
  123. package/dist/assets/editor_example_2-1000w.webp +0 -0
  124. package/dist/assets/editor_example_2-1200w.webp +0 -0
  125. package/dist/assets/editor_example_2-1600w.webp +0 -0
  126. package/dist/assets/editor_example_2-2000w.webp +0 -0
  127. package/dist/assets/editor_example_2-400w.webp +0 -0
  128. package/dist/assets/editor_example_2-600w.webp +0 -0
  129. package/dist/assets/editor_example_2-800w.webp +0 -0
  130. package/dist/assets/example_schematic-1000w.webp +0 -0
  131. package/dist/assets/example_schematic-1200w.webp +0 -0
  132. package/dist/assets/example_schematic-1600w.webp +0 -0
  133. package/dist/assets/example_schematic-2000w.webp +0 -0
  134. package/dist/assets/example_schematic-400w.webp +0 -0
  135. package/dist/assets/example_schematic-600w.webp +0 -0
  136. package/dist/assets/example_schematic-800w.webp +0 -0
  137. package/dist/assets/eye-B_NMTTT7.js +0 -6
  138. package/dist/assets/fallback-image.svg +0 -1
  139. package/dist/assets/favicon-BwEjZKGP.ico +0 -0
  140. package/dist/assets/formatTimeAgo-CawXna5h.js +0 -6
  141. package/dist/assets/github-DjKGjbX1.js +0 -6
  142. package/dist/assets/github-dark-DHJKELXO.js +0 -1
  143. package/dist/assets/github-light-DAi9KRSo.js +0 -1
  144. package/dist/assets/hash-DfKYpqTm.js +0 -6
  145. package/dist/assets/index-B17tE1vy.js +0 -1
  146. package/dist/assets/index-BQPj88OW.js +0 -6051
  147. package/dist/assets/index-DvNLZBaq.js +0 -6
  148. package/dist/assets/keyboard-4b_qLHIF.js +0 -11
  149. package/dist/assets/label-CTudXc4q.js +0 -1
  150. package/dist/assets/landing-Cjvvx-9q.js +0 -11
  151. package/dist/assets/latest-DMk4BmXW.js +0 -1
  152. package/dist/assets/layers-BJ1iwaVM.js +0 -6
  153. package/dist/assets/load-prettier-DgbV1Jgu.js +0 -1
  154. package/dist/assets/lock-BOZRJdUv.js +0 -6
  155. package/dist/assets/main-DPEM9abA.js +0 -26
  156. package/dist/assets/main-MTKdI4FA.css +0 -1
  157. package/dist/assets/my-orders-B7lEyNR9.js +0 -1
  158. package/dist/assets/organization-settings-rNvhYFgZ.js +0 -6
  159. package/dist/assets/package-editor-T4WIRP49.js +0 -1
  160. package/dist/assets/pen-D54fxNRf.js +0 -6
  161. package/dist/assets/plus-KkE_6Dq2.js +0 -6
  162. package/dist/assets/preview-release-DWhKHFWp.js +0 -1
  163. package/dist/assets/quickstart-WF3HR9Dc.js +0 -1
  164. package/dist/assets/refresh-cw-aWASTRku.js +0 -6
  165. package/dist/assets/release-builds-COa5ndHa.js +0 -1
  166. package/dist/assets/release-detail-iclJPUO-.js +0 -6
  167. package/dist/assets/releases-Clsyp-7n.js +0 -1
  168. package/dist/assets/role-badge-BGF_IMlO.js +0 -16
  169. package/dist/assets/search-CwH23pAU.js +0 -1
  170. package/dist/assets/select-BN8AF1J7.js +0 -1
  171. package/dist/assets/settings-B2bMEtS4.js +0 -6
  172. package/dist/assets/skeleton-DLAS40-y.js +0 -1
  173. package/dist/assets/svg-to-png-BX4YEHCP-JcDm8Hc5.js +0 -1
  174. package/dist/assets/svg-to-png-BX4YEHCP-pNo9Afg8.js +0 -1
  175. package/dist/assets/tabs-Ce0NFuwd.js +0 -1
  176. package/dist/assets/timeAgo-VY0F2EV9.js +0 -10
  177. package/dist/assets/tooltip-C1pwvC0K.js +0 -11
  178. package/dist/assets/trash-2-BW3eClHz.js +0 -6
  179. package/dist/assets/trending-C8246HGf.js +0 -1
  180. package/dist/assets/triangle-alert-BMIBEO1D.js +0 -6
  181. package/dist/assets/tsx-COt5Ahok.js +0 -1
  182. package/dist/assets/use-create-datasheet-B7TDsTUt.js +0 -1
  183. package/dist/assets/use-delete-package-DLKtoTOj.js +0 -1
  184. package/dist/assets/use-download-zip-CAOKjGXW.js +0 -1
  185. package/dist/assets/use-list-user-orgs-CgJIT7N4.js +0 -1
  186. package/dist/assets/use-organization-XwYYTFck.js +0 -1
  187. package/dist/assets/use-package-builds-Bx8rfxi1.js +0 -1
  188. package/dist/assets/use-package-by-package-name-1s1Pcarw.js +0 -1
  189. package/dist/assets/use-package-files-CmmWVuGn.js +0 -1
  190. package/dist/assets/use-package-release-by-id-or-version-BuuXcSZq.js +0 -1
  191. package/dist/assets/use-package-release-images-BMaZtvmk.js +0 -1
  192. package/dist/assets/use-packages-base-api-url-DA1hucM7.js +0 -1
  193. package/dist/assets/useQueries-BJ7Ue7HV.js +0 -1
  194. package/dist/assets/user-settings-BqO5FkMf.js +0 -1
  195. package/dist/assets/view-package-C-OvJr_Q.js +0 -165
  196. package/dist/assets/vitesse-light-CVO1_9PV.js +0 -1
  197. package/dist/assets/wasm-CG6Dc4jp.js +0 -1
  198. package/dist/index.html +0 -127
  199. package/dist/landing.html +0 -34
  200. package/dist/robots.txt +0 -9
  201. package/dist/sitemap.xml +0 -118
  202. package/dist/stats.html +0 -4949
  203. package/docs/CIRCUIT_JSON_SOURCE_COMPONENT_OVERVIEW.md +0 -151
  204. package/fake-snippets-api/README.md +0 -6
  205. package/fake-snippets-api/biome.json +0 -47
  206. package/fake-snippets-api/lib/db/autoload-dev-packages.ts +0 -222
  207. package/fake-snippets-api/lib/db/autoload-packages.json +0 -8
  208. package/fake-snippets-api/lib/db/db-client.ts +0 -1857
  209. package/fake-snippets-api/lib/db/seed.ts +0 -1843
  210. package/fake-snippets-api/lib/index.ts +0 -3
  211. package/fake-snippets-api/lib/middleware/with-ctx-error.ts +0 -26
  212. package/fake-snippets-api/lib/middleware/with-db.ts +0 -15
  213. package/fake-snippets-api/lib/middleware/with-error-handling.ts +0 -24
  214. package/fake-snippets-api/lib/middleware/with-optional-session-auth.ts +0 -53
  215. package/fake-snippets-api/lib/middleware/with-request-logging.ts +0 -54
  216. package/fake-snippets-api/lib/middleware/with-session-auth.ts +0 -102
  217. package/fake-snippets-api/lib/middleware/with-winter-spec.ts +0 -24
  218. package/fake-snippets-api/lib/package_file/generate-fs-sha.ts +0 -20
  219. package/fake-snippets-api/lib/package_file/get-package-file-id-from-file-descriptor.ts +0 -173
  220. package/fake-snippets-api/lib/package_release/find-package-release-id.ts +0 -120
  221. package/fake-snippets-api/lib/public-mapping/public-map-org.ts +0 -34
  222. package/fake-snippets-api/lib/public-mapping/public-map-package-build.ts +0 -48
  223. package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +0 -88
  224. package/fake-snippets-api/lib/public-mapping/public-map-package.ts +0 -60
  225. package/fake-snippets-api/lib/with-winter-spec.ts +0 -1
  226. package/fake-snippets-api/next-env.d.ts +0 -5
  227. package/fake-snippets-api/routes/api/_fake/ai_reviews/process_review.ts +0 -31
  228. package/fake-snippets-api/routes/api/_fake/datasheets/process_all_datasheets.ts +0 -38
  229. package/fake-snippets-api/routes/api/_fake/db.ts +0 -11
  230. package/fake-snippets-api/routes/api/_fake/move_orders_forward.ts +0 -65
  231. package/fake-snippets-api/routes/api/_fake/received_quotes.ts +0 -112
  232. package/fake-snippets-api/routes/api/_fake/run_async_tasks.ts +0 -12
  233. package/fake-snippets-api/routes/api/_fake/seed.ts +0 -13
  234. package/fake-snippets-api/routes/api/accounts/get.ts +0 -35
  235. package/fake-snippets-api/routes/api/accounts/get_account_balance.ts +0 -22
  236. package/fake-snippets-api/routes/api/accounts/search.ts +0 -20
  237. package/fake-snippets-api/routes/api/accounts/update.ts +0 -32
  238. package/fake-snippets-api/routes/api/ai/[...anyroute].ts +0 -31
  239. package/fake-snippets-api/routes/api/ai.ts +0 -2
  240. package/fake-snippets-api/routes/api/ai_reviews/create.ts +0 -44
  241. package/fake-snippets-api/routes/api/ai_reviews/get.ts +0 -24
  242. package/fake-snippets-api/routes/api/ai_reviews/list.ts +0 -14
  243. package/fake-snippets-api/routes/api/aistream/[...anyroute].ts +0 -65
  244. package/fake-snippets-api/routes/api/autocomplete/create_autocomplete.ts +0 -16
  245. package/fake-snippets-api/routes/api/bug_reports/create.ts +0 -43
  246. package/fake-snippets-api/routes/api/bug_reports/upload_file.ts +0 -113
  247. package/fake-snippets-api/routes/api/datasheets/create.ts +0 -18
  248. package/fake-snippets-api/routes/api/datasheets/get.ts +0 -35
  249. package/fake-snippets-api/routes/api/datasheets/list.ts +0 -29
  250. package/fake-snippets-api/routes/api/github/installations/create_new_installation_redirect.ts +0 -75
  251. package/fake-snippets-api/routes/api/github/repos/list_available.ts +0 -91
  252. package/fake-snippets-api/routes/api/github/repos/refresh.ts +0 -44
  253. package/fake-snippets-api/routes/api/health.ts +0 -9
  254. package/fake-snippets-api/routes/api/internal/sessions/create_without_auth.ts +0 -63
  255. package/fake-snippets-api/routes/api/order_files/get.ts +0 -28
  256. package/fake-snippets-api/routes/api/order_files/upload.ts +0 -46
  257. package/fake-snippets-api/routes/api/order_quotes/create.ts +0 -60
  258. package/fake-snippets-api/routes/api/order_quotes/create_all_vendor_quotes.ts +0 -30
  259. package/fake-snippets-api/routes/api/order_quotes/get.ts +0 -29
  260. package/fake-snippets-api/routes/api/orders/create.ts +0 -70
  261. package/fake-snippets-api/routes/api/orders/get.ts +0 -168
  262. package/fake-snippets-api/routes/api/orders/list.ts +0 -15
  263. package/fake-snippets-api/routes/api/orgs/add_member.ts +0 -52
  264. package/fake-snippets-api/routes/api/orgs/create.ts +0 -48
  265. package/fake-snippets-api/routes/api/orgs/get.ts +0 -39
  266. package/fake-snippets-api/routes/api/orgs/get_member.ts +0 -67
  267. package/fake-snippets-api/routes/api/orgs/list.ts +0 -31
  268. package/fake-snippets-api/routes/api/orgs/list_members.ts +0 -106
  269. package/fake-snippets-api/routes/api/orgs/remove_member.ts +0 -46
  270. package/fake-snippets-api/routes/api/orgs/update.ts +0 -118
  271. package/fake-snippets-api/routes/api/package_builds/get.ts +0 -70
  272. package/fake-snippets-api/routes/api/package_builds/list.ts +0 -97
  273. package/fake-snippets-api/routes/api/package_files/create.ts +0 -135
  274. package/fake-snippets-api/routes/api/package_files/create_or_update.ts +0 -194
  275. package/fake-snippets-api/routes/api/package_files/delete.ts +0 -109
  276. package/fake-snippets-api/routes/api/package_files/download.ts +0 -87
  277. package/fake-snippets-api/routes/api/package_files/get.ts +0 -68
  278. package/fake-snippets-api/routes/api/package_files/list.ts +0 -54
  279. package/fake-snippets-api/routes/api/package_releases/create.ts +0 -109
  280. package/fake-snippets-api/routes/api/package_releases/get.ts +0 -137
  281. package/fake-snippets-api/routes/api/package_releases/list.ts +0 -85
  282. package/fake-snippets-api/routes/api/package_releases/rebuild.ts +0 -66
  283. package/fake-snippets-api/routes/api/package_releases/update.ts +0 -122
  284. package/fake-snippets-api/routes/api/packages/add_star.ts +0 -84
  285. package/fake-snippets-api/routes/api/packages/create.ts +0 -136
  286. package/fake-snippets-api/routes/api/packages/delete.ts +0 -41
  287. package/fake-snippets-api/routes/api/packages/fork.ts +0 -165
  288. package/fake-snippets-api/routes/api/packages/generate_from_jlcpcb.ts +0 -111
  289. package/fake-snippets-api/routes/api/packages/get.ts +0 -81
  290. package/fake-snippets-api/routes/api/packages/images/[owner_github_username]/[unscoped_name]/[view_format].ts +0 -119
  291. package/fake-snippets-api/routes/api/packages/list.ts +0 -105
  292. package/fake-snippets-api/routes/api/packages/list_latest.ts +0 -29
  293. package/fake-snippets-api/routes/api/packages/list_trending.ts +0 -43
  294. package/fake-snippets-api/routes/api/packages/remove_star.ts +0 -70
  295. package/fake-snippets-api/routes/api/packages/search.ts +0 -19
  296. package/fake-snippets-api/routes/api/packages/update.ts +0 -112
  297. package/fake-snippets-api/routes/api/packages/update_ai_description.ts +0 -37
  298. package/fake-snippets-api/routes/api/proxy.ts +0 -128
  299. package/fake-snippets-api/routes/api/snippets/add_star.ts +0 -62
  300. package/fake-snippets-api/routes/api/snippets/create.ts +0 -184
  301. package/fake-snippets-api/routes/api/snippets/delete.ts +0 -41
  302. package/fake-snippets-api/routes/api/snippets/download.ts +0 -162
  303. package/fake-snippets-api/routes/api/snippets/generate_from_jlcpcb.ts +0 -48
  304. package/fake-snippets-api/routes/api/snippets/get.ts +0 -83
  305. package/fake-snippets-api/routes/api/snippets/get_image.ts +0 -65
  306. package/fake-snippets-api/routes/api/snippets/images/[author]/[snippet_name]/[typeFormat].ts +0 -80
  307. package/fake-snippets-api/routes/api/snippets/list.ts +0 -151
  308. package/fake-snippets-api/routes/api/snippets/list_latest.ts +0 -13
  309. package/fake-snippets-api/routes/api/snippets/list_trending.ts +0 -38
  310. package/fake-snippets-api/routes/api/snippets/remove_star.ts +0 -42
  311. package/fake-snippets-api/routes/api/snippets/search.ts +0 -18
  312. package/fake-snippets-api/routes/api/snippets/update.ts +0 -114
  313. package/fake-snippets-api/utils/normalizeProjectFilePath.ts +0 -60
  314. package/fake-snippets-api/utils/order-steps.ts +0 -20
  315. package/favicon.ico +0 -0
  316. package/index.html +0 -125
  317. package/landing.html +0 -23
  318. package/playwright-tests/ai-page.spec.ts +0 -19
  319. package/playwright-tests/circuit-json-import.spec.ts +0 -133
  320. package/playwright-tests/cmd-click.spec.ts +0 -43
  321. package/playwright-tests/dashboard-page.spec.ts +0 -10
  322. package/playwright-tests/editor-page.spec.ts +0 -15
  323. package/playwright-tests/exampleCircuitJson.ts +0 -498
  324. package/playwright-tests/files-dialog.spec.ts +0 -19
  325. package/playwright-tests/footprint-dialog/footprint-dialog.spec.ts +0 -27
  326. package/playwright-tests/footprint-dialog/footprint-insertion.spec.ts +0 -38
  327. package/playwright-tests/footprint-dialog/footprint-preview.spec.ts +0 -34
  328. package/playwright-tests/footprint-dialog/footprint-selection.spec.ts +0 -29
  329. package/playwright-tests/handle-manual-edits.spec.ts +0 -55
  330. package/playwright-tests/home-page.spec.ts +0 -10
  331. package/playwright-tests/images.spec.ts +0 -17
  332. package/playwright-tests/manual-edits.spec.ts +0 -89
  333. package/playwright-tests/preview-page.spec.ts +0 -7
  334. package/playwright-tests/profile-page.spec.ts +0 -108
  335. package/playwright-tests/quickstart-page.spec.ts +0 -10
  336. package/playwright-tests/search-links.spec.ts +0 -21
  337. package/playwright-tests/search.spec.ts +0 -27
  338. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-lg.png +0 -0
  339. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-md.png +0 -0
  340. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-xs.png +0 -0
  341. package/playwright-tests/snapshots/cmd-click.spec.ts-underlined-imports.png +0 -0
  342. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-lg.png +0 -0
  343. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-md.png +0 -0
  344. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-xs.png +0 -0
  345. package/playwright-tests/snapshots/editor-page.spec.ts-editor-with-snippet.png +0 -0
  346. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-lg.png +0 -0
  347. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-md.png +0 -0
  348. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-xs.png +0 -0
  349. package/playwright-tests/snapshots/files-dialog.spec.ts-view-snippet-files.png +0 -0
  350. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-lg.png +0 -0
  351. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-md.png +0 -0
  352. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-xs.png +0 -0
  353. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-lg.png +0 -0
  354. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-md.png +0 -0
  355. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-xs.png +0 -0
  356. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-lg.png +0 -0
  357. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-md.png +0 -0
  358. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-xs.png +0 -0
  359. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-lg.png +0 -0
  360. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-md.png +0 -0
  361. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-xs.png +0 -0
  362. package/playwright-tests/snapshots/handle-manual-edits.spec.ts-handle-manual-edits.png +0 -0
  363. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-lg.png +0 -0
  364. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-md.png +0 -0
  365. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-xs.png +0 -0
  366. package/playwright-tests/snapshots/images.spec.ts-pcb-image.png +0 -0
  367. package/playwright-tests/snapshots/images.spec.ts-schematic-image.png +0 -0
  368. package/playwright-tests/snapshots/manual-edits.spec.ts-editor-manual-edits.png +0 -0
  369. package/playwright-tests/snapshots/manual-edits.spec.ts-manual-edits-view.png +0 -0
  370. package/playwright-tests/snapshots/preview-page.spec.ts-preview-snippet-pcb.png +0 -0
  371. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-before-delete.png +0 -0
  372. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-delete-dialog.png +0 -0
  373. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-dropdown-open.png +0 -0
  374. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-snippets-tab.png +0 -0
  375. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-starred-tab.png +0 -0
  376. package/playwright-tests/snapshots/profile-page.spec.ts-snippet-page-open-after-star-click.png +0 -0
  377. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagelg.png +0 -0
  378. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagemd.png +0 -0
  379. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagexs.png +0 -0
  380. package/playwright-tests/snapshots/search-links.spec.ts-search-links.png +0 -0
  381. package/playwright-tests/snapshots/search.spec.ts-search-lg.png +0 -0
  382. package/playwright-tests/snapshots/search.spec.ts-search-md.png +0 -0
  383. package/playwright-tests/snapshots/search.spec.ts-search-xs.png +0 -0
  384. package/playwright-tests/snapshots/star.spec.ts-remove-star-button.png +0 -0
  385. package/playwright-tests/snapshots/star.spec.ts-star-button.png +0 -0
  386. package/playwright-tests/snapshots/update-description.spec.ts-update-description.png +0 -0
  387. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-lg.png +0 -0
  388. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-md.png +0 -0
  389. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-xs.png +0 -0
  390. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-lg.png +0 -0
  391. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-md.png +0 -0
  392. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-xs.png +0 -0
  393. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-files.png +0 -0
  394. package/playwright-tests/star.spec.ts +0 -40
  395. package/playwright-tests/update-description.spec.ts +0 -18
  396. package/playwright-tests/view-snippet.spec.ts +0 -35
  397. package/playwright-tests/viewports.ts +0 -5
  398. package/playwright.config.ts +0 -27
  399. package/postcss.config.js +0 -6
  400. package/public/robots.txt +0 -9
  401. package/renovate.json +0 -25
  402. package/scripts/generate-image-sizes.ts +0 -57
  403. package/scripts/generate-sitemap.ts +0 -103
  404. package/scripts/generate_bundle_stats.js +0 -208
  405. package/scripts/snapshot.ts +0 -35
  406. package/src/App.tsx +0 -314
  407. package/src/ContextProviders.tsx +0 -94
  408. package/src/assets/originals/editor_example_1.webp +0 -0
  409. package/src/assets/originals/editor_example_1_more_square.webp +0 -0
  410. package/src/assets/originals/editor_example_2.webp +0 -0
  411. package/src/assets/originals/example_schematic.webp +0 -0
  412. package/src/components/AiChatMessage.tsx +0 -86
  413. package/src/components/Analytics.tsx +0 -23
  414. package/src/components/BomTable.tsx +0 -69
  415. package/src/components/ChatInput.tsx +0 -53
  416. package/src/components/CircuitJsonImportDialog.tsx +0 -269
  417. package/src/components/CircuitToSvgWithMouseControl.tsx +0 -78
  418. package/src/components/CmdKMenu.tsx +0 -809
  419. package/src/components/CreateNewSnippetWithAiHero.tsx +0 -81
  420. package/src/components/CreateReleaseDialog.tsx +0 -124
  421. package/src/components/DownloadButtonAndMenu.tsx +0 -443
  422. package/src/components/ErrorFallback.tsx +0 -25
  423. package/src/components/ErrorOutline.tsx +0 -35
  424. package/src/components/ErrorTabContent.tsx +0 -122
  425. package/src/components/ExpandableText.tsx +0 -29
  426. package/src/components/FAQ.tsx +0 -189
  427. package/src/components/FileSidebar.tsx +0 -271
  428. package/src/components/Footer.tsx +0 -144
  429. package/src/components/GithubAvatarWithFallback.tsx +0 -35
  430. package/src/components/Header.tsx +0 -202
  431. package/src/components/Header2.tsx +0 -202
  432. package/src/components/HeaderDropdown.tsx +0 -88
  433. package/src/components/HeaderLogin.tsx +0 -105
  434. package/src/components/HiddenFilesDropdown.tsx +0 -42
  435. package/src/components/ImageWithFallback.tsx +0 -37
  436. package/src/components/LatestSnippets.tsx +0 -39
  437. package/src/components/NotFound.tsx +0 -37
  438. package/src/components/OptimizedImage.tsx +0 -100
  439. package/src/components/PackageBreadcrumb.tsx +0 -105
  440. package/src/components/PackageBuildsPage/ErrorObject.ts +0 -12
  441. package/src/components/PackageBuildsPage/capitalCase.ts +0 -4
  442. package/src/components/PackageBuildsPage/getColorForDisplayStatus.ts +0 -17
  443. package/src/components/PackageCard.tsx +0 -191
  444. package/src/components/PackageCardSkeleton.tsx +0 -17
  445. package/src/components/PackageLink.tsx +0 -29
  446. package/src/components/PackageSearchResults.tsx +0 -81
  447. package/src/components/PackagesList.tsx +0 -71
  448. package/src/components/PcbViewerWithContainerHeight.tsx +0 -47
  449. package/src/components/PrefetchPageLink.tsx +0 -114
  450. package/src/components/PreviewEmptyState.tsx +0 -16
  451. package/src/components/ProfileRouter.tsx +0 -30
  452. package/src/components/RunButton.tsx +0 -27
  453. package/src/components/SearchComponent.tsx +0 -282
  454. package/src/components/SentryNotFoundReporter.tsx +0 -44
  455. package/src/components/SnippetTypeIcon.tsx +0 -60
  456. package/src/components/StaticPreviewContent.tsx +0 -89
  457. package/src/components/StaticViewSnippetSidebar.tsx +0 -100
  458. package/src/components/SuspenseRunFrame.tsx +0 -28
  459. package/src/components/TableViewer/CircuitJsonTableViewer.tsx +0 -316
  460. package/src/components/TableViewer/ClickableText.tsx +0 -21
  461. package/src/components/TableViewer/HeaderCell.tsx +0 -27
  462. package/src/components/TableViewer/Modal.tsx +0 -39
  463. package/src/components/TrendingPackagesCarousel.tsx +0 -79
  464. package/src/components/TypeBadge.tsx +0 -31
  465. package/src/components/UserCard.tsx +0 -80
  466. package/src/components/ViewPackagePage/components/ShikiCodeViewer.tsx +0 -49
  467. package/src/components/ViewPackagePage/components/build-status.tsx +0 -38
  468. package/src/components/ViewPackagePage/components/important-files-view.tsx +0 -611
  469. package/src/components/ViewPackagePage/components/main-content-header.tsx +0 -181
  470. package/src/components/ViewPackagePage/components/main-content-view-selector.tsx +0 -167
  471. package/src/components/ViewPackagePage/components/markdown-viewer.tsx +0 -88
  472. package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +0 -301
  473. package/src/components/ViewPackagePage/components/package-header.tsx +0 -264
  474. package/src/components/ViewPackagePage/components/preview-image-squares.tsx +0 -47
  475. package/src/components/ViewPackagePage/components/repo-page-content.tsx +0 -266
  476. package/src/components/ViewPackagePage/components/sidebar-about-section.tsx +0 -223
  477. package/src/components/ViewPackagePage/components/sidebar-packages-section.tsx +0 -16
  478. package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +0 -126
  479. package/src/components/ViewPackagePage/components/sidebar.tsx +0 -29
  480. package/src/components/ViewPackagePage/components/tab-views/3d-view.tsx +0 -43
  481. package/src/components/ViewPackagePage/components/tab-views/bom-view.tsx +0 -30
  482. package/src/components/ViewPackagePage/components/tab-views/files-view.tsx +0 -295
  483. package/src/components/ViewPackagePage/components/tab-views/pcb-view.tsx +0 -35
  484. package/src/components/ViewPackagePage/components/tab-views/schematic-view.tsx +0 -38
  485. package/src/components/ViewPackagePage/components/theme-toggle.tsx +0 -40
  486. package/src/components/ViewPackagePage/hooks/use-current-package-circuit-json.ts +0 -46
  487. package/src/components/ViewPackagePage/hooks/use-mobile.tsx +0 -19
  488. package/src/components/ViewPackagePage/hooks/use-toast.tsx +0 -69
  489. package/src/components/ViewPackagePage/utils/fuzz-search.ts +0 -121
  490. package/src/components/ViewPackagePage/utils/get-license-content.ts +0 -119
  491. package/src/components/ViewPackagePage/utils/is-hidden-file.ts +0 -55
  492. package/src/components/ViewPackagePage/utils/is-package-file-important.ts +0 -35
  493. package/src/components/ViewPackagePage/utils/is-within-directory.ts +0 -32
  494. package/src/components/dialogs/GitHubRepositorySelector.tsx +0 -300
  495. package/src/components/dialogs/confirm-delete-package-dialog.tsx +0 -74
  496. package/src/components/dialogs/confirm-discard-changes-dialog.tsx +0 -73
  497. package/src/components/dialogs/create-use-dialog.tsx +0 -40
  498. package/src/components/dialogs/edit-description-dialog.tsx +0 -96
  499. package/src/components/dialogs/edit-package-details-dialog.tsx +0 -474
  500. package/src/components/dialogs/files-dialog.tsx +0 -70
  501. package/src/components/dialogs/import-component-dialog.tsx +0 -32
  502. package/src/components/dialogs/import-package-dialog.tsx +0 -90
  503. package/src/components/dialogs/new-package-save-prompt-dialog.tsx +0 -199
  504. package/src/components/dialogs/package-visibility-settings-dialog.tsx +0 -93
  505. package/src/components/dialogs/pcb-download-dialog.tsx +0 -113
  506. package/src/components/dialogs/rename-package-dialog.tsx +0 -86
  507. package/src/components/dialogs/rename-snippet-dialog.tsx +0 -81
  508. package/src/components/dialogs/update-package-description-dialog.tsx +0 -96
  509. package/src/components/dialogs/view-ts-files-dialog.tsx +0 -664
  510. package/src/components/organization/OrganizationCard.tsx +0 -202
  511. package/src/components/organization/OrganizationCardSkeleton.tsx +0 -55
  512. package/src/components/organization/OrganizationHeader.tsx +0 -140
  513. package/src/components/organization/OrganizationMembers.tsx +0 -117
  514. package/src/components/package-port/CodeAndPreview.tsx +0 -253
  515. package/src/components/package-port/CodeEditor.tsx +0 -866
  516. package/src/components/package-port/CodeEditorHeader.tsx +0 -427
  517. package/src/components/package-port/EditorNav.tsx +0 -606
  518. package/src/components/package-port/GlobalFindReplace.tsx +0 -681
  519. package/src/components/package-port/QuickOpen.tsx +0 -241
  520. package/src/components/preview/BuildsList.tsx +0 -237
  521. package/src/components/preview/ConnectedPackagesList.tsx +0 -229
  522. package/src/components/preview/ConnectedRepoOverview.tsx +0 -588
  523. package/src/components/preview/PackageReleasesDashboard.tsx +0 -228
  524. package/src/components/preview/index.tsx +0 -54
  525. package/src/components/ui/accordion.tsx +0 -55
  526. package/src/components/ui/alert-dialog.tsx +0 -139
  527. package/src/components/ui/alert.tsx +0 -59
  528. package/src/components/ui/aspect-ratio.tsx +0 -5
  529. package/src/components/ui/avatar.tsx +0 -48
  530. package/src/components/ui/badge.tsx +0 -36
  531. package/src/components/ui/breadcrumb.tsx +0 -118
  532. package/src/components/ui/button.tsx +0 -58
  533. package/src/components/ui/calendar.tsx +0 -73
  534. package/src/components/ui/card.tsx +0 -76
  535. package/src/components/ui/carousel.tsx +0 -260
  536. package/src/components/ui/chart.tsx +0 -363
  537. package/src/components/ui/checkbox.tsx +0 -28
  538. package/src/components/ui/collapsible.tsx +0 -9
  539. package/src/components/ui/combobox.tsx +0 -178
  540. package/src/components/ui/command.tsx +0 -151
  541. package/src/components/ui/context-menu.tsx +0 -202
  542. package/src/components/ui/dialog.tsx +0 -120
  543. package/src/components/ui/drawer.tsx +0 -116
  544. package/src/components/ui/dropdown-menu.tsx +0 -203
  545. package/src/components/ui/form.tsx +0 -182
  546. package/src/components/ui/hover-card.tsx +0 -27
  547. package/src/components/ui/input.tsx +0 -25
  548. package/src/components/ui/label.tsx +0 -24
  549. package/src/components/ui/menubar.tsx +0 -238
  550. package/src/components/ui/navigation-menu.tsx +0 -129
  551. package/src/components/ui/pagination.tsx +0 -121
  552. package/src/components/ui/popover.tsx +0 -31
  553. package/src/components/ui/progress.tsx +0 -26
  554. package/src/components/ui/radio-group.tsx +0 -42
  555. package/src/components/ui/resizable.tsx +0 -43
  556. package/src/components/ui/role-badge.tsx +0 -27
  557. package/src/components/ui/scroll-area.tsx +0 -46
  558. package/src/components/ui/searchable-select.tsx +0 -94
  559. package/src/components/ui/select.tsx +0 -162
  560. package/src/components/ui/separator.tsx +0 -29
  561. package/src/components/ui/sheet.tsx +0 -141
  562. package/src/components/ui/skeleton.tsx +0 -18
  563. package/src/components/ui/slider.tsx +0 -26
  564. package/src/components/ui/sonner.tsx +0 -30
  565. package/src/components/ui/switch.tsx +0 -27
  566. package/src/components/ui/table.tsx +0 -120
  567. package/src/components/ui/tabs.tsx +0 -53
  568. package/src/components/ui/textarea.tsx +0 -24
  569. package/src/components/ui/toast.tsx +0 -128
  570. package/src/components/ui/toaster.tsx +0 -1
  571. package/src/components/ui/toggle-group.tsx +0 -59
  572. package/src/components/ui/toggle.tsx +0 -43
  573. package/src/components/ui/tooltip.tsx +0 -28
  574. package/src/components/ui/tree-view.tsx +0 -563
  575. package/src/entry-server.tsx +0 -12
  576. package/src/hooks/use-account-balance.ts +0 -25
  577. package/src/hooks/use-add-org-member-mutation.ts +0 -51
  578. package/src/hooks/use-ai-api.ts +0 -35
  579. package/src/hooks/use-ai-review.ts +0 -31
  580. package/src/hooks/use-axios.ts +0 -20
  581. package/src/hooks/use-code-completion-ai-api.ts +0 -11
  582. package/src/hooks/use-copy-to-clipboard.ts +0 -26
  583. package/src/hooks/use-create-datasheet.ts +0 -30
  584. package/src/hooks/use-create-org-mutation.ts +0 -38
  585. package/src/hooks/use-create-package-files-mutation.ts +0 -76
  586. package/src/hooks/use-create-package-mutation.ts +0 -54
  587. package/src/hooks/use-create-package-release-mutation.ts +0 -107
  588. package/src/hooks/use-create-release-dialog.ts +0 -160
  589. package/src/hooks/use-create-snippet-mutation.ts +0 -65
  590. package/src/hooks/use-current-package-id.ts +0 -16
  591. package/src/hooks/use-current-package-info.ts +0 -32
  592. package/src/hooks/use-current-package-release.ts +0 -48
  593. package/src/hooks/use-current-snippet-id.ts +0 -78
  594. package/src/hooks/use-current-snippet.ts +0 -24
  595. package/src/hooks/use-datasheet.ts +0 -18
  596. package/src/hooks/use-debounce.ts +0 -17
  597. package/src/hooks/use-delete-package.ts +0 -45
  598. package/src/hooks/use-download-zip.ts +0 -50
  599. package/src/hooks/use-fork-package-mutation.ts +0 -61
  600. package/src/hooks/use-global-store.ts +0 -36
  601. package/src/hooks/use-hotkey.ts +0 -116
  602. package/src/hooks/use-hydration.ts +0 -30
  603. package/src/hooks/use-is-using-fake-api.ts +0 -3
  604. package/src/hooks/use-jlcpcb-component-import.tsx +0 -164
  605. package/src/hooks/use-list-org-members.ts +0 -32
  606. package/src/hooks/use-list-user-orgs.ts +0 -25
  607. package/src/hooks/use-now.ts +0 -12
  608. package/src/hooks/use-org-by-github-handle.ts +0 -24
  609. package/src/hooks/use-org.ts +0 -24
  610. package/src/hooks/use-organization.ts +0 -42
  611. package/src/hooks/use-package-as-snippet.ts +0 -81
  612. package/src/hooks/use-package-builds.ts +0 -91
  613. package/src/hooks/use-package-by-package-id.ts +0 -24
  614. package/src/hooks/use-package-by-package-name.ts +0 -29
  615. package/src/hooks/use-package-details-form.ts +0 -146
  616. package/src/hooks/use-package-files.ts +0 -122
  617. package/src/hooks/use-package-release-by-id-or-version.ts +0 -45
  618. package/src/hooks/use-package-release-images.ts +0 -105
  619. package/src/hooks/use-package-release.ts +0 -124
  620. package/src/hooks/use-package-stars.ts +0 -163
  621. package/src/hooks/use-package.ts +0 -24
  622. package/src/hooks/use-packages-base-api-url.ts +0 -3
  623. package/src/hooks/use-preview-images.ts +0 -78
  624. package/src/hooks/use-rebuild-package-release-mutation.ts +0 -41
  625. package/src/hooks/use-remove-org-member-mutation.ts +0 -32
  626. package/src/hooks/use-request-ai-review-mutation.ts +0 -54
  627. package/src/hooks/use-run-tsx/eval-compiled-js.ts +0 -9
  628. package/src/hooks/use-shiki-highlighter.ts +0 -33
  629. package/src/hooks/use-sign-in.ts +0 -24
  630. package/src/hooks/use-snippet-by-name.ts +0 -25
  631. package/src/hooks/use-snippet.ts +0 -24
  632. package/src/hooks/use-toast.tsx +0 -90
  633. package/src/hooks/use-update-ai-description-mutation.ts +0 -42
  634. package/src/hooks/use-update-org-mutation.ts +0 -41
  635. package/src/hooks/use-url-params.ts +0 -31
  636. package/src/hooks/use-warn-user-on-page-change.ts +0 -90
  637. package/src/hooks/useFileManagement.ts +0 -602
  638. package/src/hooks/useForkPackageMutation.ts +0 -50
  639. package/src/hooks/useForkSnippetMutation.ts +0 -53
  640. package/src/hooks/useOptimizedPackageFilesLoader.ts +0 -136
  641. package/src/hooks/usePackageFilesLoader.ts +0 -58
  642. package/src/hooks/useUpdatePackageFilesMutation.ts +0 -131
  643. package/src/hooks/useUpdatePackageMutation.ts +0 -63
  644. package/src/index.css +0 -108
  645. package/src/lib/__tests__/constants.test.ts +0 -66
  646. package/src/lib/base64ToBytes.ts +0 -5
  647. package/src/lib/bytesToBase64.ts +0 -4
  648. package/src/lib/codemirror/basic-setup.ts +0 -67
  649. package/src/lib/constants.ts +0 -23
  650. package/src/lib/decodeUrlHashToFsMap.ts +0 -17
  651. package/src/lib/decodeUrlHashToText.ts +0 -15
  652. package/src/lib/defaultCodeForBlankCode.tsx +0 -7
  653. package/src/lib/download-fns/createBlobURL.ts +0 -4
  654. package/src/lib/download-fns/download-assembly-svg.ts +0 -12
  655. package/src/lib/download-fns/download-circuit-json-fn.ts +0 -12
  656. package/src/lib/download-fns/download-circuit-png.ts +0 -96
  657. package/src/lib/download-fns/download-dsn-file-fn.ts +0 -12
  658. package/src/lib/download-fns/download-fabrication-files.ts +0 -233
  659. package/src/lib/download-fns/download-gltf-from-circuit-json.ts +0 -44
  660. package/src/lib/download-fns/download-gltf.ts +0 -43
  661. package/src/lib/download-fns/download-kicad-files.ts +0 -38
  662. package/src/lib/download-fns/download-pcb-svg.ts +0 -35
  663. package/src/lib/download-fns/download-png-utils.ts +0 -31
  664. package/src/lib/download-fns/download-readable-netlist.ts +0 -12
  665. package/src/lib/download-fns/download-schematic-svg.ts +0 -12
  666. package/src/lib/download-fns/download-simple-route-json.ts +0 -17
  667. package/src/lib/download-fns/download-spice-file.ts +0 -13
  668. package/src/lib/download-fns/download-step.ts +0 -12
  669. package/src/lib/encodeFsMapToUrlHash.ts +0 -13
  670. package/src/lib/encodeTextToUrlHash.ts +0 -17
  671. package/src/lib/get-snippet-template.ts +0 -26
  672. package/src/lib/getLicenseFromLicenseContent.ts +0 -67
  673. package/src/lib/handleManualEditsImport.tsx +0 -65
  674. package/src/lib/handleManualEditsImportWithSupportForMultipleFiles.ts +0 -67
  675. package/src/lib/normalize-svg-for-tile.ts +0 -50
  676. package/src/lib/populate-query-cache-with-ssr-data.ts +0 -53
  677. package/src/lib/posthog.ts +0 -17
  678. package/src/lib/react-query-api-failure-tracking.ts +0 -148
  679. package/src/lib/sentry.ts +0 -14
  680. package/src/lib/templates/blank-3d-model-template.ts +0 -12
  681. package/src/lib/templates/blank-circuit-board-template.ts +0 -20
  682. package/src/lib/templates/blank-footprint-template.ts +0 -29
  683. package/src/lib/templates/blank-package-template.ts +0 -21
  684. package/src/lib/templates/blinking-led-board-template.ts +0 -64
  685. package/src/lib/templates/usb-c-led-flashlight-template.ts +0 -22
  686. package/src/lib/ts-lib-cache.ts +0 -162
  687. package/src/lib/types.ts +0 -31
  688. package/src/lib/utils/checkIfManualEditsImported.ts +0 -20
  689. package/src/lib/utils/findTargetFile.ts +0 -97
  690. package/src/lib/utils/formatTimeAgo.ts +0 -10
  691. package/src/lib/utils/getPackagePreviewImageUrl.ts +0 -15
  692. package/src/lib/utils/index.ts +0 -6
  693. package/src/lib/utils/isComponentExported.ts +0 -10
  694. package/src/lib/utils/isUuid.ts +0 -5
  695. package/src/lib/utils/isValidFileName.ts +0 -17
  696. package/src/lib/utils/load-prettier.ts +0 -23
  697. package/src/lib/utils/member-role.tsx +0 -61
  698. package/src/lib/utils/package-utils.ts +0 -7
  699. package/src/lib/utils/parseJsonOrNull.ts +0 -8
  700. package/src/lib/utils/pcbManualEditEventHandler.ts +0 -156
  701. package/src/lib/utils/resolveRelativePath.ts +0 -40
  702. package/src/lib/utils/timeAgo.ts +0 -20
  703. package/src/lib/utils/toastManualEditConflicts.tsx +0 -39
  704. package/src/lib/utils/transformFilesToTreeData.tsx +0 -195
  705. package/src/main.tsx +0 -15
  706. package/src/pages/404.tsx +0 -23
  707. package/src/pages/authorize.tsx +0 -208
  708. package/src/pages/create-organization.tsx +0 -169
  709. package/src/pages/dashboard.tsx +0 -254
  710. package/src/pages/datasheet.tsx +0 -198
  711. package/src/pages/datasheets.tsx +0 -148
  712. package/src/pages/dev-login.tsx +0 -68
  713. package/src/pages/editor.tsx +0 -54
  714. package/src/pages/landing.tsx +0 -237
  715. package/src/pages/latest.tsx +0 -145
  716. package/src/pages/my-orders.tsx +0 -54
  717. package/src/pages/organization-profile.tsx +0 -197
  718. package/src/pages/organization-settings.tsx +0 -571
  719. package/src/pages/package-editor.tsx +0 -60
  720. package/src/pages/preview-release.tsx +0 -209
  721. package/src/pages/quickstart.tsx +0 -258
  722. package/src/pages/release-builds.tsx +0 -99
  723. package/src/pages/release-detail.tsx +0 -211
  724. package/src/pages/releases.tsx +0 -55
  725. package/src/pages/search.tsx +0 -288
  726. package/src/pages/settings-redirect.tsx +0 -44
  727. package/src/pages/trending.tsx +0 -201
  728. package/src/pages/user-profile.tsx +0 -330
  729. package/src/pages/user-settings.tsx +0 -161
  730. package/src/pages/view-package.tsx +0 -90
  731. package/src/types/package.ts +0 -4
  732. package/src/vite-env.d.ts +0 -1
  733. package/tailwind.config.js +0 -47
  734. package/tsconfig.json +0 -30
  735. package/vercel.json +0 -50
  736. package/vite.config.ts +0 -236
  737. package/winterspec.config.ts +0 -6
package/bunfig.toml DELETED
@@ -1,3 +0,0 @@
1
- [test]
2
- root = "./bun-tests"
3
- preload = ["./bun-tests/fake-snippets-api/fixtures/preload.ts"]
package/components.json DELETED
@@ -1,20 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema.json",
3
- "style": "new-york",
4
- "rsc": false,
5
- "tsx": true,
6
- "tailwind": {
7
- "config": "tailwind.config.js",
8
- "css": "src/index.css",
9
- "baseColor": "slate",
10
- "cssVariables": false,
11
- "prefix": ""
12
- },
13
- "aliases": {
14
- "components": "@/components",
15
- "utils": "@/lib/utils",
16
- "ui": "@/components/ui",
17
- "lib": "@/lib",
18
- "hooks": "@/hooks"
19
- }
20
- }
@@ -1 +0,0 @@
1
- import{j as o}from"./index-BQPj88OW.js";import{H as r,a as s}from"./Header2-CrMDmo3P.js";import{F as i}from"./Footer-DU-HdqGk.js";import{N as n}from"./NotFound-DaXtEPsC.js";import"./Analytics-DIw7l2gi.js";import"./use-packages-base-api-url-DA1hucM7.js";function d({heading:e="Page Not Found",subtitle:t="The page you're looking for doesn't exist."}){return o.jsxs("div",{className:"flex min-h-screen flex-col",children:[o.jsxs(r,{children:[o.jsxs("title",{children:["404 - ",e," | tscircuit"]}),o.jsx("meta",{name:"description",content:t})]}),o.jsx(s,{}),o.jsx(n,{heading:e}),o.jsx(i,{})]})}export{d as NotFoundPage,d as default};
@@ -1,84 +0,0 @@
1
- import{u as J,b as l,bQ as tt,z as G,j as e,k as O,bR as at,v as re,h as ne,aC as V,bS as _,a3 as xe,a4 as be,a5 as st,a6 as ye,a7 as we,a8 as rt,a9 as nt,B as te,H as ke,I as pe,m as ee,K as W,q as ot,bT as lt,Y as it,Z as oe,aq as ct,ar as ae,n as L,bU as dt,bV as ut,bW as pt,bX as ve,bY as Ne,bZ as je,b_ as mt,b$ as Ce,bC as ht,c0 as _e,c1 as ft,c2 as Se,c3 as $e,aT as gt,c4 as Ie,c5 as xt,c6 as Ee,l as B,al as bt,c7 as yt}from"./index-BQPj88OW.js";import{u as wt}from"./use-packages-base-api-url-DA1hucM7.js";const U=()=>{const t=wt(),s=J(a=>a.session);return l.useMemo(()=>tt.create({baseURL:t,headers:s?{Authorization:`Bearer ${s==null?void 0:s.token}`}:{}}),[s==null?void 0:s.token])},kt=(t,s,a={},r={})=>{const i=l.useRef(s),{preventDefault:d=!0,stopPropagation:u=!1,target:c=document}=r;l.useEffect(()=>{i.current=s},[s]),l.useEffect(()=>{if(!c)return;const x=m=>{const n=m.key.toLowerCase()===t.toLowerCase(),v=a.ctrl?m.ctrlKey:!0,w=a.alt?m.altKey:!0,N=a.shift?m.shiftKey:!0,b=a.meta?m.metaKey||m.ctrlKey:!0;n&&v&&w&&N&&b&&(d&&m.preventDefault(),u&&m.stopPropagation(),i.current(m))};return c.addEventListener("keydown",x),()=>c.removeEventListener("keydown",x)},[t,a.ctrl,a.alt,a.shift,a.meta,d,u,c])},vt=(t,s,a={})=>{const r={},i=t.toLowerCase().split("+").map(c=>c.trim()),d=i[i.length-1];i.slice(0,-1).forEach(c=>{switch(c){case"ctrl":r.ctrl=!0;break;case"cmd":case"meta":r.meta=!0;break;case"alt":r.alt=!0;break;case"shift":r.shift=!0;break}}),kt(d,s,r,a)};function Nt({title:t,description:s,variant:a,t:r}){return e.jsxs("div",{className:`rounded-md border p-4 shadow-lg transition-all ${r.visible?"animate-in fade-in slide-in-from-top-full":"animate-out fade-out slide-out-to-right-full"} ${a==="destructive"?"border-red-500 bg-red-500 text-slate-50":"border-slate-200 bg-white text-slate-950 dark:bg-slate-950 dark:text-slate-50"}`,children:[t&&e.jsx("div",{className:"text-sm font-semibold",children:t}),s&&e.jsx("div",{className:"text-sm opacity-90",children:s})]})}const jt=({duration:t,description:s,variant:a="default",title:r})=>s?G.custom(i=>e.jsx(Nt,{title:r,description:s,variant:a,t:i}),{duration:t}):a==="destructive"?G.error(e.jsx(e.Fragment,{children:r}),{duration:t}):G(e.jsx(e.Fragment,{children:r}),{duration:t});function le(){return{toast:jt,dismiss:G.dismiss,toastLibrary:G}}function Ct(){const{toast:t}=le();return s=>{t({title:"Not Implemented",description:e.jsxs("div",{children:["The ",s," feature is not implemented yet. Help us out!"," ",e.jsx("a",{className:"text-blue-500 hover:underline font-semibold",href:"https://github.com/tscircuit/tscircuit.com",children:"Check out our Github"})]})})}}const X=(t,s)=>{if(!t)return{score:0,matches:[]};const r=(b=>b.toLowerCase().split(" ").join(""))(t),i=s.toLowerCase(),d=[];let u=0,c=0,x=0,m=0;const n=t.toLowerCase().trim().split(/\s+/);if(n.length>1){let b=0,I=n[0],C=0;for(let j=0;j<i.length&&b<n.length;j++){const E=i[j],h=I[C];E===h?(d.push(j),C++,x++,c+=1+x*.5,(j===0||/[/\-_.]/.test(s[j-1]))&&(c+=2),C>=I.length&&(b++,m+=3,b<n.length&&(I=n[b],C=0,x=0))):C>0&&/[/\-_.]/.test(E)&&b<n.length-1?(b++,b<n.length&&(I=n[b],C=0,x=0,E===I[0]&&(d.push(j),C=1,c+=2))):x=0}if(b<n.length||b===n.length-1&&C<I.length)return{score:-1,matches:[]};c+=m}else{for(let b=0;b<i.length&&u<r.length;b++)i[b]===r[u]?(d.push(b),u++,x++,c+=1+x*.5,(b===0||/[/\-_.]/.test(s[b-1]))&&(c+=2)):x=0;if(u!==r.length)return{score:-1,matches:[]}}c+=Math.max(0,100-s.length)*.1;const w=s.split("/").pop()||s,N=t.replace(/\s+/g,"");return w.toLowerCase().includes(N.toLowerCase())&&(c+=5),{score:c,matches:d}},_t=t=>()=>{const[s,a]=l.useState(!1),[r,i]=l.useState({});return l.useMemo(()=>({openDialog:d=>{d&&i(d),a(!0)},closeDialog:()=>{a(!1),i({})},Dialog:d=>e.jsx(t,{...d,...r,open:s,onOpenChange:a}),open:s}),[s,r])};/**
2
- * @license lucide-react v0.488.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const St=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],Z=O("arrow-right",St);/**
7
- * @license lucide-react v0.488.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const $t=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],It=O("chevron-down",$t);/**
12
- * @license lucide-react v0.488.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */const Et=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]],Lt=O("clock",Et);/**
17
- * @license lucide-react v0.488.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */const Pt=[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]],ja=O("menu",Pt);/**
22
- * @license lucide-react v0.488.0 - ISC
23
- *
24
- * This source code is licensed under the ISC license.
25
- * See the LICENSE file in the root directory of this source tree.
26
- */const Dt=[["path",{d:"M3 9h18v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9Z",key:"1ront0"}],["path",{d:"m3 9 2.45-4.9A2 2 0 0 1 7.24 3h9.52a2 2 0 0 1 1.8 1.1L21 9",key:"19h2x1"}],["path",{d:"M12 3v6",key:"1holv5"}]],me=O("package-2",Dt);/**
27
- * @license lucide-react v0.488.0 - ISC
28
- *
29
- * This source code is licensed under the ISC license.
30
- * See the LICENSE file in the root directory of this source tree.
31
- */const Mt=[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]],he=O("sparkles",Mt);/**
32
- * @license lucide-react v0.488.0 - ISC
33
- *
34
- * This source code is licensed under the ISC license.
35
- * See the LICENSE file in the root directory of this source tree.
36
- */const At=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],Rt=O("star",At);/**
37
- * @license lucide-react v0.488.0 - ISC
38
- *
39
- * This source code is licensed under the ISC license.
40
- * See the LICENSE file in the root directory of this source tree.
41
- */const Tt=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],Le=O("user",Tt);/**
42
- * @license lucide-react v0.488.0 - ISC
43
- *
44
- * This source code is licensed under the ISC license.
45
- * See the LICENSE file in the root directory of this source tree.
46
- */const Ot=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Ca=O("x",Ot);/**
47
- * @license lucide-react v0.488.0 - ISC
48
- *
49
- * This source code is licensed under the ISC license.
50
- * See the LICENSE file in the root directory of this source tree.
51
- */const Bt=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],Ft=O("zap",Bt),Jt=({open:t,onOpenChange:s,...a})=>e.jsx(at,{isOpen:t,onClose:()=>s(!1),...a}),zt=_t(Jt),Pe=({onSuccess:t}={})=>{const s=U(),a=J(r=>r.session);return re(["createPackage"],async({name:r,description:i,is_private:d,is_unlisted:u,org_id:c})=>{if(!a)throw new Error("No session");const{data:{package:x}}=await s.post("/packages/create",{name:r,description:i,is_private:d,is_unlisted:u,org_id:c});if(!x)throw new Error("Failed to create package");return x},{onSuccess:r=>{t==null||t(r)},onError:r=>{console.error("Error creating package:",r)}})},De=({onSuccess:t}={})=>{const s=U();return re(["createPackageRelease"],async({package_id:a,version:r,is_latest:i=!0,commit_sha:d,package_name_with_version:u})=>{var n,v;if(!u&&(!a||!r))throw new Error("Must provide either package_id + version or package_name_with_version");let c=r,x=u;if(u&&!r){const[w,N]=u.split("@");c=N,x=w}else if(u){const[w]=u.split("@");x=w}(!c||!/[0-9]/.test(c))&&(c="0.0.1");const m=x&&`${x}@${c}`;try{const{data:{package_release:w}}=await s.post("/package_releases/create",{package_id:a,version:c,is_latest:i,commit_sha:d,package_name_with_version:m});if(!w)throw new Error("Failed to create package release");return w}catch(w){if(w.status===400&&((v=(n=w.data)==null?void 0:n.error)==null?void 0:v.error_code)==="version_already_exists"&&m){await s.post("/package_releases/update",{package_name_with_version:m,is_latest:i,commit_sha:d});const{data:{package_release:N}}=await s.post("/package_releases/get",{package_name_with_version:m});if(!N)throw new Error("Failed to update package release");return N}throw w}},{onSuccess:a=>{t==null||t(a)},onError:a=>{console.error("Error creating package release:",a)}})},Me=({onSuccess:t}={})=>{const s=U();return re(["createPackageFiles"],async({file_path:a,content_text:r,content_base64:i,content_mimetype:d,package_release_id:u,package_name_with_version:c,is_release_tarball:x=!1,npm_pack_output:m})=>{if(!r&&!i||r&&i)throw new Error("Must provide either content_text or content_base64, but not both");if(!u&&!c)throw new Error("Must provide either package_release_id or package_name_with_version");const{data:{package_file:n}}=await s.post("/package_files/create",{file_path:a,content_text:r,content_base64:i,content_mimetype:d,package_release_id:u,package_name_with_version:c,is_release_tarball:x,npm_pack_output:m});if(!n)throw new Error("Failed to create package file");return n},{onSuccess:a=>{t==null||t(a)},onError:a=>{console.error("Error creating package file:",a)}})},Ut=()=>{const{toastLibrary:t}=le(),s=J(m=>m.session),[,a]=ne(),r=U(),i=Pe(),d=De(),u=Me(),c=l.useCallback(async({result:m,tsx:n})=>{if(!s)throw new Error("You must be logged in to import from JLCPCB");const v=m.component.partNumber||"component",N=(p=>p.replace(/^@/,"").trim().replace(/\s+/g,"-").replace(/[^a-zA-Z0-9-_/]/g,"-").replace(/--+/g,"-").replace(/-+$/g,"").replace(/^-+/g,"")||"component")(v),b=`${s.github_username}/${N}`,I=async()=>{var p;try{const{data:y}=await r.post("/packages/get",{name:b});return y.package}catch(y){if((((p=y==null?void 0:y.response)==null?void 0:p.status)||(y==null?void 0:y.status))===404)return null;throw y}},C=await I();if(C)return a(`/editor?package_id=${C.package_id}`),{partNumber:v,packageId:C.package_id,existing:!0};const j=m.component.description||`Generated from JLCPCB part number ${v}`;let E;try{E=await i.mutateAsync({name:b,description:j})}catch(p){const y=await I();if(y)return a(`/editor?package_id=${y.package_id}`),{partNumber:v,packageId:y.package_id,existing:!0};throw p}const h=await d.mutateAsync({package_id:E.package_id,version:"0.1.0",is_latest:!0});return await u.mutateAsync({file_path:"index.tsx",content_text:n,package_release_id:h.package_release_id}),a(`/editor?package_id=${E.package_id}`),{partNumber:v,packageId:E.package_id,existing:!1}},[u,i,d,r,a,s]);return{importComponent:l.useCallback(async m=>{const n=c(m);t.promise(n,{loading:"Importing component...",success:({partNumber:v,existing:w})=>e.jsx("p",{children:w?`Component ${v} already exists. Opening package in the editor.`:`Component ${v} imported successfully. Opening package in the editor.`}),error:v=>e.jsx("p",{children:v instanceof Error?v.message:"Failed to import component"})}),await n},[c,t])}},_a=(t,s)=>{const a=Ht(t,s);window.open(a,"_blank")},Ht=(t,s)=>{const a=`[${t}] Failed to import from JLCPCB`,r=`I tried to import the part number ${t} from JLCPCB, but it failed. Here's the error I got:
52
- \`\`\`
53
- ${s}
54
- \`\`\`
55
-
56
- Could be an issue in \`fetchEasyEDAComponent\` or \`convertRawEasyEdaToTs\``;return`https://github.com/tscircuit/easyeda-converter/issues/new?title=${encodeURIComponent(a)}&body=${encodeURIComponent(r)}&labels=${encodeURIComponent("snippets,good first issue")}`};var Kt=t=>{var x,m;const s=V(t).pcb_hole.list(),a=V(t).pcb_plated_hole.list(),r=V(t).pcb_smtpad.list(),i=V(t).pcb_silkscreen_path.list(),d=V(t).pcb_fabrication_note_path.list(),u=V(t).pcb_silkscreen_text.list(),c=[];for(const n of s)n.hole_shape==="circle"?c.push(`<hole pcbX="${_(n.x)}" pcbY="${_(n.y)}" diameter="${_(n.hole_diameter)}" />`):n.hole_shape==="oval"&&console.warn("Unhandled oval hole in conversion (needs implementation)");for(const n of a)n.shape==="oval"||n.shape==="pill"?c.push(`<platedhole portHints={${JSON.stringify(n.port_hints)}} pcbX="${_(n.x)}" pcbY="${_(n.y)}" outerHeight="${_(n.outer_height)}" outerWidth="${_(n.outer_width)}" holeHeight="${_(n.hole_height)}" holeWidth="${_(n.hole_width)}" height="${_(n.hole_height)}" shape="${n.shape}" />`):n.shape==="circle"&&c.push(`<platedhole portHints={${JSON.stringify(n.port_hints)}} pcbX="${_(n.x)}" pcbY="${_(n.y)}" outerDiameter="${_(n.outer_diameter)}" holeDiameter="${_(n.hole_diameter)}" shape="circle" />`);for(const n of r)n.shape==="circle"?c.push(`<smtpad portHints={${JSON.stringify(n.port_hints)}} pcbX="${_(n.x)}" pcbY="${_(n.y)}" radius="${_(n.radius)}" shape="circle" />`):n.shape==="rect"&&c.push(`<smtpad portHints={${JSON.stringify(n.port_hints)}} pcbX="${_(n.x)}" pcbY="${_(n.y)}" width="${_(n.width)}" height="${_(n.height)}" shape="rect" />`);for(const n of i)c.push(`<silkscreenpath route={${JSON.stringify(n.route)}} />`);for(const n of d)c.push(`<silkscreenpath route={${JSON.stringify(n.route)}} />`);for(const n of u){const v=((x=n.anchor_position)==null?void 0:x.x)??0,w=((m=n.anchor_position)==null?void 0:m.y)??0,N=n.anchor_alignment,b=n.font_size,C=String(n.text??"").replace(/"/g,'\\"');c.push(`<silkscreentext pcbX={${v}} pcbY={${w}} anchorAlignment="${N}" fontSize={${b}} text="${C}" />`)}return`
57
- <footprint>
58
- ${c.join(`
59
- `)}
60
- </footprint>
61
- `.trim()},qt=({pinLabels:t,componentName:s,objUrl:a,circuitJson:r,supplierPartNumbers:i,manufacturerPartNumber:d})=>{const u=Kt(r);return`
62
- import { type ChipProps } from "tscircuit"
63
- ${t?`const pinLabels = ${JSON.stringify(t,null," ")} as const
64
- `:""}export const ${s} = (props: ChipProps${t?"<typeof pinLabels>":""}) => (
65
- <chip
66
- footprint={${u}}
67
- ${t?"pinLabels={pinLabels}":""}
68
- ${a?`cadModel={{
69
- objUrl: "${a}",
70
- rotationOffset: { x: 0, y: 0, z: 0 },
71
- positionOffset: { x: 0, y: 0, z: 0 },
72
- }}`:""}
73
- ${i?`supplierPartNumbers={${JSON.stringify(i,null," ")}}`:""}
74
- ${d?`manufacturerPartNumber="${d}"`:""}
75
- {...props}
76
- />
77
- )
78
- `.replace(/\n\s*\n/g,`
79
- `).trim()},Vt=(t,s)=>qt({circuitJson:t,...s});const Yt=t=>{try{return JSON.parse(t),!0}catch{return!1}};function Wt({open:t,onOpenChange:s}){const[a,r]=l.useState(""),[i,d]=l.useState(null),[u,c]=l.useState(!1),[x,m]=l.useState(null);J(p=>p.session);const{toast:n}=le();U();const[,v]=ne(),w=J(p=>!!p.session),N=Pe(),{mutate:b}=De({onSuccess:()=>{n({title:"Package released",description:"Your package has been released successfully."})}}),I=Me({onSuccess:()=>{n({title:"Package files created",description:"Your package files have been created successfully."})}}),C=async p=>{var A;const y=(A=p.target.files)==null?void 0:A[0];if(y)try{const T=await y.text();JSON.parse(T),d(y),m(null)}catch{m("Please select a valid JSON file that can be parsed.")}else m("Please select a file.")},j=async()=>{let p;const y=async P=>{try{return JSON.parse(P)}catch{throw new Error("Invalid JSON format.")}},A=P=>{n({title:"Import Failed",description:P,variant:"destructive"}),c(!1)},T=P=>{n({title:"Success",description:P})};try{if(i){const S=await i.text();p=await y(S)}else if(Yt(a))c(!0),m(null),p=await y(a);else{A("Please provide a valid JSON content or file.");return}const P=Vt(p,{componentName:"Component"});console.info(P),await N.mutateAsync({description:"Imported from Circuit JSON"},{onSuccess:S=>{T("Package has been created successfully."),b({package_name_with_version:`${S.name}@latest`},{onSuccess:R=>{I.mutateAsync({file_path:"index.tsx",content_text:P,package_release_id:R.package_release_id}).then(()=>{v(`/editor?package_id=${S.package_id}`)})},onError:R=>{m(R),A("Failed to create package release.")}})},onError:S=>{m(S),A("Failed to create package.")},onSettled:()=>{c(!1),s(!1)}})}catch(P){console.error("Error importing Circuit Json:",P),A("The Circuit JSON appears to be invalid or malformed. Please check the format and try again.")}finally{c(!1)}},E=p=>{(p.ctrlKey||p.metaKey)&&p.key==="Enter"&&(p.preventDefault(),!u&&w&&(a.trim()||i)&&j())},h=p=>{p.key==="Enter"&&!p.ctrlKey&&!p.metaKey&&p.target!==document.querySelector("textarea")&&(p.preventDefault(),!u&&w&&(a.trim()||i)&&j())};return e.jsx(xe,{open:t,onOpenChange:s,children:e.jsxs(be,{onKeyDown:h,children:[e.jsxs(st,{children:[e.jsx(ye,{children:"Import Circuit JSON"}),e.jsx(we,{children:"Use this dialog to import a Circuit JSON file or paste the JSON content directly."})]}),e.jsxs("div",{className:"pb-4",children:[e.jsx(rt,{className:"mt-3",placeholder:"Paste the Circuit JSON.",value:a,onChange:p=>r(p.target.value),onKeyDown:E,disabled:!!i}),e.jsxs("div",{className:"mt-4 flex flex-col gap-2",children:[e.jsx("label",{htmlFor:"file-input",className:"block text-sm font-medium text-gray-700",children:"Upload JSON File"}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("input",{id:"file-input",type:"file",accept:"application/json",onChange:C,className:"hidden"}),e.jsx("label",{htmlFor:"file-input",className:"px-4 py-2 bg-slate-900 text-slate-50 rounded-lg shadow cursor-pointer hover:bg-slate-900/90 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-50/90 transition-all duration-200",children:"Choose File"})]}),i&&e.jsxs("p",{className:"text-sm text-gray-600",children:[e.jsx("span",{className:"font-medium text-gray-900",children:"Selected file:"})," ",i.name]})]}),x&&e.jsx("p",{className:"bg-red-100 p-2 mt-2 pre-wrap",children:x})]}),e.jsx(nt,{children:e.jsx(te,{onClick:j,disabled:u||!w,children:w?u?"Importing...":"Import":"Must be logged in for JSON import"})})]})})}const Sa=()=>{const[t,s]=l.useState(!1),[a,r]=l.useState(""),[i,d]=l.useState(!1),[u,c]=l.useState(0),x=Ct(),m=U(),{Dialog:n,openDialog:v}=zt(),{importComponent:w}=Ut(),N=J(o=>o.session),b=N==null?void 0:N.github_username,I=l.useMemo(()=>N!=null&&N.token?{Authorization:`Bearer ${N.token}`}:void 0,[N==null?void 0:N.token]),C=l.useCallback(async o=>{await w(o)},[w]),j=l.useRef(null),E=l.useMemo(()=>[{name:"Blank Circuit Board",type:"board",icon:e.jsx(ke,{className:"w-4 h-4 text-green-500"})},{name:"Blank Circuit Module",type:"package",icon:e.jsx(me,{className:"w-4 h-4 text-blue-500"})}],[]),h=l.useMemo(()=>[{name:"Blinking LED Board",type:"board",icon:e.jsx(he,{className:"w-4 h-4 text-yellow-500"})},{name:"USB-C LED Flashlight",type:"board",icon:e.jsx(he,{className:"w-4 h-4 text-yellow-500"})}],[]),p=l.useMemo(()=>[{name:"Circuit JSON",type:"package",special:!0,icon:e.jsx(pe,{className:"w-4 h-4 text-red-500"})},{name:"JLCPCB Component",type:"package",special:!0,icon:e.jsx(pe,{className:"w-4 h-4 text-red-500"})}],[]),{data:y=[],isLoading:A}=ee(["packageSearch",a],async()=>{if(!a)return[];try{const{data:o}=await m.post("/packages/search",{query:a});return o.packages||[]}catch(o){return console.warn("Failed to fetch packages:",o),[]}},{enabled:!!a,retry:!1,refetchOnWindowFocus:!1}),{data:T=[],isLoading:P}=ee(["accountSearch",a],async()=>{if(!a)return[];try{const{data:o}=await m.post("/accounts/search",{query:a,limit:5});return o.accounts||[]}catch(o){return console.warn("Failed to fetch accounts:",o),[]}},{enabled:!!a&&!!b,retry:!1,refetchOnWindowFocus:!1}),S=l.useMemo(()=>!a||!y.length?[]:y.map(o=>{const{score:g,matches:k}=X(a,o.name);return{...o,score:g,matches:k}}).filter(o=>o.score>=0).sort((o,g)=>g.score-o.score).slice(0,6),[y,a]),R=l.useMemo(()=>!a||!T.length?[]:T.map(o=>{const{score:g,matches:k}=X(a,o.github_username);return{...o,score:g,matches:k}}).filter(o=>o.score>=0).sort((o,g)=>g.score-o.score).slice(0,5),[T,a]),{data:z=[]}=ee(["cmdKMenuPackages",b],async()=>{if(!b)return[];try{return(await m.post("/packages/list",{owner_github_username:b,limit:5})).data.packages||[]}catch(o){return console.warn("Failed to fetch recent packages:",o),[]}},{enabled:!!b&&!a,retry:!1,refetchOnWindowFocus:!1,refetchOnMount:!1,cacheTime:1440*60*1e3}),D=l.useMemo(()=>{if(!a)return{blankTemplates:E,templates:h,importOptions:p};const o=E.map(f=>{const{score:$,matches:M}=X(a,f.name);return{...f,score:$,matches:M}}).filter(f=>f.score>=0).sort((f,$)=>$.score-f.score),g=h.map(f=>{const{score:$,matches:M}=X(a,f.name);return{...f,score:$,matches:M}}).filter(f=>f.score>=0).sort((f,$)=>$.score-f.score),k=p.map(f=>{const{score:$,matches:M}=X(a,`Import ${f.name}`);return{...f,score:$,matches:M}}).filter(f=>f.score>=0).sort((f,$)=>$.score-f.score);return{blankTemplates:o,templates:g,importOptions:k}},[a,E,h,p]),H=l.useMemo(()=>{const o=[];return a&&S.length>0&&S.forEach(g=>{o.push({type:"package",item:g})}),a&&R.length>0&&R.forEach(g=>{o.push({type:"account",item:g})}),!a&&z.length>0&&z.slice(0,6).forEach(g=>{o.push({type:"recent",item:g})}),D.blankTemplates.forEach(g=>{o.push({type:"blank",item:g,disabled:g.disabled})}),D.templates.forEach(g=>{o.push({type:"template",item:g})}),D.importOptions.forEach(g=>{o.push({type:"import",item:g})}),o},[a,S,R,z,D]);vt("cmd+k",()=>{s(o=>!o)}),l.useEffect(()=>{c(0)},[H.length]),l.useEffect(()=>{j.current&&j.current.scrollIntoView({behavior:"smooth",block:"nearest"})},[u]);const Ze=l.useCallback(o=>{o.key==="ArrowDown"?(o.preventDefault(),o.stopPropagation(),c(g=>Math.min(g+1,H.length-1))):o.key==="ArrowUp"?(o.preventDefault(),o.stopPropagation(),c(g=>Math.max(g-1,0))):o.key==="Enter"?(o.preventDefault(),o.stopPropagation(),H[u]&&!H[u].disabled&&K(H[u])):o.key==="Escape"&&(o.preventDefault(),o.stopPropagation(),s(!1))},[u,H.length]),K=l.useCallback(o=>{const{type:g,item:k}=o;switch(g){case"package":case"recent":window.location.href=`/${k.name}`,s(!1);break;case"account":window.location.href=`/${k.github_username}`,s(!1);break;case"blank":case"template":k.disabled||(window.location.href=`/editor?template=${k.name.toLowerCase().replace(/ /g,"-")}`,s(!1));break;case"import":if(k.special)switch(k.name){case"Circuit JSON":s(!1),d(!0);break;case"JLCPCB Component":s(!1),v();break}else s(!1),x(`${k.name} Import`);break}},[x]),Y=l.useCallback((o,g)=>!a||!o.matches?g:g.split("").map((f,$)=>e.jsx("span",{className:o.matches.includes($)?"bg-blue-200":"",children:f},$)),[a]),q=l.useCallback((o,g)=>{const{type:k,item:f,disabled:$}=o,M=g===u,Q=`
80
- group flex items-center justify-between px-2 sm:px-3 py-2 rounded-md cursor-pointer
81
- transition-all duration-150 border border-transparent text-sm w-full
82
- ${M?"bg-blue-50 border-blue-200":"hover:bg-gray-50"}
83
- ${$?"opacity-50 cursor-not-allowed":""}
84
- `;switch(k){case"package":case"recent":return e.jsxs("div",{ref:M?j:null,className:Q,onClick:()=>!$&&K(o),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1 overflow-hidden",children:[e.jsx(me,{className:"w-4 h-4 text-blue-500 flex-shrink-0"}),e.jsxs("div",{className:"flex flex-col min-w-0 flex-1 overflow-hidden",children:[e.jsx("span",{className:"font-medium text-gray-900 truncate max-w-full",children:k==="package"?Y(f,f.name):f.name}),f.description&&e.jsx("span",{className:"text-xs text-gray-500 truncate max-w-full",children:f.description}),k==="recent"&&e.jsx("span",{className:"text-xs text-gray-400 hidden sm:block truncate",children:new Date(f.updated_at).toLocaleDateString()})]})]}),e.jsxs("div",{className:"flex items-center gap-1 sm:gap-2 flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-1 text-gray-500",children:[e.jsx(Rt,{className:"w-3 h-3 fill-yellow-400 text-yellow-400"}),e.jsx("span",{className:"text-xs",children:f.star_count??0})]}),e.jsx("span",{className:"text-xs text-gray-500 bg-gray-100 px-1.5 py-0.5 rounded hidden sm:inline",children:"package"}),M&&e.jsx(Z,{className:"w-3 h-3 text-gray-400"})]})]},`${k}-${f.package_id}`);case"account":return e.jsxs("div",{ref:M?j:null,className:Q,onClick:()=>!$&&K(o),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[e.jsx("img",{src:`https://github.com/${f.github_username}.png`,alt:`${f.github_username} avatar`,className:"w-6 h-6 rounded-full flex-shrink-0",onError:et=>{var ue;const de=et.target;de.style.display="none",(ue=de.nextElementSibling)==null||ue.classList.remove("hidden")}}),e.jsx(Le,{className:"w-6 h-6 text-gray-400 flex-shrink-0 hidden"}),e.jsx("div",{className:"flex flex-col min-w-0 flex-1",children:e.jsx("span",{className:"font-medium text-gray-900 truncate",children:Y(f,f.github_username)})})]}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[e.jsx("span",{className:"text-xs text-gray-500 bg-gray-100 px-1.5 py-0.5 rounded hidden sm:inline",children:"user"}),M&&e.jsx(Z,{className:"w-3 h-3 text-gray-400"})]})]},`account-${f.account_id}`);case"blank":case"template":return e.jsxs("div",{ref:M?j:null,className:Q,onClick:()=>!$&&K(o),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[f.icon,e.jsx("span",{className:"font-medium text-gray-900 truncate",children:Y(f,f.name)})]}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[e.jsx("span",{className:"text-xs text-gray-500 bg-gray-100 px-1.5 py-0.5 rounded hidden sm:inline",children:f.type}),M&&e.jsx(Z,{className:"w-3 h-3 text-gray-400"})]})]},`${k}-${f.name}`);case"import":return e.jsxs("div",{ref:M?j:null,className:Q,onClick:()=>K(o),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[f.icon,e.jsxs("span",{className:"font-medium text-gray-900 truncate",children:["Import ",Y(f,f.name)]})]}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[e.jsx("span",{className:"text-xs text-gray-500 bg-gray-100 px-1.5 py-0.5 rounded hidden sm:inline",children:f.type}),M&&e.jsx(Z,{className:"w-3 h-3 text-gray-400"})]})]},`import-${f.name}`);default:return null}},[u,K,Y]);return t?e.jsxs(e.Fragment,{children:[e.jsx(xe,{open:t,onOpenChange:s,children:e.jsxs(be,{className:"max-w-xl lg:max-w-2xl w-[95vw] bg-white rounded-lg shadow-xl border border-gray-200 p-0 top-[10vh] translate-y-0",children:[e.jsx(ye,{className:"sr-only",children:"Command Menu"}),e.jsx(we,{className:"sr-only",children:"Use this menu to search packages and commands."}),e.jsxs(W,{className:"w-full overflow-hidden",loop:!1,onKeyDown:Ze,children:[e.jsxs("div",{className:"flex items-center border-b border-gray-200 px-3 sm:px-4 py-3",children:[e.jsx(ot,{className:"w-4 h-4 mr-2 text-gray-400 flex-shrink-0"}),e.jsx(W.Input,{placeholder:"Search packages and commands...",value:a,onValueChange:r,className:"w-full bg-transparent border-none outline-none text-sm text-gray-900 placeholder-gray-500"})]}),e.jsx(W.List,{className:"max-h-[60vh] sm:max-h-[50vh] overflow-y-auto p-2 sm:p-3 space-y-3 no-scrollbar",children:A||P?e.jsx(W.Loading,{className:"p-6 text-center text-gray-500",children:e.jsxs("div",{className:"flex items-center justify-center gap-2",children:[e.jsx("div",{className:"w-3 h-3 border-2 border-gray-300 border-t-gray-600 rounded-full animate-spin"}),"Loading..."]})}):e.jsxs(e.Fragment,{children:[a&&S.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2 px-2",children:"Packages"}),e.jsx("div",{className:"space-y-1",children:S.slice(0,8).map((o,g)=>q({type:"package",item:o},g))})]}),a&&R.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2 px-2",children:"Users"}),e.jsx("div",{className:"space-y-1",children:R.slice(0,5).map((o,g)=>{const k=S.length+g;return q({type:"account",item:o},k)})})]}),!a&&z.length>0&&e.jsxs("div",{children:[e.jsxs("h3",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2 px-2 flex items-center gap-1",children:[e.jsx(Lt,{className:"w-3 h-3"}),"Recent"]}),e.jsx("div",{className:"space-y-1",children:z.slice(0,6).map((o,g)=>q({type:"recent",item:o},g))})]}),D.blankTemplates.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2 px-2",children:"Create"}),e.jsx("div",{className:"space-y-1",children:D.blankTemplates.map((o,g)=>{const k=(a?S.length+R.length:z.length)+g;return q({type:"blank",item:o,disabled:o.disabled},k)})})]}),D.templates.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2 px-2",children:"Templates"}),e.jsx("div",{className:"space-y-1",children:D.templates.map((o,g)=>{const k=(a?S.length+R.length:z.length)+D.blankTemplates.length+g;return q({type:"template",item:o},k)})})]}),D.importOptions.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-semibold text-gray-500 uppercase tracking-wide mb-2 px-2",children:"Import"}),e.jsx("div",{className:"space-y-1",children:D.importOptions.map((o,g)=>{const k=(a?S.length+R.length:z.length)+D.blankTemplates.length+D.templates.length+g;return q({type:"import",item:o},k)})})]}),a&&!S.length&&!R.length&&!D.blankTemplates.length&&!D.templates.length&&!D.importOptions.length&&!A&&!P&&e.jsxs(W.Empty,{className:"py-8 text-center",children:[e.jsx("div",{className:"text-gray-400 mb-1",children:"No results found"}),e.jsx("div",{className:"text-gray-500 text-xs",children:"Try different search terms"})]})]})}),e.jsx("div",{className:"border-t border-gray-200 px-2 py-2 bg-gray-50/50 rounded-b-lg",children:e.jsxs("div",{className:"flex justify-between items-center text-[11px] sm:text-xs text-gray-500",children:[e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1 py-0.5 font-mono bg-white border border-gray-200 shadow-sm rounded text-[10px] sm:text-xs",children:"↑↓"}),e.jsx("span",{className:"hidden sm:inline",children:"navigate"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1 py-0.5 font-mono bg-white border border-gray-200 shadow-sm rounded text-[10px] sm:text-xs",children:"↵"}),e.jsx("span",{className:"hidden sm:inline",children:"select"})]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1 py-0.5 font-mono bg-white border border-gray-200 shadow-sm rounded text-[10px] sm:text-xs",children:"⌘K"}),e.jsx("span",{className:"hidden sm:inline",children:"close"})]})]})})]})]})}),e.jsx(n,{onJlcpcbComponentTsxLoaded:C,jlcpcbProxyRequestHeaders:I})]}):e.jsxs(e.Fragment,{children:[e.jsx(n,{onJlcpcbComponentTsxLoaded:C,jlcpcbProxyRequestHeaders:I}),e.jsx(Wt,{open:i,onOpenChange:d})]})};function Xt(){return lt.useSyncExternalStore(Gt,()=>!0,()=>!1)}function Gt(){return()=>{}}var ie="Avatar",[Qt]=it(ie),[Zt,Ae]=Qt(ie),Re=l.forwardRef((t,s)=>{const{__scopeAvatar:a,...r}=t,[i,d]=l.useState("idle");return e.jsx(Zt,{scope:a,imageLoadingStatus:i,onImageLoadingStatusChange:d,children:e.jsx(oe.span,{...r,ref:s})})});Re.displayName=ie;var Te="AvatarImage",Oe=l.forwardRef((t,s)=>{const{__scopeAvatar:a,src:r,onLoadingStatusChange:i=()=>{},...d}=t,u=Ae(Te,a),c=ea(r,d),x=ct(m=>{i(m),u.onImageLoadingStatusChange(m)});return ae(()=>{c!=="idle"&&x(c)},[c,x]),c==="loaded"?e.jsx(oe.img,{...d,ref:s,src:r}):null});Oe.displayName=Te;var Be="AvatarFallback",Fe=l.forwardRef((t,s)=>{const{__scopeAvatar:a,delayMs:r,...i}=t,d=Ae(Be,a),[u,c]=l.useState(r===void 0);return l.useEffect(()=>{if(r!==void 0){const x=window.setTimeout(()=>c(!0),r);return()=>window.clearTimeout(x)}},[r]),u&&d.imageLoadingStatus!=="loaded"?e.jsx(oe.span,{...i,ref:s}):null});Fe.displayName=Be;function fe(t,s){return t?s?(t.src!==s&&(t.src=s),t.complete&&t.naturalWidth>0?"loaded":"loading"):"error":"idle"}function ea(t,{referrerPolicy:s,crossOrigin:a}){const r=Xt(),i=l.useRef(null),d=r?(i.current||(i.current=new window.Image),i.current):null,[u,c]=l.useState(()=>fe(d,t));return ae(()=>{c(fe(d,t))},[d,t]),ae(()=>{const x=v=>()=>{c(v)};if(!d)return;const m=x("loaded"),n=x("error");return d.addEventListener("load",m),d.addEventListener("error",n),s&&(d.referrerPolicy=s),typeof a=="string"&&(d.crossOrigin=a),()=>{d.removeEventListener("load",m),d.removeEventListener("error",n)}},[d,a,s]),u}var Je=Re,ze=Oe,Ue=Fe;const He=l.forwardRef(({className:t,...s},a)=>e.jsx(Je,{ref:a,className:L("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",t),...s}));He.displayName=Je.displayName;const Ke=l.forwardRef(({className:t,...s},a)=>e.jsx(ze,{ref:a,className:L("aspect-square h-full w-full",t),...s}));Ke.displayName=ze.displayName;const qe=l.forwardRef(({className:t,...s},a)=>e.jsx(Ue,{ref:a,className:L("flex h-full w-full items-center justify-center rounded-full bg-slate-100 dark:bg-slate-800",t),...s}));qe.displayName=Ue.displayName;const Ve=dt,Ye=ut,$a=ft,Ia=mt,ta=l.forwardRef(({className:t,inset:s,children:a,...r},i)=>e.jsxs(Ce,{ref:i,className:L("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-slate-100 data-[state=open]:bg-slate-100 dark:focus:bg-slate-800 dark:data-[state=open]:bg-slate-800",s&&"pl-8",t),...r,children:[a,e.jsx(ht,{className:"ml-auto h-4 w-4"})]}));ta.displayName=Ce.displayName;const aa=l.forwardRef(({className:t,...s},a)=>e.jsx(_e,{ref:a,className:L("z-50 min-w-[8rem] overflow-hidden rounded-md border border-slate-200 bg-white p-1 text-slate-950 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50",t),...s}));aa.displayName=_e.displayName;const ce=l.forwardRef(({className:t,sideOffset:s=4,...a},r)=>e.jsx(pt,{children:e.jsx(ve,{ref:r,sideOffset:s,className:L("z-50 min-w-[8rem] overflow-hidden rounded-md border border-slate-200 bg-white p-1 text-slate-950 shadow-md dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...a})}));ce.displayName=ve.displayName;const F=l.forwardRef(({className:t,inset:s,...a},r)=>e.jsx(Ne,{ref:r,className:L("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-slate-100 focus:text-slate-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-800 dark:focus:text-slate-50",s&&"pl-8",t),...a}));F.displayName=Ne.displayName;const sa=l.forwardRef(({className:t,children:s,checked:a,...r},i)=>e.jsxs(Se,{ref:i,className:L("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-slate-100 focus:text-slate-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-800 dark:focus:text-slate-50",t),checked:a,...r,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx($e,{children:e.jsx(gt,{className:"h-4 w-4"})})}),s]}));sa.displayName=Se.displayName;const ra=l.forwardRef(({className:t,children:s,...a},r)=>e.jsxs(Ie,{ref:r,className:L("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-slate-100 focus:text-slate-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-800 dark:focus:text-slate-50",t),...a,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx($e,{children:e.jsx(xt,{className:"h-4 w-4 fill-current"})})}),s]}));ra.displayName=Ie.displayName;const na=l.forwardRef(({className:t,inset:s,...a},r)=>e.jsx(Ee,{ref:r,className:L("px-2 py-1.5 text-sm font-semibold",s&&"pl-8",t),...a}));na.displayName=Ee.displayName;const oa=l.forwardRef(({className:t,...s},a)=>e.jsx(je,{ref:a,className:L("-mx-1 my-1 h-px bg-slate-100 dark:bg-slate-800",t),...s}));oa.displayName=je.displayName;const la=()=>(J(t=>t.setSession),()=>{const t=window.location.href.replace("127.0.0.1","localhost"),s=`${window.location.origin.replace("127.0.0.1","localhost")}/authorize?redirect=${encodeURIComponent(t)}`;window.location.href=s}),Ea=()=>{const t=J(u=>u.session),s=!!t,a=J(u=>u.setSession),r=la(),[i,d]=l.useState(!1);return s?e.jsxs(Ve,{open:i,onOpenChange:d,children:[e.jsx(Ye,{asChild:!0,children:e.jsxs(He,{className:"w-8 h-8 login-avatar",children:[e.jsx(Ke,{src:`https://github.com/${t==null?void 0:t.github_username}.png?size=40`,alt:`${t==null?void 0:t.github_username}'s profile picture`}),e.jsx(qe,{"aria-label":"User avatar fallback",children:e.jsx(Le,{size:16,"aria-hidden":"true"})})]})}),e.jsxs(ce,{className:"ml-1 mr-1 md:ml-0 md:mr-1",children:[e.jsx(F,{asChild:!0,children:e.jsx(B,{href:`/${t==null?void 0:t.github_username}`,className:"cursor-pointer",onClick:()=>d(!1),children:"My Profile"})}),e.jsx(F,{asChild:!0,children:e.jsx(B,{href:"/dashboard",className:"cursor-pointer",onClick:()=>d(!1),children:"Dashboard"})}),e.jsx(F,{asChild:!0,children:e.jsx(B,{href:`/${t==null?void 0:t.github_username}/settings`,className:"cursor-pointer",onClick:()=>d(!1),children:"Settings"})}),e.jsx(F,{asChild:!0,children:e.jsx(B,{href:"/orgs/new",className:"cursor-pointer",onClick:()=>d(!1),children:"Create Organization"})}),e.jsx(F,{asChild:!0,children:e.jsx(B,{href:"/",className:"cursor-pointer",onClick:()=>{a(null),d(!1)},children:"Sign Out"})})]})]}):e.jsxs("div",{className:"flex items-center md:space-x-2 justify-end",children:[e.jsx(te,{onClick:()=>r(),variant:"ghost",children:"Log In"}),e.jsx(te,{onClick:()=>r(),children:"Get Started"})]})},We=l.forwardRef(({className:t,type:s,...a},r)=>e.jsx("input",{type:s,className:L("flex h-9 w-full rounded-md border border-slate-200 bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-slate-950 placeholder:text-slate-500 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-slate-950 disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-800 dark:file:text-slate-50 dark:placeholder:text-slate-400 dark:focus-visible:ring-slate-300",t),ref:r,...a}));We.displayName="Input";const ia=bt("relative w-full rounded-lg border border-slate-200 px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-slate-950 [&>svg~*]:pl-7 dark:border-slate-800 dark:[&>svg]:text-slate-50",{variants:{variant:{default:"bg-white text-slate-950 dark:bg-slate-950 dark:text-slate-50",destructive:"border-red-500/50 text-red-500 dark:border-red-500 [&>svg]:text-red-500 dark:border-red-900/50 dark:text-red-900 dark:dark:border-red-900 dark:[&>svg]:text-red-900"}},defaultVariants:{variant:"default"}}),Xe=l.forwardRef(({className:t,variant:s,...a},r)=>e.jsx("div",{ref:r,role:"alert",className:L(ia({variant:s}),t),...a}));Xe.displayName="Alert";const ca=l.forwardRef(({className:t,...s},a)=>e.jsx("h5",{ref:a,className:L("mb-1 font-medium leading-none tracking-tight",t),...s}));ca.displayName="AlertTitle";const da=l.forwardRef(({className:t,...s},a)=>e.jsx("div",{ref:a,className:L("text-sm [&_p]:leading-relaxed",t),...s}));da.displayName="AlertDescription";const ua=({shouldOpenInNewTab:t,href:s,className:a,onClick:r,children:i})=>t?e.jsx("a",{href:s,target:"_blank",rel:"noopener noreferrer",className:a,onClick:r,children:i}):e.jsx(B,{onClick:r,className:a,href:s,children:i}),La=({onResultsFetched:t,autofocus:s=!1,closeOnClick:a})=>{const[r,i]=l.useState(""),[d,u]=l.useState(!1),[c,x]=l.useState(-1),m=U(),n=l.useRef(null),v=l.useRef(null),[w,N]=ne(),{data:b,isLoading:I}=ee(["packageSearch",r],async()=>{if(!r)return[];const{data:h}=await m.post("/packages/search",{query:r});return t&&t(h.packages),h.packages},{enabled:!!r});l.useEffect(()=>{x(-1)},[b]);const C=h=>{h.preventDefault(),r.trim()&&N(`/search?q=${encodeURIComponent(r.trim())}`)};l.useEffect(()=>{var h;s&&((h=v.current)==null||h.focus())},[]),l.useEffect(()=>{var y;if(c<0)return;const h=(y=n.current)==null?void 0:y.querySelectorAll("li"),p=h==null?void 0:h[c];p==null||p.scrollIntoView({block:"nearest"})},[c]),l.useEffect(()=>{const h=y=>{n.current&&!n.current.contains(y.target)&&u(!1)},p=y=>{y.key==="Escape"&&(u(!1),a&&a())};return document.addEventListener("mousedown",h),document.addEventListener("keydown",p),()=>{document.removeEventListener("mousedown",h),document.removeEventListener("keydown",p)}},[a]);const j=w==="/editor"||w==="/ai",E=w==="/editor"||w==="/ai";return e.jsxs("form",{onSubmit:C,autoComplete:"off",className:"relative w-44",children:[e.jsx(We,{autoComplete:"off",spellCheck:!1,autoCorrect:"off",autoCapitalize:"off",ref:v,type:"search","aria-autocomplete":"none",placeholder:"Search",className:"pl-4 focus:border-blue-500 placeholder-gray-400 text-sm select-none",value:r,onChange:h=>{i(h.target.value),u(!!h.target.value)},onKeyDown:h=>{if(h.key==="Backspace"&&!r&&a){a();return}if(b){if(h.key==="ArrowDown")h.preventDefault(),u(!0),x(p=>Math.min(p+1,b.length-1));else if(h.key==="ArrowUp")h.preventDefault(),x(p=>Math.max(p-1,0));else if(h.key==="Enter"&&c>=0){h.preventDefault();const p=b[c];if(p){const y=E?`/editor?package_id=${p.package_id}`:`/${p.name}`;j?window.open(y,"_blank"):N(y),u(!1),a&&a()}}}},"aria-label":"Search packages",role:"searchbox"}),I&&e.jsx("div",{className:"absolute top-full w-lg left-0 right-0 mt-1 bg-white shadow-lg rounded-lg border w-80 grid place-items-center py-4 z-50 p-3",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("div",{className:"w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"}),e.jsx("span",{className:"text-gray-600 text-sm",children:"Searching..."})]})}),d&&b&&e.jsx("div",{ref:n,className:"absolute top-full md:left-0 right-0 no-scrollbar mt-2 bg-white shadow-lg rounded-md z-50 w-80 max-h-screen overflow-y-auto overflow-x-visible",children:b.length>0?e.jsx("ul",{className:"divide-y divide-gray-200 no-scrollbar",children:b.map((h,p)=>{const y=h.latest_pcb_preview_image_url??h.latest_cad_preview_image_url??h.latest_sch_preview_image_url??void 0,A=!!y;return e.jsx("li",{className:L("p-2 hover:bg-gray-50",p===c&&"bg-gray-100"),children:e.jsxs(ua,{href:E?`/editor?package_id=${h.package_id}`:`/${h.name}`,shouldOpenInNewTab:j,className:"flex",onClick:()=>{u(!1),a&&a()},children:[e.jsxs("div",{className:"w-12 h-12 overflow-hidden mr-2 flex-shrink-0 rounded-sm bg-gray-50 border flex items-center justify-center",children:[A?e.jsx("img",{src:y,alt:`PCB preview for ${h.name}`,draggable:!1,className:"w-12 h-12 object-contain p-1 scale-[4] rotate-45",onError:T=>{var P,S;T.currentTarget.style.display="none",(P=T.currentTarget.nextElementSibling)==null||P.classList.remove("hidden"),(S=T.currentTarget.nextElementSibling)==null||S.classList.add("flex")}}):null,e.jsx("div",{className:`w-12 h-12 ${A?"hidden":"flex"} items-center justify-center`,children:e.jsx(ke,{className:"w-6 h-6 text-gray-300"})})]}),e.jsxs("div",{className:"flex-grow",children:[e.jsx("div",{className:"font-medium text-blue-600 break-words text-xs",children:h.name}),h.description&&e.jsx("div",{className:"text-xs text-gray-500 break-words h-8 overflow-hidden",children:h.description})]})]})},h.package_id)})}):e.jsxs(Xe,{variant:"default",className:"p-4 text-center",children:['No results found for "',r,'"']})})]})};function Pa(){const[t,s]=l.useState(!1),a=[{name:"Blank Circuit Board",type:"board",badgeColor:"bg-blue-500"},{name:"Blank Circuit Module",type:"package",badgeColor:"bg-green-500"},{name:"Blank 3D Model",type:"model",badgeColor:"bg-purple-500 ",disabled:!0},{name:"Blank Footprint",type:"footprint",badgeColor:"bg-pink-500 ",disabled:!0}];return e.jsxs(Ve,{open:t,onOpenChange:s,children:[e.jsx(Ye,{asChild:!0,children:e.jsxs(te,{size:"sm",variant:"default",className:"bg-blue-600 hover:bg-blue-700",children:["New ",e.jsx(It,{className:"ml-1 h-4 w-4"})]})}),e.jsxs(ce,{className:"w-fit",children:[e.jsx(F,{asChild:!0,children:e.jsxs(B,{href:"/quickstart",className:"flex items-center cursor-pointer",onClick:()=>s(!1),children:[e.jsx(Ft,{className:"mr-2 h-3 w-3"}),"Quickstart Templates"]})}),a.map((r,i)=>e.jsx(F,{asChild:!0,disabled:r.disabled,children:e.jsxs(B,{href:`/editor?template=${r.name.toLowerCase().replace(/ /g,"-")}`,className:L("flex items-center cursor-pointer",r.disabled&&"opacity-50 cursor-not-allowed"),onClick:()=>!r.disabled&&s(!1),children:[e.jsx("span",{className:`w-2 h-2 rounded-full mr-2 ${r.badgeColor}`}),r.name]})},i)),e.jsx(F,{asChild:!0,children:e.jsxs(B,{href:"/quickstart",className:"flex items-center cursor-pointer",onClick:()=>s(!1),children:[e.jsx(yt,{className:"mr-2 h-3 w-3"}),"Import Part"]})})]})]})}var ge={},pa="@vercel/analytics",ma="1.5.0",ha=()=>{window.va||(window.va=function(...s){(window.vaq=window.vaq||[]).push(s)})};function Ge(){return typeof window<"u"}function Qe(){try{const t="production"}catch{}return"production"}function fa(t="auto"){if(t==="auto"){window.vam=Qe();return}window.vam=t}function ga(){return(Ge()?window.vam:Qe())||"production"}function se(){return ga()==="development"}function xa(t){return t.scriptSrc?t.scriptSrc:se()?"https://va.vercel-scripts.com/v1/script.debug.js":t.basePath?`${t.basePath}/insights/script.js`:"/_vercel/insights/script.js"}function ba(t={debug:!0}){var s;if(!Ge())return;fa(t.mode),ha(),t.beforeSend&&((s=window.va)==null||s.call(window,"beforeSend",t.beforeSend));const a=xa(t);if(document.head.querySelector(`script[src*="${a}"]`))return;const r=document.createElement("script");r.src=a,r.defer=!0,r.dataset.sdkn=pa+(t.framework?`/${t.framework}`:""),r.dataset.sdkv=ma,t.disableAutoTrack&&(r.dataset.disableAutoTrack="1"),t.endpoint?r.dataset.endpoint=t.endpoint:t.basePath&&(r.dataset.endpoint=`${t.basePath}/insights`),t.dsn&&(r.dataset.dsn=t.dsn),r.onerror=()=>{const i=se()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${a}. ${i}`)},se()&&t.debug===!1&&(r.dataset.debug="false"),document.head.appendChild(r)}function ya({route:t,path:s}){var a;(a=window.va)==null||a.call(window,"pageview",{route:t,path:s})}function wa(){if(!(typeof process>"u"||typeof ge>"u"))return ge.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}function ka(t){return l.useEffect(()=>{var s;t.beforeSend&&((s=window.va)==null||s.call(window,"beforeSend",t.beforeSend))},[t.beforeSend]),l.useEffect(()=>{ba({framework:t.framework||"react",basePath:t.basePath??wa(),...t.route!==void 0&&{disableAutoTrack:!0},...t})},[]),l.useEffect(()=>{t.route&&t.path&&ya({route:t.route,path:t.path})},[t.route,t.path]),null}const Da=()=>e.jsx("div",{className:"absolute bottom-0 left-0 right-0",children:e.jsx(ka,{})});export{He as A,jt as B,It as C,Ve as D,Ct as E,La as F,Ea as G,Pa as H,We as I,Sa as J,Da as K,ja as M,me as P,Rt as S,Le as U,Ca as X,Ft as Z,la as a,zt as b,Ut as c,Wt as d,Ke as e,X as f,qe as g,Ye as h,ce as i,F as j,oa as k,le as l,_t as m,Lt as n,he as o,_a as p,$a as q,vt as r,De as s,Xe as t,U as u,da as v,Ia as w,ta as x,aa as y,Pe as z};
@@ -1 +0,0 @@
1
- import{h as b,j as s,B as N,br as k}from"./index-BQPj88OW.js";import{C as v,b as y,c as B,a as C}from"./card-CzXDit7x.js";import{B as m}from"./badge-Bk-k6kyg.js";import{S as l}from"./skeleton-DLAS40-y.js";import{u as R,D as T,h as $,i as L,j as d}from"./Analytics-DIw7l2gi.js";import{e as D,T as M,f as S,h as o,i as c,j as A,k as a,g as P,S as G}from"./use-package-builds-Bx8rfxi1.js";import{G as H,f as j}from"./formatTimeAgo-CawXna5h.js";import{u as I}from"./useQueries-BJ7Ue7HV.js";import{G as E}from"./PackageBreadcrumb-DpOpPbGc.js";const U=({pkg:n})=>{const{data:r,isLoading:p}=D(n.package_id),u=R(),[,g]=b(),x=I((r||[]).filter(e=>e.latest_package_build_id).map(e=>({queryKey:["packageBuild",e.latest_package_build_id],queryFn:async()=>{if(!e.latest_package_build_id)return null;const{data:i}=await u.get("/package_builds/get",{params:{package_build_id:e.latest_package_build_id}});return i.package_build},enabled:!!e.latest_package_build_id,retry:!1,refetchOnWindowFocus:!1}))),_=p||x.some(e=>e.isLoading),h=new Map;return x.forEach((e,i)=>{e.data&&(r!=null&&r[i])&&h.set(r[i].package_release_id,e.data)}),s.jsx(s.Fragment,{children:s.jsx("div",{className:"space-y-6",children:s.jsxs(v,{children:[s.jsx(y,{children:s.jsx(B,{children:"Recent Releases"})}),s.jsx(C,{children:s.jsx("div",{className:"overflow-x-auto [&>div]:no-scrollbar",children:s.jsxs(M,{className:"no-scrollbar",children:[s.jsx(S,{children:s.jsxs(o,{children:[s.jsx(c,{children:"Status"}),s.jsx(c,{children:"Release ID"}),s.jsx(c,{children:"Version"}),s.jsx(c,{children:"Branch/PR"}),s.jsx(c,{children:"Latest Build"}),s.jsx(c,{children:"Created"}),s.jsx(c,{children:"Actions"})]})}),s.jsx(A,{children:_?Array.from({length:3}).map((e,i)=>s.jsxs(o,{children:[s.jsx(a,{children:s.jsx(l,{className:"h-6 w-20"})}),s.jsx(a,{children:s.jsx(l,{className:"h-6 w-16"})}),s.jsx(a,{children:s.jsx(l,{className:"h-6 w-12"})}),s.jsx(a,{children:s.jsx(l,{className:"h-6 w-32"})}),s.jsx(a,{children:s.jsx(l,{className:"h-6 w-20"})}),s.jsx(a,{children:s.jsx(l,{className:"h-6 w-16"})}),s.jsx(a,{children:s.jsx(l,{className:"h-6 w-8"})})]},i)):r==null?void 0:r.map(e=>{const i=h.get(e.package_release_id),{status:t,label:w}=P(i);return s.jsxs(o,{className:"cursor-pointer hover:bg-gray-50 no-scrollbar",onClick:()=>{g(`/${n.name}/releases/${e.package_release_id}`)},children:[s.jsx(a,{children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(G,{status:t}),s.jsx(m,{variant:t==="success"?"default":t==="error"?"destructive":"secondary",className:"text-xs",children:w})]})}),s.jsx(a,{children:s.jsx("code",{className:"text-sm bg-gray-100 px-2 py-1 rounded",children:e.package_release_id.slice(-8)})}),s.jsx(a,{children:s.jsx("span",{className:"text-sm font-medium",children:e.version||"v"+e.package_release_id.slice(-6)})}),s.jsx(a,{children:s.jsxs("div",{className:"flex items-center gap-2",children:[e.is_pr_preview?s.jsx(H,{className:"w-3 h-3 text-gray-500"}):s.jsx(E,{className:"w-3 h-3 text-gray-500"}),s.jsx(m,{variant:"outline",className:"text-xs",children:e.is_pr_preview?`#${e.github_pr_number}`:"main"})]})}),s.jsx(a,{children:s.jsx("div",{className:"max-w-xs",children:i?s.jsx("p",{className:"text-sm text-gray-600",children:j(i.created_at)}):s.jsx("p",{className:"text-sm text-gray-400",children:"No builds"})})}),s.jsx(a,{children:s.jsx("span",{className:"text-sm text-gray-600",children:j(e.created_at)})}),s.jsx(a,{children:s.jsx("div",{className:"flex items-center gap-2",children:s.jsxs(T,{children:[s.jsx($,{asChild:!0,children:s.jsx(N,{variant:"ghost",size:"sm",onClick:f=>f.stopPropagation(),children:s.jsx(k,{className:"w-3 h-3"})})}),s.jsxs(L,{align:"end",children:[s.jsx(d,{onClick:()=>{window.location.href=`/${n.name}/releases/${e.package_release_id}`},children:"View Release"}),t!=="error"&&s.jsx(d,{children:s.jsx("a",{href:`/${n.name}/releases/${i==null?void 0:i.package_release_id}/preview`,children:"Preview Release"})}),s.jsx(d,{onClick:()=>{window.location.href=`/${n.name}/releases/${e.package_release_id}/builds`},children:"View All Builds"})]})]})})})]},e.package_release_id)})})]})})})]})})})};export{U as B};