feat: updated nav ui based on feedback

This commit is contained in:
=
2025-01-20 22:59:00 +05:30
parent 934ef8ab27
commit 23513158ed
154 changed files with 2619 additions and 2740 deletions
+62 -62
View File
@@ -18,261 +18,261 @@ export const ROUTE_PATHS = Object.freeze({
Organization: { Organization: {
SecretScanning: setRoute( SecretScanning: setRoute(
"/organization/secret-scanning", "/organization/secret-scanning",
"/_authenticate/_inject-org-details/organization/_layout/secret-scanning" "/_authenticate/_inject-org-details/_org-layout/organization/secret-scanning"
), ),
SettingsPage: setRoute( SettingsPage: setRoute(
"/organization/settings", "/organization/settings",
"/_authenticate/_inject-org-details/organization/_layout/settings" "/_authenticate/_inject-org-details/_org-layout/organization/settings"
), ),
GroupDetailsByIDPage: setRoute( GroupDetailsByIDPage: setRoute(
"/organization/groups/$groupId", "/organization/groups/$groupId",
"/_authenticate/_inject-org-details/organization/_layout/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organization/groups/$groupId"
), ),
IdentityDetailsByIDPage: setRoute( IdentityDetailsByIDPage: setRoute(
"/organization/identities/$identityId", "/organization/identities/$identityId",
"/_authenticate/_inject-org-details/organization/_layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organization/identities/$identityId"
), ),
UserDetailsByIDPage: setRoute( UserDetailsByIDPage: setRoute(
"/organization/members/$membershipId", "/organization/members/$membershipId",
"/_authenticate/_inject-org-details/organization/_layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organization/members/$membershipId"
), ),
AccessControlPage: setRoute( AccessControlPage: setRoute(
"/organization/access-management", "/organization/access-management",
"/_authenticate/_inject-org-details/organization/_layout/access-management" "/_authenticate/_inject-org-details/_org-layout/organization/access-management"
), ),
RoleByIDPage: setRoute( RoleByIDPage: setRoute(
"/organization/roles/$roleId", "/organization/roles/$roleId",
"/_authenticate/_inject-org-details/organization/_layout/roles/$roleId" "/_authenticate/_inject-org-details/_org-layout/organization/roles/$roleId"
), ),
AppConnections: { AppConnections: {
GithubOauthCallbackPage: setRoute( GithubOauthCallbackPage: setRoute(
"/organization/app-connections/github/oauth/callback", "/organization/app-connections/github/oauth/callback",
"/_authenticate/_inject-org-details/organization/_layout/app-connections/github/oauth/callback" "/_authenticate/_inject-org-details/_org-layout/organization/app-connections/github/oauth/callback"
) )
} }
}, },
SecretManager: { SecretManager: {
ApprovalPage: setRoute( ApprovalPage: setRoute(
"/secret-manager/$projectId/approval", "/secret-manager/$projectId/approval",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/approval" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/approval"
), ),
SecretDashboardPage: setRoute( SecretDashboardPage: setRoute(
"/secret-manager/$projectId/secrets/$envSlug", "/secret-manager/$projectId/secrets/$envSlug",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/secrets/$envSlug" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/secrets/$envSlug"
), ),
OverviewPage: setRoute( OverviewPage: setRoute(
"/secret-manager/$projectId/overview", "/secret-manager/$projectId/overview",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/overview" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/overview"
), ),
IntegrationDetailsByIDPage: setRoute( IntegrationDetailsByIDPage: setRoute(
"/secret-manager/$projectId/integrations/$integrationId", "/secret-manager/$projectId/integrations/$integrationId",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/$integrationId" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/$integrationId"
), ),
Integratons: { Integratons: {
SelectIntegrationAuth: setRoute( SelectIntegrationAuth: setRoute(
"/secret-manager/$projectId/integrations/select-integration-auth", "/secret-manager/$projectId/integrations/select-integration-auth",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/select-integration-auth" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/select-integration-auth"
), ),
HerokuOauthCallbackPage: setRoute( HerokuOauthCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/heroku/oauth2/callback", "/secret-manager/$projectId/integrations/heroku/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/heroku/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/heroku/oauth2/callback"
), ),
HerokuConfigurePage: setRoute( HerokuConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/heroku/create", "/secret-manager/$projectId/integrations/heroku/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/heroku/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/heroku/create"
), ),
AwsParameterStoreConfigurePage: setRoute( AwsParameterStoreConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/aws-parameter-store/create", "/secret-manager/$projectId/integrations/aws-parameter-store/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/aws-parameter-store/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/aws-parameter-store/create"
), ),
AwsSecretManagerConfigurePage: setRoute( AwsSecretManagerConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/aws-secret-manager/create", "/secret-manager/$projectId/integrations/aws-secret-manager/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/aws-secret-manager/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/aws-secret-manager/create"
), ),
AzureAppConfigurationsOauthCallbackPage: setRoute( AzureAppConfigurationsOauthCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/azure-app-configuration/oauth2/callback", "/secret-manager/$projectId/integrations/azure-app-configuration/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-app-configuration/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-app-configuration/oauth2/callback"
), ),
AzureAppConfigurationsConfigurePage: setRoute( AzureAppConfigurationsConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/azure-app-configuration/create", "/secret-manager/$projectId/integrations/azure-app-configuration/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-app-configuration/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-app-configuration/create"
), ),
AzureDevopsConfigurePage: setRoute( AzureDevopsConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/azure-devops/create", "/secret-manager/$projectId/integrations/azure-devops/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-devops/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-devops/create"
), ),
AzureKeyVaultAuthorizePage: setRoute( AzureKeyVaultAuthorizePage: setRoute(
"/secret-manager/$projectId/integrations/azure-key-vault/authorize", "/secret-manager/$projectId/integrations/azure-key-vault/authorize",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/authorize"
), ),
AzureKeyVaultOauthCallbackPage: setRoute( AzureKeyVaultOauthCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/azure-key-vault/oauth2/callback", "/secret-manager/$projectId/integrations/azure-key-vault/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/oauth2/callback"
), ),
AzureKeyVaultConfigurePage: setRoute( AzureKeyVaultConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/azure-key-vault/create", "/secret-manager/$projectId/integrations/azure-key-vault/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/create"
), ),
BitbucketOauthCallbackPage: setRoute( BitbucketOauthCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/bitbucket/oauth2/callback", "/secret-manager/$projectId/integrations/bitbucket/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/bitbucket/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/bitbucket/oauth2/callback"
), ),
BitbucketConfigurePage: setRoute( BitbucketConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/bitbucket/create", "/secret-manager/$projectId/integrations/bitbucket/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/bitbucket/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/bitbucket/create"
), ),
ChecklyConfigurePage: setRoute( ChecklyConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/checkly/create", "/secret-manager/$projectId/integrations/checkly/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/checkly/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/checkly/create"
), ),
CircleConfigurePage: setRoute( CircleConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/circleci/create", "/secret-manager/$projectId/integrations/circleci/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/circleci/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/circleci/create"
), ),
CloudflarePagesConfigurePage: setRoute( CloudflarePagesConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/cloudflare-pages/create", "/secret-manager/$projectId/integrations/cloudflare-pages/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-pages/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-pages/create"
), ),
DigitalOceanAppPlatformConfigurePage: setRoute( DigitalOceanAppPlatformConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/digital-ocean-app-platform/create", "/secret-manager/$projectId/integrations/digital-ocean-app-platform/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/digital-ocean-app-platform/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/digital-ocean-app-platform/create"
), ),
CloudflareWorkersConfigurePage: setRoute( CloudflareWorkersConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/cloudflare-workers/create", "/secret-manager/$projectId/integrations/cloudflare-workers/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-workers/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-workers/create"
), ),
CodefreshConfigurePage: setRoute( CodefreshConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/codefresh/create", "/secret-manager/$projectId/integrations/codefresh/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/codefresh/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/codefresh/create"
), ),
GcpSecretManagerConfigurePage: setRoute( GcpSecretManagerConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/gcp-secret-manager/create", "/secret-manager/$projectId/integrations/gcp-secret-manager/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/create"
), ),
GcpSecretManagerOauthCallbackPage: setRoute( GcpSecretManagerOauthCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/gcp-secret-manager/oauth2/callback", "/secret-manager/$projectId/integrations/gcp-secret-manager/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/oauth2/callback"
), ),
GithubConfigurePage: setRoute( GithubConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/github/create", "/secret-manager/$projectId/integrations/github/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/github/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/github/create"
), ),
GithubOauthCallbackPage: setRoute( GithubOauthCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/github/oauth2/callback", "/secret-manager/$projectId/integrations/github/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/github/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/github/oauth2/callback"
), ),
GitlabConfigurePage: setRoute( GitlabConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/gitlab/create", "/secret-manager/$projectId/integrations/gitlab/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/gitlab/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/gitlab/create"
), ),
GitlabOauthCallbackPage: setRoute( GitlabOauthCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/gitlab/oauth2/callback", "/secret-manager/$projectId/integrations/gitlab/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/gitlab/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/gitlab/oauth2/callback"
), ),
VercelOauthCallbackPage: setRoute( VercelOauthCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/vercel/oauth2/callback", "/secret-manager/$projectId/integrations/vercel/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/vercel/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/vercel/oauth2/callback"
), ),
VercelConfigurePage: setRoute( VercelConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/vercel/create", "/secret-manager/$projectId/integrations/vercel/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/vercel/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/vercel/create"
), ),
FlyioConfigurePage: setRoute( FlyioConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/flyio/create", "/secret-manager/$projectId/integrations/flyio/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/flyio/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/flyio/create"
), ),
HashicorpVaultConfigurePage: setRoute( HashicorpVaultConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/hashicorp-vault/create", "/secret-manager/$projectId/integrations/hashicorp-vault/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/hashicorp-vault/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/hashicorp-vault/create"
), ),
HasuraCloudConfigurePage: setRoute( HasuraCloudConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/hasura-cloud/create", "/secret-manager/$projectId/integrations/hasura-cloud/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/hasura-cloud/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/hasura-cloud/create"
), ),
LaravelForgeConfigurePage: setRoute( LaravelForgeConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/laravel-forge/create", "/secret-manager/$projectId/integrations/laravel-forge/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/laravel-forge/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/laravel-forge/create"
), ),
NorthflankConfigurePage: setRoute( NorthflankConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/northflank/create", "/secret-manager/$projectId/integrations/northflank/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/northflank/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/northflank/create"
), ),
RailwayConfigurePage: setRoute( RailwayConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/railway/create", "/secret-manager/$projectId/integrations/railway/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/railway/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/railway/create"
), ),
RenderConfigurePage: setRoute( RenderConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/render/create", "/secret-manager/$projectId/integrations/render/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/render/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/render/create"
), ),
RundeckConfigurePage: setRoute( RundeckConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/rundeck/create", "/secret-manager/$projectId/integrations/rundeck/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/rundeck/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/rundeck/create"
), ),
WindmillConfigurePage: setRoute( WindmillConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/windmill/create", "/secret-manager/$projectId/integrations/windmill/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/windmill/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/windmill/create"
), ),
TravisCIConfigurePage: setRoute( TravisCIConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/travisci/create", "/secret-manager/$projectId/integrations/travisci/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/travisci/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/travisci/create"
), ),
TerraformCloudConfigurePage: setRoute( TerraformCloudConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/terraform-cloud/create", "/secret-manager/$projectId/integrations/terraform-cloud/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/terraform-cloud/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/terraform-cloud/create"
), ),
TeamcityConfigurePage: setRoute( TeamcityConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/teamcity/create", "/secret-manager/$projectId/integrations/teamcity/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/teamcity/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/teamcity/create"
), ),
SupabaseConfigurePage: setRoute( SupabaseConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/supabase/create", "/secret-manager/$projectId/integrations/supabase/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/supabase/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/supabase/create"
), ),
OctopusDeployCloudConfigurePage: setRoute( OctopusDeployCloudConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/octopus-deploy/create", "/secret-manager/$projectId/integrations/octopus-deploy/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/octopus-deploy/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/octopus-deploy/create"
), ),
DatabricksConfigurePage: setRoute( DatabricksConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/databricks/create", "/secret-manager/$projectId/integrations/databricks/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/databricks/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/databricks/create"
), ),
QoveryConfigurePage: setRoute( QoveryConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/qovery/create", "/secret-manager/$projectId/integrations/qovery/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/qovery/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/qovery/create"
), ),
Cloud66ConfigurePage: setRoute( Cloud66ConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/cloud-66/create", "/secret-manager/$projectId/integrations/cloud-66/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloud-66/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloud-66/create"
), ),
NetlifyConfigurePage: setRoute( NetlifyConfigurePage: setRoute(
"/secret-manager/$projectId/integrations/netlify/create", "/secret-manager/$projectId/integrations/netlify/create",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/netlify/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/netlify/create"
), ),
NetlifyOuathCallbackPage: setRoute( NetlifyOuathCallbackPage: setRoute(
"/secret-manager/$projectId/integrations/netlify/oauth2/callback", "/secret-manager/$projectId/integrations/netlify/oauth2/callback",
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/netlify/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/netlify/oauth2/callback"
) )
} }
}, },
CertManager: { CertManager: {
CertAuthDetailsByIDPage: setRoute( CertAuthDetailsByIDPage: setRoute(
"/cert-manager/$projectId/ca/$caId", "/cert-manager/$projectId/ca/$caId",
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/ca/$caId" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/ca/$caId"
), ),
OverviewPage: setRoute( OverviewPage: setRoute(
"/cert-manager/$projectId/overview", "/cert-manager/$projectId/overview",
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/overview" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/overview"
), ),
PkiCollectionDetailsByIDPage: setRoute( PkiCollectionDetailsByIDPage: setRoute(
"/cert-manager/$projectId/pki-collections/$collectionId", "/cert-manager/$projectId/pki-collections/$collectionId",
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/pki-collections/$collectionId" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/pki-collections/$collectionId"
) )
}, },
Ssh: { Ssh: {
SshCaByIDPage: setRoute( SshCaByIDPage: setRoute(
"/ssh/$projectId/ca/$caId", "/ssh/$projectId/ca/$caId",
"/_authenticate/_inject-org-details/ssh/$projectId/_ssh-layout/ca/$caId" "/_authenticate/_inject-org-details/_org-layout/ssh/$projectId/_ssh-layout/ca/$caId"
) )
}, },
Public: { Public: {
@@ -14,7 +14,7 @@ import { envConfig } from "@app/config/env";
import { ProjectType } from "@app/hooks/api/workspace/types"; import { ProjectType } from "@app/hooks/api/workspace/types";
import { InsecureConnectionBanner } from "../OrganizationLayout/components/InsecureConnectionBanner"; import { InsecureConnectionBanner } from "../OrganizationLayout/components/InsecureConnectionBanner";
import { INFISICAL_SUPPORT_OPTIONS } from "../OrganizationLayout/components/SidebarFooter/SidebarFooter"; import { INFISICAL_SUPPORT_OPTIONS } from "../OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar";
export const AdminLayout = () => { export const AdminLayout = () => {
const { t } = useTranslation(); const { t } = useTranslation();
@@ -1,14 +1,11 @@
import { useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { faMobile } from "@fortawesome/free-solid-svg-icons"; import { faMobile } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { useQueryClient } from "@tanstack/react-query"; import { Link, linkOptions, Outlet, useLocation, useRouterState } from "@tanstack/react-router";
import { Link, Outlet, useNavigate, useRouter, useRouterState } from "@tanstack/react-router"; import { AnimatePresence, motion } from "framer-motion";
import { motion } from "framer-motion"; import { twMerge } from "tailwind-merge";
import { Mfa } from "@app/components/auth/Mfa";
import { CreateOrgModal } from "@app/components/organization/CreateOrgModal"; import { CreateOrgModal } from "@app/components/organization/CreateOrgModal";
import SecurityClient from "@app/components/utilities/SecurityClient";
import { import {
BreadcrumbContainer, BreadcrumbContainer,
Menu, Menu,
@@ -16,182 +13,101 @@ import {
MenuItem, MenuItem,
TBreadcrumbFormat TBreadcrumbFormat
} from "@app/components/v2"; } from "@app/components/v2";
import { useUser } from "@app/context"; import { usePopUp } from "@app/hooks";
import { usePopUp, useToggle } from "@app/hooks";
import { useSelectOrganization, workspaceKeys } from "@app/hooks/api";
import { authKeys } from "@app/hooks/api/auth/queries";
import { MfaMethod } from "@app/hooks/api/auth/types";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { navigateUserToOrg } from "@app/pages/auth/LoginPage/Login.utils";
import { InsecureConnectionBanner } from "./components/InsecureConnectionBanner"; import { InsecureConnectionBanner } from "./components/InsecureConnectionBanner";
import { SidebarFooter } from "./components/SidebarFooter"; import { MinimizedOrgSidebar } from "./components/MinimizedOrgSidebar";
import { SidebarHeader } from "./components/SidebarHeader"; import { SidebarHeader } from "./components/SidebarHeader";
export const OrganizationLayout = () => { export const OrganizationLayout = () => {
const [shouldShowMfa, toggleShowMfa] = useToggle(false);
const [requiredMfaMethod, setRequiredMfaMethod] = useState(MfaMethod.EMAIL);
const [mfaSuccessCallback, setMfaSuccessCallback] = useState<() => void>(() => {});
const matches = useRouterState({ select: (s) => s.matches.at(-1)?.context }); const matches = useRouterState({ select: (s) => s.matches.at(-1)?.context });
const breadcrumbs = matches && "breadcrumbs" in matches ? matches.breadcrumbs : undefined; const location = useLocation();
const isOrganizationSpecificPage = location.pathname.startsWith("/organization");
const { user } = useUser(); const breadcrumbs =
isOrganizationSpecificPage && matches && "breadcrumbs" in matches
? matches.breadcrumbs
: undefined;
const { popUp, handlePopUpToggle } = usePopUp(["createOrg"] as const); const { popUp, handlePopUpToggle } = usePopUp(["createOrg"] as const);
const { mutateAsync: selectOrganization } = useSelectOrganization();
const navigate = useNavigate();
const router = useRouter();
const queryClient = useQueryClient();
const { t } = useTranslation(); const { t } = useTranslation();
const handleOrgChange = async (orgId: string) => {
queryClient.removeQueries({ queryKey: authKeys.getAuthToken });
queryClient.removeQueries({ queryKey: workspaceKeys.getAllUserWorkspace() });
const { token, isMfaEnabled, mfaMethod } = await selectOrganization({ const shouldShowOrgSidebar = (
organizationId: orgId [
}); linkOptions({ to: "/organization/access-management" }).to,
linkOptions({ to: "/organization/settings" }).to,
if (isMfaEnabled) { linkOptions({ to: "/organization/audit-logs" }).to
SecurityClient.setMfaToken(token); ] as string[]
if (mfaMethod) { ).includes(location.pathname);
setRequiredMfaMethod(mfaMethod);
}
toggleShowMfa.on();
setMfaSuccessCallback(() => () => handleOrgChange(orgId));
return;
}
await router.invalidate();
await navigateUserToOrg(navigate, orgId);
};
if (shouldShowMfa) {
return (
<div className="flex max-h-screen min-h-screen flex-col items-center justify-center gap-2 overflow-y-auto bg-gradient-to-tr from-mineshaft-600 via-mineshaft-800 to-bunker-700">
<Mfa
email={user.email as string}
method={requiredMfaMethod}
successCallback={mfaSuccessCallback}
closeMfa={() => toggleShowMfa.off()}
/>
</div>
);
}
return ( return (
<> <>
<div className="dark hidden h-screen w-full flex-col overflow-x-hidden transition-all md:flex"> <div className="dark hidden h-screen w-full flex-col overflow-x-hidden bg-bunker-800 transition-all md:flex">
{!window.isSecureContext && <InsecureConnectionBanner />} {!window.isSecureContext && <InsecureConnectionBanner />}
<div className="flex flex-grow flex-col overflow-y-hidden md:flex-row"> <div className="flex flex-grow flex-col overflow-y-hidden md:flex-row">
<aside className="dark w-60 border-r border-mineshaft-600 bg-gradient-to-tr from-mineshaft-700 via-mineshaft-800 to-mineshaft-900 transition-all duration-150"> <MinimizedOrgSidebar />
<nav className="items-between flex h-full flex-col justify-between overflow-y-auto dark:[color-scheme:dark]"> <AnimatePresence mode="popLayout">
<div> {shouldShowOrgSidebar && (
<SidebarHeader onChangeOrg={handleOrgChange} /> <motion.div
<div className="px-1"> key="menu-list-items"
<motion.div initial={{ x: -150 }}
key="menu-list-items" animate={{ x: 0 }}
initial={{ x: 300, opacity: 0 }} exit={{ x: -150 }}
animate={{ x: 0, opacity: 1 }} transition={{ duration: 0.2 }}
exit={{ x: -300, opacity: 0 }} className="dark w-60 overflow-hidden border-r border-mineshaft-600 bg-gradient-to-tr from-mineshaft-700 via-mineshaft-800 to-mineshaft-900"
transition={{ duration: 0.1 }} >
> <nav className="items-between flex h-full flex-col overflow-y-auto dark:[color-scheme:dark]">
<Menu> <div className="p-2 pt-3">
<MenuGroup title="PRODUCTS"> <SidebarHeader />
<Link to={`/organization/${ProjectType.SecretManager}/overview` as const}> </div>
{({ isActive }) => ( <Menu>
<MenuItem isSelected={isActive} icon="sliding-carousel"> <MenuGroup title="Organization Control">
Secret Management <Link to="/organization/audit-logs">
</MenuItem> {({ isActive }) => (
)} <MenuItem isSelected={isActive} icon="moving-block">
</Link> Audit Logs
<Link </MenuItem>
to={`/organization/${ProjectType.CertificateManager}/overview` as const}
>
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="note">
Cert Management
</MenuItem>
)}
</Link>
<Link to={`/organization/${ProjectType.KMS}/overview` as const}>
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="unlock">
Key Management
</MenuItem>
)}
</Link>
<Link to={`/organization/${ProjectType.SSH}/overview` as const}>
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="verified">
SSH
</MenuItem>
)}
</Link>
<Link to="/organization/secret-scanning">
{({ isActive }) => (
<MenuItem
isSelected={isActive}
icon="secret-scan"
className="text-white"
>
Secret Scanning
</MenuItem>
)}
</Link>
</MenuGroup>
<MenuGroup title="Others">
<Link to="/organization/access-management">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="groups">
Access Control
</MenuItem>
)}
</Link>
<Link to="/organization/secret-sharing">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="lock-closed">
Secret Sharing
</MenuItem>
)}
</Link>
{(window.location.origin.includes("https://app.infisical.com") ||
window.location.origin.includes("https://eu.infisical.com") ||
window.location.origin.includes("https://gamma.infisical.com")) && (
<Link to="/organization/billing">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="spinning-coin">
Usage & Billing
</MenuItem>
)}
</Link>
)} )}
<Link to="/organization/audit-logs"> </Link>
{(window.location.origin.includes("https://app.infisical.com") ||
window.location.origin.includes("https://eu.infisical.com") ||
window.location.origin.includes("https://gamma.infisical.com")) && (
<Link to="/organization/billing">
{({ isActive }) => ( {({ isActive }) => (
<MenuItem isSelected={isActive} icon="moving-block"> <MenuItem isSelected={isActive} icon="spinning-coin">
Audit Logs Usage & Billing
</MenuItem> </MenuItem>
)} )}
</Link> </Link>
<Link to="/organization/settings"> )}
{({ isActive }) => ( </MenuGroup>
<MenuItem isSelected={isActive} icon="toggle-settings"> <MenuGroup title="Others">
Organization Settings <Link to="/organization/access-management">
</MenuItem> {({ isActive }) => (
)} <MenuItem isSelected={isActive} icon="groups">
</Link> Access Control
</MenuGroup> </MenuItem>
</Menu> )}
</motion.div> </Link>
</div> <Link to="/organization/settings">
</div> {({ isActive }) => (
<SidebarFooter /> <MenuItem isSelected={isActive} icon="toggle-settings">
</nav> Organization Settings
</aside> </MenuItem>
<CreateOrgModal )}
isOpen={popUp?.createOrg?.isOpen} </Link>
onClose={() => handlePopUpToggle("createOrg", false)} </MenuGroup>
/> </Menu>
<main className="flex-1 overflow-y-auto overflow-x-hidden bg-bunker-800 px-4 pb-4 dark:[color-scheme:dark]"> </nav>
</motion.div>
)}
</AnimatePresence>
<main
className={twMerge(
"flex-1 overflow-y-auto overflow-x-hidden bg-bunker-800 px-4 pb-4 dark:[color-scheme:dark]",
!isOrganizationSpecificPage && "overflow-hidden p-0"
)}
>
{breadcrumbs ? ( {breadcrumbs ? (
<BreadcrumbContainer breadcrumbs={breadcrumbs as TBreadcrumbFormat[]} /> <BreadcrumbContainer breadcrumbs={breadcrumbs as TBreadcrumbFormat[]} />
) : null} ) : null}
@@ -199,6 +115,10 @@ export const OrganizationLayout = () => {
</main> </main>
</div> </div>
</div> </div>
<CreateOrgModal
isOpen={popUp?.createOrg?.isOpen}
onClose={() => handlePopUpToggle("createOrg", false)}
/>
<div className="z-[200] flex h-screen w-screen flex-col items-center justify-center bg-bunker-800 md:hidden"> <div className="z-[200] flex h-screen w-screen flex-col items-center justify-center bg-bunker-800 md:hidden">
<FontAwesomeIcon icon={faMobile} className="mb-8 text-7xl text-gray-300" /> <FontAwesomeIcon icon={faMobile} className="mb-8 text-7xl text-gray-300" />
<p className="max-w-sm px-6 text-center text-lg text-gray-200"> <p className="max-w-sm px-6 text-center text-lg text-gray-200">
@@ -22,7 +22,7 @@ export const MenuIconButton = <T extends ElementType = "button">({
type="button" type="button"
role="menuitem" role="menuitem"
className={twMerge( className={twMerge(
"duration-50 group relative flex w-full cursor-pointer flex-col items-center justify-center rounded p-2 font-inter text-sm text-bunker-100 transition-all hover:bg-mineshaft-700", "group relative flex w-full cursor-pointer flex-col items-center justify-center rounded p-2 font-inter text-sm text-bunker-100 transition-all duration-150 hover:bg-mineshaft-700",
isSelected && "bg-bunker-800 hover:bg-mineshaft-600", isSelected && "bg-bunker-800 hover:bg-mineshaft-600",
isDisabled && "cursor-not-allowed hover:bg-transparent", isDisabled && "cursor-not-allowed hover:bg-transparent",
className className
@@ -34,8 +34,8 @@ export const MenuIconButton = <T extends ElementType = "button">({
> >
<div <div
className={`${ className={`${
isSelected ? "visisble" : "invisible" isSelected ? "opacity-100" : "opacity-0"
} absolute -left-[0.28rem] h-full w-0.5 rounded-md bg-primary`} } absolute -left-[0.28rem] h-full w-1 rounded-md bg-primary transition-all duration-150`}
/> />
{icon && ( {icon && (
<div className="my-auto mb-2 h-6 w-6"> <div className="my-auto mb-2 h-6 w-6">
@@ -49,7 +49,12 @@ export const MenuIconButton = <T extends ElementType = "button">({
/> />
</div> </div>
)} )}
<div className="flex-grow justify-center break-words text-center text-xxs">{children}</div> <div
className="flex-grow justify-center break-words text-center"
style={{ fontSize: "10px" }}
>
{children}
</div>
</Item> </Item>
); );
}; };
@@ -1,23 +1,23 @@
import { useState } from "react"; import { useState } from "react";
import { faGithub, faSlack } from "@fortawesome/free-brands-svg-icons";
import { import {
faArrowUpRightFromSquare, faArrowUpRightFromSquare,
faBook, faBook,
faCheck, faCheck,
faCog, faCog,
faEllipsis, faEllipsis,
faEnvelope,
faInfinity, faInfinity,
faInfo, faInfo,
faInfoCircle, faInfoCircle,
faMoneyBill, faMoneyBill,
faReply,
faShare,
faSignOut, faSignOut,
faUser,
faUsers faUsers
} from "@fortawesome/free-solid-svg-icons"; } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { useQueryClient } from "@tanstack/react-query"; import { useQueryClient } from "@tanstack/react-query";
import { Link, useNavigate, useRouter } from "@tanstack/react-router"; import { Link, linkOptions, useLocation, useNavigate, useRouter } from "@tanstack/react-router";
import { motion } from "framer-motion";
import { Mfa } from "@app/components/auth/Mfa"; import { Mfa } from "@app/components/auth/Mfa";
import { CreateOrgModal } from "@app/components/organization/CreateOrgModal"; import { CreateOrgModal } from "@app/components/organization/CreateOrgModal";
@@ -42,13 +42,41 @@ import {
} from "@app/hooks/api"; } from "@app/hooks/api";
import { authKeys } from "@app/hooks/api/auth/queries"; import { authKeys } from "@app/hooks/api/auth/queries";
import { MfaMethod } from "@app/hooks/api/auth/types"; import { MfaMethod } from "@app/hooks/api/auth/types";
import { SubscriptionPlan } from "@app/hooks/api/types";
import { AuthMethod } from "@app/hooks/api/users/types"; import { AuthMethod } from "@app/hooks/api/users/types";
import { ProjectType } from "@app/hooks/api/workspace/types"; import { ProjectType } from "@app/hooks/api/workspace/types";
import { INFISICAL_SUPPORT_OPTIONS } from "@app/layouts/OrganizationLayout/components/SidebarFooter/SidebarFooter";
import { navigateUserToOrg } from "@app/pages/auth/LoginPage/Login.utils"; import { navigateUserToOrg } from "@app/pages/auth/LoginPage/Login.utils";
import { MenuIconButton } from "../MenuIconButton"; import { MenuIconButton } from "../MenuIconButton";
import { ProjectSwitcher } from "./ProjectSwitcher";
const getPlan = (subscription: SubscriptionPlan) => {
if (subscription.dynamicSecret) return "Enterprise Plan";
if (subscription.pitRecovery) return "Pro Plan";
return "Free Plan";
};
export const INFISICAL_SUPPORT_OPTIONS = [
[
<FontAwesomeIcon key={1} className="pr-4 text-sm" icon={faSlack} />,
"Support Forum",
"https://infisical.com/slack"
],
[
<FontAwesomeIcon key={2} className="pr-4 text-sm" icon={faBook} />,
"Read Docs",
"https://infisical.com/docs/documentation/getting-started/introduction"
],
[
<FontAwesomeIcon key={3} className="pr-4 text-sm" icon={faGithub} />,
"GitHub Issues",
"https://github.com/Infisical/infisical/issues"
],
[
<FontAwesomeIcon key={4} className="pr-4 text-sm" icon={faEnvelope} />,
"Email Support",
"mailto:[email protected]"
]
];
export const MinimizedOrgSidebar = () => { export const MinimizedOrgSidebar = () => {
const [shouldShowMfa, toggleShowMfa] = useToggle(false); const [shouldShowMfa, toggleShowMfa] = useToggle(false);
@@ -66,8 +94,17 @@ export const MinimizedOrgSidebar = () => {
const { mutateAsync: selectOrganization } = useSelectOrganization(); const { mutateAsync: selectOrganization } = useSelectOrganization();
const navigate = useNavigate(); const navigate = useNavigate();
const router = useRouter(); const router = useRouter();
const location = useLocation();
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const isMoreSelected = (
[
linkOptions({ to: "/organization/access-management" }).to,
linkOptions({ to: "/organization/settings" }).to,
linkOptions({ to: "/organization/audit-logs" }).to
] as string[]
).includes(location.pathname);
const handleOrgChange = async (orgId: string) => { const handleOrgChange = async (orgId: string) => {
queryClient.removeQueries({ queryKey: authKeys.getAuthToken }); queryClient.removeQueries({ queryKey: authKeys.getAuthToken });
queryClient.removeQueries({ queryKey: workspaceKeys.getAllUserWorkspace() }); queryClient.removeQueries({ queryKey: workspaceKeys.getAllUserWorkspace() });
@@ -115,11 +152,14 @@ export const MinimizedOrgSidebar = () => {
return ( return (
<> <>
<aside className="dark w-16 border-r border-mineshaft-600 bg-gradient-to-tr from-mineshaft-700 via-mineshaft-800 to-mineshaft-900 transition-all duration-150"> <aside
className="dark z-10 border-r border-mineshaft-600 bg-gradient-to-tr from-mineshaft-700 via-mineshaft-800 to-mineshaft-900 transition-all duration-150"
style={{ width: "72px" }}
>
<nav className="items-between flex h-full flex-col justify-between overflow-y-auto dark:[color-scheme:dark]"> <nav className="items-between flex h-full flex-col justify-between overflow-y-auto dark:[color-scheme:dark]">
<div> <div>
<div className="flex cursor-pointer items-center p-2 pt-4 hover:bg-mineshaft-700"> <div className="flex cursor-pointer items-center p-2 pt-4 hover:bg-mineshaft-700">
<DropdownMenu> <DropdownMenu modal>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
<div className="flex w-full items-center justify-center rounded-md border border-none border-mineshaft-600 p-1 transition-all"> <div className="flex w-full items-center justify-center rounded-md border border-none border-mineshaft-600 p-1 transition-all">
<div className="flex h-8 w-8 items-center justify-center rounded-md bg-primary"> <div className="flex h-8 w-8 items-center justify-center rounded-md bg-primary">
@@ -127,7 +167,25 @@ export const MinimizedOrgSidebar = () => {
</div> </div>
</div> </div>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="start" className="p-1"> <DropdownMenuContent
align="start"
side="right"
className="p-1 shadow-mineshaft-600 drop-shadow-md"
style={{ minWidth: "320px" }}
>
<div className="px-2 py-1">
<div className="flex w-full items-center justify-center rounded-md border border-mineshaft-600 p-1 transition-all duration-150 hover:bg-mineshaft-700">
<div className="mr-2 flex h-8 w-8 items-center justify-center rounded-md bg-primary text-black">
{currentOrg?.name.charAt(0)}
</div>
<div className="flex flex-grow flex-col text-white">
<div className="max-w-36 truncate text-ellipsis text-sm font-medium capitalize">
{currentOrg?.name}
</div>
<div className="text-xs text-mineshaft-400">{getPlan(subscription)}</div>
</div>
</div>
</div>
<div className="px-2 py-1 text-xs capitalize text-mineshaft-400"> <div className="px-2 py-1 text-xs capitalize text-mineshaft-400">
organizations organizations
</div> </div>
@@ -172,11 +230,6 @@ export const MinimizedOrgSidebar = () => {
); );
})} })}
<div className="mt-1 h-1 border-t border-mineshaft-600" /> <div className="mt-1 h-1 border-t border-mineshaft-600" />
<Link to="/organization/secret-manager/overview">
<DropdownMenuItem icon={<FontAwesomeIcon icon={faReply} />}>
Home
</DropdownMenuItem>
</Link>
<DropdownMenuItem <DropdownMenuItem
icon={<FontAwesomeIcon icon={faSignOut} />} icon={<FontAwesomeIcon icon={faSignOut} />}
onClick={logOutUser} onClick={logOutUser}
@@ -186,132 +239,112 @@ export const MinimizedOrgSidebar = () => {
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
</div> </div>
<div className="px-1"> <div className="space-y-1 px-1">
<motion.div <Link to="/organization/secret-manager/overview">
key="menu-icons" {({ isActive }) => (
className="space-y-1" <MenuIconButton
initial={{ x: 300, opacity: 0 }} isSelected={
animate={{ x: 0, opacity: 1 }} isActive ||
exit={{ x: -300, opacity: 0 }} window.location.pathname.startsWith(`/${ProjectType.SecretManager}`)
transition={{ duration: 0.1 }} }
> icon="sliding-carousel"
<DropdownMenu modal>
<DropdownMenuTrigger>
<MenuIconButton
isSelected={window.location.pathname.startsWith(
`/${ProjectType.SecretManager}`
)}
icon="sliding-carousel"
>
Secret Manager
</MenuIconButton>
</DropdownMenuTrigger>
<DropdownMenuContent
side="right"
className="px-3 pb-2"
style={{ minWidth: "320px" }}
> >
<ProjectSwitcher type={ProjectType.SecretManager} /> Secret Manager
</DropdownMenuContent> </MenuIconButton>
</DropdownMenu> )}
<DropdownMenu modal> </Link>
<DropdownMenuTrigger> <Link to="/organization/cert-manager/overview">
<MenuIconButton {({ isActive }) => (
isSelected={window.location.pathname.startsWith( <MenuIconButton
`/${ProjectType.CertificateManager}` isSelected={
)} isActive ||
icon="note" window.location.pathname.startsWith(`/${ProjectType.CertificateManager}`)
> }
Cert Manager icon="note"
</MenuIconButton>
</DropdownMenuTrigger>
<DropdownMenuContent
side="right"
className="px-3 pb-2"
style={{ minWidth: "320px" }}
> >
<ProjectSwitcher type={ProjectType.CertificateManager} /> Cert Manager
</DropdownMenuContent> </MenuIconButton>
</DropdownMenu> )}
<DropdownMenu modal> </Link>
<DropdownMenuTrigger className="w-full"> <Link to="/organization/kms/overview">
<MenuIconButton {({ isActive }) => (
isSelected={window.location.pathname.startsWith(`/${ProjectType.KMS}`)} <MenuIconButton
icon="unlock" isSelected={
> isActive || window.location.pathname.startsWith(`/${ProjectType.KMS}`)
KMS }
</MenuIconButton> icon="unlock"
</DropdownMenuTrigger>
<DropdownMenuContent
side="right"
className="px-3 pb-2"
style={{ minWidth: "320px" }}
> >
<ProjectSwitcher type={ProjectType.KMS} /> KMS
</DropdownMenuContent> </MenuIconButton>
</DropdownMenu> )}
<DropdownMenu modal> </Link>
<DropdownMenuTrigger className="w-full"> <Link to="/organization/ssh/overview">
<MenuIconButton {({ isActive }) => (
isSelected={window.location.pathname.startsWith(`/${ProjectType.SSH}`)} <MenuIconButton
icon="verified" isSelected={
> isActive || window.location.pathname.startsWith(`/${ProjectType.SSH}`)
SSH }
</MenuIconButton> icon="verified"
</DropdownMenuTrigger>
<DropdownMenuContent
side="right"
className="px-3 pb-2"
style={{ minWidth: "320px" }}
> >
<ProjectSwitcher type={ProjectType.SSH} /> SSH
</DropdownMenuContent> </MenuIconButton>
</DropdownMenu> )}
<DropdownMenu> </Link>
<DropdownMenuTrigger asChild> <div className="w-full bg-mineshaft-500" style={{ height: "1px" }} />
<div className="w-full"> <Link to="/organization/secret-scanning">
<MenuIconButton> {({ isActive }) => (
<div className="flex flex-col items-center justify-center"> <MenuIconButton isSelected={isActive} icon="secret-scan">
<FontAwesomeIcon icon={faEllipsis} className="mb-3 text-lg" /> Secret Scanning
<span>More</span> </MenuIconButton>
</div> )}
</MenuIconButton> </Link>
</div> <Link to="/organization/secret-sharing">
</DropdownMenuTrigger> {({ isActive }) => (
<DropdownMenuContent align="start" side="right" className="p-1"> <MenuIconButton isSelected={isActive} icon="lock-closed">
<DropdownMenuLabel>Organization Options</DropdownMenuLabel> Secret Sharing
<Link to="/organization/access-management"> </MenuIconButton>
<DropdownMenuItem icon={<FontAwesomeIcon icon={faUsers} />}> )}
Access Control </Link>
<div className="my-1 w-full bg-mineshaft-500" style={{ height: "1px" }} />
<DropdownMenu>
<DropdownMenuTrigger asChild>
<div className="w-full">
<MenuIconButton isSelected={isMoreSelected}>
<div className="relative flex flex-col items-center justify-center">
<FontAwesomeIcon icon={faEllipsis} className="mb-3 text-lg" />
<span>More</span>
</div>
</MenuIconButton>
</div>
</DropdownMenuTrigger>
<DropdownMenuContent align="start" side="right" className="p-1">
<DropdownMenuLabel>Organization Options</DropdownMenuLabel>
<Link to="/organization/access-management">
<DropdownMenuItem icon={<FontAwesomeIcon icon={faUsers} />}>
Access Control
</DropdownMenuItem>
</Link>
{(window.location.origin.includes("https://app.infisical.com") ||
window.location.origin.includes("https://eu.infisical.com") ||
window.location.origin.includes("https://gamma.infisical.com")) && (
<Link to="/organization/billing">
<DropdownMenuItem icon={<FontAwesomeIcon icon={faMoneyBill} />}>
Usage & Billing
</DropdownMenuItem> </DropdownMenuItem>
</Link> </Link>
<Link to="/organization/secret-sharing"> )}
<DropdownMenuItem icon={<FontAwesomeIcon icon={faShare} />}> <Link to="/organization/audit-logs">
Secret Sharing <DropdownMenuItem icon={<FontAwesomeIcon icon={faBook} />}>
</DropdownMenuItem> Audit Logs
</Link> </DropdownMenuItem>
{(window.location.origin.includes("https://app.infisical.com") || </Link>
window.location.origin.includes("https://eu.infisical.com") || <Link to="/organization/settings">
window.location.origin.includes("https://gamma.infisical.com")) && ( <DropdownMenuItem icon={<FontAwesomeIcon icon={faCog} />}>
<Link to="/organization/billing"> Organization Settings
<DropdownMenuItem icon={<FontAwesomeIcon icon={faMoneyBill} />}> </DropdownMenuItem>
Usage & Billing </Link>
</DropdownMenuItem> </DropdownMenuContent>
</Link> </DropdownMenu>
)}
<Link to="/organization/audit-logs">
<DropdownMenuItem icon={<FontAwesomeIcon icon={faBook} />}>
Audit Logs
</DropdownMenuItem>
</Link>
<Link to="/organization/settings">
<DropdownMenuItem icon={<FontAwesomeIcon icon={faCog} />}>
Organization Settings
</DropdownMenuItem>
</Link>
</DropdownMenuContent>
</DropdownMenu>
</motion.div>
</div> </div>
</div> </div>
<div <div
@@ -385,7 +418,19 @@ export const MinimizedOrgSidebar = () => {
</div> </div>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="start" className="p-1"> <DropdownMenuContent align="start" className="p-1">
<div className="px-2 py-1 text-xs text-mineshaft-400">{user?.username}</div> <div className="px-2 py-1">
<div className="flex w-full items-center justify-center rounded-md border border-mineshaft-600 p-1 transition-all duration-150 hover:bg-mineshaft-700">
<div className="p-2">
<FontAwesomeIcon icon={faUser} className="text-mineshaft-400" />
</div>
<div className="flex flex-grow flex-col text-white">
<div className="max-w-36 truncate text-ellipsis text-sm font-medium capitalize">
{user?.firstName} {user?.lastName}
</div>
<div className="text-xs text-mineshaft-300">{user.email}</div>
</div>
</div>
</div>
<Link to="/personal-settings"> <Link to="/personal-settings">
<DropdownMenuItem>Personal Settings</DropdownMenuItem> <DropdownMenuItem>Personal Settings</DropdownMenuItem>
</Link> </Link>
@@ -1,210 +0,0 @@
import { faGithub, faSlack } from "@fortawesome/free-brands-svg-icons";
import {
faArrowUpRightFromSquare,
faBook,
faEnvelope,
faInfinity,
faInfo,
faPlus,
faQuestion,
faUser
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link, useNavigate } from "@tanstack/react-router";
import { WishForm } from "@app/components/features/WishForm";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger
} from "@app/components/v2";
import { envConfig } from "@app/config/env";
import { useOrganization, useSubscription, useUser } from "@app/context";
import { useGetOrgTrialUrl, useLogoutUser } from "@app/hooks/api";
export const INFISICAL_SUPPORT_OPTIONS = [
[
<FontAwesomeIcon key={1} className="pr-4 text-sm" icon={faSlack} />,
"Support Forum",
"https://infisical.com/slack"
],
[
<FontAwesomeIcon key={2} className="pr-4 text-sm" icon={faBook} />,
"Read Docs",
"https://infisical.com/docs/documentation/getting-started/introduction"
],
[
<FontAwesomeIcon key={3} className="pr-4 text-sm" icon={faGithub} />,
"GitHub Issues",
"https://github.com/Infisical/infisical/issues"
],
[
<FontAwesomeIcon key={4} className="pr-4 text-sm" icon={faEnvelope} />,
"Email Support",
"mailto:[email protected]"
]
];
export const SidebarFooter = () => {
const { subscription } = useSubscription();
const { currentOrg } = useOrganization();
const { mutateAsync } = useGetOrgTrialUrl();
const { user } = useUser();
const navigate = useNavigate();
const logout = useLogoutUser();
const logOutUser = async () => {
try {
console.log("Logging out...");
await logout.mutateAsync();
navigate({ to: "/login" });
} catch (error) {
console.error(error);
}
};
return (
<div
className={`relative mt-10 ${
subscription && subscription.slug === "starter" && !subscription.has_used_trial
? "mb-2"
: "mb-4"
} flex w-full cursor-default flex-col items-center px-2 text-sm text-mineshaft-400`}
>
{(window.location.origin.includes("https://app.infisical.com") ||
window.location.origin.includes("https://gamma.infisical.com")) && <WishForm />}
<Link
to="/organization/access-management"
search={{
action: "invite"
}}
className="w-full"
>
<div className="mb-3 w-full pl-2 duration-200 hover:text-mineshaft-200">
<FontAwesomeIcon icon={faPlus} className="mr-3" />
Invite people
</div>
</Link>
<DropdownMenu>
<DropdownMenuTrigger className="w-full">
<div className="mb-4 flex w-full items-center pl-2 duration-200 hover:text-mineshaft-200">
<FontAwesomeIcon icon={faQuestion} className="mr-3 px-[0.1rem]" />
Help & Support
</div>
</DropdownMenuTrigger>
<DropdownMenuContent align="start" className="p-1">
{INFISICAL_SUPPORT_OPTIONS.map(([icon, text, url]) => (
<DropdownMenuItem key={url as string}>
<a
target="_blank"
rel="noopener noreferrer"
href={String(url)}
className="flex w-full items-center rounded-md font-normal text-mineshaft-300 duration-200"
>
<div className="relative flex w-full cursor-pointer select-none items-center justify-start rounded-md">
{icon}
<div className="text-sm">{text}</div>
</div>
</a>
</DropdownMenuItem>
))}
{envConfig.PLATFORM_VERSION && (
<div className="mb-2 mt-2 w-full cursor-default pl-5 text-sm duration-200 hover:text-mineshaft-200">
<FontAwesomeIcon icon={faInfo} className="mr-4 px-[0.1rem]" />
Version: {envConfig.PLATFORM_VERSION}
</div>
)}
</DropdownMenuContent>
</DropdownMenu>
{subscription && subscription.slug === "starter" && !subscription.has_used_trial && (
<button
type="button"
onClick={async () => {
if (!subscription || !currentOrg) return;
// direct user to start pro trial
const url = await mutateAsync({
orgId: currentOrg.id,
success_url: window.location.href
});
window.location.href = url;
}}
className="mt-1.5 w-full"
>
<div className="justify-left mb-1.5 mt-1.5 flex w-full items-center rounded-md bg-mineshaft-600 py-1 pl-4 text-mineshaft-300 duration-200 hover:bg-mineshaft-500 hover:text-primary-400">
<FontAwesomeIcon icon={faInfinity} className="ml-0.5 mr-3 py-2 text-primary" />
Start Free Pro Trial
</div>
</button>
)}
<DropdownMenu>
<DropdownMenuTrigger asChild className="w-full">
<div className="flex w-full cursor-pointer items-center rounded-md border border-mineshaft-600 p-2 px-1">
<div className="mr-2 flex h-6 w-6 items-center justify-center rounded-md bg-primary text-sm uppercase">
{user?.firstName?.charAt(0)}
</div>
<div className="max-w-40 flex-grow truncate text-ellipsis text-left text-sm capitalize text-white">
{user?.firstName} {user?.lastName}
</div>
<div>
<FontAwesomeIcon icon={faUser} className="text-xs text-mineshaft-400" />
</div>
</div>
</DropdownMenuTrigger>
<DropdownMenuContent align="start" className="p-1">
<div className="px-2 py-1 text-xs text-mineshaft-400">{user?.username}</div>
<Link to="/personal-settings">
<DropdownMenuItem>Personal Settings</DropdownMenuItem>
</Link>
<a
href="https://infisical.com/docs/documentation/getting-started/introduction"
target="_blank"
rel="noopener noreferrer"
className="mt-3 w-full text-sm font-normal leading-[1.2rem] text-mineshaft-300 hover:text-mineshaft-100"
>
<DropdownMenuItem>
Documentation
<FontAwesomeIcon
icon={faArrowUpRightFromSquare}
className="mb-[0.06rem] pl-1.5 text-xxs"
/>
</DropdownMenuItem>
</a>
<a
href="https://infisical.com/slack"
target="_blank"
rel="noopener noreferrer"
className="mt-3 w-full text-sm font-normal leading-[1.2rem] text-mineshaft-300 hover:text-mineshaft-100"
>
<DropdownMenuItem>
Join Slack Community
<FontAwesomeIcon
icon={faArrowUpRightFromSquare}
className="mb-[0.06rem] pl-1.5 text-xxs"
/>
</DropdownMenuItem>
</a>
{user?.superAdmin && (
<Link to="/admin">
<DropdownMenuItem className="mt-1 border-t border-mineshaft-600">
Server Admin Console
</DropdownMenuItem>
</Link>
)}
<Link to="/organization/admin">
<DropdownMenuItem className="mt-1 border-t border-mineshaft-600">
Organization Admin Console
</DropdownMenuItem>
</Link>
<div className="mt-1 h-1 border-t border-mineshaft-600" />
<button type="button" onClick={logOutUser} className="w-full">
<DropdownMenuItem>Log Out</DropdownMenuItem>
</button>
</DropdownMenuContent>
</DropdownMenu>
</div>
);
};
@@ -1 +0,0 @@
export { SidebarFooter } from "./SidebarFooter";
@@ -1,22 +1,5 @@
import { faCheck, faSignOut, faSort } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { useNavigate } from "@tanstack/react-router";
import {
Button,
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger
} from "@app/components/v2";
import { useOrganization, useSubscription } from "@app/context"; import { useOrganization, useSubscription } from "@app/context";
import { useGetOrganizations, useLogoutUser } from "@app/hooks/api";
import { SubscriptionPlan } from "@app/hooks/api/types"; import { SubscriptionPlan } from "@app/hooks/api/types";
import { AuthMethod } from "@app/hooks/api/users/types";
type Prop = {
onChangeOrg: (orgId: string) => void;
};
const getPlan = (subscription: SubscriptionPlan) => { const getPlan = (subscription: SubscriptionPlan) => {
if (subscription.dynamicSecret) return "Enterprise Plan"; if (subscription.dynamicSecret) return "Enterprise Plan";
@@ -24,88 +7,21 @@ const getPlan = (subscription: SubscriptionPlan) => {
return "Free Plan"; return "Free Plan";
}; };
export const SidebarHeader = ({ onChangeOrg }: Prop) => { export const SidebarHeader = () => {
const { currentOrg } = useOrganization(); const { currentOrg } = useOrganization();
const navigate = useNavigate();
const { data: orgs } = useGetOrganizations();
const { subscription } = useSubscription(); const { subscription } = useSubscription();
const logout = useLogoutUser();
const logOutUser = async () => {
try {
console.log("Logging out...");
await logout.mutateAsync();
navigate({ to: "/login" });
} catch (error) {
console.error(error);
}
};
return ( return (
<div className="flex cursor-pointer items-center p-2 pt-4"> <div className="flex w-full items-center justify-center rounded-md border border-mineshaft-600 p-1 transition-all duration-150 hover:bg-mineshaft-700">
<DropdownMenu> <div className="mr-2 flex h-8 w-8 items-center justify-center rounded-md bg-primary">
<DropdownMenuTrigger asChild> {currentOrg?.name.charAt(0)}
<div className="flex w-full items-center justify-center rounded-md border border-mineshaft-600 p-1 transition-all duration-150 hover:bg-mineshaft-700"> </div>
<div className="mr-2 flex h-8 w-8 items-center justify-center rounded-md bg-primary"> <div className="flex flex-grow flex-col text-white">
{currentOrg?.name.charAt(0)} <div className="max-w-36 truncate text-ellipsis text-sm font-medium capitalize">
</div> {currentOrg?.name}
<div className="flex flex-grow flex-col text-white"> </div>
<div className="max-w-36 truncate text-ellipsis text-sm font-medium capitalize"> <div className="text-xs text-mineshaft-400">{getPlan(subscription)}</div>
{currentOrg?.name} </div>
</div>
<div className="text-xs text-mineshaft-400">{getPlan(subscription)}</div>
</div>
<FontAwesomeIcon icon={faSort} className="text-xs text-mineshaft-400" />
</div>
</DropdownMenuTrigger>
<DropdownMenuContent align="start" className="p-1">
<div className="px-2 py-1 text-xs capitalize text-mineshaft-400">organizations</div>
{orgs?.map((org) => {
return (
<DropdownMenuItem key={org.id}>
<Button
onClick={async () => {
if (currentOrg?.id === org.id) return;
if (org.authEnforced) {
// org has an org-level auth method enabled (e.g. SAML)
// -> logout + redirect to SAML SSO
await logout.mutateAsync();
if (org.orgAuthMethod === AuthMethod.OIDC) {
window.open(`/api/v1/sso/oidc/login?orgSlug=${org.slug}`);
} else {
window.open(`/api/v1/sso/redirect/saml2/organizations/${org.slug}`);
}
window.close();
return;
}
onChangeOrg(org?.id);
}}
variant="plain"
colorSchema="secondary"
size="xs"
className="flex w-full items-center justify-start p-0 font-normal"
leftIcon={
currentOrg?.id === org.id && (
<FontAwesomeIcon icon={faCheck} className="mr-3 text-primary" />
)
}
>
<div className="flex w-full max-w-[150px] items-center justify-between truncate">
{org.name}
</div>
</Button>
</DropdownMenuItem>
);
})}
<div className="mt-1 h-1 border-t border-mineshaft-600" />
<DropdownMenuItem onClick={logOutUser} icon={<FontAwesomeIcon icon={faSignOut} />}>
Log Out
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div> </div>
); );
}; };
@@ -14,7 +14,7 @@ import { envConfig } from "@app/config/env";
import { ProjectType } from "@app/hooks/api/workspace/types"; import { ProjectType } from "@app/hooks/api/workspace/types";
import { InsecureConnectionBanner } from "../OrganizationLayout/components/InsecureConnectionBanner"; import { InsecureConnectionBanner } from "../OrganizationLayout/components/InsecureConnectionBanner";
import { INFISICAL_SUPPORT_OPTIONS } from "../OrganizationLayout/components/SidebarFooter/SidebarFooter"; import { INFISICAL_SUPPORT_OPTIONS } from "../OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar";
export const PersonalSettingsLayout = () => { export const PersonalSettingsLayout = () => {
const { t } = useTranslation(); const { t } = useTranslation();
@@ -2,6 +2,7 @@ import { useTranslation } from "react-i18next";
import { faMobile } from "@fortawesome/free-solid-svg-icons"; import { faMobile } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link, Outlet, useRouterState } from "@tanstack/react-router"; import { Link, Outlet, useRouterState } from "@tanstack/react-router";
import { motion } from "framer-motion";
import { import {
BreadcrumbContainer, BreadcrumbContainer,
@@ -14,8 +15,6 @@ import { useWorkspace } from "@app/context";
import { useGetAccessRequestsCount, useGetSecretApprovalRequestCount } from "@app/hooks/api"; import { useGetAccessRequestsCount, useGetSecretApprovalRequestCount } from "@app/hooks/api";
import { ProjectType } from "@app/hooks/api/workspace/types"; import { ProjectType } from "@app/hooks/api/workspace/types";
import { InsecureConnectionBanner } from "../OrganizationLayout/components/InsecureConnectionBanner";
import { MinimizedOrgSidebar } from "./components/MinimizedOrgSidebar";
import { ProjectSelect } from "./components/ProjectSelect"; import { ProjectSelect } from "./components/ProjectSelect";
// This is a generic layout shared by all types of projects. // This is a generic layout shared by all types of projects.
@@ -49,10 +48,15 @@ export const ProjectLayout = () => {
return ( return (
<> <>
<div className="dark hidden h-screen w-full flex-col overflow-x-hidden md:flex"> <div className="dark hidden h-screen w-full flex-col overflow-x-hidden md:flex">
{!window.isSecureContext && <InsecureConnectionBanner />}
<div className="flex flex-grow flex-col overflow-y-hidden md:flex-row"> <div className="flex flex-grow flex-col overflow-y-hidden md:flex-row">
<MinimizedOrgSidebar /> <motion.div
<aside className="dark w-full border-r border-mineshaft-600 bg-gradient-to-tr from-mineshaft-700 via-mineshaft-800 to-mineshaft-900 md:w-60"> key="menu-project-items"
initial={{ x: -150 }}
animate={{ x: 0 }}
exit={{ x: -150 }}
transition={{ duration: 0.2 }}
className="dark w-full border-r border-mineshaft-600 bg-gradient-to-tr from-mineshaft-700 via-mineshaft-800 to-mineshaft-900 md:w-60"
>
<nav className="items-between flex h-full flex-col justify-between overflow-y-auto dark:[color-scheme:dark]"> <nav className="items-between flex h-full flex-col justify-between overflow-y-auto dark:[color-scheme:dark]">
<div> <div>
<ProjectSelect /> <ProjectSelect />
@@ -196,13 +200,13 @@ export const ProjectLayout = () => {
</div> </div>
</div> </div>
</nav> </nav>
</aside> </motion.div>
<main className="flex-1 overflow-y-auto overflow-x-hidden bg-bunker-800 px-4 pb-4 dark:[color-scheme:dark]"> <div className="flex-1 overflow-y-auto overflow-x-hidden bg-bunker-800 px-4 pb-4 dark:[color-scheme:dark]">
{breadcrumbs ? ( {breadcrumbs ? (
<BreadcrumbContainer breadcrumbs={breadcrumbs as TBreadcrumbFormat[]} /> <BreadcrumbContainer breadcrumbs={breadcrumbs as TBreadcrumbFormat[]} />
) : null} ) : null}
<Outlet /> <Outlet />
</main> </div>
</div> </div>
</div> </div>
<div className="z-[200] flex h-screen w-screen flex-col items-center justify-center bg-bunker-800 md:hidden"> <div className="z-[200] flex h-screen w-screen flex-col items-center justify-center bg-bunker-800 md:hidden">
@@ -1,59 +0,0 @@
import { useState } from "react";
import { faExternalLink, faSearch } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link } from "@tanstack/react-router";
import { DropdownMenuItem, EmptyState, Input } from "@app/components/v2";
import { getProjectTitle } from "@app/helpers/project";
import { useGetUserWorkspaces } from "@app/hooks/api";
import { ProjectType } from "@app/hooks/api/workspace/types";
type Props = {
type: ProjectType;
};
export const ProjectSwitcher = ({ type }: Props) => {
const { data: workspaces, isPending } = useGetUserWorkspaces({ type });
const [search, setSearch] = useState("");
const filteredWorkspaces = workspaces?.filter((el) =>
el.name.toLowerCase().includes(search.toLowerCase())
);
return (
<>
<Link to={`/organization/${type}/overview` as const}>
<div className="py-2 text-xs capitalize text-bunker-300">
{getProjectTitle(type)} projects
<FontAwesomeIcon icon={faExternalLink} size="xs" className="ml-1" />
</div>
</Link>
<div className="w-full pb-2">
<Input
leftIcon={<FontAwesomeIcon icon={faSearch} />}
value={search}
onChange={(evt) => setSearch(evt.target.value)}
size="xs"
placeholder="Search by name"
className=""
/>
</div>
<div className="thin-scrollbar max-h-64 overflow-auto">
{filteredWorkspaces?.map((el) => (
<Link
to={`/${type}/$projectId/overview` as const}
params={{ projectId: el.id }}
key={el.id}
>
<DropdownMenuItem>
<span className="capitalize">{el.name}</span>
</DropdownMenuItem>
</Link>
))}
{!isPending && !filteredWorkspaces?.length && (
<EmptyState title="No project found" iconSize="1x" />
)}
</div>
</>
);
};
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { CertAuthDetailsByIDPage } from "./CertAuthDetailsByIDPage"; import { CertAuthDetailsByIDPage } from "./CertAuthDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/ca/$caId" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/ca/$caId"
)({ )({
component: CertAuthDetailsByIDPage, component: CertAuthDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { CertificatesPage } from "./CertificatesPage"; import { CertificatesPage } from "./CertificatesPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/overview" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/overview"
)({ )({
component: CertificatesPage component: CertificatesPage
}); });
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { PkiCollectionDetailsByIDPage } from "./PkiCollectionDetailsByIDPage"; import { PkiCollectionDetailsByIDPage } from "./PkiCollectionDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/pki-collections/$collectionId" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/pki-collections/$collectionId"
)({ )({
component: PkiCollectionDetailsByIDPage, component: PkiCollectionDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from "./SettingsPage"; import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/settings" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/settings"
)({ )({
component: SettingsPage, component: SettingsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {
+1 -1
View File
@@ -6,7 +6,7 @@ import { fetchWorkspaceById } from "@app/hooks/api/workspace/queries";
import { ProjectLayout } from "@app/layouts/ProjectLayout"; import { ProjectLayout } from "@app/layouts/ProjectLayout";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout"
)({ )({
component: ProjectLayout, component: ProjectLayout,
beforeLoad: async ({ params, context }) => { beforeLoad: async ({ params, context }) => {
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { OverviewPage } from "./OverviewPage"; import { OverviewPage } from "./OverviewPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/kms/$projectId/_kms-layout/overview" "/_authenticate/_inject-org-details/_org-layout/kms/$projectId/_kms-layout/overview"
)({ )({
component: OverviewPage component: OverviewPage
}); });
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from "./SettingsPage"; import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/kms/$projectId/_kms-layout/settings" "/_authenticate/_inject-org-details/_org-layout/kms/$projectId/_kms-layout/settings"
)({ )({
component: SettingsPage, component: SettingsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {
+1 -1
View File
@@ -6,7 +6,7 @@ import { fetchWorkspaceById } from "@app/hooks/api/workspace/queries";
import { ProjectLayout } from "@app/layouts/ProjectLayout"; import { ProjectLayout } from "@app/layouts/ProjectLayout";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/kms/$projectId/_kms-layout" "/_authenticate/_inject-org-details/_org-layout/kms/$projectId/_kms-layout"
)({ )({
component: ProjectLayout, component: ProjectLayout,
beforeLoad: async ({ params, context }) => { beforeLoad: async ({ params, context }) => {
@@ -14,7 +14,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/access-management" "/_authenticate/_inject-org-details/_org-layout/organization/access-management"
)({ )({
component: AccessManagementPage, component: AccessManagementPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { AdminPage } from "./AdminPage"; import { AdminPage } from "./AdminPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/admin" "/_authenticate/_inject-org-details/_org-layout/organization/admin"
)({ )({
component: AdminPage, component: AdminPage,
context: () => ({ context: () => ({
@@ -11,7 +11,7 @@ const GitHubOAuthCallbackPageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/app-connections/github/oauth/callback" "/_authenticate/_inject-org-details/_org-layout/organization/app-connections/github/oauth/callback"
)({ )({
component: GitHubOAuthCallbackPage, component: GitHubOAuthCallbackPage,
validateSearch: zodValidator(GitHubOAuthCallbackPageQueryParamsSchema), validateSearch: zodValidator(GitHubOAuthCallbackPageQueryParamsSchema),
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { AuditLogsPage } from "./AuditLogsPage"; import { AuditLogsPage } from "./AuditLogsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/audit-logs" "/_authenticate/_inject-org-details/_org-layout/organization/audit-logs"
)({ )({
component: AuditLogsPage, component: AuditLogsPage,
context: () => ({ context: () => ({
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { BillingPage } from "./BillingPage"; import { BillingPage } from "./BillingPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/billing" "/_authenticate/_inject-org-details/_org-layout/organization/billing"
)({ )({
component: BillingPage component: BillingPage
}); });
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { CertManagerOverviewPage } from "./CertManagerOverviewPage"; import { CertManagerOverviewPage } from "./CertManagerOverviewPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/cert-manager/overview" "/_authenticate/_inject-org-details/_org-layout/organization/cert-manager/overview"
)({ )({
component: CertManagerOverviewPage, component: CertManagerOverviewPage,
context: () => ({ context: () => ({
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage"; import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organization/groups/$groupId"
)({ )({
component: GroupDetailsByIDPage, component: GroupDetailsByIDPage,
context: () => ({ context: () => ({
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organization/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
context: () => ({ context: () => ({
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { KmsOverviewPage } from "./KmsOverviewPage"; import { KmsOverviewPage } from "./KmsOverviewPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/kms/overview" "/_authenticate/_inject-org-details/_org-layout/organization/kms/overview"
)({ )({
component: KmsOverviewPage, component: KmsOverviewPage,
context: () => ({ context: () => ({
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { NoOrgPage } from "./NoOrgPage"; import { NoOrgPage } from "./NoOrgPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/none" "/_authenticate/_inject-org-details/_org-layout/organization/none"
)({ )({
component: NoOrgPage component: NoOrgPage
}); });
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { RoleByIDPage } from "./RoleByIDPage"; import { RoleByIDPage } from "./RoleByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/roles/$roleId" "/_authenticate/_inject-org-details/_org-layout/organization/roles/$roleId"
)({ )({
component: RoleByIDPage, component: RoleByIDPage,
context: () => ({ context: () => ({
@@ -5,7 +5,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { SecretManagerOverviewPage } from "./SecretManagerOverviewPage"; import { SecretManagerOverviewPage } from "./SecretManagerOverviewPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/secret-manager/overview" "/_authenticate/_inject-org-details/_org-layout/organization/secret-manager/overview"
)({ )({
component: SecretManagerOverviewPage, component: SecretManagerOverviewPage,
context: () => ({ context: () => ({
@@ -12,7 +12,7 @@ const SecretScanningQueryParams = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/secret-scanning" "/_authenticate/_inject-org-details/_org-layout/organization/secret-scanning"
)({ )({
validateSearch: zodValidator(SecretScanningQueryParams), validateSearch: zodValidator(SecretScanningQueryParams),
component: SecretScanningPage, component: SecretScanningPage,
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { SecretSharingPage } from "./SecretSharingPage"; import { SecretSharingPage } from "./SecretSharingPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/secret-sharing" "/_authenticate/_inject-org-details/_org-layout/organization/secret-sharing"
)({ )({
component: SecretSharingPage, component: SecretSharingPage,
context: () => ({ context: () => ({
@@ -11,7 +11,7 @@ const SettingsPageQueryParams = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/settings" "/_authenticate/_inject-org-details/_org-layout/organization/settings"
)({ )({
component: SettingsPage, component: SettingsPage,
validateSearch: zodValidator(SettingsPageQueryParams), validateSearch: zodValidator(SettingsPageQueryParams),
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { SshOverviewPage } from "./SshOverviewPage"; import { SshOverviewPage } from "./SshOverviewPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/ssh/overview" "/_authenticate/_inject-org-details/_org-layout/organization/ssh/overview"
)({ )({
component: SshOverviewPage, component: SshOverviewPage,
context: () => ({ context: () => ({
@@ -5,7 +5,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { UserDetailsByIDPage } from "./UserDetailsByIDPage"; import { UserDetailsByIDPage } from "./UserDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/organization/_layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organization/members/$membershipId"
)({ )({
component: UserDetailsByIDPage, component: UserDetailsByIDPage,
context: () => ({ context: () => ({
+1 -1
View File
@@ -2,6 +2,6 @@ import { createFileRoute } from "@tanstack/react-router";
import { OrganizationLayout } from "@app/layouts/OrganizationLayout"; import { OrganizationLayout } from "@app/layouts/OrganizationLayout";
export const Route = createFileRoute("/_authenticate/_inject-org-details/organization/_layout")({ export const Route = createFileRoute("/_authenticate/_inject-org-details/_org-layout")({
component: OrganizationLayout component: OrganizationLayout
}); });
@@ -11,7 +11,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),
@@ -11,7 +11,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/kms/$projectId/_kms-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/kms/$projectId/_kms-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),
@@ -11,7 +11,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),
@@ -11,7 +11,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/ssh/$projectId/_ssh-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/ssh/$projectId/_ssh-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/kms/$projectId/_kms-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/kms/$projectId/_kms-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/ssh/$projectId/_ssh-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/ssh/$projectId/_ssh-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/kms/$projectId/_kms-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/kms/$projectId/_kms-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/ssh/$projectId/_ssh-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/ssh/$projectId/_ssh-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage"; import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/cert-manager/$projectId/_cert-manager-layout/roles/$roleSlug" "/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId/_cert-manager-layout/roles/$roleSlug"
)({ )({
component: RoleDetailsBySlugPage, component: RoleDetailsBySlugPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage"; import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/kms/$projectId/_kms-layout/roles/$roleSlug" "/_authenticate/_inject-org-details/_org-layout/kms/$projectId/_kms-layout/roles/$roleSlug"
)({ )({
component: RoleDetailsBySlugPage, component: RoleDetailsBySlugPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage"; import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/roles/$roleSlug" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/roles/$roleSlug"
)({ )({
component: RoleDetailsBySlugPage, component: RoleDetailsBySlugPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage"; import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/ssh/$projectId/_ssh-layout/roles/$roleSlug" "/_authenticate/_inject-org-details/_org-layout/ssh/$projectId/_ssh-layout/roles/$roleSlug"
)({ )({
component: RoleDetailsBySlugPage, component: RoleDetailsBySlugPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { IPAllowListPage } from "./IPAllowlistPage"; import { IPAllowListPage } from "./IPAllowlistPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/allowlist" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/allowlist"
)({ )({
component: () => IPAllowListPage component: () => IPAllowListPage
}); });
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { IntegrationDetailsByIDPage } from "./IntegrationsDetailsByIDPage"; import { IntegrationDetailsByIDPage } from "./IntegrationsDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/$integrationId" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/$integrationId"
)({ )({
component: IntegrationDetailsByIDPage, component: IntegrationDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Details" label: "Details"
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { IntegrationsListPage } from "./IntegrationsListPage"; import { IntegrationsListPage } from "./IntegrationsListPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/"
)({ )({
component: IntegrationsListPage, component: IntegrationsListPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {
@@ -10,7 +10,7 @@ const SecretOverviewPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/overview" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/overview"
)({ )({
component: OverviewPage, component: OverviewPage,
validateSearch: zodValidator(SecretOverviewPageQuerySchema), validateSearch: zodValidator(SecretOverviewPageQuerySchema),
@@ -9,7 +9,7 @@ const SecretApprovalPageQueryParams = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/approval" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/approval"
)({ )({
component: SecretApprovalsPage, component: SecretApprovalsPage,
validateSearch: zodValidator(SecretApprovalPageQueryParams), validateSearch: zodValidator(SecretApprovalPageQueryParams),
@@ -13,7 +13,7 @@ const SecretDashboardPageQueryParamsSchema = z.object({
tags: z.string().catch("") tags: z.string().catch("")
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/secrets/$envSlug" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/secrets/$envSlug"
)({ )({
component: SecretDashboardPage, component: SecretDashboardPage,
validateSearch: zodValidator(SecretDashboardPageQueryParamsSchema), validateSearch: zodValidator(SecretDashboardPageQueryParamsSchema),
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { SecretRotationPage } from "./SecretRotationPage"; import { SecretRotationPage } from "./SecretRotationPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/secret-rotation" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/secret-rotation"
)({ )({
component: SecretRotationPage, component: SecretRotationPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {
@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from "./SettingsPage"; import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/settings" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/settings"
)({ )({
component: SettingsPage, component: SettingsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { AWSParameterStoreAuthorizeIntegrationPage } from "./AwsParameterStoreAuthorizePage"; import { AWSParameterStoreAuthorizeIntegrationPage } from "./AwsParameterStoreAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/aws-parameter-store/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/aws-parameter-store/authorize"
)({ )({
component: AWSParameterStoreAuthorizeIntegrationPage, component: AWSParameterStoreAuthorizeIntegrationPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "AWS Parameter Store" label: "AWS Parameter Store"
@@ -9,7 +9,7 @@ const AwsParameterStoreConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/aws-parameter-store/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/aws-parameter-store/create"
)({ )({
component: AWSParameterStoreConfigurePage, component: AWSParameterStoreConfigurePage,
validateSearch: zodValidator(AwsParameterStoreConfigurePageQueryParamsSchema), validateSearch: zodValidator(AwsParameterStoreConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "AWS Parameter Store" label: "AWS Parameter Store"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { AWSSecretManagerAuthorizePage } from "./AwsSecretManagerAuthorizePage"; import { AWSSecretManagerAuthorizePage } from "./AwsSecretManagerAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/aws-secret-manager/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/aws-secret-manager/authorize"
)({ )({
component: AWSSecretManagerAuthorizePage, component: AWSSecretManagerAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "AWS Secret Manager" label: "AWS Secret Manager"
@@ -9,7 +9,7 @@ const AwsSecretManagerConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/aws-secret-manager/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/aws-secret-manager/create"
)({ )({
component: AwsSecretManagerConfigurePage, component: AwsSecretManagerConfigurePage,
validateSearch: zodValidator(AwsSecretManagerConfigurePageQueryParamsSchema), validateSearch: zodValidator(AwsSecretManagerConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "AWS Secret Manager" label: "AWS Secret Manager"
@@ -9,7 +9,7 @@ const AzureAppConfigurationPageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-app-configuration/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-app-configuration/create"
)({ )({
component: AzureAppConfigurationConfigurePage, component: AzureAppConfigurationConfigurePage,
validateSearch: zodValidator(AzureAppConfigurationPageQueryParamsSchema), validateSearch: zodValidator(AzureAppConfigurationPageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Azure App Configuration" label: "Azure App Configuration"
@@ -10,7 +10,7 @@ export const AzureAppConfigurationOauthCallbackPageQueryParamsSchema = z.object(
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-app-configuration/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-app-configuration/oauth2/callback"
)({ )({
component: AzureAppConfigurationOauthCallbackPage, component: AzureAppConfigurationOauthCallbackPage,
validateSearch: zodValidator(AzureAppConfigurationOauthCallbackPageQueryParamsSchema), validateSearch: zodValidator(AzureAppConfigurationOauthCallbackPageQueryParamsSchema),
@@ -20,7 +20,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Azure App Configuration" label: "Azure App Configuration"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { AzureDevopsAuthorizePage } from "./AzureDevopsAuthorizePage"; import { AzureDevopsAuthorizePage } from "./AzureDevopsAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-devops/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-devops/authorize"
)({ )({
component: AzureDevopsAuthorizePage, component: AzureDevopsAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Azure Devops" label: "Azure Devops"
@@ -9,7 +9,7 @@ const AzureDevopsConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-devops/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-devops/create"
)({ )({
component: AzureDevopsConfigurePage, component: AzureDevopsConfigurePage,
validateSearch: zodValidator(AzureDevopsConfigurePageQueryParamsSchema), validateSearch: zodValidator(AzureDevopsConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Azure Devops" label: "Azure Devops"
@@ -9,7 +9,7 @@ const PageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/authorize"
)({ )({
component: AzureKeyVaultAuthorizePage, component: AzureKeyVaultAuthorizePage,
validateSearch: PageQueryParamsSchema, validateSearch: PageQueryParamsSchema,
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Azure Key Vault" label: "Azure Key Vault"
@@ -9,7 +9,7 @@ const AzureKeyVaultConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/create"
)({ )({
component: AzureKeyVaultConfigurePage, component: AzureKeyVaultConfigurePage,
validateSearch: zodValidator(AzureKeyVaultConfigurePageQueryParamsSchema), validateSearch: zodValidator(AzureKeyVaultConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Azure Key Vault" label: "Azure Key Vault"
@@ -10,7 +10,7 @@ export const AzureKeyVaultOauthCallbackQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/azure-key-vault/oauth2/callback"
)({ )({
component: AzureKeyVaultOauthCallbackPage, component: AzureKeyVaultOauthCallbackPage,
validateSearch: zodValidator(AzureKeyVaultOauthCallbackQueryParamsSchema), validateSearch: zodValidator(AzureKeyVaultOauthCallbackQueryParamsSchema),
@@ -20,7 +20,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Azure Key Vault" label: "Azure Key Vault"
@@ -9,7 +9,7 @@ const BitbucketConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/bitbucket/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/bitbucket/create"
)({ )({
component: BitbucketConfigurePage, component: BitbucketConfigurePage,
validateSearch: zodValidator(BitbucketConfigurePageQueryParamsSchema), validateSearch: zodValidator(BitbucketConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Bitbucket" label: "Bitbucket"
@@ -10,7 +10,7 @@ export const BitbucketOauthCallbackQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/bitbucket/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/bitbucket/oauth2/callback"
)({ )({
component: BitbucketOauthCallbackPage, component: BitbucketOauthCallbackPage,
validateSearch: zodValidator(BitbucketOauthCallbackQueryParamsSchema), validateSearch: zodValidator(BitbucketOauthCallbackQueryParamsSchema),
@@ -20,7 +20,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Bitbucket" label: "Bitbucket"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { ChecklyAuthorizePage } from "./ChecklyAuthorizePage"; import { ChecklyAuthorizePage } from "./ChecklyAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/checkly/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/checkly/authorize"
)({ )({
component: ChecklyAuthorizePage, component: ChecklyAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Checkly" label: "Checkly"
@@ -9,7 +9,7 @@ const ChecklyConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/checkly/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/checkly/create"
)({ )({
component: ChecklyConfigurePage, component: ChecklyConfigurePage,
validateSearch: zodValidator(ChecklyConfigurePageQueryParamsSchema), validateSearch: zodValidator(ChecklyConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Checkly" label: "Checkly"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { CircleCIAuthorizePage } from "./CircleCIAuthorizePage"; import { CircleCIAuthorizePage } from "./CircleCIAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/circleci/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/circleci/authorize"
)({ )({
component: CircleCIAuthorizePage, component: CircleCIAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Circle CI" label: "Circle CI"
@@ -9,7 +9,7 @@ const CircleCIConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/circleci/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/circleci/create"
)({ )({
component: CircleCIConfigurePage, component: CircleCIConfigurePage,
validateSearch: zodValidator(CircleCIConfigurePageQueryParamsSchema), validateSearch: zodValidator(CircleCIConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Circle CI" label: "Circle CI"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { Cloud66AuthorizePage } from "./Cloud66AuthorizePage"; import { Cloud66AuthorizePage } from "./Cloud66AuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloud-66/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloud-66/authorize"
)({ )({
component: Cloud66AuthorizePage, component: Cloud66AuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Cloud 66" label: "Cloud 66"
@@ -9,7 +9,7 @@ const Cloud66ConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloud-66/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloud-66/create"
)({ )({
component: Cloud66ConfigurePage, component: Cloud66ConfigurePage,
validateSearch: zodValidator(Cloud66ConfigurePageQueryParamsSchema), validateSearch: zodValidator(Cloud66ConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Cloud 66" label: "Cloud 66"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { CloudflarePagesAuthorizePage } from "./CloudflarePagesAuthorizePage"; import { CloudflarePagesAuthorizePage } from "./CloudflarePagesAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-pages/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-pages/authorize"
)({ )({
component: CloudflarePagesAuthorizePage, component: CloudflarePagesAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Cloudflare Pages" label: "Cloudflare Pages"
@@ -9,7 +9,7 @@ const CloudflarePagesConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-pages/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-pages/create"
)({ )({
component: CloudflarePagesConfigurePage, component: CloudflarePagesConfigurePage,
validateSearch: zodValidator(CloudflarePagesConfigurePageQueryParamsSchema), validateSearch: zodValidator(CloudflarePagesConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Cloudflare Pages" label: "Cloudflare Pages"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { CloudflareWorkersAuthorizePage } from "./CloudflareWorkersAuthorizePage"; import { CloudflareWorkersAuthorizePage } from "./CloudflareWorkersAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-workers/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-workers/authorize"
)({ )({
component: CloudflareWorkersAuthorizePage, component: CloudflareWorkersAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Cloudflare Workers" label: "Cloudflare Workers"
@@ -9,7 +9,7 @@ const CloudflareWorkersConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-workers/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/cloudflare-workers/create"
)({ )({
component: CloudflareWorkersConfigurePage, component: CloudflareWorkersConfigurePage,
validateSearch: zodValidator(CloudflareWorkersConfigurePageQueryParamsSchema), validateSearch: zodValidator(CloudflareWorkersConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Cloudflare Workers" label: "Cloudflare Workers"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { CodefreshAuthorizePage } from "./CodefreshAuthorizePage"; import { CodefreshAuthorizePage } from "./CodefreshAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/codefresh/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/codefresh/authorize"
)({ )({
component: CodefreshAuthorizePage, component: CodefreshAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Codefresh" label: "Codefresh"
@@ -9,7 +9,7 @@ const CodefreshConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/codefresh/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/codefresh/create"
)({ )({
component: CodefreshConfigurePage, component: CodefreshConfigurePage,
validateSearch: zodValidator(CodefreshConfigurePageQueryParamsSchema), validateSearch: zodValidator(CodefreshConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Codefresh" label: "Codefresh"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { DatabricksAuthorizePage } from "./DatabricksAuthorizePage"; import { DatabricksAuthorizePage } from "./DatabricksAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/databricks/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/databricks/authorize"
)({ )({
component: DatabricksAuthorizePage, component: DatabricksAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Databricks" label: "Databricks"
@@ -9,7 +9,7 @@ const DatabricksConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/databricks/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/databricks/create"
)({ )({
component: DatabricksConfigurePage, component: DatabricksConfigurePage,
validateSearch: zodValidator(DatabricksConfigurePageQueryParamsSchema), validateSearch: zodValidator(DatabricksConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Databricks" label: "Databricks"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { DigitalOceanAppPlatformAuthorizePage } from "./DigitalOceanAppPlatformAuthorizePage"; import { DigitalOceanAppPlatformAuthorizePage } from "./DigitalOceanAppPlatformAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/digital-ocean-app-platform/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/digital-ocean-app-platform/authorize"
)({ )({
component: DigitalOceanAppPlatformAuthorizePage, component: DigitalOceanAppPlatformAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "DigitalOcean App Platform" label: "DigitalOcean App Platform"
@@ -9,7 +9,7 @@ const DigitalOceanAppPlatformConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/digital-ocean-app-platform/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/digital-ocean-app-platform/create"
)({ )({
component: DigitalOceanAppPlatformConfigurePage, component: DigitalOceanAppPlatformConfigurePage,
validateSearch: zodValidator(DigitalOceanAppPlatformConfigurePageQueryParamsSchema), validateSearch: zodValidator(DigitalOceanAppPlatformConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "DigitalOcean App Platform" label: "DigitalOcean App Platform"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { FlyioAuthorizePage } from "./FlyioAuthorizePage"; import { FlyioAuthorizePage } from "./FlyioAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/flyio/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/flyio/authorize"
)({ )({
component: FlyioAuthorizePage, component: FlyioAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Fly IO" label: "Fly IO"
@@ -9,7 +9,7 @@ const FlyioConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/flyio/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/flyio/create"
)({ )({
component: FlyioConfigurePage, component: FlyioConfigurePage,
validateSearch: zodValidator(FlyioConfigurePageQueryParamsSchema), validateSearch: zodValidator(FlyioConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "Fly IO" label: "Fly IO"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { GcpSecretManagerAuthorizePage } from "./GcpSecretManagerAuthorizePage"; import { GcpSecretManagerAuthorizePage } from "./GcpSecretManagerAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/authorize" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/authorize"
)({ )({
component: GcpSecretManagerAuthorizePage, component: GcpSecretManagerAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "GCP Secret Manager" label: "GCP Secret Manager"
@@ -9,7 +9,7 @@ const GcpConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/create"
)({ )({
component: GcpSecretManagerConfigurePage, component: GcpSecretManagerConfigurePage,
validateSearch: zodValidator(GcpConfigurePageQueryParamsSchema), validateSearch: zodValidator(GcpConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "GCP Secret Manager" label: "GCP Secret Manager"
@@ -10,7 +10,7 @@ export const GcpSecretManagerOAuthCallbackPageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/oauth2/callback"
)({ )({
component: GcpSecretManagerOauthCallbackPage, component: GcpSecretManagerOauthCallbackPage,
validateSearch: zodValidator(GcpSecretManagerOAuthCallbackPageQueryParamsSchema), validateSearch: zodValidator(GcpSecretManagerOAuthCallbackPageQueryParamsSchema),
@@ -20,7 +20,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "GCP Secret Manager" label: "GCP Secret Manager"
@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { GithubAuthorizePage } from "./GithubAuthorizePage"; import { GithubAuthorizePage } from "./GithubAuthorizePage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/github/auth-mode-selection" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/github/auth-mode-selection"
)({ )({
component: GithubAuthorizePage, component: GithubAuthorizePage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -12,7 +12,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "GitHub" label: "GitHub"
@@ -9,7 +9,7 @@ const GithubConfigurePageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/github/create" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/github/create"
)({ )({
component: GithubConfigurePage, component: GithubConfigurePage,
validateSearch: zodValidator(GithubConfigurePageQueryParamsSchema), validateSearch: zodValidator(GithubConfigurePageQueryParamsSchema),
@@ -19,7 +19,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "GitHub" label: "GitHub"
@@ -11,7 +11,7 @@ export const GithubOAuthCallbackPageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/integrations/github/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/github/oauth2/callback"
)({ )({
component: GithubOauthCallbackPage, component: GithubOauthCallbackPage,
validateSearch: zodValidator(GithubOAuthCallbackPageQueryParamsSchema), validateSearch: zodValidator(GithubOAuthCallbackPageQueryParamsSchema),
@@ -21,7 +21,10 @@ export const Route = createFileRoute(
...context.breadcrumbs, ...context.breadcrumbs,
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ to: "/secret-manager/$projectId/integrations", params }) link: linkOptions({
to: "/secret-manager/$projectId/integrations",
params
})
}, },
{ {
label: "GitHub" label: "GitHub"

Some files were not shown because too many files have changed in this diff Show More