@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.
- package/dist/bundle.js +1 -2
- package/package.json +4 -1
- package/.github/CODEOWNERS +0 -1
- package/.github/workflows/bun-formatcheck.yml +0 -26
- package/.github/workflows/bun-pver-release.yml +0 -28
- package/.github/workflows/bun-test.yml +0 -28
- package/.github/workflows/bun-typecheck.yml +0 -26
- package/.github/workflows/bundle-size-analysis.yml +0 -79
- package/.github/workflows/stale.yml +0 -40
- package/.github/workflows/update-package.yml +0 -58
- package/.github/workflows/update-snapshots.yml +0 -49
- package/CLAUDE.md +0 -92
- package/CONTRIBUTING.md +0 -59
- package/api/generated-index.js +0 -456
- package/biome.json +0 -67
- package/bun-tests/fake-snippets-api/fixtures/get-test-server.ts +0 -141
- package/bun-tests/fake-snippets-api/fixtures/preload.ts +0 -18
- package/bun-tests/fake-snippets-api/fixtures/start-server.ts +0 -48
- package/bun-tests/fake-snippets-api/routes/accounts/get.test.ts +0 -64
- package/bun-tests/fake-snippets-api/routes/accounts/get_account_balance.test.ts +0 -14
- package/bun-tests/fake-snippets-api/routes/ai_reviews/create.test.ts +0 -21
- package/bun-tests/fake-snippets-api/routes/ai_reviews/get.test.ts +0 -16
- package/bun-tests/fake-snippets-api/routes/ai_reviews/list.test.ts +0 -14
- package/bun-tests/fake-snippets-api/routes/ai_reviews/process_review.test.ts +0 -16
- package/bun-tests/fake-snippets-api/routes/bug_reports/create.test.ts +0 -37
- package/bun-tests/fake-snippets-api/routes/bug_reports/upload_file.test.ts +0 -89
- package/bun-tests/fake-snippets-api/routes/datasheets/create.test.ts +0 -16
- package/bun-tests/fake-snippets-api/routes/datasheets/get.test.ts +0 -54
- package/bun-tests/fake-snippets-api/routes/datasheets/list.test.ts +0 -49
- package/bun-tests/fake-snippets-api/routes/datasheets/process_all_datasheets.test.ts +0 -22
- package/bun-tests/fake-snippets-api/routes/datasheets/run_async_tasks.test.ts +0 -19
- package/bun-tests/fake-snippets-api/routes/health.test.ts +0 -9
- package/bun-tests/fake-snippets-api/routes/order_files/get.test.ts +0 -48
- package/bun-tests/fake-snippets-api/routes/order_files/upload.test.ts +0 -77
- package/bun-tests/fake-snippets-api/routes/order_quotes/create.test.ts +0 -33
- package/bun-tests/fake-snippets-api/routes/orders/create.test.ts +0 -17
- package/bun-tests/fake-snippets-api/routes/orders/get.test.ts +0 -199
- package/bun-tests/fake-snippets-api/routes/orders/list.test.ts +0 -30
- package/bun-tests/fake-snippets-api/routes/orgs/add_member.test.ts +0 -26
- package/bun-tests/fake-snippets-api/routes/orgs/create.test.ts +0 -37
- package/bun-tests/fake-snippets-api/routes/orgs/get.test.ts +0 -53
- package/bun-tests/fake-snippets-api/routes/orgs/get_member.test.ts +0 -110
- package/bun-tests/fake-snippets-api/routes/orgs/list.test.ts +0 -17
- package/bun-tests/fake-snippets-api/routes/orgs/list_members.test.ts +0 -24
- package/bun-tests/fake-snippets-api/routes/orgs/remove_member.test.ts +0 -81
- package/bun-tests/fake-snippets-api/routes/orgs/update.test.ts +0 -151
- package/bun-tests/fake-snippets-api/routes/package_builds/get.test.ts +0 -279
- package/bun-tests/fake-snippets-api/routes/package_builds/list.test.ts +0 -292
- package/bun-tests/fake-snippets-api/routes/package_files/create.test.ts +0 -320
- package/bun-tests/fake-snippets-api/routes/package_files/create_or_update.test.ts +0 -603
- package/bun-tests/fake-snippets-api/routes/package_files/delete.test.ts +0 -233
- package/bun-tests/fake-snippets-api/routes/package_files/download.test.ts +0 -248
- package/bun-tests/fake-snippets-api/routes/package_files/get.test.ts +0 -230
- package/bun-tests/fake-snippets-api/routes/package_files/list.test.ts +0 -212
- package/bun-tests/fake-snippets-api/routes/package_releases/create.test.ts +0 -171
- package/bun-tests/fake-snippets-api/routes/package_releases/get.test.ts +0 -181
- package/bun-tests/fake-snippets-api/routes/package_releases/get_image_generation_fields.test.ts +0 -38
- package/bun-tests/fake-snippets-api/routes/package_releases/list.test.ts +0 -149
- package/bun-tests/fake-snippets-api/routes/package_releases/update.test.ts +0 -160
- package/bun-tests/fake-snippets-api/routes/packages/add_star.test.ts +0 -129
- package/bun-tests/fake-snippets-api/routes/packages/create.test.ts +0 -67
- package/bun-tests/fake-snippets-api/routes/packages/delete.test.ts +0 -74
- package/bun-tests/fake-snippets-api/routes/packages/fork.test.ts +0 -132
- package/bun-tests/fake-snippets-api/routes/packages/get.test.ts +0 -112
- package/bun-tests/fake-snippets-api/routes/packages/images.test.ts +0 -72
- package/bun-tests/fake-snippets-api/routes/packages/list-1.test.ts +0 -145
- package/bun-tests/fake-snippets-api/routes/packages/list-2.test.ts +0 -48
- package/bun-tests/fake-snippets-api/routes/packages/list_latest.test.ts +0 -110
- package/bun-tests/fake-snippets-api/routes/packages/list_trending.test.ts +0 -103
- package/bun-tests/fake-snippets-api/routes/packages/remove_star.test.ts +0 -131
- package/bun-tests/fake-snippets-api/routes/packages/update.test.ts +0 -217
- package/bun-tests/fake-snippets-api/routes/proxy.test.ts +0 -42
- package/bun.lock +0 -2724
- package/bunfig.toml +0 -3
- package/components.json +0 -20
- package/docs/CIRCUIT_JSON_SOURCE_COMPONENT_OVERVIEW.md +0 -151
- package/fake-snippets-api/README.md +0 -6
- package/fake-snippets-api/biome.json +0 -47
- package/fake-snippets-api/bun.lockb +0 -0
- package/fake-snippets-api/lib/db/autoload-dev-packages.ts +0 -222
- package/fake-snippets-api/lib/db/autoload-packages.json +0 -8
- package/fake-snippets-api/lib/db/db-client.ts +0 -1857
- package/fake-snippets-api/lib/db/schema.ts +0 -502
- package/fake-snippets-api/lib/db/seed.ts +0 -1843
- package/fake-snippets-api/lib/index.ts +0 -3
- package/fake-snippets-api/lib/middleware/with-ctx-error.ts +0 -26
- package/fake-snippets-api/lib/middleware/with-db.ts +0 -15
- package/fake-snippets-api/lib/middleware/with-error-handling.ts +0 -24
- package/fake-snippets-api/lib/middleware/with-optional-session-auth.ts +0 -53
- package/fake-snippets-api/lib/middleware/with-request-logging.ts +0 -54
- package/fake-snippets-api/lib/middleware/with-session-auth.ts +0 -102
- package/fake-snippets-api/lib/middleware/with-winter-spec.ts +0 -24
- package/fake-snippets-api/lib/package_file/generate-fs-sha.ts +0 -20
- package/fake-snippets-api/lib/package_file/get-package-file-id-from-file-descriptor.ts +0 -173
- package/fake-snippets-api/lib/package_release/find-package-release-id.ts +0 -120
- package/fake-snippets-api/lib/public-mapping/public-map-org.ts +0 -34
- package/fake-snippets-api/lib/public-mapping/public-map-package-build.ts +0 -48
- package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +0 -88
- package/fake-snippets-api/lib/public-mapping/public-map-package.ts +0 -60
- package/fake-snippets-api/lib/with-winter-spec.ts +0 -1
- package/fake-snippets-api/next-env.d.ts +0 -5
- package/fake-snippets-api/routes/api/_fake/ai_reviews/process_review.ts +0 -31
- package/fake-snippets-api/routes/api/_fake/datasheets/process_all_datasheets.ts +0 -38
- package/fake-snippets-api/routes/api/_fake/db.ts +0 -11
- package/fake-snippets-api/routes/api/_fake/move_orders_forward.ts +0 -65
- package/fake-snippets-api/routes/api/_fake/received_quotes.ts +0 -112
- package/fake-snippets-api/routes/api/_fake/run_async_tasks.ts +0 -12
- package/fake-snippets-api/routes/api/_fake/seed.ts +0 -13
- package/fake-snippets-api/routes/api/accounts/get.ts +0 -35
- package/fake-snippets-api/routes/api/accounts/get_account_balance.ts +0 -22
- package/fake-snippets-api/routes/api/accounts/search.ts +0 -20
- package/fake-snippets-api/routes/api/accounts/update.ts +0 -32
- package/fake-snippets-api/routes/api/ai/[...anyroute].ts +0 -31
- package/fake-snippets-api/routes/api/ai.ts +0 -2
- package/fake-snippets-api/routes/api/ai_reviews/create.ts +0 -44
- package/fake-snippets-api/routes/api/ai_reviews/get.ts +0 -24
- package/fake-snippets-api/routes/api/ai_reviews/list.ts +0 -14
- package/fake-snippets-api/routes/api/aistream/[...anyroute].ts +0 -65
- package/fake-snippets-api/routes/api/autocomplete/create_autocomplete.ts +0 -16
- package/fake-snippets-api/routes/api/bug_reports/create.ts +0 -43
- package/fake-snippets-api/routes/api/bug_reports/upload_file.ts +0 -113
- package/fake-snippets-api/routes/api/datasheets/create.ts +0 -18
- package/fake-snippets-api/routes/api/datasheets/get.ts +0 -35
- package/fake-snippets-api/routes/api/datasheets/list.ts +0 -29
- package/fake-snippets-api/routes/api/github/installations/create_new_installation_redirect.ts +0 -75
- package/fake-snippets-api/routes/api/github/repos/list_available.ts +0 -91
- package/fake-snippets-api/routes/api/github/repos/refresh.ts +0 -44
- package/fake-snippets-api/routes/api/health.ts +0 -9
- package/fake-snippets-api/routes/api/internal/sessions/create_without_auth.ts +0 -63
- package/fake-snippets-api/routes/api/order_files/get.ts +0 -28
- package/fake-snippets-api/routes/api/order_files/upload.ts +0 -46
- package/fake-snippets-api/routes/api/order_quotes/create.ts +0 -60
- package/fake-snippets-api/routes/api/order_quotes/create_all_vendor_quotes.ts +0 -30
- package/fake-snippets-api/routes/api/order_quotes/get.ts +0 -29
- package/fake-snippets-api/routes/api/orders/create.ts +0 -70
- package/fake-snippets-api/routes/api/orders/get.ts +0 -168
- package/fake-snippets-api/routes/api/orders/list.ts +0 -15
- package/fake-snippets-api/routes/api/orgs/add_member.ts +0 -52
- package/fake-snippets-api/routes/api/orgs/create.ts +0 -48
- package/fake-snippets-api/routes/api/orgs/get.ts +0 -39
- package/fake-snippets-api/routes/api/orgs/get_member.ts +0 -67
- package/fake-snippets-api/routes/api/orgs/list.ts +0 -31
- package/fake-snippets-api/routes/api/orgs/list_members.ts +0 -106
- package/fake-snippets-api/routes/api/orgs/remove_member.ts +0 -46
- package/fake-snippets-api/routes/api/orgs/update.ts +0 -118
- package/fake-snippets-api/routes/api/package_builds/get.ts +0 -70
- package/fake-snippets-api/routes/api/package_builds/list.ts +0 -97
- package/fake-snippets-api/routes/api/package_files/create.ts +0 -135
- package/fake-snippets-api/routes/api/package_files/create_or_update.ts +0 -194
- package/fake-snippets-api/routes/api/package_files/delete.ts +0 -109
- package/fake-snippets-api/routes/api/package_files/download.ts +0 -87
- package/fake-snippets-api/routes/api/package_files/get.ts +0 -68
- package/fake-snippets-api/routes/api/package_files/list.ts +0 -54
- package/fake-snippets-api/routes/api/package_releases/create.ts +0 -109
- package/fake-snippets-api/routes/api/package_releases/get.ts +0 -137
- package/fake-snippets-api/routes/api/package_releases/list.ts +0 -85
- package/fake-snippets-api/routes/api/package_releases/rebuild.ts +0 -66
- package/fake-snippets-api/routes/api/package_releases/update.ts +0 -122
- package/fake-snippets-api/routes/api/packages/add_star.ts +0 -84
- package/fake-snippets-api/routes/api/packages/create.ts +0 -136
- package/fake-snippets-api/routes/api/packages/delete.ts +0 -41
- package/fake-snippets-api/routes/api/packages/fork.ts +0 -165
- package/fake-snippets-api/routes/api/packages/generate_from_jlcpcb.ts +0 -111
- package/fake-snippets-api/routes/api/packages/get.ts +0 -81
- package/fake-snippets-api/routes/api/packages/images/[owner_github_username]/[unscoped_name]/[view_format].ts +0 -119
- package/fake-snippets-api/routes/api/packages/list.ts +0 -105
- package/fake-snippets-api/routes/api/packages/list_latest.ts +0 -29
- package/fake-snippets-api/routes/api/packages/list_trending.ts +0 -43
- package/fake-snippets-api/routes/api/packages/remove_star.ts +0 -70
- package/fake-snippets-api/routes/api/packages/search.ts +0 -19
- package/fake-snippets-api/routes/api/packages/update.ts +0 -112
- package/fake-snippets-api/routes/api/packages/update_ai_description.ts +0 -37
- package/fake-snippets-api/routes/api/proxy.ts +0 -128
- package/fake-snippets-api/routes/api/snippets/add_star.ts +0 -62
- package/fake-snippets-api/routes/api/snippets/create.ts +0 -184
- package/fake-snippets-api/routes/api/snippets/delete.ts +0 -41
- package/fake-snippets-api/routes/api/snippets/download.ts +0 -162
- package/fake-snippets-api/routes/api/snippets/generate_from_jlcpcb.ts +0 -48
- package/fake-snippets-api/routes/api/snippets/get.ts +0 -83
- package/fake-snippets-api/routes/api/snippets/get_image.ts +0 -65
- package/fake-snippets-api/routes/api/snippets/images/[author]/[snippet_name]/[typeFormat].ts +0 -80
- package/fake-snippets-api/routes/api/snippets/list.ts +0 -151
- package/fake-snippets-api/routes/api/snippets/list_latest.ts +0 -13
- package/fake-snippets-api/routes/api/snippets/list_trending.ts +0 -38
- package/fake-snippets-api/routes/api/snippets/remove_star.ts +0 -42
- package/fake-snippets-api/routes/api/snippets/search.ts +0 -18
- package/fake-snippets-api/routes/api/snippets/update.ts +0 -114
- package/fake-snippets-api/utils/normalizeProjectFilePath.ts +0 -60
- package/fake-snippets-api/utils/order-steps.ts +0 -20
- package/favicon.ico +0 -0
- package/index.html +0 -125
- package/landing.html +0 -23
- package/playwright-tests/ai-page.spec.ts +0 -19
- package/playwright-tests/circuit-json-import.spec.ts +0 -133
- package/playwright-tests/cmd-click.spec.ts +0 -43
- package/playwright-tests/dashboard-page.spec.ts +0 -10
- package/playwright-tests/editor-page.spec.ts +0 -15
- package/playwright-tests/exampleCircuitJson.ts +0 -498
- package/playwright-tests/files-dialog.spec.ts +0 -19
- package/playwright-tests/footprint-dialog/footprint-dialog.spec.ts +0 -27
- package/playwright-tests/footprint-dialog/footprint-insertion.spec.ts +0 -38
- package/playwright-tests/footprint-dialog/footprint-preview.spec.ts +0 -34
- package/playwright-tests/footprint-dialog/footprint-selection.spec.ts +0 -29
- package/playwright-tests/handle-manual-edits.spec.ts +0 -55
- package/playwright-tests/home-page.spec.ts +0 -10
- package/playwright-tests/images.spec.ts +0 -17
- package/playwright-tests/manual-edits.spec.ts +0 -89
- package/playwright-tests/preview-page.spec.ts +0 -7
- package/playwright-tests/profile-page.spec.ts +0 -108
- package/playwright-tests/quickstart-page.spec.ts +0 -10
- package/playwright-tests/search-links.spec.ts +0 -21
- package/playwright-tests/search.spec.ts +0 -27
- package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-lg.png +0 -0
- package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-md.png +0 -0
- package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-xs.png +0 -0
- package/playwright-tests/snapshots/cmd-click.spec.ts-underlined-imports.png +0 -0
- package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-lg.png +0 -0
- package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-md.png +0 -0
- package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-xs.png +0 -0
- package/playwright-tests/snapshots/editor-page.spec.ts-editor-with-snippet.png +0 -0
- package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-lg.png +0 -0
- package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-md.png +0 -0
- package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-xs.png +0 -0
- package/playwright-tests/snapshots/files-dialog.spec.ts-view-snippet-files.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-lg.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-md.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-xs.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-lg.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-md.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-xs.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-lg.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-md.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-xs.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-lg.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-md.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-xs.png +0 -0
- package/playwright-tests/snapshots/handle-manual-edits.spec.ts-handle-manual-edits.png +0 -0
- package/playwright-tests/snapshots/home-page.spec.ts-Home-page-lg.png +0 -0
- package/playwright-tests/snapshots/home-page.spec.ts-Home-page-md.png +0 -0
- package/playwright-tests/snapshots/home-page.spec.ts-Home-page-xs.png +0 -0
- package/playwright-tests/snapshots/images.spec.ts-pcb-image.png +0 -0
- package/playwright-tests/snapshots/images.spec.ts-schematic-image.png +0 -0
- package/playwright-tests/snapshots/manual-edits.spec.ts-editor-manual-edits.png +0 -0
- package/playwright-tests/snapshots/manual-edits.spec.ts-manual-edits-view.png +0 -0
- package/playwright-tests/snapshots/preview-page.spec.ts-preview-snippet-pcb.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-before-delete.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-delete-dialog.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-dropdown-open.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-snippets-tab.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-starred-tab.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-snippet-page-open-after-star-click.png +0 -0
- package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagelg.png +0 -0
- package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagemd.png +0 -0
- package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagexs.png +0 -0
- package/playwright-tests/snapshots/search-links.spec.ts-search-links.png +0 -0
- package/playwright-tests/snapshots/search.spec.ts-search-lg.png +0 -0
- package/playwright-tests/snapshots/search.spec.ts-search-md.png +0 -0
- package/playwright-tests/snapshots/search.spec.ts-search-xs.png +0 -0
- package/playwright-tests/snapshots/star.spec.ts-remove-star-button.png +0 -0
- package/playwright-tests/snapshots/star.spec.ts-star-button.png +0 -0
- package/playwright-tests/snapshots/update-description.spec.ts-update-description.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-lg.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-md.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-xs.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-lg.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-md.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-xs.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-files.png +0 -0
- package/playwright-tests/star.spec.ts +0 -40
- package/playwright-tests/update-description.spec.ts +0 -18
- package/playwright-tests/view-snippet.spec.ts +0 -35
- package/playwright-tests/viewports.ts +0 -5
- package/playwright.config.ts +0 -27
- package/postcss.config.js +0 -6
- package/public/robots.txt +0 -9
- package/renovate.json +0 -25
- package/scripts/generate-image-sizes.ts +0 -57
- package/scripts/generate-sitemap.ts +0 -103
- package/scripts/generate_bundle_stats.js +0 -208
- package/scripts/snapshot.ts +0 -35
- package/src/App.tsx +0 -314
- package/src/ContextProviders.tsx +0 -94
- package/src/assets/originals/editor_example_1.webp +0 -0
- package/src/assets/originals/editor_example_1_more_square.webp +0 -0
- package/src/assets/originals/editor_example_2.webp +0 -0
- package/src/assets/originals/example_schematic.webp +0 -0
- package/src/components/AiChatMessage.tsx +0 -86
- package/src/components/Analytics.tsx +0 -23
- package/src/components/BomTable.tsx +0 -69
- package/src/components/ChatInput.tsx +0 -53
- package/src/components/CircuitJsonImportDialog.tsx +0 -269
- package/src/components/CircuitToSvgWithMouseControl.tsx +0 -78
- package/src/components/CmdKMenu.tsx +0 -809
- package/src/components/CreateNewSnippetWithAiHero.tsx +0 -81
- package/src/components/CreateReleaseDialog.tsx +0 -124
- package/src/components/DownloadButtonAndMenu.tsx +0 -443
- package/src/components/ErrorFallback.tsx +0 -25
- package/src/components/ErrorOutline.tsx +0 -35
- package/src/components/ErrorTabContent.tsx +0 -122
- package/src/components/ExpandableText.tsx +0 -29
- package/src/components/FAQ.tsx +0 -189
- package/src/components/FileSidebar.tsx +0 -271
- package/src/components/Footer.tsx +0 -144
- package/src/components/GithubAvatarWithFallback.tsx +0 -35
- package/src/components/Header.tsx +0 -202
- package/src/components/Header2.tsx +0 -202
- package/src/components/HeaderDropdown.tsx +0 -88
- package/src/components/HeaderLogin.tsx +0 -105
- package/src/components/HiddenFilesDropdown.tsx +0 -42
- package/src/components/ImageWithFallback.tsx +0 -37
- package/src/components/LatestSnippets.tsx +0 -39
- package/src/components/NotFound.tsx +0 -37
- package/src/components/OptimizedImage.tsx +0 -100
- package/src/components/PackageBreadcrumb.tsx +0 -105
- package/src/components/PackageBuildsPage/ErrorObject.ts +0 -12
- package/src/components/PackageBuildsPage/capitalCase.ts +0 -4
- package/src/components/PackageBuildsPage/getColorForDisplayStatus.ts +0 -17
- package/src/components/PackageCard.tsx +0 -191
- package/src/components/PackageCardSkeleton.tsx +0 -17
- package/src/components/PackageLink.tsx +0 -29
- package/src/components/PackageSearchResults.tsx +0 -81
- package/src/components/PackagesList.tsx +0 -71
- package/src/components/PcbViewerWithContainerHeight.tsx +0 -47
- package/src/components/PrefetchPageLink.tsx +0 -114
- package/src/components/PreviewEmptyState.tsx +0 -16
- package/src/components/ProfileRouter.tsx +0 -30
- package/src/components/RunButton.tsx +0 -27
- package/src/components/SearchComponent.tsx +0 -282
- package/src/components/SentryNotFoundReporter.tsx +0 -44
- package/src/components/SnippetTypeIcon.tsx +0 -60
- package/src/components/StaticPreviewContent.tsx +0 -89
- package/src/components/StaticViewSnippetSidebar.tsx +0 -100
- package/src/components/SuspenseRunFrame.tsx +0 -28
- package/src/components/TableViewer/CircuitJsonTableViewer.tsx +0 -316
- package/src/components/TableViewer/ClickableText.tsx +0 -21
- package/src/components/TableViewer/HeaderCell.tsx +0 -27
- package/src/components/TableViewer/Modal.tsx +0 -39
- package/src/components/TrendingPackagesCarousel.tsx +0 -79
- package/src/components/TypeBadge.tsx +0 -31
- package/src/components/UserCard.tsx +0 -80
- package/src/components/ViewPackagePage/components/ShikiCodeViewer.tsx +0 -49
- package/src/components/ViewPackagePage/components/build-status.tsx +0 -38
- package/src/components/ViewPackagePage/components/important-files-view.tsx +0 -611
- package/src/components/ViewPackagePage/components/main-content-header.tsx +0 -181
- package/src/components/ViewPackagePage/components/main-content-view-selector.tsx +0 -167
- package/src/components/ViewPackagePage/components/markdown-viewer.tsx +0 -88
- package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +0 -301
- package/src/components/ViewPackagePage/components/package-header.tsx +0 -264
- package/src/components/ViewPackagePage/components/preview-image-squares.tsx +0 -47
- package/src/components/ViewPackagePage/components/repo-page-content.tsx +0 -266
- package/src/components/ViewPackagePage/components/sidebar-about-section.tsx +0 -223
- package/src/components/ViewPackagePage/components/sidebar-packages-section.tsx +0 -16
- package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +0 -126
- package/src/components/ViewPackagePage/components/sidebar.tsx +0 -29
- package/src/components/ViewPackagePage/components/tab-views/3d-view.tsx +0 -43
- package/src/components/ViewPackagePage/components/tab-views/bom-view.tsx +0 -30
- package/src/components/ViewPackagePage/components/tab-views/files-view.tsx +0 -295
- package/src/components/ViewPackagePage/components/tab-views/pcb-view.tsx +0 -35
- package/src/components/ViewPackagePage/components/tab-views/schematic-view.tsx +0 -38
- package/src/components/ViewPackagePage/components/theme-toggle.tsx +0 -40
- package/src/components/ViewPackagePage/hooks/use-current-package-circuit-json.ts +0 -46
- package/src/components/ViewPackagePage/hooks/use-mobile.tsx +0 -19
- package/src/components/ViewPackagePage/hooks/use-toast.tsx +0 -69
- package/src/components/ViewPackagePage/utils/fuzz-search.ts +0 -121
- package/src/components/ViewPackagePage/utils/get-license-content.ts +0 -119
- package/src/components/ViewPackagePage/utils/is-hidden-file.ts +0 -55
- package/src/components/ViewPackagePage/utils/is-package-file-important.ts +0 -35
- package/src/components/ViewPackagePage/utils/is-within-directory.ts +0 -32
- package/src/components/dialogs/GitHubRepositorySelector.tsx +0 -300
- package/src/components/dialogs/confirm-delete-package-dialog.tsx +0 -74
- package/src/components/dialogs/confirm-discard-changes-dialog.tsx +0 -73
- package/src/components/dialogs/create-use-dialog.tsx +0 -40
- package/src/components/dialogs/edit-description-dialog.tsx +0 -96
- package/src/components/dialogs/edit-package-details-dialog.tsx +0 -474
- package/src/components/dialogs/files-dialog.tsx +0 -70
- package/src/components/dialogs/import-component-dialog.tsx +0 -32
- package/src/components/dialogs/import-package-dialog.tsx +0 -90
- package/src/components/dialogs/new-package-save-prompt-dialog.tsx +0 -199
- package/src/components/dialogs/package-visibility-settings-dialog.tsx +0 -93
- package/src/components/dialogs/pcb-download-dialog.tsx +0 -113
- package/src/components/dialogs/rename-package-dialog.tsx +0 -86
- package/src/components/dialogs/rename-snippet-dialog.tsx +0 -81
- package/src/components/dialogs/update-package-description-dialog.tsx +0 -96
- package/src/components/dialogs/view-ts-files-dialog.tsx +0 -664
- package/src/components/organization/OrganizationCard.tsx +0 -202
- package/src/components/organization/OrganizationCardSkeleton.tsx +0 -55
- package/src/components/organization/OrganizationHeader.tsx +0 -140
- package/src/components/organization/OrganizationMembers.tsx +0 -117
- package/src/components/package-port/CodeAndPreview.tsx +0 -253
- package/src/components/package-port/CodeEditor.tsx +0 -866
- package/src/components/package-port/CodeEditorHeader.tsx +0 -427
- package/src/components/package-port/EditorNav.tsx +0 -606
- package/src/components/package-port/GlobalFindReplace.tsx +0 -681
- package/src/components/package-port/QuickOpen.tsx +0 -241
- package/src/components/preview/BuildsList.tsx +0 -237
- package/src/components/preview/ConnectedPackagesList.tsx +0 -229
- package/src/components/preview/ConnectedRepoOverview.tsx +0 -588
- package/src/components/preview/PackageReleasesDashboard.tsx +0 -228
- package/src/components/preview/index.tsx +0 -54
- package/src/components/ui/accordion.tsx +0 -55
- package/src/components/ui/alert-dialog.tsx +0 -139
- package/src/components/ui/alert.tsx +0 -59
- package/src/components/ui/aspect-ratio.tsx +0 -5
- package/src/components/ui/avatar.tsx +0 -48
- package/src/components/ui/badge.tsx +0 -36
- package/src/components/ui/breadcrumb.tsx +0 -118
- package/src/components/ui/button.tsx +0 -58
- package/src/components/ui/calendar.tsx +0 -73
- package/src/components/ui/card.tsx +0 -76
- package/src/components/ui/carousel.tsx +0 -260
- package/src/components/ui/chart.tsx +0 -363
- package/src/components/ui/checkbox.tsx +0 -28
- package/src/components/ui/collapsible.tsx +0 -9
- package/src/components/ui/combobox.tsx +0 -178
- package/src/components/ui/command.tsx +0 -151
- package/src/components/ui/context-menu.tsx +0 -202
- package/src/components/ui/dialog.tsx +0 -120
- package/src/components/ui/drawer.tsx +0 -116
- package/src/components/ui/dropdown-menu.tsx +0 -203
- package/src/components/ui/form.tsx +0 -182
- package/src/components/ui/hover-card.tsx +0 -27
- package/src/components/ui/input.tsx +0 -25
- package/src/components/ui/label.tsx +0 -24
- package/src/components/ui/menubar.tsx +0 -238
- package/src/components/ui/navigation-menu.tsx +0 -129
- package/src/components/ui/pagination.tsx +0 -121
- package/src/components/ui/popover.tsx +0 -31
- package/src/components/ui/progress.tsx +0 -26
- package/src/components/ui/radio-group.tsx +0 -42
- package/src/components/ui/resizable.tsx +0 -43
- package/src/components/ui/role-badge.tsx +0 -27
- package/src/components/ui/scroll-area.tsx +0 -46
- package/src/components/ui/searchable-select.tsx +0 -94
- package/src/components/ui/select.tsx +0 -162
- package/src/components/ui/separator.tsx +0 -29
- package/src/components/ui/sheet.tsx +0 -141
- package/src/components/ui/skeleton.tsx +0 -18
- package/src/components/ui/slider.tsx +0 -26
- package/src/components/ui/sonner.tsx +0 -30
- package/src/components/ui/switch.tsx +0 -27
- package/src/components/ui/table.tsx +0 -120
- package/src/components/ui/tabs.tsx +0 -53
- package/src/components/ui/textarea.tsx +0 -24
- package/src/components/ui/toast.tsx +0 -128
- package/src/components/ui/toaster.tsx +0 -1
- package/src/components/ui/toggle-group.tsx +0 -59
- package/src/components/ui/toggle.tsx +0 -43
- package/src/components/ui/tooltip.tsx +0 -28
- package/src/components/ui/tree-view.tsx +0 -563
- package/src/entry-server.tsx +0 -12
- package/src/hooks/use-account-balance.ts +0 -25
- package/src/hooks/use-add-org-member-mutation.ts +0 -51
- package/src/hooks/use-ai-api.ts +0 -35
- package/src/hooks/use-ai-review.ts +0 -31
- package/src/hooks/use-axios.ts +0 -20
- package/src/hooks/use-code-completion-ai-api.ts +0 -11
- package/src/hooks/use-copy-to-clipboard.ts +0 -26
- package/src/hooks/use-create-datasheet.ts +0 -30
- package/src/hooks/use-create-org-mutation.ts +0 -38
- package/src/hooks/use-create-package-files-mutation.ts +0 -76
- package/src/hooks/use-create-package-mutation.ts +0 -54
- package/src/hooks/use-create-package-release-mutation.ts +0 -107
- package/src/hooks/use-create-release-dialog.ts +0 -160
- package/src/hooks/use-create-snippet-mutation.ts +0 -65
- package/src/hooks/use-current-package-id.ts +0 -16
- package/src/hooks/use-current-package-info.ts +0 -32
- package/src/hooks/use-current-package-release.ts +0 -48
- package/src/hooks/use-current-snippet-id.ts +0 -78
- package/src/hooks/use-current-snippet.ts +0 -24
- package/src/hooks/use-datasheet.ts +0 -18
- package/src/hooks/use-debounce.ts +0 -17
- package/src/hooks/use-delete-package.ts +0 -45
- package/src/hooks/use-download-zip.ts +0 -50
- package/src/hooks/use-fork-package-mutation.ts +0 -61
- package/src/hooks/use-global-store.ts +0 -36
- package/src/hooks/use-hotkey.ts +0 -116
- package/src/hooks/use-hydration.ts +0 -30
- package/src/hooks/use-is-using-fake-api.ts +0 -3
- package/src/hooks/use-jlcpcb-component-import.tsx +0 -164
- package/src/hooks/use-list-org-members.ts +0 -32
- package/src/hooks/use-list-user-orgs.ts +0 -25
- package/src/hooks/use-now.ts +0 -12
- package/src/hooks/use-org-by-github-handle.ts +0 -24
- package/src/hooks/use-org.ts +0 -24
- package/src/hooks/use-organization.ts +0 -42
- package/src/hooks/use-package-as-snippet.ts +0 -81
- package/src/hooks/use-package-builds.ts +0 -91
- package/src/hooks/use-package-by-package-id.ts +0 -24
- package/src/hooks/use-package-by-package-name.ts +0 -29
- package/src/hooks/use-package-details-form.ts +0 -146
- package/src/hooks/use-package-files.ts +0 -122
- package/src/hooks/use-package-release-by-id-or-version.ts +0 -45
- package/src/hooks/use-package-release-images.ts +0 -105
- package/src/hooks/use-package-release.ts +0 -124
- package/src/hooks/use-package-stars.ts +0 -163
- package/src/hooks/use-package.ts +0 -24
- package/src/hooks/use-packages-base-api-url.ts +0 -3
- package/src/hooks/use-preview-images.ts +0 -78
- package/src/hooks/use-rebuild-package-release-mutation.ts +0 -41
- package/src/hooks/use-remove-org-member-mutation.ts +0 -32
- package/src/hooks/use-request-ai-review-mutation.ts +0 -54
- package/src/hooks/use-run-tsx/eval-compiled-js.ts +0 -9
- package/src/hooks/use-shiki-highlighter.ts +0 -33
- package/src/hooks/use-sign-in.ts +0 -24
- package/src/hooks/use-snippet-by-name.ts +0 -25
- package/src/hooks/use-snippet.ts +0 -24
- package/src/hooks/use-toast.tsx +0 -90
- package/src/hooks/use-update-ai-description-mutation.ts +0 -42
- package/src/hooks/use-update-org-mutation.ts +0 -41
- package/src/hooks/use-url-params.ts +0 -31
- package/src/hooks/use-warn-user-on-page-change.ts +0 -90
- package/src/hooks/useFileManagement.ts +0 -602
- package/src/hooks/useForkPackageMutation.ts +0 -50
- package/src/hooks/useForkSnippetMutation.ts +0 -53
- package/src/hooks/useOptimizedPackageFilesLoader.ts +0 -136
- package/src/hooks/usePackageFilesLoader.ts +0 -58
- package/src/hooks/useUpdatePackageFilesMutation.ts +0 -131
- package/src/hooks/useUpdatePackageMutation.ts +0 -63
- package/src/index.css +0 -108
- package/src/lib/__tests__/constants.test.ts +0 -66
- package/src/lib/base64ToBytes.ts +0 -5
- package/src/lib/bytesToBase64.ts +0 -4
- package/src/lib/codemirror/basic-setup.ts +0 -67
- package/src/lib/constants.ts +0 -23
- package/src/lib/decodeUrlHashToFsMap.ts +0 -17
- package/src/lib/decodeUrlHashToText.ts +0 -15
- package/src/lib/defaultCodeForBlankCode.tsx +0 -7
- package/src/lib/download-fns/createBlobURL.ts +0 -4
- package/src/lib/download-fns/download-assembly-svg.ts +0 -12
- package/src/lib/download-fns/download-circuit-json-fn.ts +0 -12
- package/src/lib/download-fns/download-circuit-png.ts +0 -96
- package/src/lib/download-fns/download-dsn-file-fn.ts +0 -12
- package/src/lib/download-fns/download-fabrication-files.ts +0 -233
- package/src/lib/download-fns/download-gltf-from-circuit-json.ts +0 -44
- package/src/lib/download-fns/download-gltf.ts +0 -43
- package/src/lib/download-fns/download-kicad-files.ts +0 -38
- package/src/lib/download-fns/download-pcb-svg.ts +0 -35
- package/src/lib/download-fns/download-png-utils.ts +0 -31
- package/src/lib/download-fns/download-readable-netlist.ts +0 -12
- package/src/lib/download-fns/download-schematic-svg.ts +0 -12
- package/src/lib/download-fns/download-simple-route-json.ts +0 -17
- package/src/lib/download-fns/download-spice-file.ts +0 -13
- package/src/lib/download-fns/download-step.ts +0 -12
- package/src/lib/encodeFsMapToUrlHash.ts +0 -13
- package/src/lib/encodeTextToUrlHash.ts +0 -17
- package/src/lib/get-snippet-template.ts +0 -26
- package/src/lib/getLicenseFromLicenseContent.ts +0 -67
- package/src/lib/handleManualEditsImport.tsx +0 -65
- package/src/lib/handleManualEditsImportWithSupportForMultipleFiles.ts +0 -67
- package/src/lib/normalize-svg-for-tile.ts +0 -50
- package/src/lib/populate-query-cache-with-ssr-data.ts +0 -53
- package/src/lib/posthog.ts +0 -17
- package/src/lib/react-query-api-failure-tracking.ts +0 -148
- package/src/lib/sentry.ts +0 -14
- package/src/lib/templates/blank-3d-model-template.ts +0 -12
- package/src/lib/templates/blank-circuit-board-template.ts +0 -20
- package/src/lib/templates/blank-footprint-template.ts +0 -29
- package/src/lib/templates/blank-package-template.ts +0 -21
- package/src/lib/templates/blinking-led-board-template.ts +0 -64
- package/src/lib/templates/usb-c-led-flashlight-template.ts +0 -22
- package/src/lib/ts-lib-cache.ts +0 -162
- package/src/lib/types.ts +0 -31
- package/src/lib/utils/checkIfManualEditsImported.ts +0 -20
- package/src/lib/utils/findTargetFile.ts +0 -97
- package/src/lib/utils/formatTimeAgo.ts +0 -10
- package/src/lib/utils/getPackagePreviewImageUrl.ts +0 -15
- package/src/lib/utils/index.ts +0 -6
- package/src/lib/utils/isComponentExported.ts +0 -10
- package/src/lib/utils/isUuid.ts +0 -5
- package/src/lib/utils/isValidFileName.ts +0 -17
- package/src/lib/utils/load-prettier.ts +0 -23
- package/src/lib/utils/member-role.tsx +0 -61
- package/src/lib/utils/package-utils.ts +0 -7
- package/src/lib/utils/parseJsonOrNull.ts +0 -8
- package/src/lib/utils/pcbManualEditEventHandler.ts +0 -156
- package/src/lib/utils/resolveRelativePath.ts +0 -40
- package/src/lib/utils/timeAgo.ts +0 -20
- package/src/lib/utils/toastManualEditConflicts.tsx +0 -39
- package/src/lib/utils/transformFilesToTreeData.tsx +0 -195
- package/src/main.tsx +0 -15
- package/src/pages/404.tsx +0 -23
- package/src/pages/authorize.tsx +0 -208
- package/src/pages/create-organization.tsx +0 -169
- package/src/pages/dashboard.tsx +0 -254
- package/src/pages/datasheet.tsx +0 -198
- package/src/pages/datasheets.tsx +0 -148
- package/src/pages/dev-login.tsx +0 -68
- package/src/pages/editor.tsx +0 -54
- package/src/pages/landing.tsx +0 -237
- package/src/pages/latest.tsx +0 -145
- package/src/pages/my-orders.tsx +0 -54
- package/src/pages/organization-profile.tsx +0 -197
- package/src/pages/organization-settings.tsx +0 -571
- package/src/pages/package-editor.tsx +0 -60
- package/src/pages/preview-release.tsx +0 -209
- package/src/pages/quickstart.tsx +0 -258
- package/src/pages/release-builds.tsx +0 -99
- package/src/pages/release-detail.tsx +0 -211
- package/src/pages/releases.tsx +0 -55
- package/src/pages/search.tsx +0 -288
- package/src/pages/settings-redirect.tsx +0 -44
- package/src/pages/trending.tsx +0 -201
- package/src/pages/user-profile.tsx +0 -330
- package/src/pages/user-settings.tsx +0 -161
- package/src/pages/view-package.tsx +0 -90
- package/src/types/package.ts +0 -4
- package/src/vite-env.d.ts +0 -1
- package/tailwind.config.js +0 -47
- package/tsconfig.json +0 -30
- package/vercel.json +0 -50
- package/vite.config.ts +0 -236
- package/winterspec.config.ts +0 -6
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
export const fuzzyMatch = (
|
|
2
|
-
pattern: string,
|
|
3
|
-
text: string,
|
|
4
|
-
): { score: number; matches: number[] } => {
|
|
5
|
-
if (!pattern) return { score: 0, matches: [] }
|
|
6
|
-
|
|
7
|
-
const normalizePattern = (pat: string) => {
|
|
8
|
-
return pat.toLowerCase().split(" ").join("")
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const patternLower = normalizePattern(pattern)
|
|
12
|
-
const textLower = text.toLowerCase()
|
|
13
|
-
const matches: number[] = []
|
|
14
|
-
|
|
15
|
-
let patternIdx = 0
|
|
16
|
-
let score = 0
|
|
17
|
-
let consecutiveMatches = 0
|
|
18
|
-
let spaceBonus = 0
|
|
19
|
-
|
|
20
|
-
const spaceSegments = pattern.toLowerCase().trim().split(/\s+/)
|
|
21
|
-
const isSpaceSeparated = spaceSegments.length > 1
|
|
22
|
-
|
|
23
|
-
if (isSpaceSeparated) {
|
|
24
|
-
let segmentIdx = 0
|
|
25
|
-
let currentSegment = spaceSegments[0]
|
|
26
|
-
let segmentCharIdx = 0
|
|
27
|
-
|
|
28
|
-
for (
|
|
29
|
-
let i = 0;
|
|
30
|
-
i < textLower.length && segmentIdx < spaceSegments.length;
|
|
31
|
-
i++
|
|
32
|
-
) {
|
|
33
|
-
const char = textLower[i]
|
|
34
|
-
const targetChar = currentSegment[segmentCharIdx]
|
|
35
|
-
|
|
36
|
-
if (char === targetChar) {
|
|
37
|
-
matches.push(i)
|
|
38
|
-
segmentCharIdx++
|
|
39
|
-
consecutiveMatches++
|
|
40
|
-
score += 1 + consecutiveMatches * 0.5
|
|
41
|
-
|
|
42
|
-
if (i === 0 || /[/\-_.]/.test(text[i - 1])) {
|
|
43
|
-
score += 2
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (segmentCharIdx >= currentSegment.length) {
|
|
47
|
-
segmentIdx++
|
|
48
|
-
spaceBonus += 3
|
|
49
|
-
|
|
50
|
-
if (segmentIdx < spaceSegments.length) {
|
|
51
|
-
currentSegment = spaceSegments[segmentIdx]
|
|
52
|
-
segmentCharIdx = 0
|
|
53
|
-
consecutiveMatches = 0
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
} else {
|
|
57
|
-
if (
|
|
58
|
-
segmentCharIdx > 0 &&
|
|
59
|
-
/[/\-_.]/.test(char) &&
|
|
60
|
-
segmentIdx < spaceSegments.length - 1
|
|
61
|
-
) {
|
|
62
|
-
segmentIdx++
|
|
63
|
-
if (segmentIdx < spaceSegments.length) {
|
|
64
|
-
currentSegment = spaceSegments[segmentIdx]
|
|
65
|
-
segmentCharIdx = 0
|
|
66
|
-
consecutiveMatches = 0
|
|
67
|
-
if (char === currentSegment[0]) {
|
|
68
|
-
matches.push(i)
|
|
69
|
-
segmentCharIdx = 1
|
|
70
|
-
score += 2
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
consecutiveMatches = 0
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (
|
|
80
|
-
segmentIdx < spaceSegments.length ||
|
|
81
|
-
(segmentIdx === spaceSegments.length - 1 &&
|
|
82
|
-
segmentCharIdx < currentSegment.length)
|
|
83
|
-
) {
|
|
84
|
-
return { score: -1, matches: [] }
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
score += spaceBonus
|
|
88
|
-
} else {
|
|
89
|
-
for (
|
|
90
|
-
let i = 0;
|
|
91
|
-
i < textLower.length && patternIdx < patternLower.length;
|
|
92
|
-
i++
|
|
93
|
-
) {
|
|
94
|
-
if (textLower[i] === patternLower[patternIdx]) {
|
|
95
|
-
matches.push(i)
|
|
96
|
-
patternIdx++
|
|
97
|
-
consecutiveMatches++
|
|
98
|
-
|
|
99
|
-
score += 1 + consecutiveMatches * 0.5
|
|
100
|
-
|
|
101
|
-
if (i === 0 || /[/\-_.]/.test(text[i - 1])) {
|
|
102
|
-
score += 2
|
|
103
|
-
}
|
|
104
|
-
} else {
|
|
105
|
-
consecutiveMatches = 0
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (patternIdx !== patternLower.length) return { score: -1, matches: [] }
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
score += Math.max(0, 100 - text.length) * 0.1
|
|
113
|
-
|
|
114
|
-
const fileName = text.split("/").pop() || text
|
|
115
|
-
const queryFileName = pattern.replace(/\s+/g, "")
|
|
116
|
-
if (fileName.toLowerCase().includes(queryFileName.toLowerCase())) {
|
|
117
|
-
score += 5
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return { score, matches }
|
|
121
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generate license content based on license type
|
|
3
|
-
* @param licenseType The type of license (e.g., "MIT")
|
|
4
|
-
* @param authorName The name of the package author
|
|
5
|
-
* @returns The license content as a string
|
|
6
|
-
*/
|
|
7
|
-
export type LicenseType =
|
|
8
|
-
| "MIT"
|
|
9
|
-
| "Apache-2.0"
|
|
10
|
-
| "BSD-3-Clause"
|
|
11
|
-
| "GPL-3.0"
|
|
12
|
-
| "unset"
|
|
13
|
-
| string
|
|
14
|
-
|
|
15
|
-
export const getLicenseContent = (
|
|
16
|
-
licenseType: LicenseType,
|
|
17
|
-
authorName?: string | null,
|
|
18
|
-
): string => {
|
|
19
|
-
const currentYear = new Date().getFullYear()
|
|
20
|
-
const author = authorName ?? ""
|
|
21
|
-
|
|
22
|
-
switch (licenseType) {
|
|
23
|
-
case "MIT": {
|
|
24
|
-
return `MIT License
|
|
25
|
-
|
|
26
|
-
Copyright (c) ${currentYear} ${author}
|
|
27
|
-
|
|
28
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
29
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
30
|
-
in the Software without restriction, including without limitation the rights
|
|
31
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
32
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
33
|
-
furnished to do so, subject to the following conditions:
|
|
34
|
-
|
|
35
|
-
The above copyright notice and this permission notice shall be included in all
|
|
36
|
-
copies or substantial portions of the Software.
|
|
37
|
-
|
|
38
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
39
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
40
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
41
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
42
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
43
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
44
|
-
SOFTWARE.`
|
|
45
|
-
}
|
|
46
|
-
case "Apache-2.0": {
|
|
47
|
-
return ` Apache License
|
|
48
|
-
Version 2.0, January 2004
|
|
49
|
-
http://www.apache.org/licenses/
|
|
50
|
-
|
|
51
|
-
Copyright ${currentYear} ${author}
|
|
52
|
-
|
|
53
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
54
|
-
you may not use this file except in compliance with the License.
|
|
55
|
-
You may obtain a copy of the License at
|
|
56
|
-
|
|
57
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
58
|
-
|
|
59
|
-
Unless required by applicable law or agreed to in writing, software
|
|
60
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
61
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
62
|
-
See the License for the specific language governing permissions and
|
|
63
|
-
limitations under the License.`
|
|
64
|
-
}
|
|
65
|
-
case "BSD-3-Clause": {
|
|
66
|
-
return `BSD 3-Clause License
|
|
67
|
-
|
|
68
|
-
Copyright (c) ${currentYear}, ${author}
|
|
69
|
-
All rights reserved.
|
|
70
|
-
|
|
71
|
-
Redistribution and use in source and binary forms, with or without
|
|
72
|
-
modification, are permitted provided that the following conditions are met:
|
|
73
|
-
|
|
74
|
-
1. Redistributions of source code must retain the above copyright notice, this
|
|
75
|
-
list of conditions and the following disclaimer.
|
|
76
|
-
|
|
77
|
-
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
78
|
-
this list of conditions and the following disclaimer in the documentation
|
|
79
|
-
and/or other materials provided with the distribution.
|
|
80
|
-
|
|
81
|
-
3. Neither the name of the copyright holder nor the names of its
|
|
82
|
-
contributors may be used to endorse or promote products derived from
|
|
83
|
-
this software without specific prior written permission.
|
|
84
|
-
|
|
85
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
86
|
-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
87
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
88
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
89
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
90
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
91
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
92
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
93
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
94
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.`
|
|
95
|
-
}
|
|
96
|
-
case "GPL-3.0": {
|
|
97
|
-
return ` GNU GENERAL PUBLIC LICENSE
|
|
98
|
-
Version 3, 29 June 2007
|
|
99
|
-
|
|
100
|
-
Copyright (C) ${currentYear} ${author}
|
|
101
|
-
|
|
102
|
-
This program is free software: you can redistribute it and/or modify
|
|
103
|
-
it under the terms of the GNU General Public License as published by
|
|
104
|
-
the Free Software Foundation, either version 3 of the License, or
|
|
105
|
-
(at your option) any later version.
|
|
106
|
-
|
|
107
|
-
This program is distributed in the hope that it will be useful,
|
|
108
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
109
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
110
|
-
GNU General Public License for more details.
|
|
111
|
-
|
|
112
|
-
You should have received a copy of the GNU General Public License
|
|
113
|
-
along with this program. If not, see <http://www.gnu.org/licenses/>.`
|
|
114
|
-
}
|
|
115
|
-
default: {
|
|
116
|
-
return ""
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
export const isHiddenFile = (filePath: string): boolean => {
|
|
2
|
-
if (filePath.startsWith("/")) {
|
|
3
|
-
filePath = filePath.slice(1)
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
// Normalize the path to handle both Unix and Windows paths
|
|
7
|
-
const normalizedPath = filePath.replace(/\\/g, "/")
|
|
8
|
-
|
|
9
|
-
// Common patterns for files to hide
|
|
10
|
-
const hiddenPatterns = [
|
|
11
|
-
// Lock files
|
|
12
|
-
/package-lock\.json$/,
|
|
13
|
-
/yarn\.lock$/,
|
|
14
|
-
/pnpm-lock\.yaml$/,
|
|
15
|
-
/\.pnpm-store/,
|
|
16
|
-
/bun\.lockb/,
|
|
17
|
-
/bun\.lock/,
|
|
18
|
-
|
|
19
|
-
// Generated directories
|
|
20
|
-
/^dist\//,
|
|
21
|
-
/^build\//,
|
|
22
|
-
/^out\//,
|
|
23
|
-
/^\.next\//,
|
|
24
|
-
/^\.nuxt\//,
|
|
25
|
-
/^\.output\//,
|
|
26
|
-
|
|
27
|
-
// Config files
|
|
28
|
-
/\.env(\.[^/]*)?$/,
|
|
29
|
-
/\.eslintrc(\.[^/]*)?$/,
|
|
30
|
-
/\.prettierrc(\.[^/]*)?$/,
|
|
31
|
-
/\.babelrc$/,
|
|
32
|
-
/tsconfig\.json$/,
|
|
33
|
-
/jest\.config\.[^/]*$/,
|
|
34
|
-
/vite\.config\.[^/]*$/,
|
|
35
|
-
/next\.config\.[^/]*$/,
|
|
36
|
-
/webpack\.config\.[^/]*$/,
|
|
37
|
-
/rollup\.config\.[^/]*$/,
|
|
38
|
-
|
|
39
|
-
// Cache and temp directories
|
|
40
|
-
/^\.cache\//,
|
|
41
|
-
/^node_modules\//,
|
|
42
|
-
/^\.git\//,
|
|
43
|
-
/^\.github\//,
|
|
44
|
-
/^\.husky\//,
|
|
45
|
-
/^\.vscode\//,
|
|
46
|
-
/^\.idea\//,
|
|
47
|
-
|
|
48
|
-
// Misc
|
|
49
|
-
/\.DS_Store$/,
|
|
50
|
-
/Thumbs\.db$/,
|
|
51
|
-
/\.log$/,
|
|
52
|
-
]
|
|
53
|
-
|
|
54
|
-
return hiddenPatterns.some((pattern) => pattern.test(normalizedPath))
|
|
55
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
const importanceMap = {
|
|
2
|
-
"readme.md": 200,
|
|
3
|
-
readme: 200,
|
|
4
|
-
license: 100,
|
|
5
|
-
"license.md": 100,
|
|
6
|
-
"index.ts": 90,
|
|
7
|
-
"index.tsx": 90,
|
|
8
|
-
"circuit.tsx": 90,
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Determines if a file is considered "important" for display in the
|
|
13
|
-
* `ImportantFilesView` component.
|
|
14
|
-
*
|
|
15
|
-
* A file is deemed important if it resides in the root directory of the package
|
|
16
|
-
* and has a positive importance score. Nested paths are not considered important.
|
|
17
|
-
*/
|
|
18
|
-
export const isPackageFileImportant = (filePath: string): boolean => {
|
|
19
|
-
const normalized = filePath.replace(/^\.\/?/, "").toLowerCase()
|
|
20
|
-
if (normalized.split("/").length > 1) {
|
|
21
|
-
return false
|
|
22
|
-
}
|
|
23
|
-
return scorePackageFileImportance(filePath) > 0
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Kept for backward compatibility with older imports
|
|
27
|
-
export const scorePackageFileImportance = (filePath: string): number => {
|
|
28
|
-
const lowerCaseFilePath = filePath.toLowerCase()
|
|
29
|
-
for (const [key, value] of Object.entries(importanceMap)) {
|
|
30
|
-
if (lowerCaseFilePath.endsWith(key)) {
|
|
31
|
-
return value
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return 0
|
|
35
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checks if a given file path is within a specified directory
|
|
3
|
-
* @param params.dir Current directory path
|
|
4
|
-
* @param params.path File or directory path to check
|
|
5
|
-
* @returns True if the path is within the specified directory
|
|
6
|
-
*/
|
|
7
|
-
export function isWithinDirectory({
|
|
8
|
-
dir,
|
|
9
|
-
path,
|
|
10
|
-
}: { dir: string; path: string }): boolean {
|
|
11
|
-
if (path.startsWith("/")) {
|
|
12
|
-
path = path.substring(1)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// If directory is empty, we're at the root, so show all top-level items
|
|
16
|
-
if (!dir) {
|
|
17
|
-
// Check if this is a top-level path (no directory separators or just one at the beginning)
|
|
18
|
-
return !path.includes("/")
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Skip the current directory
|
|
22
|
-
if (path === dir) {
|
|
23
|
-
return false
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// For non-root directories, find direct children
|
|
27
|
-
// Path must start with the dir + / and not have additional directory separators
|
|
28
|
-
return (
|
|
29
|
-
path.startsWith(dir + "/") &&
|
|
30
|
-
path.substring(dir.length + 1).split("/").length === 1
|
|
31
|
-
)
|
|
32
|
-
}
|
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
import { useRef, useState, useMemo } from "react"
|
|
2
|
-
import { Check, ChevronsUpDown } from "lucide-react"
|
|
3
|
-
import {
|
|
4
|
-
Command,
|
|
5
|
-
CommandEmpty,
|
|
6
|
-
CommandGroup,
|
|
7
|
-
CommandInput,
|
|
8
|
-
CommandItem,
|
|
9
|
-
CommandList,
|
|
10
|
-
} from "@/components/ui/command"
|
|
11
|
-
import {
|
|
12
|
-
Popover,
|
|
13
|
-
PopoverContent,
|
|
14
|
-
PopoverTrigger,
|
|
15
|
-
} from "@/components/ui/popover"
|
|
16
|
-
import { cn } from "@/lib/utils"
|
|
17
|
-
import { useAxios } from "@/hooks/use-axios"
|
|
18
|
-
import { useApiBaseUrl } from "@/hooks/use-packages-base-api-url"
|
|
19
|
-
import { useQuery } from "react-query"
|
|
20
|
-
import { Button } from "../ui/button"
|
|
21
|
-
import { Label } from "../ui/label"
|
|
22
|
-
import { Minus, Plus, RefreshCw } from "lucide-react"
|
|
23
|
-
import { Switch } from "../ui/switch"
|
|
24
|
-
|
|
25
|
-
interface GitHubRepositorySelectorProps {
|
|
26
|
-
selectedRepository?: string
|
|
27
|
-
setSelectedRepository?: (value: string | null) => void
|
|
28
|
-
disabled?: boolean
|
|
29
|
-
open?: boolean
|
|
30
|
-
addFormContent?: (props: {
|
|
31
|
-
allowPrPreviews?: boolean
|
|
32
|
-
}) => void
|
|
33
|
-
formData?: any
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export const GitHubRepositorySelector = ({
|
|
37
|
-
selectedRepository,
|
|
38
|
-
setSelectedRepository,
|
|
39
|
-
disabled = false,
|
|
40
|
-
open = false,
|
|
41
|
-
addFormContent,
|
|
42
|
-
formData,
|
|
43
|
-
}: GitHubRepositorySelectorProps) => {
|
|
44
|
-
const axios = useAxios()
|
|
45
|
-
const apiBaseUrl = useApiBaseUrl()
|
|
46
|
-
const initialValue = useRef(selectedRepository).current
|
|
47
|
-
const [comboboxOpen, setComboboxOpen] = useState(false)
|
|
48
|
-
const [searchValue, setSearchValue] = useState("")
|
|
49
|
-
// Fetch available repositories
|
|
50
|
-
const {
|
|
51
|
-
data: repositoriesData,
|
|
52
|
-
error: repositoriesError,
|
|
53
|
-
refetch: refetchRepositories,
|
|
54
|
-
isLoading,
|
|
55
|
-
} = useQuery(
|
|
56
|
-
["github-repositories"],
|
|
57
|
-
async () => {
|
|
58
|
-
const response = await axios.get("/github/repos/list_available")
|
|
59
|
-
return response.data
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
enabled: open, // Only fetch when needed
|
|
63
|
-
retry: false,
|
|
64
|
-
},
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
const handleConnectMoreRepos = async () => {
|
|
68
|
-
window.location.href = `${apiBaseUrl}/github/installations/create_new_installation_redirect?return_to_page=${window.location.pathname}`
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const handleRefreshRepositories = async () => {
|
|
72
|
-
try {
|
|
73
|
-
// First call the refresh endpoint to update repositories
|
|
74
|
-
await axios.post("/github/repos/refresh")
|
|
75
|
-
// Then refetch the repositories list
|
|
76
|
-
refetchRepositories()
|
|
77
|
-
} catch (error) {
|
|
78
|
-
console.error("Failed to refresh repositories:", error)
|
|
79
|
-
// Still try to refetch in case the error is not critical
|
|
80
|
-
refetchRepositories()
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// Create searchable options for the combobox
|
|
85
|
-
const comboboxOptions = useMemo(() => {
|
|
86
|
-
const repos = repositoriesData?.repos || []
|
|
87
|
-
const repoOptions = repos.map((repo: any) => ({
|
|
88
|
-
value: repo.full_name,
|
|
89
|
-
label: repo.unscoped_name,
|
|
90
|
-
isPrivate: repo.private,
|
|
91
|
-
type: "repo" as const,
|
|
92
|
-
}))
|
|
93
|
-
|
|
94
|
-
const specialOptions = [
|
|
95
|
-
{
|
|
96
|
-
value: "connect-more",
|
|
97
|
-
label: "Connect More Repos",
|
|
98
|
-
type: "special" as const,
|
|
99
|
-
icon: "plus" as const,
|
|
100
|
-
},
|
|
101
|
-
...(initialValue
|
|
102
|
-
? [
|
|
103
|
-
{
|
|
104
|
-
value: "unlink//repo",
|
|
105
|
-
label: "Unlink Repo",
|
|
106
|
-
type: "special" as const,
|
|
107
|
-
icon: "minus" as const,
|
|
108
|
-
},
|
|
109
|
-
]
|
|
110
|
-
: []),
|
|
111
|
-
]
|
|
112
|
-
|
|
113
|
-
return [...repoOptions, ...specialOptions]
|
|
114
|
-
}, [repositoriesData?.repos, initialValue])
|
|
115
|
-
|
|
116
|
-
// Filter options based on search
|
|
117
|
-
const filteredOptions = useMemo(() => {
|
|
118
|
-
if (!searchValue) return comboboxOptions
|
|
119
|
-
return comboboxOptions.filter(
|
|
120
|
-
(option) =>
|
|
121
|
-
option.label.toLowerCase().includes(searchValue.toLowerCase()) ||
|
|
122
|
-
option.value.toLowerCase().includes(searchValue.toLowerCase()),
|
|
123
|
-
)
|
|
124
|
-
}, [comboboxOptions, searchValue])
|
|
125
|
-
|
|
126
|
-
const handleComboboxSelect = (value: string) => {
|
|
127
|
-
if (value === "connect-more") {
|
|
128
|
-
handleConnectMoreRepos()
|
|
129
|
-
} else {
|
|
130
|
-
setSelectedRepository?.(value)
|
|
131
|
-
}
|
|
132
|
-
setComboboxOpen(false)
|
|
133
|
-
setSearchValue("")
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const getDisplayValue = () => {
|
|
137
|
-
if (!selectedRepository) return "Select a repository"
|
|
138
|
-
const option = comboboxOptions.find(
|
|
139
|
-
(opt) => opt.value === selectedRepository,
|
|
140
|
-
)
|
|
141
|
-
return option?.label || selectedRepository
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return (
|
|
145
|
-
<>
|
|
146
|
-
<div className="space-y-1 mb-3">
|
|
147
|
-
<div className="flex items-center justify-between">
|
|
148
|
-
<Label htmlFor="repository">GitHub Repository</Label>
|
|
149
|
-
{!(
|
|
150
|
-
(repositoriesError as any)?.response?.status === 400 &&
|
|
151
|
-
(repositoriesError as any)?.response?.data?.error_code ===
|
|
152
|
-
"github_not_connected"
|
|
153
|
-
) && (
|
|
154
|
-
<Button
|
|
155
|
-
type="button"
|
|
156
|
-
variant="ghost"
|
|
157
|
-
size="sm"
|
|
158
|
-
onClick={handleRefreshRepositories}
|
|
159
|
-
disabled={disabled || isLoading}
|
|
160
|
-
className="h-auto p-1"
|
|
161
|
-
>
|
|
162
|
-
<RefreshCw
|
|
163
|
-
className={`w-3 h-3 ${isLoading ? "animate-spin" : ""}`}
|
|
164
|
-
/>
|
|
165
|
-
</Button>
|
|
166
|
-
)}
|
|
167
|
-
</div>
|
|
168
|
-
{(repositoriesError as any)?.response?.status === 400 &&
|
|
169
|
-
(repositoriesError as any)?.response?.data?.error_code ===
|
|
170
|
-
"github_not_connected" ? (
|
|
171
|
-
<div className="space-y-2">
|
|
172
|
-
<div className="text-sm text-muted-foreground">
|
|
173
|
-
Connect your GitHub account to link this package to a repository.
|
|
174
|
-
</div>
|
|
175
|
-
<Button
|
|
176
|
-
type="button"
|
|
177
|
-
variant="outline"
|
|
178
|
-
onClick={handleConnectMoreRepos}
|
|
179
|
-
className="w-full"
|
|
180
|
-
disabled={disabled}
|
|
181
|
-
>
|
|
182
|
-
<svg
|
|
183
|
-
className="w-4 h-4 mr-2"
|
|
184
|
-
viewBox="0 0 24 24"
|
|
185
|
-
fill="currentColor"
|
|
186
|
-
>
|
|
187
|
-
<path d="M12 0C5.374 0 0 5.373 0 12 0 17.302 3.438 21.8 8.207 23.387c.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z" />
|
|
188
|
-
</svg>
|
|
189
|
-
Connect GitHub Account
|
|
190
|
-
</Button>
|
|
191
|
-
</div>
|
|
192
|
-
) : (
|
|
193
|
-
<div className="space-y-2">
|
|
194
|
-
<Popover open={comboboxOpen} onOpenChange={setComboboxOpen}>
|
|
195
|
-
<PopoverTrigger asChild>
|
|
196
|
-
<Button
|
|
197
|
-
variant="outline"
|
|
198
|
-
role="combobox"
|
|
199
|
-
aria-expanded={comboboxOpen}
|
|
200
|
-
className="w-full justify-between"
|
|
201
|
-
disabled={disabled}
|
|
202
|
-
>
|
|
203
|
-
{getDisplayValue()}
|
|
204
|
-
<ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
|
|
205
|
-
</Button>
|
|
206
|
-
</PopoverTrigger>
|
|
207
|
-
<PopoverContent
|
|
208
|
-
className="w-[var(--radix-popover-trigger-width)] p-0 z-[999]"
|
|
209
|
-
align="start"
|
|
210
|
-
>
|
|
211
|
-
<Command shouldFilter={false}>
|
|
212
|
-
<CommandInput
|
|
213
|
-
value={searchValue}
|
|
214
|
-
onValueChange={setSearchValue}
|
|
215
|
-
placeholder="Search repositories..."
|
|
216
|
-
/>
|
|
217
|
-
<CommandList className="max-h-[400px] overflow-y-auto">
|
|
218
|
-
<CommandEmpty className="text-sm text-slate-500 py-6 pl-4">
|
|
219
|
-
No repositories found.
|
|
220
|
-
</CommandEmpty>
|
|
221
|
-
<CommandGroup>
|
|
222
|
-
{filteredOptions.map((option) => (
|
|
223
|
-
<CommandItem
|
|
224
|
-
key={option.value}
|
|
225
|
-
value={option.value}
|
|
226
|
-
onSelect={() => handleComboboxSelect(option.value)}
|
|
227
|
-
className="cursor-pointer hover:bg-slate-100"
|
|
228
|
-
>
|
|
229
|
-
<div className="flex items-center space-x-2 w-full">
|
|
230
|
-
{option.type === "repo" ? (
|
|
231
|
-
<>
|
|
232
|
-
<Check
|
|
233
|
-
className={cn(
|
|
234
|
-
"mr-2 h-4 w-4",
|
|
235
|
-
selectedRepository === option.value
|
|
236
|
-
? "opacity-100"
|
|
237
|
-
: "opacity-0",
|
|
238
|
-
)}
|
|
239
|
-
/>
|
|
240
|
-
<span>{option.label}</span>
|
|
241
|
-
{option.isPrivate && (
|
|
242
|
-
<span className="text-xs text-muted-foreground">
|
|
243
|
-
(private)
|
|
244
|
-
</span>
|
|
245
|
-
)}
|
|
246
|
-
</>
|
|
247
|
-
) : (
|
|
248
|
-
<>
|
|
249
|
-
{option.icon === "plus" ? (
|
|
250
|
-
<Plus className="w-3 h-3 text-blue-600" />
|
|
251
|
-
) : (
|
|
252
|
-
<Minus className="w-3 h-3 text-red-600" />
|
|
253
|
-
)}
|
|
254
|
-
<span
|
|
255
|
-
className={
|
|
256
|
-
option.icon === "plus"
|
|
257
|
-
? "text-blue-600"
|
|
258
|
-
: "text-red-600"
|
|
259
|
-
}
|
|
260
|
-
>
|
|
261
|
-
{option.label}
|
|
262
|
-
</span>
|
|
263
|
-
</>
|
|
264
|
-
)}
|
|
265
|
-
</div>
|
|
266
|
-
</CommandItem>
|
|
267
|
-
))}
|
|
268
|
-
</CommandGroup>
|
|
269
|
-
</CommandList>
|
|
270
|
-
</Command>
|
|
271
|
-
</PopoverContent>
|
|
272
|
-
</Popover>
|
|
273
|
-
</div>
|
|
274
|
-
)}
|
|
275
|
-
</div>
|
|
276
|
-
|
|
277
|
-
{initialValue && selectedRepository !== "unlink//repo" && (
|
|
278
|
-
<div className="space-y-4 mt-4 p-4 border rounded-lg bg-gray-50">
|
|
279
|
-
<div className="flex items-center justify-between">
|
|
280
|
-
<div className="space-y-0.5">
|
|
281
|
-
<Label className="text-sm font-medium">Enable PR Preview</Label>
|
|
282
|
-
<p className="text-xs text-gray-500">
|
|
283
|
-
Generate preview builds for pull requests
|
|
284
|
-
</p>
|
|
285
|
-
</div>
|
|
286
|
-
<Switch
|
|
287
|
-
checked={formData?.allowPrPreviews}
|
|
288
|
-
onCheckedChange={(checked) =>
|
|
289
|
-
addFormContent?.({
|
|
290
|
-
allowPrPreviews: checked,
|
|
291
|
-
})
|
|
292
|
-
}
|
|
293
|
-
disabled={disabled}
|
|
294
|
-
/>
|
|
295
|
-
</div>
|
|
296
|
-
</div>
|
|
297
|
-
)}
|
|
298
|
-
</>
|
|
299
|
-
)
|
|
300
|
-
}
|