diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000..1b24c18
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,2 @@
+sketch
+storybook
\ No newline at end of file
diff --git a/fonts/baseui-icons.ttf b/fonts/baseui-icons.ttf
new file mode 100644
index 0000000..dcd0135
Binary files /dev/null and b/fonts/baseui-icons.ttf differ
diff --git a/react-native.config.js b/react-native.config.js
new file mode 100644
index 0000000..eb592d2
--- /dev/null
+++ b/react-native.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ dependency: {
+ assets: ['fonts'],
+ },
+};
diff --git a/sketch/designs.sketch b/sketch/designs.sketch
new file mode 100644
index 0000000..93252e7
Binary files /dev/null and b/sketch/designs.sketch differ
diff --git a/sketch/icons/alert.svg b/sketch/icons/alert.svg
new file mode 100644
index 0000000..e8ed565
--- /dev/null
+++ b/sketch/icons/alert.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/arrow-down.svg b/sketch/icons/arrow-down.svg
new file mode 100644
index 0000000..1c91a85
--- /dev/null
+++ b/sketch/icons/arrow-down.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/arrow-left.svg b/sketch/icons/arrow-left.svg
new file mode 100644
index 0000000..80fc672
--- /dev/null
+++ b/sketch/icons/arrow-left.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/arrow-right.svg b/sketch/icons/arrow-right.svg
new file mode 100644
index 0000000..64d2855
--- /dev/null
+++ b/sketch/icons/arrow-right.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/arrow-up.svg b/sketch/icons/arrow-up.svg
new file mode 100644
index 0000000..34d4ded
--- /dev/null
+++ b/sketch/icons/arrow-up.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/blank.svg b/sketch/icons/blank.svg
new file mode 100644
index 0000000..711bc19
--- /dev/null
+++ b/sketch/icons/blank.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/check-indeterminate.svg b/sketch/icons/check-indeterminate.svg
new file mode 100644
index 0000000..7463914
--- /dev/null
+++ b/sketch/icons/check-indeterminate.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/check.svg b/sketch/icons/check.svg
new file mode 100644
index 0000000..b45d02b
--- /dev/null
+++ b/sketch/icons/check.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/chevron-down.svg b/sketch/icons/chevron-down.svg
new file mode 100644
index 0000000..a7e262c
--- /dev/null
+++ b/sketch/icons/chevron-down.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/chevron-left.svg b/sketch/icons/chevron-left.svg
new file mode 100644
index 0000000..bcac311
--- /dev/null
+++ b/sketch/icons/chevron-left.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/chevron-right.svg b/sketch/icons/chevron-right.svg
new file mode 100644
index 0000000..2332ead
--- /dev/null
+++ b/sketch/icons/chevron-right.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/chevron-up.svg b/sketch/icons/chevron-up.svg
new file mode 100644
index 0000000..a506358
--- /dev/null
+++ b/sketch/icons/chevron-up.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/delete-alt.svg b/sketch/icons/delete-alt.svg
new file mode 100644
index 0000000..121410e
--- /dev/null
+++ b/sketch/icons/delete-alt.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/delete.svg b/sketch/icons/delete.svg
new file mode 100644
index 0000000..ae0177d
--- /dev/null
+++ b/sketch/icons/delete.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/filter.svg b/sketch/icons/filter.svg
new file mode 100644
index 0000000..ee9fbf6
--- /dev/null
+++ b/sketch/icons/filter.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/grab.svg b/sketch/icons/grab.svg
new file mode 100644
index 0000000..5e6f9b2
--- /dev/null
+++ b/sketch/icons/grab.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/hide.svg b/sketch/icons/hide.svg
new file mode 100644
index 0000000..7b4cb72
--- /dev/null
+++ b/sketch/icons/hide.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/menu.svg b/sketch/icons/menu.svg
new file mode 100644
index 0000000..f9fe3c3
--- /dev/null
+++ b/sketch/icons/menu.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/overflow.svg b/sketch/icons/overflow.svg
new file mode 100644
index 0000000..0e9d1be
--- /dev/null
+++ b/sketch/icons/overflow.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/plus.svg b/sketch/icons/plus.svg
new file mode 100644
index 0000000..a18637d
--- /dev/null
+++ b/sketch/icons/plus.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/search.svg b/sketch/icons/search.svg
new file mode 100644
index 0000000..ae778e0
--- /dev/null
+++ b/sketch/icons/search.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/show.svg b/sketch/icons/show.svg
new file mode 100644
index 0000000..0171dcf
--- /dev/null
+++ b/sketch/icons/show.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/spinner.svg b/sketch/icons/spinner.svg
new file mode 100644
index 0000000..a293e02
--- /dev/null
+++ b/sketch/icons/spinner.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/triangle-down.svg b/sketch/icons/triangle-down.svg
new file mode 100644
index 0000000..1099bdf
--- /dev/null
+++ b/sketch/icons/triangle-down.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/triangle-left.svg b/sketch/icons/triangle-left.svg
new file mode 100644
index 0000000..5b78670
--- /dev/null
+++ b/sketch/icons/triangle-left.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/triangle-right.svg b/sketch/icons/triangle-right.svg
new file mode 100644
index 0000000..4086378
--- /dev/null
+++ b/sketch/icons/triangle-right.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/triangle-up.svg b/sketch/icons/triangle-up.svg
new file mode 100644
index 0000000..e55e04e
--- /dev/null
+++ b/sketch/icons/triangle-up.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/sketch/icons/upload.svg b/sketch/icons/upload.svg
new file mode 100644
index 0000000..f71a89f
--- /dev/null
+++ b/sketch/icons/upload.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/src/icon/Icon.stories.tsx b/src/icon/Icon.stories.tsx
new file mode 100644
index 0000000..64ad4e2
--- /dev/null
+++ b/src/icon/Icon.stories.tsx
@@ -0,0 +1,47 @@
+import React from 'react';
+import { StyleSheet, Text, View } from 'react-native';
+import { storiesOf } from '@storybook/react-native';
+import { select, color, number } from '@storybook/addon-knobs';
+import Icon from './Icon';
+import type { IconProps, NAME } from './types';
+import { ICON_SETS } from './constants';
+
+const getProps = (): IconProps => ({
+ name: select(
+ 'name',
+ Object.keys(ICON_SETS).reduce((result, key) => {
+ // @ts-ignore
+ result[key] = key;
+ return result;
+ }, {}),
+ 'show'
+ ),
+ size: number('size', 46),
+ // @ts-ignore
+ color: color('color', undefined),
+});
+
+storiesOf('Icon', module)
+ .add('default', () => )
+ .add('all', () => (
+ <>
+ {Object.keys(ICON_SETS).map((key: any) => (
+
+ {key}
+
+
+ ))}
+ >
+ ));
+
+const styles = StyleSheet.create({
+ container: {
+ width: 200,
+ alignContent: 'space-between',
+ justifyContent: 'space-between',
+ flexDirection: 'row',
+ },
+ text: {
+ color: 'white',
+ },
+});
diff --git a/src/icon/Icon.tsx b/src/icon/Icon.tsx
new file mode 100644
index 0000000..7cbb4f0
--- /dev/null
+++ b/src/icon/Icon.tsx
@@ -0,0 +1,29 @@
+import React, { useMemo } from 'react';
+import { Text } from 'react-native';
+import { useThemedStyle, useOverrideComponent } from '../hooks';
+import { DEFAULT_SIZE, ICON_SETS } from './constants';
+import { stylesCreator } from './styles';
+
+import type { IconProps } from './types';
+
+const Icon = ({ overrides, name, size = DEFAULT_SIZE, color }: IconProps) => {
+ //#region variables
+ const iconChar = useMemo(() => ICON_SETS[name], [name]);
+ //#endregion
+
+ //#region styles
+ const styles = useThemedStyle(stylesCreator, size, color);
+ //#endregion
+
+ //#region override components
+ const [RootView, RootViewProps] = useOverrideComponent(
+ Text,
+ styles.container,
+ overrides?.container
+ );
+ //#endregion
+
+ return {iconChar};
+};
+
+export default Icon;
diff --git a/src/icon/constants.ts b/src/icon/constants.ts
new file mode 100644
index 0000000..6bf66d0
--- /dev/null
+++ b/src/icon/constants.ts
@@ -0,0 +1,34 @@
+const DEFAULT_SIZE = 24;
+
+const ICON_SETS = {
+ alert: '',
+ 'arrow-down': '',
+ 'arrow-left': '',
+ 'arrow-right': '',
+ 'arrow-up': '',
+ blank: '',
+ check: '',
+ 'check-indeterminate': '',
+ 'chevron-down': '',
+ 'chevron-left': '',
+ 'chevron-right': '',
+ 'chevron-up': '',
+ 'delete-alt': '',
+ delete: '',
+ filter: '',
+ grab: '',
+ hide: '',
+ menu: '',
+ overflow: '',
+ plus: '',
+ search: '',
+ show: '',
+ spinner: '',
+ 'triangle-down': '',
+ 'triangle-left': '',
+ 'triangle-right': '',
+ 'triangle-up': '',
+ upload: '',
+};
+
+export { DEFAULT_SIZE, ICON_SETS };
diff --git a/src/icon/index.ts b/src/icon/index.ts
new file mode 100644
index 0000000..d60fa18
--- /dev/null
+++ b/src/icon/index.ts
@@ -0,0 +1,3 @@
+export { default } from './Icon';
+export { ICON_SETS } from './constants';
+export type { NAME } from './types';
diff --git a/src/icon/styles.ts b/src/icon/styles.ts
new file mode 100644
index 0000000..7e10d65
--- /dev/null
+++ b/src/icon/styles.ts
@@ -0,0 +1,13 @@
+import { createStyles } from '../themes';
+import type { IconOverrides } from './types';
+
+export const stylesCreator = createStyles(
+ (theme, size, color) => ({
+ container: {
+ color: color ?? theme.colors.contentPrimary,
+ fontFamily: 'baseui-icons',
+ fontSize: size,
+ // lineHeight: size,
+ },
+ })
+);
diff --git a/src/icon/types.d.ts b/src/icon/types.d.ts
new file mode 100644
index 0000000..21db023
--- /dev/null
+++ b/src/icon/types.d.ts
@@ -0,0 +1,35 @@
+import type { TextProps } from 'react-native';
+import type { Override } from '../types';
+import type { ICON_SETS } from './constants';
+
+export type NAME = keyof typeof ICON_SETS;
+
+export interface IconOverrides {
+ [key: string]: Override;
+ container?: Override;
+}
+
+export interface IconProps {
+ /**
+ * Defines the icon overrides.
+ * @default undefined
+ */
+ overrides?: IconOverrides;
+
+ /**
+ * Defines the icon name.
+ */
+ name: NAME;
+
+ /**
+ * Defines the icon size.
+ * @default 24
+ */
+ size?: number;
+
+ /**
+ * Defines the icon color.
+ * @default {contentPrimary}
+ */
+ color?: string;
+}
diff --git a/storybook/.eslintcache b/storybook/.eslintcache
index 628892d..74896b4 100644
--- a/storybook/.eslintcache
+++ b/storybook/.eslintcache
@@ -1 +1 @@
-[{"/Users/gorhom/Desktop/projects/base-ui/storybook/src/index.web.ts":"1","/Users/gorhom/Desktop/projects/base-ui/storybook/src/App.tsx":"2","/Users/gorhom/Desktop/projects/base-ui/storybook/src/stories.ts":"3","/Users/gorhom/Desktop/projects/base-ui/storybook/src/decorators/withThemeProvider.tsx":"4","/Users/gorhom/Desktop/projects/base-ui/storybook/src/decorators/withCenterView.tsx":"5"},{"size":250,"mtime":1609335802703,"results":"6","hashOfConfig":"7"},{"size":669,"mtime":1609335802702,"results":"8","hashOfConfig":"7"},{"size":92,"mtime":1609335802709,"results":"9","hashOfConfig":"7"},{"size":1453,"mtime":1609336413286,"results":"10","hashOfConfig":"7"},{"size":714,"mtime":1609336413286,"results":"11","hashOfConfig":"7"},{"filePath":"12","messages":"13","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"lwujbe",{"filePath":"14","messages":"15","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16","messages":"17","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18","messages":"19","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20","messages":"21","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/gorhom/Desktop/projects/base-ui/storybook/src/index.web.ts",[],"/Users/gorhom/Desktop/projects/base-ui/storybook/src/App.tsx",[],"/Users/gorhom/Desktop/projects/base-ui/storybook/src/stories.ts",[],"/Users/gorhom/Desktop/projects/base-ui/storybook/src/decorators/withThemeProvider.tsx",[],"/Users/gorhom/Desktop/projects/base-ui/storybook/src/decorators/withCenterView.tsx",[]]
\ No newline at end of file
+[{"/Users/gorhom/Desktop/projects/base-ui/storybook/src/index.web.ts":"1","/Users/gorhom/Desktop/projects/base-ui/storybook/src/App.tsx":"2","/Users/gorhom/Desktop/projects/base-ui/storybook/src/stories.ts":"3","/Users/gorhom/Desktop/projects/base-ui/storybook/src/decorators/withThemeProvider.tsx":"4","/Users/gorhom/Desktop/projects/base-ui/storybook/src/decorators/withCenterView.tsx":"5"},{"size":250,"mtime":1609336918990,"results":"6","hashOfConfig":"7"},{"size":669,"mtime":1609336918989,"results":"8","hashOfConfig":"7"},{"size":130,"mtime":1609336919002,"results":"9","hashOfConfig":"7"},{"size":1453,"mtime":1609336919003,"results":"10","hashOfConfig":"7"},{"size":714,"mtime":1609336919003,"results":"11","hashOfConfig":"7"},{"filePath":"12","messages":"13","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"lwujbe",{"filePath":"14","messages":"15","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16","messages":"17","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18","messages":"19","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20","messages":"21","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/gorhom/Desktop/projects/base-ui/storybook/src/index.web.ts",[],"/Users/gorhom/Desktop/projects/base-ui/storybook/src/App.tsx",[],"/Users/gorhom/Desktop/projects/base-ui/storybook/src/stories.ts",[],"/Users/gorhom/Desktop/projects/base-ui/storybook/src/decorators/withThemeProvider.tsx",[],"/Users/gorhom/Desktop/projects/base-ui/storybook/src/decorators/withCenterView.tsx",[]]
\ No newline at end of file
diff --git a/storybook/android/app/src/main/assets/fonts/baseui-icons.ttf b/storybook/android/app/src/main/assets/fonts/baseui-icons.ttf
new file mode 100644
index 0000000..dcd0135
Binary files /dev/null and b/storybook/android/app/src/main/assets/fonts/baseui-icons.ttf differ
diff --git a/storybook/config-overrides.js b/storybook/config-overrides.js
index 95d2424..f69a8bc 100644
--- a/storybook/config-overrides.js
+++ b/storybook/config-overrides.js
@@ -8,8 +8,8 @@ const {
override,
} = require('customize-cra');
const { plugins } = require('./babel.config');
-const path = require('path');
+const path = require('path');
const root = path.resolve(__dirname, '../');
module.exports = override(
@@ -18,6 +18,11 @@ module.exports = override(
include: path.resolve(root, 'src'),
use: 'babel-loader',
}),
+ addWebpackModuleRule({
+ test: /\.ttf$/,
+ loader: 'url-loader',
+ include: root,
+ }),
fixBabelImports('module-resolver', {
alias: {
'^react-native$': 'react-native-web',
diff --git a/storybook/ios/BaseUI.xcodeproj/project.pbxproj b/storybook/ios/BaseUI.xcodeproj/project.pbxproj
index 3e7008d..c523122 100644
--- a/storybook/ios/BaseUI.xcodeproj/project.pbxproj
+++ b/storybook/ios/BaseUI.xcodeproj/project.pbxproj
@@ -10,6 +10,7 @@
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+ 328A1894776B45C99B75DC17 /* baseui-icons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DE1D295F5D34401B5399710 /* baseui-icons.ttf */; };
7FFEBF27F9CF2916B112EA20 /* libPods-BaseUI.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41B4ACA92271CFB897139A62 /* libPods-BaseUI.a */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
@@ -23,6 +24,7 @@
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = baseui/Images.xcassets; sourceTree = ""; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = baseui/Info.plist; sourceTree = ""; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = baseui/main.m; sourceTree = ""; };
+ 3DE1D295F5D34401B5399710 /* baseui-icons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "baseui-icons.ttf"; path = "../../fonts/baseui-icons.ttf"; sourceTree = ""; };
41B4ACA92271CFB897139A62 /* libPods-BaseUI.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BaseUI.a"; sourceTree = BUILT_PRODUCTS_DIR; };
4858BC91746B3EDE5547268E /* libPods-baseui-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-baseui-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
735E6227338D85D8C5535D0E /* Pods-BaseUI.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BaseUI.release.xcconfig"; path = "Target Support Files/Pods-BaseUI/Pods-BaseUI.release.xcconfig"; sourceTree = ""; };
@@ -61,6 +63,14 @@
name = baseui;
sourceTree = "";
};
+ 14D954F18CCB41A2A35B2A72 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 3DE1D295F5D34401B5399710 /* baseui-icons.ttf */,
+ );
+ name = Resources;
+ sourceTree = "";
+ };
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
isa = PBXGroup;
children = (
@@ -89,6 +99,7 @@
83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
87AA3D022473CA70578A3B56 /* Pods */,
+ 14D954F18CCB41A2A35B2A72 /* Resources */,
);
indentWidth = 2;
sourceTree = "";
@@ -176,6 +187,7 @@
files = (
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ 328A1894776B45C99B75DC17 /* baseui-icons.ttf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/storybook/ios/baseui/Info.plist b/storybook/ios/baseui/Info.plist
index a15bb3d..5eb9760 100644
--- a/storybook/ios/baseui/Info.plist
+++ b/storybook/ios/baseui/Info.plist
@@ -38,7 +38,7 @@
NSLocationWhenInUseUsageDescription
-
+
UILaunchStoryboardName
LaunchScreen
UIRequiredDeviceCapabilities
@@ -51,5 +51,9 @@
UIViewControllerBasedStatusBarAppearance
+ UIAppFonts
+
+ baseui-icons.ttf
+
diff --git a/storybook/react-native.config.js b/storybook/react-native.config.js
new file mode 100644
index 0000000..e8076d8
--- /dev/null
+++ b/storybook/react-native.config.js
@@ -0,0 +1,7 @@
+module.exports = {
+ project: {
+ ios: {},
+ android: {}, // grouped into "project"
+ },
+ assets: ['../fonts'], // stays the same
+};
diff --git a/storybook/src/stories.ts b/storybook/src/stories.ts
index 8026856..5b04658 100644
--- a/storybook/src/stories.ts
+++ b/storybook/src/stories.ts
@@ -1,2 +1,3 @@
import '../../src/button/Button.stories';
import '../../src/typography/Typography.stories';
+import '../../src/icon/Icon.stories';