handleUpdateVariable(item)} + className={ + "text-violet-500 dark:text-purple-400 hover:text-violet-800 dark:hover:text-purple-300" + }> + {item.key} +
+ ), + createdAt: ( ++ {renderTimestamp(item.created_at)} +
+ ), + createdBy:{item.created_by}
, + })); + + return { + rows, + actions, + selectedSecret, + isActionOpen, + toggle, + isConfigOpen, + toggleConfig, + selectedId, + }; +}; diff --git a/web/src/pages/secret-management/index.tsx b/web/src/pages/secret-management/index.tsx new file mode 100644 index 000000000..11f7ade57 --- /dev/null +++ b/web/src/pages/secret-management/index.tsx @@ -0,0 +1,84 @@ +import Heading from "../../components/Heading"; +import { useState } from "react"; +import useDebounce from "../../hooks/common/useDebounce"; +import { useGetSecretsListQuery } from "../../store/features/secrets/api"; +import usePaginationComponent from "../../hooks/common/usePaginationComponent"; +import CustomInput from "../../components/Inputs/CustomInput"; +import { InputTypes } from "../../types"; +import SuspenseLoader from "../../components/Skeleton/SuspenseLoader"; +import TableSkeleton from "../../components/Skeleton/TableLoader"; +import PaginatedTable from "../../components/common/Table/PaginatedTable"; +import { secretsColumns } from "./utils"; +import { useSecretsData } from "./hooks"; +import CreateSecretButton from "../../components/secret-management/create/CreateSecretButton"; +import SecretCreateOverlay from "../../components/secret-management/create/SecretCreateOverlay"; +import SecretActionOverlay from "../../components/secret-management/SecretActionOverlay"; + +function SecretManagement() { + const [query, setQuery] = useState(""); + const debouncedQuery = useDebounce(query, 500); + const { data, isFetching, refetch } = useGetSecretsListQuery({ + key: debouncedQuery, + }); + const secretsList = data?.secrets ?? []; + const total = data?.meta?.total_count ?? 0; + const { + rows, + actions, + isActionOpen, + selectedSecret, + toggle, + isConfigOpen, + toggleConfig, + selectedId, + } = useSecretsData(secretsList ?? []); + usePaginationComponent(refetch); + + return ( + <> +