diff options
Diffstat (limited to 'FrontEnd/src/views/common/button/common.ts')
-rw-r--r-- | FrontEnd/src/views/common/button/common.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/FrontEnd/src/views/common/button/common.ts b/FrontEnd/src/views/common/button/common.ts new file mode 100644 index 00000000..0d84bae0 --- /dev/null +++ b/FrontEnd/src/views/common/button/common.ts @@ -0,0 +1,35 @@ +import React from "react"; +import classNames from "classnames"; +import { TFunction } from "i18next"; + +import { convertI18nText, I18nText } from "@/common"; +import { PaletteColorType } from "@/palette"; + +export type CommonButtonProps = { + text?: I18nText; + color?: PaletteColorType; +} & React.ButtonHTMLAttributes<HTMLButtonElement>; + +export function calculateProps( + props: CommonButtonProps, + buttonClassName: string, + t: TFunction +): { + children: React.ReactNode; + newProps: React.ButtonHTMLAttributes<HTMLButtonElement>; +} { + const { text, color, className, children, ...otherProps } = props; + const newProps = { + className: classNames( + buttonClassName, + color != null ? "cru-" + color : "cru-primary", + className + ), + ...otherProps, + }; + + return { + children: text != null ? convertI18nText(text, t) : children, + newProps: newProps, + }; +} |