diff --git a/packages/fakeyou.com/src/components/common/Button/Button.tsx b/packages/fakeyou.com/src/components/common/Button/Button.tsx index 02d3ac8e0f..060a9cf10b 100644 --- a/packages/fakeyou.com/src/components/common/Button/Button.tsx +++ b/packages/fakeyou.com/src/components/common/Button/Button.tsx @@ -1,28 +1,11 @@ -import React, { ButtonHTMLAttributes } from "react"; +import React from "react"; import { Link } from "react-router-dom"; import "./Button.scss"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; +import ButtonProps from "./ButtonProps"; import Tippy from "@tippyjs/react"; import "tippy.js/dist/tippy.css"; -interface ButtonProps extends ButtonHTMLAttributes { - label?: string | null; - icon?: IconDefinition; - small?: boolean; - variant?: "primary" | "secondary" | "danger" | "link"; - to?: string; - href?: string; - target?: "_blank" | "_self"; - square?: boolean; - tooltip?: string; - full?: boolean; - iconFlip?: boolean; - download?: boolean | string; - disabled?: boolean; - isLoading?: boolean; -} - export default function Button({ label, icon, diff --git a/packages/fakeyou.com/src/components/common/Button/ButtonProps.tsx b/packages/fakeyou.com/src/components/common/Button/ButtonProps.tsx new file mode 100644 index 0000000000..4ac84869c4 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Button/ButtonProps.tsx @@ -0,0 +1,19 @@ +import { ButtonHTMLAttributes } from "react"; +import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; + +export default interface ButtonProps extends ButtonHTMLAttributes { + label?: string | null; + icon?: IconDefinition; + small?: boolean; + variant?: "primary" | "secondary" | "danger" | "link"; + to?: string; + href?: string; + target?: "_blank" | "_self"; + square?: boolean; + tooltip?: string; + full?: boolean; + iconFlip?: boolean; + download?: boolean | string; + disabled?: boolean; + isLoading?: boolean; +} \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/layout/PageHeader/PageHeader.tsx b/packages/fakeyou.com/src/components/layout/PageHeader/PageHeader.tsx index 7a810b111e..6b4bb69918 100644 --- a/packages/fakeyou.com/src/components/layout/PageHeader/PageHeader.tsx +++ b/packages/fakeyou.com/src/components/layout/PageHeader/PageHeader.tsx @@ -3,6 +3,7 @@ import Panel from "../../common/Panel"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; import Button from "components/common/Button"; +import ButtonProps from "components/common/Button/ButtonProps"; import BackButton from "components/common/BackButton"; interface BackConfig { @@ -19,6 +20,7 @@ interface PageHeaderProps { showButton?: boolean; extension?: React.ReactNode; buttonLabel?: string; + button?: ButtonProps; buttonVariant?: "primary" | "secondary" | "danger"; buttonTo?: string; buttonIcon?: IconDefinition; @@ -38,6 +40,7 @@ export default function PageHeader({ full, showButton, extension, + button, buttonLabel, buttonVariant = "primary", buttonTo, @@ -49,10 +52,22 @@ export default function PageHeader({ backbuttonTo, backbuttonLabel, }: PageHeaderProps) { + const icon = ( <>{titleIcon && } ); + const buttonProps = { + ...button ? button : {}, + ...buttonIcon && { icon: buttonIcon }, + ...buttonLabel && { label: buttonLabel }, + ...buttonOnClick && { onClick: buttonOnClick }, + ...buttonTo && { to: buttonTo }, + ...buttonVariant && { variant: buttonVariant } + }; + + const HeaderBtn = () => button || showButton ?