/* eslint-disable @typescript-eslint/no-explicit-any */ import React from 'react'; import _ from 'lodash'; interface BadgeProps extends Omit, 'size'> { theme?: 'primary' | 'secondary' | 'danger' | 'default' | 'outline'; size?: 'md' | 'lg' | 'sm'; icon?: (props: any) => JSX.Element; loading?: boolean; children?: React.ReactNode; } export const Badge = (props: BadgeProps) => { let className = 'text-white bg-blue-500 border-transparent '; if (props.theme === 'secondary') className = 'text-blue-500 bg-blue-100 border-transparent '; if (props.theme === 'danger') className = 'text-white bg-rose-500 border-transparent '; if (props.theme === 'default') className = 'text-black dark:text-white bg-white dark:bg-zinc-800 border-gray-300'; if (props.theme === 'outline') className = 'text-blue-500 bg-white dark:bg-zinc-800 border-blue-500'; if (props.size === 'lg') className = className + ' text-lg h-11'; else if (props.size === 'sm') className = className + ' text-sm h-7 px-3'; else className = className + ' text-base h-9'; if (!props.children) { if (props.size === 'lg') className = className + ' w-11 !p-0 justify-center'; else if (props.size === 'sm') className = className + ' w-7 !p-0 justify-center'; else className = className + ' w-9 !p-0 justify-center'; } return (
{props.loading && ( <> {' '} )} {props.icon && !(props.loading && !props.children) && ( )} {props.children}
); };