import {
  ELementDimensionMap,
  ElementBorderRadius,
  ElementDimension,
  ElementFlexStyleProps,
  ElementMargin,
  ElementPadding,
  ElementPositionMap,
  ElementTextStyleProps,
  ElementViewStyles,
  KeyOfStylePalette,
} from './styleTypes';

export const styles: Record<
  | keyof ELementDimensionMap<ElementPadding | ElementMargin | ElementDimension>
  | ElementBorderRadius
  | keyof ElementPositionMap
  | keyof ElementTextStyleProps
  | keyof ElementFlexStyleProps
  | keyof ElementViewStyles,
  KeyOfStylePalette
> = {
  p: 'padding',
  px: 'paddingHorizontal',
  py: 'paddingVertical',
  ps: 'paddingStart',
  pe: 'paddingEnd',
  pt: 'paddingTop',
  pb: 'paddingBottom',
  m: 'margin',
  mx: 'marginHorizontal',
  my: 'marginVertical',
  ms: 'marginStart',
  me: 'marginEnd',
  mt: 'marginTop',
  mb: 'marginBottom',
  r: 'borderRadius',
  ret: 'borderTopEndRadius',
  rlt: 'borderTopLeftRadius',
  ree: 'borderEndEndRadius',
  rrt: 'borderTopRightRadius',
  rse: 'borderStartEndRadius',
  res: 'borderStartEndRadius',
  rst: 'borderTopStartRadius',
  reb: 'borderBottomEndRadius',
  rlb: 'borderBottomLeftRadius',
  rss: 'borderStartStartRadius',
  rrb: 'borderBottomRightRadius',
  rsb: 'borderBottomStartRadius',
  pos: 'position',
  posB: 'bottom',
  posL: 'left',
  posR: 'right',
  posT: 'top',
  index: 'zIndex',
  w: 'width',
  h: 'height',
  minW: 'minWidth',
  minH: 'minHeight',
  maxW: 'maxWidth',
  maxH: 'maxHeight',
  color: 'color',
  family: 'fontFamily',
  size: 'fontSize',
  style: 'fontStyle',
  weight: 'fontWeight',
  lSpacing: 'letterSpacing',
  lHeight: 'lineHeight',
  dLine: 'textDecorationLine',
  dStyle: 'textDecorationStyle',
  dColor: 'textDecorationColor',
  sColor: 'shadowColor',
  sOpacity: 'shadowOpacity',
  sOffset: 'shadowOffset',
  sRadius: 'shadowRadius',
  transform: 'textTransform',
  select: 'userSelect',
  align: 'alignContent',
  content: 'justifyContent',
  items: 'alignItems',
  self: 'alignSelf',
  ratio: 'aspectRatio',
  d: 'display',
  end: 'end',
  f: 'flex',
  fBasis: 'flexBasis',
  fDirection: 'flexDirection',
  rGap: 'rowGap',
  gap: 'gap',
  cGap: 'columnGap',
  fGrow: 'flexGrow',
  fShrink: 'flexShrink',
  wrap: 'flexWrap',
  bVisibility: 'backfaceVisibility',
  bg: 'backgroundColor',
  o: 'opacity',
  e: 'elevation',
  pEvents: 'pointerEvents',
  c: 'cursor',
  bColor: 'borderColor',
  bWidth: 'borderWidth',
  overflow: 'overflow',
  tAlign: 'textAlign',
};
