feat: fixed all ts url errors

This commit is contained in:
=
2025-07-02 01:16:49 +05:30
parent b0c1c9ce26
commit 48ac6b4aff
280 changed files with 2163 additions and 2460 deletions
+2 -6
View File
@@ -85,9 +85,7 @@ export const AdminSidebar = () => {
const isActive = matchRoute({ to: tab.link, fuzzy: false });
return (
<Link key={tab.link} to={tab.link}>
<MenuItem isSelected={Boolean(isActive)} icon={tab.icon}>
{tab.label}
</MenuItem>
<MenuItem isSelected={Boolean(isActive)}>{tab.label}</MenuItem>
</Link>
);
})}
@@ -97,9 +95,7 @@ export const AdminSidebar = () => {
const isActive = matchRoute({ to: tab.link, fuzzy: false });
return (
<Link key={tab.link} to={tab.link}>
<MenuItem isSelected={Boolean(isActive)} icon={tab.icon}>
{tab.label}
</MenuItem>
<MenuItem isSelected={Boolean(isActive)}>{tab.label}</MenuItem>
</Link>
);
})}
@@ -59,4 +59,3 @@ export const KmsLayout = () => {
</div>
);
};
+1 -1
View File
@@ -1 +1 @@
export { KmsLayout } from "./KmsLayout";
export { KmsLayout } from "./KmsLayout";
@@ -1,33 +1,25 @@
import { useTranslation } from "react-i18next";
import { faMobile } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Outlet, useLocation, useParams, useSearch } from "@tanstack/react-router";
import { Outlet, useParams } from "@tanstack/react-router";
import { twMerge } from "tailwind-merge";
import { CreateOrgModal } from "@app/components/organization/CreateOrgModal";
import { Banner } from "@app/components/page-frames/Banner";
import { OrgPermissionSubjects, useOrgPermission, useServerConfig } from "@app/context";
import { OrgPermissionSecretShareAction } from "@app/context/OrgPermissionContext/types";
import { useServerConfig } from "@app/context";
import { usePopUp } from "@app/hooks";
import { InsecureConnectionBanner } from "./components/InsecureConnectionBanner";
import { OrgSidebar } from "./components/OrgSidebar";
import { Navbar } from "./components/NavBar";
import { twMerge } from "tailwind-merge";
import { OrgSidebar } from "./components/OrgSidebar";
export const OrganizationLayout = () => {
const { config } = useServerConfig();
const { permission } = useOrgPermission();
const projectId = useParams({
strict: false,
select: (el) => el?.projectId
});
const isInsideProject = Boolean(projectId);
console.log(isInsideProject);
const shouldShowProductsSidebar = permission.can(
OrgPermissionSecretShareAction.ManageSettings,
OrgPermissionSubjects.SecretShare
);
const { popUp, handlePopUpToggle } = usePopUp(["createOrg"] as const);
@@ -1,61 +0,0 @@
import { Link } from "@tanstack/react-router";
import { Menu, MenuGroup, MenuItem } from "@app/components/v2";
export const DefaultSideBar = () => (
<Menu>
<MenuGroup title="Organization Control">
<Link to="/organization/access-management">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="groups">
Access Control
</MenuItem>
)}
</Link>
<Link to="/organization/app-connections">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="jigsaw-puzzle">
App Connections
</MenuItem>
)}
</Link>
<Link to="/organization/gateways">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="gateway" iconMode="reverse">
Gateways
</MenuItem>
)}
</Link>
<Link to="/organization/sso">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="check">
Single Sign-On (SSO)
</MenuItem>
)}
</Link>
</MenuGroup>
<MenuGroup title="Other">
<Link to="/organization/audit-logs">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="moving-block">
Audit Logs
</MenuItem>
)}
</Link>
<Link to="/organization/billing">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="spinning-coin">
Usage & Billing
</MenuItem>
)}
</Link>
<Link to="/organization/settings">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="toggle-settings">
Organization Settings
</MenuItem>
)}
</Link>
</MenuGroup>
</Menu>
);
@@ -1,99 +0,0 @@
import { faArrowUpRightFromSquare } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link, useMatchRoute } from "@tanstack/react-router";
import { Menu, MenuGroup, MenuItem } from "@app/components/v2";
import { ProjectType } from "@app/hooks/api/workspace/types";
type TProjectOverviewSideBarProps = {
type: ProjectType;
};
export const ProjectOverviewSideBar = ({ type }: TProjectOverviewSideBarProps) => {
const matchRoute = useMatchRoute();
const isOverviewActive = !!matchRoute({
to: "/organization/projects",
fuzzy: false
});
let label: string;
let icon: string;
let link: string;
switch (type) {
case ProjectType.CertificateManager:
label = "Cert Management";
icon = "note";
link = "https://infisical.com/docs/documentation/platform/pki/overview";
break;
case ProjectType.SecretManager:
label = "Secret Management";
icon = "sliding-carousel";
link = "https://infisical.com/docs/documentation/getting-started/introduction";
break;
case ProjectType.KMS:
label = "KMS";
icon = "unlock";
link = "https://infisical.com/docs/documentation/platform/kms/overview";
break;
case ProjectType.SSH:
label = "SSH";
icon = "verified";
link = "https://infisical.com/docs/documentation/platform/ssh/overview";
break;
case ProjectType.SecretScanning:
label = "Secret Scanning";
icon = "secret-scan";
link = "https://infisical.com/docs/documentation/platform/secret-scanning/overview";
break;
default:
throw new Error("Unknown project type");
}
return (
<>
<div className="p-2 pt-3">
<a
target="_blank"
rel="noopener noreferrer"
href={link}
className="flex w-full items-center rounded-md border border-mineshaft-600 p-2 pl-3 transition-all duration-150 hover:bg-mineshaft-700"
>
<div className="mr-2 flex h-6 w-6 items-center justify-center rounded-md bg-mineshaft-500 p-4">
<FontAwesomeIcon
icon={faArrowUpRightFromSquare}
className="h-3.5 w-3.5 text-mineshaft-300"
/>
</div>
<div className="-mt-1 flex flex-grow flex-col text-white">
<div className="max-w-36 truncate text-ellipsis text-sm font-medium capitalize">
Infisical Docs
</div>
<div className="text-xs leading-[10px] text-mineshaft-400">
{type === ProjectType.SecretManager ? "Get Started" : `${label} Overview`}
</div>
</div>
</a>
</div>
<Menu>
<MenuGroup title="Overview">
<Link to={`/organization/${type}/overview`}>
<MenuItem isSelected={isOverviewActive} icon={icon}>
{label}
</MenuItem>
</Link>
</MenuGroup>
<MenuGroup title="Other">
<Link to={`/organization/${type}/settings`}>
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="toggle-settings">
Settings
</MenuItem>
)}
</Link>
</MenuGroup>
</Menu>
</>
);
};
@@ -1,34 +0,0 @@
import { Link, useMatchRoute } from "@tanstack/react-router";
import { Menu, MenuGroup, MenuItem } from "@app/components/v2";
export const SecretSharingSideBar = () => {
const matchRoute = useMatchRoute();
const isOverviewActive = !!matchRoute({
to: "/organization/secret-sharing",
fuzzy: false
});
return (
<Menu>
<MenuGroup title="Overview">
<Link to="/organization/secret-sharing">
{() => (
<MenuItem isSelected={isOverviewActive} icon="lock-closed">
Secret Sharing
</MenuItem>
)}
</Link>
</MenuGroup>
<MenuGroup title="Other">
<Link to="/organization/secret-sharing/settings">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="toggle-settings">
Settings
</MenuItem>
)}
</Link>
</MenuGroup>
</Menu>
);
};
@@ -1,3 +0,0 @@
export * from "./DefaultSideBar";
export * from "./ProjectOverviewSideBar";
export * from "./SecretSharingSideBar";
@@ -1,5 +1,6 @@
import { useState } from "react";
import { faGithub, faSlack } from "@fortawesome/free-brands-svg-icons";
import { faCircleQuestion } from "@fortawesome/free-regular-svg-icons";
import {
faArrowUpRightFromSquare,
faBook,
@@ -13,7 +14,6 @@ import {
faUser,
faUsers
} from "@fortawesome/free-solid-svg-icons";
import { faCircleQuestion } from "@fortawesome/free-regular-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { useQueryClient } from "@tanstack/react-query";
import { Link, useNavigate, useRouter, useRouterState } from "@tanstack/react-router";
@@ -29,6 +29,8 @@ import {
DropdownMenuTrigger,
IconButton,
Lottie,
Modal,
ModalContent,
TBreadcrumbFormat
} from "@app/components/v2";
import { envConfig } from "@app/config/env";
@@ -42,6 +44,8 @@ import { SubscriptionPlan } from "@app/hooks/api/types";
import { AuthMethod } from "@app/hooks/api/users/types";
import { navigateUserToOrg } from "@app/pages/auth/LoginPage/Login.utils";
import { ServerAdminsPanel } from "../ServerAdminsPanel/ServerAdminsPanel";
const getPlan = (subscription: SubscriptionPlan) => {
if (subscription.groups) return "Enterprise";
if (subscription.pitRecovery) return "Pro";
@@ -82,6 +86,7 @@ export const Navbar = () => {
const { currentOrg } = useOrganization();
const [openSupport, setOpenSupport] = useState(false);
const [openUser, setOpenUser] = useState(false);
const [showAdminsModal, setShowAdminsModal] = useState(false);
const { data: orgs } = useGetOrganizations();
const navigate = useNavigate();
@@ -366,6 +371,13 @@ export const Navbar = () => {
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
<Modal isOpen={showAdminsModal} onOpenChange={setShowAdminsModal}>
<ModalContent title="Server Administrators" subTitle="View all server administrators">
<div className="mb-2">
<ServerAdminsPanel />
</div>
</ModalContent>
</Modal>
</div>
);
};
@@ -284,7 +284,7 @@ export const OrgSidebar = () => {
</div>
<div className="space-y-1">
{currentOrg.secretsProductEnabled && (
<Link to="/organization/secret-manager/overview">
<Link to="/organization/projects">
{({ isActive }) => (
<MenuIconButton
isSelected={
@@ -1,34 +1,32 @@
import { useState } from "react";
import {
faBook,
faCheckCircle,
faCog,
faCubes,
faDoorClosed,
faInfinity,
faMoneyBill,
faPlug,
faShare,
faUserCog,
faUsers
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link } from "@tanstack/react-router";
import { AnimatePresence, motion } from "framer-motion";
import { CreateOrgModal } from "@app/components/organization/CreateOrgModal";
import { Menu, MenuGroup, MenuItem, Modal, ModalContent, Tooltip } from "@app/components/v2";
import { Menu, MenuGroup, MenuItem, Tooltip } from "@app/components/v2";
import { useOrganization, useSubscription, useUser } from "@app/context";
import { usePopUp } from "@app/hooks";
import { useGetOrgTrialUrl } from "@app/hooks/api";
import { ServerAdminsPanel } from "../ServerAdminsPanel/ServerAdminsPanel";
import { AnimatePresence, motion } from "framer-motion";
type Props = {
isHidden?: boolean;
};
export const OrgSidebar = ({ isHidden }: Props) => {
const { subscription } = useSubscription();
const [showAdminsModal, setShowAdminsModal] = useState(false);
const { user } = useUser();
const { mutateAsync } = useGetOrgTrialUrl();
@@ -55,8 +53,11 @@ export const OrgSidebar = ({ isHidden }: Props) => {
<MenuGroup title="Overview">
<Link to="/organization/projects">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="notification-bell">
Projects
<MenuItem isSelected={isActive}>
<div className="mx-1">
<FontAwesomeIcon icon={faCubes} className="mr-4" />
Projects
</div>
</MenuItem>
)}
</Link>
@@ -136,8 +137,11 @@ export const OrgSidebar = ({ isHidden }: Props) => {
<MenuGroup title="Others">
<Link to="/organization/secret-sharing">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="lock-closed">
Share Secret
<MenuItem isSelected={isActive}>
<div className="mx-1">
<FontAwesomeIcon icon={faShare} className="mr-4" />
Share Secret
</div>
</MenuItem>
)}
</Link>
@@ -208,13 +212,7 @@ export const OrgSidebar = ({ isHidden }: Props) => {
</motion.aside>
)}
</AnimatePresence>
<Modal isOpen={showAdminsModal} onOpenChange={setShowAdminsModal}>
<ModalContent title="Server Administrators" subTitle="View all server administrators">
<div className="mb-2">
<ServerAdminsPanel />
</div>
</ModalContent>
</Modal>
<CreateOrgModal
isOpen={popUp?.createOrg?.isOpen}
onClose={() => handlePopUpToggle("createOrg", false)}
@@ -99,4 +99,3 @@ export const PkiManagerLayout = () => {
</>
);
};
@@ -1 +1 @@
export { PkiManagerLayout } from "./PkiManagerLayout";
export { PkiManagerLayout } from "./PkiManagerLayout";
@@ -51,4 +51,3 @@ export const ProjectGeneralLayout = () => {
</div>
);
};
@@ -1,2 +1 @@
export { ProjectGeneralLayout } from "./ProjectGeneralLayout";
+3 -3
View File
@@ -225,7 +225,7 @@ export const ProjectLayout = () => {
{isSSH && (
<>
<Link
to={`/${ProjectType.SSH}/$projectId/overview` as const}
to={`/projects/$projectId/${ProjectType.SSH}/overview` as const}
params={{
projectId: currentWorkspace.id
}}
@@ -237,7 +237,7 @@ export const ProjectLayout = () => {
)}
</Link>
{/* <Link
to={`/${ProjectType.SSH}/$projectId/certificates` as const}
to={`/projects/$projectId/${ProjectType.SSH}/certificates` as const}
params={{
projectId: currentWorkspace.id
}}
@@ -255,7 +255,7 @@ export const ProjectLayout = () => {
{(isAllowed) =>
isAllowed && (
<Link
to={`/${ProjectType.SSH}/$projectId/cas` as const}
to={`/projects/$projectId/${ProjectType.SSH}/cas` as const}
params={{
projectId: currentWorkspace.id
}}
@@ -4,6 +4,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link, Outlet, useLocation } from "@tanstack/react-router";
import { motion } from "framer-motion";
import { ShouldWrap } from "@app/components/utilities/ShouldWrapComponent";
import {
Divider,
DropdownMenu,
@@ -16,12 +17,11 @@ import {
Tooltip
} from "@app/components/v2";
import { useProjectPermission, useWorkspace } from "@app/context";
import { getCurrentProductFromUrl } from "@app/helpers/project";
import { useLocalStorageState } from "@app/hooks";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { AssumePrivilegeModeBanner } from "./components/AssumePrivilegeModeBanner";
import { useLocalStorageState } from "@app/hooks";
import { ShouldWrap } from "@app/components/utilities/ShouldWrapComponent";
import { getCurrentProductFromUrl } from "@app/helpers/project";
import { ProjectType } from "@app/hooks/api/workspace/types";
enum SidebarStyle {
Expanded = "expanded",
@@ -6,6 +6,7 @@ import { useProjectPermission, useWorkspace } from "@app/context";
import { useRemoveAssumeProjectPrivilege } from "@app/hooks/api";
import { ActorType } from "@app/hooks/api/auditLogs/enums";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
export const AssumePrivilegeModeBanner = () => {
const { currentWorkspace } = useWorkspace();
@@ -36,20 +37,11 @@ export const AssumePrivilegeModeBanner = () => {
},
{
onSuccess: () => {
let page: string;
const url = getProjectHomePage(
getCurrentProductFromUrl(window.location.href) || ProjectType.SecretManager
);
switch (currentWorkspace.type) {
case ProjectType.SecretScanning:
page = "data-sources";
break;
case ProjectType.CertificateManager:
page = "subscribers";
break;
default:
page = "overview";
}
window.location.href = `/${currentWorkspace.type}/${currentWorkspace.id}/${page}`;
window.location.href = url.replace("$projectId", currentWorkspace.id);
}
}
);
@@ -4,17 +4,17 @@ import {
faCheck,
faCube,
faPlus,
faStar as faSolidStar,
faSort
faSort,
faStar as faSolidStar
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link, linkOptions } from "@tanstack/react-router";
import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal";
import { createNotification } from "@app/components/notifications";
import { OrgPermissionCan } from "@app/components/permissions";
import { NewProjectModal } from "@app/components/projects";
import {
Button,
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
@@ -28,13 +28,12 @@ import {
useSubscription,
useWorkspace
} from "@app/context";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
import { usePopUp } from "@app/hooks";
import { useGetUserWorkspaces } from "@app/hooks/api";
import { useUpdateUserProjectFavorites } from "@app/hooks/api/users/mutation";
import { useGetUserProjectFavorites } from "@app/hooks/api/users/queries";
import { ProjectType, Workspace } from "@app/hooks/api/workspace/types";
import { Link, linkOptions } from "@tanstack/react-router";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
// TODO(pta): add search to project select
export const ProjectSelect = () => {
@@ -105,7 +105,7 @@ export const SecretManagerLayout = () => {
)}
</Link>
<Link
to={`/${currentWorkspace.type}/$projectId/settings` as const}
to="/projects/$projectId/secret-manager/settings"
params={{
projectId: currentWorkspace.id
}}
@@ -59,4 +59,3 @@ export const SecretScanningLayout = () => {
</div>
);
};
@@ -1 +1 @@
export { SecretScanningLayout } from "./SecretScanningLayout";
export { SecretScanningLayout } from "./SecretScanningLayout";
+1 -2
View File
@@ -1,9 +1,9 @@
import { Link, Outlet } from "@tanstack/react-router";
import { motion } from "framer-motion";
import { ProjectPermissionCan } from "@app/components/permissions";
import { Menu, MenuItem } from "@app/components/v2";
import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context";
import { ProjectPermissionCan } from "@app/components/permissions";
export const SshLayout = () => {
const { currentWorkspace } = useWorkspace();
@@ -97,4 +97,3 @@ export const SshLayout = () => {
</div>
);
};
+1 -1
View File
@@ -1 +1 @@
export { SshLayout } from "./SshLayout";
export { SshLayout } from "./SshLayout";