├── .gitignore ├── .npmignore ├── Example ├── .flowconfig ├── .gitignore ├── .watchmanconfig ├── android │ ├── app │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ ├── react.gradle │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets │ │ │ ├── FontAwesome.otf │ │ │ ├── Material-Design-Iconic-Font.ttf │ │ │ ├── fontawesome.json │ │ │ ├── foundation-icons.ttf │ │ │ ├── foundation.json │ │ │ ├── ion.json │ │ │ ├── ionicons.ttf │ │ │ ├── material.json │ │ │ ├── octicons.json │ │ │ ├── octicons.ttf │ │ │ ├── typicons.json │ │ │ ├── typicons.ttf │ │ │ ├── zocial.json │ │ │ └── zocial.ttf │ │ │ ├── java │ │ │ └── com │ │ │ │ └── smixx │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── example.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── example.xcscheme ├── iOS │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ └── LaunchScreen.xib │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── main.jsbundle │ └── main.m ├── index.android.js ├── index.ios.js └── package.json ├── LICENSE ├── README.md ├── SMXIconImage.android.js ├── SMXIconImage.ios.js ├── SMXLoadingImage.android.js ├── SMXLoadingImage.ios.js ├── SMXTabBarIOS.android.js ├── SMXTabBarIOS.ios.js ├── SMXTabBarIconItemIOS.android.js ├── SMXTabBarIconItemIOS.ios.js ├── android ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── smixx │ └── reactnativeicons │ ├── IconFont.java │ ├── IconManager.java │ └── ReactNativeIcons.java ├── example └── node_modules │ └── react-native-icons │ └── ios │ └── ReactNativeIcons │ └── Libraries │ └── FontAwesomeKit │ └── octicons.ttf ├── fonts ├── FontAwesome.otf ├── Material-Design-Iconic-Font.ttf ├── fontawesome.json ├── foundation-icons.ttf ├── foundation.json ├── ion.json ├── ionicons.ttf ├── material.json ├── octicons.json ├── octicons.ttf ├── typicons.json ├── typicons.ttf ├── zocial.json └── zocial.ttf ├── iOS ├── ReactNativeIcons.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata └── ReactNativeIcons │ ├── FAKIconImage │ ├── FAKIconImage.h │ ├── FAKIconImage.m │ ├── FAKIconImageManager.h │ └── FAKIconImageManager.m │ ├── IconTabBarItem │ ├── SMXTabBar.h │ ├── SMXTabBar.m │ ├── SMXTabBarItem.h │ ├── SMXTabBarItem.m │ ├── SMXTabBarItemManager.h │ ├── SMXTabBarItemManager.m │ ├── SMXTabBarManager.h │ └── SMXTabBarManager.m │ └── Libraries │ └── FontAwesomeKit │ ├── FAKFontAwesome.h │ ├── FAKFontAwesome.m │ ├── FAKFoundationIcons.h │ ├── FAKFoundationIcons.m │ ├── FAKIcon.h │ ├── FAKIcon.m │ ├── FAKIonIcons.h │ ├── FAKIonIcons.m │ ├── FAKMaterial.h │ ├── FAKMaterial.m │ ├── FAKZocial.h │ ├── FAKZocial.m │ ├── FontAwesome.otf │ ├── FontAwesomeKit.h │ ├── Material-Design-Iconic-Font.ttf │ ├── foundation-icons.ttf │ ├── ionicons.ttf │ └── zocial-regular-webfont.ttf ├── index.android.js ├── index.ios.js ├── ios └── ReactNativeIcons │ └── Libraries │ └── FontAwesomeKit │ ├── FAKOcticons.h │ ├── FAKOcticons.m │ └── octicons.ttf ├── package.json ├── react-native-icons.podspec └── shim-assert.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | *.xccheckout 14 | *.moved-aside 15 | DerivedData 16 | *.hmap 17 | *.ipa 18 | *.xcuserstate 19 | 20 | # CocoaPods 21 | # 22 | # We recommend against adding the Pods directory to your .gitignore. However 23 | # you should judge for yourself, the pros and cons are mentioned at: 24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 25 | # 26 | #Pods/ 27 | 28 | .idea 29 | node_modules -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build/ 2 | .idea 3 | example/ 4 | android/build 5 | -------------------------------------------------------------------------------- /Example/.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | 3 | # We fork some components by platform. 4 | .*/*.web.js 5 | .*/*.android.js 6 | 7 | # Some modules have their own node_modules with overlap 8 | .*/node_modules/node-haste/.* 9 | 10 | # Ugh 11 | .*/node_modules/babel.* 12 | .*/node_modules/babylon.* 13 | .*/node_modules/invariant.* 14 | 15 | # Ignore react and fbjs where there are overlaps, but don't ignore 16 | # anything that react-native relies on 17 | .*/node_modules/fbjs-haste/.*/__tests__/.* 18 | .*/node_modules/fbjs-haste/__forks__/Map.js 19 | .*/node_modules/fbjs-haste/__forks__/Promise.js 20 | .*/node_modules/fbjs-haste/__forks__/fetch.js 21 | .*/node_modules/fbjs-haste/core/ExecutionEnvironment.js 22 | .*/node_modules/fbjs-haste/core/isEmpty.js 23 | .*/node_modules/fbjs-haste/crypto/crc32.js 24 | .*/node_modules/fbjs-haste/stubs/ErrorUtils.js 25 | .*/node_modules/react-haste/React.js 26 | .*/node_modules/react-haste/renderers/dom/ReactDOM.js 27 | .*/node_modules/react-haste/renderers/shared/event/eventPlugins/ResponderEventPlugin.js 28 | 29 | # Ignore commoner tests 30 | .*/node_modules/commoner/test/.* 31 | 32 | # See https://github.com/facebook/flow/issues/442 33 | .*/react-tools/node_modules/commoner/lib/reader.js 34 | 35 | # Ignore jest 36 | .*/node_modules/jest-cli/.* 37 | 38 | # Ignore Website 39 | .*/website/.* 40 | 41 | [include] 42 | 43 | [libs] 44 | node_modules/react-native/Libraries/react-native/react-native-interface.js 45 | 46 | [options] 47 | module.system=haste 48 | 49 | munge_underscores=true 50 | 51 | module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' 52 | module.name_mapper='^[./a-zA-Z0-9$_-]+\.png$' -> 'RelativeImageStub' 53 | 54 | suppress_type=$FlowIssue 55 | suppress_type=$FlowFixMe 56 | suppress_type=$FixMe 57 | 58 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(1[0-8]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) 59 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(1[0-8]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)? #[0-9]+ 60 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 61 | 62 | [version] 63 | 0.18.1 64 | -------------------------------------------------------------------------------- /Example/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # Android/IJ 26 | # 27 | .idea 28 | .gradle 29 | local.properties 30 | 31 | # node.js 32 | # 33 | node_modules/ 34 | npm-debug.log 35 | -------------------------------------------------------------------------------- /Example/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /Example/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | 3 | /** 4 | * The react.gradle file registers two tasks: bundleDebugJsAndAssets and bundleReleaseJsAndAssets. 5 | * These basically call `react-native bundle` with the correct arguments during the Android build 6 | * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the 7 | * bundle directly from the development server. Below you can see all the possible configurations 8 | * and their defaults. If you decide to add a configuration block, make sure to add it before the 9 | * `apply from: "react.gradle"` line. 10 | * 11 | * project.ext.react = [ 12 | * // the name of the generated asset file containing your JS bundle 13 | * bundleAssetName: "index.android.bundle", 14 | * 15 | * // the entry file for bundle generation 16 | * entryFile: "index.android.js", 17 | * 18 | * // whether to bundle JS and assets in debug mode 19 | * bundleInDebug: false, 20 | * 21 | * // whether to bundle JS and assets in release mode 22 | * bundleInRelease: true, 23 | * 24 | * // the root of your project, i.e. where "package.json" lives 25 | * root: "../../", 26 | * 27 | * // where to put the JS bundle asset in debug mode 28 | * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", 29 | * 30 | * // where to put the JS bundle asset in release mode 31 | * jsBundleDirRelease: "$buildDir/intermediates/assets/release", 32 | * 33 | * // where to put drawable resources / React Native assets, e.g. the ones you use via 34 | * // require('./image.png')), in debug mode 35 | * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", 36 | * 37 | * // where to put drawable resources / React Native assets, e.g. the ones you use via 38 | * // require('./image.png')), in release mode 39 | * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", 40 | * 41 | * // by default the gradle tasks are skipped if none of the JS files or assets change; this means 42 | * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to 43 | * // date; if you have any other folders that you want to ignore for performance reasons (gradle 44 | * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ 45 | * // for example, you might want to remove it from here. 46 | * inputExcludes: ["android/**", "ios/**"] 47 | * ] 48 | */ 49 | 50 | apply from: "react.gradle" 51 | 52 | android { 53 | compileSdkVersion 23 54 | buildToolsVersion "23.0.1" 55 | 56 | defaultConfig { 57 | applicationId "com.smixx" 58 | minSdkVersion 16 59 | targetSdkVersion 22 60 | versionCode 1 61 | versionName "1.0" 62 | ndk { 63 | abiFilters "armeabi-v7a", "x86" 64 | } 65 | } 66 | buildTypes { 67 | release { 68 | minifyEnabled false // Set this to true to enable Proguard 69 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 70 | } 71 | } 72 | } 73 | 74 | dependencies { 75 | compile project(':react-native-icons') 76 | compile fileTree(dir: "libs", include: ["*.jar"]) 77 | compile "com.android.support:appcompat-v7:23.0.1" 78 | compile "com.facebook.react:react-native:0.16.+" 79 | } 80 | -------------------------------------------------------------------------------- /Example/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Disabling obfuscation is useful if you collect stack traces from production crashes 20 | # (unless you are using a system that supports de-obfuscate the stack traces). 21 | -dontobfuscate 22 | 23 | # React Native 24 | 25 | # Keep our interfaces so they can be used by other ProGuard rules. 26 | # See http://sourceforge.net/p/proguard/bugs/466/ 27 | -keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip 28 | -keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters 29 | 30 | # Do not strip any method/class that is annotated with @DoNotStrip 31 | -keep @com.facebook.proguard.annotations.DoNotStrip class * 32 | -keepclassmembers class * { 33 | @com.facebook.proguard.annotations.DoNotStrip *; 34 | } 35 | 36 | -keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { 37 | void set*(***); 38 | *** get*(); 39 | } 40 | 41 | -keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } 42 | -keep class * extends com.facebook.react.bridge.NativeModule { *; } 43 | -keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } 44 | -keepclassmembers class * { @com.facebook.react.uimanager.ReactProp ; } 45 | -keepclassmembers class * { @com.facebook.react.uimanager.ReactPropGroup ; } 46 | 47 | # okhttp 48 | 49 | -keepattributes Signature 50 | -keepattributes *Annotation* 51 | -keep class com.squareup.okhttp.** { *; } 52 | -keep interface com.squareup.okhttp.** { *; } 53 | -dontwarn com.squareup.okhttp.** 54 | 55 | # okio 56 | 57 | -keep class sun.misc.Unsafe { *; } 58 | -dontwarn java.nio.file.* 59 | -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 60 | -dontwarn okio.** 61 | -------------------------------------------------------------------------------- /Example/android/app/react.gradle: -------------------------------------------------------------------------------- 1 | import org.apache.tools.ant.taskdefs.condition.Os 2 | 3 | def config = project.hasProperty("react") ? project.react : []; 4 | 5 | def bundleAssetName = config.bundleAssetName ?: "index.android.bundle" 6 | def entryFile = config.entryFile ?: "index.android.js" 7 | 8 | // because elvis operator 9 | def elvisFile(thing) { 10 | return thing ? file(thing) : null; 11 | } 12 | 13 | def reactRoot = elvisFile(config.root) ?: file("../../") 14 | def jsBundleDirDebug = elvisFile(config.jsBundleDirDebug) ?: 15 | file("$buildDir/intermediates/assets/debug") 16 | def jsBundleDirRelease = elvisFile(config.jsBundleDirRelease) ?: 17 | file("$buildDir/intermediates/assets/release") 18 | def resourcesDirDebug = elvisFile(config.resourcesDirDebug) ?: 19 | file("$buildDir/intermediates/res/merged/debug") 20 | def resourcesDirRelease = elvisFile(config.resourcesDirRelease) ?: 21 | file("$buildDir/intermediates/res/merged/release") 22 | def inputExcludes = config.inputExcludes ?: ["android/**", "ios/**"] 23 | 24 | def jsBundleFileDebug = file("$jsBundleDirDebug/$bundleAssetName") 25 | def jsBundleFileRelease = file("$jsBundleDirRelease/$bundleAssetName") 26 | 27 | task bundleDebugJsAndAssets(type: Exec) { 28 | // create dirs if they are not there (e.g. the "clean" task just ran) 29 | doFirst { 30 | jsBundleDirDebug.mkdirs() 31 | resourcesDirDebug.mkdirs() 32 | } 33 | 34 | // set up inputs and outputs so gradle can cache the result 35 | inputs.files fileTree(dir: reactRoot, excludes: inputExcludes) 36 | outputs.dir jsBundleDirDebug 37 | outputs.dir resourcesDirDebug 38 | 39 | // set up the call to the react-native cli 40 | workingDir reactRoot 41 | if (Os.isFamily(Os.FAMILY_WINDOWS)) { 42 | commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "true", "--entry-file", 43 | entryFile, "--bundle-output", jsBundleFileDebug, "--assets-dest", resourcesDirDebug 44 | } else { 45 | commandLine "react-native", "bundle", "--platform", "android", "--dev", "true", "--entry-file", 46 | entryFile, "--bundle-output", jsBundleFileDebug, "--assets-dest", resourcesDirDebug 47 | } 48 | 49 | enabled config.bundleInDebug ?: false 50 | } 51 | 52 | task bundleReleaseJsAndAssets(type: Exec) { 53 | // create dirs if they are not there (e.g. the "clean" task just ran) 54 | doFirst { 55 | jsBundleDirRelease.mkdirs() 56 | resourcesDirRelease.mkdirs() 57 | } 58 | 59 | // set up inputs and outputs so gradle can cache the result 60 | inputs.files fileTree(dir: reactRoot, excludes: inputExcludes) 61 | outputs.dir jsBundleDirRelease 62 | outputs.dir resourcesDirRelease 63 | 64 | // set up the call to the react-native cli 65 | workingDir reactRoot 66 | if (Os.isFamily(Os.FAMILY_WINDOWS)) { 67 | commandLine "cmd","/c", "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file", 68 | entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease 69 | } else { 70 | commandLine "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file", 71 | entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease 72 | } 73 | 74 | enabled config.bundleInRelease ?: true 75 | } 76 | 77 | gradle.projectsEvaluated { 78 | // hook bundleDebugJsAndAssets into the android build process 79 | bundleDebugJsAndAssets.dependsOn mergeDebugResources 80 | bundleDebugJsAndAssets.dependsOn mergeDebugAssets 81 | processDebugResources.dependsOn bundleDebugJsAndAssets 82 | 83 | // hook bundleReleaseJsAndAssets into the android build process 84 | bundleReleaseJsAndAssets.dependsOn mergeReleaseResources 85 | bundleReleaseJsAndAssets.dependsOn mergeReleaseAssets 86 | processReleaseResources.dependsOn bundleReleaseJsAndAssets 87 | } 88 | -------------------------------------------------------------------------------- /Example/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/assets/FontAwesome.otf -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/Material-Design-Iconic-Font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/assets/Material-Design-Iconic-Font.ttf -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/foundation-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/assets/foundation-icons.ttf -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/foundation.json: -------------------------------------------------------------------------------- 1 | { 2 | "address-book": "", 3 | "alert": "", 4 | "align-center": "", 5 | "align-justify": "", 6 | "align-left": "", 7 | "align-right": "", 8 | "anchor": "", 9 | "annotate": "", 10 | "archive": "", 11 | "arrow-down": "", 12 | "arrow-left": "", 13 | "arrow-right": "", 14 | "arrow-up": "", 15 | "arrows-compress": "", 16 | "arrows-expand": "", 17 | "arrows-in": "", 18 | "arrows-out": "", 19 | "asl": "", 20 | "asterisk": "", 21 | "at-sign": "", 22 | "background-color": "", 23 | "battery-empty": "", 24 | "battery-full": "", 25 | "battery-half": "", 26 | "bitcoin-circle": "", 27 | "bitcoin": "", 28 | "blind": "", 29 | "bluetooth": "", 30 | "bold": "", 31 | "book-bookmark": "", 32 | "book": "", 33 | "bookmark": "", 34 | "braille": "", 35 | "burst-new": "", 36 | "burst-sale": "", 37 | "burst": "", 38 | "calendar": "", 39 | "camera": "", 40 | "check": "", 41 | "checkbox": "", 42 | "clipboard-notes": "", 43 | "clipboard-pencil": "", 44 | "clipboard": "", 45 | "clock": "", 46 | "closed-caption": "", 47 | "cloud": "", 48 | "comment-minus": "", 49 | "comment-quotes": "", 50 | "comment-video": "", 51 | "comment": "", 52 | "comments": "", 53 | "compass": "", 54 | "contrast": "", 55 | "credit-card": "", 56 | "crop": "", 57 | "crown": "", 58 | "css3": "", 59 | "database": "", 60 | "die-five": "", 61 | "die-four": "", 62 | "die-one": "", 63 | "die-six": "", 64 | "die-three": "", 65 | "die-two": "", 66 | "dislike": "", 67 | "dollar-bill": "", 68 | "dollar": "", 69 | "download": "", 70 | "eject": "", 71 | "elevator": "", 72 | "euro": "", 73 | "eye": "", 74 | "fast-forward": "", 75 | "female-symbol": "", 76 | "female": "", 77 | "filter": "", 78 | "first-aid": "", 79 | "flag": "", 80 | "folder-add": "", 81 | "folder-lock": "", 82 | "folder": "", 83 | "foot": "", 84 | "foundation": "", 85 | "graph-bar": "", 86 | "graph-horizontal": "", 87 | "graph-pie": "", 88 | "graph-trend": "", 89 | "guide-dog": "", 90 | "hearing-aid": "", 91 | "heart": "", 92 | "home": "", 93 | "html5": "", 94 | "indent-less": "", 95 | "indent-more": "", 96 | "info": "", 97 | "italic": "", 98 | "key": "", 99 | "laptop": "", 100 | "layout": "", 101 | "lightbulb": "", 102 | "like": "", 103 | "link": "", 104 | "list-bullet": "", 105 | "list-number": "", 106 | "list-thumbnails": "", 107 | "list": "", 108 | "lock": "", 109 | "loop": "", 110 | "magnifying-glass": "", 111 | "mail": "", 112 | "male-female": "", 113 | "male-symbol": "", 114 | "male": "", 115 | "map": "", 116 | "marker": "", 117 | "megaphone": "", 118 | "microphone": "", 119 | "minus-circle": "", 120 | "minus": "", 121 | "mobile-signal": "", 122 | "mobile": "", 123 | "monitor": "", 124 | "mountains": "", 125 | "music": "", 126 | "next": "", 127 | "no-dogs": "", 128 | "no-smoking": "", 129 | "page-add": "", 130 | "page-copy": "", 131 | "page-csv": "", 132 | "page-delete": "", 133 | "page-doc": "", 134 | "page-edit": "", 135 | "page-export-csv": "", 136 | "page-export-doc": "", 137 | "page-export-pdf": "", 138 | "page-export": "", 139 | "page-filled": "", 140 | "page-multiple": "", 141 | "page-pdf": "", 142 | "page-remove": "", 143 | "page-search": "", 144 | "page": "", 145 | "paint-bucket": "", 146 | "paperclip": "", 147 | "pause": "", 148 | "paw": "", 149 | "paypal": "", 150 | "pencil": "", 151 | "photo": "", 152 | "play-circle": "", 153 | "play-video": "", 154 | "play": "", 155 | "plus": "", 156 | "pound": "", 157 | "power": "", 158 | "previous": "", 159 | "price-tag": "", 160 | "pricetag-multiple": "", 161 | "print": "", 162 | "prohibited": "", 163 | "projection-screen": "", 164 | "puzzle": "", 165 | "quote": "", 166 | "record": "", 167 | "refresh": "", 168 | "results-demographics": "", 169 | "results": "", 170 | "rewind-ten": "", 171 | "rewind": "", 172 | "rss": "", 173 | "safety-cone": "", 174 | "save": "", 175 | "share": "", 176 | "sheriff-badge": "", 177 | "shield": "", 178 | "shopping-bag": "", 179 | "shopping-cart": "", 180 | "shuffle": "", 181 | "skull": "", 182 | "social-500px": "", 183 | "social-adobe": "", 184 | "social-amazon": "", 185 | "social-android": "", 186 | "social-apple": "", 187 | "social-behance": "", 188 | "social-bing": "", 189 | "social-blogger": "", 190 | "social-delicious": "", 191 | "social-designer-news": "", 192 | "social-deviant-art": "", 193 | "social-digg": "", 194 | "social-dribbble": "", 195 | "social-drive": "", 196 | "social-dropbox": "", 197 | "social-evernote": "", 198 | "social-facebook": "", 199 | "social-flickr": "", 200 | "social-forrst": "", 201 | "social-foursquare": "", 202 | "social-game-center": "", 203 | "social-github": "", 204 | "social-google-plus": "", 205 | "social-hacker-news": "", 206 | "social-hi5": "", 207 | "social-instagram": "", 208 | "social-joomla": "", 209 | "social-lastfm": "", 210 | "social-linkedin": "", 211 | "social-medium": "", 212 | "social-myspace": "", 213 | "social-orkut": "", 214 | "social-path": "", 215 | "social-picasa": "", 216 | "social-pinterest": "", 217 | "social-rdio": "", 218 | "social-reddit": "", 219 | "social-skillshare": "", 220 | "social-skype": "", 221 | "social-smashing-mag": "", 222 | "social-snapchat": "", 223 | "social-spotify": "", 224 | "social-squidoo": "", 225 | "social-stack-overflow": "", 226 | "social-steam": "", 227 | "social-stumbleupon": "", 228 | "social-treehouse": "", 229 | "social-tumblr": "", 230 | "social-twitter": "", 231 | "social-vimeo": "", 232 | "social-windows": "", 233 | "social-xbox": "", 234 | "social-yahoo": "", 235 | "social-yelp": "", 236 | "social-youtube": "", 237 | "social-zerply": "", 238 | "social-zurb": "", 239 | "sound": "", 240 | "star": "", 241 | "stop": "", 242 | "strikethrough": "", 243 | "subscript": "", 244 | "superscript": "", 245 | "tablet-landscape": "", 246 | "tablet-portrait": "", 247 | "target-two": "", 248 | "target": "", 249 | "telephone-accessible": "", 250 | "telephone": "", 251 | "text-color": "", 252 | "thumbnails": "", 253 | "ticket": "", 254 | "torso-business": "", 255 | "torso-female": "", 256 | "torso": "", 257 | "torsos-all-female": "", 258 | "torsos-all": "", 259 | "torsos-female-male": "", 260 | "torsos-male-female": "", 261 | "torsos": "", 262 | "trash": "", 263 | "trees": "", 264 | "trophy": "", 265 | "underline": "", 266 | "universal-access": "", 267 | "unlink": "", 268 | "unlock": "", 269 | "upload-cloud": "", 270 | "upload": "", 271 | "usb": "", 272 | "video": "", 273 | "volume-none": "", 274 | "volume-strike": "", 275 | "volume": "", 276 | "web": "", 277 | "wheelchair": "", 278 | "widget": "", 279 | "wrench": "", 280 | "x-circle": "", 281 | "x": "", 282 | "yen": "", 283 | "zoom-in": "", 284 | "zoom-out": "" 285 | } -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/assets/ionicons.ttf -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/octicons.json: -------------------------------------------------------------------------------- 1 | { 2 | "alert": "", 3 | "arrow-down": "", 4 | "arrow-left": "", 5 | "arrow-right": "", 6 | "arrow-small-down": "", 7 | "arrow-small-left": "", 8 | "arrow-small-right": "", 9 | "arrow-small-up": "", 10 | "arrow-up": "", 11 | "beaker": "", 12 | "bell": "", 13 | "book": "", 14 | "bookmark": "", 15 | "briefcase": "", 16 | "broadcast": "", 17 | "browser": "", 18 | "bug": "", 19 | "calendar": "", 20 | "check": "", 21 | "checklist": "", 22 | "chevron-down": "", 23 | "chevron-left": "", 24 | "chevron-right": "", 25 | "chevron-up": "", 26 | "circle-slash": "", 27 | "circuit-board": "", 28 | "clippy": "", 29 | "clock": "", 30 | "cloud-download": "", 31 | "cloud-upload": "", 32 | "code": "", 33 | "color-mode": "", 34 | "comment": "", 35 | "comment-discussion": "", 36 | "credit-card": "", 37 | "dash": "", 38 | "dashboard": "", 39 | "database": "", 40 | "desktop-download": "", 41 | "device-camera": "", 42 | "device-camera-video": "", 43 | "device-desktop": "", 44 | "device-mobile": "", 45 | "diff": "", 46 | "diff-added": "", 47 | "diff-ignored": "", 48 | "diff-modified": "", 49 | "diff-removed": "", 50 | "diff-renamed": "", 51 | "ellipsis": "", 52 | "eye": "", 53 | "file-binary": "", 54 | "file-code": "", 55 | "file-directory": "", 56 | "file-media": "", 57 | "file-pdf": "", 58 | "file-submodule": "", 59 | "file-symlink-directory": "", 60 | "file-symlink-file": "", 61 | "file-text": "", 62 | "file-zip": "", 63 | "flame": "", 64 | "fold": "", 65 | "gear": "", 66 | "gift": "", 67 | "gist": "", 68 | "gist-secret": "", 69 | "git-branch": "", 70 | "git-commit": "", 71 | "git-compare": "", 72 | "git-merge": "", 73 | "git-pull-request": "", 74 | "globe": "", 75 | "graph": "", 76 | "heart": "♥", 77 | "history": "", 78 | "home": "", 79 | "horizontal-rule": "", 80 | "hubot": "", 81 | "inbox": "", 82 | "info": "", 83 | "issue-closed": "", 84 | "issue-opened": "", 85 | "issue-reopened": "", 86 | "jersey": "", 87 | "key": "", 88 | "keyboard": "", 89 | "law": "", 90 | "light-bulb": "", 91 | "link": "", 92 | "link-external": "", 93 | "list-ordered": "", 94 | "list-unordered": "", 95 | "location": "", 96 | "lock": "", 97 | "logo-github": "", 98 | "mail": "", 99 | "mail-read": "", 100 | "mail-reply": "", 101 | "mark-github": "", 102 | "markdown": "", 103 | "megaphone": "", 104 | "mention": "", 105 | "milestone": "", 106 | "mirror": "", 107 | "mortar-board": "", 108 | "mute": "", 109 | "no-newline": "", 110 | "octoface": "", 111 | "organization": "", 112 | "package": "", 113 | "paintcan": "", 114 | "pencil": "", 115 | "person": "", 116 | "pin": "", 117 | "plug": "", 118 | "plus": "", 119 | "primitive-dot": "", 120 | "primitive-square": "", 121 | "pulse": "", 122 | "question": "", 123 | "quote": "", 124 | "radio-tower": "", 125 | "repo": "", 126 | "repo-clone": "", 127 | "repo-force-push": "", 128 | "repo-forked": "", 129 | "repo-pull": "", 130 | "repo-push": "", 131 | "rocket": "", 132 | "rss": "", 133 | "ruby": "", 134 | "screen-full": "", 135 | "screen-normal": "", 136 | "search": "", 137 | "server": "", 138 | "settings": "", 139 | "shield": "", 140 | "sign-in": "", 141 | "sign-out": "", 142 | "squirrel": "", 143 | "star": "", 144 | "stop": "", 145 | "sync": "", 146 | "tag": "", 147 | "telescope": "", 148 | "terminal": "", 149 | "three-bars": "", 150 | "thumbsdown": "", 151 | "thumbsup": "", 152 | "tools": "", 153 | "trashcan": "", 154 | "triangle-down": "", 155 | "triangle-left": "", 156 | "triangle-right": "", 157 | "triangle-up": "", 158 | "unfold": "", 159 | "unmute": "", 160 | "versions": "", 161 | "watch": "", 162 | "x": "", 163 | "zap": "⚡" 164 | } -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/assets/octicons.ttf -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/typicons.json: -------------------------------------------------------------------------------- 1 | { 2 | "adjust-brightness": "", 3 | "adjust-contrast": "", 4 | "anchor-outline": "", 5 | "anchor": "", 6 | "archive": "", 7 | "arrow-back-outline": "", 8 | "arrow-back": "", 9 | "arrow-down-outline": "", 10 | "arrow-down-thick": "", 11 | "arrow-down": "", 12 | "arrow-forward-outline": "", 13 | "arrow-forward": "", 14 | "arrow-left-outline": "", 15 | "arrow-left-thick": "", 16 | "arrow-left": "", 17 | "arrow-loop-outline": "", 18 | "arrow-loop": "", 19 | "arrow-maximise-outline": "", 20 | "arrow-maximise": "", 21 | "arrow-minimise-outline": "", 22 | "arrow-minimise": "", 23 | "arrow-move-outline": "", 24 | "arrow-move": "", 25 | "arrow-repeat-outline": "", 26 | "arrow-repeat": "", 27 | "arrow-right-outline": "", 28 | "arrow-right-thick": "", 29 | "arrow-right": "", 30 | "arrow-shuffle": "", 31 | "arrow-sorted-down": "", 32 | "arrow-sorted-up": "", 33 | "arrow-sync-outline": "", 34 | "arrow-sync": "", 35 | "arrow-unsorted": "", 36 | "arrow-up-outline": "", 37 | "arrow-up-thick": "", 38 | "arrow-up": "", 39 | "at": "", 40 | "attachment-outline": "", 41 | "attachment": "", 42 | "backspace-outline": "", 43 | "backspace": "", 44 | "battery-charge": "", 45 | "battery-full": "", 46 | "battery-high": "", 47 | "battery-low": "", 48 | "battery-mid": "", 49 | "beaker": "", 50 | "beer": "", 51 | "bell": "", 52 | "book": "", 53 | "bookmark": "", 54 | "briefcase": "", 55 | "brush": "", 56 | "business-card": "", 57 | "calculator": "", 58 | "calendar-outline": "", 59 | "calendar": "", 60 | "camera-outline": "", 61 | "camera": "", 62 | "cancel-outline": "", 63 | "cancel": "", 64 | "chart-area-outline": "", 65 | "chart-area": "", 66 | "chart-bar-outline": "", 67 | "chart-bar": "", 68 | "chart-line-outline": "", 69 | "chart-line": "", 70 | "chart-pie-outline": "", 71 | "chart-pie": "", 72 | "chevron-left-outline": "", 73 | "chevron-left": "", 74 | "chevron-right-outline": "", 75 | "chevron-right": "", 76 | "clipboard": "", 77 | "cloud-storage": "", 78 | "cloud-storage-outline": "", 79 | "code-outline": "", 80 | "code": "", 81 | "coffee": "", 82 | "cog-outline": "", 83 | "cog": "", 84 | "compass": "", 85 | "contacts": "", 86 | "credit-card": "", 87 | "css3": "", 88 | "database": "", 89 | "delete-outline": "", 90 | "delete": "", 91 | "device-desktop": "", 92 | "device-laptop": "", 93 | "device-phone": "", 94 | "device-tablet": "", 95 | "directions": "", 96 | "divide-outline": "", 97 | "divide": "", 98 | "document-add": "", 99 | "document-delete": "", 100 | "document-text": "", 101 | "document": "", 102 | "download-outline": "", 103 | "download": "", 104 | "dropbox": "", 105 | "edit": "", 106 | "eject-outline": "", 107 | "eject": "", 108 | "equals-outline": "", 109 | "equals": "", 110 | "export-outline": "", 111 | "export": "", 112 | "eye-outline": "", 113 | "eye": "", 114 | "feather": "", 115 | "film": "", 116 | "filter": "", 117 | "flag-outline": "", 118 | "flag": "", 119 | "flash-outline": "", 120 | "flash": "", 121 | "flow-children": "", 122 | "flow-merge": "", 123 | "flow-parallel": "", 124 | "flow-switch": "", 125 | "folder-add": "", 126 | "folder-delete": "", 127 | "folder-open": "", 128 | "folder": "", 129 | "gift": "", 130 | "globe-outline": "", 131 | "globe": "", 132 | "group-outline": "", 133 | "group": "", 134 | "headphones": "", 135 | "heart-full-outline": "", 136 | "heart-half-outline": "", 137 | "heart-outline": "", 138 | "heart": "", 139 | "home-outline": "", 140 | "home": "", 141 | "html5": "", 142 | "image-outline": "", 143 | "image": "", 144 | "infinity-outline": "", 145 | "infinity": "", 146 | "info-large-outline": "", 147 | "info-large": "", 148 | "info-outline": "", 149 | "info": "", 150 | "input-checked-outline": "", 151 | "input-checked": "", 152 | "key-outline": "", 153 | "key": "", 154 | "keyboard": "", 155 | "leaf": "", 156 | "lightbulb": "", 157 | "link-outline": "", 158 | "link": "", 159 | "location-arrow-outline": "", 160 | "location-arrow": "", 161 | "location-outline": "", 162 | "location": "", 163 | "lock-closed-outline": "", 164 | "lock-closed": "", 165 | "lock-open-outline": "", 166 | "lock-open": "", 167 | "mail": "", 168 | "map": "", 169 | "media-eject-outline": "", 170 | "media-eject": "", 171 | "media-fast-forward-outline": "", 172 | "media-fast-forward": "", 173 | "media-pause-outline": "", 174 | "media-pause": "", 175 | "media-play-outline": "", 176 | "media-play-reverse-outline": "", 177 | "media-play-reverse": "", 178 | "media-play": "", 179 | "media-record-outline": "", 180 | "media-record": "", 181 | "media-rewind-outline": "", 182 | "media-rewind": "", 183 | "media-stop-outline": "", 184 | "media-stop": "", 185 | "message-typing": "", 186 | "message": "", 187 | "messages": "", 188 | "microphone-outline": "", 189 | "microphone": "", 190 | "minus-outline": "", 191 | "minus": "", 192 | "mortar-board": "", 193 | "news": "", 194 | "notes-outline": "", 195 | "notes": "", 196 | "pen": "", 197 | "pencil": "", 198 | "phone-outline": "", 199 | "phone": "", 200 | "pi-outline": "", 201 | "pi": "", 202 | "pin-outline": "", 203 | "pin": "", 204 | "pipette": "", 205 | "plane-outline": "", 206 | "plane": "", 207 | "plug": "", 208 | "plus-outline": "", 209 | "plus": "", 210 | "point-of-interest-outline": "", 211 | "point-of-interest": "", 212 | "power-outline": "", 213 | "power": "", 214 | "printer": "", 215 | "puzzle-outline": "", 216 | "puzzle": "", 217 | "radar-outline": "", 218 | "radar": "", 219 | "refresh-outline": "", 220 | "refresh": "", 221 | "rss-outline": "", 222 | "rss": "", 223 | "scissors-outline": "", 224 | "scissors": "", 225 | "shopping-bag": "", 226 | "shopping-cart": "", 227 | "social-at-circular": "", 228 | "social-dribbble-circular": "", 229 | "social-dribbble": "", 230 | "social-facebook-circular": "", 231 | "social-facebook": "", 232 | "social-flickr-circular": "", 233 | "social-flickr": "", 234 | "social-github-circular": "", 235 | "social-github": "", 236 | "social-google-plus-circular": "", 237 | "social-google-plus": "", 238 | "social-instagram-circular": "", 239 | "social-instagram": "", 240 | "social-last-fm-circular": "", 241 | "social-last-fm": "", 242 | "social-linkedin-circular": "", 243 | "social-linkedin": "", 244 | "social-pinterest-circular": "", 245 | "social-pinterest": "", 246 | "social-skype-outline": "", 247 | "social-skype": "", 248 | "social-tumbler-circular": "", 249 | "social-tumbler": "", 250 | "social-twitter-circular": "", 251 | "social-twitter": "", 252 | "social-vimeo-circular": "", 253 | "social-vimeo": "", 254 | "social-youtube-circular": "", 255 | "social-youtube": "", 256 | "sort-alphabetically-outline": "", 257 | "sort-alphabetically": "", 258 | "sort-numerically-outline": "", 259 | "sort-numerically": "", 260 | "spanner-outline": "", 261 | "spanner": "", 262 | "spiral": "", 263 | "star-full-outline": "", 264 | "star-half-outline": "", 265 | "star-half": "", 266 | "star-outline": "", 267 | "star": "", 268 | "starburst-outline": "", 269 | "starburst": "", 270 | "stopwatch": "", 271 | "support": "", 272 | "tabs-outline": "", 273 | "tag": "", 274 | "tags": "", 275 | "th-large-outline": "", 276 | "th-large": "", 277 | "th-list-outline": "", 278 | "th-list": "", 279 | "th-menu-outline": "", 280 | "th-menu": "", 281 | "th-small-outline": "", 282 | "th-small": "", 283 | "thermometer": "", 284 | "thumbs-down": "", 285 | "thumbs-ok": "", 286 | "thumbs-up": "", 287 | "tick-outline": "", 288 | "tick": "", 289 | "ticket": "", 290 | "time": "", 291 | "times-outline": "", 292 | "times": "", 293 | "trash": "", 294 | "tree": "", 295 | "upload-outline": "", 296 | "upload": "", 297 | "user-add-outline": "", 298 | "user-add": "", 299 | "user-delete-outline": "", 300 | "user-delete": "", 301 | "user-outline": "", 302 | "user": "", 303 | "vendor-android": "", 304 | "vendor-apple": "", 305 | "vendor-microsoft": "", 306 | "video-outline": "", 307 | "video": "", 308 | "volume-down": "", 309 | "volume-mute": "", 310 | "volume-up": "", 311 | "volume": "", 312 | "warning-outline": "", 313 | "warning": "", 314 | "watch": "", 315 | "waves-outline": "", 316 | "waves": "", 317 | "weather-cloudy": "", 318 | "weather-downpour": "", 319 | "weather-night": "", 320 | "weather-partly-sunny": "", 321 | "weather-shower": "", 322 | "weather-snow": "", 323 | "weather-stormy": "", 324 | "weather-sunny": "", 325 | "weather-windy-cloudy": "", 326 | "weather-windy": "", 327 | "wi-fi-outline": "", 328 | "wi-fi": "", 329 | "wine": "", 330 | "world-outline": "", 331 | "world": "", 332 | "zoom-in-outline": "", 333 | "zoom-in": "", 334 | "zoom-out-outline": "", 335 | "zoom-out": "", 336 | "zoom-outline": "", 337 | "zoom": "" 338 | } -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/typicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/assets/typicons.ttf -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/zocial.json: -------------------------------------------------------------------------------- 1 | { 2 | "acrobat": "", 3 | "amazon": "", 4 | "android": "", 5 | "angellist": "", 6 | "aol": "", 7 | "appnet": "", 8 | "appstore": "", 9 | "bitbucket": "", 10 | "bitcoin": "", 11 | "blogger": "", 12 | "buffer": "", 13 | "cal": "", 14 | "call": "", 15 | "cart": "", 16 | "chrome": "", 17 | "cloudapp": "", 18 | "creativecommons": "", 19 | "delicious": "", 20 | "digg": "", 21 | "disqus": "", 22 | "dribbble": "", 23 | "dropbox": "", 24 | "drupal": "", 25 | "dwolla": "", 26 | "email": "", 27 | "eventasaurus": "", 28 | "eventbrite": "", 29 | "eventful": "", 30 | "evernote": "", 31 | "facebook": "", 32 | "fivehundredpx": "", 33 | "flattr": "", 34 | "flickr": "", 35 | "forrst": "", 36 | "foursquare": "", 37 | "github": "", 38 | "gmail": "", 39 | "google": "", 40 | "googleplay": "", 41 | "googleplus": "", 42 | "gowalla": "", 43 | "grooveshark": "", 44 | "guest": "", 45 | "html5": "", 46 | "ie": "", 47 | "instagram": "", 48 | "instapaper": "", 49 | "intensedebate": "", 50 | "itunes": "", 51 | "joinme": "", 52 | "klout": "", 53 | "lanyrd": "", 54 | "lastfm": "", 55 | "lego": "", 56 | "linkedin": "", 57 | "lkdto": "", 58 | "logmein": "", 59 | "macstore": "", 60 | "meetup": "", 61 | "myspace": "", 62 | "ninetyninedesigns": "", 63 | "openid": "", 64 | "opentable": "", 65 | "paypal": "", 66 | "persona": "", 67 | "pinboard": "", 68 | "pinterest": "", 69 | "plancast": "", 70 | "plurk": "", 71 | "pocket": "", 72 | "podcast": "", 73 | "posterous": "", 74 | "print": "", 75 | "quora": "", 76 | "reddit": "", 77 | "rss": "", 78 | "scribd": "", 79 | "skype": "", 80 | "smashing": "", 81 | "songkick": "", 82 | "soundcloud": "", 83 | "spotify": "", 84 | "stackoverflow": "", 85 | "statusnet": "", 86 | "steam": "", 87 | "stripe": "", 88 | "stumbleupon": "", 89 | "tumblr": "", 90 | "twitter": "", 91 | "viadeo": "", 92 | "vimeo": "", 93 | "vk": "", 94 | "weibo": "", 95 | "wikipedia": "", 96 | "windows": "", 97 | "wordpress": "", 98 | "xing": "", 99 | "yahoo": "", 100 | "ycombinator": "", 101 | "yelp": "", 102 | "youtube": "" 103 | } 104 | 105 | -------------------------------------------------------------------------------- /Example/android/app/src/main/assets/zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/assets/zocial.ttf -------------------------------------------------------------------------------- /Example/android/app/src/main/java/com/smixx/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.smixx; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.view.KeyEvent; 6 | 7 | import com.facebook.react.LifecycleState; 8 | import com.facebook.react.ReactInstanceManager; 9 | import com.facebook.react.ReactRootView; 10 | import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; 11 | import com.facebook.react.shell.MainReactPackage; 12 | import com.smixx.reactnativeicons.IconFont; 13 | import com.smixx.reactnativeicons.ReactNativeIcons; 14 | 15 | import java.util.Arrays; 16 | import com.facebook.soloader.SoLoader; 17 | 18 | public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { 19 | 20 | private ReactInstanceManager mReactInstanceManager; 21 | private ReactRootView mReactRootView; 22 | 23 | @Override 24 | protected void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | mReactRootView = new ReactRootView(this); 27 | 28 | mReactInstanceManager = ReactInstanceManager.builder() 29 | .setApplication(getApplication()) 30 | .setBundleAssetName("index.android.bundle") 31 | .setJSMainModuleName("index.android") 32 | .addPackage(new MainReactPackage()) 33 | .addPackage(new ReactNativeIcons(Arrays.asList( 34 | new IconFont("typicons", "typicons.ttf"), 35 | new IconFont("octicons", "octicons.ttf") 36 | ))) 37 | .setUseDeveloperSupport(BuildConfig.DEBUG) 38 | .setInitialLifecycleState(LifecycleState.RESUMED) 39 | .build(); 40 | 41 | mReactRootView.startReactApplication(mReactInstanceManager, "example", null); 42 | 43 | setContentView(mReactRootView); 44 | } 45 | 46 | @Override 47 | public boolean onKeyUp(int keyCode, KeyEvent event) { 48 | if (keyCode == KeyEvent.KEYCODE_MENU && mReactInstanceManager != null) { 49 | mReactInstanceManager.showDevOptionsDialog(); 50 | return true; 51 | } 52 | return super.onKeyUp(keyCode, event); 53 | } 54 | 55 | @Override 56 | public void onBackPressed() { 57 | if (mReactInstanceManager != null) { 58 | mReactInstanceManager.onBackPressed(); 59 | } else { 60 | super.onBackPressed(); 61 | } 62 | } 63 | 64 | @Override 65 | public void invokeDefaultOnBackPressed() { 66 | super.onBackPressed(); 67 | } 68 | 69 | @Override 70 | protected void onPause() { 71 | super.onPause(); 72 | 73 | if (mReactInstanceManager != null) { 74 | mReactInstanceManager.onPause(); 75 | } 76 | } 77 | 78 | @Override 79 | protected void onResume() { 80 | super.onResume(); 81 | 82 | if (mReactInstanceManager != null) { 83 | mReactInstanceManager.onResume(this, this); 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /Example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /Example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /Example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Example/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | example 3 | 4 | -------------------------------------------------------------------------------- /Example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.3.1' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | mavenLocal() 18 | jcenter() 19 | jcenter { 20 | url "http://dl.bintray.com/mkonicek/maven" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | android.useDeprecatedNdk=true 21 | -------------------------------------------------------------------------------- /Example/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/Example/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip 6 | -------------------------------------------------------------------------------- /Example/android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # For Cygwin, ensure paths are in UNIX format before anything is touched. 46 | if $cygwin ; then 47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 48 | fi 49 | 50 | # Attempt to set APP_HOME 51 | # Resolve links: $0 may be a link 52 | PRG="$0" 53 | # Need this for relative symlinks. 54 | while [ -h "$PRG" ] ; do 55 | ls=`ls -ld "$PRG"` 56 | link=`expr "$ls" : '.*-> \(.*\)$'` 57 | if expr "$link" : '/.*' > /dev/null; then 58 | PRG="$link" 59 | else 60 | PRG=`dirname "$PRG"`"/$link" 61 | fi 62 | done 63 | SAVED="`pwd`" 64 | cd "`dirname \"$PRG\"`/" >&- 65 | APP_HOME="`pwd -P`" 66 | cd "$SAVED" >&- 67 | 68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 69 | 70 | # Determine the Java command to use to start the JVM. 71 | if [ -n "$JAVA_HOME" ] ; then 72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 73 | # IBM's JDK on AIX uses strange locations for the executables 74 | JAVACMD="$JAVA_HOME/jre/sh/java" 75 | else 76 | JAVACMD="$JAVA_HOME/bin/java" 77 | fi 78 | if [ ! -x "$JAVACMD" ] ; then 79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 80 | 81 | Please set the JAVA_HOME variable in your environment to match the 82 | location of your Java installation." 83 | fi 84 | else 85 | JAVACMD="java" 86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 87 | 88 | Please set the JAVA_HOME variable in your environment to match the 89 | location of your Java installation." 90 | fi 91 | 92 | # Increase the maximum file descriptors if we can. 93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 94 | MAX_FD_LIMIT=`ulimit -H -n` 95 | if [ $? -eq 0 ] ; then 96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 97 | MAX_FD="$MAX_FD_LIMIT" 98 | fi 99 | ulimit -n $MAX_FD 100 | if [ $? -ne 0 ] ; then 101 | warn "Could not set maximum file descriptor limit: $MAX_FD" 102 | fi 103 | else 104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 105 | fi 106 | fi 107 | 108 | # For Darwin, add options to specify how the application appears in the dock 109 | if $darwin; then 110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 111 | fi 112 | 113 | # For Cygwin, switch paths to Windows format before running java 114 | if $cygwin ; then 115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 158 | function splitJvmOpts() { 159 | JVM_OPTS=("$@") 160 | } 161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 163 | 164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 165 | -------------------------------------------------------------------------------- /Example/android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /Example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'example' 2 | 3 | include ':app' 4 | include ':react-native-icons' 5 | project(':react-native-icons').projectDir = new File(settingsDir, '../../android') 6 | -------------------------------------------------------------------------------- /Example/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 43 | 49 | 50 | 51 | 52 | 53 | 58 | 59 | 60 | 61 | 67 | 68 | 69 | 70 | 79 | 81 | 87 | 88 | 89 | 90 | 91 | 92 | 98 | 100 | 106 | 107 | 108 | 109 | 111 | 112 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /Example/iOS/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (nonatomic, strong) UIWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/iOS/AppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import "AppDelegate.h" 11 | 12 | #import "RCTRootView.h" 13 | 14 | @implementation AppDelegate 15 | 16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 17 | { 18 | NSURL *jsCodeLocation; 19 | 20 | // Loading JavaScript code - uncomment the one you want. 21 | 22 | // OPTION 1 23 | // Load from development server. Start the server from the repository root: 24 | // 25 | // $ npm start 26 | // 27 | // To run on device, change `localhost` to the IP address of your computer, and make sure your computer and 28 | // iOS device are on the same Wi-Fi network. 29 | jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; 30 | 31 | // OPTION 2 32 | // Load from pre-bundled file on disk. To re-generate the static bundle, run 33 | // 34 | // $ curl 'http://localhost:8081/index.ios.bundle?dev=false&minify=true' -o iOS/main.jsbundle 35 | // 36 | // and uncomment the next following line 37 | // jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 38 | 39 | RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation 40 | moduleName:@"example" 41 | initialProperties:nil 42 | launchOptions:launchOptions]; 43 | 44 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 45 | UIViewController *rootViewController = [[UIViewController alloc] init]; 46 | rootViewController.view = rootView; 47 | self.window.rootViewController = rootViewController; 48 | [self.window makeKeyAndVisible]; 49 | return YES; 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Example/iOS/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Example/iOS/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /Example/iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | NSAppTransportSecurity 26 | 27 | NSAllowsArbitraryLoads 28 | 29 | 30 | UILaunchStoryboardName 31 | LaunchScreen 32 | UIRequiredDeviceCapabilities 33 | 34 | armv7 35 | 36 | UISupportedInterfaceOrientations 37 | 38 | UIInterfaceOrientationPortrait 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Example/iOS/main.jsbundle: -------------------------------------------------------------------------------- 1 | // Offline JS 2 | // To re-generate the offline bundle, run this from root of your project 3 | // $ curl 'http://localhost:8081/index.ios.bundle?dev=false&minify=true' -o iOS/main.jsbundle 4 | 5 | throw new Error('Offline JS file is empty. See iOS/main.jsbundle for instructions'); 6 | -------------------------------------------------------------------------------- /Example/iOS/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #import "AppDelegate.h" 13 | 14 | int main(int argc, char * argv[]) { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/index.android.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sample React Native App 3 | * https://github.com/facebook/react-native 4 | */ 5 | 'use strict'; 6 | 7 | var React = require('react-native'); 8 | var { 9 | AppRegistry, 10 | StyleSheet, 11 | Text, 12 | View, 13 | ScrollView, 14 | TouchableHighlight 15 | } = React; 16 | 17 | var { Icon, Spinner } = require('react-native-icons'); 18 | 19 | var BrandColors = { 20 | Facebook: '#3b5998', 21 | Twitter: '#55acee' 22 | }; 23 | 24 | var example = React.createClass({ 25 | render: function () { 26 | return ( 27 | 28 | 29 | 31 | 36 | 37 | 43 | 49 | 53 | 59 | 65 | 66 | 67 | 68 | {'Spinners'} 69 | 70 | 71 | 72 | 73 | 75 | 77 | 79 | 81 | 83 | 84 | 85 | 86 | 92 | 93 | 94 | {'Create social sign in buttons'} 95 | 96 | 98 | 103 | 104 | {'Sign in with Twitter'} 105 | 106 | 107 | 108 | 110 | 115 | 116 | {'Sign in with Facebook'} 117 | 118 | 119 | 120 | 121 | ); 122 | 123 | } 124 | }); 125 | 126 | // 127 | // {'Stacked Icons!'} 128 | // 129 | // 134 | // 139 | // 140 | 141 | var styles = StyleSheet.create({ 142 | container: { 143 | flex: 1, 144 | justifyContent: 'center', 145 | alignItems: 'center', 146 | }, 147 | topContainer: { 148 | flexDirection: 'row', 149 | alignItems: 'center', 150 | justifyContent: 'space-between' 151 | }, 152 | header: { 153 | flexDirection: 'column', 154 | backgroundColor: 'transparent', 155 | fontSize: 18, 156 | marginTop: 20, 157 | marginBottom: 10, 158 | color: '#555555', 159 | }, 160 | beer: { 161 | width: 50, 162 | height: 50, 163 | margin: 5, 164 | color: '#887700' 165 | }, 166 | face: { 167 | width: 50, 168 | height: 50, 169 | margin: 5 170 | }, 171 | facebook: { 172 | width: 50, 173 | height: 50, 174 | margin: 5 175 | }, 176 | lightbulb: { 177 | width: 50, 178 | height: 50, 179 | margin: 5 180 | }, 181 | anchor: { 182 | width: 50, 183 | height: 50, 184 | margin: 5 185 | }, 186 | 187 | alert: { 188 | width: 70, 189 | height: 70, 190 | margin: 10 191 | }, 192 | twitterOutline: { 193 | flexDirection: 'column', 194 | width: 70, 195 | height: 70, 196 | alignItems: 'center' 197 | }, 198 | twitterIcon: { 199 | flex: 1, 200 | width: 40, 201 | height: 40 202 | }, 203 | signInWithTwitterButton: { 204 | backgroundColor: BrandColors.Twitter, 205 | flexDirection: 'row', 206 | alignItems: 'center', 207 | justifyContent: 'flex-start', 208 | width: 210, 209 | padding: 5, 210 | borderRadius: 3 211 | }, 212 | signInWithTwitterIcon: { 213 | width: 28, 214 | height: 28, 215 | marginLeft: 5 216 | }, 217 | signInText: { 218 | color: 'white', 219 | marginLeft: 5, 220 | fontFamily: 'HelveticaNeue-Medium', 221 | fontSize: 15 222 | }, 223 | signInWithFacebookButton: { 224 | backgroundColor: BrandColors.Facebook, 225 | flexDirection: 'row', 226 | alignItems: 'center', 227 | justifyContent: 'flex-start', 228 | width: 210, 229 | padding: 5, 230 | borderRadius: 3, 231 | marginTop: 10 232 | }, 233 | signInWithFacebookIcon: { 234 | width: 28, 235 | height: 28, 236 | marginLeft: 5 237 | } 238 | }); 239 | 240 | AppRegistry.registerComponent('example', () => example); 241 | -------------------------------------------------------------------------------- /Example/index.ios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * React Native app demonstrating react-native-icons 3 | * https://github.com/corymsmith/react-native-icons 4 | */ 5 | 'use strict'; 6 | 7 | var React = require('react-native'); 8 | var { 9 | AppRegistry, 10 | StyleSheet, 11 | Text, 12 | View, 13 | ScrollView, 14 | TouchableHighlight 15 | //Animated 16 | } = React; 17 | 18 | 19 | var BrandColors = { 20 | Facebook: '#3b5998', 21 | Twitter: '#55acee' 22 | }; 23 | 24 | var { Icon, TabBarIOS, Spinner} = require('react-native-icons'); 25 | var TabBarItemIOS = TabBarIOS.Item; 26 | 27 | var Example = React.createClass({ 28 | getInitialState: function () { 29 | return { 30 | selectedTab: 'home', 31 | notifCount: 0, 32 | presses: 0, 33 | //rotation: Animated.Value(0) 34 | }; 35 | }, 36 | render: function () { 37 | return ( 38 | 43 | { 53 | this.setState({ 54 | selectedTab: 'home', 55 | }); 56 | }}> 57 | {this._renderContent()} 58 | 59 | { 67 | this.setState({ 68 | selectedTab: 'articles', 69 | }); 70 | }}> 71 | {this._renderContent()} 72 | 73 | { 81 | this.setState({ 82 | selectedTab: 'messages', 83 | }); 84 | }}> 85 | {this._renderContent()} 86 | 87 | { 95 | this.setState({ 96 | selectedTab: 'settings', 97 | }); 98 | }}> 99 | {this._renderContent()} 100 | 101 | 102 | ); 103 | }, 104 | _renderContent: function () { 105 | return ( 106 | 107 | 108 | alert('Beer!')}> 111 | 117 | 118 | 124 | 130 | 134 | 135 | 136 | 137 | {'Spinners'} 138 | 139 | 140 | 141 | 142 | 144 | 146 | 148 | 150 | 152 | 153 | 154 | 155 | {'Stacked Icons!'} 156 | 157 | 162 | 167 | 168 | 169 | 175 | 176 | 177 | {'Create social sign in buttons'} 178 | 179 | 181 | 186 | 187 | {'Sign in with Twitter'} 188 | 189 | 190 | 191 | 193 | 198 | 199 | {'Sign in with Facebook'} 200 | 201 | 202 | 203 | 204 | ); 205 | } 206 | }); 207 | 208 | 209 | var styles = StyleSheet.create({ 210 | tabBar: { 211 | backgroundColor: '#dfdfdf', 212 | flex: 1, 213 | color: '#ff0000', 214 | tintColor: '#877324' 215 | }, 216 | container: { 217 | flex: 1, 218 | alignItems: 'center', 219 | justifyContent: 'center', 220 | }, 221 | topContainer: { 222 | flexDirection: 'row', 223 | alignItems: 'center', 224 | justifyContent: 'space-between' 225 | }, 226 | header: { 227 | flexDirection: 'column', 228 | backgroundColor: 'transparent', 229 | fontSize: 18, 230 | marginTop: 20, 231 | marginBottom: 10, 232 | color: '#555555', 233 | }, 234 | beer: { 235 | width: 70, 236 | height: 70, 237 | margin: 10 238 | }, 239 | github: { 240 | width: 70, 241 | height: 70, 242 | margin: 10 243 | }, 244 | facebook: { 245 | width: 70, 246 | height: 70, 247 | margin: 10 248 | }, 249 | lightbulb: { 250 | width: 70, 251 | height: 70, 252 | margin: 10 253 | }, 254 | alert: { 255 | width: 70, 256 | height: 70, 257 | margin: 10 258 | }, 259 | twitterOutline: { 260 | flexDirection: 'column', 261 | width: 70, 262 | height: 70, 263 | alignItems: 'center' 264 | }, 265 | twitterIcon: { 266 | flex: 1, 267 | width: 40, 268 | height: 40 269 | }, 270 | signInWithTwitterButton: { 271 | backgroundColor: BrandColors.Twitter, 272 | flexDirection: 'row', 273 | alignItems: 'center', 274 | justifyContent: 'flex-start', 275 | width: 210, 276 | padding: 5, 277 | borderRadius: 3 278 | }, 279 | signInWithTwitterIcon: { 280 | width: 28, 281 | height: 28, 282 | marginLeft: 5 283 | }, 284 | signInText: { 285 | color: 'white', 286 | marginLeft: 5, 287 | fontFamily: 'HelveticaNeue-Medium', 288 | fontSize: 15 289 | }, 290 | signInWithFacebookButton: { 291 | backgroundColor: BrandColors.Facebook, 292 | flexDirection: 'row', 293 | alignItems: 'center', 294 | justifyContent: 'flex-start', 295 | width: 210, 296 | padding: 5, 297 | borderRadius: 3, 298 | marginTop: 10 299 | }, 300 | signInWithFacebookIcon: { 301 | width: 28, 302 | height: 28, 303 | marginLeft: 5 304 | } 305 | }); 306 | 307 | AppRegistry.registerComponent('example', () => Example); 308 | -------------------------------------------------------------------------------- /Example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node_modules/react-native/packager/packager.sh" 7 | }, 8 | "dependencies": { 9 | "react-native": ">= 0.11.x || 0.12.0-rc || 0.13.x || 0.13.0-rc || 0.14.x || 0.14.0-rc || 0.15.0-rc || 0.15.x || 0.16.0", 10 | "react-native-icons" : "file:../" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Cory Smith 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## WARNING: This library is discontinued, I highly recommend using https://github.com/oblador/react-native-vector-icons 2 | 3 | There's far bigger problems to solve in the open source and React Native communities than competing icon libraries so I'll be focusing on pushing forward other initiatives. 4 | 5 | ## React Native Icons 6 | 7 | [![npm version](https://badge.fury.io/js/react-native-icons@2x.png)](http://badge.fury.io/js/react-native-icons) 8 | 9 | Includes **5** different icon fonts and **2,444** icons. 10 | 11 | ## Installation 12 | 13 | ```bash 14 | npm install react-native-icons@latest --save 15 | ``` 16 | 17 | If you need to support React Native version **< 0.12.0-rc** use: 18 | 19 | ```bash 20 | npm install react-native-icons@0.4.0 --save 21 | ``` 22 | 23 | Note that 0.4.0 does not support Android. 24 | 25 | ## Getting started - iOS 26 | 27 | 1. In XCode, in the project navigator right click `Libraries` ➜ `Add Files to [your project's name]` 28 | 2. Go to `node_modules` ➜ `react-native-icons`➜ `ios` and add `ReactNativeIcons.xcodeproj` 29 | 3. Add `libReactNativeIcons.a` (from 'Products' under ReactNativeIcons.xcodeproj) to [your project's](http://www.runscriptbuildphase.com/images/Xcode_6_01.png) `Build Phases` ➜ `Link Binary With Libraries` phase 30 | 4. Add the font files you want to use into the `Copy Bundle Resources` build phase of your project (click the '+' and click 'Add Other...' then choose the font files from `node_modules/react-native-icons/ios/ReactNativeIcons/Libraries/FontAwesomeKit`). 31 | 5. Run your project (`Cmd+R`) 32 | 33 | 34 | ## Getting started - Android 35 | 36 | * In `android/setting.gradle` 37 | 38 | ```gradle 39 | ... 40 | include ':react-native-icons' 41 | project(':react-native-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-icons/android') 42 | ``` 43 | 44 | * In `android/app/build.gradle` 45 | 46 | ```gradle 47 | ... 48 | dependencies { 49 | ... 50 | compile project(':react-native-icons') 51 | } 52 | ``` 53 | 54 | * register module (in MainActivity.java) 55 | 56 | ```java 57 | import com.smixx.reactnativeicons.ReactNativeIcons; // <--- import 58 | import java.util.Arrays; // <--- import this if you want to specify which fonts to load 59 | import com.smixx.reactnativeicons.IconFont; // <--- import this if you want to specify which fonts to load 60 | 61 | public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { 62 | ...... 63 | 64 | @Override 65 | protected void onCreate(Bundle savedInstanceState) { 66 | super.onCreate(savedInstanceState); 67 | mReactRootView = new ReactRootView(this); 68 | 69 | mReactInstanceManager = ReactInstanceManager.builder() 70 | .setApplication(getApplication()) 71 | .setBundleAssetName("index.android.bundle") 72 | .setJSMainModuleName("index.android") 73 | .addPackage(new MainReactPackage()) 74 | .addPackage(new ReactNativeIcons()) // <------ add here 75 | .setUseDeveloperSupport(BuildConfig.DEBUG) 76 | .setInitialLifecycleState(LifecycleState.RESUMED) 77 | .build(); 78 | 79 | mReactRootView.startReactApplication(mReactInstanceManager, "example", null); 80 | 81 | setContentView(mReactRootView); 82 | } 83 | 84 | ...... 85 | 86 | } 87 | ``` 88 | 89 | * Copy the font files and .json files for the fonts you want to use into `android/app/src/main/assets` from `node_modules/react-native-icons/fonts` 90 | 91 | ## Not supported on Android yet: 92 | - Tab Bar 93 | - Stacked Icons 94 | 95 | ### Custom fonts 96 | 97 | ## iOS 98 | 99 | Custom fonts are not yet supported for iOS 100 | 101 | ## Android 102 | ### 1. Copy the font file to your apps assets directory 103 | ### 2. Create a myfontname.json mapping file for the font, this is used to look up the mapping file and is used 104 | Create json file (newiconfont.json) that contains a map of css names to HTML encoded unicode characters., examples in /fonts directory 105 | ```js 106 | { 107 | "alert": "", 108 | "alert-circled": "", 109 | "android-add": "", 110 | "android-add-circle": "", 111 | ... 112 | } 113 | ``` 114 | ### 3. Include fonts 115 | 116 | 2. Copy font file and .json file to your apps assets directory 117 | 3.) In MainActivity.java, add the icon font, first parameter is the prefix you want to use (ex. typicons|globe), second is the filename of the font. 118 | 119 | ```java 120 | mReactInstanceManager = ReactInstanceManager.builder() 121 | .setApplication(getApplication()) 122 | .setBundleAssetName("index.android.bundle") 123 | .setJSMainModuleName("index.android") 124 | .addPackage(new MainReactPackage()) 125 | .addPackage(new ReactNativeIcons(Arrays.asList( 126 | new IconFont("typicons", "typicons.ttf") 127 | ))) 128 | .setUseDeveloperSupport(BuildConfig.DEBUG) 129 | .setInitialLifecycleState(LifecycleState.RESUMED) 130 | .build(); 131 | 132 | ``` 133 | 134 | 135 | ## Notes 136 | 137 | - You only need to include the icon font files you want to use 138 | - Icon style must set a width and height, or the icon will not be visible 139 | - You may need to restart your node server for the icon font files to be included. 140 | - An icon has a name, size, and a color (optional) 141 | - Color can be provide via the color property or via a style 142 | 143 | ## Example of icons 144 | 145 | ```js 146 | var { Icon, } = require('react-native-icons'); 147 | 148 | 149 | 155 | 161 | 167 | 173 | 174 | 180 | 181 | ``` 182 | 183 | ## Stacked icons 184 | 185 | ```js 186 | 191 | 196 | 197 | ``` 198 | 199 | With the following styles to center them: 200 | 201 | ```js 202 | var styles = StyleSheet.create({ 203 | twitterOutline: { 204 | flexDirection: 'column', 205 | width: 70, 206 | height: 70, 207 | alignItems: 'center' 208 | }, 209 | twitterIcon: { 210 | flex: 1, 211 | width: 40, 212 | height: 40 213 | }, 214 | }); 215 | ``` 216 | 217 | ## Custom tab bar 218 | 219 | ```js 220 | 221 | var { TabBarIOS, } = require('react-native-icons'); 222 | var TabBarItemIOS = TabBarIOS.Item; 223 | 224 | var Example = React.createClass({ 225 | getInitialState: function() { 226 | return { 227 | selectedTab: 'home', 228 | notifCount: 0, 229 | presses: 0, 230 | }; 231 | }, 232 | render: function () { 233 | return ( 234 | 239 | { 248 | this.setState({ 249 | selectedTab: 'home', 250 | }); 251 | }}> 252 | {this._renderContent()} 253 | 254 | { 263 | this.setState({ 264 | selectedTab: 'articles', 265 | }); 266 | }}> 267 | {this._renderContent()} 268 | 269 | { 277 | this.setState({ 278 | selectedTab: 'messages', 279 | }); 280 | }}> 281 | {this._renderContent()} 282 | 283 | { 292 | this.setState({ 293 | selectedTab: 'settings', 294 | }); 295 | }}> 296 | {this._renderContent()} 297 | 298 | 299 | ); 300 | } 301 | }); 302 | ``` 303 | 304 | **Note:** `selectedIconName` is optional. It defaults to `iconName` if not set. Also, there's another optional property named `selectedIconSize`, if you need to change the icon size when the tab is selected. 305 | 306 | 307 | # Included icon fonts 308 | - [FontAwesome 4.4](http://fortawesome.github.io/Font-Awesome/) Contains **585** icons 309 | - [ionicons 2.0.0](http://ionicons.com/) Contains **733** icons, lots of iOS 7 style outlined icons. 310 | - [Foundation icons](http://zurb.com/playground/foundation-icon-fonts-3) Contains **283** icons. 311 | - [Zocial](http://zocial.smcllns.com/) Contains **99** social icons. 312 | - [Material design icons](http://zavoloklom.github.io/material-design-iconic-font/icons.html) Contains **777** icons. [View the Cheatsheet](http://zavoloklom.github.io/material-design-iconic-font/cheatsheet.html) 313 | 314 | ![Screenshot](https://dl.dropboxusercontent.com/u/6721696/stacked-demo.png) 315 | -------------------------------------------------------------------------------- /SMXIconImage.android.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @providesModule SMXIconImage 4 | * @flow 5 | */ 6 | 'use strict'; 7 | 8 | var React = require('react-native'); 9 | var { StyleSheet, View, requireNativeComponent, processColor} = React; 10 | var shimAssert = require('./shim-assert'); 11 | 12 | var ICON_REF = 'icon'; 13 | 14 | class IconImage extends React.Component { 15 | 16 | setNativeProps(props:Object) { 17 | this.refs[ICON_REF].setNativeProps(props); 18 | } 19 | 20 | render() { 21 | var style = [styles.base, this.props.style]; 22 | shimAssert.basic( style, 'style must be initialized'); 23 | 24 | var name = this.props.name; 25 | shimAssert.basic( name, 'name must be initialized'); 26 | 27 | var size = this.props.size; 28 | shimAssert.basic( size, 'size must be initialized'); 29 | 30 | if(name.indexOf('|') == -1) { 31 | throw Error('icon name "' + name + '" doesn\'t specify a font name prefix. ex. "ion|beer"'); 32 | } 33 | 34 | var color = this.props.color; 35 | 36 | var nativeProps = Object.assign({},this.props); 37 | if(!color && style.color) { 38 | nativeProps.color = processColor(style.color); 39 | } 40 | nativeProps.style = style; 41 | 42 | return ; 43 | } 44 | } 45 | 46 | var styles = StyleSheet.create({ 47 | base: { 48 | overflow: 'hidden' 49 | } 50 | }); 51 | IconImage.propTypes = { 52 | name: React.PropTypes.string, 53 | color: React.PropTypes.string, 54 | size: React.PropTypes.number, 55 | scaleX: React.PropTypes.number, 56 | scaleY: React.PropTypes.number, 57 | translateX: React.PropTypes.number, 58 | translateY: React.PropTypes.number, 59 | rotation: React.PropTypes.number, 60 | renderToHardwareTextureAndroid: React.PropTypes.bool, 61 | onLayout: React.PropTypes.bool, 62 | accessibilityLiveRegion: React.PropTypes.string, 63 | accessibilityComponentType: React.PropTypes.string, 64 | importantForAccessibility: React.PropTypes.string, 65 | accessibilityLabel: React.PropTypes.string, 66 | testID: React.PropTypes.string, 67 | }; 68 | 69 | var RCTMyCustomView = requireNativeComponent('SMXIconImage', IconImage); 70 | module.exports = IconImage; 71 | -------------------------------------------------------------------------------- /SMXIconImage.ios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @providesModule SMXIconImage 4 | * @flow 5 | */ 6 | 'use strict'; 7 | 8 | var React = require('react-native'); 9 | var { StyleSheet, View, requireNativeComponent, processColor } = React; 10 | var shimAssert = require('./shim-assert'); 11 | 12 | var ICON_REF = 'icon'; 13 | 14 | var SMXIconImage = React.createClass({ 15 | propTypes: { 16 | name: React.PropTypes.string, 17 | size: React.PropTypes.number, 18 | color: React.PropTypes.string, 19 | 20 | /** 21 | * accessible - Whether this element should be revealed as an accessible 22 | * element. 23 | */ 24 | accessible: React.PropTypes.bool, 25 | /** 26 | * accessibilityLabel - Custom string to display for accessibility. 27 | */ 28 | accessibilityLabel: React.PropTypes.string, 29 | 30 | /** 31 | * testID - A unique identifier for this element to be used in UI Automation 32 | * testing scripts. 33 | */ 34 | testID: React.PropTypes.string, 35 | icon: React.PropTypes.object 36 | }, 37 | 38 | setNativeProps(props:Object) { 39 | this.refs[ICON_REF].setNativeProps(props); 40 | }, 41 | 42 | render: function () { 43 | var style = [styles.base, this.props.style]; 44 | shimAssert.basic( style, 'style must be initialized'); 45 | 46 | var name = this.props.name; 47 | shimAssert.basic( name, 'name must be initialized'); 48 | 49 | var size = this.props.size; 50 | shimAssert.basic( size, 'size must be initialized'); 51 | 52 | if(name.indexOf('|') == -1) { 53 | throw Error('icon name "' + name + '" doesn\'t specify a font prefix. ex. "ion|beer"'); 54 | } 55 | 56 | var color = this.props.color; 57 | 58 | var nativeProps = Object.assign({},this.props); 59 | 60 | if(!color && style.color) { 61 | color = style.color; 62 | } 63 | 64 | nativeProps.style = style; 65 | nativeProps.icon = { 66 | name: name, 67 | size: size, 68 | color: processColor(color) 69 | }; 70 | 71 | return ; 72 | } 73 | }); 74 | 75 | var styles = StyleSheet.create({ 76 | base: { 77 | overflow: 'hidden' 78 | } 79 | }); 80 | 81 | var SMXIconImageView = requireNativeComponent('FAKIconImage', SMXIconImage); 82 | 83 | module.exports = SMXIconImage; 84 | -------------------------------------------------------------------------------- /SMXLoadingImage.android.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @providesModule SMXLoadingImage 4 | * @flow 5 | */ 6 | 'use strict'; 7 | 8 | var React = require('react-native'); 9 | var { StyleSheet, requireNativeComponent, Animated, Easing, processColor } = React; 10 | 11 | var shimAssert = require('./shim-assert'); 12 | 13 | class LoadingImage extends React.Component { 14 | 15 | constructor() { 16 | super(); 17 | this._animate = this._animate.bind(this); 18 | this.state = { 19 | angle: new Animated.Value(0) 20 | }; 21 | } 22 | 23 | setNativeProps(props:Object) { 24 | 25 | } 26 | 27 | _animate() { 28 | this.state.angle.setValue(0); 29 | Animated.timing(this.state.angle, { 30 | toValue: 360, 31 | duration: 1200, 32 | easing: Easing.linear 33 | }).start(this._animate); 34 | } 35 | 36 | componentDidMount() { 37 | this._animate(); 38 | } 39 | 40 | render() { 41 | var transformStyle = { 42 | transform: [ 43 | { 44 | rotate: this.state.angle.interpolate({ 45 | inputRange: [0, 360], 46 | outputRange: ['0deg', '360deg'] 47 | }) 48 | } 49 | ] 50 | }; 51 | 52 | var style = [styles.base, this.props.style]; 53 | 54 | shimAssert.basic(style, 'style must be initialized'); 55 | 56 | var name = this.props.name; 57 | shimAssert.basic(name, 'name must be initialized'); 58 | 59 | var size = this.props.size; 60 | shimAssert.basic(size, 'size must be initialized'); 61 | 62 | var color = this.props.color; 63 | 64 | var nativeProps = Object.assign({}, this.props); 65 | nativeProps.icon = { 66 | name: name, 67 | size: size, 68 | color: processColor(color) 69 | }; 70 | 71 | return 72 | 73 | ; 74 | } 75 | } 76 | 77 | var styles = StyleSheet.create({ 78 | base: { 79 | overflow: 'hidden' 80 | } 81 | }); 82 | 83 | LoadingImage.propTypes = { 84 | name: React.PropTypes.string, 85 | color: React.PropTypes.string, 86 | size: React.PropTypes.number, 87 | scaleX: React.PropTypes.number, 88 | scaleY: React.PropTypes.number, 89 | translateX: React.PropTypes.number, 90 | translateY: React.PropTypes.number, 91 | rotation: React.PropTypes.number, 92 | renderToHardwareTextureAndroid: React.PropTypes.bool, 93 | onLayout: React.PropTypes.bool, 94 | accessibilityLiveRegion: React.PropTypes.string, 95 | accessibilityComponentType: React.PropTypes.string, 96 | importantForAccessibility: React.PropTypes.string, 97 | accessibilityLabel: React.PropTypes.string, 98 | testID: React.PropTypes.string, 99 | }; 100 | 101 | var SMXLoadingImageView = requireNativeComponent('SMXIconImage', LoadingImage); 102 | 103 | module.exports = LoadingImage; 104 | -------------------------------------------------------------------------------- /SMXLoadingImage.ios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @providesModule SMXLoadingImage 4 | * @flow 5 | */ 6 | 'use strict'; 7 | 8 | var React = require('react-native'); 9 | var { StyleSheet, View, requireNativeComponent, Animated, Easing, processColor } = React; 10 | 11 | var shimAssert = require('./shim-assert'); 12 | 13 | var SMXLoadingImage = React.createClass({ 14 | propTypes: { 15 | name: React.PropTypes.string, 16 | size: React.PropTypes.number, 17 | color: React.PropTypes.string, 18 | 19 | /** 20 | * accessible - Whether this element should be revealed as an accessible 21 | * element. 22 | */ 23 | accessible: React.PropTypes.bool, 24 | /** 25 | * accessibilityLabel - Custom string to display for accessibility. 26 | */ 27 | accessibilityLabel: React.PropTypes.string, 28 | 29 | /** 30 | * testID - A unique identifier for this element to be used in UI Automation 31 | * testing scripts. 32 | */ 33 | testID: React.PropTypes.string, 34 | icon: React.PropTypes.object 35 | }, 36 | 37 | getInitialState: function () { 38 | return { 39 | angle: new Animated.Value(0) 40 | }; 41 | }, 42 | 43 | setNativeProps(props:Object) { 44 | 45 | }, 46 | 47 | _animate: function () { 48 | this.state.angle.setValue(0); 49 | Animated.timing(this.state.angle, { 50 | toValue: 360, 51 | duration: 1200, 52 | easing: Easing.linear 53 | }).start(this._animate); 54 | }, 55 | 56 | componentDidMount: function () { 57 | this._animate(); 58 | }, 59 | 60 | render: function ():ReactElement { 61 | var transformStyle = { 62 | transform: [ 63 | { 64 | rotate: this.state.angle.interpolate({ 65 | inputRange: [0, 360], 66 | outputRange: ['0deg', '360deg'] 67 | }) 68 | } 69 | ] 70 | }; 71 | 72 | var style = [styles.base, this.props.style]; 73 | 74 | shimAssert.basic(style, 'style must be initialized'); 75 | 76 | var name = this.props.name; 77 | shimAssert.basic(name, 'name must be initialized'); 78 | 79 | var size = this.props.size; 80 | shimAssert.basic(size, 'size must be initialized'); 81 | 82 | var color = this.props.color; 83 | 84 | var nativeProps = Object.assign({},this.props); 85 | nativeProps.icon = { 86 | name: name, 87 | size: size, 88 | color: processColor(color) 89 | }; 90 | 91 | return 92 | 93 | ; 94 | } 95 | }); 96 | 97 | 98 | var styles = StyleSheet.create({ 99 | base: { 100 | overflow: 'hidden' 101 | } 102 | }); 103 | var SMXLoadingImageView = requireNativeComponent('FAKIconImage', SMXLoadingImage); 104 | 105 | module.exports = SMXLoadingImage; 106 | -------------------------------------------------------------------------------- /SMXTabBarIOS.android.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @providesModule SMXTabBarIOS 4 | */ 5 | 6 | 'use strict'; 7 | 8 | var React = require('react-native'); 9 | var { StyleSheet, View, Dimensions} = React; 10 | 11 | var DummyTabBarIOS = React.createClass({ 12 | render: function() { 13 | return ( 14 | 15 | {this.props.children} 16 | 17 | ); 18 | } 19 | }); 20 | 21 | var styles = StyleSheet.create({ 22 | tabGroup: { 23 | flex: 1, 24 | } 25 | }); 26 | 27 | module.exports = DummyTabBarIOS; 28 | -------------------------------------------------------------------------------- /SMXTabBarIOS.ios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @providesModule SMXTabBarIOS 4 | * @flow 5 | */ 6 | 'use strict'; 7 | 8 | var React = require('react-native'); 9 | var { StyleSheet, requireNativeComponent, PropTypes, processColor } = React; 10 | var SMXTabBarIconItemIOS = require('./SMXTabBarIconItemIOS.ios.js'); 11 | 12 | var SMXTabBarIOS = React.createClass({ 13 | propTypes: { 14 | tintColor: PropTypes.string, 15 | barTintColor: PropTypes.string, 16 | translucent: PropTypes.bool, 17 | }, 18 | 19 | statics: { 20 | Item: SMXTabBarIconItemIOS, 21 | }, 22 | 23 | render: function () { 24 | var nativeProps = { 25 | tintColor : this.props.tintColor, 26 | barTintColor : this.props.barTintColor, 27 | translucent : this.props.translucent 28 | }; 29 | 30 | return ( 31 | 32 | {this.props.children} 33 | 34 | ); 35 | } 36 | }); 37 | 38 | var styles = StyleSheet.create({ 39 | tabGroup: { 40 | flex: 1 41 | } 42 | }); 43 | 44 | var SMXIconTabBar = requireNativeComponent('SMXTabBar', SMXTabBarIOS); 45 | 46 | module.exports = SMXTabBarIOS; 47 | -------------------------------------------------------------------------------- /SMXTabBarIconItemIOS.android.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @providesModule SMXTabBarItemIOS 4 | */ 5 | 6 | 'use strict'; 7 | 8 | var React = require('react-native'); 9 | var { StyleSheet, View, Dimensions} = React; 10 | 11 | var DummyTab = React.createClass({ 12 | render: function() { 13 | if (!this.props.selected) { 14 | return ; 15 | } 16 | return ( 17 | 18 | {this.props.children} 19 | 20 | ); 21 | } 22 | }); 23 | 24 | var styles = StyleSheet.create({ 25 | tab: { 26 | // TODO(5405356): Implement overflow: visible so position: absolute isn't useless 27 | // position: 'absolute', 28 | width: Dimensions.get('window').width, 29 | height: Dimensions.get('window').height, 30 | borderColor: 'red', 31 | borderWidth: 1, 32 | } 33 | }); 34 | 35 | module.exports = DummyTab; 36 | -------------------------------------------------------------------------------- /SMXTabBarIconItemIOS.ios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @providesModule SMXTabBarItemIOS 4 | * @flow 5 | */ 6 | 'use strict'; 7 | 8 | var React = require('react-native'); 9 | var { Image, StyleSheet, View, requireNativeComponent, PropTypes, Dimensions} = React; 10 | 11 | var onlyChild = React.Children.only; 12 | 13 | // Copy this right in here from react-contrib 14 | class StaticContainer extends React.Component { 15 | 16 | shouldComponentUpdate(nextProps) { 17 | return !!nextProps.shouldUpdate; 18 | } 19 | 20 | render() { 21 | var child = this.props.children; 22 | return (child === null || child === false) ? null : onlyChild(child); 23 | } 24 | 25 | } 26 | 27 | var SmixxTabBarItemIOS = React.createClass({ 28 | propTypes: { 29 | onPress: PropTypes.func.isRequired, 30 | selected: PropTypes.bool.isRequired, 31 | badgeValue: PropTypes.string, 32 | title: PropTypes.string, 33 | icon: PropTypes.object, 34 | selectedIcon: PropTypes.object, 35 | }, 36 | 37 | getInitialState: function() { 38 | return { 39 | hasBeenSelected: false, 40 | }; 41 | }, 42 | 43 | componentWillMount: function() { 44 | if (this.props.selected) { 45 | this.setState({hasBeenSelected: true}); 46 | } 47 | }, 48 | 49 | componentWillReceiveProps: function(nextProps: { selected: boolean }) { 50 | if (this.state.hasBeenSelected || nextProps.selected) { 51 | this.setState({hasBeenSelected: true}); 52 | } 53 | }, 54 | 55 | render: function() { 56 | var tabContents = null; 57 | // if the tab has already been shown once, always continue to show it so we 58 | // preserve state between tab transitions 59 | if (this.state.hasBeenSelected) { 60 | tabContents = ( 61 | 62 | {this.props.children} 63 | 64 | ); 65 | } else { 66 | tabContents = ; 67 | } 68 | 69 | var iconName = this.props.iconName; 70 | var iconSize = this.props.iconSize || 28; 71 | 72 | // defaults selectedIconName to iconName, selectedIconSize to iconSize 73 | var selectedIconName = this.props.selectedIconName || this.props.iconName; 74 | var selectedIconSize = this.props.selectedIconSize || this.props.iconSize; 75 | 76 | 77 | if(iconName.indexOf('|') == -1) { 78 | throw Error('iconName "' + iconName + '" doesn\'t specify a font name prefix. ex. "ion|beer"'); 79 | } 80 | 81 | if(selectedIconName.indexOf('|') == -1) { 82 | throw Error('selectedIconName "' + selectedIconName + '" doesn\'t specify a font name prefix. ex. "ion|beer"'); 83 | } 84 | 85 | var icon = {name : iconName, size: iconSize}; 86 | var selectedIcon = {name: selectedIconName, size: selectedIconSize}; 87 | 88 | return ( 89 | 97 | {tabContents} 98 | 99 | ); 100 | } 101 | }); 102 | 103 | var styles = StyleSheet.create({ 104 | tab: { 105 | position: 'absolute', 106 | top: 0, 107 | right: 0, 108 | bottom: 0, 109 | left: 0, 110 | } 111 | }); 112 | 113 | var SmixxTabBarItem = requireNativeComponent('SMXTabBarItem', SmixxTabBarItemIOS); 114 | module.exports = SmixxTabBarItemIOS; 115 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | } 5 | 6 | dependencies { 7 | classpath 'com.android.tools.build:gradle:1.1.3' 8 | } 9 | } 10 | 11 | apply plugin: 'com.android.library' 12 | 13 | android { 14 | compileSdkVersion 23 15 | buildToolsVersion "23.0.1" 16 | 17 | defaultConfig { 18 | minSdkVersion 16 19 | targetSdkVersion 23 20 | versionCode 1 21 | versionName "1.0" 22 | } 23 | lintOptions { 24 | abortOnError false 25 | } 26 | } 27 | 28 | repositories { 29 | mavenCentral() 30 | } 31 | 32 | dependencies { 33 | compile 'com.facebook.react:react-native:0.16.+' 34 | } -------------------------------------------------------------------------------- /android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/src/main/java/com/smixx/reactnativeicons/IconFont.java: -------------------------------------------------------------------------------- 1 | package com.smixx.reactnativeicons; 2 | 3 | import android.content.Context; 4 | import android.graphics.Typeface; 5 | import android.text.Html; 6 | import android.text.Spanned; 7 | import android.text.SpannedString; 8 | import android.util.Log; 9 | 10 | import org.json.JSONException; 11 | import org.json.JSONObject; 12 | 13 | import java.io.FileNotFoundException; 14 | import java.io.InputStream; 15 | 16 | public class IconFont { 17 | private static final String TAG = "IconFont"; 18 | private final String mPrefix; 19 | private final String mFileName; 20 | private JSONObject mCharacterMap = null; 21 | 22 | public IconFont(String prefix, String fileName) { 23 | mPrefix = prefix; 24 | mFileName = fileName; 25 | } 26 | 27 | private JSONObject getCharacterMap(Context context) { 28 | if(mCharacterMap == null) { 29 | String contents = ""; 30 | try { 31 | InputStream stream = context.getAssets().open(mPrefix + ".json"); 32 | int size = stream.available(); 33 | byte[] buffer = new byte[size]; 34 | stream.read(buffer); 35 | stream.close(); 36 | contents = new String(buffer); 37 | mCharacterMap = new JSONObject(contents); 38 | return mCharacterMap; 39 | } catch (Exception e) { 40 | 41 | mCharacterMap = new JSONObject(); 42 | if(e instanceof FileNotFoundException) { 43 | Log.e(TAG, e.toString()); 44 | } 45 | 46 | if(e instanceof JSONException) { 47 | Log.e(TAG, e.toString()); 48 | } 49 | e.printStackTrace(); 50 | } 51 | 52 | } 53 | return mCharacterMap; 54 | } 55 | 56 | public String getPrefix() { 57 | return mPrefix; 58 | } 59 | 60 | public String getFileName() { 61 | return mFileName; 62 | } 63 | 64 | 65 | public Spanned getCharCodeForIconName(Context context, String iconName) { 66 | String character = null; 67 | try { 68 | character = getCharacterMap(context).get(iconName).toString(); 69 | return Html.fromHtml(character); 70 | } catch (Exception e) { 71 | Log.e(TAG, "No icon named '" + iconName + "' is found in font '" + getPrefix() + "'"); 72 | e.printStackTrace(); 73 | } 74 | 75 | return new SpannedString(""); 76 | } 77 | 78 | public Typeface getTypeFaceForFont(Context context, IconFont font) { 79 | if (font.getFileName() != null) { 80 | try { 81 | Typeface typeface = Typeface.createFromAsset(context.getAssets(), font.getFileName()); 82 | return typeface; 83 | } catch (Exception ex) { 84 | Log.e(TAG, "Error: " + ex.toString()); 85 | } 86 | } 87 | Log.e(TAG, "Error loading font file " + font.getFileName() + " from assets"); 88 | return null; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /android/src/main/java/com/smixx/reactnativeicons/IconManager.java: -------------------------------------------------------------------------------- 1 | package com.smixx.reactnativeicons; 2 | 3 | import android.content.Context; 4 | import android.graphics.Typeface; 5 | import android.util.Log; 6 | import android.view.Gravity; 7 | 8 | import com.facebook.react.uimanager.ReactProp; 9 | import com.facebook.react.uimanager.SimpleViewManager; 10 | import com.facebook.react.uimanager.ThemedReactContext; 11 | import com.facebook.react.views.text.ReactTextView; 12 | 13 | import java.io.IOException; 14 | import java.util.HashMap; 15 | import java.util.List; 16 | import java.util.Map; 17 | 18 | import javax.annotation.Nullable; 19 | 20 | public class IconManager extends SimpleViewManager { 21 | 22 | private static final Map sTypefaceCache = new HashMap(); 23 | public static final String REACT_CLASS = "SMXIconImage"; 24 | private static final String TAG = "IconManager"; 25 | private HashMap mAllIconFonts = new HashMap(); 26 | 27 | @Override 28 | public String getName() { 29 | return REACT_CLASS; 30 | } 31 | 32 | @ReactProp(name = "color", customType = "Color") 33 | public void setColor(ReactTextView view, @Nullable Integer color) { 34 | if (color != null) { 35 | view.setTextColor(color); 36 | } 37 | } 38 | 39 | @ReactProp(name = "size") 40 | public void setSize(ReactTextView view, @Nullable Integer size) { 41 | if (size != null) { 42 | view.setTextSize(size); 43 | } 44 | } 45 | 46 | @ReactProp(name = "name") 47 | public void setName(ReactTextView view, @Nullable String name) { 48 | if (name == null) { 49 | Log.d(TAG, "name was null"); 50 | } else { 51 | String[] parts = name.split("\\|"); 52 | String fontName = parts[0]; 53 | String iconName = parts[1]; 54 | 55 | IconFont font = mAllIconFonts.get(fontName); 56 | 57 | if (font != null) { 58 | Typeface typeface; 59 | if (sTypefaceCache.get(fontName) == null) { 60 | Log.d(TAG, fontName + " not in cache"); 61 | typeface = font.getTypeFaceForFont(view.getContext(), font); 62 | } else { 63 | Log.d(TAG, fontName + " from cache"); 64 | typeface = sTypefaceCache.get(fontName); 65 | } 66 | if (typeface != null) { 67 | sTypefaceCache.put(fontName, typeface); 68 | view.setTypeface(typeface); 69 | view.setText(font.getCharCodeForIconName(view.getContext(), iconName)); 70 | } 71 | } 72 | } 73 | } 74 | 75 | public IconManager(List allIconFonts) { 76 | for (IconFont font : allIconFonts) { 77 | mAllIconFonts.put(font.getPrefix(), font); 78 | } 79 | } 80 | 81 | @Override 82 | public ReactTextView createViewInstance(ThemedReactContext context) { 83 | //logAssets(context); 84 | 85 | ReactTextView textView = new ReactTextView( 86 | context); 87 | textView.setGravity(Gravity.CENTER); 88 | return textView; 89 | } 90 | 91 | private void logAssets(Context context) { 92 | Log.d(TAG, "createViewInstance: assets"); 93 | Log.d(TAG, "----------------------------"); 94 | try { 95 | String[] list = context.getAssets().list(""); 96 | for (String str : list) { 97 | Log.d(TAG, str); 98 | } 99 | Log.d(TAG, "---- END ASSETS"); 100 | } catch (IOException e) { 101 | e.printStackTrace(); 102 | } 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /android/src/main/java/com/smixx/reactnativeicons/ReactNativeIcons.java: -------------------------------------------------------------------------------- 1 | package com.smixx.reactnativeicons; 2 | 3 | import com.facebook.react.ReactPackage; 4 | import com.facebook.react.bridge.JavaScriptModule; 5 | import com.facebook.react.bridge.NativeModule; 6 | import com.facebook.react.bridge.ReactApplicationContext; 7 | import com.facebook.react.uimanager.ViewManager; 8 | 9 | import java.util.ArrayList; 10 | import java.util.Arrays; 11 | import java.util.Collections; 12 | import java.util.List; 13 | 14 | public class ReactNativeIcons implements ReactPackage { 15 | 16 | private ArrayList mAllIconFonts; 17 | 18 | public ReactNativeIcons(List customIconFonts) { 19 | this(); 20 | if (customIconFonts != null) { 21 | mAllIconFonts.addAll(customIconFonts); 22 | } 23 | } 24 | 25 | public ReactNativeIcons() { 26 | addIncludedFonts(); 27 | } 28 | 29 | private void addIncludedFonts() { 30 | mAllIconFonts = new ArrayList<>(Arrays.asList( 31 | new IconFont("fontawesome", "FontAwesome.otf"), 32 | new IconFont("ion", "ionicons.ttf"), 33 | new IconFont("zocial", "zocial.ttf"), 34 | new IconFont("foundation", "foundation-icons.ttf"), 35 | new IconFont("material", "Material-Design-Iconic-Font.ttf") 36 | )); 37 | } 38 | 39 | @Override 40 | public List createNativeModules( 41 | ReactApplicationContext reactContext) { 42 | return new ArrayList<>(); 43 | } 44 | 45 | @Override 46 | public List> createJSModules() { 47 | return Collections.emptyList(); 48 | } 49 | 50 | @Override 51 | public List createViewManagers(ReactApplicationContext reactContext) { 52 | return Arrays.asList( 53 | new IconManager(mAllIconFonts) 54 | ); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /example/node_modules/react-native-icons/ios/ReactNativeIcons/Libraries/FontAwesomeKit/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/example/node_modules/react-native-icons/ios/ReactNativeIcons/Libraries/FontAwesomeKit/octicons.ttf -------------------------------------------------------------------------------- /fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /fonts/Material-Design-Iconic-Font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/fonts/Material-Design-Iconic-Font.ttf -------------------------------------------------------------------------------- /fonts/foundation-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/fonts/foundation-icons.ttf -------------------------------------------------------------------------------- /fonts/foundation.json: -------------------------------------------------------------------------------- 1 | { 2 | "address-book": "", 3 | "alert": "", 4 | "align-center": "", 5 | "align-justify": "", 6 | "align-left": "", 7 | "align-right": "", 8 | "anchor": "", 9 | "annotate": "", 10 | "archive": "", 11 | "arrow-down": "", 12 | "arrow-left": "", 13 | "arrow-right": "", 14 | "arrow-up": "", 15 | "arrows-compress": "", 16 | "arrows-expand": "", 17 | "arrows-in": "", 18 | "arrows-out": "", 19 | "asl": "", 20 | "asterisk": "", 21 | "at-sign": "", 22 | "background-color": "", 23 | "battery-empty": "", 24 | "battery-full": "", 25 | "battery-half": "", 26 | "bitcoin-circle": "", 27 | "bitcoin": "", 28 | "blind": "", 29 | "bluetooth": "", 30 | "bold": "", 31 | "book-bookmark": "", 32 | "book": "", 33 | "bookmark": "", 34 | "braille": "", 35 | "burst-new": "", 36 | "burst-sale": "", 37 | "burst": "", 38 | "calendar": "", 39 | "camera": "", 40 | "check": "", 41 | "checkbox": "", 42 | "clipboard-notes": "", 43 | "clipboard-pencil": "", 44 | "clipboard": "", 45 | "clock": "", 46 | "closed-caption": "", 47 | "cloud": "", 48 | "comment-minus": "", 49 | "comment-quotes": "", 50 | "comment-video": "", 51 | "comment": "", 52 | "comments": "", 53 | "compass": "", 54 | "contrast": "", 55 | "credit-card": "", 56 | "crop": "", 57 | "crown": "", 58 | "css3": "", 59 | "database": "", 60 | "die-five": "", 61 | "die-four": "", 62 | "die-one": "", 63 | "die-six": "", 64 | "die-three": "", 65 | "die-two": "", 66 | "dislike": "", 67 | "dollar-bill": "", 68 | "dollar": "", 69 | "download": "", 70 | "eject": "", 71 | "elevator": "", 72 | "euro": "", 73 | "eye": "", 74 | "fast-forward": "", 75 | "female-symbol": "", 76 | "female": "", 77 | "filter": "", 78 | "first-aid": "", 79 | "flag": "", 80 | "folder-add": "", 81 | "folder-lock": "", 82 | "folder": "", 83 | "foot": "", 84 | "foundation": "", 85 | "graph-bar": "", 86 | "graph-horizontal": "", 87 | "graph-pie": "", 88 | "graph-trend": "", 89 | "guide-dog": "", 90 | "hearing-aid": "", 91 | "heart": "", 92 | "home": "", 93 | "html5": "", 94 | "indent-less": "", 95 | "indent-more": "", 96 | "info": "", 97 | "italic": "", 98 | "key": "", 99 | "laptop": "", 100 | "layout": "", 101 | "lightbulb": "", 102 | "like": "", 103 | "link": "", 104 | "list-bullet": "", 105 | "list-number": "", 106 | "list-thumbnails": "", 107 | "list": "", 108 | "lock": "", 109 | "loop": "", 110 | "magnifying-glass": "", 111 | "mail": "", 112 | "male-female": "", 113 | "male-symbol": "", 114 | "male": "", 115 | "map": "", 116 | "marker": "", 117 | "megaphone": "", 118 | "microphone": "", 119 | "minus-circle": "", 120 | "minus": "", 121 | "mobile-signal": "", 122 | "mobile": "", 123 | "monitor": "", 124 | "mountains": "", 125 | "music": "", 126 | "next": "", 127 | "no-dogs": "", 128 | "no-smoking": "", 129 | "page-add": "", 130 | "page-copy": "", 131 | "page-csv": "", 132 | "page-delete": "", 133 | "page-doc": "", 134 | "page-edit": "", 135 | "page-export-csv": "", 136 | "page-export-doc": "", 137 | "page-export-pdf": "", 138 | "page-export": "", 139 | "page-filled": "", 140 | "page-multiple": "", 141 | "page-pdf": "", 142 | "page-remove": "", 143 | "page-search": "", 144 | "page": "", 145 | "paint-bucket": "", 146 | "paperclip": "", 147 | "pause": "", 148 | "paw": "", 149 | "paypal": "", 150 | "pencil": "", 151 | "photo": "", 152 | "play-circle": "", 153 | "play-video": "", 154 | "play": "", 155 | "plus": "", 156 | "pound": "", 157 | "power": "", 158 | "previous": "", 159 | "price-tag": "", 160 | "pricetag-multiple": "", 161 | "print": "", 162 | "prohibited": "", 163 | "projection-screen": "", 164 | "puzzle": "", 165 | "quote": "", 166 | "record": "", 167 | "refresh": "", 168 | "results-demographics": "", 169 | "results": "", 170 | "rewind-ten": "", 171 | "rewind": "", 172 | "rss": "", 173 | "safety-cone": "", 174 | "save": "", 175 | "share": "", 176 | "sheriff-badge": "", 177 | "shield": "", 178 | "shopping-bag": "", 179 | "shopping-cart": "", 180 | "shuffle": "", 181 | "skull": "", 182 | "social-500px": "", 183 | "social-adobe": "", 184 | "social-amazon": "", 185 | "social-android": "", 186 | "social-apple": "", 187 | "social-behance": "", 188 | "social-bing": "", 189 | "social-blogger": "", 190 | "social-delicious": "", 191 | "social-designer-news": "", 192 | "social-deviant-art": "", 193 | "social-digg": "", 194 | "social-dribbble": "", 195 | "social-drive": "", 196 | "social-dropbox": "", 197 | "social-evernote": "", 198 | "social-facebook": "", 199 | "social-flickr": "", 200 | "social-forrst": "", 201 | "social-foursquare": "", 202 | "social-game-center": "", 203 | "social-github": "", 204 | "social-google-plus": "", 205 | "social-hacker-news": "", 206 | "social-hi5": "", 207 | "social-instagram": "", 208 | "social-joomla": "", 209 | "social-lastfm": "", 210 | "social-linkedin": "", 211 | "social-medium": "", 212 | "social-myspace": "", 213 | "social-orkut": "", 214 | "social-path": "", 215 | "social-picasa": "", 216 | "social-pinterest": "", 217 | "social-rdio": "", 218 | "social-reddit": "", 219 | "social-skillshare": "", 220 | "social-skype": "", 221 | "social-smashing-mag": "", 222 | "social-snapchat": "", 223 | "social-spotify": "", 224 | "social-squidoo": "", 225 | "social-stack-overflow": "", 226 | "social-steam": "", 227 | "social-stumbleupon": "", 228 | "social-treehouse": "", 229 | "social-tumblr": "", 230 | "social-twitter": "", 231 | "social-vimeo": "", 232 | "social-windows": "", 233 | "social-xbox": "", 234 | "social-yahoo": "", 235 | "social-yelp": "", 236 | "social-youtube": "", 237 | "social-zerply": "", 238 | "social-zurb": "", 239 | "sound": "", 240 | "star": "", 241 | "stop": "", 242 | "strikethrough": "", 243 | "subscript": "", 244 | "superscript": "", 245 | "tablet-landscape": "", 246 | "tablet-portrait": "", 247 | "target-two": "", 248 | "target": "", 249 | "telephone-accessible": "", 250 | "telephone": "", 251 | "text-color": "", 252 | "thumbnails": "", 253 | "ticket": "", 254 | "torso-business": "", 255 | "torso-female": "", 256 | "torso": "", 257 | "torsos-all-female": "", 258 | "torsos-all": "", 259 | "torsos-female-male": "", 260 | "torsos-male-female": "", 261 | "torsos": "", 262 | "trash": "", 263 | "trees": "", 264 | "trophy": "", 265 | "underline": "", 266 | "universal-access": "", 267 | "unlink": "", 268 | "unlock": "", 269 | "upload-cloud": "", 270 | "upload": "", 271 | "usb": "", 272 | "video": "", 273 | "volume-none": "", 274 | "volume-strike": "", 275 | "volume": "", 276 | "web": "", 277 | "wheelchair": "", 278 | "widget": "", 279 | "wrench": "", 280 | "x-circle": "", 281 | "x": "", 282 | "yen": "", 283 | "zoom-in": "", 284 | "zoom-out": "" 285 | } -------------------------------------------------------------------------------- /fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/fonts/ionicons.ttf -------------------------------------------------------------------------------- /fonts/octicons.json: -------------------------------------------------------------------------------- 1 | { 2 | "alert": "", 3 | "arrow-down": "", 4 | "arrow-left": "", 5 | "arrow-right": "", 6 | "arrow-small-down": "", 7 | "arrow-small-left": "", 8 | "arrow-small-right": "", 9 | "arrow-small-up": "", 10 | "arrow-up": "", 11 | "beaker": "", 12 | "bell": "", 13 | "book": "", 14 | "bookmark": "", 15 | "briefcase": "", 16 | "broadcast": "", 17 | "browser": "", 18 | "bug": "", 19 | "calendar": "", 20 | "check": "", 21 | "checklist": "", 22 | "chevron-down": "", 23 | "chevron-left": "", 24 | "chevron-right": "", 25 | "chevron-up": "", 26 | "circle-slash": "", 27 | "circuit-board": "", 28 | "clippy": "", 29 | "clock": "", 30 | "cloud-download": "", 31 | "cloud-upload": "", 32 | "code": "", 33 | "color-mode": "", 34 | "comment": "", 35 | "comment-discussion": "", 36 | "credit-card": "", 37 | "dash": "", 38 | "dashboard": "", 39 | "database": "", 40 | "desktop-download": "", 41 | "device-camera": "", 42 | "device-camera-video": "", 43 | "device-desktop": "", 44 | "device-mobile": "", 45 | "diff": "", 46 | "diff-added": "", 47 | "diff-ignored": "", 48 | "diff-modified": "", 49 | "diff-removed": "", 50 | "diff-renamed": "", 51 | "ellipsis": "", 52 | "eye": "", 53 | "file-binary": "", 54 | "file-code": "", 55 | "file-directory": "", 56 | "file-media": "", 57 | "file-pdf": "", 58 | "file-submodule": "", 59 | "file-symlink-directory": "", 60 | "file-symlink-file": "", 61 | "file-text": "", 62 | "file-zip": "", 63 | "flame": "", 64 | "fold": "", 65 | "gear": "", 66 | "gift": "", 67 | "gist": "", 68 | "gist-secret": "", 69 | "git-branch": "", 70 | "git-commit": "", 71 | "git-compare": "", 72 | "git-merge": "", 73 | "git-pull-request": "", 74 | "globe": "", 75 | "graph": "", 76 | "heart": "♥", 77 | "history": "", 78 | "home": "", 79 | "horizontal-rule": "", 80 | "hubot": "", 81 | "inbox": "", 82 | "info": "", 83 | "issue-closed": "", 84 | "issue-opened": "", 85 | "issue-reopened": "", 86 | "jersey": "", 87 | "key": "", 88 | "keyboard": "", 89 | "law": "", 90 | "light-bulb": "", 91 | "link": "", 92 | "link-external": "", 93 | "list-ordered": "", 94 | "list-unordered": "", 95 | "location": "", 96 | "lock": "", 97 | "logo-github": "", 98 | "mail": "", 99 | "mail-read": "", 100 | "mail-reply": "", 101 | "mark-github": "", 102 | "markdown": "", 103 | "megaphone": "", 104 | "mention": "", 105 | "milestone": "", 106 | "mirror": "", 107 | "mortar-board": "", 108 | "mute": "", 109 | "no-newline": "", 110 | "octoface": "", 111 | "organization": "", 112 | "package": "", 113 | "paintcan": "", 114 | "pencil": "", 115 | "person": "", 116 | "pin": "", 117 | "plug": "", 118 | "plus": "", 119 | "primitive-dot": "", 120 | "primitive-square": "", 121 | "pulse": "", 122 | "question": "", 123 | "quote": "", 124 | "radio-tower": "", 125 | "repo": "", 126 | "repo-clone": "", 127 | "repo-force-push": "", 128 | "repo-forked": "", 129 | "repo-pull": "", 130 | "repo-push": "", 131 | "rocket": "", 132 | "rss": "", 133 | "ruby": "", 134 | "screen-full": "", 135 | "screen-normal": "", 136 | "search": "", 137 | "server": "", 138 | "settings": "", 139 | "shield": "", 140 | "sign-in": "", 141 | "sign-out": "", 142 | "squirrel": "", 143 | "star": "", 144 | "stop": "", 145 | "sync": "", 146 | "tag": "", 147 | "telescope": "", 148 | "terminal": "", 149 | "three-bars": "", 150 | "thumbsdown": "", 151 | "thumbsup": "", 152 | "tools": "", 153 | "trashcan": "", 154 | "triangle-down": "", 155 | "triangle-left": "", 156 | "triangle-right": "", 157 | "triangle-up": "", 158 | "unfold": "", 159 | "unmute": "", 160 | "versions": "", 161 | "watch": "", 162 | "x": "", 163 | "zap": "⚡" 164 | } -------------------------------------------------------------------------------- /fonts/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/fonts/octicons.ttf -------------------------------------------------------------------------------- /fonts/typicons.json: -------------------------------------------------------------------------------- 1 | { 2 | "adjust-brightness": "", 3 | "adjust-contrast": "", 4 | "anchor-outline": "", 5 | "anchor": "", 6 | "archive": "", 7 | "arrow-back-outline": "", 8 | "arrow-back": "", 9 | "arrow-down-outline": "", 10 | "arrow-down-thick": "", 11 | "arrow-down": "", 12 | "arrow-forward-outline": "", 13 | "arrow-forward": "", 14 | "arrow-left-outline": "", 15 | "arrow-left-thick": "", 16 | "arrow-left": "", 17 | "arrow-loop-outline": "", 18 | "arrow-loop": "", 19 | "arrow-maximise-outline": "", 20 | "arrow-maximise": "", 21 | "arrow-minimise-outline": "", 22 | "arrow-minimise": "", 23 | "arrow-move-outline": "", 24 | "arrow-move": "", 25 | "arrow-repeat-outline": "", 26 | "arrow-repeat": "", 27 | "arrow-right-outline": "", 28 | "arrow-right-thick": "", 29 | "arrow-right": "", 30 | "arrow-shuffle": "", 31 | "arrow-sorted-down": "", 32 | "arrow-sorted-up": "", 33 | "arrow-sync-outline": "", 34 | "arrow-sync": "", 35 | "arrow-unsorted": "", 36 | "arrow-up-outline": "", 37 | "arrow-up-thick": "", 38 | "arrow-up": "", 39 | "at": "", 40 | "attachment-outline": "", 41 | "attachment": "", 42 | "backspace-outline": "", 43 | "backspace": "", 44 | "battery-charge": "", 45 | "battery-full": "", 46 | "battery-high": "", 47 | "battery-low": "", 48 | "battery-mid": "", 49 | "beaker": "", 50 | "beer": "", 51 | "bell": "", 52 | "book": "", 53 | "bookmark": "", 54 | "briefcase": "", 55 | "brush": "", 56 | "business-card": "", 57 | "calculator": "", 58 | "calendar-outline": "", 59 | "calendar": "", 60 | "camera-outline": "", 61 | "camera": "", 62 | "cancel-outline": "", 63 | "cancel": "", 64 | "chart-area-outline": "", 65 | "chart-area": "", 66 | "chart-bar-outline": "", 67 | "chart-bar": "", 68 | "chart-line-outline": "", 69 | "chart-line": "", 70 | "chart-pie-outline": "", 71 | "chart-pie": "", 72 | "chevron-left-outline": "", 73 | "chevron-left": "", 74 | "chevron-right-outline": "", 75 | "chevron-right": "", 76 | "clipboard": "", 77 | "cloud-storage": "", 78 | "cloud-storage-outline": "", 79 | "code-outline": "", 80 | "code": "", 81 | "coffee": "", 82 | "cog-outline": "", 83 | "cog": "", 84 | "compass": "", 85 | "contacts": "", 86 | "credit-card": "", 87 | "css3": "", 88 | "database": "", 89 | "delete-outline": "", 90 | "delete": "", 91 | "device-desktop": "", 92 | "device-laptop": "", 93 | "device-phone": "", 94 | "device-tablet": "", 95 | "directions": "", 96 | "divide-outline": "", 97 | "divide": "", 98 | "document-add": "", 99 | "document-delete": "", 100 | "document-text": "", 101 | "document": "", 102 | "download-outline": "", 103 | "download": "", 104 | "dropbox": "", 105 | "edit": "", 106 | "eject-outline": "", 107 | "eject": "", 108 | "equals-outline": "", 109 | "equals": "", 110 | "export-outline": "", 111 | "export": "", 112 | "eye-outline": "", 113 | "eye": "", 114 | "feather": "", 115 | "film": "", 116 | "filter": "", 117 | "flag-outline": "", 118 | "flag": "", 119 | "flash-outline": "", 120 | "flash": "", 121 | "flow-children": "", 122 | "flow-merge": "", 123 | "flow-parallel": "", 124 | "flow-switch": "", 125 | "folder-add": "", 126 | "folder-delete": "", 127 | "folder-open": "", 128 | "folder": "", 129 | "gift": "", 130 | "globe-outline": "", 131 | "globe": "", 132 | "group-outline": "", 133 | "group": "", 134 | "headphones": "", 135 | "heart-full-outline": "", 136 | "heart-half-outline": "", 137 | "heart-outline": "", 138 | "heart": "", 139 | "home-outline": "", 140 | "home": "", 141 | "html5": "", 142 | "image-outline": "", 143 | "image": "", 144 | "infinity-outline": "", 145 | "infinity": "", 146 | "info-large-outline": "", 147 | "info-large": "", 148 | "info-outline": "", 149 | "info": "", 150 | "input-checked-outline": "", 151 | "input-checked": "", 152 | "key-outline": "", 153 | "key": "", 154 | "keyboard": "", 155 | "leaf": "", 156 | "lightbulb": "", 157 | "link-outline": "", 158 | "link": "", 159 | "location-arrow-outline": "", 160 | "location-arrow": "", 161 | "location-outline": "", 162 | "location": "", 163 | "lock-closed-outline": "", 164 | "lock-closed": "", 165 | "lock-open-outline": "", 166 | "lock-open": "", 167 | "mail": "", 168 | "map": "", 169 | "media-eject-outline": "", 170 | "media-eject": "", 171 | "media-fast-forward-outline": "", 172 | "media-fast-forward": "", 173 | "media-pause-outline": "", 174 | "media-pause": "", 175 | "media-play-outline": "", 176 | "media-play-reverse-outline": "", 177 | "media-play-reverse": "", 178 | "media-play": "", 179 | "media-record-outline": "", 180 | "media-record": "", 181 | "media-rewind-outline": "", 182 | "media-rewind": "", 183 | "media-stop-outline": "", 184 | "media-stop": "", 185 | "message-typing": "", 186 | "message": "", 187 | "messages": "", 188 | "microphone-outline": "", 189 | "microphone": "", 190 | "minus-outline": "", 191 | "minus": "", 192 | "mortar-board": "", 193 | "news": "", 194 | "notes-outline": "", 195 | "notes": "", 196 | "pen": "", 197 | "pencil": "", 198 | "phone-outline": "", 199 | "phone": "", 200 | "pi-outline": "", 201 | "pi": "", 202 | "pin-outline": "", 203 | "pin": "", 204 | "pipette": "", 205 | "plane-outline": "", 206 | "plane": "", 207 | "plug": "", 208 | "plus-outline": "", 209 | "plus": "", 210 | "point-of-interest-outline": "", 211 | "point-of-interest": "", 212 | "power-outline": "", 213 | "power": "", 214 | "printer": "", 215 | "puzzle-outline": "", 216 | "puzzle": "", 217 | "radar-outline": "", 218 | "radar": "", 219 | "refresh-outline": "", 220 | "refresh": "", 221 | "rss-outline": "", 222 | "rss": "", 223 | "scissors-outline": "", 224 | "scissors": "", 225 | "shopping-bag": "", 226 | "shopping-cart": "", 227 | "social-at-circular": "", 228 | "social-dribbble-circular": "", 229 | "social-dribbble": "", 230 | "social-facebook-circular": "", 231 | "social-facebook": "", 232 | "social-flickr-circular": "", 233 | "social-flickr": "", 234 | "social-github-circular": "", 235 | "social-github": "", 236 | "social-google-plus-circular": "", 237 | "social-google-plus": "", 238 | "social-instagram-circular": "", 239 | "social-instagram": "", 240 | "social-last-fm-circular": "", 241 | "social-last-fm": "", 242 | "social-linkedin-circular": "", 243 | "social-linkedin": "", 244 | "social-pinterest-circular": "", 245 | "social-pinterest": "", 246 | "social-skype-outline": "", 247 | "social-skype": "", 248 | "social-tumbler-circular": "", 249 | "social-tumbler": "", 250 | "social-twitter-circular": "", 251 | "social-twitter": "", 252 | "social-vimeo-circular": "", 253 | "social-vimeo": "", 254 | "social-youtube-circular": "", 255 | "social-youtube": "", 256 | "sort-alphabetically-outline": "", 257 | "sort-alphabetically": "", 258 | "sort-numerically-outline": "", 259 | "sort-numerically": "", 260 | "spanner-outline": "", 261 | "spanner": "", 262 | "spiral": "", 263 | "star-full-outline": "", 264 | "star-half-outline": "", 265 | "star-half": "", 266 | "star-outline": "", 267 | "star": "", 268 | "starburst-outline": "", 269 | "starburst": "", 270 | "stopwatch": "", 271 | "support": "", 272 | "tabs-outline": "", 273 | "tag": "", 274 | "tags": "", 275 | "th-large-outline": "", 276 | "th-large": "", 277 | "th-list-outline": "", 278 | "th-list": "", 279 | "th-menu-outline": "", 280 | "th-menu": "", 281 | "th-small-outline": "", 282 | "th-small": "", 283 | "thermometer": "", 284 | "thumbs-down": "", 285 | "thumbs-ok": "", 286 | "thumbs-up": "", 287 | "tick-outline": "", 288 | "tick": "", 289 | "ticket": "", 290 | "time": "", 291 | "times-outline": "", 292 | "times": "", 293 | "trash": "", 294 | "tree": "", 295 | "upload-outline": "", 296 | "upload": "", 297 | "user-add-outline": "", 298 | "user-add": "", 299 | "user-delete-outline": "", 300 | "user-delete": "", 301 | "user-outline": "", 302 | "user": "", 303 | "vendor-android": "", 304 | "vendor-apple": "", 305 | "vendor-microsoft": "", 306 | "video-outline": "", 307 | "video": "", 308 | "volume-down": "", 309 | "volume-mute": "", 310 | "volume-up": "", 311 | "volume": "", 312 | "warning-outline": "", 313 | "warning": "", 314 | "watch": "", 315 | "waves-outline": "", 316 | "waves": "", 317 | "weather-cloudy": "", 318 | "weather-downpour": "", 319 | "weather-night": "", 320 | "weather-partly-sunny": "", 321 | "weather-shower": "", 322 | "weather-snow": "", 323 | "weather-stormy": "", 324 | "weather-sunny": "", 325 | "weather-windy-cloudy": "", 326 | "weather-windy": "", 327 | "wi-fi-outline": "", 328 | "wi-fi": "", 329 | "wine": "", 330 | "world-outline": "", 331 | "world": "", 332 | "zoom-in-outline": "", 333 | "zoom-in": "", 334 | "zoom-out-outline": "", 335 | "zoom-out": "", 336 | "zoom-outline": "", 337 | "zoom": "" 338 | } -------------------------------------------------------------------------------- /fonts/typicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/fonts/typicons.ttf -------------------------------------------------------------------------------- /fonts/zocial.json: -------------------------------------------------------------------------------- 1 | { 2 | "acrobat": "", 3 | "amazon": "", 4 | "android": "", 5 | "angellist": "", 6 | "aol": "", 7 | "appnet": "", 8 | "appstore": "", 9 | "bitbucket": "", 10 | "bitcoin": "", 11 | "blogger": "", 12 | "buffer": "", 13 | "cal": "", 14 | "call": "", 15 | "cart": "", 16 | "chrome": "", 17 | "cloudapp": "", 18 | "creativecommons": "", 19 | "delicious": "", 20 | "digg": "", 21 | "disqus": "", 22 | "dribbble": "", 23 | "dropbox": "", 24 | "drupal": "", 25 | "dwolla": "", 26 | "email": "", 27 | "eventasaurus": "", 28 | "eventbrite": "", 29 | "eventful": "", 30 | "evernote": "", 31 | "facebook": "", 32 | "fivehundredpx": "", 33 | "flattr": "", 34 | "flickr": "", 35 | "forrst": "", 36 | "foursquare": "", 37 | "github": "", 38 | "gmail": "", 39 | "google": "", 40 | "googleplay": "", 41 | "googleplus": "", 42 | "gowalla": "", 43 | "grooveshark": "", 44 | "guest": "", 45 | "html5": "", 46 | "ie": "", 47 | "instagram": "", 48 | "instapaper": "", 49 | "intensedebate": "", 50 | "itunes": "", 51 | "joinme": "", 52 | "klout": "", 53 | "lanyrd": "", 54 | "lastfm": "", 55 | "lego": "", 56 | "linkedin": "", 57 | "lkdto": "", 58 | "logmein": "", 59 | "macstore": "", 60 | "meetup": "", 61 | "myspace": "", 62 | "ninetyninedesigns": "", 63 | "openid": "", 64 | "opentable": "", 65 | "paypal": "", 66 | "persona": "", 67 | "pinboard": "", 68 | "pinterest": "", 69 | "plancast": "", 70 | "plurk": "", 71 | "pocket": "", 72 | "podcast": "", 73 | "posterous": "", 74 | "print": "", 75 | "quora": "", 76 | "reddit": "", 77 | "rss": "", 78 | "scribd": "", 79 | "skype": "", 80 | "smashing": "", 81 | "songkick": "", 82 | "soundcloud": "", 83 | "spotify": "", 84 | "stackoverflow": "", 85 | "statusnet": "", 86 | "steam": "", 87 | "stripe": "", 88 | "stumbleupon": "", 89 | "tumblr": "", 90 | "twitter": "", 91 | "viadeo": "", 92 | "vimeo": "", 93 | "vk": "", 94 | "weibo": "", 95 | "wikipedia": "", 96 | "windows": "", 97 | "wordpress": "", 98 | "xing": "", 99 | "yahoo": "", 100 | "ycombinator": "", 101 | "yelp": "", 102 | "youtube": "" 103 | } 104 | 105 | -------------------------------------------------------------------------------- /fonts/zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/fonts/zocial.ttf -------------------------------------------------------------------------------- /iOS/ReactNativeIcons.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/FAKIconImage/FAKIconImage.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | @interface FAKIconImage : UIImageView 5 | @property (nonatomic, assign) NSString *name; 6 | @property (nonatomic, assign) NSNumber *iconSize; 7 | @property (nonatomic, assign) UIColor *color; 8 | @end 9 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/FAKIconImage/FAKIconImage.m: -------------------------------------------------------------------------------- 1 | 2 | #import "FAKIconImage.h" 3 | 4 | @implementation FAKIconImage 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/FAKIconImage/FAKIconImageManager.h: -------------------------------------------------------------------------------- 1 | 2 | #import "RCTViewManager.h" 3 | 4 | @interface FAKIconImageManager : RCTViewManager 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/FAKIconImage/FAKIconImageManager.m: -------------------------------------------------------------------------------- 1 | 2 | #import "FAKIconImageManager.h" 3 | 4 | #import 5 | #import "RCTConvert.h" 6 | #import "FAKIconImage.h" 7 | #import "FontAwesomeKit.h" 8 | #import 9 | 10 | @implementation FAKIconImageManager 11 | 12 | RCT_EXPORT_MODULE() 13 | 14 | - (UIView *)view 15 | { 16 | return [[FAKIconImage alloc] init]; 17 | } 18 | 19 | RCT_REMAP_VIEW_PROPERTY(size, iconSize, NSNumber); 20 | RCT_EXPORT_VIEW_PROPERTY(name, NSString); 21 | RCT_EXPORT_VIEW_PROPERTY(color, NSString); 22 | 23 | RCT_CUSTOM_VIEW_PROPERTY(icon, NSDictionary, FAKIconImage) 24 | { 25 | dispatch_queue_t backgroundQueue = dispatch_queue_create("com.smixxtape.reactnativeicons", 0); 26 | dispatch_async(backgroundQueue, ^{ 27 | if(json) { 28 | NSDictionary *iconDict = json ? [RCTConvert NSDictionary:json] : [NSDictionary dictionary]; 29 | NSString *iconString = iconDict[@"name"]; 30 | UIColor *color = iconDict[@"color"] ? [RCTConvert UIColor:iconDict[@"color"]] : view.tintColor; 31 | CGFloat size = [iconDict[@"size"] floatValue]; 32 | 33 | NSString *theIconName = iconString; 34 | NSArray *parts = [theIconName componentsSeparatedByString:@"|"]; 35 | NSString *fontPrefix = parts[0]; 36 | NSString *iconIdentifier = parts[1]; 37 | 38 | id target; 39 | if([fontPrefix isEqualToString:@"fontawesome"]) { 40 | target = [FAKFontAwesome class]; 41 | } else if([fontPrefix isEqualToString:@"ion"]) { 42 | target = [FAKIonIcons class]; 43 | } else if([fontPrefix isEqualToString:@"zocial"]) { 44 | target = [FAKZocial class]; 45 | } else if([fontPrefix isEqualToString:@"foundation"]) { 46 | target = [FAKFoundationIcons class]; 47 | } else if([fontPrefix isEqualToString:@"material"]) { 48 | target = [FAKMaterial class]; 49 | } else if([fontPrefix isEqualToString:@"octicons"]) { 50 | target = [FAKOcticons class]; 51 | } 52 | 53 | SEL selector = NSSelectorFromString([NSString stringWithFormat:@"%@IconWithSize:",[self camelcase:iconIdentifier]]); 54 | 55 | if(!target || ![target respondsToSelector:selector]) { 56 | if(target) { 57 | NSLog(@"No icon '%@' in '%@' icon font", iconIdentifier, fontPrefix); 58 | RCTLogError(@"No icon '%@' in '%@' icon font", iconIdentifier, fontPrefix); 59 | } else { 60 | NSLog(@"No icon font named '%@'", fontPrefix); 61 | RCTLogError(@"No icon font named '%@'", fontPrefix); 62 | } 63 | return; 64 | } 65 | 66 | NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[target methodSignatureForSelector:selector]]; 67 | [inv setSelector:selector]; 68 | [inv setTarget:target]; 69 | [inv setArgument:&size atIndex:2]; //arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation 70 | [inv retainArguments]; 71 | [inv invoke]; 72 | 73 | CFTypeRef result; 74 | [inv getReturnValue:&result]; 75 | 76 | FAKIcon *icon = (__bridge id)result; 77 | [icon setAttributes:@{NSForegroundColorAttributeName: color}]; 78 | 79 | UIImage *image = [icon imageWithSize:CGSizeMake(size,size)]; 80 | dispatch_async(dispatch_get_main_queue(), ^{ 81 | [view setContentMode:UIViewContentModeCenter]; 82 | view.image = image; 83 | }); 84 | } 85 | }); 86 | } 87 | 88 | - (NSString *)camelcase:(NSString *)stringToCamelcase 89 | { 90 | NSArray *components = [stringToCamelcase componentsSeparatedByString:@"-"]; 91 | NSMutableString *output = [NSMutableString string]; 92 | 93 | for (NSUInteger i = 0; i < components.count; i++) { 94 | if (i == 0) { 95 | [output appendString:components[i]]; 96 | } else { 97 | [output appendString:[components[i] capitalizedString]]; 98 | } 99 | } 100 | 101 | return [NSString stringWithString:output]; 102 | } 103 | 104 | @end 105 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/IconTabBarItem/SMXTabBar.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class RCTEventDispatcher; 4 | 5 | @interface SMXTabBar : UIView 6 | 7 | @property (nonatomic, copy) UIColor *tintColor; 8 | @property (nonatomic, assign) UIColor *barTintColor; 9 | @property (nonatomic, assign) BOOL translucent; 10 | 11 | - (instancetype)initWithFrame:(CGRect)frame __unavailable; 12 | - (instancetype)initWithCoder:(NSCoder *)aDecoder __unavailable; 13 | - (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher NS_DESIGNATED_INITIALIZER; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/IconTabBarItem/SMXTabBar.m: -------------------------------------------------------------------------------- 1 | #import "SMXTabBar.h" 2 | #import "SMXTabBarItem.h" 3 | #import "RCTEventDispatcher.h" 4 | #import "RCTLog.h" 5 | #import "RCTUtils.h" 6 | #import "RCTView.h" 7 | #import "RCTViewControllerProtocol.h" 8 | #import "RCTWrapperViewController.h" 9 | #import "UIView+React.h" 10 | 11 | @interface SMXTabBar() 12 | 13 | @end 14 | 15 | @implementation SMXTabBar 16 | { 17 | BOOL _tabsChanged; 18 | RCTEventDispatcher *_eventDispatcher; 19 | UITabBarController *_tabController; 20 | NSMutableArray *_tabViews; 21 | } 22 | 23 | - (id)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher 24 | { 25 | if ((self = [super initWithFrame:CGRectZero])) { 26 | _eventDispatcher = eventDispatcher; 27 | _tabViews = [[NSMutableArray alloc] init]; 28 | _tabController = [[UITabBarController alloc] init]; 29 | _tabController.delegate = self; 30 | [self addSubview:_tabController.view]; 31 | } 32 | return self; 33 | } 34 | 35 | - (UIViewController *)backingViewController 36 | { 37 | return _tabController; 38 | } 39 | 40 | - (void)dealloc 41 | { 42 | _tabController.delegate = nil; 43 | } 44 | 45 | - (NSArray *)reactSubviews 46 | { 47 | return _tabViews; 48 | } 49 | 50 | - (void)insertReactSubview:(UIView *)view atIndex:(NSInteger)atIndex 51 | { 52 | if (![view isKindOfClass:[SMXTabBarItem class]]) { 53 | //RCTLogError(@"subview should be of type IconTabBarItem"); 54 | return; 55 | } 56 | [_tabViews insertObject:view atIndex:atIndex]; 57 | _tabsChanged = YES; 58 | } 59 | 60 | - (void)removeReactSubview:(UIView *)subview 61 | { 62 | if (_tabViews.count == 0) { 63 | RCTLogError(@"should have at least one view to remove a subview"); 64 | return; 65 | } 66 | [_tabViews removeObject:subview]; 67 | _tabsChanged = YES; 68 | } 69 | 70 | - (void)layoutSubviews 71 | { 72 | [super layoutSubviews]; 73 | _tabController.view.frame = self.bounds; 74 | } 75 | 76 | - (void)reactBridgeDidFinishTransaction 77 | { 78 | // we can't hook up the VC hierarchy in 'init' because the subviews aren't 79 | // hooked up yet, so we do it on demand here whenever a transaction has finished 80 | [self reactAddControllerToClosestParent:_tabController]; 81 | 82 | if (_tabsChanged) { 83 | 84 | NSMutableArray *viewControllers = [NSMutableArray array]; 85 | for (SMXTabBarItem *tab in [self reactSubviews]) { 86 | UIViewController *controller = tab.reactViewController; 87 | if (!controller) { 88 | controller = [[RCTWrapperViewController alloc] initWithContentView:tab]; 89 | } 90 | [viewControllers addObject:controller]; 91 | } 92 | 93 | _tabController.viewControllers = viewControllers; 94 | _tabsChanged = NO; 95 | } 96 | 97 | [[self reactSubviews] enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 98 | 99 | SMXTabBarItem *tab = [obj respondsToSelector:@selector(barItem)] ? (SMXTabBarItem*)obj : nil; 100 | 101 | if (tab){ 102 | UIViewController *controller = _tabController.viewControllers[idx]; 103 | controller.tabBarItem = tab.barItem; 104 | if (tab.selected){ 105 | _tabController.selectedViewController = controller; 106 | } 107 | } 108 | 109 | }]; 110 | 111 | /* 112 | [[self reactSubviews] enumerateObjectsUsingBlock:^(SMXTabBarItem *tab, NSUInteger index, BOOL *stop) { 113 | UIViewController *controller = _tabController.viewControllers[index]; 114 | controller.tabBarItem = tab.barItem; 115 | if (tab.selected) { 116 | _tabController.selectedViewController = controller; 117 | } 118 | }];*/ 119 | 120 | } 121 | 122 | #pragma mark - UITabBarControllerDelegate 123 | 124 | - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 125 | { 126 | NSUInteger index = [tabBarController.viewControllers indexOfObject:viewController]; 127 | SMXTabBarItem *tab = (SMXTabBarItem*)[self reactSubviews][index]; 128 | [_eventDispatcher sendInputEventWithName:@"press" body:@{@"target": tab.reactTag}]; 129 | return NO; 130 | } 131 | 132 | - (void)setBarTintColor:(UIColor *)barTintColor { 133 | _tabController.tabBar.barTintColor = barTintColor; 134 | } 135 | 136 | - (void)setTintColor:(UIColor *)tintColor { 137 | _tabController.tabBar.tintColor = tintColor; 138 | // _tabController.tabBarItem.tintColor 139 | } 140 | 141 | - (void)setTranslucent:(BOOL)translucent { 142 | _tabController.tabBar.translucent = translucent; 143 | } 144 | 145 | @end 146 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/IconTabBarItem/SMXTabBarItem.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | @interface SMXTabBarItem : UIView 5 | @property (nonatomic, assign) NSString *name; 6 | @property (nonatomic, assign) NSNumber *iconSize; 7 | @property (nonatomic, assign) UIColor *color; 8 | @property (nonatomic, copy) NSString *icon; 9 | @property (nonatomic, assign, getter=isSelected) BOOL selected; 10 | @property (nonatomic, readonly) UITabBarItem *barItem; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/IconTabBarItem/SMXTabBarItem.m: -------------------------------------------------------------------------------- 1 | 2 | #import "SMXTabBarItem.h" 3 | 4 | @implementation SMXTabBarItem 5 | 6 | @synthesize barItem = _barItem; 7 | 8 | - (UITabBarItem *)barItem 9 | { 10 | if (!_barItem) { 11 | _barItem = [[UITabBarItem alloc] init]; 12 | } 13 | return _barItem; 14 | } 15 | 16 | 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/IconTabBarItem/SMXTabBarItemManager.h: -------------------------------------------------------------------------------- 1 | 2 | #import "RCTViewManager.h" 3 | 4 | @interface SMXTabBarItemManager : RCTViewManager 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/IconTabBarItem/SMXTabBarItemManager.m: -------------------------------------------------------------------------------- 1 | #import "SMXTabBarItemManager.h" 2 | #import "SMXTabBarItem.h" 3 | #import "RCTConvert.h" 4 | #import "FAKIconImage.h" 5 | #import "FontAwesomeKit.h" 6 | #import 7 | 8 | @implementation SMXTabBarItemManager 9 | 10 | RCT_EXPORT_MODULE() 11 | 12 | - (UIView *)view 13 | { 14 | return [[SMXTabBarItem alloc] init]; 15 | } 16 | 17 | - (dispatch_queue_t)methodQueue 18 | { 19 | return dispatch_get_main_queue(); 20 | } 21 | 22 | - (UIImage *)loadIconImageUsingJSON:(id)json view:(SMXTabBarItem *)view 23 | { 24 | NSDictionary *iconDict = json ? [RCTConvert NSDictionary:json] : [NSDictionary dictionary]; 25 | NSString *iconString = iconDict[@"name"]; 26 | UIColor *color = iconDict[@"color"] ? [RCTConvert UIColor:iconDict[@"color"]] : view.tintColor; 27 | CGFloat size = [iconDict[@"size"] floatValue]; 28 | 29 | NSString *theIconName = iconString; 30 | NSArray *parts = [theIconName componentsSeparatedByString:@"|"]; 31 | NSString *fontPrefix = parts[0]; 32 | NSString *iconIdentifier = parts[1]; 33 | 34 | id target; 35 | if([fontPrefix isEqualToString:@"fontawesome"]) { 36 | target = [FAKFontAwesome class]; 37 | } else if([fontPrefix isEqualToString:@"ion"]) { 38 | target = [FAKIonIcons class]; 39 | } else if([fontPrefix isEqualToString:@"zocial"]) { 40 | target = [FAKZocial class]; 41 | } else if([fontPrefix isEqualToString:@"foundation"]) { 42 | target = [FAKFoundationIcons class]; 43 | } else if([fontPrefix isEqualToString:@"material"]) { 44 | target = [FAKMaterial class]; 45 | } 46 | 47 | SEL selector = NSSelectorFromString([NSString stringWithFormat:@"%@IconWithSize:",[self camelcase:iconIdentifier]]); 48 | 49 | if(!target || ![target respondsToSelector:selector]) { 50 | if(target) { 51 | NSLog(@"No icon '%@' in '%@' icon font", iconIdentifier, fontPrefix); 52 | RCTLogError(@"No icon '%@' in '%@' icon font", iconIdentifier, fontPrefix); 53 | } else { 54 | NSLog(@"No icon font named '%@'", fontPrefix); 55 | RCTLogError(@"No icon font named '%@'", fontPrefix); 56 | } 57 | return nil; 58 | } 59 | 60 | NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[target methodSignatureForSelector:selector]]; 61 | [inv setSelector:selector]; 62 | [inv setTarget:target]; 63 | [inv setArgument:&size atIndex:2]; //arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation 64 | [inv retainArguments]; 65 | [inv invoke]; 66 | 67 | CFTypeRef result; 68 | [inv getReturnValue:&result]; 69 | 70 | FAKIcon *icon = (__bridge id)result; 71 | [icon setAttributes:@{NSForegroundColorAttributeName: color}]; 72 | 73 | return [icon imageWithSize:CGSizeMake(size,size)]; 74 | } 75 | 76 | RCT_EXPORT_VIEW_PROPERTY(selected, BOOL); 77 | RCT_CUSTOM_VIEW_PROPERTY(icon, NSDictionary, SMXTabBarItem) 78 | { 79 | dispatch_queue_t backgroundQueue = dispatch_queue_create("com.smixxtape.reactnativeicons", 0); 80 | dispatch_async(backgroundQueue, ^{ 81 | UIImage *image = [self loadIconImageUsingJSON:json view:view]; 82 | 83 | if (image) { 84 | dispatch_async(dispatch_get_main_queue(), ^{ 85 | [view setContentMode:UIViewContentModeCenter]; 86 | view.barItem.image = image; 87 | }); 88 | } 89 | }); 90 | } 91 | 92 | RCT_CUSTOM_VIEW_PROPERTY(selectedIcon, NSDictionary, SMXTabBarItem) 93 | { 94 | dispatch_queue_t backgroundQueue = dispatch_queue_create("com.smixxtape.reactnativeicons", 0); 95 | dispatch_async(backgroundQueue, ^{ 96 | UIImage *image = [self loadIconImageUsingJSON:json view:view]; 97 | 98 | if (image) { 99 | dispatch_async(dispatch_get_main_queue(), ^{ 100 | [view setContentMode:UIViewContentModeCenter]; 101 | view.barItem.selectedImage = image; 102 | }); 103 | } 104 | }); 105 | } 106 | 107 | RCT_REMAP_VIEW_PROPERTY(badgeValue, barItem.badgeValue, NSString); 108 | RCT_CUSTOM_VIEW_PROPERTY(title, NSString, SMXTabBarItem) 109 | { 110 | view.barItem.title = json ? [RCTConvert NSString:json] : defaultView.barItem.title; 111 | view.barItem.imageInsets = [view.barItem.title length] ? UIEdgeInsetsZero : (UIEdgeInsets){6, 0, -6, 0}; 112 | } 113 | 114 | - (NSString *)camelcase:(NSString *)stringToCamelcase 115 | { 116 | NSArray *components = [stringToCamelcase componentsSeparatedByString:@"-"]; 117 | NSMutableString *output = [NSMutableString string]; 118 | 119 | for (NSUInteger i = 0; i < components.count; i++) { 120 | if (i == 0) { 121 | [output appendString:components[i]]; 122 | } else { 123 | [output appendString:[components[i] capitalizedString]]; 124 | } 125 | } 126 | 127 | return [NSString stringWithString:output]; 128 | } 129 | 130 | @end 131 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/IconTabBarItem/SMXTabBarManager.h: -------------------------------------------------------------------------------- 1 | #import "RCTViewManager.h" 2 | 3 | @interface SMXTabBarManager : RCTViewManager 4 | 5 | @end 6 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/IconTabBarItem/SMXTabBarManager.m: -------------------------------------------------------------------------------- 1 | #import "SMXTabBarManager.h" 2 | #import "SMXTabBar.h" 3 | #import "RCTBridge.h" 4 | 5 | @implementation SMXTabBarManager 6 | 7 | @synthesize bridge = _bridge; 8 | 9 | RCT_EXPORT_MODULE() 10 | 11 | - (UIView *)view 12 | { 13 | return [[SMXTabBar alloc] initWithEventDispatcher:_bridge.eventDispatcher]; 14 | } 15 | 16 | - (dispatch_queue_t)methodQueue 17 | { 18 | return dispatch_get_main_queue(); 19 | } 20 | 21 | RCT_EXPORT_VIEW_PROPERTY(barTintColor, UIColor); 22 | RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor); 23 | RCT_EXPORT_VIEW_PROPERTY(translucent, BOOL); 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/FAKIcon.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | /** 5 | * Abstract superclass for icons, should not be used directly. You can subclass this class to provide new icon font support. 6 | */ 7 | @interface FAKIcon : NSObject 8 | 9 | /** 10 | * The drawing offset of the icon in the image. If you do not specify this property, the icon is centered horizontally and vertically inside the image. 11 | */ 12 | @property (nonatomic) UIOffset drawingPositionAdjustment; 13 | 14 | /** 15 | * The background color of the image while drawing. If you do not specify this property, no background color is drawn. 16 | */ 17 | @property (strong, nonatomic) UIColor *drawingBackgroundColor; 18 | 19 | /** 20 | * The icon font size for the icon. 21 | */ 22 | @property (nonatomic) CGFloat iconFontSize; 23 | 24 | /** 25 | * Register a icon font with it's file url. 26 | * 27 | * @param url The file url for the font, file must exists. 28 | */ 29 | + (void)registerIconFontWithURL:(NSURL *)url; 30 | 31 | /** 32 | * Returns an dictionary of icons available for this icon font. 33 | * 34 | * @return A dictionary of icons. The keys are character codes of icons, the corresponding value for a key is the name for that icon. 35 | */ 36 | + (NSDictionary *)allIcons; 37 | 38 | /** 39 | * Creates and returns an icon font object for the specified size. This is an abstract method and subclasses must provide an implementation. 40 | * 41 | * @param size The size (in points) to which the font is scaled. This value must be greater than 0.0. 42 | * 43 | * @return A font object of the specified name and size. 44 | */ 45 | + (UIFont *)iconFontWithSize:(CGFloat)size; 46 | 47 | /** 48 | * Creates and returns a FAKIcon object for the specified character code and size. 49 | * 50 | * @param code A string represents a character code. Like @"\uf000" 51 | * @param size The desired size (in points) of the icon font that will be used for the icon. This value must be greater than 0.0. 52 | * 53 | * @return Returns a FAKIcon object. 54 | */ 55 | + (instancetype)iconWithCode:(NSString *)code size:(CGFloat)size; 56 | 57 | /** 58 | * Adds an attribute with the given name and value to the icon. 59 | * 60 | * @param attrs A dictionary containing the text attributes to set. These attributes will be used to create attributedString when you call -attributedString on the receiver. For information about system-supplied attribute keys, See NSAttributedString UIKit Additions Reference (https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSAttributedString_UIKit_Additions/Reference/Reference.html#//apple_ref/doc/uid/TP40011688-CH1-SW16) 61 | * @warning You should not set the NSFontAttributeName attribute to another font. 62 | */ 63 | - (void)setAttributes:(NSDictionary *)attrs; 64 | 65 | /** 66 | * Adds an attribute with the given name and value to the icon. 67 | * 68 | * @param name A string specifying the attribute name. 69 | * @param value Adds an attribute with the given name and value to the icon. 70 | */ 71 | - (void)addAttribute:(NSString *)name value:(id)value; 72 | 73 | /** 74 | * Adds the given collection of attributes to the icon. 75 | * 76 | * @param attrs A dictionary containing the attributes to add. 77 | */ 78 | - (void)addAttributes:(NSDictionary *)attrs; 79 | 80 | /** 81 | * Removes the named attribute from the icon. 82 | * 83 | * @param name A string specifying the attribute name to remove. 84 | */ 85 | - (void)removeAttribute:(NSString *)name; 86 | 87 | /** 88 | * Returns the attributes for the icon. 89 | * 90 | * @return The attributes for the icon. 91 | */ 92 | - (NSDictionary *)attributes; 93 | 94 | /** 95 | * Returns the value for an attribute with a given name of the icon. 96 | * 97 | * @param attrName The name of an attribute. 98 | * 99 | * @return The value for an attribute with a given name of the icon, or nil if there is no such attribute. 100 | */ 101 | - (id)attribute:(NSString *)attrName; 102 | 103 | /** 104 | * Creates and returns a NSAttributedString with specified attributes for the receiver. 105 | * 106 | * @return A NSAttributedString with specifed attributes. 107 | */ 108 | - (NSAttributedString *)attributedString; 109 | 110 | /** 111 | * Returns the character code of the icon. 112 | * 113 | * @return The character code of the icon. 114 | */ 115 | - (NSString *)characterCode; 116 | 117 | /** 118 | * Returns the name of the icon. 119 | * 120 | * @return The name of the icon. 121 | */ 122 | - (NSString *)iconName; 123 | 124 | /** 125 | * Returns the icon font of the icon. 126 | * 127 | * @return The icon font of the icon. 128 | */ 129 | - (UIFont *)iconFont; 130 | 131 | /** 132 | * Draws the icon on an image. The icon will be centered horizontally and vertically by default. You can set the drawingPostionAdjustment property to adjust drawing offset. 133 | * 134 | * @param imageSize Height and width for the image. 135 | * 136 | * @return An image with the icon. 137 | */ 138 | - (UIImage *)imageWithSize:(CGSize)imageSize; 139 | 140 | @end 141 | 142 | @interface UIImage (FAKAddon) 143 | 144 | /** 145 | * Draws the FAKIcons in an array on an image. These icons will be centered horizontally and vertically by default. You can set the drawingPostionAdjustment property to adjust drawing offset for each icon. 146 | * 147 | * @param icons The icons to be drawn. The first icon will be drawn on the bottom and the last icon will be drawn on the top. 148 | * @param imageSize Height and width for the generated image. 149 | * 150 | * @return An image with the icons. 151 | */ 152 | + (UIImage *)imageWithStackedIcons:(NSArray *)icons imageSize:(CGSize)imageSize; 153 | 154 | @end 155 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/FAKIcon.m: -------------------------------------------------------------------------------- 1 | #import "FAKIcon.h" 2 | #import 3 | 4 | @interface FAKIcon () 5 | 6 | @property (strong, nonatomic) NSMutableAttributedString *mutableAttributedString; 7 | 8 | @end 9 | 10 | @implementation FAKIcon 11 | 12 | + (void)registerIconFontWithURL:(NSURL *)url 13 | { 14 | NSAssert([[NSFileManager defaultManager] fileExistsAtPath:[url path]], @"Font file doesn't exist"); 15 | CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url); 16 | CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider); 17 | CGDataProviderRelease(fontDataProvider); 18 | CFErrorRef error = NULL; 19 | CTFontManagerRegisterGraphicsFont(newFont, &error); 20 | CGFontRelease(newFont); 21 | 22 | if (error) { 23 | CFRelease(error); 24 | } 25 | } 26 | 27 | + (NSDictionary *)allIcons 28 | { 29 | @throw @"You need to implement this method in subclass."; 30 | } 31 | 32 | + (UIFont *)iconFontWithSize:(CGFloat)size 33 | { 34 | @throw @"You need to implement this method in subclass."; 35 | } 36 | 37 | + (instancetype)iconWithCode:(NSString *)code size:(CGFloat)size 38 | { 39 | FAKIcon *icon = [[self alloc] init]; 40 | icon.mutableAttributedString = [[NSMutableAttributedString alloc] initWithString:code attributes:@{NSFontAttributeName: [self iconFontWithSize:size]}]; 41 | return icon; 42 | } 43 | 44 | - (NSAttributedString *)attributedString 45 | { 46 | return [self.mutableAttributedString copy]; 47 | } 48 | 49 | - (NSString *)characterCode 50 | { 51 | return [self.mutableAttributedString string]; 52 | } 53 | 54 | - (NSString *)iconName 55 | { 56 | return [[self class] allIcons][[self characterCode]]; 57 | } 58 | 59 | - (CGFloat)iconFontSize 60 | { 61 | return [self iconFont].pointSize; 62 | } 63 | 64 | - (void)setIconFontSize:(CGFloat)iconSize 65 | { 66 | [self addAttribute:NSFontAttributeName value:[[self iconFont] fontWithSize:iconSize]]; 67 | } 68 | 69 | #pragma mark - Setting and Getting Attributes 70 | 71 | - (void)setAttributes:(NSDictionary *)attrs; 72 | { 73 | if (!attrs[NSFontAttributeName]) { 74 | NSMutableDictionary *mutableAttrs = [attrs mutableCopy]; 75 | mutableAttrs[NSFontAttributeName] = self.iconFont; 76 | attrs = [mutableAttrs copy]; 77 | } 78 | [self.mutableAttributedString setAttributes:attrs range:[self rangeForMutableAttributedText]] ; 79 | } 80 | 81 | - (void)addAttribute:(NSString *)name value:(id)value 82 | { 83 | [self.mutableAttributedString addAttribute:name value:value range:[self rangeForMutableAttributedText]]; 84 | } 85 | 86 | - (void)addAttributes:(NSDictionary *)attrs 87 | { 88 | [self.mutableAttributedString addAttributes:attrs range:[self rangeForMutableAttributedText]]; 89 | } 90 | 91 | - (void)removeAttribute:(NSString *)name 92 | { 93 | [self.mutableAttributedString removeAttribute:name range:[self rangeForMutableAttributedText]]; 94 | } 95 | 96 | - (NSDictionary *)attributes 97 | { 98 | return [self.mutableAttributedString attributesAtIndex:0 effectiveRange:NULL]; 99 | } 100 | 101 | - (id)attribute:(NSString *)attrName 102 | { 103 | return [self.mutableAttributedString attribute:attrName atIndex:0 effectiveRange:NULL]; 104 | } 105 | 106 | - (NSRange)rangeForMutableAttributedText 107 | { 108 | return NSMakeRange(0, [self.mutableAttributedString length]); 109 | } 110 | 111 | - (UIFont *)iconFont 112 | { 113 | return [self attribute:NSFontAttributeName]; 114 | } 115 | 116 | #pragma mark - Image Drawing 117 | 118 | - (UIImage *)imageWithSize:(CGSize)imageSize 119 | { 120 | UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0); 121 | 122 | // ---------- begin context ---------- 123 | CGContextRef context = UIGraphicsGetCurrentContext(); 124 | 125 | [self fillBackgroundForContext:context backgroundSize:imageSize]; 126 | 127 | [self.mutableAttributedString drawInRect:[self drawingRectWithImageSize:imageSize]]; 128 | UIImage *iconImage = UIGraphicsGetImageFromCurrentImageContext(); 129 | 130 | // ---------- end context ---------- 131 | UIGraphicsEndImageContext(); 132 | 133 | return iconImage; 134 | } 135 | 136 | - (void)fillBackgroundForContext:(CGContextRef)context backgroundSize:(CGSize)size 137 | { 138 | if (self.drawingBackgroundColor) { 139 | [self.drawingBackgroundColor setFill]; 140 | CGContextFillRect(context, CGRectMake(0, 0, size.width, size.height)); 141 | } 142 | } 143 | 144 | // Calculate the correct drawing position 145 | - (CGRect)drawingRectWithImageSize:(CGSize)imageSize 146 | { 147 | CGSize iconSize = [self.mutableAttributedString size]; 148 | CGFloat xOffset = (imageSize.width - iconSize.width) / 2.0; 149 | xOffset += self.drawingPositionAdjustment.horizontal; 150 | CGFloat yOffset = (imageSize.height - iconSize.height) / 2.0; 151 | yOffset += self.drawingPositionAdjustment.vertical; 152 | return CGRectMake(xOffset, yOffset, iconSize.width, iconSize.height); 153 | } 154 | 155 | @end 156 | 157 | #pragma mark - Stacked Icons 158 | 159 | @implementation UIImage (FAKAddon) 160 | 161 | + (UIImage *)imageWithStackedIcons:(NSArray *)icons imageSize:(CGSize)imageSize 162 | { 163 | UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0); 164 | 165 | // ---------- begin context ---------- 166 | CGContextRef context = UIGraphicsGetCurrentContext(); 167 | 168 | for (FAKIcon *icon in icons) { 169 | NSAssert([icon isKindOfClass:[FAKIcon class]], @"You can only stack FAKIcon derived objects."); 170 | [icon fillBackgroundForContext:context backgroundSize:imageSize]; 171 | [icon.mutableAttributedString drawInRect:[icon drawingRectWithImageSize:imageSize]]; 172 | } 173 | 174 | UIImage *iconImage = UIGraphicsGetImageFromCurrentImageContext(); 175 | 176 | // ---------- end context ---------- 177 | UIGraphicsEndImageContext(); 178 | 179 | return iconImage; 180 | } 181 | 182 | @end 183 | 184 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/FAKZocial.h: -------------------------------------------------------------------------------- 1 | #import "FAKIcon.h" 2 | 3 | @interface FAKZocial : FAKIcon 4 | 5 | // Generated Code 6 | + (instancetype)acrobatIconWithSize:(CGFloat)size; 7 | + (instancetype)amazonIconWithSize:(CGFloat)size; 8 | + (instancetype)androidIconWithSize:(CGFloat)size; 9 | + (instancetype)angellistIconWithSize:(CGFloat)size; 10 | + (instancetype)aolIconWithSize:(CGFloat)size; 11 | + (instancetype)appnetIconWithSize:(CGFloat)size; 12 | + (instancetype)appstoreIconWithSize:(CGFloat)size; 13 | + (instancetype)bitbucketIconWithSize:(CGFloat)size; 14 | + (instancetype)bitcoinIconWithSize:(CGFloat)size; 15 | + (instancetype)bloggerIconWithSize:(CGFloat)size; 16 | + (instancetype)bufferIconWithSize:(CGFloat)size; 17 | + (instancetype)callIconWithSize:(CGFloat)size; 18 | + (instancetype)calIconWithSize:(CGFloat)size; 19 | + (instancetype)cartIconWithSize:(CGFloat)size; 20 | + (instancetype)chromeIconWithSize:(CGFloat)size; 21 | + (instancetype)cloudappIconWithSize:(CGFloat)size; 22 | + (instancetype)creativecommonsIconWithSize:(CGFloat)size; 23 | + (instancetype)deliciousIconWithSize:(CGFloat)size; 24 | + (instancetype)diggIconWithSize:(CGFloat)size; 25 | + (instancetype)disqusIconWithSize:(CGFloat)size; 26 | + (instancetype)dribbbleIconWithSize:(CGFloat)size; 27 | + (instancetype)dropboxIconWithSize:(CGFloat)size; 28 | + (instancetype)drupalIconWithSize:(CGFloat)size; 29 | + (instancetype)dwollaIconWithSize:(CGFloat)size; 30 | + (instancetype)emailIconWithSize:(CGFloat)size; 31 | + (instancetype)eventasaurusIconWithSize:(CGFloat)size; 32 | + (instancetype)eventbriteIconWithSize:(CGFloat)size; 33 | + (instancetype)eventfulIconWithSize:(CGFloat)size; 34 | + (instancetype)evernoteIconWithSize:(CGFloat)size; 35 | + (instancetype)facebookIconWithSize:(CGFloat)size; 36 | + (instancetype)fivehundredpxIconWithSize:(CGFloat)size; 37 | + (instancetype)flattrIconWithSize:(CGFloat)size; 38 | + (instancetype)flickrIconWithSize:(CGFloat)size; 39 | + (instancetype)forrstIconWithSize:(CGFloat)size; 40 | + (instancetype)foursquareIconWithSize:(CGFloat)size; 41 | + (instancetype)githubIconWithSize:(CGFloat)size; 42 | + (instancetype)gmailIconWithSize:(CGFloat)size; 43 | + (instancetype)googleIconWithSize:(CGFloat)size; 44 | + (instancetype)googleplayIconWithSize:(CGFloat)size; 45 | + (instancetype)googleplusIconWithSize:(CGFloat)size; 46 | + (instancetype)gowallaIconWithSize:(CGFloat)size; 47 | + (instancetype)groovesharkIconWithSize:(CGFloat)size; 48 | + (instancetype)guestIconWithSize:(CGFloat)size; 49 | + (instancetype)html5IconWithSize:(CGFloat)size; 50 | + (instancetype)ieIconWithSize:(CGFloat)size; 51 | + (instancetype)instagramIconWithSize:(CGFloat)size; 52 | + (instancetype)instapaperIconWithSize:(CGFloat)size; 53 | + (instancetype)intensedebateIconWithSize:(CGFloat)size; 54 | + (instancetype)itunesIconWithSize:(CGFloat)size; 55 | + (instancetype)kloutIconWithSize:(CGFloat)size; 56 | + (instancetype)lanyrdIconWithSize:(CGFloat)size; 57 | + (instancetype)lastfmIconWithSize:(CGFloat)size; 58 | + (instancetype)legoIconWithSize:(CGFloat)size; 59 | + (instancetype)linkedinIconWithSize:(CGFloat)size; 60 | + (instancetype)lkdtoIconWithSize:(CGFloat)size; 61 | + (instancetype)logmeinIconWithSize:(CGFloat)size; 62 | + (instancetype)macstoreIconWithSize:(CGFloat)size; 63 | + (instancetype)meetupIconWithSize:(CGFloat)size; 64 | + (instancetype)myspaceIconWithSize:(CGFloat)size; 65 | + (instancetype)ninetyninedesignsIconWithSize:(CGFloat)size; 66 | + (instancetype)openidIconWithSize:(CGFloat)size; 67 | + (instancetype)opentableIconWithSize:(CGFloat)size; 68 | + (instancetype)paypalIconWithSize:(CGFloat)size; 69 | + (instancetype)pinboardIconWithSize:(CGFloat)size; 70 | + (instancetype)pinterestIconWithSize:(CGFloat)size; 71 | + (instancetype)plancastIconWithSize:(CGFloat)size; 72 | + (instancetype)plurkIconWithSize:(CGFloat)size; 73 | + (instancetype)pocketIconWithSize:(CGFloat)size; 74 | + (instancetype)podcastIconWithSize:(CGFloat)size; 75 | + (instancetype)posterousIconWithSize:(CGFloat)size; 76 | + (instancetype)printIconWithSize:(CGFloat)size; 77 | + (instancetype)quoraIconWithSize:(CGFloat)size; 78 | + (instancetype)redditIconWithSize:(CGFloat)size; 79 | + (instancetype)rssIconWithSize:(CGFloat)size; 80 | + (instancetype)scribdIconWithSize:(CGFloat)size; 81 | + (instancetype)skypeIconWithSize:(CGFloat)size; 82 | + (instancetype)smashingIconWithSize:(CGFloat)size; 83 | + (instancetype)songkickIconWithSize:(CGFloat)size; 84 | + (instancetype)soundcloudIconWithSize:(CGFloat)size; 85 | + (instancetype)spotifyIconWithSize:(CGFloat)size; 86 | + (instancetype)stackoverflowIconWithSize:(CGFloat)size; 87 | + (instancetype)statusnetIconWithSize:(CGFloat)size; 88 | + (instancetype)steamIconWithSize:(CGFloat)size; 89 | + (instancetype)stripeIconWithSize:(CGFloat)size; 90 | + (instancetype)stumbleuponIconWithSize:(CGFloat)size; 91 | + (instancetype)tumblrIconWithSize:(CGFloat)size; 92 | + (instancetype)twitterIconWithSize:(CGFloat)size; 93 | + (instancetype)viadeoIconWithSize:(CGFloat)size; 94 | + (instancetype)vimeoIconWithSize:(CGFloat)size; 95 | + (instancetype)vkIconWithSize:(CGFloat)size; 96 | + (instancetype)weiboIconWithSize:(CGFloat)size; 97 | + (instancetype)wikipediaIconWithSize:(CGFloat)size; 98 | + (instancetype)windowsIconWithSize:(CGFloat)size; 99 | + (instancetype)wordpressIconWithSize:(CGFloat)size; 100 | + (instancetype)xingIconWithSize:(CGFloat)size; 101 | + (instancetype)yahooIconWithSize:(CGFloat)size; 102 | + (instancetype)ycombinatorIconWithSize:(CGFloat)size; 103 | + (instancetype)yelpIconWithSize:(CGFloat)size; 104 | + (instancetype)youtubeIconWithSize:(CGFloat)size; 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/FAKZocial.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "FAKZocial.h" 4 | 5 | @implementation FAKZocial 6 | 7 | + (UIFont *)iconFontWithSize:(CGFloat)size 8 | { 9 | #ifndef DISABLE_ZOCIAL_AUTO_REGISTRATION 10 | static dispatch_once_t onceToken; 11 | dispatch_once(&onceToken, ^{ 12 | [self registerIconFontWithURL: [[NSBundle mainBundle] URLForResource:@"zocial-regular-webfont" withExtension:@"ttf"]]; 13 | }); 14 | #endif 15 | 16 | UIFont *font = [UIFont fontWithName:@"Zocial" size:size]; 17 | NSAssert(font, @"UIFont object should not be nil, check if the font file is added to the application bundle and you're using the correct font name."); 18 | return font; 19 | } 20 | 21 | // Generated Code 22 | + (instancetype)acrobatIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E3" size:size]; } 23 | + (instancetype)amazonIconWithSize:(CGFloat)size { return [self iconWithCode:@"a" size:size]; } 24 | + (instancetype)androidIconWithSize:(CGFloat)size { return [self iconWithCode:@"&" size:size]; } 25 | + (instancetype)angellistIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00D6" size:size]; } 26 | + (instancetype)aolIconWithSize:(CGFloat)size { return [self iconWithCode:@"\"" size:size]; } 27 | + (instancetype)appnetIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E1" size:size]; } 28 | + (instancetype)appstoreIconWithSize:(CGFloat)size { return [self iconWithCode:@"A" size:size]; } 29 | + (instancetype)bitbucketIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E9" size:size]; } 30 | + (instancetype)bitcoinIconWithSize:(CGFloat)size { return [self iconWithCode:@"2" size:size]; } 31 | + (instancetype)bloggerIconWithSize:(CGFloat)size { return [self iconWithCode:@"B" size:size]; } 32 | + (instancetype)bufferIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E5" size:size]; } 33 | + (instancetype)callIconWithSize:(CGFloat)size { return [self iconWithCode:@"7" size:size]; } 34 | + (instancetype)calIconWithSize:(CGFloat)size { return [self iconWithCode:@"." size:size]; } 35 | + (instancetype)cartIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00C9" size:size]; } 36 | + (instancetype)chromeIconWithSize:(CGFloat)size { return [self iconWithCode:@"[" size:size]; } 37 | + (instancetype)cloudappIconWithSize:(CGFloat)size { return [self iconWithCode:@"c" size:size]; } 38 | + (instancetype)creativecommonsIconWithSize:(CGFloat)size { return [self iconWithCode:@"C" size:size]; } 39 | + (instancetype)deliciousIconWithSize:(CGFloat)size { return [self iconWithCode:@"#" size:size]; } 40 | + (instancetype)diggIconWithSize:(CGFloat)size { return [self iconWithCode:@";" size:size]; } 41 | + (instancetype)disqusIconWithSize:(CGFloat)size { return [self iconWithCode:@"Q" size:size]; } 42 | + (instancetype)dribbbleIconWithSize:(CGFloat)size { return [self iconWithCode:@"D" size:size]; } 43 | + (instancetype)dropboxIconWithSize:(CGFloat)size { return [self iconWithCode:@"d" size:size]; } 44 | + (instancetype)drupalIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E4" size:size]; } 45 | + (instancetype)dwollaIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E0" size:size]; } 46 | + (instancetype)emailIconWithSize:(CGFloat)size { return [self iconWithCode:@"]" size:size]; } 47 | + (instancetype)eventasaurusIconWithSize:(CGFloat)size { return [self iconWithCode:@"v" size:size]; } 48 | + (instancetype)eventbriteIconWithSize:(CGFloat)size { return [self iconWithCode:@"|" size:size]; } 49 | + (instancetype)eventfulIconWithSize:(CGFloat)size { return [self iconWithCode:@"'" size:size]; } 50 | + (instancetype)evernoteIconWithSize:(CGFloat)size { return [self iconWithCode:@"E" size:size]; } 51 | + (instancetype)facebookIconWithSize:(CGFloat)size { return [self iconWithCode:@"f" size:size]; } 52 | + (instancetype)fivehundredpxIconWithSize:(CGFloat)size { return [self iconWithCode:@"0" size:size]; } 53 | + (instancetype)flattrIconWithSize:(CGFloat)size { return [self iconWithCode:@"%" size:size]; } 54 | + (instancetype)flickrIconWithSize:(CGFloat)size { return [self iconWithCode:@"F" size:size]; } 55 | + (instancetype)forrstIconWithSize:(CGFloat)size { return [self iconWithCode:@":" size:size]; } 56 | + (instancetype)foursquareIconWithSize:(CGFloat)size { return [self iconWithCode:@"4" size:size]; } 57 | + (instancetype)githubIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E8" size:size]; } 58 | + (instancetype)gmailIconWithSize:(CGFloat)size { return [self iconWithCode:@"m" size:size]; } 59 | + (instancetype)googleIconWithSize:(CGFloat)size { return [self iconWithCode:@"G" size:size]; } 60 | + (instancetype)googleplayIconWithSize:(CGFloat)size { return [self iconWithCode:@"h" size:size]; } 61 | + (instancetype)googleplusIconWithSize:(CGFloat)size { return [self iconWithCode:@"+" size:size]; } 62 | + (instancetype)gowallaIconWithSize:(CGFloat)size { return [self iconWithCode:@"@" size:size]; } 63 | + (instancetype)groovesharkIconWithSize:(CGFloat)size { return [self iconWithCode:@"8" size:size]; } 64 | + (instancetype)guestIconWithSize:(CGFloat)size { return [self iconWithCode:@"?" size:size]; } 65 | + (instancetype)html5IconWithSize:(CGFloat)size { return [self iconWithCode:@"5" size:size]; } 66 | + (instancetype)ieIconWithSize:(CGFloat)size { return [self iconWithCode:@"6" size:size]; } 67 | + (instancetype)instagramIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00DC" size:size]; } 68 | + (instancetype)instapaperIconWithSize:(CGFloat)size { return [self iconWithCode:@"I" size:size]; } 69 | + (instancetype)intensedebateIconWithSize:(CGFloat)size { return [self iconWithCode:@"{" size:size]; } 70 | + (instancetype)itunesIconWithSize:(CGFloat)size { return [self iconWithCode:@"i" size:size]; } 71 | + (instancetype)kloutIconWithSize:(CGFloat)size { return [self iconWithCode:@"K" size:size]; } 72 | + (instancetype)lanyrdIconWithSize:(CGFloat)size { return [self iconWithCode:@"-" size:size]; } 73 | + (instancetype)lastfmIconWithSize:(CGFloat)size { return [self iconWithCode:@"l" size:size]; } 74 | + (instancetype)legoIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00EA" size:size]; } 75 | + (instancetype)linkedinIconWithSize:(CGFloat)size { return [self iconWithCode:@"L" size:size]; } 76 | + (instancetype)lkdtoIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00EE" size:size]; } 77 | + (instancetype)logmeinIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00EB" size:size]; } 78 | + (instancetype)macstoreIconWithSize:(CGFloat)size { return [self iconWithCode:@"^" size:size]; } 79 | + (instancetype)meetupIconWithSize:(CGFloat)size { return [self iconWithCode:@"M" size:size]; } 80 | + (instancetype)myspaceIconWithSize:(CGFloat)size { return [self iconWithCode:@"_" size:size]; } 81 | + (instancetype)ninetyninedesignsIconWithSize:(CGFloat)size { return [self iconWithCode:@"9" size:size]; } 82 | + (instancetype)openidIconWithSize:(CGFloat)size { return [self iconWithCode:@"o" size:size]; } 83 | + (instancetype)opentableIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00C7" size:size]; } 84 | + (instancetype)paypalIconWithSize:(CGFloat)size { return [self iconWithCode:@"$" size:size]; } 85 | + (instancetype)pinboardIconWithSize:(CGFloat)size { return [self iconWithCode:@"n" size:size]; } 86 | + (instancetype)pinterestIconWithSize:(CGFloat)size { return [self iconWithCode:@"1" size:size]; } 87 | + (instancetype)plancastIconWithSize:(CGFloat)size { return [self iconWithCode:@"P" size:size]; } 88 | + (instancetype)plurkIconWithSize:(CGFloat)size { return [self iconWithCode:@"j" size:size]; } 89 | + (instancetype)pocketIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E7" size:size]; } 90 | + (instancetype)podcastIconWithSize:(CGFloat)size { return [self iconWithCode:@"`" size:size]; } 91 | + (instancetype)posterousIconWithSize:(CGFloat)size { return [self iconWithCode:@"~" size:size]; } 92 | + (instancetype)printIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00D1" size:size]; } 93 | + (instancetype)quoraIconWithSize:(CGFloat)size { return [self iconWithCode:@"q" size:size]; } 94 | + (instancetype)redditIconWithSize:(CGFloat)size { return [self iconWithCode:@">" size:size]; } 95 | + (instancetype)rssIconWithSize:(CGFloat)size { return [self iconWithCode:@"R" size:size]; } 96 | + (instancetype)scribdIconWithSize:(CGFloat)size { return [self iconWithCode:@"}" size:size]; } 97 | + (instancetype)skypeIconWithSize:(CGFloat)size { return [self iconWithCode:@"S" size:size]; } 98 | + (instancetype)smashingIconWithSize:(CGFloat)size { return [self iconWithCode:@"*" size:size]; } 99 | + (instancetype)songkickIconWithSize:(CGFloat)size { return [self iconWithCode:@"k" size:size]; } 100 | + (instancetype)soundcloudIconWithSize:(CGFloat)size { return [self iconWithCode:@"s" size:size]; } 101 | + (instancetype)spotifyIconWithSize:(CGFloat)size { return [self iconWithCode:@"=" size:size]; } 102 | + (instancetype)stackoverflowIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00EC" size:size]; } 103 | + (instancetype)statusnetIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00E2" size:size]; } 104 | + (instancetype)steamIconWithSize:(CGFloat)size { return [self iconWithCode:@"b" size:size]; } 105 | + (instancetype)stripeIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00A3" size:size]; } 106 | + (instancetype)stumbleuponIconWithSize:(CGFloat)size { return [self iconWithCode:@"/" size:size]; } 107 | + (instancetype)tumblrIconWithSize:(CGFloat)size { return [self iconWithCode:@"t" size:size]; } 108 | + (instancetype)twitterIconWithSize:(CGFloat)size { return [self iconWithCode:@"T" size:size]; } 109 | + (instancetype)viadeoIconWithSize:(CGFloat)size { return [self iconWithCode:@"H" size:size]; } 110 | + (instancetype)vimeoIconWithSize:(CGFloat)size { return [self iconWithCode:@"V" size:size]; } 111 | + (instancetype)vkIconWithSize:(CGFloat)size { return [self iconWithCode:@"N" size:size]; } 112 | + (instancetype)weiboIconWithSize:(CGFloat)size { return [self iconWithCode:@"J" size:size]; } 113 | + (instancetype)wikipediaIconWithSize:(CGFloat)size { return [self iconWithCode:@"," size:size]; } 114 | + (instancetype)windowsIconWithSize:(CGFloat)size { return [self iconWithCode:@"W" size:size]; } 115 | + (instancetype)wordpressIconWithSize:(CGFloat)size { return [self iconWithCode:@"w" size:size]; } 116 | + (instancetype)xingIconWithSize:(CGFloat)size { return [self iconWithCode:@"X" size:size]; } 117 | + (instancetype)yahooIconWithSize:(CGFloat)size { return [self iconWithCode:@"Y" size:size]; } 118 | + (instancetype)ycombinatorIconWithSize:(CGFloat)size { return [self iconWithCode:@"\u00ED" size:size]; } 119 | + (instancetype)yelpIconWithSize:(CGFloat)size { return [self iconWithCode:@"y" size:size]; } 120 | + (instancetype)youtubeIconWithSize:(CGFloat)size { return [self iconWithCode:@"U" size:size]; } 121 | 122 | + (NSDictionary *)allIcons { 123 | return @{ 124 | @"\u00E3" : @"acrobat", 125 | @"a" : @"amazon", 126 | @"&" : @"android", 127 | @"\u00D6" : @"angellist", 128 | @"\"" : @"aol", 129 | @"\u00E1" : @"appnet", 130 | @"A" : @"appstore", 131 | @"\u00E9" : @"bitbucket", 132 | @"2" : @"bitcoin", 133 | @"B" : @"blogger", 134 | @"\u00E5" : @"buffer", 135 | @"7" : @"call", 136 | @"." : @"cal", 137 | @"\u00C9" : @"cart", 138 | @"[" : @"chrome", 139 | @"c" : @"cloudapp", 140 | @"C" : @"creativecommons", 141 | @"#" : @"delicious", 142 | @";" : @"digg", 143 | @"Q" : @"disqus", 144 | @"D" : @"dribbble", 145 | @"d" : @"dropbox", 146 | @"\u00E4" : @"drupal", 147 | @"\u00E0" : @"dwolla", 148 | @"]" : @"email", 149 | @"v" : @"eventasaurus", 150 | @"|" : @"eventbrite", 151 | @"'" : @"eventful", 152 | @"E" : @"evernote", 153 | @"f" : @"facebook", 154 | @"0" : @"fivehundredpx", 155 | @"%" : @"flattr", 156 | @"F" : @"flickr", 157 | @":" : @"forrst", 158 | @"4" : @"foursquare", 159 | @"\u00E8" : @"github", 160 | @"m" : @"gmail", 161 | @"G" : @"google", 162 | @"h" : @"googleplay", 163 | @"+" : @"googleplus", 164 | @"@" : @"gowalla", 165 | @"8" : @"grooveshark", 166 | @"?" : @"guest", 167 | @"5" : @"html5", 168 | @"6" : @"ie", 169 | @"\u00DC" : @"instagram", 170 | @"I" : @"instapaper", 171 | @"{" : @"intensedebate", 172 | @"i" : @"itunes", 173 | @"K" : @"klout", 174 | @"-" : @"lanyrd", 175 | @"l" : @"lastfm", 176 | @"\u00EA" : @"lego", 177 | @"L" : @"linkedin", 178 | @"\u00EE" : @"lkdto", 179 | @"\u00EB" : @"logmein", 180 | @"^" : @"macstore", 181 | @"M" : @"meetup", 182 | @"_" : @"myspace", 183 | @"9" : @"ninetyninedesigns", 184 | @"o" : @"openid", 185 | @"\u00C7" : @"opentable", 186 | @"$" : @"paypal", 187 | @"n" : @"pinboard", 188 | @"1" : @"pinterest", 189 | @"P" : @"plancast", 190 | @"j" : @"plurk", 191 | @"\u00E7" : @"pocket", 192 | @"`" : @"podcast", 193 | @"~" : @"posterous", 194 | @"\u00D1" : @"print", 195 | @"q" : @"quora", 196 | @">" : @"reddit", 197 | @"R" : @"rss", 198 | @"}" : @"scribd", 199 | @"S" : @"skype", 200 | @"*" : @"smashing", 201 | @"k" : @"songkick", 202 | @"s" : @"soundcloud", 203 | @"=" : @"spotify", 204 | @"\u00EC" : @"stackoverflow", 205 | @"\u00E2" : @"statusnet", 206 | @"b" : @"steam", 207 | @"\u00A3" : @"stripe", 208 | @"/" : @"stumbleupon", 209 | @"t" : @"tumblr", 210 | @"T" : @"twitter", 211 | @"H" : @"viadeo", 212 | @"V" : @"vimeo", 213 | @"N" : @"vk", 214 | @"J" : @"weibo", 215 | @"," : @"wikipedia", 216 | @"W" : @"windows", 217 | @"w" : @"wordpress", 218 | @"X" : @"xing", 219 | @"Y" : @"yahoo", 220 | @"\u00ED" : @"ycombinator", 221 | @"y" : @"yelp", 222 | @"U" : @"youtube", 223 | 224 | }; 225 | } 226 | 227 | 228 | @end 229 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/iOS/ReactNativeIcons/Libraries/FontAwesomeKit/FontAwesome.otf -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/FontAwesomeKit.h: -------------------------------------------------------------------------------- 1 | #ifndef FontAwesomeKit 2 | 3 | #define FontAwesomeKit 4 | 5 | #import "FAKIcon.h" 6 | #import "FAKFontAwesome.h" 7 | #import "FAKFoundationIcons.h" 8 | #import "FAKZocial.h" 9 | #import "FAKIonIcons.h" 10 | #import "FAKMaterial.h" 11 | #import "FAKOcticons.h" 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/Material-Design-Iconic-Font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/iOS/ReactNativeIcons/Libraries/FontAwesomeKit/Material-Design-Iconic-Font.ttf -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/foundation-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/iOS/ReactNativeIcons/Libraries/FontAwesomeKit/foundation-icons.ttf -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/iOS/ReactNativeIcons/Libraries/FontAwesomeKit/ionicons.ttf -------------------------------------------------------------------------------- /iOS/ReactNativeIcons/Libraries/FontAwesomeKit/zocial-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/iOS/ReactNativeIcons/Libraries/FontAwesomeKit/zocial-regular-webfont.ttf -------------------------------------------------------------------------------- /index.android.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | Icon: require('./SMXIconImage.android'), 3 | Spinner: require('./SMXLoadingImage.android') 4 | }; 5 | -------------------------------------------------------------------------------- /index.ios.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | Icon: require('./SMXIconImage.ios'), 3 | TabBarIOS: require('./SMXTabBarIOS.ios'), 4 | Spinner: require('./SMXLoadingImage.ios') 5 | }; 6 | -------------------------------------------------------------------------------- /ios/ReactNativeIcons/Libraries/FontAwesomeKit/FAKOcticons.h: -------------------------------------------------------------------------------- 1 | #import "FAKIcon.h" 2 | 3 | @interface FAKOcticons : FAKIcon 4 | 5 | // Generated Code 6 | + (instancetype)alertIconWithSize:(CGFloat)size; 7 | + (instancetype)alignmentAlignIconWithSize:(CGFloat)size; 8 | + (instancetype)alignmentAlignedToIconWithSize:(CGFloat)size; 9 | + (instancetype)alignmentUnalignIconWithSize:(CGFloat)size; 10 | + (instancetype)arrowDownIconWithSize:(CGFloat)size; 11 | + (instancetype)arrowLeftIconWithSize:(CGFloat)size; 12 | + (instancetype)arrowRightIconWithSize:(CGFloat)size; 13 | + (instancetype)arrowSmallDownIconWithSize:(CGFloat)size; 14 | + (instancetype)arrowSmallLeftIconWithSize:(CGFloat)size; 15 | + (instancetype)arrowSmallRightIconWithSize:(CGFloat)size; 16 | + (instancetype)arrowSmallUpIconWithSize:(CGFloat)size; 17 | + (instancetype)arrowUpIconWithSize:(CGFloat)size; 18 | + (instancetype)beerIconWithSize:(CGFloat)size; 19 | + (instancetype)bookIconWithSize:(CGFloat)size; 20 | + (instancetype)bookmarkIconWithSize:(CGFloat)size; 21 | + (instancetype)briefcaseIconWithSize:(CGFloat)size; 22 | + (instancetype)broadcastIconWithSize:(CGFloat)size; 23 | + (instancetype)browserIconWithSize:(CGFloat)size; 24 | + (instancetype)bugIconWithSize:(CGFloat)size; 25 | + (instancetype)calendarIconWithSize:(CGFloat)size; 26 | + (instancetype)checkIconWithSize:(CGFloat)size; 27 | + (instancetype)checklistIconWithSize:(CGFloat)size; 28 | + (instancetype)chevronDownIconWithSize:(CGFloat)size; 29 | + (instancetype)chevronLeftIconWithSize:(CGFloat)size; 30 | + (instancetype)chevronRightIconWithSize:(CGFloat)size; 31 | + (instancetype)chevronUpIconWithSize:(CGFloat)size; 32 | + (instancetype)circleSlashIconWithSize:(CGFloat)size; 33 | + (instancetype)circuitBoardIconWithSize:(CGFloat)size; 34 | + (instancetype)clippyIconWithSize:(CGFloat)size; 35 | + (instancetype)clockIconWithSize:(CGFloat)size; 36 | + (instancetype)cloudDownloadIconWithSize:(CGFloat)size; 37 | + (instancetype)cloudUploadIconWithSize:(CGFloat)size; 38 | + (instancetype)codeIconWithSize:(CGFloat)size; 39 | + (instancetype)colorModeIconWithSize:(CGFloat)size; 40 | + (instancetype)commentAddIconWithSize:(CGFloat)size; 41 | + (instancetype)commentIconWithSize:(CGFloat)size; 42 | + (instancetype)commentDiscussionIconWithSize:(CGFloat)size; 43 | + (instancetype)creditCardIconWithSize:(CGFloat)size; 44 | + (instancetype)dashIconWithSize:(CGFloat)size; 45 | + (instancetype)dashboardIconWithSize:(CGFloat)size; 46 | + (instancetype)databaseIconWithSize:(CGFloat)size; 47 | + (instancetype)deviceCameraIconWithSize:(CGFloat)size; 48 | + (instancetype)deviceCameraVideoIconWithSize:(CGFloat)size; 49 | + (instancetype)deviceDesktopIconWithSize:(CGFloat)size; 50 | + (instancetype)deviceMobileIconWithSize:(CGFloat)size; 51 | + (instancetype)diffIconWithSize:(CGFloat)size; 52 | + (instancetype)diffAddedIconWithSize:(CGFloat)size; 53 | + (instancetype)diffIgnoredIconWithSize:(CGFloat)size; 54 | + (instancetype)diffModifiedIconWithSize:(CGFloat)size; 55 | + (instancetype)diffRemovedIconWithSize:(CGFloat)size; 56 | + (instancetype)diffRenamedIconWithSize:(CGFloat)size; 57 | + (instancetype)ellipsisIconWithSize:(CGFloat)size; 58 | + (instancetype)eyeUnwatchIconWithSize:(CGFloat)size; 59 | + (instancetype)eyeWatchIconWithSize:(CGFloat)size; 60 | + (instancetype)eyeIconWithSize:(CGFloat)size; 61 | + (instancetype)fileBinaryIconWithSize:(CGFloat)size; 62 | + (instancetype)fileCodeIconWithSize:(CGFloat)size; 63 | + (instancetype)fileDirectoryIconWithSize:(CGFloat)size; 64 | + (instancetype)fileMediaIconWithSize:(CGFloat)size; 65 | + (instancetype)filePdfIconWithSize:(CGFloat)size; 66 | + (instancetype)fileSubmoduleIconWithSize:(CGFloat)size; 67 | + (instancetype)fileSymlinkDirectoryIconWithSize:(CGFloat)size; 68 | + (instancetype)fileSymlinkFileIconWithSize:(CGFloat)size; 69 | + (instancetype)fileTextIconWithSize:(CGFloat)size; 70 | + (instancetype)fileZipIconWithSize:(CGFloat)size; 71 | + (instancetype)flameIconWithSize:(CGFloat)size; 72 | + (instancetype)foldIconWithSize:(CGFloat)size; 73 | + (instancetype)gearIconWithSize:(CGFloat)size; 74 | + (instancetype)giftIconWithSize:(CGFloat)size; 75 | + (instancetype)gistIconWithSize:(CGFloat)size; 76 | + (instancetype)gistSecretIconWithSize:(CGFloat)size; 77 | + (instancetype)gitBranchCreateIconWithSize:(CGFloat)size; 78 | + (instancetype)gitBranchDeleteIconWithSize:(CGFloat)size; 79 | + (instancetype)gitBranchIconWithSize:(CGFloat)size; 80 | + (instancetype)gitCommitIconWithSize:(CGFloat)size; 81 | + (instancetype)gitCompareIconWithSize:(CGFloat)size; 82 | + (instancetype)gitMergeIconWithSize:(CGFloat)size; 83 | + (instancetype)gitPullRequestAbandonedIconWithSize:(CGFloat)size; 84 | + (instancetype)gitPullRequestIconWithSize:(CGFloat)size; 85 | + (instancetype)globeIconWithSize:(CGFloat)size; 86 | + (instancetype)graphIconWithSize:(CGFloat)size; 87 | + (instancetype)heartIconWithSize:(CGFloat)size; 88 | + (instancetype)historyIconWithSize:(CGFloat)size; 89 | + (instancetype)homeIconWithSize:(CGFloat)size; 90 | + (instancetype)horizontalRuleIconWithSize:(CGFloat)size; 91 | + (instancetype)hourglassIconWithSize:(CGFloat)size; 92 | + (instancetype)hubotIconWithSize:(CGFloat)size; 93 | + (instancetype)inboxIconWithSize:(CGFloat)size; 94 | + (instancetype)infoIconWithSize:(CGFloat)size; 95 | + (instancetype)issueClosedIconWithSize:(CGFloat)size; 96 | + (instancetype)issueOpenedIconWithSize:(CGFloat)size; 97 | + (instancetype)issueReopenedIconWithSize:(CGFloat)size; 98 | + (instancetype)jerseyIconWithSize:(CGFloat)size; 99 | + (instancetype)jumpDownIconWithSize:(CGFloat)size; 100 | + (instancetype)jumpLeftIconWithSize:(CGFloat)size; 101 | + (instancetype)jumpRightIconWithSize:(CGFloat)size; 102 | + (instancetype)jumpUpIconWithSize:(CGFloat)size; 103 | + (instancetype)keyIconWithSize:(CGFloat)size; 104 | + (instancetype)keyboardIconWithSize:(CGFloat)size; 105 | + (instancetype)lawIconWithSize:(CGFloat)size; 106 | + (instancetype)lightBulbIconWithSize:(CGFloat)size; 107 | + (instancetype)linkIconWithSize:(CGFloat)size; 108 | + (instancetype)linkExternalIconWithSize:(CGFloat)size; 109 | + (instancetype)listOrderedIconWithSize:(CGFloat)size; 110 | + (instancetype)listUnorderedIconWithSize:(CGFloat)size; 111 | + (instancetype)locationIconWithSize:(CGFloat)size; 112 | + (instancetype)gistPrivateIconWithSize:(CGFloat)size; 113 | + (instancetype)mirrorPrivateIconWithSize:(CGFloat)size; 114 | + (instancetype)gitForkPrivateIconWithSize:(CGFloat)size; 115 | + (instancetype)lockIconWithSize:(CGFloat)size; 116 | + (instancetype)logoGithubIconWithSize:(CGFloat)size; 117 | + (instancetype)mailIconWithSize:(CGFloat)size; 118 | + (instancetype)mailReadIconWithSize:(CGFloat)size; 119 | + (instancetype)mailReplyIconWithSize:(CGFloat)size; 120 | + (instancetype)markGithubIconWithSize:(CGFloat)size; 121 | + (instancetype)markdownIconWithSize:(CGFloat)size; 122 | + (instancetype)megaphoneIconWithSize:(CGFloat)size; 123 | + (instancetype)mentionIconWithSize:(CGFloat)size; 124 | + (instancetype)microscopeIconWithSize:(CGFloat)size; 125 | + (instancetype)milestoneIconWithSize:(CGFloat)size; 126 | + (instancetype)mirrorPublicIconWithSize:(CGFloat)size; 127 | + (instancetype)mirrorIconWithSize:(CGFloat)size; 128 | + (instancetype)mortarBoardIconWithSize:(CGFloat)size; 129 | + (instancetype)moveDownIconWithSize:(CGFloat)size; 130 | + (instancetype)moveLeftIconWithSize:(CGFloat)size; 131 | + (instancetype)moveRightIconWithSize:(CGFloat)size; 132 | + (instancetype)moveUpIconWithSize:(CGFloat)size; 133 | + (instancetype)muteIconWithSize:(CGFloat)size; 134 | + (instancetype)noNewlineIconWithSize:(CGFloat)size; 135 | + (instancetype)octofaceIconWithSize:(CGFloat)size; 136 | + (instancetype)organizationIconWithSize:(CGFloat)size; 137 | + (instancetype)packageIconWithSize:(CGFloat)size; 138 | + (instancetype)paintcanIconWithSize:(CGFloat)size; 139 | + (instancetype)pencilIconWithSize:(CGFloat)size; 140 | + (instancetype)personAddIconWithSize:(CGFloat)size; 141 | + (instancetype)personFollowIconWithSize:(CGFloat)size; 142 | + (instancetype)personIconWithSize:(CGFloat)size; 143 | + (instancetype)pinIconWithSize:(CGFloat)size; 144 | + (instancetype)playbackFastForwardIconWithSize:(CGFloat)size; 145 | + (instancetype)playbackPauseIconWithSize:(CGFloat)size; 146 | + (instancetype)playbackPlayIconWithSize:(CGFloat)size; 147 | + (instancetype)playbackRewindIconWithSize:(CGFloat)size; 148 | + (instancetype)plugIconWithSize:(CGFloat)size; 149 | + (instancetype)repoCreateIconWithSize:(CGFloat)size; 150 | + (instancetype)gistNewIconWithSize:(CGFloat)size; 151 | + (instancetype)fileDirectoryCreateIconWithSize:(CGFloat)size; 152 | + (instancetype)fileAddIconWithSize:(CGFloat)size; 153 | + (instancetype)plusIconWithSize:(CGFloat)size; 154 | + (instancetype)podiumIconWithSize:(CGFloat)size; 155 | + (instancetype)primitiveDotIconWithSize:(CGFloat)size; 156 | + (instancetype)primitiveSquareIconWithSize:(CGFloat)size; 157 | + (instancetype)pulseIconWithSize:(CGFloat)size; 158 | + (instancetype)puzzleIconWithSize:(CGFloat)size; 159 | + (instancetype)questionIconWithSize:(CGFloat)size; 160 | + (instancetype)quoteIconWithSize:(CGFloat)size; 161 | + (instancetype)radioTowerIconWithSize:(CGFloat)size; 162 | + (instancetype)repoDeleteIconWithSize:(CGFloat)size; 163 | + (instancetype)repoIconWithSize:(CGFloat)size; 164 | + (instancetype)repoCloneIconWithSize:(CGFloat)size; 165 | + (instancetype)repoForcePushIconWithSize:(CGFloat)size; 166 | + (instancetype)gistForkIconWithSize:(CGFloat)size; 167 | + (instancetype)repoForkedIconWithSize:(CGFloat)size; 168 | + (instancetype)repoPullIconWithSize:(CGFloat)size; 169 | + (instancetype)repoPushIconWithSize:(CGFloat)size; 170 | + (instancetype)rocketIconWithSize:(CGFloat)size; 171 | + (instancetype)rssIconWithSize:(CGFloat)size; 172 | + (instancetype)rubyIconWithSize:(CGFloat)size; 173 | + (instancetype)screenFullIconWithSize:(CGFloat)size; 174 | + (instancetype)screenNormalIconWithSize:(CGFloat)size; 175 | + (instancetype)searchSaveIconWithSize:(CGFloat)size; 176 | + (instancetype)searchIconWithSize:(CGFloat)size; 177 | + (instancetype)serverIconWithSize:(CGFloat)size; 178 | + (instancetype)settingsIconWithSize:(CGFloat)size; 179 | + (instancetype)logInIconWithSize:(CGFloat)size; 180 | + (instancetype)signInIconWithSize:(CGFloat)size; 181 | + (instancetype)logOutIconWithSize:(CGFloat)size; 182 | + (instancetype)signOutIconWithSize:(CGFloat)size; 183 | + (instancetype)splitIconWithSize:(CGFloat)size; 184 | + (instancetype)squirrelIconWithSize:(CGFloat)size; 185 | + (instancetype)starAddIconWithSize:(CGFloat)size; 186 | + (instancetype)starDeleteIconWithSize:(CGFloat)size; 187 | + (instancetype)starIconWithSize:(CGFloat)size; 188 | + (instancetype)stepsIconWithSize:(CGFloat)size; 189 | + (instancetype)stopIconWithSize:(CGFloat)size; 190 | + (instancetype)repoSyncIconWithSize:(CGFloat)size; 191 | + (instancetype)syncIconWithSize:(CGFloat)size; 192 | + (instancetype)tagRemoveIconWithSize:(CGFloat)size; 193 | + (instancetype)tagAddIconWithSize:(CGFloat)size; 194 | + (instancetype)tagIconWithSize:(CGFloat)size; 195 | + (instancetype)telescopeIconWithSize:(CGFloat)size; 196 | + (instancetype)terminalIconWithSize:(CGFloat)size; 197 | + (instancetype)threeBarsIconWithSize:(CGFloat)size; 198 | + (instancetype)thumbsdownIconWithSize:(CGFloat)size; 199 | + (instancetype)thumbsupIconWithSize:(CGFloat)size; 200 | + (instancetype)toolsIconWithSize:(CGFloat)size; 201 | + (instancetype)trashcanIconWithSize:(CGFloat)size; 202 | + (instancetype)triangleDownIconWithSize:(CGFloat)size; 203 | + (instancetype)triangleLeftIconWithSize:(CGFloat)size; 204 | + (instancetype)triangleRightIconWithSize:(CGFloat)size; 205 | + (instancetype)triangleUpIconWithSize:(CGFloat)size; 206 | + (instancetype)unfoldIconWithSize:(CGFloat)size; 207 | + (instancetype)unmuteIconWithSize:(CGFloat)size; 208 | + (instancetype)versionsIconWithSize:(CGFloat)size; 209 | + (instancetype)removeCloseIconWithSize:(CGFloat)size; 210 | + (instancetype)xIconWithSize:(CGFloat)size; 211 | + (instancetype)zapIconWithSize:(CGFloat)size; 212 | 213 | @end -------------------------------------------------------------------------------- /ios/ReactNativeIcons/Libraries/FontAwesomeKit/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corymsmith/react-native-icons/43292c5c62ffb5e34604ae9e9b2f8d031c06af9a/ios/ReactNativeIcons/Libraries/FontAwesomeKit/octicons.ttf -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-icons", 3 | "version": "0.7.1", 4 | "description": "Use 1000's of icon fonts easily in your React Native apps.", 5 | "main": "index", 6 | "author": "Cory Smith ", 7 | "keywords": [ 8 | "react", 9 | "icons", 10 | "react-native", 11 | "react-component", 12 | "react-native-component", 13 | "mobile", 14 | "ui", 15 | "react native icons", 16 | "font", 17 | "tab bar", 18 | "ios", 19 | "android", 20 | "icon", 21 | "font", 22 | "fonts" 23 | ], 24 | "devDependencies": { 25 | "react-native": ">= 0.12.x || 0.12.0-rc || 0.13.x || 0.13.0-rc || 0.14.x || 0.14.0-rc || 0.15.0-rc || 0.15.x || 0.16.0" 26 | }, 27 | "homepage": "https://github.com/corymsmith/react-native-icons", 28 | "bugs": "https://github.com/corymsmith/react-native-icons/issues", 29 | "repository": { 30 | "type": "git", 31 | "url": "git://github.com/corymsmith/react-native-icons.git" 32 | }, 33 | "react-native-module": { 34 | "podfile": "react-native-icons.podspec" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /react-native-icons.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "react-native-icons" 3 | s.version = "0.0.4" 4 | s.summary = "React Native Icons Module" 5 | s.platform = :ios, '7.0' 6 | s.requires_arc = true 7 | s.author = 'Cory Smith' 8 | s.homepage = "https://github.com/corymsmith/react-native-icons" 9 | s.source_files = 'ios/**/*.{h,m}' 10 | s.preserve_paths = "**/*.js" 11 | s.resources = ["**/**.ttf", "**/**.otf"] 12 | end 13 | -------------------------------------------------------------------------------- /shim-assert.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 'use strict'; 3 | 4 | module.exports = { 5 | 6 | basic( object: any, text: string ) { 7 | 8 | if (!object){ 9 | throw Error( text ); 10 | } 11 | 12 | } 13 | 14 | }; 15 | --------------------------------------------------------------------------------