import PropTypes from "prop-types";
import customStyleProps, { customStyle } from "@zohodesk/utils/src/props/customStyleProps";
import tagAttributeProps, { tagAttributes } from "@zohodesk/utils/src/props/tagAttributeProps";
import tagGeneralAttributeProps, { tagGeneralAttributes } from "@zohodesk/utils/src/props/tagGeneralAttributeProps";
import { sizeList, sizes } from "@zohodesk/utils/es/constantProps";
import textAriaProps from "./Text.ariaPropTypes";
import automationProps, { automationPropsName } from "../../propTypes/automation.propTypes";
import defaultCustomIds from "./Text.customIds";
import constantProps from "./Text.constantProps";
export default {
  textEllipsis: PropTypes.bool,
  wordWrap: PropTypes.bool,
  size: PropTypes.oneOf([constantProps.size.xsmall, constantProps.size.small, constantProps.size.medium, constantProps.size.large, constantProps.size.xlarge, constantProps.size.xxlarge]),
  direction: PropTypes.oneOf([constantProps.direction.vertical, constantProps.direction.horizontal]),
  auto: PropTypes.bool,
  stretch: PropTypes.bool,
  align: PropTypes.oneOf([constantProps.align.left, constantProps.align.center, constantProps.align.right]),
  weight: PropTypes.oneOf([constantProps.weight.xSmall, constantProps.weight.small, constantProps.weight.medium, constantProps.weight.large, constantProps.weight.xLarge, constantProps.weight.bold, constantProps.weight.bolder, constantProps.weight.lighter, constantProps.weight.normal]),
  transform: PropTypes.oneOf([constantProps.transform.upperCase, constantProps.transform.lowerCase, constantProps.transform.capitalize]),
  color: PropTypes.oneOf([constantProps.color.default, constantProps.color.primary, constantProps.color.secondary, constantProps.color.darknight, constantProps.color.danger, constantProps.color.grayness, constantProps.color.whiteness, constantProps.color.success, constantProps.color.info, constantProps.color.highlight, constantProps.color.lighter]),
  lineHeight: PropTypes.oneOf([constantProps.lineHeight.xSmall, constantProps.lineHeight.small, constantProps.lineHeight.medium, constantProps.lineHeight.large, constantProps.lineHeight.xLarge, constantProps.lineHeight.xxLarge]),
  letterSpacing: PropTypes.oneOf([constantProps.letterSpacing.xSmall, constantProps.letterSpacing.small, constantProps.letterSpacing.medium, constantProps.letterSpacing.large, constantProps.letterSpacing.xLarge, constantProps.letterSpacing.xxLarge]),
  indent: PropTypes.oneOf([constantProps.indent.small, constantProps.indent.medium, constantProps.indent.large]),
  decoration: PropTypes.oneOf([constantProps.decoration.lineThrough, constantProps.decoration.underLine, constantProps.decoration.overLine]),
  decorationColor: PropTypes.oneOf([constantProps.decorationColor.darknight, constantProps.decorationColor.danger, constantProps.decorationColor.grayness, constantProps.decorationColor.whiteness, constantProps.decorationColor.success, constantProps.decorationColor.info, constantProps.decorationColor.highlight, constantProps.decorationColor.lighter]),
  type: PropTypes.oneOf([constantProps.type.heading, constantProps.type.paragraph, constantProps.type.blockquote]),
  level: PropTypes.oneOf([constantProps.level.one, constantProps.level.two, constantProps.level.three, constantProps.level.four, constantProps.level.five, constantProps.level.six]),
  children: PropTypes.any,
  content: PropTypes.string,
  tagName: PropTypes.string,
  onClick: PropTypes.func,
  startIcon: PropTypes.any,
  endIcon: PropTypes.any,
  ...textAriaProps,
  ...customStyleProps,
  ...automationProps,
  ...tagAttributeProps,
  ...tagGeneralAttributeProps
};
export const defaultProps = {
  [automationPropsName]: defaultCustomIds,
  [customStyle]: {},
  [tagAttributes]: {},
  [tagGeneralAttributes]: {}
};
export const propsDescription = {
  textEllipsis: "The Text ellipsis is a method to display the overflow property",
  wordWrap: "The Text Wrap is used for wrap the words in sentence",
  weight: "The Text weight is given based on  user centric values",
  align: "The Text is aligned based of the position",
  direction: "The Text and icons can be showing as direction defined",
  auto: "The Text component will take remaining with of parent area",
  stretch: "The Text componet will take 100 percenatge of parent area",
  tagName: "the TagName defines the text to be rendered in given tags",
  size: "The size defines the font size of the text",
  dimension: "The dimension defines the respective measurement of the text parent",
  transform: "The Transform property denotes the whethet the text is in case",
  type: "the Type defines the type of text of available",
  level: "the level used to show heading level like h1, h2, h3...",
  color: "The Text can be displayed in available colors",
  decoration: "the decoration can be any of three of available",
  decorationColor: "the decoration color can be any these of available",
  indent: "the indent can  be any of three of available",
  startIcon: "the icon component will be display in start of text",
  endIcon: "the icon component will be display in end of text",
  tagAttributes: "This defines the props that the user want to use defined & limited customAttributes (on*, data-*) in the component",
  tagGeneralAttributes: "This defines the props that the user want to use seet of limited customAttributes in the component",
  children: "the children defines the child nodes that are directly given to the tag",
  customStyle: "the customStyle defines the custome styles that can be directly given to the component"
};