import PropTypes from 'prop-types';
import freezeLayerAriaProps from './FreezeLayer.ariaPropTypes';
import tagAttributeProps,{tagAttributePropsName} from "../../propTypes/htmlAttributes.propTypes"
import automationProps, {automationPropsName} from '../../propTypes/automation.propTypes';
import customClassProps, {customClassPropName} from '../../propTypes/customClassName.propTypes';
import defaultCustomIds from "./FreezeLayer.customIds";
import constantProps from './FreezeLayer.constantProps';
import boxConstants from '../layout/Box.constantProps';

export default {
  children : PropTypes.any,
  variant : PropTypes.oneOf(
    [
      constantProps.variant.default,
      constantProps.variant.dark,
      constantProps.variant.plain
    ]
  ),
  zIndex : PropTypes.oneOf(
    [
      constantProps.zIndex.short,
      constantProps.zIndex.calm,
      constantProps.zIndex.high,
      constantProps.zIndex.light,
    ]
  ),
  blur: PropTypes.oneOf([
    constantProps.blur.level1,
    constantProps.blur.level2,
    constantProps.blur.level3,
    constantProps.blur.level4
  ]),
  direction:PropTypes.oneOf([
    boxConstants.direction.row,
    boxConstants.direction.rowReverse,
    boxConstants.direction.column,
    boxConstants.direction.columnReverse
  ]),
  align:PropTypes.oneOf([
    boxConstants.align.horizontal,
    boxConstants.align.vertical,
    boxConstants.align.both,
    boxConstants.align.top,
    boxConstants.align.bottom
  ]),

  ...automationProps,
  ...freezeLayerAriaProps,
  ...customClassProps,
  ...tagAttributeProps
}

export const defaultProps = {
  variant : constantProps.variant.default,
  [automationPropsName]: defaultCustomIds,
  [customClassPropName]: {},
  [tagAttributePropsName] : {}
}

export const propsDescription={
  children:"This defines the children applied to the component",
  variant:"This defines the Variant applied to the component",
  align:"This defines the alignment of the children applied to the component",
  direction:"This defines the direction of the children applied to the component",
  blur:"This defines the blur option applied to the component",  
  tagAttributeProps:"This defines the props that the user want to show in the tags button",
  customClassName:"This defines the classname that are used by the user specifically",
  customId:"This defines the dataId that are used by automation purpose",
  ariaLabel:"This defines the label of the element",
}