import PropTypes from 'prop-types';
import customStyleProps, { customStyle } from '@zohodesk/utils/es/props/customStyleProps';
import tagAttributeProps, { tagAttributes } from '@zohodesk/utils/es/props/tagAttributeProps';
import tagGeneralAttributeProps, { tagGeneralAttributes } from '@zohodesk/utils/es/props/tagGeneralAttributeProps';
import { getVariantProps, getColorProps, getShapeProps, getSizeProps } from '@zohodesk/utils/es/props/uiProps';
import { colorList, sizeList, shapeList, variantList } from '@zohodesk/utils/es/constantProps';
import tagAriaProps from './Tag.ariaPropTypes';
import automationProps, { automationPropsName } from '../../propTypes/automation.propTypes';
import defaultCustomIds from './Tag.customIds';
import constantProps from './Tag.constantProps';
export default {
  text: PropTypes.string,
  title: PropTypes.string,
  children: PropTypes.any,
  textEllipsis: PropTypes.bool,
  ...getVariantProps([variantList.contained, variantList.outlined]),
  ...getSizeProps([sizeList.small, sizeList.medium, sizeList.large, sizeList.xlarge], ['stretch']),
  ...getColorProps([colorList.primary, colorList.secondary, colorList.danger, colorList.success, colorList.warning]),
  ...getShapeProps([shapeList.square, shapeList.oval]),
  disabled: PropTypes.bool,
  startIcon: PropTypes.any,
  endIcon: PropTypes.any,
  ...customStyleProps,
  ...automationProps,
  ...tagAriaProps,
  ...tagAttributeProps,
  ...tagGeneralAttributeProps
};
export const defaultProps = {
  size: constantProps.size.medium,
  color: constantProps.color.primary,
  variant: constantProps.variant.contained,
  tabIndex: '0',
  disabled: false,
  [automationPropsName]: defaultCustomIds,
  [customStyle]: {},
  [tagAttributes]: {},
  [tagGeneralAttributes]: {}
};
export const propsDescription = {
  text: 'This defines the text that is show the message',
  title: 'This defines the title that is show when tag is hovered',
  children: 'This defines the children that is show the tag',
  textEllipsis: 'This defines the text overflow handling in it',
  size: 'This defines the size of tag',
  shape: 'This defines the shape of tag',
  variant: 'This defines the structural view of tag',
  color: 'This defines the color of tag',
  disabled: 'This defines the disabled state',
  onClick: 'This defines the onClick action',
  startIcon: 'This defines the icon to be placed in the front of tag',
  endIcon: 'This defines the icon to be placed in the end of tag',
  tagAttributes: 'This defines the props that the user want to use defined & limited customAttributes (on*, data-*) in the tag',
  tagGeneralAttributes: 'This defines the props that the user want to use seet of limited customAttributes in the tag',
  customStyle: 'This defines the style that are used by the user specifically',
  customId: 'This defines the dataId that are used by automation purpose',
  customIdPrefix: 'This defines the dataId that are used by automation purpose',
  customIdSuffix: 'This defines the dataId that are used by automation purpose',
  tabIndex: 'This defines the tabindex of the element',
  ariaLabel: 'This defines the label of the element',
  role: 'This defines the role of element',
  ariaDisabled: 'This defines the element disabled using aria',
  ariaSelected: 'This defines the element selected using aria'
};