All files / src/sections/PayBuilder/LaunchStep/PublicURLShare PublicShare.types.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47                                                                                             
import { IconProps } from "@phosphor-icons/react";
import { Dispatch, ReactNode, SetStateAction } from "react";
 
export type TComponent = ({
  id,
  url,
  appId,
  children,
}: {
  id: string;
  url: string;
  appId: string;
  children: Element | ReactNode;
}) => JSX.Element;
export type TIcon = ({ width, height, stroke }: IconProps) => JSX.Element;
export type TButtonsMap = Array<{
  Component: TComponent;
  Icon: TIcon;
  id: string;
  /** Display name — ids can't be capitalized into brand names ("LinkedIn"). */
  label?: string;
  hidden: boolean;
}>;
 
// This ensures that if strict is passed as props the other two props become mandatory in vscode
export type PublicUrlShareProps<T extends "large" | "strict" | "styless"> =
  T extends "strict"
    ? {
        variant: T;
        anchorEl: HTMLElement | null;
        setAnchorEl: Dispatch<SetStateAction<HTMLElement | null>>;
        handleClose?: never;
      }
    : T extends "styless"
    ? {
        variant: T;
        handleClose?: () => void; // to close the modal when the embed appears
        anchorEl?: never;
        setAnchorEl?: never;
      }
    : {
        variant: T;
        anchorEl?: never;
        setAnchorEl?: never;
        handleClose?: never;
      };