From 30518e56d4c38a8f0b969203cee48220440fb571 Mon Sep 17 00:00:00 2001 From: Mike Fitzpatrick Date: Thu, 15 Feb 2018 20:40:34 -0500 Subject: [PATCH] Initial commit --- .editorconfig | 17 +++++++ .gitignore | 35 +++++++++++++ ionic.config.json | 6 +++ package.json | 38 ++++++++++++++ src/app/app.component.ts | 22 +++++++++ src/app/app.html | 1 + src/app/app.module.ts | 40 +++++++++++++++ src/app/app.scss | 16 ++++++ src/app/main.ts | 5 ++ src/assets/icon/favicon.ico | Bin 0 -> 1981 bytes src/assets/imgs/logo.png | Bin 0 -> 39757 bytes src/index.html | 49 ++++++++++++++++++ src/manifest.json | 13 +++++ src/pages/about/about.html | 11 +++++ src/pages/about/about.scss | 3 ++ src/pages/about/about.ts | 14 ++++++ src/pages/contact/contact.html | 17 +++++++ src/pages/contact/contact.scss | 3 ++ src/pages/contact/contact.ts | 14 ++++++ src/pages/home/home.html | 17 +++++++ src/pages/home/home.scss | 3 ++ src/pages/home/home.ts | 14 ++++++ src/pages/tabs/tabs.html | 5 ++ src/pages/tabs/tabs.ts | 19 +++++++ src/service-worker.js | 31 ++++++++++++ src/theme/variables.scss | 88 +++++++++++++++++++++++++++++++++ tsconfig.json | 28 +++++++++++ tslint.json | 11 +++++ 28 files changed, 520 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 ionic.config.json create mode 100644 package.json create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.html create mode 100644 src/app/app.module.ts create mode 100644 src/app/app.scss create mode 100644 src/app/main.ts create mode 100644 src/assets/icon/favicon.ico create mode 100644 src/assets/imgs/logo.png create mode 100644 src/index.html create mode 100644 src/manifest.json create mode 100644 src/pages/about/about.html create mode 100644 src/pages/about/about.scss create mode 100644 src/pages/about/about.ts create mode 100644 src/pages/contact/contact.html create mode 100644 src/pages/contact/contact.scss create mode 100644 src/pages/contact/contact.ts create mode 100644 src/pages/home/home.html create mode 100644 src/pages/home/home.scss create mode 100644 src/pages/home/home.ts create mode 100644 src/pages/tabs/tabs.html create mode 100644 src/pages/tabs/tabs.ts create mode 100644 src/service-worker.js create mode 100644 src/theme/variables.scss create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..51873bc --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 2 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..faf0575 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# Specifies intentionally untracked files to ignore when using Git +# http://git-scm.com/docs/gitignore + +*~ +*.sw[mnpcod] +*.log +*.tmp +*.tmp.* +log.txt +*.sublime-project +*.sublime-workspace +.vscode/ +npm-debug.log* + +.idea/ +.sourcemaps/ +.sass-cache/ +.tmp/ +.versions/ +coverage/ +dist/ +node_modules/ +tmp/ +temp/ +hooks/ +platforms/ +plugins/ +plugins/android.json +plugins/ios.json +www/ +$RECYCLE.BIN/ + +.DS_Store +Thumbs.db +UserInterfaceState.xcuserstate diff --git a/ionic.config.json b/ionic.config.json new file mode 100644 index 0000000..0403e3a --- /dev/null +++ b/ionic.config.json @@ -0,0 +1,6 @@ +{ + "name": "grindd", + "app_id": "", + "type": "ionic-angular", + "integrations": {} +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8446127 --- /dev/null +++ b/package.json @@ -0,0 +1,38 @@ +{ + "name": "grindd", + "version": "0.0.1", + "author": "Ionic Framework", + "homepage": "http://ionicframework.com/", + "private": true, + "scripts": { + "clean": "ionic-app-scripts clean", + "build": "ionic-app-scripts build", + "lint": "ionic-app-scripts lint", + "ionic:build": "ionic-app-scripts build", + "ionic:serve": "ionic-app-scripts serve" + }, + "dependencies": { + "@angular/common": "5.0.3", + "@angular/compiler": "5.0.3", + "@angular/compiler-cli": "5.0.3", + "@angular/core": "5.0.3", + "@angular/forms": "5.0.3", + "@angular/http": "5.0.3", + "@angular/platform-browser": "5.0.3", + "@angular/platform-browser-dynamic": "5.0.3", + "@ionic-native/core": "4.4.0", + "@ionic-native/splash-screen": "4.4.0", + "@ionic-native/status-bar": "4.4.0", + "@ionic/storage": "2.1.3", + "ionic-angular": "3.9.2", + "ionicons": "3.0.0", + "rxjs": "5.5.2", + "sw-toolbox": "3.6.0", + "zone.js": "0.8.18" + }, + "devDependencies": { + "@ionic/app-scripts": "3.1.8", + "typescript": "2.4.2" + }, + "description": "An Ionic project" +} diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..a28e8d2 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,22 @@ +import { Component } from '@angular/core'; +import { Platform } from 'ionic-angular'; +import { StatusBar } from '@ionic-native/status-bar'; +import { SplashScreen } from '@ionic-native/splash-screen'; + +import { TabsPage } from '../pages/tabs/tabs'; + +@Component({ + templateUrl: 'app.html' +}) +export class MyApp { + rootPage:any = TabsPage; + + constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) { + platform.ready().then(() => { + // Okay, so the platform is ready and our plugins are available. + // Here you can do any higher level native things you might need. + statusBar.styleDefault(); + splashScreen.hide(); + }); + } +} diff --git a/src/app/app.html b/src/app/app.html new file mode 100644 index 0000000..7b88c96 --- /dev/null +++ b/src/app/app.html @@ -0,0 +1 @@ + diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000..e2c9d8d --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,40 @@ +import { NgModule, ErrorHandler } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; +import { MyApp } from './app.component'; + +import { AboutPage } from '../pages/about/about'; +import { ContactPage } from '../pages/contact/contact'; +import { HomePage } from '../pages/home/home'; +import { TabsPage } from '../pages/tabs/tabs'; + +import { StatusBar } from '@ionic-native/status-bar'; +import { SplashScreen } from '@ionic-native/splash-screen'; + +@NgModule({ + declarations: [ + MyApp, + AboutPage, + ContactPage, + HomePage, + TabsPage + ], + imports: [ + BrowserModule, + IonicModule.forRoot(MyApp) + ], + bootstrap: [IonicApp], + entryComponents: [ + MyApp, + AboutPage, + ContactPage, + HomePage, + TabsPage + ], + providers: [ + StatusBar, + SplashScreen, + {provide: ErrorHandler, useClass: IonicErrorHandler} + ] +}) +export class AppModule {} diff --git a/src/app/app.scss b/src/app/app.scss new file mode 100644 index 0000000..1392a6e --- /dev/null +++ b/src/app/app.scss @@ -0,0 +1,16 @@ +// http://ionicframework.com/docs/theming/ + + +// App Global Sass +// -------------------------------------------------- +// Put style rules here that you want to apply globally. These +// styles are for the entire app and not just one component. +// Additionally, this file can be also used as an entry point +// to import other Sass files to be included in the output CSS. +// +// Shared Sass variables, which can be used to adjust Ionic's +// default Sass variables, belong in "theme/variables.scss". +// +// To declare rules for a specific mode, create a child rule +// for the .md, .ios, or .wp mode classes. The mode class is +// automatically applied to the element in the app. diff --git a/src/app/main.ts b/src/app/main.ts new file mode 100644 index 0000000..6af7a5b --- /dev/null +++ b/src/app/main.ts @@ -0,0 +1,5 @@ +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app.module'; + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/src/assets/icon/favicon.ico b/src/assets/icon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d76fa29d65b869e7df297c06a637b9dceef46966 GIT binary patch literal 1981 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 + + + + Ionic App + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..f6456bb --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,13 @@ +{ + "name": "Ionic", + "short_name": "Ionic", + "start_url": "index.html", + "display": "standalone", + "icons": [{ + "src": "assets/imgs/logo.png", + "sizes": "512x512", + "type": "image/png" + }], + "background_color": "#4e8ef7", + "theme_color": "#4e8ef7" +} \ No newline at end of file diff --git a/src/pages/about/about.html b/src/pages/about/about.html new file mode 100644 index 0000000..2763c93 --- /dev/null +++ b/src/pages/about/about.html @@ -0,0 +1,11 @@ + + + + About + + + + + + + diff --git a/src/pages/about/about.scss b/src/pages/about/about.scss new file mode 100644 index 0000000..639956d --- /dev/null +++ b/src/pages/about/about.scss @@ -0,0 +1,3 @@ +page-about { + +} diff --git a/src/pages/about/about.ts b/src/pages/about/about.ts new file mode 100644 index 0000000..a7ee80a --- /dev/null +++ b/src/pages/about/about.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { NavController } from 'ionic-angular'; + +@Component({ + selector: 'page-about', + templateUrl: 'about.html' +}) +export class AboutPage { + + constructor(public navCtrl: NavController) { + + } + +} diff --git a/src/pages/contact/contact.html b/src/pages/contact/contact.html new file mode 100644 index 0000000..9fd7a43 --- /dev/null +++ b/src/pages/contact/contact.html @@ -0,0 +1,17 @@ + + + + Contact + + + + + + + Follow us on Twitter + + + @ionicframework + + + diff --git a/src/pages/contact/contact.scss b/src/pages/contact/contact.scss new file mode 100644 index 0000000..13d4440 --- /dev/null +++ b/src/pages/contact/contact.scss @@ -0,0 +1,3 @@ +page-contact { + +} diff --git a/src/pages/contact/contact.ts b/src/pages/contact/contact.ts new file mode 100644 index 0000000..3ccadc9 --- /dev/null +++ b/src/pages/contact/contact.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { NavController } from 'ionic-angular'; + +@Component({ + selector: 'page-contact', + templateUrl: 'contact.html' +}) +export class ContactPage { + + constructor(public navCtrl: NavController) { + + } + +} diff --git a/src/pages/home/home.html b/src/pages/home/home.html new file mode 100644 index 0000000..485991e --- /dev/null +++ b/src/pages/home/home.html @@ -0,0 +1,17 @@ + + + Home + + + + +

