{"version":3,"file":"List.mjs","sources":["../../../src/components/List/List.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  getFontSize,\n  getLineHeight,\n  getSpacing,\n  RaikouSize,\n  RaikouSpacing,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { ListProvider } from './List.context';\nimport { ListItem, ListItemStylesNames } from './ListItem/ListItem';\nimport { ListItemIconStyle, ListItemStyle, ListItemWrapperStyle, ListRootStyle } from './List.css';\n\nexport type ListStylesNames = 'root' | ListItemStylesNames;\nexport type ListCssVariables = {\n  root: '--list-fz' | '--list-lh' | '--list-spacing';\n};\n\nexport interface ListProps\n  extends BoxProps,\n    StylesApiProps<ListFactory>,\n    ElementProps<'ul', 'type'> {\n  /** `List.Item` components only */\n  children?: React.ReactNode;\n\n  /** List type: `ol` or `ul`, `'unordered'` by default */\n  type?: 'ordered' | 'unordered';\n\n  /** Determines whether list items should be offset with padding, `false` by default */\n  withPadding?: boolean;\n\n  /** Controls `font-size` and `line-height`, `'md'` by default */\n  size?: RaikouSize;\n\n  /** Icon that replaces list item dot */\n  icon?: React.ReactNode;\n\n  /** Key of `theme.spacing` or any valid CSS value to set spacing between items, `0` by default */\n  spacing?: RaikouSpacing;\n\n  /** Determines whether items must be centered with their icon, `false` by default */\n  center?: boolean;\n\n  /** Controls `list-style-type`, by default inferred from `type` */\n  listStyleType?: React.CSSProperties['listStyleType'];\n}\n\nexport type ListFactory = Factory<{\n  props: ListProps;\n  ref: HTMLUListElement;\n  stylesNames: ListStylesNames;\n  vars: ListCssVariables;\n  staticComponents: {\n    Item: typeof ListItem;\n  };\n}>;\n\nconst defaultProps: Partial<ListProps> = {\n  type: 'unordered',\n};\n\nconst varsResolver = createVarsResolver<ListFactory>((_, { size, spacing }) => ({\n  root: {\n    '--list-fz': getFontSize(size),\n    '--list-lh': getLineHeight(size),\n    '--list-spacing': getSpacing(spacing),\n  },\n}));\n\nexport const List = factory<ListFactory>((_props, ref) => {\n  const props = useProps('List', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    children,\n    type,\n    withPadding,\n    icon,\n    spacing,\n    center,\n    listStyleType,\n    mod,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<ListFactory>({\n    name: 'List',\n    classes: {\n      root: ListRootStyle,\n      item: ListItemStyle,\n      itemWrapper: ListItemWrapperStyle,\n      itemIcon: ListItemIconStyle,\n    },\n    props,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  return (\n    <ListProvider value={{ center, icon, getStyles }}>\n      <Box<any>\n        {...getStyles('root', { style: { listStyleType } })}\n        component={type === 'unordered' ? ('ul' as const) : ('ol' as const)}\n        mod={[{ 'with-padding': withPadding }, mod]}\n        ref={ref}\n        {...others}\n      >\n        {children}\n      </Box>\n    </ListProvider>\n  );\n});\n\nList.displayName = '@raikou/core/List';\nList.Item = ListItem;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAgEA,MAAM,YAAmC,GAAA;AAAA,EACvC,IAAM,EAAA;AACR,CAAA;AAEA,MAAM,eAAe,kBAAgC,CAAA,CAAC,GAAG,EAAE,IAAA,EAAM,SAAe,MAAA;AAAA,EAC9E,IAAM,EAAA;AAAA,IACJ,WAAA,EAAa,YAAY,IAAI,CAAA;AAAA,IAC7B,WAAA,EAAa,cAAc,IAAI,CAAA;AAAA,IAC/B,gBAAA,EAAkB,WAAW,OAAO;AAAA;AAExC,CAAE,CAAA,CAAA;AAEK,MAAM,IAAO,GAAA,OAAA,CAAqB,CAAC,MAAA,EAAQ,GAAQ,KAAA;AACxD,EAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,MAAQ,EAAA,YAAA,EAAc,MAAM,CAAA;AACnD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAY,SAAuB,CAAA;AAAA,IACvC,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,aAAA;AAAA,MACN,IAAM,EAAA,aAAA;AAAA,MACN,WAAa,EAAA,oBAAA;AAAA,MACb,QAAU,EAAA;AAAA,KACZ;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,2BACG,YAAa,EAAA,EAAA,KAAA,EAAO,EAAE,MAAQ,EAAA,IAAA,EAAM,WACnC,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAU,MAAQ,EAAA,EAAE,OAAO,EAAE,aAAA,IAAiB,CAAA;AAAA,MAClD,SAAA,EAAW,IAAS,KAAA,WAAA,GAAe,IAAkB,GAAA,IAAA;AAAA,MACrD,KAAK,CAAC,EAAE,cAAgB,EAAA,WAAA,IAAe,GAAG,CAAA;AAAA,MAC1C,GAAA;AAAA,MACC,GAAG,MAAA;AAAA,MAEH;AAAA;AAAA,GAEL,EAAA,CAAA;AAEJ,CAAC;AAED,IAAA,CAAK,WAAc,GAAA,mBAAA;AACnB,IAAA,CAAK,IAAO,GAAA,QAAA;;;;"}