import { Button, ButtonProps } from '@mui/material'; import { Lock } from '@mui/icons-material'; import React from 'react'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { TooltipResolver, ITooltipResolverProps, } from 'component/common/TooltipResolver/TooltipResolver'; import { formatAccessText } from 'utils/formatAccessText'; import { useId } from 'hooks/useId'; import { useHasRootAccess, useHasProjectEnvironmentAccess, } from 'hooks/useHasAccess'; export interface IPermissionButtonProps extends Omit { permission: string | string[]; onClick?: (e: any) => void; disabled?: boolean; projectId?: string; environmentId?: string; tooltipProps?: Omit; } interface IPermissionBaseButtonProps extends IPermissionButtonProps { access: boolean; } export interface IProjectPermissionButtonProps extends IPermissionButtonProps { projectId: string; environmentId: string; } const ProjectEnvironmentPermissionButton: React.FC = React.forwardRef((props, ref) => { const access = useHasProjectEnvironmentAccess( props.permission, props.environmentId, props.projectId ); return ; }); const RootPermissionButton: React.FC = React.forwardRef( (props, ref) => { const access = useHasRootAccess( props.permission, props.environmentId, props.projectId ); return ; } ); const BasePermissionButton: React.FC = React.forwardRef( ( { permission, access, variant = 'contained', color = 'primary', onClick, children, disabled, projectId, environmentId, tooltipProps, ...rest }, ref ) => { const id = useId(); return ( ); } ); const PermissionButton: React.FC = React.forwardRef( (props, ref) => { if ( typeof props.projectId !== 'undefined' && typeof props.environmentId !== 'undefined' ) { return ( ); } return ; } ); export default PermissionButton;