Welcome to Ionic!

+

+ This starter project comes with simple tabs-based layout for apps + that are going to primarily use a Tabbed UI. +

+

+ Take a look at the src/pages/ directory to add or change tabs, + update any existing page or create new pages. +

+
diff --git a/src/pages/home/home.scss b/src/pages/home/home.scss new file mode 100644 index 0000000..d4cc8fc --- /dev/null +++ b/src/pages/home/home.scss @@ -0,0 +1,3 @@ +page-home { + +} diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts new file mode 100644 index 0000000..1d510dd --- /dev/null +++ b/src/pages/home/home.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { NavController } from 'ionic-angular'; + +@Component({ + selector: 'page-home', + templateUrl: 'home.html' +}) +export class HomePage { + + constructor(public navCtrl: NavController) { + + } + +} diff --git a/src/pages/tabs/tabs.html b/src/pages/tabs/tabs.html new file mode 100644 index 0000000..fa3921a --- /dev/null +++ b/src/pages/tabs/tabs.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/pages/tabs/tabs.ts b/src/pages/tabs/tabs.ts new file mode 100644 index 0000000..f80301b --- /dev/null +++ b/src/pages/tabs/tabs.ts @@ -0,0 +1,19 @@ +import { Component } from '@angular/core'; + +import { AboutPage } from '../about/about'; +import { ContactPage } from '../contact/contact'; +import { HomePage } from '../home/home'; + +@Component({ + templateUrl: 'tabs.html' +}) +export class TabsPage { + + tab1Root = HomePage; + tab2Root = AboutPage; + tab3Root = ContactPage; + + constructor() { + + } +} diff --git a/src/service-worker.js b/src/service-worker.js new file mode 100644 index 0000000..ffbbb06 --- /dev/null +++ b/src/service-worker.js @@ -0,0 +1,31 @@ +/** + * Check out https://googlechromelabs.github.io/sw-toolbox/ for + * more info on how to use sw-toolbox to custom configure your service worker. + */ + + +'use strict'; +importScripts('./build/sw-toolbox.js'); + +self.toolbox.options.cache = { + name: 'ionic-cache' +}; + +// pre-cache our key assets +self.toolbox.precache( + [ + './build/main.js', + './build/vendor.js', + './build/main.css', + './build/polyfills.js', + 'index.html', + 'manifest.json' + ] +); + +// dynamically cache any other local assets +self.toolbox.router.any('/*', self.toolbox.fastest); + +// for any other requests go to the network, cache, +// and then only use that cached resource if your user goes offline +self.toolbox.router.default = self.toolbox.networkFirst; diff --git a/src/theme/variables.scss b/src/theme/variables.scss new file mode 100644 index 0000000..18276a4 --- /dev/null +++ b/src/theme/variables.scss @@ -0,0 +1,88 @@ +// Ionic Variables and Theming. For more info, please see: +// http://ionicframework.com/docs/theming/ + +// Font path is used to include ionicons, +// roboto, and noto sans fonts +$font-path: "../assets/fonts"; + + +// The app direction is used to include +// rtl styles in your app. For more info, please see: +// http://ionicframework.com/docs/theming/rtl-support/ +$app-direction: ltr; + + +@import "ionic.globals"; + + +// Shared Variables +// -------------------------------------------------- +// To customize the look and feel of this app, you can override +// the Sass variables found in Ionic's source scss files. +// To view all the possible Ionic variables, see: +// http://ionicframework.com/docs/theming/overriding-ionic-variables/ + + + + +// Named Color Variables +// -------------------------------------------------- +// Named colors makes it easy to reuse colors on various components. +// It's highly recommended to change the default colors +// to match your app's branding. Ionic uses a Sass map of +// colors so you can add, rename and remove colors as needed. +// The "primary" color is the only required color in the map. + +$colors: ( + primary: #488aff, + secondary: #32db64, + danger: #f53d3d, + light: #f4f4f4, + dark: #222 +); + + +// App iOS Variables +// -------------------------------------------------- +// iOS only Sass variables can go here + + + + +// App Material Design Variables +// -------------------------------------------------- +// Material Design only Sass variables can go here + + + + +// App Windows Variables +// -------------------------------------------------- +// Windows only Sass variables can go here + + + + +// App Theme +// -------------------------------------------------- +// Ionic apps can have different themes applied, which can +// then be future customized. This import comes last +// so that the above variables are used and Ionic's +// default are overridden. + +@import "ionic.theme.default"; + + +// Ionicons +// -------------------------------------------------- +// The premium icon font for Ionic. For more info, please see: +// http://ionicframework.com/docs/ionicons/ + +@import "ionic.ionicons"; + + +// Fonts +// -------------------------------------------------- + +@import "roboto"; +@import "noto-sans"; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..5d53142 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "dom", + "es2015" + ], + "module": "es2015", + "moduleResolution": "node", + "sourceMap": true, + "target": "es5" + }, + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "node_modules", + "src/**/*.spec.ts", + "src/**/__tests__/*.ts" + ], + "compileOnSave": false, + "atom": { + "rewriteTsconfig": false + } +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..dd8e8d8 --- /dev/null +++ b/tslint.json @@ -0,0 +1,11 @@ +{ + "rules": { + "no-duplicate-variable": true, + "no-unused-variable": [ + true + ] + }, + "rulesDirectory": [ + "node_modules/tslint-eslint-rules/dist/rules" + ] +}