about summary refs log tree commit diff
path: root/src/components/icons/common.ts
blob: 669c157f51a414c0a5d822f9e6aaca385b41a0a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import {StyleSheet, TextProps} from 'react-native'
import type {PathProps, SvgProps} from 'react-native-svg'

import {tokens} from '#/alf'

export type Props = {
  fill?: PathProps['fill']
  style?: TextProps['style']
  size?: keyof typeof sizes
} & Omit<SvgProps, 'style' | 'size'>

export const sizes = {
  xs: 12,
  sm: 16,
  md: 20,
  lg: 24,
  xl: 28,
}

export function useCommonSVGProps(props: Props) {
  const {fill, size, ...rest} = props
  const style = StyleSheet.flatten(rest.style)
  const _fill = fill || style?.color || tokens.color.blue_500
  const _size = Number(size ? sizes[size] : rest.width || sizes.md)

  return {
    fill: _fill,
    size: _size,
    style,
    ...rest,
  }
}