@tscircuit/fake-snippets 0.0.120 → 0.0.122

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 (612) hide show
  1. package/dist/bundle.js +1 -2
  2. package/package.json +4 -1
  3. package/.github/CODEOWNERS +0 -1
  4. package/.github/workflows/bun-formatcheck.yml +0 -26
  5. package/.github/workflows/bun-pver-release.yml +0 -28
  6. package/.github/workflows/bun-test.yml +0 -28
  7. package/.github/workflows/bun-typecheck.yml +0 -26
  8. package/.github/workflows/bundle-size-analysis.yml +0 -79
  9. package/.github/workflows/stale.yml +0 -40
  10. package/.github/workflows/update-package.yml +0 -58
  11. package/.github/workflows/update-snapshots.yml +0 -49
  12. package/CLAUDE.md +0 -92
  13. package/CONTRIBUTING.md +0 -59
  14. package/api/generated-index.js +0 -456
  15. package/biome.json +0 -67
  16. package/bun-tests/fake-snippets-api/fixtures/get-test-server.ts +0 -141
  17. package/bun-tests/fake-snippets-api/fixtures/preload.ts +0 -18
  18. package/bun-tests/fake-snippets-api/fixtures/start-server.ts +0 -48
  19. package/bun-tests/fake-snippets-api/routes/accounts/get.test.ts +0 -64
  20. package/bun-tests/fake-snippets-api/routes/accounts/get_account_balance.test.ts +0 -14
  21. package/bun-tests/fake-snippets-api/routes/ai_reviews/create.test.ts +0 -21
  22. package/bun-tests/fake-snippets-api/routes/ai_reviews/get.test.ts +0 -16
  23. package/bun-tests/fake-snippets-api/routes/ai_reviews/list.test.ts +0 -14
  24. package/bun-tests/fake-snippets-api/routes/ai_reviews/process_review.test.ts +0 -16
  25. package/bun-tests/fake-snippets-api/routes/bug_reports/create.test.ts +0 -37
  26. package/bun-tests/fake-snippets-api/routes/bug_reports/upload_file.test.ts +0 -89
  27. package/bun-tests/fake-snippets-api/routes/datasheets/create.test.ts +0 -16
  28. package/bun-tests/fake-snippets-api/routes/datasheets/get.test.ts +0 -54
  29. package/bun-tests/fake-snippets-api/routes/datasheets/list.test.ts +0 -49
  30. package/bun-tests/fake-snippets-api/routes/datasheets/process_all_datasheets.test.ts +0 -22
  31. package/bun-tests/fake-snippets-api/routes/datasheets/run_async_tasks.test.ts +0 -19
  32. package/bun-tests/fake-snippets-api/routes/health.test.ts +0 -9
  33. package/bun-tests/fake-snippets-api/routes/order_files/get.test.ts +0 -48
  34. package/bun-tests/fake-snippets-api/routes/order_files/upload.test.ts +0 -77
  35. package/bun-tests/fake-snippets-api/routes/order_quotes/create.test.ts +0 -33
  36. package/bun-tests/fake-snippets-api/routes/orders/create.test.ts +0 -17
  37. package/bun-tests/fake-snippets-api/routes/orders/get.test.ts +0 -199
  38. package/bun-tests/fake-snippets-api/routes/orders/list.test.ts +0 -30
  39. package/bun-tests/fake-snippets-api/routes/orgs/add_member.test.ts +0 -26
  40. package/bun-tests/fake-snippets-api/routes/orgs/create.test.ts +0 -37
  41. package/bun-tests/fake-snippets-api/routes/orgs/get.test.ts +0 -53
  42. package/bun-tests/fake-snippets-api/routes/orgs/get_member.test.ts +0 -110
  43. package/bun-tests/fake-snippets-api/routes/orgs/list.test.ts +0 -17
  44. package/bun-tests/fake-snippets-api/routes/orgs/list_members.test.ts +0 -24
  45. package/bun-tests/fake-snippets-api/routes/orgs/remove_member.test.ts +0 -81
  46. package/bun-tests/fake-snippets-api/routes/orgs/update.test.ts +0 -151
  47. package/bun-tests/fake-snippets-api/routes/package_builds/get.test.ts +0 -279
  48. package/bun-tests/fake-snippets-api/routes/package_builds/list.test.ts +0 -292
  49. package/bun-tests/fake-snippets-api/routes/package_files/create.test.ts +0 -320
  50. package/bun-tests/fake-snippets-api/routes/package_files/create_or_update.test.ts +0 -603
  51. package/bun-tests/fake-snippets-api/routes/package_files/delete.test.ts +0 -233
  52. package/bun-tests/fake-snippets-api/routes/package_files/download.test.ts +0 -248
  53. package/bun-tests/fake-snippets-api/routes/package_files/get.test.ts +0 -230
  54. package/bun-tests/fake-snippets-api/routes/package_files/list.test.ts +0 -212
  55. package/bun-tests/fake-snippets-api/routes/package_releases/create.test.ts +0 -171
  56. package/bun-tests/fake-snippets-api/routes/package_releases/get.test.ts +0 -181
  57. package/bun-tests/fake-snippets-api/routes/package_releases/get_image_generation_fields.test.ts +0 -38
  58. package/bun-tests/fake-snippets-api/routes/package_releases/list.test.ts +0 -149
  59. package/bun-tests/fake-snippets-api/routes/package_releases/update.test.ts +0 -160
  60. package/bun-tests/fake-snippets-api/routes/packages/add_star.test.ts +0 -129
  61. package/bun-tests/fake-snippets-api/routes/packages/create.test.ts +0 -67
  62. package/bun-tests/fake-snippets-api/routes/packages/delete.test.ts +0 -74
  63. package/bun-tests/fake-snippets-api/routes/packages/fork.test.ts +0 -132
  64. package/bun-tests/fake-snippets-api/routes/packages/get.test.ts +0 -112
  65. package/bun-tests/fake-snippets-api/routes/packages/images.test.ts +0 -72
  66. package/bun-tests/fake-snippets-api/routes/packages/list-1.test.ts +0 -145
  67. package/bun-tests/fake-snippets-api/routes/packages/list-2.test.ts +0 -48
  68. package/bun-tests/fake-snippets-api/routes/packages/list_latest.test.ts +0 -110
  69. package/bun-tests/fake-snippets-api/routes/packages/list_trending.test.ts +0 -103
  70. package/bun-tests/fake-snippets-api/routes/packages/remove_star.test.ts +0 -131
  71. package/bun-tests/fake-snippets-api/routes/packages/update.test.ts +0 -217
  72. package/bun-tests/fake-snippets-api/routes/proxy.test.ts +0 -42
  73. package/bun.lock +0 -2724
  74. package/bunfig.toml +0 -3
  75. package/components.json +0 -20
  76. package/docs/CIRCUIT_JSON_SOURCE_COMPONENT_OVERVIEW.md +0 -151
  77. package/fake-snippets-api/README.md +0 -6
  78. package/fake-snippets-api/biome.json +0 -47
  79. package/fake-snippets-api/bun.lockb +0 -0
  80. package/fake-snippets-api/lib/db/autoload-dev-packages.ts +0 -222
  81. package/fake-snippets-api/lib/db/autoload-packages.json +0 -8
  82. package/fake-snippets-api/lib/db/db-client.ts +0 -1857
  83. package/fake-snippets-api/lib/db/schema.ts +0 -502
  84. package/fake-snippets-api/lib/db/seed.ts +0 -1843
  85. package/fake-snippets-api/lib/index.ts +0 -3
  86. package/fake-snippets-api/lib/middleware/with-ctx-error.ts +0 -26
  87. package/fake-snippets-api/lib/middleware/with-db.ts +0 -15
  88. package/fake-snippets-api/lib/middleware/with-error-handling.ts +0 -24
  89. package/fake-snippets-api/lib/middleware/with-optional-session-auth.ts +0 -53
  90. package/fake-snippets-api/lib/middleware/with-request-logging.ts +0 -54
  91. package/fake-snippets-api/lib/middleware/with-session-auth.ts +0 -102
  92. package/fake-snippets-api/lib/middleware/with-winter-spec.ts +0 -24
  93. package/fake-snippets-api/lib/package_file/generate-fs-sha.ts +0 -20
  94. package/fake-snippets-api/lib/package_file/get-package-file-id-from-file-descriptor.ts +0 -173
  95. package/fake-snippets-api/lib/package_release/find-package-release-id.ts +0 -120
  96. package/fake-snippets-api/lib/public-mapping/public-map-org.ts +0 -34
  97. package/fake-snippets-api/lib/public-mapping/public-map-package-build.ts +0 -48
  98. package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +0 -88
  99. package/fake-snippets-api/lib/public-mapping/public-map-package.ts +0 -60
  100. package/fake-snippets-api/lib/with-winter-spec.ts +0 -1
  101. package/fake-snippets-api/next-env.d.ts +0 -5
  102. package/fake-snippets-api/routes/api/_fake/ai_reviews/process_review.ts +0 -31
  103. package/fake-snippets-api/routes/api/_fake/datasheets/process_all_datasheets.ts +0 -38
  104. package/fake-snippets-api/routes/api/_fake/db.ts +0 -11
  105. package/fake-snippets-api/routes/api/_fake/move_orders_forward.ts +0 -65
  106. package/fake-snippets-api/routes/api/_fake/received_quotes.ts +0 -112
  107. package/fake-snippets-api/routes/api/_fake/run_async_tasks.ts +0 -12
  108. package/fake-snippets-api/routes/api/_fake/seed.ts +0 -13
  109. package/fake-snippets-api/routes/api/accounts/get.ts +0 -35
  110. package/fake-snippets-api/routes/api/accounts/get_account_balance.ts +0 -22
  111. package/fake-snippets-api/routes/api/accounts/search.ts +0 -20
  112. package/fake-snippets-api/routes/api/accounts/update.ts +0 -32
  113. package/fake-snippets-api/routes/api/ai/[...anyroute].ts +0 -31
  114. package/fake-snippets-api/routes/api/ai.ts +0 -2
  115. package/fake-snippets-api/routes/api/ai_reviews/create.ts +0 -44
  116. package/fake-snippets-api/routes/api/ai_reviews/get.ts +0 -24
  117. package/fake-snippets-api/routes/api/ai_reviews/list.ts +0 -14
  118. package/fake-snippets-api/routes/api/aistream/[...anyroute].ts +0 -65
  119. package/fake-snippets-api/routes/api/autocomplete/create_autocomplete.ts +0 -16
  120. package/fake-snippets-api/routes/api/bug_reports/create.ts +0 -43
  121. package/fake-snippets-api/routes/api/bug_reports/upload_file.ts +0 -113
  122. package/fake-snippets-api/routes/api/datasheets/create.ts +0 -18
  123. package/fake-snippets-api/routes/api/datasheets/get.ts +0 -35
  124. package/fake-snippets-api/routes/api/datasheets/list.ts +0 -29
  125. package/fake-snippets-api/routes/api/github/installations/create_new_installation_redirect.ts +0 -75
  126. package/fake-snippets-api/routes/api/github/repos/list_available.ts +0 -91
  127. package/fake-snippets-api/routes/api/github/repos/refresh.ts +0 -44
  128. package/fake-snippets-api/routes/api/health.ts +0 -9
  129. package/fake-snippets-api/routes/api/internal/sessions/create_without_auth.ts +0 -63
  130. package/fake-snippets-api/routes/api/order_files/get.ts +0 -28
  131. package/fake-snippets-api/routes/api/order_files/upload.ts +0 -46
  132. package/fake-snippets-api/routes/api/order_quotes/create.ts +0 -60
  133. package/fake-snippets-api/routes/api/order_quotes/create_all_vendor_quotes.ts +0 -30
  134. package/fake-snippets-api/routes/api/order_quotes/get.ts +0 -29
  135. package/fake-snippets-api/routes/api/orders/create.ts +0 -70
  136. package/fake-snippets-api/routes/api/orders/get.ts +0 -168
  137. package/fake-snippets-api/routes/api/orders/list.ts +0 -15
  138. package/fake-snippets-api/routes/api/orgs/add_member.ts +0 -52
  139. package/fake-snippets-api/routes/api/orgs/create.ts +0 -48
  140. package/fake-snippets-api/routes/api/orgs/get.ts +0 -39
  141. package/fake-snippets-api/routes/api/orgs/get_member.ts +0 -67
  142. package/fake-snippets-api/routes/api/orgs/list.ts +0 -31
  143. package/fake-snippets-api/routes/api/orgs/list_members.ts +0 -106
  144. package/fake-snippets-api/routes/api/orgs/remove_member.ts +0 -46
  145. package/fake-snippets-api/routes/api/orgs/update.ts +0 -118
  146. package/fake-snippets-api/routes/api/package_builds/get.ts +0 -70
  147. package/fake-snippets-api/routes/api/package_builds/list.ts +0 -97
  148. package/fake-snippets-api/routes/api/package_files/create.ts +0 -135
  149. package/fake-snippets-api/routes/api/package_files/create_or_update.ts +0 -194
  150. package/fake-snippets-api/routes/api/package_files/delete.ts +0 -109
  151. package/fake-snippets-api/routes/api/package_files/download.ts +0 -87
  152. package/fake-snippets-api/routes/api/package_files/get.ts +0 -68
  153. package/fake-snippets-api/routes/api/package_files/list.ts +0 -54
  154. package/fake-snippets-api/routes/api/package_releases/create.ts +0 -109
  155. package/fake-snippets-api/routes/api/package_releases/get.ts +0 -137
  156. package/fake-snippets-api/routes/api/package_releases/list.ts +0 -85
  157. package/fake-snippets-api/routes/api/package_releases/rebuild.ts +0 -66
  158. package/fake-snippets-api/routes/api/package_releases/update.ts +0 -122
  159. package/fake-snippets-api/routes/api/packages/add_star.ts +0 -84
  160. package/fake-snippets-api/routes/api/packages/create.ts +0 -136
  161. package/fake-snippets-api/routes/api/packages/delete.ts +0 -41
  162. package/fake-snippets-api/routes/api/packages/fork.ts +0 -165
  163. package/fake-snippets-api/routes/api/packages/generate_from_jlcpcb.ts +0 -111
  164. package/fake-snippets-api/routes/api/packages/get.ts +0 -81
  165. package/fake-snippets-api/routes/api/packages/images/[owner_github_username]/[unscoped_name]/[view_format].ts +0 -119
  166. package/fake-snippets-api/routes/api/packages/list.ts +0 -105
  167. package/fake-snippets-api/routes/api/packages/list_latest.ts +0 -29
  168. package/fake-snippets-api/routes/api/packages/list_trending.ts +0 -43
  169. package/fake-snippets-api/routes/api/packages/remove_star.ts +0 -70
  170. package/fake-snippets-api/routes/api/packages/search.ts +0 -19
  171. package/fake-snippets-api/routes/api/packages/update.ts +0 -112
  172. package/fake-snippets-api/routes/api/packages/update_ai_description.ts +0 -37
  173. package/fake-snippets-api/routes/api/proxy.ts +0 -128
  174. package/fake-snippets-api/routes/api/snippets/add_star.ts +0 -62
  175. package/fake-snippets-api/routes/api/snippets/create.ts +0 -184
  176. package/fake-snippets-api/routes/api/snippets/delete.ts +0 -41
  177. package/fake-snippets-api/routes/api/snippets/download.ts +0 -162
  178. package/fake-snippets-api/routes/api/snippets/generate_from_jlcpcb.ts +0 -48
  179. package/fake-snippets-api/routes/api/snippets/get.ts +0 -83
  180. package/fake-snippets-api/routes/api/snippets/get_image.ts +0 -65
  181. package/fake-snippets-api/routes/api/snippets/images/[author]/[snippet_name]/[typeFormat].ts +0 -80
  182. package/fake-snippets-api/routes/api/snippets/list.ts +0 -151
  183. package/fake-snippets-api/routes/api/snippets/list_latest.ts +0 -13
  184. package/fake-snippets-api/routes/api/snippets/list_trending.ts +0 -38
  185. package/fake-snippets-api/routes/api/snippets/remove_star.ts +0 -42
  186. package/fake-snippets-api/routes/api/snippets/search.ts +0 -18
  187. package/fake-snippets-api/routes/api/snippets/update.ts +0 -114
  188. package/fake-snippets-api/utils/normalizeProjectFilePath.ts +0 -60
  189. package/fake-snippets-api/utils/order-steps.ts +0 -20
  190. package/favicon.ico +0 -0
  191. package/index.html +0 -125
  192. package/landing.html +0 -23
  193. package/playwright-tests/ai-page.spec.ts +0 -19
  194. package/playwright-tests/circuit-json-import.spec.ts +0 -133
  195. package/playwright-tests/cmd-click.spec.ts +0 -43
  196. package/playwright-tests/dashboard-page.spec.ts +0 -10
  197. package/playwright-tests/editor-page.spec.ts +0 -15
  198. package/playwright-tests/exampleCircuitJson.ts +0 -498
  199. package/playwright-tests/files-dialog.spec.ts +0 -19
  200. package/playwright-tests/footprint-dialog/footprint-dialog.spec.ts +0 -27
  201. package/playwright-tests/footprint-dialog/footprint-insertion.spec.ts +0 -38
  202. package/playwright-tests/footprint-dialog/footprint-preview.spec.ts +0 -34
  203. package/playwright-tests/footprint-dialog/footprint-selection.spec.ts +0 -29
  204. package/playwright-tests/handle-manual-edits.spec.ts +0 -55
  205. package/playwright-tests/home-page.spec.ts +0 -10
  206. package/playwright-tests/images.spec.ts +0 -17
  207. package/playwright-tests/manual-edits.spec.ts +0 -89
  208. package/playwright-tests/preview-page.spec.ts +0 -7
  209. package/playwright-tests/profile-page.spec.ts +0 -108
  210. package/playwright-tests/quickstart-page.spec.ts +0 -10
  211. package/playwright-tests/search-links.spec.ts +0 -21
  212. package/playwright-tests/search.spec.ts +0 -27
  213. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-lg.png +0 -0
  214. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-md.png +0 -0
  215. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-xs.png +0 -0
  216. package/playwright-tests/snapshots/cmd-click.spec.ts-underlined-imports.png +0 -0
  217. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-lg.png +0 -0
  218. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-md.png +0 -0
  219. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-xs.png +0 -0
  220. package/playwright-tests/snapshots/editor-page.spec.ts-editor-with-snippet.png +0 -0
  221. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-lg.png +0 -0
  222. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-md.png +0 -0
  223. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-xs.png +0 -0
  224. package/playwright-tests/snapshots/files-dialog.spec.ts-view-snippet-files.png +0 -0
  225. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-lg.png +0 -0
  226. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-md.png +0 -0
  227. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-xs.png +0 -0
  228. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-lg.png +0 -0
  229. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-md.png +0 -0
  230. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-xs.png +0 -0
  231. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-lg.png +0 -0
  232. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-md.png +0 -0
  233. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-xs.png +0 -0
  234. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-lg.png +0 -0
  235. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-md.png +0 -0
  236. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-xs.png +0 -0
  237. package/playwright-tests/snapshots/handle-manual-edits.spec.ts-handle-manual-edits.png +0 -0
  238. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-lg.png +0 -0
  239. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-md.png +0 -0
  240. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-xs.png +0 -0
  241. package/playwright-tests/snapshots/images.spec.ts-pcb-image.png +0 -0
  242. package/playwright-tests/snapshots/images.spec.ts-schematic-image.png +0 -0
  243. package/playwright-tests/snapshots/manual-edits.spec.ts-editor-manual-edits.png +0 -0
  244. package/playwright-tests/snapshots/manual-edits.spec.ts-manual-edits-view.png +0 -0
  245. package/playwright-tests/snapshots/preview-page.spec.ts-preview-snippet-pcb.png +0 -0
  246. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-before-delete.png +0 -0
  247. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-delete-dialog.png +0 -0
  248. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-dropdown-open.png +0 -0
  249. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-snippets-tab.png +0 -0
  250. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-starred-tab.png +0 -0
  251. package/playwright-tests/snapshots/profile-page.spec.ts-snippet-page-open-after-star-click.png +0 -0
  252. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagelg.png +0 -0
  253. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagemd.png +0 -0
  254. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagexs.png +0 -0
  255. package/playwright-tests/snapshots/search-links.spec.ts-search-links.png +0 -0
  256. package/playwright-tests/snapshots/search.spec.ts-search-lg.png +0 -0
  257. package/playwright-tests/snapshots/search.spec.ts-search-md.png +0 -0
  258. package/playwright-tests/snapshots/search.spec.ts-search-xs.png +0 -0
  259. package/playwright-tests/snapshots/star.spec.ts-remove-star-button.png +0 -0
  260. package/playwright-tests/snapshots/star.spec.ts-star-button.png +0 -0
  261. package/playwright-tests/snapshots/update-description.spec.ts-update-description.png +0 -0
  262. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-lg.png +0 -0
  263. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-md.png +0 -0
  264. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-xs.png +0 -0
  265. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-lg.png +0 -0
  266. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-md.png +0 -0
  267. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-xs.png +0 -0
  268. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-files.png +0 -0
  269. package/playwright-tests/star.spec.ts +0 -40
  270. package/playwright-tests/update-description.spec.ts +0 -18
  271. package/playwright-tests/view-snippet.spec.ts +0 -35
  272. package/playwright-tests/viewports.ts +0 -5
  273. package/playwright.config.ts +0 -27
  274. package/postcss.config.js +0 -6
  275. package/public/robots.txt +0 -9
  276. package/renovate.json +0 -25
  277. package/scripts/generate-image-sizes.ts +0 -57
  278. package/scripts/generate-sitemap.ts +0 -103
  279. package/scripts/generate_bundle_stats.js +0 -208
  280. package/scripts/snapshot.ts +0 -35
  281. package/src/App.tsx +0 -314
  282. package/src/ContextProviders.tsx +0 -94
  283. package/src/assets/originals/editor_example_1.webp +0 -0
  284. package/src/assets/originals/editor_example_1_more_square.webp +0 -0
  285. package/src/assets/originals/editor_example_2.webp +0 -0
  286. package/src/assets/originals/example_schematic.webp +0 -0
  287. package/src/components/AiChatMessage.tsx +0 -86
  288. package/src/components/Analytics.tsx +0 -23
  289. package/src/components/BomTable.tsx +0 -69
  290. package/src/components/ChatInput.tsx +0 -53
  291. package/src/components/CircuitJsonImportDialog.tsx +0 -269
  292. package/src/components/CircuitToSvgWithMouseControl.tsx +0 -78
  293. package/src/components/CmdKMenu.tsx +0 -809
  294. package/src/components/CreateNewSnippetWithAiHero.tsx +0 -81
  295. package/src/components/CreateReleaseDialog.tsx +0 -124
  296. package/src/components/DownloadButtonAndMenu.tsx +0 -443
  297. package/src/components/ErrorFallback.tsx +0 -25
  298. package/src/components/ErrorOutline.tsx +0 -35
  299. package/src/components/ErrorTabContent.tsx +0 -122
  300. package/src/components/ExpandableText.tsx +0 -29
  301. package/src/components/FAQ.tsx +0 -189
  302. package/src/components/FileSidebar.tsx +0 -271
  303. package/src/components/Footer.tsx +0 -144
  304. package/src/components/GithubAvatarWithFallback.tsx +0 -35
  305. package/src/components/Header.tsx +0 -202
  306. package/src/components/Header2.tsx +0 -202
  307. package/src/components/HeaderDropdown.tsx +0 -88
  308. package/src/components/HeaderLogin.tsx +0 -105
  309. package/src/components/HiddenFilesDropdown.tsx +0 -42
  310. package/src/components/ImageWithFallback.tsx +0 -37
  311. package/src/components/LatestSnippets.tsx +0 -39
  312. package/src/components/NotFound.tsx +0 -37
  313. package/src/components/OptimizedImage.tsx +0 -100
  314. package/src/components/PackageBreadcrumb.tsx +0 -105
  315. package/src/components/PackageBuildsPage/ErrorObject.ts +0 -12
  316. package/src/components/PackageBuildsPage/capitalCase.ts +0 -4
  317. package/src/components/PackageBuildsPage/getColorForDisplayStatus.ts +0 -17
  318. package/src/components/PackageCard.tsx +0 -191
  319. package/src/components/PackageCardSkeleton.tsx +0 -17
  320. package/src/components/PackageLink.tsx +0 -29
  321. package/src/components/PackageSearchResults.tsx +0 -81
  322. package/src/components/PackagesList.tsx +0 -71
  323. package/src/components/PcbViewerWithContainerHeight.tsx +0 -47
  324. package/src/components/PrefetchPageLink.tsx +0 -114
  325. package/src/components/PreviewEmptyState.tsx +0 -16
  326. package/src/components/ProfileRouter.tsx +0 -30
  327. package/src/components/RunButton.tsx +0 -27
  328. package/src/components/SearchComponent.tsx +0 -282
  329. package/src/components/SentryNotFoundReporter.tsx +0 -44
  330. package/src/components/SnippetTypeIcon.tsx +0 -60
  331. package/src/components/StaticPreviewContent.tsx +0 -89
  332. package/src/components/StaticViewSnippetSidebar.tsx +0 -100
  333. package/src/components/SuspenseRunFrame.tsx +0 -28
  334. package/src/components/TableViewer/CircuitJsonTableViewer.tsx +0 -316
  335. package/src/components/TableViewer/ClickableText.tsx +0 -21
  336. package/src/components/TableViewer/HeaderCell.tsx +0 -27
  337. package/src/components/TableViewer/Modal.tsx +0 -39
  338. package/src/components/TrendingPackagesCarousel.tsx +0 -79
  339. package/src/components/TypeBadge.tsx +0 -31
  340. package/src/components/UserCard.tsx +0 -80
  341. package/src/components/ViewPackagePage/components/ShikiCodeViewer.tsx +0 -49
  342. package/src/components/ViewPackagePage/components/build-status.tsx +0 -38
  343. package/src/components/ViewPackagePage/components/important-files-view.tsx +0 -611
  344. package/src/components/ViewPackagePage/components/main-content-header.tsx +0 -181
  345. package/src/components/ViewPackagePage/components/main-content-view-selector.tsx +0 -167
  346. package/src/components/ViewPackagePage/components/markdown-viewer.tsx +0 -88
  347. package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +0 -301
  348. package/src/components/ViewPackagePage/components/package-header.tsx +0 -264
  349. package/src/components/ViewPackagePage/components/preview-image-squares.tsx +0 -47
  350. package/src/components/ViewPackagePage/components/repo-page-content.tsx +0 -266
  351. package/src/components/ViewPackagePage/components/sidebar-about-section.tsx +0 -223
  352. package/src/components/ViewPackagePage/components/sidebar-packages-section.tsx +0 -16
  353. package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +0 -126
  354. package/src/components/ViewPackagePage/components/sidebar.tsx +0 -29
  355. package/src/components/ViewPackagePage/components/tab-views/3d-view.tsx +0 -43
  356. package/src/components/ViewPackagePage/components/tab-views/bom-view.tsx +0 -30
  357. package/src/components/ViewPackagePage/components/tab-views/files-view.tsx +0 -295
  358. package/src/components/ViewPackagePage/components/tab-views/pcb-view.tsx +0 -35
  359. package/src/components/ViewPackagePage/components/tab-views/schematic-view.tsx +0 -38
  360. package/src/components/ViewPackagePage/components/theme-toggle.tsx +0 -40
  361. package/src/components/ViewPackagePage/hooks/use-current-package-circuit-json.ts +0 -46
  362. package/src/components/ViewPackagePage/hooks/use-mobile.tsx +0 -19
  363. package/src/components/ViewPackagePage/hooks/use-toast.tsx +0 -69
  364. package/src/components/ViewPackagePage/utils/fuzz-search.ts +0 -121
  365. package/src/components/ViewPackagePage/utils/get-license-content.ts +0 -119
  366. package/src/components/ViewPackagePage/utils/is-hidden-file.ts +0 -55
  367. package/src/components/ViewPackagePage/utils/is-package-file-important.ts +0 -35
  368. package/src/components/ViewPackagePage/utils/is-within-directory.ts +0 -32
  369. package/src/components/dialogs/GitHubRepositorySelector.tsx +0 -300
  370. package/src/components/dialogs/confirm-delete-package-dialog.tsx +0 -74
  371. package/src/components/dialogs/confirm-discard-changes-dialog.tsx +0 -73
  372. package/src/components/dialogs/create-use-dialog.tsx +0 -40
  373. package/src/components/dialogs/edit-description-dialog.tsx +0 -96
  374. package/src/components/dialogs/edit-package-details-dialog.tsx +0 -474
  375. package/src/components/dialogs/files-dialog.tsx +0 -70
  376. package/src/components/dialogs/import-component-dialog.tsx +0 -32
  377. package/src/components/dialogs/import-package-dialog.tsx +0 -90
  378. package/src/components/dialogs/new-package-save-prompt-dialog.tsx +0 -199
  379. package/src/components/dialogs/package-visibility-settings-dialog.tsx +0 -93
  380. package/src/components/dialogs/pcb-download-dialog.tsx +0 -113
  381. package/src/components/dialogs/rename-package-dialog.tsx +0 -86
  382. package/src/components/dialogs/rename-snippet-dialog.tsx +0 -81
  383. package/src/components/dialogs/update-package-description-dialog.tsx +0 -96
  384. package/src/components/dialogs/view-ts-files-dialog.tsx +0 -664
  385. package/src/components/organization/OrganizationCard.tsx +0 -202
  386. package/src/components/organization/OrganizationCardSkeleton.tsx +0 -55
  387. package/src/components/organization/OrganizationHeader.tsx +0 -140
  388. package/src/components/organization/OrganizationMembers.tsx +0 -117
  389. package/src/components/package-port/CodeAndPreview.tsx +0 -253
  390. package/src/components/package-port/CodeEditor.tsx +0 -866
  391. package/src/components/package-port/CodeEditorHeader.tsx +0 -427
  392. package/src/components/package-port/EditorNav.tsx +0 -606
  393. package/src/components/package-port/GlobalFindReplace.tsx +0 -681
  394. package/src/components/package-port/QuickOpen.tsx +0 -241
  395. package/src/components/preview/BuildsList.tsx +0 -237
  396. package/src/components/preview/ConnectedPackagesList.tsx +0 -229
  397. package/src/components/preview/ConnectedRepoOverview.tsx +0 -588
  398. package/src/components/preview/PackageReleasesDashboard.tsx +0 -228
  399. package/src/components/preview/index.tsx +0 -54
  400. package/src/components/ui/accordion.tsx +0 -55
  401. package/src/components/ui/alert-dialog.tsx +0 -139
  402. package/src/components/ui/alert.tsx +0 -59
  403. package/src/components/ui/aspect-ratio.tsx +0 -5
  404. package/src/components/ui/avatar.tsx +0 -48
  405. package/src/components/ui/badge.tsx +0 -36
  406. package/src/components/ui/breadcrumb.tsx +0 -118
  407. package/src/components/ui/button.tsx +0 -58
  408. package/src/components/ui/calendar.tsx +0 -73
  409. package/src/components/ui/card.tsx +0 -76
  410. package/src/components/ui/carousel.tsx +0 -260
  411. package/src/components/ui/chart.tsx +0 -363
  412. package/src/components/ui/checkbox.tsx +0 -28
  413. package/src/components/ui/collapsible.tsx +0 -9
  414. package/src/components/ui/combobox.tsx +0 -178
  415. package/src/components/ui/command.tsx +0 -151
  416. package/src/components/ui/context-menu.tsx +0 -202
  417. package/src/components/ui/dialog.tsx +0 -120
  418. package/src/components/ui/drawer.tsx +0 -116
  419. package/src/components/ui/dropdown-menu.tsx +0 -203
  420. package/src/components/ui/form.tsx +0 -182
  421. package/src/components/ui/hover-card.tsx +0 -27
  422. package/src/components/ui/input.tsx +0 -25
  423. package/src/components/ui/label.tsx +0 -24
  424. package/src/components/ui/menubar.tsx +0 -238
  425. package/src/components/ui/navigation-menu.tsx +0 -129
  426. package/src/components/ui/pagination.tsx +0 -121
  427. package/src/components/ui/popover.tsx +0 -31
  428. package/src/components/ui/progress.tsx +0 -26
  429. package/src/components/ui/radio-group.tsx +0 -42
  430. package/src/components/ui/resizable.tsx +0 -43
  431. package/src/components/ui/role-badge.tsx +0 -27
  432. package/src/components/ui/scroll-area.tsx +0 -46
  433. package/src/components/ui/searchable-select.tsx +0 -94
  434. package/src/components/ui/select.tsx +0 -162
  435. package/src/components/ui/separator.tsx +0 -29
  436. package/src/components/ui/sheet.tsx +0 -141
  437. package/src/components/ui/skeleton.tsx +0 -18
  438. package/src/components/ui/slider.tsx +0 -26
  439. package/src/components/ui/sonner.tsx +0 -30
  440. package/src/components/ui/switch.tsx +0 -27
  441. package/src/components/ui/table.tsx +0 -120
  442. package/src/components/ui/tabs.tsx +0 -53
  443. package/src/components/ui/textarea.tsx +0 -24
  444. package/src/components/ui/toast.tsx +0 -128
  445. package/src/components/ui/toaster.tsx +0 -1
  446. package/src/components/ui/toggle-group.tsx +0 -59
  447. package/src/components/ui/toggle.tsx +0 -43
  448. package/src/components/ui/tooltip.tsx +0 -28
  449. package/src/components/ui/tree-view.tsx +0 -563
  450. package/src/entry-server.tsx +0 -12
  451. package/src/hooks/use-account-balance.ts +0 -25
  452. package/src/hooks/use-add-org-member-mutation.ts +0 -51
  453. package/src/hooks/use-ai-api.ts +0 -35
  454. package/src/hooks/use-ai-review.ts +0 -31
  455. package/src/hooks/use-axios.ts +0 -20
  456. package/src/hooks/use-code-completion-ai-api.ts +0 -11
  457. package/src/hooks/use-copy-to-clipboard.ts +0 -26
  458. package/src/hooks/use-create-datasheet.ts +0 -30
  459. package/src/hooks/use-create-org-mutation.ts +0 -38
  460. package/src/hooks/use-create-package-files-mutation.ts +0 -76
  461. package/src/hooks/use-create-package-mutation.ts +0 -54
  462. package/src/hooks/use-create-package-release-mutation.ts +0 -107
  463. package/src/hooks/use-create-release-dialog.ts +0 -160
  464. package/src/hooks/use-create-snippet-mutation.ts +0 -65
  465. package/src/hooks/use-current-package-id.ts +0 -16
  466. package/src/hooks/use-current-package-info.ts +0 -32
  467. package/src/hooks/use-current-package-release.ts +0 -48
  468. package/src/hooks/use-current-snippet-id.ts +0 -78
  469. package/src/hooks/use-current-snippet.ts +0 -24
  470. package/src/hooks/use-datasheet.ts +0 -18
  471. package/src/hooks/use-debounce.ts +0 -17
  472. package/src/hooks/use-delete-package.ts +0 -45
  473. package/src/hooks/use-download-zip.ts +0 -50
  474. package/src/hooks/use-fork-package-mutation.ts +0 -61
  475. package/src/hooks/use-global-store.ts +0 -36
  476. package/src/hooks/use-hotkey.ts +0 -116
  477. package/src/hooks/use-hydration.ts +0 -30
  478. package/src/hooks/use-is-using-fake-api.ts +0 -3
  479. package/src/hooks/use-jlcpcb-component-import.tsx +0 -164
  480. package/src/hooks/use-list-org-members.ts +0 -32
  481. package/src/hooks/use-list-user-orgs.ts +0 -25
  482. package/src/hooks/use-now.ts +0 -12
  483. package/src/hooks/use-org-by-github-handle.ts +0 -24
  484. package/src/hooks/use-org.ts +0 -24
  485. package/src/hooks/use-organization.ts +0 -42
  486. package/src/hooks/use-package-as-snippet.ts +0 -81
  487. package/src/hooks/use-package-builds.ts +0 -91
  488. package/src/hooks/use-package-by-package-id.ts +0 -24
  489. package/src/hooks/use-package-by-package-name.ts +0 -29
  490. package/src/hooks/use-package-details-form.ts +0 -146
  491. package/src/hooks/use-package-files.ts +0 -122
  492. package/src/hooks/use-package-release-by-id-or-version.ts +0 -45
  493. package/src/hooks/use-package-release-images.ts +0 -105
  494. package/src/hooks/use-package-release.ts +0 -124
  495. package/src/hooks/use-package-stars.ts +0 -163
  496. package/src/hooks/use-package.ts +0 -24
  497. package/src/hooks/use-packages-base-api-url.ts +0 -3
  498. package/src/hooks/use-preview-images.ts +0 -78
  499. package/src/hooks/use-rebuild-package-release-mutation.ts +0 -41
  500. package/src/hooks/use-remove-org-member-mutation.ts +0 -32
  501. package/src/hooks/use-request-ai-review-mutation.ts +0 -54
  502. package/src/hooks/use-run-tsx/eval-compiled-js.ts +0 -9
  503. package/src/hooks/use-shiki-highlighter.ts +0 -33
  504. package/src/hooks/use-sign-in.ts +0 -24
  505. package/src/hooks/use-snippet-by-name.ts +0 -25
  506. package/src/hooks/use-snippet.ts +0 -24
  507. package/src/hooks/use-toast.tsx +0 -90
  508. package/src/hooks/use-update-ai-description-mutation.ts +0 -42
  509. package/src/hooks/use-update-org-mutation.ts +0 -41
  510. package/src/hooks/use-url-params.ts +0 -31
  511. package/src/hooks/use-warn-user-on-page-change.ts +0 -90
  512. package/src/hooks/useFileManagement.ts +0 -602
  513. package/src/hooks/useForkPackageMutation.ts +0 -50
  514. package/src/hooks/useForkSnippetMutation.ts +0 -53
  515. package/src/hooks/useOptimizedPackageFilesLoader.ts +0 -136
  516. package/src/hooks/usePackageFilesLoader.ts +0 -58
  517. package/src/hooks/useUpdatePackageFilesMutation.ts +0 -131
  518. package/src/hooks/useUpdatePackageMutation.ts +0 -63
  519. package/src/index.css +0 -108
  520. package/src/lib/__tests__/constants.test.ts +0 -66
  521. package/src/lib/base64ToBytes.ts +0 -5
  522. package/src/lib/bytesToBase64.ts +0 -4
  523. package/src/lib/codemirror/basic-setup.ts +0 -67
  524. package/src/lib/constants.ts +0 -23
  525. package/src/lib/decodeUrlHashToFsMap.ts +0 -17
  526. package/src/lib/decodeUrlHashToText.ts +0 -15
  527. package/src/lib/defaultCodeForBlankCode.tsx +0 -7
  528. package/src/lib/download-fns/createBlobURL.ts +0 -4
  529. package/src/lib/download-fns/download-assembly-svg.ts +0 -12
  530. package/src/lib/download-fns/download-circuit-json-fn.ts +0 -12
  531. package/src/lib/download-fns/download-circuit-png.ts +0 -96
  532. package/src/lib/download-fns/download-dsn-file-fn.ts +0 -12
  533. package/src/lib/download-fns/download-fabrication-files.ts +0 -233
  534. package/src/lib/download-fns/download-gltf-from-circuit-json.ts +0 -44
  535. package/src/lib/download-fns/download-gltf.ts +0 -43
  536. package/src/lib/download-fns/download-kicad-files.ts +0 -38
  537. package/src/lib/download-fns/download-pcb-svg.ts +0 -35
  538. package/src/lib/download-fns/download-png-utils.ts +0 -31
  539. package/src/lib/download-fns/download-readable-netlist.ts +0 -12
  540. package/src/lib/download-fns/download-schematic-svg.ts +0 -12
  541. package/src/lib/download-fns/download-simple-route-json.ts +0 -17
  542. package/src/lib/download-fns/download-spice-file.ts +0 -13
  543. package/src/lib/download-fns/download-step.ts +0 -12
  544. package/src/lib/encodeFsMapToUrlHash.ts +0 -13
  545. package/src/lib/encodeTextToUrlHash.ts +0 -17
  546. package/src/lib/get-snippet-template.ts +0 -26
  547. package/src/lib/getLicenseFromLicenseContent.ts +0 -67
  548. package/src/lib/handleManualEditsImport.tsx +0 -65
  549. package/src/lib/handleManualEditsImportWithSupportForMultipleFiles.ts +0 -67
  550. package/src/lib/normalize-svg-for-tile.ts +0 -50
  551. package/src/lib/populate-query-cache-with-ssr-data.ts +0 -53
  552. package/src/lib/posthog.ts +0 -17
  553. package/src/lib/react-query-api-failure-tracking.ts +0 -148
  554. package/src/lib/sentry.ts +0 -14
  555. package/src/lib/templates/blank-3d-model-template.ts +0 -12
  556. package/src/lib/templates/blank-circuit-board-template.ts +0 -20
  557. package/src/lib/templates/blank-footprint-template.ts +0 -29
  558. package/src/lib/templates/blank-package-template.ts +0 -21
  559. package/src/lib/templates/blinking-led-board-template.ts +0 -64
  560. package/src/lib/templates/usb-c-led-flashlight-template.ts +0 -22
  561. package/src/lib/ts-lib-cache.ts +0 -162
  562. package/src/lib/types.ts +0 -31
  563. package/src/lib/utils/checkIfManualEditsImported.ts +0 -20
  564. package/src/lib/utils/findTargetFile.ts +0 -97
  565. package/src/lib/utils/formatTimeAgo.ts +0 -10
  566. package/src/lib/utils/getPackagePreviewImageUrl.ts +0 -15
  567. package/src/lib/utils/index.ts +0 -6
  568. package/src/lib/utils/isComponentExported.ts +0 -10
  569. package/src/lib/utils/isUuid.ts +0 -5
  570. package/src/lib/utils/isValidFileName.ts +0 -17
  571. package/src/lib/utils/load-prettier.ts +0 -23
  572. package/src/lib/utils/member-role.tsx +0 -61
  573. package/src/lib/utils/package-utils.ts +0 -7
  574. package/src/lib/utils/parseJsonOrNull.ts +0 -8
  575. package/src/lib/utils/pcbManualEditEventHandler.ts +0 -156
  576. package/src/lib/utils/resolveRelativePath.ts +0 -40
  577. package/src/lib/utils/timeAgo.ts +0 -20
  578. package/src/lib/utils/toastManualEditConflicts.tsx +0 -39
  579. package/src/lib/utils/transformFilesToTreeData.tsx +0 -195
  580. package/src/main.tsx +0 -15
  581. package/src/pages/404.tsx +0 -23
  582. package/src/pages/authorize.tsx +0 -208
  583. package/src/pages/create-organization.tsx +0 -169
  584. package/src/pages/dashboard.tsx +0 -254
  585. package/src/pages/datasheet.tsx +0 -198
  586. package/src/pages/datasheets.tsx +0 -148
  587. package/src/pages/dev-login.tsx +0 -68
  588. package/src/pages/editor.tsx +0 -54
  589. package/src/pages/landing.tsx +0 -237
  590. package/src/pages/latest.tsx +0 -145
  591. package/src/pages/my-orders.tsx +0 -54
  592. package/src/pages/organization-profile.tsx +0 -197
  593. package/src/pages/organization-settings.tsx +0 -571
  594. package/src/pages/package-editor.tsx +0 -60
  595. package/src/pages/preview-release.tsx +0 -209
  596. package/src/pages/quickstart.tsx +0 -258
  597. package/src/pages/release-builds.tsx +0 -99
  598. package/src/pages/release-detail.tsx +0 -211
  599. package/src/pages/releases.tsx +0 -55
  600. package/src/pages/search.tsx +0 -288
  601. package/src/pages/settings-redirect.tsx +0 -44
  602. package/src/pages/trending.tsx +0 -201
  603. package/src/pages/user-profile.tsx +0 -330
  604. package/src/pages/user-settings.tsx +0 -161
  605. package/src/pages/view-package.tsx +0 -90
  606. package/src/types/package.ts +0 -4
  607. package/src/vite-env.d.ts +0 -1
  608. package/tailwind.config.js +0 -47
  609. package/tsconfig.json +0 -30
  610. package/vercel.json +0 -50
  611. package/vite.config.ts +0 -236
  612. package/winterspec.config.ts +0 -6
