├── .editorconfig ├── .gitignore ├── .travis.yml ├── CONTRIBUTING.md ├── Jenkinsfile ├── LICENSE ├── README.md ├── demo ├── app │ ├── App_Resources │ │ ├── Android │ │ │ ├── AndroidManifest.xml │ │ │ ├── app.gradle │ │ │ ├── drawable-hdpi │ │ │ │ ├── background.png │ │ │ │ ├── icon.png │ │ │ │ └── logo.png │ │ │ ├── drawable-ldpi │ │ │ │ ├── background.png │ │ │ │ ├── icon.png │ │ │ │ └── logo.png │ │ │ ├── drawable-mdpi │ │ │ │ ├── background.png │ │ │ │ ├── icon.png │ │ │ │ └── logo.png │ │ │ ├── drawable-nodpi │ │ │ │ └── splash_screen.xml │ │ │ ├── drawable-xhdpi │ │ │ │ ├── background.png │ │ │ │ ├── icon.png │ │ │ │ └── logo.png │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── background.png │ │ │ │ ├── icon.png │ │ │ │ └── logo.png │ │ │ ├── drawable-xxxhdpi │ │ │ │ ├── background.png │ │ │ │ ├── icon.png │ │ │ │ └── logo.png │ │ │ ├── values-v21 │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ └── iOS │ │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── icon-29.png │ │ │ │ ├── icon-29@2x.png │ │ │ │ ├── icon-29@3x.png │ │ │ │ ├── icon-40.png │ │ │ │ ├── icon-40@2x.png │ │ │ │ ├── icon-40@3x.png │ │ │ │ ├── icon-50.png │ │ │ │ ├── icon-50@2x.png │ │ │ │ ├── icon-57.png │ │ │ │ ├── icon-57@2x.png │ │ │ │ ├── icon-60@2x.png │ │ │ │ ├── icon-60@3x.png │ │ │ │ ├── icon-72.png │ │ │ │ ├── icon-72@2x.png │ │ │ │ ├── icon-76.png │ │ │ │ ├── icon-76@2x.png │ │ │ │ └── icon-83.5@2x.png │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.launchimage │ │ │ │ ├── Contents.json │ │ │ │ ├── Default-568h@2x.png │ │ │ │ ├── Default-667h@2x.png │ │ │ │ ├── Default-736h@3x.png │ │ │ │ ├── Default-Landscape.png │ │ │ │ ├── Default-Landscape@2x.png │ │ │ │ ├── Default-Landscape@3x.png │ │ │ │ ├── Default-Portrait.png │ │ │ │ ├── Default-Portrait@2x.png │ │ │ │ ├── Default.png │ │ │ │ └── Default@2x.png │ │ │ ├── LaunchScreen.AspectFill.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchScreen-AspectFill.png │ │ │ │ └── LaunchScreen-AspectFill@2x.png │ │ │ └── LaunchScreen.Center.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchScreen-Center.png │ │ │ │ └── LaunchScreen-Center@2x.png │ │ │ ├── Info.plist │ │ │ ├── LaunchScreen.storyboard │ │ │ └── build.xcconfig │ ├── app.component.html │ ├── app.component.ts │ ├── app.css │ ├── app.module.ts │ ├── app.routing.ts │ ├── fonts │ │ ├── FontAwesome.ttf │ │ ├── font-awesome.css │ │ ├── fontawesome-webfont.ttf │ │ ├── ionicons.css │ │ └── ionicons.ttf │ ├── item │ │ ├── item-detail.component.html │ │ ├── item-detail.component.ts │ │ ├── item.service.ts │ │ ├── item.ts │ │ ├── items.component.html │ │ └── items.component.ts │ ├── main.aot.ts │ ├── main.ts │ ├── package.json │ ├── vendor-platform.android.ts │ ├── vendor-platform.ios.ts │ └── vendor.ts ├── package.json ├── tsconfig.aot.json └── tsconfig.json └── src ├── .npmignore ├── CHANGELOG.md ├── index.d.ts ├── index.ts ├── nativescript-ngx-fonticon.ts ├── package.json ├── pipes └── fonticon.pipe.ts ├── services └── fonticon.service.ts └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = lf 9 | insert_final_newline = true 10 | 11 | # Matches multiple files with brace expansion notation 12 | # Set default charset 13 | [*.{js,css,scss,html}] 14 | charset = utf-8 15 | 16 | # 4 space indentation 17 | [*.{js,css,scss,html}] 18 | indent_style = space 19 | indent_size = 2 20 | 21 | # Matches the exact files either package.json or .travis.yml 22 | [{package.json,.travis.yml,bower.json}] 23 | indent_style = space 24 | indent_size = 2 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Users Environment Variables 23 | .lock-wscript 24 | 25 | # OS generated files # 26 | .DS_Store 27 | ehthumbs.db 28 | Icon? 29 | Thumbs.db 30 | 31 | # Node Files # 32 | /node_modules 33 | /src/app/node_modules 34 | /bower_components 35 | 36 | # Coverage # 37 | /coverage/ 38 | 39 | # Typing # 40 | /src/typings/tsd/ 41 | /typings/ 42 | /tsd_typings/ 43 | 44 | # Dist # 45 | /dist 46 | /public/__build__/ 47 | /src/*/__build__/ 48 | __build__/** 49 | .webpack.json 50 | 51 | # sample app 52 | demo/hooks/ 53 | demo/node_modules/ 54 | demo/platforms/ 55 | 56 | # Doc # 57 | /doc/ 58 | 59 | # IDE # 60 | .idea/ 61 | *.swp 62 | *.tgz 63 | *.js 64 | *.js.map 65 | *.metadata.json 66 | *.d.ts 67 | !index.d.ts 68 | !*.e2e.js 69 | !karma*.js 70 | !test-main.js 71 | src/node_modules 72 | package-lock.json 73 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: osx 2 | osx_image: xcode8 3 | sudo: false 4 | language: objective-c 5 | 6 | env: 7 | - NODE_VERSION="7" NPM_VERSION="5" TNS_VERSION="3.3.0" 8 | 9 | script: 10 | - export ANDROID_HOME=/usr/local/share/android-sdk 11 | - export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools 12 | - npm run build 13 | - cd src && npm i .. && tns build android && tns build ios 14 | 15 | before_install: 16 | - export ANDROID_HOME=/usr/local/share/android-sdk 17 | - export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools 18 | - wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash 19 | - source ~/.nvm/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION 20 | - PATH="`npm bin`:`npm bin -g`:$PATH" 21 | - brew update > /dev/null; 22 | - brew install Caskroom/cask/android-sdk 23 | - echo y | sdkmanager 'tools' 24 | - echo y | sdkmanager 'platform-tools' 25 | - echo y | sdkmanager 'build-tools;25.0.2' 26 | - echo y | sdkmanager 'platforms;android-25' 27 | - echo y | sdkmanager 'extras;android;m2repository' 28 | - echo y | sdkmanager 'extras;google;google_play_services' 29 | - echo y | sdkmanager 'extras;google;m2repository' 30 | - mkdir "$ANDROID_HOME/licenses" || true 31 | - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license" 32 | - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license" 33 | - npm install -g npm@$NPM_VERSION 34 | - npm install -g nativescript@$TNS_VERSION 35 | - npm install 36 | # CocoaPods 37 | - gem install cocoapods --pre --no-rdoc --no-ri --no-document --quiet 38 | - gem install xcpretty --no-rdoc --no-ri --no-document --quiet 39 | - pod --version 40 | - pod setup --silent 41 | - pod repo update --silent 42 | # Show environment invo 43 | - node --version 44 | - npm --version 45 | - xcpretty --version 46 | - xcodebuild -version 47 | - xcodebuild -showsdks 48 | - echo $ANDROID_HOME 49 | - npm run clean 50 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ### Submitting Pull Requests 2 | 3 | **Please follow these basic steps to simplify pull request reviews - if you don't you'll probably just be asked to anyway.** 4 | 5 | * Please rebase your branch against the current master 6 | * Please ensure that the test suite passes **and** that code is lint free before submitting a PR by running: 7 | * ```npm test``` 8 | * If you've added new functionality, **please** include tests which validate its behaviour 9 | * Make reference to possible [issues](https://github.com/NathanWalker/nativescript-ngx-fonticon-pipe/issues) on PR comment 10 | 11 | ### Submitting bug reports 12 | 13 | * Please detail the affected browser(s) and operating system(s) 14 | * Please be sure to state which version of node **and** npm you're using 15 | -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | properties properties: [ 2 | [$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '30', numToKeepStr: '10']], 3 | ] 4 | 5 | @Library('mare-build-library') 6 | def nodeJS = new de.mare.ci.jenkins.NodeJS() 7 | 8 | timeout(60) { 9 | node('nativescript') { 10 | def buildNumber = env.BUILD_NUMBER 11 | def branchName = env.BRANCH_NAME 12 | def workspace = env.WORKSPACE 13 | def buildUrl = env.BUILD_URL 14 | 15 | // PRINT ENVIRONMENT TO JOB 16 | echo "workspace directory is $workspace" 17 | echo "build URL is $buildUrl" 18 | echo "build Number is $buildNumber" 19 | echo "branch name is $branchName" 20 | echo "PATH is $env.PATH" 21 | 22 | try { 23 | stage('Checkout') { 24 | checkout scm 25 | } 26 | 27 | stage('Build') { 28 | sh "cd src && npm run build" 29 | } 30 | 31 | stage('Test') { 32 | sh "cd src && npm i .. && tns build android && tns build ios" 33 | } 34 | 35 | stage('Publish NPM snapshot') { 36 | nodeJS.publishSnapshot('.', buildNumber, branchName) 37 | } 38 | 39 | } catch (e) { 40 | mail subject: "${env.JOB_NAME} (${buildNumber}): Error on build", to: 'github@martinreinhardt-online.de', body: "Please go to ${buildUrl}." 41 | throw e 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Nathan Walker 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is now simply `nativescript-fonticon`. Same API, just removed `TNS` prefix naming, see here: https://github.com/nstudio/nativescript-ui-kit/blob/main/packages/nativescript-fonticon/README.md 2 |
3 | ## A simpler way to use font icons with NativeScript + Angular. 4 | 5 | [![Angular Style Guide](https://mgechev.github.io/angular2-style-guide/images/badge.svg)](https://github.com/mgechev/angular2-style-guide) 6 | [![MIT license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](http://opensource.org/licenses/MIT) 7 | [![Build Status](https://martinreinhardt-online.de/jenkins/buildStatus/icon?job=NPM/nativescript-ngx-fonticon/master)](https://martinreinhardt-online.de/jenkins/blue/organizations/jenkins/NPM%2Fnativescript-ngx-fonticon/activity) 8 | 9 | ### The Problem 10 | 11 | You can use icon fonts with NativeScript by combining a class with a unicode reference in the view: 12 | 13 | - css 14 | 15 | ```css 16 | .fa { 17 | font-family: FontAwesome; 18 | } 19 | ``` 20 | 21 | - view 22 | 23 | ```xml 24 | 25 | ``` 26 | 27 | This works but keeping up with unicodes is not fun. 28 | 29 | ### The Solution 30 | 31 | With this plugin, you can instead reference the `fonticon` by the specific classname: 32 | 33 | ```xml 34 | 35 | ``` 36 | 37 | ## Install 38 | 39 | ```bash 40 | npm install nativescript-ngx-fonticon --save 41 | ``` 42 | 43 | ### Usage 44 | 45 | [FontAwesome](https://fortawesome.github.io/Font-Awesome/) will be used in the following examples but you can use any custom font icon collection. 46 | 47 | - Place font icon `.ttf` file in `app/fonts`, for example: 48 | 49 | ``` 50 | app/fonts/fontawesome-webfont.ttf 51 | ``` 52 | 53 | - Create base class in `app.css` global file, for example: 54 | 55 | ```css 56 | .fa { 57 | font-family: FontAwesome, fontawesome-webfont; 58 | } 59 | ``` 60 | 61 | **NOTE**: Android uses the name of the file for the font-family (In this case, `fontawesome-webfont`.ttf. iOS uses the actual name of the font; for example, as found [here](https://github.com/FortAwesome/Font-Awesome/blob/master/css/font-awesome.css#L8). You could rename the font filename to `FontAwesome.ttf` to use just: `font-family: FontAwesome`. You can [learn more here](http://fluentreports.com/blog/?p=176). 62 | 63 | - Copy css to `app` somewhere, for example: 64 | 65 | ``` 66 | app/assets/font-awesome.css 67 | ``` 68 | 69 | Then modify the css file to isolate just the icon fonts needed. [Watch this video to better understand](https://www.youtube.com/watch?v=qb2sk0XXQDw). 70 | 71 | - Import the `TNSFontIconModule` passing a configuration with the location to the `.css` file to `forRoot`: 72 | 73 | Use the classname prefix as the `key` and the css filename as the value relative to directory where your `app.module.ts` is, then `require` the css file. 74 | 75 | ### Example configurations: 76 | 77 | ```typescript 78 | /* NS out of the box webpack configuration or NS6+ */ 79 | // Assuming you placed your css file in `src/app/assets/css/fa-5.css`: 80 | TNSFontIconModule.forRoot({ fa: require("~/app/assets/css/fa-5.css") }); 81 | 82 | /* Non-webpack */ 83 | // Note that the location of the file relative to your app.module 84 | // is what determines the path that require takes. 85 | // This assumes that assets is a sibling folder of `app.module.ts`. 86 | TNSFontIconModule.forRoot({ fa: require("./assets/css/fa-5.css") }); 87 | ``` 88 | 89 | ```typescript 90 | import { TNSFontIconModule } from 'nativescript-ngx-fonticon'; 91 | 92 | @NgModule({ 93 | declarations: [ 94 | DemoComponent, 95 | ], 96 | bootstrap: [ 97 | DemoComponent, 98 | ], 99 | imports: [ 100 | NativeScriptModule, 101 | TNSFontIconModule.forRoot({ 102 | 'fa': require('~/app/assets/css/fa-5.css'), 103 | 'ion': require('~/app/assets/css/ionicons.css') 104 | /* 105 | For non webpack, assuming the assets folder is a sibling of app.module.ts: 106 | 'fa': require('./assets/css/fa-5.css') 107 | */ 108 | }) 109 | ] 110 | }) 111 | ``` 112 | 113 | - _Optional_ Configure the service with DEBUGGING on 114 | 115 | When working with a new font collection, you may need to see the mapping the service provides. Passing `true` as seen below will cause the mapping to be output in the console to determine if your font collection is being setup correctly. 116 | 117 | ```typescript 118 | import { TNSFontIconModule, TNSFontIconService } from 'nativescript-ngx-fonticon'; 119 | // turn debug on 120 | TNSFontIconService.debug = true; 121 | 122 | @NgModule({ 123 | declarations: [ 124 | DemoComponent, 125 | ], 126 | bootstrap: [ 127 | DemoComponent, 128 | ], 129 | imports: [ 130 | NativeScriptModule, 131 | TNSFontIconModule.forRoot({ 132 | 'fa': require('~/app/assets/css/fa-5.css') 133 | /* 134 | For non webpack, assuming the assets folder is a sibling of app.module.ts: 135 | 'fa': require('./assets/css/fa-5.css') 136 | */ 137 | }) 138 | ] 139 | }) 140 | ``` 141 | 142 | - Setup your component 143 | 144 | ```typescript 145 | import { Component } from '@angular/core'; 146 | 147 | @Component({ 148 | selector: 'demo', 149 | template: ' ' 150 | }) 151 | export class DemoComponent { 152 | 153 | } 154 | ``` 155 | 156 | | Demo FontAwesome (iOS) | Demo Ionicons (iOS) | 157 | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | 158 | | ![Sample1](https://cdn.filestackcontent.com/m6JyRO1fTsCHPohoZi5I?v=0) | ![Sample2](https://cdn.filestackcontent.com/jje2pehCRCeLDC8QHBmp?v=0) | 159 | 160 | | Demo FontAwesome (Android) | Demo Ionicons (Android) | 161 | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | 162 | | ![Sample3](https://cdn.filestackcontent.com/lNCptx2aQisOa6p27iqb?v=0) | ![Sample4](https://cdn.filestackcontent.com/2ajSF92uQDusI37fEvQA?v=0) | 163 | 164 | ## How about just NativeScript without Angular? 165 | 166 | The standard NativeScript converter is here: 167 | 168 | - [nativescript-fonticon](https://github.com/NathanWalker/nativescript-fonticon) 169 | 170 | ## Why the TNS prefixed name? 171 | 172 | `TNS` stands for **T**elerik **N**ative**S**cript 173 | 174 | iOS uses classes prefixed with `NS` (stemming from the [NeXTSTEP](https://en.wikipedia.org/wiki/NeXTSTEP) days of old): 175 | https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/ 176 | 177 | To avoid confusion with iOS native classes, `TNS` is used instead. 178 | 179 | ## Credits 180 | 181 | Idea came from [Bradley Gore](https://github.com/bradleygore)'s [post here](http://www.blog.bradleygore.com/2016/03/28/font-icons-in-nativescript/). 182 | 183 | ## Contributors 184 | 185 | - [NathanaelA](https://github.com/NathanaelA) 186 | 187 | # License 188 | 189 | [MIT](/LICENSE) 190 | -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 27 | 28 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/app.gradle: -------------------------------------------------------------------------------- 1 | // Add your native dependencies here: 2 | 3 | // Uncomment to add recyclerview-v7 dependency 4 | //dependencies { 5 | // compile 'com.android.support:recyclerview-v7:+' 6 | //} 7 | 8 | android { 9 | defaultConfig { 10 | generatedDensities = [] 11 | applicationId = "org.nativescript.sampleApp" 12 | } 13 | aaptOptions { 14 | additionalParameters "--no-version-vectors" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-hdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-hdpi/background.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-hdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-hdpi/logo.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-ldpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-ldpi/background.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-ldpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-ldpi/icon.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-ldpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-ldpi/logo.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-mdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-mdpi/background.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-mdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-mdpi/logo.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-nodpi/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xhdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xhdpi/background.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xhdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xhdpi/logo.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xxhdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xxhdpi/background.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xxhdpi/icon.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xxhdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xxhdpi/logo.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xxxhdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xxxhdpi/background.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xxxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xxxhdpi/icon.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/drawable-xxxhdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/Android/drawable-xxxhdpi/logo.png -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/values-v21/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3d5afe 4 | -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 14 | 15 | 16 | 19 | 20 | 23 | -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #F5F5F5 4 | #757575 5 | #33B5E5 6 | #272734 7 | -------------------------------------------------------------------------------- /demo/app/App_Resources/Android/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 18 | 19 | 21 | 22 | 23 | 31 | 32 | 34 | 35 | 36 | 42 | 43 | 45 | 46 | -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "29x29", 5 | "idiom" : "iphone", 6 | "filename" : "icon-29.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "29x29", 11 | "idiom" : "iphone", 12 | "filename" : "icon-29@2x.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "icon-29@3x.png", 19 | "scale" : "3x" 20 | }, 21 | { 22 | "size" : "40x40", 23 | "idiom" : "iphone", 24 | "filename" : "icon-40@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "40x40", 29 | "idiom" : "iphone", 30 | "filename" : "icon-40@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "57x57", 35 | "idiom" : "iphone", 36 | "filename" : "icon-57.png", 37 | "scale" : "1x" 38 | }, 39 | { 40 | "size" : "57x57", 41 | "idiom" : "iphone", 42 | "filename" : "icon-57@2x.png", 43 | "scale" : "2x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "icon-60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "icon-60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "29x29", 59 | "idiom" : "ipad", 60 | "filename" : "icon-29.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "29x29", 65 | "idiom" : "ipad", 66 | "filename" : "icon-29@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "40x40", 71 | "idiom" : "ipad", 72 | "filename" : "icon-40.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "40x40", 77 | "idiom" : "ipad", 78 | "filename" : "icon-40@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "50x50", 83 | "idiom" : "ipad", 84 | "filename" : "icon-50.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "50x50", 89 | "idiom" : "ipad", 90 | "filename" : "icon-50@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "72x72", 95 | "idiom" : "ipad", 96 | "filename" : "icon-72.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "72x72", 101 | "idiom" : "ipad", 102 | "filename" : "icon-72@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "76x76", 107 | "idiom" : "ipad", 108 | "filename" : "icon-76.png", 109 | "scale" : "1x" 110 | }, 111 | { 112 | "size" : "76x76", 113 | "idiom" : "ipad", 114 | "filename" : "icon-76@2x.png", 115 | "scale" : "2x" 116 | }, 117 | { 118 | "size" : "83.5x83.5", 119 | "idiom" : "ipad", 120 | "filename" : "icon-83.5@2x.png", 121 | "scale" : "2x" 122 | } 123 | ], 124 | "info" : { 125 | "version" : 1, 126 | "author" : "xcode" 127 | } 128 | } -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "extent" : "full-screen", 5 | "idiom" : "iphone", 6 | "subtype" : "736h", 7 | "filename" : "Default-736h@3x.png", 8 | "minimum-system-version" : "8.0", 9 | "orientation" : "portrait", 10 | "scale" : "3x" 11 | }, 12 | { 13 | "extent" : "full-screen", 14 | "idiom" : "iphone", 15 | "subtype" : "736h", 16 | "filename" : "Default-Landscape@3x.png", 17 | "minimum-system-version" : "8.0", 18 | "orientation" : "landscape", 19 | "scale" : "3x" 20 | }, 21 | { 22 | "extent" : "full-screen", 23 | "idiom" : "iphone", 24 | "subtype" : "667h", 25 | "filename" : "Default-667h@2x.png", 26 | "minimum-system-version" : "8.0", 27 | "orientation" : "portrait", 28 | "scale" : "2x" 29 | }, 30 | { 31 | "orientation" : "portrait", 32 | "idiom" : "iphone", 33 | "filename" : "Default@2x.png", 34 | "extent" : "full-screen", 35 | "minimum-system-version" : "7.0", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "extent" : "full-screen", 40 | "idiom" : "iphone", 41 | "subtype" : "retina4", 42 | "filename" : "Default-568h@2x.png", 43 | "minimum-system-version" : "7.0", 44 | "orientation" : "portrait", 45 | "scale" : "2x" 46 | }, 47 | { 48 | "orientation" : "portrait", 49 | "idiom" : "ipad", 50 | "filename" : "Default-Portrait.png", 51 | "extent" : "full-screen", 52 | "minimum-system-version" : "7.0", 53 | "scale" : "1x" 54 | }, 55 | { 56 | "orientation" : "landscape", 57 | "idiom" : "ipad", 58 | "filename" : "Default-Landscape.png", 59 | "extent" : "full-screen", 60 | "minimum-system-version" : "7.0", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "orientation" : "portrait", 65 | "idiom" : "ipad", 66 | "filename" : "Default-Portrait@2x.png", 67 | "extent" : "full-screen", 68 | "minimum-system-version" : "7.0", 69 | "scale" : "2x" 70 | }, 71 | { 72 | "orientation" : "landscape", 73 | "idiom" : "ipad", 74 | "filename" : "Default-Landscape@2x.png", 75 | "extent" : "full-screen", 76 | "minimum-system-version" : "7.0", 77 | "scale" : "2x" 78 | }, 79 | { 80 | "orientation" : "portrait", 81 | "idiom" : "iphone", 82 | "filename" : "Default.png", 83 | "extent" : "full-screen", 84 | "scale" : "1x" 85 | }, 86 | { 87 | "orientation" : "portrait", 88 | "idiom" : "iphone", 89 | "filename" : "Default@2x.png", 90 | "extent" : "full-screen", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "orientation" : "portrait", 95 | "idiom" : "iphone", 96 | "filename" : "Default-568h@2x.png", 97 | "extent" : "full-screen", 98 | "subtype" : "retina4", 99 | "scale" : "2x" 100 | }, 101 | { 102 | "orientation" : "portrait", 103 | "idiom" : "ipad", 104 | "extent" : "to-status-bar", 105 | "scale" : "1x" 106 | }, 107 | { 108 | "orientation" : "portrait", 109 | "idiom" : "ipad", 110 | "filename" : "Default-Portrait.png", 111 | "extent" : "full-screen", 112 | "scale" : "1x" 113 | }, 114 | { 115 | "orientation" : "landscape", 116 | "idiom" : "ipad", 117 | "extent" : "to-status-bar", 118 | "scale" : "1x" 119 | }, 120 | { 121 | "orientation" : "landscape", 122 | "idiom" : "ipad", 123 | "filename" : "Default-Landscape.png", 124 | "extent" : "full-screen", 125 | "scale" : "1x" 126 | }, 127 | { 128 | "orientation" : "portrait", 129 | "idiom" : "ipad", 130 | "extent" : "to-status-bar", 131 | "scale" : "2x" 132 | }, 133 | { 134 | "orientation" : "portrait", 135 | "idiom" : "ipad", 136 | "filename" : "Default-Portrait@2x.png", 137 | "extent" : "full-screen", 138 | "scale" : "2x" 139 | }, 140 | { 141 | "orientation" : "landscape", 142 | "idiom" : "ipad", 143 | "extent" : "to-status-bar", 144 | "scale" : "2x" 145 | }, 146 | { 147 | "orientation" : "landscape", 148 | "idiom" : "ipad", 149 | "filename" : "Default-Landscape@2x.png", 150 | "extent" : "full-screen", 151 | "scale" : "2x" 152 | } 153 | ], 154 | "info" : { 155 | "version" : 1, 156 | "author" : "xcode" 157 | } 158 | } -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchScreen-AspectFill.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchScreen-AspectFill@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchScreen-Center.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchScreen-Center@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiresFullScreen 28 | 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /demo/app/App_Resources/iOS/build.xcconfig: -------------------------------------------------------------------------------- 1 | // You can add custom settings here 2 | // for example you can uncomment the following line to force distribution code signing 3 | // CODE_SIGN_IDENTITY = iPhone Distribution 4 | // To build for device with XCode 8 you need to specify your development team. More info: https://developer.apple.com/library/prerelease/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html 5 | // DEVELOPMENT_TEAM = YOUR_TEAM_ID; 6 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 7 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 8 | -------------------------------------------------------------------------------- /demo/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /demo/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from "@angular/core"; 2 | 3 | @Component({ 4 | selector: "ns-app", 5 | templateUrl: "app.component.html", 6 | }) 7 | export class AppComponent { 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /demo/app/app.css: -------------------------------------------------------------------------------- 1 | /* 2 | In NativeScript, the app.css file is where you place CSS rules that 3 | you would like to apply to your entire application. Check out 4 | http://docs.nativescript.org/ui/styling for a full list of the CSS 5 | selectors and properties you can use to style UI components. 6 | 7 | /* 8 | In many cases you may want to use the NativeScript core theme instead 9 | of writing your own CSS rules. For a full list of class names in the theme 10 | refer to http://docs.nativescript.org/ui/theme. 11 | */ 12 | @import 'nativescript-theme-core/css/core.light.css'; 13 | 14 | Label { 15 | padding:10; 16 | horizontal-align: center; 17 | } 18 | 19 | .fa { 20 | font-family: FontAwesome, fontawesome-webfont; 21 | font-size:60; 22 | } 23 | 24 | .ion { 25 | font-family: Ionicons, ionicons; 26 | font-size:60; 27 | } 28 | 29 | GridLayout { 30 | padding-bottom: 50; 31 | } 32 | -------------------------------------------------------------------------------- /demo/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core"; 2 | import { NativeScriptModule } from "nativescript-angular/nativescript.module"; 3 | import { TNSFontIconModule } from 'nativescript-ngx-fonticon'; 4 | 5 | import { AppRoutingModule } from "./app.routing"; 6 | import { AppComponent } from "./app.component"; 7 | import { ItemService } from "./item/item.service"; 8 | import { ItemsComponent } from "./item/items.component"; 9 | import { ItemDetailComponent } from "./item/item-detail.component"; 10 | 11 | @NgModule({ 12 | bootstrap: [ 13 | AppComponent 14 | ], 15 | imports: [ 16 | NativeScriptModule, 17 | AppRoutingModule, 18 | TNSFontIconModule.forRoot({ 19 | 'fa': './fonts/font-awesome.css', 20 | 'ion': './fonts/ionicons.css' 21 | }) 22 | ], 23 | declarations: [ 24 | AppComponent, 25 | ItemsComponent, 26 | ItemDetailComponent 27 | ], 28 | providers: [ 29 | ItemService 30 | ], 31 | schemas: [ 32 | NO_ERRORS_SCHEMA 33 | ] 34 | }) 35 | export class AppModule { } 36 | -------------------------------------------------------------------------------- /demo/app/app.routing.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { NativeScriptRouterModule } from "nativescript-angular/router"; 3 | import { Routes } from "@angular/router"; 4 | 5 | import { ItemsComponent } from "./item/items.component"; 6 | import { ItemDetailComponent } from "./item/item-detail.component"; 7 | 8 | const routes: Routes = [ 9 | { path: "", redirectTo: "/items", pathMatch: "full" }, 10 | { path: "items", component: ItemsComponent }, 11 | { path: "item/:id", component: ItemDetailComponent }, 12 | ]; 13 | 14 | @NgModule({ 15 | imports: [NativeScriptRouterModule.forRoot(routes)], 16 | exports: [NativeScriptRouterModule] 17 | }) 18 | export class AppRoutingModule { } -------------------------------------------------------------------------------- /demo/app/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /demo/app/fonts/font-awesome.css: -------------------------------------------------------------------------------- 1 | .fa-glass:before { 2 | content: "\f000"; 3 | } 4 | .fa-music:before { 5 | content: "\f001"; 6 | } 7 | .fa-search:before { 8 | content: "\f002"; 9 | } 10 | .fa-envelope-o:before { 11 | content: "\f003"; 12 | } 13 | .fa-heart:before { 14 | content: "\f004"; 15 | } 16 | .fa-star:before { 17 | content: "\f005"; 18 | } 19 | .fa-star-o:before { 20 | content: "\f006"; 21 | } 22 | .fa-user:before { 23 | content: "\f007"; 24 | } 25 | .fa-film:before { 26 | content: "\f008"; 27 | } 28 | .fa-th-large:before { 29 | content: "\f009"; 30 | } 31 | .fa-th:before { 32 | content: "\f00a"; 33 | } 34 | .fa-th-list:before { 35 | content: "\f00b"; 36 | } 37 | .fa-check:before { 38 | content: "\f00c"; 39 | } 40 | .fa-remove:before, 41 | .fa-close:before, 42 | .fa-times:before { 43 | content: "\f00d"; 44 | } 45 | .fa-search-plus:before { 46 | content: "\f00e"; 47 | } 48 | .fa-search-minus:before { 49 | content: "\f010"; 50 | } 51 | .fa-power-off:before { 52 | content: "\f011"; 53 | } 54 | .fa-signal:before { 55 | content: "\f012"; 56 | } 57 | .fa-gear:before, 58 | .fa-cog:before { 59 | content: "\f013"; 60 | } 61 | .fa-trash-o:before { 62 | content: "\f014"; 63 | } 64 | .fa-home:before { 65 | content: "\f015"; 66 | } 67 | .fa-file-o:before { 68 | content: "\f016"; 69 | } 70 | .fa-clock-o:before { 71 | content: "\f017"; 72 | } 73 | .fa-road:before { 74 | content: "\f018"; 75 | } 76 | .fa-download:before { 77 | content: "\f019"; 78 | } 79 | .fa-arrow-circle-o-down:before { 80 | content: "\f01a"; 81 | } 82 | .fa-arrow-circle-o-up:before { 83 | content: "\f01b"; 84 | } 85 | .fa-inbox:before { 86 | content: "\f01c"; 87 | } 88 | .fa-play-circle-o:before { 89 | content: "\f01d"; 90 | } 91 | .fa-rotate-right:before, 92 | .fa-repeat:before { 93 | content: "\f01e"; 94 | } 95 | .fa-refresh:before { 96 | content: "\f021"; 97 | } 98 | .fa-list-alt:before { 99 | content: "\f022"; 100 | } 101 | .fa-lock:before { 102 | content: "\f023"; 103 | } 104 | .fa-flag:before { 105 | content: "\f024"; 106 | } 107 | .fa-headphones:before { 108 | content: "\f025"; 109 | } 110 | .fa-volume-off:before { 111 | content: "\f026"; 112 | } 113 | .fa-volume-down:before { 114 | content: "\f027"; 115 | } 116 | .fa-volume-up:before { 117 | content: "\f028"; 118 | } 119 | .fa-qrcode:before { 120 | content: "\f029"; 121 | } 122 | .fa-barcode:before { 123 | content: "\f02a"; 124 | } 125 | .fa-tag:before { 126 | content: "\f02b"; 127 | } 128 | .fa-tags:before { 129 | content: "\f02c"; 130 | } 131 | .fa-book:before { 132 | content: "\f02d"; 133 | } 134 | .fa-bookmark:before { 135 | content: "\f02e"; 136 | } 137 | .fa-print:before { 138 | content: "\f02f"; 139 | } 140 | .fa-camera:before { 141 | content: "\f030"; 142 | } 143 | .fa-font:before { 144 | content: "\f031"; 145 | } 146 | .fa-bold:before { 147 | content: "\f032"; 148 | } 149 | .fa-italic:before { 150 | content: "\f033"; 151 | } 152 | .fa-text-height:before { 153 | content: "\f034"; 154 | } 155 | .fa-text-width:before { 156 | content: "\f035"; 157 | } 158 | .fa-align-left:before { 159 | content: "\f036"; 160 | } 161 | .fa-align-center:before { 162 | content: "\f037"; 163 | } 164 | .fa-align-right:before { 165 | content: "\f038"; 166 | } 167 | .fa-align-justify:before { 168 | content: "\f039"; 169 | } 170 | .fa-list:before { 171 | content: "\f03a"; 172 | } 173 | .fa-dedent:before, 174 | .fa-outdent:before { 175 | content: "\f03b"; 176 | } 177 | .fa-indent:before { 178 | content: "\f03c"; 179 | } 180 | .fa-video-camera:before { 181 | content: "\f03d"; 182 | } 183 | .fa-photo:before, 184 | .fa-image:before, 185 | .fa-picture-o:before { 186 | content: "\f03e"; 187 | } 188 | .fa-pencil:before { 189 | content: "\f040"; 190 | } 191 | .fa-map-marker:before { 192 | content: "\f041"; 193 | } 194 | .fa-adjust:before { 195 | content: "\f042"; 196 | } 197 | .fa-tint:before { 198 | content: "\f043"; 199 | } 200 | .fa-edit:before, 201 | .fa-pencil-square-o:before { 202 | content: "\f044"; 203 | } 204 | .fa-share-square-o:before { 205 | content: "\f045"; 206 | } 207 | .fa-check-square-o:before { 208 | content: "\f046"; 209 | } 210 | .fa-arrows:before { 211 | content: "\f047"; 212 | } 213 | .fa-step-backward:before { 214 | content: "\f048"; 215 | } 216 | .fa-fast-backward:before { 217 | content: "\f049"; 218 | } 219 | .fa-backward:before { 220 | content: "\f04a"; 221 | } 222 | .fa-play:before { 223 | content: "\f04b"; 224 | } 225 | .fa-pause:before { 226 | content: "\f04c"; 227 | } 228 | .fa-stop:before { 229 | content: "\f04d"; 230 | } 231 | .fa-forward:before { 232 | content: "\f04e"; 233 | } 234 | .fa-fast-forward:before { 235 | content: "\f050"; 236 | } 237 | .fa-step-forward:before { 238 | content: "\f051"; 239 | } 240 | .fa-eject:before { 241 | content: "\f052"; 242 | } 243 | .fa-chevron-left:before { 244 | content: "\f053"; 245 | } 246 | .fa-chevron-right:before { 247 | content: "\f054"; 248 | } 249 | .fa-plus-circle:before { 250 | content: "\f055"; 251 | } 252 | .fa-minus-circle:before { 253 | content: "\f056"; 254 | } 255 | .fa-times-circle:before { 256 | content: "\f057"; 257 | } 258 | .fa-check-circle:before { 259 | content: "\f058"; 260 | } 261 | .fa-question-circle:before { 262 | content: "\f059"; 263 | } 264 | .fa-info-circle:before { 265 | content: "\f05a"; 266 | } 267 | .fa-crosshairs:before { 268 | content: "\f05b"; 269 | } 270 | .fa-times-circle-o:before { 271 | content: "\f05c"; 272 | } 273 | .fa-check-circle-o:before { 274 | content: "\f05d"; 275 | } 276 | .fa-ban:before { 277 | content: "\f05e"; 278 | } 279 | .fa-arrow-left:before { 280 | content: "\f060"; 281 | } 282 | .fa-arrow-right:before { 283 | content: "\f061"; 284 | } 285 | .fa-arrow-up:before { 286 | content: "\f062"; 287 | } 288 | .fa-arrow-down:before { 289 | content: "\f063"; 290 | } 291 | .fa-mail-forward:before, 292 | .fa-share:before { 293 | content: "\f064"; 294 | } 295 | .fa-expand:before { 296 | content: "\f065"; 297 | } 298 | .fa-compress:before { 299 | content: "\f066"; 300 | } 301 | .fa-plus:before { 302 | content: "\f067"; 303 | } 304 | .fa-minus:before { 305 | content: "\f068"; 306 | } 307 | .fa-asterisk:before { 308 | content: "\f069"; 309 | } 310 | .fa-exclamation-circle:before { 311 | content: "\f06a"; 312 | } 313 | .fa-gift:before { 314 | content: "\f06b"; 315 | } 316 | .fa-leaf:before { 317 | content: "\f06c"; 318 | } 319 | .fa-fire:before { 320 | content: "\f06d"; 321 | } 322 | .fa-eye:before { 323 | content: "\f06e"; 324 | } 325 | .fa-eye-slash:before { 326 | content: "\f070"; 327 | } 328 | .fa-warning:before, 329 | .fa-exclamation-triangle:before { 330 | content: "\f071"; 331 | } 332 | .fa-plane:before { 333 | content: "\f072"; 334 | } 335 | .fa-calendar:before { 336 | content: "\f073"; 337 | } 338 | .fa-random:before { 339 | content: "\f074"; 340 | } 341 | .fa-comment:before { 342 | content: "\f075"; 343 | } 344 | .fa-magnet:before { 345 | content: "\f076"; 346 | } 347 | .fa-chevron-up:before { 348 | content: "\f077"; 349 | } 350 | .fa-chevron-down:before { 351 | content: "\f078"; 352 | } 353 | .fa-retweet:before { 354 | content: "\f079"; 355 | } 356 | .fa-shopping-cart:before { 357 | content: "\f07a"; 358 | } 359 | .fa-folder:before { 360 | content: "\f07b"; 361 | } 362 | .fa-folder-open:before { 363 | content: "\f07c"; 364 | } 365 | .fa-arrows-v:before { 366 | content: "\f07d"; 367 | } 368 | .fa-arrows-h:before { 369 | content: "\f07e"; 370 | } 371 | .fa-bar-chart-o:before, 372 | .fa-bar-chart:before { 373 | content: "\f080"; 374 | } 375 | .fa-twitter-square:before { 376 | content: "\f081"; 377 | } 378 | .fa-facebook-square:before { 379 | content: "\f082"; 380 | } 381 | .fa-camera-retro:before { 382 | content: "\f083"; 383 | } 384 | .fa-key:before { 385 | content: "\f084"; 386 | } 387 | .fa-gears:before, 388 | .fa-cogs:before { 389 | content: "\f085"; 390 | } 391 | .fa-comments:before { 392 | content: "\f086"; 393 | } 394 | .fa-thumbs-o-up:before { 395 | content: "\f087"; 396 | } 397 | .fa-thumbs-o-down:before { 398 | content: "\f088"; 399 | } 400 | .fa-star-half:before { 401 | content: "\f089"; 402 | } 403 | .fa-heart-o:before { 404 | content: "\f08a"; 405 | } 406 | .fa-sign-out:before { 407 | content: "\f08b"; 408 | } 409 | .fa-linkedin-square:before { 410 | content: "\f08c"; 411 | } 412 | .fa-thumb-tack:before { 413 | content: "\f08d"; 414 | } 415 | .fa-external-link:before { 416 | content: "\f08e"; 417 | } 418 | .fa-sign-in:before { 419 | content: "\f090"; 420 | } 421 | .fa-trophy:before { 422 | content: "\f091"; 423 | } 424 | .fa-github-square:before { 425 | content: "\f092"; 426 | } 427 | .fa-upload:before { 428 | content: "\f093"; 429 | } 430 | .fa-lemon-o:before { 431 | content: "\f094"; 432 | } 433 | .fa-phone:before { 434 | content: "\f095"; 435 | } 436 | .fa-square-o:before { 437 | content: "\f096"; 438 | } 439 | .fa-bookmark-o:before { 440 | content: "\f097"; 441 | } 442 | .fa-phone-square:before { 443 | content: "\f098"; 444 | } 445 | .fa-twitter:before { 446 | content: "\f099"; 447 | } 448 | .fa-facebook-f:before, 449 | .fa-facebook:before { 450 | content: "\f09a"; 451 | } 452 | .fa-github:before { 453 | content: "\f09b"; 454 | } 455 | .fa-unlock:before { 456 | content: "\f09c"; 457 | } 458 | .fa-credit-card:before { 459 | content: "\f09d"; 460 | } 461 | .fa-feed:before, 462 | .fa-rss:before { 463 | content: "\f09e"; 464 | } 465 | .fa-hdd-o:before { 466 | content: "\f0a0"; 467 | } 468 | .fa-bullhorn:before { 469 | content: "\f0a1"; 470 | } 471 | .fa-bell:before { 472 | content: "\f0f3"; 473 | } 474 | .fa-certificate:before { 475 | content: "\f0a3"; 476 | } 477 | .fa-hand-o-right:before { 478 | content: "\f0a4"; 479 | } 480 | .fa-hand-o-left:before { 481 | content: "\f0a5"; 482 | } 483 | .fa-hand-o-up:before { 484 | content: "\f0a6"; 485 | } 486 | .fa-hand-o-down:before { 487 | content: "\f0a7"; 488 | } 489 | .fa-arrow-circle-left:before { 490 | content: "\f0a8"; 491 | } 492 | .fa-arrow-circle-right:before { 493 | content: "\f0a9"; 494 | } 495 | .fa-arrow-circle-up:before { 496 | content: "\f0aa"; 497 | } 498 | .fa-arrow-circle-down:before { 499 | content: "\f0ab"; 500 | } 501 | .fa-globe:before { 502 | content: "\f0ac"; 503 | } 504 | .fa-wrench:before { 505 | content: "\f0ad"; 506 | } 507 | .fa-tasks:before { 508 | content: "\f0ae"; 509 | } 510 | .fa-filter:before { 511 | content: "\f0b0"; 512 | } 513 | .fa-briefcase:before { 514 | content: "\f0b1"; 515 | } 516 | .fa-arrows-alt:before { 517 | content: "\f0b2"; 518 | } 519 | .fa-group:before, 520 | .fa-users:before { 521 | content: "\f0c0"; 522 | } 523 | .fa-chain:before, 524 | .fa-link:before { 525 | content: "\f0c1"; 526 | } 527 | .fa-cloud:before { 528 | content: "\f0c2"; 529 | } 530 | .fa-flask:before { 531 | content: "\f0c3"; 532 | } 533 | .fa-cut:before, 534 | .fa-scissors:before { 535 | content: "\f0c4"; 536 | } 537 | .fa-copy:before, 538 | .fa-files-o:before { 539 | content: "\f0c5"; 540 | } 541 | .fa-paperclip:before { 542 | content: "\f0c6"; 543 | } 544 | .fa-save:before, 545 | .fa-floppy-o:before { 546 | content: "\f0c7"; 547 | } 548 | .fa-square:before { 549 | content: "\f0c8"; 550 | } 551 | .fa-navicon:before, 552 | .fa-reorder:before, 553 | .fa-bars:before { 554 | content: "\f0c9"; 555 | } 556 | .fa-list-ul:before { 557 | content: "\f0ca"; 558 | } 559 | .fa-list-ol:before { 560 | content: "\f0cb"; 561 | } 562 | .fa-strikethrough:before { 563 | content: "\f0cc"; 564 | } 565 | .fa-underline:before { 566 | content: "\f0cd"; 567 | } 568 | .fa-table:before { 569 | content: "\f0ce"; 570 | } 571 | .fa-magic:before { 572 | content: "\f0d0"; 573 | } 574 | .fa-truck:before { 575 | content: "\f0d1"; 576 | } 577 | .fa-pinterest:before { 578 | content: "\f0d2"; 579 | } 580 | .fa-pinterest-square:before { 581 | content: "\f0d3"; 582 | } 583 | .fa-google-plus-square:before { 584 | content: "\f0d4"; 585 | } 586 | .fa-google-plus:before { 587 | content: "\f0d5"; 588 | } 589 | .fa-money:before { 590 | content: "\f0d6"; 591 | } 592 | .fa-caret-down:before { 593 | content: "\f0d7"; 594 | } 595 | .fa-caret-up:before { 596 | content: "\f0d8"; 597 | } 598 | .fa-caret-left:before { 599 | content: "\f0d9"; 600 | } 601 | .fa-caret-right:before { 602 | content: "\f0da"; 603 | } 604 | .fa-columns:before { 605 | content: "\f0db"; 606 | } 607 | .fa-unsorted:before, 608 | .fa-sort:before { 609 | content: "\f0dc"; 610 | } 611 | .fa-sort-down:before, 612 | .fa-sort-desc:before { 613 | content: "\f0dd"; 614 | } 615 | .fa-sort-up:before, 616 | .fa-sort-asc:before { 617 | content: "\f0de"; 618 | } 619 | .fa-envelope:before { 620 | content: "\f0e0"; 621 | } 622 | .fa-linkedin:before { 623 | content: "\f0e1"; 624 | } 625 | .fa-rotate-left:before, 626 | .fa-undo:before { 627 | content: "\f0e2"; 628 | } 629 | .fa-legal:before, 630 | .fa-gavel:before { 631 | content: "\f0e3"; 632 | } 633 | .fa-dashboard:before, 634 | .fa-tachometer:before { 635 | content: "\f0e4"; 636 | } 637 | .fa-comment-o:before { 638 | content: "\f0e5"; 639 | } 640 | .fa-comments-o:before { 641 | content: "\f0e6"; 642 | } 643 | .fa-flash:before, 644 | .fa-bolt:before { 645 | content: "\f0e7"; 646 | } 647 | .fa-sitemap:before { 648 | content: "\f0e8"; 649 | } 650 | .fa-umbrella:before { 651 | content: "\f0e9"; 652 | } 653 | .fa-paste:before, 654 | .fa-clipboard:before { 655 | content: "\f0ea"; 656 | } 657 | .fa-lightbulb-o:before { 658 | content: "\f0eb"; 659 | } 660 | .fa-exchange:before { 661 | content: "\f0ec"; 662 | } 663 | .fa-cloud-download:before { 664 | content: "\f0ed"; 665 | } 666 | .fa-cloud-upload:before { 667 | content: "\f0ee"; 668 | } 669 | .fa-user-md:before { 670 | content: "\f0f0"; 671 | } 672 | .fa-stethoscope:before { 673 | content: "\f0f1"; 674 | } 675 | .fa-suitcase:before { 676 | content: "\f0f2"; 677 | } 678 | .fa-bell-o:before { 679 | content: "\f0a2"; 680 | } 681 | .fa-coffee:before { 682 | content: "\f0f4"; 683 | } 684 | .fa-cutlery:before { 685 | content: "\f0f5"; 686 | } 687 | .fa-file-text-o:before { 688 | content: "\f0f6"; 689 | } 690 | .fa-building-o:before { 691 | content: "\f0f7"; 692 | } 693 | .fa-hospital-o:before { 694 | content: "\f0f8"; 695 | } 696 | .fa-ambulance:before { 697 | content: "\f0f9"; 698 | } 699 | .fa-medkit:before { 700 | content: "\f0fa"; 701 | } 702 | .fa-fighter-jet:before { 703 | content: "\f0fb"; 704 | } 705 | .fa-beer:before { 706 | content: "\f0fc"; 707 | } 708 | .fa-h-square:before { 709 | content: "\f0fd"; 710 | } 711 | .fa-plus-square:before { 712 | content: "\f0fe"; 713 | } 714 | .fa-angle-double-left:before { 715 | content: "\f100"; 716 | } 717 | .fa-angle-double-right:before { 718 | content: "\f101"; 719 | } 720 | .fa-angle-double-up:before { 721 | content: "\f102"; 722 | } 723 | .fa-angle-double-down:before { 724 | content: "\f103"; 725 | } 726 | .fa-angle-left:before { 727 | content: "\f104"; 728 | } 729 | .fa-angle-right:before { 730 | content: "\f105"; 731 | } 732 | .fa-angle-up:before { 733 | content: "\f106"; 734 | } 735 | .fa-angle-down:before { 736 | content: "\f107"; 737 | } 738 | .fa-desktop:before { 739 | content: "\f108"; 740 | } 741 | .fa-laptop:before { 742 | content: "\f109"; 743 | } 744 | .fa-tablet:before { 745 | content: "\f10a"; 746 | } 747 | .fa-mobile-phone:before, 748 | .fa-mobile:before { 749 | content: "\f10b"; 750 | } 751 | .fa-circle-o:before { 752 | content: "\f10c"; 753 | } 754 | .fa-quote-left:before { 755 | content: "\f10d"; 756 | } 757 | .fa-quote-right:before { 758 | content: "\f10e"; 759 | } 760 | .fa-spinner:before { 761 | content: "\f110"; 762 | } 763 | .fa-circle:before { 764 | content: "\f111"; 765 | } 766 | .fa-mail-reply:before, 767 | .fa-reply:before { 768 | content: "\f112"; 769 | } 770 | .fa-github-alt:before { 771 | content: "\f113"; 772 | } 773 | .fa-folder-o:before { 774 | content: "\f114"; 775 | } 776 | .fa-folder-open-o:before { 777 | content: "\f115"; 778 | } 779 | .fa-smile-o:before { 780 | content: "\f118"; 781 | } 782 | .fa-frown-o:before { 783 | content: "\f119"; 784 | } 785 | .fa-meh-o:before { 786 | content: "\f11a"; 787 | } 788 | .fa-gamepad:before { 789 | content: "\f11b"; 790 | } 791 | .fa-keyboard-o:before { 792 | content: "\f11c"; 793 | } 794 | .fa-flag-o:before { 795 | content: "\f11d"; 796 | } 797 | .fa-flag-checkered:before { 798 | content: "\f11e"; 799 | } 800 | .fa-terminal:before { 801 | content: "\f120"; 802 | } 803 | .fa-code:before { 804 | content: "\f121"; 805 | } 806 | .fa-mail-reply-all:before, 807 | .fa-reply-all:before { 808 | content: "\f122"; 809 | } 810 | .fa-star-half-empty:before, 811 | .fa-star-half-full:before, 812 | .fa-star-half-o:before { 813 | content: "\f123"; 814 | } 815 | .fa-location-arrow:before { 816 | content: "\f124"; 817 | } 818 | .fa-crop:before { 819 | content: "\f125"; 820 | } 821 | .fa-code-fork:before { 822 | content: "\f126"; 823 | } 824 | .fa-unlink:before, 825 | .fa-chain-broken:before { 826 | content: "\f127"; 827 | } 828 | .fa-question:before { 829 | content: "\f128"; 830 | } 831 | .fa-info:before { 832 | content: "\f129"; 833 | } 834 | .fa-exclamation:before { 835 | content: "\f12a"; 836 | } 837 | .fa-superscript:before { 838 | content: "\f12b"; 839 | } 840 | .fa-subscript:before { 841 | content: "\f12c"; 842 | } 843 | .fa-eraser:before { 844 | content: "\f12d"; 845 | } 846 | .fa-puzzle-piece:before { 847 | content: "\f12e"; 848 | } 849 | .fa-microphone:before { 850 | content: "\f130"; 851 | } 852 | .fa-microphone-slash:before { 853 | content: "\f131"; 854 | } 855 | .fa-shield:before { 856 | content: "\f132"; 857 | } 858 | .fa-calendar-o:before { 859 | content: "\f133"; 860 | } 861 | .fa-fire-extinguisher:before { 862 | content: "\f134"; 863 | } 864 | .fa-rocket:before { 865 | content: "\f135"; 866 | } 867 | .fa-maxcdn:before { 868 | content: "\f136"; 869 | } 870 | .fa-chevron-circle-left:before { 871 | content: "\f137"; 872 | } 873 | .fa-chevron-circle-right:before { 874 | content: "\f138"; 875 | } 876 | .fa-chevron-circle-up:before { 877 | content: "\f139"; 878 | } 879 | .fa-chevron-circle-down:before { 880 | content: "\f13a"; 881 | } 882 | .fa-html5:before { 883 | content: "\f13b"; 884 | } 885 | .fa-css3:before { 886 | content: "\f13c"; 887 | } 888 | .fa-anchor:before { 889 | content: "\f13d"; 890 | } 891 | .fa-unlock-alt:before { 892 | content: "\f13e"; 893 | } 894 | .fa-bullseye:before { 895 | content: "\f140"; 896 | } 897 | .fa-ellipsis-h:before { 898 | content: "\f141"; 899 | } 900 | .fa-ellipsis-v:before { 901 | content: "\f142"; 902 | } 903 | .fa-rss-square:before { 904 | content: "\f143"; 905 | } 906 | .fa-play-circle:before { 907 | content: "\f144"; 908 | } 909 | .fa-ticket:before { 910 | content: "\f145"; 911 | } 912 | .fa-minus-square:before { 913 | content: "\f146"; 914 | } 915 | .fa-minus-square-o:before { 916 | content: "\f147"; 917 | } 918 | .fa-level-up:before { 919 | content: "\f148"; 920 | } 921 | .fa-level-down:before { 922 | content: "\f149"; 923 | } 924 | .fa-check-square:before { 925 | content: "\f14a"; 926 | } 927 | .fa-pencil-square:before { 928 | content: "\f14b"; 929 | } 930 | .fa-external-link-square:before { 931 | content: "\f14c"; 932 | } 933 | .fa-share-square:before { 934 | content: "\f14d"; 935 | } 936 | .fa-compass:before { 937 | content: "\f14e"; 938 | } 939 | .fa-toggle-down:before, 940 | .fa-caret-square-o-down:before { 941 | content: "\f150"; 942 | } 943 | .fa-toggle-up:before, 944 | .fa-caret-square-o-up:before { 945 | content: "\f151"; 946 | } 947 | .fa-toggle-right:before, 948 | .fa-caret-square-o-right:before { 949 | content: "\f152"; 950 | } 951 | .fa-euro:before, 952 | .fa-eur:before { 953 | content: "\f153"; 954 | } 955 | .fa-gbp:before { 956 | content: "\f154"; 957 | } 958 | .fa-dollar:before, 959 | .fa-usd:before { 960 | content: "\f155"; 961 | } 962 | .fa-rupee:before, 963 | .fa-inr:before { 964 | content: "\f156"; 965 | } 966 | .fa-cny:before, 967 | .fa-rmb:before, 968 | .fa-yen:before, 969 | .fa-jpy:before { 970 | content: "\f157"; 971 | } 972 | .fa-ruble:before, 973 | .fa-rouble:before, 974 | .fa-rub:before { 975 | content: "\f158"; 976 | } 977 | .fa-won:before, 978 | .fa-krw:before { 979 | content: "\f159"; 980 | } 981 | .fa-bitcoin:before, 982 | .fa-btc:before { 983 | content: "\f15a"; 984 | } 985 | .fa-file:before { 986 | content: "\f15b"; 987 | } 988 | .fa-file-text:before { 989 | content: "\f15c"; 990 | } 991 | .fa-sort-alpha-asc:before { 992 | content: "\f15d"; 993 | } 994 | .fa-sort-alpha-desc:before { 995 | content: "\f15e"; 996 | } 997 | .fa-sort-amount-asc:before { 998 | content: "\f160"; 999 | } 1000 | .fa-sort-amount-desc:before { 1001 | content: "\f161"; 1002 | } 1003 | .fa-sort-numeric-asc:before { 1004 | content: "\f162"; 1005 | } 1006 | .fa-sort-numeric-desc:before { 1007 | content: "\f163"; 1008 | } 1009 | .fa-thumbs-up:before { 1010 | content: "\f164"; 1011 | } 1012 | .fa-thumbs-down:before { 1013 | content: "\f165"; 1014 | } 1015 | .fa-youtube-square:before { 1016 | content: "\f166"; 1017 | } 1018 | .fa-youtube:before { 1019 | content: "\f167"; 1020 | } 1021 | .fa-xing:before { 1022 | content: "\f168"; 1023 | } 1024 | .fa-xing-square:before { 1025 | content: "\f169"; 1026 | } 1027 | .fa-youtube-play:before { 1028 | content: "\f16a"; 1029 | } 1030 | .fa-dropbox:before { 1031 | content: "\f16b"; 1032 | } 1033 | .fa-stack-overflow:before { 1034 | content: "\f16c"; 1035 | } 1036 | .fa-instagram:before { 1037 | content: "\f16d"; 1038 | } 1039 | .fa-flickr:before { 1040 | content: "\f16e"; 1041 | } 1042 | .fa-adn:before { 1043 | content: "\f170"; 1044 | } 1045 | .fa-bitbucket:before { 1046 | content: "\f171"; 1047 | } 1048 | .fa-bitbucket-square:before { 1049 | content: "\f172"; 1050 | } 1051 | .fa-tumblr:before { 1052 | content: "\f173"; 1053 | } 1054 | .fa-tumblr-square:before { 1055 | content: "\f174"; 1056 | } 1057 | .fa-long-arrow-down:before { 1058 | content: "\f175"; 1059 | } 1060 | .fa-long-arrow-up:before { 1061 | content: "\f176"; 1062 | } 1063 | .fa-long-arrow-left:before { 1064 | content: "\f177"; 1065 | } 1066 | .fa-long-arrow-right:before { 1067 | content: "\f178"; 1068 | } 1069 | .fa-apple:before { 1070 | content: "\f179"; 1071 | } 1072 | .fa-windows:before { 1073 | content: "\f17a"; 1074 | } 1075 | .fa-android:before { 1076 | content: "\f17b"; 1077 | } 1078 | .fa-linux:before { 1079 | content: "\f17c"; 1080 | } 1081 | .fa-dribbble:before { 1082 | content: "\f17d"; 1083 | } 1084 | .fa-skype:before { 1085 | content: "\f17e"; 1086 | } 1087 | .fa-foursquare:before { 1088 | content: "\f180"; 1089 | } 1090 | .fa-trello:before { 1091 | content: "\f181"; 1092 | } 1093 | .fa-female:before { 1094 | content: "\f182"; 1095 | } 1096 | .fa-male:before { 1097 | content: "\f183"; 1098 | } 1099 | .fa-gittip:before, 1100 | .fa-gratipay:before { 1101 | content: "\f184"; 1102 | } 1103 | .fa-sun-o:before { 1104 | content: "\f185"; 1105 | } 1106 | .fa-moon-o:before { 1107 | content: "\f186"; 1108 | } 1109 | .fa-archive:before { 1110 | content: "\f187"; 1111 | } 1112 | .fa-bug:before { 1113 | content: "\f188"; 1114 | } 1115 | .fa-vk:before { 1116 | content: "\f189"; 1117 | } 1118 | .fa-weibo:before { 1119 | content: "\f18a"; 1120 | } 1121 | .fa-renren:before { 1122 | content: "\f18b"; 1123 | } 1124 | .fa-pagelines:before { 1125 | content: "\f18c"; 1126 | } 1127 | .fa-stack-exchange:before { 1128 | content: "\f18d"; 1129 | } 1130 | .fa-arrow-circle-o-right:before { 1131 | content: "\f18e"; 1132 | } 1133 | .fa-arrow-circle-o-left:before { 1134 | content: "\f190"; 1135 | } 1136 | .fa-toggle-left:before, 1137 | .fa-caret-square-o-left:before { 1138 | content: "\f191"; 1139 | } 1140 | .fa-dot-circle-o:before { 1141 | content: "\f192"; 1142 | } 1143 | .fa-wheelchair:before { 1144 | content: "\f193"; 1145 | } 1146 | .fa-vimeo-square:before { 1147 | content: "\f194"; 1148 | } 1149 | .fa-turkish-lira:before, 1150 | .fa-try:before { 1151 | content: "\f195"; 1152 | } 1153 | .fa-plus-square-o:before { 1154 | content: "\f196"; 1155 | } 1156 | .fa-space-shuttle:before { 1157 | content: "\f197"; 1158 | } 1159 | .fa-slack:before { 1160 | content: "\f198"; 1161 | } 1162 | .fa-envelope-square:before { 1163 | content: "\f199"; 1164 | } 1165 | .fa-wordpress:before { 1166 | content: "\f19a"; 1167 | } 1168 | .fa-openid:before { 1169 | content: "\f19b"; 1170 | } 1171 | .fa-institution:before, 1172 | .fa-bank:before, 1173 | .fa-university:before { 1174 | content: "\f19c"; 1175 | } 1176 | .fa-mortar-board:before, 1177 | .fa-graduation-cap:before { 1178 | content: "\f19d"; 1179 | } 1180 | .fa-yahoo:before { 1181 | content: "\f19e"; 1182 | } 1183 | .fa-google:before { 1184 | content: "\f1a0"; 1185 | } 1186 | .fa-reddit:before { 1187 | content: "\f1a1"; 1188 | } 1189 | .fa-reddit-square:before { 1190 | content: "\f1a2"; 1191 | } 1192 | .fa-stumbleupon-circle:before { 1193 | content: "\f1a3"; 1194 | } 1195 | .fa-stumbleupon:before { 1196 | content: "\f1a4"; 1197 | } 1198 | .fa-delicious:before { 1199 | content: "\f1a5"; 1200 | } 1201 | .fa-digg:before { 1202 | content: "\f1a6"; 1203 | } 1204 | .fa-pied-piper:before { 1205 | content: "\f1a7"; 1206 | } 1207 | .fa-pied-piper-alt:before { 1208 | content: "\f1a8"; 1209 | } 1210 | .fa-drupal:before { 1211 | content: "\f1a9"; 1212 | } 1213 | .fa-joomla:before { 1214 | content: "\f1aa"; 1215 | } 1216 | .fa-language:before { 1217 | content: "\f1ab"; 1218 | } 1219 | .fa-fax:before { 1220 | content: "\f1ac"; 1221 | } 1222 | .fa-building:before { 1223 | content: "\f1ad"; 1224 | } 1225 | .fa-child:before { 1226 | content: "\f1ae"; 1227 | } 1228 | .fa-paw:before { 1229 | content: "\f1b0"; 1230 | } 1231 | .fa-spoon:before { 1232 | content: "\f1b1"; 1233 | } 1234 | .fa-cube:before { 1235 | content: "\f1b2"; 1236 | } 1237 | .fa-cubes:before { 1238 | content: "\f1b3"; 1239 | } 1240 | .fa-behance:before { 1241 | content: "\f1b4"; 1242 | } 1243 | .fa-behance-square:before { 1244 | content: "\f1b5"; 1245 | } 1246 | .fa-steam:before { 1247 | content: "\f1b6"; 1248 | } 1249 | .fa-steam-square:before { 1250 | content: "\f1b7"; 1251 | } 1252 | .fa-recycle:before { 1253 | content: "\f1b8"; 1254 | } 1255 | .fa-automobile:before, 1256 | .fa-car:before { 1257 | content: "\f1b9"; 1258 | } 1259 | .fa-cab:before, 1260 | .fa-taxi:before { 1261 | content: "\f1ba"; 1262 | } 1263 | .fa-tree:before { 1264 | content: "\f1bb"; 1265 | } 1266 | .fa-spotify:before { 1267 | content: "\f1bc"; 1268 | } 1269 | .fa-deviantart:before { 1270 | content: "\f1bd"; 1271 | } 1272 | .fa-soundcloud:before { 1273 | content: "\f1be"; 1274 | } 1275 | .fa-database:before { 1276 | content: "\f1c0"; 1277 | } 1278 | .fa-file-pdf-o:before { 1279 | content: "\f1c1"; 1280 | } 1281 | .fa-file-word-o:before { 1282 | content: "\f1c2"; 1283 | } 1284 | .fa-file-excel-o:before { 1285 | content: "\f1c3"; 1286 | } 1287 | .fa-file-powerpoint-o:before { 1288 | content: "\f1c4"; 1289 | } 1290 | .fa-file-photo-o:before, 1291 | .fa-file-picture-o:before, 1292 | .fa-file-image-o:before { 1293 | content: "\f1c5"; 1294 | } 1295 | .fa-file-zip-o:before, 1296 | .fa-file-archive-o:before { 1297 | content: "\f1c6"; 1298 | } 1299 | .fa-file-sound-o:before, 1300 | .fa-file-audio-o:before { 1301 | content: "\f1c7"; 1302 | } 1303 | .fa-file-movie-o:before, 1304 | .fa-file-video-o:before { 1305 | content: "\f1c8"; 1306 | } 1307 | .fa-file-code-o:before { 1308 | content: "\f1c9"; 1309 | } 1310 | .fa-vine:before { 1311 | content: "\f1ca"; 1312 | } 1313 | .fa-codepen:before { 1314 | content: "\f1cb"; 1315 | } 1316 | .fa-jsfiddle:before { 1317 | content: "\f1cc"; 1318 | } 1319 | .fa-life-bouy:before, 1320 | .fa-life-buoy:before, 1321 | .fa-life-saver:before, 1322 | .fa-support:before, 1323 | .fa-life-ring:before { 1324 | content: "\f1cd"; 1325 | } 1326 | .fa-circle-o-notch:before { 1327 | content: "\f1ce"; 1328 | } 1329 | .fa-ra:before, 1330 | .fa-rebel:before { 1331 | content: "\f1d0"; 1332 | } 1333 | .fa-ge:before, 1334 | .fa-empire:before { 1335 | content: "\f1d1"; 1336 | } 1337 | .fa-git-square:before { 1338 | content: "\f1d2"; 1339 | } 1340 | .fa-git:before { 1341 | content: "\f1d3"; 1342 | } 1343 | .fa-y-combinator-square:before, 1344 | .fa-yc-square:before, 1345 | .fa-hacker-news:before { 1346 | content: "\f1d4"; 1347 | } 1348 | .fa-tencent-weibo:before { 1349 | content: "\f1d5"; 1350 | } 1351 | .fa-qq:before { 1352 | content: "\f1d6"; 1353 | } 1354 | .fa-wechat:before, 1355 | .fa-weixin:before { 1356 | content: "\f1d7"; 1357 | } 1358 | .fa-send:before, 1359 | .fa-paper-plane:before { 1360 | content: "\f1d8"; 1361 | } 1362 | .fa-send-o:before, 1363 | .fa-paper-plane-o:before { 1364 | content: "\f1d9"; 1365 | } 1366 | .fa-history:before { 1367 | content: "\f1da"; 1368 | } 1369 | .fa-circle-thin:before { 1370 | content: "\f1db"; 1371 | } 1372 | .fa-header:before { 1373 | content: "\f1dc"; 1374 | } 1375 | .fa-paragraph:before { 1376 | content: "\f1dd"; 1377 | } 1378 | .fa-sliders:before { 1379 | content: "\f1de"; 1380 | } 1381 | .fa-share-alt:before { 1382 | content: "\f1e0"; 1383 | } 1384 | .fa-share-alt-square:before { 1385 | content: "\f1e1"; 1386 | } 1387 | .fa-bomb:before { 1388 | content: "\f1e2"; 1389 | } 1390 | .fa-soccer-ball-o:before, 1391 | .fa-futbol-o:before { 1392 | content: "\f1e3"; 1393 | } 1394 | .fa-tty:before { 1395 | content: "\f1e4"; 1396 | } 1397 | .fa-binoculars:before { 1398 | content: "\f1e5"; 1399 | } 1400 | .fa-plug:before { 1401 | content: "\f1e6"; 1402 | } 1403 | .fa-slideshare:before { 1404 | content: "\f1e7"; 1405 | } 1406 | .fa-twitch:before { 1407 | content: "\f1e8"; 1408 | } 1409 | .fa-yelp:before { 1410 | content: "\f1e9"; 1411 | } 1412 | .fa-newspaper-o:before { 1413 | content: "\f1ea"; 1414 | } 1415 | .fa-wifi:before { 1416 | content: "\f1eb"; 1417 | } 1418 | .fa-calculator:before { 1419 | content: "\f1ec"; 1420 | } 1421 | .fa-paypal:before { 1422 | content: "\f1ed"; 1423 | } 1424 | .fa-google-wallet:before { 1425 | content: "\f1ee"; 1426 | } 1427 | .fa-cc-visa:before { 1428 | content: "\f1f0"; 1429 | } 1430 | .fa-cc-mastercard:before { 1431 | content: "\f1f1"; 1432 | } 1433 | .fa-cc-discover:before { 1434 | content: "\f1f2"; 1435 | } 1436 | .fa-cc-amex:before { 1437 | content: "\f1f3"; 1438 | } 1439 | .fa-cc-paypal:before { 1440 | content: "\f1f4"; 1441 | } 1442 | .fa-cc-stripe:before { 1443 | content: "\f1f5"; 1444 | } 1445 | .fa-bell-slash:before { 1446 | content: "\f1f6"; 1447 | } 1448 | .fa-bell-slash-o:before { 1449 | content: "\f1f7"; 1450 | } 1451 | .fa-trash:before { 1452 | content: "\f1f8"; 1453 | } 1454 | .fa-copyright:before { 1455 | content: "\f1f9"; 1456 | } 1457 | .fa-at:before { 1458 | content: "\f1fa"; 1459 | } 1460 | .fa-eyedropper:before { 1461 | content: "\f1fb"; 1462 | } 1463 | .fa-paint-brush:before { 1464 | content: "\f1fc"; 1465 | } 1466 | .fa-birthday-cake:before { 1467 | content: "\f1fd"; 1468 | } 1469 | .fa-area-chart:before { 1470 | content: "\f1fe"; 1471 | } 1472 | .fa-pie-chart:before { 1473 | content: "\f200"; 1474 | } 1475 | .fa-line-chart:before { 1476 | content: "\f201"; 1477 | } 1478 | .fa-lastfm:before { 1479 | content: "\f202"; 1480 | } 1481 | .fa-lastfm-square:before { 1482 | content: "\f203"; 1483 | } 1484 | .fa-toggle-off:before { 1485 | content: "\f204"; 1486 | } 1487 | .fa-toggle-on:before { 1488 | content: "\f205"; 1489 | } 1490 | .fa-bicycle:before { 1491 | content: "\f206"; 1492 | } 1493 | .fa-bus:before { 1494 | content: "\f207"; 1495 | } 1496 | .fa-ioxhost:before { 1497 | content: "\f208"; 1498 | } 1499 | .fa-angellist:before { 1500 | content: "\f209"; 1501 | } 1502 | .fa-cc:before { 1503 | content: "\f20a"; 1504 | } 1505 | .fa-shekel:before, 1506 | .fa-sheqel:before, 1507 | .fa-ils:before { 1508 | content: "\f20b"; 1509 | } 1510 | .fa-meanpath:before { 1511 | content: "\f20c"; 1512 | } 1513 | .fa-buysellads:before { 1514 | content: "\f20d"; 1515 | } 1516 | .fa-connectdevelop:before { 1517 | content: "\f20e"; 1518 | } 1519 | .fa-dashcube:before { 1520 | content: "\f210"; 1521 | } 1522 | .fa-forumbee:before { 1523 | content: "\f211"; 1524 | } 1525 | .fa-leanpub:before { 1526 | content: "\f212"; 1527 | } 1528 | .fa-sellsy:before { 1529 | content: "\f213"; 1530 | } 1531 | .fa-shirtsinbulk:before { 1532 | content: "\f214"; 1533 | } 1534 | .fa-simplybuilt:before { 1535 | content: "\f215"; 1536 | } 1537 | .fa-skyatlas:before { 1538 | content: "\f216"; 1539 | } 1540 | .fa-cart-plus:before { 1541 | content: "\f217"; 1542 | } 1543 | .fa-cart-arrow-down:before { 1544 | content: "\f218"; 1545 | } 1546 | .fa-diamond:before { 1547 | content: "\f219"; 1548 | } 1549 | .fa-ship:before { 1550 | content: "\f21a"; 1551 | } 1552 | .fa-user-secret:before { 1553 | content: "\f21b"; 1554 | } 1555 | .fa-motorcycle:before { 1556 | content: "\f21c"; 1557 | } 1558 | .fa-street-view:before { 1559 | content: "\f21d"; 1560 | } 1561 | .fa-heartbeat:before { 1562 | content: "\f21e"; 1563 | } 1564 | .fa-venus:before { 1565 | content: "\f221"; 1566 | } 1567 | .fa-mars:before { 1568 | content: "\f222"; 1569 | } 1570 | .fa-mercury:before { 1571 | content: "\f223"; 1572 | } 1573 | .fa-intersex:before, 1574 | .fa-transgender:before { 1575 | content: "\f224"; 1576 | } 1577 | .fa-transgender-alt:before { 1578 | content: "\f225"; 1579 | } 1580 | .fa-venus-double:before { 1581 | content: "\f226"; 1582 | } 1583 | .fa-mars-double:before { 1584 | content: "\f227"; 1585 | } 1586 | .fa-venus-mars:before { 1587 | content: "\f228"; 1588 | } 1589 | .fa-mars-stroke:before { 1590 | content: "\f229"; 1591 | } 1592 | .fa-mars-stroke-v:before { 1593 | content: "\f22a"; 1594 | } 1595 | .fa-mars-stroke-h:before { 1596 | content: "\f22b"; 1597 | } 1598 | .fa-neuter:before { 1599 | content: "\f22c"; 1600 | } 1601 | .fa-genderless:before { 1602 | content: "\f22d"; 1603 | } 1604 | .fa-facebook-official:before { 1605 | content: "\f230"; 1606 | } 1607 | .fa-pinterest-p:before { 1608 | content: "\f231"; 1609 | } 1610 | .fa-whatsapp:before { 1611 | content: "\f232"; 1612 | } 1613 | .fa-server:before { 1614 | content: "\f233"; 1615 | } 1616 | .fa-user-plus:before { 1617 | content: "\f234"; 1618 | } 1619 | .fa-user-times:before { 1620 | content: "\f235"; 1621 | } 1622 | .fa-hotel:before, 1623 | .fa-bed:before { 1624 | content: "\f236"; 1625 | } 1626 | .fa-viacoin:before { 1627 | content: "\f237"; 1628 | } 1629 | .fa-train:before { 1630 | content: "\f238"; 1631 | } 1632 | .fa-subway:before { 1633 | content: "\f239"; 1634 | } 1635 | .fa-medium:before { 1636 | content: "\f23a"; 1637 | } 1638 | .fa-yc:before, 1639 | .fa-y-combinator:before { 1640 | content: "\f23b"; 1641 | } 1642 | .fa-optin-monster:before { 1643 | content: "\f23c"; 1644 | } 1645 | .fa-opencart:before { 1646 | content: "\f23d"; 1647 | } 1648 | .fa-expeditedssl:before { 1649 | content: "\f23e"; 1650 | } 1651 | .fa-battery-4:before, 1652 | .fa-battery-full:before { 1653 | content: "\f240"; 1654 | } 1655 | .fa-battery-3:before, 1656 | .fa-battery-three-quarters:before { 1657 | content: "\f241"; 1658 | } 1659 | .fa-battery-2:before, 1660 | .fa-battery-half:before { 1661 | content: "\f242"; 1662 | } 1663 | .fa-battery-1:before, 1664 | .fa-battery-quarter:before { 1665 | content: "\f243"; 1666 | } 1667 | .fa-battery-0:before, 1668 | .fa-battery-empty:before { 1669 | content: "\f244"; 1670 | } 1671 | .fa-mouse-pointer:before { 1672 | content: "\f245"; 1673 | } 1674 | .fa-i-cursor:before { 1675 | content: "\f246"; 1676 | } 1677 | .fa-object-group:before { 1678 | content: "\f247"; 1679 | } 1680 | .fa-object-ungroup:before { 1681 | content: "\f248"; 1682 | } 1683 | .fa-sticky-note:before { 1684 | content: "\f249"; 1685 | } 1686 | .fa-sticky-note-o:before { 1687 | content: "\f24a"; 1688 | } 1689 | .fa-cc-jcb:before { 1690 | content: "\f24b"; 1691 | } 1692 | .fa-cc-diners-club:before { 1693 | content: "\f24c"; 1694 | } 1695 | .fa-clone:before { 1696 | content: "\f24d"; 1697 | } 1698 | .fa-balance-scale:before { 1699 | content: "\f24e"; 1700 | } 1701 | .fa-hourglass-o:before { 1702 | content: "\f250"; 1703 | } 1704 | .fa-hourglass-1:before, 1705 | .fa-hourglass-start:before { 1706 | content: "\f251"; 1707 | } 1708 | .fa-hourglass-2:before, 1709 | .fa-hourglass-half:before { 1710 | content: "\f252"; 1711 | } 1712 | .fa-hourglass-end:before { 1713 | content: "\f253"; 1714 | } 1715 | .fa-hourglass:before { 1716 | content: "\f254"; 1717 | } 1718 | .fa-hand-rock-o:before { 1719 | content: "\f255"; 1720 | } 1721 | .fa-hand-paper-o:before { 1722 | content: "\f256"; 1723 | } 1724 | .fa-hand-scissors-o:before { 1725 | content: "\f257"; 1726 | } 1727 | .fa-hand-lizard-o:before { 1728 | content: "\f258"; 1729 | } 1730 | .fa-hand-spock-o:before { 1731 | content: "\f259"; 1732 | } 1733 | .fa-hand-pointer-o:before { 1734 | content: "\f25a"; 1735 | } 1736 | .fa-hand-peace-o:before { 1737 | content: "\f25b"; 1738 | } 1739 | .fa-trademark:before { 1740 | content: "\f25c"; 1741 | } 1742 | .fa-registered:before { 1743 | content: "\f25d"; 1744 | } 1745 | .fa-creative-commons:before { 1746 | content: "\f25e"; 1747 | } 1748 | .fa-gg:before { 1749 | content: "\f260"; 1750 | } 1751 | .fa-gg-circle:before { 1752 | content: "\f261"; 1753 | } 1754 | .fa-tripadvisor:before { 1755 | content: "\f262"; 1756 | } 1757 | .fa-odnoklassniki:before { 1758 | content: "\f263"; 1759 | } 1760 | .fa-odnoklassniki-square:before { 1761 | content: "\f264"; 1762 | } 1763 | .fa-get-pocket:before { 1764 | content: "\f265"; 1765 | } 1766 | .fa-wikipedia-w:before { 1767 | content: "\f266"; 1768 | } 1769 | .fa-safari:before { 1770 | content: "\f267"; 1771 | } 1772 | .fa-chrome:before { 1773 | content: "\f268"; 1774 | } 1775 | .fa-firefox:before { 1776 | content: "\f269"; 1777 | } 1778 | .fa-opera:before { 1779 | content: "\f26a"; 1780 | } 1781 | .fa-internet-explorer:before { 1782 | content: "\f26b"; 1783 | } 1784 | .fa-television:before { 1785 | content: "\f26c"; 1786 | } 1787 | .fa-contao:before { 1788 | content: "\f26d"; 1789 | } 1790 | .fa-500px:before { 1791 | content: "\f26e"; 1792 | } 1793 | .fa-amazon:before { 1794 | content: "\f270"; 1795 | } 1796 | .fa-calendar-plus-o:before { 1797 | content: "\f271"; 1798 | } 1799 | .fa-calendar-minus-o:before { 1800 | content: "\f272"; 1801 | } 1802 | .fa-calendar-times-o:before { 1803 | content: "\f273"; 1804 | } 1805 | .fa-calendar-check-o:before { 1806 | content: "\f274"; 1807 | } 1808 | .fa-industry:before { 1809 | content: "\f275"; 1810 | } 1811 | .fa-map-pin:before { 1812 | content: "\f276"; 1813 | } 1814 | .fa-map-signs:before { 1815 | content: "\f277"; 1816 | } 1817 | .fa-map-o:before { 1818 | content: "\f278"; 1819 | } 1820 | .fa-map:before { 1821 | content: "\f279"; 1822 | } 1823 | .fa-commenting:before { 1824 | content: "\f27a"; 1825 | } 1826 | .fa-commenting-o:before { 1827 | content: "\f27b"; 1828 | } 1829 | .fa-houzz:before { 1830 | content: "\f27c"; 1831 | } 1832 | .fa-vimeo:before { 1833 | content: "\f27d"; 1834 | } 1835 | .fa-black-tie:before { 1836 | content: "\f27e"; 1837 | } 1838 | .fa-fonticons:before { 1839 | content: "\f280"; 1840 | } 1841 | .fa-reddit-alien:before { 1842 | content: "\f281"; 1843 | } 1844 | .fa-edge:before { 1845 | content: "\f282"; 1846 | } 1847 | .fa-credit-card-alt:before { 1848 | content: "\f283"; 1849 | } 1850 | .fa-codiepie:before { 1851 | content: "\f284"; 1852 | } 1853 | .fa-modx:before { 1854 | content: "\f285"; 1855 | } 1856 | .fa-fort-awesome:before { 1857 | content: "\f286"; 1858 | } 1859 | .fa-usb:before { 1860 | content: "\f287"; 1861 | } 1862 | .fa-product-hunt:before { 1863 | content: "\f288"; 1864 | } 1865 | .fa-mixcloud:before { 1866 | content: "\f289"; 1867 | } 1868 | .fa-scribd:before { 1869 | content: "\f28a"; 1870 | } 1871 | .fa-pause-circle:before { 1872 | content: "\f28b"; 1873 | } 1874 | .fa-pause-circle-o:before { 1875 | content: "\f28c"; 1876 | } 1877 | .fa-stop-circle:before { 1878 | content: "\f28d"; 1879 | } 1880 | .fa-stop-circle-o:before { 1881 | content: "\f28e"; 1882 | } 1883 | .fa-shopping-bag:before { 1884 | content: "\f290"; 1885 | } 1886 | .fa-shopping-basket:before { 1887 | content: "\f291"; 1888 | } 1889 | .fa-hashtag:before { 1890 | content: "\f292"; 1891 | } 1892 | .fa-bluetooth:before { 1893 | content: "\f293"; 1894 | } 1895 | .fa-bluetooth-b:before { 1896 | content: "\f294"; 1897 | } 1898 | .fa-percent:before { 1899 | content: "\f295"; 1900 | } 1901 | -------------------------------------------------------------------------------- /demo/app/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /demo/app/fonts/ionicons.css: -------------------------------------------------------------------------------- 1 | .ion-alert:before { content: "\f101"; } 2 | 3 | .ion-alert-circled:before { content: "\f100"; } 4 | 5 | .ion-android-add:before { content: "\f2c7"; } 6 | 7 | .ion-android-add-circle:before { content: "\f359"; } 8 | 9 | .ion-android-alarm-clock:before { content: "\f35a"; } 10 | 11 | .ion-android-alert:before { content: "\f35b"; } 12 | 13 | .ion-android-apps:before { content: "\f35c"; } 14 | 15 | .ion-android-archive:before { content: "\f2c9"; } 16 | 17 | .ion-android-arrow-back:before { content: "\f2ca"; } 18 | 19 | .ion-android-arrow-down:before { content: "\f35d"; } 20 | 21 | .ion-android-arrow-dropdown:before { content: "\f35f"; } 22 | 23 | .ion-android-arrow-dropdown-circle:before { content: "\f35e"; } 24 | 25 | .ion-android-arrow-dropleft:before { content: "\f361"; } 26 | 27 | .ion-android-arrow-dropleft-circle:before { content: "\f360"; } 28 | 29 | .ion-android-arrow-dropright:before { content: "\f363"; } 30 | 31 | .ion-android-arrow-dropright-circle:before { content: "\f362"; } 32 | 33 | .ion-android-arrow-dropup:before { content: "\f365"; } 34 | 35 | .ion-android-arrow-dropup-circle:before { content: "\f364"; } 36 | 37 | .ion-android-arrow-forward:before { content: "\f30f"; } 38 | 39 | .ion-android-arrow-up:before { content: "\f366"; } 40 | 41 | .ion-android-attach:before { content: "\f367"; } 42 | 43 | .ion-android-bar:before { content: "\f368"; } 44 | 45 | .ion-android-bicycle:before { content: "\f369"; } 46 | 47 | .ion-android-boat:before { content: "\f36a"; } 48 | 49 | .ion-android-bookmark:before { content: "\f36b"; } 50 | 51 | .ion-android-bulb:before { content: "\f36c"; } 52 | 53 | .ion-android-bus:before { content: "\f36d"; } 54 | 55 | .ion-android-calendar:before { content: "\f2d1"; } 56 | 57 | .ion-android-call:before { content: "\f2d2"; } 58 | 59 | .ion-android-camera:before { content: "\f2d3"; } 60 | 61 | .ion-android-cancel:before { content: "\f36e"; } 62 | 63 | .ion-android-car:before { content: "\f36f"; } 64 | 65 | .ion-android-cart:before { content: "\f370"; } 66 | 67 | .ion-android-chat:before { content: "\f2d4"; } 68 | 69 | .ion-android-checkbox:before { content: "\f374"; } 70 | 71 | .ion-android-checkbox-blank:before { content: "\f371"; } 72 | 73 | .ion-android-checkbox-outline:before { content: "\f373"; } 74 | 75 | .ion-android-checkbox-outline-blank:before { content: "\f372"; } 76 | 77 | .ion-android-checkmark-circle:before { content: "\f375"; } 78 | 79 | .ion-android-clipboard:before { content: "\f376"; } 80 | 81 | .ion-android-close:before { content: "\f2d7"; } 82 | 83 | .ion-android-cloud:before { content: "\f37a"; } 84 | 85 | .ion-android-cloud-circle:before { content: "\f377"; } 86 | 87 | .ion-android-cloud-done:before { content: "\f378"; } 88 | 89 | .ion-android-cloud-outline:before { content: "\f379"; } 90 | 91 | .ion-android-color-palette:before { content: "\f37b"; } 92 | 93 | .ion-android-compass:before { content: "\f37c"; } 94 | 95 | .ion-android-contact:before { content: "\f2d8"; } 96 | 97 | .ion-android-contacts:before { content: "\f2d9"; } 98 | 99 | .ion-android-contract:before { content: "\f37d"; } 100 | 101 | .ion-android-create:before { content: "\f37e"; } 102 | 103 | .ion-android-delete:before { content: "\f37f"; } 104 | 105 | .ion-android-desktop:before { content: "\f380"; } 106 | 107 | .ion-android-document:before { content: "\f381"; } 108 | 109 | .ion-android-done:before { content: "\f383"; } 110 | 111 | .ion-android-done-all:before { content: "\f382"; } 112 | 113 | .ion-android-download:before { content: "\f2dd"; } 114 | 115 | .ion-android-drafts:before { content: "\f384"; } 116 | 117 | .ion-android-exit:before { content: "\f385"; } 118 | 119 | .ion-android-expand:before { content: "\f386"; } 120 | 121 | .ion-android-favorite:before { content: "\f388"; } 122 | 123 | .ion-android-favorite-outline:before { content: "\f387"; } 124 | 125 | .ion-android-film:before { content: "\f389"; } 126 | 127 | .ion-android-folder:before { content: "\f2e0"; } 128 | 129 | .ion-android-folder-open:before { content: "\f38a"; } 130 | 131 | .ion-android-funnel:before { content: "\f38b"; } 132 | 133 | .ion-android-globe:before { content: "\f38c"; } 134 | 135 | .ion-android-hand:before { content: "\f2e3"; } 136 | 137 | .ion-android-hangout:before { content: "\f38d"; } 138 | 139 | .ion-android-happy:before { content: "\f38e"; } 140 | 141 | .ion-android-home:before { content: "\f38f"; } 142 | 143 | .ion-android-image:before { content: "\f2e4"; } 144 | 145 | .ion-android-laptop:before { content: "\f390"; } 146 | 147 | .ion-android-list:before { content: "\f391"; } 148 | 149 | .ion-android-locate:before { content: "\f2e9"; } 150 | 151 | .ion-android-lock:before { content: "\f392"; } 152 | 153 | .ion-android-mail:before { content: "\f2eb"; } 154 | 155 | .ion-android-map:before { content: "\f393"; } 156 | 157 | .ion-android-menu:before { content: "\f394"; } 158 | 159 | .ion-android-microphone:before { content: "\f2ec"; } 160 | 161 | .ion-android-microphone-off:before { content: "\f395"; } 162 | 163 | .ion-android-more-horizontal:before { content: "\f396"; } 164 | 165 | .ion-android-more-vertical:before { content: "\f397"; } 166 | 167 | .ion-android-navigate:before { content: "\f398"; } 168 | 169 | .ion-android-notifications:before { content: "\f39b"; } 170 | 171 | .ion-android-notifications-none:before { content: "\f399"; } 172 | 173 | .ion-android-notifications-off:before { content: "\f39a"; } 174 | 175 | .ion-android-open:before { content: "\f39c"; } 176 | 177 | .ion-android-options:before { content: "\f39d"; } 178 | 179 | .ion-android-people:before { content: "\f39e"; } 180 | 181 | .ion-android-person:before { content: "\f3a0"; } 182 | 183 | .ion-android-person-add:before { content: "\f39f"; } 184 | 185 | .ion-android-phone-landscape:before { content: "\f3a1"; } 186 | 187 | .ion-android-phone-portrait:before { content: "\f3a2"; } 188 | 189 | .ion-android-pin:before { content: "\f3a3"; } 190 | 191 | .ion-android-plane:before { content: "\f3a4"; } 192 | 193 | .ion-android-playstore:before { content: "\f2f0"; } 194 | 195 | .ion-android-print:before { content: "\f3a5"; } 196 | 197 | .ion-android-radio-button-off:before { content: "\f3a6"; } 198 | 199 | .ion-android-radio-button-on:before { content: "\f3a7"; } 200 | 201 | .ion-android-refresh:before { content: "\f3a8"; } 202 | 203 | .ion-android-remove:before { content: "\f2f4"; } 204 | 205 | .ion-android-remove-circle:before { content: "\f3a9"; } 206 | 207 | .ion-android-restaurant:before { content: "\f3aa"; } 208 | 209 | .ion-android-sad:before { content: "\f3ab"; } 210 | 211 | .ion-android-search:before { content: "\f2f5"; } 212 | 213 | .ion-android-send:before { content: "\f2f6"; } 214 | 215 | .ion-android-settings:before { content: "\f2f7"; } 216 | 217 | .ion-android-share:before { content: "\f2f8"; } 218 | 219 | .ion-android-share-alt:before { content: "\f3ac"; } 220 | 221 | .ion-android-star:before { content: "\f2fc"; } 222 | 223 | .ion-android-star-half:before { content: "\f3ad"; } 224 | 225 | .ion-android-star-outline:before { content: "\f3ae"; } 226 | 227 | .ion-android-stopwatch:before { content: "\f2fd"; } 228 | 229 | .ion-android-subway:before { content: "\f3af"; } 230 | 231 | .ion-android-sunny:before { content: "\f3b0"; } 232 | 233 | .ion-android-sync:before { content: "\f3b1"; } 234 | 235 | .ion-android-textsms:before { content: "\f3b2"; } 236 | 237 | .ion-android-time:before { content: "\f3b3"; } 238 | 239 | .ion-android-train:before { content: "\f3b4"; } 240 | 241 | .ion-android-unlock:before { content: "\f3b5"; } 242 | 243 | .ion-android-upload:before { content: "\f3b6"; } 244 | 245 | .ion-android-volume-down:before { content: "\f3b7"; } 246 | 247 | .ion-android-volume-mute:before { content: "\f3b8"; } 248 | 249 | .ion-android-volume-off:before { content: "\f3b9"; } 250 | 251 | .ion-android-volume-up:before { content: "\f3ba"; } 252 | 253 | .ion-android-walk:before { content: "\f3bb"; } 254 | 255 | .ion-android-warning:before { content: "\f3bc"; } 256 | 257 | .ion-android-watch:before { content: "\f3bd"; } 258 | 259 | .ion-android-wifi:before { content: "\f305"; } 260 | 261 | .ion-aperture:before { content: "\f313"; } 262 | 263 | .ion-archive:before { content: "\f102"; } 264 | 265 | .ion-arrow-down-a:before { content: "\f103"; } 266 | 267 | .ion-arrow-down-b:before { content: "\f104"; } 268 | 269 | .ion-arrow-down-c:before { content: "\f105"; } 270 | 271 | .ion-arrow-expand:before { content: "\f25e"; } 272 | 273 | .ion-arrow-graph-down-left:before { content: "\f25f"; } 274 | 275 | .ion-arrow-graph-down-right:before { content: "\f260"; } 276 | 277 | .ion-arrow-graph-up-left:before { content: "\f261"; } 278 | 279 | .ion-arrow-graph-up-right:before { content: "\f262"; } 280 | 281 | .ion-arrow-left-a:before { content: "\f106"; } 282 | 283 | .ion-arrow-left-b:before { content: "\f107"; } 284 | 285 | .ion-arrow-left-c:before { content: "\f108"; } 286 | 287 | .ion-arrow-move:before { content: "\f263"; } 288 | 289 | .ion-arrow-resize:before { content: "\f264"; } 290 | 291 | .ion-arrow-return-left:before { content: "\f265"; } 292 | 293 | .ion-arrow-return-right:before { content: "\f266"; } 294 | 295 | .ion-arrow-right-a:before { content: "\f109"; } 296 | 297 | .ion-arrow-right-b:before { content: "\f10a"; } 298 | 299 | .ion-arrow-right-c:before { content: "\f10b"; } 300 | 301 | .ion-arrow-shrink:before { content: "\f267"; } 302 | 303 | .ion-arrow-swap:before { content: "\f268"; } 304 | 305 | .ion-arrow-up-a:before { content: "\f10c"; } 306 | 307 | .ion-arrow-up-b:before { content: "\f10d"; } 308 | 309 | .ion-arrow-up-c:before { content: "\f10e"; } 310 | 311 | .ion-asterisk:before { content: "\f314"; } 312 | 313 | .ion-at:before { content: "\f10f"; } 314 | 315 | .ion-backspace:before { content: "\f3bf"; } 316 | 317 | .ion-backspace-outline:before { content: "\f3be"; } 318 | 319 | .ion-bag:before { content: "\f110"; } 320 | 321 | .ion-battery-charging:before { content: "\f111"; } 322 | 323 | .ion-battery-empty:before { content: "\f112"; } 324 | 325 | .ion-battery-full:before { content: "\f113"; } 326 | 327 | .ion-battery-half:before { content: "\f114"; } 328 | 329 | .ion-battery-low:before { content: "\f115"; } 330 | 331 | .ion-beaker:before { content: "\f269"; } 332 | 333 | .ion-beer:before { content: "\f26a"; } 334 | 335 | .ion-bluetooth:before { content: "\f116"; } 336 | 337 | .ion-bonfire:before { content: "\f315"; } 338 | 339 | .ion-bookmark:before { content: "\f26b"; } 340 | 341 | .ion-bowtie:before { content: "\f3c0"; } 342 | 343 | .ion-briefcase:before { content: "\f26c"; } 344 | 345 | .ion-bug:before { content: "\f2be"; } 346 | 347 | .ion-calculator:before { content: "\f26d"; } 348 | 349 | .ion-calendar:before { content: "\f117"; } 350 | 351 | .ion-camera:before { content: "\f118"; } 352 | 353 | .ion-card:before { content: "\f119"; } 354 | 355 | .ion-cash:before { content: "\f316"; } 356 | 357 | .ion-chatbox:before { content: "\f11b"; } 358 | 359 | .ion-chatbox-working:before { content: "\f11a"; } 360 | 361 | .ion-chatboxes:before { content: "\f11c"; } 362 | 363 | .ion-chatbubble:before { content: "\f11e"; } 364 | 365 | .ion-chatbubble-working:before { content: "\f11d"; } 366 | 367 | .ion-chatbubbles:before { content: "\f11f"; } 368 | 369 | .ion-checkmark:before { content: "\f122"; } 370 | 371 | .ion-checkmark-circled:before { content: "\f120"; } 372 | 373 | .ion-checkmark-round:before { content: "\f121"; } 374 | 375 | .ion-chevron-down:before { content: "\f123"; } 376 | 377 | .ion-chevron-left:before { content: "\f124"; } 378 | 379 | .ion-chevron-right:before { content: "\f125"; } 380 | 381 | .ion-chevron-up:before { content: "\f126"; } 382 | 383 | .ion-clipboard:before { content: "\f127"; } 384 | 385 | .ion-clock:before { content: "\f26e"; } 386 | 387 | .ion-close:before { content: "\f12a"; } 388 | 389 | .ion-close-circled:before { content: "\f128"; } 390 | 391 | .ion-close-round:before { content: "\f129"; } 392 | 393 | .ion-closed-captioning:before { content: "\f317"; } 394 | 395 | .ion-cloud:before { content: "\f12b"; } 396 | 397 | .ion-code:before { content: "\f271"; } 398 | 399 | .ion-code-download:before { content: "\f26f"; } 400 | 401 | .ion-code-working:before { content: "\f270"; } 402 | 403 | .ion-coffee:before { content: "\f272"; } 404 | 405 | .ion-compass:before { content: "\f273"; } 406 | 407 | .ion-compose:before { content: "\f12c"; } 408 | 409 | .ion-connection-bars:before { content: "\f274"; } 410 | 411 | .ion-contrast:before { content: "\f275"; } 412 | 413 | .ion-crop:before { content: "\f3c1"; } 414 | 415 | .ion-cube:before { content: "\f318"; } 416 | 417 | .ion-disc:before { content: "\f12d"; } 418 | 419 | .ion-document:before { content: "\f12f"; } 420 | 421 | .ion-document-text:before { content: "\f12e"; } 422 | 423 | .ion-drag:before { content: "\f130"; } 424 | 425 | .ion-earth:before { content: "\f276"; } 426 | 427 | .ion-easel:before { content: "\f3c2"; } 428 | 429 | .ion-edit:before { content: "\f2bf"; } 430 | 431 | .ion-egg:before { content: "\f277"; } 432 | 433 | .ion-eject:before { content: "\f131"; } 434 | 435 | .ion-email:before { content: "\f132"; } 436 | 437 | .ion-email-unread:before { content: "\f3c3"; } 438 | 439 | .ion-erlenmeyer-flask:before { content: "\f3c5"; } 440 | 441 | .ion-erlenmeyer-flask-bubbles:before { content: "\f3c4"; } 442 | 443 | .ion-eye:before { content: "\f133"; } 444 | 445 | .ion-eye-disabled:before { content: "\f306"; } 446 | 447 | .ion-female:before { content: "\f278"; } 448 | 449 | .ion-filing:before { content: "\f134"; } 450 | 451 | .ion-film-marker:before { content: "\f135"; } 452 | 453 | .ion-fireball:before { content: "\f319"; } 454 | 455 | .ion-flag:before { content: "\f279"; } 456 | 457 | .ion-flame:before { content: "\f31a"; } 458 | 459 | .ion-flash:before { content: "\f137"; } 460 | 461 | .ion-flash-off:before { content: "\f136"; } 462 | 463 | .ion-folder:before { content: "\f139"; } 464 | 465 | .ion-fork:before { content: "\f27a"; } 466 | 467 | .ion-fork-repo:before { content: "\f2c0"; } 468 | 469 | .ion-forward:before { content: "\f13a"; } 470 | 471 | .ion-funnel:before { content: "\f31b"; } 472 | 473 | .ion-gear-a:before { content: "\f13d"; } 474 | 475 | .ion-gear-b:before { content: "\f13e"; } 476 | 477 | .ion-grid:before { content: "\f13f"; } 478 | 479 | .ion-hammer:before { content: "\f27b"; } 480 | 481 | .ion-happy:before { content: "\f31c"; } 482 | 483 | .ion-happy-outline:before { content: "\f3c6"; } 484 | 485 | .ion-headphone:before { content: "\f140"; } 486 | 487 | .ion-heart:before { content: "\f141"; } 488 | 489 | .ion-heart-broken:before { content: "\f31d"; } 490 | 491 | .ion-help:before { content: "\f143"; } 492 | 493 | .ion-help-buoy:before { content: "\f27c"; } 494 | 495 | .ion-help-circled:before { content: "\f142"; } 496 | 497 | .ion-home:before { content: "\f144"; } 498 | 499 | .ion-icecream:before { content: "\f27d"; } 500 | 501 | .ion-image:before { content: "\f147"; } 502 | 503 | .ion-images:before { content: "\f148"; } 504 | 505 | .ion-information:before { content: "\f14a"; } 506 | 507 | .ion-information-circled:before { content: "\f149"; } 508 | 509 | .ion-ionic:before { content: "\f14b"; } 510 | 511 | .ion-ios-alarm:before { content: "\f3c8"; } 512 | 513 | .ion-ios-alarm-outline:before { content: "\f3c7"; } 514 | 515 | .ion-ios-albums:before { content: "\f3ca"; } 516 | 517 | .ion-ios-albums-outline:before { content: "\f3c9"; } 518 | 519 | .ion-ios-americanfootball:before { content: "\f3cc"; } 520 | 521 | .ion-ios-americanfootball-outline:before { content: "\f3cb"; } 522 | 523 | .ion-ios-analytics:before { content: "\f3ce"; } 524 | 525 | .ion-ios-analytics-outline:before { content: "\f3cd"; } 526 | 527 | .ion-ios-arrow-back:before { content: "\f3cf"; } 528 | 529 | .ion-ios-arrow-down:before { content: "\f3d0"; } 530 | 531 | .ion-ios-arrow-forward:before { content: "\f3d1"; } 532 | 533 | .ion-ios-arrow-left:before { content: "\f3d2"; } 534 | 535 | .ion-ios-arrow-right:before { content: "\f3d3"; } 536 | 537 | .ion-ios-arrow-thin-down:before { content: "\f3d4"; } 538 | 539 | .ion-ios-arrow-thin-left:before { content: "\f3d5"; } 540 | 541 | .ion-ios-arrow-thin-right:before { content: "\f3d6"; } 542 | 543 | .ion-ios-arrow-thin-up:before { content: "\f3d7"; } 544 | 545 | .ion-ios-arrow-up:before { content: "\f3d8"; } 546 | 547 | .ion-ios-at:before { content: "\f3da"; } 548 | 549 | .ion-ios-at-outline:before { content: "\f3d9"; } 550 | 551 | .ion-ios-barcode:before { content: "\f3dc"; } 552 | 553 | .ion-ios-barcode-outline:before { content: "\f3db"; } 554 | 555 | .ion-ios-baseball:before { content: "\f3de"; } 556 | 557 | .ion-ios-baseball-outline:before { content: "\f3dd"; } 558 | 559 | .ion-ios-basketball:before { content: "\f3e0"; } 560 | 561 | .ion-ios-basketball-outline:before { content: "\f3df"; } 562 | 563 | .ion-ios-bell:before { content: "\f3e2"; } 564 | 565 | .ion-ios-bell-outline:before { content: "\f3e1"; } 566 | 567 | .ion-ios-body:before { content: "\f3e4"; } 568 | 569 | .ion-ios-body-outline:before { content: "\f3e3"; } 570 | 571 | .ion-ios-bolt:before { content: "\f3e6"; } 572 | 573 | .ion-ios-bolt-outline:before { content: "\f3e5"; } 574 | 575 | .ion-ios-book:before { content: "\f3e8"; } 576 | 577 | .ion-ios-book-outline:before { content: "\f3e7"; } 578 | 579 | .ion-ios-bookmarks:before { content: "\f3ea"; } 580 | 581 | .ion-ios-bookmarks-outline:before { content: "\f3e9"; } 582 | 583 | .ion-ios-box:before { content: "\f3ec"; } 584 | 585 | .ion-ios-box-outline:before { content: "\f3eb"; } 586 | 587 | .ion-ios-briefcase:before { content: "\f3ee"; } 588 | 589 | .ion-ios-briefcase-outline:before { content: "\f3ed"; } 590 | 591 | .ion-ios-browsers:before { content: "\f3f0"; } 592 | 593 | .ion-ios-browsers-outline:before { content: "\f3ef"; } 594 | 595 | .ion-ios-calculator:before { content: "\f3f2"; } 596 | 597 | .ion-ios-calculator-outline:before { content: "\f3f1"; } 598 | 599 | .ion-ios-calendar:before { content: "\f3f4"; } 600 | 601 | .ion-ios-calendar-outline:before { content: "\f3f3"; } 602 | 603 | .ion-ios-camera:before { content: "\f3f6"; } 604 | 605 | .ion-ios-camera-outline:before { content: "\f3f5"; } 606 | 607 | .ion-ios-cart:before { content: "\f3f8"; } 608 | 609 | .ion-ios-cart-outline:before { content: "\f3f7"; } 610 | 611 | .ion-ios-chatboxes:before { content: "\f3fa"; } 612 | 613 | .ion-ios-chatboxes-outline:before { content: "\f3f9"; } 614 | 615 | .ion-ios-chatbubble:before { content: "\f3fc"; } 616 | 617 | .ion-ios-chatbubble-outline:before { content: "\f3fb"; } 618 | 619 | .ion-ios-checkmark:before { content: "\f3ff"; } 620 | 621 | .ion-ios-checkmark-empty:before { content: "\f3fd"; } 622 | 623 | .ion-ios-checkmark-outline:before { content: "\f3fe"; } 624 | 625 | .ion-ios-circle-filled:before { content: "\f400"; } 626 | 627 | .ion-ios-circle-outline:before { content: "\f401"; } 628 | 629 | .ion-ios-clock:before { content: "\f403"; } 630 | 631 | .ion-ios-clock-outline:before { content: "\f402"; } 632 | 633 | .ion-ios-close:before { content: "\f406"; } 634 | 635 | .ion-ios-close-empty:before { content: "\f404"; } 636 | 637 | .ion-ios-close-outline:before { content: "\f405"; } 638 | 639 | .ion-ios-cloud:before { content: "\f40c"; } 640 | 641 | .ion-ios-cloud-download:before { content: "\f408"; } 642 | 643 | .ion-ios-cloud-download-outline:before { content: "\f407"; } 644 | 645 | .ion-ios-cloud-outline:before { content: "\f409"; } 646 | 647 | .ion-ios-cloud-upload:before { content: "\f40b"; } 648 | 649 | .ion-ios-cloud-upload-outline:before { content: "\f40a"; } 650 | 651 | .ion-ios-cloudy:before { content: "\f410"; } 652 | 653 | .ion-ios-cloudy-night:before { content: "\f40e"; } 654 | 655 | .ion-ios-cloudy-night-outline:before { content: "\f40d"; } 656 | 657 | .ion-ios-cloudy-outline:before { content: "\f40f"; } 658 | 659 | .ion-ios-cog:before { content: "\f412"; } 660 | 661 | .ion-ios-cog-outline:before { content: "\f411"; } 662 | 663 | .ion-ios-color-filter:before { content: "\f414"; } 664 | 665 | .ion-ios-color-filter-outline:before { content: "\f413"; } 666 | 667 | .ion-ios-color-wand:before { content: "\f416"; } 668 | 669 | .ion-ios-color-wand-outline:before { content: "\f415"; } 670 | 671 | .ion-ios-compose:before { content: "\f418"; } 672 | 673 | .ion-ios-compose-outline:before { content: "\f417"; } 674 | 675 | .ion-ios-contact:before { content: "\f41a"; } 676 | 677 | .ion-ios-contact-outline:before { content: "\f419"; } 678 | 679 | .ion-ios-copy:before { content: "\f41c"; } 680 | 681 | .ion-ios-copy-outline:before { content: "\f41b"; } 682 | 683 | .ion-ios-crop:before { content: "\f41e"; } 684 | 685 | .ion-ios-crop-strong:before { content: "\f41d"; } 686 | 687 | .ion-ios-download:before { content: "\f420"; } 688 | 689 | .ion-ios-download-outline:before { content: "\f41f"; } 690 | 691 | .ion-ios-drag:before { content: "\f421"; } 692 | 693 | .ion-ios-email:before { content: "\f423"; } 694 | 695 | .ion-ios-email-outline:before { content: "\f422"; } 696 | 697 | .ion-ios-eye:before { content: "\f425"; } 698 | 699 | .ion-ios-eye-outline:before { content: "\f424"; } 700 | 701 | .ion-ios-fastforward:before { content: "\f427"; } 702 | 703 | .ion-ios-fastforward-outline:before { content: "\f426"; } 704 | 705 | .ion-ios-filing:before { content: "\f429"; } 706 | 707 | .ion-ios-filing-outline:before { content: "\f428"; } 708 | 709 | .ion-ios-film:before { content: "\f42b"; } 710 | 711 | .ion-ios-film-outline:before { content: "\f42a"; } 712 | 713 | .ion-ios-flag:before { content: "\f42d"; } 714 | 715 | .ion-ios-flag-outline:before { content: "\f42c"; } 716 | 717 | .ion-ios-flame:before { content: "\f42f"; } 718 | 719 | .ion-ios-flame-outline:before { content: "\f42e"; } 720 | 721 | .ion-ios-flask:before { content: "\f431"; } 722 | 723 | .ion-ios-flask-outline:before { content: "\f430"; } 724 | 725 | .ion-ios-flower:before { content: "\f433"; } 726 | 727 | .ion-ios-flower-outline:before { content: "\f432"; } 728 | 729 | .ion-ios-folder:before { content: "\f435"; } 730 | 731 | .ion-ios-folder-outline:before { content: "\f434"; } 732 | 733 | .ion-ios-football:before { content: "\f437"; } 734 | 735 | .ion-ios-football-outline:before { content: "\f436"; } 736 | 737 | .ion-ios-game-controller-a:before { content: "\f439"; } 738 | 739 | .ion-ios-game-controller-a-outline:before { content: "\f438"; } 740 | 741 | .ion-ios-game-controller-b:before { content: "\f43b"; } 742 | 743 | .ion-ios-game-controller-b-outline:before { content: "\f43a"; } 744 | 745 | .ion-ios-gear:before { content: "\f43d"; } 746 | 747 | .ion-ios-gear-outline:before { content: "\f43c"; } 748 | 749 | .ion-ios-glasses:before { content: "\f43f"; } 750 | 751 | .ion-ios-glasses-outline:before { content: "\f43e"; } 752 | 753 | .ion-ios-grid-view:before { content: "\f441"; } 754 | 755 | .ion-ios-grid-view-outline:before { content: "\f440"; } 756 | 757 | .ion-ios-heart:before { content: "\f443"; } 758 | 759 | .ion-ios-heart-outline:before { content: "\f442"; } 760 | 761 | .ion-ios-help:before { content: "\f446"; } 762 | 763 | .ion-ios-help-empty:before { content: "\f444"; } 764 | 765 | .ion-ios-help-outline:before { content: "\f445"; } 766 | 767 | .ion-ios-home:before { content: "\f448"; } 768 | 769 | .ion-ios-home-outline:before { content: "\f447"; } 770 | 771 | .ion-ios-infinite:before { content: "\f44a"; } 772 | 773 | .ion-ios-infinite-outline:before { content: "\f449"; } 774 | 775 | .ion-ios-information:before { content: "\f44d"; } 776 | 777 | .ion-ios-information-empty:before { content: "\f44b"; } 778 | 779 | .ion-ios-information-outline:before { content: "\f44c"; } 780 | 781 | .ion-ios-ionic-outline:before { content: "\f44e"; } 782 | 783 | .ion-ios-keypad:before { content: "\f450"; } 784 | 785 | .ion-ios-keypad-outline:before { content: "\f44f"; } 786 | 787 | .ion-ios-lightbulb:before { content: "\f452"; } 788 | 789 | .ion-ios-lightbulb-outline:before { content: "\f451"; } 790 | 791 | .ion-ios-list:before { content: "\f454"; } 792 | 793 | .ion-ios-list-outline:before { content: "\f453"; } 794 | 795 | .ion-ios-location:before { content: "\f456"; } 796 | 797 | .ion-ios-location-outline:before { content: "\f455"; } 798 | 799 | .ion-ios-locked:before { content: "\f458"; } 800 | 801 | .ion-ios-locked-outline:before { content: "\f457"; } 802 | 803 | .ion-ios-loop:before { content: "\f45a"; } 804 | 805 | .ion-ios-loop-strong:before { content: "\f459"; } 806 | 807 | .ion-ios-medical:before { content: "\f45c"; } 808 | 809 | .ion-ios-medical-outline:before { content: "\f45b"; } 810 | 811 | .ion-ios-medkit:before { content: "\f45e"; } 812 | 813 | .ion-ios-medkit-outline:before { content: "\f45d"; } 814 | 815 | .ion-ios-mic:before { content: "\f461"; } 816 | 817 | .ion-ios-mic-off:before { content: "\f45f"; } 818 | 819 | .ion-ios-mic-outline:before { content: "\f460"; } 820 | 821 | .ion-ios-minus:before { content: "\f464"; } 822 | 823 | .ion-ios-minus-empty:before { content: "\f462"; } 824 | 825 | .ion-ios-minus-outline:before { content: "\f463"; } 826 | 827 | .ion-ios-monitor:before { content: "\f466"; } 828 | 829 | .ion-ios-monitor-outline:before { content: "\f465"; } 830 | 831 | .ion-ios-moon:before { content: "\f468"; } 832 | 833 | .ion-ios-moon-outline:before { content: "\f467"; } 834 | 835 | .ion-ios-more:before { content: "\f46a"; } 836 | 837 | .ion-ios-more-outline:before { content: "\f469"; } 838 | 839 | .ion-ios-musical-note:before { content: "\f46b"; } 840 | 841 | .ion-ios-musical-notes:before { content: "\f46c"; } 842 | 843 | .ion-ios-navigate:before { content: "\f46e"; } 844 | 845 | .ion-ios-navigate-outline:before { content: "\f46d"; } 846 | 847 | .ion-ios-nutrition:before { content: "\f470"; } 848 | 849 | .ion-ios-nutrition-outline:before { content: "\f46f"; } 850 | 851 | .ion-ios-paper:before { content: "\f472"; } 852 | 853 | .ion-ios-paper-outline:before { content: "\f471"; } 854 | 855 | .ion-ios-paperplane:before { content: "\f474"; } 856 | 857 | .ion-ios-paperplane-outline:before { content: "\f473"; } 858 | 859 | .ion-ios-partlysunny:before { content: "\f476"; } 860 | 861 | .ion-ios-partlysunny-outline:before { content: "\f475"; } 862 | 863 | .ion-ios-pause:before { content: "\f478"; } 864 | 865 | .ion-ios-pause-outline:before { content: "\f477"; } 866 | 867 | .ion-ios-paw:before { content: "\f47a"; } 868 | 869 | .ion-ios-paw-outline:before { content: "\f479"; } 870 | 871 | .ion-ios-people:before { content: "\f47c"; } 872 | 873 | .ion-ios-people-outline:before { content: "\f47b"; } 874 | 875 | .ion-ios-person:before { content: "\f47e"; } 876 | 877 | .ion-ios-person-outline:before { content: "\f47d"; } 878 | 879 | .ion-ios-personadd:before { content: "\f480"; } 880 | 881 | .ion-ios-personadd-outline:before { content: "\f47f"; } 882 | 883 | .ion-ios-photos:before { content: "\f482"; } 884 | 885 | .ion-ios-photos-outline:before { content: "\f481"; } 886 | 887 | .ion-ios-pie:before { content: "\f484"; } 888 | 889 | .ion-ios-pie-outline:before { content: "\f483"; } 890 | 891 | .ion-ios-pint:before { content: "\f486"; } 892 | 893 | .ion-ios-pint-outline:before { content: "\f485"; } 894 | 895 | .ion-ios-play:before { content: "\f488"; } 896 | 897 | .ion-ios-play-outline:before { content: "\f487"; } 898 | 899 | .ion-ios-plus:before { content: "\f48b"; } 900 | 901 | .ion-ios-plus-empty:before { content: "\f489"; } 902 | 903 | .ion-ios-plus-outline:before { content: "\f48a"; } 904 | 905 | .ion-ios-pricetag:before { content: "\f48d"; } 906 | 907 | .ion-ios-pricetag-outline:before { content: "\f48c"; } 908 | 909 | .ion-ios-pricetags:before { content: "\f48f"; } 910 | 911 | .ion-ios-pricetags-outline:before { content: "\f48e"; } 912 | 913 | .ion-ios-printer:before { content: "\f491"; } 914 | 915 | .ion-ios-printer-outline:before { content: "\f490"; } 916 | 917 | .ion-ios-pulse:before { content: "\f493"; } 918 | 919 | .ion-ios-pulse-strong:before { content: "\f492"; } 920 | 921 | .ion-ios-rainy:before { content: "\f495"; } 922 | 923 | .ion-ios-rainy-outline:before { content: "\f494"; } 924 | 925 | .ion-ios-recording:before { content: "\f497"; } 926 | 927 | .ion-ios-recording-outline:before { content: "\f496"; } 928 | 929 | .ion-ios-redo:before { content: "\f499"; } 930 | 931 | .ion-ios-redo-outline:before { content: "\f498"; } 932 | 933 | .ion-ios-refresh:before { content: "\f49c"; } 934 | 935 | .ion-ios-refresh-empty:before { content: "\f49a"; } 936 | 937 | .ion-ios-refresh-outline:before { content: "\f49b"; } 938 | 939 | .ion-ios-reload:before { content: "\f49d"; } 940 | 941 | .ion-ios-reverse-camera:before { content: "\f49f"; } 942 | 943 | .ion-ios-reverse-camera-outline:before { content: "\f49e"; } 944 | 945 | .ion-ios-rewind:before { content: "\f4a1"; } 946 | 947 | .ion-ios-rewind-outline:before { content: "\f4a0"; } 948 | 949 | .ion-ios-rose:before { content: "\f4a3"; } 950 | 951 | .ion-ios-rose-outline:before { content: "\f4a2"; } 952 | 953 | .ion-ios-search:before { content: "\f4a5"; } 954 | 955 | .ion-ios-search-strong:before { content: "\f4a4"; } 956 | 957 | .ion-ios-settings:before { content: "\f4a7"; } 958 | 959 | .ion-ios-settings-strong:before { content: "\f4a6"; } 960 | 961 | .ion-ios-shuffle:before { content: "\f4a9"; } 962 | 963 | .ion-ios-shuffle-strong:before { content: "\f4a8"; } 964 | 965 | .ion-ios-skipbackward:before { content: "\f4ab"; } 966 | 967 | .ion-ios-skipbackward-outline:before { content: "\f4aa"; } 968 | 969 | .ion-ios-skipforward:before { content: "\f4ad"; } 970 | 971 | .ion-ios-skipforward-outline:before { content: "\f4ac"; } 972 | 973 | .ion-ios-snowy:before { content: "\f4ae"; } 974 | 975 | .ion-ios-speedometer:before { content: "\f4b0"; } 976 | 977 | .ion-ios-speedometer-outline:before { content: "\f4af"; } 978 | 979 | .ion-ios-star:before { content: "\f4b3"; } 980 | 981 | .ion-ios-star-half:before { content: "\f4b1"; } 982 | 983 | .ion-ios-star-outline:before { content: "\f4b2"; } 984 | 985 | .ion-ios-stopwatch:before { content: "\f4b5"; } 986 | 987 | .ion-ios-stopwatch-outline:before { content: "\f4b4"; } 988 | 989 | .ion-ios-sunny:before { content: "\f4b7"; } 990 | 991 | .ion-ios-sunny-outline:before { content: "\f4b6"; } 992 | 993 | .ion-ios-telephone:before { content: "\f4b9"; } 994 | 995 | .ion-ios-telephone-outline:before { content: "\f4b8"; } 996 | 997 | .ion-ios-tennisball:before { content: "\f4bb"; } 998 | 999 | .ion-ios-tennisball-outline:before { content: "\f4ba"; } 1000 | 1001 | .ion-ios-thunderstorm:before { content: "\f4bd"; } 1002 | 1003 | .ion-ios-thunderstorm-outline:before { content: "\f4bc"; } 1004 | 1005 | .ion-ios-time:before { content: "\f4bf"; } 1006 | 1007 | .ion-ios-time-outline:before { content: "\f4be"; } 1008 | 1009 | .ion-ios-timer:before { content: "\f4c1"; } 1010 | 1011 | .ion-ios-timer-outline:before { content: "\f4c0"; } 1012 | 1013 | .ion-ios-toggle:before { content: "\f4c3"; } 1014 | 1015 | .ion-ios-toggle-outline:before { content: "\f4c2"; } 1016 | 1017 | .ion-ios-trash:before { content: "\f4c5"; } 1018 | 1019 | .ion-ios-trash-outline:before { content: "\f4c4"; } 1020 | 1021 | .ion-ios-undo:before { content: "\f4c7"; } 1022 | 1023 | .ion-ios-undo-outline:before { content: "\f4c6"; } 1024 | 1025 | .ion-ios-unlocked:before { content: "\f4c9"; } 1026 | 1027 | .ion-ios-unlocked-outline:before { content: "\f4c8"; } 1028 | 1029 | .ion-ios-upload:before { content: "\f4cb"; } 1030 | 1031 | .ion-ios-upload-outline:before { content: "\f4ca"; } 1032 | 1033 | .ion-ios-videocam:before { content: "\f4cd"; } 1034 | 1035 | .ion-ios-videocam-outline:before { content: "\f4cc"; } 1036 | 1037 | .ion-ios-volume-high:before { content: "\f4ce"; } 1038 | 1039 | .ion-ios-volume-low:before { content: "\f4cf"; } 1040 | 1041 | .ion-ios-wineglass:before { content: "\f4d1"; } 1042 | 1043 | .ion-ios-wineglass-outline:before { content: "\f4d0"; } 1044 | 1045 | .ion-ios-world:before { content: "\f4d3"; } 1046 | 1047 | .ion-ios-world-outline:before { content: "\f4d2"; } 1048 | 1049 | .ion-ipad:before { content: "\f1f9"; } 1050 | 1051 | .ion-iphone:before { content: "\f1fa"; } 1052 | 1053 | .ion-ipod:before { content: "\f1fb"; } 1054 | 1055 | .ion-jet:before { content: "\f295"; } 1056 | 1057 | .ion-key:before { content: "\f296"; } 1058 | 1059 | .ion-knife:before { content: "\f297"; } 1060 | 1061 | .ion-laptop:before { content: "\f1fc"; } 1062 | 1063 | .ion-leaf:before { content: "\f1fd"; } 1064 | 1065 | .ion-levels:before { content: "\f298"; } 1066 | 1067 | .ion-lightbulb:before { content: "\f299"; } 1068 | 1069 | .ion-link:before { content: "\f1fe"; } 1070 | 1071 | .ion-load-a:before { content: "\f29a"; } 1072 | 1073 | .ion-load-b:before { content: "\f29b"; } 1074 | 1075 | .ion-load-c:before { content: "\f29c"; } 1076 | 1077 | .ion-load-d:before { content: "\f29d"; } 1078 | 1079 | .ion-location:before { content: "\f1ff"; } 1080 | 1081 | .ion-lock-combination:before { content: "\f4d4"; } 1082 | 1083 | .ion-locked:before { content: "\f200"; } 1084 | 1085 | .ion-log-in:before { content: "\f29e"; } 1086 | 1087 | .ion-log-out:before { content: "\f29f"; } 1088 | 1089 | .ion-loop:before { content: "\f201"; } 1090 | 1091 | .ion-magnet:before { content: "\f2a0"; } 1092 | 1093 | .ion-male:before { content: "\f2a1"; } 1094 | 1095 | .ion-man:before { content: "\f202"; } 1096 | 1097 | .ion-map:before { content: "\f203"; } 1098 | 1099 | .ion-medkit:before { content: "\f2a2"; } 1100 | 1101 | .ion-merge:before { content: "\f33f"; } 1102 | 1103 | .ion-mic-a:before { content: "\f204"; } 1104 | 1105 | .ion-mic-b:before { content: "\f205"; } 1106 | 1107 | .ion-mic-c:before { content: "\f206"; } 1108 | 1109 | .ion-minus:before { content: "\f209"; } 1110 | 1111 | .ion-minus-circled:before { content: "\f207"; } 1112 | 1113 | .ion-minus-round:before { content: "\f208"; } 1114 | 1115 | .ion-model-s:before { content: "\f2c1"; } 1116 | 1117 | .ion-monitor:before { content: "\f20a"; } 1118 | 1119 | .ion-more:before { content: "\f20b"; } 1120 | 1121 | .ion-mouse:before { content: "\f340"; } 1122 | 1123 | .ion-music-note:before { content: "\f20c"; } 1124 | 1125 | .ion-navicon:before { content: "\f20e"; } 1126 | 1127 | .ion-navicon-round:before { content: "\f20d"; } 1128 | 1129 | .ion-navigate:before { content: "\f2a3"; } 1130 | 1131 | .ion-network:before { content: "\f341"; } 1132 | 1133 | .ion-no-smoking:before { content: "\f2c2"; } 1134 | 1135 | .ion-nuclear:before { content: "\f2a4"; } 1136 | 1137 | .ion-outlet:before { content: "\f342"; } 1138 | 1139 | .ion-paintbrush:before { content: "\f4d5"; } 1140 | 1141 | .ion-paintbucket:before { content: "\f4d6"; } 1142 | 1143 | .ion-paper-airplane:before { content: "\f2c3"; } 1144 | 1145 | .ion-paperclip:before { content: "\f20f"; } 1146 | 1147 | .ion-pause:before { content: "\f210"; } 1148 | 1149 | .ion-person:before { content: "\f213"; } 1150 | 1151 | .ion-person-add:before { content: "\f211"; } 1152 | 1153 | .ion-person-stalker:before { content: "\f212"; } 1154 | 1155 | .ion-pie-graph:before { content: "\f2a5"; } 1156 | 1157 | .ion-pin:before { content: "\f2a6"; } 1158 | 1159 | .ion-pinpoint:before { content: "\f2a7"; } 1160 | 1161 | .ion-pizza:before { content: "\f2a8"; } 1162 | 1163 | .ion-plane:before { content: "\f214"; } 1164 | 1165 | .ion-planet:before { content: "\f343"; } 1166 | 1167 | .ion-play:before { content: "\f215"; } 1168 | 1169 | .ion-playstation:before { content: "\f30a"; } 1170 | 1171 | .ion-plus:before { content: "\f218"; } 1172 | 1173 | .ion-plus-circled:before { content: "\f216"; } 1174 | 1175 | .ion-plus-round:before { content: "\f217"; } 1176 | 1177 | .ion-podium:before { content: "\f344"; } 1178 | 1179 | .ion-pound:before { content: "\f219"; } 1180 | 1181 | .ion-power:before { content: "\f2a9"; } 1182 | 1183 | .ion-pricetag:before { content: "\f2aa"; } 1184 | 1185 | .ion-pricetags:before { content: "\f2ab"; } 1186 | 1187 | .ion-printer:before { content: "\f21a"; } 1188 | 1189 | .ion-pull-request:before { content: "\f345"; } 1190 | 1191 | .ion-qr-scanner:before { content: "\f346"; } 1192 | 1193 | .ion-quote:before { content: "\f347"; } 1194 | 1195 | .ion-radio-waves:before { content: "\f2ac"; } 1196 | 1197 | .ion-record:before { content: "\f21b"; } 1198 | 1199 | .ion-refresh:before { content: "\f21c"; } 1200 | 1201 | .ion-reply:before { content: "\f21e"; } 1202 | 1203 | .ion-reply-all:before { content: "\f21d"; } 1204 | 1205 | .ion-ribbon-a:before { content: "\f348"; } 1206 | 1207 | .ion-ribbon-b:before { content: "\f349"; } 1208 | 1209 | .ion-sad:before { content: "\f34a"; } 1210 | 1211 | .ion-sad-outline:before { content: "\f4d7"; } 1212 | 1213 | .ion-scissors:before { content: "\f34b"; } 1214 | 1215 | .ion-search:before { content: "\f21f"; } 1216 | 1217 | .ion-settings:before { content: "\f2ad"; } 1218 | 1219 | .ion-share:before { content: "\f220"; } 1220 | 1221 | .ion-shuffle:before { content: "\f221"; } 1222 | 1223 | .ion-skip-backward:before { content: "\f222"; } 1224 | 1225 | .ion-skip-forward:before { content: "\f223"; } 1226 | 1227 | .ion-social-android:before { content: "\f225"; } 1228 | 1229 | .ion-social-android-outline:before { content: "\f224"; } 1230 | 1231 | .ion-social-angular:before { content: "\f4d9"; } 1232 | 1233 | .ion-social-angular-outline:before { content: "\f4d8"; } 1234 | 1235 | .ion-social-apple:before { content: "\f227"; } 1236 | 1237 | .ion-social-apple-outline:before { content: "\f226"; } 1238 | 1239 | .ion-social-bitcoin:before { content: "\f2af"; } 1240 | 1241 | .ion-social-bitcoin-outline:before { content: "\f2ae"; } 1242 | 1243 | .ion-social-buffer:before { content: "\f229"; } 1244 | 1245 | .ion-social-buffer-outline:before { content: "\f228"; } 1246 | 1247 | .ion-social-chrome:before { content: "\f4db"; } 1248 | 1249 | .ion-social-chrome-outline:before { content: "\f4da"; } 1250 | 1251 | .ion-social-codepen:before { content: "\f4dd"; } 1252 | 1253 | .ion-social-codepen-outline:before { content: "\f4dc"; } 1254 | 1255 | .ion-social-css3:before { content: "\f4df"; } 1256 | 1257 | .ion-social-css3-outline:before { content: "\f4de"; } 1258 | 1259 | .ion-social-designernews:before { content: "\f22b"; } 1260 | 1261 | .ion-social-designernews-outline:before { content: "\f22a"; } 1262 | 1263 | .ion-social-dribbble:before { content: "\f22d"; } 1264 | 1265 | .ion-social-dribbble-outline:before { content: "\f22c"; } 1266 | 1267 | .ion-social-dropbox:before { content: "\f22f"; } 1268 | 1269 | .ion-social-dropbox-outline:before { content: "\f22e"; } 1270 | 1271 | .ion-social-euro:before { content: "\f4e1"; } 1272 | 1273 | .ion-social-euro-outline:before { content: "\f4e0"; } 1274 | 1275 | .ion-social-facebook:before { content: "\f231"; } 1276 | 1277 | .ion-social-facebook-outline:before { content: "\f230"; } 1278 | 1279 | .ion-social-foursquare:before { content: "\f34d"; } 1280 | 1281 | .ion-social-foursquare-outline:before { content: "\f34c"; } 1282 | 1283 | .ion-social-freebsd-devil:before { content: "\f2c4"; } 1284 | 1285 | .ion-social-github:before { content: "\f233"; } 1286 | 1287 | .ion-social-github-outline:before { content: "\f232"; } 1288 | 1289 | .ion-social-google:before { content: "\f34f"; } 1290 | 1291 | .ion-social-google-outline:before { content: "\f34e"; } 1292 | 1293 | .ion-social-googleplus:before { content: "\f235"; } 1294 | 1295 | .ion-social-googleplus-outline:before { content: "\f234"; } 1296 | 1297 | .ion-social-hackernews:before { content: "\f237"; } 1298 | 1299 | .ion-social-hackernews-outline:before { content: "\f236"; } 1300 | 1301 | .ion-social-html5:before { content: "\f4e3"; } 1302 | 1303 | .ion-social-html5-outline:before { content: "\f4e2"; } 1304 | 1305 | .ion-social-instagram:before { content: "\f351"; } 1306 | 1307 | .ion-social-instagram-outline:before { content: "\f350"; } 1308 | 1309 | .ion-social-javascript:before { content: "\f4e5"; } 1310 | 1311 | .ion-social-javascript-outline:before { content: "\f4e4"; } 1312 | 1313 | .ion-social-linkedin:before { content: "\f239"; } 1314 | 1315 | .ion-social-linkedin-outline:before { content: "\f238"; } 1316 | 1317 | .ion-social-markdown:before { content: "\f4e6"; } 1318 | 1319 | .ion-social-nodejs:before { content: "\f4e7"; } 1320 | 1321 | .ion-social-octocat:before { content: "\f4e8"; } 1322 | 1323 | .ion-social-pinterest:before { content: "\f2b1"; } 1324 | 1325 | .ion-social-pinterest-outline:before { content: "\f2b0"; } 1326 | 1327 | .ion-social-python:before { content: "\f4e9"; } 1328 | 1329 | .ion-social-reddit:before { content: "\f23b"; } 1330 | 1331 | .ion-social-reddit-outline:before { content: "\f23a"; } 1332 | 1333 | .ion-social-rss:before { content: "\f23d"; } 1334 | 1335 | .ion-social-rss-outline:before { content: "\f23c"; } 1336 | 1337 | .ion-social-sass:before { content: "\f4ea"; } 1338 | 1339 | .ion-social-skype:before { content: "\f23f"; } 1340 | 1341 | .ion-social-skype-outline:before { content: "\f23e"; } 1342 | 1343 | .ion-social-snapchat:before { content: "\f4ec"; } 1344 | 1345 | .ion-social-snapchat-outline:before { content: "\f4eb"; } 1346 | 1347 | .ion-social-tumblr:before { content: "\f241"; } 1348 | 1349 | .ion-social-tumblr-outline:before { content: "\f240"; } 1350 | 1351 | .ion-social-tux:before { content: "\f2c5"; } 1352 | 1353 | .ion-social-twitch:before { content: "\f4ee"; } 1354 | 1355 | .ion-social-twitch-outline:before { content: "\f4ed"; } 1356 | 1357 | .ion-social-twitter:before { content: "\f243"; } 1358 | 1359 | .ion-social-twitter-outline:before { content: "\f242"; } 1360 | 1361 | .ion-social-usd:before { content: "\f353"; } 1362 | 1363 | .ion-social-usd-outline:before { content: "\f352"; } 1364 | 1365 | .ion-social-vimeo:before { content: "\f245"; } 1366 | 1367 | .ion-social-vimeo-outline:before { content: "\f244"; } 1368 | 1369 | .ion-social-whatsapp:before { content: "\f4f0"; } 1370 | 1371 | .ion-social-whatsapp-outline:before { content: "\f4ef"; } 1372 | 1373 | .ion-social-windows:before { content: "\f247"; } 1374 | 1375 | .ion-social-windows-outline:before { content: "\f246"; } 1376 | 1377 | .ion-social-wordpress:before { content: "\f249"; } 1378 | 1379 | .ion-social-wordpress-outline:before { content: "\f248"; } 1380 | 1381 | .ion-social-yahoo:before { content: "\f24b"; } 1382 | 1383 | .ion-social-yahoo-outline:before { content: "\f24a"; } 1384 | 1385 | .ion-social-yen:before { content: "\f4f2"; } 1386 | 1387 | .ion-social-yen-outline:before { content: "\f4f1"; } 1388 | 1389 | .ion-social-youtube:before { content: "\f24d"; } 1390 | 1391 | .ion-social-youtube-outline:before { content: "\f24c"; } 1392 | 1393 | .ion-soup-can:before { content: "\f4f4"; } 1394 | 1395 | .ion-soup-can-outline:before { content: "\f4f3"; } 1396 | 1397 | .ion-speakerphone:before { content: "\f2b2"; } 1398 | 1399 | .ion-speedometer:before { content: "\f2b3"; } 1400 | 1401 | .ion-spoon:before { content: "\f2b4"; } 1402 | 1403 | .ion-star:before { content: "\f24e"; } 1404 | 1405 | .ion-stats-bars:before { content: "\f2b5"; } 1406 | 1407 | .ion-steam:before { content: "\f30b"; } 1408 | 1409 | .ion-stop:before { content: "\f24f"; } 1410 | 1411 | .ion-thermometer:before { content: "\f2b6"; } 1412 | 1413 | .ion-thumbsdown:before { content: "\f250"; } 1414 | 1415 | .ion-thumbsup:before { content: "\f251"; } 1416 | 1417 | .ion-toggle:before { content: "\f355"; } 1418 | 1419 | .ion-toggle-filled:before { content: "\f354"; } 1420 | 1421 | .ion-transgender:before { content: "\f4f5"; } 1422 | 1423 | .ion-trash-a:before { content: "\f252"; } 1424 | 1425 | .ion-trash-b:before { content: "\f253"; } 1426 | 1427 | .ion-trophy:before { content: "\f356"; } 1428 | 1429 | .ion-tshirt:before { content: "\f4f7"; } 1430 | 1431 | .ion-tshirt-outline:before { content: "\f4f6"; } 1432 | 1433 | .ion-umbrella:before { content: "\f2b7"; } 1434 | 1435 | .ion-university:before { content: "\f357"; } 1436 | 1437 | .ion-unlocked:before { content: "\f254"; } 1438 | 1439 | .ion-upload:before { content: "\f255"; } 1440 | 1441 | .ion-usb:before { content: "\f2b8"; } 1442 | 1443 | .ion-videocamera:before { content: "\f256"; } 1444 | 1445 | .ion-volume-high:before { content: "\f257"; } 1446 | 1447 | .ion-volume-low:before { content: "\f258"; } 1448 | 1449 | .ion-volume-medium:before { content: "\f259"; } 1450 | 1451 | .ion-volume-mute:before { content: "\f25a"; } 1452 | 1453 | .ion-wand:before { content: "\f358"; } 1454 | 1455 | .ion-waterdrop:before { content: "\f25b"; } 1456 | 1457 | .ion-wifi:before { content: "\f25c"; } 1458 | 1459 | .ion-wineglass:before { content: "\f2b9"; } 1460 | 1461 | .ion-woman:before { content: "\f25d"; } 1462 | 1463 | .ion-wrench:before { content: "\f2ba"; } 1464 | 1465 | .ion-xbox:before { content: "\f30c"; } 1466 | -------------------------------------------------------------------------------- /demo/app/fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/fonts/ionicons.ttf -------------------------------------------------------------------------------- /demo/app/item/item-detail.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /demo/app/item/item-detail.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from "@angular/core"; 2 | import { ActivatedRoute } from "@angular/router"; 3 | 4 | import { Item } from "./item"; 5 | import { ItemService } from "./item.service"; 6 | 7 | @Component({ 8 | selector: "ns-details", 9 | moduleId: module.id, 10 | templateUrl: "./item-detail.component.html", 11 | }) 12 | export class ItemDetailComponent implements OnInit { 13 | item: Item; 14 | 15 | constructor( 16 | private itemService: ItemService, 17 | private route: ActivatedRoute 18 | ) { } 19 | 20 | ngOnInit(): void { 21 | const id = +this.route.snapshot.params["id"]; 22 | this.item = this.itemService.getItem(id); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /demo/app/item/item.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from "@angular/core"; 2 | 3 | import { Item } from "./item"; 4 | 5 | @Injectable() 6 | export class ItemService { 7 | private items = new Array( 8 | { id: 1, name: "Ter Stegen", role: "Goalkeeper" }, 9 | { id: 3, name: "Piqué", role: "Defender" }, 10 | { id: 4, name: "I. Rakitic", role: "Midfielder" }, 11 | { id: 5, name: "Sergio", role: "Midfielder" }, 12 | { id: 6, name: "Denis Suárez", role: "Midfielder" }, 13 | { id: 7, name: "Arda", role: "Midfielder" }, 14 | { id: 8, name: "A. Iniesta", role: "Midfielder" }, 15 | { id: 9, name: "Suárez", role: "Forward" }, 16 | { id: 10, name: "Messi", role: "Forward" }, 17 | { id: 11, name: "Neymar", role: "Forward" }, 18 | { id: 12, name: "Rafinha", role: "Midfielder" }, 19 | { id: 13, name: "Cillessen", role: "Goalkeeper" }, 20 | { id: 14, name: "Mascherano", role: "Defender" }, 21 | { id: 17, name: "Paco Alcácer", role: "Forward" }, 22 | { id: 18, name: "Jordi Alba", role: "Defender" }, 23 | { id: 19, name: "Digne", role: "Defender" }, 24 | { id: 20, name: "Sergi Roberto", role: "Midfielder" }, 25 | { id: 21, name: "André Gomes", role: "Midfielder" }, 26 | { id: 22, name: "Aleix Vidal", role: "Midfielder" }, 27 | { id: 23, name: "Umtiti", role: "Defender" }, 28 | { id: 24, name: "Mathieu", role: "Defender" }, 29 | { id: 25, name: "Masip", role: "Goalkeeper" }, 30 | ); 31 | 32 | getItems(): Item[] { 33 | return this.items; 34 | } 35 | 36 | getItem(id: number): Item { 37 | return this.items.filter(item => item.id === id)[0]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /demo/app/item/item.ts: -------------------------------------------------------------------------------- 1 | export class Item { 2 | id: number; 3 | name: string; 4 | role: string; 5 | } 6 | -------------------------------------------------------------------------------- /demo/app/item/items.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /demo/app/item/items.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from "@angular/core"; 2 | 3 | import { BehaviorSubject } from 'rxjs/BehaviorSubject'; 4 | import { Item } from "./item"; 5 | import { ItemService } from "./item.service"; 6 | 7 | @Component({ 8 | selector: "ns-items", 9 | moduleId: module.id, 10 | templateUrl: "./items.component.html", 11 | }) 12 | export class ItemsComponent { 13 | public firstIcon$: BehaviorSubject = new BehaviorSubject(''); 14 | public firstIonIcon$: BehaviorSubject = new BehaviorSubject(''); 15 | public isToggled: boolean = false; 16 | constructor() { 17 | setTimeout(() => { 18 | this.firstIcon$.next('fa-glass'); 19 | this.firstIonIcon$.next('ion-close'); 20 | }); 21 | } 22 | public toggleFirst() { 23 | this.isToggled = !this.isToggled; 24 | if (this.isToggled) { 25 | this.firstIcon$.next('fa-stop'); 26 | this.firstIonIcon$.next('ion-videocamera'); 27 | } else { 28 | this.firstIcon$.next('fa-glass'); 29 | this.firstIonIcon$.next('ion-close'); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /demo/app/main.aot.ts: -------------------------------------------------------------------------------- 1 | // this import should be first in order to load some required settings (like globals and reflect-metadata) 2 | import { platformNativeScript } from "nativescript-angular/platform-static"; 3 | 4 | import { AppModuleNgFactory } from "./app.module.ngfactory"; 5 | 6 | platformNativeScript().bootstrapModuleFactory(AppModuleNgFactory); 7 | -------------------------------------------------------------------------------- /demo/app/main.ts: -------------------------------------------------------------------------------- 1 | // this import should be first in order to load some required settings (like globals and reflect-metadata) 2 | import { platformNativeScriptDynamic } from "nativescript-angular/platform"; 3 | 4 | import { AppModule } from "./app.module"; 5 | 6 | platformNativeScriptDynamic().bootstrapModule(AppModule); 7 | -------------------------------------------------------------------------------- /demo/app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "android": { 3 | "v8Flags": "--expose_gc" 4 | }, 5 | "main": "main.js", 6 | "name": "tns-template-hello-world-ng", 7 | "version": "2.5.0" 8 | } -------------------------------------------------------------------------------- /demo/app/vendor-platform.android.ts: -------------------------------------------------------------------------------- 1 | // Resolve JavaScript classes that extend a Java class, and need to resolve 2 | // their JavaScript module from a bundled script. For example: 3 | // NativeScriptApplication, NativeScriptActivity, etc. 4 | // 5 | // This module gets bundled together with the rest of the app code and the 6 | // `require` calls get resolved to the correct bundling import call. 7 | // 8 | // At runtime the module gets loaded *before* the rest of the app code, so code 9 | // placed here needs to be careful about its dependencies. 10 | 11 | require("application"); 12 | require("ui/frame"); 13 | require("ui/frame/activity"); 14 | 15 | if (global.TNS_WEBPACK) { 16 | global.__requireOverride = function (name, dir) { 17 | if (name === "./tns_modules/application/application.js") { 18 | return require("application"); 19 | } else if (name === "./tns_modules/ui/frame/frame.js") { 20 | return require("ui/frame"); 21 | } else if (name === "./tns_modules/ui/frame/activity.js") { 22 | return require("ui/frame/activity"); 23 | } 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /demo/app/vendor-platform.ios.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanWalker/nativescript-ngx-fonticon/e9085c968c62f7b8d0b4bf14cfbd706d552c60be/demo/app/vendor-platform.ios.ts -------------------------------------------------------------------------------- /demo/app/vendor.ts: -------------------------------------------------------------------------------- 1 | require("./vendor-platform"); 2 | 3 | require("reflect-metadata"); 4 | require("@angular/platform-browser"); 5 | require("@angular/core"); 6 | require("@angular/common"); 7 | require("@angular/forms"); 8 | require("@angular/http"); 9 | require("@angular/router"); 10 | 11 | require("nativescript-angular/platform-static"); 12 | require("nativescript-angular/forms"); 13 | require("nativescript-angular/router"); 14 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NativeScript Application", 3 | "license": "SEE LICENSE IN ", 4 | "readme": "NativeScript Application", 5 | "repository": "", 6 | "nativescript": { 7 | "id": "org.nativescript.sampleApp", 8 | "tns-ios": { 9 | "version": "3.3.0" 10 | }, 11 | "tns-android": { 12 | "version": "3.3.0" 13 | } 14 | }, 15 | "scripts": { 16 | "preclean": "npm i rimraf", 17 | "clean": "rimraf node_modules lib hooks platforms target 'app/**/*.js' 'app/**/*.js.map'", 18 | "postclean": "npm install", 19 | "build": "npm run ns-bundle --android --build-app --clean && npm run ns-bundle --ios --build-app --clean", 20 | "ns-bundle": "ns-bundle", 21 | "start-android-bundle": "npm run ns-bundle --android --start-app", 22 | "start-ios-bundle": "npm run ns-bundle --ios --start-app", 23 | "build-android-bundle": "npm run ns-bundle --android --build-app", 24 | "build-ios-bundle": "npm run ns-bundle --ios --build-app" 25 | }, 26 | "dependencies": { 27 | "@angular/common": "~4.4.4", 28 | "@angular/compiler": "~4.4.4", 29 | "@angular/core": "~4.4.4", 30 | "@angular/forms": "~4.4.4", 31 | "@angular/http": "~4.4.4", 32 | "@angular/platform-browser": "~4.4.4", 33 | "@angular/platform-browser-dynamic": "~4.4.4", 34 | "@angular/router": "~4.4.4", 35 | "nativescript-angular": "~4.4.1", 36 | "nativescript-ngx-fonticon": "../src", 37 | "nativescript-theme-core": "~1.0.2", 38 | "reflect-metadata": "~0.1.8", 39 | "rxjs": "~5.4.3", 40 | "tns-core-modules": "~3.2.0", 41 | "zone.js": "~0.8.17" 42 | }, 43 | "devDependencies": { 44 | "@angular/compiler-cli": "~4.4.4", 45 | "@angular/tsc-wrapped": "0.5.0", 46 | "@ngtools/webpack": "1.2.10", 47 | "babel-traverse": "6.23.1", 48 | "babel-types": "6.23.0", 49 | "babylon": "6.16.1", 50 | "copy-webpack-plugin": "~3.0.1", 51 | "extract-text-webpack-plugin": "~2.0.0-beta.4", 52 | "lazy": "1.0.11", 53 | "nativescript-css-loader": "~0.26.0", 54 | "nativescript-dev-android-snapshot": "^0.*.*", 55 | "nativescript-dev-typescript": "~0.3.5", 56 | "nativescript-dev-webpack": "0.3.5", 57 | "raw-loader": "~0.5.1", 58 | "resolve-url-loader": "~1.6.0", 59 | "typescript": "^2.5.1", 60 | "webpack": "2.2.0", 61 | "webpack-sources": "~0.1.3" 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /demo/tsconfig.aot.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2015", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "noEmitHelpers": true, 9 | "removeComments": true, 10 | "noEmitOnError": true, 11 | "lib": [ 12 | "es2017", 13 | "dom" 14 | ], 15 | "skipLibCheck": true, 16 | "baseUrl": ".", 17 | "paths": { 18 | "~/*": [ 19 | "app/*" 20 | ], 21 | "*": [ 22 | "./node_modules/tns-core-modules/*", 23 | "./node_modules/*" 24 | ] 25 | } 26 | }, 27 | "include": [ 28 | "references.d.ts", 29 | "app/main.aot.ts", 30 | "app/vendor*", 31 | "app/**/*.module.ts" 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /demo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2015", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "noEmitHelpers": true, 9 | "noImplicitUseStrict": true, 10 | "declaration": false, 11 | "removeComments": false, 12 | "noEmitOnError": true, 13 | "skipLibCheck": true, 14 | "lib": [ 15 | "es2017", 16 | "dom", 17 | "es6" 18 | ], 19 | "baseUrl": ".", 20 | "paths": { 21 | "~/*": [ 22 | "app/*" 23 | ], 24 | "*": [ 25 | "./node_modules/tns-core-modules/*", 26 | "./node_modules/*" 27 | ] 28 | } 29 | }, 30 | "include": [ 31 | "references.d.ts", 32 | "app/main.ts", 33 | "app/**/*.module.ts" 34 | ] 35 | } -------------------------------------------------------------------------------- /src/.npmignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Users Environment Variables 23 | .lock-wscript 24 | .tsdrc 25 | 26 | #IntelliJ configuration files 27 | .idea 28 | 29 | # CI build 30 | *.yml 31 | Jenkinsfile 32 | 33 | # build 34 | node_modules 35 | dist 36 | dev 37 | docs 38 | doc 39 | lib 40 | test 41 | hooks 42 | package-lock.json 43 | demo/ 44 | 45 | Thumbs.db 46 | .DS_Store 47 | *.ts 48 | !*.d.ts 49 | references.d.ts 50 | *.spec.* 51 | *.e2e.* 52 | CONTRIBUTING.md 53 | karma.conf.js 54 | protractor.conf.js 55 | test-main.js 56 | tsconfig.json 57 | tslint.json 58 | typedoc.json 59 | .travis.yml 60 | .jshintrc 61 | .editorconfig 62 | *.png 63 | resources 64 | *.css 65 | -------------------------------------------------------------------------------- /src/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # [5.0.0](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v4.2.0...v5.0.0) (2019-10-19) 2 | 3 | 4 | ### Bug Fixes 5 | 6 | * **angular:** transform args should be optional ([#55](https://github.com/NathanWalker/nativescript-ngx-fonticon/issues/55)) ([feeda29](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/feeda298281c3acfc9dbfd63c1b518d0872a40b1)) 7 | * **pipe:** check if className is a string ([eccecc6](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/eccecc6048b04611626f14bf0a3ee71e1c141d21)) 8 | * **Security:** Resolve security issues ([0ec2c09](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/0ec2c09ccaf78ea86057c3fa819c9e088a19cdc4)) 9 | 10 | 11 | 12 | # [4.2.0](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v4.1.1...v4.2.0) (2018-05-09) 13 | 14 | 15 | 16 | ## [4.1.1](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v4.1.0...v4.1.1) (2018-05-09) 17 | 18 | 19 | 20 | # [4.1.0](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v4.0.0...v4.1.0) (2018-03-28) 21 | 22 | 23 | ### Bug Fixes 24 | 25 | * no longer need to inject service in root app component ([043b056](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/043b056b9a63e1a70ef2d93befd61b4557dcb4dd)) 26 | 27 | 28 | 29 | # [4.0.0](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v2.2.3...v4.0.0) (2017-11-14) 30 | 31 | 32 | 33 | ## [2.2.3](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v2.2.2...v2.2.3) (2017-08-03) 34 | 35 | 36 | 37 | ## [2.2.2](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v2.2.1...v2.2.2) (2017-08-03) 38 | 39 | 40 | ### Bug Fixes 41 | 42 | * **semver:** Fix semver issues ([2b82c69](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/2b82c69f8736d0a4c65cbcfc904c09f2e10b5f81)) 43 | * **semver:** Support next nativescript-angular ([3a80d41](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/3a80d41892d95fcc82186c2c1f1afa79746a8f97)) 44 | * nativescript-angular peer dep fix ([78c82a1](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/78c82a1eee368bfabb49985f5d0ed88c57be0ab8)) 45 | 46 | 47 | 48 | ## [2.2.1](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v2.2.0...v2.2.1) (2017-05-22) 49 | 50 | 51 | ### Features 52 | 53 | * **nativescript-3:** Add matcher for nativescript 3 and Angular 4 ([d21bb3c](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/d21bb3ceef3872e5e2c130ad0442c5f3f61f5640)) 54 | 55 | 56 | 57 | # [2.2.0](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/v2.1.2...v2.2.0) (2017-04-20) 58 | 59 | 60 | ### Bug Fixes 61 | 62 | * **compile-error:** Adding tslib as dependency ([51dd2e9](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/51dd2e9377c399a3494d23b0b6fde2bfbaacd840)), closes [#15](https://github.com/NathanWalker/nativescript-ngx-fonticon/issues/15) 63 | * **extends-error:** Use tslib ([5ffdab6](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/5ffdab699929e2127887e8f50fc1d5dde7325e93)), closes [#15](https://github.com/NathanWalker/nativescript-ngx-fonticon/issues/15) 64 | * **webpack-build:** Use angular compiler to generate metadata ([a682769](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/a6827692ac3e2ec243e2921f97bba5e29fb133fc)), closes [#15](https://github.com/NathanWalker/nativescript-ngx-fonticon/issues/15) 65 | * **webpack-error:** Adding basic sample app for testing ([e69a5e5](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/e69a5e5f59ce9a29ee0ea6a88bba2b031b77c1a2)), closes [#15](https://github.com/NathanWalker/nativescript-ngx-fonticon/issues/15) 66 | * **webpack-error:** Use OpaqueToken for injection ([e25af7f](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/e25af7f9278210ac7e8d8e606f6457a3e96ec2b0)), closes [#15](https://github.com/NathanWalker/nativescript-ngx-fonticon/issues/15) 67 | * allow no semi-colon ([fdbf961](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/fdbf961125b934bb370aced233e711d1ed662146)) 68 | * make it compatible with minified css ([598a3a7](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/598a3a7030c9ba350dfbb2938b36c210985ea1a4)) 69 | * make it work with uppercase codes ([512c249](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/512c2493d30cae596c43b732f842088858dad725)) 70 | * publish with no .ts files ([9053443](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/90534431b947a4fffe1f300c236804d541bcd7b2)) 71 | 72 | 73 | ### Features 74 | 75 | * **AoT:** Fix wrong dependencies in sample app ([c158a7c](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/c158a7cfd343dfe5b11a08122ebd2121300c99b6)) 76 | * **AoT:** Make AoT work ([718e3d0](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/718e3d02b44d45a7780619d70675d193872a5288)), closes [#15](https://github.com/NathanWalker/nativescript-ngx-fonticon/issues/15) 77 | * **TNSFontIconModule:** simpler config with module import ([9d4598d](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/9d4598d4607669ae2c95857d2fd11ede811318a9)) 78 | * improve performance, also added addition fonticonPure pipe for optimal perf ([324f355](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/324f355040cc351e954f2cfe42e243d2b13ac8f2)) 79 | 80 | 81 | 82 | ## [1.0.4](https://github.com/NathanWalker/nativescript-ngx-fonticon/compare/45bf30e69cad06594d5f5dc0d3d9cb0600949535...1.0.4) (2016-04-03) 83 | 84 | 85 | ### Features 86 | 87 | * **TNSFontIconService:** font icon parsing complete ([45bf30e](https://github.com/NathanWalker/nativescript-ngx-fonticon/commit/45bf30e69cad06594d5f5dc0d3d9cb0600949535)) 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | export { TNSFontIconPipe, TNSFontIconPurePipe } from './pipes/fonticon.pipe'; 2 | export { TNSFontIconService, USE_STORE } from './services/fonticon.service'; 3 | export { TNSFontIconModule } from './nativescript-ngx-fonticon'; 4 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { TNSFontIconPipe, TNSFontIconPurePipe } from './pipes/fonticon.pipe'; 2 | export { TNSFontIconService, USE_STORE } from './services/fonticon.service'; 3 | export { TNSFontIconModule } from './nativescript-ngx-fonticon'; -------------------------------------------------------------------------------- /src/nativescript-ngx-fonticon.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, ModuleWithProviders, Provider } from '@angular/core'; 2 | import { TNSFontIconPipe, TNSFontIconPurePipe } from './pipes/fonticon.pipe'; 3 | import { TNSFontIconService, USE_STORE } from './services/fonticon.service'; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | TNSFontIconPipe, 8 | TNSFontIconPurePipe 9 | ], 10 | exports: [ 11 | TNSFontIconPipe, 12 | TNSFontIconPurePipe 13 | ] 14 | }) 15 | export class TNSFontIconModule { 16 | 17 | constructor(fonticon: TNSFontIconService) {} 18 | 19 | static forRoot(providedConfig: any = {}): ModuleWithProviders { 20 | return { 21 | ngModule: TNSFontIconModule, 22 | providers: [ 23 | { provide: USE_STORE, useValue: providedConfig }, 24 | TNSFontIconService 25 | ] 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nativescript-ngx-fonticon", 3 | "version": "6.0.3", 4 | "description": "Use custom font icon collections seamlessly with NativeScript for Angular.", 5 | "main": "index", 6 | "module": "index.js", 7 | "typings": "index.d.ts", 8 | "nativescript": { 9 | "platforms": { 10 | "android": "3.0.0", 11 | "ios": "3.0.0" 12 | } 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/NathanWalker/nativescript-ngx-fonticon.git" 17 | }, 18 | "keywords": [ 19 | "angular", 20 | "angular2", 21 | "ng", 22 | "ngx", 23 | "ng2", 24 | "nativescript", 25 | "icon", 26 | "font" 27 | ], 28 | "author": "Nathan Walker ", 29 | "contributors": [ 30 | { 31 | "name": "Nathanael Anderson", 32 | "email": "nathan@master-technology", 33 | "url": "https://github.com/nathanaela" 34 | }, 35 | { 36 | "name": "Martin Reinhardt", 37 | "email": "contact@martinreinhardt-online.de", 38 | "url": "https://github.com/hypery2k" 39 | } 40 | ], 41 | "license": "MIT", 42 | "bugs": { 43 | "url": "https://github.com/NathanWalker/nativescript-ngx-fonticon/issues" 44 | }, 45 | "homepage": "https://github.com/NathanWalker/nativescript-ngx-fonticon#readme", 46 | "scripts": { 47 | "prebuild": "npm i", 48 | "build": "ngc", 49 | "tsc": "tsc", 50 | "demo.ios": "npm run build; cd ../demo; tns run ios --emulator", 51 | "demo.android": "npm run build; cd ../demo; tns run android --emulator", 52 | "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", 53 | "changelog:add": "git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'", 54 | "release:pre": "npm run build", 55 | "release:post": "npm run changelog && npm run changelog:add", 56 | "release:major": "npm run release:pre && npm version major && npm run release:post && npm run version-and-push", 57 | "release:minor": "npm run release:pre && npm version minor && npm run release:post && npm run version-and-push", 58 | "release:patch": "npm run release:pre && npm version patch && npm run release:post && npm run version-and-push", 59 | "version-and-push": "git push origin && git push origin --tags && git push && npm publish" 60 | }, 61 | "devDependencies": { 62 | "@angular/common": "~9.0.0", 63 | "@angular/compiler": "~9.0.0", 64 | "@angular/compiler-cli": "~9.0.0", 65 | "@angular/core": "~9.0.0", 66 | "@angular/forms": "~9.0.0", 67 | "@angular/http": "~7.2.15", 68 | "@angular/platform-browser": "~9.0.0", 69 | "@angular/platform-browser-dynamic": "~9.0.0", 70 | "@angular/router": "~9.0.0", 71 | "conventional-changelog-cli": "~2.0.31", 72 | "@nativescript/angular": "https://github.com/nstudio/ns-ng/blob/master/nativescript-angular-9.0.0.tgz?raw=true", 73 | "nativescript-angular": "https://github.com/nstudio/ns-ng/blob/master/nativescript-angular-compat.tgz?raw=true", 74 | "reflect-metadata": "~0.1.13", 75 | "rimraf": "^2.5.1", 76 | "rxjs": "~6.5.0", 77 | "tns-core-modules": "~6.4.0", 78 | "traceur": "0.0.111", 79 | "typedoc": "^0.15.0", 80 | "typescript": "~3.7.4", 81 | "zone.js": "~0.10.1" 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/pipes/fonticon.pipe.ts: -------------------------------------------------------------------------------- 1 | import {Pipe, PipeTransform, OnDestroy, ChangeDetectorRef} from '@angular/core'; 2 | 3 | import {TNSFontIconService} from '../services/fonticon.service'; 4 | 5 | @Pipe({ 6 | name: 'fonticon', 7 | pure: false 8 | }) 9 | export class TNSFontIconPipe implements PipeTransform, OnDestroy { 10 | private _collectionName: string; 11 | private _value: ''; 12 | private _iconSub: any; 13 | 14 | constructor(private fonticon: TNSFontIconService, private _ref: ChangeDetectorRef) { } 15 | 16 | transform(className: string, args?: any[]) { 17 | if (!this._collectionName) 18 | this._collectionName = getCollectionName(className, args); 19 | 20 | if (!this._value || (this.fonticon.css && this.fonticon.css[this._collectionName] && this._value !== this.fonticon.css[this._collectionName][className])) { 21 | // only subscribe if value is changing 22 | // if there is a subscription to iconSub, clean it 23 | this._dispose(); 24 | 25 | this._iconSub = this.fonticon.filesLoaded.subscribe((data: any) => { 26 | if (data && data[this._collectionName] && data[this._collectionName][className]) { 27 | if (this._value !== data[this._collectionName][className]) { 28 | // only markForCheck if value has changed 29 | this._value = data[this._collectionName][className]; 30 | this._ref.markForCheck(); 31 | this._dispose(); 32 | } 33 | } 34 | }); 35 | } 36 | 37 | return this._value; 38 | } 39 | 40 | _dispose(): void { 41 | if (this._iconSub) { 42 | this._iconSub.unsubscribe(); 43 | this._iconSub = undefined; 44 | } 45 | } 46 | 47 | ngOnDestroy(): void { 48 | this._dispose(); 49 | } 50 | } 51 | 52 | // Can be used for optimal performance, however requires usage of Observable values with the async pipe, see demo (app.ts) for example 53 | @Pipe({ 54 | name: 'fonticonPure' 55 | }) 56 | export class TNSFontIconPurePipe implements PipeTransform { 57 | private _collectionName: string; 58 | 59 | constructor(private fonticon: TNSFontIconService) { } 60 | 61 | transform(className: string, args?: any[]) { 62 | if (!this._collectionName) 63 | this._collectionName = getCollectionName(className, args); 64 | 65 | // console.log(`fonticonPure: ${className}`); 66 | if (this.fonticon.css && this.fonticon.css[this._collectionName]) { 67 | return this.fonticon.css[this._collectionName][className]; 68 | } else { 69 | return ''; 70 | } 71 | } 72 | } 73 | 74 | function getCollectionName(className: string, args: any[]): string { 75 | if (args && args.length && args[0] !== null) { 76 | return args[0]; 77 | } else if (className && typeof className === 'string' && className.indexOf('-') > -1) { 78 | // derive from classname 79 | return className.split('-')[0]; 80 | } else { 81 | return ''; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/services/fonticon.service.ts: -------------------------------------------------------------------------------- 1 | // angular 2 | import { Injectable, Inject, InjectionToken } from "@angular/core"; 3 | 4 | // nativescript 5 | import { knownFolders } from "@nativescript/core"; 6 | 7 | // libs 8 | import { BehaviorSubject } from "rxjs"; 9 | 10 | export const USE_STORE = new InjectionToken("USE_STORE"); 11 | 12 | @Injectable({ 13 | providedIn: 'root' 14 | }) 15 | export class TNSFontIconService { 16 | static debug: boolean = false; 17 | filesLoaded: BehaviorSubject; 18 | css: any = {}; // font icon collections containing maps of classnames to unicode 19 | private _currentName: string; // current collection name 20 | 21 | constructor(@Inject(USE_STORE) private config: any) { 22 | this.filesLoaded = new BehaviorSubject(null); 23 | this.loadCss(); 24 | } 25 | 26 | loadCss() { 27 | let cnt = 0; 28 | let fontIconCollections = Object.keys(this.config); 29 | if (TNSFontIconService.debug) { 30 | console.log(`Collections to load: ${fontIconCollections}`); 31 | } 32 | 33 | let initCollection = () => { 34 | this._currentName = fontIconCollections[cnt]; 35 | this.css[this._currentName] = {}; 36 | }; 37 | 38 | let loadData = () => { 39 | initCollection(); 40 | if (cnt === fontIconCollections.length) { 41 | this.filesLoaded.next(this.css); 42 | } else { 43 | let fonts: any = this.config; 44 | this.loadCssData(this._currentName).then(() => { 45 | cnt++; 46 | loadData(); 47 | }); 48 | } 49 | }; 50 | 51 | loadData(); 52 | 53 | // Legacy flow 54 | // let loadFiles = () => { 55 | // initCollection(); 56 | // if (cnt === fontIconCollections.length) { 57 | // this.filesLoaded.next(this.css); 58 | // } else { 59 | // let fonts: any = this.config; 60 | // this.loadFile(fonts[this._currentName]).then(() => { 61 | // cnt++; 62 | // loadFiles(); 63 | // }); 64 | // } 65 | // }; 66 | } 67 | 68 | // In bundled NativeScript, don't try to load the file data in the plugin. 69 | // Instead, initialize the config data with a key value pair where 70 | // the file data is in the value, so all we need to do is parse the 71 | // file data. 72 | loadCssData(configKey): Promise { 73 | if (TNSFontIconService.debug) { 74 | console.log("----------"); 75 | console.log( 76 | "Loading collection '" + 77 | this._currentName + 78 | "' from config key name: " + 79 | configKey 80 | ); 81 | } 82 | return new Promise((resolve, reject) => { 83 | try { 84 | var cssData = this.config[configKey]; 85 | this.mapCss(cssData); 86 | resolve(); 87 | } catch (e) { 88 | reject(e); 89 | } 90 | }); 91 | } 92 | 93 | // Legacy flow for pre NS6 94 | private loadFile(path: string): Promise { 95 | if (TNSFontIconService.debug) { 96 | console.log(`----------`); 97 | console.log( 98 | `Loading collection '${this._currentName}' from file: ${path}` 99 | ); 100 | } 101 | let cssFile = knownFolders.currentApp().getFile(path); 102 | return new Promise((resolve, reject) => { 103 | cssFile.readText().then( 104 | (data: any) => { 105 | this.mapCss(data); 106 | resolve(); 107 | }, 108 | (err: any) => { 109 | reject(err); 110 | } 111 | ); 112 | }); 113 | } 114 | 115 | private mapCss(data: any): void { 116 | let sets = data.split("}"); 117 | var mappedCss = ""; 118 | let cleanValue = (val: string) => { 119 | let v = val 120 | .split("content:")[1] 121 | .toLowerCase() 122 | .replace(/\\e/, "\\ue") 123 | .replace(/\\f/, "\\uf") 124 | .trim() 125 | .replace(/\"/g, "") 126 | .replace(/;/g, ""); 127 | return v; 128 | }; 129 | 130 | for (let set of sets) { 131 | let pair = set.replace(/ /g, "").split(":before{"); 132 | let keyGroups = pair[0]; 133 | let keys = keyGroups.split(","); 134 | if (pair[1]) { 135 | let value = cleanValue(pair[1]); 136 | for (let key of keys) { 137 | key = key 138 | .trim() 139 | .slice(1) 140 | .split(":before")[0]; 141 | this.css[this._currentName][key] = String.fromCharCode( 142 | parseInt(value.substring(2), 16) 143 | ); 144 | if (TNSFontIconService.debug) { 145 | mappedCss += `${key}: ${value}\n`; 146 | } 147 | } 148 | } 149 | } 150 | 151 | if (TNSFontIconService.debug) { 152 | console.log(`mapped css:\n${mappedCss}`); 153 | } 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noImplicitAny": false, 4 | "module": "commonjs", 5 | "target": "es5", 6 | "moduleResolution": "node", 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "declaration": true, 10 | "sourceMap": false, 11 | "noEmitHelpers": true, 12 | "noEmitOnError": true, 13 | "skipLibCheck": true, 14 | "lib": ["es2017", "dom"], 15 | "baseUrl": ".", 16 | "paths": { 17 | "*": [ 18 | "./node_modules/tns-core-modules/*", 19 | "./node_modules/*" 20 | ] 21 | } 22 | }, 23 | "files": [ 24 | "index.ts" 25 | ], 26 | "exclude": [ 27 | "node_modules", 28 | "bundles" 29 | ], 30 | "angularCompilerOptions": { 31 | "strictMetadataEmit": true, 32 | "skipTemplateCodegen": true 33 | } 34 | } 35 | --------------------------------------------------------------------------------