├── .watchmanconfig ├── app.json ├── expo.png ├── .firebaserc ├── App.js ├── assets ├── images │ ├── appcode.png │ ├── clion.png │ ├── goland.png │ ├── pycharm.png │ ├── rider.png │ ├── datagrip.png │ ├── phpstorm.png │ ├── resharper.png │ ├── rubymine.png │ ├── webstorm.png │ ├── intellij_idea.png │ └── resharper_cplusplus.png └── sounds │ └── decision22.mp3 ├── .babelrc ├── .storybook ├── config.js └── webpack.config.js ├── firebase.json ├── src ├── native │ ├── index.ts │ ├── App.tsx │ ├── Sound.ts │ └── expo.d.ts ├── shared │ ├── Sound.ts │ ├── Product.tsx │ └── Products.tsx └── web │ ├── index.ts │ ├── App.tsx │ ├── assets.d.ts │ └── Sound.ts ├── webroot ├── index.html └── 404.html ├── App.test.js ├── .gitignore ├── stories └── index.js ├── webpack.common.js ├── README.md ├── webpack.config.js ├── package.json ├── .flowconfig └── tsconfig.json /.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "23.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /expo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/expo.png -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "rn-multi-target-sample" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /App.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import App from "./dist/native"; 3 | export default () => (); -------------------------------------------------------------------------------- /assets/images/appcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/appcode.png -------------------------------------------------------------------------------- /assets/images/clion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/clion.png -------------------------------------------------------------------------------- /assets/images/goland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/goland.png -------------------------------------------------------------------------------- /assets/images/pycharm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/pycharm.png -------------------------------------------------------------------------------- /assets/images/rider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/rider.png -------------------------------------------------------------------------------- /assets/images/datagrip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/datagrip.png -------------------------------------------------------------------------------- /assets/images/phpstorm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/phpstorm.png -------------------------------------------------------------------------------- /assets/images/resharper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/resharper.png -------------------------------------------------------------------------------- /assets/images/rubymine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/rubymine.png -------------------------------------------------------------------------------- /assets/images/webstorm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/webstorm.png -------------------------------------------------------------------------------- /assets/sounds/decision22.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/sounds/decision22.mp3 -------------------------------------------------------------------------------- /assets/images/intellij_idea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/intellij_idea.png -------------------------------------------------------------------------------- /assets/images/resharper_cplusplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nkzn/react-native-multi-target-sample/HEAD/assets/images/resharper_cplusplus.png -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.storybook/config.js: -------------------------------------------------------------------------------- 1 | import { configure } from '@storybook/react'; 2 | 3 | function loadStories() { 4 | require('../stories'); 5 | } 6 | 7 | configure(loadStories, module); 8 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "public": "webroot", 4 | "ignore": [ 5 | "firebase.json", 6 | "**/.*", 7 | "**/node_modules/**" 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/native/index.ts: -------------------------------------------------------------------------------- 1 | import App from "./App"; 2 | export default App; 3 | 4 | import Sound from "../shared/Sound"; 5 | import SoundNative from "./Sound"; 6 | Sound.soundInterface = new SoundNative(); 7 | -------------------------------------------------------------------------------- /webroot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import App from './App'; 3 | 4 | import renderer from 'react-test-renderer'; 5 | 6 | it('renders without crashing', () => { 7 | const rendered = renderer.create().toJSON(); 8 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/shared/Sound.ts: -------------------------------------------------------------------------------- 1 | export interface SoundInterface { 2 | play(): Promise; 3 | } 4 | 5 | export default class Sound { 6 | static soundInterface: SoundInterface; 7 | 8 | async play() { 9 | try { 10 | await Sound.soundInterface.play(); 11 | } catch (e) { 12 | console.error(e); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /src/web/index.ts: -------------------------------------------------------------------------------- 1 | import { AppRegistry } from 'react-native'; 2 | import App from './App'; 3 | 4 | import SoundWeb from "./Sound"; 5 | import Sound from "../shared/Sound"; 6 | Sound.soundInterface = new SoundWeb(); 7 | 8 | AppRegistry.registerComponent('WebpackedMultiTargetSample', () => App); 9 | AppRegistry.runApplication('WebpackedMultiTargetSample', { 10 | rootTag: document.querySelector('main') 11 | }) -------------------------------------------------------------------------------- /src/web/App.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { 3 | ScrollView 4 | } from 'react-native'; 5 | import Products from "../shared/Products"; 6 | 7 | export default class App extends React.Component { 8 | render() { 9 | return ( 10 | 11 | 12 | 13 | ); 14 | } 15 | } -------------------------------------------------------------------------------- /src/native/App.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { 3 | ScrollView 4 | } from 'react-native'; 5 | import Products from "../shared/Products"; 6 | 7 | export default class App extends React.Component { 8 | render() { 9 | return ( 10 | 11 | 12 | 13 | ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/native/Sound.ts: -------------------------------------------------------------------------------- 1 | import { SoundInterface } from "../shared/Sound"; 2 | import { Audio } from "expo"; 3 | 4 | export default class SoundNative implements SoundInterface { 5 | resource: any; 6 | constructor() { 7 | this.resource = require("../../assets/sounds/decision22.mp3"); 8 | } 9 | 10 | async play() { 11 | await Audio.Sound.create( 12 | this.resource, 13 | { shouldPlay: true } 14 | ); 15 | } 16 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # expo 4 | .expo/ 5 | 6 | # dependencies 7 | /node_modules 8 | 9 | # misc 10 | .env.local 11 | .env.development.local 12 | .env.test.local 13 | .env.production.local 14 | 15 | npm-debug.log* 16 | yarn-debug.log* 17 | yarn-error.log* 18 | 19 | # distribution 20 | dist/ 21 | webroot/bundle.js 22 | webroot/images 23 | webroot/sounds 24 | webroot/storybook 25 | 26 | # build 27 | build/ -------------------------------------------------------------------------------- /stories/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { View } from 'react-native' 3 | 4 | import { storiesOf } from '@storybook/react'; 5 | import { action } from '@storybook/addon-actions'; 6 | 7 | import Product from "../src/shared/Product"; 8 | 9 | storiesOf('Product', module) 10 | .add('image with text', () => ( 11 | 12 | 16 | 17 | )); -------------------------------------------------------------------------------- /src/web/assets.d.ts: -------------------------------------------------------------------------------- 1 | // dummy typings for assets 2 | // ref: https://webpack.js.org/guides/typescript/#importing-other-assets 3 | 4 | declare module "*.gif" { 5 | const content: any; 6 | export default content; 7 | } 8 | 9 | declare module "*.jpg" { 10 | const content: any; 11 | export default content; 12 | } 13 | 14 | declare module "*.jpeg" { 15 | const content: any; 16 | export default content; 17 | } 18 | 19 | declare module "*.png" { 20 | const content: any; 21 | export default content; 22 | } 23 | 24 | declare module "*.svg" { 25 | const content: any; 26 | export default content; 27 | } 28 | 29 | declare module "*.mp3" { 30 | const content: any; 31 | export default content; 32 | } -------------------------------------------------------------------------------- /src/shared/Product.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { View, Text, TouchableOpacity, Image, ImageRequireSource } from "react-native"; 3 | 4 | export interface Props { 5 | source: ImageRequireSource; 6 | title: string; 7 | onPress: () => void; 8 | } 9 | 10 | export default (props: Props) => ( 11 | props.onPress()}> 12 | 13 | 14 | 15 | {props.title} 16 | 17 | 18 | 19 | ); -------------------------------------------------------------------------------- /webpack.common.js: -------------------------------------------------------------------------------- 1 | const tsLoaderConfiguration = { 2 | test: /\.(tsx?)$/, 3 | exclude: [ 4 | "/node_modules/" 5 | ], 6 | use: { 7 | loader: 'ts-loader', 8 | options: { 9 | compilerOptions: { // overwrite tsconfig.json 10 | allowJs: true, 11 | target: "ES5", 12 | jsx: "react", 13 | outDir: "webroot", 14 | lib: ["dom", "ES2017"], 15 | } 16 | } 17 | } 18 | } 19 | 20 | // This is needed for webpack to import static images in JavaScript files 21 | const fileLoaderImageConfiguration = { 22 | test: /\.(gif|jpe?g|png|svg)$/, 23 | use: { 24 | loader: 'file-loader', 25 | options: { 26 | name: './images/[name].[ext]' 27 | } 28 | } 29 | }; 30 | 31 | const fileLoaderSoundConfiguration = { 32 | test: /\.(ogg|mp3)$/, 33 | use: { 34 | loader: 'file-loader', 35 | options: { 36 | name: './sounds/[name].[ext]' 37 | } 38 | } 39 | }; 40 | 41 | module.exports = { 42 | tsLoaderConfiguration, 43 | fileLoaderImageConfiguration, 44 | fileLoaderSoundConfiguration 45 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | react-native-multi-target-sample 2 | ========== 3 | 4 | React Native & Web Development sample. 5 | 6 | * TypeScript 7 | * React Native for Web 8 | * Image & Sound Resources 9 | * Platform Specific Entry Point 10 | * Shared Directory 11 | 12 | Demo 13 | ---------- 14 | 15 | ### Web 16 | 17 | https://rn-multi-target-sample.firebaseapp.com/ 18 | 19 | ### Storybook (Web) 20 | 21 | https://rn-multi-target-sample.firebaseapp.com/storybook/ 22 | 23 | ### Expo 24 | 25 | ![Expo QR Code](./expo.png) 26 | 27 | https://expo.io/@nkzn/react-native-multi-target-sample 28 | 29 | Getting Started 30 | ---------- 31 | 32 | ```bash 33 | $ yarn 34 | ``` 35 | 36 | Getting Started on Web 37 | ---------- 38 | 39 | ```bash 40 | $ yarn start:web 41 | ``` 42 | 43 | then, webpack-dev-server is started. 44 | 45 | Getting Started on Native 46 | ---------- 47 | 48 | ```bash 49 | # terminal 1 50 | $ yarn start:tsc 51 | ``` 52 | 53 | ```bash 54 | # terminal 2 55 | $ yarn start 56 | ``` 57 | 58 | then, expo bundler is started. 59 | 60 | Thanks 61 | ---------- 62 | 63 | * https://soundeffect-lab.info/ -------------------------------------------------------------------------------- /.storybook/webpack.config.js: -------------------------------------------------------------------------------- 1 | // you can use this file to add your custom webpack plugins, loaders and anything you like. 2 | // This is just the basic way to add additional webpack configurations. 3 | // For more information refer the docs: https://storybook.js.org/configurations/custom-webpack-config 4 | 5 | // IMPORTANT 6 | // When you add this file, we won't add the default configurations which is similar 7 | // to "React Create App". This only has babel loader to load JavaScript. 8 | 9 | const common = require("../webpack.common"); 10 | 11 | module.exports = { 12 | plugins: [ 13 | // your custom plugins 14 | ], 15 | module: { 16 | rules: [ 17 | common.tsLoaderConfiguration, 18 | common.fileLoaderImageConfiguration, 19 | common.fileLoaderSoundConfiguration 20 | ], 21 | }, 22 | resolve: { 23 | // If you're working on a multi-platform React Native app, web-specific 24 | // module implementations should be written in files using the extension 25 | // `.web.js`. 26 | extensions: [ '.web.js', '.js', '.ts', '.web.ts', '.tsx', '.web.tsx' ], 27 | alias: { 28 | 'react-native': 'react-native-web' 29 | } 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const webpack = require("webpack"); 3 | const common = require("./webpack.common"); 4 | 5 | module.exports = { 6 | devServer: { 7 | publicPath: '/', 8 | port: 5555, 9 | contentBase: path.join(__dirname, 'webroot') 10 | }, 11 | entry: './src/web/index.ts', 12 | output: { 13 | filename: 'bundle.js', 14 | path: path.resolve(__dirname, 'webroot') 15 | }, 16 | module: { 17 | rules: [ 18 | common.tsLoaderConfiguration, 19 | common.fileLoaderImageConfiguration, 20 | common.fileLoaderSoundConfiguration 21 | ] 22 | }, 23 | 24 | plugins: [ 25 | // `process.env.NODE_ENV === 'production'` must be `true` for production 26 | // builds to eliminate development checks and reduce build size. You may 27 | // wish to include additional optimizations. 28 | new webpack.DefinePlugin({ 29 | 'process.env.NODE_ENV': JSON.stringify('production') 30 | }) 31 | ], 32 | 33 | resolve: { 34 | // If you're working on a multi-platform React Native app, web-specific 35 | // module implementations should be written in files using the extension 36 | // `.web.js`. 37 | extensions: [ '.web.js', '.js', '.ts', '.web.ts', '.tsx', '.web.tsx' ], 38 | alias: { 39 | 'react-native': 'react-native-web' 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /src/web/Sound.ts: -------------------------------------------------------------------------------- 1 | import { SoundInterface } from "../shared/Sound"; 2 | import "../../assets/sounds/decision22.mp3"; // webpack magic 3 | 4 | const _AudioContext = (window).AudioContext || (window).webkitAudioContext; 5 | 6 | export default class SoundWeb implements SoundInterface { 7 | 8 | context = new _AudioContext(); 9 | buffer: AudioBuffer; 10 | 11 | constructor() { 12 | this.setup(); 13 | } 14 | 15 | async setup() { 16 | if (!this.context) { 17 | return; 18 | } 19 | 20 | const response = await fetch("/sounds/decision22.mp3"); 21 | 22 | const responseBuffer = await response.arrayBuffer(); 23 | 24 | this.buffer = await new Promise((resolve, reject) => { 25 | // webkitAudioContext does not have Promised decodeAudioData 26 | this.context.decodeAudioData(responseBuffer, (buffer: AudioBuffer) => { 27 | resolve(buffer); 28 | }, (e: any) => { 29 | reject(e); 30 | }); 31 | }); 32 | } 33 | 34 | async play() { 35 | if (!this.context) { 36 | return; 37 | } 38 | const source = this.context.createBufferSource(); 39 | source.buffer = this.buffer; 40 | source.connect(this.context.destination); 41 | source.start(0); 42 | } 43 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-multi-target-sample", 3 | "version": "0.1.0", 4 | "private": true, 5 | "devDependencies": { 6 | "@types/fbemitter": "^2.0.32", 7 | "@types/react-native": "^0.50.7", 8 | "babel-loader": "^7.1.2", 9 | "file-loader": "^1.1.5", 10 | "jest-expo": "23.0.0", 11 | "react-native-scripts": "1.8.1", 12 | "react-test-renderer": "16.0.0", 13 | "ts-loader": "^3.2.0", 14 | "typescript": "^2.6.2", 15 | "webpack": "^3.8.1", 16 | "webpack-dev-server": "^2.9.5", 17 | "@storybook/react": "^3.2.17", 18 | "@storybook/addon-actions": "^3.2.17", 19 | "@storybook/addon-links": "^3.2.17" 20 | }, 21 | "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js", 22 | "scripts": { 23 | "deploy": "yarn build:web && yarn build-storybook && firebase deploy", 24 | "build:tsc": "rm -rf dist/* && tsc -p .", 25 | "start:tsc": "rm -rf dist/* && tsc -w -p .", 26 | "build:web": "webpack -p --progress --config webpack.config.js", 27 | "start:web": "webpack-dev-server -d --config webpack.config.js --inline --hot --colors", 28 | "start": "react-native-scripts start", 29 | "eject": "react-native-scripts eject", 30 | "android": "react-native-scripts android", 31 | "ios": "react-native-scripts ios", 32 | "test": "node node_modules/jest/bin/jest.js --watch", 33 | "storybook": "start-storybook -p 6006", 34 | "build-storybook": "build-storybook && mv storybook-static webroot/storybook" 35 | }, 36 | "jest": { 37 | "preset": "jest-expo" 38 | }, 39 | "dependencies": { 40 | "expo": "^23.0.4", 41 | "react": "16.0.0", 42 | "react-dom": "^16.2.0", 43 | "react-native": "0.50.3", 44 | "react-native-web": "^0.1.14" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /webroot/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Page Not Found 7 | 8 | 23 | 24 | 25 |
26 |

404

27 |

Page Not Found

28 |

The specified file was not found on this website. Please check the URL for mistakes and try again.

29 |

Why am I seeing this?

30 |

This page was generated by the Firebase Command-Line Interface. To modify it, edit the 404.html file in your project's configured public directory.

31 |
32 | 33 | 34 | -------------------------------------------------------------------------------- /src/shared/Products.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { View, Linking } from "react-native"; 3 | import Product from "./Product"; 4 | import Sound from "./Sound"; 5 | 6 | const products: Product[] = [ 7 | { name: "AppCode", source: require("../../assets/images/appcode.png"), url: "http://www.jetbrains.com/objc/" }, 8 | { name: "CLion", source: require("../../assets/images/clion.png"), url: "http://www.jetbrains.com/clion/" }, 9 | { name: "DataGrip", source: require("../../assets/images/datagrip.png"), url: "http://www.jetbrains.com/datagrip/" }, 10 | { name: "GoLand", source: require("../../assets/images/goland.png"), url: "http://www.jetbrains.com/go/" }, 11 | { name: "IntelliJ IDEA", source: require("../../assets/images/intellij_idea.png"), url: "http://www.jetbrains.com/idea/" }, 12 | { name: "PhpStorm", source: require("../../assets/images/phpstorm.png"), url: "http://www.jetbrains.com/phpstorm/" }, 13 | { name: "PyCharm", source: require("../../assets/images/pycharm.png"), url: "http://www.jetbrains.com/pycharm/" }, 14 | { name: "ReSharper C++", source: require("../../assets/images/resharper_cplusplus.png"), url: "http://www.jetbrains.com/resharper-cpp/" }, 15 | { name: "ReSharper", source: require("../../assets/images/resharper.png"), url: "http://www.jetbrains.com/resharper/" }, 16 | { name: "Rider", source: require("../../assets/images/rider.png"), url: "http://www.jetbrains.com/rider/" }, 17 | { name: "RubyMine", source: require("../../assets/images/rubymine.png"), url: "http://www.jetbrains.com/ruby/" }, 18 | { name: "WebStorm", source: require("../../assets/images/webstorm.png"), url: "http://www.jetbrains.com/webstorm/" }, 19 | ]; 20 | 21 | interface Product { 22 | name: string; 23 | source: any; 24 | url: string; 25 | } 26 | 27 | export default class Products extends React.Component { 28 | 29 | sound = new Sound(); 30 | 31 | async onPress(product: Product) { 32 | await this.sound.play(); 33 | await Linking.openURL(product.url); 34 | } 35 | 36 | render() { 37 | return ( 38 | 39 | { products.map( product => this.onPress(product)} />) } 40 | 41 | ); 42 | } 43 | } -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | ; We fork some components by platform 3 | .*/*[.]android.js 4 | 5 | ; Ignore templates for 'react-native init' 6 | /node_modules/react-native/local-cli/templates/.* 7 | 8 | ; Ignore RN jest 9 | /node_modules/react-native/jest/.* 10 | 11 | ; Ignore RNTester 12 | /node_modules/react-native/RNTester/.* 13 | 14 | ; Ignore the website subdir 15 | /node_modules/react-native/website/.* 16 | 17 | ; Ignore the Dangerfile 18 | /node_modules/react-native/danger/dangerfile.js 19 | 20 | ; Ignore Fbemitter 21 | /node_modules/fbemitter/.* 22 | 23 | ; Ignore "BUCK" generated dirs 24 | /node_modules/react-native/\.buckd/ 25 | 26 | ; Ignore unexpected extra "@providesModule" 27 | .*/node_modules/.*/node_modules/fbjs/.* 28 | 29 | ; Ignore polyfills 30 | /node_modules/react-native/Libraries/polyfills/.* 31 | 32 | ; Ignore various node_modules 33 | /node_modules/react-native-gesture-handler/.* 34 | /node_modules/expo/.* 35 | /node_modules/react-navigation/.* 36 | /node_modules/xdl/.* 37 | /node_modules/reqwest/.* 38 | /node_modules/metro-bundler/.* 39 | 40 | [include] 41 | 42 | [libs] 43 | node_modules/react-native/Libraries/react-native/react-native-interface.js 44 | node_modules/react-native/flow/ 45 | node_modules/expo/flow/ 46 | 47 | [options] 48 | emoji=true 49 | 50 | module.system=haste 51 | 52 | module.file_ext=.js 53 | module.file_ext=.jsx 54 | module.file_ext=.json 55 | module.file_ext=.ios.js 56 | 57 | munge_underscores=true 58 | 59 | module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' 60 | 61 | suppress_type=$FlowIssue 62 | suppress_type=$FlowFixMe 63 | suppress_type=$FlowFixMeProps 64 | suppress_type=$FlowFixMeState 65 | suppress_type=$FixMe 66 | 67 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(5[0-6]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native_oss[a-z,_]*\\)?)\\) 68 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(5[0-6]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native_oss[a-z,_]*\\)?)\\)?:? #[0-9]+ 69 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 70 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 71 | 72 | unsafe.enable_getters_and_setters=true 73 | 74 | [version] 75 | ^0.56.0 76 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "target": "ES2017", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */ 5 | "module": "es2015", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ 6 | // "lib": [], /* Specify library files to be included in the compilation: */ 7 | // "allowJs": true, /* Allow javascript files to be compiled. */ 8 | // "checkJs": true, /* Report errors in .js files. */ 9 | "jsx": "react-native", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 10 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 11 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 12 | // "outFile": "./", /* Concatenate and emit output to single file. */ 13 | "outDir": "./dist", /* Redirect output structure to the directory. */ 14 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 15 | // "removeComments": true, /* Do not emit comments to output. */ 16 | // "noEmit": true, /* Do not emit outputs. */ 17 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 18 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 19 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 20 | 21 | /* Strict Type-Checking Options */ 22 | // "strict": true /* Enable all strict type-checking options. */ 23 | "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */ 24 | // "strictNullChecks": true, /* Enable strict null checks. */ 25 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 26 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 27 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 28 | 29 | /* Additional Checks */ 30 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 31 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 32 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 33 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 34 | 35 | /* Module Resolution Options */ 36 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 37 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 38 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 39 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 40 | // "typeRoots": [] /* List of folders to include type definitions from. */ 41 | // "types": [], /* Type declaration files to be included in compilation. */ 42 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 43 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 44 | 45 | /* Source Map Options */ 46 | // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 47 | // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */ 48 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 49 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 50 | 51 | /* Experimental Options */ 52 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 53 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 54 | }, 55 | "include": [ 56 | "src/native", 57 | "src/shared" 58 | ] 59 | } -------------------------------------------------------------------------------- /src/native/expo.d.ts: -------------------------------------------------------------------------------- 1 | // Copy from https://github.com/janaagaard75/expo-and-typescript/blob/1838404ebd43395084275c49cb6e833981ef56d8/src/expo.d.ts 2 | 3 | // tslint:disable:ban-types 4 | // tslint:disable:interface-over-type-literal 5 | // tslint:disable:max-classes-per-file 6 | // tslint:disable:member-access 7 | 8 | declare module 'expo' { 9 | import { ColorPropType } from 'react-native' 10 | import { Component } from 'react' 11 | // tslint:disable-next-line:no-implicit-dependencies - fbemitter is included by Expo. 12 | import { EventSubscription } from 'fbemitter' 13 | import { GestureResponderEvent } from 'react-native' 14 | import { PanResponderGestureState } from 'react-native' 15 | import { ViewProperties } from 'react-native' 16 | import { ViewStyle } from 'react-native' 17 | import { ImageURISource } from 'react-native' 18 | 19 | /** Access the device accelerometer sensor(s) to respond to changes in acceleration in 3d space. */ 20 | namespace Accelerometer { 21 | interface AccelerometerObject { 22 | x: number 23 | y: number 24 | z: number 25 | } 26 | 27 | /** 28 | * Subscribe for updates to the accelerometer. 29 | * @param listener A callback that is invoked when an accelerometer update is available. When invoked, the listener is provided a single argumument that is an object containing keys x, y, z. 30 | * @returns An EventSubscription object that you can call remove() on when you would like to unsubscribe the listener. 31 | */ 32 | function addListener(listener: (obj: AccelerometerObject) => any): EventSubscription 33 | 34 | /** Remove all listeners. */ 35 | function removeAllListeners(): void 36 | 37 | /** 38 | * Subscribe for updates to the accelerometer. 39 | * @param intervalMs Desired interval in milliseconds between accelerometer updates. 40 | */ 41 | function setUpdateInterval(intervalMs: number): void 42 | } 43 | 44 | namespace Amplitude { 45 | function initialize(apiKey: string): void 46 | function setUserId(userId: string): void 47 | function setUserProperties(userProperties: object): void // TODO: add userProperties definition from amplitude doc 48 | function clearUserProperties(): void 49 | function logEvent(eventName: string): void 50 | function logEventWithProperties(eventName: string, properties: object): void 51 | function setGroup(groupType: string, groupNames: object): void 52 | } 53 | 54 | /** This module provides an interface to Expo’s asset system. An asset is any file that lives alongside the source code of your app that the app needs at runtime. Examples include images, fonts and sounds. Expo’s asset system integrates with React Native’s, so that you can refer to files with require('path/to/file'). This is how you refer to static image files in React Native for use in an Image component, for example. */ 55 | class Asset { 56 | // The asset class has properties that these, but I believe that these are the only ones meant to be public. 57 | 58 | /** The MD5 hash of the asset’s data. */ 59 | hash: string 60 | 61 | /** If the asset is an image, the height of the image data divided by the scale factor. The scale factor is the number after `@` in the filename, or `1` if not present. */ 62 | height: number 63 | 64 | /** If the asset has been downloaded (by calling `downloadAsync()`), the `file://` URI pointing to the local file on the device that contains the asset data. */ 65 | localUri: string 66 | 67 | /** The name of the asset file without the extension. Also without the part from @ onward in the filename (used to specify scale factor for images). */ 68 | name: string 69 | 70 | /** The extension of the asset filename. */ 71 | type: string 72 | 73 | /** A URI that points to the asset’s data on the remote server. When running the published version of your app, this refers to the the location on Expo’s asset server where Expo has stored your asset. When running the app from XDE during development, this URI points to XDE’s server running on your computer and the asset is served directly from your computer. */ 74 | uri: string 75 | 76 | /** If the asset is an image, the width of the image data divided by the scale factor. The scale factor is the number after `@` in the filename, or `1` if not present. */ 77 | width: number 78 | 79 | /** Downloads the asset data to a local file in the device’s cache directory. Once the returned promise is fulfilled without error, the localUri field of this asset points to a local file containing the asset data. The asset is only downloaded if an up-to-date local file for the asset isn’t already present due to an earlier download. */ 80 | downloadAsync(): Promise 81 | 82 | /** Returns the `Expo.Asset` instance representing an asset given its module. */ 83 | static fromModule(moduleId: number): Asset 84 | 85 | /** 86 | * A helper that wraps `Expo.Asset.fromModule(module).downloadAsync` for convenience. 87 | * @param moduleIds An array of `require('path/to/file')`. Can also be just one module without an Array. 88 | */ 89 | static loadAsync(moduleIds: number | Array): Promise 90 | } 91 | 92 | namespace AV { 93 | type PlaybackSource = number | { uri: string } | Asset 94 | 95 | type PlaybackStatus = 96 | { 97 | isLoaded: false, 98 | androidImplementation?: string, 99 | 100 | /** Populated exactly once when an error forces the object to unload. */ 101 | error?: string 102 | } | 103 | { 104 | isLoaded: true, 105 | androidImplementation?: string, 106 | 107 | uri: string, 108 | 109 | progressUpdateIntervalMillis: number, 110 | durationMillis?: number, 111 | positionMillis: number, 112 | playableDurationMillis?: number, 113 | 114 | shouldPlay: boolean, 115 | isPlaying: boolean, 116 | isBuffering: boolean, 117 | 118 | rate: number, 119 | shouldCorrectPitch: boolean, 120 | volume: number, 121 | isMuted: boolean, 122 | isLooping: boolean, 123 | 124 | /** True exactly once when the track plays to finish. */ 125 | didJustFinish: boolean 126 | } 127 | 128 | type PlaybackStatusToSet = { 129 | androidImplementation?: string, 130 | progressUpdateIntervalMillis?: number, 131 | positionMillis?: number, 132 | shouldPlay?: boolean, 133 | rate?: number, 134 | shouldCorrectPitch?: boolean, 135 | volume?: number, 136 | isMuted?: boolean, 137 | isLooping?: boolean 138 | } 139 | } 140 | 141 | /** 142 | * Provides basic sample playback and recording. 143 | * 144 | * Note that Expo does not yet support backgrounding, so audio is not available to play in the background of your experience. Audio also automatically stops if headphones / bluetooth audio devices are disconnected. 145 | */ 146 | namespace Audio { 147 | type PlaybackSource = AV.PlaybackSource 148 | type PlaybackStatus = AV.PlaybackStatus 149 | type PlaybackStatusToSet = AV.PlaybackStatusToSet 150 | 151 | type RecordingOptions = { 152 | android: { 153 | extension: string, 154 | outputFormat: number, 155 | audioEncoder: number, 156 | sampleRate?: number, 157 | numberOfChannels?: number, 158 | bitRate?: number, 159 | maxFileSize?: number 160 | }, 161 | ios: { 162 | extension: string, 163 | outputFormat?: string | number, 164 | audioQuality: number, 165 | sampleRate: number, 166 | numberOfChannels: number, 167 | bitRate: number, 168 | bitRateStrategy?: number, 169 | bitDepthHint?: number, 170 | linearPCMBitDepth?: number, 171 | linearPCMIsBigEndian?: boolean, 172 | linearPCMIsFloat?: boolean 173 | } 174 | } 175 | 176 | enum RecordingOptionsAndroidOutputFormat { 177 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_DEFAULT = 0, 178 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_THREE_GPP = 1, 179 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_MPEG_4 = 2, 180 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_AMR_NB = 3, 181 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_AMR_WB = 4, 182 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_AAC_ADIF = 5, 183 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_AAC_ADTS = 6, 184 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_RTP_AVP = 7, 185 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_MPEG2TS = 8, 186 | RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_WEBM = 9 187 | } 188 | 189 | enum RecordingOptionAndroidAudioEncoder { 190 | RECORDING_OPTION_ANDROID_AUDIO_ENCODER_DEFAULT = 0, 191 | RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AMR_NB = 1, 192 | RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AMR_WB = 2, 193 | RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AAC = 3, 194 | RECORDING_OPTION_ANDROID_AUDIO_ENCODER_HE_AAC = 4, 195 | RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AAC_ELD = 5, 196 | RECORDING_OPTION_ANDROID_AUDIO_ENCODER_VORBIS = 6 197 | } 198 | 199 | enum RecordingOptionIosOutputFormat { 200 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_LINEARPCM = 'lpcm', 201 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_AC3 = 'ac-3', 202 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_60958AC3 = 'cac3', 203 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_APPLEIMA4 = 'ima4', 204 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC = 'aac ', 205 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4CELP = 'celp', 206 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4HVXC = 'hvxc', 207 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4TWINVQ = 'twvq', 208 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MACE3 = 'MAC3', 209 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MACE6 = 'MAC6', 210 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_ULAW = 'ulaw', 211 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_ALAW = 'alaw', 212 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_QDESIGN = 'QDMC', 213 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_QDESIGN2 = 'QDM2', 214 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_QUALCOMM = 'Qclp', 215 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEGLAYER1 = '.mp1', 216 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEGLAYER2 = '.mp2', 217 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEGLAYER3 = '.mp3', 218 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_APPLELOSSLESS = 'alac', 219 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC_HE = 'aach', 220 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC_LD = 'aacl', 221 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC_ELD = 'aace', 222 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC_ELD_SBR = 'aacf', 223 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC_ELD_V2 = 'aacg', 224 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC_HE_V2 = 'aacp', 225 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC_SPATIAL = 'aacs', 226 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_AMR = 'samr', 227 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_AMR_WB = 'sawb', 228 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_AUDIBLE = 'AUDB', 229 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_ILBC = 'ilbc', 230 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_DVIINTELIMA = 0x6d730011, 231 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_MICROSOFTGSM = 0x6d730031, 232 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_AES3 = 'aes3', 233 | RECORDING_OPTION_IOS_OUTPUT_FORMAT_ENHANCEDAC3 = 'ec-3' 234 | } 235 | 236 | enum RecordingOptionIosAudioQuality { 237 | RECORDING_OPTION_IOS_AUDIO_QUALITY_MIN = 0, 238 | RECORDING_OPTION_IOS_AUDIO_QUALITY_LOW = 0x20, 239 | RECORDING_OPTION_IOS_AUDIO_QUALITY_MEDIUM = 0x40, 240 | RECORDING_OPTION_IOS_AUDIO_QUALITY_HIGH = 0x60, 241 | RECORDING_OPTION_IOS_AUDIO_QUALITY_MAX = 0x7f 242 | } 243 | 244 | enum RecodingOptionIosBitRateStratety { 245 | RECORDING_OPTION_IOS_BIT_RATE_STRATEGY_CONSTANT = 0, 246 | RECORDING_OPTION_IOS_BIT_RATE_STRATEGY_LONG_TERM_AVERAGE = 1, 247 | RECORDING_OPTION_IOS_BIT_RATE_STRATEGY_VARIABLE_CONSTRAINED = 2, 248 | RECORDING_OPTION_IOS_BIT_RATE_STRATEGY_VARIABLE = 3 249 | } 250 | 251 | enum InterruptionModeIos { 252 | /** This is the default option. If this option is set, your experience’s audio is mixed with audio playing in background apps. */ 253 | INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS = 0, 254 | 255 | /** If this option is set, your experience’s audio interrupts audio from other apps. */ 256 | INTERRUPTION_MODE_IOS_DO_NOT_MIX = 1, 257 | 258 | /** If this option is set, your experience’s audio lowers the volume ("ducks") of audio from other apps while your audio plays. */ 259 | INTERRUPTION_MODE_IOS_DUCK_OTHERS = 2 260 | } 261 | 262 | enum InterruptionModeAndroid { 263 | /** If this option is set, your experience’s audio interrupts audio from other apps. */ 264 | INTERRUPTION_MODE_ANDROID_DO_NOT_MIX = 1, 265 | 266 | /** This is the default option. If this option is set, your experience’s audio lowers the volume ("ducks") of audio from other apps while your audio plays. */ 267 | INTERRUPTION_MODE_ANDROID_DUCK_OTHERS = 2 268 | } 269 | 270 | const RECORDING_OPTIONS_PRESET_HIGH_QUALITY: RecordingOptions 271 | const RECORDING_OPTIONS_PRESET_LOW_QUALITY: RecordingOptions 272 | 273 | type RecordingStatus = 274 | { 275 | canRecord: false, 276 | isDoneRecording: false 277 | } | { 278 | canRecord: true, 279 | isRecording: boolean, 280 | durationMillis: number 281 | } | { 282 | canRecord: false, 283 | isDoneRecording: true, 284 | durationMillis: number 285 | } 286 | 287 | /** 288 | * Note that these are the only legal `AudioMode` combinations of (`playsInSilentModeIOS`, `allowsRecordingIOS`, `interruptionModeIOS`), and any other will result in promise rejection: 289 | * 290 | * - `false`, `false`, `INTERRUPTION_MODE_IOS_DO_NOT_MIX` 291 | * - `false`, `false`, `INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS` 292 | * - `true`, `true`, `INTERRUPTION_MODE_IOS_DO_NOT_MIX` 293 | * - `true`, `true`, `INTERRUPTION_MODE_IOS_DUCK_OTHERS` 294 | * - `true`, `true`, `INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS` 295 | * - `true`, `false`, `INTERRUPTION_MODE_IOS_DO_NOT_MIX` 296 | * - `true`, `false`, `INTERRUPTION_MODE_IOS_DUCK_OTHERS` 297 | * - `true`, `false`, `INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS` 298 | */ 299 | type AudioMode = { 300 | /** Boolean selecting if recording is enabled on iOS. This value defaults to `false`. NOTE: when this flag is set to true, playback may be routed to the phone receiver instead of to the speaker. */ 301 | allowsRecordingIOS: boolean, 302 | 303 | /** Enum selecting how your experience’s audio should interact with the audio from other apps on iOS. */ 304 | interruptionModeIOS: InterruptionModeIos, 305 | 306 | /** Boolean selecting if your experience’s audio should play in silent mode on iOS. This value defaults to `false`. */ 307 | playsInSilentLockedModeIOS: boolean, 308 | 309 | /** an enum selecting how your experience’s audio should interact with the audio from other apps on Android: */ 310 | interruptionModeAndroid: InterruptionModeAndroid, 311 | 312 | /** Boolean selecting if your experience’s audio should automatically be lowered in volume ("duck") if audio from another app interrupts your experience. This value defaults to true. If false, audio from other apps will pause your audio. */ 313 | shouldDuckAndroid: boolean 314 | } 315 | 316 | type SoundStatus = 317 | { 318 | isLoaded: false 319 | } | { 320 | isLoaded: true, 321 | isPlaying: boolean, 322 | durationMillis: number, 323 | positionMillis: number, 324 | rate: number, 325 | shouldCorrectPitch: boolean, 326 | volume: number, 327 | isMuted: boolean, 328 | isLooping: boolean, 329 | didJustFinish: boolean 330 | } 331 | 332 | function setIsEnabledAsync(value: boolean): Promise 333 | function setAudioModeAsync(mode: AudioMode): Promise 334 | 335 | /** This class represents a sound corresponding to an Asset or URL. */ 336 | class Sound { 337 | /** 338 | * Creates and loads a sound from source, with optional `initialStatus`, `onPlaybackStatusUpdate`, and `downloadFirst`. 339 | * 340 | * @returns A `Promise` that is rejected if creation failed, or fulfilled with the following dictionary if creation succeeded: 341 | * - `sound`: The newly created and loaded Sound object. 342 | * - `status`: The PlaybackStatus of the Sound object. See the AV documentation for further information. 343 | */ 344 | static create( 345 | /** 346 | * The source of the sound. The following forms are supported: 347 | * 348 | * - A dictionary of the form `{ uri: 'http://path/to/file' }` with a network URL pointing to an audio file on the web. 349 | * - `require('path/to/file')` for an audio file asset in the source code directory. 350 | * - An `Expo.Asset` object for an audio file asset. 351 | */ 352 | source: PlaybackSource, 353 | 354 | /** The initial intended PlaybackStatusToSet of the sound, whose values will override the default initial playback status. This value defaults to `{}` if no parameter is passed. */ 355 | initialStatus?: PlaybackStatusToSet, 356 | 357 | /** A function taking a single parameter PlaybackStatus. This value defaults to `null` if no parameter is passed. */ 358 | onPlaybackStatusUpdate?: ((status?: PlaybackStatus) => void) | null, 359 | 360 | /** If set to true, the system will attempt to download the resource to the device before loading. This value defaults to `true`. Note that at the moment, this will only work for `source`s of the form `require('path/to/file')` or `Asset` objects. */ 361 | downloadFirst?: boolean 362 | ): Promise<{ sound: Sound, status: PlaybackStatus }> 363 | 364 | getStatusAsync(): Promise 365 | setOnPlaybackStatusUpdate(onPlaybackStatusUpdate?: (status: PlaybackStatus) => void): void 366 | 367 | loadAsync( 368 | source: PlaybackSource, 369 | /** Default: `{}`. */ 370 | initialStatus?: PlaybackStatusToSet, 371 | /** Default: `true`. */ 372 | downloadFirst?: boolean 373 | ): Promise 374 | 375 | unloadAsync(): Promise 376 | 377 | setStatusAsync(status: PlaybackStatusToSet): Promise 378 | 379 | playAsync(): Promise 380 | playFromPositionAsync(positionMillis: number): Promise 381 | pauseAsync(): Promise 382 | stopAsync(): Promise 383 | setPositionAsync(positionMillis: number): Promise 384 | setRateAsync(rate: number, shouldCorrectPitch: boolean): Promise 385 | setVolumeAsync(volume: number): Promise 386 | setIsMutedAsync(isMuted: boolean): Promise 387 | setIsLoopingAsync(isLooping: boolean): Promise 388 | setProgressUpdateIntervalAsync(progressUpdateIntervalMillis: number): Promise 389 | } 390 | 391 | class Recording { 392 | /** Gets the `status` of the `Recording`. */ 393 | getStatusAsync(): Promise 394 | 395 | /** Sets a function to be called regularly with the `status` of the `Recording`. */ 396 | setOnRecordingStatusUpdate(onRecordingStatusUpdate?: (status: RecordingStatus) => void): void 397 | 398 | /** Sets the interval with which onRecordingStatusUpdate is called while the recording can record. This value defaults to 500 milliseconds. */ 399 | setProgressUpdateInterval(progressUpdateIntervalMillis: number): void 400 | 401 | /** Loads the recorder into memory and prepares it for recording. This must be called before calling `startAsync()`. This method can only be called if the `Recording` instance has never yet been prepared. */ 402 | prepareToRecordAsync( 403 | /** Options for the recording, including sample rate, bitrate, channels, format, encoder, and extension. If no options are passed to `prepareToRecordAsync()`, the recorder will be created with options `Expo.Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY`. */ 404 | options?: RecordingOptions 405 | ): Promise 406 | 407 | /** Begins recording. This method can only be called if the `Recording` has been prepared. */ 408 | startAsync(): Promise 409 | 410 | /** 411 | * Pauses recording. This method can only be called if the Recording has been prepared. 412 | * 413 | * NOTE: This is only available on Android API version 24 and later. 414 | */ 415 | pauseAsync(): Promise 416 | 417 | /** Stops the recording and deallocates the recorder from memory. This reverts the Recording instance to an unprepared state, and another Recording instance must be created in order to record again. This method can only be called if the `Recording` has been prepared. */ 418 | stopAndUnloadAsync(): Promise 419 | 420 | /** 421 | * Gets the local URI of the Recording. Note that this will only succeed once the Recording is prepared to record. 422 | * 423 | * @returns A string with the local URI of the `Recording`, or `null` if the `Recording` is not prepared to record. 424 | */ 425 | getURI(): string | null | undefined 426 | 427 | /** 428 | * Creates and loads a new `Sound` object to play back the `Recording`. Note that this will only succeed once the `Recording` is done recording (once `stopAndUnloadAsync()` has been called). 429 | * 430 | * @returns A Promise that is rejected if creation failed, or fulfilled with the following dictionary if creation succeeded: 431 | * - `sound`: the newly created and loaded Sound object. 432 | * - `status`: the PlaybackStatus of the Sound object. 433 | */ 434 | createNewLoadedSound( 435 | /** The initial intended `PlaybackStatusToSet` of the sound, whose values will override the default initial playback status. This value defaults to `{}` if no parameter is passed. */ 436 | initialStatus?: PlaybackStatusToSet, 437 | 438 | /** A function taking a single parameter `PlaybackStatus`. This value defaults to `null` if no parameter is passed. */ 439 | onPlaybackStatusUpdate?: ((status: PlaybackStatus) => void) | null 440 | ): Promise<{ sound: Sound, status: PlaybackStatus }> 441 | } 442 | } 443 | 444 | namespace Brightness { 445 | function getBrightnessAsync(): Promise 446 | function getSystemBrightnessAsync(): Promise 447 | function setBrightnessAsync(brightnessValue: number): Promise 448 | function setSystemBrightnessAsync(brightnessValue: number): Promise 449 | } 450 | 451 | // #region Camera 452 | interface CameraProps extends ViewProperties { 453 | /** State of camera auto focus. Use one of `Camera.Constants.AutoFocus`. When `on`, auto focus will be enabled, when `off`, it wont’t and focus will lock as it was in the moment of change, but it can be adjusted on some devices via the `focusDepth` property. Default: `on`. */ 454 | autoFocus?: Camera.Constants.AutoFocus 455 | 456 | /** Default: Object.values(CameraManager.BarCodeType). */ 457 | barCodeTypes?: Array 458 | 459 | /** Camera flash mode. Use one of `Camera.Constants.FlashMode`. When `on`, the flash on your device will turn on when taking a picture, when `off`, it wont’t. Setting to `auto` will fire flash if required, `torch` turns on flash during the preview. Default: `off`. */ 460 | flashMode?: Camera.Constants.FlashMode 461 | 462 | /** Distance to plane of sharpest focus. A value between `0` and `1`: `0` - infinity focus, `1` - focus as close as possible. Default: `0`. */ 463 | focusDepth?: number 464 | 465 | onBarCodeRead?: Function 466 | 467 | /** Callback invoked when camera preview has been set. */ 468 | onCameraReady?: Function 469 | 470 | onMountError?: Function 471 | 472 | /** **Android only**. A string representing aspect ratio of the preview, eg. `'4:3'`, `'16:9'`, `'1:1'`. To check if a ratio is supported by the device use `getSupportedRatiosAsync`. Default: `'4:3'`. */ 473 | ratio?: string, 474 | 475 | /** Camera facing. Use one of `Camera.Constants.Type`. When `front`, use the front-facing camera. When `back`, use the back-facing camera. Default: `back`. */ 476 | type: Camera.Constants.Type, 477 | 478 | /** Camera white balance. Use one of `Camera.Constants.WhiteBalance`: `auto`, `sunny`, `cloudy`, `shadow`, `fluorescent`, `incandescent`. If a device does not support any of these values previous one is used. */ 479 | whiteBalance?: Camera.Constants.WhiteBalance 480 | 481 | /** A value between `0` and `1` being a percentage of device’s max zoom. `0` - not zoomed, `1` - maximum zoom. Default: `0`. */ 482 | zoom?: number 483 | } 484 | 485 | /** 486 | * A React component that renders a preview for the device’s either front or back camera. Camera’s parameters like zoom, auto focus, white balance and flash mode are adjustable. With use of Camera one can also take photos and record videos that are saved to the app’s cache. Only one Camera preview is supported by Expo right now. 487 | * 488 | * Requires `Permissions.CAMERA`. Video recording requires `Permissions.AUDIO_RECORDING`. 489 | */ 490 | class Camera extends Component { 491 | takePictureAsync(options: Camera.TakePictureOptions): Promise 492 | } 493 | 494 | namespace Camera { 495 | // From https://github.com/expo/expo/blob/32c29eea06ff5a2f811f3fe72239d1da2b23cba2/ios/versioned-react-native/ABI21_0_0/Exponent/Modules/Api/Components/ABI21_0_0EXCameraManager.m 496 | 497 | // tslint:disable-next-line:no-shadowed-variable 498 | namespace Constants { 499 | enum AutoFocus { 500 | on = 'on', 501 | off = 'off' 502 | } 503 | 504 | enum FlashMode { 505 | off = 'off', 506 | on = 'on', 507 | auto = 'auto', 508 | photo = 'photo' 509 | } 510 | 511 | /** Camera facing. */ 512 | enum Type { 513 | back = 'back', 514 | front = 'front' 515 | } 516 | 517 | enum VideoQuality { 518 | '2160p' = '2160p', 519 | '1080p' = '1080p', 520 | '720p' = '720p', 521 | '480p' = '480p', 522 | '4:3' = '4:3' 523 | } 524 | 525 | enum WhiteBalance { 526 | auto = 'auto', 527 | sunny = 'sunny', 528 | cloudy = 'cloudy', 529 | shadow = 'shadow', 530 | incandescent = 'incandescent', 531 | fluorescent = 'fluorescent' 532 | } 533 | } 534 | 535 | interface Photo { 536 | base64: boolean 537 | exif: boolean 538 | height: number 539 | uri: string 540 | width: number 541 | } 542 | 543 | interface TakePictureOptions { 544 | base64: boolean 545 | exif: boolean 546 | quality: number 547 | } 548 | } 549 | // #endregion 550 | 551 | /** System information that remains constant throughout the lifetime of your app. */ 552 | namespace Constants { 553 | type Platform = { 554 | ios: { 555 | /** The human-readable model name of this device, e.g. `"iPhone 7 Plus"`. */ 556 | model: string, 557 | 558 | /** The Apple internal model identifier for this device, e.g. `"iPhone1,1"`. */ 559 | platform: string, 560 | 561 | /** The version of iOS running on this device, e.g. `"10.3"`. */ 562 | systemVersion: string, 563 | 564 | /** The user interface idiom of this device, i.e. whether the app is running on an iPhone or an iPad. Current supported values are `"handset"` and `"tablet"`. Apple TV and CarPlay will show up as `"unsupported"`. */ 565 | userInterfaceIdiom: string 566 | } 567 | } 568 | 569 | /** 570 | * - `"expo"`: Running inside the Expo client. 571 | * - `"standalone"`: Standalone app. 572 | * - `"guest"`: Opened through a link from a standalone app. 573 | */ 574 | const appOwnership: 'expo' | 'standalone' | 'guest' 575 | 576 | /** An identifier that is unique to this particular device and installation of the Expo client. */ 577 | const deviceId: string 578 | 579 | /** A human-readable name for the device type. */ 580 | const deviceName: string 581 | 582 | /** The year the device would be considered high end. Might be Android only. */ 583 | const deviceYearClass: number 584 | 585 | /** The version string of the Expo client currently running. */ 586 | const expoVersion: string 587 | 588 | /** Gets the user agent string which would be included in requests sent by a web view running on this device. */ 589 | function getWebViewUserAgentAsync(): Promise 590 | 591 | /** true if the app is running on a device, false if running in a simulator or emulator. */ 592 | const isDevice: boolean 593 | 594 | /** When an app is opened due to a deep link, the prefix of the URI without the deep link part. This value depends on `Expo.Constants.appOwnership`—: it may be different if your app is running standalone vs. in the Expo client. */ 595 | const linkingUri: string 596 | 597 | /** See https://docs.expo.io/versions/latest/guides/how-expo-works.html#expo-manifest. */ 598 | const manifest: any 599 | 600 | const platform: Platform 601 | 602 | /** A string that is unique to the current session of your app. It is different across apps and across multiple launches of the same app. */ 603 | const sessionId: string 604 | 605 | /** The default status bar height for the device. Does not factor in changes when location tracking is in use or a phone call is active. */ 606 | const statusBarHeight: number 607 | 608 | /** A list of the system font names available on the current device. */ 609 | const systemFonts: Array 610 | } 611 | 612 | namespace Contacts { 613 | type FieldType = 'phoneNumbers' | 'emails' | 'addresses' 614 | 615 | interface Options { 616 | pageSize?: number 617 | pageOffset?: number 618 | fields?: Array 619 | } 620 | 621 | interface Contact { 622 | id: number 623 | name: string 624 | firstName?: string 625 | middleName?: string 626 | lastName?: string 627 | emails?: Array<{ 628 | email?: string, 629 | primary?: boolean, 630 | label: string 631 | }> 632 | phoneNumbers?: Array<{ 633 | number?: string, 634 | primary?: boolean, 635 | label: string 636 | }> 637 | addresses?: Array<{ 638 | street?: string, 639 | city?: string, 640 | country?: string, 641 | region?: string, 642 | neighborhood?: string, 643 | postcode?: string, 644 | pobox?: string, 645 | label: string 646 | }> 647 | company?: string 648 | jobTitle?: string 649 | } 650 | 651 | interface Response { 652 | data: Array, 653 | total: number, 654 | hasNextPage: boolean, 655 | hasPreviousPage: boolean, 656 | } 657 | 658 | const PHONE_NUMBERS = 'phoneNumbers' 659 | const EMAILS = 'emails' 660 | const ADDRESSES = 'addresses' 661 | 662 | type Field = 'phoneNumbers' | 'emails' | 'addresses' 663 | 664 | interface Options { 665 | pageSize?: number 666 | pageOffset?: number 667 | fields?: Array 668 | } 669 | function getContactsAsync(options: Options): Promise 670 | } 671 | 672 | //#region BlurView 673 | interface BlurViewProps { 674 | intensity: number 675 | style?: ViewStyle 676 | tint: 'light' | 'default' | 'dark' 677 | } 678 | 679 | class BlurView extends React.Component { } 680 | //#endregion 681 | 682 | class AppLoading extends React.Component { } 683 | 684 | //#region BarCodeScanner 685 | interface BarCodeScannerProps { 686 | type?: 'front' | 'back' 687 | torchMode?: 'on' | 'off' 688 | barCodeTypes: Array // TODO: add supported formats 689 | style: ViewStyle 690 | } 691 | 692 | class BarCodeScanner extends React.Component { } 693 | //#endregion 694 | 695 | //#region GLView 696 | // TODO: better defs because there is no complete documentation. I did it from the code. 697 | interface GLViewProps extends ViewProperties { 698 | onContextCreate(): void 699 | msaaSamples: number 700 | } 701 | 702 | class GLView extends React.Component { } 703 | //#endregion 704 | 705 | class KeepAwake extends React.Component { 706 | static activate(): void 707 | static deactivate(): void 708 | } 709 | 710 | //#region MapView 711 | // Copied from https://github.com/airbnb/react-native-maps/blob/master/index.d.ts. Don't know if it is possible to avoid copying. 712 | interface MapViewProps { 713 | provider?: 'google' 714 | style: any 715 | customMapStyle?: Array 716 | customMapStyleString?: string 717 | showsUserLocation?: boolean 718 | userLocationAnnotationTitle?: string 719 | showsMyLocationButton?: boolean 720 | followsUserLocation?: boolean 721 | showsPointsOfInterest?: boolean 722 | showsCompass?: boolean 723 | zoomEnabled?: boolean 724 | rotateEnabled?: boolean 725 | cacheEnabled?: boolean 726 | loadingEnabled?: boolean 727 | loadingBackgroundColor?: any 728 | loadingIndicatorColor?: any 729 | scrollEnabled?: boolean 730 | pitchEnabled?: boolean 731 | toolbarEnabled?: boolean 732 | moveOnMarkerPress?: boolean 733 | showsScale?: boolean 734 | showsBuildings?: boolean 735 | showsTraffic?: boolean 736 | showsIndoors?: boolean 737 | showsIndoorLevelPicker?: boolean 738 | mapType?: 'standard' | 'satellite' | 'hybrid' | 'terrain' | 'none' 739 | region?: { 740 | latitude: number; 741 | longitude: number; 742 | /** Distance between the minimum and the maximum latitude. */ 743 | latitudeDelta: number; 744 | /** Distance between the minimum and the maximum longitude. */ 745 | longitudeDelta: number; 746 | } 747 | initialRegion?: { 748 | latitude: number; 749 | longitude: number; 750 | /** Distance between the minimum and the maximum latitude. */ 751 | latitudeDelta: number; 752 | /** Distance between the minimum and the maximum longitude. */ 753 | longitudeDelta: number; 754 | } 755 | liteMode?: boolean 756 | maxDelta?: number 757 | minDelta?: number 758 | legalLabelInsets?: any 759 | onChange?: Function 760 | onMapReady?: Function 761 | onRegionChange?: Function 762 | onRegionChangeComplete?: Function 763 | onPress?: Function 764 | onLayout?: Function 765 | onLongPress?: Function 766 | onPanDrag?: Function 767 | onMarkerPress?: Function 768 | onMarkerSelect?: Function 769 | onMarkerDeselect?: Function 770 | onCalloutPress?: Function 771 | onMarkerDragStart?: Function 772 | onMarkerDrag?: Function 773 | onMarkerDragEnd?: Function 774 | minZoomLevel?: number 775 | maxZoomLevel?: number 776 | } 777 | 778 | class MapView extends React.Component { 779 | static Animated: any 780 | static AnimatedRegion: any 781 | } 782 | 783 | namespace MapView { 784 | type LineCapType = 'butt' | 'round' | 'square' 785 | type LineJoinType = 'miter' | 'round' | 'bevel' 786 | 787 | interface MarkerProps { 788 | identifier?: string 789 | reuseIdentifier?: string 790 | title?: string 791 | description?: string 792 | image?: any 793 | opacity?: number 794 | pinColor?: string 795 | coordinate: { latitude: number; longitude: number } 796 | centerOffset?: { x: number; y: number } 797 | calloutOffset?: { x: number; y: number } 798 | anchor?: { x: number; y: number } 799 | calloutAnchor?: { x: number; y: number } 800 | flat?: boolean 801 | draggable?: boolean 802 | onPress?: Function 803 | onSelect?: Function 804 | onDeselect?: Function 805 | onCalloutPress?: Function 806 | onDragStart?: Function 807 | onDrag?: Function 808 | onDragEnd?: Function 809 | zIndex?: number 810 | } 811 | 812 | interface MapPolylineProps { 813 | coordinates?: Array<{ latitude: number; longitude: number; }> 814 | onPress?: Function 815 | tappable?: boolean 816 | fillColor?: string 817 | strokeWidth?: number 818 | strokeColor?: string 819 | zIndex?: number 820 | lineCap?: LineCapType 821 | lineJoin?: LineJoinType 822 | miterLimit?: number 823 | geodesic?: boolean 824 | lineDashPhase?: number 825 | lineDashPattern?: Array 826 | } 827 | 828 | interface MapPolygonProps { 829 | coordinates?: Array<{ latitude: number; longitude: number; }> 830 | holes?: Array> 831 | onPress?: Function 832 | tappable?: boolean 833 | strokeWidth?: number 834 | strokeColor?: string 835 | fillColor?: string 836 | zIndex?: number 837 | lineCap?: LineCapType 838 | lineJoin?: LineJoinType 839 | miterLimit?: number 840 | geodesic?: boolean 841 | lineDashPhase?: number 842 | lineDashPattern?: Array 843 | } 844 | 845 | interface MapCircleProps { 846 | center: { latitude: number; longitude: number } 847 | radius: number 848 | onPress?: Function 849 | strokeWidth?: number 850 | strokeColor?: string 851 | fillColor?: string 852 | zIndex?: number 853 | lineCap?: LineCapType 854 | lineJoin?: LineJoinType 855 | miterLimit?: number 856 | lineDashPhase?: number 857 | lineDashPattern?: Array 858 | } 859 | 860 | interface MapUrlTitleProps { 861 | urlTemplate: string 862 | zIndex?: number 863 | } 864 | 865 | interface MapCalloutProps { 866 | tooltip?: boolean 867 | onPress?: Function 868 | } 869 | 870 | class Marker extends React.Component { } 871 | class Polyline extends React.Component { } 872 | class Polygon extends React.Component { } 873 | class Circle extends React.Component { } 874 | class UrlTile extends React.Component { } 875 | class Callout extends React.Component { } 876 | } 877 | //#endregion 878 | 879 | /** 880 | * Expo Video 881 | */ 882 | interface VideoLoad { 883 | duration: number 884 | currentTime: number 885 | canPlayReverse: boolean 886 | canPlayFastForward: boolean 887 | canPlaySlowForward: boolean 888 | canPlaySlowReverse: boolean 889 | canStepBackward: boolean 890 | canStepForward: boolean 891 | naturalSize: { 892 | width: number; 893 | heigth: number; 894 | orientation: 'landscape' | 'portrait' 895 | } 896 | } 897 | type VideoError = 898 | { 899 | code: any, 900 | domain: any 901 | } | { 902 | what: any, 903 | extra: any 904 | } 905 | 906 | interface VideoProgress { 907 | currentTime: number 908 | playableDuration: number 909 | } 910 | 911 | interface VideoSeek { 912 | currentTime: number 913 | seekTime: number 914 | } 915 | 916 | interface VideoProps { 917 | source: any // TODO: better def: string|*require(file)* 918 | fullscreen?: boolean 919 | resizeMode?: string // TODO: resize mode instead of general string 920 | repeat?: boolean 921 | paused?: boolean 922 | volume?: number 923 | muted?: boolean 924 | rate?: number 925 | onLoadStart?: (param: { uri: string }) => any 926 | onLoad?: (load: VideoLoad) => any 927 | onError?: (error: { error: VideoError }) => any 928 | onProgress?: (progress: VideoProgress) => any 929 | onSeek?: (seek: VideoSeek) => any 930 | onEnd?: () => any 931 | } 932 | 933 | class Video extends React.Component { 934 | static RESIZE_MODE_CONTAIN: string 935 | static RESIZE_MODE_COVER: string 936 | static RESIZE_MODE_STRETCH: string 937 | 938 | seek(time: string): void 939 | presentFullscreenPlayer(): void 940 | dismissFullscreenPlayer(): void 941 | } 942 | 943 | namespace DocumentPicker { 944 | interface Options { 945 | type: string 946 | } 947 | type Response = 948 | { 949 | type: 'success', 950 | uri: string, 951 | name: string, 952 | size: number 953 | } | { 954 | type: 'cancel' 955 | } 956 | 957 | function getDocumentAsync(options: Options): Response 958 | } 959 | 960 | namespace ErrorRecovery { 961 | function setRecoveryProps(props: object): void 962 | } 963 | 964 | namespace Facebook { 965 | type FacebookPermissions = 'email' | 'public_profile' | 'read_custom_friendlists' | 'user_about_me' | 'user_birthday' | 'user_education_history' | 'user_friends' | 'user_hometown' | 'user_location' | 'user_relationship_details' | 'user_relationships' | 'user_religion_politics' | 'user_work_history' | 'user_actions.books' | 'user_actions.fitness' | 'user_actions.music' | 'user_actions.news' | 'user_actions.video' | 'user_games_activity' | 'user_likes' | 'user_photos' | 'user_posts' | 'user_tagged_places' | 'user_videos' | 'user_website' | 'user_events' | 'user_managed_groups' | 'publish_actions' | 'rsvp_event' | 'ads_management' | 'ads_read' | 'business_management' | 'read_audience_network_insights' | 'read_insights' | 'manage_pages' | 'pages_manage_cta' | 'pages_manage_instant_articles' | 'pages_show_list' | 'read_page_mailboxes' | 'publish_pages' | 'pages_messaging' | 'pages_messaging_payments' | 'pages_messaging_phone_number' | 'pages_messaging_subscriptions' | 'instagram_basic' | 'instagram_manage_comments' | 'instagram_manage_insights' 966 | 967 | interface Options { 968 | permissions?: Array 969 | behavior?: 'web' | 'native' | 'browser' | 'system' 970 | } 971 | 972 | type Response = 973 | { 974 | type: 'success', 975 | token: string, 976 | expires: number 977 | } | { 978 | type: 'cancel' 979 | } 980 | 981 | function logInWithReadPermissionsAsync(appId: string, options: Options): Promise 982 | } 983 | 984 | namespace FacebookAds { 985 | /** 986 | * Interstitial Ads 987 | */ 988 | namespace InterstitialAdManager { 989 | function showAd(placementId: string): Promise 990 | } 991 | 992 | /** 993 | * Native Ads 994 | */ 995 | type MediaCachePolicy = 'none' | 'icon' | 'image' | 'all' 996 | class NativeAdsManager { 997 | constructor(placementId: string, numberOfAdsToRequest?: number); 998 | disableAutoRefresh(): void 999 | setMediaCachePolicy(iOS: MediaCachePolicy): any 1000 | } 1001 | 1002 | function withNativeAd(component: React.Component<{ 1003 | icon?: string; 1004 | coverImage?: string; 1005 | title?: string; 1006 | subtitle?: string; 1007 | description?: string; 1008 | callToActionText?: string; 1009 | socialContext?: string; 1010 | }, any>): React.Component<{ adsManager: NativeAdsManager }, { ad: any, canRequestAds: boolean }> 1011 | 1012 | /** 1013 | * Banner View 1014 | */ 1015 | type AdType = 'large' | 'rectangle' | 'standard' 1016 | 1017 | interface BannerViewProps { 1018 | type: AdType 1019 | placementId: string 1020 | onPress: () => any 1021 | onError: () => any 1022 | } 1023 | 1024 | class BannerView extends React.Component { } 1025 | 1026 | /** 1027 | * Ad Settings 1028 | */ 1029 | namespace AdSettings { 1030 | const currentDeviceHash: string 1031 | function addTestDevice(device: string): void 1032 | function clearTestDevices(): void 1033 | type SDKLogLevel = 'none' 1034 | | 'debug' 1035 | | 'verbose' 1036 | | 'warning' 1037 | | 'error' 1038 | | 'notification' 1039 | 1040 | function setLogLevel(logLevel: SDKLogLevel): void 1041 | function setIsChildDirected(isDirected: boolean): void 1042 | function setMediationService(mediationService: string): void 1043 | function setUrlPrefix(urlPrefix: string): void 1044 | } 1045 | } 1046 | 1047 | namespace Font { 1048 | type FontSource = string | number | Asset 1049 | 1050 | function isLoaded(name: string): boolean 1051 | function isLoading(name: string): boolean 1052 | function loadAsync( 1053 | nameOrMap: string | { [index: string]: FontSource }, 1054 | uriOrModuleOrAsset?: FontSource 1055 | ): Promise 1056 | function processFontFamily(name?: string | null): string | null | undefined 1057 | } 1058 | 1059 | namespace Google { 1060 | interface LogInConfig { 1061 | androidClientId?: string 1062 | androidStandaloneAppClientId?: string 1063 | iosClientId?: string 1064 | iosStandaloneAppClientId?: string 1065 | behavior?: 'system' | 'web' 1066 | scopes?: Array 1067 | } 1068 | 1069 | type LogInResult = 1070 | { 1071 | type: 'cancel' 1072 | } | { 1073 | type: 'success', 1074 | accessToken: string, 1075 | idToken?: string, 1076 | refreshToken?: string, 1077 | serverAuthCode?: string, 1078 | user: { 1079 | id: string, 1080 | name: string, 1081 | givenName: string, 1082 | familyName: string, 1083 | photoUrl?: string, 1084 | email?: string 1085 | } 1086 | } 1087 | 1088 | function logInAsync(config: LogInConfig): Promise 1089 | } 1090 | 1091 | /** Access the device gyroscope sensor to respond to changes in rotation in 3d space. */ 1092 | namespace Gyroscope { 1093 | interface GyroscopeObject { 1094 | x: number 1095 | y: number 1096 | z: number 1097 | } 1098 | 1099 | /** A callback that is invoked when an gyroscope update is available. */ 1100 | function addListener(listener: (obj: GyroscopeObject) => any): EventSubscription 1101 | 1102 | /** Remove all listeners. */ 1103 | function removeAllListeners(): void 1104 | 1105 | /** Subscribe for updates to the gyroscope. */ 1106 | function setUpdateInterval(intervalMs: number): void 1107 | } 1108 | 1109 | namespace ImagePicker { 1110 | interface ImageInfo { 1111 | uri: string 1112 | width: number 1113 | height: number 1114 | } 1115 | 1116 | type ImageResult = { cancelled: true } | ({ cancelled: false } & ImageInfo) 1117 | 1118 | interface ImageLibraryOptions { 1119 | allowsEditing?: boolean 1120 | aspect?: [number, number] 1121 | quality?: number 1122 | } 1123 | 1124 | function launchImageLibraryAsync(options?: ImageLibraryOptions): Promise 1125 | 1126 | interface CameraOptions { 1127 | allowsEditing?: boolean 1128 | aspect?: [number, number] 1129 | quality?: number 1130 | } 1131 | function launchCameraAsync(options?: CameraOptions): Promise 1132 | } 1133 | 1134 | interface LinearGradientProps extends ViewProperties { 1135 | colors?: Array 1136 | start?: [number, number] 1137 | end?: [number, number] 1138 | locations?: Array 1139 | } 1140 | 1141 | /** Linear gradient. See https://github.com/react-native-community/react-native-linear-gradient. */ 1142 | class LinearGradient extends Component { } 1143 | 1144 | namespace Location { 1145 | interface LocationOptions { 1146 | enableHighAccuracy?: boolean 1147 | timeInterval?: number 1148 | distanceInterval?: number 1149 | } 1150 | 1151 | interface LocationData { 1152 | coords: { 1153 | latitude: number, 1154 | longitude: number, 1155 | altitude: number, 1156 | accuracy: number, 1157 | heading: number, 1158 | speed: number 1159 | } 1160 | timestamp: number 1161 | } 1162 | 1163 | type LocationCallback = (data: LocationData) => any 1164 | 1165 | function getCurrentPositionAsync(options: LocationOptions): Promise // TODO: check if it's correct 1166 | function watchPositionAsync(options: LocationOptions, callback: (data: LocationData) => any): EventSubscription 1167 | } 1168 | 1169 | namespace Notifications { 1170 | interface Notification { 1171 | origin: 'selected' | 'received' 1172 | data: any 1173 | remote: boolean 1174 | isMultiple: boolean 1175 | } 1176 | 1177 | interface LocalNotification { 1178 | title: string 1179 | body?: string 1180 | data?: any 1181 | ios?: { 1182 | sound?: boolean 1183 | } 1184 | android?: { 1185 | sound?: boolean; 1186 | icon?: string; 1187 | color?: string; 1188 | priority?: 'min' | 'low' | 'high' | 'max'; 1189 | sticky?: boolean; 1190 | vibrate?: boolean | Array; 1191 | link?: string; 1192 | } 1193 | } 1194 | 1195 | type LocalNotificationId = string | number 1196 | 1197 | function addListener(listener: (notification: Notification) => any): EventSubscription 1198 | function getExponentPushTokenAsync(): Promise 1199 | function presentLocalNotificationAsync(localNotification: LocalNotification): Promise 1200 | function scheduleLocalNotificationAsync( 1201 | localNotification: LocalNotification, 1202 | schedulingOptions: { time: Date | number, repeat?: 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' } 1203 | ): Promise 1204 | function dismissNotificationAsync(localNotificationId: LocalNotificationId): Promise 1205 | function dismissAllNotificationsAsync(): Promise 1206 | function cancelScheduledNotificationAsync(localNotificationId: LocalNotificationId): Promise 1207 | function cancelAllScheduledNotificationsAsync(): Promise 1208 | function getBadgeNumberAsync(): Promise 1209 | function setBadgeNumberAsync(badgeNumber: number): Promise 1210 | } 1211 | 1212 | namespace Permissions { 1213 | type PermissionType 1214 | = 'audioRecording' 1215 | | 'camera' 1216 | | 'cameraRoll' 1217 | | 'contacts' 1218 | | 'location' 1219 | | 'remoteNotifications' 1220 | | 'systemBrightness' 1221 | 1222 | type PermissionStatus = 'undetermined' | 'granted' | 'denied' 1223 | type PermissionExpires = 'never' 1224 | interface PermissionDetailsLocationIos { 1225 | scope: 'whenInUse' | 'always' 1226 | } 1227 | interface PermissionDetailsLocationAndroid { 1228 | scope: 'fine' | 'coarse' | 'none' 1229 | } 1230 | interface PermissionResponse { 1231 | android?: PermissionDetailsLocationAndroid 1232 | expires: PermissionExpires 1233 | ios?: PermissionDetailsLocationIos 1234 | status: PermissionStatus 1235 | } 1236 | 1237 | function getAsync(type: PermissionType): Promise 1238 | function askAsync(type: PermissionType): Promise 1239 | 1240 | const AUDIO_RECORDING: PermissionType 1241 | const CAMERA_ROLL: PermissionType 1242 | const CAMERA: PermissionType 1243 | const CONTACTS: PermissionType 1244 | const LOCATION: PermissionType 1245 | const NOTIFICATIONS: PermissionType 1246 | const REMOTE_NOTIFICATIONS: PermissionType 1247 | const SYSTEM_BRIGHTNESS: PermissionType 1248 | } 1249 | 1250 | /** Register Root Component. Useful when using function like react-redux connect for example. */ 1251 | // TODO: verify if it's a good idea or not to use generics. 1252 | function registerRootComponent(component: React.Component): React.Component 1253 | 1254 | namespace ScreenOrientation { 1255 | namespace Orientation { 1256 | /** All 4 possible orientations. */ 1257 | const ALL: 'ALL' 1258 | 1259 | /** All but reverse portrait, could be all 4 orientations on certain Android devices. */ 1260 | const ALL_BUT_UPSIDE_DOWN: 'ALL_BUT_UPSIDE_DOWN' 1261 | 1262 | /** Portrait orientation, could also be reverse portrait on certain Android devices. */ 1263 | const PORTRAIT: 'PORTRAIT' 1264 | 1265 | /** Upside portrait only. */ 1266 | const PORTRAIT_UP: 'PORTRAIT_UP' 1267 | 1268 | /** Upside down portrait only. */ 1269 | const PORTRAIT_DOWN: 'PORTRAIT_DOWN' 1270 | 1271 | /** Any landscape orientation. */ 1272 | const LANDSCAPE: 'LANDSCAPE' 1273 | 1274 | /** Left landscape only. */ 1275 | const LANDSCAPE_LEFT: 'LANDSCAPE_LEFT' 1276 | 1277 | /** Right landscape only. */ 1278 | const LANDSCAPE_RIGHT: 'LANDSCAPE_RIGHT' 1279 | } 1280 | 1281 | function allow(orientation: 'ALL' | 'ALL_BUT_UPSIDE_DOWN' | 'PORTRAIT' | 'PORTRAIT_UP' | 'PORTRAIT_DOWN' | 'LANDSCAPE' | 'LANDSCAPE_LEFT' | 'LANDSCAPE_RIGHT'): void 1282 | } 1283 | 1284 | // TODO: check that all these functions return void or not. 1285 | namespace Segment { 1286 | function initializeIOS(writeKey: string): void 1287 | function initializeAndroid(writeKey: string): void 1288 | function identify(userId: string): void 1289 | function identifyWithTraits(userId: string, traits: any): void 1290 | function track(event: string): void 1291 | function trackWithProperties(event: string, properties: any): void 1292 | function flush(): void 1293 | } 1294 | 1295 | namespace SQLite { 1296 | type Error = any 1297 | 1298 | interface Database { 1299 | transaction( 1300 | callback: (transaction: Transaction) => any, 1301 | error?: (error: Error) => any, // TODO def of error 1302 | success?: () => any 1303 | ): void 1304 | } 1305 | 1306 | interface Transaction { 1307 | executeSql( 1308 | sqlStatement: string, 1309 | arguments?: Array, 1310 | success?: (transaction: Transaction, resultSet: ResultSet) => any, 1311 | error?: (transaction: Transaction, error: Error) => any 1312 | ): any 1313 | } 1314 | 1315 | interface ResultSet { 1316 | insertId: number 1317 | rowAffected: number 1318 | rows: { 1319 | length: number; 1320 | item: (index: number) => any; 1321 | _array: Array; 1322 | } 1323 | } 1324 | 1325 | function openDatabase( 1326 | name: string | { 1327 | name: string, 1328 | version?: string, 1329 | description?: string, 1330 | size?: number, 1331 | callback?: () => any 1332 | }, 1333 | version?: string, 1334 | description?: string, 1335 | size?: number, 1336 | callback?: () => any 1337 | ): any 1338 | } 1339 | 1340 | //#region Svg 1341 | class Svg extends Component { } 1342 | 1343 | namespace Svg { 1344 | interface CircleProps extends SharedPathProps { 1345 | cx: number | string 1346 | cy: number | string 1347 | r: number | string 1348 | } 1349 | 1350 | interface ClipPathProps { 1351 | id: string 1352 | } 1353 | 1354 | interface ClipProps { 1355 | clipPath?: string 1356 | clipRule?: 'evenodd' | 'nonzero' 1357 | } 1358 | 1359 | interface DefinationProps { 1360 | name?: string 1361 | } 1362 | 1363 | interface EllipseProps extends SharedPathProps { 1364 | cx: number | string 1365 | cy: number | string 1366 | rx: number | string 1367 | ry: number | string 1368 | } 1369 | 1370 | interface FillProps { 1371 | fill?: string 1372 | fillOpacity?: number | string 1373 | fillRule?: 'evenodd' | 'nonzero' 1374 | } 1375 | 1376 | interface FontProps { 1377 | fontFamily?: string 1378 | fontSize?: number | string 1379 | fontWeight?: number | string 1380 | fontStyle?: string 1381 | font?: object 1382 | } 1383 | 1384 | interface ImageProps extends ResponderProps, TouchableProps { 1385 | height: number | string 1386 | href?: ImageURISource | Array 1387 | preserveAspectRatio?: string 1388 | width: number | string 1389 | x?: number | string 1390 | y?: number | string 1391 | } 1392 | 1393 | // tslint:disable-next-line:no-shadowed-variable 1394 | interface LinearGradientProps { 1395 | gradientUnits?: 'objectBoundingBox' | 'userSpaceOnUse' 1396 | id: string 1397 | x1: number | string 1398 | x2: number | string 1399 | y1: number | string 1400 | y2: number | string 1401 | } 1402 | 1403 | interface LineProps extends SharedPathProps { 1404 | x1: number | string 1405 | x2: number | string 1406 | y1: number | string 1407 | y2: number | string 1408 | } 1409 | 1410 | interface PathProps extends SharedPathProps { 1411 | d: string 1412 | } 1413 | 1414 | interface PatternProps { 1415 | patternContentUnits?: 'userSpaceOnUse' | 'objectBoundingBox' 1416 | patternTransform?: string 1417 | patternUnits?: 'userSpaceOnUse' | 'objectBoundingBox' 1418 | x1?: number | string 1419 | x2?: number | string 1420 | y1?: number | string 1421 | y2?: number | string 1422 | } 1423 | 1424 | interface PolygonProps extends SharedPathProps { 1425 | points: string | Array 1426 | } 1427 | 1428 | interface PolylineProps extends SharedPathProps { 1429 | points: string | Array 1430 | } 1431 | 1432 | interface RadialGradientProps { 1433 | cx: number | string 1434 | cy: number | string 1435 | fx: number | string 1436 | fy: number | string 1437 | gradientUnits?: 'objectBoundingBox' | 'userSpaceOnUse' 1438 | id: string 1439 | r?: number | string 1440 | rx?: number | string 1441 | ry?: number | string 1442 | } 1443 | 1444 | interface RectProps extends SharedPathProps { 1445 | height: number | string 1446 | rx?: number | string 1447 | ry?: number | string 1448 | width: number | string 1449 | x: number | string 1450 | y: number | string 1451 | } 1452 | 1453 | interface ResponderProps { 1454 | onMoveShouldSetPanResponder?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1455 | onMoveShouldSetPanResponderCapture?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1456 | onPanResponderEnd?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1457 | onPanResponderGrant?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1458 | onPanResponderMove?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1459 | onPanResponderReject?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1460 | onPanResponderRelease?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1461 | onPanResponderStart?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1462 | onPanResponderTerminate?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1463 | onPanResponderTerminationRequest?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1464 | onShouldBlockNativeResponder?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1465 | onStartShouldSetPanResponder?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1466 | onStartShouldSetPanResponderCapture?: (e: GestureResponderEvent, gestureState: PanResponderGestureState) => any 1467 | } 1468 | 1469 | interface SharedPathProps extends 1470 | ClipProps, 1471 | DefinationProps, 1472 | FillProps, 1473 | ResponderProps, 1474 | StrokeProps, 1475 | TouchableProps, 1476 | TransformProps { 1477 | } 1478 | 1479 | interface StopProps { 1480 | offset: number | string 1481 | stopColor: string 1482 | stopOpacity?: number | string 1483 | } 1484 | 1485 | interface StrokeProps { 1486 | stroke?: string 1487 | strokeDasharray?: Array | string 1488 | strokeDashoffset?: number | string 1489 | strokeLinecap?: 'butt' | 'square' | 'round' 1490 | strokeLinejoin?: 'miter' | 'bevel' | 'round' 1491 | strokeMiterlimit?: number | string 1492 | strokeOpacity?: number | string 1493 | strokeWidth?: number | string 1494 | } 1495 | 1496 | interface SvgProps extends ViewProperties { 1497 | height?: number | string 1498 | opacity?: number | string 1499 | preserveAspectRatio?: string 1500 | viewBox?: string 1501 | width?: number | string 1502 | } 1503 | 1504 | interface SymbolProps { 1505 | id: string 1506 | preserveAspectRatio?: string 1507 | viewBox?: string 1508 | } 1509 | 1510 | interface TextProps extends FontProps, SharedPathProps { 1511 | dx?: number | string 1512 | dy?: number | string 1513 | textAnchor?: 'start' | 'middle' | 'end' 1514 | } 1515 | 1516 | interface TextPathProps extends FontProps, SharedPathProps { 1517 | href: string 1518 | startOffset?: number | string 1519 | } 1520 | 1521 | interface TouchableProps { 1522 | delayLongPress?: number 1523 | delayPressIn?: number 1524 | delayPressOut?: number 1525 | disabled?: boolean 1526 | onLongPress?: (...args: Array) => any 1527 | onPress?: (...args: Array) => any 1528 | onPressIn?: (...args: Array) => any 1529 | onPressOut?: (...args: Array) => any 1530 | } 1531 | 1532 | interface TransformProps { 1533 | origin?: number | string 1534 | originX?: number | string 1535 | originY?: number | string 1536 | rotate?: number | string 1537 | rotation?: number | string 1538 | scale?: number | string 1539 | scaleX?: number | string 1540 | scaleY?: number | string 1541 | skew?: number | string 1542 | skewX?: number | string 1543 | skewY?: number | string 1544 | transform?: object 1545 | translate?: number | string 1546 | translateX?: number | string 1547 | translateY?: number | string 1548 | x?: number | string 1549 | y?: number | string 1550 | } 1551 | 1552 | interface TSpanProps extends FontProps, SharedPathProps { 1553 | dx?: number | string 1554 | dy?: number | string 1555 | textAnchor?: 'start' | 'middle' | 'end' 1556 | } 1557 | 1558 | interface UseProps extends SharedPathProps { 1559 | height?: number | string 1560 | href: string 1561 | width?: number | string 1562 | } 1563 | 1564 | class Circle extends Component { } 1565 | class ClipPath extends Component { } 1566 | class Defs extends Component<{}> { } 1567 | class Ellipse extends Component { } 1568 | class G extends Component { } 1569 | class Image extends Component { } 1570 | class Line extends Component { } 1571 | // tslint:disable-next-line:no-shadowed-variable 1572 | class LinearGradient extends Component { } 1573 | class Path extends Component { } 1574 | class Pattern extends Component { } 1575 | class Polygon extends Component { } 1576 | class Polyline extends Component { } 1577 | class RadialGradient extends Component { } 1578 | class Rect extends Component { } 1579 | class Shape extends Component<{}> { } 1580 | class Stop extends Component { } 1581 | class Symbol extends Component { } 1582 | class Text extends Component { } 1583 | class TextPath extends Component { } 1584 | class TSpan extends Component { } 1585 | class Use extends Component { } 1586 | } 1587 | //#endregion 1588 | 1589 | function takeSnapshotAsync( 1590 | view?: (number | React.ReactElement), 1591 | options?: { 1592 | width?: number, 1593 | height?: number, 1594 | format?: 'png' | 'jpg' | 'jpeg' | 'webm', 1595 | quality?: number, 1596 | result?: 'file' | 'base64' | 'data-uri' 1597 | } 1598 | ): Promise 1599 | 1600 | /** Helpful utility functions that don’t fit anywhere else, including some localization and internationalization methods. */ 1601 | namespace Util { 1602 | /** Returns the current device country code. */ 1603 | function getCurrentDeviceCountryAsync(): Promise 1604 | 1605 | /** Returns the current device locale as a string. */ 1606 | function getCurrentLocaleAsync(): Promise 1607 | 1608 | /** Returns the current device time zone name. */ 1609 | function getCurrentTimeZoneAsync(): Promise 1610 | 1611 | /** Reloads the current experience. This will fetch and load the newest available JavaScript supported by the device’s Expo environment. This is useful for triggering an update of your experience if you have published a new version. */ 1612 | function reload(): void 1613 | 1614 | /** _Android only_. Invokes a callback when a new version of your app is successfully downloaded in the background. */ 1615 | function addNewVersionListenerExperimental(listener: Function): EventSubscription 1616 | } 1617 | 1618 | namespace WebBrowser { 1619 | function openBrowserAsync(url: string): Promise<{ type: 'cancelled' | 'dismissed' }> 1620 | function dismissBrowser(): Promise<{ type: 'dismissed' }> 1621 | } 1622 | } 1623 | 1624 | declare module '@expo/vector-icons' { 1625 | import { Component } from 'react' 1626 | import { TextStyle } from 'react-native' 1627 | 1628 | interface BaseIconProps { 1629 | size?: number 1630 | color?: string 1631 | style?: TextStyle 1632 | } 1633 | 1634 | // Icon names taken from https://github.com/expo/vector-icons/tree/master/vendor/react-native-vector-icons/glyphmaps. 1635 | interface EntypoProps extends BaseIconProps { 1636 | name: '500px' | '500px-with-circle' | 'add-to-list' | 'add-user' | 'address' | 'adjust' | 'air' | 'aircraft' | 'aircraft-landing' | 'aircraft-take-off' | 'align-bottom' | 'align-horizontal-middle' | 'align-left' | 'align-right' | 'align-top' | 'align-vertical-middle' | 'app-store' | 'archive' | 'area-graph' | 'arrow-bold-down' | 'arrow-bold-left' | 'arrow-bold-right' | 'arrow-bold-up' | 'arrow-down' | 'arrow-left' | 'arrow-long-down' | 'arrow-long-left' | 'arrow-long-right' | 'arrow-long-up' | 'arrow-right' | 'arrow-up' | 'arrow-with-circle-down' | 'arrow-with-circle-left' | 'arrow-with-circle-right' | 'arrow-with-circle-up' | 'attachment' | 'awareness-ribbon' | 'back' | 'back-in-time' | 'baidu' | 'bar-graph' | 'basecamp' | 'battery' | 'beamed-note' | 'behance' | 'bell' | 'blackboard' | 'block' | 'book' | 'bookmark' | 'bookmarks' | 'bowl' | 'box' | 'briefcase' | 'browser' | 'brush' | 'bucket' | 'bug' | 'cake' | 'calculator' | 'calendar' | 'camera' | 'ccw' | 'chat' | 'check' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-small-down' | 'chevron-small-left' | 'chevron-small-right' | 'chevron-small-up' | 'chevron-thin-down' | 'chevron-thin-left' | 'chevron-thin-right' | 'chevron-thin-up' | 'chevron-up' | 'chevron-with-circle-down' | 'chevron-with-circle-left' | 'chevron-with-circle-right' | 'chevron-with-circle-up' | 'circle' | 'circle-with-cross' | 'circle-with-minus' | 'circle-with-plus' | 'circular-graph' | 'clapperboard' | 'classic-computer' | 'clipboard' | 'clock' | 'cloud' | 'code' | 'cog' | 'colours' | 'compass' | 'controller-fast-backward' | 'controller-fast-forward' | 'controller-jump-to-start' | 'controller-next' | 'controller-paus' | 'controller-play' | 'controller-record' | 'controller-stop' | 'controller-volume' | 'copy' | 'creative-cloud' | 'creative-commons' | 'creative-commons-attribution' | 'creative-commons-noderivs' | 'creative-commons-noncommercial-eu' | 'creative-commons-noncommercial-us' | 'creative-commons-public-domain' | 'creative-commons-remix' | 'creative-commons-share' | 'creative-commons-sharealike' | 'credit' | 'credit-card' | 'crop' | 'cross' | 'cup' | 'cw' | 'cycle' | 'database' | 'dial-pad' | 'direction' | 'document' | 'document-landscape' | 'documents' | 'dot-single' | 'dots-three-horizontal' | 'dots-three-vertical' | 'dots-two-horizontal' | 'dots-two-vertical' | 'download' | 'dribbble' | 'dribbble-with-circle' | 'drink' | 'drive' | 'drop' | 'dropbox' | 'edit' | 'email' | 'emoji-flirt' | 'emoji-happy' | 'emoji-neutral' | 'emoji-sad' | 'erase' | 'eraser' | 'evernote' | 'export' | 'eye' | 'eye-with-line' | 'facebook' | 'facebook-with-circle' | 'feather' | 'fingerprint' | 'flag' | 'flash' | 'flashlight' | 'flat-brush' | 'flattr' | 'flickr' | 'flickr-with-circle' | 'flow-branch' | 'flow-cascade' | 'flow-line' | 'flow-parallel' | 'flow-tree' | 'flower' | 'folder' | 'folder-images' | 'folder-music' | 'folder-video' | 'forward' | 'foursquare' | 'funnel' | 'game-controller' | 'gauge' | 'github' | 'github-with-circle' | 'globe' | 'google-' | 'google--with-circle' | 'google-drive' | 'google-hangouts' | 'google-play' | 'graduation-cap' | 'grid' | 'grooveshark' | 'hair-cross' | 'hand' | 'heart' | 'heart-outlined' | 'help' | 'help-with-circle' | 'home' | 'hour-glass' | 'houzz' | 'icloud' | 'image' | 'image-inverted' | 'images' | 'inbox' | 'infinity' | 'info' | 'info-with-circle' | 'instagram' | 'instagram-with-circle' | 'install' | 'key' | 'keyboard' | 'lab-flask' | 'landline' | 'language' | 'laptop' | 'lastfm' | 'lastfm-with-circle' | 'layers' | 'leaf' | 'level-down' | 'level-up' | 'lifebuoy' | 'light-bulb' | 'light-down' | 'light-up' | 'line-graph' | 'link' | 'linkedin' | 'linkedin-with-circle' | 'list' | 'location' | 'location-pin' | 'lock' | 'lock-open' | 'log-out' | 'login' | 'loop' | 'magnet' | 'magnifying-glass' | 'mail' | 'mail-with-circle' | 'man' | 'map' | 'mask' | 'medal' | 'medium' | 'medium-with-circle' | 'megaphone' | 'menu' | 'merge' | 'message' | 'mic' | 'minus' | 'mixi' | 'mobile' | 'modern-mic' | 'moon' | 'mouse' | 'mouse-pointer' | 'music' | 'network' | 'new' | 'new-message' | 'news' | 'newsletter' | 'note' | 'notification' | 'notifications-off' | 'old-mobile' | 'old-phone' | 'onedrive' | 'open-book' | 'palette' | 'paper-plane' | 'paypal' | 'pencil' | 'phone' | 'picasa' | 'pie-chart' | 'pin' | 'pinterest' | 'pinterest-with-circle' | 'plus' | 'popup' | 'power-plug' | 'price-ribbon' | 'price-tag' | 'print' | 'progress-empty' | 'progress-full' | 'progress-one' | 'progress-two' | 'publish' | 'qq' | 'qq-with-circle' | 'quote' | 'radio' | 'raft' | 'raft-with-circle' | 'rainbow' | 'rdio' | 'rdio-with-circle' | 'remove-user' | 'renren' | 'reply' | 'reply-all' | 'resize-100-' | 'resize-full-screen' | 'retweet' | 'rocket' | 'round-brush' | 'rss' | 'ruler' | 'save' | 'scissors' | 'scribd' | 'select-arrows' | 'share' | 'share-alternative' | 'shareable' | 'shield' | 'shop' | 'shopping-bag' | 'shopping-basket' | 'shopping-cart' | 'shuffle' | 'signal' | 'sina-weibo' | 'skype' | 'skype-with-circle' | 'slideshare' | 'smashing' | 'sound' | 'sound-mix' | 'sound-mute' | 'soundcloud' | 'sports-club' | 'spotify' | 'spotify-with-circle' | 'spreadsheet' | 'squared-cross' | 'squared-minus' | 'squared-plus' | 'star' | 'star-outlined' | 'stopwatch' | 'stumbleupon' | 'stumbleupon-with-circle' | 'suitcase' | 'swap' | 'swarm' | 'sweden' | 'switch' | 'tablet' | 'tablet-mobile-combo' | 'tag' | 'text' | 'text-document' | 'text-document-inverted' | 'thermometer' | 'thumbs-down' | 'thumbs-up' | 'thunder-cloud' | 'ticket' | 'time-slot' | 'tools' | 'traffic-cone' | 'trash' | 'tree' | 'triangle-down' | 'triangle-left' | 'triangle-right' | 'triangle-up' | 'tripadvisor' | 'trophy' | 'tumblr' | 'tumblr-with-circle' | 'tv' | 'twitter' | 'twitter-with-circle' | 'typing' | 'uninstall' | 'unread' | 'untag' | 'upload' | 'upload-to-cloud' | 'user' | 'users' | 'v-card' | 'video' | 'video-camera' | 'vimeo' | 'vimeo-with-circle' | 'vine' | 'vine-with-circle' | 'vinyl' | 'vk' | 'vk-alternitive' | 'vk-with-circle' | 'voicemail' | 'wallet' | 'warning' | 'water' | 'windows-store' | 'xing' | 'xing-with-circle' | 'yelp' | 'youko' | 'youko-with-circle' | 'youtube' | 'youtube-with-circle' 1637 | } 1638 | 1639 | interface EvilIconsProps extends BaseIconProps { 1640 | name: 'archive' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'bell' | 'calendar' | 'camera' | 'cart' | 'chart' | 'check' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'clock' | 'close' | 'close-o' | 'comment' | 'credit-card' | 'envelope' | 'exclamation' | 'external-link' | 'eye' | 'gear' | 'heart' | 'image' | 'like' | 'link' | 'location' | 'lock' | 'minus' | 'navicon' | 'paperclip' | 'pencil' | 'play' | 'plus' | 'pointer' | 'question' | 'redo' | 'refresh' | 'retweet' | 'sc-facebook' | 'sc-github' | 'sc-google-plus' | 'sc-instagram' | 'sc-linkedin' | 'sc-odnoklassniki' | 'sc-pinterest' | 'sc-skype' | 'sc-soundcloud' | 'sc-telegram' | 'sc-tumblr' | 'sc-twitter' | 'sc-vimeo' | 'sc-vk' | 'sc-youtube' | 'search' | 'share-apple' | 'share-google' | 'spinner' | 'spinner-2' | 'spinner-3' | 'star' | 'tag' | 'trash' | 'trophy' | 'undo' | 'unlock' | 'user' 1641 | } 1642 | 1643 | interface FeatherProps extends BaseIconProps { 1644 | name: 'activity' | 'airplay' | 'alert-circle' | 'alert-octagon' | 'alert-triangle' | 'align-center' | 'align-justify' | 'align-left' | 'align-right' | 'anchor' | 'aperture' | 'arrow-down' | 'arrow-down-left' | 'arrow-down-right' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-up-left' | 'arrow-up-right' | 'at-sign' | 'award' | 'bar-chart' | 'bar-chart-2' | 'battery' | 'battery-charging' | 'bell' | 'bell-off' | 'bluetooth' | 'bold' | 'book' | 'bookmark' | 'box' | 'briefcase' | 'calendar' | 'camera' | 'camera-off' | 'cast' | 'check' | 'check-circle' | 'check-square' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'chevrons-down' | 'chevrons-left' | 'chevrons-right' | 'chevrons-up' | 'chrome' | 'circle' | 'clipboard' | 'clock' | 'cloud' | 'cloud-drizzle' | 'cloud-lightning' | 'cloud-off' | 'cloud-rain' | 'cloud-snow' | 'codepen' | 'command' | 'compass' | 'copy' | 'corner-down-left' | 'corner-down-right' | 'corner-left-down' | 'corner-left-up' | 'corner-right-down' | 'corner-right-up' | 'corner-up-left' | 'corner-up-right' | 'cpu' | 'credit-card' | 'crop' | 'crosshair' | 'delete' | 'disc' | 'download' | 'download-cloud' | 'droplet' | 'edit' | 'edit-2' | 'edit-3' | 'external-link' | 'eye' | 'eye-off' | 'facebook' | 'fast-forward' | 'feather' | 'file' | 'file-minus' | 'file-plus' | 'file-text' | 'film' | 'filter' | 'flag' | 'folder' | 'github' | 'gitlab' | 'globe' | 'grid' | 'hash' | 'headphones' | 'heart' | 'help-circle' | 'home' | 'image' | 'inbox' | 'info' | 'instagram' | 'italic' | 'layers' | 'layout' | 'life-buoy' | 'link' | 'link-2' | 'list' | 'loader' | 'lock' | 'log-in' | 'log-out' | 'mail' | 'map' | 'map-pin' | 'maximize' | 'maximize-2' | 'menu' | 'message-circle' | 'message-square' | 'mic' | 'mic-off' | 'minimize' | 'minimize-2' | 'minus' | 'minus-circle' | 'minus-square' | 'monitor' | 'moon' | 'more-horizontal' | 'more-vertical' | 'move' | 'music' | 'navigation' | 'navigation-2' | 'octagon' | 'package' | 'paperclip' | 'pause' | 'pause-circle' | 'percent' | 'phone' | 'phone-call' | 'phone-forwarded' | 'phone-incoming' | 'phone-missed' | 'phone-off' | 'phone-outgoing' | 'pie-chart' | 'play' | 'play-circle' | 'plus' | 'plus-circle' | 'plus-square' | 'pocket' | 'power' | 'printer' | 'radio' | 'refresh-ccw' | 'refresh-cw' | 'repeat' | 'rewind' | 'rotate-ccw' | 'rotate-cw' | 'save' | 'scissors' | 'search' | 'server' | 'settings' | 'share' | 'share-2' | 'shield' | 'shopping-cart' | 'shuffle' | 'sidebar' | 'skip-back' | 'skip-forward' | 'slack' | 'slash' | 'sliders' | 'smartphone' | 'speaker' | 'square' | 'star' | 'stop-circle' | 'sun' | 'sunrise' | 'sunset' | 'tablet' | 'tag' | 'target' | 'thermometer' | 'thumbs-down' | 'thumbs-up' | 'toggle-left' | 'toggle-right' | 'trash' | 'trash-2' | 'trending-down' | 'trending-up' | 'triangle' | 'tv' | 'twitter' | 'type' | 'umbrella' | 'underline' | 'unlock' | 'upload' | 'upload-cloud' | 'user' | 'user-check' | 'user-minus' | 'user-plus' | 'user-x' | 'users' | 'video' | 'video-off' | 'voicemail' | 'volume' | 'volume-1' | 'volume-2' | 'volume-x' | 'watch' | 'wifi' | 'wifi-off' | 'wind' | 'x' | 'x-circle' | 'x-square' | 'zap' | 'zoom-in' | 'zoom-out' 1645 | } 1646 | 1647 | interface FontAwesomeProps extends BaseIconProps { 1648 | name: 'glass' | 'music' | 'search' | 'envelope-o' | 'heart' | 'star' | 'star-o' | 'user' | 'film' | 'th-large' | 'th' | 'th-list' | 'check' | 'remove' | 'close' | 'times' | 'search-plus' | 'search-minus' | 'power-off' | 'signal' | 'gear' | 'cog' | 'trash-o' | 'home' | 'file-o' | 'clock-o' | 'road' | 'download' | 'arrow-circle-o-down' | 'arrow-circle-o-up' | 'inbox' | 'play-circle-o' | 'rotate-right' | 'repeat' | 'refresh' | 'list-alt' | 'lock' | 'flag' | 'headphones' | 'volume-off' | 'volume-down' | 'volume-up' | 'qrcode' | 'barcode' | 'tag' | 'tags' | 'book' | 'bookmark' | 'print' | 'camera' | 'font' | 'bold' | 'italic' | 'text-height' | 'text-width' | 'align-left' | 'align-center' | 'align-right' | 'align-justify' | 'list' | 'dedent' | 'outdent' | 'indent' | 'video-camera' | 'photo' | 'image' | 'picture-o' | 'pencil' | 'map-marker' | 'adjust' | 'tint' | 'edit' | 'pencil-square-o' | 'share-square-o' | 'check-square-o' | 'arrows' | 'step-backward' | 'fast-backward' | 'backward' | 'play' | 'pause' | 'stop' | 'forward' | 'fast-forward' | 'step-forward' | 'eject' | 'chevron-left' | 'chevron-right' | 'plus-circle' | 'minus-circle' | 'times-circle' | 'check-circle' | 'question-circle' | 'info-circle' | 'crosshairs' | 'times-circle-o' | 'check-circle-o' | 'ban' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-down' | 'mail-forward' | 'share' | 'expand' | 'compress' | 'plus' | 'minus' | 'asterisk' | 'exclamation-circle' | 'gift' | 'leaf' | 'fire' | 'eye' | 'eye-slash' | 'warning' | 'exclamation-triangle' | 'plane' | 'calendar' | 'random' | 'comment' | 'magnet' | 'chevron-up' | 'chevron-down' | 'retweet' | 'shopping-cart' | 'folder' | 'folder-open' | 'arrows-v' | 'arrows-h' | 'bar-chart-o' | 'bar-chart' | 'twitter-square' | 'facebook-square' | 'camera-retro' | 'key' | 'gears' | 'cogs' | 'comments' | 'thumbs-o-up' | 'thumbs-o-down' | 'star-half' | 'heart-o' | 'sign-out' | 'linkedin-square' | 'thumb-tack' | 'external-link' | 'sign-in' | 'trophy' | 'github-square' | 'upload' | 'lemon-o' | 'phone' | 'square-o' | 'bookmark-o' | 'phone-square' | 'twitter' | 'facebook-f' | 'facebook' | 'github' | 'unlock' | 'credit-card' | 'feed' | 'rss' | 'hdd-o' | 'bullhorn' | 'bell' | 'certificate' | 'hand-o-right' | 'hand-o-left' | 'hand-o-up' | 'hand-o-down' | 'arrow-circle-left' | 'arrow-circle-right' | 'arrow-circle-up' | 'arrow-circle-down' | 'globe' | 'wrench' | 'tasks' | 'filter' | 'briefcase' | 'arrows-alt' | 'group' | 'users' | 'chain' | 'link' | 'cloud' | 'flask' | 'cut' | 'scissors' | 'copy' | 'files-o' | 'paperclip' | 'save' | 'floppy-o' | 'square' | 'navicon' | 'reorder' | 'bars' | 'list-ul' | 'list-ol' | 'strikethrough' | 'underline' | 'table' | 'magic' | 'truck' | 'pinterest' | 'pinterest-square' | 'google-plus-square' | 'google-plus' | 'money' | 'caret-down' | 'caret-up' | 'caret-left' | 'caret-right' | 'columns' | 'unsorted' | 'sort' | 'sort-down' | 'sort-desc' | 'sort-up' | 'sort-asc' | 'envelope' | 'linkedin' | 'rotate-left' | 'undo' | 'legal' | 'gavel' | 'dashboard' | 'tachometer' | 'comment-o' | 'comments-o' | 'flash' | 'bolt' | 'sitemap' | 'umbrella' | 'paste' | 'clipboard' | 'lightbulb-o' | 'exchange' | 'cloud-download' | 'cloud-upload' | 'user-md' | 'stethoscope' | 'suitcase' | 'bell-o' | 'coffee' | 'cutlery' | 'file-text-o' | 'building-o' | 'hospital-o' | 'ambulance' | 'medkit' | 'fighter-jet' | 'beer' | 'h-square' | 'plus-square' | 'angle-double-left' | 'angle-double-right' | 'angle-double-up' | 'angle-double-down' | 'angle-left' | 'angle-right' | 'angle-up' | 'angle-down' | 'desktop' | 'laptop' | 'tablet' | 'mobile-phone' | 'mobile' | 'circle-o' | 'quote-left' | 'quote-right' | 'spinner' | 'circle' | 'mail-reply' | 'reply' | 'github-alt' | 'folder-o' | 'folder-open-o' | 'smile-o' | 'frown-o' | 'meh-o' | 'gamepad' | 'keyboard-o' | 'flag-o' | 'flag-checkered' | 'terminal' | 'code' | 'mail-reply-all' | 'reply-all' | 'star-half-empty' | 'star-half-full' | 'star-half-o' | 'location-arrow' | 'crop' | 'code-fork' | 'unlink' | 'chain-broken' | 'question' | 'info' | 'exclamation' | 'superscript' | 'subscript' | 'eraser' | 'puzzle-piece' | 'microphone' | 'microphone-slash' | 'shield' | 'calendar-o' | 'fire-extinguisher' | 'rocket' | 'maxcdn' | 'chevron-circle-left' | 'chevron-circle-right' | 'chevron-circle-up' | 'chevron-circle-down' | 'html5' | 'css3' | 'anchor' | 'unlock-alt' | 'bullseye' | 'ellipsis-h' | 'ellipsis-v' | 'rss-square' | 'play-circle' | 'ticket' | 'minus-square' | 'minus-square-o' | 'level-up' | 'level-down' | 'check-square' | 'pencil-square' | 'external-link-square' | 'share-square' | 'compass' | 'toggle-down' | 'caret-square-o-down' | 'toggle-up' | 'caret-square-o-up' | 'toggle-right' | 'caret-square-o-right' | 'euro' | 'eur' | 'gbp' | 'dollar' | 'usd' | 'rupee' | 'inr' | 'cny' | 'rmb' | 'yen' | 'jpy' | 'ruble' | 'rouble' | 'rub' | 'won' | 'krw' | 'bitcoin' | 'btc' | 'file' | 'file-text' | 'sort-alpha-asc' | 'sort-alpha-desc' | 'sort-amount-asc' | 'sort-amount-desc' | 'sort-numeric-asc' | 'sort-numeric-desc' | 'thumbs-up' | 'thumbs-down' | 'youtube-square' | 'youtube' | 'xing' | 'xing-square' | 'youtube-play' | 'dropbox' | 'stack-overflow' | 'instagram' | 'flickr' | 'adn' | 'bitbucket' | 'bitbucket-square' | 'tumblr' | 'tumblr-square' | 'long-arrow-down' | 'long-arrow-up' | 'long-arrow-left' | 'long-arrow-right' | 'apple' | 'windows' | 'android' | 'linux' | 'dribbble' | 'skype' | 'foursquare' | 'trello' | 'female' | 'male' | 'gittip' | 'gratipay' | 'sun-o' | 'moon-o' | 'archive' | 'bug' | 'vk' | 'weibo' | 'renren' | 'pagelines' | 'stack-exchange' | 'arrow-circle-o-right' | 'arrow-circle-o-left' | 'toggle-left' | 'caret-square-o-left' | 'dot-circle-o' | 'wheelchair' | 'vimeo-square' | 'turkish-lira' | 'try' | 'plus-square-o' | 'space-shuttle' | 'slack' | 'envelope-square' | 'wordpress' | 'openid' | 'institution' | 'bank' | 'university' | 'mortar-board' | 'graduation-cap' | 'yahoo' | 'google' | 'reddit' | 'reddit-square' | 'stumbleupon-circle' | 'stumbleupon' | 'delicious' | 'digg' | 'pied-piper-pp' | 'pied-piper-alt' | 'drupal' | 'joomla' | 'language' | 'fax' | 'building' | 'child' | 'paw' | 'spoon' | 'cube' | 'cubes' | 'behance' | 'behance-square' | 'steam' | 'steam-square' | 'recycle' | 'automobile' | 'car' | 'cab' | 'taxi' | 'tree' | 'spotify' | 'deviantart' | 'soundcloud' | 'database' | 'file-pdf-o' | 'file-word-o' | 'file-excel-o' | 'file-powerpoint-o' | 'file-photo-o' | 'file-picture-o' | 'file-image-o' | 'file-zip-o' | 'file-archive-o' | 'file-sound-o' | 'file-audio-o' | 'file-movie-o' | 'file-video-o' | 'file-code-o' | 'vine' | 'codepen' | 'jsfiddle' | 'life-bouy' | 'life-buoy' | 'life-saver' | 'support' | 'life-ring' | 'circle-o-notch' | 'ra' | 'resistance' | 'rebel' | 'ge' | 'empire' | 'git-square' | 'git' | 'y-combinator-square' | 'yc-square' | 'hacker-news' | 'tencent-weibo' | 'qq' | 'wechat' | 'weixin' | 'send' | 'paper-plane' | 'send-o' | 'paper-plane-o' | 'history' | 'circle-thin' | 'header' | 'paragraph' | 'sliders' | 'share-alt' | 'share-alt-square' | 'bomb' | 'soccer-ball-o' | 'futbol-o' | 'tty' | 'binoculars' | 'plug' | 'slideshare' | 'twitch' | 'yelp' | 'newspaper-o' | 'wifi' | 'calculator' | 'paypal' | 'google-wallet' | 'cc-visa' | 'cc-mastercard' | 'cc-discover' | 'cc-amex' | 'cc-paypal' | 'cc-stripe' | 'bell-slash' | 'bell-slash-o' | 'trash' | 'copyright' | 'at' | 'eyedropper' | 'paint-brush' | 'birthday-cake' | 'area-chart' | 'pie-chart' | 'line-chart' | 'lastfm' | 'lastfm-square' | 'toggle-off' | 'toggle-on' | 'bicycle' | 'bus' | 'ioxhost' | 'angellist' | 'cc' | 'shekel' | 'sheqel' | 'ils' | 'meanpath' | 'buysellads' | 'connectdevelop' | 'dashcube' | 'forumbee' | 'leanpub' | 'sellsy' | 'shirtsinbulk' | 'simplybuilt' | 'skyatlas' | 'cart-plus' | 'cart-arrow-down' | 'diamond' | 'ship' | 'user-secret' | 'motorcycle' | 'street-view' | 'heartbeat' | 'venus' | 'mars' | 'mercury' | 'intersex' | 'transgender' | 'transgender-alt' | 'venus-double' | 'mars-double' | 'venus-mars' | 'mars-stroke' | 'mars-stroke-v' | 'mars-stroke-h' | 'neuter' | 'genderless' | 'facebook-official' | 'pinterest-p' | 'whatsapp' | 'server' | 'user-plus' | 'user-times' | 'hotel' | 'bed' | 'viacoin' | 'train' | 'subway' | 'medium' | 'yc' | 'y-combinator' | 'optin-monster' | 'opencart' | 'expeditedssl' | 'battery-4' | 'battery' | 'battery-full' | 'battery-3' | 'battery-three-quarters' | 'battery-2' | 'battery-half' | 'battery-1' | 'battery-quarter' | 'battery-0' | 'battery-empty' | 'mouse-pointer' | 'i-cursor' | 'object-group' | 'object-ungroup' | 'sticky-note' | 'sticky-note-o' | 'cc-jcb' | 'cc-diners-club' | 'clone' | 'balance-scale' | 'hourglass-o' | 'hourglass-1' | 'hourglass-start' | 'hourglass-2' | 'hourglass-half' | 'hourglass-3' | 'hourglass-end' | 'hourglass' | 'hand-grab-o' | 'hand-rock-o' | 'hand-stop-o' | 'hand-paper-o' | 'hand-scissors-o' | 'hand-lizard-o' | 'hand-spock-o' | 'hand-pointer-o' | 'hand-peace-o' | 'trademark' | 'registered' | 'creative-commons' | 'gg' | 'gg-circle' | 'tripadvisor' | 'odnoklassniki' | 'odnoklassniki-square' | 'get-pocket' | 'wikipedia-w' | 'safari' | 'chrome' | 'firefox' | 'opera' | 'internet-explorer' | 'tv' | 'television' | 'contao' | '500px' | 'amazon' | 'calendar-plus-o' | 'calendar-minus-o' | 'calendar-times-o' | 'calendar-check-o' | 'industry' | 'map-pin' | 'map-signs' | 'map-o' | 'map' | 'commenting' | 'commenting-o' | 'houzz' | 'vimeo' | 'black-tie' | 'fonticons' | 'reddit-alien' | 'edge' | 'credit-card-alt' | 'codiepie' | 'modx' | 'fort-awesome' | 'usb' | 'product-hunt' | 'mixcloud' | 'scribd' | 'pause-circle' | 'pause-circle-o' | 'stop-circle' | 'stop-circle-o' | 'shopping-bag' | 'shopping-basket' | 'hashtag' | 'bluetooth' | 'bluetooth-b' | 'percent' | 'gitlab' | 'wpbeginner' | 'wpforms' | 'envira' | 'universal-access' | 'wheelchair-alt' | 'question-circle-o' | 'blind' | 'audio-description' | 'volume-control-phone' | 'braille' | 'assistive-listening-systems' | 'asl-interpreting' | 'american-sign-language-interpreting' | 'deafness' | 'hard-of-hearing' | 'deaf' | 'glide' | 'glide-g' | 'signing' | 'sign-language' | 'low-vision' | 'viadeo' | 'viadeo-square' | 'snapchat' | 'snapchat-ghost' | 'snapchat-square' | 'pied-piper' | 'first-order' | 'yoast' | 'themeisle' | 'google-plus-circle' | 'google-plus-official' | 'fa' | 'font-awesome' | 'handshake-o' | 'envelope-open' | 'envelope-open-o' | 'linode' | 'address-book' | 'address-book-o' | 'vcard' | 'address-card' | 'vcard-o' | 'address-card-o' | 'user-circle' | 'user-circle-o' | 'user-o' | 'id-badge' | 'drivers-license' | 'id-card' | 'drivers-license-o' | 'id-card-o' | 'quora' | 'free-code-camp' | 'telegram' | 'thermometer-4' | 'thermometer' | 'thermometer-full' | 'thermometer-3' | 'thermometer-three-quarters' | 'thermometer-2' | 'thermometer-half' | 'thermometer-1' | 'thermometer-quarter' | 'thermometer-0' | 'thermometer-empty' | 'shower' | 'bathtub' | 's15' | 'bath' | 'podcast' | 'window-maximize' | 'window-minimize' | 'window-restore' | 'times-rectangle' | 'window-close' | 'times-rectangle-o' | 'window-close-o' | 'bandcamp' | 'grav' | 'etsy' | 'imdb' | 'ravelry' | 'eercast' | 'microchip' | 'snowflake-o' | 'superpowers' | 'wpexplorer' | 'meetup' 1649 | } 1650 | 1651 | interface FoundationProps extends BaseIconProps { 1652 | name: 'address-book' | 'alert' | 'align-center' | 'align-justify' | 'align-left' | 'align-right' | 'anchor' | 'annotate' | 'archive' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrows-compress' | 'arrows-expand' | 'arrows-in' | 'arrows-out' | 'asl' | 'asterisk' | 'at-sign' | 'background-color' | 'battery-empty' | 'battery-full' | 'battery-half' | 'bitcoin-circle' | 'bitcoin' | 'blind' | 'bluetooth' | 'bold' | 'book-bookmark' | 'book' | 'bookmark' | 'braille' | 'burst-new' | 'burst-sale' | 'burst' | 'calendar' | 'camera' | 'check' | 'checkbox' | 'clipboard-notes' | 'clipboard-pencil' | 'clipboard' | 'clock' | 'closed-caption' | 'cloud' | 'comment-minus' | 'comment-quotes' | 'comment-video' | 'comment' | 'comments' | 'compass' | 'contrast' | 'credit-card' | 'crop' | 'crown' | 'css3' | 'database' | 'die-five' | 'die-four' | 'die-one' | 'die-six' | 'die-three' | 'die-two' | 'dislike' | 'dollar-bill' | 'dollar' | 'download' | 'eject' | 'elevator' | 'euro' | 'eye' | 'fast-forward' | 'female-symbol' | 'female' | 'filter' | 'first-aid' | 'flag' | 'folder-add' | 'folder-lock' | 'folder' | 'foot' | 'foundation' | 'graph-bar' | 'graph-horizontal' | 'graph-pie' | 'graph-trend' | 'guide-dog' | 'hearing-aid' | 'heart' | 'home' | 'html5' | 'indent-less' | 'indent-more' | 'info' | 'italic' | 'key' | 'laptop' | 'layout' | 'lightbulb' | 'like' | 'link' | 'list-bullet' | 'list-number' | 'list-thumbnails' | 'list' | 'lock' | 'loop' | 'magnifying-glass' | 'mail' | 'male-female' | 'male-symbol' | 'male' | 'map' | 'marker' | 'megaphone' | 'microphone' | 'minus-circle' | 'minus' | 'mobile-signal' | 'mobile' | 'monitor' | 'mountains' | 'music' | 'next' | 'no-dogs' | 'no-smoking' | 'page-add' | 'page-copy' | 'page-csv' | 'page-delete' | 'page-doc' | 'page-edit' | 'page-export-csv' | 'page-export-doc' | 'page-export-pdf' | 'page-export' | 'page-filled' | 'page-multiple' | 'page-pdf' | 'page-remove' | 'page-search' | 'page' | 'paint-bucket' | 'paperclip' | 'pause' | 'paw' | 'paypal' | 'pencil' | 'photo' | 'play-circle' | 'play-video' | 'play' | 'plus' | 'pound' | 'power' | 'previous' | 'price-tag' | 'pricetag-multiple' | 'print' | 'prohibited' | 'projection-screen' | 'puzzle' | 'quote' | 'record' | 'refresh' | 'results-demographics' | 'results' | 'rewind-ten' | 'rewind' | 'rss' | 'safety-cone' | 'save' | 'share' | 'sheriff-badge' | 'shield' | 'shopping-bag' | 'shopping-cart' | 'shuffle' | 'skull' | 'social-500px' | 'social-adobe' | 'social-amazon' | 'social-android' | 'social-apple' | 'social-behance' | 'social-bing' | 'social-blogger' | 'social-delicious' | 'social-designer-news' | 'social-deviant-art' | 'social-digg' | 'social-dribbble' | 'social-drive' | 'social-dropbox' | 'social-evernote' | 'social-facebook' | 'social-flickr' | 'social-forrst' | 'social-foursquare' | 'social-game-center' | 'social-github' | 'social-google-plus' | 'social-hacker-news' | 'social-hi5' | 'social-instagram' | 'social-joomla' | 'social-lastfm' | 'social-linkedin' | 'social-medium' | 'social-myspace' | 'social-orkut' | 'social-path' | 'social-picasa' | 'social-pinterest' | 'social-rdio' | 'social-reddit' | 'social-skillshare' | 'social-skype' | 'social-smashing-mag' | 'social-snapchat' | 'social-spotify' | 'social-squidoo' | 'social-stack-overflow' | 'social-steam' | 'social-stumbleupon' | 'social-treehouse' | 'social-tumblr' | 'social-twitter' | 'social-vimeo' | 'social-windows' | 'social-xbox' | 'social-yahoo' | 'social-yelp' | 'social-youtube' | 'social-zerply' | 'social-zurb' | 'sound' | 'star' | 'stop' | 'strikethrough' | 'subscript' | 'superscript' | 'tablet-landscape' | 'tablet-portrait' | 'target-two' | 'target' | 'telephone-accessible' | 'telephone' | 'text-color' | 'thumbnails' | 'ticket' | 'torso-business' | 'torso-female' | 'torso' | 'torsos-all-female' | 'torsos-all' | 'torsos-female-male' | 'torsos-male-female' | 'torsos' | 'trash' | 'trees' | 'trophy' | 'underline' | 'universal-access' | 'unlink' | 'unlock' | 'upload-cloud' | 'upload' | 'usb' | 'video' | 'volume-none' | 'volume-strike' | 'volume' | 'web' | 'wheelchair' | 'widget' | 'wrench' | 'x-circle' | 'x' | 'yen' | 'zoom-in' | 'zoom-out' 1653 | } 1654 | 1655 | interface IoniconsProps extends BaseIconProps { 1656 | name: 'ios-add' | 'ios-add-circle' | 'ios-add-circle-outline' | 'ios-add-outline' | 'ios-alarm' | 'ios-alarm-outline' | 'ios-albums' | 'ios-albums-outline' | 'ios-alert' | 'ios-alert-outline' | 'ios-american-football' | 'ios-american-football-outline' | 'ios-analytics' | 'ios-analytics-outline' | 'ios-aperture' | 'ios-aperture-outline' | 'ios-apps' | 'ios-apps-outline' | 'ios-appstore' | 'ios-appstore-outline' | 'ios-archive' | 'ios-archive-outline' | 'ios-arrow-back' | 'ios-arrow-back-outline' | 'ios-arrow-down' | 'ios-arrow-down-outline' | 'ios-arrow-dropdown' | 'ios-arrow-dropdown-circle' | 'ios-arrow-dropdown-circle-outline' | 'ios-arrow-dropdown-outline' | 'ios-arrow-dropleft' | 'ios-arrow-dropleft-circle' | 'ios-arrow-dropleft-circle-outline' | 'ios-arrow-dropleft-outline' | 'ios-arrow-dropright' | 'ios-arrow-dropright-circle' | 'ios-arrow-dropright-circle-outline' | 'ios-arrow-dropright-outline' | 'ios-arrow-dropup' | 'ios-arrow-dropup-circle' | 'ios-arrow-dropup-circle-outline' | 'ios-arrow-dropup-outline' | 'ios-arrow-forward' | 'ios-arrow-forward-outline' | 'ios-arrow-round-back' | 'ios-arrow-round-back-outline' | 'ios-arrow-round-down' | 'ios-arrow-round-down-outline' | 'ios-arrow-round-forward' | 'ios-arrow-round-forward-outline' | 'ios-arrow-round-up' | 'ios-arrow-round-up-outline' | 'ios-arrow-up' | 'ios-arrow-up-outline' | 'ios-at' | 'ios-at-outline' | 'ios-attach' | 'ios-attach-outline' | 'ios-backspace' | 'ios-backspace-outline' | 'ios-barcode' | 'ios-barcode-outline' | 'ios-baseball' | 'ios-baseball-outline' | 'ios-basket' | 'ios-basket-outline' | 'ios-basketball' | 'ios-basketball-outline' | 'ios-battery-charging' | 'ios-battery-charging-outline' | 'ios-battery-dead' | 'ios-battery-dead-outline' | 'ios-battery-full' | 'ios-battery-full-outline' | 'ios-beaker' | 'ios-beaker-outline' | 'ios-beer' | 'ios-beer-outline' | 'ios-bicycle' | 'ios-bicycle-outline' | 'ios-bluetooth' | 'ios-bluetooth-outline' | 'ios-boat' | 'ios-boat-outline' | 'ios-body' | 'ios-body-outline' | 'ios-bonfire' | 'ios-bonfire-outline' | 'ios-book' | 'ios-book-outline' | 'ios-bookmark' | 'ios-bookmark-outline' | 'ios-bookmarks' | 'ios-bookmarks-outline' | 'ios-bowtie' | 'ios-bowtie-outline' | 'ios-briefcase' | 'ios-briefcase-outline' | 'ios-browsers' | 'ios-browsers-outline' | 'ios-brush' | 'ios-brush-outline' | 'ios-bug' | 'ios-bug-outline' | 'ios-build' | 'ios-build-outline' | 'ios-bulb' | 'ios-bulb-outline' | 'ios-bus' | 'ios-bus-outline' | 'ios-cafe' | 'ios-cafe-outline' | 'ios-calculator' | 'ios-calculator-outline' | 'ios-calendar' | 'ios-calendar-outline' | 'ios-call' | 'ios-call-outline' | 'ios-camera' | 'ios-camera-outline' | 'ios-car' | 'ios-car-outline' | 'ios-card' | 'ios-card-outline' | 'ios-cart' | 'ios-cart-outline' | 'ios-cash' | 'ios-cash-outline' | 'ios-chatboxes' | 'ios-chatboxes-outline' | 'ios-chatbubbles' | 'ios-chatbubbles-outline' | 'ios-checkbox' | 'ios-checkbox-outline' | 'ios-checkmark' | 'ios-checkmark-circle' | 'ios-checkmark-circle-outline' | 'ios-checkmark-outline' | 'ios-clipboard' | 'ios-clipboard-outline' | 'ios-clock' | 'ios-clock-outline' | 'ios-close' | 'ios-close-circle' | 'ios-close-circle-outline' | 'ios-close-outline' | 'ios-closed-captioning' | 'ios-closed-captioning-outline' | 'ios-cloud' | 'ios-cloud-circle' | 'ios-cloud-circle-outline' | 'ios-cloud-done' | 'ios-cloud-done-outline' | 'ios-cloud-download' | 'ios-cloud-download-outline' | 'ios-cloud-outline' | 'ios-cloud-upload' | 'ios-cloud-upload-outline' | 'ios-cloudy' | 'ios-cloudy-night' | 'ios-cloudy-night-outline' | 'ios-cloudy-outline' | 'ios-code' | 'ios-code-download' | 'ios-code-download-outline' | 'ios-code-outline' | 'ios-code-working' | 'ios-code-working-outline' | 'ios-cog' | 'ios-cog-outline' | 'ios-color-fill' | 'ios-color-fill-outline' | 'ios-color-filter' | 'ios-color-filter-outline' | 'ios-color-palette' | 'ios-color-palette-outline' | 'ios-color-wand' | 'ios-color-wand-outline' | 'ios-compass' | 'ios-compass-outline' | 'ios-construct' | 'ios-construct-outline' | 'ios-contact' | 'ios-contact-outline' | 'ios-contacts' | 'ios-contacts-outline' | 'ios-contract' | 'ios-contract-outline' | 'ios-contrast' | 'ios-contrast-outline' | 'ios-copy' | 'ios-copy-outline' | 'ios-create' | 'ios-create-outline' | 'ios-crop' | 'ios-crop-outline' | 'ios-cube' | 'ios-cube-outline' | 'ios-cut' | 'ios-cut-outline' | 'ios-desktop' | 'ios-desktop-outline' | 'ios-disc' | 'ios-disc-outline' | 'ios-document' | 'ios-document-outline' | 'ios-done-all' | 'ios-done-all-outline' | 'ios-download' | 'ios-download-outline' | 'ios-easel' | 'ios-easel-outline' | 'ios-egg' | 'ios-egg-outline' | 'ios-exit' | 'ios-exit-outline' | 'ios-expand' | 'ios-expand-outline' | 'ios-eye' | 'ios-eye-off' | 'ios-eye-off-outline' | 'ios-eye-outline' | 'ios-fastforward' | 'ios-fastforward-outline' | 'ios-female' | 'ios-female-outline' | 'ios-filing' | 'ios-filing-outline' | 'ios-film' | 'ios-film-outline' | 'ios-finger-print' | 'ios-finger-print-outline' | 'ios-flag' | 'ios-flag-outline' | 'ios-flame' | 'ios-flame-outline' | 'ios-flash' | 'ios-flash-outline' | 'ios-flask' | 'ios-flask-outline' | 'ios-flower' | 'ios-flower-outline' | 'ios-folder' | 'ios-folder-open' | 'ios-folder-open-outline' | 'ios-folder-outline' | 'ios-football' | 'ios-football-outline' | 'ios-funnel' | 'ios-funnel-outline' | 'ios-game-controller-a' | 'ios-game-controller-a-outline' | 'ios-game-controller-b' | 'ios-game-controller-b-outline' | 'ios-git-branch' | 'ios-git-branch-outline' | 'ios-git-commit' | 'ios-git-commit-outline' | 'ios-git-compare' | 'ios-git-compare-outline' | 'ios-git-merge' | 'ios-git-merge-outline' | 'ios-git-network' | 'ios-git-network-outline' | 'ios-git-pull-request' | 'ios-git-pull-request-outline' | 'ios-glasses' | 'ios-glasses-outline' | 'ios-globe' | 'ios-globe-outline' | 'ios-grid' | 'ios-grid-outline' | 'ios-hammer' | 'ios-hammer-outline' | 'ios-hand' | 'ios-hand-outline' | 'ios-happy' | 'ios-happy-outline' | 'ios-headset' | 'ios-headset-outline' | 'ios-heart' | 'ios-heart-outline' | 'ios-help' | 'ios-help-buoy' | 'ios-help-buoy-outline' | 'ios-help-circle' | 'ios-help-circle-outline' | 'ios-help-outline' | 'ios-home' | 'ios-home-outline' | 'ios-ice-cream' | 'ios-ice-cream-outline' | 'ios-image' | 'ios-image-outline' | 'ios-images' | 'ios-images-outline' | 'ios-infinite' | 'ios-infinite-outline' | 'ios-information' | 'ios-information-circle' | 'ios-information-circle-outline' | 'ios-information-outline' | 'ios-ionic' | 'ios-ionic-outline' | 'ios-ionitron' | 'ios-ionitron-outline' | 'ios-jet' | 'ios-jet-outline' | 'ios-key' | 'ios-key-outline' | 'ios-keypad' | 'ios-keypad-outline' | 'ios-laptop' | 'ios-laptop-outline' | 'ios-leaf' | 'ios-leaf-outline' | 'ios-link' | 'ios-link-outline' | 'ios-list' | 'ios-list-box' | 'ios-list-box-outline' | 'ios-list-outline' | 'ios-locate' | 'ios-locate-outline' | 'ios-lock' | 'ios-lock-outline' | 'ios-log-in' | 'ios-log-in-outline' | 'ios-log-out' | 'ios-log-out-outline' | 'ios-magnet' | 'ios-magnet-outline' | 'ios-mail' | 'ios-mail-open' | 'ios-mail-open-outline' | 'ios-mail-outline' | 'ios-male' | 'ios-male-outline' | 'ios-man' | 'ios-man-outline' | 'ios-map' | 'ios-map-outline' | 'ios-medal' | 'ios-medal-outline' | 'ios-medical' | 'ios-medical-outline' | 'ios-medkit' | 'ios-medkit-outline' | 'ios-megaphone' | 'ios-megaphone-outline' | 'ios-menu' | 'ios-menu-outline' | 'ios-mic' | 'ios-mic-off' | 'ios-mic-off-outline' | 'ios-mic-outline' | 'ios-microphone' | 'ios-microphone-outline' | 'ios-moon' | 'ios-moon-outline' | 'ios-more' | 'ios-more-outline' | 'ios-move' | 'ios-move-outline' | 'ios-musical-note' | 'ios-musical-note-outline' | 'ios-musical-notes' | 'ios-musical-notes-outline' | 'ios-navigate' | 'ios-navigate-outline' | 'ios-no-smoking' | 'ios-no-smoking-outline' | 'ios-notifications' | 'ios-notifications-off' | 'ios-notifications-off-outline' | 'ios-notifications-outline' | 'ios-nuclear' | 'ios-nuclear-outline' | 'ios-nutrition' | 'ios-nutrition-outline' | 'ios-open' | 'ios-open-outline' | 'ios-options' | 'ios-options-outline' | 'ios-outlet' | 'ios-outlet-outline' | 'ios-paper' | 'ios-paper-outline' | 'ios-paper-plane' | 'ios-paper-plane-outline' | 'ios-partly-sunny' | 'ios-partly-sunny-outline' | 'ios-pause' | 'ios-pause-outline' | 'ios-paw' | 'ios-paw-outline' | 'ios-people' | 'ios-people-outline' | 'ios-person' | 'ios-person-add' | 'ios-person-add-outline' | 'ios-person-outline' | 'ios-phone-landscape' | 'ios-phone-landscape-outline' | 'ios-phone-portrait' | 'ios-phone-portrait-outline' | 'ios-photos' | 'ios-photos-outline' | 'ios-pie' | 'ios-pie-outline' | 'ios-pin' | 'ios-pin-outline' | 'ios-pint' | 'ios-pint-outline' | 'ios-pizza' | 'ios-pizza-outline' | 'ios-plane' | 'ios-plane-outline' | 'ios-planet' | 'ios-planet-outline' | 'ios-play' | 'ios-play-outline' | 'ios-podium' | 'ios-podium-outline' | 'ios-power' | 'ios-power-outline' | 'ios-pricetag' | 'ios-pricetag-outline' | 'ios-pricetags' | 'ios-pricetags-outline' | 'ios-print' | 'ios-print-outline' | 'ios-pulse' | 'ios-pulse-outline' | 'ios-qr-scanner' | 'ios-qr-scanner-outline' | 'ios-quote' | 'ios-quote-outline' | 'ios-radio' | 'ios-radio-button-off' | 'ios-radio-button-off-outline' | 'ios-radio-button-on' | 'ios-radio-button-on-outline' | 'ios-radio-outline' | 'ios-rainy' | 'ios-rainy-outline' | 'ios-recording' | 'ios-recording-outline' | 'ios-redo' | 'ios-redo-outline' | 'ios-refresh' | 'ios-refresh-circle' | 'ios-refresh-circle-outline' | 'ios-refresh-outline' | 'ios-remove' | 'ios-remove-circle' | 'ios-remove-circle-outline' | 'ios-remove-outline' | 'ios-reorder' | 'ios-reorder-outline' | 'ios-repeat' | 'ios-repeat-outline' | 'ios-resize' | 'ios-resize-outline' | 'ios-restaurant' | 'ios-restaurant-outline' | 'ios-return-left' | 'ios-return-left-outline' | 'ios-return-right' | 'ios-return-right-outline' | 'ios-reverse-camera' | 'ios-reverse-camera-outline' | 'ios-rewind' | 'ios-rewind-outline' | 'ios-ribbon' | 'ios-ribbon-outline' | 'ios-rose' | 'ios-rose-outline' | 'ios-sad' | 'ios-sad-outline' | 'ios-school' | 'ios-school-outline' | 'ios-search' | 'ios-search-outline' | 'ios-send' | 'ios-send-outline' | 'ios-settings' | 'ios-settings-outline' | 'ios-share' | 'ios-share-alt' | 'ios-share-alt-outline' | 'ios-share-outline' | 'ios-shirt' | 'ios-shirt-outline' | 'ios-shuffle' | 'ios-shuffle-outline' | 'ios-skip-backward' | 'ios-skip-backward-outline' | 'ios-skip-forward' | 'ios-skip-forward-outline' | 'ios-snow' | 'ios-snow-outline' | 'ios-speedometer' | 'ios-speedometer-outline' | 'ios-square' | 'ios-square-outline' | 'ios-star' | 'ios-star-half' | 'ios-star-half-outline' | 'ios-star-outline' | 'ios-stats' | 'ios-stats-outline' | 'ios-stopwatch' | 'ios-stopwatch-outline' | 'ios-subway' | 'ios-subway-outline' | 'ios-sunny' | 'ios-sunny-outline' | 'ios-swap' | 'ios-swap-outline' | 'ios-switch' | 'ios-switch-outline' | 'ios-sync' | 'ios-sync-outline' | 'ios-tablet-landscape' | 'ios-tablet-landscape-outline' | 'ios-tablet-portrait' | 'ios-tablet-portrait-outline' | 'ios-tennisball' | 'ios-tennisball-outline' | 'ios-text' | 'ios-text-outline' | 'ios-thermometer' | 'ios-thermometer-outline' | 'ios-thumbs-down' | 'ios-thumbs-down-outline' | 'ios-thumbs-up' | 'ios-thumbs-up-outline' | 'ios-thunderstorm' | 'ios-thunderstorm-outline' | 'ios-time' | 'ios-time-outline' | 'ios-timer' | 'ios-timer-outline' | 'ios-train' | 'ios-train-outline' | 'ios-transgender' | 'ios-transgender-outline' | 'ios-trash' | 'ios-trash-outline' | 'ios-trending-down' | 'ios-trending-down-outline' | 'ios-trending-up' | 'ios-trending-up-outline' | 'ios-trophy' | 'ios-trophy-outline' | 'ios-umbrella' | 'ios-umbrella-outline' | 'ios-undo' | 'ios-undo-outline' | 'ios-unlock' | 'ios-unlock-outline' | 'ios-videocam' | 'ios-videocam-outline' | 'ios-volume-down' | 'ios-volume-down-outline' | 'ios-volume-mute' | 'ios-volume-mute-outline' | 'ios-volume-off' | 'ios-volume-off-outline' | 'ios-volume-up' | 'ios-volume-up-outline' | 'ios-walk' | 'ios-walk-outline' | 'ios-warning' | 'ios-warning-outline' | 'ios-watch' | 'ios-watch-outline' | 'ios-water' | 'ios-water-outline' | 'ios-wifi' | 'ios-wifi-outline' | 'ios-wine' | 'ios-wine-outline' | 'ios-woman' | 'ios-woman-outline' | 'logo-android' | 'logo-angular' | 'logo-apple' | 'logo-bitcoin' | 'logo-buffer' | 'logo-chrome' | 'logo-codepen' | 'logo-css3' | 'logo-designernews' | 'logo-dribbble' | 'logo-dropbox' | 'logo-euro' | 'logo-facebook' | 'logo-foursquare' | 'logo-freebsd-devil' | 'logo-github' | 'logo-google' | 'logo-googleplus' | 'logo-hackernews' | 'logo-html5' | 'logo-instagram' | 'logo-javascript' | 'logo-linkedin' | 'logo-markdown' | 'logo-nodejs' | 'logo-octocat' | 'logo-pinterest' | 'logo-playstation' | 'logo-python' | 'logo-reddit' | 'logo-rss' | 'logo-sass' | 'logo-skype' | 'logo-snapchat' | 'logo-steam' | 'logo-tumblr' | 'logo-tux' | 'logo-twitch' | 'logo-twitter' | 'logo-usd' | 'logo-vimeo' | 'logo-whatsapp' | 'logo-windows' | 'logo-wordpress' | 'logo-xbox' | 'logo-yahoo' | 'logo-yen' | 'logo-youtube' | 'md-add' | 'md-add-circle' | 'md-alarm' | 'md-albums' | 'md-alert' | 'md-american-football' | 'md-analytics' | 'md-aperture' | 'md-apps' | 'md-appstore' | 'md-archive' | 'md-arrow-back' | 'md-arrow-down' | 'md-arrow-dropdown' | 'md-arrow-dropdown-circle' | 'md-arrow-dropleft' | 'md-arrow-dropleft-circle' | 'md-arrow-dropright' | 'md-arrow-dropright-circle' | 'md-arrow-dropup' | 'md-arrow-dropup-circle' | 'md-arrow-forward' | 'md-arrow-round-back' | 'md-arrow-round-down' | 'md-arrow-round-forward' | 'md-arrow-round-up' | 'md-arrow-up' | 'md-at' | 'md-attach' | 'md-backspace' | 'md-barcode' | 'md-baseball' | 'md-basket' | 'md-basketball' | 'md-battery-charging' | 'md-battery-dead' | 'md-battery-full' | 'md-beaker' | 'md-beer' | 'md-bicycle' | 'md-bluetooth' | 'md-boat' | 'md-body' | 'md-bonfire' | 'md-book' | 'md-bookmark' | 'md-bookmarks' | 'md-bowtie' | 'md-briefcase' | 'md-browsers' | 'md-brush' | 'md-bug' | 'md-build' | 'md-bulb' | 'md-bus' | 'md-cafe' | 'md-calculator' | 'md-calendar' | 'md-call' | 'md-camera' | 'md-car' | 'md-card' | 'md-cart' | 'md-cash' | 'md-chatboxes' | 'md-chatbubbles' | 'md-checkbox' | 'md-checkbox-outline' | 'md-checkmark' | 'md-checkmark-circle' | 'md-checkmark-circle-outline' | 'md-clipboard' | 'md-clock' | 'md-close' | 'md-close-circle' | 'md-closed-captioning' | 'md-cloud' | 'md-cloud-circle' | 'md-cloud-done' | 'md-cloud-download' | 'md-cloud-outline' | 'md-cloud-upload' | 'md-cloudy' | 'md-cloudy-night' | 'md-code' | 'md-code-download' | 'md-code-working' | 'md-cog' | 'md-color-fill' | 'md-color-filter' | 'md-color-palette' | 'md-color-wand' | 'md-compass' | 'md-construct' | 'md-contact' | 'md-contacts' | 'md-contract' | 'md-contrast' | 'md-copy' | 'md-create' | 'md-crop' | 'md-cube' | 'md-cut' | 'md-desktop' | 'md-disc' | 'md-document' | 'md-done-all' | 'md-download' | 'md-easel' | 'md-egg' | 'md-exit' | 'md-expand' | 'md-eye' | 'md-eye-off' | 'md-fastforward' | 'md-female' | 'md-filing' | 'md-film' | 'md-finger-print' | 'md-flag' | 'md-flame' | 'md-flash' | 'md-flask' | 'md-flower' | 'md-folder' | 'md-folder-open' | 'md-football' | 'md-funnel' | 'md-game-controller-a' | 'md-game-controller-b' | 'md-git-branch' | 'md-git-commit' | 'md-git-compare' | 'md-git-merge' | 'md-git-network' | 'md-git-pull-request' | 'md-glasses' | 'md-globe' | 'md-grid' | 'md-hammer' | 'md-hand' | 'md-happy' | 'md-headset' | 'md-heart' | 'md-heart-outline' | 'md-help' | 'md-help-buoy' | 'md-help-circle' | 'md-home' | 'md-ice-cream' | 'md-image' | 'md-images' | 'md-infinite' | 'md-information' | 'md-information-circle' | 'md-ionic' | 'md-ionitron' | 'md-jet' | 'md-key' | 'md-keypad' | 'md-laptop' | 'md-leaf' | 'md-link' | 'md-list' | 'md-list-box' | 'md-locate' | 'md-lock' | 'md-log-in' | 'md-log-out' | 'md-magnet' | 'md-mail' | 'md-mail-open' | 'md-male' | 'md-man' | 'md-map' | 'md-medal' | 'md-medical' | 'md-medkit' | 'md-megaphone' | 'md-menu' | 'md-mic' | 'md-mic-off' | 'md-microphone' | 'md-moon' | 'md-more' | 'md-move' | 'md-musical-note' | 'md-musical-notes' | 'md-navigate' | 'md-no-smoking' | 'md-notifications' | 'md-notifications-off' | 'md-notifications-outline' | 'md-nuclear' | 'md-nutrition' | 'md-open' | 'md-options' | 'md-outlet' | 'md-paper' | 'md-paper-plane' | 'md-partly-sunny' | 'md-pause' | 'md-paw' | 'md-people' | 'md-person' | 'md-person-add' | 'md-phone-landscape' | 'md-phone-portrait' | 'md-photos' | 'md-pie' | 'md-pin' | 'md-pint' | 'md-pizza' | 'md-plane' | 'md-planet' | 'md-play' | 'md-podium' | 'md-power' | 'md-pricetag' | 'md-pricetags' | 'md-print' | 'md-pulse' | 'md-qr-scanner' | 'md-quote' | 'md-radio' | 'md-radio-button-off' | 'md-radio-button-on' | 'md-rainy' | 'md-recording' | 'md-redo' | 'md-refresh' | 'md-refresh-circle' | 'md-remove' | 'md-remove-circle' | 'md-reorder' | 'md-repeat' | 'md-resize' | 'md-restaurant' | 'md-return-left' | 'md-return-right' | 'md-reverse-camera' | 'md-rewind' | 'md-ribbon' | 'md-rose' | 'md-sad' | 'md-school' | 'md-search' | 'md-send' | 'md-settings' | 'md-share' | 'md-share-alt' | 'md-shirt' | 'md-shuffle' | 'md-skip-backward' | 'md-skip-forward' | 'md-snow' | 'md-speedometer' | 'md-square' | 'md-square-outline' | 'md-star' | 'md-star-half' | 'md-star-outline' | 'md-stats' | 'md-stopwatch' | 'md-subway' | 'md-sunny' | 'md-swap' | 'md-switch' | 'md-sync' | 'md-tablet-landscape' | 'md-tablet-portrait' | 'md-tennisball' | 'md-text' | 'md-thermometer' | 'md-thumbs-down' | 'md-thumbs-up' | 'md-thunderstorm' | 'md-time' | 'md-timer' | 'md-train' | 'md-transgender' | 'md-trash' | 'md-trending-down' | 'md-trending-up' | 'md-trophy' | 'md-umbrella' | 'md-undo' | 'md-unlock' | 'md-videocam' | 'md-volume-down' | 'md-volume-mute' | 'md-volume-off' | 'md-volume-up' | 'md-walk' | 'md-warning' | 'md-watch' | 'md-water' | 'md-wifi' | 'md-wine' | 'md-woman' 1657 | } 1658 | 1659 | interface MaterialCommunityIconsProps extends BaseIconProps { 1660 | name: 'access-point' | 'access-point-network' | 'account' | 'account-alert' | 'account-box' | 'account-box-outline' | 'account-card-details' | 'account-check' | 'account-circle' | 'account-convert' | 'account-edit' | 'account-key' | 'account-location' | 'account-minus' | 'account-multiple' | 'account-multiple-minus' | 'account-multiple-outline' | 'account-multiple-plus' | 'account-network' | 'account-off' | 'account-outline' | 'account-plus' | 'account-remove' | 'account-search' | 'account-settings' | 'account-settings-variant' | 'account-star' | 'account-switch' | 'adjust' | 'air-conditioner' | 'airballoon' | 'airplane' | 'airplane-landing' | 'airplane-off' | 'airplane-takeoff' | 'airplay' | 'alarm' | 'alarm-bell' | 'alarm-check' | 'alarm-light' | 'alarm-multiple' | 'alarm-off' | 'alarm-plus' | 'alarm-snooze' | 'album' | 'alert' | 'alert-box' | 'alert-circle' | 'alert-circle-outline' | 'alert-decagram' | 'alert-octagon' | 'alert-octagram' | 'alert-outline' | 'all-inclusive' | 'alpha' | 'alphabetical' | 'altimeter' | 'amazon' | 'amazon-clouddrive' | 'ambulance' | 'amplifier' | 'anchor' | 'android' | 'android-debug-bridge' | 'android-head' | 'android-studio' | 'angular' | 'angularjs' | 'animation' | 'apple' | 'apple-finder' | 'apple-ios' | 'apple-keyboard-caps' | 'apple-keyboard-command' | 'apple-keyboard-control' | 'apple-keyboard-option' | 'apple-keyboard-shift' | 'apple-mobileme' | 'apple-safari' | 'application' | 'approval' | 'apps' | 'archive' | 'arrange-bring-forward' | 'arrange-bring-to-front' | 'arrange-send-backward' | 'arrange-send-to-back' | 'arrow-all' | 'arrow-bottom-left' | 'arrow-bottom-right' | 'arrow-collapse' | 'arrow-collapse-all' | 'arrow-collapse-down' | 'arrow-collapse-left' | 'arrow-collapse-right' | 'arrow-collapse-up' | 'arrow-down' | 'arrow-down-bold' | 'arrow-down-bold-box' | 'arrow-down-bold-box-outline' | 'arrow-down-bold-circle' | 'arrow-down-bold-circle-outline' | 'arrow-down-bold-hexagon-outline' | 'arrow-down-box' | 'arrow-down-drop-circle' | 'arrow-down-drop-circle-outline' | 'arrow-down-thick' | 'arrow-expand' | 'arrow-expand-all' | 'arrow-expand-down' | 'arrow-expand-left' | 'arrow-expand-right' | 'arrow-expand-up' | 'arrow-left' | 'arrow-left-bold' | 'arrow-left-bold-box' | 'arrow-left-bold-box-outline' | 'arrow-left-bold-circle' | 'arrow-left-bold-circle-outline' | 'arrow-left-bold-hexagon-outline' | 'arrow-left-box' | 'arrow-left-drop-circle' | 'arrow-left-drop-circle-outline' | 'arrow-left-thick' | 'arrow-right' | 'arrow-right-bold' | 'arrow-right-bold-box' | 'arrow-right-bold-box-outline' | 'arrow-right-bold-circle' | 'arrow-right-bold-circle-outline' | 'arrow-right-bold-hexagon-outline' | 'arrow-right-box' | 'arrow-right-drop-circle' | 'arrow-right-drop-circle-outline' | 'arrow-right-thick' | 'arrow-top-left' | 'arrow-top-right' | 'arrow-up' | 'arrow-up-bold' | 'arrow-up-bold-box' | 'arrow-up-bold-box-outline' | 'arrow-up-bold-circle' | 'arrow-up-bold-circle-outline' | 'arrow-up-bold-hexagon-outline' | 'arrow-up-box' | 'arrow-up-drop-circle' | 'arrow-up-drop-circle-outline' | 'arrow-up-thick' | 'assistant' | 'asterisk' | 'at' | 'atom' | 'attachment' | 'audiobook' | 'auto-fix' | 'auto-upload' | 'autorenew' | 'av-timer' | 'baby' | 'baby-buggy' | 'backburger' | 'backspace' | 'backup-restore' | 'bandcamp' | 'bank' | 'barcode' | 'barcode-scan' | 'barley' | 'barrel' | 'basecamp' | 'basket' | 'basket-fill' | 'basket-unfill' | 'battery' | 'battery-10' | 'battery-20' | 'battery-30' | 'battery-40' | 'battery-50' | 'battery-60' | 'battery-70' | 'battery-80' | 'battery-90' | 'battery-alert' | 'battery-charging' | 'battery-charging-100' | 'battery-charging-20' | 'battery-charging-30' | 'battery-charging-40' | 'battery-charging-60' | 'battery-charging-80' | 'battery-charging-90' | 'battery-minus' | 'battery-negative' | 'battery-outline' | 'battery-plus' | 'battery-positive' | 'battery-unknown' | 'beach' | 'beaker' | 'beats' | 'beer' | 'behance' | 'bell' | 'bell-off' | 'bell-outline' | 'bell-plus' | 'bell-ring' | 'bell-ring-outline' | 'bell-sleep' | 'beta' | 'bible' | 'bike' | 'bing' | 'binoculars' | 'bio' | 'biohazard' | 'bitbucket' | 'black-mesa' | 'blackberry' | 'blender' | 'blinds' | 'block-helper' | 'blogger' | 'bluetooth' | 'bluetooth-audio' | 'bluetooth-connect' | 'bluetooth-off' | 'bluetooth-settings' | 'bluetooth-transfer' | 'blur' | 'blur-linear' | 'blur-off' | 'blur-radial' | 'bomb' | 'bomb-off' | 'bone' | 'book' | 'book-minus' | 'book-multiple' | 'book-multiple-variant' | 'book-open' | 'book-open-page-variant' | 'book-open-variant' | 'book-plus' | 'book-secure' | 'book-unsecure' | 'book-variant' | 'bookmark' | 'bookmark-check' | 'bookmark-music' | 'bookmark-outline' | 'bookmark-plus' | 'bookmark-plus-outline' | 'bookmark-remove' | 'boombox' | 'bootstrap' | 'border-all' | 'border-bottom' | 'border-color' | 'border-horizontal' | 'border-inside' | 'border-left' | 'border-none' | 'border-outside' | 'border-right' | 'border-style' | 'border-top' | 'border-vertical' | 'bow-tie' | 'bowl' | 'bowling' | 'box' | 'box-cutter' | 'box-shadow' | 'bridge' | 'briefcase' | 'briefcase-check' | 'briefcase-download' | 'briefcase-upload' | 'brightness-1' | 'brightness-2' | 'brightness-3' | 'brightness-4' | 'brightness-5' | 'brightness-6' | 'brightness-7' | 'brightness-auto' | 'broom' | 'brush' | 'buffer' | 'bug' | 'bulletin-board' | 'bullhorn' | 'bullseye' | 'burst-mode' | 'bus' | 'bus-articulated-end' | 'bus-articulated-front' | 'bus-double-decker' | 'bus-school' | 'bus-side' | 'cached' | 'cake' | 'cake-layered' | 'cake-variant' | 'calculator' | 'calendar' | 'calendar-blank' | 'calendar-check' | 'calendar-clock' | 'calendar-multiple' | 'calendar-multiple-check' | 'calendar-plus' | 'calendar-question' | 'calendar-range' | 'calendar-remove' | 'calendar-text' | 'calendar-today' | 'call-made' | 'call-merge' | 'call-missed' | 'call-received' | 'call-split' | 'camcorder' | 'camcorder-box' | 'camcorder-box-off' | 'camcorder-off' | 'camera' | 'camera-burst' | 'camera-enhance' | 'camera-front' | 'camera-front-variant' | 'camera-gopro' | 'camera-iris' | 'camera-metering-center' | 'camera-metering-matrix' | 'camera-metering-partial' | 'camera-metering-spot' | 'camera-off' | 'camera-party-mode' | 'camera-rear' | 'camera-rear-variant' | 'camera-switch' | 'camera-timer' | 'cancel' | 'candle' | 'candycane' | 'cannabis' | 'car' | 'car-battery' | 'car-connected' | 'car-convertable' | 'car-estate' | 'car-hatchback' | 'car-pickup' | 'car-side' | 'car-sports' | 'car-wash' | 'caravan' | 'cards' | 'cards-outline' | 'cards-playing-outline' | 'cards-variant' | 'carrot' | 'cart' | 'cart-off' | 'cart-outline' | 'cart-plus' | 'case-sensitive-alt' | 'cash' | 'cash-100' | 'cash-multiple' | 'cash-usd' | 'cast' | 'cast-connected' | 'cast-off' | 'castle' | 'cat' | 'cctv' | 'ceiling-light' | 'cellphone' | 'cellphone-android' | 'cellphone-basic' | 'cellphone-dock' | 'cellphone-iphone' | 'cellphone-link' | 'cellphone-link-off' | 'cellphone-settings' | 'certificate' | 'chair-school' | 'chart-arc' | 'chart-areaspline' | 'chart-bar' | 'chart-bar-stacked' | 'chart-bubble' | 'chart-donut' | 'chart-donut-variant' | 'chart-gantt' | 'chart-histogram' | 'chart-line' | 'chart-line-stacked' | 'chart-line-variant' | 'chart-pie' | 'chart-scatterplot-hexbin' | 'chart-timeline' | 'check' | 'check-all' | 'check-circle' | 'check-circle-outline' | 'checkbox-blank' | 'checkbox-blank-circle' | 'checkbox-blank-circle-outline' | 'checkbox-blank-outline' | 'checkbox-marked' | 'checkbox-marked-circle' | 'checkbox-marked-circle-outline' | 'checkbox-marked-outline' | 'checkbox-multiple-blank' | 'checkbox-multiple-blank-circle' | 'checkbox-multiple-blank-circle-outline' | 'checkbox-multiple-blank-outline' | 'checkbox-multiple-marked' | 'checkbox-multiple-marked-circle' | 'checkbox-multiple-marked-circle-outline' | 'checkbox-multiple-marked-outline' | 'checkerboard' | 'chemical-weapon' | 'chevron-double-down' | 'chevron-double-left' | 'chevron-double-right' | 'chevron-double-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'chili-hot' | 'chili-medium' | 'chili-mild' | 'chip' | 'church' | 'circle' | 'circle-outline' | 'cisco-webex' | 'city' | 'clipboard' | 'clipboard-account' | 'clipboard-alert' | 'clipboard-arrow-down' | 'clipboard-arrow-left' | 'clipboard-check' | 'clipboard-flow' | 'clipboard-outline' | 'clipboard-plus' | 'clipboard-text' | 'clippy' | 'clock' | 'clock-alert' | 'clock-end' | 'clock-fast' | 'clock-in' | 'clock-out' | 'clock-start' | 'close' | 'close-box' | 'close-box-outline' | 'close-circle' | 'close-circle-outline' | 'close-network' | 'close-octagon' | 'close-octagon-outline' | 'close-outline' | 'closed-caption' | 'cloud' | 'cloud-braces' | 'cloud-check' | 'cloud-circle' | 'cloud-download' | 'cloud-off-outline' | 'cloud-outline' | 'cloud-print' | 'cloud-print-outline' | 'cloud-sync' | 'cloud-tags' | 'cloud-upload' | 'code-array' | 'code-braces' | 'code-brackets' | 'code-equal' | 'code-greater-than' | 'code-greater-than-or-equal' | 'code-less-than' | 'code-less-than-or-equal' | 'code-not-equal' | 'code-not-equal-variant' | 'code-parentheses' | 'code-string' | 'code-tags' | 'code-tags-check' | 'codepen' | 'coffee' | 'coffee-outline' | 'coffee-to-go' | 'coin' | 'coins' | 'collage' | 'color-helper' | 'comment' | 'comment-account' | 'comment-account-outline' | 'comment-alert' | 'comment-alert-outline' | 'comment-check' | 'comment-check-outline' | 'comment-multiple-outline' | 'comment-outline' | 'comment-plus-outline' | 'comment-processing' | 'comment-processing-outline' | 'comment-question-outline' | 'comment-remove-outline' | 'comment-text' | 'comment-text-outline' | 'compare' | 'compass' | 'compass-outline' | 'console' | 'console-line' | 'contact-mail' | 'contacts' | 'content-copy' | 'content-cut' | 'content-duplicate' | 'content-paste' | 'content-save' | 'content-save-all' | 'content-save-settings' | 'contrast' | 'contrast-box' | 'contrast-circle' | 'cookie' | 'copyright' | 'corn' | 'counter' | 'cow' | 'creation' | 'credit-card' | 'credit-card-multiple' | 'credit-card-off' | 'credit-card-plus' | 'credit-card-scan' | 'crop' | 'crop-free' | 'crop-landscape' | 'crop-portrait' | 'crop-rotate' | 'crop-square' | 'crosshairs' | 'crosshairs-gps' | 'crown' | 'cube' | 'cube-outline' | 'cube-send' | 'cube-unfolded' | 'cup' | 'cup-off' | 'cup-water' | 'currency-btc' | 'currency-chf' | 'currency-cny' | 'currency-eth' | 'currency-eur' | 'currency-gbp' | 'currency-inr' | 'currency-jpy' | 'currency-krw' | 'currency-ngn' | 'currency-rub' | 'currency-sign' | 'currency-try' | 'currency-twd' | 'currency-usd' | 'currency-usd-off' | 'cursor-default' | 'cursor-default-outline' | 'cursor-move' | 'cursor-pointer' | 'cursor-text' | 'database' | 'database-minus' | 'database-plus' | 'debug-step-into' | 'debug-step-out' | 'debug-step-over' | 'decagram' | 'decagram-outline' | 'decimal-decrease' | 'decimal-increase' | 'delete' | 'delete-circle' | 'delete-empty' | 'delete-forever' | 'delete-sweep' | 'delete-variant' | 'delta' | 'deskphone' | 'desktop-classic' | 'desktop-mac' | 'desktop-tower' | 'details' | 'developer-board' | 'deviantart' | 'dialpad' | 'diamond' | 'dice-1' | 'dice-2' | 'dice-3' | 'dice-4' | 'dice-5' | 'dice-6' | 'dice-d10' | 'dice-d20' | 'dice-d4' | 'dice-d6' | 'dice-d8' | 'dice-multiple' | 'dictionary' | 'dip-switch' | 'directions' | 'directions-fork' | 'discord' | 'disk' | 'disk-alert' | 'disqus' | 'disqus-outline' | 'division' | 'division-box' | 'dna' | 'dns' | 'do-not-disturb' | 'do-not-disturb-off' | 'dolby' | 'domain' | 'donkey' | 'dots-horizontal' | 'dots-horizontal-circle' | 'dots-vertical' | 'dots-vertical-circle' | 'douban' | 'download' | 'download-network' | 'drag' | 'drag-horizontal' | 'drag-vertical' | 'drawing' | 'drawing-box' | 'dribbble' | 'dribbble-box' | 'drone' | 'dropbox' | 'drupal' | 'duck' | 'dumbbell' | 'ear-hearing' | 'earth' | 'earth-box' | 'earth-box-off' | 'earth-off' | 'edge' | 'eject' | 'elephant' | 'elevation-decline' | 'elevation-rise' | 'elevator' | 'email' | 'email-alert' | 'email-open' | 'email-open-outline' | 'email-outline' | 'email-secure' | 'email-variant' | 'emby' | 'emoticon' | 'emoticon-cool' | 'emoticon-dead' | 'emoticon-devil' | 'emoticon-excited' | 'emoticon-happy' | 'emoticon-neutral' | 'emoticon-poop' | 'emoticon-sad' | 'emoticon-tongue' | 'engine' | 'engine-outline' | 'equal' | 'equal-box' | 'eraser' | 'eraser-variant' | 'escalator' | 'ethernet' | 'ethernet-cable' | 'ethernet-cable-off' | 'etsy' | 'ev-station' | 'eventbrite' | 'evernote' | 'exclamation' | 'exit-to-app' | 'export' | 'eye' | 'eye-off' | 'eye-off-outline' | 'eye-outline' | 'eyedropper' | 'eyedropper-variant' | 'face' | 'face-profile' | 'facebook' | 'facebook-box' | 'facebook-messenger' | 'factory' | 'fan' | 'fast-forward' | 'fast-forward-outline' | 'fax' | 'feather' | 'ferry' | 'file' | 'file-account' | 'file-chart' | 'file-check' | 'file-cloud' | 'file-delimited' | 'file-document' | 'file-document-box' | 'file-excel' | 'file-excel-box' | 'file-export' | 'file-find' | 'file-hidden' | 'file-image' | 'file-import' | 'file-lock' | 'file-multiple' | 'file-music' | 'file-outline' | 'file-pdf' | 'file-pdf-box' | 'file-plus' | 'file-powerpoint' | 'file-powerpoint-box' | 'file-presentation-box' | 'file-restore' | 'file-send' | 'file-tree' | 'file-video' | 'file-word' | 'file-word-box' | 'file-xml' | 'film' | 'filmstrip' | 'filmstrip-off' | 'filter' | 'filter-outline' | 'filter-remove' | 'filter-remove-outline' | 'filter-variant' | 'find-replace' | 'fingerprint' | 'fire' | 'firefox' | 'fish' | 'flag' | 'flag-checkered' | 'flag-outline' | 'flag-outline-variant' | 'flag-triangle' | 'flag-variant' | 'flash' | 'flash-auto' | 'flash-off' | 'flash-outline' | 'flash-red-eye' | 'flashlight' | 'flashlight-off' | 'flask' | 'flask-empty' | 'flask-empty-outline' | 'flask-outline' | 'flattr' | 'flip-to-back' | 'flip-to-front' | 'floppy' | 'flower' | 'folder' | 'folder-account' | 'folder-download' | 'folder-google-drive' | 'folder-image' | 'folder-lock' | 'folder-lock-open' | 'folder-move' | 'folder-multiple' | 'folder-multiple-image' | 'folder-multiple-outline' | 'folder-open' | 'folder-outline' | 'folder-plus' | 'folder-remove' | 'folder-star' | 'folder-upload' | 'font-awesome' | 'food' | 'food-apple' | 'food-croissant' | 'food-fork-drink' | 'food-off' | 'food-variant' | 'football' | 'football-australian' | 'football-helmet' | 'forklift' | 'format-align-bottom' | 'format-align-center' | 'format-align-justify' | 'format-align-left' | 'format-align-middle' | 'format-align-right' | 'format-align-top' | 'format-annotation-plus' | 'format-bold' | 'format-clear' | 'format-color-fill' | 'format-color-text' | 'format-float-center' | 'format-float-left' | 'format-float-none' | 'format-float-right' | 'format-font' | 'format-header-1' | 'format-header-2' | 'format-header-3' | 'format-header-4' | 'format-header-5' | 'format-header-6' | 'format-header-decrease' | 'format-header-equal' | 'format-header-increase' | 'format-header-pound' | 'format-horizontal-align-center' | 'format-horizontal-align-left' | 'format-horizontal-align-right' | 'format-indent-decrease' | 'format-indent-increase' | 'format-italic' | 'format-line-spacing' | 'format-line-style' | 'format-line-weight' | 'format-list-bulleted' | 'format-list-bulleted-type' | 'format-list-checks' | 'format-list-numbers' | 'format-page-break' | 'format-paint' | 'format-paragraph' | 'format-pilcrow' | 'format-quote-close' | 'format-quote-open' | 'format-rotate-90' | 'format-section' | 'format-size' | 'format-strikethrough' | 'format-strikethrough-variant' | 'format-subscript' | 'format-superscript' | 'format-text' | 'format-textdirection-l-to-r' | 'format-textdirection-r-to-l' | 'format-title' | 'format-underline' | 'format-vertical-align-bottom' | 'format-vertical-align-center' | 'format-vertical-align-top' | 'format-wrap-inline' | 'format-wrap-square' | 'format-wrap-tight' | 'format-wrap-top-bottom' | 'forum' | 'forward' | 'foursquare' | 'fridge' | 'fridge-filled' | 'fridge-filled-bottom' | 'fridge-filled-top' | 'fuel' | 'fullscreen' | 'fullscreen-exit' | 'function' | 'gamepad' | 'gamepad-variant' | 'garage' | 'garage-open' | 'gas-cylinder' | 'gas-station' | 'gate' | 'gauge' | 'gavel' | 'gender-female' | 'gender-male' | 'gender-male-female' | 'gender-transgender' | 'gesture' | 'gesture-double-tap' | 'gesture-swipe-down' | 'gesture-swipe-left' | 'gesture-swipe-right' | 'gesture-swipe-up' | 'gesture-tap' | 'gesture-two-double-tap' | 'gesture-two-tap' | 'ghost' | 'gift' | 'git' | 'github-box' | 'github-circle' | 'github-face' | 'glass-flute' | 'glass-mug' | 'glass-stange' | 'glass-tulip' | 'glassdoor' | 'glasses' | 'gmail' | 'gnome' | 'gondola' | 'google' | 'google-analytics' | 'google-assistant' | 'google-cardboard' | 'google-chrome' | 'google-circles' | 'google-circles-communities' | 'google-circles-extended' | 'google-circles-group' | 'google-controller' | 'google-controller-off' | 'google-drive' | 'google-earth' | 'google-glass' | 'google-keep' | 'google-maps' | 'google-nearby' | 'google-pages' | 'google-photos' | 'google-physical-web' | 'google-play' | 'google-plus' | 'google-plus-box' | 'google-translate' | 'google-wallet' | 'gradient' | 'grease-pencil' | 'grid' | 'grid-large' | 'grid-off' | 'group' | 'guitar-acoustic' | 'guitar-electric' | 'guitar-pick' | 'guitar-pick-outline' | 'hackernews' | 'hamburger' | 'hand-pointing-right' | 'hanger' | 'hangouts' | 'harddisk' | 'headphones' | 'headphones-box' | 'headphones-off' | 'headphones-settings' | 'headset' | 'headset-dock' | 'headset-off' | 'heart' | 'heart-box' | 'heart-box-outline' | 'heart-broken' | 'heart-half' | 'heart-half-full' | 'heart-half-outline' | 'heart-off' | 'heart-outline' | 'heart-pulse' | 'help' | 'help-box' | 'help-circle' | 'help-circle-outline' | 'help-network' | 'hexagon' | 'hexagon-multiple' | 'hexagon-outline' | 'high-definition' | 'highway' | 'history' | 'hololens' | 'home' | 'home-assistant' | 'home-automation' | 'home-circle' | 'home-map-marker' | 'home-modern' | 'home-outline' | 'home-variant' | 'hook' | 'hook-off' | 'hops' | 'hospital' | 'hospital-building' | 'hospital-marker' | 'hotel' | 'houzz' | 'houzz-box' | 'human' | 'human-child' | 'human-female' | 'human-greeting' | 'human-handsdown' | 'human-handsup' | 'human-male' | 'human-male-female' | 'human-pregnant' | 'humble-bundle' | 'image' | 'image-album' | 'image-area' | 'image-area-close' | 'image-broken' | 'image-broken-variant' | 'image-filter' | 'image-filter-black-white' | 'image-filter-center-focus' | 'image-filter-center-focus-weak' | 'image-filter-drama' | 'image-filter-frames' | 'image-filter-hdr' | 'image-filter-none' | 'image-filter-tilt-shift' | 'image-filter-vintage' | 'image-multiple' | 'import' | 'inbox' | 'inbox-arrow-down' | 'inbox-arrow-up' | 'incognito' | 'infinity' | 'information' | 'information-outline' | 'information-variant' | 'instagram' | 'instapaper' | 'internet-explorer' | 'invert-colors' | 'itunes' | 'jeepney' | 'jira' | 'jsfiddle' | 'json' | 'keg' | 'kettle' | 'key' | 'key-change' | 'key-minus' | 'key-plus' | 'key-remove' | 'key-variant' | 'keyboard' | 'keyboard-backspace' | 'keyboard-caps' | 'keyboard-close' | 'keyboard-off' | 'keyboard-return' | 'keyboard-tab' | 'keyboard-variant' | 'kickstarter' | 'kodi' | 'label' | 'label-outline' | 'lambda' | 'lamp' | 'lan' | 'lan-connect' | 'lan-disconnect' | 'lan-pending' | 'language-c' | 'language-cpp' | 'language-csharp' | 'language-css3' | 'language-go' | 'language-html5' | 'language-javascript' | 'language-php' | 'language-python' | 'language-python-text' | 'language-r' | 'language-swift' | 'language-typescript' | 'laptop' | 'laptop-chromebook' | 'laptop-mac' | 'laptop-off' | 'laptop-windows' | 'lastfm' | 'launch' | 'lava-lamp' | 'layers' | 'layers-off' | 'lead-pencil' | 'leaf' | 'led-off' | 'led-on' | 'led-outline' | 'led-strip' | 'led-variant-off' | 'led-variant-on' | 'led-variant-outline' | 'library' | 'library-books' | 'library-music' | 'library-plus' | 'lightbulb' | 'lightbulb-on' | 'lightbulb-on-outline' | 'lightbulb-outline' | 'link' | 'link-off' | 'link-variant' | 'link-variant-off' | 'linkedin' | 'linkedin-box' | 'linux' | 'loading' | 'lock' | 'lock-open' | 'lock-open-outline' | 'lock-outline' | 'lock-pattern' | 'lock-plus' | 'lock-reset' | 'locker' | 'locker-multiple' | 'login' | 'login-variant' | 'logout' | 'logout-variant' | 'looks' | 'loop' | 'loupe' | 'lumx' | 'magnet' | 'magnet-on' | 'magnify' | 'magnify-minus' | 'magnify-minus-outline' | 'magnify-plus' | 'magnify-plus-outline' | 'mail-ru' | 'mailbox' | 'map' | 'map-marker' | 'map-marker-circle' | 'map-marker-minus' | 'map-marker-multiple' | 'map-marker-off' | 'map-marker-outline' | 'map-marker-plus' | 'map-marker-radius' | 'margin' | 'markdown' | 'marker' | 'marker-check' | 'martini' | 'material-ui' | 'math-compass' | 'matrix' | 'maxcdn' | 'medical-bag' | 'medium' | 'memory' | 'menu' | 'menu-down' | 'menu-down-outline' | 'menu-left' | 'menu-right' | 'menu-up' | 'menu-up-outline' | 'message' | 'message-alert' | 'message-bulleted' | 'message-bulleted-off' | 'message-draw' | 'message-image' | 'message-outline' | 'message-plus' | 'message-processing' | 'message-reply' | 'message-reply-text' | 'message-settings' | 'message-settings-variant' | 'message-text' | 'message-text-outline' | 'message-video' | 'meteor' | 'metronome' | 'metronome-tick' | 'micro-sd' | 'microphone' | 'microphone-off' | 'microphone-outline' | 'microphone-settings' | 'microphone-variant' | 'microphone-variant-off' | 'microscope' | 'microsoft' | 'minecraft' | 'minus' | 'minus-box' | 'minus-box-outline' | 'minus-circle' | 'minus-circle-outline' | 'minus-network' | 'mixcloud' | 'mixer' | 'monitor' | 'monitor-multiple' | 'more' | 'motorbike' | 'mouse' | 'mouse-off' | 'mouse-variant' | 'mouse-variant-off' | 'move-resize' | 'move-resize-variant' | 'movie' | 'movie-roll' | 'multiplication' | 'multiplication-box' | 'mushroom' | 'mushroom-outline' | 'music' | 'music-box' | 'music-box-outline' | 'music-circle' | 'music-note' | 'music-note-bluetooth' | 'music-note-bluetooth-off' | 'music-note-eighth' | 'music-note-half' | 'music-note-off' | 'music-note-quarter' | 'music-note-sixteenth' | 'music-note-whole' | 'music-off' | 'nature' | 'nature-people' | 'navigation' | 'near-me' | 'needle' | 'nest-protect' | 'nest-thermostat' | 'netflix' | 'network' | 'new-box' | 'newspaper' | 'nfc' | 'nfc-tap' | 'nfc-variant' | 'ninja' | 'nintendo-switch' | 'nodejs' | 'note' | 'note-multiple' | 'note-multiple-outline' | 'note-outline' | 'note-plus' | 'note-plus-outline' | 'note-text' | 'notification-clear-all' | 'npm' | 'nuke' | 'null' | 'numeric' | 'numeric-0-box' | 'numeric-0-box-multiple-outline' | 'numeric-0-box-outline' | 'numeric-1-box' | 'numeric-1-box-multiple-outline' | 'numeric-1-box-outline' | 'numeric-2-box' | 'numeric-2-box-multiple-outline' | 'numeric-2-box-outline' | 'numeric-3-box' | 'numeric-3-box-multiple-outline' | 'numeric-3-box-outline' | 'numeric-4-box' | 'numeric-4-box-multiple-outline' | 'numeric-4-box-outline' | 'numeric-5-box' | 'numeric-5-box-multiple-outline' | 'numeric-5-box-outline' | 'numeric-6-box' | 'numeric-6-box-multiple-outline' | 'numeric-6-box-outline' | 'numeric-7-box' | 'numeric-7-box-multiple-outline' | 'numeric-7-box-outline' | 'numeric-8-box' | 'numeric-8-box-multiple-outline' | 'numeric-8-box-outline' | 'numeric-9-box' | 'numeric-9-box-multiple-outline' | 'numeric-9-box-outline' | 'numeric-9-plus-box' | 'numeric-9-plus-box-multiple-outline' | 'numeric-9-plus-box-outline' | 'nut' | 'nutrition' | 'oar' | 'octagon' | 'octagon-outline' | 'octagram' | 'octagram-outline' | 'odnoklassniki' | 'office' | 'oil' | 'oil-temperature' | 'omega' | 'onedrive' | 'onenote' | 'opacity' | 'open-in-app' | 'open-in-new' | 'openid' | 'opera' | 'orbit' | 'ornament' | 'ornament-variant' | 'owl' | 'package' | 'package-down' | 'package-up' | 'package-variant' | 'package-variant-closed' | 'page-first' | 'page-last' | 'page-layout-body' | 'page-layout-footer' | 'page-layout-header' | 'page-layout-sidebar-left' | 'page-layout-sidebar-right' | 'palette' | 'palette-advanced' | 'panda' | 'pandora' | 'panorama' | 'panorama-fisheye' | 'panorama-horizontal' | 'panorama-vertical' | 'panorama-wide-angle' | 'paper-cut-vertical' | 'paperclip' | 'parking' | 'passport' | 'pause' | 'pause-circle' | 'pause-circle-outline' | 'pause-octagon' | 'pause-octagon-outline' | 'paw' | 'paw-off' | 'pen' | 'pencil' | 'pencil-box' | 'pencil-box-outline' | 'pencil-circle' | 'pencil-circle-outline' | 'pencil-lock' | 'pencil-off' | 'pentagon' | 'pentagon-outline' | 'percent' | 'periodic-table-co2' | 'periscope' | 'pharmacy' | 'phone' | 'phone-bluetooth' | 'phone-classic' | 'phone-forward' | 'phone-hangup' | 'phone-in-talk' | 'phone-incoming' | 'phone-locked' | 'phone-log' | 'phone-minus' | 'phone-missed' | 'phone-outgoing' | 'phone-paused' | 'phone-plus' | 'phone-settings' | 'phone-voip' | 'pi' | 'pi-box' | 'piano' | 'pig' | 'pill' | 'pillar' | 'pin' | 'pin-off' | 'pine-tree' | 'pine-tree-box' | 'pinterest' | 'pinterest-box' | 'pipe' | 'pipe-disconnected' | 'pistol' | 'pizza' | 'plane-shield' | 'play' | 'play-box-outline' | 'play-circle' | 'play-circle-outline' | 'play-pause' | 'play-protected-content' | 'playlist-check' | 'playlist-minus' | 'playlist-play' | 'playlist-plus' | 'playlist-remove' | 'playstation' | 'plex' | 'plus' | 'plus-box' | 'plus-box-outline' | 'plus-circle' | 'plus-circle-multiple-outline' | 'plus-circle-outline' | 'plus-network' | 'plus-one' | 'plus-outline' | 'pocket' | 'pokeball' | 'polaroid' | 'poll' | 'poll-box' | 'polymer' | 'pool' | 'popcorn' | 'pot' | 'pot-mix' | 'pound' | 'pound-box' | 'power' | 'power-plug' | 'power-plug-off' | 'power-settings' | 'power-socket' | 'power-socket-eu' | 'power-socket-uk' | 'power-socket-us' | 'prescription' | 'presentation' | 'presentation-play' | 'printer' | 'printer-3d' | 'printer-alert' | 'printer-settings' | 'priority-high' | 'priority-low' | 'professional-hexagon' | 'projector' | 'projector-screen' | 'publish' | 'pulse' | 'puzzle' | 'qqchat' | 'qrcode' | 'qrcode-scan' | 'quadcopter' | 'quality-high' | 'quicktime' | 'radar' | 'radiator' | 'radio' | 'radio-handheld' | 'radio-tower' | 'radioactive' | 'radiobox-blank' | 'radiobox-marked' | 'raspberrypi' | 'ray-end' | 'ray-end-arrow' | 'ray-start' | 'ray-start-arrow' | 'ray-start-end' | 'ray-vertex' | 'rdio' | 'react' | 'read' | 'readability' | 'receipt' | 'record' | 'record-rec' | 'recycle' | 'reddit' | 'redo' | 'redo-variant' | 'refresh' | 'regex' | 'relative-scale' | 'reload' | 'remote' | 'rename-box' | 'reorder-horizontal' | 'reorder-vertical' | 'repeat' | 'repeat-off' | 'repeat-once' | 'replay' | 'reply' | 'reply-all' | 'reproduction' | 'resize-bottom-right' | 'responsive' | 'restart' | 'restore' | 'rewind' | 'rewind-outline' | 'rhombus' | 'rhombus-outline' | 'ribbon' | 'rice' | 'ring' | 'road' | 'road-variant' | 'robot' | 'rocket' | 'roomba' | 'rotate-3d' | 'rotate-left' | 'rotate-left-variant' | 'rotate-right' | 'rotate-right-variant' | 'rounded-corner' | 'router-wireless' | 'routes' | 'rowing' | 'rss' | 'rss-box' | 'ruler' | 'run' | 'run-fast' | 'sale' | 'sass' | 'satellite' | 'satellite-variant' | 'saxophone' | 'scale' | 'scale-balance' | 'scale-bathroom' | 'scanner' | 'school' | 'screen-rotation' | 'screen-rotation-lock' | 'screwdriver' | 'script' | 'sd' | 'seal' | 'search-web' | 'seat-flat' | 'seat-flat-angled' | 'seat-individual-suite' | 'seat-legroom-extra' | 'seat-legroom-normal' | 'seat-legroom-reduced' | 'seat-recline-extra' | 'seat-recline-normal' | 'security' | 'security-home' | 'security-network' | 'select' | 'select-all' | 'select-inverse' | 'select-off' | 'selection' | 'selection-off' | 'send' | 'send-secure' | 'serial-port' | 'server' | 'server-minus' | 'server-network' | 'server-network-off' | 'server-off' | 'server-plus' | 'server-remove' | 'server-security' | 'set-all' | 'set-center' | 'set-center-right' | 'set-left' | 'set-left-center' | 'set-left-right' | 'set-none' | 'set-right' | 'settings' | 'settings-box' | 'shape-circle-plus' | 'shape-plus' | 'shape-polygon-plus' | 'shape-rectangle-plus' | 'shape-square-plus' | 'share' | 'share-variant' | 'shield' | 'shield-half-full' | 'shield-outline' | 'shopping' | 'shopping-music' | 'shovel' | 'shovel-off' | 'shredder' | 'shuffle' | 'shuffle-disabled' | 'shuffle-variant' | 'sigma' | 'sigma-lower' | 'sign-caution' | 'sign-direction' | 'sign-text' | 'signal' | 'signal-2g' | 'signal-3g' | 'signal-4g' | 'signal-hspa' | 'signal-hspa-plus' | 'signal-off' | 'signal-variant' | 'silverware' | 'silverware-fork' | 'silverware-spoon' | 'silverware-variant' | 'sim' | 'sim-alert' | 'sim-off' | 'sitemap' | 'skip-backward' | 'skip-forward' | 'skip-next' | 'skip-next-circle' | 'skip-next-circle-outline' | 'skip-previous' | 'skip-previous-circle' | 'skip-previous-circle-outline' | 'skull' | 'skype' | 'skype-business' | 'slack' | 'sleep' | 'sleep-off' | 'smoking' | 'smoking-off' | 'snapchat' | 'snowflake' | 'snowman' | 'soccer' | 'sofa' | 'solid' | 'sort' | 'sort-alphabetical' | 'sort-ascending' | 'sort-descending' | 'sort-numeric' | 'sort-variant' | 'soundcloud' | 'source-branch' | 'source-commit' | 'source-commit-end' | 'source-commit-end-local' | 'source-commit-local' | 'source-commit-next-local' | 'source-commit-start' | 'source-commit-start-next-local' | 'source-fork' | 'source-merge' | 'source-pull' | 'soy-sauce' | 'speaker' | 'speaker-off' | 'speaker-wireless' | 'speedometer' | 'spellcheck' | 'spotify' | 'spotlight' | 'spotlight-beam' | 'spray' | 'square' | 'square-inc' | 'square-inc-cash' | 'square-outline' | 'square-root' | 'stackexchange' | 'stackoverflow' | 'stadium' | 'stairs' | 'standard-definition' | 'star' | 'star-circle' | 'star-half' | 'star-off' | 'star-outline' | 'steam' | 'steering' | 'step-backward' | 'step-backward-2' | 'step-forward' | 'step-forward-2' | 'stethoscope' | 'sticker' | 'sticker-emoji' | 'stocking' | 'stop' | 'stop-circle' | 'stop-circle-outline' | 'store' | 'store-24-hour' | 'stove' | 'subdirectory-arrow-left' | 'subdirectory-arrow-right' | 'subway' | 'subway-variant' | 'summit' | 'sunglasses' | 'surround-sound' | 'surround-sound-2-0' | 'surround-sound-3-1' | 'surround-sound-5-1' | 'surround-sound-7-1' | 'svg' | 'swap-horizontal' | 'swap-vertical' | 'swim' | 'switch' | 'sword' | 'sword-cross' | 'sync' | 'sync-alert' | 'sync-off' | 'tab' | 'tab-plus' | 'tab-unselected' | 'table' | 'table-column-plus-after' | 'table-column-plus-before' | 'table-column-remove' | 'table-column-width' | 'table-edit' | 'table-large' | 'table-row-height' | 'table-row-plus-after' | 'table-row-plus-before' | 'table-row-remove' | 'tablet' | 'tablet-android' | 'tablet-ipad' | 'taco' | 'tag' | 'tag-faces' | 'tag-heart' | 'tag-multiple' | 'tag-outline' | 'tag-plus' | 'tag-remove' | 'tag-text-outline' | 'target' | 'taxi' | 'teamviewer' | 'telegram' | 'television' | 'television-classic' | 'television-guide' | 'temperature-celsius' | 'temperature-fahrenheit' | 'temperature-kelvin' | 'tennis' | 'tent' | 'terrain' | 'test-tube' | 'text-shadow' | 'text-to-speech' | 'text-to-speech-off' | 'textbox' | 'textbox-password' | 'texture' | 'theater' | 'theme-light-dark' | 'thermometer' | 'thermometer-lines' | 'thought-bubble' | 'thought-bubble-outline' | 'thumb-down' | 'thumb-down-outline' | 'thumb-up' | 'thumb-up-outline' | 'thumbs-up-down' | 'ticket' | 'ticket-account' | 'ticket-confirmation' | 'ticket-percent' | 'tie' | 'tilde' | 'timelapse' | 'timer' | 'timer-10' | 'timer-3' | 'timer-off' | 'timer-sand' | 'timer-sand-empty' | 'timer-sand-full' | 'timetable' | 'toggle-switch' | 'toggle-switch-off' | 'tooltip' | 'tooltip-edit' | 'tooltip-image' | 'tooltip-outline' | 'tooltip-outline-plus' | 'tooltip-text' | 'tooth' | 'tor' | 'tower-beach' | 'tower-fire' | 'trackpad' | 'traffic-light' | 'train' | 'tram' | 'transcribe' | 'transcribe-close' | 'transfer' | 'transit-transfer' | 'translate' | 'treasure-chest' | 'tree' | 'trello' | 'trending-down' | 'trending-neutral' | 'trending-up' | 'triangle' | 'triangle-outline' | 'trophy' | 'trophy-award' | 'trophy-outline' | 'trophy-variant' | 'trophy-variant-outline' | 'truck' | 'truck-delivery' | 'truck-fast' | 'truck-trailer' | 'tshirt-crew' | 'tshirt-v' | 'tumblr' | 'tumblr-reblog' | 'tune' | 'tune-vertical' | 'twitch' | 'twitter' | 'twitter-box' | 'twitter-circle' | 'twitter-retweet' | 'uber' | 'ubuntu' | 'ultra-high-definition' | 'umbraco' | 'umbrella' | 'umbrella-outline' | 'undo' | 'undo-variant' | 'unfold-less-horizontal' | 'unfold-less-vertical' | 'unfold-more-horizontal' | 'unfold-more-vertical' | 'ungroup' | 'unity' | 'untappd' | 'update' | 'upload' | 'upload-network' | 'usb' | 'van-passenger' | 'van-utility' | 'vanish' | 'vector-arrange-above' | 'vector-arrange-below' | 'vector-circle' | 'vector-circle-variant' | 'vector-combine' | 'vector-curve' | 'vector-difference' | 'vector-difference-ab' | 'vector-difference-ba' | 'vector-intersection' | 'vector-line' | 'vector-point' | 'vector-polygon' | 'vector-polyline' | 'vector-radius' | 'vector-rectangle' | 'vector-selection' | 'vector-square' | 'vector-triangle' | 'vector-union' | 'verified' | 'vibrate' | 'video' | 'video-3d' | 'video-off' | 'video-switch' | 'view-agenda' | 'view-array' | 'view-carousel' | 'view-column' | 'view-dashboard' | 'view-day' | 'view-grid' | 'view-headline' | 'view-list' | 'view-module' | 'view-parallel' | 'view-quilt' | 'view-sequential' | 'view-stream' | 'view-week' | 'vimeo' | 'vine' | 'violin' | 'visualstudio' | 'vk' | 'vk-box' | 'vk-circle' | 'vlc' | 'voice' | 'voicemail' | 'volume-high' | 'volume-low' | 'volume-medium' | 'volume-minus' | 'volume-mute' | 'volume-off' | 'volume-plus' | 'vpn' | 'walk' | 'wall' | 'wallet' | 'wallet-giftcard' | 'wallet-membership' | 'wallet-travel' | 'wan' | 'washing-machine' | 'watch' | 'watch-export' | 'watch-import' | 'watch-vibrate' | 'water' | 'water-off' | 'water-percent' | 'water-pump' | 'watermark' | 'waves' | 'weather-cloudy' | 'weather-fog' | 'weather-hail' | 'weather-lightning' | 'weather-lightning-rainy' | 'weather-night' | 'weather-partlycloudy' | 'weather-pouring' | 'weather-rainy' | 'weather-snowy' | 'weather-snowy-rainy' | 'weather-sunny' | 'weather-sunset' | 'weather-sunset-down' | 'weather-sunset-up' | 'weather-windy' | 'weather-windy-variant' | 'web' | 'webcam' | 'webhook' | 'webpack' | 'wechat' | 'weight' | 'weight-kilogram' | 'whatsapp' | 'wheelchair-accessibility' | 'white-balance-auto' | 'white-balance-incandescent' | 'white-balance-iridescent' | 'white-balance-sunny' | 'widgets' | 'wifi' | 'wifi-off' | 'wii' | 'wiiu' | 'wikipedia' | 'window-close' | 'window-closed' | 'window-maximize' | 'window-minimize' | 'window-open' | 'window-restore' | 'windows' | 'wordpress' | 'worker' | 'wrap' | 'wrench' | 'wunderlist' | 'xaml' | 'xbox' | 'xbox-controller' | 'xbox-controller-battery-alert' | 'xbox-controller-battery-empty' | 'xbox-controller-battery-full' | 'xbox-controller-battery-low' | 'xbox-controller-battery-medium' | 'xbox-controller-battery-unknown' | 'xbox-controller-off' | 'xda' | 'xing' | 'xing-box' | 'xing-circle' | 'xml' | 'xmpp' | 'yammer' | 'yeast' | 'yelp' | 'yin-yang' | 'youtube-play' | 'zip-box' | 'blank' 1661 | } 1662 | 1663 | interface MaterialIconsProps extends BaseIconProps { 1664 | name: '3d-rotation' | 'ac-unit' | 'access-alarm' | 'access-alarms' | 'access-time' | 'accessibility' | 'accessible' | 'account-balance' | 'account-balance-wallet' | 'account-box' | 'account-circle' | 'adb' | 'add' | 'add-a-photo' | 'add-alarm' | 'add-alert' | 'add-box' | 'add-circle' | 'add-circle-outline' | 'add-location' | 'add-shopping-cart' | 'add-to-photos' | 'add-to-queue' | 'adjust' | 'airline-seat-flat' | 'airline-seat-flat-angled' | 'airline-seat-individual-suite' | 'airline-seat-legroom-extra' | 'airline-seat-legroom-normal' | 'airline-seat-legroom-reduced' | 'airline-seat-recline-extra' | 'airline-seat-recline-normal' | 'airplanemode-active' | 'airplanemode-inactive' | 'airplay' | 'airport-shuttle' | 'alarm' | 'alarm-add' | 'alarm-off' | 'alarm-on' | 'album' | 'all-inclusive' | 'all-out' | 'android' | 'announcement' | 'apps' | 'archive' | 'arrow-back' | 'arrow-downward' | 'arrow-drop-down' | 'arrow-drop-down-circle' | 'arrow-drop-up' | 'arrow-forward' | 'arrow-upward' | 'art-track' | 'aspect-ratio' | 'assessment' | 'assignment' | 'assignment-ind' | 'assignment-late' | 'assignment-return' | 'assignment-returned' | 'assignment-turned-in' | 'assistant' | 'assistant-photo' | 'attach-file' | 'attach-money' | 'attachment' | 'audiotrack' | 'autorenew' | 'av-timer' | 'backspace' | 'backup' | 'battery-alert' | 'battery-charging-full' | 'battery-full' | 'battery-std' | 'battery-unknown' | 'beach-access' | 'beenhere' | 'block' | 'bluetooth' | 'bluetooth-audio' | 'bluetooth-connected' | 'bluetooth-disabled' | 'bluetooth-searching' | 'blur-circular' | 'blur-linear' | 'blur-off' | 'blur-on' | 'book' | 'bookmark' | 'bookmark-border' | 'border-all' | 'border-bottom' | 'border-clear' | 'border-color' | 'border-horizontal' | 'border-inner' | 'border-left' | 'border-outer' | 'border-right' | 'border-style' | 'border-top' | 'border-vertical' | 'branding-watermark' | 'brightness-1' | 'brightness-2' | 'brightness-3' | 'brightness-4' | 'brightness-5' | 'brightness-6' | 'brightness-7' | 'brightness-auto' | 'brightness-high' | 'brightness-low' | 'brightness-medium' | 'broken-image' | 'brush' | 'bubble-chart' | 'bug-report' | 'build' | 'burst-mode' | 'business' | 'business-center' | 'cached' | 'cake' | 'call' | 'call-end' | 'call-made' | 'call-merge' | 'call-missed' | 'call-missed-outgoing' | 'call-received' | 'call-split' | 'call-to-action' | 'camera' | 'camera-alt' | 'camera-enhance' | 'camera-front' | 'camera-rear' | 'camera-roll' | 'cancel' | 'card-giftcard' | 'card-membership' | 'card-travel' | 'casino' | 'cast' | 'cast-connected' | 'center-focus-strong' | 'center-focus-weak' | 'change-history' | 'chat' | 'chat-bubble' | 'chat-bubble-outline' | 'check' | 'check-box' | 'check-box-outline-blank' | 'check-circle' | 'chevron-left' | 'chevron-right' | 'child-care' | 'child-friendly' | 'chrome-reader-mode' | 'class' | 'clear' | 'clear-all' | 'close' | 'closed-caption' | 'cloud' | 'cloud-circle' | 'cloud-done' | 'cloud-download' | 'cloud-off' | 'cloud-queue' | 'cloud-upload' | 'code' | 'collections' | 'collections-bookmark' | 'color-lens' | 'colorize' | 'comment' | 'compare' | 'compare-arrows' | 'computer' | 'confirmation-number' | 'contact-mail' | 'contact-phone' | 'contacts' | 'content-copy' | 'content-cut' | 'content-paste' | 'control-point' | 'control-point-duplicate' | 'copyright' | 'create' | 'create-new-folder' | 'credit-card' | 'crop' | 'crop-16-9' | 'crop-3-2' | 'crop-5-4' | 'crop-7-5' | 'crop-din' | 'crop-free' | 'crop-landscape' | 'crop-original' | 'crop-portrait' | 'crop-rotate' | 'crop-square' | 'dashboard' | 'data-usage' | 'date-range' | 'dehaze' | 'delete' | 'delete-forever' | 'delete-sweep' | 'description' | 'desktop-mac' | 'desktop-windows' | 'details' | 'developer-board' | 'developer-mode' | 'device-hub' | 'devices' | 'devices-other' | 'dialer-sip' | 'dialpad' | 'directions' | 'directions-bike' | 'directions-boat' | 'directions-bus' | 'directions-car' | 'directions-railway' | 'directions-run' | 'directions-subway' | 'directions-transit' | 'directions-walk' | 'disc-full' | 'dns' | 'do-not-disturb' | 'do-not-disturb-alt' | 'do-not-disturb-off' | 'do-not-disturb-on' | 'dock' | 'domain' | 'done' | 'done-all' | 'donut-large' | 'donut-small' | 'drafts' | 'drag-handle' | 'drive-eta' | 'dvr' | 'edit' | 'edit-location' | 'eject' | 'email' | 'enhanced-encryption' | 'equalizer' | 'error' | 'error-outline' | 'euro-symbol' | 'ev-station' | 'event' | 'event-available' | 'event-busy' | 'event-note' | 'event-seat' | 'exit-to-app' | 'expand-less' | 'expand-more' | 'explicit' | 'explore' | 'exposure' | 'exposure-neg-1' | 'exposure-neg-2' | 'exposure-plus-1' | 'exposure-plus-2' | 'exposure-zero' | 'extension' | 'face' | 'fast-forward' | 'fast-rewind' | 'favorite' | 'favorite-border' | 'featured-play-list' | 'featured-video' | 'feedback' | 'fiber-dvr' | 'fiber-manual-record' | 'fiber-new' | 'fiber-pin' | 'fiber-smart-record' | 'file-download' | 'file-upload' | 'filter' | 'filter-1' | 'filter-2' | 'filter-3' | 'filter-4' | 'filter-5' | 'filter-6' | 'filter-7' | 'filter-8' | 'filter-9' | 'filter-9-plus' | 'filter-b-and-w' | 'filter-center-focus' | 'filter-drama' | 'filter-frames' | 'filter-hdr' | 'filter-list' | 'filter-none' | 'filter-tilt-shift' | 'filter-vintage' | 'find-in-page' | 'find-replace' | 'fingerprint' | 'first-page' | 'fitness-center' | 'flag' | 'flare' | 'flash-auto' | 'flash-off' | 'flash-on' | 'flight' | 'flight-land' | 'flight-takeoff' | 'flip' | 'flip-to-back' | 'flip-to-front' | 'folder' | 'folder-open' | 'folder-shared' | 'folder-special' | 'font-download' | 'format-align-center' | 'format-align-justify' | 'format-align-left' | 'format-align-right' | 'format-bold' | 'format-clear' | 'format-color-fill' | 'format-color-reset' | 'format-color-text' | 'format-indent-decrease' | 'format-indent-increase' | 'format-italic' | 'format-line-spacing' | 'format-list-bulleted' | 'format-list-numbered' | 'format-paint' | 'format-quote' | 'format-shapes' | 'format-size' | 'format-strikethrough' | 'format-textdirection-l-to-r' | 'format-textdirection-r-to-l' | 'format-underlined' | 'forum' | 'forward' | 'forward-10' | 'forward-30' | 'forward-5' | 'free-breakfast' | 'fullscreen' | 'fullscreen-exit' | 'functions' | 'g-translate' | 'gamepad' | 'games' | 'gavel' | 'gesture' | 'get-app' | 'gif' | 'golf-course' | 'gps-fixed' | 'gps-not-fixed' | 'gps-off' | 'grade' | 'gradient' | 'grain' | 'graphic-eq' | 'grid-off' | 'grid-on' | 'group' | 'group-add' | 'group-work' | 'hd' | 'hdr-off' | 'hdr-on' | 'hdr-strong' | 'hdr-weak' | 'headset' | 'headset-mic' | 'healing' | 'hearing' | 'help' | 'help-outline' | 'high-quality' | 'highlight' | 'highlight-off' | 'history' | 'home' | 'hot-tub' | 'hotel' | 'hourglass-empty' | 'hourglass-full' | 'http' | 'https' | 'image' | 'image-aspect-ratio' | 'import-contacts' | 'import-export' | 'important-devices' | 'inbox' | 'indeterminate-check-box' | 'info' | 'info-outline' | 'input' | 'insert-chart' | 'insert-comment' | 'insert-drive-file' | 'insert-emoticon' | 'insert-invitation' | 'insert-link' | 'insert-photo' | 'invert-colors' | 'invert-colors-off' | 'iso' | 'keyboard' | 'keyboard-arrow-down' | 'keyboard-arrow-left' | 'keyboard-arrow-right' | 'keyboard-arrow-up' | 'keyboard-backspace' | 'keyboard-capslock' | 'keyboard-hide' | 'keyboard-return' | 'keyboard-tab' | 'keyboard-voice' | 'kitchen' | 'label' | 'label-outline' | 'landscape' | 'language' | 'laptop' | 'laptop-chromebook' | 'laptop-mac' | 'laptop-windows' | 'last-page' | 'launch' | 'layers' | 'layers-clear' | 'leak-add' | 'leak-remove' | 'lens' | 'library-add' | 'library-books' | 'library-music' | 'lightbulb-outline' | 'line-style' | 'line-weight' | 'linear-scale' | 'link' | 'linked-camera' | 'list' | 'live-help' | 'live-tv' | 'local-activity' | 'local-airport' | 'local-atm' | 'local-bar' | 'local-cafe' | 'local-car-wash' | 'local-convenience-store' | 'local-dining' | 'local-drink' | 'local-florist' | 'local-gas-station' | 'local-grocery-store' | 'local-hospital' | 'local-hotel' | 'local-laundry-service' | 'local-library' | 'local-mall' | 'local-movies' | 'local-offer' | 'local-parking' | 'local-pharmacy' | 'local-phone' | 'local-pizza' | 'local-play' | 'local-post-office' | 'local-printshop' | 'local-see' | 'local-shipping' | 'local-taxi' | 'location-city' | 'location-disabled' | 'location-off' | 'location-on' | 'location-searching' | 'lock' | 'lock-open' | 'lock-outline' | 'looks' | 'looks-3' | 'looks-4' | 'looks-5' | 'looks-6' | 'looks-one' | 'looks-two' | 'loop' | 'loupe' | 'low-priority' | 'loyalty' | 'mail' | 'mail-outline' | 'map' | 'markunread' | 'markunread-mailbox' | 'memory' | 'menu' | 'merge-type' | 'message' | 'mic' | 'mic-none' | 'mic-off' | 'mms' | 'mode-comment' | 'mode-edit' | 'monetization-on' | 'money-off' | 'monochrome-photos' | 'mood' | 'mood-bad' | 'more' | 'more-horiz' | 'more-vert' | 'motorcycle' | 'mouse' | 'move-to-inbox' | 'movie' | 'movie-creation' | 'movie-filter' | 'multiline-chart' | 'music-note' | 'music-video' | 'my-location' | 'nature' | 'nature-people' | 'navigate-before' | 'navigate-next' | 'navigation' | 'near-me' | 'network-cell' | 'network-check' | 'network-locked' | 'network-wifi' | 'new-releases' | 'next-week' | 'nfc' | 'no-encryption' | 'no-sim' | 'not-interested' | 'note' | 'note-add' | 'notifications' | 'notifications-active' | 'notifications-none' | 'notifications-off' | 'notifications-paused' | 'offline-pin' | 'ondemand-video' | 'opacity' | 'open-in-browser' | 'open-in-new' | 'open-with' | 'pages' | 'pageview' | 'palette' | 'pan-tool' | 'panorama' | 'panorama-fish-eye' | 'panorama-horizontal' | 'panorama-vertical' | 'panorama-wide-angle' | 'party-mode' | 'pause' | 'pause-circle-filled' | 'pause-circle-outline' | 'payment' | 'people' | 'people-outline' | 'perm-camera-mic' | 'perm-contact-calendar' | 'perm-data-setting' | 'perm-device-information' | 'perm-identity' | 'perm-media' | 'perm-phone-msg' | 'perm-scan-wifi' | 'person' | 'person-add' | 'person-outline' | 'person-pin' | 'person-pin-circle' | 'personal-video' | 'pets' | 'phone' | 'phone-android' | 'phone-bluetooth-speaker' | 'phone-forwarded' | 'phone-in-talk' | 'phone-iphone' | 'phone-locked' | 'phone-missed' | 'phone-paused' | 'phonelink' | 'phonelink-erase' | 'phonelink-lock' | 'phonelink-off' | 'phonelink-ring' | 'phonelink-setup' | 'photo' | 'photo-album' | 'photo-camera' | 'photo-filter' | 'photo-library' | 'photo-size-select-actual' | 'photo-size-select-large' | 'photo-size-select-small' | 'picture-as-pdf' | 'picture-in-picture' | 'picture-in-picture-alt' | 'pie-chart' | 'pie-chart-outlined' | 'pin-drop' | 'place' | 'play-arrow' | 'play-circle-filled' | 'play-circle-outline' | 'play-for-work' | 'playlist-add' | 'playlist-add-check' | 'playlist-play' | 'plus-one' | 'poll' | 'polymer' | 'pool' | 'portable-wifi-off' | 'portrait' | 'power' | 'power-input' | 'power-settings-new' | 'pregnant-woman' | 'present-to-all' | 'print' | 'priority-high' | 'public' | 'publish' | 'query-builder' | 'question-answer' | 'queue' | 'queue-music' | 'queue-play-next' | 'radio' | 'radio-button-checked' | 'radio-button-unchecked' | 'rate-review' | 'receipt' | 'recent-actors' | 'record-voice-over' | 'redeem' | 'redo' | 'refresh' | 'remove' | 'remove-circle' | 'remove-circle-outline' | 'remove-from-queue' | 'remove-red-eye' | 'remove-shopping-cart' | 'reorder' | 'repeat' | 'repeat-one' | 'replay' | 'replay-10' | 'replay-30' | 'replay-5' | 'reply' | 'reply-all' | 'report' | 'report-problem' | 'restaurant' | 'restaurant-menu' | 'restore' | 'restore-page' | 'ring-volume' | 'room' | 'room-service' | 'rotate-90-degrees-ccw' | 'rotate-left' | 'rotate-right' | 'rounded-corner' | 'router' | 'rowing' | 'rss-feed' | 'rv-hookup' | 'satellite' | 'save' | 'scanner' | 'schedule' | 'school' | 'screen-lock-landscape' | 'screen-lock-portrait' | 'screen-lock-rotation' | 'screen-rotation' | 'screen-share' | 'sd-card' | 'sd-storage' | 'search' | 'security' | 'select-all' | 'send' | 'sentiment-dissatisfied' | 'sentiment-neutral' | 'sentiment-satisfied' | 'sentiment-very-dissatisfied' | 'sentiment-very-satisfied' | 'settings' | 'settings-applications' | 'settings-backup-restore' | 'settings-bluetooth' | 'settings-brightness' | 'settings-cell' | 'settings-ethernet' | 'settings-input-antenna' | 'settings-input-component' | 'settings-input-composite' | 'settings-input-hdmi' | 'settings-input-svideo' | 'settings-overscan' | 'settings-phone' | 'settings-power' | 'settings-remote' | 'settings-system-daydream' | 'settings-voice' | 'share' | 'shop' | 'shop-two' | 'shopping-basket' | 'shopping-cart' | 'short-text' | 'show-chart' | 'shuffle' | 'signal-cellular-4-bar' | 'signal-cellular-connected-no-internet-4-bar' | 'signal-cellular-no-sim' | 'signal-cellular-null' | 'signal-cellular-off' | 'signal-wifi-4-bar' | 'signal-wifi-4-bar-lock' | 'signal-wifi-off' | 'sim-card' | 'sim-card-alert' | 'skip-next' | 'skip-previous' | 'slideshow' | 'slow-motion-video' | 'smartphone' | 'smoke-free' | 'smoking-rooms' | 'sms' | 'sms-failed' | 'snooze' | 'sort' | 'sort-by-alpha' | 'spa' | 'space-bar' | 'speaker' | 'speaker-group' | 'speaker-notes' | 'speaker-notes-off' | 'speaker-phone' | 'spellcheck' | 'star' | 'star-border' | 'star-half' | 'stars' | 'stay-current-landscape' | 'stay-current-portrait' | 'stay-primary-landscape' | 'stay-primary-portrait' | 'stop' | 'stop-screen-share' | 'storage' | 'store' | 'store-mall-directory' | 'straighten' | 'streetview' | 'strikethrough-s' | 'style' | 'subdirectory-arrow-left' | 'subdirectory-arrow-right' | 'subject' | 'subscriptions' | 'subtitles' | 'subway' | 'supervisor-account' | 'surround-sound' | 'swap-calls' | 'swap-horiz' | 'swap-vert' | 'swap-vertical-circle' | 'switch-camera' | 'switch-video' | 'sync' | 'sync-disabled' | 'sync-problem' | 'system-update' | 'system-update-alt' | 'tab' | 'tab-unselected' | 'tablet' | 'tablet-android' | 'tablet-mac' | 'tag-faces' | 'tap-and-play' | 'terrain' | 'text-fields' | 'text-format' | 'textsms' | 'texture' | 'theaters' | 'thumb-down' | 'thumb-up' | 'thumbs-up-down' | 'time-to-leave' | 'timelapse' | 'timeline' | 'timer' | 'timer-10' | 'timer-3' | 'timer-off' | 'title' | 'toc' | 'today' | 'toll' | 'tonality' | 'touch-app' | 'toys' | 'track-changes' | 'traffic' | 'train' | 'tram' | 'transfer-within-a-station' | 'transform' | 'translate' | 'trending-down' | 'trending-flat' | 'trending-up' | 'tune' | 'turned-in' | 'turned-in-not' | 'tv' | 'unarchive' | 'undo' | 'unfold-less' | 'unfold-more' | 'update' | 'usb' | 'verified-user' | 'vertical-align-bottom' | 'vertical-align-center' | 'vertical-align-top' | 'vibration' | 'video-call' | 'video-label' | 'video-library' | 'videocam' | 'videocam-off' | 'videogame-asset' | 'view-agenda' | 'view-array' | 'view-carousel' | 'view-column' | 'view-comfy' | 'view-compact' | 'view-day' | 'view-headline' | 'view-list' | 'view-module' | 'view-quilt' | 'view-stream' | 'view-week' | 'vignette' | 'visibility' | 'visibility-off' | 'voice-chat' | 'voicemail' | 'volume-down' | 'volume-mute' | 'volume-off' | 'volume-up' | 'vpn-key' | 'vpn-lock' | 'wallpaper' | 'warning' | 'watch' | 'watch-later' | 'wb-auto' | 'wb-cloudy' | 'wb-incandescent' | 'wb-iridescent' | 'wb-sunny' | 'wc' | 'web' | 'web-asset' | 'weekend' | 'whatshot' | 'widgets' | 'wifi' | 'wifi-lock' | 'wifi-tethering' | 'work' | 'wrap-text' | 'youtube-searched-for' | 'zoom-in' | 'zoom-out' | 'zoom-out-map' 1665 | } 1666 | 1667 | interface OcticonsProps extends BaseIconProps { 1668 | name: 'alert' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrow-small-down' | 'arrow-small-left' | 'arrow-small-right' | 'arrow-small-up' | 'arrow-up' | 'beaker' | 'bell' | 'bold' | 'book' | 'bookmark' | 'briefcase' | 'broadcast' | 'browser' | 'bug' | 'calendar' | 'check' | 'checklist' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'circle-slash' | 'circuit-board' | 'clippy' | 'clock' | 'cloud-download' | 'cloud-upload' | 'code' | 'comment' | 'comment-discussion' | 'credit-card' | 'dash' | 'dashboard' | 'database' | 'desktop-download' | 'device-camera' | 'device-camera-video' | 'device-desktop' | 'device-mobile' | 'diff' | 'diff-added' | 'diff-ignored' | 'diff-modified' | 'diff-removed' | 'diff-renamed' | 'ellipsis' | 'eye' | 'file' | 'file-binary' | 'file-code' | 'file-directory' | 'file-media' | 'file-pdf' | 'file-submodule' | 'file-symlink-directory' | 'file-symlink-file' | 'file-text' | 'file-zip' | 'flame' | 'fold' | 'gear' | 'gift' | 'gist' | 'gist-secret' | 'git-branch' | 'git-commit' | 'git-compare' | 'git-merge' | 'git-pull-request' | 'globe' | 'grabber' | 'graph' | 'heart' | 'history' | 'home' | 'horizontal-rule' | 'hubot' | 'inbox' | 'info' | 'issue-closed' | 'issue-opened' | 'issue-reopened' | 'italic' | 'jersey' | 'kebab-horizontal' | 'kebab-vertical' | 'key' | 'keyboard' | 'law' | 'light-bulb' | 'link' | 'link-external' | 'list-ordered' | 'list-unordered' | 'location' | 'lock' | 'logo-gist' | 'logo-github' | 'mail' | 'mail-read' | 'mail-reply' | 'mark-github' | 'markdown' | 'megaphone' | 'mention' | 'milestone' | 'mirror' | 'mortar-board' | 'mute' | 'no-newline' | 'note' | 'octoface' | 'organization' | 'package' | 'paintcan' | 'pencil' | 'person' | 'pin' | 'plug' | 'plus' | 'plus-small' | 'primitive-dot' | 'primitive-square' | 'project' | 'pulse' | 'question' | 'quote' | 'radio-tower' | 'reply' | 'repo' | 'repo-clone' | 'repo-force-push' | 'repo-forked' | 'repo-pull' | 'repo-push' | 'rocket' | 'rss' | 'ruby' | 'screen-full' | 'screen-normal' | 'search' | 'server' | 'settings' | 'shield' | 'sign-in' | 'sign-out' | 'smiley' | 'squirrel' | 'star' | 'stop' | 'sync' | 'tag' | 'tasklist' | 'telescope' | 'terminal' | 'text-size' | 'three-bars' | 'thumbsdown' | 'thumbsup' | 'tools' | 'trashcan' | 'triangle-down' | 'triangle-left' | 'triangle-right' | 'triangle-up' | 'unfold' | 'unmute' | 'unverified' | 'verified' | 'versions' | 'watch' | 'x' | 'zap' 1669 | } 1670 | 1671 | interface SimpleLineIconsProps extends BaseIconProps { 1672 | name: 'user' | 'people' | 'user-female' | 'user-follow' | 'user-following' | 'user-unfollow' | 'login' | 'logout' | 'emotsmile' | 'phone' | 'call-end' | 'call-in' | 'call-out' | 'map' | 'location-pin' | 'direction' | 'directions' | 'compass' | 'layers' | 'menu' | 'list' | 'options-vertical' | 'options' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-up-circle' | 'arrow-left-circle' | 'arrow-right-circle' | 'arrow-down-circle' | 'check' | 'clock' | 'plus' | 'minus' | 'close' | 'event' | 'exclamation' | 'organization' | 'trophy' | 'screen-smartphone' | 'screen-desktop' | 'plane' | 'notebook' | 'mustache' | 'mouse' | 'magnet' | 'energy' | 'disc' | 'cursor' | 'cursor-move' | 'crop' | 'chemistry' | 'speedometer' | 'shield' | 'screen-tablet' | 'magic-wand' | 'hourglass' | 'graduation' | 'ghost' | 'game-controller' | 'fire' | 'eyeglass' | 'envelope-open' | 'envelope-letter' | 'bell' | 'badge' | 'anchor' | 'wallet' | 'vector' | 'speech' | 'puzzle' | 'printer' | 'present' | 'playlist' | 'pin' | 'picture' | 'handbag' | 'globe-alt' | 'globe' | 'folder-alt' | 'folder' | 'film' | 'feed' | 'drop' | 'drawer' | 'docs' | 'doc' | 'diamond' | 'cup' | 'calculator' | 'bubbles' | 'briefcase' | 'book-open' | 'basket-loaded' | 'basket' | 'bag' | 'action-undo' | 'action-redo' | 'wrench' | 'umbrella' | 'trash' | 'tag' | 'support' | 'frame' | 'size-fullscreen' | 'size-actual' | 'shuffle' | 'share-alt' | 'share' | 'rocket' | 'question' | 'pie-chart' | 'pencil' | 'note' | 'loop' | 'home' | 'grid' | 'graph' | 'microphone' | 'music-tone-alt' | 'music-tone' | 'earphones-alt' | 'earphones' | 'equalizer' | 'like' | 'dislike' | 'control-start' | 'control-rewind' | 'control-play' | 'control-pause' | 'control-forward' | 'control-end' | 'volume-1' | 'volume-2' | 'volume-off' | 'calendar' | 'bulb' | 'chart' | 'ban' | 'bubble' | 'camrecorder' | 'camera' | 'cloud-download' | 'cloud-upload' | 'envelope' | 'eye' | 'flag' | 'heart' | 'info' | 'key' | 'link' | 'lock' | 'lock-open' | 'magnifier' | 'magnifier-add' | 'magnifier-remove' | 'paper-clip' | 'paper-plane' | 'power' | 'refresh' | 'reload' | 'settings' | 'star' | 'symbol-female' | 'symbol-male' | 'target' | 'credit-card' | 'paypal' | 'social-tumblr' | 'social-twitter' | 'social-facebook' | 'social-instagram' | 'social-linkedin' | 'social-pinterest' | 'social-github' | 'social-google' | 'social-reddit' | 'social-skype' | 'social-dribbble' | 'social-behance' | 'social-foursqare' | 'social-soundcloud' | 'social-spotify' | 'social-stumbleupon' | 'social-youtube' | 'social-dropbox' | 'social-vkontakte' | 'social-steam' 1673 | } 1674 | 1675 | interface ZocialProps extends BaseIconProps { 1676 | name: 'acrobat' | 'amazon' | 'android' | 'angellist' | 'aol' | 'appnet' | 'appstore' | 'bitbucket' | 'bitcoin' | 'blogger' | 'buffer' | 'cal' | 'call' | 'cart' | 'chrome' | 'cloudapp' | 'creativecommons' | 'delicious' | 'digg' | 'disqus' | 'dribbble' | 'dropbox' | 'drupal' | 'dwolla' | 'email' | 'eventasaurus' | 'eventbrite' | 'eventful' | 'evernote' | 'facebook' | 'fivehundredpx' | 'flattr' | 'flickr' | 'forrst' | 'foursquare' | 'github' | 'gmail' | 'google' | 'googleplay' | 'googleplus' | 'gowalla' | 'grooveshark' | 'guest' | 'html5' | 'ie' | 'instagram' | 'instapaper' | 'intensedebate' | 'itunes' | 'klout' | 'lanyrd' | 'lastfm' | 'lego' | 'linkedin' | 'lkdto' | 'logmein' | 'macstore' | 'meetup' | 'myspace' | 'ninetyninedesigns' | 'openid' | 'opentable' | 'paypal' | 'persona' | 'pinboard' | 'pinterest' | 'plancast' | 'plurk' | 'pocket' | 'podcast' | 'posterous' | 'print' | 'quora' | 'reddit' | 'rss' | 'scribd' | 'skype' | 'smashing' | 'songkick' | 'soundcloud' | 'spotify' | 'stackoverflow' | 'statusnet' | 'steam' | 'stripe' | 'stumbleupon' | 'tumblr' | 'twitter' | 'viadeo' | 'vimeo' | 'vk' | 'weibo' | 'wikipedia' | 'windows' | 'wordpress' | 'xing' | 'yahoo' | 'ycombinator' | 'yelp' | 'youtube' 1677 | } 1678 | 1679 | class Entypo extends Component { } 1680 | class EvilIcons extends Component { } 1681 | class Feather extends Component { } 1682 | class FontAwesome extends Component { } 1683 | class Foundation extends Component { } 1684 | class Ionicons extends Component { } 1685 | class MaterialComunityIcons extends Component { } 1686 | class MaterialIcons extends Component { } 1687 | class Octicons extends Component { } 1688 | class SimpleLineIcons extends Component { } 1689 | class Zocial extends Component { } 1690 | } --------------------------------------------------------------------------------