@@ -1,571 +0,0 @@
1
- import { useState, useEffect } from "react"
2
- import { useForm } from "react-hook-form"
3
- import { zodResolver } from "@hookform/resolvers/zod"
4
- import { z } from "zod"
5
- import { useParams, useLocation, Link, Redirect } from "wouter"
6
- import { Helmet } from "react-helmet-async"
7
- import {
8
- Form,
9
- FormControl,
10
- FormDescription,
11
- FormField,
12
- FormItem,
13
- FormLabel,
14
- FormMessage,
15
- } from "@/components/ui/form"
16
- import { Input } from "@/components/ui/input"
17
- import { Button } from "@/components/ui/button"
18
- import { Badge } from "@/components/ui/badge"
19
- import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
20
- import {
21
- AlertDialog,
22
- AlertDialogAction,
23
- AlertDialogCancel,
24
- AlertDialogContent,
25
- AlertDialogDescription,
26
- AlertDialogFooter,
27
- AlertDialogHeader,
28
- AlertDialogTitle,
29
- } from "@/components/ui/alert-dialog"
30
- import { useToast } from "@/hooks/use-toast"
31
- import { useUpdateOrgMutation } from "@/hooks/use-update-org-mutation"
32
- import { useListOrgMembers } from "@/hooks/use-list-org-members"
33
- import { useAddOrgMemberMutation } from "@/hooks/use-add-org-member-mutation"
34
- import { useRemoveOrgMemberMutation } from "@/hooks/use-remove-org-member-mutation"
35
- import { useGlobalStore } from "@/hooks/use-global-store"
36
- import { Account } from "fake-snippets-api/lib/db/schema"
37
- import { cn } from "@/lib/utils"
38
- import {
39
- Users,
40
- AlertTriangle,
41
- Loader2,
42
- PlusIcon,
43
- ArrowLeft,
44
- Building2,
45
- } from "lucide-react"
46
- import { getMemberRole, getRoleDescription } from "@/lib/utils/member-role"
47
- import { RoleBadge } from "@/components/ui/role-badge"
48
- import Header from "@/components/Header"
49
- import Footer from "@/components/Footer"
50
- import NotFoundPage from "@/pages/404"
51
- import { FullPageLoader } from "@/App"
52
- import { OrganizationHeader } from "@/components/organization/OrganizationHeader"
53
- import { useOrganization } from "@/hooks/use-organization"
54
-
55
- const organizationSettingsSchema = z.object({
56
- name: z
57
- .string()
58
- .min(1, "Organization name is required")
59
- .max(50, "Organization name must be 50 characters or less")
60
- .regex(
61
- /^[a-zA-Z0-9_-]+$/,
62
- "Organization name can only contain letters, numbers, underscores, and hyphens",
63
- ),
64
- })
65
-
66
- type OrganizationSettingsFormData = z.infer<typeof organizationSettingsSchema>
67
-
68
- export default function OrganizationSettingsPage() {
69
- const { orgname } = useParams()
70
- const [, navigate] = useLocation()
71
- const { toast } = useToast()
72
- const session = useGlobalStore((s) => s.session)
73
-
74
- const {
75
- organization,
76
- isLoading: isLoadingOrg,
77
- error: orgError,
78
- } = useOrganization({
79
- orgName: orgname,
80
- })
81
-
82
- const [showRemoveMemberDialog, setShowRemoveMemberDialog] = useState<{
83
- member: Account
84
- show: boolean
85
- }>({ member: {} as Account, show: false })
86
- const [newMemberInput, setNewMemberInput] = useState("")
87
- const [addMemberError, setAddMemberError] = useState("")
88
-
89
- const form = useForm<OrganizationSettingsFormData>({
90
- resolver: zodResolver(organizationSettingsSchema),
91
- defaultValues: {
92
- name: "",
93
- },
94
- })
95
-
96
- const { data: members = [], isLoading: isLoadingMembers } = useListOrgMembers(
97
- {
98
- orgId: organization?.org_id || "",
99
- },
100
- )
101
-
102
- const updateOrgMutation = useUpdateOrgMutation({
103
- onSuccess: (updatedOrg) => {
104
- toast({
105
- title: "Organization updated",
106
- description: "Organization settings have been updated successfully.",
107
- })
108
- form.reset({ name: updatedOrg.name || "" })
109
- if (updatedOrg.name !== orgname) {
110
- navigate(`/${updatedOrg.name}/settings`)
111
- }
112
- },
113
- })
114
-
115
- const addMemberMutation = useAddOrgMemberMutation({
116
- onSuccess: () => {
117
- toast({
118
- title: "Member added",
119
- description: "Member has been added to the organization successfully.",
120
- })
121
- setNewMemberInput("")
122
- setAddMemberError("")
123
- },
124
- onError: (error: any) => {
125
- const errorMessage = error?.data?.error?.message
126
- setAddMemberError(errorMessage)
127
-
128
- toast({
129
- title: "Failed to add member",
130
- description:
131
- errorMessage || "An error occurred while adding the member.",
132
- variant: "destructive",
133
- })
134
- },
135
- })
136
-
137
- const removeMemberMutation = useRemoveOrgMemberMutation({
138
- onSuccess: () => {
139
- toast({
140
- title: "Member removed",
141
- description: "Member has been removed from the organization.",
142
- })
143
- setShowRemoveMemberDialog({ member: {} as Account, show: false })
144
- },
145
- })
146
-
147
- useEffect(() => {
148
- if (organization) {
149
- form.reset({ name: organization.name || "" })
150
- }
151
- }, [organization, form])
152
-
153
- if (!orgname) {
154
- return <NotFoundPage />
155
- }
156
-
157
- if (isLoadingOrg) {
158
- return <FullPageLoader />
159
- }
160
-
161
- if (orgError || !organization) {
162
- return <NotFoundPage heading="Organization Not Found" />
163
- }
164
-
165
- const pageTitle = organization?.name
166
- ? `${organization.name} Settings - tscircuit`
167
- : orgname
168
- ? `${orgname} Settings - tscircuit`
169
- : "Organization Settings - tscircuit"
170
-
171
- const canManageOrg =
172
- organization.user_permissions?.can_manage_org ||
173
- organization.owner_account_id === session?.account_id
174
-
175
- if (organization.is_personal_org) {
176
- return <Redirect to="/settings" />
177
- }
178
-
179
- if (!canManageOrg) {
180
- return (
181
- <div className="min-h-screen bg-white">
182
- <Helmet>
183
- <title>{pageTitle}</title>
184
- </Helmet>
185
- <Header />
186
- <Redirect to="/dashboard" />
187
- <main className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-20">
188
- <div className="text-center">
189
- <div className="mx-auto h-24 w-24 rounded-full bg-red-100 flex items-center justify-center mb-6">
190
- <AlertTriangle className="h-12 w-12 text-red-600" />
191
- </div>
192
- <h1 className="text-2xl font-semibold text-gray-900 mb-3">
193
- Access denied
194
- </h1>
195
- <p className="text-gray-600 mb-8 max-w-md mx-auto">
196
- You don't have permission to manage this organization's settings.
197
- Only organization owners and members with admin access can view
198
- this page.
199
- </p>
200
- <div className="flex flex-col sm:flex-row gap-3 justify-center">
201
- <Button variant="outline" onClick={() => navigate(`/${orgname}`)}>
202
- <ArrowLeft className="h-4 w-4 mr-2" />
203
- Back to {orgname}
204
- </Button>
205
- <Button onClick={() => navigate("/dashboard")}>
206
- Go to Dashboard
207
- </Button>
208
- </div>
209
- </div>
210
- </main>
211
- <Footer />
212
- </div>
213
- )
214
- }
215
-
216
- const onSubmit = (data: OrganizationSettingsFormData) => {
217
- if (!organization) return
218
- updateOrgMutation.mutate({
219
- orgId: organization.org_id,
220
- name: data.name,
221
- })
222
- }
223
-
224
- const handleAddMember = () => {
225
- if (!newMemberInput.trim() || !organization) return
226
-
227
- // Clear previous errors
228
- setAddMemberError("")
229
-
230
- const input = newMemberInput.trim()
231
-
232
- // Basic validation
233
- if (input.length < 1) {
234
- setAddMemberError("Please enter a GitHub username.")
235
- return
236
- }
237
-
238
- if (input.length > 39) {
239
- setAddMemberError("GitHub usernames cannot be longer than 39 characters.")
240
- return
241
- }
242
-
243
- // Check for invalid characters (GitHub usernames can only contain alphanumeric characters and hyphens)
244
- if (!/^[a-zA-Z0-9-]+$/.test(input)) {
245
- setAddMemberError(
246
- "GitHub usernames can only contain letters, numbers, and hyphens.",
247
- )
248
- return
249
- }
250
-
251
- // Check if it starts or ends with hyphen
252
- if (input.startsWith("-") || input.endsWith("-")) {
253
- setAddMemberError("GitHub usernames cannot start or end with a hyphen.")
254
- return
255
- }
256
-
257
- addMemberMutation.mutate({
258
- orgId: organization.org_id,
259
- githubUsername: input,
260
- })
261
- }
262
-
263
- const handleRemoveMember = (member: Account) => {
264
- if (!organization) return
265
- if (member.account_id === organization.owner_account_id) {
266
- toast({
267
- title: "Cannot remove owner",
268
- description: "The organization owner cannot be removed.",
269
- variant: "destructive",
270
- })
271
- return
272
- }
273
- setShowRemoveMemberDialog({ member, show: true })
274
- }
275
-
276
- const confirmRemoveMember = () => {
277
- if (!organization) return
278
- removeMemberMutation.mutate({
279
- orgId: organization.org_id,
280
- accountId: showRemoveMemberDialog.member.account_id,
281
- })
282
- }
283
-
284
- return (
285
- <div className="min-h-screen bg-white">
286
- <Helmet>
287
- <title>{pageTitle}</title>
288
- </Helmet>
289
- <Header />
290
-
291
- <main className="w-full px-4 sm:px-6 lg:px-8 xl:px-12 2xl:px-16">
292
- <OrganizationHeader organization={organization} showActions={false} />
293
-
294
- <div className="py-8">
295
- {/* Main Content */}
296
- <div className="max-w-7xl mx-auto space-y-8">
297
- {/* Organization Profile */}
298
- <div className="bg-white border border-gray-200 rounded-xl shadow-sm">
299
- <div className="px-6 py-5 border-b border-gray-200 bg-gray-50">
300
- <h2 className="text-xl font-semibold text-gray-900">
301
- Organization profile
302
- </h2>
303
- <p className="text-sm text-gray-600 mt-2">
304
- Update your organization's basic information and settings.
305
- </p>
306
- </div>
307
-
308
- <div className="p-6 lg:p-8">
309
- <Form {...form}>
310
- <form
311
- onSubmit={form.handleSubmit(onSubmit)}
312
- className="space-y-6"
313
- >
314
- <FormField
315
- control={form.control}
316
- name="name"
317
- render={({ field }) => (
318
- <FormItem className="grid grid-cols-1 lg:grid-cols-5 gap-6 items-start">
319
- <div className="lg:col-span-2">
320
- <FormLabel className="text-sm font-semibold text-gray-900">
321
- Organization name
322
- </FormLabel>
323
- <FormDescription className="text-sm text-gray-500 mt-2 leading-relaxed">
324
- This is your organization's display name and URL
325
- identifier. Choose carefully as this affects your
326
- organization's web address.
327
- </FormDescription>
328
- </div>
329
- <div className="lg:col-span-3">
330
- <FormControl>
331
- <Input
332
- placeholder="Enter organization name"
333
- {...field}
334
- disabled={updateOrgMutation.isLoading}
335
- className="w-full max-w-lg h-11 text-base border-gray-300 focus:border-blue-500 focus:ring-blue-500"
336
- />
337
- </FormControl>
338
- <FormMessage className="mt-2" />
339
- </div>
340
- </FormItem>
341
- )}
342
- />
343
-
344
- <div className="pt-6 border-t border-gray-200 flex flex-col sm:flex-row gap-3">
345
- <Button
346
- type="submit"
347
- disabled={
348
- updateOrgMutation.isLoading || !form.formState.isDirty
349
- }
350
- className="bg-blue-600 hover:bg-blue-700 text-white px-6 py-2.5 text-sm font-medium shadow-sm"
351
- >
352
- {updateOrgMutation.isLoading && (
353
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
354
- )}
355
- Update organization
356
- </Button>
357
- <Button
358
- type="button"
359
- variant="outline"
360
- onClick={() => form.reset()}
361
- disabled={updateOrgMutation.isLoading}
362
- className="px-6 py-2.5 text-sm font-medium border-gray-300 hover:bg-gray-50"
363
- >
364
- Reset changes
365
- </Button>
366
- </div>
367
- </form>
368
- </Form>
369
- </div>
370
- </div>
371
-
372
- {/* Members Management */}
373
- <div className="bg-white border border-gray-200 rounded-xl shadow-sm">
374
- <div className="px-6 py-5 border-b border-gray-200 bg-gray-50">
375
- <div className="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4">
376
- <div>
377
- <h2 className="text-xl font-semibold text-gray-900">
378
- Organization members
379
- </h2>
380
- <p className="text-sm text-gray-600 mt-2">
381
- Manage who has access to this organization and their
382
- permissions.
383
- </p>
384
- </div>
385
- <Badge
386
- variant="secondary"
387
- className="text-sm px-3 py-1 bg-white border border-gray-200 self-start"
388
- >
389
- {members.length} member{members.length > 1 ? "s" : ""}
390
- </Badge>
391
- </div>
392
- </div>
393
-
394
- <div className="p-6 lg:p-8">
395
- {/* Add Member Section */}
396
- <div className="mb-8 p-6 bg-gray-50 rounded-xl">
397
- <h3 className="font-semibold text-gray-900 mb-4 flex items-center gap-2">
398
- Add a member
399
- </h3>
400
- <div className="grid grid-cols-1 lg:grid-cols-5 gap-4 items-end">
401
- <div className="lg:col-span-4">
402
- <Input
403
- id="member-input"
404
- placeholder="Enter GitHub username"
405
- value={newMemberInput}
406
- onChange={(e) => {
407
- setNewMemberInput(e.target.value)
408
- // Clear error when user starts typing
409
- if (addMemberError) {
410
- setAddMemberError("")
411
- }
412
- }}
413
- disabled={addMemberMutation.isLoading}
414
- className={`w-full h-11 text-base bg-white focus:border-blue-500 focus:ring-blue-500 ${
415
- addMemberError
416
- ? "border-red-300 focus:border-red-500 focus:ring-red-500"
417
- : "border-gray-300"
418
- }`}
419
- onKeyDown={(e) => {
420
- if (
421
- e.key === "Enter" &&
422
- !addMemberMutation.isLoading
423
- ) {
424
- handleAddMember()
425
- }
426
- }}
427
- />
428
- {addMemberError && (
429
- <p className="mt-2 text-sm text-red-600">
430
- {addMemberError}
431
- </p>
432
- )}
433
- </div>
434
- <div className="lg:col-span-1">
435
- <Button
436
- onClick={handleAddMember}
437
- disabled={
438
- !newMemberInput.trim() || addMemberMutation.isLoading
439
- }
440
- className="w-full h-11 bg-blue-600 hover:bg-blue-700 text-white px-6 text-sm font-medium shadow-sm"
441
- >
442
- {addMemberMutation.isLoading ? (
443
- <Loader2 className="h-4 w-4 animate-spin mr-2" />
444
- ) : (
445
- <PlusIcon className="h-4 w-4 mr-2" />
446
- )}
447
- Add member
448
- </Button>
449
- </div>
450
- </div>
451
- </div>
452
-
453
- {/* Members List */}
454
- <div className="space-y-0 border border-gray-200 rounded-xl divide-y divide-gray-200 overflow-hidden">
455
- {isLoadingMembers ? (
456
- <div className="flex items-center justify-center py-16">
457
- <Loader2 className="h-8 w-8 animate-spin text-blue-500" />
458
- </div>
459
- ) : members.length === 0 ? (
460
- <div className="text-center py-16 text-gray-500">
461
- <Users className="h-12 w-12 mx-auto mb-4 text-gray-300" />
462
- <p className="text-lg font-medium">No members found</p>
463
- <p className="text-sm mt-1">
464
- Add your first team member to get started.
465
- </p>
466
- </div>
467
- ) : (
468
- members.map((member) => {
469
- const role = getMemberRole(
470
- organization,
471
- member.account_id,
472
- )
473
- return (
474
- <div
475
- key={member.account_id}
476
- className="flex flex-col sm:flex-row sm:items-center sm:justify-between p-5 hover:bg-gray-50 transition-all duration-200 gap-4 sm:gap-0"
477
- >
478
- <Link
479
- href={`/${member.github_username || member.account_id}`}
480
- className="flex items-center gap-4 group cursor-pointer flex-1 min-w-0"
481
- >
482
- <Avatar className="h-12 w-12">
483
- <AvatarImage
484
- src={`https://github.com/${member.github_username}.png`}
485
- alt={`${member.github_username} avatar`}
486
- />
487
- <AvatarFallback className="text-sm font-medium">
488
- {(
489
- member.github_username ||
490
- member.account_id ||
491
- ""
492
- )
493
- .slice(0, 2)
494
- .toUpperCase()}
495
- </AvatarFallback>
496
- </Avatar>
497
- <div className="min-w-0 flex-1">
498
- <div className="flex items-center gap-2">
499
- <span className="font-semibold text-gray-900 text-base group-hover:text-blue-600 transition-colors truncate">
500
- {member.github_username || member.account_id}
501
- </span>
502
- {role !== "member" && <RoleBadge role={role} />}
503
- </div>
504
- <p className="text-sm text-gray-500 truncate">
505
- {getRoleDescription(role)}
506
- </p>
507
- </div>
508
- </Link>
509
- {member.account_id !==
510
- organization.owner_account_id &&
511
- member.account_id !== session?.account_id && (
512
- <Button
513
- variant="ghost"
514
- size="sm"
515
- onClick={() => handleRemoveMember(member)}
516
- disabled={removeMemberMutation.isLoading}
517
- className="text-red-600 hover:text-red-700 hover:bg-red-50 border border-red-200 hover:border-red-300 self-start sm:self-center px-4 py-2"
518
- >
519
- Remove
520
- </Button>
521
- )}
522
- </div>
523
- )
524
- })
525
- )}
526
- </div>
527
- </div>
528
- </div>
529
- </div>
530
- </div>
531
- </main>
532
-
533
- <Footer />
534
-
535
- {/* Remove Member Confirmation Dialog */}
536
- <AlertDialog
537
- open={showRemoveMemberDialog.show}
538
- onOpenChange={(open) =>
539
- setShowRemoveMemberDialog({ ...showRemoveMemberDialog, show: open })
540
- }
541
- >
542
- <AlertDialogContent>
543
- <AlertDialogHeader>
544
- <AlertDialogTitle>Remove member</AlertDialogTitle>
545
- <AlertDialogDescription>
546
- Are you sure you want to remove{" "}
547
- <strong>
548
- {showRemoveMemberDialog.member.github_username ||
549
- showRemoveMemberDialog.member.account_id}
550
- </strong>{" "}
551
- from this organization? This action cannot be undone.
552
- </AlertDialogDescription>
553
- </AlertDialogHeader>
554
- <AlertDialogFooter>
555
- <AlertDialogCancel>Cancel</AlertDialogCancel>
556
- <AlertDialogAction
557
- onClick={confirmRemoveMember}
558
- disabled={removeMemberMutation.isLoading}
559
- className="bg-red-600 hover:bg-red-700"
560
- >
561
- {removeMemberMutation.isLoading && (
562
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
563
- )}
564
- Remove member
565
- </AlertDialogAction>
566
- </AlertDialogFooter>
567
- </AlertDialogContent>
568
- </AlertDialog>
569
- </div>
570
- )
571
- }
@@ -1,60 +0,0 @@
1
- import { CodeAndPreview } from "@/components/package-port/CodeAndPreview"
2
- import Header from "@/components/Header"
3
- import { Helmet } from "react-helmet-async"
4
- import { NotFound } from "@/components/NotFound"
5
- import { ErrorOutline } from "@/components/ErrorOutline"
6
- import { useCurrentPackageInfo } from "@/hooks/use-current-package-info"
7
-
8
- export const EditorPage = () => {
9
- const { packageInfo: pkg, error } = useCurrentPackageInfo()
10
-
11
- const uuid4RegExp = new RegExp(
12
- /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/,
13
- )
14
-
15
- const previewImageUrl =
16
- pkg?.latest_pcb_preview_image_url ??
17
- pkg?.latest_sch_preview_image_url ??
18
- pkg?.latest_cad_preview_image_url ??
19
- undefined
20
-
21
- return (
22
- <div className="flex flex-col h-screen overflow-x-hidden">
23
- <Helmet>
24
- <title>{pkg ? `${pkg.name} - tscircuit` : "tscircuit editor"}</title>
25
- {pkg && (
26
- <>
27
- <meta
28
- property="og:title"
29
- content={`${pkg.unscoped_name} - tscircuit`}
30
- />
31
- {previewImageUrl && (
32
- <>
33
- <meta property="og:image" content={previewImageUrl} />
34
- <meta name="twitter:card" content="summary_large_image" />
35
- <meta name="twitter:image" content={previewImageUrl} />
36
- </>
37
- )}
38
- </>
39
- )}
40
- </Helmet>
41
- <Header />
42
- <div className="flex-1 overflow-y-auto">
43
- {!error && <CodeAndPreview pkg={pkg} />}
44
- {error &&
45
- (error.status === 404 ||
46
- !uuid4RegExp.test(pkg?.package_id ?? "")) && (
47
- <NotFound heading="Package not found" />
48
- )}
49
- {error && error.status !== 404 && (
50
- <div className="min-h-screen grid place-items-center">
51
- <ErrorOutline
52
- error={error}
53
- description={"There was an error loading the editor page"}
54
- />
55
- </div>
56
- )}
57
- </div>
58
- </div>
59
- )
60
- }