about summary refs log tree commit diff
path: root/src/components/icons/common.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/icons/common.ts')
-rw-r--r--src/components/icons/common.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/components/icons/common.ts b/src/components/icons/common.ts
new file mode 100644
index 000000000..9e9f15c4d
--- /dev/null
+++ b/src/components/icons/common.ts
@@ -0,0 +1,32 @@
+import {StyleSheet, TextProps} from 'react-native'
+import type {SvgProps, PathProps} 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,
+  }
+}