From ad6f91692f34edd7daa795735f7c7d0387d6116d Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Mon, 7 Jun 2021 15:01:24 -0400 Subject: [PATCH] Reuse glyphs for multiple icons, fix up typings --- src/client/lazy-app/icons/index.tsx | 79 +++++++++++++++-------------- 1 file changed, 42 insertions(+), 37 deletions(-) diff --git a/src/client/lazy-app/icons/index.tsx b/src/client/lazy-app/icons/index.tsx index efca6b27..cb9135d1 100644 --- a/src/client/lazy-app/icons/index.tsx +++ b/src/client/lazy-app/icons/index.tsx @@ -1,87 +1,92 @@ import { h } from 'preact'; -const Icon = (props: preact.JSX.HTMLAttributes | preact.JSX.SVGAttributes) => ( - // @ts-ignore - TS bug https://github.com/microsoft/TypeScript/issues/16019 - -); +interface IconProps extends preact.JSX.SVGAttributes { + transform?: string; +} -export const CLIIcon = (props: preact.JSX.HTMLAttributes) => ( +const Icon = ({ transform, children, ...props }: IconProps) => { + if (transform) { + children = ( + {children} + ); + } + return ( + // @ts-ignore - TS bug https://github.com/microsoft/TypeScript/issues/16019 + + {children} + + ); +}; + +export const CLIIcon = (props: IconProps) => ( ); -export const SwapIcon = (props: preact.JSX.HTMLAttributes) => ( +export const SwapIcon = (props: IconProps) => ( ); -export const FlipVerticallyIcon = (props: preact.JSX.HTMLAttributes) => ( +export const FlipVerticallyIcon = (props: IconProps) => ( ); -export const FlipHorizontallyIcon = (props: preact.JSX.HTMLAttributes) => ( - - - +export const FlipHorizontallyIcon = (props: IconProps) => ( + ); -export const RotateClockwiseIcon = (props: preact.JSX.HTMLAttributes) => ( +export const RotateClockwiseIcon = (props: IconProps) => ( ); -export const RotateCounterClockwiseIcon = ( - props: preact.JSX.HTMLAttributes, -) => ( - - - +export const RotateCounterClockwiseIcon = (props: IconProps) => ( + ); -export const CheckmarkIcon = (props: preact.JSX.HTMLAttributes) => ( +export const CheckmarkIcon = (props: IconProps) => ( ); -export const CompareIcon = (props: preact.JSX.HTMLAttributes) => ( +export const CompareIcon = (props: IconProps) => ( ); -export const ToggleBackgroundIcon = (props: preact.JSX.HTMLAttributes) => ( +export const ToggleBackgroundIcon = (props: IconProps) => ( ); -export const ToggleBackgroundActiveIcon = ( - props: preact.JSX.HTMLAttributes, -) => ( +export const ToggleBackgroundActiveIcon = (props: IconProps) => ( ); -export const RotateIcon = (props: preact.JSX.HTMLAttributes) => ( +export const RotateIcon = (props: IconProps) => ( ); -export const MoreIcon = (props: preact.JSX.HTMLAttributes) => ( +export const MoreIcon = (props: IconProps) => ( @@ -89,31 +94,31 @@ export const MoreIcon = (props: preact.JSX.HTMLAttributes) => ( ); -export const AddIcon = (props: preact.JSX.HTMLAttributes) => ( +export const AddIcon = (props: IconProps) => ( ); -export const RemoveIcon = (props: preact.JSX.HTMLAttributes) => ( +export const RemoveIcon = (props: IconProps) => ( ); -export const UncheckedIcon = (props: preact.JSX.HTMLAttributes) => ( +export const UncheckedIcon = (props: IconProps) => ( ); -export const CheckedIcon = (props: preact.JSX.HTMLAttributes) => ( +export const CheckedIcon = (props: IconProps) => ( ); -export const ExpandIcon = (props: preact.JSX.HTMLAttributes) => ( +export const ExpandIcon = (props: IconProps) => (