diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000000..26fa22a6bd --- /dev/null +++ b/lerna.json @@ -0,0 +1,7 @@ +{ + "lerna": "2.0.0-rc.5", + "packages": [ + "packages/*" + ], + "version": "0.0.0" +} diff --git a/package.json b/package.json index 1f285617a8..b506f9da31 100644 --- a/package.json +++ b/package.json @@ -1,149 +1,5 @@ { - "private": true, - "name": "ionic2", - "version": "3.3.0", - "description": "A powerful framework for building mobile and progressive web apps with JavaScript and Angular", - "keywords": [ - "ionic", - "framework", - "mobile", - "app", - "hybrid", - "webapp", - "cordova", - "progressive web app", - "pwa" - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/ionic-team/ionic.git" - }, - "scripts": { - "test": "gulp validate", - "test:generators": "jasmine-node ./tooling/spec", - "link": "gulp release.prepareReleasePackage && cd dist/ionic-angular && npm link" - }, - "dependencies": { - "@angular/common": "4.1.3", - "@angular/compiler": "4.1.3", - "@angular/compiler-cli": "4.1.3", - "@angular/core": "4.1.3", - "@angular/forms": "4.1.3", - "@angular/http": "4.1.3", - "@angular/platform-browser": "4.1.3", - "@angular/platform-browser-dynamic": "4.1.3", - "ionicons": "~3.0.0", - "rxjs": "5.4.0", - "zone.js": "0.8.12" - }, "devDependencies": { - "@ionic/app-scripts": "1.3.7", - "@ionic/commit-hooks": "1.0.3", - "@types/connect": "3.4.30", - "@types/del": "2.2.31", - "@types/fs-extra": "0.0.37", - "@types/glob": "5.0.30", - "@types/gulp": "3.8.32", - "@types/gulp-watch": "4.1.29", - "@types/hammerjs": "2.0.33", - "@types/jasmine": "2.2.34", - "@types/lodash": "4.14.35", - "@types/merge2": "0.3.29", - "@types/mkdirp": "0.3.29", - "@types/node": "^6.0.34", - "@types/protractor": "^4.0.0", - "@types/run-sequence": "0.0.28", - "@types/semver": "5.3.30", - "@types/serve-static": "1.7.31", - "@types/systemjs": "^0.19.33", - "@types/through2": "2.0.29", - "babel-plugin-transform-es2015-modules-systemjs": "6.14.0", - "babel-preset-es2015": "6.16.0", - "canonical-path": "0.0.2", - "connect": "3.5.0", - "conventional-changelog": "1.1.0", - "core-js": "2.4.1", - "cpr": "2.0.0", - "del": "2.2.2", - "dgeni": "^0.4.7", - "dgeni-packages": "^0.16.10", - "dotenv": "4.0.0", - "event-stream": "3.3.4", - "file-loader": "0.9.0", - "fs-extra": "^2.0.0", - "github": "0.2.4", - "glob": "7.0.6", - "gulp": "3.9.1", - "gulp-autoprefixer": "3.1.1", - "gulp-babel": "6.1.2", - "gulp-cached": "1.1.0", - "gulp-clean-css": "2.0.12", - "gulp-concat": "2.6.0", - "gulp-connect": "5.0.0", - "gulp-conventional-changelog": "1.1.0", - "gulp-git": "1.11.3", - "gulp-if": "2.0.1", - "gulp-open": "2.0.0", - "gulp-remember": "0.3.1", - "gulp-rename": "1.2.2", - "gulp-sass": "2.3.2", - "gulp-scss-lint": "0.4.0", - "gulp-shell": "0.5.2", - "gulp-strip-debug": "1.1.0", - "gulp-tslint": "6.1.1", - "gulp-typescript": "2.13.6", - "gulp-uglify": "2.0.0", - "gulp-util": "3.0.7", - "gulp-watch": "4.3.9", - "html-entities": "1.2.0", - "inquirer": "3.0.1", - "ionic-cz-conventional-changelog": "1.0.0", - "ionic-native": "^2.2.6", - "jasmine-core": "2.5.2", - "jasmine-node": "1.14.5", - "karma": "1.3.0", - "karma-chrome-launcher": "2.0.0", - "karma-coverage": "1.1.1", - "karma-jasmine": "1.0.2", - "karma-sourcemap-loader": "0.3.7", - "karma-spec-reporter": "0.0.26", - "merge2": "1.0.2", - "mkdirp": "0.5.1", - "node-html-encoder": "0.0.2", - "p-all": "^1.0.0", - "remap-istanbul": "0.6.4", - "request": "2.75.0", - "resolve-bin": "0.4.0", - "rollup": "0.36.0", - "rollup-plugin-commonjs": "8.0.2", - "rollup-plugin-multi-entry": "2.0.1", - "rollup-plugin-node-resolve": "3.0.0", - "rollup-plugin-uglify": "1.0.1", - "run-sequence": "1.2.2", - "s3": "4.4.0", - "sassdoc": "2.2.1", - "semver": "5.3.0", - "serve-static": "1.11.1", - "strip-function": "0.0.3", - "sw-toolbox": "3.4.0", - "systemjs": "0.19.38", - "through2": "2.0.1", - "ts-node": "1.3.0", - "tslint": "3.15.1", - "tslint-ionic-rules": "0.0.8", - "typescript": "~2.3.3", - "vinyl": "1.2.0", - "webpack": "^2.1.0-beta.27", - "yargs": "5.0.0" - }, - "config": { - "commitizen": { - "path": "node_modules/ionic-cz-conventional-changelog" - }, - "ionic_copy": "./scripts/demos/copy.config.js" - }, - "pre-push#master": [ - "test" - ] -} \ No newline at end of file + "lerna": "^2.0.0-rc.5" + } +} diff --git a/.scss-lint.yml b/packages/ionic-angular/.scss-lint.yml similarity index 100% rename from .scss-lint.yml rename to packages/ionic-angular/.scss-lint.yml diff --git a/.scss-linters/default_rule.rb b/packages/ionic-angular/.scss-linters/default_rule.rb similarity index 100% rename from .scss-linters/default_rule.rb rename to packages/ionic-angular/.scss-linters/default_rule.rb diff --git a/CHANGELOG.md b/packages/ionic-angular/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to packages/ionic-angular/CHANGELOG.md diff --git a/README.md b/packages/ionic-angular/README.md similarity index 100% rename from README.md rename to packages/ionic-angular/README.md diff --git a/demos/src/action-sheet/app/app.component.ts b/packages/ionic-angular/demos/src/action-sheet/app/app.component.ts similarity index 100% rename from demos/src/action-sheet/app/app.component.ts rename to packages/ionic-angular/demos/src/action-sheet/app/app.component.ts diff --git a/demos/src/action-sheet/app/app.module.ts b/packages/ionic-angular/demos/src/action-sheet/app/app.module.ts similarity index 100% rename from demos/src/action-sheet/app/app.module.ts rename to packages/ionic-angular/demos/src/action-sheet/app/app.module.ts diff --git a/demos/src/action-sheet/app/main.ts b/packages/ionic-angular/demos/src/action-sheet/app/main.ts similarity index 100% rename from demos/src/action-sheet/app/main.ts rename to packages/ionic-angular/demos/src/action-sheet/app/main.ts diff --git a/demos/src/action-sheet/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/action-sheet/pages/page-one/page-one.html similarity index 100% rename from demos/src/action-sheet/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/action-sheet/pages/page-one/page-one.html diff --git a/demos/src/action-sheet/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/action-sheet/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/action-sheet/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/action-sheet/pages/page-one/page-one.module.ts diff --git a/demos/src/action-sheet/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/action-sheet/pages/page-one/page-one.ts similarity index 100% rename from demos/src/action-sheet/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/action-sheet/pages/page-one/page-one.ts diff --git a/demos/src/alert/app/app.component.ts b/packages/ionic-angular/demos/src/alert/app/app.component.ts similarity index 100% rename from demos/src/alert/app/app.component.ts rename to packages/ionic-angular/demos/src/alert/app/app.component.ts diff --git a/demos/src/alert/app/app.module.ts b/packages/ionic-angular/demos/src/alert/app/app.module.ts similarity index 100% rename from demos/src/alert/app/app.module.ts rename to packages/ionic-angular/demos/src/alert/app/app.module.ts diff --git a/demos/src/alert/app/main.ts b/packages/ionic-angular/demos/src/alert/app/main.ts similarity index 100% rename from demos/src/alert/app/main.ts rename to packages/ionic-angular/demos/src/alert/app/main.ts diff --git a/demos/src/alert/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/alert/pages/page-one/page-one.html similarity index 100% rename from demos/src/alert/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/alert/pages/page-one/page-one.html diff --git a/demos/src/alert/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/alert/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/alert/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/alert/pages/page-one/page-one.module.ts diff --git a/demos/src/alert/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/alert/pages/page-one/page-one.ts similarity index 100% rename from demos/src/alert/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/alert/pages/page-one/page-one.ts diff --git a/demos/src/button/app/app.component.ts b/packages/ionic-angular/demos/src/button/app/app.component.ts similarity index 100% rename from demos/src/button/app/app.component.ts rename to packages/ionic-angular/demos/src/button/app/app.component.ts diff --git a/demos/src/button/app/app.module.ts b/packages/ionic-angular/demos/src/button/app/app.module.ts similarity index 100% rename from demos/src/button/app/app.module.ts rename to packages/ionic-angular/demos/src/button/app/app.module.ts diff --git a/demos/src/button/app/main.ts b/packages/ionic-angular/demos/src/button/app/main.ts similarity index 100% rename from demos/src/button/app/main.ts rename to packages/ionic-angular/demos/src/button/app/main.ts diff --git a/demos/src/button/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/button/pages/page-one/page-one.html similarity index 100% rename from demos/src/button/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/button/pages/page-one/page-one.html diff --git a/demos/src/button/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/button/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/button/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/button/pages/page-one/page-one.module.ts diff --git a/demos/src/button/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/button/pages/page-one/page-one.ts similarity index 100% rename from demos/src/button/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/button/pages/page-one/page-one.ts diff --git a/demos/src/checkbox/app/app.component.ts b/packages/ionic-angular/demos/src/checkbox/app/app.component.ts similarity index 100% rename from demos/src/checkbox/app/app.component.ts rename to packages/ionic-angular/demos/src/checkbox/app/app.component.ts diff --git a/demos/src/checkbox/app/app.module.ts b/packages/ionic-angular/demos/src/checkbox/app/app.module.ts similarity index 100% rename from demos/src/checkbox/app/app.module.ts rename to packages/ionic-angular/demos/src/checkbox/app/app.module.ts diff --git a/demos/src/checkbox/app/main.ts b/packages/ionic-angular/demos/src/checkbox/app/main.ts similarity index 100% rename from demos/src/checkbox/app/main.ts rename to packages/ionic-angular/demos/src/checkbox/app/main.ts diff --git a/demos/src/checkbox/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/checkbox/pages/page-one/page-one.html similarity index 100% rename from demos/src/checkbox/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/checkbox/pages/page-one/page-one.html diff --git a/demos/src/checkbox/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/checkbox/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/checkbox/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/checkbox/pages/page-one/page-one.module.ts diff --git a/demos/src/checkbox/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/checkbox/pages/page-one/page-one.ts similarity index 100% rename from demos/src/checkbox/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/checkbox/pages/page-one/page-one.ts diff --git a/demos/src/chip/app/app.component.ts b/packages/ionic-angular/demos/src/chip/app/app.component.ts similarity index 100% rename from demos/src/chip/app/app.component.ts rename to packages/ionic-angular/demos/src/chip/app/app.component.ts diff --git a/demos/src/chip/app/app.module.ts b/packages/ionic-angular/demos/src/chip/app/app.module.ts similarity index 100% rename from demos/src/chip/app/app.module.ts rename to packages/ionic-angular/demos/src/chip/app/app.module.ts diff --git a/demos/src/chip/app/main.ts b/packages/ionic-angular/demos/src/chip/app/main.ts similarity index 100% rename from demos/src/chip/app/main.ts rename to packages/ionic-angular/demos/src/chip/app/main.ts diff --git a/demos/src/chip/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/chip/pages/page-one/page-one.html similarity index 100% rename from demos/src/chip/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/chip/pages/page-one/page-one.html diff --git a/demos/src/chip/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/chip/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/chip/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/chip/pages/page-one/page-one.module.ts diff --git a/demos/src/chip/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/chip/pages/page-one/page-one.ts similarity index 100% rename from demos/src/chip/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/chip/pages/page-one/page-one.ts diff --git a/demos/src/config/app/app.component.ts b/packages/ionic-angular/demos/src/config/app/app.component.ts similarity index 100% rename from demos/src/config/app/app.component.ts rename to packages/ionic-angular/demos/src/config/app/app.component.ts diff --git a/demos/src/config/app/app.module.ts b/packages/ionic-angular/demos/src/config/app/app.module.ts similarity index 100% rename from demos/src/config/app/app.module.ts rename to packages/ionic-angular/demos/src/config/app/app.module.ts diff --git a/demos/src/config/app/main.ts b/packages/ionic-angular/demos/src/config/app/main.ts similarity index 100% rename from demos/src/config/app/main.ts rename to packages/ionic-angular/demos/src/config/app/main.ts diff --git a/demos/src/config/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/config/pages/page-one/page-one.html similarity index 100% rename from demos/src/config/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/config/pages/page-one/page-one.html diff --git a/demos/src/config/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/config/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/config/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/config/pages/page-one/page-one.module.ts diff --git a/demos/src/config/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/config/pages/page-one/page-one.ts similarity index 100% rename from demos/src/config/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/config/pages/page-one/page-one.ts diff --git a/demos/src/config/pages/page-three/page-three.html b/packages/ionic-angular/demos/src/config/pages/page-three/page-three.html similarity index 100% rename from demos/src/config/pages/page-three/page-three.html rename to packages/ionic-angular/demos/src/config/pages/page-three/page-three.html diff --git a/demos/src/config/pages/page-three/page-three.module.ts b/packages/ionic-angular/demos/src/config/pages/page-three/page-three.module.ts similarity index 100% rename from demos/src/config/pages/page-three/page-three.module.ts rename to packages/ionic-angular/demos/src/config/pages/page-three/page-three.module.ts diff --git a/demos/src/config/pages/page-three/page-three.ts b/packages/ionic-angular/demos/src/config/pages/page-three/page-three.ts similarity index 100% rename from demos/src/config/pages/page-three/page-three.ts rename to packages/ionic-angular/demos/src/config/pages/page-three/page-three.ts diff --git a/demos/src/config/pages/page-two/page-two.html b/packages/ionic-angular/demos/src/config/pages/page-two/page-two.html similarity index 100% rename from demos/src/config/pages/page-two/page-two.html rename to packages/ionic-angular/demos/src/config/pages/page-two/page-two.html diff --git a/demos/src/config/pages/page-two/page-two.module.ts b/packages/ionic-angular/demos/src/config/pages/page-two/page-two.module.ts similarity index 100% rename from demos/src/config/pages/page-two/page-two.module.ts rename to packages/ionic-angular/demos/src/config/pages/page-two/page-two.module.ts diff --git a/demos/src/config/pages/page-two/page-two.ts b/packages/ionic-angular/demos/src/config/pages/page-two/page-two.ts similarity index 100% rename from demos/src/config/pages/page-two/page-two.ts rename to packages/ionic-angular/demos/src/config/pages/page-two/page-two.ts diff --git a/demos/src/config/pages/push-page.html b/packages/ionic-angular/demos/src/config/pages/push-page.html similarity index 100% rename from demos/src/config/pages/push-page.html rename to packages/ionic-angular/demos/src/config/pages/push-page.html diff --git a/demos/src/datetime/app/app.component.ts b/packages/ionic-angular/demos/src/datetime/app/app.component.ts similarity index 100% rename from demos/src/datetime/app/app.component.ts rename to packages/ionic-angular/demos/src/datetime/app/app.component.ts diff --git a/demos/src/datetime/app/app.module.ts b/packages/ionic-angular/demos/src/datetime/app/app.module.ts similarity index 100% rename from demos/src/datetime/app/app.module.ts rename to packages/ionic-angular/demos/src/datetime/app/app.module.ts diff --git a/demos/src/datetime/app/main.ts b/packages/ionic-angular/demos/src/datetime/app/main.ts similarity index 100% rename from demos/src/datetime/app/main.ts rename to packages/ionic-angular/demos/src/datetime/app/main.ts diff --git a/demos/src/datetime/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/datetime/pages/page-one/page-one.html similarity index 100% rename from demos/src/datetime/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/datetime/pages/page-one/page-one.html diff --git a/demos/src/datetime/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/datetime/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/datetime/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/datetime/pages/page-one/page-one.module.ts diff --git a/demos/src/datetime/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/datetime/pages/page-one/page-one.ts similarity index 100% rename from demos/src/datetime/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/datetime/pages/page-one/page-one.ts diff --git a/demos/src/events/app/app.component.html b/packages/ionic-angular/demos/src/events/app/app.component.html similarity index 100% rename from demos/src/events/app/app.component.html rename to packages/ionic-angular/demos/src/events/app/app.component.html diff --git a/demos/src/events/app/app.component.ts b/packages/ionic-angular/demos/src/events/app/app.component.ts similarity index 100% rename from demos/src/events/app/app.component.ts rename to packages/ionic-angular/demos/src/events/app/app.component.ts diff --git a/demos/src/events/app/app.module.ts b/packages/ionic-angular/demos/src/events/app/app.module.ts similarity index 100% rename from demos/src/events/app/app.module.ts rename to packages/ionic-angular/demos/src/events/app/app.module.ts diff --git a/demos/src/events/app/main.ts b/packages/ionic-angular/demos/src/events/app/main.ts similarity index 100% rename from demos/src/events/app/main.ts rename to packages/ionic-angular/demos/src/events/app/main.ts diff --git a/demos/src/events/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/events/pages/page-one/page-one.html similarity index 100% rename from demos/src/events/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/events/pages/page-one/page-one.html diff --git a/demos/src/events/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/events/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/events/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/events/pages/page-one/page-one.module.ts diff --git a/demos/src/events/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/events/pages/page-one/page-one.ts similarity index 100% rename from demos/src/events/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/events/pages/page-one/page-one.ts diff --git a/demos/src/events/pages/page-two/page-two.html b/packages/ionic-angular/demos/src/events/pages/page-two/page-two.html similarity index 100% rename from demos/src/events/pages/page-two/page-two.html rename to packages/ionic-angular/demos/src/events/pages/page-two/page-two.html diff --git a/demos/src/events/pages/page-two/page-two.module.ts b/packages/ionic-angular/demos/src/events/pages/page-two/page-two.module.ts similarity index 100% rename from demos/src/events/pages/page-two/page-two.module.ts rename to packages/ionic-angular/demos/src/events/pages/page-two/page-two.module.ts diff --git a/demos/src/events/pages/page-two/page-two.ts b/packages/ionic-angular/demos/src/events/pages/page-two/page-two.ts similarity index 100% rename from demos/src/events/pages/page-two/page-two.ts rename to packages/ionic-angular/demos/src/events/pages/page-two/page-two.ts diff --git a/demos/src/fab/app/app.component.ts b/packages/ionic-angular/demos/src/fab/app/app.component.ts similarity index 100% rename from demos/src/fab/app/app.component.ts rename to packages/ionic-angular/demos/src/fab/app/app.component.ts diff --git a/demos/src/fab/app/app.module.ts b/packages/ionic-angular/demos/src/fab/app/app.module.ts similarity index 100% rename from demos/src/fab/app/app.module.ts rename to packages/ionic-angular/demos/src/fab/app/app.module.ts diff --git a/demos/src/fab/app/main.ts b/packages/ionic-angular/demos/src/fab/app/main.ts similarity index 100% rename from demos/src/fab/app/main.ts rename to packages/ionic-angular/demos/src/fab/app/main.ts diff --git a/demos/src/fab/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/fab/pages/page-one/page-one.html similarity index 100% rename from demos/src/fab/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/fab/pages/page-one/page-one.html diff --git a/demos/src/fab/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/fab/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/fab/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/fab/pages/page-one/page-one.module.ts diff --git a/demos/src/fab/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/fab/pages/page-one/page-one.ts similarity index 100% rename from demos/src/fab/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/fab/pages/page-one/page-one.ts diff --git a/demos/src/hide-when/app/app.component.ts b/packages/ionic-angular/demos/src/hide-when/app/app.component.ts similarity index 100% rename from demos/src/hide-when/app/app.component.ts rename to packages/ionic-angular/demos/src/hide-when/app/app.component.ts diff --git a/demos/src/hide-when/app/app.module.ts b/packages/ionic-angular/demos/src/hide-when/app/app.module.ts similarity index 100% rename from demos/src/hide-when/app/app.module.ts rename to packages/ionic-angular/demos/src/hide-when/app/app.module.ts diff --git a/demos/src/hide-when/app/main.ts b/packages/ionic-angular/demos/src/hide-when/app/main.ts similarity index 100% rename from demos/src/hide-when/app/main.ts rename to packages/ionic-angular/demos/src/hide-when/app/main.ts diff --git a/demos/src/hide-when/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/hide-when/pages/page-one/page-one.html similarity index 100% rename from demos/src/hide-when/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/hide-when/pages/page-one/page-one.html diff --git a/demos/src/hide-when/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/hide-when/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/hide-when/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/hide-when/pages/page-one/page-one.module.ts diff --git a/demos/src/hide-when/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/hide-when/pages/page-one/page-one.ts similarity index 100% rename from demos/src/hide-when/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/hide-when/pages/page-one/page-one.ts diff --git a/demos/src/icon/app/app.component.ts b/packages/ionic-angular/demos/src/icon/app/app.component.ts similarity index 100% rename from demos/src/icon/app/app.component.ts rename to packages/ionic-angular/demos/src/icon/app/app.component.ts diff --git a/demos/src/icon/app/app.module.ts b/packages/ionic-angular/demos/src/icon/app/app.module.ts similarity index 100% rename from demos/src/icon/app/app.module.ts rename to packages/ionic-angular/demos/src/icon/app/app.module.ts diff --git a/demos/src/icon/app/main.ts b/packages/ionic-angular/demos/src/icon/app/main.ts similarity index 100% rename from demos/src/icon/app/main.ts rename to packages/ionic-angular/demos/src/icon/app/main.ts diff --git a/demos/src/icon/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/icon/pages/page-one/page-one.html similarity index 100% rename from demos/src/icon/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/icon/pages/page-one/page-one.html diff --git a/demos/src/icon/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/icon/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/icon/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/icon/pages/page-one/page-one.module.ts diff --git a/demos/src/icon/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/icon/pages/page-one/page-one.ts similarity index 100% rename from demos/src/icon/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/icon/pages/page-one/page-one.ts diff --git a/demos/src/infinite-scroll/app/app.component.ts b/packages/ionic-angular/demos/src/infinite-scroll/app/app.component.ts similarity index 100% rename from demos/src/infinite-scroll/app/app.component.ts rename to packages/ionic-angular/demos/src/infinite-scroll/app/app.component.ts diff --git a/demos/src/infinite-scroll/app/app.module.ts b/packages/ionic-angular/demos/src/infinite-scroll/app/app.module.ts similarity index 100% rename from demos/src/infinite-scroll/app/app.module.ts rename to packages/ionic-angular/demos/src/infinite-scroll/app/app.module.ts diff --git a/demos/src/infinite-scroll/app/main.ts b/packages/ionic-angular/demos/src/infinite-scroll/app/main.ts similarity index 100% rename from demos/src/infinite-scroll/app/main.ts rename to packages/ionic-angular/demos/src/infinite-scroll/app/main.ts diff --git a/demos/src/infinite-scroll/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/infinite-scroll/pages/page-one/page-one.html similarity index 100% rename from demos/src/infinite-scroll/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/infinite-scroll/pages/page-one/page-one.html diff --git a/demos/src/infinite-scroll/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/infinite-scroll/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/infinite-scroll/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/infinite-scroll/pages/page-one/page-one.module.ts diff --git a/demos/src/infinite-scroll/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/infinite-scroll/pages/page-one/page-one.ts similarity index 100% rename from demos/src/infinite-scroll/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/infinite-scroll/pages/page-one/page-one.ts diff --git a/demos/src/infinite-scroll/pages/page-one/provider.ts b/packages/ionic-angular/demos/src/infinite-scroll/pages/page-one/provider.ts similarity index 100% rename from demos/src/infinite-scroll/pages/page-one/provider.ts rename to packages/ionic-angular/demos/src/infinite-scroll/pages/page-one/provider.ts diff --git a/demos/src/input/app/app.component.ts b/packages/ionic-angular/demos/src/input/app/app.component.ts similarity index 100% rename from demos/src/input/app/app.component.ts rename to packages/ionic-angular/demos/src/input/app/app.component.ts diff --git a/demos/src/input/app/app.module.ts b/packages/ionic-angular/demos/src/input/app/app.module.ts similarity index 100% rename from demos/src/input/app/app.module.ts rename to packages/ionic-angular/demos/src/input/app/app.module.ts diff --git a/demos/src/input/app/main.ts b/packages/ionic-angular/demos/src/input/app/main.ts similarity index 100% rename from demos/src/input/app/main.ts rename to packages/ionic-angular/demos/src/input/app/main.ts diff --git a/demos/src/input/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/input/pages/page-one/page-one.html similarity index 100% rename from demos/src/input/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/input/pages/page-one/page-one.html diff --git a/demos/src/input/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/input/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/input/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/input/pages/page-one/page-one.module.ts diff --git a/demos/src/input/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/input/pages/page-one/page-one.ts similarity index 100% rename from demos/src/input/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/input/pages/page-one/page-one.ts diff --git a/demos/src/item-reorder/app/app.component.ts b/packages/ionic-angular/demos/src/item-reorder/app/app.component.ts similarity index 100% rename from demos/src/item-reorder/app/app.component.ts rename to packages/ionic-angular/demos/src/item-reorder/app/app.component.ts diff --git a/demos/src/item-reorder/app/app.module.ts b/packages/ionic-angular/demos/src/item-reorder/app/app.module.ts similarity index 100% rename from demos/src/item-reorder/app/app.module.ts rename to packages/ionic-angular/demos/src/item-reorder/app/app.module.ts diff --git a/demos/src/item-reorder/app/main.ts b/packages/ionic-angular/demos/src/item-reorder/app/main.ts similarity index 100% rename from demos/src/item-reorder/app/main.ts rename to packages/ionic-angular/demos/src/item-reorder/app/main.ts diff --git a/demos/src/item-reorder/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/item-reorder/pages/page-one/page-one.html similarity index 100% rename from demos/src/item-reorder/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/item-reorder/pages/page-one/page-one.html diff --git a/demos/src/item-reorder/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/item-reorder/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/item-reorder/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/item-reorder/pages/page-one/page-one.module.ts diff --git a/demos/src/item-reorder/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/item-reorder/pages/page-one/page-one.ts similarity index 100% rename from demos/src/item-reorder/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/item-reorder/pages/page-one/page-one.ts diff --git a/demos/src/item-sliding/app/app.component.ts b/packages/ionic-angular/demos/src/item-sliding/app/app.component.ts similarity index 100% rename from demos/src/item-sliding/app/app.component.ts rename to packages/ionic-angular/demos/src/item-sliding/app/app.component.ts diff --git a/demos/src/item-sliding/app/app.module.ts b/packages/ionic-angular/demos/src/item-sliding/app/app.module.ts similarity index 100% rename from demos/src/item-sliding/app/app.module.ts rename to packages/ionic-angular/demos/src/item-sliding/app/app.module.ts diff --git a/demos/src/item-sliding/app/main.ts b/packages/ionic-angular/demos/src/item-sliding/app/main.ts similarity index 100% rename from demos/src/item-sliding/app/main.ts rename to packages/ionic-angular/demos/src/item-sliding/app/main.ts diff --git a/demos/src/item-sliding/assets/avatar-cher.png b/packages/ionic-angular/demos/src/item-sliding/assets/avatar-cher.png similarity index 100% rename from demos/src/item-sliding/assets/avatar-cher.png rename to packages/ionic-angular/demos/src/item-sliding/assets/avatar-cher.png diff --git a/demos/src/item-sliding/assets/avatar-dionne.png b/packages/ionic-angular/demos/src/item-sliding/assets/avatar-dionne.png similarity index 100% rename from demos/src/item-sliding/assets/avatar-dionne.png rename to packages/ionic-angular/demos/src/item-sliding/assets/avatar-dionne.png diff --git a/demos/src/item-sliding/assets/avatar-murray.png b/packages/ionic-angular/demos/src/item-sliding/assets/avatar-murray.png similarity index 100% rename from demos/src/item-sliding/assets/avatar-murray.png rename to packages/ionic-angular/demos/src/item-sliding/assets/avatar-murray.png diff --git a/demos/src/item-sliding/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/item-sliding/pages/page-one/page-one.html similarity index 100% rename from demos/src/item-sliding/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/item-sliding/pages/page-one/page-one.html diff --git a/demos/src/item-sliding/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/item-sliding/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/item-sliding/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/item-sliding/pages/page-one/page-one.module.ts diff --git a/demos/src/item-sliding/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/item-sliding/pages/page-one/page-one.ts similarity index 100% rename from demos/src/item-sliding/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/item-sliding/pages/page-one/page-one.ts diff --git a/demos/src/item/app/app.component.ts b/packages/ionic-angular/demos/src/item/app/app.component.ts similarity index 100% rename from demos/src/item/app/app.component.ts rename to packages/ionic-angular/demos/src/item/app/app.component.ts diff --git a/demos/src/item/app/app.module.ts b/packages/ionic-angular/demos/src/item/app/app.module.ts similarity index 100% rename from demos/src/item/app/app.module.ts rename to packages/ionic-angular/demos/src/item/app/app.module.ts diff --git a/demos/src/item/app/main.ts b/packages/ionic-angular/demos/src/item/app/main.ts similarity index 100% rename from demos/src/item/app/main.ts rename to packages/ionic-angular/demos/src/item/app/main.ts diff --git a/demos/src/item/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/item/pages/page-one/page-one.html similarity index 100% rename from demos/src/item/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/item/pages/page-one/page-one.html diff --git a/demos/src/item/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/item/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/item/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/item/pages/page-one/page-one.module.ts diff --git a/demos/src/item/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/item/pages/page-one/page-one.ts similarity index 100% rename from demos/src/item/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/item/pages/page-one/page-one.ts diff --git a/demos/src/label/app/app.component.ts b/packages/ionic-angular/demos/src/label/app/app.component.ts similarity index 100% rename from demos/src/label/app/app.component.ts rename to packages/ionic-angular/demos/src/label/app/app.component.ts diff --git a/demos/src/label/app/app.module.ts b/packages/ionic-angular/demos/src/label/app/app.module.ts similarity index 100% rename from demos/src/label/app/app.module.ts rename to packages/ionic-angular/demos/src/label/app/app.module.ts diff --git a/demos/src/label/app/main.ts b/packages/ionic-angular/demos/src/label/app/main.ts similarity index 100% rename from demos/src/label/app/main.ts rename to packages/ionic-angular/demos/src/label/app/main.ts diff --git a/demos/src/label/assets/ionic.svg b/packages/ionic-angular/demos/src/label/assets/ionic.svg similarity index 100% rename from demos/src/label/assets/ionic.svg rename to packages/ionic-angular/demos/src/label/assets/ionic.svg diff --git a/demos/src/label/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/label/pages/page-one/page-one.html similarity index 100% rename from demos/src/label/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/label/pages/page-one/page-one.html diff --git a/demos/src/label/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/label/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/label/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/label/pages/page-one/page-one.module.ts diff --git a/demos/src/label/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/label/pages/page-one/page-one.ts similarity index 100% rename from demos/src/label/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/label/pages/page-one/page-one.ts diff --git a/demos/src/list/app/app.component.ts b/packages/ionic-angular/demos/src/list/app/app.component.ts similarity index 100% rename from demos/src/list/app/app.component.ts rename to packages/ionic-angular/demos/src/list/app/app.component.ts diff --git a/demos/src/list/app/app.module.ts b/packages/ionic-angular/demos/src/list/app/app.module.ts similarity index 100% rename from demos/src/list/app/app.module.ts rename to packages/ionic-angular/demos/src/list/app/app.module.ts diff --git a/demos/src/list/app/main.ts b/packages/ionic-angular/demos/src/list/app/main.ts similarity index 100% rename from demos/src/list/app/main.ts rename to packages/ionic-angular/demos/src/list/app/main.ts diff --git a/demos/src/list/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/list/pages/page-one/page-one.html similarity index 100% rename from demos/src/list/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/list/pages/page-one/page-one.html diff --git a/demos/src/list/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/list/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/list/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/list/pages/page-one/page-one.module.ts diff --git a/demos/src/list/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/list/pages/page-one/page-one.ts similarity index 100% rename from demos/src/list/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/list/pages/page-one/page-one.ts diff --git a/demos/src/loading/app/app.component.ts b/packages/ionic-angular/demos/src/loading/app/app.component.ts similarity index 100% rename from demos/src/loading/app/app.component.ts rename to packages/ionic-angular/demos/src/loading/app/app.component.ts diff --git a/demos/src/loading/app/app.module.ts b/packages/ionic-angular/demos/src/loading/app/app.module.ts similarity index 100% rename from demos/src/loading/app/app.module.ts rename to packages/ionic-angular/demos/src/loading/app/app.module.ts diff --git a/demos/src/loading/app/main.ts b/packages/ionic-angular/demos/src/loading/app/main.ts similarity index 100% rename from demos/src/loading/app/main.ts rename to packages/ionic-angular/demos/src/loading/app/main.ts diff --git a/demos/src/loading/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/loading/pages/page-one/page-one.html similarity index 100% rename from demos/src/loading/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/loading/pages/page-one/page-one.html diff --git a/demos/src/loading/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/loading/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/loading/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/loading/pages/page-one/page-one.module.ts diff --git a/demos/src/loading/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/loading/pages/page-one/page-one.ts similarity index 100% rename from demos/src/loading/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/loading/pages/page-one/page-one.ts diff --git a/demos/src/loading/pages/page-two/page-two.module.ts b/packages/ionic-angular/demos/src/loading/pages/page-two/page-two.module.ts similarity index 100% rename from demos/src/loading/pages/page-two/page-two.module.ts rename to packages/ionic-angular/demos/src/loading/pages/page-two/page-two.module.ts diff --git a/demos/src/loading/pages/page-two/page-two.ts b/packages/ionic-angular/demos/src/loading/pages/page-two/page-two.ts similarity index 100% rename from demos/src/loading/pages/page-two/page-two.ts rename to packages/ionic-angular/demos/src/loading/pages/page-two/page-two.ts diff --git a/demos/src/menu/app/app.component.html b/packages/ionic-angular/demos/src/menu/app/app.component.html similarity index 100% rename from demos/src/menu/app/app.component.html rename to packages/ionic-angular/demos/src/menu/app/app.component.html diff --git a/demos/src/menu/app/app.component.ts b/packages/ionic-angular/demos/src/menu/app/app.component.ts similarity index 100% rename from demos/src/menu/app/app.component.ts rename to packages/ionic-angular/demos/src/menu/app/app.component.ts diff --git a/demos/src/menu/app/app.module.ts b/packages/ionic-angular/demos/src/menu/app/app.module.ts similarity index 100% rename from demos/src/menu/app/app.module.ts rename to packages/ionic-angular/demos/src/menu/app/app.module.ts diff --git a/demos/src/menu/app/main.ts b/packages/ionic-angular/demos/src/menu/app/main.ts similarity index 100% rename from demos/src/menu/app/main.ts rename to packages/ionic-angular/demos/src/menu/app/main.ts diff --git a/demos/src/menu/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/menu/pages/page-one/page-one.html similarity index 100% rename from demos/src/menu/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/menu/pages/page-one/page-one.html diff --git a/demos/src/menu/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/menu/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/menu/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/menu/pages/page-one/page-one.module.ts diff --git a/demos/src/menu/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/menu/pages/page-one/page-one.ts similarity index 100% rename from demos/src/menu/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/menu/pages/page-one/page-one.ts diff --git a/demos/src/modal/app/app.component.ts b/packages/ionic-angular/demos/src/modal/app/app.component.ts similarity index 100% rename from demos/src/modal/app/app.component.ts rename to packages/ionic-angular/demos/src/modal/app/app.component.ts diff --git a/demos/src/modal/app/app.module.ts b/packages/ionic-angular/demos/src/modal/app/app.module.ts similarity index 100% rename from demos/src/modal/app/app.module.ts rename to packages/ionic-angular/demos/src/modal/app/app.module.ts diff --git a/demos/src/modal/app/main.ts b/packages/ionic-angular/demos/src/modal/app/main.ts similarity index 100% rename from demos/src/modal/app/main.ts rename to packages/ionic-angular/demos/src/modal/app/main.ts diff --git a/demos/src/modal/pages/modal-page/modal-page.html b/packages/ionic-angular/demos/src/modal/pages/modal-page/modal-page.html similarity index 100% rename from demos/src/modal/pages/modal-page/modal-page.html rename to packages/ionic-angular/demos/src/modal/pages/modal-page/modal-page.html diff --git a/demos/src/modal/pages/modal-page/modal-page.module.ts b/packages/ionic-angular/demos/src/modal/pages/modal-page/modal-page.module.ts similarity index 100% rename from demos/src/modal/pages/modal-page/modal-page.module.ts rename to packages/ionic-angular/demos/src/modal/pages/modal-page/modal-page.module.ts diff --git a/demos/src/modal/pages/modal-page/modal-page.ts b/packages/ionic-angular/demos/src/modal/pages/modal-page/modal-page.ts similarity index 100% rename from demos/src/modal/pages/modal-page/modal-page.ts rename to packages/ionic-angular/demos/src/modal/pages/modal-page/modal-page.ts diff --git a/demos/src/modal/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/modal/pages/page-one/page-one.html similarity index 100% rename from demos/src/modal/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/modal/pages/page-one/page-one.html diff --git a/demos/src/modal/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/modal/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/modal/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/modal/pages/page-one/page-one.module.ts diff --git a/demos/src/modal/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/modal/pages/page-one/page-one.ts similarity index 100% rename from demos/src/modal/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/modal/pages/page-one/page-one.ts diff --git a/demos/src/nav-params/app/app.component.ts b/packages/ionic-angular/demos/src/nav-params/app/app.component.ts similarity index 100% rename from demos/src/nav-params/app/app.component.ts rename to packages/ionic-angular/demos/src/nav-params/app/app.component.ts diff --git a/demos/src/nav-params/app/app.module.ts b/packages/ionic-angular/demos/src/nav-params/app/app.module.ts similarity index 100% rename from demos/src/nav-params/app/app.module.ts rename to packages/ionic-angular/demos/src/nav-params/app/app.module.ts diff --git a/demos/src/nav-params/app/main.ts b/packages/ionic-angular/demos/src/nav-params/app/main.ts similarity index 100% rename from demos/src/nav-params/app/main.ts rename to packages/ionic-angular/demos/src/nav-params/app/main.ts diff --git a/demos/src/nav-params/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/nav-params/pages/page-one/page-one.html similarity index 100% rename from demos/src/nav-params/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/nav-params/pages/page-one/page-one.html diff --git a/demos/src/nav-params/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/nav-params/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/nav-params/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/nav-params/pages/page-one/page-one.module.ts diff --git a/demos/src/nav-params/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/nav-params/pages/page-one/page-one.ts similarity index 100% rename from demos/src/nav-params/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/nav-params/pages/page-one/page-one.ts diff --git a/demos/src/nav-params/pages/page-two/page-two.html b/packages/ionic-angular/demos/src/nav-params/pages/page-two/page-two.html similarity index 100% rename from demos/src/nav-params/pages/page-two/page-two.html rename to packages/ionic-angular/demos/src/nav-params/pages/page-two/page-two.html diff --git a/demos/src/nav-params/pages/page-two/page-two.module.ts b/packages/ionic-angular/demos/src/nav-params/pages/page-two/page-two.module.ts similarity index 100% rename from demos/src/nav-params/pages/page-two/page-two.module.ts rename to packages/ionic-angular/demos/src/nav-params/pages/page-two/page-two.module.ts diff --git a/demos/src/nav-params/pages/page-two/page-two.ts b/packages/ionic-angular/demos/src/nav-params/pages/page-two/page-two.ts similarity index 100% rename from demos/src/nav-params/pages/page-two/page-two.ts rename to packages/ionic-angular/demos/src/nav-params/pages/page-two/page-two.ts diff --git a/demos/src/navbar/app/app.component.ts b/packages/ionic-angular/demos/src/navbar/app/app.component.ts similarity index 100% rename from demos/src/navbar/app/app.component.ts rename to packages/ionic-angular/demos/src/navbar/app/app.component.ts diff --git a/demos/src/navbar/app/app.module.ts b/packages/ionic-angular/demos/src/navbar/app/app.module.ts similarity index 100% rename from demos/src/navbar/app/app.module.ts rename to packages/ionic-angular/demos/src/navbar/app/app.module.ts diff --git a/demos/src/navbar/app/main.ts b/packages/ionic-angular/demos/src/navbar/app/main.ts similarity index 100% rename from demos/src/navbar/app/main.ts rename to packages/ionic-angular/demos/src/navbar/app/main.ts diff --git a/demos/src/navbar/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/navbar/pages/page-one/page-one.html similarity index 100% rename from demos/src/navbar/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/navbar/pages/page-one/page-one.html diff --git a/demos/src/navbar/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/navbar/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/navbar/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/navbar/pages/page-one/page-one.module.ts diff --git a/demos/src/navbar/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/navbar/pages/page-one/page-one.ts similarity index 100% rename from demos/src/navbar/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/navbar/pages/page-one/page-one.ts diff --git a/demos/src/navigation/app/app.component.ts b/packages/ionic-angular/demos/src/navigation/app/app.component.ts similarity index 100% rename from demos/src/navigation/app/app.component.ts rename to packages/ionic-angular/demos/src/navigation/app/app.component.ts diff --git a/demos/src/navigation/app/app.module.ts b/packages/ionic-angular/demos/src/navigation/app/app.module.ts similarity index 100% rename from demos/src/navigation/app/app.module.ts rename to packages/ionic-angular/demos/src/navigation/app/app.module.ts diff --git a/demos/src/navigation/app/main.ts b/packages/ionic-angular/demos/src/navigation/app/main.ts similarity index 100% rename from demos/src/navigation/app/main.ts rename to packages/ionic-angular/demos/src/navigation/app/main.ts diff --git a/demos/src/navigation/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/navigation/pages/page-one/page-one.html similarity index 100% rename from demos/src/navigation/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/navigation/pages/page-one/page-one.html diff --git a/demos/src/navigation/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/navigation/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/navigation/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/navigation/pages/page-one/page-one.module.ts diff --git a/demos/src/navigation/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/navigation/pages/page-one/page-one.ts similarity index 100% rename from demos/src/navigation/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/navigation/pages/page-one/page-one.ts diff --git a/demos/src/navigation/pages/page-two/page-two.html b/packages/ionic-angular/demos/src/navigation/pages/page-two/page-two.html similarity index 100% rename from demos/src/navigation/pages/page-two/page-two.html rename to packages/ionic-angular/demos/src/navigation/pages/page-two/page-two.html diff --git a/demos/src/navigation/pages/page-two/page-two.module.ts b/packages/ionic-angular/demos/src/navigation/pages/page-two/page-two.module.ts similarity index 100% rename from demos/src/navigation/pages/page-two/page-two.module.ts rename to packages/ionic-angular/demos/src/navigation/pages/page-two/page-two.module.ts diff --git a/demos/src/navigation/pages/page-two/page-two.ts b/packages/ionic-angular/demos/src/navigation/pages/page-two/page-two.ts similarity index 100% rename from demos/src/navigation/pages/page-two/page-two.ts rename to packages/ionic-angular/demos/src/navigation/pages/page-two/page-two.ts diff --git a/demos/src/platform/app/app.component.ts b/packages/ionic-angular/demos/src/platform/app/app.component.ts similarity index 100% rename from demos/src/platform/app/app.component.ts rename to packages/ionic-angular/demos/src/platform/app/app.component.ts diff --git a/demos/src/platform/app/app.module.ts b/packages/ionic-angular/demos/src/platform/app/app.module.ts similarity index 100% rename from demos/src/platform/app/app.module.ts rename to packages/ionic-angular/demos/src/platform/app/app.module.ts diff --git a/demos/src/platform/app/main.ts b/packages/ionic-angular/demos/src/platform/app/main.ts similarity index 100% rename from demos/src/platform/app/main.ts rename to packages/ionic-angular/demos/src/platform/app/main.ts diff --git a/demos/src/platform/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/platform/pages/page-one/page-one.html similarity index 100% rename from demos/src/platform/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/platform/pages/page-one/page-one.html diff --git a/demos/src/platform/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/platform/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/platform/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/platform/pages/page-one/page-one.module.ts diff --git a/demos/src/platform/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/platform/pages/page-one/page-one.ts similarity index 100% rename from demos/src/platform/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/platform/pages/page-one/page-one.ts diff --git a/demos/src/popover/app/app.component.ts b/packages/ionic-angular/demos/src/popover/app/app.component.ts similarity index 100% rename from demos/src/popover/app/app.component.ts rename to packages/ionic-angular/demos/src/popover/app/app.component.ts diff --git a/demos/src/popover/app/app.module.ts b/packages/ionic-angular/demos/src/popover/app/app.module.ts similarity index 100% rename from demos/src/popover/app/app.module.ts rename to packages/ionic-angular/demos/src/popover/app/app.module.ts diff --git a/demos/src/popover/app/main.ts b/packages/ionic-angular/demos/src/popover/app/main.ts similarity index 100% rename from demos/src/popover/app/main.ts rename to packages/ionic-angular/demos/src/popover/app/main.ts diff --git a/demos/src/popover/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/popover/pages/page-one/page-one.html similarity index 100% rename from demos/src/popover/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/popover/pages/page-one/page-one.html diff --git a/demos/src/popover/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/popover/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/popover/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/popover/pages/page-one/page-one.module.ts diff --git a/demos/src/popover/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/popover/pages/page-one/page-one.ts similarity index 100% rename from demos/src/popover/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/popover/pages/page-one/page-one.ts diff --git a/demos/src/popover/pages/page-two/page-two.module.ts b/packages/ionic-angular/demos/src/popover/pages/page-two/page-two.module.ts similarity index 100% rename from demos/src/popover/pages/page-two/page-two.module.ts rename to packages/ionic-angular/demos/src/popover/pages/page-two/page-two.module.ts diff --git a/demos/src/popover/pages/page-two/page-two.ts b/packages/ionic-angular/demos/src/popover/pages/page-two/page-two.ts similarity index 100% rename from demos/src/popover/pages/page-two/page-two.ts rename to packages/ionic-angular/demos/src/popover/pages/page-two/page-two.ts diff --git a/demos/src/radio/app/app.component.ts b/packages/ionic-angular/demos/src/radio/app/app.component.ts similarity index 100% rename from demos/src/radio/app/app.component.ts rename to packages/ionic-angular/demos/src/radio/app/app.component.ts diff --git a/demos/src/radio/app/app.module.ts b/packages/ionic-angular/demos/src/radio/app/app.module.ts similarity index 100% rename from demos/src/radio/app/app.module.ts rename to packages/ionic-angular/demos/src/radio/app/app.module.ts diff --git a/demos/src/radio/app/main.ts b/packages/ionic-angular/demos/src/radio/app/main.ts similarity index 100% rename from demos/src/radio/app/main.ts rename to packages/ionic-angular/demos/src/radio/app/main.ts diff --git a/demos/src/radio/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/radio/pages/page-one/page-one.html similarity index 100% rename from demos/src/radio/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/radio/pages/page-one/page-one.html diff --git a/demos/src/radio/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/radio/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/radio/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/radio/pages/page-one/page-one.module.ts diff --git a/demos/src/radio/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/radio/pages/page-one/page-one.ts similarity index 100% rename from demos/src/radio/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/radio/pages/page-one/page-one.ts diff --git a/demos/src/range/app/app.component.ts b/packages/ionic-angular/demos/src/range/app/app.component.ts similarity index 100% rename from demos/src/range/app/app.component.ts rename to packages/ionic-angular/demos/src/range/app/app.component.ts diff --git a/demos/src/range/app/app.module.ts b/packages/ionic-angular/demos/src/range/app/app.module.ts similarity index 100% rename from demos/src/range/app/app.module.ts rename to packages/ionic-angular/demos/src/range/app/app.module.ts diff --git a/demos/src/range/app/main.ts b/packages/ionic-angular/demos/src/range/app/main.ts similarity index 100% rename from demos/src/range/app/main.ts rename to packages/ionic-angular/demos/src/range/app/main.ts diff --git a/demos/src/range/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/range/pages/page-one/page-one.html similarity index 100% rename from demos/src/range/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/range/pages/page-one/page-one.html diff --git a/demos/src/range/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/range/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/range/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/range/pages/page-one/page-one.module.ts diff --git a/demos/src/range/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/range/pages/page-one/page-one.ts similarity index 100% rename from demos/src/range/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/range/pages/page-one/page-one.ts diff --git a/demos/src/refresher/app/app.component.ts b/packages/ionic-angular/demos/src/refresher/app/app.component.ts similarity index 100% rename from demos/src/refresher/app/app.component.ts rename to packages/ionic-angular/demos/src/refresher/app/app.component.ts diff --git a/demos/src/refresher/app/app.module.ts b/packages/ionic-angular/demos/src/refresher/app/app.module.ts similarity index 100% rename from demos/src/refresher/app/app.module.ts rename to packages/ionic-angular/demos/src/refresher/app/app.module.ts diff --git a/demos/src/refresher/app/main.ts b/packages/ionic-angular/demos/src/refresher/app/main.ts similarity index 100% rename from demos/src/refresher/app/main.ts rename to packages/ionic-angular/demos/src/refresher/app/main.ts diff --git a/demos/src/refresher/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/refresher/pages/page-one/page-one.html similarity index 100% rename from demos/src/refresher/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/refresher/pages/page-one/page-one.html diff --git a/demos/src/refresher/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/refresher/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/refresher/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/refresher/pages/page-one/page-one.module.ts diff --git a/demos/src/refresher/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/refresher/pages/page-one/page-one.ts similarity index 100% rename from demos/src/refresher/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/refresher/pages/page-one/page-one.ts diff --git a/demos/src/refresher/pages/page-one/provider.ts b/packages/ionic-angular/demos/src/refresher/pages/page-one/provider.ts similarity index 100% rename from demos/src/refresher/pages/page-one/provider.ts rename to packages/ionic-angular/demos/src/refresher/pages/page-one/provider.ts diff --git a/demos/src/scroll/app/app.component.ts b/packages/ionic-angular/demos/src/scroll/app/app.component.ts similarity index 100% rename from demos/src/scroll/app/app.component.ts rename to packages/ionic-angular/demos/src/scroll/app/app.component.ts diff --git a/demos/src/scroll/app/app.module.ts b/packages/ionic-angular/demos/src/scroll/app/app.module.ts similarity index 100% rename from demos/src/scroll/app/app.module.ts rename to packages/ionic-angular/demos/src/scroll/app/app.module.ts diff --git a/demos/src/scroll/app/main.ts b/packages/ionic-angular/demos/src/scroll/app/main.ts similarity index 100% rename from demos/src/scroll/app/main.ts rename to packages/ionic-angular/demos/src/scroll/app/main.ts diff --git a/demos/src/scroll/assets/map.jpeg b/packages/ionic-angular/demos/src/scroll/assets/map.jpeg similarity index 100% rename from demos/src/scroll/assets/map.jpeg rename to packages/ionic-angular/demos/src/scroll/assets/map.jpeg diff --git a/demos/src/scroll/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/scroll/pages/page-one/page-one.html similarity index 100% rename from demos/src/scroll/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/scroll/pages/page-one/page-one.html diff --git a/demos/src/scroll/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/scroll/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/scroll/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/scroll/pages/page-one/page-one.module.ts diff --git a/demos/src/scroll/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/scroll/pages/page-one/page-one.ts similarity index 100% rename from demos/src/scroll/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/scroll/pages/page-one/page-one.ts diff --git a/demos/src/searchbar/app/app.component.ts b/packages/ionic-angular/demos/src/searchbar/app/app.component.ts similarity index 100% rename from demos/src/searchbar/app/app.component.ts rename to packages/ionic-angular/demos/src/searchbar/app/app.component.ts diff --git a/demos/src/searchbar/app/app.module.ts b/packages/ionic-angular/demos/src/searchbar/app/app.module.ts similarity index 100% rename from demos/src/searchbar/app/app.module.ts rename to packages/ionic-angular/demos/src/searchbar/app/app.module.ts diff --git a/demos/src/searchbar/app/main.ts b/packages/ionic-angular/demos/src/searchbar/app/main.ts similarity index 100% rename from demos/src/searchbar/app/main.ts rename to packages/ionic-angular/demos/src/searchbar/app/main.ts diff --git a/demos/src/searchbar/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/searchbar/pages/page-one/page-one.html similarity index 100% rename from demos/src/searchbar/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/searchbar/pages/page-one/page-one.html diff --git a/demos/src/searchbar/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/searchbar/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/searchbar/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/searchbar/pages/page-one/page-one.module.ts diff --git a/demos/src/searchbar/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/searchbar/pages/page-one/page-one.ts similarity index 100% rename from demos/src/searchbar/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/searchbar/pages/page-one/page-one.ts diff --git a/demos/src/segment/app/app.component.ts b/packages/ionic-angular/demos/src/segment/app/app.component.ts similarity index 100% rename from demos/src/segment/app/app.component.ts rename to packages/ionic-angular/demos/src/segment/app/app.component.ts diff --git a/demos/src/segment/app/app.module.ts b/packages/ionic-angular/demos/src/segment/app/app.module.ts similarity index 100% rename from demos/src/segment/app/app.module.ts rename to packages/ionic-angular/demos/src/segment/app/app.module.ts diff --git a/demos/src/segment/app/main.ts b/packages/ionic-angular/demos/src/segment/app/main.ts similarity index 100% rename from demos/src/segment/app/main.ts rename to packages/ionic-angular/demos/src/segment/app/main.ts diff --git a/demos/src/segment/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/segment/pages/page-one/page-one.html similarity index 100% rename from demos/src/segment/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/segment/pages/page-one/page-one.html diff --git a/demos/src/segment/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/segment/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/segment/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/segment/pages/page-one/page-one.module.ts diff --git a/demos/src/segment/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/segment/pages/page-one/page-one.ts similarity index 100% rename from demos/src/segment/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/segment/pages/page-one/page-one.ts diff --git a/demos/src/select/app/app.component.ts b/packages/ionic-angular/demos/src/select/app/app.component.ts similarity index 100% rename from demos/src/select/app/app.component.ts rename to packages/ionic-angular/demos/src/select/app/app.component.ts diff --git a/demos/src/select/app/app.module.ts b/packages/ionic-angular/demos/src/select/app/app.module.ts similarity index 100% rename from demos/src/select/app/app.module.ts rename to packages/ionic-angular/demos/src/select/app/app.module.ts diff --git a/demos/src/select/app/main.ts b/packages/ionic-angular/demos/src/select/app/main.ts similarity index 100% rename from demos/src/select/app/main.ts rename to packages/ionic-angular/demos/src/select/app/main.ts diff --git a/demos/src/select/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/select/pages/page-one/page-one.html similarity index 100% rename from demos/src/select/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/select/pages/page-one/page-one.html diff --git a/demos/src/select/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/select/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/select/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/select/pages/page-one/page-one.module.ts diff --git a/demos/src/select/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/select/pages/page-one/page-one.ts similarity index 100% rename from demos/src/select/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/select/pages/page-one/page-one.ts diff --git a/demos/src/show-when/app/app.component.ts b/packages/ionic-angular/demos/src/show-when/app/app.component.ts similarity index 100% rename from demos/src/show-when/app/app.component.ts rename to packages/ionic-angular/demos/src/show-when/app/app.component.ts diff --git a/demos/src/show-when/app/app.module.ts b/packages/ionic-angular/demos/src/show-when/app/app.module.ts similarity index 100% rename from demos/src/show-when/app/app.module.ts rename to packages/ionic-angular/demos/src/show-when/app/app.module.ts diff --git a/demos/src/show-when/app/main.ts b/packages/ionic-angular/demos/src/show-when/app/main.ts similarity index 100% rename from demos/src/show-when/app/main.ts rename to packages/ionic-angular/demos/src/show-when/app/main.ts diff --git a/demos/src/show-when/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/show-when/pages/page-one/page-one.html similarity index 100% rename from demos/src/show-when/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/show-when/pages/page-one/page-one.html diff --git a/demos/src/show-when/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/show-when/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/show-when/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/show-when/pages/page-one/page-one.module.ts diff --git a/demos/src/show-when/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/show-when/pages/page-one/page-one.ts similarity index 100% rename from demos/src/show-when/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/show-when/pages/page-one/page-one.ts diff --git a/demos/src/slides/app/app.component.ts b/packages/ionic-angular/demos/src/slides/app/app.component.ts similarity index 100% rename from demos/src/slides/app/app.component.ts rename to packages/ionic-angular/demos/src/slides/app/app.component.ts diff --git a/demos/src/slides/app/app.module.ts b/packages/ionic-angular/demos/src/slides/app/app.module.ts similarity index 100% rename from demos/src/slides/app/app.module.ts rename to packages/ionic-angular/demos/src/slides/app/app.module.ts diff --git a/demos/src/slides/app/main.ts b/packages/ionic-angular/demos/src/slides/app/main.ts similarity index 100% rename from demos/src/slides/app/main.ts rename to packages/ionic-angular/demos/src/slides/app/main.ts diff --git a/demos/src/slides/assets/slide1.jpeg b/packages/ionic-angular/demos/src/slides/assets/slide1.jpeg similarity index 100% rename from demos/src/slides/assets/slide1.jpeg rename to packages/ionic-angular/demos/src/slides/assets/slide1.jpeg diff --git a/demos/src/slides/assets/slide2.jpeg b/packages/ionic-angular/demos/src/slides/assets/slide2.jpeg similarity index 100% rename from demos/src/slides/assets/slide2.jpeg rename to packages/ionic-angular/demos/src/slides/assets/slide2.jpeg diff --git a/demos/src/slides/assets/slide3.jpeg b/packages/ionic-angular/demos/src/slides/assets/slide3.jpeg similarity index 100% rename from demos/src/slides/assets/slide3.jpeg rename to packages/ionic-angular/demos/src/slides/assets/slide3.jpeg diff --git a/demos/src/slides/assets/slide4.jpeg b/packages/ionic-angular/demos/src/slides/assets/slide4.jpeg similarity index 100% rename from demos/src/slides/assets/slide4.jpeg rename to packages/ionic-angular/demos/src/slides/assets/slide4.jpeg diff --git a/demos/src/slides/assets/slide5.jpeg b/packages/ionic-angular/demos/src/slides/assets/slide5.jpeg similarity index 100% rename from demos/src/slides/assets/slide5.jpeg rename to packages/ionic-angular/demos/src/slides/assets/slide5.jpeg diff --git a/demos/src/slides/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/slides/pages/page-one/page-one.html similarity index 100% rename from demos/src/slides/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/slides/pages/page-one/page-one.html diff --git a/demos/src/slides/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/slides/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/slides/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/slides/pages/page-one/page-one.module.ts diff --git a/demos/src/slides/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/slides/pages/page-one/page-one.ts similarity index 100% rename from demos/src/slides/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/slides/pages/page-one/page-one.ts diff --git a/demos/src/tabs/app/app.component.ts b/packages/ionic-angular/demos/src/tabs/app/app.component.ts similarity index 100% rename from demos/src/tabs/app/app.component.ts rename to packages/ionic-angular/demos/src/tabs/app/app.component.ts diff --git a/demos/src/tabs/app/app.module.ts b/packages/ionic-angular/demos/src/tabs/app/app.module.ts similarity index 100% rename from demos/src/tabs/app/app.module.ts rename to packages/ionic-angular/demos/src/tabs/app/app.module.ts diff --git a/demos/src/tabs/app/main.ts b/packages/ionic-angular/demos/src/tabs/app/main.ts similarity index 100% rename from demos/src/tabs/app/main.ts rename to packages/ionic-angular/demos/src/tabs/app/main.ts diff --git a/demos/src/tabs/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/tabs/pages/page-one/page-one.html similarity index 100% rename from demos/src/tabs/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/tabs/pages/page-one/page-one.html diff --git a/demos/src/tabs/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/tabs/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/tabs/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/tabs/pages/page-one/page-one.module.ts diff --git a/demos/src/tabs/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/tabs/pages/page-one/page-one.ts similarity index 100% rename from demos/src/tabs/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/tabs/pages/page-one/page-one.ts diff --git a/demos/src/tabs/pages/page-two/page-two.module.ts b/packages/ionic-angular/demos/src/tabs/pages/page-two/page-two.module.ts similarity index 100% rename from demos/src/tabs/pages/page-two/page-two.module.ts rename to packages/ionic-angular/demos/src/tabs/pages/page-two/page-two.module.ts diff --git a/demos/src/tabs/pages/page-two/page-two.ts b/packages/ionic-angular/demos/src/tabs/pages/page-two/page-two.ts similarity index 100% rename from demos/src/tabs/pages/page-two/page-two.ts rename to packages/ionic-angular/demos/src/tabs/pages/page-two/page-two.ts diff --git a/demos/src/textarea/app/app.component.ts b/packages/ionic-angular/demos/src/textarea/app/app.component.ts similarity index 100% rename from demos/src/textarea/app/app.component.ts rename to packages/ionic-angular/demos/src/textarea/app/app.component.ts diff --git a/demos/src/textarea/app/app.module.ts b/packages/ionic-angular/demos/src/textarea/app/app.module.ts similarity index 100% rename from demos/src/textarea/app/app.module.ts rename to packages/ionic-angular/demos/src/textarea/app/app.module.ts diff --git a/demos/src/textarea/app/main.ts b/packages/ionic-angular/demos/src/textarea/app/main.ts similarity index 100% rename from demos/src/textarea/app/main.ts rename to packages/ionic-angular/demos/src/textarea/app/main.ts diff --git a/demos/src/textarea/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/textarea/pages/page-one/page-one.html similarity index 100% rename from demos/src/textarea/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/textarea/pages/page-one/page-one.html diff --git a/demos/src/textarea/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/textarea/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/textarea/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/textarea/pages/page-one/page-one.module.ts diff --git a/demos/src/textarea/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/textarea/pages/page-one/page-one.ts similarity index 100% rename from demos/src/textarea/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/textarea/pages/page-one/page-one.ts diff --git a/demos/src/title/app/app.component.ts b/packages/ionic-angular/demos/src/title/app/app.component.ts similarity index 100% rename from demos/src/title/app/app.component.ts rename to packages/ionic-angular/demos/src/title/app/app.component.ts diff --git a/demos/src/title/app/app.module.ts b/packages/ionic-angular/demos/src/title/app/app.module.ts similarity index 100% rename from demos/src/title/app/app.module.ts rename to packages/ionic-angular/demos/src/title/app/app.module.ts diff --git a/demos/src/title/app/main.ts b/packages/ionic-angular/demos/src/title/app/main.ts similarity index 100% rename from demos/src/title/app/main.ts rename to packages/ionic-angular/demos/src/title/app/main.ts diff --git a/demos/src/title/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/title/pages/page-one/page-one.html similarity index 100% rename from demos/src/title/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/title/pages/page-one/page-one.html diff --git a/demos/src/title/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/title/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/title/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/title/pages/page-one/page-one.module.ts diff --git a/demos/src/title/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/title/pages/page-one/page-one.ts similarity index 100% rename from demos/src/title/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/title/pages/page-one/page-one.ts diff --git a/demos/src/toast/app/app.component.ts b/packages/ionic-angular/demos/src/toast/app/app.component.ts similarity index 100% rename from demos/src/toast/app/app.component.ts rename to packages/ionic-angular/demos/src/toast/app/app.component.ts diff --git a/demos/src/toast/app/app.module.ts b/packages/ionic-angular/demos/src/toast/app/app.module.ts similarity index 100% rename from demos/src/toast/app/app.module.ts rename to packages/ionic-angular/demos/src/toast/app/app.module.ts diff --git a/demos/src/toast/app/main.ts b/packages/ionic-angular/demos/src/toast/app/main.ts similarity index 100% rename from demos/src/toast/app/main.ts rename to packages/ionic-angular/demos/src/toast/app/main.ts diff --git a/demos/src/toast/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/toast/pages/page-one/page-one.html similarity index 100% rename from demos/src/toast/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/toast/pages/page-one/page-one.html diff --git a/demos/src/toast/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/toast/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/toast/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/toast/pages/page-one/page-one.module.ts diff --git a/demos/src/toast/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/toast/pages/page-one/page-one.ts similarity index 100% rename from demos/src/toast/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/toast/pages/page-one/page-one.ts diff --git a/demos/src/toggle/app/app.component.ts b/packages/ionic-angular/demos/src/toggle/app/app.component.ts similarity index 100% rename from demos/src/toggle/app/app.component.ts rename to packages/ionic-angular/demos/src/toggle/app/app.component.ts diff --git a/demos/src/toggle/app/app.module.ts b/packages/ionic-angular/demos/src/toggle/app/app.module.ts similarity index 100% rename from demos/src/toggle/app/app.module.ts rename to packages/ionic-angular/demos/src/toggle/app/app.module.ts diff --git a/demos/src/toggle/app/main.ts b/packages/ionic-angular/demos/src/toggle/app/main.ts similarity index 100% rename from demos/src/toggle/app/main.ts rename to packages/ionic-angular/demos/src/toggle/app/main.ts diff --git a/demos/src/toggle/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/toggle/pages/page-one/page-one.html similarity index 100% rename from demos/src/toggle/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/toggle/pages/page-one/page-one.html diff --git a/demos/src/toggle/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/toggle/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/toggle/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/toggle/pages/page-one/page-one.module.ts diff --git a/demos/src/toggle/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/toggle/pages/page-one/page-one.ts similarity index 100% rename from demos/src/toggle/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/toggle/pages/page-one/page-one.ts diff --git a/demos/src/toolbar/app/app.component.ts b/packages/ionic-angular/demos/src/toolbar/app/app.component.ts similarity index 100% rename from demos/src/toolbar/app/app.component.ts rename to packages/ionic-angular/demos/src/toolbar/app/app.component.ts diff --git a/demos/src/toolbar/app/app.module.ts b/packages/ionic-angular/demos/src/toolbar/app/app.module.ts similarity index 100% rename from demos/src/toolbar/app/app.module.ts rename to packages/ionic-angular/demos/src/toolbar/app/app.module.ts diff --git a/demos/src/toolbar/app/main.ts b/packages/ionic-angular/demos/src/toolbar/app/main.ts similarity index 100% rename from demos/src/toolbar/app/main.ts rename to packages/ionic-angular/demos/src/toolbar/app/main.ts diff --git a/demos/src/toolbar/pages/page-one/page-one.html b/packages/ionic-angular/demos/src/toolbar/pages/page-one/page-one.html similarity index 100% rename from demos/src/toolbar/pages/page-one/page-one.html rename to packages/ionic-angular/demos/src/toolbar/pages/page-one/page-one.html diff --git a/demos/src/toolbar/pages/page-one/page-one.module.ts b/packages/ionic-angular/demos/src/toolbar/pages/page-one/page-one.module.ts similarity index 100% rename from demos/src/toolbar/pages/page-one/page-one.module.ts rename to packages/ionic-angular/demos/src/toolbar/pages/page-one/page-one.module.ts diff --git a/demos/src/toolbar/pages/page-one/page-one.ts b/packages/ionic-angular/demos/src/toolbar/pages/page-one/page-one.ts similarity index 100% rename from demos/src/toolbar/pages/page-one/page-one.ts rename to packages/ionic-angular/demos/src/toolbar/pages/page-one/page-one.ts diff --git a/gulpfile.js b/packages/ionic-angular/gulpfile.js similarity index 100% rename from gulpfile.js rename to packages/ionic-angular/gulpfile.js diff --git a/packages/ionic-angular/package.json b/packages/ionic-angular/package.json new file mode 100644 index 0000000000..1f285617a8 --- /dev/null +++ b/packages/ionic-angular/package.json @@ -0,0 +1,149 @@ +{ + "private": true, + "name": "ionic2", + "version": "3.3.0", + "description": "A powerful framework for building mobile and progressive web apps with JavaScript and Angular", + "keywords": [ + "ionic", + "framework", + "mobile", + "app", + "hybrid", + "webapp", + "cordova", + "progressive web app", + "pwa" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/ionic-team/ionic.git" + }, + "scripts": { + "test": "gulp validate", + "test:generators": "jasmine-node ./tooling/spec", + "link": "gulp release.prepareReleasePackage && cd dist/ionic-angular && npm link" + }, + "dependencies": { + "@angular/common": "4.1.3", + "@angular/compiler": "4.1.3", + "@angular/compiler-cli": "4.1.3", + "@angular/core": "4.1.3", + "@angular/forms": "4.1.3", + "@angular/http": "4.1.3", + "@angular/platform-browser": "4.1.3", + "@angular/platform-browser-dynamic": "4.1.3", + "ionicons": "~3.0.0", + "rxjs": "5.4.0", + "zone.js": "0.8.12" + }, + "devDependencies": { + "@ionic/app-scripts": "1.3.7", + "@ionic/commit-hooks": "1.0.3", + "@types/connect": "3.4.30", + "@types/del": "2.2.31", + "@types/fs-extra": "0.0.37", + "@types/glob": "5.0.30", + "@types/gulp": "3.8.32", + "@types/gulp-watch": "4.1.29", + "@types/hammerjs": "2.0.33", + "@types/jasmine": "2.2.34", + "@types/lodash": "4.14.35", + "@types/merge2": "0.3.29", + "@types/mkdirp": "0.3.29", + "@types/node": "^6.0.34", + "@types/protractor": "^4.0.0", + "@types/run-sequence": "0.0.28", + "@types/semver": "5.3.30", + "@types/serve-static": "1.7.31", + "@types/systemjs": "^0.19.33", + "@types/through2": "2.0.29", + "babel-plugin-transform-es2015-modules-systemjs": "6.14.0", + "babel-preset-es2015": "6.16.0", + "canonical-path": "0.0.2", + "connect": "3.5.0", + "conventional-changelog": "1.1.0", + "core-js": "2.4.1", + "cpr": "2.0.0", + "del": "2.2.2", + "dgeni": "^0.4.7", + "dgeni-packages": "^0.16.10", + "dotenv": "4.0.0", + "event-stream": "3.3.4", + "file-loader": "0.9.0", + "fs-extra": "^2.0.0", + "github": "0.2.4", + "glob": "7.0.6", + "gulp": "3.9.1", + "gulp-autoprefixer": "3.1.1", + "gulp-babel": "6.1.2", + "gulp-cached": "1.1.0", + "gulp-clean-css": "2.0.12", + "gulp-concat": "2.6.0", + "gulp-connect": "5.0.0", + "gulp-conventional-changelog": "1.1.0", + "gulp-git": "1.11.3", + "gulp-if": "2.0.1", + "gulp-open": "2.0.0", + "gulp-remember": "0.3.1", + "gulp-rename": "1.2.2", + "gulp-sass": "2.3.2", + "gulp-scss-lint": "0.4.0", + "gulp-shell": "0.5.2", + "gulp-strip-debug": "1.1.0", + "gulp-tslint": "6.1.1", + "gulp-typescript": "2.13.6", + "gulp-uglify": "2.0.0", + "gulp-util": "3.0.7", + "gulp-watch": "4.3.9", + "html-entities": "1.2.0", + "inquirer": "3.0.1", + "ionic-cz-conventional-changelog": "1.0.0", + "ionic-native": "^2.2.6", + "jasmine-core": "2.5.2", + "jasmine-node": "1.14.5", + "karma": "1.3.0", + "karma-chrome-launcher": "2.0.0", + "karma-coverage": "1.1.1", + "karma-jasmine": "1.0.2", + "karma-sourcemap-loader": "0.3.7", + "karma-spec-reporter": "0.0.26", + "merge2": "1.0.2", + "mkdirp": "0.5.1", + "node-html-encoder": "0.0.2", + "p-all": "^1.0.0", + "remap-istanbul": "0.6.4", + "request": "2.75.0", + "resolve-bin": "0.4.0", + "rollup": "0.36.0", + "rollup-plugin-commonjs": "8.0.2", + "rollup-plugin-multi-entry": "2.0.1", + "rollup-plugin-node-resolve": "3.0.0", + "rollup-plugin-uglify": "1.0.1", + "run-sequence": "1.2.2", + "s3": "4.4.0", + "sassdoc": "2.2.1", + "semver": "5.3.0", + "serve-static": "1.11.1", + "strip-function": "0.0.3", + "sw-toolbox": "3.4.0", + "systemjs": "0.19.38", + "through2": "2.0.1", + "ts-node": "1.3.0", + "tslint": "3.15.1", + "tslint-ionic-rules": "0.0.8", + "typescript": "~2.3.3", + "vinyl": "1.2.0", + "webpack": "^2.1.0-beta.27", + "yargs": "5.0.0" + }, + "config": { + "commitizen": { + "path": "node_modules/ionic-cz-conventional-changelog" + }, + "ionic_copy": "./scripts/demos/copy.config.js" + }, + "pre-push#master": [ + "test" + ] +} \ No newline at end of file diff --git a/scripts/README.md b/packages/ionic-angular/scripts/README.md similarity index 100% rename from scripts/README.md rename to packages/ionic-angular/scripts/README.md diff --git a/scripts/build/config.js b/packages/ionic-angular/scripts/build/config.js similarity index 100% rename from scripts/build/config.js rename to packages/ionic-angular/scripts/build/config.js diff --git a/scripts/ci/deploy.sh b/packages/ionic-angular/scripts/ci/deploy.sh similarity index 100% rename from scripts/ci/deploy.sh rename to packages/ionic-angular/scripts/ci/deploy.sh diff --git a/scripts/config.json b/packages/ionic-angular/scripts/config.json similarity index 100% rename from scripts/config.json rename to packages/ionic-angular/scripts/config.json diff --git a/scripts/demos/copy.config.js b/packages/ionic-angular/scripts/demos/copy.config.js similarity index 100% rename from scripts/demos/copy.config.js rename to packages/ionic-angular/scripts/demos/copy.config.js diff --git a/scripts/demos/demos.shared.css b/packages/ionic-angular/scripts/demos/demos.shared.css similarity index 100% rename from scripts/demos/demos.shared.css rename to packages/ionic-angular/scripts/demos/demos.shared.css diff --git a/scripts/demos/index.html b/packages/ionic-angular/scripts/demos/index.html similarity index 100% rename from scripts/demos/index.html rename to packages/ionic-angular/scripts/demos/index.html diff --git a/scripts/demos/sass.config.js b/packages/ionic-angular/scripts/demos/sass.config.js similarity index 100% rename from scripts/demos/sass.config.js rename to packages/ionic-angular/scripts/demos/sass.config.js diff --git a/scripts/demos/variables.scss b/packages/ionic-angular/scripts/demos/variables.scss similarity index 100% rename from scripts/demos/variables.scss rename to packages/ionic-angular/scripts/demos/variables.scss diff --git a/scripts/demos/watch.config.js b/packages/ionic-angular/scripts/demos/watch.config.js similarity index 100% rename from scripts/demos/watch.config.js rename to packages/ionic-angular/scripts/demos/watch.config.js diff --git a/scripts/docs/deploy.sh b/packages/ionic-angular/scripts/docs/deploy.sh similarity index 100% rename from scripts/docs/deploy.sh rename to packages/ionic-angular/scripts/docs/deploy.sh diff --git a/scripts/docs/dgeni-config.js b/packages/ionic-angular/scripts/docs/dgeni-config.js similarity index 100% rename from scripts/docs/dgeni-config.js rename to packages/ionic-angular/scripts/docs/dgeni-config.js diff --git a/scripts/docs/filters/capital.js b/packages/ionic-angular/scripts/docs/filters/capital.js similarity index 100% rename from scripts/docs/filters/capital.js rename to packages/ionic-angular/scripts/docs/filters/capital.js diff --git a/scripts/docs/filters/code.js b/packages/ionic-angular/scripts/docs/filters/code.js similarity index 100% rename from scripts/docs/filters/code.js rename to packages/ionic-angular/scripts/docs/filters/code.js diff --git a/scripts/docs/filters/dump.js b/packages/ionic-angular/scripts/docs/filters/dump.js similarity index 100% rename from scripts/docs/filters/dump.js rename to packages/ionic-angular/scripts/docs/filters/dump.js diff --git a/scripts/docs/filters/platform.js b/packages/ionic-angular/scripts/docs/filters/platform.js similarity index 100% rename from scripts/docs/filters/platform.js rename to packages/ionic-angular/scripts/docs/filters/platform.js diff --git a/scripts/docs/gulp-tasks.js b/packages/ionic-angular/scripts/docs/gulp-tasks.js similarity index 100% rename from scripts/docs/gulp-tasks.js rename to packages/ionic-angular/scripts/docs/gulp-tasks.js diff --git a/scripts/docs/links-package/index.js b/packages/ionic-angular/scripts/docs/links-package/index.js similarity index 100% rename from scripts/docs/links-package/index.js rename to packages/ionic-angular/scripts/docs/links-package/index.js diff --git a/scripts/docs/links-package/inline-tag-defs/link.js b/packages/ionic-angular/scripts/docs/links-package/inline-tag-defs/link.js similarity index 100% rename from scripts/docs/links-package/inline-tag-defs/link.js rename to packages/ionic-angular/scripts/docs/links-package/inline-tag-defs/link.js diff --git a/scripts/docs/links-package/services/getLinkInfo.js b/packages/ionic-angular/scripts/docs/links-package/services/getLinkInfo.js similarity index 100% rename from scripts/docs/links-package/services/getLinkInfo.js rename to packages/ionic-angular/scripts/docs/links-package/services/getLinkInfo.js diff --git a/scripts/docs/prepare.sh b/packages/ionic-angular/scripts/docs/prepare.sh similarity index 100% rename from scripts/docs/prepare.sh rename to packages/ionic-angular/scripts/docs/prepare.sh diff --git a/scripts/docs/processors/collect-inputs-outputs.js b/packages/ionic-angular/scripts/docs/processors/collect-inputs-outputs.js similarity index 100% rename from scripts/docs/processors/collect-inputs-outputs.js rename to packages/ionic-angular/scripts/docs/processors/collect-inputs-outputs.js diff --git a/scripts/docs/processors/hide-private-api.js b/packages/ionic-angular/scripts/docs/processors/hide-private-api.js similarity index 100% rename from scripts/docs/processors/hide-private-api.js rename to packages/ionic-angular/scripts/docs/processors/hide-private-api.js diff --git a/scripts/docs/processors/index-page.js b/packages/ionic-angular/scripts/docs/processors/index-page.js similarity index 100% rename from scripts/docs/processors/index-page.js rename to packages/ionic-angular/scripts/docs/processors/index-page.js diff --git a/scripts/docs/processors/jekyll.js b/packages/ionic-angular/scripts/docs/processors/jekyll.js similarity index 100% rename from scripts/docs/processors/jekyll.js rename to packages/ionic-angular/scripts/docs/processors/jekyll.js diff --git a/scripts/docs/processors/latest-version.js b/packages/ionic-angular/scripts/docs/processors/latest-version.js similarity index 100% rename from scripts/docs/processors/latest-version.js rename to packages/ionic-angular/scripts/docs/processors/latest-version.js diff --git a/scripts/docs/processors/parse-optional.js b/packages/ionic-angular/scripts/docs/processors/parse-optional.js similarity index 100% rename from scripts/docs/processors/parse-optional.js rename to packages/ionic-angular/scripts/docs/processors/parse-optional.js diff --git a/scripts/docs/processors/parse-returns-object.js b/packages/ionic-angular/scripts/docs/processors/parse-returns-object.js similarity index 100% rename from scripts/docs/processors/parse-returns-object.js rename to packages/ionic-angular/scripts/docs/processors/parse-returns-object.js diff --git a/scripts/docs/processors/parse-sass.js b/packages/ionic-angular/scripts/docs/processors/parse-sass.js similarity index 100% rename from scripts/docs/processors/parse-sass.js rename to packages/ionic-angular/scripts/docs/processors/parse-sass.js diff --git a/scripts/docs/processors/remove-private-members.js b/packages/ionic-angular/scripts/docs/processors/remove-private-members.js similarity index 100% rename from scripts/docs/processors/remove-private-members.js rename to packages/ionic-angular/scripts/docs/processors/remove-private-members.js diff --git a/scripts/docs/processors/version-data.js b/packages/ionic-angular/scripts/docs/processors/version-data.js similarity index 100% rename from scripts/docs/processors/version-data.js rename to packages/ionic-angular/scripts/docs/processors/version-data.js diff --git a/scripts/docs/tag-defs/tag-defs.js b/packages/ionic-angular/scripts/docs/tag-defs/tag-defs.js similarity index 100% rename from scripts/docs/tag-defs/tag-defs.js rename to packages/ionic-angular/scripts/docs/tag-defs/tag-defs.js diff --git a/scripts/docs/templates/api_index.template.html b/packages/ionic-angular/scripts/docs/templates/api_index.template.html similarity index 100% rename from scripts/docs/templates/api_index.template.html rename to packages/ionic-angular/scripts/docs/templates/api_index.template.html diff --git a/scripts/docs/templates/api_menu.template.html b/packages/ionic-angular/scripts/docs/templates/api_menu.template.html similarity index 100% rename from scripts/docs/templates/api_menu.template.html rename to packages/ionic-angular/scripts/docs/templates/api_menu.template.html diff --git a/scripts/docs/templates/api_menu_flat_version.template.html b/packages/ionic-angular/scripts/docs/templates/api_menu_flat_version.template.html similarity index 100% rename from scripts/docs/templates/api_menu_flat_version.template.html rename to packages/ionic-angular/scripts/docs/templates/api_menu_flat_version.template.html diff --git a/scripts/docs/templates/api_menu_version.template.html b/packages/ionic-angular/scripts/docs/templates/api_menu_version.template.html similarity index 100% rename from scripts/docs/templates/api_menu_version.template.html rename to packages/ionic-angular/scripts/docs/templates/api_menu_version.template.html diff --git a/scripts/docs/templates/api_version_select.template.html b/packages/ionic-angular/scripts/docs/templates/api_version_select.template.html similarity index 100% rename from scripts/docs/templates/api_version_select.template.html rename to packages/ionic-angular/scripts/docs/templates/api_version_select.template.html diff --git a/scripts/docs/templates/common.template.html b/packages/ionic-angular/scripts/docs/templates/common.template.html similarity index 100% rename from scripts/docs/templates/common.template.html rename to packages/ionic-angular/scripts/docs/templates/common.template.html diff --git a/scripts/docs/typescript-definition-package/index.js b/packages/ionic-angular/scripts/docs/typescript-definition-package/index.js similarity index 100% rename from scripts/docs/typescript-definition-package/index.js rename to packages/ionic-angular/scripts/docs/typescript-definition-package/index.js diff --git a/scripts/docs/typescript-definition-package/mocks/mockPackage.js b/packages/ionic-angular/scripts/docs/typescript-definition-package/mocks/mockPackage.js similarity index 100% rename from scripts/docs/typescript-definition-package/mocks/mockPackage.js rename to packages/ionic-angular/scripts/docs/typescript-definition-package/mocks/mockPackage.js diff --git a/scripts/docs/typescript-definition-package/processors/createTypeDefinitionFile.js b/packages/ionic-angular/scripts/docs/typescript-definition-package/processors/createTypeDefinitionFile.js similarity index 100% rename from scripts/docs/typescript-definition-package/processors/createTypeDefinitionFile.js rename to packages/ionic-angular/scripts/docs/typescript-definition-package/processors/createTypeDefinitionFile.js diff --git a/scripts/docs/typescript-definition-package/processors/createTypeDefinitionFile.spec.js b/packages/ionic-angular/scripts/docs/typescript-definition-package/processors/createTypeDefinitionFile.spec.js similarity index 100% rename from scripts/docs/typescript-definition-package/processors/createTypeDefinitionFile.spec.js rename to packages/ionic-angular/scripts/docs/typescript-definition-package/processors/createTypeDefinitionFile.spec.js diff --git a/scripts/docs/typescript-definition-package/templates/angular2/angular2.d.ts.template.html b/packages/ionic-angular/scripts/docs/typescript-definition-package/templates/angular2/angular2.d.ts.template.html similarity index 100% rename from scripts/docs/typescript-definition-package/templates/angular2/angular2.d.ts.template.html rename to packages/ionic-angular/scripts/docs/typescript-definition-package/templates/angular2/angular2.d.ts.template.html diff --git a/scripts/docs/typescript-definition-package/templates/type-definition.template.html b/packages/ionic-angular/scripts/docs/typescript-definition-package/templates/type-definition.template.html similarity index 100% rename from scripts/docs/typescript-definition-package/templates/type-definition.template.html rename to packages/ionic-angular/scripts/docs/typescript-definition-package/templates/type-definition.template.html diff --git a/scripts/e2e/copy.config.js b/packages/ionic-angular/scripts/e2e/copy.config.js similarity index 100% rename from scripts/e2e/copy.config.js rename to packages/ionic-angular/scripts/e2e/copy.config.js diff --git a/scripts/e2e/e2e-publish.js b/packages/ionic-angular/scripts/e2e/e2e-publish.js similarity index 100% rename from scripts/e2e/e2e-publish.js rename to packages/ionic-angular/scripts/e2e/e2e-publish.js diff --git a/scripts/e2e/e2e.shared.css b/packages/ionic-angular/scripts/e2e/e2e.shared.css similarity index 100% rename from scripts/e2e/e2e.shared.css rename to packages/ionic-angular/scripts/e2e/e2e.shared.css diff --git a/scripts/e2e/e2e.template.js b/packages/ionic-angular/scripts/e2e/e2e.template.js similarity index 100% rename from scripts/e2e/e2e.template.js rename to packages/ionic-angular/scripts/e2e/e2e.template.js diff --git a/scripts/e2e/index.html b/packages/ionic-angular/scripts/e2e/index.html similarity index 100% rename from scripts/e2e/index.html rename to packages/ionic-angular/scripts/e2e/index.html diff --git a/scripts/e2e/sass.config.js b/packages/ionic-angular/scripts/e2e/sass.config.js similarity index 100% rename from scripts/e2e/sass.config.js rename to packages/ionic-angular/scripts/e2e/sass.config.js diff --git a/scripts/e2e/variables.scss b/packages/ionic-angular/scripts/e2e/variables.scss similarity index 100% rename from scripts/e2e/variables.scss rename to packages/ionic-angular/scripts/e2e/variables.scss diff --git a/scripts/git/clone.sh b/packages/ionic-angular/scripts/git/clone.sh similarity index 100% rename from scripts/git/clone.sh rename to packages/ionic-angular/scripts/git/clone.sh diff --git a/scripts/gulp/constants.ts b/packages/ionic-angular/scripts/gulp/constants.ts similarity index 100% rename from scripts/gulp/constants.ts rename to packages/ionic-angular/scripts/gulp/constants.ts diff --git a/scripts/gulp/declarations.d.ts b/packages/ionic-angular/scripts/gulp/declarations.d.ts similarity index 100% rename from scripts/gulp/declarations.d.ts rename to packages/ionic-angular/scripts/gulp/declarations.d.ts diff --git a/scripts/gulp/gulpfile.ts b/packages/ionic-angular/scripts/gulp/gulpfile.ts similarity index 100% rename from scripts/gulp/gulpfile.ts rename to packages/ionic-angular/scripts/gulp/gulpfile.ts diff --git a/scripts/gulp/tasks/build.ts b/packages/ionic-angular/scripts/gulp/tasks/build.ts similarity index 100% rename from scripts/gulp/tasks/build.ts rename to packages/ionic-angular/scripts/gulp/tasks/build.ts diff --git a/scripts/gulp/tasks/clean.ts b/packages/ionic-angular/scripts/gulp/tasks/clean.ts similarity index 100% rename from scripts/gulp/tasks/clean.ts rename to packages/ionic-angular/scripts/gulp/tasks/clean.ts diff --git a/scripts/gulp/tasks/core.ts b/packages/ionic-angular/scripts/gulp/tasks/core.ts similarity index 100% rename from scripts/gulp/tasks/core.ts rename to packages/ionic-angular/scripts/gulp/tasks/core.ts diff --git a/scripts/gulp/tasks/default.ts b/packages/ionic-angular/scripts/gulp/tasks/default.ts similarity index 100% rename from scripts/gulp/tasks/default.ts rename to packages/ionic-angular/scripts/gulp/tasks/default.ts diff --git a/scripts/gulp/tasks/demos.dev.ts b/packages/ionic-angular/scripts/gulp/tasks/demos.dev.ts similarity index 100% rename from scripts/gulp/tasks/demos.dev.ts rename to packages/ionic-angular/scripts/gulp/tasks/demos.dev.ts diff --git a/scripts/gulp/tasks/demos.prod.ts b/packages/ionic-angular/scripts/gulp/tasks/demos.prod.ts similarity index 100% rename from scripts/gulp/tasks/demos.prod.ts rename to packages/ionic-angular/scripts/gulp/tasks/demos.prod.ts diff --git a/scripts/gulp/tasks/demos.ts b/packages/ionic-angular/scripts/gulp/tasks/demos.ts similarity index 100% rename from scripts/gulp/tasks/demos.ts rename to packages/ionic-angular/scripts/gulp/tasks/demos.ts diff --git a/scripts/gulp/tasks/docs.ts b/packages/ionic-angular/scripts/gulp/tasks/docs.ts similarity index 100% rename from scripts/gulp/tasks/docs.ts rename to packages/ionic-angular/scripts/gulp/tasks/docs.ts diff --git a/scripts/gulp/tasks/e2e.dev.ts b/packages/ionic-angular/scripts/gulp/tasks/e2e.dev.ts similarity index 100% rename from scripts/gulp/tasks/e2e.dev.ts rename to packages/ionic-angular/scripts/gulp/tasks/e2e.dev.ts diff --git a/scripts/gulp/tasks/e2e.prod.ts b/packages/ionic-angular/scripts/gulp/tasks/e2e.prod.ts similarity index 100% rename from scripts/gulp/tasks/e2e.prod.ts rename to packages/ionic-angular/scripts/gulp/tasks/e2e.prod.ts diff --git a/scripts/gulp/tasks/lint.ts b/packages/ionic-angular/scripts/gulp/tasks/lint.ts similarity index 100% rename from scripts/gulp/tasks/lint.ts rename to packages/ionic-angular/scripts/gulp/tasks/lint.ts diff --git a/scripts/gulp/tasks/polyfill.source.ts b/packages/ionic-angular/scripts/gulp/tasks/polyfill.source.ts similarity index 100% rename from scripts/gulp/tasks/polyfill.source.ts rename to packages/ionic-angular/scripts/gulp/tasks/polyfill.source.ts diff --git a/scripts/gulp/tasks/polyfill.ts b/packages/ionic-angular/scripts/gulp/tasks/polyfill.ts similarity index 100% rename from scripts/gulp/tasks/polyfill.ts rename to packages/ionic-angular/scripts/gulp/tasks/polyfill.ts diff --git a/scripts/gulp/tasks/release.ts b/packages/ionic-angular/scripts/gulp/tasks/release.ts similarity index 100% rename from scripts/gulp/tasks/release.ts rename to packages/ionic-angular/scripts/gulp/tasks/release.ts diff --git a/scripts/gulp/tasks/snapshot.ts b/packages/ionic-angular/scripts/gulp/tasks/snapshot.ts similarity index 100% rename from scripts/gulp/tasks/snapshot.ts rename to packages/ionic-angular/scripts/gulp/tasks/snapshot.ts diff --git a/scripts/gulp/tasks/test.ts b/packages/ionic-angular/scripts/gulp/tasks/test.ts similarity index 100% rename from scripts/gulp/tasks/test.ts rename to packages/ionic-angular/scripts/gulp/tasks/test.ts diff --git a/scripts/gulp/tasks/theme.ts b/packages/ionic-angular/scripts/gulp/tasks/theme.ts similarity index 100% rename from scripts/gulp/tasks/theme.ts rename to packages/ionic-angular/scripts/gulp/tasks/theme.ts diff --git a/scripts/gulp/tsconfig.json b/packages/ionic-angular/scripts/gulp/tsconfig.json similarity index 100% rename from scripts/gulp/tsconfig.json rename to packages/ionic-angular/scripts/gulp/tsconfig.json diff --git a/scripts/gulp/util.ts b/packages/ionic-angular/scripts/gulp/util.ts similarity index 100% rename from scripts/gulp/util.ts rename to packages/ionic-angular/scripts/gulp/util.ts diff --git a/scripts/gulp/utils/app-scripts-worker-client.ts b/packages/ionic-angular/scripts/gulp/utils/app-scripts-worker-client.ts similarity index 100% rename from scripts/gulp/utils/app-scripts-worker-client.ts rename to packages/ionic-angular/scripts/gulp/utils/app-scripts-worker-client.ts diff --git a/scripts/gulp/utils/interfaces.ts b/packages/ionic-angular/scripts/gulp/utils/interfaces.ts similarity index 100% rename from scripts/gulp/utils/interfaces.ts rename to packages/ionic-angular/scripts/gulp/utils/interfaces.ts diff --git a/scripts/karma/browser-providers.ts b/packages/ionic-angular/scripts/karma/browser-providers.ts similarity index 100% rename from scripts/karma/browser-providers.ts rename to packages/ionic-angular/scripts/karma/browser-providers.ts diff --git a/scripts/karma/karma.conf.js b/packages/ionic-angular/scripts/karma/karma.conf.js similarity index 100% rename from scripts/karma/karma.conf.js rename to packages/ionic-angular/scripts/karma/karma.conf.js diff --git a/scripts/karma/karma.config.ts b/packages/ionic-angular/scripts/karma/karma.config.ts similarity index 100% rename from scripts/karma/karma.config.ts rename to packages/ionic-angular/scripts/karma/karma.config.ts diff --git a/scripts/karma/system.config.js b/packages/ionic-angular/scripts/karma/system.config.js similarity index 100% rename from scripts/karma/system.config.js rename to packages/ionic-angular/scripts/karma/system.config.js diff --git a/scripts/npm/.npmignore b/packages/ionic-angular/scripts/npm/.npmignore similarity index 100% rename from scripts/npm/.npmignore rename to packages/ionic-angular/scripts/npm/.npmignore diff --git a/scripts/npm/README.md b/packages/ionic-angular/scripts/npm/README.md similarity index 100% rename from scripts/npm/README.md rename to packages/ionic-angular/scripts/npm/README.md diff --git a/scripts/npm/package.json b/packages/ionic-angular/scripts/npm/package.json similarity index 100% rename from scripts/npm/package.json rename to packages/ionic-angular/scripts/npm/package.json diff --git a/scripts/polyfill/polyfill.dom.js b/packages/ionic-angular/scripts/polyfill/polyfill.dom.js similarity index 100% rename from scripts/polyfill/polyfill.dom.js rename to packages/ionic-angular/scripts/polyfill/polyfill.dom.js diff --git a/scripts/polyfill/readme.md b/packages/ionic-angular/scripts/polyfill/readme.md similarity index 100% rename from scripts/polyfill/readme.md rename to packages/ionic-angular/scripts/polyfill/readme.md diff --git a/scripts/snapshot/ionic.snapshot.js b/packages/ionic-angular/scripts/snapshot/ionic.snapshot.js similarity index 100% rename from scripts/snapshot/ionic.snapshot.js rename to packages/ionic-angular/scripts/snapshot/ionic.snapshot.js diff --git a/scripts/snapshot/protractor.config.js b/packages/ionic-angular/scripts/snapshot/protractor.config.js similarity index 100% rename from scripts/snapshot/protractor.config.js rename to packages/ionic-angular/scripts/snapshot/protractor.config.js diff --git a/scripts/snapshot/snapshot.config.js b/packages/ionic-angular/scripts/snapshot/snapshot.config.js similarity index 100% rename from scripts/snapshot/snapshot.config.js rename to packages/ionic-angular/scripts/snapshot/snapshot.config.js diff --git a/scripts/templates/component/html.tmpl b/packages/ionic-angular/scripts/templates/component/html.tmpl similarity index 100% rename from scripts/templates/component/html.tmpl rename to packages/ionic-angular/scripts/templates/component/html.tmpl diff --git a/scripts/templates/component/module.ts.tmpl b/packages/ionic-angular/scripts/templates/component/module.ts.tmpl similarity index 100% rename from scripts/templates/component/module.ts.tmpl rename to packages/ionic-angular/scripts/templates/component/module.ts.tmpl diff --git a/scripts/templates/component/scss.tmpl b/packages/ionic-angular/scripts/templates/component/scss.tmpl similarity index 100% rename from scripts/templates/component/scss.tmpl rename to packages/ionic-angular/scripts/templates/component/scss.tmpl diff --git a/scripts/templates/component/spec.ts.tmpl b/packages/ionic-angular/scripts/templates/component/spec.ts.tmpl similarity index 100% rename from scripts/templates/component/spec.ts.tmpl rename to packages/ionic-angular/scripts/templates/component/spec.ts.tmpl diff --git a/scripts/templates/component/ts.tmpl b/packages/ionic-angular/scripts/templates/component/ts.tmpl similarity index 100% rename from scripts/templates/component/ts.tmpl rename to packages/ionic-angular/scripts/templates/component/ts.tmpl diff --git a/scripts/templates/directive/spec.ts.tmpl b/packages/ionic-angular/scripts/templates/directive/spec.ts.tmpl similarity index 100% rename from scripts/templates/directive/spec.ts.tmpl rename to packages/ionic-angular/scripts/templates/directive/spec.ts.tmpl diff --git a/scripts/templates/directive/ts.tmpl b/packages/ionic-angular/scripts/templates/directive/ts.tmpl similarity index 100% rename from scripts/templates/directive/ts.tmpl rename to packages/ionic-angular/scripts/templates/directive/ts.tmpl diff --git a/scripts/templates/page/html.tmpl b/packages/ionic-angular/scripts/templates/page/html.tmpl similarity index 100% rename from scripts/templates/page/html.tmpl rename to packages/ionic-angular/scripts/templates/page/html.tmpl diff --git a/scripts/templates/page/module.ts.tmpl b/packages/ionic-angular/scripts/templates/page/module.ts.tmpl similarity index 100% rename from scripts/templates/page/module.ts.tmpl rename to packages/ionic-angular/scripts/templates/page/module.ts.tmpl diff --git a/scripts/templates/page/scss.tmpl b/packages/ionic-angular/scripts/templates/page/scss.tmpl similarity index 100% rename from scripts/templates/page/scss.tmpl rename to packages/ionic-angular/scripts/templates/page/scss.tmpl diff --git a/scripts/templates/page/spec.ts.tmpl b/packages/ionic-angular/scripts/templates/page/spec.ts.tmpl similarity index 100% rename from scripts/templates/page/spec.ts.tmpl rename to packages/ionic-angular/scripts/templates/page/spec.ts.tmpl diff --git a/scripts/templates/page/ts.tmpl b/packages/ionic-angular/scripts/templates/page/ts.tmpl similarity index 100% rename from scripts/templates/page/ts.tmpl rename to packages/ionic-angular/scripts/templates/page/ts.tmpl diff --git a/scripts/templates/pipe/spec.ts.tmpl b/packages/ionic-angular/scripts/templates/pipe/spec.ts.tmpl similarity index 100% rename from scripts/templates/pipe/spec.ts.tmpl rename to packages/ionic-angular/scripts/templates/pipe/spec.ts.tmpl diff --git a/scripts/templates/pipe/ts.tmpl b/packages/ionic-angular/scripts/templates/pipe/ts.tmpl similarity index 100% rename from scripts/templates/pipe/ts.tmpl rename to packages/ionic-angular/scripts/templates/pipe/ts.tmpl diff --git a/scripts/templates/provider/spec.ts.tmpl b/packages/ionic-angular/scripts/templates/provider/spec.ts.tmpl similarity index 100% rename from scripts/templates/provider/spec.ts.tmpl rename to packages/ionic-angular/scripts/templates/provider/spec.ts.tmpl diff --git a/scripts/templates/provider/ts.tmpl b/packages/ionic-angular/scripts/templates/provider/ts.tmpl similarity index 100% rename from scripts/templates/provider/ts.tmpl rename to packages/ionic-angular/scripts/templates/provider/ts.tmpl diff --git a/scripts/templates/tabs/html.tmpl b/packages/ionic-angular/scripts/templates/tabs/html.tmpl similarity index 100% rename from scripts/templates/tabs/html.tmpl rename to packages/ionic-angular/scripts/templates/tabs/html.tmpl diff --git a/scripts/templates/tabs/module.ts.tmpl b/packages/ionic-angular/scripts/templates/tabs/module.ts.tmpl similarity index 100% rename from scripts/templates/tabs/module.ts.tmpl rename to packages/ionic-angular/scripts/templates/tabs/module.ts.tmpl diff --git a/scripts/templates/tabs/scss.tmpl b/packages/ionic-angular/scripts/templates/tabs/scss.tmpl similarity index 100% rename from scripts/templates/tabs/scss.tmpl rename to packages/ionic-angular/scripts/templates/tabs/scss.tmpl diff --git a/scripts/templates/tabs/spec.ts.tmpl b/packages/ionic-angular/scripts/templates/tabs/spec.ts.tmpl similarity index 100% rename from scripts/templates/tabs/spec.ts.tmpl rename to packages/ionic-angular/scripts/templates/tabs/spec.ts.tmpl diff --git a/scripts/templates/tabs/ts.tmpl b/packages/ionic-angular/scripts/templates/tabs/ts.tmpl similarity index 100% rename from scripts/templates/tabs/ts.tmpl rename to packages/ionic-angular/scripts/templates/tabs/ts.tmpl diff --git a/scripts/utils.sh.inc b/packages/ionic-angular/scripts/utils.sh.inc similarity index 100% rename from scripts/utils.sh.inc rename to packages/ionic-angular/scripts/utils.sh.inc diff --git a/src/animations/animation.ts b/packages/ionic-angular/src/animations/animation.ts similarity index 100% rename from src/animations/animation.ts rename to packages/ionic-angular/src/animations/animation.ts diff --git a/src/bindings/angular/components/boolean-input.ts b/packages/ionic-angular/src/bindings/angular/components/boolean-input.ts similarity index 100% rename from src/bindings/angular/components/boolean-input.ts rename to packages/ionic-angular/src/bindings/angular/components/boolean-input.ts diff --git a/src/bindings/angular/providers/ionic-core.ts b/packages/ionic-angular/src/bindings/angular/providers/ionic-core.ts similarity index 100% rename from src/bindings/angular/providers/ionic-core.ts rename to packages/ionic-angular/src/bindings/angular/providers/ionic-core.ts diff --git a/src/components/action-sheet/action-sheet-component.ts b/packages/ionic-angular/src/components/action-sheet/action-sheet-component.ts similarity index 100% rename from src/components/action-sheet/action-sheet-component.ts rename to packages/ionic-angular/src/components/action-sheet/action-sheet-component.ts diff --git a/src/components/action-sheet/action-sheet-controller.ts b/packages/ionic-angular/src/components/action-sheet/action-sheet-controller.ts similarity index 100% rename from src/components/action-sheet/action-sheet-controller.ts rename to packages/ionic-angular/src/components/action-sheet/action-sheet-controller.ts diff --git a/src/components/action-sheet/action-sheet-options.ts b/packages/ionic-angular/src/components/action-sheet/action-sheet-options.ts similarity index 100% rename from src/components/action-sheet/action-sheet-options.ts rename to packages/ionic-angular/src/components/action-sheet/action-sheet-options.ts diff --git a/src/components/action-sheet/action-sheet-transitions.ts b/packages/ionic-angular/src/components/action-sheet/action-sheet-transitions.ts similarity index 100% rename from src/components/action-sheet/action-sheet-transitions.ts rename to packages/ionic-angular/src/components/action-sheet/action-sheet-transitions.ts diff --git a/src/components/action-sheet/action-sheet.ios.scss b/packages/ionic-angular/src/components/action-sheet/action-sheet.ios.scss similarity index 100% rename from src/components/action-sheet/action-sheet.ios.scss rename to packages/ionic-angular/src/components/action-sheet/action-sheet.ios.scss diff --git a/src/components/action-sheet/action-sheet.md.scss b/packages/ionic-angular/src/components/action-sheet/action-sheet.md.scss similarity index 100% rename from src/components/action-sheet/action-sheet.md.scss rename to packages/ionic-angular/src/components/action-sheet/action-sheet.md.scss diff --git a/src/components/action-sheet/action-sheet.scss b/packages/ionic-angular/src/components/action-sheet/action-sheet.scss similarity index 100% rename from src/components/action-sheet/action-sheet.scss rename to packages/ionic-angular/src/components/action-sheet/action-sheet.scss diff --git a/src/components/action-sheet/action-sheet.ts b/packages/ionic-angular/src/components/action-sheet/action-sheet.ts similarity index 100% rename from src/components/action-sheet/action-sheet.ts rename to packages/ionic-angular/src/components/action-sheet/action-sheet.ts diff --git a/src/components/action-sheet/action-sheet.wp.scss b/packages/ionic-angular/src/components/action-sheet/action-sheet.wp.scss similarity index 100% rename from src/components/action-sheet/action-sheet.wp.scss rename to packages/ionic-angular/src/components/action-sheet/action-sheet.wp.scss diff --git a/src/components/action-sheet/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/action-sheet/test/basic/app/app.component.ts similarity index 100% rename from src/components/action-sheet/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/action-sheet/test/basic/app/app.component.ts diff --git a/src/components/action-sheet/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/action-sheet/test/basic/app/app.module.ts similarity index 100% rename from src/components/action-sheet/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/action-sheet/test/basic/app/app.module.ts diff --git a/src/components/action-sheet/test/basic/app/main.ts b/packages/ionic-angular/src/components/action-sheet/test/basic/app/main.ts similarity index 100% rename from src/components/action-sheet/test/basic/app/main.ts rename to packages/ionic-angular/src/components/action-sheet/test/basic/app/main.ts diff --git a/src/components/action-sheet/test/basic/e2e.ts b/packages/ionic-angular/src/components/action-sheet/test/basic/e2e.ts similarity index 100% rename from src/components/action-sheet/test/basic/e2e.ts rename to packages/ionic-angular/src/components/action-sheet/test/basic/e2e.ts diff --git a/src/components/action-sheet/test/basic/pages/modal-page/modal-page.module.ts b/packages/ionic-angular/src/components/action-sheet/test/basic/pages/modal-page/modal-page.module.ts similarity index 100% rename from src/components/action-sheet/test/basic/pages/modal-page/modal-page.module.ts rename to packages/ionic-angular/src/components/action-sheet/test/basic/pages/modal-page/modal-page.module.ts diff --git a/src/components/action-sheet/test/basic/pages/modal-page/modal-page.ts b/packages/ionic-angular/src/components/action-sheet/test/basic/pages/modal-page/modal-page.ts similarity index 100% rename from src/components/action-sheet/test/basic/pages/modal-page/modal-page.ts rename to packages/ionic-angular/src/components/action-sheet/test/basic/pages/modal-page/modal-page.ts diff --git a/src/components/action-sheet/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/action-sheet/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/action-sheet/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/action-sheet/test/basic/pages/page-one/page-one.html diff --git a/src/components/action-sheet/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/action-sheet/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/action-sheet/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/action-sheet/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/action-sheet/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/action-sheet/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/action-sheet/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/action-sheet/test/basic/pages/page-one/page-one.ts diff --git a/src/components/alert/alert-component.ts b/packages/ionic-angular/src/components/alert/alert-component.ts similarity index 100% rename from src/components/alert/alert-component.ts rename to packages/ionic-angular/src/components/alert/alert-component.ts diff --git a/src/components/alert/alert-controller.ts b/packages/ionic-angular/src/components/alert/alert-controller.ts similarity index 100% rename from src/components/alert/alert-controller.ts rename to packages/ionic-angular/src/components/alert/alert-controller.ts diff --git a/src/components/alert/alert-options.ts b/packages/ionic-angular/src/components/alert/alert-options.ts similarity index 100% rename from src/components/alert/alert-options.ts rename to packages/ionic-angular/src/components/alert/alert-options.ts diff --git a/src/components/alert/alert-transitions.ts b/packages/ionic-angular/src/components/alert/alert-transitions.ts similarity index 100% rename from src/components/alert/alert-transitions.ts rename to packages/ionic-angular/src/components/alert/alert-transitions.ts diff --git a/src/components/alert/alert.ios.scss b/packages/ionic-angular/src/components/alert/alert.ios.scss similarity index 100% rename from src/components/alert/alert.ios.scss rename to packages/ionic-angular/src/components/alert/alert.ios.scss diff --git a/src/components/alert/alert.md.scss b/packages/ionic-angular/src/components/alert/alert.md.scss similarity index 100% rename from src/components/alert/alert.md.scss rename to packages/ionic-angular/src/components/alert/alert.md.scss diff --git a/src/components/alert/alert.scss b/packages/ionic-angular/src/components/alert/alert.scss similarity index 100% rename from src/components/alert/alert.scss rename to packages/ionic-angular/src/components/alert/alert.scss diff --git a/src/components/alert/alert.ts b/packages/ionic-angular/src/components/alert/alert.ts similarity index 100% rename from src/components/alert/alert.ts rename to packages/ionic-angular/src/components/alert/alert.ts diff --git a/src/components/alert/alert.wp.scss b/packages/ionic-angular/src/components/alert/alert.wp.scss similarity index 100% rename from src/components/alert/alert.wp.scss rename to packages/ionic-angular/src/components/alert/alert.wp.scss diff --git a/src/components/alert/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/alert/test/basic/app/app.component.ts similarity index 100% rename from src/components/alert/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/alert/test/basic/app/app.component.ts diff --git a/src/components/alert/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/alert/test/basic/app/app.module.ts similarity index 100% rename from src/components/alert/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/alert/test/basic/app/app.module.ts diff --git a/src/components/alert/test/basic/app/main.ts b/packages/ionic-angular/src/components/alert/test/basic/app/main.ts similarity index 100% rename from src/components/alert/test/basic/app/main.ts rename to packages/ionic-angular/src/components/alert/test/basic/app/main.ts diff --git a/src/components/alert/test/basic/e2e.ts b/packages/ionic-angular/src/components/alert/test/basic/e2e.ts similarity index 100% rename from src/components/alert/test/basic/e2e.ts rename to packages/ionic-angular/src/components/alert/test/basic/e2e.ts diff --git a/src/components/alert/test/basic/pages/modal-page/modal-page.module.ts b/packages/ionic-angular/src/components/alert/test/basic/pages/modal-page/modal-page.module.ts similarity index 100% rename from src/components/alert/test/basic/pages/modal-page/modal-page.module.ts rename to packages/ionic-angular/src/components/alert/test/basic/pages/modal-page/modal-page.module.ts diff --git a/src/components/alert/test/basic/pages/modal-page/modal-page.ts b/packages/ionic-angular/src/components/alert/test/basic/pages/modal-page/modal-page.ts similarity index 100% rename from src/components/alert/test/basic/pages/modal-page/modal-page.ts rename to packages/ionic-angular/src/components/alert/test/basic/pages/modal-page/modal-page.ts diff --git a/src/components/alert/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/alert/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/alert/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/alert/test/basic/pages/page-one/page-one.html diff --git a/src/components/alert/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/alert/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/alert/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/alert/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/alert/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/alert/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/alert/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/alert/test/basic/pages/page-one/page-one.ts diff --git a/src/components/alert/test/dismiss/app.module.ts b/packages/ionic-angular/src/components/alert/test/dismiss/app.module.ts similarity index 100% rename from src/components/alert/test/dismiss/app.module.ts rename to packages/ionic-angular/src/components/alert/test/dismiss/app.module.ts diff --git a/src/components/alert/test/dismiss/main.html b/packages/ionic-angular/src/components/alert/test/dismiss/main.html similarity index 100% rename from src/components/alert/test/dismiss/main.html rename to packages/ionic-angular/src/components/alert/test/dismiss/main.html diff --git a/src/components/alert/test/dismiss/main.ts b/packages/ionic-angular/src/components/alert/test/dismiss/main.ts similarity index 100% rename from src/components/alert/test/dismiss/main.ts rename to packages/ionic-angular/src/components/alert/test/dismiss/main.ts diff --git a/src/components/app/app-constants.ts b/packages/ionic-angular/src/components/app/app-constants.ts similarity index 100% rename from src/components/app/app-constants.ts rename to packages/ionic-angular/src/components/app/app-constants.ts diff --git a/src/components/app/app-root.ts b/packages/ionic-angular/src/components/app/app-root.ts similarity index 100% rename from src/components/app/app-root.ts rename to packages/ionic-angular/src/components/app/app-root.ts diff --git a/src/components/app/app.ios.scss b/packages/ionic-angular/src/components/app/app.ios.scss similarity index 100% rename from src/components/app/app.ios.scss rename to packages/ionic-angular/src/components/app/app.ios.scss diff --git a/src/components/app/app.md.scss b/packages/ionic-angular/src/components/app/app.md.scss similarity index 100% rename from src/components/app/app.md.scss rename to packages/ionic-angular/src/components/app/app.md.scss diff --git a/src/components/app/app.scss b/packages/ionic-angular/src/components/app/app.scss similarity index 100% rename from src/components/app/app.scss rename to packages/ionic-angular/src/components/app/app.scss diff --git a/src/components/app/app.ts b/packages/ionic-angular/src/components/app/app.ts similarity index 100% rename from src/components/app/app.ts rename to packages/ionic-angular/src/components/app/app.ts diff --git a/src/components/app/app.wp.scss b/packages/ionic-angular/src/components/app/app.wp.scss similarity index 100% rename from src/components/app/app.wp.scss rename to packages/ionic-angular/src/components/app/app.wp.scss diff --git a/src/components/app/click-block.ts b/packages/ionic-angular/src/components/app/click-block.ts similarity index 100% rename from src/components/app/click-block.ts rename to packages/ionic-angular/src/components/app/click-block.ts diff --git a/src/components/app/menu-controller.ts b/packages/ionic-angular/src/components/app/menu-controller.ts similarity index 100% rename from src/components/app/menu-controller.ts rename to packages/ionic-angular/src/components/app/menu-controller.ts diff --git a/src/components/app/menu-interface.ts b/packages/ionic-angular/src/components/app/menu-interface.ts similarity index 100% rename from src/components/app/menu-interface.ts rename to packages/ionic-angular/src/components/app/menu-interface.ts diff --git a/src/components/app/overlay-portal.ts b/packages/ionic-angular/src/components/app/overlay-portal.ts similarity index 100% rename from src/components/app/overlay-portal.ts rename to packages/ionic-angular/src/components/app/overlay-portal.ts diff --git a/src/components/app/test/animations/app.module.ts b/packages/ionic-angular/src/components/app/test/animations/app.module.ts similarity index 100% rename from src/components/app/test/animations/app.module.ts rename to packages/ionic-angular/src/components/app/test/animations/app.module.ts diff --git a/src/components/app/test/animations/main.html b/packages/ionic-angular/src/components/app/test/animations/main.html similarity index 100% rename from src/components/app/test/animations/main.html rename to packages/ionic-angular/src/components/app/test/animations/main.html diff --git a/src/components/app/test/animations/main.ts b/packages/ionic-angular/src/components/app/test/animations/main.ts similarity index 100% rename from src/components/app/test/animations/main.ts rename to packages/ionic-angular/src/components/app/test/animations/main.ts diff --git a/src/components/app/test/app.spec.ts b/packages/ionic-angular/src/components/app/test/app.spec.ts similarity index 100% rename from src/components/app/test/app.spec.ts rename to packages/ionic-angular/src/components/app/test/app.spec.ts diff --git a/src/components/app/test/cordova/app/app.component.html b/packages/ionic-angular/src/components/app/test/cordova/app/app.component.html similarity index 100% rename from src/components/app/test/cordova/app/app.component.html rename to packages/ionic-angular/src/components/app/test/cordova/app/app.component.html diff --git a/src/components/app/test/cordova/app/app.component.ts b/packages/ionic-angular/src/components/app/test/cordova/app/app.component.ts similarity index 100% rename from src/components/app/test/cordova/app/app.component.ts rename to packages/ionic-angular/src/components/app/test/cordova/app/app.component.ts diff --git a/src/components/app/test/cordova/app/app.module.ts b/packages/ionic-angular/src/components/app/test/cordova/app/app.module.ts similarity index 100% rename from src/components/app/test/cordova/app/app.module.ts rename to packages/ionic-angular/src/components/app/test/cordova/app/app.module.ts diff --git a/src/components/app/test/cordova/app/main.ts b/packages/ionic-angular/src/components/app/test/cordova/app/main.ts similarity index 100% rename from src/components/app/test/cordova/app/main.ts rename to packages/ionic-angular/src/components/app/test/cordova/app/main.ts diff --git a/src/components/app/test/cordova/e2e.ts b/packages/ionic-angular/src/components/app/test/cordova/e2e.ts similarity index 100% rename from src/components/app/test/cordova/e2e.ts rename to packages/ionic-angular/src/components/app/test/cordova/e2e.ts diff --git a/src/components/app/test/cordova/pages/modal/modal-page.module.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/modal/modal-page.module.ts similarity index 100% rename from src/components/app/test/cordova/pages/modal/modal-page.module.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/modal/modal-page.module.ts diff --git a/src/components/app/test/cordova/pages/modal/modal-page.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/modal/modal-page.ts similarity index 100% rename from src/components/app/test/cordova/pages/modal/modal-page.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/modal/modal-page.ts diff --git a/src/components/app/test/cordova/pages/page-one/page-one.html b/packages/ionic-angular/src/components/app/test/cordova/pages/page-one/page-one.html similarity index 100% rename from src/components/app/test/cordova/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-one/page-one.html diff --git a/src/components/app/test/cordova/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/app/test/cordova/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-one/page-one.module.ts diff --git a/src/components/app/test/cordova/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/page-one/page-one.ts similarity index 100% rename from src/components/app/test/cordova/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-one/page-one.ts diff --git a/src/components/app/test/cordova/pages/page-one/provider-one.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/page-one/provider-one.ts similarity index 100% rename from src/components/app/test/cordova/pages/page-one/provider-one.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-one/provider-one.ts diff --git a/src/components/app/test/cordova/pages/page-one/provider-two.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/page-one/provider-two.ts similarity index 100% rename from src/components/app/test/cordova/pages/page-one/provider-two.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-one/provider-two.ts diff --git a/src/components/app/test/cordova/pages/page-three/page-three.html b/packages/ionic-angular/src/components/app/test/cordova/pages/page-three/page-three.html similarity index 100% rename from src/components/app/test/cordova/pages/page-three/page-three.html rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-three/page-three.html diff --git a/src/components/app/test/cordova/pages/page-three/page-three.module.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/page-three/page-three.module.ts similarity index 100% rename from src/components/app/test/cordova/pages/page-three/page-three.module.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-three/page-three.module.ts diff --git a/src/components/app/test/cordova/pages/page-three/page-three.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/page-three/page-three.ts similarity index 100% rename from src/components/app/test/cordova/pages/page-three/page-three.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-three/page-three.ts diff --git a/src/components/app/test/cordova/pages/page-two/page-two.html b/packages/ionic-angular/src/components/app/test/cordova/pages/page-two/page-two.html similarity index 100% rename from src/components/app/test/cordova/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-two/page-two.html diff --git a/src/components/app/test/cordova/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/app/test/cordova/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-two/page-two.module.ts diff --git a/src/components/app/test/cordova/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/page-two/page-two.ts similarity index 100% rename from src/components/app/test/cordova/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/page-two/page-two.ts diff --git a/src/components/app/test/cordova/pages/tabs-page-one/tabs-page-one.module.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/tabs-page-one/tabs-page-one.module.ts similarity index 100% rename from src/components/app/test/cordova/pages/tabs-page-one/tabs-page-one.module.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/tabs-page-one/tabs-page-one.module.ts diff --git a/src/components/app/test/cordova/pages/tabs-page-one/tabs-page-one.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/tabs-page-one/tabs-page-one.ts similarity index 100% rename from src/components/app/test/cordova/pages/tabs-page-one/tabs-page-one.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/tabs-page-one/tabs-page-one.ts diff --git a/src/components/app/test/cordova/pages/tabs/tabs-page.html b/packages/ionic-angular/src/components/app/test/cordova/pages/tabs/tabs-page.html similarity index 100% rename from src/components/app/test/cordova/pages/tabs/tabs-page.html rename to packages/ionic-angular/src/components/app/test/cordova/pages/tabs/tabs-page.html diff --git a/src/components/app/test/cordova/pages/tabs/tabs-page.module.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/tabs/tabs-page.module.ts similarity index 100% rename from src/components/app/test/cordova/pages/tabs/tabs-page.module.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/tabs/tabs-page.module.ts diff --git a/src/components/app/test/cordova/pages/tabs/tabs-page.ts b/packages/ionic-angular/src/components/app/test/cordova/pages/tabs/tabs-page.ts similarity index 100% rename from src/components/app/test/cordova/pages/tabs/tabs-page.ts rename to packages/ionic-angular/src/components/app/test/cordova/pages/tabs/tabs-page.ts diff --git a/src/components/app/test/gesture-collision/app/app.component.ts b/packages/ionic-angular/src/components/app/test/gesture-collision/app/app.component.ts similarity index 100% rename from src/components/app/test/gesture-collision/app/app.component.ts rename to packages/ionic-angular/src/components/app/test/gesture-collision/app/app.component.ts diff --git a/src/components/app/test/gesture-collision/app/app.module.ts b/packages/ionic-angular/src/components/app/test/gesture-collision/app/app.module.ts similarity index 100% rename from src/components/app/test/gesture-collision/app/app.module.ts rename to packages/ionic-angular/src/components/app/test/gesture-collision/app/app.module.ts diff --git a/src/components/app/test/gesture-collision/app/main.ts b/packages/ionic-angular/src/components/app/test/gesture-collision/app/main.ts similarity index 100% rename from src/components/app/test/gesture-collision/app/main.ts rename to packages/ionic-angular/src/components/app/test/gesture-collision/app/main.ts diff --git a/src/components/app/test/gesture-collision/e2e.ts b/packages/ionic-angular/src/components/app/test/gesture-collision/e2e.ts similarity index 100% rename from src/components/app/test/gesture-collision/e2e.ts rename to packages/ionic-angular/src/components/app/test/gesture-collision/e2e.ts diff --git a/src/components/app/test/gesture-collision/pages/page-one/page-one.html b/packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-one/page-one.html similarity index 100% rename from src/components/app/test/gesture-collision/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-one/page-one.html diff --git a/src/components/app/test/gesture-collision/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/app/test/gesture-collision/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-one/page-one.module.ts diff --git a/src/components/app/test/gesture-collision/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-one/page-one.ts similarity index 100% rename from src/components/app/test/gesture-collision/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-one/page-one.ts diff --git a/src/components/app/test/gesture-collision/pages/page-two/page-two.html b/packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-two/page-two.html similarity index 100% rename from src/components/app/test/gesture-collision/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-two/page-two.html diff --git a/src/components/app/test/gesture-collision/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/app/test/gesture-collision/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-two/page-two.module.ts diff --git a/src/components/app/test/gesture-collision/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-two/page-two.ts similarity index 100% rename from src/components/app/test/gesture-collision/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/app/test/gesture-collision/pages/page-two/page-two.ts diff --git a/src/components/app/test/gestures/app.module.ts b/packages/ionic-angular/src/components/app/test/gestures/app.module.ts similarity index 100% rename from src/components/app/test/gestures/app.module.ts rename to packages/ionic-angular/src/components/app/test/gestures/app.module.ts diff --git a/src/components/app/test/gestures/main.html b/packages/ionic-angular/src/components/app/test/gestures/main.html similarity index 100% rename from src/components/app/test/gestures/main.html rename to packages/ionic-angular/src/components/app/test/gestures/main.html diff --git a/src/components/app/test/gestures/main.ts b/packages/ionic-angular/src/components/app/test/gestures/main.ts similarity index 100% rename from src/components/app/test/gestures/main.ts rename to packages/ionic-angular/src/components/app/test/gestures/main.ts diff --git a/src/components/app/test/ion.spec.ts b/packages/ionic-angular/src/components/app/test/ion.spec.ts similarity index 100% rename from src/components/app/test/ion.spec.ts rename to packages/ionic-angular/src/components/app/test/ion.spec.ts diff --git a/src/components/app/test/typography/app/app.component.ts b/packages/ionic-angular/src/components/app/test/typography/app/app.component.ts similarity index 100% rename from src/components/app/test/typography/app/app.component.ts rename to packages/ionic-angular/src/components/app/test/typography/app/app.component.ts diff --git a/src/components/app/test/typography/app/app.module.ts b/packages/ionic-angular/src/components/app/test/typography/app/app.module.ts similarity index 100% rename from src/components/app/test/typography/app/app.module.ts rename to packages/ionic-angular/src/components/app/test/typography/app/app.module.ts diff --git a/src/components/app/test/typography/app/main.ts b/packages/ionic-angular/src/components/app/test/typography/app/main.ts similarity index 100% rename from src/components/app/test/typography/app/main.ts rename to packages/ionic-angular/src/components/app/test/typography/app/main.ts diff --git a/src/components/app/test/typography/pages/page-one/page-one.html b/packages/ionic-angular/src/components/app/test/typography/pages/page-one/page-one.html similarity index 100% rename from src/components/app/test/typography/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/app/test/typography/pages/page-one/page-one.html diff --git a/src/components/app/test/typography/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/app/test/typography/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/app/test/typography/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/app/test/typography/pages/page-one/page-one.module.ts diff --git a/src/components/app/test/typography/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/app/test/typography/pages/page-one/page-one.ts similarity index 100% rename from src/components/app/test/typography/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/app/test/typography/pages/page-one/page-one.ts diff --git a/src/components/app/test/utilities/app/app.component.ts b/packages/ionic-angular/src/components/app/test/utilities/app/app.component.ts similarity index 100% rename from src/components/app/test/utilities/app/app.component.ts rename to packages/ionic-angular/src/components/app/test/utilities/app/app.component.ts diff --git a/src/components/app/test/utilities/app/app.module.ts b/packages/ionic-angular/src/components/app/test/utilities/app/app.module.ts similarity index 100% rename from src/components/app/test/utilities/app/app.module.ts rename to packages/ionic-angular/src/components/app/test/utilities/app/app.module.ts diff --git a/src/components/app/test/utilities/app/main.ts b/packages/ionic-angular/src/components/app/test/utilities/app/main.ts similarity index 100% rename from src/components/app/test/utilities/app/main.ts rename to packages/ionic-angular/src/components/app/test/utilities/app/main.ts diff --git a/src/components/app/test/utilities/pages/root-page/root-page.html b/packages/ionic-angular/src/components/app/test/utilities/pages/root-page/root-page.html similarity index 100% rename from src/components/app/test/utilities/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/app/test/utilities/pages/root-page/root-page.html diff --git a/src/components/app/test/utilities/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/app/test/utilities/pages/root-page/root-page.ts similarity index 100% rename from src/components/app/test/utilities/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/app/test/utilities/pages/root-page/root-page.ts diff --git a/src/components/avatar/avatar.ios.scss b/packages/ionic-angular/src/components/avatar/avatar.ios.scss similarity index 100% rename from src/components/avatar/avatar.ios.scss rename to packages/ionic-angular/src/components/avatar/avatar.ios.scss diff --git a/src/components/avatar/avatar.md.scss b/packages/ionic-angular/src/components/avatar/avatar.md.scss similarity index 100% rename from src/components/avatar/avatar.md.scss rename to packages/ionic-angular/src/components/avatar/avatar.md.scss diff --git a/src/components/avatar/avatar.scss b/packages/ionic-angular/src/components/avatar/avatar.scss similarity index 100% rename from src/components/avatar/avatar.scss rename to packages/ionic-angular/src/components/avatar/avatar.scss diff --git a/src/components/avatar/avatar.tsx b/packages/ionic-angular/src/components/avatar/avatar.tsx similarity index 100% rename from src/components/avatar/avatar.tsx rename to packages/ionic-angular/src/components/avatar/avatar.tsx diff --git a/src/components/avatar/avatar.wp.scss b/packages/ionic-angular/src/components/avatar/avatar.wp.scss similarity index 100% rename from src/components/avatar/avatar.wp.scss rename to packages/ionic-angular/src/components/avatar/avatar.wp.scss diff --git a/src/components/backdrop/backdrop.scss b/packages/ionic-angular/src/components/backdrop/backdrop.scss similarity index 100% rename from src/components/backdrop/backdrop.scss rename to packages/ionic-angular/src/components/backdrop/backdrop.scss diff --git a/src/components/backdrop/backdrop.ts b/packages/ionic-angular/src/components/backdrop/backdrop.ts similarity index 100% rename from src/components/backdrop/backdrop.ts rename to packages/ionic-angular/src/components/backdrop/backdrop.ts diff --git a/src/components/badge/badge.ios.scss b/packages/ionic-angular/src/components/badge/badge.ios.scss similarity index 100% rename from src/components/badge/badge.ios.scss rename to packages/ionic-angular/src/components/badge/badge.ios.scss diff --git a/src/components/badge/badge.md.scss b/packages/ionic-angular/src/components/badge/badge.md.scss similarity index 100% rename from src/components/badge/badge.md.scss rename to packages/ionic-angular/src/components/badge/badge.md.scss diff --git a/src/components/badge/badge.scss b/packages/ionic-angular/src/components/badge/badge.scss similarity index 100% rename from src/components/badge/badge.scss rename to packages/ionic-angular/src/components/badge/badge.scss diff --git a/src/components/badge/badge.tsx b/packages/ionic-angular/src/components/badge/badge.tsx similarity index 100% rename from src/components/badge/badge.tsx rename to packages/ionic-angular/src/components/badge/badge.tsx diff --git a/src/components/badge/badge.wp.scss b/packages/ionic-angular/src/components/badge/badge.wp.scss similarity index 100% rename from src/components/badge/badge.wp.scss rename to packages/ionic-angular/src/components/badge/badge.wp.scss diff --git a/src/components/badge/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/badge/test/basic/app/app.component.ts similarity index 100% rename from src/components/badge/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/badge/test/basic/app/app.component.ts diff --git a/src/components/badge/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/badge/test/basic/app/app.module.ts similarity index 100% rename from src/components/badge/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/badge/test/basic/app/app.module.ts diff --git a/src/components/badge/test/basic/app/main.ts b/packages/ionic-angular/src/components/badge/test/basic/app/main.ts similarity index 100% rename from src/components/badge/test/basic/app/main.ts rename to packages/ionic-angular/src/components/badge/test/basic/app/main.ts diff --git a/src/components/badge/test/basic/e2e.ts b/packages/ionic-angular/src/components/badge/test/basic/e2e.ts similarity index 100% rename from src/components/badge/test/basic/e2e.ts rename to packages/ionic-angular/src/components/badge/test/basic/e2e.ts diff --git a/src/components/badge/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/badge/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/badge/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/badge/test/basic/pages/page-one/page-one.html diff --git a/src/components/badge/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/badge/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/badge/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/badge/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/badge/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/badge/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/badge/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/badge/test/basic/pages/page-one/page-one.ts diff --git a/src/components/button/button-icon.scss b/packages/ionic-angular/src/components/button/button-icon.scss similarity index 100% rename from src/components/button/button-icon.scss rename to packages/ionic-angular/src/components/button/button-icon.scss diff --git a/src/components/button/button.ios.scss b/packages/ionic-angular/src/components/button/button.ios.scss similarity index 100% rename from src/components/button/button.ios.scss rename to packages/ionic-angular/src/components/button/button.ios.scss diff --git a/src/components/button/button.md.scss b/packages/ionic-angular/src/components/button/button.md.scss similarity index 100% rename from src/components/button/button.md.scss rename to packages/ionic-angular/src/components/button/button.md.scss diff --git a/src/components/button/button.scss b/packages/ionic-angular/src/components/button/button.scss similarity index 100% rename from src/components/button/button.scss rename to packages/ionic-angular/src/components/button/button.scss diff --git a/src/components/button/button.tsx b/packages/ionic-angular/src/components/button/button.tsx similarity index 100% rename from src/components/button/button.tsx rename to packages/ionic-angular/src/components/button/button.tsx diff --git a/src/components/button/button.wp.scss b/packages/ionic-angular/src/components/button/button.wp.scss similarity index 100% rename from src/components/button/button.wp.scss rename to packages/ionic-angular/src/components/button/button.wp.scss diff --git a/src/components/button/test/anchors/app/app.component.ts b/packages/ionic-angular/src/components/button/test/anchors/app/app.component.ts similarity index 100% rename from src/components/button/test/anchors/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/anchors/app/app.component.ts diff --git a/src/components/button/test/anchors/app/app.module.ts b/packages/ionic-angular/src/components/button/test/anchors/app/app.module.ts similarity index 100% rename from src/components/button/test/anchors/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/anchors/app/app.module.ts diff --git a/src/components/button/test/anchors/app/main.ts b/packages/ionic-angular/src/components/button/test/anchors/app/main.ts similarity index 100% rename from src/components/button/test/anchors/app/main.ts rename to packages/ionic-angular/src/components/button/test/anchors/app/main.ts diff --git a/src/components/button/test/anchors/e2e.ts b/packages/ionic-angular/src/components/button/test/anchors/e2e.ts similarity index 100% rename from src/components/button/test/anchors/e2e.ts rename to packages/ionic-angular/src/components/button/test/anchors/e2e.ts diff --git a/src/components/button/test/anchors/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/anchors/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/anchors/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/anchors/pages/page-one/page-one.html diff --git a/src/components/button/test/anchors/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/anchors/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/anchors/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/anchors/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/anchors/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/anchors/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/anchors/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/anchors/pages/page-one/page-one.ts diff --git a/src/components/button/test/attributes/app/app.component.ts b/packages/ionic-angular/src/components/button/test/attributes/app/app.component.ts similarity index 100% rename from src/components/button/test/attributes/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/attributes/app/app.component.ts diff --git a/src/components/button/test/attributes/app/app.module.ts b/packages/ionic-angular/src/components/button/test/attributes/app/app.module.ts similarity index 100% rename from src/components/button/test/attributes/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/attributes/app/app.module.ts diff --git a/src/components/button/test/attributes/app/main.ts b/packages/ionic-angular/src/components/button/test/attributes/app/main.ts similarity index 100% rename from src/components/button/test/attributes/app/main.ts rename to packages/ionic-angular/src/components/button/test/attributes/app/main.ts diff --git a/src/components/button/test/attributes/e2e.ts b/packages/ionic-angular/src/components/button/test/attributes/e2e.ts similarity index 100% rename from src/components/button/test/attributes/e2e.ts rename to packages/ionic-angular/src/components/button/test/attributes/e2e.ts diff --git a/src/components/button/test/attributes/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/attributes/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/attributes/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/attributes/pages/page-one/page-one.html diff --git a/src/components/button/test/attributes/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/attributes/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/attributes/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/attributes/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/attributes/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/attributes/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/attributes/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/attributes/pages/page-one/page-one.ts diff --git a/src/components/button/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/button/test/basic/app/app.component.ts similarity index 100% rename from src/components/button/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/basic/app/app.component.ts diff --git a/src/components/button/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/button/test/basic/app/app.module.ts similarity index 100% rename from src/components/button/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/basic/app/app.module.ts diff --git a/src/components/button/test/basic/app/main.ts b/packages/ionic-angular/src/components/button/test/basic/app/main.ts similarity index 100% rename from src/components/button/test/basic/app/main.ts rename to packages/ionic-angular/src/components/button/test/basic/app/main.ts diff --git a/src/components/button/test/basic/e2e.ts b/packages/ionic-angular/src/components/button/test/basic/e2e.ts similarity index 100% rename from src/components/button/test/basic/e2e.ts rename to packages/ionic-angular/src/components/button/test/basic/e2e.ts diff --git a/src/components/button/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/basic/pages/page-one/page-one.html diff --git a/src/components/button/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/basic/pages/page-one/page-one.ts diff --git a/src/components/button/test/block/app/app.component.ts b/packages/ionic-angular/src/components/button/test/block/app/app.component.ts similarity index 100% rename from src/components/button/test/block/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/block/app/app.component.ts diff --git a/src/components/button/test/block/app/app.module.ts b/packages/ionic-angular/src/components/button/test/block/app/app.module.ts similarity index 100% rename from src/components/button/test/block/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/block/app/app.module.ts diff --git a/src/components/button/test/block/app/main.ts b/packages/ionic-angular/src/components/button/test/block/app/main.ts similarity index 100% rename from src/components/button/test/block/app/main.ts rename to packages/ionic-angular/src/components/button/test/block/app/main.ts diff --git a/src/components/button/test/block/e2e.ts b/packages/ionic-angular/src/components/button/test/block/e2e.ts similarity index 100% rename from src/components/button/test/block/e2e.ts rename to packages/ionic-angular/src/components/button/test/block/e2e.ts diff --git a/src/components/button/test/block/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/block/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/block/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/block/pages/page-one/page-one.html diff --git a/src/components/button/test/block/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/block/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/block/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/block/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/block/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/block/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/block/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/block/pages/page-one/page-one.ts diff --git a/src/components/button/test/button.spec.ts b/packages/ionic-angular/src/components/button/test/button.spec.ts similarity index 100% rename from src/components/button/test/button.spec.ts rename to packages/ionic-angular/src/components/button/test/button.spec.ts diff --git a/src/components/button/test/clear/app/app.component.ts b/packages/ionic-angular/src/components/button/test/clear/app/app.component.ts similarity index 100% rename from src/components/button/test/clear/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/clear/app/app.component.ts diff --git a/src/components/button/test/clear/app/app.module.ts b/packages/ionic-angular/src/components/button/test/clear/app/app.module.ts similarity index 100% rename from src/components/button/test/clear/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/clear/app/app.module.ts diff --git a/src/components/button/test/clear/app/main.ts b/packages/ionic-angular/src/components/button/test/clear/app/main.ts similarity index 100% rename from src/components/button/test/clear/app/main.ts rename to packages/ionic-angular/src/components/button/test/clear/app/main.ts diff --git a/src/components/button/test/clear/e2e.ts b/packages/ionic-angular/src/components/button/test/clear/e2e.ts similarity index 100% rename from src/components/button/test/clear/e2e.ts rename to packages/ionic-angular/src/components/button/test/clear/e2e.ts diff --git a/src/components/button/test/clear/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/clear/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/clear/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/clear/pages/page-one/page-one.html diff --git a/src/components/button/test/clear/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/clear/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/clear/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/clear/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/clear/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/clear/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/clear/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/clear/pages/page-one/page-one.ts diff --git a/src/components/button/test/decorator/app/app.component.ts b/packages/ionic-angular/src/components/button/test/decorator/app/app.component.ts similarity index 100% rename from src/components/button/test/decorator/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/decorator/app/app.component.ts diff --git a/src/components/button/test/decorator/app/app.module.ts b/packages/ionic-angular/src/components/button/test/decorator/app/app.module.ts similarity index 100% rename from src/components/button/test/decorator/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/decorator/app/app.module.ts diff --git a/src/components/button/test/decorator/app/main.ts b/packages/ionic-angular/src/components/button/test/decorator/app/main.ts similarity index 100% rename from src/components/button/test/decorator/app/main.ts rename to packages/ionic-angular/src/components/button/test/decorator/app/main.ts diff --git a/src/components/button/test/decorator/e2e.ts b/packages/ionic-angular/src/components/button/test/decorator/e2e.ts similarity index 100% rename from src/components/button/test/decorator/e2e.ts rename to packages/ionic-angular/src/components/button/test/decorator/e2e.ts diff --git a/src/components/button/test/decorator/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/decorator/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/decorator/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/decorator/pages/page-one/page-one.html diff --git a/src/components/button/test/decorator/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/decorator/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/decorator/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/decorator/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/decorator/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/decorator/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/decorator/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/decorator/pages/page-one/page-one.ts diff --git a/src/components/button/test/dynamic/app/app.component.ts b/packages/ionic-angular/src/components/button/test/dynamic/app/app.component.ts similarity index 100% rename from src/components/button/test/dynamic/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/dynamic/app/app.component.ts diff --git a/src/components/button/test/dynamic/app/app.module.ts b/packages/ionic-angular/src/components/button/test/dynamic/app/app.module.ts similarity index 100% rename from src/components/button/test/dynamic/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/dynamic/app/app.module.ts diff --git a/src/components/button/test/dynamic/app/main.ts b/packages/ionic-angular/src/components/button/test/dynamic/app/main.ts similarity index 100% rename from src/components/button/test/dynamic/app/main.ts rename to packages/ionic-angular/src/components/button/test/dynamic/app/main.ts diff --git a/src/components/button/test/dynamic/e2e.ts b/packages/ionic-angular/src/components/button/test/dynamic/e2e.ts similarity index 100% rename from src/components/button/test/dynamic/e2e.ts rename to packages/ionic-angular/src/components/button/test/dynamic/e2e.ts diff --git a/src/components/button/test/dynamic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/dynamic/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/dynamic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/dynamic/pages/page-one/page-one.html diff --git a/src/components/button/test/dynamic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/dynamic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/dynamic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/dynamic/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/dynamic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/dynamic/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/dynamic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/dynamic/pages/page-one/page-one.ts diff --git a/src/components/button/test/full/app/app.component.ts b/packages/ionic-angular/src/components/button/test/full/app/app.component.ts similarity index 100% rename from src/components/button/test/full/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/full/app/app.component.ts diff --git a/src/components/button/test/full/app/app.module.ts b/packages/ionic-angular/src/components/button/test/full/app/app.module.ts similarity index 100% rename from src/components/button/test/full/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/full/app/app.module.ts diff --git a/src/components/button/test/full/app/main.ts b/packages/ionic-angular/src/components/button/test/full/app/main.ts similarity index 100% rename from src/components/button/test/full/app/main.ts rename to packages/ionic-angular/src/components/button/test/full/app/main.ts diff --git a/src/components/button/test/full/e2e.ts b/packages/ionic-angular/src/components/button/test/full/e2e.ts similarity index 100% rename from src/components/button/test/full/e2e.ts rename to packages/ionic-angular/src/components/button/test/full/e2e.ts diff --git a/src/components/button/test/full/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/full/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/full/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/full/pages/page-one/page-one.html diff --git a/src/components/button/test/full/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/full/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/full/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/full/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/full/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/full/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/full/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/full/pages/page-one/page-one.ts diff --git a/src/components/button/test/icons/app/app.component.ts b/packages/ionic-angular/src/components/button/test/icons/app/app.component.ts similarity index 100% rename from src/components/button/test/icons/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/icons/app/app.component.ts diff --git a/src/components/button/test/icons/app/app.module.ts b/packages/ionic-angular/src/components/button/test/icons/app/app.module.ts similarity index 100% rename from src/components/button/test/icons/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/icons/app/app.module.ts diff --git a/src/components/button/test/icons/app/main.ts b/packages/ionic-angular/src/components/button/test/icons/app/main.ts similarity index 100% rename from src/components/button/test/icons/app/main.ts rename to packages/ionic-angular/src/components/button/test/icons/app/main.ts diff --git a/src/components/button/test/icons/e2e.ts b/packages/ionic-angular/src/components/button/test/icons/e2e.ts similarity index 100% rename from src/components/button/test/icons/e2e.ts rename to packages/ionic-angular/src/components/button/test/icons/e2e.ts diff --git a/src/components/button/test/icons/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/icons/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/icons/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/icons/pages/page-one/page-one.html diff --git a/src/components/button/test/icons/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/icons/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/icons/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/icons/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/icons/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/icons/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/icons/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/icons/pages/page-one/page-one.ts diff --git a/src/components/button/test/outline/app/app.component.ts b/packages/ionic-angular/src/components/button/test/outline/app/app.component.ts similarity index 100% rename from src/components/button/test/outline/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/outline/app/app.component.ts diff --git a/src/components/button/test/outline/app/app.module.ts b/packages/ionic-angular/src/components/button/test/outline/app/app.module.ts similarity index 100% rename from src/components/button/test/outline/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/outline/app/app.module.ts diff --git a/src/components/button/test/outline/app/main.ts b/packages/ionic-angular/src/components/button/test/outline/app/main.ts similarity index 100% rename from src/components/button/test/outline/app/main.ts rename to packages/ionic-angular/src/components/button/test/outline/app/main.ts diff --git a/src/components/button/test/outline/e2e.ts b/packages/ionic-angular/src/components/button/test/outline/e2e.ts similarity index 100% rename from src/components/button/test/outline/e2e.ts rename to packages/ionic-angular/src/components/button/test/outline/e2e.ts diff --git a/src/components/button/test/outline/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/outline/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/outline/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/outline/pages/page-one/page-one.html diff --git a/src/components/button/test/outline/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/outline/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/outline/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/outline/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/outline/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/outline/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/outline/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/outline/pages/page-one/page-one.ts diff --git a/src/components/button/test/raised/app.module.ts b/packages/ionic-angular/src/components/button/test/raised/app.module.ts similarity index 100% rename from src/components/button/test/raised/app.module.ts rename to packages/ionic-angular/src/components/button/test/raised/app.module.ts diff --git a/src/components/button/test/raised/main.html b/packages/ionic-angular/src/components/button/test/raised/main.html similarity index 100% rename from src/components/button/test/raised/main.html rename to packages/ionic-angular/src/components/button/test/raised/main.html diff --git a/src/components/button/test/raised/main.ts b/packages/ionic-angular/src/components/button/test/raised/main.ts similarity index 100% rename from src/components/button/test/raised/main.ts rename to packages/ionic-angular/src/components/button/test/raised/main.ts diff --git a/src/components/button/test/round/app/app.component.ts b/packages/ionic-angular/src/components/button/test/round/app/app.component.ts similarity index 100% rename from src/components/button/test/round/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/round/app/app.component.ts diff --git a/src/components/button/test/round/app/app.module.ts b/packages/ionic-angular/src/components/button/test/round/app/app.module.ts similarity index 100% rename from src/components/button/test/round/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/round/app/app.module.ts diff --git a/src/components/button/test/round/app/main.ts b/packages/ionic-angular/src/components/button/test/round/app/main.ts similarity index 100% rename from src/components/button/test/round/app/main.ts rename to packages/ionic-angular/src/components/button/test/round/app/main.ts diff --git a/src/components/button/test/round/e2e.ts b/packages/ionic-angular/src/components/button/test/round/e2e.ts similarity index 100% rename from src/components/button/test/round/e2e.ts rename to packages/ionic-angular/src/components/button/test/round/e2e.ts diff --git a/src/components/button/test/round/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/round/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/round/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/round/pages/page-one/page-one.html diff --git a/src/components/button/test/round/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/round/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/round/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/round/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/round/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/round/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/round/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/round/pages/page-one/page-one.ts diff --git a/src/components/button/test/sizes/app/app.component.ts b/packages/ionic-angular/src/components/button/test/sizes/app/app.component.ts similarity index 100% rename from src/components/button/test/sizes/app/app.component.ts rename to packages/ionic-angular/src/components/button/test/sizes/app/app.component.ts diff --git a/src/components/button/test/sizes/app/app.module.ts b/packages/ionic-angular/src/components/button/test/sizes/app/app.module.ts similarity index 100% rename from src/components/button/test/sizes/app/app.module.ts rename to packages/ionic-angular/src/components/button/test/sizes/app/app.module.ts diff --git a/src/components/button/test/sizes/app/main.ts b/packages/ionic-angular/src/components/button/test/sizes/app/main.ts similarity index 100% rename from src/components/button/test/sizes/app/main.ts rename to packages/ionic-angular/src/components/button/test/sizes/app/main.ts diff --git a/src/components/button/test/sizes/e2e.ts b/packages/ionic-angular/src/components/button/test/sizes/e2e.ts similarity index 100% rename from src/components/button/test/sizes/e2e.ts rename to packages/ionic-angular/src/components/button/test/sizes/e2e.ts diff --git a/src/components/button/test/sizes/pages/page-one/page-one.html b/packages/ionic-angular/src/components/button/test/sizes/pages/page-one/page-one.html similarity index 100% rename from src/components/button/test/sizes/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/button/test/sizes/pages/page-one/page-one.html diff --git a/src/components/button/test/sizes/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/button/test/sizes/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/button/test/sizes/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/button/test/sizes/pages/page-one/page-one.module.ts diff --git a/src/components/button/test/sizes/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/button/test/sizes/pages/page-one/page-one.ts similarity index 100% rename from src/components/button/test/sizes/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/button/test/sizes/pages/page-one/page-one.ts diff --git a/src/components/buttons/buttons.tsx b/packages/ionic-angular/src/components/buttons/buttons.tsx similarity index 100% rename from src/components/buttons/buttons.tsx rename to packages/ionic-angular/src/components/buttons/buttons.tsx diff --git a/src/components/card-content/card-content.ios.scss b/packages/ionic-angular/src/components/card-content/card-content.ios.scss similarity index 100% rename from src/components/card-content/card-content.ios.scss rename to packages/ionic-angular/src/components/card-content/card-content.ios.scss diff --git a/src/components/card-content/card-content.md.scss b/packages/ionic-angular/src/components/card-content/card-content.md.scss similarity index 100% rename from src/components/card-content/card-content.md.scss rename to packages/ionic-angular/src/components/card-content/card-content.md.scss diff --git a/src/components/card-content/card-content.scss b/packages/ionic-angular/src/components/card-content/card-content.scss similarity index 100% rename from src/components/card-content/card-content.scss rename to packages/ionic-angular/src/components/card-content/card-content.scss diff --git a/src/components/card-content/card-content.tsx b/packages/ionic-angular/src/components/card-content/card-content.tsx similarity index 100% rename from src/components/card-content/card-content.tsx rename to packages/ionic-angular/src/components/card-content/card-content.tsx diff --git a/src/components/card-content/card-content.wp.scss b/packages/ionic-angular/src/components/card-content/card-content.wp.scss similarity index 100% rename from src/components/card-content/card-content.wp.scss rename to packages/ionic-angular/src/components/card-content/card-content.wp.scss diff --git a/src/components/card-header/card-header.ios.scss b/packages/ionic-angular/src/components/card-header/card-header.ios.scss similarity index 100% rename from src/components/card-header/card-header.ios.scss rename to packages/ionic-angular/src/components/card-header/card-header.ios.scss diff --git a/src/components/card-header/card-header.md.scss b/packages/ionic-angular/src/components/card-header/card-header.md.scss similarity index 100% rename from src/components/card-header/card-header.md.scss rename to packages/ionic-angular/src/components/card-header/card-header.md.scss diff --git a/src/components/card-header/card-header.scss b/packages/ionic-angular/src/components/card-header/card-header.scss similarity index 100% rename from src/components/card-header/card-header.scss rename to packages/ionic-angular/src/components/card-header/card-header.scss diff --git a/src/components/card-header/card-header.tsx b/packages/ionic-angular/src/components/card-header/card-header.tsx similarity index 100% rename from src/components/card-header/card-header.tsx rename to packages/ionic-angular/src/components/card-header/card-header.tsx diff --git a/src/components/card-header/card-header.wp.scss b/packages/ionic-angular/src/components/card-header/card-header.wp.scss similarity index 100% rename from src/components/card-header/card-header.wp.scss rename to packages/ionic-angular/src/components/card-header/card-header.wp.scss diff --git a/src/components/card-title/card-title.ios.scss b/packages/ionic-angular/src/components/card-title/card-title.ios.scss similarity index 100% rename from src/components/card-title/card-title.ios.scss rename to packages/ionic-angular/src/components/card-title/card-title.ios.scss diff --git a/src/components/card-title/card-title.md.scss b/packages/ionic-angular/src/components/card-title/card-title.md.scss similarity index 100% rename from src/components/card-title/card-title.md.scss rename to packages/ionic-angular/src/components/card-title/card-title.md.scss diff --git a/src/components/card-title/card-title.scss b/packages/ionic-angular/src/components/card-title/card-title.scss similarity index 100% rename from src/components/card-title/card-title.scss rename to packages/ionic-angular/src/components/card-title/card-title.scss diff --git a/src/components/card-title/card-title.tsx b/packages/ionic-angular/src/components/card-title/card-title.tsx similarity index 100% rename from src/components/card-title/card-title.tsx rename to packages/ionic-angular/src/components/card-title/card-title.tsx diff --git a/src/components/card-title/card-title.wp.scss b/packages/ionic-angular/src/components/card-title/card-title.wp.scss similarity index 100% rename from src/components/card-title/card-title.wp.scss rename to packages/ionic-angular/src/components/card-title/card-title.wp.scss diff --git a/src/components/card/card.ios.scss b/packages/ionic-angular/src/components/card/card.ios.scss similarity index 100% rename from src/components/card/card.ios.scss rename to packages/ionic-angular/src/components/card/card.ios.scss diff --git a/src/components/card/card.md.scss b/packages/ionic-angular/src/components/card/card.md.scss similarity index 100% rename from src/components/card/card.md.scss rename to packages/ionic-angular/src/components/card/card.md.scss diff --git a/src/components/card/card.scss b/packages/ionic-angular/src/components/card/card.scss similarity index 100% rename from src/components/card/card.scss rename to packages/ionic-angular/src/components/card/card.scss diff --git a/src/components/card/card.tsx b/packages/ionic-angular/src/components/card/card.tsx similarity index 100% rename from src/components/card/card.tsx rename to packages/ionic-angular/src/components/card/card.tsx diff --git a/src/components/card/card.wp.scss b/packages/ionic-angular/src/components/card/card.wp.scss similarity index 100% rename from src/components/card/card.wp.scss rename to packages/ionic-angular/src/components/card/card.wp.scss diff --git a/src/components/card/test/advanced/app/app.component.ts b/packages/ionic-angular/src/components/card/test/advanced/app/app.component.ts similarity index 100% rename from src/components/card/test/advanced/app/app.component.ts rename to packages/ionic-angular/src/components/card/test/advanced/app/app.component.ts diff --git a/src/components/card/test/advanced/app/app.module.ts b/packages/ionic-angular/src/components/card/test/advanced/app/app.module.ts similarity index 100% rename from src/components/card/test/advanced/app/app.module.ts rename to packages/ionic-angular/src/components/card/test/advanced/app/app.module.ts diff --git a/src/components/card/test/advanced/app/main.ts b/packages/ionic-angular/src/components/card/test/advanced/app/main.ts similarity index 100% rename from src/components/card/test/advanced/app/main.ts rename to packages/ionic-angular/src/components/card/test/advanced/app/main.ts diff --git a/src/components/card/test/advanced/e2e.ts b/packages/ionic-angular/src/components/card/test/advanced/e2e.ts similarity index 100% rename from src/components/card/test/advanced/e2e.ts rename to packages/ionic-angular/src/components/card/test/advanced/e2e.ts diff --git a/src/components/card/test/advanced/pages/root-page/root-page.html b/packages/ionic-angular/src/components/card/test/advanced/pages/root-page/root-page.html similarity index 100% rename from src/components/card/test/advanced/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/card/test/advanced/pages/root-page/root-page.html diff --git a/src/components/card/test/advanced/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/card/test/advanced/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/card/test/advanced/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/card/test/advanced/pages/root-page/root-page.module.ts diff --git a/src/components/card/test/advanced/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/card/test/advanced/pages/root-page/root-page.ts similarity index 100% rename from src/components/card/test/advanced/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/card/test/advanced/pages/root-page/root-page.ts diff --git a/src/components/card/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/card/test/basic/app/app.component.ts similarity index 100% rename from src/components/card/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/card/test/basic/app/app.component.ts diff --git a/src/components/card/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/card/test/basic/app/app.module.ts similarity index 100% rename from src/components/card/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/card/test/basic/app/app.module.ts diff --git a/src/components/card/test/basic/app/main.ts b/packages/ionic-angular/src/components/card/test/basic/app/main.ts similarity index 100% rename from src/components/card/test/basic/app/main.ts rename to packages/ionic-angular/src/components/card/test/basic/app/main.ts diff --git a/src/components/card/test/basic/e2e.ts b/packages/ionic-angular/src/components/card/test/basic/e2e.ts similarity index 100% rename from src/components/card/test/basic/e2e.ts rename to packages/ionic-angular/src/components/card/test/basic/e2e.ts diff --git a/src/components/card/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/card/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/card/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/card/test/basic/pages/root-page/root-page.html diff --git a/src/components/card/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/card/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/card/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/card/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/card/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/card/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/card/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/card/test/basic/pages/root-page/root-page.ts diff --git a/src/components/card/test/colors/app/app.component.ts b/packages/ionic-angular/src/components/card/test/colors/app/app.component.ts similarity index 100% rename from src/components/card/test/colors/app/app.component.ts rename to packages/ionic-angular/src/components/card/test/colors/app/app.component.ts diff --git a/src/components/card/test/colors/app/app.module.ts b/packages/ionic-angular/src/components/card/test/colors/app/app.module.ts similarity index 100% rename from src/components/card/test/colors/app/app.module.ts rename to packages/ionic-angular/src/components/card/test/colors/app/app.module.ts diff --git a/src/components/card/test/colors/app/main.ts b/packages/ionic-angular/src/components/card/test/colors/app/main.ts similarity index 100% rename from src/components/card/test/colors/app/main.ts rename to packages/ionic-angular/src/components/card/test/colors/app/main.ts diff --git a/src/components/card/test/colors/e2e.ts b/packages/ionic-angular/src/components/card/test/colors/e2e.ts similarity index 100% rename from src/components/card/test/colors/e2e.ts rename to packages/ionic-angular/src/components/card/test/colors/e2e.ts diff --git a/src/components/card/test/colors/pages/root-page/root-page.html b/packages/ionic-angular/src/components/card/test/colors/pages/root-page/root-page.html similarity index 100% rename from src/components/card/test/colors/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/card/test/colors/pages/root-page/root-page.html diff --git a/src/components/card/test/colors/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/card/test/colors/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/card/test/colors/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/card/test/colors/pages/root-page/root-page.module.ts diff --git a/src/components/card/test/colors/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/card/test/colors/pages/root-page/root-page.ts similarity index 100% rename from src/components/card/test/colors/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/card/test/colors/pages/root-page/root-page.ts diff --git a/src/components/card/test/images/app/app.component.ts b/packages/ionic-angular/src/components/card/test/images/app/app.component.ts similarity index 100% rename from src/components/card/test/images/app/app.component.ts rename to packages/ionic-angular/src/components/card/test/images/app/app.component.ts diff --git a/src/components/card/test/images/app/app.module.ts b/packages/ionic-angular/src/components/card/test/images/app/app.module.ts similarity index 100% rename from src/components/card/test/images/app/app.module.ts rename to packages/ionic-angular/src/components/card/test/images/app/app.module.ts diff --git a/src/components/card/test/images/app/main.ts b/packages/ionic-angular/src/components/card/test/images/app/main.ts similarity index 100% rename from src/components/card/test/images/app/main.ts rename to packages/ionic-angular/src/components/card/test/images/app/main.ts diff --git a/src/components/card/test/images/e2e.ts b/packages/ionic-angular/src/components/card/test/images/e2e.ts similarity index 100% rename from src/components/card/test/images/e2e.ts rename to packages/ionic-angular/src/components/card/test/images/e2e.ts diff --git a/src/components/card/test/images/pages/root-page/root-page.html b/packages/ionic-angular/src/components/card/test/images/pages/root-page/root-page.html similarity index 100% rename from src/components/card/test/images/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/card/test/images/pages/root-page/root-page.html diff --git a/src/components/card/test/images/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/card/test/images/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/card/test/images/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/card/test/images/pages/root-page/root-page.module.ts diff --git a/src/components/card/test/images/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/card/test/images/pages/root-page/root-page.ts similarity index 100% rename from src/components/card/test/images/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/card/test/images/pages/root-page/root-page.ts diff --git a/src/components/card/test/list/app/app.component.ts b/packages/ionic-angular/src/components/card/test/list/app/app.component.ts similarity index 100% rename from src/components/card/test/list/app/app.component.ts rename to packages/ionic-angular/src/components/card/test/list/app/app.component.ts diff --git a/src/components/card/test/list/app/app.module.ts b/packages/ionic-angular/src/components/card/test/list/app/app.module.ts similarity index 100% rename from src/components/card/test/list/app/app.module.ts rename to packages/ionic-angular/src/components/card/test/list/app/app.module.ts diff --git a/src/components/card/test/list/app/main.ts b/packages/ionic-angular/src/components/card/test/list/app/main.ts similarity index 100% rename from src/components/card/test/list/app/main.ts rename to packages/ionic-angular/src/components/card/test/list/app/main.ts diff --git a/src/components/card/test/list/e2e.ts b/packages/ionic-angular/src/components/card/test/list/e2e.ts similarity index 100% rename from src/components/card/test/list/e2e.ts rename to packages/ionic-angular/src/components/card/test/list/e2e.ts diff --git a/src/components/card/test/list/pages/root-page/root-page.html b/packages/ionic-angular/src/components/card/test/list/pages/root-page/root-page.html similarity index 100% rename from src/components/card/test/list/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/card/test/list/pages/root-page/root-page.html diff --git a/src/components/card/test/list/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/card/test/list/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/card/test/list/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/card/test/list/pages/root-page/root-page.module.ts diff --git a/src/components/card/test/list/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/card/test/list/pages/root-page/root-page.ts similarity index 100% rename from src/components/card/test/list/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/card/test/list/pages/root-page/root-page.ts diff --git a/src/components/card/test/map/app.module.ts b/packages/ionic-angular/src/components/card/test/map/app.module.ts similarity index 100% rename from src/components/card/test/map/app.module.ts rename to packages/ionic-angular/src/components/card/test/map/app.module.ts diff --git a/src/components/card/test/map/main.html b/packages/ionic-angular/src/components/card/test/map/main.html similarity index 100% rename from src/components/card/test/map/main.html rename to packages/ionic-angular/src/components/card/test/map/main.html diff --git a/src/components/card/test/map/main.ts b/packages/ionic-angular/src/components/card/test/map/main.ts similarity index 100% rename from src/components/card/test/map/main.ts rename to packages/ionic-angular/src/components/card/test/map/main.ts diff --git a/src/components/card/test/social/app.module.ts b/packages/ionic-angular/src/components/card/test/social/app.module.ts similarity index 100% rename from src/components/card/test/social/app.module.ts rename to packages/ionic-angular/src/components/card/test/social/app.module.ts diff --git a/src/components/card/test/social/main.html b/packages/ionic-angular/src/components/card/test/social/main.html similarity index 100% rename from src/components/card/test/social/main.html rename to packages/ionic-angular/src/components/card/test/social/main.html diff --git a/src/components/card/test/social/main.ts b/packages/ionic-angular/src/components/card/test/social/main.ts similarity index 100% rename from src/components/card/test/social/main.ts rename to packages/ionic-angular/src/components/card/test/social/main.ts diff --git a/src/components/checkbox/checkbox.ios.scss b/packages/ionic-angular/src/components/checkbox/checkbox.ios.scss similarity index 100% rename from src/components/checkbox/checkbox.ios.scss rename to packages/ionic-angular/src/components/checkbox/checkbox.ios.scss diff --git a/src/components/checkbox/checkbox.md.scss b/packages/ionic-angular/src/components/checkbox/checkbox.md.scss similarity index 100% rename from src/components/checkbox/checkbox.md.scss rename to packages/ionic-angular/src/components/checkbox/checkbox.md.scss diff --git a/src/components/checkbox/checkbox.ts b/packages/ionic-angular/src/components/checkbox/checkbox.ts similarity index 100% rename from src/components/checkbox/checkbox.ts rename to packages/ionic-angular/src/components/checkbox/checkbox.ts diff --git a/src/components/checkbox/checkbox.wp.scss b/packages/ionic-angular/src/components/checkbox/checkbox.wp.scss similarity index 100% rename from src/components/checkbox/checkbox.wp.scss rename to packages/ionic-angular/src/components/checkbox/checkbox.wp.scss diff --git a/src/components/checkbox/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/checkbox/test/basic/app/app.component.ts similarity index 100% rename from src/components/checkbox/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/checkbox/test/basic/app/app.component.ts diff --git a/src/components/checkbox/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/checkbox/test/basic/app/app.module.ts similarity index 100% rename from src/components/checkbox/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/checkbox/test/basic/app/app.module.ts diff --git a/src/components/checkbox/test/basic/app/main.ts b/packages/ionic-angular/src/components/checkbox/test/basic/app/main.ts similarity index 100% rename from src/components/checkbox/test/basic/app/main.ts rename to packages/ionic-angular/src/components/checkbox/test/basic/app/main.ts diff --git a/src/components/checkbox/test/basic/e2e.ts b/packages/ionic-angular/src/components/checkbox/test/basic/e2e.ts similarity index 100% rename from src/components/checkbox/test/basic/e2e.ts rename to packages/ionic-angular/src/components/checkbox/test/basic/e2e.ts diff --git a/src/components/checkbox/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/checkbox/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/checkbox/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/checkbox/test/basic/pages/root-page/root-page.html diff --git a/src/components/checkbox/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/checkbox/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/checkbox/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/checkbox/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/checkbox/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/checkbox/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/checkbox/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/checkbox/test/basic/pages/root-page/root-page.ts diff --git a/src/components/checkbox/test/checkbox.spec.ts b/packages/ionic-angular/src/components/checkbox/test/checkbox.spec.ts similarity index 100% rename from src/components/checkbox/test/checkbox.spec.ts rename to packages/ionic-angular/src/components/checkbox/test/checkbox.spec.ts diff --git a/src/components/chip/chip.ios.scss b/packages/ionic-angular/src/components/chip/chip.ios.scss similarity index 100% rename from src/components/chip/chip.ios.scss rename to packages/ionic-angular/src/components/chip/chip.ios.scss diff --git a/src/components/chip/chip.md.scss b/packages/ionic-angular/src/components/chip/chip.md.scss similarity index 100% rename from src/components/chip/chip.md.scss rename to packages/ionic-angular/src/components/chip/chip.md.scss diff --git a/src/components/chip/chip.scss b/packages/ionic-angular/src/components/chip/chip.scss similarity index 100% rename from src/components/chip/chip.scss rename to packages/ionic-angular/src/components/chip/chip.scss diff --git a/src/components/chip/chip.ts b/packages/ionic-angular/src/components/chip/chip.ts similarity index 100% rename from src/components/chip/chip.ts rename to packages/ionic-angular/src/components/chip/chip.ts diff --git a/src/components/chip/chip.wp.scss b/packages/ionic-angular/src/components/chip/chip.wp.scss similarity index 100% rename from src/components/chip/chip.wp.scss rename to packages/ionic-angular/src/components/chip/chip.wp.scss diff --git a/src/components/chip/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/chip/test/basic/app/app.component.ts similarity index 100% rename from src/components/chip/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/chip/test/basic/app/app.component.ts diff --git a/src/components/chip/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/chip/test/basic/app/app.module.ts similarity index 100% rename from src/components/chip/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/chip/test/basic/app/app.module.ts diff --git a/src/components/chip/test/basic/app/main.ts b/packages/ionic-angular/src/components/chip/test/basic/app/main.ts similarity index 100% rename from src/components/chip/test/basic/app/main.ts rename to packages/ionic-angular/src/components/chip/test/basic/app/main.ts diff --git a/src/components/chip/test/basic/e2e.ts b/packages/ionic-angular/src/components/chip/test/basic/e2e.ts similarity index 100% rename from src/components/chip/test/basic/e2e.ts rename to packages/ionic-angular/src/components/chip/test/basic/e2e.ts diff --git a/src/components/chip/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/chip/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/chip/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/chip/test/basic/pages/root-page/root-page.html diff --git a/src/components/chip/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/chip/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/chip/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/chip/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/chip/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/chip/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/chip/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/chip/test/basic/pages/root-page/root-page.ts diff --git a/src/components/content/content.ios.scss b/packages/ionic-angular/src/components/content/content.ios.scss similarity index 100% rename from src/components/content/content.ios.scss rename to packages/ionic-angular/src/components/content/content.ios.scss diff --git a/src/components/content/content.md.scss b/packages/ionic-angular/src/components/content/content.md.scss similarity index 100% rename from src/components/content/content.md.scss rename to packages/ionic-angular/src/components/content/content.md.scss diff --git a/src/components/content/content.scss b/packages/ionic-angular/src/components/content/content.scss similarity index 100% rename from src/components/content/content.scss rename to packages/ionic-angular/src/components/content/content.scss diff --git a/src/components/content/content.ts b/packages/ionic-angular/src/components/content/content.ts similarity index 100% rename from src/components/content/content.ts rename to packages/ionic-angular/src/components/content/content.ts diff --git a/src/components/content/content.wp.scss b/packages/ionic-angular/src/components/content/content.wp.scss similarity index 100% rename from src/components/content/content.wp.scss rename to packages/ionic-angular/src/components/content/content.wp.scss diff --git a/src/components/content/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/content/test/basic/app/app.component.ts similarity index 100% rename from src/components/content/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/content/test/basic/app/app.component.ts diff --git a/src/components/content/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/content/test/basic/app/app.module.ts similarity index 100% rename from src/components/content/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/content/test/basic/app/app.module.ts diff --git a/src/components/content/test/basic/app/main.ts b/packages/ionic-angular/src/components/content/test/basic/app/main.ts similarity index 100% rename from src/components/content/test/basic/app/main.ts rename to packages/ionic-angular/src/components/content/test/basic/app/main.ts diff --git a/src/components/content/test/basic/e2e.ts b/packages/ionic-angular/src/components/content/test/basic/e2e.ts similarity index 100% rename from src/components/content/test/basic/e2e.ts rename to packages/ionic-angular/src/components/content/test/basic/e2e.ts diff --git a/src/components/content/test/basic/pages/page-five/page-five.html b/packages/ionic-angular/src/components/content/test/basic/pages/page-five/page-five.html similarity index 100% rename from src/components/content/test/basic/pages/page-five/page-five.html rename to packages/ionic-angular/src/components/content/test/basic/pages/page-five/page-five.html diff --git a/src/components/content/test/basic/pages/page-five/page-five.module.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-five/page-five.module.ts similarity index 100% rename from src/components/content/test/basic/pages/page-five/page-five.module.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-five/page-five.module.ts diff --git a/src/components/content/test/basic/pages/page-five/page-five.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-five/page-five.ts similarity index 100% rename from src/components/content/test/basic/pages/page-five/page-five.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-five/page-five.ts diff --git a/src/components/content/test/basic/pages/page-four/page-four.html b/packages/ionic-angular/src/components/content/test/basic/pages/page-four/page-four.html similarity index 100% rename from src/components/content/test/basic/pages/page-four/page-four.html rename to packages/ionic-angular/src/components/content/test/basic/pages/page-four/page-four.html diff --git a/src/components/content/test/basic/pages/page-four/page-four.module.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-four/page-four.module.ts similarity index 100% rename from src/components/content/test/basic/pages/page-four/page-four.module.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-four/page-four.module.ts diff --git a/src/components/content/test/basic/pages/page-four/page-four.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-four/page-four.ts similarity index 100% rename from src/components/content/test/basic/pages/page-four/page-four.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-four/page-four.ts diff --git a/src/components/content/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/content/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/content/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/content/test/basic/pages/page-one/page-one.html diff --git a/src/components/content/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/content/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/content/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/content/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-one/page-one.ts diff --git a/src/components/content/test/basic/pages/page-three/page-three.html b/packages/ionic-angular/src/components/content/test/basic/pages/page-three/page-three.html similarity index 100% rename from src/components/content/test/basic/pages/page-three/page-three.html rename to packages/ionic-angular/src/components/content/test/basic/pages/page-three/page-three.html diff --git a/src/components/content/test/basic/pages/page-three/page-three.module.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-three/page-three.module.ts similarity index 100% rename from src/components/content/test/basic/pages/page-three/page-three.module.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-three/page-three.module.ts diff --git a/src/components/content/test/basic/pages/page-three/page-three.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-three/page-three.ts similarity index 100% rename from src/components/content/test/basic/pages/page-three/page-three.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-three/page-three.ts diff --git a/src/components/content/test/basic/pages/page-two/page-two.html b/packages/ionic-angular/src/components/content/test/basic/pages/page-two/page-two.html similarity index 100% rename from src/components/content/test/basic/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/content/test/basic/pages/page-two/page-two.html diff --git a/src/components/content/test/basic/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/content/test/basic/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-two/page-two.module.ts diff --git a/src/components/content/test/basic/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/content/test/basic/pages/page-two/page-two.ts similarity index 100% rename from src/components/content/test/basic/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/page-two/page-two.ts diff --git a/src/components/content/test/basic/pages/tabs-page/tabs-page.html b/packages/ionic-angular/src/components/content/test/basic/pages/tabs-page/tabs-page.html similarity index 100% rename from src/components/content/test/basic/pages/tabs-page/tabs-page.html rename to packages/ionic-angular/src/components/content/test/basic/pages/tabs-page/tabs-page.html diff --git a/src/components/content/test/basic/pages/tabs-page/tabs-page.module.ts b/packages/ionic-angular/src/components/content/test/basic/pages/tabs-page/tabs-page.module.ts similarity index 100% rename from src/components/content/test/basic/pages/tabs-page/tabs-page.module.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/tabs-page/tabs-page.module.ts diff --git a/src/components/content/test/basic/pages/tabs-page/tabs-page.ts b/packages/ionic-angular/src/components/content/test/basic/pages/tabs-page/tabs-page.ts similarity index 100% rename from src/components/content/test/basic/pages/tabs-page/tabs-page.ts rename to packages/ionic-angular/src/components/content/test/basic/pages/tabs-page/tabs-page.ts diff --git a/src/components/content/test/fullscreen/app/app.component.ts b/packages/ionic-angular/src/components/content/test/fullscreen/app/app.component.ts similarity index 100% rename from src/components/content/test/fullscreen/app/app.component.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/app/app.component.ts diff --git a/src/components/content/test/fullscreen/app/app.module.ts b/packages/ionic-angular/src/components/content/test/fullscreen/app/app.module.ts similarity index 100% rename from src/components/content/test/fullscreen/app/app.module.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/app/app.module.ts diff --git a/src/components/content/test/fullscreen/app/main.ts b/packages/ionic-angular/src/components/content/test/fullscreen/app/main.ts similarity index 100% rename from src/components/content/test/fullscreen/app/main.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/app/main.ts diff --git a/src/components/content/test/fullscreen/e2e.ts b/packages/ionic-angular/src/components/content/test/fullscreen/e2e.ts similarity index 100% rename from src/components/content/test/fullscreen/e2e.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/e2e.ts diff --git a/src/components/content/test/fullscreen/pages/page-five/page-five.html b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-five/page-five.html similarity index 100% rename from src/components/content/test/fullscreen/pages/page-five/page-five.html rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-five/page-five.html diff --git a/src/components/content/test/fullscreen/pages/page-five/page-five.module.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-five/page-five.module.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-five/page-five.module.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-five/page-five.module.ts diff --git a/src/components/content/test/fullscreen/pages/page-five/page-five.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-five/page-five.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-five/page-five.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-five/page-five.ts diff --git a/src/components/content/test/fullscreen/pages/page-four/page-four.html b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-four/page-four.html similarity index 100% rename from src/components/content/test/fullscreen/pages/page-four/page-four.html rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-four/page-four.html diff --git a/src/components/content/test/fullscreen/pages/page-four/page-four.module.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-four/page-four.module.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-four/page-four.module.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-four/page-four.module.ts diff --git a/src/components/content/test/fullscreen/pages/page-four/page-four.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-four/page-four.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-four/page-four.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-four/page-four.ts diff --git a/src/components/content/test/fullscreen/pages/page-one/page-one.html b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-one/page-one.html similarity index 100% rename from src/components/content/test/fullscreen/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-one/page-one.html diff --git a/src/components/content/test/fullscreen/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-one/page-one.module.ts diff --git a/src/components/content/test/fullscreen/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-one/page-one.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-one/page-one.ts diff --git a/src/components/content/test/fullscreen/pages/page-three/page-three.html b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-three/page-three.html similarity index 100% rename from src/components/content/test/fullscreen/pages/page-three/page-three.html rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-three/page-three.html diff --git a/src/components/content/test/fullscreen/pages/page-three/page-three.module.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-three/page-three.module.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-three/page-three.module.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-three/page-three.module.ts diff --git a/src/components/content/test/fullscreen/pages/page-three/page-three.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-three/page-three.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-three/page-three.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-three/page-three.ts diff --git a/src/components/content/test/fullscreen/pages/page-two/page-two.html b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-two/page-two.html similarity index 100% rename from src/components/content/test/fullscreen/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-two/page-two.html diff --git a/src/components/content/test/fullscreen/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-two/page-two.module.ts diff --git a/src/components/content/test/fullscreen/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/page-two/page-two.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/page-two/page-two.ts diff --git a/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.html b/packages/ionic-angular/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.html similarity index 100% rename from src/components/content/test/fullscreen/pages/tabs-page/tabs-page.html rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.html diff --git a/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.module.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.module.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/tabs-page/tabs-page.module.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.module.ts diff --git a/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.ts b/packages/ionic-angular/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.ts similarity index 100% rename from src/components/content/test/fullscreen/pages/tabs-page/tabs-page.ts rename to packages/ionic-angular/src/components/content/test/fullscreen/pages/tabs-page/tabs-page.ts diff --git a/src/components/content/test/header-scroll/app.module.ts b/packages/ionic-angular/src/components/content/test/header-scroll/app.module.ts similarity index 100% rename from src/components/content/test/header-scroll/app.module.ts rename to packages/ionic-angular/src/components/content/test/header-scroll/app.module.ts diff --git a/src/components/content/test/header-scroll/main.html b/packages/ionic-angular/src/components/content/test/header-scroll/main.html similarity index 100% rename from src/components/content/test/header-scroll/main.html rename to packages/ionic-angular/src/components/content/test/header-scroll/main.html diff --git a/src/components/content/test/header-scroll/main.ts b/packages/ionic-angular/src/components/content/test/header-scroll/main.ts similarity index 100% rename from src/components/content/test/header-scroll/main.ts rename to packages/ionic-angular/src/components/content/test/header-scroll/main.ts diff --git a/src/components/content/test/no-bounce/app/app.component.ts b/packages/ionic-angular/src/components/content/test/no-bounce/app/app.component.ts similarity index 100% rename from src/components/content/test/no-bounce/app/app.component.ts rename to packages/ionic-angular/src/components/content/test/no-bounce/app/app.component.ts diff --git a/src/components/content/test/no-bounce/app/app.module.ts b/packages/ionic-angular/src/components/content/test/no-bounce/app/app.module.ts similarity index 100% rename from src/components/content/test/no-bounce/app/app.module.ts rename to packages/ionic-angular/src/components/content/test/no-bounce/app/app.module.ts diff --git a/src/components/content/test/no-bounce/app/main.ts b/packages/ionic-angular/src/components/content/test/no-bounce/app/main.ts similarity index 100% rename from src/components/content/test/no-bounce/app/main.ts rename to packages/ionic-angular/src/components/content/test/no-bounce/app/main.ts diff --git a/src/components/content/test/no-bounce/pages/root-page/root-page.html b/packages/ionic-angular/src/components/content/test/no-bounce/pages/root-page/root-page.html similarity index 100% rename from src/components/content/test/no-bounce/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/content/test/no-bounce/pages/root-page/root-page.html diff --git a/src/components/content/test/no-bounce/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/content/test/no-bounce/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/content/test/no-bounce/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/content/test/no-bounce/pages/root-page/root-page.module.ts diff --git a/src/components/content/test/no-bounce/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/content/test/no-bounce/pages/root-page/root-page.ts similarity index 100% rename from src/components/content/test/no-bounce/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/content/test/no-bounce/pages/root-page/root-page.ts diff --git a/src/components/content/test/scroll-down-on-load/app/app.component.ts b/packages/ionic-angular/src/components/content/test/scroll-down-on-load/app/app.component.ts similarity index 100% rename from src/components/content/test/scroll-down-on-load/app/app.component.ts rename to packages/ionic-angular/src/components/content/test/scroll-down-on-load/app/app.component.ts diff --git a/src/components/content/test/scroll-down-on-load/app/app.module.ts b/packages/ionic-angular/src/components/content/test/scroll-down-on-load/app/app.module.ts similarity index 100% rename from src/components/content/test/scroll-down-on-load/app/app.module.ts rename to packages/ionic-angular/src/components/content/test/scroll-down-on-load/app/app.module.ts diff --git a/src/components/content/test/scroll-down-on-load/app/main.ts b/packages/ionic-angular/src/components/content/test/scroll-down-on-load/app/main.ts similarity index 100% rename from src/components/content/test/scroll-down-on-load/app/main.ts rename to packages/ionic-angular/src/components/content/test/scroll-down-on-load/app/main.ts diff --git a/src/components/content/test/scroll-down-on-load/pages/root-page/root-page.html b/packages/ionic-angular/src/components/content/test/scroll-down-on-load/pages/root-page/root-page.html similarity index 100% rename from src/components/content/test/scroll-down-on-load/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/content/test/scroll-down-on-load/pages/root-page/root-page.html diff --git a/src/components/content/test/scroll-down-on-load/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/content/test/scroll-down-on-load/pages/root-page/root-page.ts similarity index 100% rename from src/components/content/test/scroll-down-on-load/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/content/test/scroll-down-on-load/pages/root-page/root-page.ts diff --git a/src/components/datetime/datetime.ios.scss b/packages/ionic-angular/src/components/datetime/datetime.ios.scss similarity index 100% rename from src/components/datetime/datetime.ios.scss rename to packages/ionic-angular/src/components/datetime/datetime.ios.scss diff --git a/src/components/datetime/datetime.md.scss b/packages/ionic-angular/src/components/datetime/datetime.md.scss similarity index 100% rename from src/components/datetime/datetime.md.scss rename to packages/ionic-angular/src/components/datetime/datetime.md.scss diff --git a/src/components/datetime/datetime.scss b/packages/ionic-angular/src/components/datetime/datetime.scss similarity index 100% rename from src/components/datetime/datetime.scss rename to packages/ionic-angular/src/components/datetime/datetime.scss diff --git a/src/components/datetime/datetime.ts b/packages/ionic-angular/src/components/datetime/datetime.ts similarity index 100% rename from src/components/datetime/datetime.ts rename to packages/ionic-angular/src/components/datetime/datetime.ts diff --git a/src/components/datetime/datetime.wp.scss b/packages/ionic-angular/src/components/datetime/datetime.wp.scss similarity index 100% rename from src/components/datetime/datetime.wp.scss rename to packages/ionic-angular/src/components/datetime/datetime.wp.scss diff --git a/src/components/datetime/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/datetime/test/basic/app/app.component.ts similarity index 100% rename from src/components/datetime/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/datetime/test/basic/app/app.component.ts diff --git a/src/components/datetime/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/datetime/test/basic/app/app.module.ts similarity index 100% rename from src/components/datetime/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/datetime/test/basic/app/app.module.ts diff --git a/src/components/datetime/test/basic/app/main.ts b/packages/ionic-angular/src/components/datetime/test/basic/app/main.ts similarity index 100% rename from src/components/datetime/test/basic/app/main.ts rename to packages/ionic-angular/src/components/datetime/test/basic/app/main.ts diff --git a/src/components/datetime/test/basic/e2e.ts b/packages/ionic-angular/src/components/datetime/test/basic/e2e.ts similarity index 100% rename from src/components/datetime/test/basic/e2e.ts rename to packages/ionic-angular/src/components/datetime/test/basic/e2e.ts diff --git a/src/components/datetime/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/datetime/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/datetime/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/datetime/test/basic/pages/root-page/root-page.html diff --git a/src/components/datetime/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/datetime/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/datetime/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/datetime/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/datetime/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/datetime/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/datetime/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/datetime/test/basic/pages/root-page/root-page.ts diff --git a/src/components/datetime/test/datetime.spec.ts b/packages/ionic-angular/src/components/datetime/test/datetime.spec.ts similarity index 100% rename from src/components/datetime/test/datetime.spec.ts rename to packages/ionic-angular/src/components/datetime/test/datetime.spec.ts diff --git a/src/components/datetime/test/form/app.module.ts b/packages/ionic-angular/src/components/datetime/test/form/app.module.ts similarity index 100% rename from src/components/datetime/test/form/app.module.ts rename to packages/ionic-angular/src/components/datetime/test/form/app.module.ts diff --git a/src/components/datetime/test/form/main.html b/packages/ionic-angular/src/components/datetime/test/form/main.html similarity index 100% rename from src/components/datetime/test/form/main.html rename to packages/ionic-angular/src/components/datetime/test/form/main.html diff --git a/src/components/datetime/test/form/main.ts b/packages/ionic-angular/src/components/datetime/test/form/main.ts similarity index 100% rename from src/components/datetime/test/form/main.ts rename to packages/ionic-angular/src/components/datetime/test/form/main.ts diff --git a/src/components/datetime/test/issues/app/app.component.ts b/packages/ionic-angular/src/components/datetime/test/issues/app/app.component.ts similarity index 100% rename from src/components/datetime/test/issues/app/app.component.ts rename to packages/ionic-angular/src/components/datetime/test/issues/app/app.component.ts diff --git a/src/components/datetime/test/issues/app/app.module.ts b/packages/ionic-angular/src/components/datetime/test/issues/app/app.module.ts similarity index 100% rename from src/components/datetime/test/issues/app/app.module.ts rename to packages/ionic-angular/src/components/datetime/test/issues/app/app.module.ts diff --git a/src/components/datetime/test/issues/app/main.ts b/packages/ionic-angular/src/components/datetime/test/issues/app/main.ts similarity index 100% rename from src/components/datetime/test/issues/app/main.ts rename to packages/ionic-angular/src/components/datetime/test/issues/app/main.ts diff --git a/src/components/datetime/test/issues/pages/root-page/root-page.html b/packages/ionic-angular/src/components/datetime/test/issues/pages/root-page/root-page.html similarity index 100% rename from src/components/datetime/test/issues/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/datetime/test/issues/pages/root-page/root-page.html diff --git a/src/components/datetime/test/issues/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/datetime/test/issues/pages/root-page/root-page.ts similarity index 100% rename from src/components/datetime/test/issues/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/datetime/test/issues/pages/root-page/root-page.ts diff --git a/src/components/datetime/test/labels/app/app.component.ts b/packages/ionic-angular/src/components/datetime/test/labels/app/app.component.ts similarity index 100% rename from src/components/datetime/test/labels/app/app.component.ts rename to packages/ionic-angular/src/components/datetime/test/labels/app/app.component.ts diff --git a/src/components/datetime/test/labels/app/app.module.ts b/packages/ionic-angular/src/components/datetime/test/labels/app/app.module.ts similarity index 100% rename from src/components/datetime/test/labels/app/app.module.ts rename to packages/ionic-angular/src/components/datetime/test/labels/app/app.module.ts diff --git a/src/components/datetime/test/labels/app/main.ts b/packages/ionic-angular/src/components/datetime/test/labels/app/main.ts similarity index 100% rename from src/components/datetime/test/labels/app/main.ts rename to packages/ionic-angular/src/components/datetime/test/labels/app/main.ts diff --git a/src/components/datetime/test/labels/e2e.ts b/packages/ionic-angular/src/components/datetime/test/labels/e2e.ts similarity index 100% rename from src/components/datetime/test/labels/e2e.ts rename to packages/ionic-angular/src/components/datetime/test/labels/e2e.ts diff --git a/src/components/datetime/test/labels/pages/root-page/root-page.html b/packages/ionic-angular/src/components/datetime/test/labels/pages/root-page/root-page.html similarity index 100% rename from src/components/datetime/test/labels/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/datetime/test/labels/pages/root-page/root-page.html diff --git a/src/components/datetime/test/labels/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/datetime/test/labels/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/datetime/test/labels/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/datetime/test/labels/pages/root-page/root-page.module.ts diff --git a/src/components/datetime/test/labels/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/datetime/test/labels/pages/root-page/root-page.ts similarity index 100% rename from src/components/datetime/test/labels/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/datetime/test/labels/pages/root-page/root-page.ts diff --git a/src/components/fab/fab-container.ts b/packages/ionic-angular/src/components/fab/fab-container.ts similarity index 100% rename from src/components/fab/fab-container.ts rename to packages/ionic-angular/src/components/fab/fab-container.ts diff --git a/src/components/fab/fab-list.ts b/packages/ionic-angular/src/components/fab/fab-list.ts similarity index 100% rename from src/components/fab/fab-list.ts rename to packages/ionic-angular/src/components/fab/fab-list.ts diff --git a/src/components/fab/fab.ios.scss b/packages/ionic-angular/src/components/fab/fab.ios.scss similarity index 100% rename from src/components/fab/fab.ios.scss rename to packages/ionic-angular/src/components/fab/fab.ios.scss diff --git a/src/components/fab/fab.md.scss b/packages/ionic-angular/src/components/fab/fab.md.scss similarity index 100% rename from src/components/fab/fab.md.scss rename to packages/ionic-angular/src/components/fab/fab.md.scss diff --git a/src/components/fab/fab.scss b/packages/ionic-angular/src/components/fab/fab.scss similarity index 100% rename from src/components/fab/fab.scss rename to packages/ionic-angular/src/components/fab/fab.scss diff --git a/src/components/fab/fab.ts b/packages/ionic-angular/src/components/fab/fab.ts similarity index 100% rename from src/components/fab/fab.ts rename to packages/ionic-angular/src/components/fab/fab.ts diff --git a/src/components/fab/fab.wp.scss b/packages/ionic-angular/src/components/fab/fab.wp.scss similarity index 100% rename from src/components/fab/fab.wp.scss rename to packages/ionic-angular/src/components/fab/fab.wp.scss diff --git a/src/components/fab/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/fab/test/basic/app/app.component.ts similarity index 100% rename from src/components/fab/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/fab/test/basic/app/app.component.ts diff --git a/src/components/fab/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/fab/test/basic/app/app.module.ts similarity index 100% rename from src/components/fab/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/fab/test/basic/app/app.module.ts diff --git a/src/components/fab/test/basic/app/main.ts b/packages/ionic-angular/src/components/fab/test/basic/app/main.ts similarity index 100% rename from src/components/fab/test/basic/app/main.ts rename to packages/ionic-angular/src/components/fab/test/basic/app/main.ts diff --git a/src/components/fab/test/basic/e2e.ts b/packages/ionic-angular/src/components/fab/test/basic/e2e.ts similarity index 100% rename from src/components/fab/test/basic/e2e.ts rename to packages/ionic-angular/src/components/fab/test/basic/e2e.ts diff --git a/src/components/fab/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/fab/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/fab/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/fab/test/basic/pages/root-page/root-page.html diff --git a/src/components/fab/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/fab/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/fab/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/fab/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/fab/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/fab/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/fab/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/fab/test/basic/pages/root-page/root-page.ts diff --git a/src/components/fab/test/fab.spec.ts b/packages/ionic-angular/src/components/fab/test/fab.spec.ts similarity index 100% rename from src/components/fab/test/fab.spec.ts rename to packages/ionic-angular/src/components/fab/test/fab.spec.ts diff --git a/src/components/gesture/gesture-controller.ts b/packages/ionic-angular/src/components/gesture/gesture-controller.ts similarity index 100% rename from src/components/gesture/gesture-controller.ts rename to packages/ionic-angular/src/components/gesture/gesture-controller.ts diff --git a/src/components/gesture/gesture.ts b/packages/ionic-angular/src/components/gesture/gesture.ts similarity index 100% rename from src/components/gesture/gesture.ts rename to packages/ionic-angular/src/components/gesture/gesture.ts diff --git a/src/components/gesture/recognizers.ts b/packages/ionic-angular/src/components/gesture/recognizers.ts similarity index 100% rename from src/components/gesture/recognizers.ts rename to packages/ionic-angular/src/components/gesture/recognizers.ts diff --git a/src/components/grid/col.ts b/packages/ionic-angular/src/components/grid/col.ts similarity index 100% rename from src/components/grid/col.ts rename to packages/ionic-angular/src/components/grid/col.ts diff --git a/src/components/grid/grid.mixins.scss b/packages/ionic-angular/src/components/grid/grid.mixins.scss similarity index 100% rename from src/components/grid/grid.mixins.scss rename to packages/ionic-angular/src/components/grid/grid.mixins.scss diff --git a/src/components/grid/grid.scss b/packages/ionic-angular/src/components/grid/grid.scss similarity index 100% rename from src/components/grid/grid.scss rename to packages/ionic-angular/src/components/grid/grid.scss diff --git a/src/components/grid/grid.ts b/packages/ionic-angular/src/components/grid/grid.ts similarity index 100% rename from src/components/grid/grid.ts rename to packages/ionic-angular/src/components/grid/grid.ts diff --git a/src/components/grid/row.ts b/packages/ionic-angular/src/components/grid/row.ts similarity index 100% rename from src/components/grid/row.ts rename to packages/ionic-angular/src/components/grid/row.ts diff --git a/src/components/grid/test/alignment/app.module.ts b/packages/ionic-angular/src/components/grid/test/alignment/app.module.ts similarity index 100% rename from src/components/grid/test/alignment/app.module.ts rename to packages/ionic-angular/src/components/grid/test/alignment/app.module.ts diff --git a/src/components/grid/test/alignment/main.html b/packages/ionic-angular/src/components/grid/test/alignment/main.html similarity index 100% rename from src/components/grid/test/alignment/main.html rename to packages/ionic-angular/src/components/grid/test/alignment/main.html diff --git a/src/components/grid/test/alignment/main.ts b/packages/ionic-angular/src/components/grid/test/alignment/main.ts similarity index 100% rename from src/components/grid/test/alignment/main.ts rename to packages/ionic-angular/src/components/grid/test/alignment/main.ts diff --git a/src/components/grid/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/grid/test/basic/app/app.component.ts similarity index 100% rename from src/components/grid/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/grid/test/basic/app/app.component.ts diff --git a/src/components/grid/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/grid/test/basic/app/app.module.ts similarity index 100% rename from src/components/grid/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/grid/test/basic/app/app.module.ts diff --git a/src/components/grid/test/basic/app/main.ts b/packages/ionic-angular/src/components/grid/test/basic/app/main.ts similarity index 100% rename from src/components/grid/test/basic/app/main.ts rename to packages/ionic-angular/src/components/grid/test/basic/app/main.ts diff --git a/src/components/grid/test/basic/e2e.ts b/packages/ionic-angular/src/components/grid/test/basic/e2e.ts similarity index 100% rename from src/components/grid/test/basic/e2e.ts rename to packages/ionic-angular/src/components/grid/test/basic/e2e.ts diff --git a/src/components/grid/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/grid/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/grid/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/grid/test/basic/pages/root-page/root-page.html diff --git a/src/components/grid/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/grid/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/grid/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/grid/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/grid/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/grid/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/grid/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/grid/test/basic/pages/root-page/root-page.ts diff --git a/src/components/grid/test/card/app.module.ts b/packages/ionic-angular/src/components/grid/test/card/app.module.ts similarity index 100% rename from src/components/grid/test/card/app.module.ts rename to packages/ionic-angular/src/components/grid/test/card/app.module.ts diff --git a/src/components/grid/test/card/main.html b/packages/ionic-angular/src/components/grid/test/card/main.html similarity index 100% rename from src/components/grid/test/card/main.html rename to packages/ionic-angular/src/components/grid/test/card/main.html diff --git a/src/components/grid/test/full/app.module.ts b/packages/ionic-angular/src/components/grid/test/full/app.module.ts similarity index 100% rename from src/components/grid/test/full/app.module.ts rename to packages/ionic-angular/src/components/grid/test/full/app.module.ts diff --git a/src/components/grid/test/full/main.html b/packages/ionic-angular/src/components/grid/test/full/main.html similarity index 100% rename from src/components/grid/test/full/main.html rename to packages/ionic-angular/src/components/grid/test/full/main.html diff --git a/src/components/grid/test/full/main.ts b/packages/ionic-angular/src/components/grid/test/full/main.ts similarity index 100% rename from src/components/grid/test/full/main.ts rename to packages/ionic-angular/src/components/grid/test/full/main.ts diff --git a/src/components/grid/test/responsive/app.module.ts b/packages/ionic-angular/src/components/grid/test/responsive/app.module.ts similarity index 100% rename from src/components/grid/test/responsive/app.module.ts rename to packages/ionic-angular/src/components/grid/test/responsive/app.module.ts diff --git a/src/components/grid/test/responsive/main.html b/packages/ionic-angular/src/components/grid/test/responsive/main.html similarity index 100% rename from src/components/grid/test/responsive/main.html rename to packages/ionic-angular/src/components/grid/test/responsive/main.html diff --git a/src/components/icon/icon.ios.scss b/packages/ionic-angular/src/components/icon/icon.ios.scss similarity index 100% rename from src/components/icon/icon.ios.scss rename to packages/ionic-angular/src/components/icon/icon.ios.scss diff --git a/src/components/icon/icon.md.scss b/packages/ionic-angular/src/components/icon/icon.md.scss similarity index 100% rename from src/components/icon/icon.md.scss rename to packages/ionic-angular/src/components/icon/icon.md.scss diff --git a/src/components/icon/icon.scss b/packages/ionic-angular/src/components/icon/icon.scss similarity index 100% rename from src/components/icon/icon.scss rename to packages/ionic-angular/src/components/icon/icon.scss diff --git a/src/components/icon/icon.tsx b/packages/ionic-angular/src/components/icon/icon.tsx similarity index 100% rename from src/components/icon/icon.tsx rename to packages/ionic-angular/src/components/icon/icon.tsx diff --git a/src/components/icon/icon.wp.scss b/packages/ionic-angular/src/components/icon/icon.wp.scss similarity index 100% rename from src/components/icon/icon.wp.scss rename to packages/ionic-angular/src/components/icon/icon.wp.scss diff --git a/src/components/icon/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/icon/test/basic/app/app.component.ts similarity index 100% rename from src/components/icon/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/icon/test/basic/app/app.component.ts diff --git a/src/components/icon/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/icon/test/basic/app/app.module.ts similarity index 100% rename from src/components/icon/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/icon/test/basic/app/app.module.ts diff --git a/src/components/icon/test/basic/app/main.ts b/packages/ionic-angular/src/components/icon/test/basic/app/main.ts similarity index 100% rename from src/components/icon/test/basic/app/main.ts rename to packages/ionic-angular/src/components/icon/test/basic/app/main.ts diff --git a/src/components/icon/test/basic/main.html b/packages/ionic-angular/src/components/icon/test/basic/main.html similarity index 100% rename from src/components/icon/test/basic/main.html rename to packages/ionic-angular/src/components/icon/test/basic/main.html diff --git a/src/components/icon/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/icon/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/icon/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/icon/test/basic/pages/root-page/root-page.html diff --git a/src/components/icon/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/icon/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/icon/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/icon/test/basic/pages/root-page/root-page.ts diff --git a/src/components/img/img-interface.ts b/packages/ionic-angular/src/components/img/img-interface.ts similarity index 100% rename from src/components/img/img-interface.ts rename to packages/ionic-angular/src/components/img/img-interface.ts diff --git a/src/components/img/img.scss b/packages/ionic-angular/src/components/img/img.scss similarity index 100% rename from src/components/img/img.scss rename to packages/ionic-angular/src/components/img/img.scss diff --git a/src/components/img/img.ts b/packages/ionic-angular/src/components/img/img.ts similarity index 100% rename from src/components/img/img.ts rename to packages/ionic-angular/src/components/img/img.ts diff --git a/src/components/img/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/img/test/basic/app/app.component.ts similarity index 100% rename from src/components/img/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/img/test/basic/app/app.component.ts diff --git a/src/components/img/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/img/test/basic/app/app.module.ts similarity index 100% rename from src/components/img/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/img/test/basic/app/app.module.ts diff --git a/src/components/img/test/basic/app/main.ts b/packages/ionic-angular/src/components/img/test/basic/app/main.ts similarity index 100% rename from src/components/img/test/basic/app/main.ts rename to packages/ionic-angular/src/components/img/test/basic/app/main.ts diff --git a/src/components/img/test/basic/assets/img/bandit.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/bandit.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/bandit.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/bandit.jpg diff --git a/src/components/img/test/basic/assets/img/batmobile.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/batmobile.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/batmobile.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/batmobile.jpg diff --git a/src/components/img/test/basic/assets/img/blues-brothers.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/blues-brothers.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/blues-brothers.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/blues-brothers.jpg diff --git a/src/components/img/test/basic/assets/img/bueller.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/bueller.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/bueller.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/bueller.jpg diff --git a/src/components/img/test/basic/assets/img/delorean.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/delorean.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/delorean.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/delorean.jpg diff --git a/src/components/img/test/basic/assets/img/eleanor.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/eleanor.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/eleanor.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/eleanor.jpg diff --git a/src/components/img/test/basic/assets/img/general-lee.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/general-lee.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/general-lee.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/general-lee.jpg diff --git a/src/components/img/test/basic/assets/img/ghostbusters.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/ghostbusters.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/ghostbusters.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/ghostbusters.jpg diff --git a/src/components/img/test/basic/assets/img/knight-rider.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/knight-rider.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/knight-rider.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/knight-rider.jpg diff --git a/src/components/img/test/basic/assets/img/mirth-mobile.jpg b/packages/ionic-angular/src/components/img/test/basic/assets/img/mirth-mobile.jpg similarity index 100% rename from src/components/img/test/basic/assets/img/mirth-mobile.jpg rename to packages/ionic-angular/src/components/img/test/basic/assets/img/mirth-mobile.jpg diff --git a/src/components/img/test/basic/e2e.ts b/packages/ionic-angular/src/components/img/test/basic/e2e.ts similarity index 100% rename from src/components/img/test/basic/e2e.ts rename to packages/ionic-angular/src/components/img/test/basic/e2e.ts diff --git a/src/components/img/test/basic/pages/my-img/my-img.module.ts b/packages/ionic-angular/src/components/img/test/basic/pages/my-img/my-img.module.ts similarity index 100% rename from src/components/img/test/basic/pages/my-img/my-img.module.ts rename to packages/ionic-angular/src/components/img/test/basic/pages/my-img/my-img.module.ts diff --git a/src/components/img/test/basic/pages/my-img/my-img.ts b/packages/ionic-angular/src/components/img/test/basic/pages/my-img/my-img.ts similarity index 100% rename from src/components/img/test/basic/pages/my-img/my-img.ts rename to packages/ionic-angular/src/components/img/test/basic/pages/my-img/my-img.ts diff --git a/src/components/img/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/img/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/img/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/img/test/basic/pages/root-page/root-page.html diff --git a/src/components/img/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/img/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/img/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/img/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/img/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/img/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/img/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/img/test/basic/pages/root-page/root-page.ts diff --git a/src/components/img/test/cards/app.module.ts b/packages/ionic-angular/src/components/img/test/cards/app.module.ts similarity index 100% rename from src/components/img/test/cards/app.module.ts rename to packages/ionic-angular/src/components/img/test/cards/app.module.ts diff --git a/src/components/img/test/cards/assets/img/bandit.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/bandit.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/bandit.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/bandit.jpg diff --git a/src/components/img/test/cards/assets/img/batmobile.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/batmobile.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/batmobile.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/batmobile.jpg diff --git a/src/components/img/test/cards/assets/img/blues-brothers.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/blues-brothers.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/blues-brothers.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/blues-brothers.jpg diff --git a/src/components/img/test/cards/assets/img/bueller.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/bueller.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/bueller.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/bueller.jpg diff --git a/src/components/img/test/cards/assets/img/delorean.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/delorean.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/delorean.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/delorean.jpg diff --git a/src/components/img/test/cards/assets/img/eleanor.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/eleanor.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/eleanor.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/eleanor.jpg diff --git a/src/components/img/test/cards/assets/img/general-lee.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/general-lee.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/general-lee.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/general-lee.jpg diff --git a/src/components/img/test/cards/assets/img/ghostbusters.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/ghostbusters.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/ghostbusters.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/ghostbusters.jpg diff --git a/src/components/img/test/cards/assets/img/knight-rider.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/knight-rider.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/knight-rider.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/knight-rider.jpg diff --git a/src/components/img/test/cards/assets/img/mirth-mobile.jpg b/packages/ionic-angular/src/components/img/test/cards/assets/img/mirth-mobile.jpg similarity index 100% rename from src/components/img/test/cards/assets/img/mirth-mobile.jpg rename to packages/ionic-angular/src/components/img/test/cards/assets/img/mirth-mobile.jpg diff --git a/src/components/img/test/cards/main.html b/packages/ionic-angular/src/components/img/test/cards/main.html similarity index 100% rename from src/components/img/test/cards/main.html rename to packages/ionic-angular/src/components/img/test/cards/main.html diff --git a/src/components/img/test/cards/main.ts b/packages/ionic-angular/src/components/img/test/cards/main.ts similarity index 100% rename from src/components/img/test/cards/main.ts rename to packages/ionic-angular/src/components/img/test/cards/main.ts diff --git a/src/components/img/test/img.spec.ts b/packages/ionic-angular/src/components/img/test/img.spec.ts similarity index 100% rename from src/components/img/test/img.spec.ts rename to packages/ionic-angular/src/components/img/test/img.spec.ts diff --git a/src/components/img/test/lazy-load/app.module.ts b/packages/ionic-angular/src/components/img/test/lazy-load/app.module.ts similarity index 100% rename from src/components/img/test/lazy-load/app.module.ts rename to packages/ionic-angular/src/components/img/test/lazy-load/app.module.ts diff --git a/src/components/img/test/lazy-load/assets/img/bandit.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/bandit.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/bandit.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/bandit.jpg diff --git a/src/components/img/test/lazy-load/assets/img/batmobile.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/batmobile.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/batmobile.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/batmobile.jpg diff --git a/src/components/img/test/lazy-load/assets/img/blues-brothers.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/blues-brothers.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/blues-brothers.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/blues-brothers.jpg diff --git a/src/components/img/test/lazy-load/assets/img/bueller.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/bueller.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/bueller.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/bueller.jpg diff --git a/src/components/img/test/lazy-load/assets/img/delorean.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/delorean.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/delorean.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/delorean.jpg diff --git a/src/components/img/test/lazy-load/assets/img/eleanor.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/eleanor.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/eleanor.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/eleanor.jpg diff --git a/src/components/img/test/lazy-load/assets/img/general-lee.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/general-lee.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/general-lee.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/general-lee.jpg diff --git a/src/components/img/test/lazy-load/assets/img/ghostbusters.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/ghostbusters.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/ghostbusters.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/ghostbusters.jpg diff --git a/src/components/img/test/lazy-load/assets/img/knight-rider.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/knight-rider.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/knight-rider.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/knight-rider.jpg diff --git a/src/components/img/test/lazy-load/assets/img/mirth-mobile.jpg b/packages/ionic-angular/src/components/img/test/lazy-load/assets/img/mirth-mobile.jpg similarity index 100% rename from src/components/img/test/lazy-load/assets/img/mirth-mobile.jpg rename to packages/ionic-angular/src/components/img/test/lazy-load/assets/img/mirth-mobile.jpg diff --git a/src/components/img/test/lazy-load/main.html b/packages/ionic-angular/src/components/img/test/lazy-load/main.html similarity index 100% rename from src/components/img/test/lazy-load/main.html rename to packages/ionic-angular/src/components/img/test/lazy-load/main.html diff --git a/src/components/img/test/lazy-load/main.ts b/packages/ionic-angular/src/components/img/test/lazy-load/main.ts similarity index 100% rename from src/components/img/test/lazy-load/main.ts rename to packages/ionic-angular/src/components/img/test/lazy-load/main.ts diff --git a/src/components/img/test/list/app.module.ts b/packages/ionic-angular/src/components/img/test/list/app.module.ts similarity index 100% rename from src/components/img/test/list/app.module.ts rename to packages/ionic-angular/src/components/img/test/list/app.module.ts diff --git a/src/components/img/test/list/assets/img/bandit.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/bandit.jpg similarity index 100% rename from src/components/img/test/list/assets/img/bandit.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/bandit.jpg diff --git a/src/components/img/test/list/assets/img/batmobile.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/batmobile.jpg similarity index 100% rename from src/components/img/test/list/assets/img/batmobile.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/batmobile.jpg diff --git a/src/components/img/test/list/assets/img/blues-brothers.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/blues-brothers.jpg similarity index 100% rename from src/components/img/test/list/assets/img/blues-brothers.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/blues-brothers.jpg diff --git a/src/components/img/test/list/assets/img/bueller.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/bueller.jpg similarity index 100% rename from src/components/img/test/list/assets/img/bueller.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/bueller.jpg diff --git a/src/components/img/test/list/assets/img/delorean.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/delorean.jpg similarity index 100% rename from src/components/img/test/list/assets/img/delorean.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/delorean.jpg diff --git a/src/components/img/test/list/assets/img/eleanor.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/eleanor.jpg similarity index 100% rename from src/components/img/test/list/assets/img/eleanor.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/eleanor.jpg diff --git a/src/components/img/test/list/assets/img/general-lee.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/general-lee.jpg similarity index 100% rename from src/components/img/test/list/assets/img/general-lee.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/general-lee.jpg diff --git a/src/components/img/test/list/assets/img/ghostbusters.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/ghostbusters.jpg similarity index 100% rename from src/components/img/test/list/assets/img/ghostbusters.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/ghostbusters.jpg diff --git a/src/components/img/test/list/assets/img/knight-rider.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/knight-rider.jpg similarity index 100% rename from src/components/img/test/list/assets/img/knight-rider.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/knight-rider.jpg diff --git a/src/components/img/test/list/assets/img/mirth-mobile.jpg b/packages/ionic-angular/src/components/img/test/list/assets/img/mirth-mobile.jpg similarity index 100% rename from src/components/img/test/list/assets/img/mirth-mobile.jpg rename to packages/ionic-angular/src/components/img/test/list/assets/img/mirth-mobile.jpg diff --git a/src/components/img/test/list/main.html b/packages/ionic-angular/src/components/img/test/list/main.html similarity index 100% rename from src/components/img/test/list/main.html rename to packages/ionic-angular/src/components/img/test/list/main.html diff --git a/src/components/img/test/list/main.ts b/packages/ionic-angular/src/components/img/test/list/main.ts similarity index 100% rename from src/components/img/test/list/main.ts rename to packages/ionic-angular/src/components/img/test/list/main.ts diff --git a/src/components/index.ts b/packages/ionic-angular/src/components/index.ts similarity index 100% rename from src/components/index.ts rename to packages/ionic-angular/src/components/index.ts diff --git a/src/components/infinite-scroll/infinite-scroll-content.ts b/packages/ionic-angular/src/components/infinite-scroll/infinite-scroll-content.ts similarity index 100% rename from src/components/infinite-scroll/infinite-scroll-content.ts rename to packages/ionic-angular/src/components/infinite-scroll/infinite-scroll-content.ts diff --git a/src/components/infinite-scroll/infinite-scroll.scss b/packages/ionic-angular/src/components/infinite-scroll/infinite-scroll.scss similarity index 100% rename from src/components/infinite-scroll/infinite-scroll.scss rename to packages/ionic-angular/src/components/infinite-scroll/infinite-scroll.scss diff --git a/src/components/infinite-scroll/infinite-scroll.ts b/packages/ionic-angular/src/components/infinite-scroll/infinite-scroll.ts similarity index 100% rename from src/components/infinite-scroll/infinite-scroll.ts rename to packages/ionic-angular/src/components/infinite-scroll/infinite-scroll.ts diff --git a/src/components/infinite-scroll/test/basic/app.module.ts b/packages/ionic-angular/src/components/infinite-scroll/test/basic/app.module.ts similarity index 100% rename from src/components/infinite-scroll/test/basic/app.module.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/basic/app.module.ts diff --git a/src/components/infinite-scroll/test/basic/main.html b/packages/ionic-angular/src/components/infinite-scroll/test/basic/main.html similarity index 100% rename from src/components/infinite-scroll/test/basic/main.html rename to packages/ionic-angular/src/components/infinite-scroll/test/basic/main.html diff --git a/src/components/infinite-scroll/test/basic/main.ts b/packages/ionic-angular/src/components/infinite-scroll/test/basic/main.ts similarity index 100% rename from src/components/infinite-scroll/test/basic/main.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/basic/main.ts diff --git a/src/components/infinite-scroll/test/infinite-scroll.spec.ts b/packages/ionic-angular/src/components/infinite-scroll/test/infinite-scroll.spec.ts similarity index 100% rename from src/components/infinite-scroll/test/infinite-scroll.spec.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/infinite-scroll.spec.ts diff --git a/src/components/infinite-scroll/test/position-top/app/app.component.ts b/packages/ionic-angular/src/components/infinite-scroll/test/position-top/app/app.component.ts similarity index 100% rename from src/components/infinite-scroll/test/position-top/app/app.component.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/position-top/app/app.component.ts diff --git a/src/components/infinite-scroll/test/position-top/app/app.module.ts b/packages/ionic-angular/src/components/infinite-scroll/test/position-top/app/app.module.ts similarity index 100% rename from src/components/infinite-scroll/test/position-top/app/app.module.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/position-top/app/app.module.ts diff --git a/src/components/infinite-scroll/test/position-top/app/main.ts b/packages/ionic-angular/src/components/infinite-scroll/test/position-top/app/main.ts similarity index 100% rename from src/components/infinite-scroll/test/position-top/app/main.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/position-top/app/main.ts diff --git a/src/components/infinite-scroll/test/position-top/pages/page-two/page-two.html b/packages/ionic-angular/src/components/infinite-scroll/test/position-top/pages/page-two/page-two.html similarity index 100% rename from src/components/infinite-scroll/test/position-top/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/infinite-scroll/test/position-top/pages/page-two/page-two.html diff --git a/src/components/infinite-scroll/test/position-top/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/infinite-scroll/test/position-top/pages/page-two/page-two.ts similarity index 100% rename from src/components/infinite-scroll/test/position-top/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/position-top/pages/page-two/page-two.ts diff --git a/src/components/infinite-scroll/test/position-top/pages/root-page/root-page.html b/packages/ionic-angular/src/components/infinite-scroll/test/position-top/pages/root-page/root-page.html similarity index 100% rename from src/components/infinite-scroll/test/position-top/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/infinite-scroll/test/position-top/pages/root-page/root-page.html diff --git a/src/components/infinite-scroll/test/position-top/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/infinite-scroll/test/position-top/pages/root-page/root-page.ts similarity index 100% rename from src/components/infinite-scroll/test/position-top/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/position-top/pages/root-page/root-page.ts diff --git a/src/components/infinite-scroll/test/short-list/app.module.ts b/packages/ionic-angular/src/components/infinite-scroll/test/short-list/app.module.ts similarity index 100% rename from src/components/infinite-scroll/test/short-list/app.module.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/short-list/app.module.ts diff --git a/src/components/infinite-scroll/test/short-list/main.html b/packages/ionic-angular/src/components/infinite-scroll/test/short-list/main.html similarity index 100% rename from src/components/infinite-scroll/test/short-list/main.html rename to packages/ionic-angular/src/components/infinite-scroll/test/short-list/main.html diff --git a/src/components/infinite-scroll/test/short-list/main.ts b/packages/ionic-angular/src/components/infinite-scroll/test/short-list/main.ts similarity index 100% rename from src/components/infinite-scroll/test/short-list/main.ts rename to packages/ionic-angular/src/components/infinite-scroll/test/short-list/main.ts diff --git a/src/components/input/input.ios.scss b/packages/ionic-angular/src/components/input/input.ios.scss similarity index 100% rename from src/components/input/input.ios.scss rename to packages/ionic-angular/src/components/input/input.ios.scss diff --git a/src/components/input/input.md.scss b/packages/ionic-angular/src/components/input/input.md.scss similarity index 100% rename from src/components/input/input.md.scss rename to packages/ionic-angular/src/components/input/input.md.scss diff --git a/src/components/input/input.scss b/packages/ionic-angular/src/components/input/input.scss similarity index 100% rename from src/components/input/input.scss rename to packages/ionic-angular/src/components/input/input.scss diff --git a/src/components/input/input.ts b/packages/ionic-angular/src/components/input/input.ts similarity index 100% rename from src/components/input/input.ts rename to packages/ionic-angular/src/components/input/input.ts diff --git a/src/components/input/input.wp.scss b/packages/ionic-angular/src/components/input/input.wp.scss similarity index 100% rename from src/components/input/input.wp.scss rename to packages/ionic-angular/src/components/input/input.wp.scss diff --git a/src/components/input/native-input.ts b/packages/ionic-angular/src/components/input/native-input.ts similarity index 100% rename from src/components/input/native-input.ts rename to packages/ionic-angular/src/components/input/native-input.ts diff --git a/src/components/input/next-input.ts b/packages/ionic-angular/src/components/input/next-input.ts similarity index 100% rename from src/components/input/next-input.ts rename to packages/ionic-angular/src/components/input/next-input.ts diff --git a/src/components/input/test/basic-form/app/app.component.ts b/packages/ionic-angular/src/components/input/test/basic-form/app/app.component.ts similarity index 100% rename from src/components/input/test/basic-form/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/basic-form/app/app.component.ts diff --git a/src/components/input/test/basic-form/app/app.module.ts b/packages/ionic-angular/src/components/input/test/basic-form/app/app.module.ts similarity index 100% rename from src/components/input/test/basic-form/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/basic-form/app/app.module.ts diff --git a/src/components/input/test/basic-form/app/main.ts b/packages/ionic-angular/src/components/input/test/basic-form/app/main.ts similarity index 100% rename from src/components/input/test/basic-form/app/main.ts rename to packages/ionic-angular/src/components/input/test/basic-form/app/main.ts diff --git a/src/components/input/test/basic-form/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/basic-form/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/basic-form/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/basic-form/pages/root-page/root-page.html diff --git a/src/components/input/test/basic-form/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/basic-form/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/basic-form/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/basic-form/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/basic-form/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/basic-form/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/basic-form/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/basic-form/pages/root-page/root-page.ts diff --git a/src/components/input/test/clear-after-edit/app/app.component.ts b/packages/ionic-angular/src/components/input/test/clear-after-edit/app/app.component.ts similarity index 100% rename from src/components/input/test/clear-after-edit/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/clear-after-edit/app/app.component.ts diff --git a/src/components/input/test/clear-after-edit/app/app.module.ts b/packages/ionic-angular/src/components/input/test/clear-after-edit/app/app.module.ts similarity index 100% rename from src/components/input/test/clear-after-edit/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/clear-after-edit/app/app.module.ts diff --git a/src/components/input/test/clear-after-edit/app/main.ts b/packages/ionic-angular/src/components/input/test/clear-after-edit/app/main.ts similarity index 100% rename from src/components/input/test/clear-after-edit/app/main.ts rename to packages/ionic-angular/src/components/input/test/clear-after-edit/app/main.ts diff --git a/src/components/input/test/clear-after-edit/e2e.ts b/packages/ionic-angular/src/components/input/test/clear-after-edit/e2e.ts similarity index 100% rename from src/components/input/test/clear-after-edit/e2e.ts rename to packages/ionic-angular/src/components/input/test/clear-after-edit/e2e.ts diff --git a/src/components/input/test/clear-after-edit/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/clear-after-edit/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/clear-after-edit/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/clear-after-edit/pages/root-page/root-page.html diff --git a/src/components/input/test/clear-after-edit/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/clear-after-edit/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/clear-after-edit/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/clear-after-edit/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/clear-after-edit/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/clear-after-edit/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/clear-after-edit/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/clear-after-edit/pages/root-page/root-page.ts diff --git a/src/components/input/test/clear-input/app/app.component.ts b/packages/ionic-angular/src/components/input/test/clear-input/app/app.component.ts similarity index 100% rename from src/components/input/test/clear-input/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/clear-input/app/app.component.ts diff --git a/src/components/input/test/clear-input/app/app.module.ts b/packages/ionic-angular/src/components/input/test/clear-input/app/app.module.ts similarity index 100% rename from src/components/input/test/clear-input/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/clear-input/app/app.module.ts diff --git a/src/components/input/test/clear-input/app/main.ts b/packages/ionic-angular/src/components/input/test/clear-input/app/main.ts similarity index 100% rename from src/components/input/test/clear-input/app/main.ts rename to packages/ionic-angular/src/components/input/test/clear-input/app/main.ts diff --git a/src/components/input/test/clear-input/e2e.ts b/packages/ionic-angular/src/components/input/test/clear-input/e2e.ts similarity index 100% rename from src/components/input/test/clear-input/e2e.ts rename to packages/ionic-angular/src/components/input/test/clear-input/e2e.ts diff --git a/src/components/input/test/clear-input/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/clear-input/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/clear-input/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/clear-input/pages/root-page/root-page.html diff --git a/src/components/input/test/clear-input/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/clear-input/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/clear-input/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/clear-input/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/clear-input/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/clear-input/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/clear-input/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/clear-input/pages/root-page/root-page.ts diff --git a/src/components/input/test/events/app/app.component.ts b/packages/ionic-angular/src/components/input/test/events/app/app.component.ts similarity index 100% rename from src/components/input/test/events/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/events/app/app.component.ts diff --git a/src/components/input/test/events/app/app.module.ts b/packages/ionic-angular/src/components/input/test/events/app/app.module.ts similarity index 100% rename from src/components/input/test/events/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/events/app/app.module.ts diff --git a/src/components/input/test/events/app/main.ts b/packages/ionic-angular/src/components/input/test/events/app/main.ts similarity index 100% rename from src/components/input/test/events/app/main.ts rename to packages/ionic-angular/src/components/input/test/events/app/main.ts diff --git a/src/components/input/test/events/e2e.ts b/packages/ionic-angular/src/components/input/test/events/e2e.ts similarity index 100% rename from src/components/input/test/events/e2e.ts rename to packages/ionic-angular/src/components/input/test/events/e2e.ts diff --git a/src/components/input/test/events/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/events/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/events/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/events/pages/root-page/root-page.html diff --git a/src/components/input/test/events/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/events/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/events/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/events/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/events/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/events/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/events/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/events/pages/root-page/root-page.ts diff --git a/src/components/input/test/fixed-inline-labels/app/app.component.ts b/packages/ionic-angular/src/components/input/test/fixed-inline-labels/app/app.component.ts similarity index 100% rename from src/components/input/test/fixed-inline-labels/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/fixed-inline-labels/app/app.component.ts diff --git a/src/components/input/test/fixed-inline-labels/app/app.module.ts b/packages/ionic-angular/src/components/input/test/fixed-inline-labels/app/app.module.ts similarity index 100% rename from src/components/input/test/fixed-inline-labels/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/fixed-inline-labels/app/app.module.ts diff --git a/src/components/input/test/fixed-inline-labels/app/main.ts b/packages/ionic-angular/src/components/input/test/fixed-inline-labels/app/main.ts similarity index 100% rename from src/components/input/test/fixed-inline-labels/app/main.ts rename to packages/ionic-angular/src/components/input/test/fixed-inline-labels/app/main.ts diff --git a/src/components/input/test/fixed-inline-labels/e2e.ts b/packages/ionic-angular/src/components/input/test/fixed-inline-labels/e2e.ts similarity index 100% rename from src/components/input/test/fixed-inline-labels/e2e.ts rename to packages/ionic-angular/src/components/input/test/fixed-inline-labels/e2e.ts diff --git a/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/fixed-inline-labels/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.html diff --git a/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/fixed-inline-labels/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/fixed-inline-labels/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/fixed-inline-labels/pages/root-page/root-page.ts diff --git a/src/components/input/test/floating-labels/app/app.component.ts b/packages/ionic-angular/src/components/input/test/floating-labels/app/app.component.ts similarity index 100% rename from src/components/input/test/floating-labels/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/floating-labels/app/app.component.ts diff --git a/src/components/input/test/floating-labels/app/app.module.ts b/packages/ionic-angular/src/components/input/test/floating-labels/app/app.module.ts similarity index 100% rename from src/components/input/test/floating-labels/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/floating-labels/app/app.module.ts diff --git a/src/components/input/test/floating-labels/app/main.ts b/packages/ionic-angular/src/components/input/test/floating-labels/app/main.ts similarity index 100% rename from src/components/input/test/floating-labels/app/main.ts rename to packages/ionic-angular/src/components/input/test/floating-labels/app/main.ts diff --git a/src/components/input/test/floating-labels/e2e.ts b/packages/ionic-angular/src/components/input/test/floating-labels/e2e.ts similarity index 100% rename from src/components/input/test/floating-labels/e2e.ts rename to packages/ionic-angular/src/components/input/test/floating-labels/e2e.ts diff --git a/src/components/input/test/floating-labels/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/floating-labels/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/floating-labels/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/floating-labels/pages/root-page/root-page.html diff --git a/src/components/input/test/floating-labels/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/floating-labels/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/floating-labels/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/floating-labels/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/floating-labels/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/floating-labels/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/floating-labels/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/floating-labels/pages/root-page/root-page.ts diff --git a/src/components/input/test/footer-inputs/app/app.component.ts b/packages/ionic-angular/src/components/input/test/footer-inputs/app/app.component.ts similarity index 100% rename from src/components/input/test/footer-inputs/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/footer-inputs/app/app.component.ts diff --git a/src/components/input/test/footer-inputs/app/app.module.ts b/packages/ionic-angular/src/components/input/test/footer-inputs/app/app.module.ts similarity index 100% rename from src/components/input/test/footer-inputs/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/footer-inputs/app/app.module.ts diff --git a/src/components/input/test/footer-inputs/app/main.ts b/packages/ionic-angular/src/components/input/test/footer-inputs/app/main.ts similarity index 100% rename from src/components/input/test/footer-inputs/app/main.ts rename to packages/ionic-angular/src/components/input/test/footer-inputs/app/main.ts diff --git a/src/components/input/test/footer-inputs/e2e.ts b/packages/ionic-angular/src/components/input/test/footer-inputs/e2e.ts similarity index 100% rename from src/components/input/test/footer-inputs/e2e.ts rename to packages/ionic-angular/src/components/input/test/footer-inputs/e2e.ts diff --git a/src/components/input/test/footer-inputs/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/footer-inputs/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/footer-inputs/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/footer-inputs/pages/root-page/root-page.html diff --git a/src/components/input/test/footer-inputs/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/footer-inputs/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/footer-inputs/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/footer-inputs/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/footer-inputs/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/footer-inputs/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/footer-inputs/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/footer-inputs/pages/root-page/root-page.ts diff --git a/src/components/input/test/form-inputs/app/app.component.ts b/packages/ionic-angular/src/components/input/test/form-inputs/app/app.component.ts similarity index 100% rename from src/components/input/test/form-inputs/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/form-inputs/app/app.component.ts diff --git a/src/components/input/test/form-inputs/app/app.module.ts b/packages/ionic-angular/src/components/input/test/form-inputs/app/app.module.ts similarity index 100% rename from src/components/input/test/form-inputs/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/form-inputs/app/app.module.ts diff --git a/src/components/input/test/form-inputs/app/main.ts b/packages/ionic-angular/src/components/input/test/form-inputs/app/main.ts similarity index 100% rename from src/components/input/test/form-inputs/app/main.ts rename to packages/ionic-angular/src/components/input/test/form-inputs/app/main.ts diff --git a/src/components/input/test/form-inputs/e2e.ts b/packages/ionic-angular/src/components/input/test/form-inputs/e2e.ts similarity index 100% rename from src/components/input/test/form-inputs/e2e.ts rename to packages/ionic-angular/src/components/input/test/form-inputs/e2e.ts diff --git a/src/components/input/test/form-inputs/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/form-inputs/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/form-inputs/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/form-inputs/pages/root-page/root-page.html diff --git a/src/components/input/test/form-inputs/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/form-inputs/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/form-inputs/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/form-inputs/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/form-inputs/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/form-inputs/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/form-inputs/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/form-inputs/pages/root-page/root-page.ts diff --git a/src/components/input/test/highlight/app/app.component.ts b/packages/ionic-angular/src/components/input/test/highlight/app/app.component.ts similarity index 100% rename from src/components/input/test/highlight/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/highlight/app/app.component.ts diff --git a/src/components/input/test/highlight/app/app.module.ts b/packages/ionic-angular/src/components/input/test/highlight/app/app.module.ts similarity index 100% rename from src/components/input/test/highlight/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/highlight/app/app.module.ts diff --git a/src/components/input/test/highlight/app/main.ts b/packages/ionic-angular/src/components/input/test/highlight/app/main.ts similarity index 100% rename from src/components/input/test/highlight/app/main.ts rename to packages/ionic-angular/src/components/input/test/highlight/app/main.ts diff --git a/src/components/input/test/highlight/e2e.ts b/packages/ionic-angular/src/components/input/test/highlight/e2e.ts similarity index 100% rename from src/components/input/test/highlight/e2e.ts rename to packages/ionic-angular/src/components/input/test/highlight/e2e.ts diff --git a/src/components/input/test/highlight/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/highlight/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/highlight/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/highlight/pages/root-page/root-page.html diff --git a/src/components/input/test/highlight/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/highlight/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/highlight/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/highlight/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/highlight/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/highlight/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/highlight/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/highlight/pages/root-page/root-page.ts diff --git a/src/components/input/test/inline-labels/app/app.component.ts b/packages/ionic-angular/src/components/input/test/inline-labels/app/app.component.ts similarity index 100% rename from src/components/input/test/inline-labels/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/inline-labels/app/app.component.ts diff --git a/src/components/input/test/inline-labels/app/app.module.ts b/packages/ionic-angular/src/components/input/test/inline-labels/app/app.module.ts similarity index 100% rename from src/components/input/test/inline-labels/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/inline-labels/app/app.module.ts diff --git a/src/components/input/test/inline-labels/app/main.ts b/packages/ionic-angular/src/components/input/test/inline-labels/app/main.ts similarity index 100% rename from src/components/input/test/inline-labels/app/main.ts rename to packages/ionic-angular/src/components/input/test/inline-labels/app/main.ts diff --git a/src/components/input/test/inline-labels/e2e.ts b/packages/ionic-angular/src/components/input/test/inline-labels/e2e.ts similarity index 100% rename from src/components/input/test/inline-labels/e2e.ts rename to packages/ionic-angular/src/components/input/test/inline-labels/e2e.ts diff --git a/src/components/input/test/inline-labels/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/inline-labels/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/inline-labels/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/inline-labels/pages/root-page/root-page.html diff --git a/src/components/input/test/inline-labels/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/inline-labels/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/inline-labels/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/inline-labels/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/inline-labels/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/inline-labels/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/inline-labels/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/inline-labels/pages/root-page/root-page.ts diff --git a/src/components/input/test/input-focus/app/app.module.ts b/packages/ionic-angular/src/components/input/test/input-focus/app/app.module.ts similarity index 100% rename from src/components/input/test/input-focus/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/input-focus/app/app.module.ts diff --git a/src/components/input/test/input-focus/app/main.ts b/packages/ionic-angular/src/components/input/test/input-focus/app/main.ts similarity index 100% rename from src/components/input/test/input-focus/app/main.ts rename to packages/ionic-angular/src/components/input/test/input-focus/app/main.ts diff --git a/src/components/input/test/input-focus/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/input-focus/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/input-focus/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/input-focus/pages/root-page/root-page.html diff --git a/src/components/input/test/input-focus/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/input-focus/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/input-focus/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/input-focus/pages/root-page/root-page.ts diff --git a/src/components/input/test/inset-inputs/app/app.component.ts b/packages/ionic-angular/src/components/input/test/inset-inputs/app/app.component.ts similarity index 100% rename from src/components/input/test/inset-inputs/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/inset-inputs/app/app.component.ts diff --git a/src/components/input/test/inset-inputs/app/app.module.ts b/packages/ionic-angular/src/components/input/test/inset-inputs/app/app.module.ts similarity index 100% rename from src/components/input/test/inset-inputs/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/inset-inputs/app/app.module.ts diff --git a/src/components/input/test/inset-inputs/app/main.ts b/packages/ionic-angular/src/components/input/test/inset-inputs/app/main.ts similarity index 100% rename from src/components/input/test/inset-inputs/app/main.ts rename to packages/ionic-angular/src/components/input/test/inset-inputs/app/main.ts diff --git a/src/components/input/test/inset-inputs/e2e.ts b/packages/ionic-angular/src/components/input/test/inset-inputs/e2e.ts similarity index 100% rename from src/components/input/test/inset-inputs/e2e.ts rename to packages/ionic-angular/src/components/input/test/inset-inputs/e2e.ts diff --git a/src/components/input/test/inset-inputs/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/inset-inputs/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/inset-inputs/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/inset-inputs/pages/root-page/root-page.html diff --git a/src/components/input/test/inset-inputs/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/inset-inputs/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/inset-inputs/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/inset-inputs/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/inset-inputs/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/inset-inputs/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/inset-inputs/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/inset-inputs/pages/root-page/root-page.ts diff --git a/src/components/input/test/placeholder-labels/app/app.component.ts b/packages/ionic-angular/src/components/input/test/placeholder-labels/app/app.component.ts similarity index 100% rename from src/components/input/test/placeholder-labels/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/placeholder-labels/app/app.component.ts diff --git a/src/components/input/test/placeholder-labels/app/app.module.ts b/packages/ionic-angular/src/components/input/test/placeholder-labels/app/app.module.ts similarity index 100% rename from src/components/input/test/placeholder-labels/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/placeholder-labels/app/app.module.ts diff --git a/src/components/input/test/placeholder-labels/app/main.ts b/packages/ionic-angular/src/components/input/test/placeholder-labels/app/main.ts similarity index 100% rename from src/components/input/test/placeholder-labels/app/main.ts rename to packages/ionic-angular/src/components/input/test/placeholder-labels/app/main.ts diff --git a/src/components/input/test/placeholder-labels/e2e.ts b/packages/ionic-angular/src/components/input/test/placeholder-labels/e2e.ts similarity index 100% rename from src/components/input/test/placeholder-labels/e2e.ts rename to packages/ionic-angular/src/components/input/test/placeholder-labels/e2e.ts diff --git a/src/components/input/test/placeholder-labels/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/placeholder-labels/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/placeholder-labels/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/placeholder-labels/pages/root-page/root-page.html diff --git a/src/components/input/test/placeholder-labels/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/placeholder-labels/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/placeholder-labels/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/placeholder-labels/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/placeholder-labels/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/placeholder-labels/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/placeholder-labels/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/placeholder-labels/pages/root-page/root-page.ts diff --git a/src/components/input/test/stacked-labels/app/app.component.ts b/packages/ionic-angular/src/components/input/test/stacked-labels/app/app.component.ts similarity index 100% rename from src/components/input/test/stacked-labels/app/app.component.ts rename to packages/ionic-angular/src/components/input/test/stacked-labels/app/app.component.ts diff --git a/src/components/input/test/stacked-labels/app/app.module.ts b/packages/ionic-angular/src/components/input/test/stacked-labels/app/app.module.ts similarity index 100% rename from src/components/input/test/stacked-labels/app/app.module.ts rename to packages/ionic-angular/src/components/input/test/stacked-labels/app/app.module.ts diff --git a/src/components/input/test/stacked-labels/app/main.ts b/packages/ionic-angular/src/components/input/test/stacked-labels/app/main.ts similarity index 100% rename from src/components/input/test/stacked-labels/app/main.ts rename to packages/ionic-angular/src/components/input/test/stacked-labels/app/main.ts diff --git a/src/components/input/test/stacked-labels/e2e.ts b/packages/ionic-angular/src/components/input/test/stacked-labels/e2e.ts similarity index 100% rename from src/components/input/test/stacked-labels/e2e.ts rename to packages/ionic-angular/src/components/input/test/stacked-labels/e2e.ts diff --git a/src/components/input/test/stacked-labels/pages/root-page/root-page.html b/packages/ionic-angular/src/components/input/test/stacked-labels/pages/root-page/root-page.html similarity index 100% rename from src/components/input/test/stacked-labels/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/input/test/stacked-labels/pages/root-page/root-page.html diff --git a/src/components/input/test/stacked-labels/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/input/test/stacked-labels/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/input/test/stacked-labels/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/input/test/stacked-labels/pages/root-page/root-page.module.ts diff --git a/src/components/input/test/stacked-labels/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/input/test/stacked-labels/pages/root-page/root-page.ts similarity index 100% rename from src/components/input/test/stacked-labels/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/input/test/stacked-labels/pages/root-page/root-page.ts diff --git a/src/components/input/test/text-input.spec.ts b/packages/ionic-angular/src/components/input/test/text-input.spec.ts similarity index 100% rename from src/components/input/test/text-input.spec.ts rename to packages/ionic-angular/src/components/input/test/text-input.spec.ts diff --git a/src/components/ion.ts b/packages/ionic-angular/src/components/ion.ts similarity index 100% rename from src/components/ion.ts rename to packages/ionic-angular/src/components/ion.ts diff --git a/src/components/item/item-content.ts b/packages/ionic-angular/src/components/item/item-content.ts similarity index 100% rename from src/components/item/item-content.ts rename to packages/ionic-angular/src/components/item/item-content.ts diff --git a/src/components/item/item-divider.ts b/packages/ionic-angular/src/components/item/item-divider.ts similarity index 100% rename from src/components/item/item-divider.ts rename to packages/ionic-angular/src/components/item/item-divider.ts diff --git a/src/components/item/item-group.ts b/packages/ionic-angular/src/components/item/item-group.ts similarity index 100% rename from src/components/item/item-group.ts rename to packages/ionic-angular/src/components/item/item-group.ts diff --git a/src/components/item/item-media.scss b/packages/ionic-angular/src/components/item/item-media.scss similarity index 100% rename from src/components/item/item-media.scss rename to packages/ionic-angular/src/components/item/item-media.scss diff --git a/src/components/item/item-options.ts b/packages/ionic-angular/src/components/item/item-options.ts similarity index 100% rename from src/components/item/item-options.ts rename to packages/ionic-angular/src/components/item/item-options.ts diff --git a/src/components/item/item-reorder-gesture.ts b/packages/ionic-angular/src/components/item/item-reorder-gesture.ts similarity index 100% rename from src/components/item/item-reorder-gesture.ts rename to packages/ionic-angular/src/components/item/item-reorder-gesture.ts diff --git a/src/components/item/item-reorder-util.ts b/packages/ionic-angular/src/components/item/item-reorder-util.ts similarity index 100% rename from src/components/item/item-reorder-util.ts rename to packages/ionic-angular/src/components/item/item-reorder-util.ts diff --git a/src/components/item/item-reorder.scss b/packages/ionic-angular/src/components/item/item-reorder.scss similarity index 100% rename from src/components/item/item-reorder.scss rename to packages/ionic-angular/src/components/item/item-reorder.scss diff --git a/src/components/item/item-reorder.ts b/packages/ionic-angular/src/components/item/item-reorder.ts similarity index 100% rename from src/components/item/item-reorder.ts rename to packages/ionic-angular/src/components/item/item-reorder.ts diff --git a/src/components/item/item-sliding-gesture.ts b/packages/ionic-angular/src/components/item/item-sliding-gesture.ts similarity index 100% rename from src/components/item/item-sliding-gesture.ts rename to packages/ionic-angular/src/components/item/item-sliding-gesture.ts diff --git a/src/components/item/item-sliding.scss b/packages/ionic-angular/src/components/item/item-sliding.scss similarity index 100% rename from src/components/item/item-sliding.scss rename to packages/ionic-angular/src/components/item/item-sliding.scss diff --git a/src/components/item/item-sliding.ts b/packages/ionic-angular/src/components/item/item-sliding.ts similarity index 100% rename from src/components/item/item-sliding.ts rename to packages/ionic-angular/src/components/item/item-sliding.ts diff --git a/src/components/item/item.ios.scss b/packages/ionic-angular/src/components/item/item.ios.scss similarity index 100% rename from src/components/item/item.ios.scss rename to packages/ionic-angular/src/components/item/item.ios.scss diff --git a/src/components/item/item.md.scss b/packages/ionic-angular/src/components/item/item.md.scss similarity index 100% rename from src/components/item/item.md.scss rename to packages/ionic-angular/src/components/item/item.md.scss diff --git a/src/components/item/item.scss b/packages/ionic-angular/src/components/item/item.scss similarity index 100% rename from src/components/item/item.scss rename to packages/ionic-angular/src/components/item/item.scss diff --git a/src/components/item/item.ts b/packages/ionic-angular/src/components/item/item.ts similarity index 100% rename from src/components/item/item.ts rename to packages/ionic-angular/src/components/item/item.ts diff --git a/src/components/item/item.wp.scss b/packages/ionic-angular/src/components/item/item.wp.scss similarity index 100% rename from src/components/item/item.wp.scss rename to packages/ionic-angular/src/components/item/item.wp.scss diff --git a/src/components/item/reorder.ts b/packages/ionic-angular/src/components/item/reorder.ts similarity index 100% rename from src/components/item/reorder.ts rename to packages/ionic-angular/src/components/item/reorder.ts diff --git a/src/components/item/test/buttons/app/app.component.ts b/packages/ionic-angular/src/components/item/test/buttons/app/app.component.ts similarity index 100% rename from src/components/item/test/buttons/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/buttons/app/app.component.ts diff --git a/src/components/item/test/buttons/app/app.module.ts b/packages/ionic-angular/src/components/item/test/buttons/app/app.module.ts similarity index 100% rename from src/components/item/test/buttons/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/buttons/app/app.module.ts diff --git a/src/components/item/test/buttons/app/main.ts b/packages/ionic-angular/src/components/item/test/buttons/app/main.ts similarity index 100% rename from src/components/item/test/buttons/app/main.ts rename to packages/ionic-angular/src/components/item/test/buttons/app/main.ts diff --git a/src/components/item/test/buttons/e2e.ts b/packages/ionic-angular/src/components/item/test/buttons/e2e.ts similarity index 100% rename from src/components/item/test/buttons/e2e.ts rename to packages/ionic-angular/src/components/item/test/buttons/e2e.ts diff --git a/src/components/item/test/buttons/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/buttons/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/buttons/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/buttons/pages/root-page/root-page.html diff --git a/src/components/item/test/buttons/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/buttons/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/buttons/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/buttons/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/buttons/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/buttons/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/buttons/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/buttons/pages/root-page/root-page.ts diff --git a/src/components/item/test/colors/app/app.component.ts b/packages/ionic-angular/src/components/item/test/colors/app/app.component.ts similarity index 100% rename from src/components/item/test/colors/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/colors/app/app.component.ts diff --git a/src/components/item/test/colors/app/app.module.ts b/packages/ionic-angular/src/components/item/test/colors/app/app.module.ts similarity index 100% rename from src/components/item/test/colors/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/colors/app/app.module.ts diff --git a/src/components/item/test/colors/app/main.ts b/packages/ionic-angular/src/components/item/test/colors/app/main.ts similarity index 100% rename from src/components/item/test/colors/app/main.ts rename to packages/ionic-angular/src/components/item/test/colors/app/main.ts diff --git a/src/components/item/test/colors/e2e.ts b/packages/ionic-angular/src/components/item/test/colors/e2e.ts similarity index 100% rename from src/components/item/test/colors/e2e.ts rename to packages/ionic-angular/src/components/item/test/colors/e2e.ts diff --git a/src/components/item/test/colors/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/colors/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/colors/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/colors/pages/root-page/root-page.html diff --git a/src/components/item/test/colors/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/colors/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/colors/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/colors/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/colors/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/colors/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/colors/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/colors/pages/root-page/root-page.ts diff --git a/src/components/item/test/dividers/app/app.component.ts b/packages/ionic-angular/src/components/item/test/dividers/app/app.component.ts similarity index 100% rename from src/components/item/test/dividers/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/dividers/app/app.component.ts diff --git a/src/components/item/test/dividers/app/app.module.ts b/packages/ionic-angular/src/components/item/test/dividers/app/app.module.ts similarity index 100% rename from src/components/item/test/dividers/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/dividers/app/app.module.ts diff --git a/src/components/item/test/dividers/app/main.ts b/packages/ionic-angular/src/components/item/test/dividers/app/main.ts similarity index 100% rename from src/components/item/test/dividers/app/main.ts rename to packages/ionic-angular/src/components/item/test/dividers/app/main.ts diff --git a/src/components/item/test/dividers/e2e.ts b/packages/ionic-angular/src/components/item/test/dividers/e2e.ts similarity index 100% rename from src/components/item/test/dividers/e2e.ts rename to packages/ionic-angular/src/components/item/test/dividers/e2e.ts diff --git a/src/components/item/test/dividers/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/dividers/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/dividers/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/dividers/pages/root-page/root-page.html diff --git a/src/components/item/test/dividers/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/dividers/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/dividers/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/dividers/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/dividers/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/dividers/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/dividers/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/dividers/pages/root-page/root-page.ts diff --git a/src/components/item/test/groups/app/app.component.ts b/packages/ionic-angular/src/components/item/test/groups/app/app.component.ts similarity index 100% rename from src/components/item/test/groups/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/groups/app/app.component.ts diff --git a/src/components/item/test/groups/app/app.module.ts b/packages/ionic-angular/src/components/item/test/groups/app/app.module.ts similarity index 100% rename from src/components/item/test/groups/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/groups/app/app.module.ts diff --git a/src/components/item/test/groups/app/main.ts b/packages/ionic-angular/src/components/item/test/groups/app/main.ts similarity index 100% rename from src/components/item/test/groups/app/main.ts rename to packages/ionic-angular/src/components/item/test/groups/app/main.ts diff --git a/src/components/item/test/groups/pages/session-detail/session-detail.html b/packages/ionic-angular/src/components/item/test/groups/pages/session-detail/session-detail.html similarity index 100% rename from src/components/item/test/groups/pages/session-detail/session-detail.html rename to packages/ionic-angular/src/components/item/test/groups/pages/session-detail/session-detail.html diff --git a/src/components/item/test/groups/pages/session-detail/session-detail.module.ts b/packages/ionic-angular/src/components/item/test/groups/pages/session-detail/session-detail.module.ts similarity index 100% rename from src/components/item/test/groups/pages/session-detail/session-detail.module.ts rename to packages/ionic-angular/src/components/item/test/groups/pages/session-detail/session-detail.module.ts diff --git a/src/components/item/test/groups/pages/session-detail/session-detail.ts b/packages/ionic-angular/src/components/item/test/groups/pages/session-detail/session-detail.ts similarity index 100% rename from src/components/item/test/groups/pages/session-detail/session-detail.ts rename to packages/ionic-angular/src/components/item/test/groups/pages/session-detail/session-detail.ts diff --git a/src/components/item/test/groups/pages/session-list/session-list.html b/packages/ionic-angular/src/components/item/test/groups/pages/session-list/session-list.html similarity index 100% rename from src/components/item/test/groups/pages/session-list/session-list.html rename to packages/ionic-angular/src/components/item/test/groups/pages/session-list/session-list.html diff --git a/src/components/item/test/groups/pages/session-list/session-list.module.ts b/packages/ionic-angular/src/components/item/test/groups/pages/session-list/session-list.module.ts similarity index 100% rename from src/components/item/test/groups/pages/session-list/session-list.module.ts rename to packages/ionic-angular/src/components/item/test/groups/pages/session-list/session-list.module.ts diff --git a/src/components/item/test/groups/pages/session-list/session-list.ts b/packages/ionic-angular/src/components/item/test/groups/pages/session-list/session-list.ts similarity index 100% rename from src/components/item/test/groups/pages/session-list/session-list.ts rename to packages/ionic-angular/src/components/item/test/groups/pages/session-list/session-list.ts diff --git a/src/components/item/test/icons/app/app.component.ts b/packages/ionic-angular/src/components/item/test/icons/app/app.component.ts similarity index 100% rename from src/components/item/test/icons/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/icons/app/app.component.ts diff --git a/src/components/item/test/icons/app/app.module.ts b/packages/ionic-angular/src/components/item/test/icons/app/app.module.ts similarity index 100% rename from src/components/item/test/icons/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/icons/app/app.module.ts diff --git a/src/components/item/test/icons/app/main.ts b/packages/ionic-angular/src/components/item/test/icons/app/main.ts similarity index 100% rename from src/components/item/test/icons/app/main.ts rename to packages/ionic-angular/src/components/item/test/icons/app/main.ts diff --git a/src/components/item/test/icons/e2e.ts b/packages/ionic-angular/src/components/item/test/icons/e2e.ts similarity index 100% rename from src/components/item/test/icons/e2e.ts rename to packages/ionic-angular/src/components/item/test/icons/e2e.ts diff --git a/src/components/item/test/icons/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/icons/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/icons/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/icons/pages/root-page/root-page.html diff --git a/src/components/item/test/icons/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/icons/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/icons/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/icons/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/icons/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/icons/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/icons/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/icons/pages/root-page/root-page.ts diff --git a/src/components/item/test/images/app/app.component.ts b/packages/ionic-angular/src/components/item/test/images/app/app.component.ts similarity index 100% rename from src/components/item/test/images/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/images/app/app.component.ts diff --git a/src/components/item/test/images/app/app.module.ts b/packages/ionic-angular/src/components/item/test/images/app/app.module.ts similarity index 100% rename from src/components/item/test/images/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/images/app/app.module.ts diff --git a/src/components/item/test/images/app/main.ts b/packages/ionic-angular/src/components/item/test/images/app/main.ts similarity index 100% rename from src/components/item/test/images/app/main.ts rename to packages/ionic-angular/src/components/item/test/images/app/main.ts diff --git a/src/components/item/test/images/e2e.ts b/packages/ionic-angular/src/components/item/test/images/e2e.ts similarity index 100% rename from src/components/item/test/images/e2e.ts rename to packages/ionic-angular/src/components/item/test/images/e2e.ts diff --git a/src/components/item/test/images/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/images/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/images/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/images/pages/root-page/root-page.html diff --git a/src/components/item/test/images/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/images/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/images/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/images/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/images/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/images/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/images/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/images/pages/root-page/root-page.ts diff --git a/src/components/item/test/inputs/app/app.component.ts b/packages/ionic-angular/src/components/item/test/inputs/app/app.component.ts similarity index 100% rename from src/components/item/test/inputs/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/inputs/app/app.component.ts diff --git a/src/components/item/test/inputs/app/app.module.ts b/packages/ionic-angular/src/components/item/test/inputs/app/app.module.ts similarity index 100% rename from src/components/item/test/inputs/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/inputs/app/app.module.ts diff --git a/src/components/item/test/inputs/app/main.ts b/packages/ionic-angular/src/components/item/test/inputs/app/main.ts similarity index 100% rename from src/components/item/test/inputs/app/main.ts rename to packages/ionic-angular/src/components/item/test/inputs/app/main.ts diff --git a/src/components/item/test/inputs/e2e.ts b/packages/ionic-angular/src/components/item/test/inputs/e2e.ts similarity index 100% rename from src/components/item/test/inputs/e2e.ts rename to packages/ionic-angular/src/components/item/test/inputs/e2e.ts diff --git a/src/components/item/test/inputs/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/inputs/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/inputs/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/inputs/pages/root-page/root-page.html diff --git a/src/components/item/test/inputs/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/inputs/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/inputs/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/inputs/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/inputs/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/inputs/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/inputs/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/inputs/pages/root-page/root-page.ts diff --git a/src/components/item/test/media/app/app.component.ts b/packages/ionic-angular/src/components/item/test/media/app/app.component.ts similarity index 100% rename from src/components/item/test/media/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/media/app/app.component.ts diff --git a/src/components/item/test/media/app/app.module.ts b/packages/ionic-angular/src/components/item/test/media/app/app.module.ts similarity index 100% rename from src/components/item/test/media/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/media/app/app.module.ts diff --git a/src/components/item/test/media/app/main.ts b/packages/ionic-angular/src/components/item/test/media/app/main.ts similarity index 100% rename from src/components/item/test/media/app/main.ts rename to packages/ionic-angular/src/components/item/test/media/app/main.ts diff --git a/src/components/item/test/media/e2e.ts b/packages/ionic-angular/src/components/item/test/media/e2e.ts similarity index 100% rename from src/components/item/test/media/e2e.ts rename to packages/ionic-angular/src/components/item/test/media/e2e.ts diff --git a/src/components/item/test/media/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/media/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/media/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/media/pages/root-page/root-page.html diff --git a/src/components/item/test/media/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/media/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/media/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/media/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/media/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/media/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/media/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/media/pages/root-page/root-page.ts diff --git a/src/components/item/test/reorder/app/app.module.ts b/packages/ionic-angular/src/components/item/test/reorder/app/app.module.ts similarity index 100% rename from src/components/item/test/reorder/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/reorder/app/app.module.ts diff --git a/src/components/item/test/reorder/app/main.ts b/packages/ionic-angular/src/components/item/test/reorder/app/main.ts similarity index 100% rename from src/components/item/test/reorder/app/main.ts rename to packages/ionic-angular/src/components/item/test/reorder/app/main.ts diff --git a/src/components/item/test/reorder/e2e.ts b/packages/ionic-angular/src/components/item/test/reorder/e2e.ts similarity index 100% rename from src/components/item/test/reorder/e2e.ts rename to packages/ionic-angular/src/components/item/test/reorder/e2e.ts diff --git a/src/components/item/test/reorder/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/reorder/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/reorder/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/reorder/pages/root-page/root-page.html diff --git a/src/components/item/test/reorder/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/reorder/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/reorder/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/reorder/pages/root-page/root-page.ts diff --git a/src/components/item/test/sliding/app/app.component.ts b/packages/ionic-angular/src/components/item/test/sliding/app/app.component.ts similarity index 100% rename from src/components/item/test/sliding/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/sliding/app/app.component.ts diff --git a/src/components/item/test/sliding/app/app.module.ts b/packages/ionic-angular/src/components/item/test/sliding/app/app.module.ts similarity index 100% rename from src/components/item/test/sliding/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/sliding/app/app.module.ts diff --git a/src/components/item/test/sliding/app/main.ts b/packages/ionic-angular/src/components/item/test/sliding/app/main.ts similarity index 100% rename from src/components/item/test/sliding/app/main.ts rename to packages/ionic-angular/src/components/item/test/sliding/app/main.ts diff --git a/src/components/item/test/sliding/e2e.ts b/packages/ionic-angular/src/components/item/test/sliding/e2e.ts similarity index 100% rename from src/components/item/test/sliding/e2e.ts rename to packages/ionic-angular/src/components/item/test/sliding/e2e.ts diff --git a/src/components/item/test/sliding/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/sliding/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/sliding/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/sliding/pages/root-page/root-page.html diff --git a/src/components/item/test/sliding/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/sliding/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/sliding/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/sliding/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/sliding/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/sliding/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/sliding/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/sliding/pages/root-page/root-page.ts diff --git a/src/components/item/test/text/app/app.component.ts b/packages/ionic-angular/src/components/item/test/text/app/app.component.ts similarity index 100% rename from src/components/item/test/text/app/app.component.ts rename to packages/ionic-angular/src/components/item/test/text/app/app.component.ts diff --git a/src/components/item/test/text/app/app.module.ts b/packages/ionic-angular/src/components/item/test/text/app/app.module.ts similarity index 100% rename from src/components/item/test/text/app/app.module.ts rename to packages/ionic-angular/src/components/item/test/text/app/app.module.ts diff --git a/src/components/item/test/text/app/main.ts b/packages/ionic-angular/src/components/item/test/text/app/main.ts similarity index 100% rename from src/components/item/test/text/app/main.ts rename to packages/ionic-angular/src/components/item/test/text/app/main.ts diff --git a/src/components/item/test/text/e2e.ts b/packages/ionic-angular/src/components/item/test/text/e2e.ts similarity index 100% rename from src/components/item/test/text/e2e.ts rename to packages/ionic-angular/src/components/item/test/text/e2e.ts diff --git a/src/components/item/test/text/pages/root-page/root-page.html b/packages/ionic-angular/src/components/item/test/text/pages/root-page/root-page.html similarity index 100% rename from src/components/item/test/text/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/item/test/text/pages/root-page/root-page.html diff --git a/src/components/item/test/text/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/item/test/text/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/item/test/text/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/item/test/text/pages/root-page/root-page.module.ts diff --git a/src/components/item/test/text/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/item/test/text/pages/root-page/root-page.ts similarity index 100% rename from src/components/item/test/text/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/item/test/text/pages/root-page/root-page.ts diff --git a/src/components/label/label.ios.scss b/packages/ionic-angular/src/components/label/label.ios.scss similarity index 100% rename from src/components/label/label.ios.scss rename to packages/ionic-angular/src/components/label/label.ios.scss diff --git a/src/components/label/label.md.scss b/packages/ionic-angular/src/components/label/label.md.scss similarity index 100% rename from src/components/label/label.md.scss rename to packages/ionic-angular/src/components/label/label.md.scss diff --git a/src/components/label/label.scss b/packages/ionic-angular/src/components/label/label.scss similarity index 100% rename from src/components/label/label.scss rename to packages/ionic-angular/src/components/label/label.scss diff --git a/src/components/label/label.ts b/packages/ionic-angular/src/components/label/label.ts similarity index 100% rename from src/components/label/label.ts rename to packages/ionic-angular/src/components/label/label.ts diff --git a/src/components/label/label.wp.scss b/packages/ionic-angular/src/components/label/label.wp.scss similarity index 100% rename from src/components/label/label.wp.scss rename to packages/ionic-angular/src/components/label/label.wp.scss diff --git a/src/components/list/list-header.ts b/packages/ionic-angular/src/components/list/list-header.ts similarity index 100% rename from src/components/list/list-header.ts rename to packages/ionic-angular/src/components/list/list-header.ts diff --git a/src/components/list/list.ios.scss b/packages/ionic-angular/src/components/list/list.ios.scss similarity index 100% rename from src/components/list/list.ios.scss rename to packages/ionic-angular/src/components/list/list.ios.scss diff --git a/src/components/list/list.md.scss b/packages/ionic-angular/src/components/list/list.md.scss similarity index 100% rename from src/components/list/list.md.scss rename to packages/ionic-angular/src/components/list/list.md.scss diff --git a/src/components/list/list.scss b/packages/ionic-angular/src/components/list/list.scss similarity index 100% rename from src/components/list/list.scss rename to packages/ionic-angular/src/components/list/list.scss diff --git a/src/components/list/list.ts b/packages/ionic-angular/src/components/list/list.ts similarity index 100% rename from src/components/list/list.ts rename to packages/ionic-angular/src/components/list/list.ts diff --git a/src/components/list/list.wp.scss b/packages/ionic-angular/src/components/list/list.wp.scss similarity index 100% rename from src/components/list/list.wp.scss rename to packages/ionic-angular/src/components/list/list.wp.scss diff --git a/src/components/list/test/chat-list/app.module.ts b/packages/ionic-angular/src/components/list/test/chat-list/app.module.ts similarity index 100% rename from src/components/list/test/chat-list/app.module.ts rename to packages/ionic-angular/src/components/list/test/chat-list/app.module.ts diff --git a/src/components/list/test/chat-list/main.html b/packages/ionic-angular/src/components/list/test/chat-list/main.html similarity index 100% rename from src/components/list/test/chat-list/main.html rename to packages/ionic-angular/src/components/list/test/chat-list/main.html diff --git a/src/components/list/test/chat-list/main.ts b/packages/ionic-angular/src/components/list/test/chat-list/main.ts similarity index 100% rename from src/components/list/test/chat-list/main.ts rename to packages/ionic-angular/src/components/list/test/chat-list/main.ts diff --git a/src/components/list/test/header-scenarios/app/app.component.ts b/packages/ionic-angular/src/components/list/test/header-scenarios/app/app.component.ts similarity index 100% rename from src/components/list/test/header-scenarios/app/app.component.ts rename to packages/ionic-angular/src/components/list/test/header-scenarios/app/app.component.ts diff --git a/src/components/list/test/header-scenarios/app/app.module.ts b/packages/ionic-angular/src/components/list/test/header-scenarios/app/app.module.ts similarity index 100% rename from src/components/list/test/header-scenarios/app/app.module.ts rename to packages/ionic-angular/src/components/list/test/header-scenarios/app/app.module.ts diff --git a/src/components/list/test/header-scenarios/app/main.ts b/packages/ionic-angular/src/components/list/test/header-scenarios/app/main.ts similarity index 100% rename from src/components/list/test/header-scenarios/app/main.ts rename to packages/ionic-angular/src/components/list/test/header-scenarios/app/main.ts diff --git a/src/components/list/test/header-scenarios/e2e.ts b/packages/ionic-angular/src/components/list/test/header-scenarios/e2e.ts similarity index 100% rename from src/components/list/test/header-scenarios/e2e.ts rename to packages/ionic-angular/src/components/list/test/header-scenarios/e2e.ts diff --git a/src/components/list/test/header-scenarios/pages/main/main.html b/packages/ionic-angular/src/components/list/test/header-scenarios/pages/main/main.html similarity index 100% rename from src/components/list/test/header-scenarios/pages/main/main.html rename to packages/ionic-angular/src/components/list/test/header-scenarios/pages/main/main.html diff --git a/src/components/list/test/header-scenarios/pages/main/main.module.ts b/packages/ionic-angular/src/components/list/test/header-scenarios/pages/main/main.module.ts similarity index 100% rename from src/components/list/test/header-scenarios/pages/main/main.module.ts rename to packages/ionic-angular/src/components/list/test/header-scenarios/pages/main/main.module.ts diff --git a/src/components/list/test/header-scenarios/pages/main/main.ts b/packages/ionic-angular/src/components/list/test/header-scenarios/pages/main/main.ts similarity index 100% rename from src/components/list/test/header-scenarios/pages/main/main.ts rename to packages/ionic-angular/src/components/list/test/header-scenarios/pages/main/main.ts diff --git a/src/components/list/test/headers/app/app.component.ts b/packages/ionic-angular/src/components/list/test/headers/app/app.component.ts similarity index 100% rename from src/components/list/test/headers/app/app.component.ts rename to packages/ionic-angular/src/components/list/test/headers/app/app.component.ts diff --git a/src/components/list/test/headers/app/app.module.ts b/packages/ionic-angular/src/components/list/test/headers/app/app.module.ts similarity index 100% rename from src/components/list/test/headers/app/app.module.ts rename to packages/ionic-angular/src/components/list/test/headers/app/app.module.ts diff --git a/src/components/list/test/headers/app/main.ts b/packages/ionic-angular/src/components/list/test/headers/app/main.ts similarity index 100% rename from src/components/list/test/headers/app/main.ts rename to packages/ionic-angular/src/components/list/test/headers/app/main.ts diff --git a/src/components/list/test/headers/e2e.ts b/packages/ionic-angular/src/components/list/test/headers/e2e.ts similarity index 100% rename from src/components/list/test/headers/e2e.ts rename to packages/ionic-angular/src/components/list/test/headers/e2e.ts diff --git a/src/components/list/test/headers/pages/page-one/page-one.html b/packages/ionic-angular/src/components/list/test/headers/pages/page-one/page-one.html similarity index 100% rename from src/components/list/test/headers/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/list/test/headers/pages/page-one/page-one.html diff --git a/src/components/list/test/headers/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/list/test/headers/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/list/test/headers/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/list/test/headers/pages/page-one/page-one.module.ts diff --git a/src/components/list/test/headers/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/list/test/headers/pages/page-one/page-one.ts similarity index 100% rename from src/components/list/test/headers/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/list/test/headers/pages/page-one/page-one.ts diff --git a/src/components/list/test/inset/app/app.component.ts b/packages/ionic-angular/src/components/list/test/inset/app/app.component.ts similarity index 100% rename from src/components/list/test/inset/app/app.component.ts rename to packages/ionic-angular/src/components/list/test/inset/app/app.component.ts diff --git a/src/components/list/test/inset/app/app.module.ts b/packages/ionic-angular/src/components/list/test/inset/app/app.module.ts similarity index 100% rename from src/components/list/test/inset/app/app.module.ts rename to packages/ionic-angular/src/components/list/test/inset/app/app.module.ts diff --git a/src/components/list/test/inset/app/main.ts b/packages/ionic-angular/src/components/list/test/inset/app/main.ts similarity index 100% rename from src/components/list/test/inset/app/main.ts rename to packages/ionic-angular/src/components/list/test/inset/app/main.ts diff --git a/src/components/list/test/inset/e2e.ts b/packages/ionic-angular/src/components/list/test/inset/e2e.ts similarity index 100% rename from src/components/list/test/inset/e2e.ts rename to packages/ionic-angular/src/components/list/test/inset/e2e.ts diff --git a/src/components/list/test/inset/pages/page-one/page-one.html b/packages/ionic-angular/src/components/list/test/inset/pages/page-one/page-one.html similarity index 100% rename from src/components/list/test/inset/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/list/test/inset/pages/page-one/page-one.html diff --git a/src/components/list/test/inset/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/list/test/inset/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/list/test/inset/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/list/test/inset/pages/page-one/page-one.module.ts diff --git a/src/components/list/test/inset/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/list/test/inset/pages/page-one/page-one.ts similarity index 100% rename from src/components/list/test/inset/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/list/test/inset/pages/page-one/page-one.ts diff --git a/src/components/list/test/no-lines/app/app.component.ts b/packages/ionic-angular/src/components/list/test/no-lines/app/app.component.ts similarity index 100% rename from src/components/list/test/no-lines/app/app.component.ts rename to packages/ionic-angular/src/components/list/test/no-lines/app/app.component.ts diff --git a/src/components/list/test/no-lines/app/app.module.ts b/packages/ionic-angular/src/components/list/test/no-lines/app/app.module.ts similarity index 100% rename from src/components/list/test/no-lines/app/app.module.ts rename to packages/ionic-angular/src/components/list/test/no-lines/app/app.module.ts diff --git a/src/components/list/test/no-lines/app/main.ts b/packages/ionic-angular/src/components/list/test/no-lines/app/main.ts similarity index 100% rename from src/components/list/test/no-lines/app/main.ts rename to packages/ionic-angular/src/components/list/test/no-lines/app/main.ts diff --git a/src/components/list/test/no-lines/e2e.ts b/packages/ionic-angular/src/components/list/test/no-lines/e2e.ts similarity index 100% rename from src/components/list/test/no-lines/e2e.ts rename to packages/ionic-angular/src/components/list/test/no-lines/e2e.ts diff --git a/src/components/list/test/no-lines/pages/page-one/page-one.html b/packages/ionic-angular/src/components/list/test/no-lines/pages/page-one/page-one.html similarity index 100% rename from src/components/list/test/no-lines/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/list/test/no-lines/pages/page-one/page-one.html diff --git a/src/components/list/test/no-lines/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/list/test/no-lines/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/list/test/no-lines/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/list/test/no-lines/pages/page-one/page-one.module.ts diff --git a/src/components/list/test/no-lines/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/list/test/no-lines/pages/page-one/page-one.ts similarity index 100% rename from src/components/list/test/no-lines/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/list/test/no-lines/pages/page-one/page-one.ts diff --git a/src/components/list/test/repeat-headers/app.module.ts b/packages/ionic-angular/src/components/list/test/repeat-headers/app.module.ts similarity index 100% rename from src/components/list/test/repeat-headers/app.module.ts rename to packages/ionic-angular/src/components/list/test/repeat-headers/app.module.ts diff --git a/src/components/list/test/repeat-headers/main.html b/packages/ionic-angular/src/components/list/test/repeat-headers/main.html similarity index 100% rename from src/components/list/test/repeat-headers/main.html rename to packages/ionic-angular/src/components/list/test/repeat-headers/main.html diff --git a/src/components/list/test/repeat-headers/main.ts b/packages/ionic-angular/src/components/list/test/repeat-headers/main.ts similarity index 100% rename from src/components/list/test/repeat-headers/main.ts rename to packages/ionic-angular/src/components/list/test/repeat-headers/main.ts diff --git a/src/components/list/test/sticky/app.module.ts b/packages/ionic-angular/src/components/list/test/sticky/app.module.ts similarity index 100% rename from src/components/list/test/sticky/app.module.ts rename to packages/ionic-angular/src/components/list/test/sticky/app.module.ts diff --git a/src/components/list/test/sticky/main.html b/packages/ionic-angular/src/components/list/test/sticky/main.html similarity index 100% rename from src/components/list/test/sticky/main.html rename to packages/ionic-angular/src/components/list/test/sticky/main.html diff --git a/src/components/list/test/sticky/main.ts b/packages/ionic-angular/src/components/list/test/sticky/main.ts similarity index 100% rename from src/components/list/test/sticky/main.ts rename to packages/ionic-angular/src/components/list/test/sticky/main.ts diff --git a/src/components/loading/loading-component.ts b/packages/ionic-angular/src/components/loading/loading-component.ts similarity index 100% rename from src/components/loading/loading-component.ts rename to packages/ionic-angular/src/components/loading/loading-component.ts diff --git a/src/components/loading/loading-controller.ts b/packages/ionic-angular/src/components/loading/loading-controller.ts similarity index 100% rename from src/components/loading/loading-controller.ts rename to packages/ionic-angular/src/components/loading/loading-controller.ts diff --git a/src/components/loading/loading-options.ts b/packages/ionic-angular/src/components/loading/loading-options.ts similarity index 100% rename from src/components/loading/loading-options.ts rename to packages/ionic-angular/src/components/loading/loading-options.ts diff --git a/src/components/loading/loading-transitions.ts b/packages/ionic-angular/src/components/loading/loading-transitions.ts similarity index 100% rename from src/components/loading/loading-transitions.ts rename to packages/ionic-angular/src/components/loading/loading-transitions.ts diff --git a/src/components/loading/loading.ios.scss b/packages/ionic-angular/src/components/loading/loading.ios.scss similarity index 100% rename from src/components/loading/loading.ios.scss rename to packages/ionic-angular/src/components/loading/loading.ios.scss diff --git a/src/components/loading/loading.md.scss b/packages/ionic-angular/src/components/loading/loading.md.scss similarity index 100% rename from src/components/loading/loading.md.scss rename to packages/ionic-angular/src/components/loading/loading.md.scss diff --git a/src/components/loading/loading.scss b/packages/ionic-angular/src/components/loading/loading.scss similarity index 100% rename from src/components/loading/loading.scss rename to packages/ionic-angular/src/components/loading/loading.scss diff --git a/src/components/loading/loading.ts b/packages/ionic-angular/src/components/loading/loading.ts similarity index 100% rename from src/components/loading/loading.ts rename to packages/ionic-angular/src/components/loading/loading.ts diff --git a/src/components/loading/loading.wp.scss b/packages/ionic-angular/src/components/loading/loading.wp.scss similarity index 100% rename from src/components/loading/loading.wp.scss rename to packages/ionic-angular/src/components/loading/loading.wp.scss diff --git a/src/components/loading/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/loading/test/basic/app/app.component.ts similarity index 100% rename from src/components/loading/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/loading/test/basic/app/app.component.ts diff --git a/src/components/loading/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/loading/test/basic/app/app.module.ts similarity index 100% rename from src/components/loading/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/loading/test/basic/app/app.module.ts diff --git a/src/components/loading/test/basic/app/main.ts b/packages/ionic-angular/src/components/loading/test/basic/app/main.ts similarity index 100% rename from src/components/loading/test/basic/app/main.ts rename to packages/ionic-angular/src/components/loading/test/basic/app/main.ts diff --git a/src/components/loading/test/basic/e2e.ts b/packages/ionic-angular/src/components/loading/test/basic/e2e.ts similarity index 100% rename from src/components/loading/test/basic/e2e.ts rename to packages/ionic-angular/src/components/loading/test/basic/e2e.ts diff --git a/src/components/loading/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/loading/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/loading/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-one/page-one.html diff --git a/src/components/loading/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/loading/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/loading/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/loading/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/loading/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/loading/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-one/page-one.ts diff --git a/src/components/loading/test/basic/pages/page-three/page-three.html b/packages/ionic-angular/src/components/loading/test/basic/pages/page-three/page-three.html similarity index 100% rename from src/components/loading/test/basic/pages/page-three/page-three.html rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-three/page-three.html diff --git a/src/components/loading/test/basic/pages/page-three/page-three.module.ts b/packages/ionic-angular/src/components/loading/test/basic/pages/page-three/page-three.module.ts similarity index 100% rename from src/components/loading/test/basic/pages/page-three/page-three.module.ts rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-three/page-three.module.ts diff --git a/src/components/loading/test/basic/pages/page-three/page-three.ts b/packages/ionic-angular/src/components/loading/test/basic/pages/page-three/page-three.ts similarity index 100% rename from src/components/loading/test/basic/pages/page-three/page-three.ts rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-three/page-three.ts diff --git a/src/components/loading/test/basic/pages/page-two/page-two.html b/packages/ionic-angular/src/components/loading/test/basic/pages/page-two/page-two.html similarity index 100% rename from src/components/loading/test/basic/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-two/page-two.html diff --git a/src/components/loading/test/basic/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/loading/test/basic/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/loading/test/basic/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-two/page-two.module.ts diff --git a/src/components/loading/test/basic/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/loading/test/basic/pages/page-two/page-two.ts similarity index 100% rename from src/components/loading/test/basic/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/loading/test/basic/pages/page-two/page-two.ts diff --git a/src/components/loading/test/tabs/app/app.component.ts b/packages/ionic-angular/src/components/loading/test/tabs/app/app.component.ts similarity index 100% rename from src/components/loading/test/tabs/app/app.component.ts rename to packages/ionic-angular/src/components/loading/test/tabs/app/app.component.ts diff --git a/src/components/loading/test/tabs/app/app.module.ts b/packages/ionic-angular/src/components/loading/test/tabs/app/app.module.ts similarity index 100% rename from src/components/loading/test/tabs/app/app.module.ts rename to packages/ionic-angular/src/components/loading/test/tabs/app/app.module.ts diff --git a/src/components/loading/test/tabs/app/main.ts b/packages/ionic-angular/src/components/loading/test/tabs/app/main.ts similarity index 100% rename from src/components/loading/test/tabs/app/main.ts rename to packages/ionic-angular/src/components/loading/test/tabs/app/main.ts diff --git a/src/components/loading/test/tabs/e2e.ts b/packages/ionic-angular/src/components/loading/test/tabs/e2e.ts similarity index 100% rename from src/components/loading/test/tabs/e2e.ts rename to packages/ionic-angular/src/components/loading/test/tabs/e2e.ts diff --git a/src/components/loading/test/tabs/pages/page-one/page-one.html b/packages/ionic-angular/src/components/loading/test/tabs/pages/page-one/page-one.html similarity index 100% rename from src/components/loading/test/tabs/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/loading/test/tabs/pages/page-one/page-one.html diff --git a/src/components/loading/test/tabs/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/loading/test/tabs/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/loading/test/tabs/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/loading/test/tabs/pages/page-one/page-one.module.ts diff --git a/src/components/loading/test/tabs/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/loading/test/tabs/pages/page-one/page-one.ts similarity index 100% rename from src/components/loading/test/tabs/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/loading/test/tabs/pages/page-one/page-one.ts diff --git a/src/components/loading/test/tabs/pages/page-two/page-two.html b/packages/ionic-angular/src/components/loading/test/tabs/pages/page-two/page-two.html similarity index 100% rename from src/components/loading/test/tabs/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/loading/test/tabs/pages/page-two/page-two.html diff --git a/src/components/loading/test/tabs/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/loading/test/tabs/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/loading/test/tabs/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/loading/test/tabs/pages/page-two/page-two.module.ts diff --git a/src/components/loading/test/tabs/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/loading/test/tabs/pages/page-two/page-two.ts similarity index 100% rename from src/components/loading/test/tabs/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/loading/test/tabs/pages/page-two/page-two.ts diff --git a/src/components/loading/test/tabs/pages/tabs-page/tabs-page.html b/packages/ionic-angular/src/components/loading/test/tabs/pages/tabs-page/tabs-page.html similarity index 100% rename from src/components/loading/test/tabs/pages/tabs-page/tabs-page.html rename to packages/ionic-angular/src/components/loading/test/tabs/pages/tabs-page/tabs-page.html diff --git a/src/components/loading/test/tabs/pages/tabs-page/tabs-page.module.ts b/packages/ionic-angular/src/components/loading/test/tabs/pages/tabs-page/tabs-page.module.ts similarity index 100% rename from src/components/loading/test/tabs/pages/tabs-page/tabs-page.module.ts rename to packages/ionic-angular/src/components/loading/test/tabs/pages/tabs-page/tabs-page.module.ts diff --git a/src/components/loading/test/tabs/pages/tabs-page/tabs-page.ts b/packages/ionic-angular/src/components/loading/test/tabs/pages/tabs-page/tabs-page.ts similarity index 100% rename from src/components/loading/test/tabs/pages/tabs-page/tabs-page.ts rename to packages/ionic-angular/src/components/loading/test/tabs/pages/tabs-page/tabs-page.ts diff --git a/src/components/menu/menu-close.ts b/packages/ionic-angular/src/components/menu/menu-close.ts similarity index 100% rename from src/components/menu/menu-close.ts rename to packages/ionic-angular/src/components/menu/menu-close.ts diff --git a/src/components/menu/menu-gestures.ts b/packages/ionic-angular/src/components/menu/menu-gestures.ts similarity index 100% rename from src/components/menu/menu-gestures.ts rename to packages/ionic-angular/src/components/menu/menu-gestures.ts diff --git a/src/components/menu/menu-toggle.ts b/packages/ionic-angular/src/components/menu/menu-toggle.ts similarity index 100% rename from src/components/menu/menu-toggle.ts rename to packages/ionic-angular/src/components/menu/menu-toggle.ts diff --git a/src/components/menu/menu-types.ts b/packages/ionic-angular/src/components/menu/menu-types.ts similarity index 100% rename from src/components/menu/menu-types.ts rename to packages/ionic-angular/src/components/menu/menu-types.ts diff --git a/src/components/menu/menu.ios.scss b/packages/ionic-angular/src/components/menu/menu.ios.scss similarity index 100% rename from src/components/menu/menu.ios.scss rename to packages/ionic-angular/src/components/menu/menu.ios.scss diff --git a/src/components/menu/menu.md.scss b/packages/ionic-angular/src/components/menu/menu.md.scss similarity index 100% rename from src/components/menu/menu.md.scss rename to packages/ionic-angular/src/components/menu/menu.md.scss diff --git a/src/components/menu/menu.scss b/packages/ionic-angular/src/components/menu/menu.scss similarity index 100% rename from src/components/menu/menu.scss rename to packages/ionic-angular/src/components/menu/menu.scss diff --git a/src/components/menu/menu.ts b/packages/ionic-angular/src/components/menu/menu.ts similarity index 100% rename from src/components/menu/menu.ts rename to packages/ionic-angular/src/components/menu/menu.ts diff --git a/src/components/menu/menu.wp.scss b/packages/ionic-angular/src/components/menu/menu.wp.scss similarity index 100% rename from src/components/menu/menu.wp.scss rename to packages/ionic-angular/src/components/menu/menu.wp.scss diff --git a/src/components/menu/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/menu/test/basic/app/app.component.ts similarity index 100% rename from src/components/menu/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/menu/test/basic/app/app.component.ts diff --git a/src/components/menu/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/menu/test/basic/app/app.module.ts similarity index 100% rename from src/components/menu/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/menu/test/basic/app/app.module.ts diff --git a/src/components/menu/test/basic/app/main.ts b/packages/ionic-angular/src/components/menu/test/basic/app/main.ts similarity index 100% rename from src/components/menu/test/basic/app/main.ts rename to packages/ionic-angular/src/components/menu/test/basic/app/main.ts diff --git a/src/components/menu/test/basic/e2e.ts b/packages/ionic-angular/src/components/menu/test/basic/e2e.ts similarity index 100% rename from src/components/menu/test/basic/e2e.ts rename to packages/ionic-angular/src/components/menu/test/basic/e2e.ts diff --git a/src/components/menu/test/basic/pages/modal-page/modal-page.html b/packages/ionic-angular/src/components/menu/test/basic/pages/modal-page/modal-page.html similarity index 100% rename from src/components/menu/test/basic/pages/modal-page/modal-page.html rename to packages/ionic-angular/src/components/menu/test/basic/pages/modal-page/modal-page.html diff --git a/src/components/menu/test/basic/pages/modal-page/modal-page.module.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/modal-page/modal-page.module.ts similarity index 100% rename from src/components/menu/test/basic/pages/modal-page/modal-page.module.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/modal-page/modal-page.module.ts diff --git a/src/components/menu/test/basic/pages/modal-page/modal-page.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/modal-page/modal-page.ts similarity index 100% rename from src/components/menu/test/basic/pages/modal-page/modal-page.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/modal-page/modal-page.ts diff --git a/src/components/menu/test/basic/pages/page-four/page-four.html b/packages/ionic-angular/src/components/menu/test/basic/pages/page-four/page-four.html similarity index 100% rename from src/components/menu/test/basic/pages/page-four/page-four.html rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-four/page-four.html diff --git a/src/components/menu/test/basic/pages/page-four/page-four.module.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/page-four/page-four.module.ts similarity index 100% rename from src/components/menu/test/basic/pages/page-four/page-four.module.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-four/page-four.module.ts diff --git a/src/components/menu/test/basic/pages/page-four/page-four.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/page-four/page-four.ts similarity index 100% rename from src/components/menu/test/basic/pages/page-four/page-four.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-four/page-four.ts diff --git a/src/components/menu/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/menu/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/menu/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-one/page-one.html diff --git a/src/components/menu/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/menu/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/menu/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/menu/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-one/page-one.ts diff --git a/src/components/menu/test/basic/pages/page-three/page-three.html b/packages/ionic-angular/src/components/menu/test/basic/pages/page-three/page-three.html similarity index 100% rename from src/components/menu/test/basic/pages/page-three/page-three.html rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-three/page-three.html diff --git a/src/components/menu/test/basic/pages/page-three/page-three.module.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/page-three/page-three.module.ts similarity index 100% rename from src/components/menu/test/basic/pages/page-three/page-three.module.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-three/page-three.module.ts diff --git a/src/components/menu/test/basic/pages/page-three/page-three.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/page-three/page-three.ts similarity index 100% rename from src/components/menu/test/basic/pages/page-three/page-three.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-three/page-three.ts diff --git a/src/components/menu/test/basic/pages/page-two/page-two.html b/packages/ionic-angular/src/components/menu/test/basic/pages/page-two/page-two.html similarity index 100% rename from src/components/menu/test/basic/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-two/page-two.html diff --git a/src/components/menu/test/basic/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/menu/test/basic/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-two/page-two.module.ts diff --git a/src/components/menu/test/basic/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/menu/test/basic/pages/page-two/page-two.ts similarity index 100% rename from src/components/menu/test/basic/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/menu/test/basic/pages/page-two/page-two.ts diff --git a/src/components/menu/test/disable-swipe/app.module.ts b/packages/ionic-angular/src/components/menu/test/disable-swipe/app.module.ts similarity index 100% rename from src/components/menu/test/disable-swipe/app.module.ts rename to packages/ionic-angular/src/components/menu/test/disable-swipe/app.module.ts diff --git a/src/components/menu/test/disable-swipe/main.html b/packages/ionic-angular/src/components/menu/test/disable-swipe/main.html similarity index 100% rename from src/components/menu/test/disable-swipe/main.html rename to packages/ionic-angular/src/components/menu/test/disable-swipe/main.html diff --git a/src/components/menu/test/disable-swipe/main.ts b/packages/ionic-angular/src/components/menu/test/disable-swipe/main.ts similarity index 100% rename from src/components/menu/test/disable-swipe/main.ts rename to packages/ionic-angular/src/components/menu/test/disable-swipe/main.ts diff --git a/src/components/menu/test/disable-swipe/page1.html b/packages/ionic-angular/src/components/menu/test/disable-swipe/page1.html similarity index 100% rename from src/components/menu/test/disable-swipe/page1.html rename to packages/ionic-angular/src/components/menu/test/disable-swipe/page1.html diff --git a/src/components/menu/test/enable-disable/app.module.ts b/packages/ionic-angular/src/components/menu/test/enable-disable/app.module.ts similarity index 100% rename from src/components/menu/test/enable-disable/app.module.ts rename to packages/ionic-angular/src/components/menu/test/enable-disable/app.module.ts diff --git a/src/components/menu/test/enable-disable/main.html b/packages/ionic-angular/src/components/menu/test/enable-disable/main.html similarity index 100% rename from src/components/menu/test/enable-disable/main.html rename to packages/ionic-angular/src/components/menu/test/enable-disable/main.html diff --git a/src/components/menu/test/enable-disable/main.ts b/packages/ionic-angular/src/components/menu/test/enable-disable/main.ts similarity index 100% rename from src/components/menu/test/enable-disable/main.ts rename to packages/ionic-angular/src/components/menu/test/enable-disable/main.ts diff --git a/src/components/menu/test/enable-disable/page1.html b/packages/ionic-angular/src/components/menu/test/enable-disable/page1.html similarity index 100% rename from src/components/menu/test/enable-disable/page1.html rename to packages/ionic-angular/src/components/menu/test/enable-disable/page1.html diff --git a/src/components/menu/test/enable-disable/page2.html b/packages/ionic-angular/src/components/menu/test/enable-disable/page2.html similarity index 100% rename from src/components/menu/test/enable-disable/page2.html rename to packages/ionic-angular/src/components/menu/test/enable-disable/page2.html diff --git a/src/components/menu/test/menu.spec.ts b/packages/ionic-angular/src/components/menu/test/menu.spec.ts similarity index 100% rename from src/components/menu/test/menu.spec.ts rename to packages/ionic-angular/src/components/menu/test/menu.spec.ts diff --git a/src/components/menu/test/multiple/app/app.component.ts b/packages/ionic-angular/src/components/menu/test/multiple/app/app.component.ts similarity index 100% rename from src/components/menu/test/multiple/app/app.component.ts rename to packages/ionic-angular/src/components/menu/test/multiple/app/app.component.ts diff --git a/src/components/menu/test/multiple/app/app.module.ts b/packages/ionic-angular/src/components/menu/test/multiple/app/app.module.ts similarity index 100% rename from src/components/menu/test/multiple/app/app.module.ts rename to packages/ionic-angular/src/components/menu/test/multiple/app/app.module.ts diff --git a/src/components/menu/test/multiple/app/app.template.html b/packages/ionic-angular/src/components/menu/test/multiple/app/app.template.html similarity index 100% rename from src/components/menu/test/multiple/app/app.template.html rename to packages/ionic-angular/src/components/menu/test/multiple/app/app.template.html diff --git a/src/components/menu/test/multiple/app/main.ts b/packages/ionic-angular/src/components/menu/test/multiple/app/main.ts similarity index 100% rename from src/components/menu/test/multiple/app/main.ts rename to packages/ionic-angular/src/components/menu/test/multiple/app/main.ts diff --git a/src/components/menu/test/multiple/pages/page-one/page-one.html b/packages/ionic-angular/src/components/menu/test/multiple/pages/page-one/page-one.html similarity index 100% rename from src/components/menu/test/multiple/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/menu/test/multiple/pages/page-one/page-one.html diff --git a/src/components/menu/test/multiple/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/menu/test/multiple/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/menu/test/multiple/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/menu/test/multiple/pages/page-one/page-one.module.ts diff --git a/src/components/menu/test/multiple/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/menu/test/multiple/pages/page-one/page-one.ts similarity index 100% rename from src/components/menu/test/multiple/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/menu/test/multiple/pages/page-one/page-one.ts diff --git a/src/components/menu/test/overlay/app.module.ts b/packages/ionic-angular/src/components/menu/test/overlay/app.module.ts similarity index 100% rename from src/components/menu/test/overlay/app.module.ts rename to packages/ionic-angular/src/components/menu/test/overlay/app.module.ts diff --git a/src/components/menu/test/overlay/main.html b/packages/ionic-angular/src/components/menu/test/overlay/main.html similarity index 100% rename from src/components/menu/test/overlay/main.html rename to packages/ionic-angular/src/components/menu/test/overlay/main.html diff --git a/src/components/menu/test/overlay/main.ts b/packages/ionic-angular/src/components/menu/test/overlay/main.ts similarity index 100% rename from src/components/menu/test/overlay/main.ts rename to packages/ionic-angular/src/components/menu/test/overlay/main.ts diff --git a/src/components/menu/test/overlay/page1.html b/packages/ionic-angular/src/components/menu/test/overlay/page1.html similarity index 100% rename from src/components/menu/test/overlay/page1.html rename to packages/ionic-angular/src/components/menu/test/overlay/page1.html diff --git a/src/components/menu/test/push/app.module.ts b/packages/ionic-angular/src/components/menu/test/push/app.module.ts similarity index 100% rename from src/components/menu/test/push/app.module.ts rename to packages/ionic-angular/src/components/menu/test/push/app.module.ts diff --git a/src/components/menu/test/push/main.html b/packages/ionic-angular/src/components/menu/test/push/main.html similarity index 100% rename from src/components/menu/test/push/main.html rename to packages/ionic-angular/src/components/menu/test/push/main.html diff --git a/src/components/menu/test/push/main.ts b/packages/ionic-angular/src/components/menu/test/push/main.ts similarity index 100% rename from src/components/menu/test/push/main.ts rename to packages/ionic-angular/src/components/menu/test/push/main.ts diff --git a/src/components/menu/test/push/page1.html b/packages/ionic-angular/src/components/menu/test/push/page1.html similarity index 100% rename from src/components/menu/test/push/page1.html rename to packages/ionic-angular/src/components/menu/test/push/page1.html diff --git a/src/components/menu/test/reveal/app.module.ts b/packages/ionic-angular/src/components/menu/test/reveal/app.module.ts similarity index 100% rename from src/components/menu/test/reveal/app.module.ts rename to packages/ionic-angular/src/components/menu/test/reveal/app.module.ts diff --git a/src/components/menu/test/reveal/main.html b/packages/ionic-angular/src/components/menu/test/reveal/main.html similarity index 100% rename from src/components/menu/test/reveal/main.html rename to packages/ionic-angular/src/components/menu/test/reveal/main.html diff --git a/src/components/menu/test/reveal/main.ts b/packages/ionic-angular/src/components/menu/test/reveal/main.ts similarity index 100% rename from src/components/menu/test/reveal/main.ts rename to packages/ionic-angular/src/components/menu/test/reveal/main.ts diff --git a/src/components/menu/test/reveal/page1.html b/packages/ionic-angular/src/components/menu/test/reveal/page1.html similarity index 100% rename from src/components/menu/test/reveal/page1.html rename to packages/ionic-angular/src/components/menu/test/reveal/page1.html diff --git a/src/components/modal/modal-component.ts b/packages/ionic-angular/src/components/modal/modal-component.ts similarity index 100% rename from src/components/modal/modal-component.ts rename to packages/ionic-angular/src/components/modal/modal-component.ts diff --git a/src/components/modal/modal-controller.ts b/packages/ionic-angular/src/components/modal/modal-controller.ts similarity index 100% rename from src/components/modal/modal-controller.ts rename to packages/ionic-angular/src/components/modal/modal-controller.ts diff --git a/src/components/modal/modal-impl.ts b/packages/ionic-angular/src/components/modal/modal-impl.ts similarity index 100% rename from src/components/modal/modal-impl.ts rename to packages/ionic-angular/src/components/modal/modal-impl.ts diff --git a/src/components/modal/modal-options.ts b/packages/ionic-angular/src/components/modal/modal-options.ts similarity index 100% rename from src/components/modal/modal-options.ts rename to packages/ionic-angular/src/components/modal/modal-options.ts diff --git a/src/components/modal/modal-transitions.ts b/packages/ionic-angular/src/components/modal/modal-transitions.ts similarity index 100% rename from src/components/modal/modal-transitions.ts rename to packages/ionic-angular/src/components/modal/modal-transitions.ts diff --git a/src/components/modal/modal.ios.scss b/packages/ionic-angular/src/components/modal/modal.ios.scss similarity index 100% rename from src/components/modal/modal.ios.scss rename to packages/ionic-angular/src/components/modal/modal.ios.scss diff --git a/src/components/modal/modal.md.scss b/packages/ionic-angular/src/components/modal/modal.md.scss similarity index 100% rename from src/components/modal/modal.md.scss rename to packages/ionic-angular/src/components/modal/modal.md.scss diff --git a/src/components/modal/modal.scss b/packages/ionic-angular/src/components/modal/modal.scss similarity index 100% rename from src/components/modal/modal.scss rename to packages/ionic-angular/src/components/modal/modal.scss diff --git a/src/components/modal/modal.ts b/packages/ionic-angular/src/components/modal/modal.ts similarity index 100% rename from src/components/modal/modal.ts rename to packages/ionic-angular/src/components/modal/modal.ts diff --git a/src/components/modal/modal.wp.scss b/packages/ionic-angular/src/components/modal/modal.wp.scss similarity index 100% rename from src/components/modal/modal.wp.scss rename to packages/ionic-angular/src/components/modal/modal.wp.scss diff --git a/src/components/modal/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/modal/test/basic/app/app.component.ts similarity index 100% rename from src/components/modal/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/modal/test/basic/app/app.component.ts diff --git a/src/components/modal/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/modal/test/basic/app/app.module.ts similarity index 100% rename from src/components/modal/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/modal/test/basic/app/app.module.ts diff --git a/src/components/modal/test/basic/app/main.ts b/packages/ionic-angular/src/components/modal/test/basic/app/main.ts similarity index 100% rename from src/components/modal/test/basic/app/main.ts rename to packages/ionic-angular/src/components/modal/test/basic/app/main.ts diff --git a/src/components/modal/test/basic/e2e.ts b/packages/ionic-angular/src/components/modal/test/basic/e2e.ts similarity index 100% rename from src/components/modal/test/basic/e2e.ts rename to packages/ionic-angular/src/components/modal/test/basic/e2e.ts diff --git a/src/components/modal/test/basic/pages/contact-us/contact-us.html b/packages/ionic-angular/src/components/modal/test/basic/pages/contact-us/contact-us.html similarity index 100% rename from src/components/modal/test/basic/pages/contact-us/contact-us.html rename to packages/ionic-angular/src/components/modal/test/basic/pages/contact-us/contact-us.html diff --git a/src/components/modal/test/basic/pages/contact-us/contact-us.module.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/contact-us/contact-us.module.ts similarity index 100% rename from src/components/modal/test/basic/pages/contact-us/contact-us.module.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/contact-us/contact-us.module.ts diff --git a/src/components/modal/test/basic/pages/contact-us/contact-us.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/contact-us/contact-us.ts similarity index 100% rename from src/components/modal/test/basic/pages/contact-us/contact-us.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/contact-us/contact-us.ts diff --git a/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.html b/packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.html similarity index 100% rename from src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.html rename to packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.html diff --git a/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.module.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.module.ts similarity index 100% rename from src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.module.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.module.ts diff --git a/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.scss b/packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.scss similarity index 100% rename from src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.scss rename to packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.scss diff --git a/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.ts similarity index 100% rename from src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/modal-pass-data.ts diff --git a/src/components/modal/test/basic/pages/modal-pass-data/provider.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/provider.ts similarity index 100% rename from src/components/modal/test/basic/pages/modal-pass-data/provider.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/modal-pass-data/provider.ts diff --git a/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.html b/packages/ionic-angular/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.html similarity index 100% rename from src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.html rename to packages/ionic-angular/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.html diff --git a/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.module.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.module.ts similarity index 100% rename from src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.module.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.module.ts diff --git a/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.ts similarity index 100% rename from src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/modal-with-inputs/modal-with-inputs.ts diff --git a/src/components/modal/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/modal/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/modal/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-one/page-one.html diff --git a/src/components/modal/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/modal/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/modal/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/modal/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-one/page-one.ts diff --git a/src/components/modal/test/basic/pages/page-three/page-three.html b/packages/ionic-angular/src/components/modal/test/basic/pages/page-three/page-three.html similarity index 100% rename from src/components/modal/test/basic/pages/page-three/page-three.html rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-three/page-three.html diff --git a/src/components/modal/test/basic/pages/page-three/page-three.module.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/page-three/page-three.module.ts similarity index 100% rename from src/components/modal/test/basic/pages/page-three/page-three.module.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-three/page-three.module.ts diff --git a/src/components/modal/test/basic/pages/page-three/page-three.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/page-three/page-three.ts similarity index 100% rename from src/components/modal/test/basic/pages/page-three/page-three.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-three/page-three.ts diff --git a/src/components/modal/test/basic/pages/page-two/page-two.html b/packages/ionic-angular/src/components/modal/test/basic/pages/page-two/page-two.html similarity index 100% rename from src/components/modal/test/basic/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-two/page-two.html diff --git a/src/components/modal/test/basic/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/modal/test/basic/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-two/page-two.module.ts diff --git a/src/components/modal/test/basic/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/page-two/page-two.ts similarity index 100% rename from src/components/modal/test/basic/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/page-two/page-two.ts diff --git a/src/components/modal/test/basic/pages/toolbar/toolbar.html b/packages/ionic-angular/src/components/modal/test/basic/pages/toolbar/toolbar.html similarity index 100% rename from src/components/modal/test/basic/pages/toolbar/toolbar.html rename to packages/ionic-angular/src/components/modal/test/basic/pages/toolbar/toolbar.html diff --git a/src/components/modal/test/basic/pages/toolbar/toolbar.module.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/toolbar/toolbar.module.ts similarity index 100% rename from src/components/modal/test/basic/pages/toolbar/toolbar.module.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/toolbar/toolbar.module.ts diff --git a/src/components/modal/test/basic/pages/toolbar/toolbar.ts b/packages/ionic-angular/src/components/modal/test/basic/pages/toolbar/toolbar.ts similarity index 100% rename from src/components/modal/test/basic/pages/toolbar/toolbar.ts rename to packages/ionic-angular/src/components/modal/test/basic/pages/toolbar/toolbar.ts diff --git a/src/components/modal/test/basic/services/some-app-provider.ts b/packages/ionic-angular/src/components/modal/test/basic/services/some-app-provider.ts similarity index 100% rename from src/components/modal/test/basic/services/some-app-provider.ts rename to packages/ionic-angular/src/components/modal/test/basic/services/some-app-provider.ts diff --git a/src/components/modal/test/modal.spec.ts b/packages/ionic-angular/src/components/modal/test/modal.spec.ts similarity index 100% rename from src/components/modal/test/modal.spec.ts rename to packages/ionic-angular/src/components/modal/test/modal.spec.ts diff --git a/src/components/nav/nav-pop-anchor.ts b/packages/ionic-angular/src/components/nav/nav-pop-anchor.ts similarity index 100% rename from src/components/nav/nav-pop-anchor.ts rename to packages/ionic-angular/src/components/nav/nav-pop-anchor.ts diff --git a/src/components/nav/nav-pop.ts b/packages/ionic-angular/src/components/nav/nav-pop.ts similarity index 100% rename from src/components/nav/nav-pop.ts rename to packages/ionic-angular/src/components/nav/nav-pop.ts diff --git a/src/components/nav/nav-push-anchor.ts b/packages/ionic-angular/src/components/nav/nav-push-anchor.ts similarity index 100% rename from src/components/nav/nav-push-anchor.ts rename to packages/ionic-angular/src/components/nav/nav-push-anchor.ts diff --git a/src/components/nav/nav-push.ts b/packages/ionic-angular/src/components/nav/nav-push.ts similarity index 100% rename from src/components/nav/nav-push.ts rename to packages/ionic-angular/src/components/nav/nav-push.ts diff --git a/src/components/nav/nav.ts b/packages/ionic-angular/src/components/nav/nav.ts similarity index 100% rename from src/components/nav/nav.ts rename to packages/ionic-angular/src/components/nav/nav.ts diff --git a/src/components/nav/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/nav/test/basic/app/app.component.ts similarity index 100% rename from src/components/nav/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/nav/test/basic/app/app.component.ts diff --git a/src/components/nav/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/nav/test/basic/app/app.module.ts similarity index 100% rename from src/components/nav/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/app/app.module.ts diff --git a/src/components/nav/test/basic/app/main.ts b/packages/ionic-angular/src/components/nav/test/basic/app/main.ts similarity index 100% rename from src/components/nav/test/basic/app/main.ts rename to packages/ionic-angular/src/components/nav/test/basic/app/main.ts diff --git a/src/components/nav/test/basic/e2e.ts b/packages/ionic-angular/src/components/nav/test/basic/e2e.ts similarity index 100% rename from src/components/nav/test/basic/e2e.ts rename to packages/ionic-angular/src/components/nav/test/basic/e2e.ts diff --git a/src/components/nav/test/basic/pages/another-page/another-page.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/another-page/another-page.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/another-page/another-page.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/another-page/another-page.module.ts diff --git a/src/components/nav/test/basic/pages/another-page/another-page.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/another-page/another-page.ts similarity index 100% rename from src/components/nav/test/basic/pages/another-page/another-page.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/another-page/another-page.ts diff --git a/src/components/nav/test/basic/pages/first-page/first-page.html b/packages/ionic-angular/src/components/nav/test/basic/pages/first-page/first-page.html similarity index 100% rename from src/components/nav/test/basic/pages/first-page/first-page.html rename to packages/ionic-angular/src/components/nav/test/basic/pages/first-page/first-page.html diff --git a/src/components/nav/test/basic/pages/first-page/first-page.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/first-page/first-page.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/first-page/first-page.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/first-page/first-page.module.ts diff --git a/src/components/nav/test/basic/pages/first-page/first-page.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/first-page/first-page.ts similarity index 100% rename from src/components/nav/test/basic/pages/first-page/first-page.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/first-page/first-page.ts diff --git a/src/components/nav/test/basic/pages/first-page/my-component-two.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/first-page/my-component-two.ts similarity index 100% rename from src/components/nav/test/basic/pages/first-page/my-component-two.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/first-page/my-component-two.ts diff --git a/src/components/nav/test/basic/pages/first-page/my-component.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/first-page/my-component.ts similarity index 100% rename from src/components/nav/test/basic/pages/first-page/my-component.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/first-page/my-component.ts diff --git a/src/components/nav/test/basic/pages/full-page/full-page.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/full-page/full-page.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/full-page/full-page.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/full-page/full-page.module.ts diff --git a/src/components/nav/test/basic/pages/full-page/full-page.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/full-page/full-page.ts similarity index 100% rename from src/components/nav/test/basic/pages/full-page/full-page.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/full-page/full-page.ts diff --git a/src/components/nav/test/basic/pages/primary-header-page/primary-header-page.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/primary-header-page/primary-header-page.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/primary-header-page/primary-header-page.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/primary-header-page/primary-header-page.module.ts diff --git a/src/components/nav/test/basic/pages/primary-header-page/primary-header-page.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/primary-header-page/primary-header-page.ts similarity index 100% rename from src/components/nav/test/basic/pages/primary-header-page/primary-header-page.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/primary-header-page/primary-header-page.ts diff --git a/src/components/nav/test/basic/pages/redirect-page/redirect-page.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/redirect-page/redirect-page.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/redirect-page/redirect-page.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/redirect-page/redirect-page.module.ts diff --git a/src/components/nav/test/basic/pages/redirect-page/redirect-page.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/redirect-page/redirect-page.ts similarity index 100% rename from src/components/nav/test/basic/pages/redirect-page/redirect-page.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/redirect-page/redirect-page.ts diff --git a/src/components/nav/test/basic/pages/tab-item-page/tab-item-page.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tab-item-page/tab-item-page.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/tab-item-page/tab-item-page.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tab-item-page/tab-item-page.module.ts diff --git a/src/components/nav/test/basic/pages/tab-item-page/tab-item-page.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tab-item-page/tab-item-page.ts similarity index 100% rename from src/components/nav/test/basic/pages/tab-item-page/tab-item-page.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tab-item-page/tab-item-page.ts diff --git a/src/components/nav/test/basic/pages/tab-one/tab-one.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tab-one/tab-one.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/tab-one/tab-one.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tab-one/tab-one.module.ts diff --git a/src/components/nav/test/basic/pages/tab-one/tab-one.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tab-one/tab-one.ts similarity index 100% rename from src/components/nav/test/basic/pages/tab-one/tab-one.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tab-one/tab-one.ts diff --git a/src/components/nav/test/basic/pages/tab-three/tab-three.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tab-three/tab-three.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/tab-three/tab-three.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tab-three/tab-three.module.ts diff --git a/src/components/nav/test/basic/pages/tab-three/tab-three.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tab-three/tab-three.ts similarity index 100% rename from src/components/nav/test/basic/pages/tab-three/tab-three.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tab-three/tab-three.ts diff --git a/src/components/nav/test/basic/pages/tab-two/tab-two.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tab-two/tab-two.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/tab-two/tab-two.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tab-two/tab-two.module.ts diff --git a/src/components/nav/test/basic/pages/tab-two/tab-two.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tab-two/tab-two.ts similarity index 100% rename from src/components/nav/test/basic/pages/tab-two/tab-two.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tab-two/tab-two.ts diff --git a/src/components/nav/test/basic/pages/tabs/tabs.module.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tabs/tabs.module.ts similarity index 100% rename from src/components/nav/test/basic/pages/tabs/tabs.module.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tabs/tabs.module.ts diff --git a/src/components/nav/test/basic/pages/tabs/tabs.ts b/packages/ionic-angular/src/components/nav/test/basic/pages/tabs/tabs.ts similarity index 100% rename from src/components/nav/test/basic/pages/tabs/tabs.ts rename to packages/ionic-angular/src/components/nav/test/basic/pages/tabs/tabs.ts diff --git a/src/components/nav/test/child-navs/app/app.component.ts b/packages/ionic-angular/src/components/nav/test/child-navs/app/app.component.ts similarity index 100% rename from src/components/nav/test/child-navs/app/app.component.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/app/app.component.ts diff --git a/src/components/nav/test/child-navs/app/app.module.ts b/packages/ionic-angular/src/components/nav/test/child-navs/app/app.module.ts similarity index 100% rename from src/components/nav/test/child-navs/app/app.module.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/app/app.module.ts diff --git a/src/components/nav/test/child-navs/app/main.ts b/packages/ionic-angular/src/components/nav/test/child-navs/app/main.ts similarity index 100% rename from src/components/nav/test/child-navs/app/main.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/app/main.ts diff --git a/src/components/nav/test/child-navs/e2e.ts b/packages/ionic-angular/src/components/nav/test/child-navs/e2e.ts similarity index 100% rename from src/components/nav/test/child-navs/e2e.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/e2e.ts diff --git a/src/components/nav/test/child-navs/pages/first-page/first-page.module.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/first-page/first-page.module.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/first-page/first-page.module.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/first-page/first-page.module.ts diff --git a/src/components/nav/test/child-navs/pages/first-page/first-page.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/first-page/first-page.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/first-page/first-page.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/first-page/first-page.ts diff --git a/src/components/nav/test/child-navs/pages/fourth-page/fourth-page.module.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/fourth-page/fourth-page.module.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/fourth-page/fourth-page.module.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/fourth-page/fourth-page.module.ts diff --git a/src/components/nav/test/child-navs/pages/fourth-page/fourth-page.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/fourth-page/fourth-page.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/fourth-page/fourth-page.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/fourth-page/fourth-page.ts diff --git a/src/components/nav/test/child-navs/pages/landing-page/landing-page.module.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/landing-page/landing-page.module.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/landing-page/landing-page.module.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/landing-page/landing-page.module.ts diff --git a/src/components/nav/test/child-navs/pages/landing-page/landing-page.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/landing-page/landing-page.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/landing-page/landing-page.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/landing-page/landing-page.ts diff --git a/src/components/nav/test/child-navs/pages/second-page/second-page.module.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/second-page/second-page.module.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/second-page/second-page.module.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/second-page/second-page.module.ts diff --git a/src/components/nav/test/child-navs/pages/second-page/second-page.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/second-page/second-page.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/second-page/second-page.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/second-page/second-page.ts diff --git a/src/components/nav/test/child-navs/pages/third-page/third-page.module.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/third-page/third-page.module.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/third-page/third-page.module.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/third-page/third-page.module.ts diff --git a/src/components/nav/test/child-navs/pages/third-page/third-page.ts b/packages/ionic-angular/src/components/nav/test/child-navs/pages/third-page/third-page.ts similarity index 100% rename from src/components/nav/test/child-navs/pages/third-page/third-page.ts rename to packages/ionic-angular/src/components/nav/test/child-navs/pages/third-page/third-page.ts diff --git a/src/components/nav/test/init-async/app.module.ts b/packages/ionic-angular/src/components/nav/test/init-async/app.module.ts similarity index 100% rename from src/components/nav/test/init-async/app.module.ts rename to packages/ionic-angular/src/components/nav/test/init-async/app.module.ts diff --git a/src/components/nav/test/init-async/main.ts b/packages/ionic-angular/src/components/nav/test/init-async/main.ts similarity index 100% rename from src/components/nav/test/init-async/main.ts rename to packages/ionic-angular/src/components/nav/test/init-async/main.ts diff --git a/src/components/nav/test/insert-views/app.module.ts b/packages/ionic-angular/src/components/nav/test/insert-views/app.module.ts similarity index 100% rename from src/components/nav/test/insert-views/app.module.ts rename to packages/ionic-angular/src/components/nav/test/insert-views/app.module.ts diff --git a/src/components/nav/test/insert-views/main.ts b/packages/ionic-angular/src/components/nav/test/insert-views/main.ts similarity index 100% rename from src/components/nav/test/insert-views/main.ts rename to packages/ionic-angular/src/components/nav/test/insert-views/main.ts diff --git a/src/components/nav/test/memory/app.module.ts b/packages/ionic-angular/src/components/nav/test/memory/app.module.ts similarity index 100% rename from src/components/nav/test/memory/app.module.ts rename to packages/ionic-angular/src/components/nav/test/memory/app.module.ts diff --git a/src/components/nav/test/memory/main.ts b/packages/ionic-angular/src/components/nav/test/memory/main.ts similarity index 100% rename from src/components/nav/test/memory/main.ts rename to packages/ionic-angular/src/components/nav/test/memory/main.ts diff --git a/src/components/nav/test/nav-push-pop/app.module.ts b/packages/ionic-angular/src/components/nav/test/nav-push-pop/app.module.ts similarity index 100% rename from src/components/nav/test/nav-push-pop/app.module.ts rename to packages/ionic-angular/src/components/nav/test/nav-push-pop/app.module.ts diff --git a/src/components/nav/test/nav-push-pop/main.html b/packages/ionic-angular/src/components/nav/test/nav-push-pop/main.html similarity index 100% rename from src/components/nav/test/nav-push-pop/main.html rename to packages/ionic-angular/src/components/nav/test/nav-push-pop/main.html diff --git a/src/components/nav/test/nav-push-pop/main.ts b/packages/ionic-angular/src/components/nav/test/nav-push-pop/main.ts similarity index 100% rename from src/components/nav/test/nav-push-pop/main.ts rename to packages/ionic-angular/src/components/nav/test/nav-push-pop/main.ts diff --git a/src/components/nav/test/nav.spec.ts b/packages/ionic-angular/src/components/nav/test/nav.spec.ts similarity index 100% rename from src/components/nav/test/nav.spec.ts rename to packages/ionic-angular/src/components/nav/test/nav.spec.ts diff --git a/src/components/nav/test/worst-case/app.module.ts b/packages/ionic-angular/src/components/nav/test/worst-case/app.module.ts similarity index 100% rename from src/components/nav/test/worst-case/app.module.ts rename to packages/ionic-angular/src/components/nav/test/worst-case/app.module.ts diff --git a/src/components/nav/test/worst-case/main.ts b/packages/ionic-angular/src/components/nav/test/worst-case/main.ts similarity index 100% rename from src/components/nav/test/worst-case/main.ts rename to packages/ionic-angular/src/components/nav/test/worst-case/main.ts diff --git a/src/components/note/note.ios.scss b/packages/ionic-angular/src/components/note/note.ios.scss similarity index 100% rename from src/components/note/note.ios.scss rename to packages/ionic-angular/src/components/note/note.ios.scss diff --git a/src/components/note/note.md.scss b/packages/ionic-angular/src/components/note/note.md.scss similarity index 100% rename from src/components/note/note.md.scss rename to packages/ionic-angular/src/components/note/note.md.scss diff --git a/src/components/note/note.ts b/packages/ionic-angular/src/components/note/note.ts similarity index 100% rename from src/components/note/note.ts rename to packages/ionic-angular/src/components/note/note.ts diff --git a/src/components/note/note.wp.scss b/packages/ionic-angular/src/components/note/note.wp.scss similarity index 100% rename from src/components/note/note.wp.scss rename to packages/ionic-angular/src/components/note/note.wp.scss diff --git a/src/components/option/option.ts b/packages/ionic-angular/src/components/option/option.ts similarity index 100% rename from src/components/option/option.ts rename to packages/ionic-angular/src/components/option/option.ts diff --git a/src/components/picker/picker-column.ts b/packages/ionic-angular/src/components/picker/picker-column.ts similarity index 100% rename from src/components/picker/picker-column.ts rename to packages/ionic-angular/src/components/picker/picker-column.ts diff --git a/src/components/picker/picker-component.ts b/packages/ionic-angular/src/components/picker/picker-component.ts similarity index 100% rename from src/components/picker/picker-component.ts rename to packages/ionic-angular/src/components/picker/picker-component.ts diff --git a/src/components/picker/picker-controller.ts b/packages/ionic-angular/src/components/picker/picker-controller.ts similarity index 100% rename from src/components/picker/picker-controller.ts rename to packages/ionic-angular/src/components/picker/picker-controller.ts diff --git a/src/components/picker/picker-options.ts b/packages/ionic-angular/src/components/picker/picker-options.ts similarity index 100% rename from src/components/picker/picker-options.ts rename to packages/ionic-angular/src/components/picker/picker-options.ts diff --git a/src/components/picker/picker-transitions.ts b/packages/ionic-angular/src/components/picker/picker-transitions.ts similarity index 100% rename from src/components/picker/picker-transitions.ts rename to packages/ionic-angular/src/components/picker/picker-transitions.ts diff --git a/src/components/picker/picker.ios.scss b/packages/ionic-angular/src/components/picker/picker.ios.scss similarity index 100% rename from src/components/picker/picker.ios.scss rename to packages/ionic-angular/src/components/picker/picker.ios.scss diff --git a/src/components/picker/picker.md.scss b/packages/ionic-angular/src/components/picker/picker.md.scss similarity index 100% rename from src/components/picker/picker.md.scss rename to packages/ionic-angular/src/components/picker/picker.md.scss diff --git a/src/components/picker/picker.scss b/packages/ionic-angular/src/components/picker/picker.scss similarity index 100% rename from src/components/picker/picker.scss rename to packages/ionic-angular/src/components/picker/picker.scss diff --git a/src/components/picker/picker.ts b/packages/ionic-angular/src/components/picker/picker.ts similarity index 100% rename from src/components/picker/picker.ts rename to packages/ionic-angular/src/components/picker/picker.ts diff --git a/src/components/picker/picker.wp.scss b/packages/ionic-angular/src/components/picker/picker.wp.scss similarity index 100% rename from src/components/picker/picker.wp.scss rename to packages/ionic-angular/src/components/picker/picker.wp.scss diff --git a/src/components/picker/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/picker/test/basic/app/app.component.ts similarity index 100% rename from src/components/picker/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/picker/test/basic/app/app.component.ts diff --git a/src/components/picker/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/picker/test/basic/app/app.module.ts similarity index 100% rename from src/components/picker/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/picker/test/basic/app/app.module.ts diff --git a/src/components/picker/test/basic/app/main.ts b/packages/ionic-angular/src/components/picker/test/basic/app/main.ts similarity index 100% rename from src/components/picker/test/basic/app/main.ts rename to packages/ionic-angular/src/components/picker/test/basic/app/main.ts diff --git a/src/components/picker/test/basic/e2e.ts b/packages/ionic-angular/src/components/picker/test/basic/e2e.ts similarity index 100% rename from src/components/picker/test/basic/e2e.ts rename to packages/ionic-angular/src/components/picker/test/basic/e2e.ts diff --git a/src/components/picker/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/picker/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/picker/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/picker/test/basic/pages/page-one/page-one.html diff --git a/src/components/picker/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/picker/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/picker/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/picker/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/picker/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/picker/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/picker/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/picker/test/basic/pages/page-one/page-one.ts diff --git a/src/components/popover/popover-component.ts b/packages/ionic-angular/src/components/popover/popover-component.ts similarity index 100% rename from src/components/popover/popover-component.ts rename to packages/ionic-angular/src/components/popover/popover-component.ts diff --git a/src/components/popover/popover-controller.ts b/packages/ionic-angular/src/components/popover/popover-controller.ts similarity index 100% rename from src/components/popover/popover-controller.ts rename to packages/ionic-angular/src/components/popover/popover-controller.ts diff --git a/src/components/popover/popover-impl.ts b/packages/ionic-angular/src/components/popover/popover-impl.ts similarity index 100% rename from src/components/popover/popover-impl.ts rename to packages/ionic-angular/src/components/popover/popover-impl.ts diff --git a/src/components/popover/popover-options.ts b/packages/ionic-angular/src/components/popover/popover-options.ts similarity index 100% rename from src/components/popover/popover-options.ts rename to packages/ionic-angular/src/components/popover/popover-options.ts diff --git a/src/components/popover/popover-transitions.ts b/packages/ionic-angular/src/components/popover/popover-transitions.ts similarity index 100% rename from src/components/popover/popover-transitions.ts rename to packages/ionic-angular/src/components/popover/popover-transitions.ts diff --git a/src/components/popover/popover.ios.scss b/packages/ionic-angular/src/components/popover/popover.ios.scss similarity index 100% rename from src/components/popover/popover.ios.scss rename to packages/ionic-angular/src/components/popover/popover.ios.scss diff --git a/src/components/popover/popover.md.scss b/packages/ionic-angular/src/components/popover/popover.md.scss similarity index 100% rename from src/components/popover/popover.md.scss rename to packages/ionic-angular/src/components/popover/popover.md.scss diff --git a/src/components/popover/popover.scss b/packages/ionic-angular/src/components/popover/popover.scss similarity index 100% rename from src/components/popover/popover.scss rename to packages/ionic-angular/src/components/popover/popover.scss diff --git a/src/components/popover/popover.ts b/packages/ionic-angular/src/components/popover/popover.ts similarity index 100% rename from src/components/popover/popover.ts rename to packages/ionic-angular/src/components/popover/popover.ts diff --git a/src/components/popover/popover.wp.scss b/packages/ionic-angular/src/components/popover/popover.wp.scss similarity index 100% rename from src/components/popover/popover.wp.scss rename to packages/ionic-angular/src/components/popover/popover.wp.scss diff --git a/src/components/popover/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/popover/test/basic/app/app.component.ts similarity index 100% rename from src/components/popover/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/popover/test/basic/app/app.component.ts diff --git a/src/components/popover/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/popover/test/basic/app/app.module.ts similarity index 100% rename from src/components/popover/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/popover/test/basic/app/app.module.ts diff --git a/src/components/popover/test/basic/app/main.ts b/packages/ionic-angular/src/components/popover/test/basic/app/main.ts similarity index 100% rename from src/components/popover/test/basic/app/main.ts rename to packages/ionic-angular/src/components/popover/test/basic/app/main.ts diff --git a/src/components/popover/test/basic/e2e.ts b/packages/ionic-angular/src/components/popover/test/basic/e2e.ts similarity index 100% rename from src/components/popover/test/basic/e2e.ts rename to packages/ionic-angular/src/components/popover/test/basic/e2e.ts diff --git a/src/components/popover/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/popover/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/popover/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/popover/test/basic/pages/page-one/page-one.html diff --git a/src/components/popover/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/popover/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/popover/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/popover/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/popover/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/popover/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/popover/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/popover/test/basic/pages/page-one/page-one.ts diff --git a/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.html b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.html similarity index 100% rename from src/components/popover/test/basic/pages/popover-list-page/popover-list-page.html rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.html diff --git a/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.module.ts b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.module.ts similarity index 100% rename from src/components/popover/test/basic/pages/popover-list-page/popover-list-page.module.ts rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.module.ts diff --git a/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.ts b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.ts similarity index 100% rename from src/components/popover/test/basic/pages/popover-list-page/popover-list-page.ts rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-list-page/popover-list-page.ts diff --git a/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.html b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.html similarity index 100% rename from src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.html rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.html diff --git a/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.module.ts b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.module.ts similarity index 100% rename from src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.module.ts rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.module.ts diff --git a/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.ts b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.ts similarity index 100% rename from src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.ts rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-long-list-page/popover-long-list-page.ts diff --git a/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.html b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.html similarity index 100% rename from src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.html rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.html diff --git a/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.module.ts b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.module.ts similarity index 100% rename from src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.module.ts rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.module.ts diff --git a/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.ts b/packages/ionic-angular/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.ts similarity index 100% rename from src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.ts rename to packages/ionic-angular/src/components/popover/test/basic/pages/popover-radio-page/popover-radio-page.ts diff --git a/src/components/radio/radio-button.ts b/packages/ionic-angular/src/components/radio/radio-button.ts similarity index 100% rename from src/components/radio/radio-button.ts rename to packages/ionic-angular/src/components/radio/radio-button.ts diff --git a/src/components/radio/radio-group.ts b/packages/ionic-angular/src/components/radio/radio-group.ts similarity index 100% rename from src/components/radio/radio-group.ts rename to packages/ionic-angular/src/components/radio/radio-group.ts diff --git a/src/components/radio/radio.ios.scss b/packages/ionic-angular/src/components/radio/radio.ios.scss similarity index 100% rename from src/components/radio/radio.ios.scss rename to packages/ionic-angular/src/components/radio/radio.ios.scss diff --git a/src/components/radio/radio.md.scss b/packages/ionic-angular/src/components/radio/radio.md.scss similarity index 100% rename from src/components/radio/radio.md.scss rename to packages/ionic-angular/src/components/radio/radio.md.scss diff --git a/src/components/radio/radio.wp.scss b/packages/ionic-angular/src/components/radio/radio.wp.scss similarity index 100% rename from src/components/radio/radio.wp.scss rename to packages/ionic-angular/src/components/radio/radio.wp.scss diff --git a/src/components/radio/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/radio/test/basic/app/app.component.ts similarity index 100% rename from src/components/radio/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/radio/test/basic/app/app.component.ts diff --git a/src/components/radio/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/radio/test/basic/app/app.module.ts similarity index 100% rename from src/components/radio/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/radio/test/basic/app/app.module.ts diff --git a/src/components/radio/test/basic/app/main.ts b/packages/ionic-angular/src/components/radio/test/basic/app/main.ts similarity index 100% rename from src/components/radio/test/basic/app/main.ts rename to packages/ionic-angular/src/components/radio/test/basic/app/main.ts diff --git a/src/components/radio/test/basic/e2e.ts b/packages/ionic-angular/src/components/radio/test/basic/e2e.ts similarity index 100% rename from src/components/radio/test/basic/e2e.ts rename to packages/ionic-angular/src/components/radio/test/basic/e2e.ts diff --git a/src/components/radio/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/radio/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/radio/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/radio/test/basic/pages/page-one/page-one.html diff --git a/src/components/radio/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/radio/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/radio/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/radio/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/radio/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/radio/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/radio/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/radio/test/basic/pages/page-one/page-one.ts diff --git a/src/components/radio/test/radio.spec.ts b/packages/ionic-angular/src/components/radio/test/radio.spec.ts similarity index 100% rename from src/components/radio/test/radio.spec.ts rename to packages/ionic-angular/src/components/radio/test/radio.spec.ts diff --git a/src/components/range/range-knob.ts b/packages/ionic-angular/src/components/range/range-knob.ts similarity index 100% rename from src/components/range/range-knob.ts rename to packages/ionic-angular/src/components/range/range-knob.ts diff --git a/src/components/range/range.ios.scss b/packages/ionic-angular/src/components/range/range.ios.scss similarity index 100% rename from src/components/range/range.ios.scss rename to packages/ionic-angular/src/components/range/range.ios.scss diff --git a/src/components/range/range.md.scss b/packages/ionic-angular/src/components/range/range.md.scss similarity index 100% rename from src/components/range/range.md.scss rename to packages/ionic-angular/src/components/range/range.md.scss diff --git a/src/components/range/range.scss b/packages/ionic-angular/src/components/range/range.scss similarity index 100% rename from src/components/range/range.scss rename to packages/ionic-angular/src/components/range/range.scss diff --git a/src/components/range/range.ts b/packages/ionic-angular/src/components/range/range.ts similarity index 100% rename from src/components/range/range.ts rename to packages/ionic-angular/src/components/range/range.ts diff --git a/src/components/range/range.wp.scss b/packages/ionic-angular/src/components/range/range.wp.scss similarity index 100% rename from src/components/range/range.wp.scss rename to packages/ionic-angular/src/components/range/range.wp.scss diff --git a/src/components/range/test/basic/app/app.component.html b/packages/ionic-angular/src/components/range/test/basic/app/app.component.html similarity index 100% rename from src/components/range/test/basic/app/app.component.html rename to packages/ionic-angular/src/components/range/test/basic/app/app.component.html diff --git a/src/components/range/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/range/test/basic/app/app.component.ts similarity index 100% rename from src/components/range/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/range/test/basic/app/app.component.ts diff --git a/src/components/range/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/range/test/basic/app/app.module.ts similarity index 100% rename from src/components/range/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/range/test/basic/app/app.module.ts diff --git a/src/components/range/test/basic/app/main.ts b/packages/ionic-angular/src/components/range/test/basic/app/main.ts similarity index 100% rename from src/components/range/test/basic/app/main.ts rename to packages/ionic-angular/src/components/range/test/basic/app/main.ts diff --git a/src/components/range/test/basic/e2e.ts b/packages/ionic-angular/src/components/range/test/basic/e2e.ts similarity index 100% rename from src/components/range/test/basic/e2e.ts rename to packages/ionic-angular/src/components/range/test/basic/e2e.ts diff --git a/src/components/range/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/range/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/range/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/range/test/basic/pages/root-page/root-page.html diff --git a/src/components/range/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/range/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/range/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/range/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/range/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/range/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/range/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/range/test/basic/pages/root-page/root-page.ts diff --git a/src/components/range/test/range.spec.ts b/packages/ionic-angular/src/components/range/test/range.spec.ts similarity index 100% rename from src/components/range/test/range.spec.ts rename to packages/ionic-angular/src/components/range/test/range.spec.ts diff --git a/src/components/refresher/refresher-content.ts b/packages/ionic-angular/src/components/refresher/refresher-content.ts similarity index 100% rename from src/components/refresher/refresher-content.ts rename to packages/ionic-angular/src/components/refresher/refresher-content.ts diff --git a/src/components/refresher/refresher.scss b/packages/ionic-angular/src/components/refresher/refresher.scss similarity index 100% rename from src/components/refresher/refresher.scss rename to packages/ionic-angular/src/components/refresher/refresher.scss diff --git a/src/components/refresher/refresher.ts b/packages/ionic-angular/src/components/refresher/refresher.ts similarity index 100% rename from src/components/refresher/refresher.ts rename to packages/ionic-angular/src/components/refresher/refresher.ts diff --git a/src/components/refresher/test/basic/app.module.ts b/packages/ionic-angular/src/components/refresher/test/basic/app.module.ts similarity index 100% rename from src/components/refresher/test/basic/app.module.ts rename to packages/ionic-angular/src/components/refresher/test/basic/app.module.ts diff --git a/src/components/refresher/test/basic/main.html b/packages/ionic-angular/src/components/refresher/test/basic/main.html similarity index 100% rename from src/components/refresher/test/basic/main.html rename to packages/ionic-angular/src/components/refresher/test/basic/main.html diff --git a/src/components/refresher/test/basic/main.ts b/packages/ionic-angular/src/components/refresher/test/basic/main.ts similarity index 100% rename from src/components/refresher/test/basic/main.ts rename to packages/ionic-angular/src/components/refresher/test/basic/main.ts diff --git a/src/components/refresher/test/navigation/app.module.ts b/packages/ionic-angular/src/components/refresher/test/navigation/app.module.ts similarity index 100% rename from src/components/refresher/test/navigation/app.module.ts rename to packages/ionic-angular/src/components/refresher/test/navigation/app.module.ts diff --git a/src/components/refresher/test/navigation/main.html b/packages/ionic-angular/src/components/refresher/test/navigation/main.html similarity index 100% rename from src/components/refresher/test/navigation/main.html rename to packages/ionic-angular/src/components/refresher/test/navigation/main.html diff --git a/src/components/refresher/test/navigation/main.ts b/packages/ionic-angular/src/components/refresher/test/navigation/main.ts similarity index 100% rename from src/components/refresher/test/navigation/main.ts rename to packages/ionic-angular/src/components/refresher/test/navigation/main.ts diff --git a/src/components/refresher/test/navigation/page2.html b/packages/ionic-angular/src/components/refresher/test/navigation/page2.html similarity index 100% rename from src/components/refresher/test/navigation/page2.html rename to packages/ionic-angular/src/components/refresher/test/navigation/page2.html diff --git a/src/components/refresher/test/refresher.spec.ts b/packages/ionic-angular/src/components/refresher/test/refresher.spec.ts similarity index 100% rename from src/components/refresher/test/refresher.spec.ts rename to packages/ionic-angular/src/components/refresher/test/refresher.spec.ts diff --git a/src/components/scroll/scroll-interface.ts b/packages/ionic-angular/src/components/scroll/scroll-interface.ts similarity index 100% rename from src/components/scroll/scroll-interface.ts rename to packages/ionic-angular/src/components/scroll/scroll-interface.ts diff --git a/src/components/scroll/scroll.scss b/packages/ionic-angular/src/components/scroll/scroll.scss similarity index 100% rename from src/components/scroll/scroll.scss rename to packages/ionic-angular/src/components/scroll/scroll.scss diff --git a/src/components/scroll/scroll.ts b/packages/ionic-angular/src/components/scroll/scroll.ts similarity index 100% rename from src/components/scroll/scroll.ts rename to packages/ionic-angular/src/components/scroll/scroll.ts diff --git a/src/components/scroll/test/basic/app.module.ts b/packages/ionic-angular/src/components/scroll/test/basic/app.module.ts similarity index 100% rename from src/components/scroll/test/basic/app.module.ts rename to packages/ionic-angular/src/components/scroll/test/basic/app.module.ts diff --git a/src/components/scroll/test/basic/main.html b/packages/ionic-angular/src/components/scroll/test/basic/main.html similarity index 100% rename from src/components/scroll/test/basic/main.html rename to packages/ionic-angular/src/components/scroll/test/basic/main.html diff --git a/src/components/searchbar/searchbar.ios.scss b/packages/ionic-angular/src/components/searchbar/searchbar.ios.scss similarity index 100% rename from src/components/searchbar/searchbar.ios.scss rename to packages/ionic-angular/src/components/searchbar/searchbar.ios.scss diff --git a/src/components/searchbar/searchbar.md.scss b/packages/ionic-angular/src/components/searchbar/searchbar.md.scss similarity index 100% rename from src/components/searchbar/searchbar.md.scss rename to packages/ionic-angular/src/components/searchbar/searchbar.md.scss diff --git a/src/components/searchbar/searchbar.scss b/packages/ionic-angular/src/components/searchbar/searchbar.scss similarity index 100% rename from src/components/searchbar/searchbar.scss rename to packages/ionic-angular/src/components/searchbar/searchbar.scss diff --git a/src/components/searchbar/searchbar.ts b/packages/ionic-angular/src/components/searchbar/searchbar.ts similarity index 100% rename from src/components/searchbar/searchbar.ts rename to packages/ionic-angular/src/components/searchbar/searchbar.ts diff --git a/src/components/searchbar/searchbar.wp.scss b/packages/ionic-angular/src/components/searchbar/searchbar.wp.scss similarity index 100% rename from src/components/searchbar/searchbar.wp.scss rename to packages/ionic-angular/src/components/searchbar/searchbar.wp.scss diff --git a/src/components/searchbar/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/searchbar/test/basic/app/app.component.ts similarity index 100% rename from src/components/searchbar/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/searchbar/test/basic/app/app.component.ts diff --git a/src/components/searchbar/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/searchbar/test/basic/app/app.module.ts similarity index 100% rename from src/components/searchbar/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/searchbar/test/basic/app/app.module.ts diff --git a/src/components/searchbar/test/basic/app/main.ts b/packages/ionic-angular/src/components/searchbar/test/basic/app/main.ts similarity index 100% rename from src/components/searchbar/test/basic/app/main.ts rename to packages/ionic-angular/src/components/searchbar/test/basic/app/main.ts diff --git a/src/components/searchbar/test/basic/e2e.ts b/packages/ionic-angular/src/components/searchbar/test/basic/e2e.ts similarity index 100% rename from src/components/searchbar/test/basic/e2e.ts rename to packages/ionic-angular/src/components/searchbar/test/basic/e2e.ts diff --git a/src/components/searchbar/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/searchbar/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/searchbar/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/searchbar/test/basic/pages/root-page/root-page.html diff --git a/src/components/searchbar/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/searchbar/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/searchbar/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/searchbar/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/searchbar/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/searchbar/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/searchbar/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/searchbar/test/basic/pages/root-page/root-page.ts diff --git a/src/components/searchbar/test/nav/app/app.component.ts b/packages/ionic-angular/src/components/searchbar/test/nav/app/app.component.ts similarity index 100% rename from src/components/searchbar/test/nav/app/app.component.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/app/app.component.ts diff --git a/src/components/searchbar/test/nav/app/app.module.ts b/packages/ionic-angular/src/components/searchbar/test/nav/app/app.module.ts similarity index 100% rename from src/components/searchbar/test/nav/app/app.module.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/app/app.module.ts diff --git a/src/components/searchbar/test/nav/app/main.ts b/packages/ionic-angular/src/components/searchbar/test/nav/app/main.ts similarity index 100% rename from src/components/searchbar/test/nav/app/main.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/app/main.ts diff --git a/src/components/searchbar/test/nav/e2e.ts b/packages/ionic-angular/src/components/searchbar/test/nav/e2e.ts similarity index 100% rename from src/components/searchbar/test/nav/e2e.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/e2e.ts diff --git a/src/components/searchbar/test/nav/pages/detail-page/detail-page.html b/packages/ionic-angular/src/components/searchbar/test/nav/pages/detail-page/detail-page.html similarity index 100% rename from src/components/searchbar/test/nav/pages/detail-page/detail-page.html rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/detail-page/detail-page.html diff --git a/src/components/searchbar/test/nav/pages/detail-page/detail-page.module.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/detail-page/detail-page.module.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/detail-page/detail-page.module.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/detail-page/detail-page.module.ts diff --git a/src/components/searchbar/test/nav/pages/detail-page/detail-page.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/detail-page/detail-page.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/detail-page/detail-page.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/detail-page/detail-page.ts diff --git a/src/components/searchbar/test/nav/pages/main-page/main-page.html b/packages/ionic-angular/src/components/searchbar/test/nav/pages/main-page/main-page.html similarity index 100% rename from src/components/searchbar/test/nav/pages/main-page/main-page.html rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/main-page/main-page.html diff --git a/src/components/searchbar/test/nav/pages/main-page/main-page.module.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/main-page/main-page.module.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/main-page/main-page.module.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/main-page/main-page.module.ts diff --git a/src/components/searchbar/test/nav/pages/main-page/main-page.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/main-page/main-page.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/main-page/main-page.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/main-page/main-page.ts diff --git a/src/components/searchbar/test/nav/pages/modal-page/modal-page.html b/packages/ionic-angular/src/components/searchbar/test/nav/pages/modal-page/modal-page.html similarity index 100% rename from src/components/searchbar/test/nav/pages/modal-page/modal-page.html rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/modal-page/modal-page.html diff --git a/src/components/searchbar/test/nav/pages/modal-page/modal-page.module.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/modal-page/modal-page.module.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/modal-page/modal-page.module.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/modal-page/modal-page.module.ts diff --git a/src/components/searchbar/test/nav/pages/modal-page/modal-page.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/modal-page/modal-page.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/modal-page/modal-page.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/modal-page/modal-page.ts diff --git a/src/components/searchbar/test/nav/pages/search-page/search-page.html b/packages/ionic-angular/src/components/searchbar/test/nav/pages/search-page/search-page.html similarity index 100% rename from src/components/searchbar/test/nav/pages/search-page/search-page.html rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/search-page/search-page.html diff --git a/src/components/searchbar/test/nav/pages/search-page/search-page.module.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/search-page/search-page.module.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/search-page/search-page.module.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/search-page/search-page.module.ts diff --git a/src/components/searchbar/test/nav/pages/search-page/search-page.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/search-page/search-page.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/search-page/search-page.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/search-page/search-page.ts diff --git a/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.html b/packages/ionic-angular/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.html similarity index 100% rename from src/components/searchbar/test/nav/pages/tabs-page/tabs-page.html rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.html diff --git a/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.module.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.module.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/tabs-page/tabs-page.module.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.module.ts diff --git a/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.ts b/packages/ionic-angular/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.ts similarity index 100% rename from src/components/searchbar/test/nav/pages/tabs-page/tabs-page.ts rename to packages/ionic-angular/src/components/searchbar/test/nav/pages/tabs-page/tabs-page.ts diff --git a/src/components/searchbar/test/toolbar/app/app.component.ts b/packages/ionic-angular/src/components/searchbar/test/toolbar/app/app.component.ts similarity index 100% rename from src/components/searchbar/test/toolbar/app/app.component.ts rename to packages/ionic-angular/src/components/searchbar/test/toolbar/app/app.component.ts diff --git a/src/components/searchbar/test/toolbar/app/app.module.ts b/packages/ionic-angular/src/components/searchbar/test/toolbar/app/app.module.ts similarity index 100% rename from src/components/searchbar/test/toolbar/app/app.module.ts rename to packages/ionic-angular/src/components/searchbar/test/toolbar/app/app.module.ts diff --git a/src/components/searchbar/test/toolbar/app/main.ts b/packages/ionic-angular/src/components/searchbar/test/toolbar/app/main.ts similarity index 100% rename from src/components/searchbar/test/toolbar/app/main.ts rename to packages/ionic-angular/src/components/searchbar/test/toolbar/app/main.ts diff --git a/src/components/searchbar/test/toolbar/e2e.ts b/packages/ionic-angular/src/components/searchbar/test/toolbar/e2e.ts similarity index 100% rename from src/components/searchbar/test/toolbar/e2e.ts rename to packages/ionic-angular/src/components/searchbar/test/toolbar/e2e.ts diff --git a/src/components/searchbar/test/toolbar/pages/home-page/home-page.html b/packages/ionic-angular/src/components/searchbar/test/toolbar/pages/home-page/home-page.html similarity index 100% rename from src/components/searchbar/test/toolbar/pages/home-page/home-page.html rename to packages/ionic-angular/src/components/searchbar/test/toolbar/pages/home-page/home-page.html diff --git a/src/components/searchbar/test/toolbar/pages/home-page/home-page.module.ts b/packages/ionic-angular/src/components/searchbar/test/toolbar/pages/home-page/home-page.module.ts similarity index 100% rename from src/components/searchbar/test/toolbar/pages/home-page/home-page.module.ts rename to packages/ionic-angular/src/components/searchbar/test/toolbar/pages/home-page/home-page.module.ts diff --git a/src/components/searchbar/test/toolbar/pages/home-page/home-page.ts b/packages/ionic-angular/src/components/searchbar/test/toolbar/pages/home-page/home-page.ts similarity index 100% rename from src/components/searchbar/test/toolbar/pages/home-page/home-page.ts rename to packages/ionic-angular/src/components/searchbar/test/toolbar/pages/home-page/home-page.ts diff --git a/src/components/segment/segment-button.ts b/packages/ionic-angular/src/components/segment/segment-button.ts similarity index 100% rename from src/components/segment/segment-button.ts rename to packages/ionic-angular/src/components/segment/segment-button.ts diff --git a/src/components/segment/segment.ios.scss b/packages/ionic-angular/src/components/segment/segment.ios.scss similarity index 100% rename from src/components/segment/segment.ios.scss rename to packages/ionic-angular/src/components/segment/segment.ios.scss diff --git a/src/components/segment/segment.md.scss b/packages/ionic-angular/src/components/segment/segment.md.scss similarity index 100% rename from src/components/segment/segment.md.scss rename to packages/ionic-angular/src/components/segment/segment.md.scss diff --git a/src/components/segment/segment.scss b/packages/ionic-angular/src/components/segment/segment.scss similarity index 100% rename from src/components/segment/segment.scss rename to packages/ionic-angular/src/components/segment/segment.scss diff --git a/src/components/segment/segment.ts b/packages/ionic-angular/src/components/segment/segment.ts similarity index 100% rename from src/components/segment/segment.ts rename to packages/ionic-angular/src/components/segment/segment.ts diff --git a/src/components/segment/segment.wp.scss b/packages/ionic-angular/src/components/segment/segment.wp.scss similarity index 100% rename from src/components/segment/segment.wp.scss rename to packages/ionic-angular/src/components/segment/segment.wp.scss diff --git a/src/components/segment/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/segment/test/basic/app/app.component.ts similarity index 100% rename from src/components/segment/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/segment/test/basic/app/app.component.ts diff --git a/src/components/segment/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/segment/test/basic/app/app.module.ts similarity index 100% rename from src/components/segment/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/segment/test/basic/app/app.module.ts diff --git a/src/components/segment/test/basic/app/main.ts b/packages/ionic-angular/src/components/segment/test/basic/app/main.ts similarity index 100% rename from src/components/segment/test/basic/app/main.ts rename to packages/ionic-angular/src/components/segment/test/basic/app/main.ts diff --git a/src/components/segment/test/basic/e2e.ts b/packages/ionic-angular/src/components/segment/test/basic/e2e.ts similarity index 100% rename from src/components/segment/test/basic/e2e.ts rename to packages/ionic-angular/src/components/segment/test/basic/e2e.ts diff --git a/src/components/segment/test/basic/pages/home-page/home-page.html b/packages/ionic-angular/src/components/segment/test/basic/pages/home-page/home-page.html similarity index 100% rename from src/components/segment/test/basic/pages/home-page/home-page.html rename to packages/ionic-angular/src/components/segment/test/basic/pages/home-page/home-page.html diff --git a/src/components/segment/test/basic/pages/home-page/home-page.module.ts b/packages/ionic-angular/src/components/segment/test/basic/pages/home-page/home-page.module.ts similarity index 100% rename from src/components/segment/test/basic/pages/home-page/home-page.module.ts rename to packages/ionic-angular/src/components/segment/test/basic/pages/home-page/home-page.module.ts diff --git a/src/components/segment/test/basic/pages/home-page/home-page.ts b/packages/ionic-angular/src/components/segment/test/basic/pages/home-page/home-page.ts similarity index 100% rename from src/components/segment/test/basic/pages/home-page/home-page.ts rename to packages/ionic-angular/src/components/segment/test/basic/pages/home-page/home-page.ts diff --git a/src/components/segment/test/nav/app/app.component.ts b/packages/ionic-angular/src/components/segment/test/nav/app/app.component.ts similarity index 100% rename from src/components/segment/test/nav/app/app.component.ts rename to packages/ionic-angular/src/components/segment/test/nav/app/app.component.ts diff --git a/src/components/segment/test/nav/app/app.module.ts b/packages/ionic-angular/src/components/segment/test/nav/app/app.module.ts similarity index 100% rename from src/components/segment/test/nav/app/app.module.ts rename to packages/ionic-angular/src/components/segment/test/nav/app/app.module.ts diff --git a/src/components/segment/test/nav/app/main.ts b/packages/ionic-angular/src/components/segment/test/nav/app/main.ts similarity index 100% rename from src/components/segment/test/nav/app/main.ts rename to packages/ionic-angular/src/components/segment/test/nav/app/main.ts diff --git a/src/components/segment/test/nav/e2e.ts b/packages/ionic-angular/src/components/segment/test/nav/e2e.ts similarity index 100% rename from src/components/segment/test/nav/e2e.ts rename to packages/ionic-angular/src/components/segment/test/nav/e2e.ts diff --git a/src/components/segment/test/nav/pages/first-page/first-page.html b/packages/ionic-angular/src/components/segment/test/nav/pages/first-page/first-page.html similarity index 100% rename from src/components/segment/test/nav/pages/first-page/first-page.html rename to packages/ionic-angular/src/components/segment/test/nav/pages/first-page/first-page.html diff --git a/src/components/segment/test/nav/pages/first-page/first-page.module.ts b/packages/ionic-angular/src/components/segment/test/nav/pages/first-page/first-page.module.ts similarity index 100% rename from src/components/segment/test/nav/pages/first-page/first-page.module.ts rename to packages/ionic-angular/src/components/segment/test/nav/pages/first-page/first-page.module.ts diff --git a/src/components/segment/test/nav/pages/first-page/first-page.ts b/packages/ionic-angular/src/components/segment/test/nav/pages/first-page/first-page.ts similarity index 100% rename from src/components/segment/test/nav/pages/first-page/first-page.ts rename to packages/ionic-angular/src/components/segment/test/nav/pages/first-page/first-page.ts diff --git a/src/components/segment/test/nav/pages/second-page/second-page.html b/packages/ionic-angular/src/components/segment/test/nav/pages/second-page/second-page.html similarity index 100% rename from src/components/segment/test/nav/pages/second-page/second-page.html rename to packages/ionic-angular/src/components/segment/test/nav/pages/second-page/second-page.html diff --git a/src/components/segment/test/nav/pages/second-page/second-page.module.ts b/packages/ionic-angular/src/components/segment/test/nav/pages/second-page/second-page.module.ts similarity index 100% rename from src/components/segment/test/nav/pages/second-page/second-page.module.ts rename to packages/ionic-angular/src/components/segment/test/nav/pages/second-page/second-page.module.ts diff --git a/src/components/segment/test/nav/pages/second-page/second-page.ts b/packages/ionic-angular/src/components/segment/test/nav/pages/second-page/second-page.ts similarity index 100% rename from src/components/segment/test/nav/pages/second-page/second-page.ts rename to packages/ionic-angular/src/components/segment/test/nav/pages/second-page/second-page.ts diff --git a/src/components/segment/test/segment.spec.ts b/packages/ionic-angular/src/components/segment/test/segment.spec.ts similarity index 100% rename from src/components/segment/test/segment.spec.ts rename to packages/ionic-angular/src/components/segment/test/segment.spec.ts diff --git a/src/components/segment/test/swipe/app/app.component.ts b/packages/ionic-angular/src/components/segment/test/swipe/app/app.component.ts similarity index 100% rename from src/components/segment/test/swipe/app/app.component.ts rename to packages/ionic-angular/src/components/segment/test/swipe/app/app.component.ts diff --git a/src/components/segment/test/swipe/app/app.module.ts b/packages/ionic-angular/src/components/segment/test/swipe/app/app.module.ts similarity index 100% rename from src/components/segment/test/swipe/app/app.module.ts rename to packages/ionic-angular/src/components/segment/test/swipe/app/app.module.ts diff --git a/src/components/segment/test/swipe/app/main.ts b/packages/ionic-angular/src/components/segment/test/swipe/app/main.ts similarity index 100% rename from src/components/segment/test/swipe/app/main.ts rename to packages/ionic-angular/src/components/segment/test/swipe/app/main.ts diff --git a/src/components/segment/test/swipe/pages/e2e-page/e2e-page.ts b/packages/ionic-angular/src/components/segment/test/swipe/pages/e2e-page/e2e-page.ts similarity index 100% rename from src/components/segment/test/swipe/pages/e2e-page/e2e-page.ts rename to packages/ionic-angular/src/components/segment/test/swipe/pages/e2e-page/e2e-page.ts diff --git a/src/components/segment/test/swipe/pages/e2e-page/main.html b/packages/ionic-angular/src/components/segment/test/swipe/pages/e2e-page/main.html similarity index 100% rename from src/components/segment/test/swipe/pages/e2e-page/main.html rename to packages/ionic-angular/src/components/segment/test/swipe/pages/e2e-page/main.html diff --git a/src/components/select/select-popover-component.ts b/packages/ionic-angular/src/components/select/select-popover-component.ts similarity index 100% rename from src/components/select/select-popover-component.ts rename to packages/ionic-angular/src/components/select/select-popover-component.ts diff --git a/src/components/select/select.ios.scss b/packages/ionic-angular/src/components/select/select.ios.scss similarity index 100% rename from src/components/select/select.ios.scss rename to packages/ionic-angular/src/components/select/select.ios.scss diff --git a/src/components/select/select.md.scss b/packages/ionic-angular/src/components/select/select.md.scss similarity index 100% rename from src/components/select/select.md.scss rename to packages/ionic-angular/src/components/select/select.md.scss diff --git a/src/components/select/select.scss b/packages/ionic-angular/src/components/select/select.scss similarity index 100% rename from src/components/select/select.scss rename to packages/ionic-angular/src/components/select/select.scss diff --git a/src/components/select/select.ts b/packages/ionic-angular/src/components/select/select.ts similarity index 100% rename from src/components/select/select.ts rename to packages/ionic-angular/src/components/select/select.ts diff --git a/src/components/select/select.wp.scss b/packages/ionic-angular/src/components/select/select.wp.scss similarity index 100% rename from src/components/select/select.wp.scss rename to packages/ionic-angular/src/components/select/select.wp.scss diff --git a/src/components/select/test/multiple-value/app/app.component.ts b/packages/ionic-angular/src/components/select/test/multiple-value/app/app.component.ts similarity index 100% rename from src/components/select/test/multiple-value/app/app.component.ts rename to packages/ionic-angular/src/components/select/test/multiple-value/app/app.component.ts diff --git a/src/components/select/test/multiple-value/app/app.module.ts b/packages/ionic-angular/src/components/select/test/multiple-value/app/app.module.ts similarity index 100% rename from src/components/select/test/multiple-value/app/app.module.ts rename to packages/ionic-angular/src/components/select/test/multiple-value/app/app.module.ts diff --git a/src/components/select/test/multiple-value/app/main.ts b/packages/ionic-angular/src/components/select/test/multiple-value/app/main.ts similarity index 100% rename from src/components/select/test/multiple-value/app/main.ts rename to packages/ionic-angular/src/components/select/test/multiple-value/app/main.ts diff --git a/src/components/select/test/multiple-value/e2e.ts b/packages/ionic-angular/src/components/select/test/multiple-value/e2e.ts similarity index 100% rename from src/components/select/test/multiple-value/e2e.ts rename to packages/ionic-angular/src/components/select/test/multiple-value/e2e.ts diff --git a/src/components/select/test/multiple-value/pages/page-one/page-one.html b/packages/ionic-angular/src/components/select/test/multiple-value/pages/page-one/page-one.html similarity index 100% rename from src/components/select/test/multiple-value/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/select/test/multiple-value/pages/page-one/page-one.html diff --git a/src/components/select/test/multiple-value/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/select/test/multiple-value/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/select/test/multiple-value/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/select/test/multiple-value/pages/page-one/page-one.module.ts diff --git a/src/components/select/test/multiple-value/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/select/test/multiple-value/pages/page-one/page-one.ts similarity index 100% rename from src/components/select/test/multiple-value/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/select/test/multiple-value/pages/page-one/page-one.ts diff --git a/src/components/select/test/select.spec.ts b/packages/ionic-angular/src/components/select/test/select.spec.ts similarity index 100% rename from src/components/select/test/select.spec.ts rename to packages/ionic-angular/src/components/select/test/select.spec.ts diff --git a/src/components/select/test/single-value/app/app.component.ts b/packages/ionic-angular/src/components/select/test/single-value/app/app.component.ts similarity index 100% rename from src/components/select/test/single-value/app/app.component.ts rename to packages/ionic-angular/src/components/select/test/single-value/app/app.component.ts diff --git a/src/components/select/test/single-value/app/app.module.ts b/packages/ionic-angular/src/components/select/test/single-value/app/app.module.ts similarity index 100% rename from src/components/select/test/single-value/app/app.module.ts rename to packages/ionic-angular/src/components/select/test/single-value/app/app.module.ts diff --git a/src/components/select/test/single-value/app/main.ts b/packages/ionic-angular/src/components/select/test/single-value/app/main.ts similarity index 100% rename from src/components/select/test/single-value/app/main.ts rename to packages/ionic-angular/src/components/select/test/single-value/app/main.ts diff --git a/src/components/select/test/single-value/e2e.ts b/packages/ionic-angular/src/components/select/test/single-value/e2e.ts similarity index 100% rename from src/components/select/test/single-value/e2e.ts rename to packages/ionic-angular/src/components/select/test/single-value/e2e.ts diff --git a/src/components/select/test/single-value/pages/page-one/page-one.html b/packages/ionic-angular/src/components/select/test/single-value/pages/page-one/page-one.html similarity index 100% rename from src/components/select/test/single-value/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/select/test/single-value/pages/page-one/page-one.html diff --git a/src/components/select/test/single-value/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/select/test/single-value/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/select/test/single-value/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/select/test/single-value/pages/page-one/page-one.module.ts diff --git a/src/components/select/test/single-value/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/select/test/single-value/pages/page-one/page-one.ts similarity index 100% rename from src/components/select/test/single-value/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/select/test/single-value/pages/page-one/page-one.ts diff --git a/src/components/show-hide-when/display-when.ts b/packages/ionic-angular/src/components/show-hide-when/display-when.ts similarity index 100% rename from src/components/show-hide-when/display-when.ts rename to packages/ionic-angular/src/components/show-hide-when/display-when.ts diff --git a/src/components/show-hide-when/hide-when.ts b/packages/ionic-angular/src/components/show-hide-when/hide-when.ts similarity index 100% rename from src/components/show-hide-when/hide-when.ts rename to packages/ionic-angular/src/components/show-hide-when/hide-when.ts diff --git a/src/components/show-hide-when/show-hide-when.scss b/packages/ionic-angular/src/components/show-hide-when/show-hide-when.scss similarity index 100% rename from src/components/show-hide-when/show-hide-when.scss rename to packages/ionic-angular/src/components/show-hide-when/show-hide-when.scss diff --git a/src/components/show-hide-when/show-when.ts b/packages/ionic-angular/src/components/show-hide-when/show-when.ts similarity index 100% rename from src/components/show-hide-when/show-when.ts rename to packages/ionic-angular/src/components/show-hide-when/show-when.ts diff --git a/src/components/show-hide-when/test/basic/app.module.ts b/packages/ionic-angular/src/components/show-hide-when/test/basic/app.module.ts similarity index 100% rename from src/components/show-hide-when/test/basic/app.module.ts rename to packages/ionic-angular/src/components/show-hide-when/test/basic/app.module.ts diff --git a/src/components/show-hide-when/test/basic/main.html b/packages/ionic-angular/src/components/show-hide-when/test/basic/main.html similarity index 100% rename from src/components/show-hide-when/test/basic/main.html rename to packages/ionic-angular/src/components/show-hide-when/test/basic/main.html diff --git a/src/components/show-hide-when/test/basic/main.ts b/packages/ionic-angular/src/components/show-hide-when/test/basic/main.ts similarity index 100% rename from src/components/show-hide-when/test/basic/main.ts rename to packages/ionic-angular/src/components/show-hide-when/test/basic/main.ts diff --git a/src/components/slides/slide.scss b/packages/ionic-angular/src/components/slides/slide.scss similarity index 100% rename from src/components/slides/slide.scss rename to packages/ionic-angular/src/components/slides/slide.scss diff --git a/src/components/slides/slide.tsx b/packages/ionic-angular/src/components/slides/slide.tsx similarity index 100% rename from src/components/slides/slide.tsx rename to packages/ionic-angular/src/components/slides/slide.tsx diff --git a/src/components/slides/slides-import.scss b/packages/ionic-angular/src/components/slides/slides-import.scss similarity index 100% rename from src/components/slides/slides-import.scss rename to packages/ionic-angular/src/components/slides/slides-import.scss diff --git a/src/components/slides/slides.scss b/packages/ionic-angular/src/components/slides/slides.scss similarity index 100% rename from src/components/slides/slides.scss rename to packages/ionic-angular/src/components/slides/slides.scss diff --git a/src/components/slides/slides.tsx b/packages/ionic-angular/src/components/slides/slides.tsx similarity index 100% rename from src/components/slides/slides.tsx rename to packages/ionic-angular/src/components/slides/slides.tsx diff --git a/src/components/slides/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/slides/test/basic/app/app.component.ts similarity index 100% rename from src/components/slides/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/slides/test/basic/app/app.component.ts diff --git a/src/components/slides/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/slides/test/basic/app/app.module.ts similarity index 100% rename from src/components/slides/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/slides/test/basic/app/app.module.ts diff --git a/src/components/slides/test/basic/app/main.ts b/packages/ionic-angular/src/components/slides/test/basic/app/main.ts similarity index 100% rename from src/components/slides/test/basic/app/main.ts rename to packages/ionic-angular/src/components/slides/test/basic/app/main.ts diff --git a/src/components/slides/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/slides/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/slides/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/slides/test/basic/pages/root-page/root-page.html diff --git a/src/components/slides/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/slides/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/slides/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/slides/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/slides/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/slides/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/slides/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/slides/test/basic/pages/root-page/root-page.ts diff --git a/src/components/slides/test/control/app.module.ts b/packages/ionic-angular/src/components/slides/test/control/app.module.ts similarity index 100% rename from src/components/slides/test/control/app.module.ts rename to packages/ionic-angular/src/components/slides/test/control/app.module.ts diff --git a/src/components/slides/test/control/main.html b/packages/ionic-angular/src/components/slides/test/control/main.html similarity index 100% rename from src/components/slides/test/control/main.html rename to packages/ionic-angular/src/components/slides/test/control/main.html diff --git a/src/components/slides/test/control/main.ts b/packages/ionic-angular/src/components/slides/test/control/main.ts similarity index 100% rename from src/components/slides/test/control/main.ts rename to packages/ionic-angular/src/components/slides/test/control/main.ts diff --git a/src/components/slides/test/controller/app.module.ts b/packages/ionic-angular/src/components/slides/test/controller/app.module.ts similarity index 100% rename from src/components/slides/test/controller/app.module.ts rename to packages/ionic-angular/src/components/slides/test/controller/app.module.ts diff --git a/src/components/slides/test/controller/main.html b/packages/ionic-angular/src/components/slides/test/controller/main.html similarity index 100% rename from src/components/slides/test/controller/main.html rename to packages/ionic-angular/src/components/slides/test/controller/main.html diff --git a/src/components/slides/test/controller/main.ts b/packages/ionic-angular/src/components/slides/test/controller/main.ts similarity index 100% rename from src/components/slides/test/controller/main.ts rename to packages/ionic-angular/src/components/slides/test/controller/main.ts diff --git a/src/components/slides/test/images/app.module.ts b/packages/ionic-angular/src/components/slides/test/images/app.module.ts similarity index 100% rename from src/components/slides/test/images/app.module.ts rename to packages/ionic-angular/src/components/slides/test/images/app.module.ts diff --git a/src/components/slides/test/images/main.html b/packages/ionic-angular/src/components/slides/test/images/main.html similarity index 100% rename from src/components/slides/test/images/main.html rename to packages/ionic-angular/src/components/slides/test/images/main.html diff --git a/src/components/slides/test/images/main.ts b/packages/ionic-angular/src/components/slides/test/images/main.ts similarity index 100% rename from src/components/slides/test/images/main.ts rename to packages/ionic-angular/src/components/slides/test/images/main.ts diff --git a/src/components/slides/test/intro/app.module.ts b/packages/ionic-angular/src/components/slides/test/intro/app.module.ts similarity index 100% rename from src/components/slides/test/intro/app.module.ts rename to packages/ionic-angular/src/components/slides/test/intro/app.module.ts diff --git a/src/components/slides/test/intro/appicon.png b/packages/ionic-angular/src/components/slides/test/intro/appicon.png similarity index 100% rename from src/components/slides/test/intro/appicon.png rename to packages/ionic-angular/src/components/slides/test/intro/appicon.png diff --git a/src/components/slides/test/intro/main.html b/packages/ionic-angular/src/components/slides/test/intro/main.html similarity index 100% rename from src/components/slides/test/intro/main.html rename to packages/ionic-angular/src/components/slides/test/intro/main.html diff --git a/src/components/slides/test/intro/main.ts b/packages/ionic-angular/src/components/slides/test/intro/main.ts similarity index 100% rename from src/components/slides/test/intro/main.ts rename to packages/ionic-angular/src/components/slides/test/intro/main.ts diff --git a/src/components/slides/test/loop/app.module.ts b/packages/ionic-angular/src/components/slides/test/loop/app.module.ts similarity index 100% rename from src/components/slides/test/loop/app.module.ts rename to packages/ionic-angular/src/components/slides/test/loop/app.module.ts diff --git a/src/components/slides/test/loop/main.html b/packages/ionic-angular/src/components/slides/test/loop/main.html similarity index 100% rename from src/components/slides/test/loop/main.html rename to packages/ionic-angular/src/components/slides/test/loop/main.html diff --git a/src/components/slides/test/loop/main.ts b/packages/ionic-angular/src/components/slides/test/loop/main.ts similarity index 100% rename from src/components/slides/test/loop/main.ts rename to packages/ionic-angular/src/components/slides/test/loop/main.ts diff --git a/src/components/slides/test/options/app.module.ts b/packages/ionic-angular/src/components/slides/test/options/app.module.ts similarity index 100% rename from src/components/slides/test/options/app.module.ts rename to packages/ionic-angular/src/components/slides/test/options/app.module.ts diff --git a/src/components/slides/test/options/main.html b/packages/ionic-angular/src/components/slides/test/options/main.html similarity index 100% rename from src/components/slides/test/options/main.html rename to packages/ionic-angular/src/components/slides/test/options/main.html diff --git a/src/components/slides/test/options/main.ts b/packages/ionic-angular/src/components/slides/test/options/main.ts similarity index 100% rename from src/components/slides/test/options/main.ts rename to packages/ionic-angular/src/components/slides/test/options/main.ts diff --git a/src/components/slides/test/rtl/app.module.ts b/packages/ionic-angular/src/components/slides/test/rtl/app.module.ts similarity index 100% rename from src/components/slides/test/rtl/app.module.ts rename to packages/ionic-angular/src/components/slides/test/rtl/app.module.ts diff --git a/src/components/slides/test/rtl/main.html b/packages/ionic-angular/src/components/slides/test/rtl/main.html similarity index 100% rename from src/components/slides/test/rtl/main.html rename to packages/ionic-angular/src/components/slides/test/rtl/main.html diff --git a/src/components/slides/test/scroll/app.module.ts b/packages/ionic-angular/src/components/slides/test/scroll/app.module.ts similarity index 100% rename from src/components/slides/test/scroll/app.module.ts rename to packages/ionic-angular/src/components/slides/test/scroll/app.module.ts diff --git a/src/components/slides/test/scroll/main.html b/packages/ionic-angular/src/components/slides/test/scroll/main.html similarity index 100% rename from src/components/slides/test/scroll/main.html rename to packages/ionic-angular/src/components/slides/test/scroll/main.html diff --git a/src/components/slides/test/scroll/main.ts b/packages/ionic-angular/src/components/slides/test/scroll/main.ts similarity index 100% rename from src/components/slides/test/scroll/main.ts rename to packages/ionic-angular/src/components/slides/test/scroll/main.ts diff --git a/src/components/snapshot/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/snapshot/test/basic/app/app.component.ts similarity index 100% rename from src/components/snapshot/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/app/app.component.ts diff --git a/src/components/snapshot/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/snapshot/test/basic/app/app.module.ts similarity index 100% rename from src/components/snapshot/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/app/app.module.ts diff --git a/src/components/snapshot/test/basic/app/main.ts b/packages/ionic-angular/src/components/snapshot/test/basic/app/main.ts similarity index 100% rename from src/components/snapshot/test/basic/app/main.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/app/main.ts diff --git a/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.html b/packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.html similarity index 100% rename from src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.html rename to packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.html diff --git a/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.module.ts b/packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.module.ts similarity index 100% rename from src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.module.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.module.ts diff --git a/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.ts b/packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.ts similarity index 100% rename from src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-popover/assistive-popover.ts diff --git a/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.html b/packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.html similarity index 100% rename from src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.html rename to packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.html diff --git a/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.module.ts b/packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.module.ts similarity index 100% rename from src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.module.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.module.ts diff --git a/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.scss b/packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.scss similarity index 100% rename from src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.scss rename to packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.scss diff --git a/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.ts b/packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.ts similarity index 100% rename from src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/components/assistive-touch/assistive-touch.ts diff --git a/src/components/snapshot/test/basic/pages/components/components.html b/packages/ionic-angular/src/components/snapshot/test/basic/pages/components/components.html similarity index 100% rename from src/components/snapshot/test/basic/pages/components/components.html rename to packages/ionic-angular/src/components/snapshot/test/basic/pages/components/components.html diff --git a/src/components/snapshot/test/basic/pages/components/components.module.ts b/packages/ionic-angular/src/components/snapshot/test/basic/pages/components/components.module.ts similarity index 100% rename from src/components/snapshot/test/basic/pages/components/components.module.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/pages/components/components.module.ts diff --git a/src/components/snapshot/test/basic/pages/components/components.ts b/packages/ionic-angular/src/components/snapshot/test/basic/pages/components/components.ts similarity index 100% rename from src/components/snapshot/test/basic/pages/components/components.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/pages/components/components.ts diff --git a/src/components/snapshot/test/basic/providers/assistive-touch/assistive-touch.ts b/packages/ionic-angular/src/components/snapshot/test/basic/providers/assistive-touch/assistive-touch.ts similarity index 100% rename from src/components/snapshot/test/basic/providers/assistive-touch/assistive-touch.ts rename to packages/ionic-angular/src/components/snapshot/test/basic/providers/assistive-touch/assistive-touch.ts diff --git a/src/components/spinner/spinner.ios.scss b/packages/ionic-angular/src/components/spinner/spinner.ios.scss similarity index 100% rename from src/components/spinner/spinner.ios.scss rename to packages/ionic-angular/src/components/spinner/spinner.ios.scss diff --git a/src/components/spinner/spinner.md.scss b/packages/ionic-angular/src/components/spinner/spinner.md.scss similarity index 100% rename from src/components/spinner/spinner.md.scss rename to packages/ionic-angular/src/components/spinner/spinner.md.scss diff --git a/src/components/spinner/spinner.scss b/packages/ionic-angular/src/components/spinner/spinner.scss similarity index 100% rename from src/components/spinner/spinner.scss rename to packages/ionic-angular/src/components/spinner/spinner.scss diff --git a/src/components/spinner/spinner.ts b/packages/ionic-angular/src/components/spinner/spinner.ts similarity index 100% rename from src/components/spinner/spinner.ts rename to packages/ionic-angular/src/components/spinner/spinner.ts diff --git a/src/components/spinner/spinner.wp.scss b/packages/ionic-angular/src/components/spinner/spinner.wp.scss similarity index 100% rename from src/components/spinner/spinner.wp.scss rename to packages/ionic-angular/src/components/spinner/spinner.wp.scss diff --git a/src/components/spinner/test/basic/app.module.ts b/packages/ionic-angular/src/components/spinner/test/basic/app.module.ts similarity index 100% rename from src/components/spinner/test/basic/app.module.ts rename to packages/ionic-angular/src/components/spinner/test/basic/app.module.ts diff --git a/src/components/spinner/test/basic/main.html b/packages/ionic-angular/src/components/spinner/test/basic/main.html similarity index 100% rename from src/components/spinner/test/basic/main.html rename to packages/ionic-angular/src/components/spinner/test/basic/main.html diff --git a/src/components/spinner/test/basic/main.ts b/packages/ionic-angular/src/components/spinner/test/basic/main.ts similarity index 100% rename from src/components/spinner/test/basic/main.ts rename to packages/ionic-angular/src/components/spinner/test/basic/main.ts diff --git a/src/components/spinner/test/colors/app.module.ts b/packages/ionic-angular/src/components/spinner/test/colors/app.module.ts similarity index 100% rename from src/components/spinner/test/colors/app.module.ts rename to packages/ionic-angular/src/components/spinner/test/colors/app.module.ts diff --git a/src/components/spinner/test/colors/main.html b/packages/ionic-angular/src/components/spinner/test/colors/main.html similarity index 100% rename from src/components/spinner/test/colors/main.html rename to packages/ionic-angular/src/components/spinner/test/colors/main.html diff --git a/src/components/spinner/test/colors/main.ts b/packages/ionic-angular/src/components/spinner/test/colors/main.ts similarity index 100% rename from src/components/spinner/test/colors/main.ts rename to packages/ionic-angular/src/components/spinner/test/colors/main.ts diff --git a/src/components/split-pane/split-pane.ios.scss b/packages/ionic-angular/src/components/split-pane/split-pane.ios.scss similarity index 100% rename from src/components/split-pane/split-pane.ios.scss rename to packages/ionic-angular/src/components/split-pane/split-pane.ios.scss diff --git a/src/components/split-pane/split-pane.md.scss b/packages/ionic-angular/src/components/split-pane/split-pane.md.scss similarity index 100% rename from src/components/split-pane/split-pane.md.scss rename to packages/ionic-angular/src/components/split-pane/split-pane.md.scss diff --git a/src/components/split-pane/split-pane.scss b/packages/ionic-angular/src/components/split-pane/split-pane.scss similarity index 100% rename from src/components/split-pane/split-pane.scss rename to packages/ionic-angular/src/components/split-pane/split-pane.scss diff --git a/src/components/split-pane/split-pane.ts b/packages/ionic-angular/src/components/split-pane/split-pane.ts similarity index 100% rename from src/components/split-pane/split-pane.ts rename to packages/ionic-angular/src/components/split-pane/split-pane.ts diff --git a/src/components/split-pane/split-pane.wp.scss b/packages/ionic-angular/src/components/split-pane/split-pane.wp.scss similarity index 100% rename from src/components/split-pane/split-pane.wp.scss rename to packages/ionic-angular/src/components/split-pane/split-pane.wp.scss diff --git a/src/components/split-pane/test/basic/app/app.component.html b/packages/ionic-angular/src/components/split-pane/test/basic/app/app.component.html similarity index 100% rename from src/components/split-pane/test/basic/app/app.component.html rename to packages/ionic-angular/src/components/split-pane/test/basic/app/app.component.html diff --git a/src/components/split-pane/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/split-pane/test/basic/app/app.component.ts similarity index 100% rename from src/components/split-pane/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/app/app.component.ts diff --git a/src/components/split-pane/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/split-pane/test/basic/app/app.module.ts similarity index 100% rename from src/components/split-pane/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/app/app.module.ts diff --git a/src/components/split-pane/test/basic/app/main.ts b/packages/ionic-angular/src/components/split-pane/test/basic/app/main.ts similarity index 100% rename from src/components/split-pane/test/basic/app/main.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/app/main.ts diff --git a/src/components/split-pane/test/basic/e2e.ts b/packages/ionic-angular/src/components/split-pane/test/basic/e2e.ts similarity index 100% rename from src/components/split-pane/test/basic/e2e.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/e2e.ts diff --git a/src/components/split-pane/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/split-pane/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/split-pane/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/split-pane/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/split-pane/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/split-pane/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/pages/page-one/page-one.ts diff --git a/src/components/split-pane/test/basic/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/split-pane/test/basic/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/split-pane/test/basic/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/pages/page-two/page-two.module.ts diff --git a/src/components/split-pane/test/basic/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/split-pane/test/basic/pages/page-two/page-two.ts similarity index 100% rename from src/components/split-pane/test/basic/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/pages/page-two/page-two.ts diff --git a/src/components/split-pane/test/basic/pages/side-page/side-page.module.ts b/packages/ionic-angular/src/components/split-pane/test/basic/pages/side-page/side-page.module.ts similarity index 100% rename from src/components/split-pane/test/basic/pages/side-page/side-page.module.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/pages/side-page/side-page.module.ts diff --git a/src/components/split-pane/test/basic/pages/side-page/side-page.ts b/packages/ionic-angular/src/components/split-pane/test/basic/pages/side-page/side-page.ts similarity index 100% rename from src/components/split-pane/test/basic/pages/side-page/side-page.ts rename to packages/ionic-angular/src/components/split-pane/test/basic/pages/side-page/side-page.ts diff --git a/src/components/split-pane/test/menus/app/app.component.html b/packages/ionic-angular/src/components/split-pane/test/menus/app/app.component.html similarity index 100% rename from src/components/split-pane/test/menus/app/app.component.html rename to packages/ionic-angular/src/components/split-pane/test/menus/app/app.component.html diff --git a/src/components/split-pane/test/menus/app/app.component.ts b/packages/ionic-angular/src/components/split-pane/test/menus/app/app.component.ts similarity index 100% rename from src/components/split-pane/test/menus/app/app.component.ts rename to packages/ionic-angular/src/components/split-pane/test/menus/app/app.component.ts diff --git a/src/components/split-pane/test/menus/app/app.module.ts b/packages/ionic-angular/src/components/split-pane/test/menus/app/app.module.ts similarity index 100% rename from src/components/split-pane/test/menus/app/app.module.ts rename to packages/ionic-angular/src/components/split-pane/test/menus/app/app.module.ts diff --git a/src/components/split-pane/test/menus/app/main.ts b/packages/ionic-angular/src/components/split-pane/test/menus/app/main.ts similarity index 100% rename from src/components/split-pane/test/menus/app/main.ts rename to packages/ionic-angular/src/components/split-pane/test/menus/app/main.ts diff --git a/src/components/split-pane/test/menus/pages/page-one/page-one.html b/packages/ionic-angular/src/components/split-pane/test/menus/pages/page-one/page-one.html similarity index 100% rename from src/components/split-pane/test/menus/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/split-pane/test/menus/pages/page-one/page-one.html diff --git a/src/components/split-pane/test/menus/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/split-pane/test/menus/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/split-pane/test/menus/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/split-pane/test/menus/pages/page-one/page-one.module.ts diff --git a/src/components/split-pane/test/menus/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/split-pane/test/menus/pages/page-one/page-one.ts similarity index 100% rename from src/components/split-pane/test/menus/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/split-pane/test/menus/pages/page-one/page-one.ts diff --git a/src/components/split-pane/test/menus/pages/page-two/page-two.html b/packages/ionic-angular/src/components/split-pane/test/menus/pages/page-two/page-two.html similarity index 100% rename from src/components/split-pane/test/menus/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/split-pane/test/menus/pages/page-two/page-two.html diff --git a/src/components/split-pane/test/menus/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/split-pane/test/menus/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/split-pane/test/menus/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/split-pane/test/menus/pages/page-two/page-two.module.ts diff --git a/src/components/split-pane/test/menus/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/split-pane/test/menus/pages/page-two/page-two.ts similarity index 100% rename from src/components/split-pane/test/menus/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/split-pane/test/menus/pages/page-two/page-two.ts diff --git a/src/components/split-pane/test/nested/app/app.component.html b/packages/ionic-angular/src/components/split-pane/test/nested/app/app.component.html similarity index 100% rename from src/components/split-pane/test/nested/app/app.component.html rename to packages/ionic-angular/src/components/split-pane/test/nested/app/app.component.html diff --git a/src/components/split-pane/test/nested/app/app.component.ts b/packages/ionic-angular/src/components/split-pane/test/nested/app/app.component.ts similarity index 100% rename from src/components/split-pane/test/nested/app/app.component.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/app/app.component.ts diff --git a/src/components/split-pane/test/nested/app/app.module.ts b/packages/ionic-angular/src/components/split-pane/test/nested/app/app.module.ts similarity index 100% rename from src/components/split-pane/test/nested/app/app.module.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/app/app.module.ts diff --git a/src/components/split-pane/test/nested/app/main.ts b/packages/ionic-angular/src/components/split-pane/test/nested/app/main.ts similarity index 100% rename from src/components/split-pane/test/nested/app/main.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/app/main.ts diff --git a/src/components/split-pane/test/nested/pages/page-four/page-four.html b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-four/page-four.html similarity index 100% rename from src/components/split-pane/test/nested/pages/page-four/page-four.html rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-four/page-four.html diff --git a/src/components/split-pane/test/nested/pages/page-four/page-four.module.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-four/page-four.module.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/page-four/page-four.module.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-four/page-four.module.ts diff --git a/src/components/split-pane/test/nested/pages/page-four/page-four.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-four/page-four.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/page-four/page-four.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-four/page-four.ts diff --git a/src/components/split-pane/test/nested/pages/page-one/page-one.html b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-one/page-one.html similarity index 100% rename from src/components/split-pane/test/nested/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-one/page-one.html diff --git a/src/components/split-pane/test/nested/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-one/page-one.module.ts diff --git a/src/components/split-pane/test/nested/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-one/page-one.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-one/page-one.ts diff --git a/src/components/split-pane/test/nested/pages/page-three/page-three.html b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-three/page-three.html similarity index 100% rename from src/components/split-pane/test/nested/pages/page-three/page-three.html rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-three/page-three.html diff --git a/src/components/split-pane/test/nested/pages/page-three/page-three.module.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-three/page-three.module.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/page-three/page-three.module.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-three/page-three.module.ts diff --git a/src/components/split-pane/test/nested/pages/page-three/page-three.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-three/page-three.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/page-three/page-three.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-three/page-three.ts diff --git a/src/components/split-pane/test/nested/pages/page-two/page-two.html b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-two/page-two.html similarity index 100% rename from src/components/split-pane/test/nested/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-two/page-two.html diff --git a/src/components/split-pane/test/nested/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-two/page-two.module.ts diff --git a/src/components/split-pane/test/nested/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/page-two/page-two.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/page-two/page-two.ts diff --git a/src/components/split-pane/test/nested/pages/side-page/side-page.html b/packages/ionic-angular/src/components/split-pane/test/nested/pages/side-page/side-page.html similarity index 100% rename from src/components/split-pane/test/nested/pages/side-page/side-page.html rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/side-page/side-page.html diff --git a/src/components/split-pane/test/nested/pages/side-page/side-page.module.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/side-page/side-page.module.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/side-page/side-page.module.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/side-page/side-page.module.ts diff --git a/src/components/split-pane/test/nested/pages/side-page/side-page.ts b/packages/ionic-angular/src/components/split-pane/test/nested/pages/side-page/side-page.ts similarity index 100% rename from src/components/split-pane/test/nested/pages/side-page/side-page.ts rename to packages/ionic-angular/src/components/split-pane/test/nested/pages/side-page/side-page.ts diff --git a/src/components/split-pane/test/tabs/app/app.component.html b/packages/ionic-angular/src/components/split-pane/test/tabs/app/app.component.html similarity index 100% rename from src/components/split-pane/test/tabs/app/app.component.html rename to packages/ionic-angular/src/components/split-pane/test/tabs/app/app.component.html diff --git a/src/components/split-pane/test/tabs/app/app.component.ts b/packages/ionic-angular/src/components/split-pane/test/tabs/app/app.component.ts similarity index 100% rename from src/components/split-pane/test/tabs/app/app.component.ts rename to packages/ionic-angular/src/components/split-pane/test/tabs/app/app.component.ts diff --git a/src/components/split-pane/test/tabs/app/app.module.ts b/packages/ionic-angular/src/components/split-pane/test/tabs/app/app.module.ts similarity index 100% rename from src/components/split-pane/test/tabs/app/app.module.ts rename to packages/ionic-angular/src/components/split-pane/test/tabs/app/app.module.ts diff --git a/src/components/split-pane/test/tabs/app/main.ts b/packages/ionic-angular/src/components/split-pane/test/tabs/app/main.ts similarity index 100% rename from src/components/split-pane/test/tabs/app/main.ts rename to packages/ionic-angular/src/components/split-pane/test/tabs/app/main.ts diff --git a/src/components/split-pane/test/tabs/pages/page-one/page-one.html b/packages/ionic-angular/src/components/split-pane/test/tabs/pages/page-one/page-one.html similarity index 100% rename from src/components/split-pane/test/tabs/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/split-pane/test/tabs/pages/page-one/page-one.html diff --git a/src/components/split-pane/test/tabs/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/split-pane/test/tabs/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/split-pane/test/tabs/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/split-pane/test/tabs/pages/page-one/page-one.module.ts diff --git a/src/components/split-pane/test/tabs/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/split-pane/test/tabs/pages/page-one/page-one.ts similarity index 100% rename from src/components/split-pane/test/tabs/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/split-pane/test/tabs/pages/page-one/page-one.ts diff --git a/src/components/split-pane/test/tabs/pages/side-page/side-page.html b/packages/ionic-angular/src/components/split-pane/test/tabs/pages/side-page/side-page.html similarity index 100% rename from src/components/split-pane/test/tabs/pages/side-page/side-page.html rename to packages/ionic-angular/src/components/split-pane/test/tabs/pages/side-page/side-page.html diff --git a/src/components/split-pane/test/tabs/pages/side-page/side-page.module.ts b/packages/ionic-angular/src/components/split-pane/test/tabs/pages/side-page/side-page.module.ts similarity index 100% rename from src/components/split-pane/test/tabs/pages/side-page/side-page.module.ts rename to packages/ionic-angular/src/components/split-pane/test/tabs/pages/side-page/side-page.module.ts diff --git a/src/components/split-pane/test/tabs/pages/side-page/side-page.ts b/packages/ionic-angular/src/components/split-pane/test/tabs/pages/side-page/side-page.ts similarity index 100% rename from src/components/split-pane/test/tabs/pages/side-page/side-page.ts rename to packages/ionic-angular/src/components/split-pane/test/tabs/pages/side-page/side-page.ts diff --git a/src/components/tabs/tab-button.ts b/packages/ionic-angular/src/components/tabs/tab-button.ts similarity index 100% rename from src/components/tabs/tab-button.ts rename to packages/ionic-angular/src/components/tabs/tab-button.ts diff --git a/src/components/tabs/tab-highlight.ts b/packages/ionic-angular/src/components/tabs/tab-highlight.ts similarity index 100% rename from src/components/tabs/tab-highlight.ts rename to packages/ionic-angular/src/components/tabs/tab-highlight.ts diff --git a/src/components/tabs/tab.ts b/packages/ionic-angular/src/components/tabs/tab.ts similarity index 100% rename from src/components/tabs/tab.ts rename to packages/ionic-angular/src/components/tabs/tab.ts diff --git a/src/components/tabs/tabs.ios.scss b/packages/ionic-angular/src/components/tabs/tabs.ios.scss similarity index 100% rename from src/components/tabs/tabs.ios.scss rename to packages/ionic-angular/src/components/tabs/tabs.ios.scss diff --git a/src/components/tabs/tabs.md.scss b/packages/ionic-angular/src/components/tabs/tabs.md.scss similarity index 100% rename from src/components/tabs/tabs.md.scss rename to packages/ionic-angular/src/components/tabs/tabs.md.scss diff --git a/src/components/tabs/tabs.scss b/packages/ionic-angular/src/components/tabs/tabs.scss similarity index 100% rename from src/components/tabs/tabs.scss rename to packages/ionic-angular/src/components/tabs/tabs.scss diff --git a/src/components/tabs/tabs.ts b/packages/ionic-angular/src/components/tabs/tabs.ts similarity index 100% rename from src/components/tabs/tabs.ts rename to packages/ionic-angular/src/components/tabs/tabs.ts diff --git a/src/components/tabs/tabs.wp.scss b/packages/ionic-angular/src/components/tabs/tabs.wp.scss similarity index 100% rename from src/components/tabs/tabs.wp.scss rename to packages/ionic-angular/src/components/tabs/tabs.wp.scss diff --git a/src/components/tabs/test/advanced/app/app.component.ts b/packages/ionic-angular/src/components/tabs/test/advanced/app/app.component.ts similarity index 100% rename from src/components/tabs/test/advanced/app/app.component.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/app/app.component.ts diff --git a/src/components/tabs/test/advanced/app/app.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/app/app.module.ts similarity index 100% rename from src/components/tabs/test/advanced/app/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/app/app.module.ts diff --git a/src/components/tabs/test/advanced/app/main.ts b/packages/ionic-angular/src/components/tabs/test/advanced/app/main.ts similarity index 100% rename from src/components/tabs/test/advanced/app/main.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/app/main.ts diff --git a/src/components/tabs/test/advanced/e2e.ts b/packages/ionic-angular/src/components/tabs/test/advanced/e2e.ts similarity index 100% rename from src/components/tabs/test/advanced/e2e.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/e2e.ts diff --git a/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.html similarity index 100% rename from src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.html diff --git a/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.module.ts diff --git a/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/modal-chat-page/modal-chat-page.ts diff --git a/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.html similarity index 100% rename from src/components/tabs/test/advanced/pages/signin-page/sign-in-page.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.html diff --git a/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/signin-page/sign-in-page.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.module.ts diff --git a/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/signin-page/sign-in-page.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/signin-page/sign-in-page.ts diff --git a/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.html similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.html diff --git a/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.module.ts diff --git a/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page1/tab1-page1.ts diff --git a/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.html similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.html diff --git a/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.module.ts diff --git a/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page2/tab1-page2.ts diff --git a/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.html similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.html diff --git a/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.module.ts diff --git a/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab1-page3/tab1-page3.ts diff --git a/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.html similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.html diff --git a/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.module.ts diff --git a/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page1/tab2-page1.ts diff --git a/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.html similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.html diff --git a/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.module.ts diff --git a/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page2/tab2-page2.ts diff --git a/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.html similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.html diff --git a/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.module.ts diff --git a/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab2-page3/tab2-page3.ts diff --git a/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.html similarity index 100% rename from src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.html diff --git a/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.module.ts diff --git a/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tab3-page1/tab3-page1.ts diff --git a/src/components/tabs/test/advanced/pages/tabs-page/tabs.html b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tabs-page/tabs.html similarity index 100% rename from src/components/tabs/test/advanced/pages/tabs-page/tabs.html rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tabs-page/tabs.html diff --git a/src/components/tabs/test/advanced/pages/tabs-page/tabs.module.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tabs-page/tabs.module.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tabs-page/tabs.module.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tabs-page/tabs.module.ts diff --git a/src/components/tabs/test/advanced/pages/tabs-page/tabs.ts b/packages/ionic-angular/src/components/tabs/test/advanced/pages/tabs-page/tabs.ts similarity index 100% rename from src/components/tabs/test/advanced/pages/tabs-page/tabs.ts rename to packages/ionic-angular/src/components/tabs/test/advanced/pages/tabs-page/tabs.ts diff --git a/src/components/tabs/test/badges/app/app.component.html b/packages/ionic-angular/src/components/tabs/test/badges/app/app.component.html similarity index 100% rename from src/components/tabs/test/badges/app/app.component.html rename to packages/ionic-angular/src/components/tabs/test/badges/app/app.component.html diff --git a/src/components/tabs/test/badges/app/app.component.ts b/packages/ionic-angular/src/components/tabs/test/badges/app/app.component.ts similarity index 100% rename from src/components/tabs/test/badges/app/app.component.ts rename to packages/ionic-angular/src/components/tabs/test/badges/app/app.component.ts diff --git a/src/components/tabs/test/badges/app/app.module.ts b/packages/ionic-angular/src/components/tabs/test/badges/app/app.module.ts similarity index 100% rename from src/components/tabs/test/badges/app/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/badges/app/app.module.ts diff --git a/src/components/tabs/test/badges/app/main.ts b/packages/ionic-angular/src/components/tabs/test/badges/app/main.ts similarity index 100% rename from src/components/tabs/test/badges/app/main.ts rename to packages/ionic-angular/src/components/tabs/test/badges/app/main.ts diff --git a/src/components/tabs/test/badges/e2e.ts b/packages/ionic-angular/src/components/tabs/test/badges/e2e.ts similarity index 100% rename from src/components/tabs/test/badges/e2e.ts rename to packages/ionic-angular/src/components/tabs/test/badges/e2e.ts diff --git a/src/components/tabs/test/badges/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/tabs/test/badges/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/tabs/test/badges/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/tabs/test/badges/pages/page-one/page-one.module.ts diff --git a/src/components/tabs/test/badges/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/tabs/test/badges/pages/page-one/page-one.ts similarity index 100% rename from src/components/tabs/test/badges/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/tabs/test/badges/pages/page-one/page-one.ts diff --git a/src/components/tabs/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/tabs/test/basic/app/app.component.ts similarity index 100% rename from src/components/tabs/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/tabs/test/basic/app/app.component.ts diff --git a/src/components/tabs/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/tabs/test/basic/app/app.module.ts similarity index 100% rename from src/components/tabs/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/basic/app/app.module.ts diff --git a/src/components/tabs/test/basic/app/main.ts b/packages/ionic-angular/src/components/tabs/test/basic/app/main.ts similarity index 100% rename from src/components/tabs/test/basic/app/main.ts rename to packages/ionic-angular/src/components/tabs/test/basic/app/main.ts diff --git a/src/components/tabs/test/basic/components/modal/modal.module.ts b/packages/ionic-angular/src/components/tabs/test/basic/components/modal/modal.module.ts similarity index 100% rename from src/components/tabs/test/basic/components/modal/modal.module.ts rename to packages/ionic-angular/src/components/tabs/test/basic/components/modal/modal.module.ts diff --git a/src/components/tabs/test/basic/components/modal/modal.ts b/packages/ionic-angular/src/components/tabs/test/basic/components/modal/modal.ts similarity index 100% rename from src/components/tabs/test/basic/components/modal/modal.ts rename to packages/ionic-angular/src/components/tabs/test/basic/components/modal/modal.ts diff --git a/src/components/tabs/test/basic/e2e.ts b/packages/ionic-angular/src/components/tabs/test/basic/e2e.ts similarity index 100% rename from src/components/tabs/test/basic/e2e.ts rename to packages/ionic-angular/src/components/tabs/test/basic/e2e.ts diff --git a/src/components/tabs/test/basic/pages/modal-page/modal-page.html b/packages/ionic-angular/src/components/tabs/test/basic/pages/modal-page/modal-page.html similarity index 100% rename from src/components/tabs/test/basic/pages/modal-page/modal-page.html rename to packages/ionic-angular/src/components/tabs/test/basic/pages/modal-page/modal-page.html diff --git a/src/components/tabs/test/basic/pages/modal-page/modal-page.module.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/modal-page/modal-page.module.ts similarity index 100% rename from src/components/tabs/test/basic/pages/modal-page/modal-page.module.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/modal-page/modal-page.module.ts diff --git a/src/components/tabs/test/basic/pages/modal-page/modal-page.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/modal-page/modal-page.ts similarity index 100% rename from src/components/tabs/test/basic/pages/modal-page/modal-page.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/modal-page/modal-page.ts diff --git a/src/components/tabs/test/basic/pages/tab-one/tab-one.html b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-one/tab-one.html similarity index 100% rename from src/components/tabs/test/basic/pages/tab-one/tab-one.html rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-one/tab-one.html diff --git a/src/components/tabs/test/basic/pages/tab-one/tab-one.module.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-one/tab-one.module.ts similarity index 100% rename from src/components/tabs/test/basic/pages/tab-one/tab-one.module.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-one/tab-one.module.ts diff --git a/src/components/tabs/test/basic/pages/tab-one/tab-one.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-one/tab-one.ts similarity index 100% rename from src/components/tabs/test/basic/pages/tab-one/tab-one.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-one/tab-one.ts diff --git a/src/components/tabs/test/basic/pages/tab-three/tab-three.html b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-three/tab-three.html similarity index 100% rename from src/components/tabs/test/basic/pages/tab-three/tab-three.html rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-three/tab-three.html diff --git a/src/components/tabs/test/basic/pages/tab-three/tab-three.module.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-three/tab-three.module.ts similarity index 100% rename from src/components/tabs/test/basic/pages/tab-three/tab-three.module.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-three/tab-three.module.ts diff --git a/src/components/tabs/test/basic/pages/tab-three/tab-three.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-three/tab-three.ts similarity index 100% rename from src/components/tabs/test/basic/pages/tab-three/tab-three.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-three/tab-three.ts diff --git a/src/components/tabs/test/basic/pages/tab-two/tab-two.html b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-two/tab-two.html similarity index 100% rename from src/components/tabs/test/basic/pages/tab-two/tab-two.html rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-two/tab-two.html diff --git a/src/components/tabs/test/basic/pages/tab-two/tab-two.module.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-two/tab-two.module.ts similarity index 100% rename from src/components/tabs/test/basic/pages/tab-two/tab-two.module.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-two/tab-two.module.ts diff --git a/src/components/tabs/test/basic/pages/tab-two/tab-two.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/tab-two/tab-two.ts similarity index 100% rename from src/components/tabs/test/basic/pages/tab-two/tab-two.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tab-two/tab-two.ts diff --git a/src/components/tabs/test/basic/pages/tabs-page/tabs-page.html b/packages/ionic-angular/src/components/tabs/test/basic/pages/tabs-page/tabs-page.html similarity index 100% rename from src/components/tabs/test/basic/pages/tabs-page/tabs-page.html rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tabs-page/tabs-page.html diff --git a/src/components/tabs/test/basic/pages/tabs-page/tabs-page.module.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/tabs-page/tabs-page.module.ts similarity index 100% rename from src/components/tabs/test/basic/pages/tabs-page/tabs-page.module.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tabs-page/tabs-page.module.ts diff --git a/src/components/tabs/test/basic/pages/tabs-page/tabs-page.ts b/packages/ionic-angular/src/components/tabs/test/basic/pages/tabs-page/tabs-page.ts similarity index 100% rename from src/components/tabs/test/basic/pages/tabs-page/tabs-page.ts rename to packages/ionic-angular/src/components/tabs/test/basic/pages/tabs-page/tabs-page.ts diff --git a/src/components/tabs/test/colors/app/app.component.html b/packages/ionic-angular/src/components/tabs/test/colors/app/app.component.html similarity index 100% rename from src/components/tabs/test/colors/app/app.component.html rename to packages/ionic-angular/src/components/tabs/test/colors/app/app.component.html diff --git a/src/components/tabs/test/colors/app/app.component.ts b/packages/ionic-angular/src/components/tabs/test/colors/app/app.component.ts similarity index 100% rename from src/components/tabs/test/colors/app/app.component.ts rename to packages/ionic-angular/src/components/tabs/test/colors/app/app.component.ts diff --git a/src/components/tabs/test/colors/app/app.module.ts b/packages/ionic-angular/src/components/tabs/test/colors/app/app.module.ts similarity index 100% rename from src/components/tabs/test/colors/app/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/colors/app/app.module.ts diff --git a/src/components/tabs/test/colors/app/main.ts b/packages/ionic-angular/src/components/tabs/test/colors/app/main.ts similarity index 100% rename from src/components/tabs/test/colors/app/main.ts rename to packages/ionic-angular/src/components/tabs/test/colors/app/main.ts diff --git a/src/components/tabs/test/colors/e2e.ts b/packages/ionic-angular/src/components/tabs/test/colors/e2e.ts similarity index 100% rename from src/components/tabs/test/colors/e2e.ts rename to packages/ionic-angular/src/components/tabs/test/colors/e2e.ts diff --git a/src/components/tabs/test/colors/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/tabs/test/colors/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/tabs/test/colors/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/tabs/test/colors/pages/page-one/page-one.module.ts diff --git a/src/components/tabs/test/colors/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/tabs/test/colors/pages/page-one/page-one.ts similarity index 100% rename from src/components/tabs/test/colors/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/tabs/test/colors/pages/page-one/page-one.ts diff --git a/src/components/tabs/test/events/app.module.ts b/packages/ionic-angular/src/components/tabs/test/events/app.module.ts similarity index 100% rename from src/components/tabs/test/events/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/events/app.module.ts diff --git a/src/components/tabs/test/events/main.ts b/packages/ionic-angular/src/components/tabs/test/events/main.ts similarity index 100% rename from src/components/tabs/test/events/main.ts rename to packages/ionic-angular/src/components/tabs/test/events/main.ts diff --git a/src/components/tabs/test/ghost/app.module.ts b/packages/ionic-angular/src/components/tabs/test/ghost/app.module.ts similarity index 100% rename from src/components/tabs/test/ghost/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/ghost/app.module.ts diff --git a/src/components/tabs/test/ghost/main.ts b/packages/ionic-angular/src/components/tabs/test/ghost/main.ts similarity index 100% rename from src/components/tabs/test/ghost/main.ts rename to packages/ionic-angular/src/components/tabs/test/ghost/main.ts diff --git a/src/components/tabs/test/lifecyles/app.module.ts b/packages/ionic-angular/src/components/tabs/test/lifecyles/app.module.ts similarity index 100% rename from src/components/tabs/test/lifecyles/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/lifecyles/app.module.ts diff --git a/src/components/tabs/test/lifecyles/main.ts b/packages/ionic-angular/src/components/tabs/test/lifecyles/main.ts similarity index 100% rename from src/components/tabs/test/lifecyles/main.ts rename to packages/ionic-angular/src/components/tabs/test/lifecyles/main.ts diff --git a/src/components/tabs/test/tab-bar-scenarios/app/app.component.html b/packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/app/app.component.html similarity index 100% rename from src/components/tabs/test/tab-bar-scenarios/app/app.component.html rename to packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/app/app.component.html diff --git a/src/components/tabs/test/tab-bar-scenarios/app/app.component.ts b/packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/app/app.component.ts similarity index 100% rename from src/components/tabs/test/tab-bar-scenarios/app/app.component.ts rename to packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/app/app.component.ts diff --git a/src/components/tabs/test/tab-bar-scenarios/app/app.module.ts b/packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/app/app.module.ts similarity index 100% rename from src/components/tabs/test/tab-bar-scenarios/app/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/app/app.module.ts diff --git a/src/components/tabs/test/tab-bar-scenarios/app/main.ts b/packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/app/main.ts similarity index 100% rename from src/components/tabs/test/tab-bar-scenarios/app/main.ts rename to packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/app/main.ts diff --git a/src/components/tabs/test/tab-bar-scenarios/e2e.ts b/packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/e2e.ts similarity index 100% rename from src/components/tabs/test/tab-bar-scenarios/e2e.ts rename to packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/e2e.ts diff --git a/src/components/tabs/test/tab-bar-scenarios/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/tabs/test/tab-bar-scenarios/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/pages/root-page/root-page.module.ts diff --git a/src/components/tabs/test/tab-bar-scenarios/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/pages/root-page/root-page.ts similarity index 100% rename from src/components/tabs/test/tab-bar-scenarios/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/tabs/test/tab-bar-scenarios/pages/root-page/root-page.ts diff --git a/src/components/tabs/test/tabs.spec.ts b/packages/ionic-angular/src/components/tabs/test/tabs.spec.ts similarity index 100% rename from src/components/tabs/test/tabs.spec.ts rename to packages/ionic-angular/src/components/tabs/test/tabs.spec.ts diff --git a/src/components/tabs/test/top/app.module.ts b/packages/ionic-angular/src/components/tabs/test/top/app.module.ts similarity index 100% rename from src/components/tabs/test/top/app.module.ts rename to packages/ionic-angular/src/components/tabs/test/top/app.module.ts diff --git a/src/components/tabs/test/top/main.ts b/packages/ionic-angular/src/components/tabs/test/top/main.ts similarity index 100% rename from src/components/tabs/test/top/main.ts rename to packages/ionic-angular/src/components/tabs/test/top/main.ts diff --git a/src/components/thumbnail/thumbnail.ts b/packages/ionic-angular/src/components/thumbnail/thumbnail.ts similarity index 100% rename from src/components/thumbnail/thumbnail.ts rename to packages/ionic-angular/src/components/thumbnail/thumbnail.ts diff --git a/src/components/toast/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/toast/test/basic/app/app.component.ts similarity index 100% rename from src/components/toast/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/toast/test/basic/app/app.component.ts diff --git a/src/components/toast/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/toast/test/basic/app/app.module.ts similarity index 100% rename from src/components/toast/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/toast/test/basic/app/app.module.ts diff --git a/src/components/toast/test/basic/app/main.ts b/packages/ionic-angular/src/components/toast/test/basic/app/main.ts similarity index 100% rename from src/components/toast/test/basic/app/main.ts rename to packages/ionic-angular/src/components/toast/test/basic/app/main.ts diff --git a/src/components/toast/test/basic/e2e.ts b/packages/ionic-angular/src/components/toast/test/basic/e2e.ts similarity index 100% rename from src/components/toast/test/basic/e2e.ts rename to packages/ionic-angular/src/components/toast/test/basic/e2e.ts diff --git a/src/components/toast/test/basic/pages/page-one/page-one.html b/packages/ionic-angular/src/components/toast/test/basic/pages/page-one/page-one.html similarity index 100% rename from src/components/toast/test/basic/pages/page-one/page-one.html rename to packages/ionic-angular/src/components/toast/test/basic/pages/page-one/page-one.html diff --git a/src/components/toast/test/basic/pages/page-one/page-one.module.ts b/packages/ionic-angular/src/components/toast/test/basic/pages/page-one/page-one.module.ts similarity index 100% rename from src/components/toast/test/basic/pages/page-one/page-one.module.ts rename to packages/ionic-angular/src/components/toast/test/basic/pages/page-one/page-one.module.ts diff --git a/src/components/toast/test/basic/pages/page-one/page-one.ts b/packages/ionic-angular/src/components/toast/test/basic/pages/page-one/page-one.ts similarity index 100% rename from src/components/toast/test/basic/pages/page-one/page-one.ts rename to packages/ionic-angular/src/components/toast/test/basic/pages/page-one/page-one.ts diff --git a/src/components/toast/test/basic/pages/page-two/page-two.html b/packages/ionic-angular/src/components/toast/test/basic/pages/page-two/page-two.html similarity index 100% rename from src/components/toast/test/basic/pages/page-two/page-two.html rename to packages/ionic-angular/src/components/toast/test/basic/pages/page-two/page-two.html diff --git a/src/components/toast/test/basic/pages/page-two/page-two.module.ts b/packages/ionic-angular/src/components/toast/test/basic/pages/page-two/page-two.module.ts similarity index 100% rename from src/components/toast/test/basic/pages/page-two/page-two.module.ts rename to packages/ionic-angular/src/components/toast/test/basic/pages/page-two/page-two.module.ts diff --git a/src/components/toast/test/basic/pages/page-two/page-two.ts b/packages/ionic-angular/src/components/toast/test/basic/pages/page-two/page-two.ts similarity index 100% rename from src/components/toast/test/basic/pages/page-two/page-two.ts rename to packages/ionic-angular/src/components/toast/test/basic/pages/page-two/page-two.ts diff --git a/src/components/toast/test/toast.spec.ts b/packages/ionic-angular/src/components/toast/test/toast.spec.ts similarity index 100% rename from src/components/toast/test/toast.spec.ts rename to packages/ionic-angular/src/components/toast/test/toast.spec.ts diff --git a/src/components/toast/toast-component.ts b/packages/ionic-angular/src/components/toast/toast-component.ts similarity index 100% rename from src/components/toast/toast-component.ts rename to packages/ionic-angular/src/components/toast/toast-component.ts diff --git a/src/components/toast/toast-controller.ts b/packages/ionic-angular/src/components/toast/toast-controller.ts similarity index 100% rename from src/components/toast/toast-controller.ts rename to packages/ionic-angular/src/components/toast/toast-controller.ts diff --git a/src/components/toast/toast-options.ts b/packages/ionic-angular/src/components/toast/toast-options.ts similarity index 100% rename from src/components/toast/toast-options.ts rename to packages/ionic-angular/src/components/toast/toast-options.ts diff --git a/src/components/toast/toast-transitions.ts b/packages/ionic-angular/src/components/toast/toast-transitions.ts similarity index 100% rename from src/components/toast/toast-transitions.ts rename to packages/ionic-angular/src/components/toast/toast-transitions.ts diff --git a/src/components/toast/toast.ios.scss b/packages/ionic-angular/src/components/toast/toast.ios.scss similarity index 100% rename from src/components/toast/toast.ios.scss rename to packages/ionic-angular/src/components/toast/toast.ios.scss diff --git a/src/components/toast/toast.md.scss b/packages/ionic-angular/src/components/toast/toast.md.scss similarity index 100% rename from src/components/toast/toast.md.scss rename to packages/ionic-angular/src/components/toast/toast.md.scss diff --git a/src/components/toast/toast.scss b/packages/ionic-angular/src/components/toast/toast.scss similarity index 100% rename from src/components/toast/toast.scss rename to packages/ionic-angular/src/components/toast/toast.scss diff --git a/src/components/toast/toast.ts b/packages/ionic-angular/src/components/toast/toast.ts similarity index 100% rename from src/components/toast/toast.ts rename to packages/ionic-angular/src/components/toast/toast.ts diff --git a/src/components/toast/toast.wp.scss b/packages/ionic-angular/src/components/toast/toast.wp.scss similarity index 100% rename from src/components/toast/toast.wp.scss rename to packages/ionic-angular/src/components/toast/toast.wp.scss diff --git a/src/components/toggle/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/toggle/test/basic/app/app.component.ts similarity index 100% rename from src/components/toggle/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/toggle/test/basic/app/app.component.ts diff --git a/src/components/toggle/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/toggle/test/basic/app/app.module.ts similarity index 100% rename from src/components/toggle/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/toggle/test/basic/app/app.module.ts diff --git a/src/components/toggle/test/basic/app/main.ts b/packages/ionic-angular/src/components/toggle/test/basic/app/main.ts similarity index 100% rename from src/components/toggle/test/basic/app/main.ts rename to packages/ionic-angular/src/components/toggle/test/basic/app/main.ts diff --git a/src/components/toggle/test/basic/e2e.ts b/packages/ionic-angular/src/components/toggle/test/basic/e2e.ts similarity index 100% rename from src/components/toggle/test/basic/e2e.ts rename to packages/ionic-angular/src/components/toggle/test/basic/e2e.ts diff --git a/src/components/toggle/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/toggle/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/toggle/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/toggle/test/basic/pages/root-page/root-page.html diff --git a/src/components/toggle/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/toggle/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/toggle/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/toggle/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/toggle/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/toggle/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/toggle/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/toggle/test/basic/pages/root-page/root-page.ts diff --git a/src/components/toggle/toggle.ios.scss b/packages/ionic-angular/src/components/toggle/toggle.ios.scss similarity index 100% rename from src/components/toggle/toggle.ios.scss rename to packages/ionic-angular/src/components/toggle/toggle.ios.scss diff --git a/src/components/toggle/toggle.md.scss b/packages/ionic-angular/src/components/toggle/toggle.md.scss similarity index 100% rename from src/components/toggle/toggle.md.scss rename to packages/ionic-angular/src/components/toggle/toggle.md.scss diff --git a/src/components/toggle/toggle.scss b/packages/ionic-angular/src/components/toggle/toggle.scss similarity index 100% rename from src/components/toggle/toggle.scss rename to packages/ionic-angular/src/components/toggle/toggle.scss diff --git a/src/components/toggle/toggle.tsx b/packages/ionic-angular/src/components/toggle/toggle.tsx similarity index 100% rename from src/components/toggle/toggle.tsx rename to packages/ionic-angular/src/components/toggle/toggle.tsx diff --git a/src/components/toggle/toggle.wp.scss b/packages/ionic-angular/src/components/toggle/toggle.wp.scss similarity index 100% rename from src/components/toggle/toggle.wp.scss rename to packages/ionic-angular/src/components/toggle/toggle.wp.scss diff --git a/src/components/toolbar/navbar.ts b/packages/ionic-angular/src/components/toolbar/navbar.ts similarity index 100% rename from src/components/toolbar/navbar.ts rename to packages/ionic-angular/src/components/toolbar/navbar.ts diff --git a/src/components/toolbar/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/toolbar/test/basic/app/app.component.ts similarity index 100% rename from src/components/toolbar/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/toolbar/test/basic/app/app.component.ts diff --git a/src/components/toolbar/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/toolbar/test/basic/app/app.module.ts similarity index 100% rename from src/components/toolbar/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/toolbar/test/basic/app/app.module.ts diff --git a/src/components/toolbar/test/basic/app/main.ts b/packages/ionic-angular/src/components/toolbar/test/basic/app/main.ts similarity index 100% rename from src/components/toolbar/test/basic/app/main.ts rename to packages/ionic-angular/src/components/toolbar/test/basic/app/main.ts diff --git a/src/components/toolbar/test/basic/e2e.ts b/packages/ionic-angular/src/components/toolbar/test/basic/e2e.ts similarity index 100% rename from src/components/toolbar/test/basic/e2e.ts rename to packages/ionic-angular/src/components/toolbar/test/basic/e2e.ts diff --git a/src/components/toolbar/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/toolbar/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/toolbar/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/toolbar/test/basic/pages/root-page/root-page.html diff --git a/src/components/toolbar/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/toolbar/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/toolbar/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/toolbar/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/toolbar/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/toolbar/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/toolbar/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/toolbar/test/basic/pages/root-page/root-page.ts diff --git a/src/components/toolbar/test/colors/app/app.component.ts b/packages/ionic-angular/src/components/toolbar/test/colors/app/app.component.ts similarity index 100% rename from src/components/toolbar/test/colors/app/app.component.ts rename to packages/ionic-angular/src/components/toolbar/test/colors/app/app.component.ts diff --git a/src/components/toolbar/test/colors/app/app.module.ts b/packages/ionic-angular/src/components/toolbar/test/colors/app/app.module.ts similarity index 100% rename from src/components/toolbar/test/colors/app/app.module.ts rename to packages/ionic-angular/src/components/toolbar/test/colors/app/app.module.ts diff --git a/src/components/toolbar/test/colors/app/main.ts b/packages/ionic-angular/src/components/toolbar/test/colors/app/main.ts similarity index 100% rename from src/components/toolbar/test/colors/app/main.ts rename to packages/ionic-angular/src/components/toolbar/test/colors/app/main.ts diff --git a/src/components/toolbar/test/colors/e2e.ts b/packages/ionic-angular/src/components/toolbar/test/colors/e2e.ts similarity index 100% rename from src/components/toolbar/test/colors/e2e.ts rename to packages/ionic-angular/src/components/toolbar/test/colors/e2e.ts diff --git a/src/components/toolbar/test/colors/pages/root-page/root-page.html b/packages/ionic-angular/src/components/toolbar/test/colors/pages/root-page/root-page.html similarity index 100% rename from src/components/toolbar/test/colors/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/toolbar/test/colors/pages/root-page/root-page.html diff --git a/src/components/toolbar/test/colors/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/toolbar/test/colors/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/toolbar/test/colors/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/toolbar/test/colors/pages/root-page/root-page.module.ts diff --git a/src/components/toolbar/test/colors/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/toolbar/test/colors/pages/root-page/root-page.ts similarity index 100% rename from src/components/toolbar/test/colors/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/toolbar/test/colors/pages/root-page/root-page.ts diff --git a/src/components/toolbar/test/scenarios/app/app.component.ts b/packages/ionic-angular/src/components/toolbar/test/scenarios/app/app.component.ts similarity index 100% rename from src/components/toolbar/test/scenarios/app/app.component.ts rename to packages/ionic-angular/src/components/toolbar/test/scenarios/app/app.component.ts diff --git a/src/components/toolbar/test/scenarios/app/app.module.ts b/packages/ionic-angular/src/components/toolbar/test/scenarios/app/app.module.ts similarity index 100% rename from src/components/toolbar/test/scenarios/app/app.module.ts rename to packages/ionic-angular/src/components/toolbar/test/scenarios/app/app.module.ts diff --git a/src/components/toolbar/test/scenarios/app/main.ts b/packages/ionic-angular/src/components/toolbar/test/scenarios/app/main.ts similarity index 100% rename from src/components/toolbar/test/scenarios/app/main.ts rename to packages/ionic-angular/src/components/toolbar/test/scenarios/app/main.ts diff --git a/src/components/toolbar/test/scenarios/e2e.ts b/packages/ionic-angular/src/components/toolbar/test/scenarios/e2e.ts similarity index 100% rename from src/components/toolbar/test/scenarios/e2e.ts rename to packages/ionic-angular/src/components/toolbar/test/scenarios/e2e.ts diff --git a/src/components/toolbar/test/scenarios/pages/root-page/root-page.html b/packages/ionic-angular/src/components/toolbar/test/scenarios/pages/root-page/root-page.html similarity index 100% rename from src/components/toolbar/test/scenarios/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/toolbar/test/scenarios/pages/root-page/root-page.html diff --git a/src/components/toolbar/test/scenarios/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/toolbar/test/scenarios/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/toolbar/test/scenarios/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/toolbar/test/scenarios/pages/root-page/root-page.module.ts diff --git a/src/components/toolbar/test/scenarios/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/toolbar/test/scenarios/pages/root-page/root-page.ts similarity index 100% rename from src/components/toolbar/test/scenarios/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/toolbar/test/scenarios/pages/root-page/root-page.ts diff --git a/src/components/toolbar/toolbar-base.ts b/packages/ionic-angular/src/components/toolbar/toolbar-base.ts similarity index 100% rename from src/components/toolbar/toolbar-base.ts rename to packages/ionic-angular/src/components/toolbar/toolbar-base.ts diff --git a/src/components/toolbar/toolbar-button.scss b/packages/ionic-angular/src/components/toolbar/toolbar-button.scss similarity index 100% rename from src/components/toolbar/toolbar-button.scss rename to packages/ionic-angular/src/components/toolbar/toolbar-button.scss diff --git a/src/components/toolbar/toolbar-footer.ts b/packages/ionic-angular/src/components/toolbar/toolbar-footer.ts similarity index 100% rename from src/components/toolbar/toolbar-footer.ts rename to packages/ionic-angular/src/components/toolbar/toolbar-footer.ts diff --git a/src/components/toolbar/toolbar-header.ts b/packages/ionic-angular/src/components/toolbar/toolbar-header.ts similarity index 100% rename from src/components/toolbar/toolbar-header.ts rename to packages/ionic-angular/src/components/toolbar/toolbar-header.ts diff --git a/src/components/toolbar/toolbar-item.ts b/packages/ionic-angular/src/components/toolbar/toolbar-item.ts similarity index 100% rename from src/components/toolbar/toolbar-item.ts rename to packages/ionic-angular/src/components/toolbar/toolbar-item.ts diff --git a/src/components/toolbar/toolbar-title.ts b/packages/ionic-angular/src/components/toolbar/toolbar-title.ts similarity index 100% rename from src/components/toolbar/toolbar-title.ts rename to packages/ionic-angular/src/components/toolbar/toolbar-title.ts diff --git a/src/components/toolbar/toolbar.ios.scss b/packages/ionic-angular/src/components/toolbar/toolbar.ios.scss similarity index 100% rename from src/components/toolbar/toolbar.ios.scss rename to packages/ionic-angular/src/components/toolbar/toolbar.ios.scss diff --git a/src/components/toolbar/toolbar.md.scss b/packages/ionic-angular/src/components/toolbar/toolbar.md.scss similarity index 100% rename from src/components/toolbar/toolbar.md.scss rename to packages/ionic-angular/src/components/toolbar/toolbar.md.scss diff --git a/src/components/toolbar/toolbar.scss b/packages/ionic-angular/src/components/toolbar/toolbar.scss similarity index 100% rename from src/components/toolbar/toolbar.scss rename to packages/ionic-angular/src/components/toolbar/toolbar.scss diff --git a/src/components/toolbar/toolbar.ts b/packages/ionic-angular/src/components/toolbar/toolbar.ts similarity index 100% rename from src/components/toolbar/toolbar.ts rename to packages/ionic-angular/src/components/toolbar/toolbar.ts diff --git a/src/components/toolbar/toolbar.wp.scss b/packages/ionic-angular/src/components/toolbar/toolbar.wp.scss similarity index 100% rename from src/components/toolbar/toolbar.wp.scss rename to packages/ionic-angular/src/components/toolbar/toolbar.wp.scss diff --git a/src/components/typography/test/basic/app/app.component.ts b/packages/ionic-angular/src/components/typography/test/basic/app/app.component.ts similarity index 100% rename from src/components/typography/test/basic/app/app.component.ts rename to packages/ionic-angular/src/components/typography/test/basic/app/app.component.ts diff --git a/src/components/typography/test/basic/app/app.module.ts b/packages/ionic-angular/src/components/typography/test/basic/app/app.module.ts similarity index 100% rename from src/components/typography/test/basic/app/app.module.ts rename to packages/ionic-angular/src/components/typography/test/basic/app/app.module.ts diff --git a/src/components/typography/test/basic/app/main.ts b/packages/ionic-angular/src/components/typography/test/basic/app/main.ts similarity index 100% rename from src/components/typography/test/basic/app/main.ts rename to packages/ionic-angular/src/components/typography/test/basic/app/main.ts diff --git a/src/components/typography/test/basic/e2e.ts b/packages/ionic-angular/src/components/typography/test/basic/e2e.ts similarity index 100% rename from src/components/typography/test/basic/e2e.ts rename to packages/ionic-angular/src/components/typography/test/basic/e2e.ts diff --git a/src/components/typography/test/basic/pages/root-page/root-page.html b/packages/ionic-angular/src/components/typography/test/basic/pages/root-page/root-page.html similarity index 100% rename from src/components/typography/test/basic/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/typography/test/basic/pages/root-page/root-page.html diff --git a/src/components/typography/test/basic/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/typography/test/basic/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/typography/test/basic/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/typography/test/basic/pages/root-page/root-page.module.ts diff --git a/src/components/typography/test/basic/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/typography/test/basic/pages/root-page/root-page.ts similarity index 100% rename from src/components/typography/test/basic/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/typography/test/basic/pages/root-page/root-page.ts diff --git a/src/components/typography/typography.ios.scss b/packages/ionic-angular/src/components/typography/typography.ios.scss similarity index 100% rename from src/components/typography/typography.ios.scss rename to packages/ionic-angular/src/components/typography/typography.ios.scss diff --git a/src/components/typography/typography.md.scss b/packages/ionic-angular/src/components/typography/typography.md.scss similarity index 100% rename from src/components/typography/typography.md.scss rename to packages/ionic-angular/src/components/typography/typography.md.scss diff --git a/src/components/typography/typography.ts b/packages/ionic-angular/src/components/typography/typography.ts similarity index 100% rename from src/components/typography/typography.ts rename to packages/ionic-angular/src/components/typography/typography.ts diff --git a/src/components/typography/typography.wp.scss b/packages/ionic-angular/src/components/typography/typography.wp.scss similarity index 100% rename from src/components/typography/typography.wp.scss rename to packages/ionic-angular/src/components/typography/typography.wp.scss diff --git a/src/components/virtual-scroll/test/basic/app.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/basic/app.module.ts similarity index 100% rename from src/components/virtual-scroll/test/basic/app.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/basic/app.module.ts diff --git a/src/components/virtual-scroll/test/basic/main.html b/packages/ionic-angular/src/components/virtual-scroll/test/basic/main.html similarity index 100% rename from src/components/virtual-scroll/test/basic/main.html rename to packages/ionic-angular/src/components/virtual-scroll/test/basic/main.html diff --git a/src/components/virtual-scroll/test/basic/main.ts b/packages/ionic-angular/src/components/virtual-scroll/test/basic/main.ts similarity index 100% rename from src/components/virtual-scroll/test/basic/main.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/basic/main.ts diff --git a/src/components/virtual-scroll/test/cards/app.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/cards/app.module.ts similarity index 100% rename from src/components/virtual-scroll/test/cards/app.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/cards/app.module.ts diff --git a/src/components/virtual-scroll/test/cards/main.html b/packages/ionic-angular/src/components/virtual-scroll/test/cards/main.html similarity index 100% rename from src/components/virtual-scroll/test/cards/main.html rename to packages/ionic-angular/src/components/virtual-scroll/test/cards/main.html diff --git a/src/components/virtual-scroll/test/cards/main.ts b/packages/ionic-angular/src/components/virtual-scroll/test/cards/main.ts similarity index 100% rename from src/components/virtual-scroll/test/cards/main.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/cards/main.ts diff --git a/src/components/virtual-scroll/test/image-gallery/app.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/image-gallery/app.module.ts similarity index 100% rename from src/components/virtual-scroll/test/image-gallery/app.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/image-gallery/app.module.ts diff --git a/src/components/virtual-scroll/test/image-gallery/main.html b/packages/ionic-angular/src/components/virtual-scroll/test/image-gallery/main.html similarity index 100% rename from src/components/virtual-scroll/test/image-gallery/main.html rename to packages/ionic-angular/src/components/virtual-scroll/test/image-gallery/main.html diff --git a/src/components/virtual-scroll/test/image-gallery/main.ts b/packages/ionic-angular/src/components/virtual-scroll/test/image-gallery/main.ts similarity index 100% rename from src/components/virtual-scroll/test/image-gallery/main.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/image-gallery/main.ts diff --git a/src/components/virtual-scroll/test/infinite-scroll/app.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/infinite-scroll/app.module.ts similarity index 100% rename from src/components/virtual-scroll/test/infinite-scroll/app.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/infinite-scroll/app.module.ts diff --git a/src/components/virtual-scroll/test/infinite-scroll/main.html b/packages/ionic-angular/src/components/virtual-scroll/test/infinite-scroll/main.html similarity index 100% rename from src/components/virtual-scroll/test/infinite-scroll/main.html rename to packages/ionic-angular/src/components/virtual-scroll/test/infinite-scroll/main.html diff --git a/src/components/virtual-scroll/test/list/app.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/list/app.module.ts similarity index 100% rename from src/components/virtual-scroll/test/list/app.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/list/app.module.ts diff --git a/src/components/virtual-scroll/test/list/main.html b/packages/ionic-angular/src/components/virtual-scroll/test/list/main.html similarity index 100% rename from src/components/virtual-scroll/test/list/main.html rename to packages/ionic-angular/src/components/virtual-scroll/test/list/main.html diff --git a/src/components/virtual-scroll/test/list/main.ts b/packages/ionic-angular/src/components/virtual-scroll/test/list/main.ts similarity index 100% rename from src/components/virtual-scroll/test/list/main.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/list/main.ts diff --git a/src/components/virtual-scroll/test/media/app/app.component.ts b/packages/ionic-angular/src/components/virtual-scroll/test/media/app/app.component.ts similarity index 100% rename from src/components/virtual-scroll/test/media/app/app.component.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/media/app/app.component.ts diff --git a/src/components/virtual-scroll/test/media/app/app.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/media/app/app.module.ts similarity index 100% rename from src/components/virtual-scroll/test/media/app/app.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/media/app/app.module.ts diff --git a/src/components/virtual-scroll/test/media/app/main.ts b/packages/ionic-angular/src/components/virtual-scroll/test/media/app/main.ts similarity index 100% rename from src/components/virtual-scroll/test/media/app/main.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/media/app/main.ts diff --git a/src/components/virtual-scroll/test/media/e2e.ts b/packages/ionic-angular/src/components/virtual-scroll/test/media/e2e.ts similarity index 100% rename from src/components/virtual-scroll/test/media/e2e.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/media/e2e.ts diff --git a/src/components/virtual-scroll/test/media/pages/root-page/root-page.html b/packages/ionic-angular/src/components/virtual-scroll/test/media/pages/root-page/root-page.html similarity index 100% rename from src/components/virtual-scroll/test/media/pages/root-page/root-page.html rename to packages/ionic-angular/src/components/virtual-scroll/test/media/pages/root-page/root-page.html diff --git a/src/components/virtual-scroll/test/media/pages/root-page/root-page.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/media/pages/root-page/root-page.module.ts similarity index 100% rename from src/components/virtual-scroll/test/media/pages/root-page/root-page.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/media/pages/root-page/root-page.module.ts diff --git a/src/components/virtual-scroll/test/media/pages/root-page/root-page.ts b/packages/ionic-angular/src/components/virtual-scroll/test/media/pages/root-page/root-page.ts similarity index 100% rename from src/components/virtual-scroll/test/media/pages/root-page/root-page.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/media/pages/root-page/root-page.ts diff --git a/src/components/virtual-scroll/test/sliding-item/app.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/sliding-item/app.module.ts similarity index 100% rename from src/components/virtual-scroll/test/sliding-item/app.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/sliding-item/app.module.ts diff --git a/src/components/virtual-scroll/test/sliding-item/main.html b/packages/ionic-angular/src/components/virtual-scroll/test/sliding-item/main.html similarity index 100% rename from src/components/virtual-scroll/test/sliding-item/main.html rename to packages/ionic-angular/src/components/virtual-scroll/test/sliding-item/main.html diff --git a/src/components/virtual-scroll/test/sliding-item/main.ts b/packages/ionic-angular/src/components/virtual-scroll/test/sliding-item/main.ts similarity index 100% rename from src/components/virtual-scroll/test/sliding-item/main.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/sliding-item/main.ts diff --git a/src/components/virtual-scroll/test/variable-size/app.module.ts b/packages/ionic-angular/src/components/virtual-scroll/test/variable-size/app.module.ts similarity index 100% rename from src/components/virtual-scroll/test/variable-size/app.module.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/variable-size/app.module.ts diff --git a/src/components/virtual-scroll/test/variable-size/main.html b/packages/ionic-angular/src/components/virtual-scroll/test/variable-size/main.html similarity index 100% rename from src/components/virtual-scroll/test/variable-size/main.html rename to packages/ionic-angular/src/components/virtual-scroll/test/variable-size/main.html diff --git a/src/components/virtual-scroll/test/variable-size/main.ts b/packages/ionic-angular/src/components/virtual-scroll/test/variable-size/main.ts similarity index 100% rename from src/components/virtual-scroll/test/variable-size/main.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/variable-size/main.ts diff --git a/src/components/virtual-scroll/test/virtual-scroll.spec.ts b/packages/ionic-angular/src/components/virtual-scroll/test/virtual-scroll.spec.ts similarity index 100% rename from src/components/virtual-scroll/test/virtual-scroll.spec.ts rename to packages/ionic-angular/src/components/virtual-scroll/test/virtual-scroll.spec.ts diff --git a/src/components/virtual-scroll/virtual-footer.ts b/packages/ionic-angular/src/components/virtual-scroll/virtual-footer.ts similarity index 100% rename from src/components/virtual-scroll/virtual-footer.ts rename to packages/ionic-angular/src/components/virtual-scroll/virtual-footer.ts diff --git a/src/components/virtual-scroll/virtual-header.ts b/packages/ionic-angular/src/components/virtual-scroll/virtual-header.ts similarity index 100% rename from src/components/virtual-scroll/virtual-header.ts rename to packages/ionic-angular/src/components/virtual-scroll/virtual-header.ts diff --git a/src/components/virtual-scroll/virtual-item.ts b/packages/ionic-angular/src/components/virtual-scroll/virtual-item.ts similarity index 100% rename from src/components/virtual-scroll/virtual-item.ts rename to packages/ionic-angular/src/components/virtual-scroll/virtual-item.ts diff --git a/src/components/virtual-scroll/virtual-scroll.scss b/packages/ionic-angular/src/components/virtual-scroll/virtual-scroll.scss similarity index 100% rename from src/components/virtual-scroll/virtual-scroll.scss rename to packages/ionic-angular/src/components/virtual-scroll/virtual-scroll.scss diff --git a/src/components/virtual-scroll/virtual-scroll.ts b/packages/ionic-angular/src/components/virtual-scroll/virtual-scroll.ts similarity index 100% rename from src/components/virtual-scroll/virtual-scroll.ts rename to packages/ionic-angular/src/components/virtual-scroll/virtual-scroll.ts diff --git a/src/components/virtual-scroll/virtual-util.ts b/packages/ionic-angular/src/components/virtual-scroll/virtual-util.ts similarity index 100% rename from src/components/virtual-scroll/virtual-util.ts rename to packages/ionic-angular/src/components/virtual-scroll/virtual-util.ts diff --git a/src/config/config.ts b/packages/ionic-angular/src/config/config.ts similarity index 100% rename from src/config/config.ts rename to packages/ionic-angular/src/config/config.ts diff --git a/src/config/mode-registry.ts b/packages/ionic-angular/src/config/mode-registry.ts similarity index 100% rename from src/config/mode-registry.ts rename to packages/ionic-angular/src/config/mode-registry.ts diff --git a/src/config/test/config.spec.ts b/packages/ionic-angular/src/config/test/config.spec.ts similarity index 100% rename from src/config/test/config.spec.ts rename to packages/ionic-angular/src/config/test/config.spec.ts diff --git a/src/fonts/ionicons.scss b/packages/ionic-angular/src/fonts/ionicons.scss similarity index 100% rename from src/fonts/ionicons.scss rename to packages/ionic-angular/src/fonts/ionicons.scss diff --git a/src/fonts/noto-sans-bold.ttf b/packages/ionic-angular/src/fonts/noto-sans-bold.ttf similarity index 100% rename from src/fonts/noto-sans-bold.ttf rename to packages/ionic-angular/src/fonts/noto-sans-bold.ttf diff --git a/src/fonts/noto-sans-bold.woff b/packages/ionic-angular/src/fonts/noto-sans-bold.woff similarity index 100% rename from src/fonts/noto-sans-bold.woff rename to packages/ionic-angular/src/fonts/noto-sans-bold.woff diff --git a/src/fonts/noto-sans-regular.ttf b/packages/ionic-angular/src/fonts/noto-sans-regular.ttf similarity index 100% rename from src/fonts/noto-sans-regular.ttf rename to packages/ionic-angular/src/fonts/noto-sans-regular.ttf diff --git a/src/fonts/noto-sans-regular.woff b/packages/ionic-angular/src/fonts/noto-sans-regular.woff similarity index 100% rename from src/fonts/noto-sans-regular.woff rename to packages/ionic-angular/src/fonts/noto-sans-regular.woff diff --git a/src/fonts/noto-sans.scss b/packages/ionic-angular/src/fonts/noto-sans.scss similarity index 100% rename from src/fonts/noto-sans.scss rename to packages/ionic-angular/src/fonts/noto-sans.scss diff --git a/src/fonts/roboto-bold.ttf b/packages/ionic-angular/src/fonts/roboto-bold.ttf similarity index 100% rename from src/fonts/roboto-bold.ttf rename to packages/ionic-angular/src/fonts/roboto-bold.ttf diff --git a/src/fonts/roboto-bold.woff b/packages/ionic-angular/src/fonts/roboto-bold.woff similarity index 100% rename from src/fonts/roboto-bold.woff rename to packages/ionic-angular/src/fonts/roboto-bold.woff diff --git a/src/fonts/roboto-bold.woff2 b/packages/ionic-angular/src/fonts/roboto-bold.woff2 similarity index 100% rename from src/fonts/roboto-bold.woff2 rename to packages/ionic-angular/src/fonts/roboto-bold.woff2 diff --git a/src/fonts/roboto-light.ttf b/packages/ionic-angular/src/fonts/roboto-light.ttf similarity index 100% rename from src/fonts/roboto-light.ttf rename to packages/ionic-angular/src/fonts/roboto-light.ttf diff --git a/src/fonts/roboto-light.woff b/packages/ionic-angular/src/fonts/roboto-light.woff similarity index 100% rename from src/fonts/roboto-light.woff rename to packages/ionic-angular/src/fonts/roboto-light.woff diff --git a/src/fonts/roboto-light.woff2 b/packages/ionic-angular/src/fonts/roboto-light.woff2 similarity index 100% rename from src/fonts/roboto-light.woff2 rename to packages/ionic-angular/src/fonts/roboto-light.woff2 diff --git a/src/fonts/roboto-medium.ttf b/packages/ionic-angular/src/fonts/roboto-medium.ttf similarity index 100% rename from src/fonts/roboto-medium.ttf rename to packages/ionic-angular/src/fonts/roboto-medium.ttf diff --git a/src/fonts/roboto-medium.woff b/packages/ionic-angular/src/fonts/roboto-medium.woff similarity index 100% rename from src/fonts/roboto-medium.woff rename to packages/ionic-angular/src/fonts/roboto-medium.woff diff --git a/src/fonts/roboto-medium.woff2 b/packages/ionic-angular/src/fonts/roboto-medium.woff2 similarity index 100% rename from src/fonts/roboto-medium.woff2 rename to packages/ionic-angular/src/fonts/roboto-medium.woff2 diff --git a/src/fonts/roboto-regular.ttf b/packages/ionic-angular/src/fonts/roboto-regular.ttf similarity index 100% rename from src/fonts/roboto-regular.ttf rename to packages/ionic-angular/src/fonts/roboto-regular.ttf diff --git a/src/fonts/roboto-regular.woff b/packages/ionic-angular/src/fonts/roboto-regular.woff similarity index 100% rename from src/fonts/roboto-regular.woff rename to packages/ionic-angular/src/fonts/roboto-regular.woff diff --git a/src/fonts/roboto-regular.woff2 b/packages/ionic-angular/src/fonts/roboto-regular.woff2 similarity index 100% rename from src/fonts/roboto-regular.woff2 rename to packages/ionic-angular/src/fonts/roboto-regular.woff2 diff --git a/src/fonts/roboto.scss b/packages/ionic-angular/src/fonts/roboto.scss similarity index 100% rename from src/fonts/roboto.scss rename to packages/ionic-angular/src/fonts/roboto.scss diff --git a/src/gestures/gesture-config.ts b/packages/ionic-angular/src/gestures/gesture-config.ts similarity index 100% rename from src/gestures/gesture-config.ts rename to packages/ionic-angular/src/gestures/gesture-config.ts diff --git a/src/gestures/gesture-controller.ts b/packages/ionic-angular/src/gestures/gesture-controller.ts similarity index 100% rename from src/gestures/gesture-controller.ts rename to packages/ionic-angular/src/gestures/gesture-controller.ts diff --git a/src/gestures/gesture.ts b/packages/ionic-angular/src/gestures/gesture.ts similarity index 100% rename from src/gestures/gesture.ts rename to packages/ionic-angular/src/gestures/gesture.ts diff --git a/src/gestures/hammer.ts b/packages/ionic-angular/src/gestures/hammer.ts similarity index 100% rename from src/gestures/hammer.ts rename to packages/ionic-angular/src/gestures/hammer.ts diff --git a/src/gestures/pan-gesture.ts b/packages/ionic-angular/src/gestures/pan-gesture.ts similarity index 100% rename from src/gestures/pan-gesture.ts rename to packages/ionic-angular/src/gestures/pan-gesture.ts diff --git a/src/gestures/pointer-events.ts b/packages/ionic-angular/src/gestures/pointer-events.ts similarity index 100% rename from src/gestures/pointer-events.ts rename to packages/ionic-angular/src/gestures/pointer-events.ts diff --git a/src/gestures/recognizers.ts b/packages/ionic-angular/src/gestures/recognizers.ts similarity index 100% rename from src/gestures/recognizers.ts rename to packages/ionic-angular/src/gestures/recognizers.ts diff --git a/src/gestures/simulator.ts b/packages/ionic-angular/src/gestures/simulator.ts similarity index 100% rename from src/gestures/simulator.ts rename to packages/ionic-angular/src/gestures/simulator.ts diff --git a/src/gestures/slide-edge-gesture.ts b/packages/ionic-angular/src/gestures/slide-edge-gesture.ts similarity index 100% rename from src/gestures/slide-edge-gesture.ts rename to packages/ionic-angular/src/gestures/slide-edge-gesture.ts diff --git a/src/gestures/slide-gesture.ts b/packages/ionic-angular/src/gestures/slide-gesture.ts similarity index 100% rename from src/gestures/slide-gesture.ts rename to packages/ionic-angular/src/gestures/slide-gesture.ts diff --git a/src/gestures/test/gesture-controller.spec.ts b/packages/ionic-angular/src/gestures/test/gesture-controller.spec.ts similarity index 100% rename from src/gestures/test/gesture-controller.spec.ts rename to packages/ionic-angular/src/gestures/test/gesture-controller.spec.ts diff --git a/src/gestures/test/recognizers.spec.ts b/packages/ionic-angular/src/gestures/test/recognizers.spec.ts similarity index 100% rename from src/gestures/test/recognizers.spec.ts rename to packages/ionic-angular/src/gestures/test/recognizers.spec.ts diff --git a/src/gestures/ui-event-manager.ts b/packages/ionic-angular/src/gestures/ui-event-manager.ts similarity index 100% rename from src/gestures/ui-event-manager.ts rename to packages/ionic-angular/src/gestures/ui-event-manager.ts diff --git a/src/index.ts b/packages/ionic-angular/src/index.ts similarity index 100% rename from src/index.ts rename to packages/ionic-angular/src/index.ts diff --git a/src/module.ts b/packages/ionic-angular/src/module.ts similarity index 100% rename from src/module.ts rename to packages/ionic-angular/src/module.ts diff --git a/src/navigation/deep-linker.ts b/packages/ionic-angular/src/navigation/deep-linker.ts similarity index 100% rename from src/navigation/deep-linker.ts rename to packages/ionic-angular/src/navigation/deep-linker.ts diff --git a/src/navigation/ionic-page.ts b/packages/ionic-angular/src/navigation/ionic-page.ts similarity index 100% rename from src/navigation/ionic-page.ts rename to packages/ionic-angular/src/navigation/ionic-page.ts diff --git a/src/navigation/nav-controller-base.ts b/packages/ionic-angular/src/navigation/nav-controller-base.ts similarity index 100% rename from src/navigation/nav-controller-base.ts rename to packages/ionic-angular/src/navigation/nav-controller-base.ts diff --git a/src/navigation/nav-controller.ts b/packages/ionic-angular/src/navigation/nav-controller.ts similarity index 100% rename from src/navigation/nav-controller.ts rename to packages/ionic-angular/src/navigation/nav-controller.ts diff --git a/src/navigation/nav-interfaces.ts b/packages/ionic-angular/src/navigation/nav-interfaces.ts similarity index 100% rename from src/navigation/nav-interfaces.ts rename to packages/ionic-angular/src/navigation/nav-interfaces.ts diff --git a/src/navigation/nav-params.ts b/packages/ionic-angular/src/navigation/nav-params.ts similarity index 100% rename from src/navigation/nav-params.ts rename to packages/ionic-angular/src/navigation/nav-params.ts diff --git a/src/navigation/nav-util.ts b/packages/ionic-angular/src/navigation/nav-util.ts similarity index 100% rename from src/navigation/nav-util.ts rename to packages/ionic-angular/src/navigation/nav-util.ts diff --git a/src/navigation/overlay-proxy.ts b/packages/ionic-angular/src/navigation/overlay-proxy.ts similarity index 100% rename from src/navigation/overlay-proxy.ts rename to packages/ionic-angular/src/navigation/overlay-proxy.ts diff --git a/src/navigation/overlay.ts b/packages/ionic-angular/src/navigation/overlay.ts similarity index 100% rename from src/navigation/overlay.ts rename to packages/ionic-angular/src/navigation/overlay.ts diff --git a/src/navigation/swipe-back.ts b/packages/ionic-angular/src/navigation/swipe-back.ts similarity index 100% rename from src/navigation/swipe-back.ts rename to packages/ionic-angular/src/navigation/swipe-back.ts diff --git a/src/navigation/test/deep-linker.spec.ts b/packages/ionic-angular/src/navigation/test/deep-linker.spec.ts similarity index 100% rename from src/navigation/test/deep-linker.spec.ts rename to packages/ionic-angular/src/navigation/test/deep-linker.spec.ts diff --git a/src/navigation/test/nav-controller.spec.ts b/packages/ionic-angular/src/navigation/test/nav-controller.spec.ts similarity index 100% rename from src/navigation/test/nav-controller.spec.ts rename to packages/ionic-angular/src/navigation/test/nav-controller.spec.ts diff --git a/src/navigation/test/nav-util.spec.ts b/packages/ionic-angular/src/navigation/test/nav-util.spec.ts similarity index 100% rename from src/navigation/test/nav-util.spec.ts rename to packages/ionic-angular/src/navigation/test/nav-util.spec.ts diff --git a/src/navigation/test/overlay-proxy.spec.ts b/packages/ionic-angular/src/navigation/test/overlay-proxy.spec.ts similarity index 100% rename from src/navigation/test/overlay-proxy.spec.ts rename to packages/ionic-angular/src/navigation/test/overlay-proxy.spec.ts diff --git a/src/navigation/test/url-serializer.spec.ts b/packages/ionic-angular/src/navigation/test/url-serializer.spec.ts similarity index 100% rename from src/navigation/test/url-serializer.spec.ts rename to packages/ionic-angular/src/navigation/test/url-serializer.spec.ts diff --git a/src/navigation/test/view-controller.spec.ts b/packages/ionic-angular/src/navigation/test/view-controller.spec.ts similarity index 100% rename from src/navigation/test/view-controller.spec.ts rename to packages/ionic-angular/src/navigation/test/view-controller.spec.ts diff --git a/src/navigation/url-serializer.ts b/packages/ionic-angular/src/navigation/url-serializer.ts similarity index 100% rename from src/navigation/url-serializer.ts rename to packages/ionic-angular/src/navigation/url-serializer.ts diff --git a/src/navigation/view-controller.ts b/packages/ionic-angular/src/navigation/view-controller.ts similarity index 100% rename from src/navigation/view-controller.ts rename to packages/ionic-angular/src/navigation/view-controller.ts diff --git a/src/platform/cordova.ios.scss b/packages/ionic-angular/src/platform/cordova.ios.scss similarity index 100% rename from src/platform/cordova.ios.scss rename to packages/ionic-angular/src/platform/cordova.ios.scss diff --git a/src/platform/cordova.md.scss b/packages/ionic-angular/src/platform/cordova.md.scss similarity index 100% rename from src/platform/cordova.md.scss rename to packages/ionic-angular/src/platform/cordova.md.scss diff --git a/src/platform/cordova.scss b/packages/ionic-angular/src/platform/cordova.scss similarity index 100% rename from src/platform/cordova.scss rename to packages/ionic-angular/src/platform/cordova.scss diff --git a/src/platform/cordova.wp.scss b/packages/ionic-angular/src/platform/cordova.wp.scss similarity index 100% rename from src/platform/cordova.wp.scss rename to packages/ionic-angular/src/platform/cordova.wp.scss diff --git a/src/platform/dom-controller.ts b/packages/ionic-angular/src/platform/dom-controller.ts similarity index 100% rename from src/platform/dom-controller.ts rename to packages/ionic-angular/src/platform/dom-controller.ts diff --git a/src/platform/key.ts b/packages/ionic-angular/src/platform/key.ts similarity index 100% rename from src/platform/key.ts rename to packages/ionic-angular/src/platform/key.ts diff --git a/src/platform/keyboard.ts b/packages/ionic-angular/src/platform/keyboard.ts similarity index 100% rename from src/platform/keyboard.ts rename to packages/ionic-angular/src/platform/keyboard.ts diff --git a/src/platform/platform-registry.ts b/packages/ionic-angular/src/platform/platform-registry.ts similarity index 100% rename from src/platform/platform-registry.ts rename to packages/ionic-angular/src/platform/platform-registry.ts diff --git a/src/platform/platform-utils.ts b/packages/ionic-angular/src/platform/platform-utils.ts similarity index 100% rename from src/platform/platform-utils.ts rename to packages/ionic-angular/src/platform/platform-utils.ts diff --git a/src/platform/platform.ts b/packages/ionic-angular/src/platform/platform.ts similarity index 100% rename from src/platform/platform.ts rename to packages/ionic-angular/src/platform/platform.ts diff --git a/src/platform/query-params.ts b/packages/ionic-angular/src/platform/query-params.ts similarity index 100% rename from src/platform/query-params.ts rename to packages/ionic-angular/src/platform/query-params.ts diff --git a/src/platform/test/platform.spec.ts b/packages/ionic-angular/src/platform/test/platform.spec.ts similarity index 100% rename from src/platform/test/platform.spec.ts rename to packages/ionic-angular/src/platform/test/platform.spec.ts diff --git a/src/platform/test/query-params.spec.ts b/packages/ionic-angular/src/platform/test/query-params.spec.ts similarity index 100% rename from src/platform/test/query-params.spec.ts rename to packages/ionic-angular/src/platform/test/query-params.spec.ts diff --git a/src/tap-click/activator-base.ts b/packages/ionic-angular/src/tap-click/activator-base.ts similarity index 100% rename from src/tap-click/activator-base.ts rename to packages/ionic-angular/src/tap-click/activator-base.ts diff --git a/src/tap-click/activator.ts b/packages/ionic-angular/src/tap-click/activator.ts similarity index 100% rename from src/tap-click/activator.ts rename to packages/ionic-angular/src/tap-click/activator.ts diff --git a/src/tap-click/haptic.ts b/packages/ionic-angular/src/tap-click/haptic.ts similarity index 100% rename from src/tap-click/haptic.ts rename to packages/ionic-angular/src/tap-click/haptic.ts diff --git a/src/tap-click/ripple.ts b/packages/ionic-angular/src/tap-click/ripple.ts similarity index 100% rename from src/tap-click/ripple.ts rename to packages/ionic-angular/src/tap-click/ripple.ts diff --git a/src/tap-click/tap-click.ts b/packages/ionic-angular/src/tap-click/tap-click.ts similarity index 100% rename from src/tap-click/tap-click.ts rename to packages/ionic-angular/src/tap-click/tap-click.ts diff --git a/src/tap-click/test/activator.spec.ts b/packages/ionic-angular/src/tap-click/test/activator.spec.ts similarity index 100% rename from src/tap-click/test/activator.spec.ts rename to packages/ionic-angular/src/tap-click/test/activator.spec.ts diff --git a/src/tap-click/test/tap-click.spec.ts b/packages/ionic-angular/src/tap-click/test/tap-click.spec.ts similarity index 100% rename from src/tap-click/test/tap-click.spec.ts rename to packages/ionic-angular/src/tap-click/test/tap-click.spec.ts diff --git a/src/themes/ionic.build.dark.scss b/packages/ionic-angular/src/themes/ionic.build.dark.scss similarity index 100% rename from src/themes/ionic.build.dark.scss rename to packages/ionic-angular/src/themes/ionic.build.dark.scss diff --git a/src/themes/ionic.build.default.scss b/packages/ionic-angular/src/themes/ionic.build.default.scss similarity index 100% rename from src/themes/ionic.build.default.scss rename to packages/ionic-angular/src/themes/ionic.build.default.scss diff --git a/src/themes/ionic.components.scss b/packages/ionic-angular/src/themes/ionic.components.scss similarity index 100% rename from src/themes/ionic.components.scss rename to packages/ionic-angular/src/themes/ionic.components.scss diff --git a/src/themes/ionic.functions.scss b/packages/ionic-angular/src/themes/ionic.functions.scss similarity index 100% rename from src/themes/ionic.functions.scss rename to packages/ionic-angular/src/themes/ionic.functions.scss diff --git a/src/themes/ionic.globals.ios.scss b/packages/ionic-angular/src/themes/ionic.globals.ios.scss similarity index 100% rename from src/themes/ionic.globals.ios.scss rename to packages/ionic-angular/src/themes/ionic.globals.ios.scss diff --git a/src/themes/ionic.globals.md.scss b/packages/ionic-angular/src/themes/ionic.globals.md.scss similarity index 100% rename from src/themes/ionic.globals.md.scss rename to packages/ionic-angular/src/themes/ionic.globals.md.scss diff --git a/src/themes/ionic.globals.scss b/packages/ionic-angular/src/themes/ionic.globals.scss similarity index 100% rename from src/themes/ionic.globals.scss rename to packages/ionic-angular/src/themes/ionic.globals.scss diff --git a/src/themes/ionic.globals.wp.scss b/packages/ionic-angular/src/themes/ionic.globals.wp.scss similarity index 100% rename from src/themes/ionic.globals.wp.scss rename to packages/ionic-angular/src/themes/ionic.globals.wp.scss diff --git a/src/themes/ionic.ionicons.scss b/packages/ionic-angular/src/themes/ionic.ionicons.scss similarity index 100% rename from src/themes/ionic.ionicons.scss rename to packages/ionic-angular/src/themes/ionic.ionicons.scss diff --git a/src/themes/ionic.mixins.scss b/packages/ionic-angular/src/themes/ionic.mixins.scss similarity index 100% rename from src/themes/ionic.mixins.scss rename to packages/ionic-angular/src/themes/ionic.mixins.scss diff --git a/src/themes/ionic.scss b/packages/ionic-angular/src/themes/ionic.scss similarity index 100% rename from src/themes/ionic.scss rename to packages/ionic-angular/src/themes/ionic.scss diff --git a/src/themes/ionic.theme.dark.ios.scss b/packages/ionic-angular/src/themes/ionic.theme.dark.ios.scss similarity index 100% rename from src/themes/ionic.theme.dark.ios.scss rename to packages/ionic-angular/src/themes/ionic.theme.dark.ios.scss diff --git a/src/themes/ionic.theme.dark.md.scss b/packages/ionic-angular/src/themes/ionic.theme.dark.md.scss similarity index 100% rename from src/themes/ionic.theme.dark.md.scss rename to packages/ionic-angular/src/themes/ionic.theme.dark.md.scss diff --git a/src/themes/ionic.theme.dark.scss b/packages/ionic-angular/src/themes/ionic.theme.dark.scss similarity index 100% rename from src/themes/ionic.theme.dark.scss rename to packages/ionic-angular/src/themes/ionic.theme.dark.scss diff --git a/src/themes/ionic.theme.dark.wp.scss b/packages/ionic-angular/src/themes/ionic.theme.dark.wp.scss similarity index 100% rename from src/themes/ionic.theme.dark.wp.scss rename to packages/ionic-angular/src/themes/ionic.theme.dark.wp.scss diff --git a/src/themes/ionic.theme.default.ios.scss b/packages/ionic-angular/src/themes/ionic.theme.default.ios.scss similarity index 100% rename from src/themes/ionic.theme.default.ios.scss rename to packages/ionic-angular/src/themes/ionic.theme.default.ios.scss diff --git a/src/themes/ionic.theme.default.md.scss b/packages/ionic-angular/src/themes/ionic.theme.default.md.scss similarity index 100% rename from src/themes/ionic.theme.default.md.scss rename to packages/ionic-angular/src/themes/ionic.theme.default.md.scss diff --git a/src/themes/ionic.theme.default.scss b/packages/ionic-angular/src/themes/ionic.theme.default.scss similarity index 100% rename from src/themes/ionic.theme.default.scss rename to packages/ionic-angular/src/themes/ionic.theme.default.scss diff --git a/src/themes/ionic.theme.default.wp.scss b/packages/ionic-angular/src/themes/ionic.theme.default.wp.scss similarity index 100% rename from src/themes/ionic.theme.default.wp.scss rename to packages/ionic-angular/src/themes/ionic.theme.default.wp.scss diff --git a/src/themes/license.scss b/packages/ionic-angular/src/themes/license.scss similarity index 100% rename from src/themes/license.scss rename to packages/ionic-angular/src/themes/license.scss diff --git a/src/themes/normalize.scss b/packages/ionic-angular/src/themes/normalize.scss similarity index 100% rename from src/themes/normalize.scss rename to packages/ionic-angular/src/themes/normalize.scss diff --git a/src/themes/util.scss b/packages/ionic-angular/src/themes/util.scss similarity index 100% rename from src/themes/util.scss rename to packages/ionic-angular/src/themes/util.scss diff --git a/src/transitions/page-transition.ts b/packages/ionic-angular/src/transitions/page-transition.ts similarity index 100% rename from src/transitions/page-transition.ts rename to packages/ionic-angular/src/transitions/page-transition.ts diff --git a/src/transitions/transition-controller.ts b/packages/ionic-angular/src/transitions/transition-controller.ts similarity index 100% rename from src/transitions/transition-controller.ts rename to packages/ionic-angular/src/transitions/transition-controller.ts diff --git a/src/transitions/transition-ios.ts b/packages/ionic-angular/src/transitions/transition-ios.ts similarity index 100% rename from src/transitions/transition-ios.ts rename to packages/ionic-angular/src/transitions/transition-ios.ts diff --git a/src/transitions/transition-md.ts b/packages/ionic-angular/src/transitions/transition-md.ts similarity index 100% rename from src/transitions/transition-md.ts rename to packages/ionic-angular/src/transitions/transition-md.ts diff --git a/src/transitions/transition-wp.ts b/packages/ionic-angular/src/transitions/transition-wp.ts similarity index 100% rename from src/transitions/transition-wp.ts rename to packages/ionic-angular/src/transitions/transition-wp.ts diff --git a/src/transitions/transition.ts b/packages/ionic-angular/src/transitions/transition.ts similarity index 100% rename from src/transitions/transition.ts rename to packages/ionic-angular/src/transitions/transition.ts diff --git a/src/util/base-input.ts b/packages/ionic-angular/src/util/base-input.ts similarity index 100% rename from src/util/base-input.ts rename to packages/ionic-angular/src/util/base-input.ts diff --git a/src/util/datetime-util.ts b/packages/ionic-angular/src/util/datetime-util.ts similarity index 100% rename from src/util/datetime-util.ts rename to packages/ionic-angular/src/util/datetime-util.ts diff --git a/src/util/debouncer.ts b/packages/ionic-angular/src/util/debouncer.ts similarity index 100% rename from src/util/debouncer.ts rename to packages/ionic-angular/src/util/debouncer.ts diff --git a/src/util/dom.ts b/packages/ionic-angular/src/util/dom.ts similarity index 100% rename from src/util/dom.ts rename to packages/ionic-angular/src/util/dom.ts diff --git a/src/util/events.ts b/packages/ionic-angular/src/util/events.ts similarity index 100% rename from src/util/events.ts rename to packages/ionic-angular/src/util/events.ts diff --git a/src/util/form.ts b/packages/ionic-angular/src/util/form.ts similarity index 100% rename from src/util/form.ts rename to packages/ionic-angular/src/util/form.ts diff --git a/src/util/helpers.ts b/packages/ionic-angular/src/util/helpers.ts similarity index 100% rename from src/util/helpers.ts rename to packages/ionic-angular/src/util/helpers.ts diff --git a/src/util/input-tester.ts b/packages/ionic-angular/src/util/input-tester.ts similarity index 100% rename from src/util/input-tester.ts rename to packages/ionic-angular/src/util/input-tester.ts diff --git a/src/util/interfaces.ts b/packages/ionic-angular/src/util/interfaces.ts similarity index 100% rename from src/util/interfaces.ts rename to packages/ionic-angular/src/util/interfaces.ts diff --git a/src/util/ionic-error-handler.ts b/packages/ionic-angular/src/util/ionic-error-handler.ts similarity index 100% rename from src/util/ionic-error-handler.ts rename to packages/ionic-angular/src/util/ionic-error-handler.ts diff --git a/src/util/mock-providers.ts b/packages/ionic-angular/src/util/mock-providers.ts similarity index 100% rename from src/util/mock-providers.ts rename to packages/ionic-angular/src/util/mock-providers.ts diff --git a/src/util/module-loader.ts b/packages/ionic-angular/src/util/module-loader.ts similarity index 100% rename from src/util/module-loader.ts rename to packages/ionic-angular/src/util/module-loader.ts diff --git a/src/util/ng-module-loader.ts b/packages/ionic-angular/src/util/ng-module-loader.ts similarity index 100% rename from src/util/ng-module-loader.ts rename to packages/ionic-angular/src/util/ng-module-loader.ts diff --git a/src/util/scroll-view.ts b/packages/ionic-angular/src/util/scroll-view.ts similarity index 100% rename from src/util/scroll-view.ts rename to packages/ionic-angular/src/util/scroll-view.ts diff --git a/src/util/test/base-input.spec.ts b/packages/ionic-angular/src/util/test/base-input.spec.ts similarity index 100% rename from src/util/test/base-input.spec.ts rename to packages/ionic-angular/src/util/test/base-input.spec.ts diff --git a/src/util/test/datetime-util.spec.ts b/packages/ionic-angular/src/util/test/datetime-util.spec.ts similarity index 100% rename from src/util/test/datetime-util.spec.ts rename to packages/ionic-angular/src/util/test/datetime-util.spec.ts diff --git a/src/util/test/dom.spec.ts b/packages/ionic-angular/src/util/test/dom.spec.ts similarity index 100% rename from src/util/test/dom.spec.ts rename to packages/ionic-angular/src/util/test/dom.spec.ts diff --git a/src/util/test/events.spec.ts b/packages/ionic-angular/src/util/test/events.spec.ts similarity index 100% rename from src/util/test/events.spec.ts rename to packages/ionic-angular/src/util/test/events.spec.ts diff --git a/src/util/test/mock-providers.spec.ts b/packages/ionic-angular/src/util/test/mock-providers.spec.ts similarity index 100% rename from src/util/test/mock-providers.spec.ts rename to packages/ionic-angular/src/util/test/mock-providers.spec.ts diff --git a/src/util/test/module-loader.spec.ts b/packages/ionic-angular/src/util/test/module-loader.spec.ts similarity index 100% rename from src/util/test/module-loader.spec.ts rename to packages/ionic-angular/src/util/test/module-loader.spec.ts diff --git a/src/util/test/util.spec.ts b/packages/ionic-angular/src/util/test/util.spec.ts similarity index 100% rename from src/util/test/util.spec.ts rename to packages/ionic-angular/src/util/test/util.spec.ts diff --git a/src/util/util.ts b/packages/ionic-angular/src/util/util.ts similarity index 100% rename from src/util/util.ts rename to packages/ionic-angular/src/util/util.ts diff --git a/src/vendor/swiper.d.ts b/packages/ionic-angular/src/vendor/swiper.d.ts similarity index 100% rename from src/vendor/swiper.d.ts rename to packages/ionic-angular/src/vendor/swiper.d.ts diff --git a/src/vendor/swiper.js b/packages/ionic-angular/src/vendor/swiper.js similarity index 100% rename from src/vendor/swiper.js rename to packages/ionic-angular/src/vendor/swiper.js diff --git a/tsconfig.json b/packages/ionic-angular/tsconfig.json similarity index 100% rename from tsconfig.json rename to packages/ionic-angular/tsconfig.json diff --git a/tslint.json b/packages/ionic-angular/tslint.json similarity index 100% rename from tslint.json rename to packages/ionic-angular/tslint.json diff --git a/packages/ionic/package.json b/packages/ionic/package.json new file mode 100644 index 0000000000..fd2aebb50f --- /dev/null +++ b/packages/ionic/package.json @@ -0,0 +1,19 @@ +{ + "name": "@ionic/ionic", + "version": "0.0.1", + "description": "Base components for Ionic", + "main": "dist/index.js", + "scripts": { + "test": "jest" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ionic-team/ionic.git" + }, + "author": "Ionic Team", + "license": "MIT", + "bugs": { + "url": "https://github.com/ionic-team/ionic/issues" + }, + "homepage": "https://github.com/ionic-team/ionic#readme" +} diff --git a/packages/ionic/src/app/app.ios.scss b/packages/ionic/src/app/app.ios.scss new file mode 100644 index 0000000000..c9976b1d19 --- /dev/null +++ b/packages/ionic/src/app/app.ios.scss @@ -0,0 +1,12 @@ +@import "../../themes/ionic.globals.ios"; +@import "./app"; + + +// iOS App +// -------------------------------------------------- + +.app-ios { + font-family: $font-family-ios-base; + font-size: $font-size-ios-base; + background-color: $background-ios-color; +} diff --git a/packages/ionic/src/app/app.md.scss b/packages/ionic/src/app/app.md.scss new file mode 100644 index 0000000000..c7da618932 --- /dev/null +++ b/packages/ionic/src/app/app.md.scss @@ -0,0 +1,12 @@ +@import "../../themes/ionic.globals.md"; +@import "./app"; + + +// Material Design App +// -------------------------------------------------- + +.app-md { + font-family: $font-family-md-base; + font-size: $font-size-md-base; + background-color: $background-md-color; +} diff --git a/packages/ionic/src/app/app.scss b/packages/ionic/src/app/app.scss new file mode 100644 index 0000000000..ac715823e3 --- /dev/null +++ b/packages/ionic/src/app/app.scss @@ -0,0 +1,428 @@ + +// Globals +// -------------------------------------------------- +@import "../../themes/ionic.globals"; +@import "../../themes/ionic.mixins"; + + +// Normalize +// -------------------------------------------------- +@import "../../themes/normalize"; + + +// Util +// -------------------------------------------------- +@import "../../themes/util"; + + +// App +// -------------------------------------------------- +// All font sizes use rem units +// By default, 1rem equals 10px. For example, 1.4rem === 14px +// $font-size-root value, which is on the element +// is what can scale all fonts + +/// @prop - Font size of the root html +$font-size-root: 62.5% !default; + +/// @prop - Font weight of all headings +$headings-font-weight: 500 !default; + +/// @prop - Line height of all headings +$headings-line-height: 1.2 !default; + +/// @prop - Font size of heading level 1 +$h1-font-size: 2.6rem !default; + +/// @prop - Font size of heading level 2 +$h2-font-size: 2.4rem !default; + +/// @prop - Font size of heading level 3 +$h3-font-size: 2.2rem !default; + +/// @prop - Font size of heading level 4 +$h4-font-size: 2rem !default; + +/// @prop - Font size of heading level 5 +$h5-font-size: 1.8rem !default; + +/// @prop - Font size of heading level 6 +$h6-font-size: 1.6rem !default; + + +// Responsive Utilities +// -------------------------------------------------- + +/// @prop - Whether to include all of the responsive utility attributes +$include-responsive-utilities: true !default; + +/// @prop - Whether to include all of the responsive text alignment attributes +$include-text-alignment-utilities: $include-responsive-utilities !default; + +/// @prop - Whether to include all of the responsive text transform attributes +$include-text-transform-utilities: $include-responsive-utilities !default; + +/// @prop - Whether to include all of the responsive float attributes +$include-float-element-utilities: $include-responsive-utilities !default; + + +// Screen Breakpoints +// -------------------------------------------------- + +/// @prop - The minimum dimensions at which your layout will change, +/// adapting to different screen sizes, for use in media queries +$screen-breakpoints: ( + xs: 0, + sm: 576px, + md: 768px, + lg: 992px, + xl: 1200px +) !default; + + +// App Structure +// -------------------------------------------------- + +* { + box-sizing: border-box; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; +} + +html { + width: 100%; + height: 100%; + + font-size: $font-size-root; + + text-size-adjust: 100%; +} + +body { + @include margin(0); + @include padding(0); + + position: fixed; + overflow: hidden; + + width: 100%; + max-width: 100%; + height: 100%; + max-height: 100%; + + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + + text-rendering: optimizeLegibility; + + -webkit-user-drag: none; + + -ms-content-zooming: none; + touch-action: manipulation; + + word-wrap: break-word; + + text-size-adjust: none; + user-select: none; +} + + +// App Typography +// -------------------------------------------------- + +a { + background-color: transparent; +} + +.enable-hover a:not(.button):hover { + opacity: .7; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + @include margin(1.6rem, null, 1rem, null); + + font-weight: $headings-font-weight; + line-height: $headings-line-height; +} + +[padding] { + h1, + h2, + h3, + h4, + h5, + h6 { + &:first-child { + @include margin(-.3rem, null, null, null); + } + } +} + +h1 + h2, +h1 + h3, +h2 + h3 { + @include margin(-.3rem, null, null, null); +} + +h1 { + @include margin(2rem, null, null, null); + + font-size: $h1-font-size; +} + +h2 { + @include margin(1.8rem, null, null, null); + + font-size: $h2-font-size; +} + +h3 { + font-size: $h3-font-size; +} + +h4 { + font-size: $h4-font-size; +} + +h5 { + font-size: $h5-font-size; +} + +h6 { + font-size: $h6-font-size; +} + +small { + font-size: 75%; +} + +sub, +sup { + position: relative; + + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -.5em; +} + +sub { + bottom: -.25em; +} + + +// Nav Container Structure +// -------------------------------------------------- + +ion-app, +ion-nav, +ion-tab, +ion-tabs { + @include position(0, null, null, 0); + + position: absolute; + z-index: $z-index-page-container; + display: block; + + width: 100%; + height: 100%; +} + +ion-nav, +ion-tab, +ion-tabs { + overflow: hidden; +} + +ion-tab { + display: none; +} + +ion-tab.show-tab { + display: block; +} + +ion-app, +ion-nav, +ion-tab, +ion-tabs, +ion-page { + contain: strict; +} + + +// Page Container Structure +// -------------------------------------------------- + +ion-page { + @include position(0, null, null, 0); + + position: absolute; + display: block; + + width: 100%; + height: 100%; + + // do not show, but still render so we can get dimensions + // opacity: 0; +} + +ion-page.show-page { + // show the page now that it's ready + // opacity: 1; +} + + +// Toolbar Container Structure +// -------------------------------------------------- + +ion-header { + @include position(0, null, null, 0); + + position: absolute; + z-index: $z-index-toolbar; + display: block; + + width: 100%; +} + +ion-footer { + @include position(null, null, 0, 0); + + position: absolute; + z-index: $z-index-toolbar; + display: block; + + width: 100%; +} + + +// Misc +// -------------------------------------------------- + +[app-viewport], +[overlay-portal], +[nav-viewport], +[tab-portal], +.nav-decor { + display: none; +} + + +// Text Alignment +// -------------------------------------------------- + +@if ($include-text-alignment-utilities == true) { + // Creates text alignment attributes based on screen size + @each $breakpoint in map-keys($screen-breakpoints) { + $infix: breakpoint-infix($breakpoint, $screen-breakpoints); + + @include media-breakpoint-up($breakpoint, $screen-breakpoints) { + // Provide `[text-{bp}]` attributes for aligning the text based + // on the breakpoint + [text#{$infix}-center] { + @include text-align(center, !important); + } + + [text#{$infix}-justify] { + @include text-align(justify, !important); + } + + [text#{$infix}-start] { + @include text-align(start, !important); + } + + [text#{$infix}-end] { + @include text-align(end, !important); + } + + [text#{$infix}-left] { + @include text-align(left, !important); + } + + [text#{$infix}-right] { + @include text-align(right, !important); + } + + [text#{$infix}-nowrap] { + // scss-lint:disable ImportantRule + white-space: nowrap !important; + } + + [text#{$infix}-wrap] { + // scss-lint:disable ImportantRule + white-space: normal !important; + } + } + } +} + + +// Text Transformation +// -------------------------------------------------- + +@if ($include-text-transform-utilities == true) { + // Creates text transform attributes based on screen size + @each $breakpoint in map-keys($screen-breakpoints) { + $infix: breakpoint-infix($breakpoint, $screen-breakpoints); + + @include media-breakpoint-up($breakpoint, $screen-breakpoints) { + // Provide `[text-{bp}]` attributes for transforming the text based + // on the breakpoint + [text#{$infix}-uppercase] { + // scss-lint:disable ImportantRule + text-transform: uppercase !important; + } + + [text#{$infix}-lowercase] { + // scss-lint:disable ImportantRule + text-transform: lowercase !important; + } + + [text#{$infix}-capitalize] { + // scss-lint:disable ImportantRule + text-transform: capitalize !important; + } + } + } +} + + +// Float Elements +// -------------------------------------------------- + +@if ($include-float-element-utilities == true) { + // Creates text transform attributes based on screen size + @each $breakpoint in map-keys($screen-breakpoints) { + $infix: breakpoint-infix($breakpoint, $screen-breakpoints); + + @include media-breakpoint-up($breakpoint, $screen-breakpoints) { + // Provide `[float-{bp}]` attributes for floating the element based + // on the breakpoint + [float#{$infix}-left] { + @include float(left, !important); + } + + [float#{$infix}-right] { + @include float(right, !important); + } + + [float#{$infix}-start] { + @include float(start, !important); + } + + [float#{$infix}-end] { + @include float(end, !important); + } + } + } +} \ No newline at end of file diff --git a/packages/ionic/src/app/app.tsx b/packages/ionic/src/app/app.tsx new file mode 100644 index 0000000000..d447443f96 --- /dev/null +++ b/packages/ionic/src/app/app.tsx @@ -0,0 +1,19 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-app', + styleUrls: { + ios: 'app.ios.scss', + md: 'app.md.scss', + wp: 'app.wp.scss' + }, + host: { + theme: 'app' + } +}) +export class App { + render() { + return ; + } +} diff --git a/packages/ionic/src/app/app.wp.scss b/packages/ionic/src/app/app.wp.scss new file mode 100644 index 0000000000..2215eededf --- /dev/null +++ b/packages/ionic/src/app/app.wp.scss @@ -0,0 +1,12 @@ +@import "../../themes/ionic.globals.wp"; +@import "./app"; + + +// Windows App +// -------------------------------------------------- + +.app-wp { + font-family: $font-family-wp-base; + font-size: $font-size-wp-base; + background-color: $background-wp-color; +} diff --git a/packages/ionic/src/avatar/avatar.ios.scss b/packages/ionic/src/avatar/avatar.ios.scss new file mode 100644 index 0000000000..f5bfb84c7d --- /dev/null +++ b/packages/ionic/src/avatar/avatar.ios.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.ios"; +@import "./avatar"; + + +// iOS Avatar +// -------------------------------------------------- diff --git a/packages/ionic/src/avatar/avatar.md.scss b/packages/ionic/src/avatar/avatar.md.scss new file mode 100644 index 0000000000..4bbcd8cde6 --- /dev/null +++ b/packages/ionic/src/avatar/avatar.md.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.md"; +@import "./avatar"; + + +// Material Design Avatar +// -------------------------------------------------- diff --git a/packages/ionic/src/avatar/avatar.scss b/packages/ionic/src/avatar/avatar.scss new file mode 100644 index 0000000000..951217f2bc --- /dev/null +++ b/packages/ionic/src/avatar/avatar.scss @@ -0,0 +1,9 @@ +@import "../../themes/ionic.globals"; + + +// Avatar +// -------------------------------------------------- + +ion-avatar { + display: block; +} diff --git a/packages/ionic/src/avatar/avatar.tsx b/packages/ionic/src/avatar/avatar.tsx new file mode 100644 index 0000000000..d17f64dfa4 --- /dev/null +++ b/packages/ionic/src/avatar/avatar.tsx @@ -0,0 +1,27 @@ +import { Component, h } from '../index'; + + +/** + * @name Avatar + * @module ionic + * @description + * An Avatar is a component that creates a circular image for an item. + * Avatars can be placed on the left or right side of an item with the `item-start` or `item-end` directive. + * @see {@link /docs/components/#avatar-list Avatar Component Docs} + */ +@Component({ + tag: 'ion-avatar', + styleUrls: { + ios: 'avatar.ios.scss', + md: 'avatar.md.scss', + wp: 'avatar.wp.scss' + }, + host: { + theme: 'avatar' + } +}) +export class Avatar { + render() { + return ; + } +} diff --git a/packages/ionic/src/avatar/avatar.wp.scss b/packages/ionic/src/avatar/avatar.wp.scss new file mode 100644 index 0000000000..73cb8e1155 --- /dev/null +++ b/packages/ionic/src/avatar/avatar.wp.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.wp"; +@import "./avatar"; + + +// Windows Avatar +// -------------------------------------------------- diff --git a/packages/ionic/src/badge/badge.ios.scss b/packages/ionic/src/badge/badge.ios.scss new file mode 100644 index 0000000000..7e9a22b45e --- /dev/null +++ b/packages/ionic/src/badge/badge.ios.scss @@ -0,0 +1,36 @@ +@import "../../themes/ionic.globals.ios"; +@import "./badge"; + + +// iOS Badge +// -------------------------------------------------- + +/// @prop - Border radius of the badge +$badge-ios-border-radius: 10px !default; + +/// @prop - Background color of the badge +$badge-ios-background-color: color($colors-ios, primary) !default; + +/// @prop - Text color of the badge +$badge-ios-text-color: color-contrast($colors-ios, $badge-ios-background-color) !default; + + +.badge-ios { + @include border-radius($badge-ios-border-radius); + + color: $badge-ios-text-color; + background-color: $badge-ios-background-color; +} + + +// Generate iOS Badge Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .badge-ios-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + } + +} diff --git a/packages/ionic/src/badge/badge.md.scss b/packages/ionic/src/badge/badge.md.scss new file mode 100644 index 0000000000..49bb3d5eee --- /dev/null +++ b/packages/ionic/src/badge/badge.md.scss @@ -0,0 +1,37 @@ +@import "../../themes/ionic.globals.md"; +@import "./badge"; + + +// Material Design Badge +// -------------------------------------------------- + +/// @prop - Border radius of the badge +$badge-md-border-radius: 4px !default; + +/// @prop - Background color of the badge +$badge-md-background-color: color($colors-md, primary) !default; + +/// @prop - Text color of the badge +$badge-md-text-color: color-contrast($colors-md, $badge-md-background-color) !default; + + +.badge-md { + @include border-radius($badge-md-border-radius); + + color: $badge-md-text-color; + background-color: $badge-md-background-color; +} + + +// Generate Material Design Badge Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .badge-md-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + } + +} + diff --git a/packages/ionic/src/badge/badge.scss b/packages/ionic/src/badge/badge.scss new file mode 100644 index 0000000000..7df56ff422 --- /dev/null +++ b/packages/ionic/src/badge/badge.scss @@ -0,0 +1,34 @@ +@import "../../themes/ionic.globals"; + + +// Badge +// -------------------------------------------------- + +/// @prop - Font size of the badge +$badge-font-size: 1.3rem !default; + +/// @prop - Font weight of the badge +$badge-font-weight: bold !default; + + +ion-badge { + @include padding(3px, 8px); + @include text-align(center); + + display: inline-block; + + min-width: 10px; + + font-size: $badge-font-size; + font-weight: $badge-font-weight; + line-height: 1; + + white-space: nowrap; + vertical-align: baseline; + + contain: content; +} + +ion-badge:empty { + display: none; +} diff --git a/packages/ionic/src/badge/badge.tsx b/packages/ionic/src/badge/badge.tsx new file mode 100644 index 0000000000..3598476e7e --- /dev/null +++ b/packages/ionic/src/badge/badge.tsx @@ -0,0 +1,18 @@ +import { Component, h } from '../index'; + +@Component({ + tag: 'ion-badge', + styleUrls: { + ios: 'badge.ios.scss', + md: 'badge.md.scss', + wp: 'badge.wp.scss' + }, + host: { + theme: 'badge' + } +}) +export class Badge { + render() { + return ; + } +} diff --git a/packages/ionic/src/badge/badge.wp.scss b/packages/ionic/src/badge/badge.wp.scss new file mode 100644 index 0000000000..77e77c7823 --- /dev/null +++ b/packages/ionic/src/badge/badge.wp.scss @@ -0,0 +1,37 @@ +@import "../../themes/ionic.globals.wp"; +@import "./badge"; + + +// Windows Badge +// -------------------------------------------------- + +/// @prop - Border radius of the badge +$badge-wp-border-radius: 0 !default; + +/// @prop - Background color of the badge +$badge-wp-background-color: color($colors-wp, primary) !default; + +/// @prop - Text color of the badge +$badge-wp-text-color: color-contrast($colors-wp, $badge-wp-background-color) !default; + + +.badge-wp { + @include border-radius($badge-wp-border-radius); + + color: $badge-wp-text-color; + background-color: $badge-wp-background-color; +} + + +// Generate Windows Badge Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .badge-wp-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + } + +} + diff --git a/packages/ionic/src/button/button-icon.scss b/packages/ionic/src/button/button-icon.scss new file mode 100644 index 0000000000..e67f617b25 --- /dev/null +++ b/packages/ionic/src/button/button-icon.scss @@ -0,0 +1,28 @@ +@import "../../themes/ionic.globals"; + + +// Button Icons +// -------------------------------------------------- + +.button ion-icon { + pointer-events: none; +} + +ion-icon[slot="start"] { + @include button-icon(); + + @include padding-horizontal(null, .3em); +} + +ion-icon[slot="end"] { + @include button-icon(); + + @include padding-horizontal(.4em, null); +} + +ion-icon[slot="icon-only"] { + @include padding(0); + + font-size: 1.8em; + line-height: .67; +} diff --git a/packages/ionic/src/button/button.ios.scss b/packages/ionic/src/button/button.ios.scss new file mode 100644 index 0000000000..35a5c48c86 --- /dev/null +++ b/packages/ionic/src/button/button.ios.scss @@ -0,0 +1,400 @@ +@import "../../themes/ionic.globals.ios"; +@import "./button"; + +// iOS Button +// -------------------------------------------------- + +// deprecated +$button-ios-margin: null !default; + +/// @prop - Margin top of the button +$button-ios-margin-top: .4rem !default; + +/// @prop - Margin end of the button +$button-ios-margin-end: .2rem !default; + +/// @prop - Margin bottom of the button +$button-ios-margin-bottom: .4rem !default; + +/// @prop - Margin start of the button +$button-ios-margin-start: .2rem !default; + +// deprecated +$button-ios-padding: null !default; + +/// @prop - Padding top of the button +$button-ios-padding-top: 0 !default; + +/// @prop - Padding end of the button +$button-ios-padding-end: 1em !default; + +/// @prop - Padding bottom of the button +$button-ios-padding-bottom: $button-ios-padding-top !default; + +/// @prop - Padding start of the button +$button-ios-padding-start: $button-ios-padding-end !default; + +/// @prop - Height of the button +$button-ios-height: 2.8em !default; + +/// @prop - Border radius of the button +$button-ios-border-radius: 4px !default; + +/// @prop - Font size of the button text +$button-ios-font-size: 1.6rem !default; + +/// @prop - Background color of the button +$button-ios-background-color: color($colors-ios, primary) !default; + +/// @prop - Text color of the button +$button-ios-text-color: color-contrast($colors-ios, $button-ios-background-color) !default; + +/// @prop - Background color of the activated button +$button-ios-background-color-activated: color-shade($button-ios-background-color) !default; + +/// @prop - Opacity of the activated button +$button-ios-opacity-activated: 1 !default; + +/// @prop - Opacity of the button on hover +$button-ios-opacity-hover: .8 !default; + + +// iOS Large Button +// -------------------------------------------------- + +// deprecated +$button-ios-large-padding: null !default; + +/// @prop - Padding top of the large button +$button-ios-large-padding-top: 0 !default; + +/// @prop - Padding end of the large button +$button-ios-large-padding-end: 1em !default; + +/// @prop - Padding bottom of the large button +$button-ios-large-padding-bottom: $button-ios-large-padding-top !default; + +/// @prop - Padding start of the large button +$button-ios-large-padding-start: $button-ios-large-padding-end !default; + +/// @prop - Height of the large button +$button-ios-large-height: 2.8em !default; + +/// @prop - Font size of the large button +$button-ios-large-font-size: 2rem !default; + + +// iOS Small Button +// -------------------------------------------------- + +// deprecated +$button-ios-small-padding: null !default; + +/// @prop - Padding top of the small button +$button-ios-small-padding-top: 0 !default; + +/// @prop - Padding end of the small button +$button-ios-small-padding-end: .9em !default; + +/// @prop - Padding bottom of the small button +$button-ios-small-padding-bottom: $button-ios-small-padding-top !default; + +/// @prop - Padding start of the small button +$button-ios-small-padding-start: $button-ios-small-padding-end !default; + +/// @prop - Height of the small button +$button-ios-small-height: 2.1em !default; + +/// @prop - Font size of the small button +$button-ios-small-font-size: 1.3rem !default; + +/// @prop - Font size of an icon in the small button +$button-ios-small-icon-font-size: 1.3em !default; + + +// iOS Outline Button +// -------------------------------------------------- + +/// @prop - Border width of the outline button +$button-ios-outline-border-width: 1px !default; + +/// @prop - Border style of the outline button +$button-ios-outline-border-style: solid !default; + +/// @prop - Border radius of the outline button +$button-ios-outline-border-radius: $button-ios-border-radius !default; + +/// @prop - Border color of the outline button +$button-ios-outline-border-color: $button-ios-background-color !default; + +/// @prop - Text color of the outline button +$button-ios-outline-text-color: $button-ios-background-color !default; + +/// @prop - Background color of the outline button +$button-ios-outline-background-color: transparent !default; + +/// @prop - Text color of the activated outline button +$button-ios-outline-text-color-activated: color-contrast($colors-ios, $button-ios-background-color) !default; + +/// @prop - Background color of the activated outline button +$button-ios-outline-background-color-activated: $button-ios-background-color !default; + +/// @prop - Opacity of the activated outline button +$button-ios-outline-opacity-activated: 1 !default; + + +// iOS Clear Button +// -------------------------------------------------- + +/// @prop - Border color of the clear button +$button-ios-clear-border-color: transparent !default; + +/// @prop - Background color of the clear button +$button-ios-clear-background-color: transparent !default; + +/// @prop - Background color of the activated clear button +$button-ios-clear-background-color-activated: $button-ios-clear-background-color !default; + +/// @prop - Opacity of the activated clear button +$button-ios-clear-opacity-activated: .4 !default; + +/// @prop - Text color of the clear button on hover +$button-ios-clear-text-color-hover: $button-ios-background-color !default; + +/// @prop - Opacity of the clear button on hover +$button-ios-clear-opacity-hover: .6 !default; + + +// iOS Round Button +// -------------------------------------------------- + +// deprecated +$button-ios-round-padding: null !default; + +/// @prop - Padding top of the round button +$button-ios-round-padding-top: $button-round-padding-top !default; + +/// @prop - Padding end of the round button +$button-ios-round-padding-end: $button-round-padding-end !default; + +/// @prop - Padding bottom of the round button +$button-ios-round-padding-bottom: $button-round-padding-bottom !default; + +/// @prop - Padding start of the round button +$button-ios-round-padding-start: $button-round-padding-start !default; + +/// @prop - Border radius of the round button +$button-ios-round-border-radius: $button-round-border-radius !default; + + +// iOS Decorator Button +// -------------------------------------------------- + +/// @prop - Font weight of the strong button +$button-ios-strong-font-weight: 600 !default; + + +// iOS Default Button +// -------------------------------------------------- + +.button-ios { + @include border-radius($button-ios-border-radius); + + height: $button-ios-height; + + font-size: $button-ios-font-size; + + color: $button-ios-text-color; + background-color: $button-ios-background-color; + + @include deprecated-variable(margin, $button-ios-margin) { + @include margin($button-ios-margin-top, $button-ios-margin-end, $button-ios-margin-bottom, $button-ios-margin-start); + } + + @include deprecated-variable(padding, $button-ios-padding) { + @include padding($button-ios-padding-top, $button-ios-padding-end, $button-ios-padding-bottom, $button-ios-padding-start); + } +} + +.button-ios.activated { + background-color: $button-ios-background-color-activated; + opacity: $button-ios-opacity-activated; +} + +.button-ios:hover:not(.disable-hover) { + opacity: $button-ios-opacity-hover; +} + + +// iOS Default Button Color Mixin +// -------------------------------------------------- + +@mixin ios-button-default($color-name, $color-base, $color-contrast) { + $bg-color: $color-base; + $bg-color-activated: color-shade($bg-color); + $fg-color: $color-contrast; + + .button-ios-#{$color-name} { + color: $fg-color; + background-color: $bg-color; + } + + .button-ios-#{$color-name}.activated { + background-color: $bg-color-activated; + } +} + + +// iOS Button Sizes +// -------------------------------------------------- + +.button-large-ios { + height: $button-ios-large-height; + + font-size: $button-ios-large-font-size; + + @include deprecated-variable(padding, $button-ios-large-padding) { + @include padding($button-ios-large-padding-top, $button-ios-large-padding-end, $button-ios-large-padding-bottom, $button-ios-large-padding-start); + } +} + +.button-small-ios { + height: $button-ios-small-height; + + font-size: $button-ios-small-font-size; + + @include deprecated-variable(padding, $button-ios-small-padding) { + @include padding($button-ios-small-padding-top, $button-ios-small-padding-end, $button-ios-small-padding-bottom, $button-ios-small-padding-start); + } +} + +.button-small-ios ion-icon[slot="icon-only"] { + font-size: $button-ios-small-icon-font-size; +} + +// iOS Block Button +// -------------------------------------------------- + +.button-block-ios { + @include margin-horizontal(0); +} + +// iOS Full Button +// -------------------------------------------------- + +.button-full-ios { + @include margin-horizontal(0); + @include border-radius(0); + + border-right-width: 0; + border-left-width: 0; +} + +// iOS Outline Button +// -------------------------------------------------- + +.button-outline-ios { + @include border-radius($button-ios-outline-border-radius); + + border-width: $button-ios-outline-border-width; + border-style: $button-ios-outline-border-style; + border-color: $button-ios-outline-border-color; + color: $button-ios-outline-text-color; + background-color: $button-ios-outline-background-color; +} + +.button-outline-ios.activated { + color: $button-ios-outline-text-color-activated; + background-color: $button-ios-outline-background-color-activated; + opacity: $button-ios-outline-opacity-activated; +} + +// iOS Outline Button Color Mixin +// -------------------------------------------------- + +@mixin ios-button-outline($color-name, $color-base, $color-contrast) { + + .button-outline-ios-#{$color-name} { + border-color: $color-base; + color: $color-base; + background-color: $button-ios-outline-background-color; + } + + .button-outline-ios-#{$color-name}.activated { + color: $color-contrast; + background-color: $color-base; + } + +} + + +// iOS Clear Button +// -------------------------------------------------- + +.button-clear-ios { + border-color: $button-ios-clear-border-color; + color: $button-ios-background-color; + background-color: $button-ios-clear-background-color; +} + +.button-clear-ios.activated { + background-color: $button-ios-clear-background-color-activated; + opacity: $button-ios-clear-opacity-activated; +} + +.button-clear-ios:hover:not(.disable-hover) { + color: $button-ios-clear-text-color-hover; + opacity: $button-ios-clear-opacity-hover; +} + + +// iOS Clear Button Color Mixin +// -------------------------------------------------- + +@mixin ios-button-clear($color-name, $color-base, $color-contrast) { + $fg-color: $color-base; + + .button-clear-ios-#{$color-name} { + border-color: $button-ios-clear-border-color; + color: $fg-color; + background-color: $button-ios-clear-background-color; + } + + .button-clear-ios-#{$color-name}.activated { + opacity: $button-ios-clear-opacity-activated; + } + + .button-clear-ios-#{$color-name}:hover:not(.disable-hover) { + color: $fg-color; + } +} + + +// iOS Round Button +// -------------------------------------------------- + +.button-round-ios { + @include border-radius($button-ios-round-border-radius); + + @include deprecated-variable(padding, $button-ios-round-padding) { + @include padding($button-ios-round-padding-top, $button-ios-round-padding-end, $button-ios-round-padding-bottom, $button-ios-round-padding-start); + } +} + + +// Generate iOS Button Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + @include ios-button-default($color-name, $color-base, $color-contrast); + @include ios-button-outline($color-name, $color-base, $color-contrast); + @include ios-button-clear($color-name, $color-base, $color-contrast); +} + + +// iOS strong Button +// -------------------------------------------------- + +.button-strong-ios { + font-weight: $button-ios-strong-font-weight; +} diff --git a/packages/ionic/src/button/button.md.scss b/packages/ionic/src/button/button.md.scss new file mode 100644 index 0000000000..eb7c4a0c85 --- /dev/null +++ b/packages/ionic/src/button/button.md.scss @@ -0,0 +1,516 @@ +@import "../../themes/ionic.globals.md"; +@import "./button"; + +// Material Design Button +// -------------------------------------------------- + + +// deprecated +$button-md-margin: null !default; + +/// @prop - Margin top of the button +$button-md-margin-top: .4rem !default; + +/// @prop - Margin end of the button +$button-md-margin-end: .2rem !default; + +/// @prop - Margin bottom of the button +$button-md-margin-bottom: .4rem !default; + +/// @prop - Margin start of the button +$button-md-margin-start: .2rem !default; + +// deprecated +$button-md-padding: null !default; + +/// @prop - Padding top of the button +$button-md-padding-top: 0 !default; + +/// @prop - Padding end of the button +$button-md-padding-end: 1.1em !default; + +/// @prop - Padding bottom of the button +$button-md-padding-bottom: $button-md-padding-top !default; + +/// @prop - Padding start of the button +$button-md-padding-start: $button-md-padding-end !default; + +/// @prop - Height of the button +$button-md-height: 3.6rem !default; + +/// @prop - Border radius of the button +$button-md-border-radius: 2px !default; + +/// @prop - Font size of the button text +$button-md-font-size: 1.4rem !default; + +/// @prop - Font weight of the button text +$button-md-font-weight: 500 !default; + +/// @prop - Capitalization of the button text +$button-md-text-transform: uppercase !default; + +/// @prop - Background color of the button +$button-md-background-color: color($colors-md, primary) !default; + +/// @prop - Text color of the button +$button-md-text-color: color-contrast($colors-md, $button-md-background-color) !default; + +/// @prop - Box shadow of the button +$button-md-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12) !default; + +/// @prop - Duration of the transition of the button +$button-md-transition-duration: 300ms !default; + +/// @prop - Speed curve of the transition of the button +$button-md-transition-timing-function: cubic-bezier(.4, 0, .2, 1) !default; + +/// @prop - Background color of the button on hover +$button-md-background-color-hover: $button-md-background-color !default; + +/// @prop - Background color of the activated button +$button-md-background-color-activated: color-shade($button-md-background-color) !default; + +/// @prop - Opacity of the activated button +$button-md-opacity-activated: 1 !default; + +/// @prop - Box shadow of the activated button +$button-md-box-shadow-activated: 0 3px 5px rgba(0, 0, 0, .14), 0 3px 5px rgba(0, 0, 0, .21), 0 0 0 0 transparent !default; + +/// @prop - Background color of the ripple on the button +$button-md-ripple-background-color: #555 !default; + + +// Material Design Large Button +// -------------------------------------------------- + +// deprecated +$button-md-large-padding: null !default; + +/// @prop - Padding top of the large button +$button-md-large-padding-top: 0 !default; + +/// @prop - Padding end of the large button +$button-md-large-padding-end: 1em !default; + +/// @prop - Padding bottom of the large button +$button-md-large-padding-bottom: $button-md-large-padding-top !default; + +/// @prop - Padding start of the large button +$button-md-large-padding-start: $button-md-large-padding-end !default; + +/// @prop - Height of the large button +$button-md-large-height: 2.8em !default; + +/// @prop - Font size of the large button +$button-md-large-font-size: 2rem !default; + + +// Material Design Small Button +// -------------------------------------------------- + +// deprecated +$button-md-small-padding: null !default; + +/// @prop - Padding top of the small button +$button-md-small-padding-top: 0 !default; + +/// @prop - Padding end of the small button +$button-md-small-padding-end: .9em !default; + +/// @prop - Padding bottom of the small button +$button-md-small-padding-bottom: $button-md-small-padding-top !default; + +/// @prop - Padding start of the small button +$button-md-small-padding-start: $button-md-small-padding-end !default; + +/// @prop - Height of the small button +$button-md-small-height: 2.1em !default; + +/// @prop - Font size of the small button +$button-md-small-font-size: 1.3rem !default; + +/// @prop - Font size of an icon in the small button +$button-md-small-icon-font-size: 1.4em !default; + + +// Material Design Outline Button +// -------------------------------------------------- + +/// @prop - Border width of the outline button +$button-md-outline-border-width: 1px !default; + +/// @prop - Border style of the outline button +$button-md-outline-border-style: solid !default; + +/// @prop - Border color of the outline button +$button-md-outline-border-color: $button-md-background-color !default; + +/// @prop - Text color of the outline button +$button-md-outline-text-color: $button-md-background-color !default; + +/// @prop - Background color of the outline button +$button-md-outline-background-color: transparent !default; + +/// @prop - Box shadow of the outline button +$button-md-outline-box-shadow: none !default; + +/// @prop - Background color of the outline button on hover +$button-md-outline-background-color-hover: rgba(158, 158, 158, .1) !default; + +/// @prop - Background color of the activated outline button +$button-md-outline-background-color-activated: transparent !default; + +/// @prop - Box shadow of the activated outline button +$button-md-outline-box-shadow-activated: none !default; + +/// @prop - Opacity of the activated outline button +$button-md-outline-opacity-activated: 1 !default; + +/// @prop - Background color of the ripple on the outline button +$button-md-outline-ripple-background-color: $button-md-background-color !default; + + +// Material Design Clear Button +// -------------------------------------------------- + +/// @prop - Border color of the clear button +$button-md-clear-border-color: transparent !default; + +/// @prop - Text color of the clear button +$button-md-clear-text-color: $button-md-background-color !default; + +/// @prop - Background color of the clear button +$button-md-clear-background-color: transparent !default; + +/// @prop - Box shadow of the clear button +$button-md-clear-box-shadow: none !default; + +/// @prop - Opacity of the clear button +$button-md-clear-opacity: 1 !default; + +/// @prop - Background color of the activated clear button +$button-md-clear-background-color-activated: rgba(158, 158, 158, .2) !default; + +/// @prop - Box shadow of the activated clear button +$button-md-clear-box-shadow-activated: $button-md-clear-box-shadow !default; + +/// @prop - Background color of the clear button on hover +$button-md-clear-background-color-hover: rgba(158, 158, 158, .1) !default; + +/// @prop - Background color of the ripple on the clear button +$button-md-clear-ripple-background-color: #999 !default; + + +// Material Design Round Button +// -------------------------------------------------- + +// deprecated +$button-md-round-padding: null !default; + +/// @prop - Padding top of the round button +$button-md-round-padding-top: $button-round-padding-top !default; + +/// @prop - Padding end of the round button +$button-md-round-padding-end: $button-round-padding-end !default; + +/// @prop - Padding bottom of the round button +$button-md-round-padding-bottom: $button-round-padding-bottom !default; + +/// @prop - Padding start of the round button +$button-md-round-padding-start: $button-round-padding-start !default; + +/// @prop - Border radius of the round button +$button-md-round-border-radius: $button-round-border-radius !default; + + +// Material Design Decorator Button +// -------------------------------------------------- + +/// @prop - Font weight of the strong button +$button-md-strong-font-weight: bold !default; + + +// Material Design Default Button +// -------------------------------------------------- + +.button-md { + @include border-radius($button-md-border-radius); + + overflow: hidden; + + height: $button-md-height; + + font-size: $button-md-font-size; + font-weight: $button-md-font-weight; + + text-transform: $button-md-text-transform; + color: $button-md-text-color; + background-color: $button-md-background-color; + box-shadow: $button-md-box-shadow; + + transition: box-shadow $button-md-transition-duration $button-md-transition-timing-function, + background-color $button-md-transition-duration $button-md-transition-timing-function, + color $button-md-transition-duration $button-md-transition-timing-function; + + @include deprecated-variable(margin, $button-md-margin) { + @include margin($button-md-margin-top, $button-md-margin-end, $button-md-margin-bottom, $button-md-margin-start); + } + + @include deprecated-variable(padding, $button-md-padding) { + @include padding($button-md-padding-top, $button-md-padding-end, $button-md-padding-bottom, $button-md-padding-start); + } +} + +.button-md:hover:not(.disable-hover) { + background-color: $button-md-background-color-hover; +} + +.button-md.activated { + background-color: $button-md-background-color-activated; + box-shadow: $button-md-box-shadow-activated; +} + +.button-md .button-effect { + background-color: $button-md-text-color; +} + + +// Material Design Default Button Color Mixin +// -------------------------------------------------- + +@mixin md-button-default($color-name, $color-base, $color-contrast) { + $bg-color: $color-base; + $bg-color-activated: color-shade($bg-color); + $fg-color: $color-contrast; + + .button-md-#{$color-name} { + color: $fg-color; + background-color: $bg-color; + } + + .button-md-#{$color-name}:hover:not(.disable-hover) { + background-color: $bg-color; + } + + .button-md-#{$color-name}.activated { + background-color: $bg-color-activated; + opacity: $button-md-opacity-activated; + } + + .button-md-#{$color-name} .button-effect { + background-color: $fg-color; + } +} + + +// Material Design Button Sizes +// -------------------------------------------------- + +.button-large-md { + height: $button-md-large-height; + + font-size: $button-md-large-font-size; + + @include deprecated-variable(padding, $button-md-large-padding) { + @include padding($button-md-large-padding-top, $button-md-large-padding-end, $button-md-large-padding-bottom, $button-md-large-padding-start); + } +} + +.button-small-md { + height: $button-md-small-height; + + font-size: $button-md-small-font-size; + + @include deprecated-variable(padding, $button-md-small-padding) { + @include padding($button-md-small-padding-top, $button-md-small-padding-end, $button-md-small-padding-bottom, $button-md-small-padding-start); + } +} + +.button-small-md ion-icon[slot="icon-only"] { + font-size: $button-md-small-icon-font-size; +} + +// Material Design Block Button +// -------------------------------------------------- + +.button-block-md { + @include margin-horizontal(0); +} + +// Material Design Full Button +// -------------------------------------------------- + +.button-full-md { + @include margin-horizontal(0); + @include border-radius(0); + + border-right-width: 0; + border-left-width: 0; +} + +// Material Design Outline Button +// -------------------------------------------------- + +.button-outline-md { + border-width: $button-md-outline-border-width; + border-style: $button-md-outline-border-style; + border-color: $button-md-outline-border-color; + color: $button-md-outline-text-color; + background-color: $button-md-outline-background-color; + box-shadow: $button-md-outline-box-shadow; +} + +.button-outline-md:hover:not(.disable-hover) { + background-color: $button-md-outline-background-color-hover; +} + +.button-outline-md.activated { + background-color: $button-md-outline-background-color-activated; + box-shadow: $button-md-outline-box-shadow-activated; + opacity: $button-md-outline-opacity-activated; +} + +.button-outline-md .button-effect { + background-color: $button-md-outline-ripple-background-color; +} + + +// Material Design Outline Button Color Mixin +// -------------------------------------------------- + +@mixin md-button-outline($color-name, $color-base, $color-contrast) { + $fg-color: color-shade($color-base, 5%); + + .button-outline-md-#{$color-name} { + border-color: $fg-color; + color: $fg-color; + background-color: $button-md-outline-background-color; + } + + .button-outline-md-#{$color-name}:hover:not(.disable-hover) { + background-color: $button-md-outline-background-color-hover; + } + + .button-outline-md-#{$color-name}.activated { + background-color: $button-md-outline-background-color-activated; + } + + .button-outline-md-#{$color-name} .button-effect { + background-color: $fg-color; + } +} + + +// Material Design Clear Button +// -------------------------------------------------- + +.button-clear-md { + border-color: $button-md-clear-border-color; + color: $button-md-background-color; + background-color: $button-md-clear-background-color; + box-shadow: $button-md-clear-box-shadow; + opacity: $button-md-clear-opacity; +} + +.button-clear-md.activated { + background-color: $button-md-clear-background-color-activated; + box-shadow: $button-md-clear-box-shadow-activated; +} + +.button-clear-md:hover:not(.disable-hover) { + background-color: $button-md-clear-background-color-hover; +} + +.button-clear-md .button-effect { + background-color: $button-md-clear-ripple-background-color; +} + + +// Material Design Clear Button Color Mixin +// -------------------------------------------------- + +@mixin md-button-clear($color-name, $color-base, $color-contrast) { + $fg-color: $color-base; + + .button-clear-md-#{$color-name} { + border-color: $button-md-clear-border-color; + color: $fg-color; + background-color: $button-md-clear-background-color; + } + + .button-clear-md-#{$color-name}.activated { + background-color: $button-md-clear-background-color-activated; + box-shadow: $button-md-clear-box-shadow-activated; + } + + .button-clear-md-#{$color-name}:hover:not(.disable-hover) { + color: $fg-color; + } +} + + +// Material Design Round Button +// -------------------------------------------------- + +.button-round-md { + @include border-radius($button-md-round-border-radius); + + @include deprecated-variable(padding, $button-md-round-padding) { + @include padding($button-md-round-padding-top, $button-md-round-padding-end, $button-md-round-padding-bottom, $button-md-round-padding-start); + } +} + +.button-md ion-icon[slot="icon-only"] { + @include padding(0); +} + + +// Material Design Ripple Effect +// -------------------------------------------------- +// Only Material uses the button effect, so by default +// it's display none, and .md sets to display block. + +.button-effect { + @include border-radius(50%); + @include transform-origin(center, center); + + position: absolute; + z-index: 0; + display: none; + + background-color: $button-md-ripple-background-color; + opacity: .2; + + transition-timing-function: ease-in-out; + + pointer-events: none; + + @include multi-dir() { + // scss-lint:disable PropertySpelling + top: 0; + left: 0; + } +} + +.md .button-effect { + display: block; +} + + +// Generate Material Design Button Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + @include md-button-default($color-name, $color-base, $color-contrast); + @include md-button-outline($color-name, $color-base, $color-contrast); + @include md-button-clear($color-name, $color-base, $color-contrast); +} + + +// MD strong Button +// -------------------------------------------------- + +.button-strong-md { + font-weight: $button-md-strong-font-weight; +} diff --git a/packages/ionic/src/button/button.scss b/packages/ionic/src/button/button.scss new file mode 100644 index 0000000000..c9461ca97c --- /dev/null +++ b/packages/ionic/src/button/button.scss @@ -0,0 +1,116 @@ +@import "../../themes/ionic.globals"; +@import "button-icon"; + +// Buttons +// -------------------------------------------------- + +// deprecated +$button-round-padding: null !default; + +/// @prop - Padding top of the round button +$button-round-padding-top: 0 !default; + +/// @prop - Padding end of the round button +$button-round-padding-end: 2.6rem !default; + +/// @prop - Padding bottom of the round button +$button-round-padding-bottom: $button-round-padding-top !default; + +/// @prop - Padding start of the round button +$button-round-padding-start: $button-round-padding-end !default; + +/// @prop - Border radius of the round button +$button-round-border-radius: 64px !default; + + +.button { + @include text-align(center); + @include appearance(none); + + visibility: visible; + border: 0; + + position: relative; + z-index: 0; + display: inline-block; + + text-overflow: ellipsis; + text-transform: none; + + white-space: nowrap; + cursor: pointer; + vertical-align: top; // the better option for most scenarios + vertical-align: -webkit-baseline-middle; // the best for those that support it + + transition: background-color, opacity 100ms linear; + + font-kerning: none; + user-select: none; + + contain: content; +} + +.button-inner { + display: flex; + + flex-flow: row nowrap; + flex-shrink: 0; + align-items: center; + justify-content: center; + + width: 100%; + height: 100%; +} + + +[ion-button] { + text-decoration: none; +} + +a[disabled], +button[disabled], +[ion-button][disabled] { + cursor: default; + opacity: .4; + + pointer-events: none; +} + + +// Block Button +// -------------------------------------------------- + +.button-block { + display: block; + clear: both; + + width: 100%; + + contain: strict; +} + +.button-block::after { + clear: both; +} + + +// Full Button +// -------------------------------------------------- + +.button-full { + display: block; + + width: 100%; + + contain: strict; +} + +// Full Outline Button +// -------------------------------------------------- + +.button-full.button-outline { + @include border-radius(0); + + border-right-width: 0; + border-left-width: 0; +} diff --git a/packages/ionic/src/button/button.tsx b/packages/ionic/src/button/button.tsx new file mode 100644 index 0000000000..c58c3a38bd --- /dev/null +++ b/packages/ionic/src/button/button.tsx @@ -0,0 +1,311 @@ +import { Component, h, Prop } from '../index'; +import { CssClassObject } from '../../util/interfaces'; + +/** + * @name Button + * @module ionic + * @description + * Buttons are simple components in Ionic. They can consist of text and icons + * and be enhanced by a wide range of attributes. + * + * @usage + * + * ```html + * + * + * Default + * + * Secondary + * + * Danger + * + * Light + * + * Dark + * + * + * Full Button + * + * Block Button + * + * Round Button + * + * + * Outline + Full + * + * Outline + Block + * + * Outline + Round + * + * + * + * + * Left Icon + * + * + * + * Right Icon + * + * + * + * + * + * + * + * + * Large + * + * Default + * + * Small + * ``` + * + */ +@Component({ + tag: 'ion-button', + styleUrls: { + ios: 'button.ios.scss', + md: 'button.md.scss', + wp: 'button.wp.scss' + } +}) +export class Button { + $el: HTMLElement; + + @Prop() itemButton: boolean = false; + + @Prop() href: string; + + /** + * @Prop {string} The type of button. + * Possible values are: `"button"`, `"bar-button"`. + */ + @Prop() buttonType: string = 'button'; + + /** + * @Prop {boolean} If true, activates the large button size. + * Type: size + */ + @Prop() large: boolean = false; + + /** + * @Prop {boolean} If true, activates the small button size. + * Type: size + */ + @Prop() small: boolean = false; + + /** + * @Prop {boolean} If true, activates the default button size. Normally the default, useful for buttons in an item. + * Type: size + */ + @Prop() default: boolean = false; + + /** + * @Prop {boolean} If true, sets the button into a disabled state. + */ + @Prop() disabled: boolean = false; + + /** + * @Prop {boolean} If true, activates a transparent button style with a border. + * Type: style + */ + @Prop() outline: boolean = false; + + /** + * @Prop {boolean} If true, activates a transparent button style without a border. + * Type: style + */ + @Prop() clear: boolean = false; + + /** + * @Prop {boolean} If true, activates a solid button style. Normally the default, useful for buttons in a toolbar. + * Type: style + */ + @Prop() solid: boolean = false; + + /** + * @Prop {boolean} If true, activates a button with rounded corners. + * Type: shape + */ + @Prop() round: boolean = false; + + /** + * @Prop {boolean} If true, activates a button style that fills the available width. + * Type: display + */ + @Prop() block: boolean = false; + + /** + * @Prop {boolean} If true, activates a button style that fills the available width without + * a left and right border. + * Type: display + */ + @Prop() full: boolean = false; + + /** + * @Prop {boolean} If true, activates a button with a heavier font weight. + * Type: decorator + */ + @Prop() strong: boolean = false; + + /** + * @Prop {string} The mode determines which platform styles to use. + * Possible values are: `"ios"`, `"md"`, or `"wp"`. + * For more information, see [Platform Styles](/docs/theming/platform-specific-styles). + */ + @Prop() mode: 'ios' | 'md' | 'wp'; + + /** + * @Prop {string} The color to use from your Sass `$colors` map. + * Default options are: `"primary"`, `"secondary"`, `"danger"`, `"light"`, and `"dark"`. + * For more information, see [Theming your App](/docs/theming/theming-your-app). + */ + @Prop() color: string; + + /** + * @hidden + * Get the classes based on the button type + * e.g. alert-button, action-sheet-button + */ + getButtonClassList(buttonType: string, mode: string): string[] { + if (!buttonType) { + return []; + } + return [ + buttonType, + `${buttonType}-${mode}` + ]; + } + + + /** + * @hidden + * Get the classes based on the type + * e.g. block, full, round, large + */ + getClassList(buttonType: string, type: string, mode: string): string[] { + if (!type) { + return []; + } + type = type.toLocaleLowerCase(); + return [ + `${buttonType}-${type}`, + `${buttonType}-${type}-${mode}` + ]; + } + + /** + * @hidden + * Get the classes for the color + */ + getColorClassList(color: string, buttonType: string, style: string, mode: string): string[] { + style = (buttonType !== 'bar-button' && style === 'solid') ? 'default' : style; + let className = + buttonType + + ((style && style !== 'default') ? + '-' + style.toLowerCase() : + ''); + + // special case for a default bar button + // if the bar button is default it should get the style + // but if a color is passed the style shouldn't be added + if (buttonType === 'bar-button' && style === 'default') { + className = buttonType; + if (!color) { + className += '-' + style.toLowerCase(); + } + } + + return [`${className}-${mode}`].concat( + color ? `${className}-${mode}-${color}` : [] + ); + } + + /** + * @hidden + * Get the classes for the style + * e.g. outline, clear, solid + */ + getStyleClassList(buttonType: string): string[] { + let classList = [].concat( + this.outline ? this.getColorClassList(this.color, buttonType, 'outline', this.mode) : [], + this.clear ? this.getColorClassList(this.color, buttonType, 'clear', this.mode) : [], + this.solid ? this.getColorClassList(this.color, buttonType, 'solid', this.mode) : [] + ); + + if (classList.length === 0) { + classList = this.getColorClassList(this.color, buttonType, 'default', this.mode); + } + + return classList; + } + + /** + * @hidden + * Get the item classes for the button + */ + getItemClassList(size: string) { + let classList = [].concat( + this.itemButton && !size ? 'item-button' : [] + ); + + return classList; + } + + /** + * @hidden + * Get the element classes to add to the child element + */ + getElementClassList() { + let classList = [].concat( + this.$el.className.length ? this.$el.className.split(' ') : [] + ); + + return classList; + } + + render() { + const size = + (this.large ? 'large' : null) || + (this.small ? 'small' : null) || + (this.default ? 'default' : null); + + const shape = (this.round ? 'round' : null); + + const display = + (this.block ? 'block' : null) || + (this.full ? 'full' : null); + + const decorator = (this.strong ? 'strong' : null); + + const buttonClasses: CssClassObject = [] + .concat( + this.getButtonClassList(this.buttonType, this.mode), + this.getClassList(this.buttonType, shape, this.mode), + this.getClassList(this.buttonType, display, this.mode), + this.getClassList(this.buttonType, size, this.mode), + this.getClassList(this.buttonType, decorator, this.mode), + this.getStyleClassList(this.buttonType), + this.getItemClassList(size), + this.getElementClassList() + ) + .reduce((prevValue, cssClass) => { + prevValue[cssClass] = true; + return prevValue; + }, {}); + + const TagType = this.href ? 'a' : 'button'; + + return ( + + + + + + + + + + ); + } +} diff --git a/packages/ionic/src/button/button.wp.scss b/packages/ionic/src/button/button.wp.scss new file mode 100644 index 0000000000..91bb099185 --- /dev/null +++ b/packages/ionic/src/button/button.wp.scss @@ -0,0 +1,403 @@ +@import "../../themes/ionic.globals.wp"; +@import "./button"; + +// Windows Button +// -------------------------------------------------- + +// deprecated +$button-wp-margin: null !default; + +/// @prop - Margin top of the button +$button-wp-margin-top: .4rem !default; + +/// @prop - Margin end of the button +$button-wp-margin-end: .2rem !default; + +/// @prop - Margin bottom of the button +$button-wp-margin-bottom: .4rem !default; + +/// @prop - Margin start of the button +$button-wp-margin-start: .2rem !default; + +// deprecated +$button-wp-padding: null !default; + +/// @prop - Padding top of the button +$button-wp-padding-top: 0 !default; + +/// @prop - Padding end of the button +$button-wp-padding-end: 1.1em !default; + +/// @prop - Padding bottom of the button +$button-wp-padding-bottom: $button-wp-padding-top !default; + +/// @prop - Padding start of the button +$button-wp-padding-start: $button-wp-padding-end !default; + +/// @prop - Height of the button +$button-wp-height: 3.6rem !default; + +/// @prop - Border width of the button +$button-wp-border-width: 3px !default; + +/// @prop - Border style of the button +$button-wp-border-style: solid !default; + +/// @prop - Border color of the button +$button-wp-border-color: transparent !default; + +/// @prop - Border radius of the button +$button-wp-border-radius: 0 !default; + +/// @prop - Font size of the button text +$button-wp-font-size: 1.4rem !default; + +/// @prop - Background color of the button +$button-wp-background-color: color($colors-wp, primary) !default; + +/// @prop - Text color of the button +$button-wp-text-color: color-contrast($colors-wp, $button-wp-background-color) !default; + +/// @prop - Background color of the activated button +$button-wp-background-color-activated: color-shade($button-wp-background-color) !default; + + +// Windows Large Button +// -------------------------------------------------- + +// deprecated +$button-wp-large-padding: null !default; + +/// @prop - Padding top of the large button +$button-wp-large-padding-top: 0 !default; + +/// @prop - Padding end of the large button +$button-wp-large-padding-end: 1em !default; + +/// @prop - Padding bottom of the large button +$button-wp-large-padding-bottom: $button-wp-large-padding-top !default; + +/// @prop - Padding start of the large button +$button-wp-large-padding-start: $button-wp-large-padding-end !default; + +/// @prop - Height of the large button +$button-wp-large-height: 2.8em !default; + +/// @prop - Font size of the large button +$button-wp-large-font-size: 2rem !default; + + +// Windows Small Button +// -------------------------------------------------- + +// deprecated +$button-wp-small-padding: null !default; + +/// @prop - Padding top of the small button +$button-wp-small-padding-top: 0 !default; + +/// @prop - Padding end of the small button +$button-wp-small-padding-end: .9em !default; + +/// @prop - Padding bottom of the small button +$button-wp-small-padding-bottom: $button-wp-small-padding-top !default; + +/// @prop - Padding start of the small button +$button-wp-small-padding-start: $button-wp-small-padding-end !default; + +/// @prop - Height of the small button +$button-wp-small-height: 2.1em !default; + +/// @prop - Font size of the small button +$button-wp-small-font-size: 1.3rem !default; + +/// @prop - Font size of an icon in the small button +$button-wp-small-icon-font-size: 1.4em !default; + + +// Windows Outline Button +// -------------------------------------------------- + +/// @prop - Border width of the outline button +$button-wp-outline-border-width: 1px !default; + +/// @prop - Border style of the outline button +$button-wp-outline-border-style: solid !default; + +/// @prop - Border color of the outline button +$button-wp-outline-border-color: $button-wp-background-color !default; + +/// @prop - Text color of the outline button +$button-wp-outline-text-color: $button-wp-background-color !default; + +/// @prop - Background color of the outline button +$button-wp-outline-background-color: transparent !default; + +/// @prop - Background color of the activated outline button +$button-wp-outline-background-color-activated: $button-wp-background-color !default; + +/// @prop - Opacity of the background color of the activated outline button +$button-wp-outline-background-color-opacity-activated: .16 !default; + + +// Windows Clear Button +// -------------------------------------------------- + +/// @prop - Text color of the clear button +$button-wp-clear-text-color: $button-wp-background-color !default; + +/// @prop - Background color of the clear button +$button-wp-clear-background-color: transparent !default; + +/// @prop - Background color of the activated clear button +$button-wp-clear-background-color-activated: rgba(158, 158, 158, .2) !default; + +/// @prop - Background color of the clear button on hover +$button-wp-clear-background-color-hover: rgba(158, 158, 158, .1) !default; + + +// Windows Round Button +// -------------------------------------------------- + +// deprecated +$button-wp-round-padding: null !default; + +/// @prop - Padding top of the round button +$button-wp-round-padding-top: $button-round-padding-top !default; + +/// @prop - Padding end of the round button +$button-wp-round-padding-end: $button-round-padding-end !default; + +/// @prop - Padding bottom of the round button +$button-wp-round-padding-bottom: $button-round-padding-bottom !default; + +/// @prop - Padding start of the round button +$button-wp-round-padding-start: $button-round-padding-start !default; + +/// @prop - Border radius of the round button +$button-wp-round-border-radius: $button-round-border-radius !default; + + +// Material Design Decorator Button +// -------------------------------------------------- + +/// @prop - Font weight of the strong button +$button-wp-strong-font-weight: bold !default; + + +// Windows Default Button +// -------------------------------------------------- + +.button-wp { + @include border-radius($button-wp-border-radius); + + height: $button-wp-height; + + border: $button-wp-border-width $button-wp-border-style $button-wp-border-color; + + font-size: $button-wp-font-size; + + color: $button-wp-text-color; + background-color: $button-wp-background-color; + + @include deprecated-variable(margin, $button-wp-margin) { + @include margin($button-wp-margin-top, $button-wp-margin-end, $button-wp-margin-bottom, $button-wp-margin-start); + } + + @include deprecated-variable(padding, $button-wp-padding) { + @include padding($button-wp-padding-top, $button-wp-padding-end, $button-wp-padding-bottom, $button-wp-padding-start); + } +} + +.button-wp:hover:not(.disable-hover) { + border-color: $button-wp-background-color-activated; + background-color: $button-wp-background-color; +} + +.button-wp.activated { + background-color: $button-wp-background-color-activated; +} + + +// Windows Default Button Color Mixin +// -------------------------------------------------- + +@mixin wp-button-default($color-name, $color-base, $color-contrast) { + $bg-color: $color-base; + $bg-color-activated: color-shade($bg-color); + $fg-color: $color-contrast; + + .button-wp-#{$color-name} { + color: $fg-color; + background-color: $bg-color; + } + + .button-wp-#{$color-name}:hover:not(.disable-hover) { + border-color: $bg-color-activated; + background-color: $bg-color; + } + + .button-wp-#{$color-name}.activated { + background-color: $bg-color-activated; + } +} + + +// Windows Button Sizes +// -------------------------------------------------- + +.button-large-wp { + height: $button-wp-large-height; + + font-size: $button-wp-large-font-size; + + @include deprecated-variable(padding, $button-wp-large-padding) { + @include padding($button-wp-large-padding-top, $button-wp-large-padding-end, $button-wp-large-padding-bottom, $button-wp-large-padding-start); + } +} + +.button-small-wp { + height: $button-wp-small-height; + + font-size: $button-wp-small-font-size; + + @include deprecated-variable(padding, $button-wp-small-padding) { + @include padding($button-wp-small-padding-top, $button-wp-small-padding-end, $button-wp-small-padding-bottom, $button-wp-small-padding-start); + } +} + +.button-small-wp ion-icon[slot="icon-only"] { + font-size: $button-wp-small-icon-font-size; +} + +// Windows Block Button +// -------------------------------------------------- + +.button-block-wp { + @include margin-horizontal(0); +} + +// Windows Full Button +// -------------------------------------------------- + +.button-full-wp { + @include margin-horizontal(0); + @include border-radius(0); + + border-right-width: 0; + border-left-width: 0; +} + +// Windows Outline Button +// -------------------------------------------------- + +.button-outline-wp { + border-width: $button-wp-outline-border-width; + border-style: $button-wp-outline-border-style; + border-color: $button-wp-outline-border-color; + color: $button-wp-outline-text-color; + background-color: $button-wp-outline-background-color; +} + +.button-outline-wp:hover:not(.disable-hover) { + background-color: $button-wp-clear-background-color-hover; +} + +.button-outline-wp.activated { + background-color: rgba($button-wp-outline-background-color-activated, $button-wp-outline-background-color-opacity-activated); +} + + +// Windows Outline Button Color Mixin +// -------------------------------------------------- + +@mixin wp-button-outline($color-name, $color-base, $color-contrast) { + $fg-color: color-shade($color-base, 5%); + + .button-outline-wp-#{$color-name} { + border-color: $fg-color; + color: $fg-color; + background-color: $button-wp-outline-background-color; + } + + .button-outline-wp-#{$color-name}:hover:not(.disable-hover) { + border-color: $fg-color; + background-color: $button-wp-clear-background-color-hover; + } + + .button-outline-wp-#{$color-name}.activated { + background-color: rgba($fg-color, $button-wp-outline-background-color-opacity-activated); + } +} + + +// Windows Clear Button +// -------------------------------------------------- + +.button-clear-wp { + color: $button-wp-clear-text-color; + background-color: $button-wp-clear-background-color; +} + +.button-clear-wp.activated { + background-color: $button-wp-clear-background-color-activated; +} + +.button-clear-wp:hover:not(.disable-hover) { + background-color: $button-wp-clear-background-color-hover; +} + + +// Windows Clear Button Color Mixin +// -------------------------------------------------- + +@mixin wp-button-clear($color-name, $color-base, $color-contrast) { + $fg-color: $color-base; + + .button-clear-wp-#{$color-name} { + color: $fg-color; + background-color: $button-wp-clear-background-color; + } + + .button-clear-wp-#{$color-name}.activated { + background-color: $button-wp-clear-background-color-activated; + } + + .button-clear-wp-#{$color-name}:hover:not(.disable-hover) { + color: $fg-color; + } +} + + +// Windows Round Button +// -------------------------------------------------- + +.button-round-wp { + @include border-radius($button-wp-round-border-radius); + + @include deprecated-variable(padding, $button-wp-round-padding) { + @include padding($button-wp-round-padding-top, $button-wp-round-padding-end, $button-wp-round-padding-bottom, $button-wp-round-padding-start); + } +} + +.button-wp ion-icon[slot="icon-only"] { + @include padding(0); +} + + +// Generate Windows Button Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + @include wp-button-default($color-name, $color-base, $color-contrast); + @include wp-button-outline($color-name, $color-base, $color-contrast); + @include wp-button-clear($color-name, $color-base, $color-contrast); +} + + +// WP strong Button +// -------------------------------------------------- + +.button-strong-wp { + font-weight: $button-wp-strong-font-weight; +} diff --git a/packages/ionic/src/buttons/buttons.tsx b/packages/ionic/src/buttons/buttons.tsx new file mode 100644 index 0000000000..4cff6bc7af --- /dev/null +++ b/packages/ionic/src/buttons/buttons.tsx @@ -0,0 +1,23 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-buttons', + host: { + theme: 'bar-buttons' + } +}) +export class Buttons { + $el: HTMLElement; + + ionViewWillLoad() { + const buttons = this.$el.querySelectorAll('ion-button') as any; + for (var i = 0; i < buttons.length; i++) { + buttons[i].setAttribute('button-type', 'bar-button'); + } + } + + render() { + return ; + } +} diff --git a/packages/ionic/src/card-content/card-content.ios.scss b/packages/ionic/src/card-content/card-content.ios.scss new file mode 100644 index 0000000000..337cd774ff --- /dev/null +++ b/packages/ionic/src/card-content/card-content.ios.scss @@ -0,0 +1,62 @@ +@import "../../themes/ionic.globals.ios"; +@import "./card-content"; + + +// iOS Card Header +// -------------------------------------------------- + +/// @prop - Padding top of the card +$card-ios-padding-top: 13px !default; + +// deprecated +$card-ios-padding-right: 16px !default; +/// @prop - Padding end of the card +$card-ios-padding-end: $card-ios-padding-right; + +/// @prop - Padding bottom of the card +$card-ios-padding-bottom: 14px !default; + +// deprecated +$card-ios-padding-left: 16px !default; +/// @prop - Padding start of the card +$card-ios-padding-start: $card-ios-padding-left; + +/// @prop - Font size of the card +$card-ios-font-size: 1.4rem !default; + + +.card-content-ios { + @include padding($card-ios-padding-top, $card-ios-padding-end, $card-ios-padding-bottom, $card-ios-padding-start); + + font-size: $card-ios-font-size; + line-height: 1.4; +} + +.card-header-ios + .card-content-ios, +.card-ios .item + .card-content-ios { + @include padding(0, null, null, null); +} + + +// Generate iOS Card Content Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .card-ios-#{$color-name} { + .card-content-ios { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + .card-content-ios-#{$color-name} { + color: $color-base; + } + } + } + + .card-content-ios-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card-content/card-content.md.scss b/packages/ionic/src/card-content/card-content.md.scss new file mode 100644 index 0000000000..e25dec07e1 --- /dev/null +++ b/packages/ionic/src/card-content/card-content.md.scss @@ -0,0 +1,66 @@ +@import "../../themes/ionic.globals.md"; +@import "./card-content"; + + +// Material Design Card Content +// -------------------------------------------------- + +/// @prop - Padding top of the card +$card-md-padding-top: 13px !default; + +// deprecated +$card-md-padding-right: 16px !default; +/// @prop - Padding right of the card +$card-md-padding-end: $card-md-padding-right; + +/// @prop - Padding bottom of the card +$card-md-padding-bottom: 13px !default; + +// deprecated +$card-md-padding-left: 16px !default; +/// @prop - Padding start of the card +$card-md-padding-start: $card-md-padding-left; + +/// @prop - Font size of the card +$card-md-font-size: 1.4rem !default; + +/// @prop - Line height of the card +$card-md-line-height: 1.5 !default; + + +.card-content-md { + @include padding($card-md-padding-top, $card-md-padding-end, $card-md-padding-bottom, $card-md-padding-start); + + font-size: $card-md-font-size; + line-height: $card-md-line-height; +} + +.card-header-md + .card-content-md, +.card-md .item + .card-content-md { + @include padding(0, null, null, null); +} + + +// Generate Material Design Card Content Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .card-md-#{$color-name} { + + .card-content-md { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + .card-content-md-#{$color-name} { + color: $color-base; + } + } + } + + .card-content-md-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card-content/card-content.scss b/packages/ionic/src/card-content/card-content.scss new file mode 100644 index 0000000000..e1dd30c9d3 --- /dev/null +++ b/packages/ionic/src/card-content/card-content.scss @@ -0,0 +1,9 @@ +@import "../../themes/ionic.globals"; + + +// Card Content +// -------------------------------------------------- + +ion-card-content { + display: block; +} diff --git a/packages/ionic/src/card-content/card-content.tsx b/packages/ionic/src/card-content/card-content.tsx new file mode 100644 index 0000000000..7cb58ea56b --- /dev/null +++ b/packages/ionic/src/card-content/card-content.tsx @@ -0,0 +1,18 @@ +import { Component, h } from '../index'; + +@Component({ + tag: 'ion-card-content', + styleUrls: { + ios: 'card-content.ios.scss', + md: 'card-content.md.scss', + wp: 'card-content.wp.scss' + }, + host: { + theme: 'card-content' + } +}) +export class CardContent { + render() { + return ; + } +} diff --git a/packages/ionic/src/card-content/card-content.wp.scss b/packages/ionic/src/card-content/card-content.wp.scss new file mode 100644 index 0000000000..845556f11f --- /dev/null +++ b/packages/ionic/src/card-content/card-content.wp.scss @@ -0,0 +1,66 @@ +@import "../../themes/ionic.globals.wp"; +@import "./card-content"; + + +// Windows Card Content +// -------------------------------------------------- + +/// @prop - Padding top of the card +$card-wp-padding-top: 13px !default; + +// deprecated +$card-wp-padding-right: 16px !default; +/// @prop - Padding end of the card +$card-wp-padding-end: $card-wp-padding-right; + +/// @prop - Padding bottom of the card +$card-wp-padding-bottom: 13px !default; + +// deprecated +$card-wp-padding-left: 16px !default; +/// @prop - Padding start of the card +$card-wp-padding-start: $card-wp-padding-left; + +/// @prop - Font size of the card +$card-wp-font-size: 1.4rem !default; + +/// @prop - Line height of the card +$card-wp-line-height: 1.5 !default; + + +.card-content-wp { + @include padding($card-wp-padding-top, $card-wp-padding-end, $card-wp-padding-bottom, $card-wp-padding-start); + + font-size: $card-wp-font-size; + line-height: $card-wp-line-height; +} + +.card-header-wp + .card-content-wp, +.card-wp .item + .card-content-wp { + @include padding(0, null, null, null); +} + + +// Generate Windows Card Content Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .card-wp-#{$color-name} { + + .card-content-wp { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + .card-content-wp-#{$color-name} { + color: $color-base; + } + } + } + + .card-content-wp-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card-header/card-header.ios.scss b/packages/ionic/src/card-header/card-header.ios.scss new file mode 100644 index 0000000000..b76dc9d31d --- /dev/null +++ b/packages/ionic/src/card-header/card-header.ios.scss @@ -0,0 +1,66 @@ +@import "../../themes/ionic.globals.ios"; +@import "./card-header"; + + +// iOS Card Header +// -------------------------------------------------- + +/// @prop - Font size of the card header +$card-ios-header-font-size: 1.6rem !default; + +/// @prop - Font weight of the card header +$card-ios-header-font-weight: 500 !default; + +// deprecated +$card-ios-header-padding: null !default; + +/// @prop - Padding top of the card header +$card-ios-header-padding-top: 16px !default; + +/// @prop - Padding end of the card header +$card-ios-header-padding-end: $card-ios-header-padding-top !default; + +/// @prop - Padding bottom of the card header +$card-ios-header-padding-bottom: $card-ios-header-padding-top !default; + +/// @prop - Padding start of the card header +$card-ios-header-padding-start: $card-ios-header-padding-end !default; + +/// @prop - Color of the card header +$card-ios-header-color: #333 !default; + + +.card-header-ios { + font-size: $card-ios-header-font-size; + font-weight: $card-ios-header-font-weight; + color: $card-ios-header-color; + + @include deprecated-variable(padding, $card-ios-header-padding) { + @include padding($card-ios-header-padding-top, $card-ios-header-padding-end, $card-ios-header-padding-bottom, $card-ios-header-padding-start); + } +} + + +// Generate iOS Card Header Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .card-ios-#{$color-name} { + + .card-header-ios { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + .card-header-ios-#{$color-name} { + color: $color-base; + } + } + } + + .card-header-ios-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card-header/card-header.md.scss b/packages/ionic/src/card-header/card-header.md.scss new file mode 100644 index 0000000000..22735833df --- /dev/null +++ b/packages/ionic/src/card-header/card-header.md.scss @@ -0,0 +1,62 @@ +@import "../../themes/ionic.globals.md"; +@import "./card-header"; + + +// Material Design Card Header +// -------------------------------------------------- + +/// @prop - Font size of the card header +$card-md-header-font-size: 1.6rem !default; + +// deprecated +$card-md-header-padding: null !default; + +/// @prop - Padding top of the card header +$card-md-header-padding-top: 16px !default; + +/// @prop - Padding end of the card header +$card-md-header-padding-end: $card-md-header-padding-top !default; + +/// @prop - Padding bottom of the card header +$card-md-header-padding-bottom: $card-md-header-padding-top !default; + +/// @prop - Padding start of the card header +$card-md-header-padding-start: $card-md-header-padding-end !default; + +/// @prop - Color of the card header +$card-md-header-color: #222 !default; + + +.card-header-md { + font-size: $card-md-header-font-size; + color: $card-md-header-color; + + @include deprecated-variable(padding, $card-md-header-padding) { + @include padding($card-md-header-padding-top, $card-md-header-padding-end, $card-md-header-padding-bottom, $card-md-header-padding-start); + } +} + + +// Generate Material Design Card Header Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .card-md-#{$color-name} { + + .card-header-md { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + .card-header-md-#{$color-name} { + color: $color-base; + } + } + } + + .card-header-md-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card-header/card-header.scss b/packages/ionic/src/card-header/card-header.scss new file mode 100644 index 0000000000..afa4775fd0 --- /dev/null +++ b/packages/ionic/src/card-header/card-header.scss @@ -0,0 +1,14 @@ +@import "../../themes/ionic.globals"; + + +// Card Header +// -------------------------------------------------- + + +ion-card-header { + display: block; + overflow: hidden; + + text-overflow: ellipsis; + white-space: nowrap; +} diff --git a/packages/ionic/src/card-header/card-header.tsx b/packages/ionic/src/card-header/card-header.tsx new file mode 100644 index 0000000000..f3bfa1549e --- /dev/null +++ b/packages/ionic/src/card-header/card-header.tsx @@ -0,0 +1,19 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-card-header', + styleUrls: { + ios: 'card-header.ios.scss', + md: 'card-header.md.scss', + wp: 'card-header.wp.scss' + }, + host: { + theme: 'card-header' + } +}) +export class CardHeader { + render() { + return ; + } +} diff --git a/packages/ionic/src/card-header/card-header.wp.scss b/packages/ionic/src/card-header/card-header.wp.scss new file mode 100644 index 0000000000..e981d673bf --- /dev/null +++ b/packages/ionic/src/card-header/card-header.wp.scss @@ -0,0 +1,63 @@ +@import "../../themes/ionic.globals.wp"; +@import "./card-header"; + + +// Windows Card Header +// -------------------------------------------------- + +/// @prop - Font size of the card header +$card-wp-header-font-size: 1.6rem !default; + +// deprecated +$card-wp-header-padding: null !default; + +/// @prop - Padding top of the card header +$card-wp-header-padding-top: 16px !default; + +/// @prop - Padding end of the card header +$card-wp-header-padding-end: $card-wp-header-padding-top !default; + +/// @prop - Padding bottom of the card header +$card-wp-header-padding-bottom: $card-wp-header-padding-top !default; + +/// @prop - Padding start of the card header +$card-wp-header-padding-start: $card-wp-header-padding-end !default; + +/// @prop - Color of the card header +$card-wp-header-color: #222 !default; + + +.card-header-wp { + font-size: $card-wp-header-font-size; + + color: $card-wp-header-color; + + @include deprecated-variable(padding, $card-wp-header-padding) { + @include padding($card-wp-header-padding-top, $card-wp-header-padding-end, $card-wp-header-padding-bottom, $card-wp-header-padding-start); + } +} + + +// Generate Windows Card Header Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .card-wp-#{$color-name} { + + .card-header-wp { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + .card-header-wp-#{$color-name} { + color: $color-base; + } + } + } + + .card-header-wp-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card-title/card-title.ios.scss b/packages/ionic/src/card-title/card-title.ios.scss new file mode 100644 index 0000000000..47e7d7f0c8 --- /dev/null +++ b/packages/ionic/src/card-title/card-title.ios.scss @@ -0,0 +1,84 @@ +@import "../../themes/ionic.globals.ios"; +@import "./card-title"; + + +// iOS Card Title +// -------------------------------------------------- + +/// @prop - Font size of the card title +$card-ios-title-font-size: 1.8rem !default; + +// deprecated +$card-ios-title-padding: null !default; + +/// @prop - Padding top of the card title +$card-ios-title-padding-top: 8px !default; + +/// @prop - Padding end of the card title +$card-ios-title-padding-end: 0 !default; + +/// @prop - Padding bottom of the card title +$card-ios-title-padding-bottom: 8px !default; + +/// @prop - Padding start of the card title +$card-ios-title-padding-start: 0 !default; + +// deprecated +$card-ios-title-margin: null !default; + +/// @prop - Margin top of the card title +$card-ios-title-margin-top: 2px !default; + +/// @prop - Margin end of the card title +$card-ios-title-margin-end: 0 !default; + +/// @prop - Margin bottom of the card title +$card-ios-title-margin-bottom: 2px !default; + +/// @prop - Margin start of the card title +$card-ios-title-margin-start: 0 !default; + +/// @prop - Color of the card title +$card-ios-title-text-color: #222 !default; + + +.card-title-ios { + display: block; + + font-size: $card-ios-title-font-size; + line-height: 1.2; + color: $card-ios-title-text-color; + + @include deprecated-variable(margin, $card-ios-title-margin) { + @include margin($card-ios-title-margin-top, $card-ios-title-margin-end, $card-ios-title-margin-bottom, $card-ios-title-margin-start); + } + + @include deprecated-variable(padding, $card-ios-title-padding) { + @include padding($card-ios-title-padding-top, $card-ios-title-padding-end, $card-ios-title-padding-bottom, $card-ios-title-padding-start); + } +} + + +// Generate iOS Card Title Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .card-ios-#{$color-name} { + + .card-title-ios { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + .card-title-ios-#{$color-name} { + color: $color-base; + } + } + } + + .card-title-ios-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card-title/card-title.md.scss b/packages/ionic/src/card-title/card-title.md.scss new file mode 100644 index 0000000000..68a4db793a --- /dev/null +++ b/packages/ionic/src/card-title/card-title.md.scss @@ -0,0 +1,84 @@ +@import "../../themes/ionic.globals.md"; +@import "./card-title"; + + +// Material Design Card Title +// -------------------------------------------------- + +/// @prop - Font size of the card title +$card-md-title-font-size: 2.4rem !default; + +// deprecated +$card-md-title-padding: null !default; + +/// @prop - Padding top of the card title +$card-md-title-padding-top: 8px !default; + +/// @prop - Padding end of the card title +$card-md-title-padding-end: 0 !default; + +/// @prop - Padding bottom of the card title +$card-md-title-padding-bottom: 8px !default; + +/// @prop - Padding start of the card title +$card-md-title-padding-start: 0 !default; + +// deprecated +$card-md-title-margin: null !default; + +/// @prop - Margin top of the card title +$card-md-title-margin-top: 2px !default; + +/// @prop - Margin end of the card title +$card-md-title-margin-end: 0 !default; + +/// @prop - Margin bottom of the card title +$card-md-title-margin-bottom: 2px !default; + +/// @prop - Margin start of the card title +$card-md-title-margin-start: $card-md-title-margin-end !default; + +/// @prop - Color of the card title +$card-md-title-text-color: #222 !default; + + +.card-title-md { + display: block; + + font-size: $card-md-title-font-size; + line-height: 1.2; + color: $card-md-title-text-color; + + @include deprecated-variable(margin, $card-md-title-margin) { + @include margin($card-md-title-margin-top, $card-md-title-margin-end, $card-md-title-margin-bottom, $card-md-title-margin-start); + } + + @include deprecated-variable(padding, $card-md-title-padding) { + @include padding($card-md-title-padding-top, $card-md-title-padding-end, $card-md-title-padding-bottom, $card-md-title-padding-start); + } +} + + +// Generate Material Design Card Title Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .card-md-#{$color-name} { + + .card-title-md { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + .card-title-md-#{$color-name} { + color: $color-base; + } + } + } + + .card-title-md-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card-title/card-title.scss b/packages/ionic/src/card-title/card-title.scss new file mode 100644 index 0000000000..beb5dbbd0c --- /dev/null +++ b/packages/ionic/src/card-title/card-title.scss @@ -0,0 +1,9 @@ +@import "../../themes/ionic.globals"; + + +// Card Title +// -------------------------------------------------- + +ion-card-title { + display: block; +} diff --git a/packages/ionic/src/card-title/card-title.tsx b/packages/ionic/src/card-title/card-title.tsx new file mode 100644 index 0000000000..5896e5905a --- /dev/null +++ b/packages/ionic/src/card-title/card-title.tsx @@ -0,0 +1,19 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-card-title', + styleUrls: { + ios: 'card-title.ios.scss', + md: 'card-title.md.scss', + wp: 'card-title.wp.scss' + }, + host: { + theme: 'card-title' + } +}) +export class CardTitle { + render() { + return ; + } +} diff --git a/packages/ionic/src/card-title/card-title.wp.scss b/packages/ionic/src/card-title/card-title.wp.scss new file mode 100644 index 0000000000..36429d4ad2 --- /dev/null +++ b/packages/ionic/src/card-title/card-title.wp.scss @@ -0,0 +1,84 @@ +@import "../../themes/ionic.globals.wp"; +@import "./card-title"; + + +// Windows Card Title +// -------------------------------------------------- + +/// @prop - Font size of card title +$card-wp-title-font-size: 2.4rem !default; + +// deprecated +$card-wp-title-padding: null !default; + +/// @prop - Padding top of the card title +$card-wp-title-padding-top: 8px !default; + +/// @prop - Padding end of the card title +$card-wp-title-padding-end: 0 !default; + +/// @prop - Padding bottom of the card title +$card-wp-title-padding-bottom: 8px !default; + +/// @prop - Padding start of the card title +$card-wp-title-padding-start: 0 !default; + +// deprecated +$card-wp-title-margin: null !default; + +/// @prop - Margin top of the card title +$card-wp-title-margin-top: 2px !default; + +/// @prop - Margin end of the card title +$card-wp-title-margin-end: 0 !default; + +/// @prop - Margin bottom of the card title +$card-wp-title-margin-bottom: $card-wp-title-margin-top !default; + +/// @prop - Margin start of the card title +$card-wp-title-margin-start: $card-wp-title-margin-end !default; + +/// @prop - Color of the card title +$card-wp-title-text-color: #222 !default; + + +.card-title-wp { + display: block; + + font-size: $card-wp-title-font-size; + line-height: 1.2; + color: $card-wp-title-text-color; + + @include deprecated-variable(margin, $card-wp-title-margin) { + @include margin($card-wp-title-margin-top, $card-wp-title-margin-end, $card-wp-title-margin-bottom, $card-wp-title-margin-start); + } + + @include deprecated-variable(padding, $card-wp-title-padding) { + @include padding($card-wp-title-padding-top, $card-wp-title-padding-end, $card-wp-title-padding-bottom, $card-wp-title-padding-start); + } +} + + +// Generate Windows Card Title Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .card-wp-#{$color-name} { + + .card-title-wp { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + .card-title-wp-#{$color-name} { + color: $color-base; + } + } + } + + .card-title-wp-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/card/card.ios.scss b/packages/ionic/src/card/card.ios.scss new file mode 100755 index 0000000000..f332977a3b --- /dev/null +++ b/packages/ionic/src/card/card.ios.scss @@ -0,0 +1,139 @@ +@import "../../themes/ionic.globals.ios"; +@import "./card"; + + +// iOS Card +// -------------------------------------------------- + +/// @prop - Margin top of the card +$card-ios-margin-top: 12px !default; + +// deprecated +$card-ios-margin-right: 12px !default; +/// @prop - Margin end of the card +$card-ios-margin-end: $card-ios-margin-right !default; + +/// @prop - Margin bottom of the card +$card-ios-margin-bottom: 12px !default; + +// deprecated +$card-ios-margin-left: 12px !default; +/// @prop - Margin start of the card +$card-ios-margin-start: $card-ios-margin-left !default; + +/// @prop - Padding top of the media on the card +$card-ios-padding-media-top: 10px !default; + +/// @prop - Padding bottom of the media on the card +$card-ios-padding-media-bottom: 9px !default; + +/// @prop - Background color of the card +$card-ios-background-color: $list-ios-background-color !default; + +/// @prop - Box shadow color of the card +$card-ios-box-shadow-color: rgba(0, 0, 0, .3) !default; + +/// @prop - Box shadow of the card +$card-ios-box-shadow: 0 1px 2px $card-ios-box-shadow-color !default; + +/// @prop - Border radius of the card +$card-ios-border-radius: 2px !default; + +/// @prop - Font size of the card +$card-ios-font-size: 1.4rem !default; + +/// @prop - Color of the card text +$card-ios-text-color: #666 !default; + + +.card-ios { + @include margin($card-ios-margin-top, $card-ios-margin-end, $card-ios-margin-bottom, $card-ios-margin-start); + @include border-radius($card-ios-border-radius); + + width: calc(100% - #{($card-ios-margin-end + $card-ios-margin-start)}); + + font-size: $card-ios-font-size; + + background: $card-ios-background-color; + box-shadow: $card-ios-box-shadow; +} + +.card-ios ion-list { + @include margin(null, null, 0, null); +} + +.card-ios > .item:last-child, +.card-ios > .item:last-child .item-inner, +.card-ios > .item-wrapper:last-child .item { + border-bottom: 0; +} + +.card-ios .item-ios.item-block .item-inner { + border: 0; +} + +.card .note-ios { + font-size: 1.3rem; +} + +.card-ios h1 { + @include margin(0, 0, 2px); + + font-size: 2.4rem; + font-weight: normal; +} + +.card-ios h2 { + @include margin(2px, 0); + + font-size: 1.6rem; + font-weight: normal; +} + +.card-ios h3, +.card-ios h4, +.card-ios h5, +.card-ios h6 { + @include margin(2px, 0); + + font-size: 1.4rem; + font-weight: normal; +} + +.card-ios p { + @include margin(0, 0, 2px); + + font-size: 1.4rem; + color: $card-ios-text-color; +} + +.card-ios + ion-card { + @include margin(0, null, null, null); +} + + +// Generate iOS Card Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .card-ios .text-ios-#{$color-name} { + color: $color-base; + } + + .card-ios-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + p { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + .text-ios-#{$color-name} { + color: $color-base; + } + } + } + +} diff --git a/packages/ionic/src/card/card.md.scss b/packages/ionic/src/card/card.md.scss new file mode 100755 index 0000000000..effe9ed1b8 --- /dev/null +++ b/packages/ionic/src/card/card.md.scss @@ -0,0 +1,156 @@ +@import "../../themes/ionic.globals.md"; +@import "./card"; + + +// Material Design Card +// -------------------------------------------------- + +/// @prop - Margin top of the card +$card-md-margin-top: 10px !default; + +// deprecated +$card-md-margin-right: 10px !default; +/// @prop - Margin end of the card +$card-md-margin-end: $card-md-margin-right !default; + +/// @prop - Margin bottom of the card +$card-md-margin-bottom: 10px !default; + +// deprecated +$card-md-margin-left: 10px !default; +/// @prop - Margin start of the card +$card-md-margin-start: $card-md-margin-left !default; + +/// @prop - Padding top of the media on the card +$card-md-padding-media-top: 10px !default; + +/// @prop - Padding bottom of the media on the card +$card-md-padding-media-bottom: 10px !default; + +/// @prop - Size of the card avatar +$card-md-avatar-size: 4rem !default; + +/// @prop - Size of the card thumbnail +$card-md-thumbnail-size: 8rem !default; + +/// @prop - Background color of the card +$card-md-background-color: $list-md-background-color !default; + +/// @prop - Box shadow of the card +$card-md-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12) !default; + +/// @prop - Border radius of the card +$card-md-border-radius: 2px !default; + +/// @prop - Font size of the card +$card-md-font-size: 1.4rem !default; + +/// @prop - Line height of the card +$card-md-line-height: 1.5 !default; + +/// @prop - Color of the card text +$card-md-text-color: #222 !default; + + +.card-md { + @include margin($card-md-margin-top, $card-md-margin-end, $card-md-margin-bottom, $card-md-margin-start); + @include border-radius($card-md-border-radius); + + width: calc(100% - #{($card-md-margin-end + $card-md-margin-start)}); + + font-size: $card-md-font-size; + + background: $card-md-background-color; + box-shadow: $card-md-box-shadow; +} + +.card-md ion-list { + @include margin(null, null, 0, null); +} + +.card-md > .item:last-child, +.card-md > .item:last-child .item-inner, +.card-md > .item-wrapper:last-child .item { + border-bottom: 0; +} + +.card-md .item-md.item-block .item-inner { + border: 0; +} + +.card .note-md { + font-size: 1.3rem; +} + +.card-md h1 { + @include margin(0, 0, 2px); + + font-size: 2.4rem; + font-weight: normal; + color: $card-md-text-color; +} + +.card-md h2 { + @include margin(2px, 0); + + font-size: 1.6rem; + font-weight: normal; + color: $card-md-text-color; +} + +.card-md h3, +.card-md h4, +.card-md h5, +.card-md h6 { + @include margin(2px, 0); + + font-size: 1.4rem; + font-weight: normal; + color: $card-md-text-color; +} + +.card-md p { + @include margin(0, 0, 2px); + + font-size: 1.4rem; + font-weight: normal; + line-height: 1.5; + color: $card-md-text-color; +} + +.card-md + ion-card { + @include margin(0, null, null, null); +} + + +// Generate Material Design Card Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .card-md .text-md-#{$color-name} { + color: $color-base; + } + + .card-md-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + h1, + h2, + h3, + h4, + h5, + h6, + p { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + .text-md-#{$color-name} { + color: $color-base; + } + } + } + +} diff --git a/packages/ionic/src/card/card.scss b/packages/ionic/src/card/card.scss new file mode 100755 index 0000000000..90c59399bb --- /dev/null +++ b/packages/ionic/src/card/card.scss @@ -0,0 +1,16 @@ +@import "../../themes/ionic.globals"; + +// Card +// -------------------------------------------------- + + +ion-card { + display: block; + overflow: hidden; +} + +ion-card img { + display: block; + + width: 100%; +} diff --git a/packages/ionic/src/card/card.tsx b/packages/ionic/src/card/card.tsx new file mode 100644 index 0000000000..2c546a62d4 --- /dev/null +++ b/packages/ionic/src/card/card.tsx @@ -0,0 +1,18 @@ +import { Component, h } from '../index'; + +@Component({ + tag: 'ion-card', + styleUrls: { + ios: 'card.ios.scss', + md: 'card.md.scss', + wp: 'card.wp.scss' + }, + host: { + theme: 'card' + } +}) +export class Card { + render() { + return ; + } +} diff --git a/packages/ionic/src/card/card.wp.scss b/packages/ionic/src/card/card.wp.scss new file mode 100755 index 0000000000..8761d71f7e --- /dev/null +++ b/packages/ionic/src/card/card.wp.scss @@ -0,0 +1,159 @@ +@import "../../themes/ionic.globals.wp"; +@import "./card"; + + +// Windows Card +// -------------------------------------------------- + +/// @prop - Margin top of the card +$card-wp-margin-top: 8px !default; + +// deprecated +$card-wp-margin-right: 8px !default; +/// @prop - Margin end of the card +$card-wp-margin-end: $card-wp-margin-right !default; + +/// @prop - Margin bottom of the card +$card-wp-margin-bottom: 8px !default; + +// deprecated +$card-wp-margin-left: 8px !default; +/// @prop - Margin start of the card +$card-wp-margin-start: $card-wp-margin-left !default; + +/// @prop - Padding top of the media on the card +$card-wp-padding-media-top: 10px !default; + +/// @prop - Padding bottom of the media on the card +$card-wp-padding-media-bottom: 10px !default; + +/// @prop - Size of the card avatar +$card-wp-avatar-size: 4rem !default; + +/// @prop - Size of the card thumbnail +$card-wp-thumbnail-size: 8rem !default; + +/// @prop - Background color of the card +$card-wp-background-color: $list-wp-background-color !default; + +/// @prop - Box shadow color of the card +$card-wp-box-shadow-color: rgba(0, 0, 0, .2) !default; + +/// @prop - Box shadow of the card +$card-wp-box-shadow: 0 1px 1px 1px $card-wp-box-shadow-color !default; + +/// @prop - Border radius of the card +$card-wp-border-radius: 1px !default; + +/// @prop - Font size of the card +$card-wp-font-size: 1.4rem !default; + +/// @prop - Line height of the card +$card-wp-line-height: 1.5 !default; + +/// @prop - Color of the card text +$card-wp-text-color: #222 !default; + + +.card-wp { + @include margin($card-wp-margin-top, $card-wp-margin-end, $card-wp-margin-bottom, $card-wp-margin-start); + @include border-radius($card-wp-border-radius); + + width: calc(100% - #{($card-wp-margin-end + $card-wp-margin-start)}); + + font-size: $card-wp-font-size; + + background: $card-wp-background-color; + box-shadow: $card-wp-box-shadow; +} + +.card-wp ion-list { + @include margin(null, null, 0, null); +} + +.card-wp > .item:last-child, +.card-wp > .item:last-child .item-inner, +.card-wp > .item-wrapper:last-child .item { + border-bottom: 0; +} + +.card-wp .item-wp.item-block .item-inner { + border: 0; +} + +.card .note-wp { + font-size: 1.3rem; +} + +.card-wp h1 { + @include margin(0, 0, 2px); + + font-size: 2.4rem; + font-weight: normal; + color: $card-wp-text-color; +} + +.card-wp h2 { + @include margin(2px, 0); + + font-size: 1.6rem; + font-weight: normal; + color: $card-wp-text-color; +} + +.card-wp h3, +.card-wp h4, +.card-wp h5, +.card-wp h6 { + @include margin(2px, 0); + + font-size: 1.4rem; + font-weight: normal; + color: $card-wp-text-color; +} + +.card-wp p { + @include margin(0, 0, 2px); + + font-size: 1.4rem; + font-weight: normal; + line-height: 1.5; + color: $card-wp-text-color; +} + +.card-wp + ion-card { + @include margin(0, null, null, null); +} + + +// Generate Windows Card Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .card-wp .text-wp-#{$color-name} { + color: $color-base; + } + + .card-wp-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + h1, + h2, + h3, + h4, + h5, + h6, + p { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + .text-wp-#{$color-name} { + color: $color-base; + } + } + } + +} diff --git a/packages/ionic/src/content/content.ios.scss b/packages/ionic/src/content/content.ios.scss new file mode 100644 index 0000000000..810ceee170 --- /dev/null +++ b/packages/ionic/src/content/content.ios.scss @@ -0,0 +1,90 @@ +@import "../../themes/ionic.globals.ios"; +@import "./content"; + + +// iOS Content +// -------------------------------------------------- + +/// @prop - Background color of the outer content +$content-ios-outer-background: #efeff4 !default; + +/// @prop - Background color of the content when making transition +$content-ios-transition-background: #000 !default; + + +.content-ios { + color: $text-ios-color; + background-color: $background-ios-color; +} + +.content-ios.outer-content { + background: $content-ios-outer-background; +} + +.content-ios hr { + height: $hairlines-width; + + background-color: rgba(0, 0, 0, .12); +} + +.ios .ion-page.show-page ~ .nav-decor { + // when ios pages transition, the leaving page grays out + // this is the black square behind all pages so they gray out + @include position(0, null, null, 0); + + position: absolute; + z-index: 0; + display: block; + + width: 100%; + height: 100%; + + background: $content-ios-transition-background; + + pointer-events: none; +} + + +// iOS Content Padding +// -------------------------------------------------- + +@include content-padding('ios', $content-ios-padding); + + +// iOS Content Margin +// -------------------------------------------------- + +@include content-margin('ios', $content-ios-margin); + + +// iOS Content Scroll +// -------------------------------------------------- + +.content-ios:not([no-bounce]) > .scroll-content::before, +.content-ios:not([no-bounce]) > .scroll-content::after { + position: absolute; + + width: 1px; + height: 1px; + + content: ""; +} + +.content-ios:not([no-bounce]) > .scroll-content::before { + bottom: -1px; +} + +.content-ios:not([no-bounce]) > .scroll-content::after { + top: -1px; +} + +.platform-core .content-ios .scroll-content::after, +.platform-core .content-ios .scroll-content::before { + position: initial; + + top: initial; + bottom: initial; + + width: initial; + height: initial; +} diff --git a/packages/ionic/src/content/content.md.scss b/packages/ionic/src/content/content.md.scss new file mode 100644 index 0000000000..06150a255f --- /dev/null +++ b/packages/ionic/src/content/content.md.scss @@ -0,0 +1,27 @@ +@import "../../themes/ionic.globals.md"; +@import "./content"; + + +// Material Design Content +// -------------------------------------------------- + +.content-md { + color: $text-md-color; + background-color: $background-md-color; +} + +.content-md hr { + background-color: rgba(0, 0, 0, .08); +} + + +// Material Design Content Padding +// -------------------------------------------------- + +@include content-padding('md', $content-md-padding); + + +// Material Design Content Margin +// -------------------------------------------------- + +@include content-margin('md', $content-md-margin); diff --git a/packages/ionic/src/content/content.scss b/packages/ionic/src/content/content.scss new file mode 100644 index 0000000000..21ee556c4e --- /dev/null +++ b/packages/ionic/src/content/content.scss @@ -0,0 +1,185 @@ +@import "../../themes/ionic.globals"; + +// Content +// -------------------------------------------------- + +ion-content { + @include position(0, null, null, 0); + + position: relative; + display: block; + + width: 100%; + height: 100%; + + contain: layout size style; +} + +.ion-page > ion-content { + position: absolute; +} + +a { + color: $link-color; +} + + +// Scrollable Content +// -------------------------------------------------- + +ion-scroll { + @include position(0, 0, 0, 0); + + position: absolute; + z-index: $z-index-scroll-content; + display: block; + + overflow-x: hidden; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + will-change: scroll-position; + + contain: size style layout; +} + +ion-content.js-scroll ion-scroll { + position: relative; + + min-height: 100%; + + overflow-x: initial; + overflow-y: initial; + -webkit-overflow-scrolling: auto; + will-change: initial; +} + +.disable-scroll .ion-page { + pointer-events: none; + touch-action: none; +} + +ion-content.has-refresher ion-scroll { + background-color: inherit; +} + +// Fixed Content (ion-fixed and ion-fab) +// -------------------------------------------------- + +.fixed-content { + @include position(0, 0, 0, 0); + + position: absolute; + display: block; +} + +[ion-fixed] { + position: absolute; + + z-index: $z-index-fixed-content; + + transform: translateZ(0); +} + + +// Content Padding +// -------------------------------------------------- + +ion-app [no-padding], +ion-app [no-padding] ion-scroll { + @include padding(0); +} + +@mixin content-padding($mode, $content-padding) { + ion-app.#{$mode} [padding], + ion-app.#{$mode} [padding] ion-scroll { + @include padding($content-padding); + } + + ion-app.#{$mode} [padding-top], + ion-app.#{$mode} [padding-top] ion-scroll { + @include padding($content-padding, null, null, null); + } + + ion-app.#{$mode} [padding-left], + ion-app.#{$mode} [padding-left] ion-scroll { + @include padding-horizontal($content-padding, null); + } + + ion-app.#{$mode} [padding-right], + ion-app.#{$mode} [padding-right] ion-scroll { + @include padding-horizontal(null, $content-padding); + } + + ion-app.#{$mode} [padding-bottom], + ion-app.#{$mode} [padding-bottom] ion-scroll { + @include padding(null, null, $content-padding, null); + } + + ion-app.#{$mode} [padding-vertical], + ion-app.#{$mode} [padding-vertical] ion-scroll { + @include padding($content-padding, null, $content-padding, null); + } + + ion-app.#{$mode} [padding-horizontal], + ion-app.#{$mode} [padding-horizontal] ion-scroll { + @include padding-horizontal($content-padding); + } +} + + +// Content Margin +// -------------------------------------------------- + +ion-app [no-margin], +ion-app [no-margin] ion-scroll { + @include margin(0); +} + +@mixin content-margin($mode, $content-margin) { + ion-app.#{$mode} [margin], + ion-app.#{$mode} [margin] ion-scroll { + @include margin($content-margin); + } + + ion-app.#{$mode} [margin-top], + ion-app.#{$mode} [margin-top] ion-scroll { + @include margin($content-margin, null, null, null); + } + + ion-app.#{$mode} [margin-left], + ion-app.#{$mode} [margin-left] ion-scroll { + // scss-lint:disable PropertySpelling + margin-left: $content-margin; + } + + ion-app.#{$mode} [margin-start], + ion-app.#{$mode} [margin-start] ion-scroll { + @include margin-horizontal($content-margin, null); + } + + ion-app.#{$mode} [margin-right], + ion-app.#{$mode} [margin-right] ion-scroll { + // scss-lint:disable PropertySpelling + margin-right: $content-margin; + } + + ion-app.#{$mode} [margin-end], + ion-app.#{$mode} [margin-end] ion-scroll { + @include margin-horizontal(null, $content-margin); + } + + ion-app.#{$mode} [margin-bottom], + ion-app.#{$mode} [margin-bottom] ion-scroll { + @include margin(null, null, $content-margin, null); + } + + ion-app.#{$mode} [margin-vertical], + ion-app.#{$mode} [margin-vertical] ion-scroll { + @include margin($content-margin, null, $content-margin, null); + } + + ion-app.#{$mode} [margin-horizontal], + ion-app.#{$mode} [margin-horizontal] ion-scroll { + @include margin-horizontal($content-margin); + } +} \ No newline at end of file diff --git a/packages/ionic/src/content/content.tsx b/packages/ionic/src/content/content.tsx new file mode 100644 index 0000000000..dff917e953 --- /dev/null +++ b/packages/ionic/src/content/content.tsx @@ -0,0 +1,134 @@ +import { Component, h, Ionic, Prop } from '../index'; +import { createThemedClasses } from '../../util/theme'; +import { getParentElement } from '../../util/helpers'; +import { Scroll } from '../scroll/scroll-interface'; +import { ScrollDetail } from '../../util/interfaces'; + + +@Component({ + tag: 'ion-content', + styleUrls: { + ios: 'content.ios.scss', + md: 'content.md.scss', + wp: 'content.wp.scss' + } +}) +export class Content { + private mode: string; + private color: string; + $el: HTMLElement; + $scroll: Scroll; + $scrollDetail: ScrollDetail = {}; + $fixed: HTMLElement; + $siblingHeader: HTMLElement; + $siblingFooter: HTMLElement; + + /** + * @output {ScrollEvent} Emitted when the scrolling first starts. + */ + @Prop() ionScrollStart: Function; + + /** + * @output {ScrollEvent} Emitted on every scroll event. + */ + @Prop() ionScroll: Function; + + /** + * @output {ScrollEvent} Emitted when scrolling ends. + */ + @Prop() ionScrollEnd: Function; + + headerHeight: string; + + + ionViewDidUnload() { + this.$fixed = this.$scroll = this.$siblingFooter = this.$siblingHeader = this.$scrollDetail = null; + } + + enableJsScroll() { + this.$scroll.jsScroll = true; + } + + /** + * Scroll to the top of the content component. + * + * @param {number} [duration] Duration of the scroll animation in milliseconds. Defaults to `300`. + * @returns {Promise} Returns a promise which is resolved when the scroll has completed. + */ + scrollToTop(duration: number = 300) { + return this.$scroll.scrollToTop(duration); + } + + /** + * Scroll to the bottom of the content component. + * + * @param {number} [duration] Duration of the scroll animation in milliseconds. Defaults to `300`. + * @returns {Promise} Returns a promise which is resolved when the scroll has completed. + */ + scrollToBottom(duration: number = 300) { + return this.$scroll.scrollToBottom(duration); + } + + /** + * @input {boolean} If true, the content will scroll behind the headers + * and footers. This effect can easily be seen by setting the toolbar + * to transparent. + */ + @Prop() fullscreen: boolean = false; + + + render() { + const props: any = {}; + const scrollStyle: any = {}; + + const pageChildren: HTMLElement[] = getParentElement(this.$el).children; + const headerHeight = getToolbarHeight('ION-HEADER', pageChildren, this.mode, '44px', '56px'); + const footerHeight = getToolbarHeight('ION-FOOTER', pageChildren, this.mode, '50px', '48px'); + + if (this.fullscreen) { + scrollStyle.paddingTop = headerHeight; + scrollStyle.paddingBottom = footerHeight; + } else { + scrollStyle.marginTop = headerHeight; + scrollStyle.marginBottom = footerHeight; + } + + if (this.ionScrollStart) { + props['ionScrollStart'] = this.ionScrollStart.bind(this); + } + if (this.ionScroll) { + props['ionScroll'] = this.ionScroll.bind(this); + } + if (this.ionScrollEnd) { + props['ionScrollEnd'] = this.ionScrollEnd.bind(this); + } + const themedClasses = createThemedClasses(this.mode, this.color, 'content'); + themedClasses['statusbar-padding'] = Ionic.config.getBoolean('statusbarPadding'); + + return ( + + + + ); + } +} + + +function getToolbarHeight(toolbarTagName: string, pageChildren: HTMLElement[], mode: string, iosHeight: string, defaultHeight: string) { + for (var i = 0; i < pageChildren.length; i++) { + if (pageChildren[i].tagName === toolbarTagName) { + var headerHeight = pageChildren[i].getAttribute(`${mode}-height`); + if (headerHeight) { + return headerHeight; + } + + if (mode === 'ios') { + return iosHeight; + } + + return defaultHeight; + } + } + + return ''; +} diff --git a/packages/ionic/src/content/content.wp.scss b/packages/ionic/src/content/content.wp.scss new file mode 100644 index 0000000000..b3abc6055c --- /dev/null +++ b/packages/ionic/src/content/content.wp.scss @@ -0,0 +1,27 @@ +@import "../../themes/ionic.globals.wp"; +@import "./content"; + + +// Windows Content +// -------------------------------------------------- + +.content-wp { + color: $text-wp-color; + background-color: $background-wp-color; +} + +.content-wp hr { + background-color: rgba(0, 0, 0, .08); +} + + +// Windows Content Padding +// -------------------------------------------------- + +@include content-padding('wp', $content-wp-padding); + + +// Windows Content Margin +// -------------------------------------------------- + +@include content-margin('wp', $content-wp-margin); diff --git a/packages/ionic/src/core-hn/comments-list.tsx b/packages/ionic/src/core-hn/comments-list.tsx new file mode 100644 index 0000000000..b79c4a6f14 --- /dev/null +++ b/packages/ionic/src/core-hn/comments-list.tsx @@ -0,0 +1,33 @@ +import { Component, h, Prop } from '../index'; + + +@Component({ + tag: 'comments-list' +}) +export class CommentsList { + + @Prop() type: any; + + render() { + const items = this.type.map((comment: any) => { + return ( + + + + {`Posted by ${comment.user} ${comment.time_ago}`} + + + + + ); + }); + + return ( + + {items} + + ); + } +} diff --git a/packages/ionic/src/core-hn/comments-page.tsx b/packages/ionic/src/core-hn/comments-page.tsx new file mode 100644 index 0000000000..b3a07d431d --- /dev/null +++ b/packages/ionic/src/core-hn/comments-page.tsx @@ -0,0 +1,32 @@ +import { Component, h, Ionic, Prop } from '../index'; + + +@Component({ + tag: 'comments-page' +}) +export class CommentsPage { + + @Prop() comments: string; + + close() { + Ionic.emit(this, 'ionDismiss'); + } + + render() { + return [ + + + + + + + Comments + + + , + + + + ]; + } +} diff --git a/packages/ionic/src/core-hn/container.tsx b/packages/ionic/src/core-hn/container.tsx new file mode 100644 index 0000000000..f3a933d45f --- /dev/null +++ b/packages/ionic/src/core-hn/container.tsx @@ -0,0 +1,220 @@ +import { Component, h, Ionic, State } from '../index'; + + +@Component({ + tag: 'news-container', + styleUrls: 'main.scss' +}) +export class NewsContainer { + + @State() stories: any[] = []; + apiRootUrl: string = 'https://node-hnapi.herokuapp.com'; + page: number = 1; + pageType: string; + @State() firstSelectedClass: boolean; + @State() secondSelectedClass: boolean = false; + @State() thirdSelectedClass: boolean = false; + @State() fourthSelectedClass: boolean = false; + prevClass: any; + + ionViewWillLoad() { + if (Ionic.isServer) return; + + this.firstSelectedClass = true; + + // call to firebase function for first view + this.fakeFetch('https://us-central1-corehacker-10883.cloudfunctions.net/fetchNews').then((data) => { + this.stories = data; + this.pageType = 'news'; + }); + } + + fakeFetch(url: string): Promise { + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + + request.addEventListener('load', function () { + resolve(JSON.parse(this.responseText)); + }); + + request.addEventListener('error', function () { + reject(`error: ${this.statusText} / ${this.status}`); + }); + + request.open('GET', url, true); + request.send(); + }); + } + + getStories(type: string) { + if (Ionic.isServer) return; + + // reset page number + this.page = 1; + + // this is definitely not the best solution + // working on something more elegant, but this + // gets the job done for the moment + switch (type) { + case 'news': + this.firstSelectedClass = true; + this.secondSelectedClass = false; + this.thirdSelectedClass = false; + this.fourthSelectedClass = false; + break; + case 'show': + this.secondSelectedClass = true; + this.firstSelectedClass = false; + this.thirdSelectedClass = false; + this.fourthSelectedClass = false; + break; + case 'jobs': + this.thirdSelectedClass = true; + this.firstSelectedClass = false; + this.fourthSelectedClass = false; + this.secondSelectedClass = false; + break; + case 'ask': + this.fourthSelectedClass = true; + this.thirdSelectedClass = false; + this.secondSelectedClass = false; + this.firstSelectedClass = false; + break; + } + + Ionic.controller('loading', { content: `fetching ${type} articles...` }).then((loading: any) => { + loading.present().then(() => { + + this.fakeFetch(`${this.apiRootUrl}/${type}?page=1`).then((data) => { + this.stories = data; + + loading.dismiss(); + }); + + this.pageType = type; + + }); + }); + } + + previous() { + if (this.page > 1) { + + Ionic.controller('loading', { content: `fetching articles...` }).then(loading => { + loading.present().then(() => { + + this.page = this.page--; + console.log(this.page--); + + this.fakeFetch(`${this.apiRootUrl}/${this.pageType}?page=${this.page}`).then((data) => { + this.stories = data; + + loading.dismiss(); + }); + + }); + }); + } else { + window.navigator.vibrate(200); + } + } + + next() { + Ionic.controller('loading', { content: `fetching articles...` }).then(loading => { + loading.present().then(() => { + + this.page = this.page++; + console.log(this.page++); + + this.fakeFetch(`${this.apiRootUrl}/${this.pageType}?page=${this.page}`).then((data) => { + if (data.length !== 0) { + this.stories = data; + } + loading.dismiss(); + }); + + }); + }); + } + + ionViewWillUpdate() { + this.prevClass = this.page === 1 ? { 'no-back': true } : { 'yes-back': true }; + } + + render() { + console.log('rendering'); + + return [ + + + + + + this.getStories('news')} + > + News + + this.getStories('show')} + > + Show + + this.getStories('jobs')} + > + Jobs + + this.getStories('ask')} + > + Ask + + + + , + + + + , + + + + this.previous()}> + prev + + + + page {this.page} + + + this.next()}> + next + + + + + ]; + } +} diff --git a/packages/ionic/src/core-hn/main.scss b/packages/ionic/src/core-hn/main.scss new file mode 100644 index 0000000000..d7a24726a5 --- /dev/null +++ b/packages/ionic/src/core-hn/main.scss @@ -0,0 +1,97 @@ +ion-label { + white-space: normal !important; +} + +ion-toolbar ion-button.header-button button { + color: white !important; +} + +.points { + color: #327eff; + font-weight: bold; + width: 45px; +} + +.header-icon { + color: white; + font-size: 3.4rem !important; + margin-left: 15px !important; + width: 3.4rem; +} + +.page-number { + line-height: 3; +} + +.pager { + text-align: center; +} + +ion-footer ion-toolbar div.toolbar-background { + background: white; +} + +ion-footer { + height: 48px; +} + +ion-footer ion-toolbar { + min-height: 48px !important; +} + +.comments-text { + color: #717883; + cursor: pointer; +} + +.list-header a { + color: #202939; + text-decoration: none; +} + +.item-content { + padding-top: 5px; + padding-bottom: 5px; +} + +.comments-title { + line-height: 2.1; +} + +.header-button { + opacity: 0.6; + width: 7rem; +} + +.header-button-selected { + opacity: 1; +} + +.header-button-selected button { + font-weight: bold; +} + +.tabs-bar { + display: flex; +} + +.no-back button { + opacity: 0.3; +} + +.yes-back button { + opacity: 1; + color: #327eff !important; +} + +.close-button ion-icon { + color: white; + font-size: 2.3rem; + margin-left: 15px; +} + +.ionic-icon { + height: 40px; + float: left; + margin-left: 10px; +} diff --git a/packages/ionic/src/core-hn/news-list.tsx b/packages/ionic/src/core-hn/news-list.tsx new file mode 100644 index 0000000000..f055e17840 --- /dev/null +++ b/packages/ionic/src/core-hn/news-list.tsx @@ -0,0 +1,99 @@ +import { Component, h, Ionic, Prop, State } from '../index'; + + +@Component({ + tag: 'news-list' +}) +export class NewsList { + + apiRootUrl: string = 'https://node-hnapi.herokuapp.com'; + + @Prop() type: any[]; + @State() fakeData: any[] = []; + + + fakeFetch(url: string): Promise { + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + + request.addEventListener('load', function () { + resolve(JSON.parse(this.responseText)); + }); + + request.addEventListener('error', function () { + reject(`error: ${this.statusText} / ${this.status}`); + }); + + request.open('GET', url, true); + request.send(); + }); + } + + comments(story: any) { + if (Ionic.isServer) return; + + Ionic.controller('loading', { content: 'fetching comments...' }).then(loading => { + loading.present(); + + this.fakeFetch(`${this.apiRootUrl}/item/${story.id}`).then((data) => { + setTimeout(() => { + loading.dismiss().then(() => { + Ionic.controller('modal', { component: 'comments-page', componentProps: { comments: data.comments, storyId: story.id } }).then(modal => { + console.log('modal created'); + + modal.present().then(() => { + console.log('modal finished transitioning in, commments: ', modal.componentProps.comments); + }); + }); + }); + }, 300); + }); + + }); + } + + render() { + if (this.type.length === 0) { + return ( + + {Array.from(Array(10)).map(() => + + + + + + + + + + + + + + + )} + + ); + } + + return ( + + {this.type.map((story: any) => ( + + + {story.points || 0} + + + + {story.title} + + this.comments(story)}> + Posted by {story.user} {story.time_ago} | {story.comments_count} comments + + + + ))} + + ); + } +} diff --git a/packages/ionic/src/fiber-demo/app.tsx b/packages/ionic/src/fiber-demo/app.tsx new file mode 100644 index 0000000000..773a756a8b --- /dev/null +++ b/packages/ionic/src/fiber-demo/app.tsx @@ -0,0 +1,54 @@ +import { Component, Prop, h } from '../index'; +import { VNodeData } from '../../util/interfaces'; + +@Component({ + tag: 'fiber-demo' +}) +export class FiberDemo { + @Prop() elapsed: number = 0; + + seconds: number = 0; + intervalID: number; + + ionViewDidLoad() { + var tick: Function = this.tick.bind(this); + this.intervalID = setInterval(tick, 1000); + } + tick() { + this.seconds = (this.seconds % 10) + 1; + } + + hostData(): VNodeData { + const elapsed = this.elapsed; + const t = (elapsed / 1000) % 10; + const scale = 1 + (t > 5 ? 10 - t : t) / 10; + var containerStyle = { + position: 'absolute', + transformOrigin: '0 0', + left: '50%', + top: '50%', + width: '10px', + height: '10px', + background: '#eee', + transform: 'scaleX(' + (scale / 2.1) + ') scaleY(0.7) translateZ(0.1px)' + }; + + return { + style: containerStyle + }; + } + + render() { + return ( + + + + + ); + } +} diff --git a/packages/ionic/src/fiber-demo/dot.tsx b/packages/ionic/src/fiber-demo/dot.tsx new file mode 100644 index 0000000000..ce24b8820a --- /dev/null +++ b/packages/ionic/src/fiber-demo/dot.tsx @@ -0,0 +1,53 @@ +import { Component, Prop, h, State } from '../index'; +import { VNodeData } from '../../util/interfaces'; + +@Component({ + tag: 'fiber-dot' +}) +export class FiberDot { + @Prop() size: number; + @Prop() x: number; + @Prop() y: number; + @Prop() text: string; + + @State() hover: boolean = false; + + enter() { + this.hover = true; + } + + leave() { + this.hover = false; + } + + hostData(): VNodeData { + const s = this.size * 1.3; + const style = { + position: 'absolute', + font: 'normal 15px sans-serif', + textAlign: 'center', + cursor: 'pointer', + width: s + 'px', + height: s + 'px', + left: (this.x) + 'px', + top: (this.y) + 'px', + borderRadius: (s / 2) + 'px', + lineHeight: (s) + 'px', + background: this.hover ? '#ff0' : '#61dafb' + }; + + return { + style: style, + on: { + mouseenter: this.enter.bind(this), + mouseleave: this.leave.bind(this) + }, + }; + } + + render() { + return ( + this.hover ? '**' + this.text + '**' : this.text + ); + } +} diff --git a/packages/ionic/src/fiber-demo/triangle.tsx b/packages/ionic/src/fiber-demo/triangle.tsx new file mode 100644 index 0000000000..3a5924798d --- /dev/null +++ b/packages/ionic/src/fiber-demo/triangle.tsx @@ -0,0 +1,51 @@ +import { Component, Prop, h } from '../index'; + +var targetSize = 25; + +@Component({ + tag: 'fiber-triangle', + shadow: false +}) +export class FiberTriangle { + + @Prop() x: number; + @Prop() y: number; + @Prop() s: number; + @Prop() seconds: number; + + render() { + var s = this.s; + if (s <= targetSize) { + return ( + + ); + } + s = s / 2; + + return [ + , + , + + ]; + } +} diff --git a/packages/ionic/src/footer/footer.tsx b/packages/ionic/src/footer/footer.tsx new file mode 100644 index 0000000000..06c768bcc2 --- /dev/null +++ b/packages/ionic/src/footer/footer.tsx @@ -0,0 +1,14 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-footer', + host: { + theme: 'footer' + } +}) +export class Footer { + render() { + return ; + } +} diff --git a/packages/ionic/src/gesture/gesture-controller.ts b/packages/ionic/src/gesture/gesture-controller.ts new file mode 100644 index 0000000000..98bb493096 --- /dev/null +++ b/packages/ionic/src/gesture/gesture-controller.ts @@ -0,0 +1,245 @@ + + +export class GestureController { + private id: number = 0; + private requestedStart: { [eventId: number]: number } = {}; + private disabledGestures: { [eventName: string]: Set } = {}; + private disabledScroll: Set = new Set(); + private capturedID: number = null; + + + createGesture(gestureName: string, gesturePriority: number, disableScroll: boolean): GestureDelegate { + return new GestureDelegate(this, this.newID(), gestureName, gesturePriority, disableScroll); + } + + createBlocker(opts: BlockerOptions = {}): BlockerDelegate { + return new BlockerDelegate(this.newID(), this, + opts.disable, + !!opts.disableScroll + ); + } + + newID(): number { + return this.id++; + } + + start(gestureName: string, id: number, priority: number): boolean { + if (!this.canStart(gestureName)) { + delete this.requestedStart[id]; + return false; + } + + this.requestedStart[id] = priority; + return true; + } + + capture(gestureName: string, id: number, priority: number): boolean { + if (!this.start(gestureName, id, priority)) { + return false; + } + let requestedStart = this.requestedStart; + let maxPriority = -10000; + for (let gestureID in requestedStart) { + maxPriority = Math.max(maxPriority, requestedStart[gestureID]); + } + + if (maxPriority === priority) { + this.capturedID = id; + this.requestedStart = {}; + return true; + } + delete requestedStart[id]; + + return false; + } + + release(id: number) { + delete this.requestedStart[id]; + + if (this.capturedID && id === this.capturedID) { + this.capturedID = null; + } + } + + disableGesture(gestureName: string, id: number) { + let set = this.disabledGestures[gestureName]; + if (!set) { + set = new Set(); + this.disabledGestures[gestureName] = set; + } + set.add(id); + } + + enableGesture(gestureName: string, id: number) { + let set = this.disabledGestures[gestureName]; + if (set) { + set.delete(id); + } + } + + disableScroll(id: number) { + // let isEnabled = !this.isScrollDisabled(); + this.disabledScroll.add(id); + // if (this._app && isEnabled && this.isScrollDisabled()) { + // console.debug('GestureController: Disabling scrolling'); + // this._app._setDisableScroll(true); + // } + } + + enableScroll(id: number) { + // let isDisabled = this.isScrollDisabled(); + this.disabledScroll.delete(id); + // if (this._app && isDisabled && !this.isScrollDisabled()) { + // console.debug('GestureController: Enabling scrolling'); + // this._app._setDisableScroll(false); + // } + } + + canStart(gestureName: string): boolean { + if (this.capturedID) { + // a gesture already captured + return false; + } + + if (this.isDisabled(gestureName)) { + return false; + } + + return true; + } + + isCaptured(): boolean { + return !!this.capturedID; + } + + isScrollDisabled(): boolean { + return this.disabledScroll.size > 0; + } + + isDisabled(gestureName: string): boolean { + let disabled = this.disabledGestures[gestureName]; + if (disabled && disabled.size > 0) { + return true; + } + return false; + } + +} + + +export class GestureDelegate { + + constructor( + private ctrl: GestureController, + private id: number, + private name: string, + private priority: number, + private disableScroll: boolean + ) { } + + canStart(): boolean { + if (!this.ctrl) { + return false; + } + + return this.ctrl.canStart(this.name); + } + + start(): boolean { + if (!this.ctrl) { + return false; + } + + return this.ctrl.start(this.name, this.id, this.priority); + } + + capture(): boolean { + if (!this.ctrl) { + return false; + } + + let captured = this.ctrl.capture(this.name, this.id, this.priority); + if (captured && this.disableScroll) { + this.ctrl.disableScroll(this.id); + } + + return captured; + } + + release() { + if (this.ctrl) { + this.ctrl.release(this.id); + + if (this.disableScroll) { + this.ctrl.enableScroll(this.id); + } + } + } + + destroy() { + this.release(); + this.ctrl = null; + } + +} + + +export class BlockerDelegate { + + blocked: boolean = false; + + constructor( + private id: number, + private controller: GestureController, + private disable: string[], + private disableScroll: boolean + ) { } + + block() { + if (!this.controller) { + return; + } + if (this.disable) { + this.disable.forEach(gesture => { + this.controller.disableGesture(gesture, this.id); + }); + } + + if (this.disableScroll) { + this.controller.disableScroll(this.id); + } + this.blocked = true; + } + + unblock() { + if (!this.controller) { + return; + } + if (this.disable) { + this.disable.forEach(gesture => { + this.controller.enableGesture(gesture, this.id); + }); + } + if (this.disableScroll) { + this.controller.enableScroll(this.id); + } + this.blocked = false; + } + + destroy() { + this.unblock(); + this.controller = null; + } +} + + +export interface BlockerOptions { + disableScroll?: boolean; + disable?: string[]; +} + + +export const BLOCK_ALL: BlockerOptions = { + disable: ['menu-swipe', 'goback-swipe'], + disableScroll: true +}; diff --git a/packages/ionic/src/gesture/gesture.ts b/packages/ionic/src/gesture/gesture.ts new file mode 100644 index 0000000000..3fae5d26ee --- /dev/null +++ b/packages/ionic/src/gesture/gesture.ts @@ -0,0 +1,396 @@ +import { applyStyles, getElementReference, pointerCoordX, pointerCoordY } from '../../util/helpers'; +import { BlockerDelegate } from './gesture-controller'; +import { Component, Ionic, Listen, Prop, Watch } from '../index'; +import { GestureCallback, GestureDetail, GlobalNamespace } from '../../util/interfaces'; +import { GestureController, GestureDelegate, BLOCK_ALL } from './gesture-controller'; +import { PanRecognizer } from './recognizers'; + + +@Component({ + tag: 'ion-gesture' +}) +export class Gesture { + private $el: HTMLElement; + private ctrl: GestureController; + private detail: GestureDetail = {}; + private positions: number[] = []; + private gesture: GestureDelegate; + private lastTouch = 0; + private pan: PanRecognizer; + private hasCapturedPan = false; + private hasPress = false; + private hasStartedPan = false; + private requiresMove = false; + private isMoveQueued = false; + private blocker: BlockerDelegate; + + @Prop() attachTo: string = 'child'; + @Prop() autoBlockAll: boolean = false; + @Prop() block: string = null; + @Prop() disableScroll: boolean = false; + @Prop() direction: string = 'x'; + @Prop() gestureName: string = ''; + @Prop() gesturePriority: number = 0; + @Prop() maxAngle: number = 40; + @Prop() threshold: number = 20; + @Prop() type: string = 'pan'; + + @Prop() canStart: GestureCallback; + @Prop() onStart: GestureCallback; + @Prop() onMove: GestureCallback; + @Prop() onEnd: GestureCallback; + @Prop() onPress: GestureCallback; + @Prop() notCaptured: GestureCallback; + + + ionViewDidLoad() { + this.ctrl = (Ionic).controllers.gesture = ((Ionic).controllers.gesture || new GestureController()); + + this.gesture = this.ctrl.createGesture(this.gestureName, this.gesturePriority, this.disableScroll); + + const types = this.type.replace(/\s/g, '').toLowerCase().split(','); + + if (types.indexOf('pan') > -1) { + this.pan = new PanRecognizer(this.direction, this.threshold, this.maxAngle); + this.requiresMove = true; + } + this.hasPress = (types.indexOf('press') > -1); + + if (this.pan || this.hasPress) { + Ionic.listener.enable(this, 'touchstart', true, this.attachTo); + Ionic.listener.enable(this, 'mousedown', true, this.attachTo); + + Ionic.dom.write(() => { + applyStyles(getElementReference(this.$el, this.attachTo), GESTURE_INLINE_STYLES); + }); + } + + if (this.autoBlockAll) { + this.blocker = this.ctrl.createBlocker(BLOCK_ALL); + this.blocker.block(); + } + } + + + @Watch('block') + blockChange(block: string) { + if (this.blocker) { + this.blocker.destroy(); + } + if (block) { + this.blocker = this.ctrl.createBlocker(block.split(',')); + } + } + + // DOWN ************************* + + @Listen('touchstart', { passive: true, enabled: false }) + onTouchStart(ev: TouchEvent) { + this.lastTouch = now(ev); + + this.enableMouse(false); + this.enableTouch(true); + + this.pointerDown(ev, this.lastTouch); + } + + + @Listen('mousedown', { passive: true, enabled: false }) + onMouseDown(ev: MouseEvent) { + const timeStamp = now(ev); + + if (this.lastTouch === 0 || (this.lastTouch + MOUSE_WAIT < timeStamp)) { + this.enableMouse(true); + this.enableTouch(false); + + this.pointerDown(ev, timeStamp); + } + } + + + private pointerDown(ev: UIEvent, timeStamp: number): boolean { + if (!this.gesture || this.hasStartedPan) { + return false; + } + + const detail = this.detail; + + detail.startX = detail.currentX = pointerCoordX(ev); + detail.startY = detail.currentY = pointerCoordY(ev); + detail.startTimeStamp = detail.timeStamp = timeStamp; + detail.velocityX = detail.velocityY = detail.deltaX = detail.deltaY = 0; + detail.directionX = detail.directionY = detail.velocityDirectionX = detail.velocityDirectionY = null; + detail.event = ev; + this.positions.length = 0; + + if (this.canStart && this.canStart(detail) === false) { + return false; + } + + this.positions.push(detail.currentX, detail.currentY, timeStamp); + + // Release fallback + this.gesture.release(); + + // Start gesture + if (!this.gesture.start()) { + return false; + } + + if (this.pan) { + this.hasStartedPan = true; + this.hasCapturedPan = false; + + this.pan.start(detail.startX, detail.startY); + } + + return true; + } + + + // MOVE ************************* + + @Listen('touchmove', { passive: true, enabled: false }) + onTouchMove(ev: TouchEvent) { + this.lastTouch = this.detail.timeStamp = now(ev); + + this.pointerMove(ev); + } + + + @Listen('document:mousemove', { passive: true, enabled: false }) + onMoveMove(ev: TouchEvent) { + const timeStamp = now(ev); + + if (this.lastTouch === 0 || (this.lastTouch + MOUSE_WAIT < timeStamp)) { + this.detail.timeStamp = timeStamp; + this.pointerMove(ev); + } + } + + private pointerMove(ev: UIEvent) { + const detail = this.detail; + this.calcGestureData(ev); + + if (this.pan) { + if (this.hasCapturedPan) { + + if (!this.isMoveQueued) { + this.isMoveQueued = true; + + Ionic.dom.write(() => { + this.isMoveQueued = false; + detail.type = 'pan'; + + if (this.onMove) { + this.onMove(detail); + } else { + Ionic.emit(this, 'ionGestureMove', { detail: this.detail }); + } + }); + } + + } else if (this.pan.detect(detail.currentX, detail.currentY)) { + if (this.pan.isGesture() !== 0) { + if (!this.tryToCapturePan(ev)) { + this.abortGesture(); + } + } + } + } + } + + private calcGestureData(ev: UIEvent) { + const detail = this.detail; + detail.currentX = pointerCoordX(ev); + detail.currentY = pointerCoordY(ev); + detail.deltaX = (detail.currentX - detail.startX); + detail.deltaY = (detail.currentY - detail.startY); + detail.event = ev; + + // figure out which direction we're movin' + detail.directionX = detail.velocityDirectionX = (detail.deltaX > 0 ? 'left' : (detail.deltaX < 0 ? 'right' : null)); + detail.directionY = detail.velocityDirectionY = (detail.deltaY > 0 ? 'up' : (detail.deltaY < 0 ? 'down' : null)); + + const positions = this.positions; + positions.push(detail.currentX, detail.currentY, detail.timeStamp); + + var endPos = (positions.length - 1); + var startPos = endPos; + var timeRange = (detail.timeStamp - 100); + + // move pointer to position measured 100ms ago + for (var i = endPos; i > 0 && positions[i] > timeRange; i -= 3) { + startPos = i; + } + + if (startPos !== endPos) { + // compute relative movement between these two points + var movedX = (positions[startPos - 2] - positions[endPos - 2]); + var movedY = (positions[startPos - 1] - positions[endPos - 1]); + var factor = 16.67 / (positions[endPos] - positions[startPos]); + + // based on XXms compute the movement to apply for each render step + detail.velocityX = movedX * factor; + detail.velocityY = movedY * factor; + + detail.velocityDirectionX = (movedX > 0 ? 'left' : (movedX < 0 ? 'right' : null)); + detail.velocityDirectionY = (movedY > 0 ? 'up' : (movedY < 0 ? 'down' : null)); + } + } + + private tryToCapturePan(ev: UIEvent): boolean { + if (this.gesture && !this.gesture.capture()) { + return false; + } + + this.detail.event = ev; + + if (this.onStart) { + this.onStart(this.detail); + } else { + Ionic.emit(this, 'ionGestureStart', { detail: this.detail }); + } + + this.hasCapturedPan = true; + + return true; + } + + private abortGesture() { + this.hasStartedPan = false; + this.hasCapturedPan = false; + + this.gesture && this.gesture.release(); + + this.enable(false); + this.notCaptured && this.notCaptured(this.detail); + } + + + // END ************************* + + @Listen('touchend', { passive: true, enabled: false }) + onTouchEnd(ev: TouchEvent) { + this.lastTouch = this.detail.timeStamp = now(ev); + + this.pointerUp(ev); + this.enableTouch(false); + } + + + @Listen('document:mouseup', { passive: true, enabled: false }) + onMouseUp(ev: TouchEvent) { + const timeStamp = now(ev); + + if (this.lastTouch === 0 || (this.lastTouch + MOUSE_WAIT < timeStamp)) { + this.detail.timeStamp = timeStamp; + this.pointerUp(ev); + this.enableMouse(false); + } + } + + + private pointerUp(ev: UIEvent) { + const detail = this.detail; + + this.gesture && this.gesture.release(); + + detail.event = ev; + + this.calcGestureData(ev); + + if (this.pan) { + if (this.hasCapturedPan) { + detail.type = 'pan'; + if (this.onEnd) { + this.onEnd(detail); + } else { + Ionic.emit(this, 'ionGestureEnd', { detail: detail }); + } + + } else if (this.hasPress) { + this.detectPress(); + + } else { + if (this.notCaptured) { + this.notCaptured(detail); + } else { + Ionic.emit(this, 'ionGestureNotCaptured', { detail: detail }); + } + } + + } else if (this.hasPress) { + this.detectPress(); + } + + this.hasCapturedPan = false; + this.hasStartedPan = false; + } + + + private detectPress() { + const detail = this.detail; + + if (Math.abs(detail.startX - detail.currentX) < 10 && Math.abs(detail.startY - detail.currentY) < 10) { + detail.type = 'press'; + + if (this.onPress) { + this.onPress(detail); + } else { + Ionic.emit(this, 'ionPress', { detail: detail }); + } + } + } + + + // ENABLE LISTENERS ************************* + + private enableMouse(shouldEnable: boolean) { + if (this.requiresMove) { + Ionic.listener.enable(this, 'document:mousemove', shouldEnable); + } + Ionic.listener.enable(this, 'document:mouseup', shouldEnable); + } + + + private enableTouch(shouldEnable: boolean) { + if (this.requiresMove) { + Ionic.listener.enable(this, 'touchmove', shouldEnable); + } + Ionic.listener.enable(this, 'touchend', shouldEnable); + } + + + private enable(shouldEnable: boolean) { + this.enableMouse(shouldEnable); + this.enableTouch(shouldEnable); + } + + + ionViewDidUnload() { + if (this.blocker) { + this.blocker.destroy(); + this.blocker = null; + } + this.gesture && this.gesture.destroy(); + this.ctrl = this.gesture = this.pan = this.detail = this.detail.event = null; + } + +} + + +const GESTURE_INLINE_STYLES = { + 'touch-action': 'none', + 'user-select': 'none', + '-webkit-user-drag': 'none', + '-webkit-tap-highlight-color': 'rgba(0,0,0,0)' +}; + +const MOUSE_WAIT = 2500; + + +function now(ev: UIEvent) { + return ev.timeStamp || Date.now(); +} + diff --git a/packages/ionic/src/gesture/recognizers.ts b/packages/ionic/src/gesture/recognizers.ts new file mode 100644 index 0000000000..230b65e289 --- /dev/null +++ b/packages/ionic/src/gesture/recognizers.ts @@ -0,0 +1,66 @@ + + +export class PanRecognizer { + private startX: number; + private startY: number; + + private dirty: boolean = false; + private threshold: number; + private maxCosine: number; + + private angle = 0; + private isPan = 0; + + + constructor(private direction: string, threshold: number, maxAngle: number) { + const radians = maxAngle * (Math.PI / 180); + this.maxCosine = Math.cos(radians); + this.threshold = threshold * threshold; + } + + start(x: number, y: number) { + this.startX = x; + this.startY = y; + this.angle = 0; + this.isPan = 0; + this.dirty = true; + } + + detect(x: number, y: number): boolean { + if (!this.dirty) { + return false; + } + + const deltaX = (x - this.startX); + const deltaY = (y - this.startY); + const distance = deltaX * deltaX + deltaY * deltaY; + + if (distance >= this.threshold) { + var angle = Math.atan2(deltaY, deltaX); + var cosine = (this.direction === 'y') + ? Math.sin(angle) + : Math.cos(angle); + + this.angle = angle; + + if (cosine > this.maxCosine) { + this.isPan = 1; + + } else if (cosine < -this.maxCosine) { + this.isPan = -1; + + } else { + this.isPan = 0; + } + + this.dirty = false; + return true; + } + + return false; + } + + isGesture(): number { + return this.isPan; + } +} diff --git a/packages/ionic/src/header/header.tsx b/packages/ionic/src/header/header.tsx new file mode 100644 index 0000000000..7b30d40a14 --- /dev/null +++ b/packages/ionic/src/header/header.tsx @@ -0,0 +1,14 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-header', + host: { + theme: 'header' + } +}) +export class Header { + render() { + return ; + } +} diff --git a/packages/ionic/src/icon/icon.ios.scss b/packages/ionic/src/icon/icon.ios.scss new file mode 100644 index 0000000000..dcbb6cc424 --- /dev/null +++ b/packages/ionic/src/icon/icon.ios.scss @@ -0,0 +1,17 @@ +@import "../../themes/ionic.globals.ios"; +@import "./icon"; + +// iOS Icon +// -------------------------------------------------- + + +// Generate iOS Icon Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .icon-ios-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/icon/icon.md.scss b/packages/ionic/src/icon/icon.md.scss new file mode 100644 index 0000000000..f83aa482d8 --- /dev/null +++ b/packages/ionic/src/icon/icon.md.scss @@ -0,0 +1,17 @@ +@import "../../themes/ionic.globals.md"; +@import "./icon"; + +// Material Design Icon +// -------------------------------------------------- + + +// Generate Material Design Icon Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .icon-md-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/icon/icon.scss b/packages/ionic/src/icon/icon.scss new file mode 100644 index 0000000000..fb67bcaf9c --- /dev/null +++ b/packages/ionic/src/icon/icon.scss @@ -0,0 +1,19 @@ +@import "../../themes/ionic.globals"; + +@import "../../fonts/ionicons"; + +// Icon +// -------------------------------------------------- + + +ion-icon { + display: inline-block; + + font-size: 1.2em; +} + +ion-icon[small] { + min-height: 1.1em; + + font-size: 1.1em; +} diff --git a/packages/ionic/src/icon/icon.tsx b/packages/ionic/src/icon/icon.tsx new file mode 100644 index 0000000000..4115a03a5f --- /dev/null +++ b/packages/ionic/src/icon/icon.tsx @@ -0,0 +1,128 @@ +import { Component, h, Ionic, Prop, State } from '../index'; +import { CssClassObject, VNodeData } from '../../util/interfaces'; + +@Component({ + tag: 'ion-icon', + styleUrls: { + ios: 'icon.ios.scss', + md: 'icon.md.scss', + wp: 'icon.wp.scss' + }, + host: { + theme: 'icon' + } +}) +export class Icon { + mode: string; + + @Prop() color: string; + + /** + * @input {string} Specifies the label to use for accessibility. Defaults to the icon name. + */ + @State() label: string = ''; + + /** + * @input {string} Specifies the mode to use for the icon. + */ + @State() iconMode: string = ''; + + /** + * @input {string} Specifies which icon to use. The appropriate icon will be used based on the mode. + * For more information, see [Ionicons](/docs/ionicons/). + */ + @Prop() name: string = ''; + + /** + * @input {string} Specifies which icon to use on `ios` mode. + */ + @Prop() ios: string = ''; + + /** + * @input {string} Specifies which icon to use on `md` mode. + */ + @Prop() md: string = ''; + + /** + * @input {boolean} If true, the icon is styled with an "active" appearance. + * An active icon is filled in, and an inactive icon is the outline of the icon. + * The `isActive` property is largely used by the tabbar. Only affects `ios` icons. + */ + @Prop() isActive: boolean = null; + + /** + * @input {boolean} If true, the icon is hidden. + */ + @Prop() hidden: boolean = false; + + getElementClass(): string { + let iconName: string; + + // If no name was passed set iconName to null + if (!this.name) { + iconName = null; + } else if (!(/^md-|^ios-|^logo-/.test(this.name))) { + // this does not have one of the defaults + // so lets auto add in the mode prefix for them + iconName = this.iconMode + '-' + this.name; + } else if (this.name) { + iconName = this.name; + } + + // If an icon was passed in using the ios or md attributes + // set the iconName to whatever was passed in + if (this.ios && this.iconMode === 'ios') { + iconName = this.ios; + } else if (this.md && this.iconMode === 'md') { + iconName = this.md; + } + + if ((iconName === null) || (this.hidden === true)) { + console.warn('Icon is hidden.'); + return 'hide'; + } + + let iconMode = iconName.split('-', 2)[0]; + if ( + iconMode === 'ios' && + this.isActive === false && + iconName.indexOf('logo-') < 0 && + iconName.indexOf('-outline') < 0) { + iconName += '-outline'; + } + + let label = iconName + .replace('ios-', '') + .replace('md-', '') + .replace('-', ' '); + this.label = label; + + return `ion-${iconName}`; + } + + hostData(): VNodeData { + // TODO set the right iconMode based on the config + let iconMode = this.mode === 'md' ? 'md' : 'ios'; + this.iconMode = iconMode || Ionic.config.get('iconMode'); + + const iconClasses: CssClassObject = [] + .concat( + this.getElementClass(), + ) + .reduce((prevValue, cssClass) => { + prevValue[cssClass] = true; + return prevValue; + }, {}); + + return { + class: iconClasses, + attrs: { + 'role': 'img' + } + }; + } + + render() { + return ; + } +} diff --git a/packages/ionic/src/icon/icon.wp.scss b/packages/ionic/src/icon/icon.wp.scss new file mode 100644 index 0000000000..9085c09a9c --- /dev/null +++ b/packages/ionic/src/icon/icon.wp.scss @@ -0,0 +1,17 @@ +@import "../../themes/ionic.globals.wp"; +@import "./icon"; + +// Windows Icon +// -------------------------------------------------- + + +// Generate Windows Icon Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .icon-wp-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/index.ts b/packages/ionic/src/index.ts new file mode 100644 index 0000000000..ea50ec8fa3 --- /dev/null +++ b/packages/ionic/src/index.ts @@ -0,0 +1,19 @@ + +import * as interfaces from '../util/interfaces'; + + +export declare const Component: interfaces.ComponentDecorator; + +export declare const h: interfaces.Hyperscript; + +export declare const Ionic: interfaces.Ionic; + +export declare const Listen: interfaces.ListenDecorator; + +export declare const Method: interfaces.MethodDecorator; + +export declare const Prop: interfaces.PropDecorator; + +export declare const State: interfaces.StateDecorator; + +export declare const Watch: interfaces.WatchDecorator; diff --git a/packages/ionic/src/item-divider/item-divider.ios.scss b/packages/ionic/src/item-divider/item-divider.ios.scss new file mode 100644 index 0000000000..21e3392c5f --- /dev/null +++ b/packages/ionic/src/item-divider/item-divider.ios.scss @@ -0,0 +1,44 @@ +@import "../../themes/ionic.globals.ios"; +@import "./item-divider"; + +// iOS Item Divider +// -------------------------------------------------- + +/// @prop - Background for the divider +$item-ios-divider-background: #f7f7f7 !default; + +/// @prop - Color for the divider +$item-ios-divider-color: #222 !default; + +/// @prop - Padding start for the divider +$item-ios-divider-padding-start: $item-ios-padding-start !default; + + +// iOS Item Divider +// -------------------------------------------------- + +.item-divider-ios { + @include padding-horizontal($item-ios-divider-padding-start, null); + + color: $item-ios-divider-color; + background-color: $item-ios-divider-background; +} + + +// Generate iOS Item Divider Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + .item-divider-ios-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + p { + color: $color-contrast; + } + + &.activated { + background-color: color-shade($color-base); + } + } +} diff --git a/packages/ionic/src/item-divider/item-divider.md.scss b/packages/ionic/src/item-divider/item-divider.md.scss new file mode 100644 index 0000000000..c56f3871e7 --- /dev/null +++ b/packages/ionic/src/item-divider/item-divider.md.scss @@ -0,0 +1,53 @@ +@import "../../themes/ionic.globals.md"; +@import "./item-divider"; + +// Material Design Item Divider +// -------------------------------------------------- + +/// @prop - Color for the divider +$item-md-divider-color: #858585 !default; + +/// @prop - Background for the divider +$item-md-divider-background: #fff !default; + +/// @prop - Font size for the divider +$item-md-divider-font-size: 1.4rem !default; + +/// @prop - Border bottom for the divider +$item-md-divider-border-bottom: 1px solid $list-md-border-color !default; + +/// @prop - Padding start for the divider +$item-md-divider-padding-start: $item-md-padding-start !default; + + +// Material Design Item Divider +// -------------------------------------------------- + +.item-divider-md { + @include padding-horizontal($item-md-divider-padding-start, null); + + border-bottom: $item-md-divider-border-bottom; + font-size: $item-md-divider-font-size; + + color: $item-md-divider-color; + background-color: $item-md-divider-background; +} + + +// Generate Material Design Item Divider Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + .item-divider-md-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + p { + color: $color-contrast; + } + + &.activated { + background-color: color-shade($color-base); + } + } +} \ No newline at end of file diff --git a/packages/ionic/src/item-divider/item-divider.scss b/packages/ionic/src/item-divider/item-divider.scss new file mode 100644 index 0000000000..643b4766a4 --- /dev/null +++ b/packages/ionic/src/item-divider/item-divider.scss @@ -0,0 +1,26 @@ +@import "../../themes/ionic.globals"; + + +// Item Divider +// -------------------------------------------------- + +ion-item-divider { + @include margin(0); + @include padding(0); + + z-index: $z-index-item-divider; + display: flex; + overflow: hidden; + + align-items: center; + justify-content: space-between; + + width: 100%; + + min-height: 30px; +} + +ion-item-divider[sticky] { + position: sticky; + top: 0; +} diff --git a/packages/ionic/src/item-divider/item-divider.tsx b/packages/ionic/src/item-divider/item-divider.tsx new file mode 100644 index 0000000000..c22cfb1f23 --- /dev/null +++ b/packages/ionic/src/item-divider/item-divider.tsx @@ -0,0 +1,28 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-item-divider', + styleUrls: { + ios: 'item-divider.ios.scss', + md: 'item-divider.md.scss', + wp: 'item-divider.wp.scss' + }, + shadow: false, + host: { + theme: 'item item-divider' + } +}) +export class ItemDivider { + render() { + return [ + , + + + + + + + ]; + } +} diff --git a/packages/ionic/src/item-divider/item-divider.wp.scss b/packages/ionic/src/item-divider/item-divider.wp.scss new file mode 100644 index 0000000000..41ec27e524 --- /dev/null +++ b/packages/ionic/src/item-divider/item-divider.wp.scss @@ -0,0 +1,53 @@ +@import "../../themes/ionic.globals.wp"; +@import "./item-divider"; + +// Windows Item Divider +// -------------------------------------------------- + +/// @prop - Color for the divider +$item-wp-divider-color: $list-wp-text-color !default; + +/// @prop - Background for the divider +$item-wp-divider-background: #fff !default; + +/// @prop - Bodrer bottom for the divider +$item-wp-divider-border-bottom: 1px solid $list-wp-border-color !default; + +/// @prop - Font size for the divider +$item-wp-divider-font-size: 2rem !default; + +/// @prop - Padding start for the divider +$item-wp-divider-padding-start: $item-wp-padding-start !default; + + +// Windows Item Divider +// -------------------------------------------------- + +.item-divider-wp { + @include padding-horizontal($item-wp-divider-padding-start, null); + + border-bottom: $item-wp-divider-border-bottom; + font-size: $item-wp-divider-font-size; + + color: $item-wp-divider-color; + background-color: $item-wp-divider-background; +} + + +// Generate Windows Item Divider Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + .item-divider-wp-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + p { + color: $color-contrast; + } + + &.activated { + background-color: color-shade($color-base); + } + } +} \ No newline at end of file diff --git a/packages/ionic/src/item/item.ios.scss b/packages/ionic/src/item/item.ios.scss new file mode 100644 index 0000000000..7a1c481976 --- /dev/null +++ b/packages/ionic/src/item/item.ios.scss @@ -0,0 +1,273 @@ +@import "../../themes/ionic.globals.ios"; +@import "./item"; + + +// iOS Item +// -------------------------------------------------- + +/// @prop - Font size of the item text +$item-ios-body-text-font-size: 1.7rem !default; + +// deprecated +$item-ios-paragraph-margin: null !default; + +/// @prop - Margin top of the item paragraph +$item-ios-paragraph-margin-top: 0 !default; + +/// @prop - Margin end of the item paragraph +$item-ios-paragraph-margin-end: 0 !default; + +/// @prop - Margin bottom of the item paragraph +$item-ios-paragraph-margin-bottom: 2px !default; + +/// @prop - Margin start of the item paragraph +$item-ios-paragraph-margin-start: $item-ios-paragraph-margin-end !default; + +/// @prop - Font size of the item paragraph +$item-ios-paragraph-font-size: 1.4rem !default; + +/// @prop - Color of the item paragraph +$item-ios-paragraph-text-color: #8e9093 !default; + +/// @prop - Size of the avatar in the item +$item-ios-avatar-size: 36px !default; + +/// @prop - Border radius of the avatar in the item +$item-ios-avatar-border-radius: 50% !default; + +/// @prop - Size of the thumbnail in the item +$item-ios-thumbnail-size: 56px !default; + +/// @prop - Shows the detail arrow icon on an item +$item-ios-detail-push-show: true !default; + +/// @prop - Color of the detail arrow icon +$item-ios-detail-push-color: $list-ios-border-color !default; + +/// @prop - Icon for the detail arrow +$item-ios-detail-push-svg: "" !default; + +/// @prop - Background for the divider +$item-ios-divider-background: #f7f7f7 !default; + +/// @prop - Color for the divider +$item-ios-divider-color: #222 !default; + +/// @prop - Padding for the divider +$item-ios-divider-padding: 5px 15px !default; + +/// @prop - Background for the sliding content +$item-ios-sliding-content-background: $list-ios-background-color !default; + + +// iOS Item +// -------------------------------------------------- + +.item-ios { + @include padding-horizontal($item-ios-padding-start, null); + @include border-radius(0); + + position: relative; + + font-size: $item-ios-body-text-font-size; + color: $list-ios-text-color; + background-color: $list-ios-background-color; + transition: background-color 200ms linear; +} + +.item-ios.activated { + background-color: $list-ios-activated-background-color; + transition-duration: 0ms; +} + +.item-ios h1 { + @include margin(0, 0, 2px); + + font-size: 2.4rem; + font-weight: normal; +} + +.item-ios h2 { + @include margin(0, 0, 2px); + + font-size: 1.7rem; + font-weight: normal; +} + +.item-ios h3, +.item-ios h4, +.item-ios h5, +.item-ios h6 { + @include margin(0, 0, 3px); + + font-size: 1.4rem; + font-weight: normal; + line-height: normal; +} + +.item-ios p { + overflow: inherit; + + font-size: $item-ios-paragraph-font-size; + line-height: normal; + text-overflow: inherit; + color: $item-ios-paragraph-text-color; + + @include deprecated-variable(margin, $item-ios-paragraph-margin) { + @include margin($item-ios-paragraph-margin-top, $item-ios-paragraph-margin-end, $item-ios-paragraph-margin-bottom, $item-ios-paragraph-margin-start); + } +} + +.item-ios h2:last-child, +.item-ios h3:last-child, +.item-ios h4:last-child, +.item-ios h5:last-child, +.item-ios h6:last-child, +.item-ios p:last-child { + @include margin(null, null, 0, null); +} + +.item-ios.item-block .item-inner { + @include padding-horizontal(null, $item-ios-padding-end / 2); + + border-bottom: $hairlines-width solid $list-ios-border-color; +} + + +// iOS Item Media +// -------------------------------------------------- + +.item-ios [slot="start"] { + @include margin($item-ios-padding-media-top, $item-ios-padding-start, $item-ios-padding-media-bottom, 0); +} + +.item-ios [slot="end"] { + @include margin($item-ios-padding-media-top, ($item-ios-padding-start / 2), $item-ios-padding-media-bottom, ($item-ios-padding-end / 2)); +} + +.item-ios ion-icon[slot="start"], +.item-ios ion-icon[slot="end"] { + @include margin($item-ios-padding-icon-top, null, $item-ios-padding-icon-bottom, 0); + +} + +.item-ios .item-button { + @include padding(0, .5em); + + height: 24px; + + font-size: 1.3rem; +} + +.item-ios .item-button ion-icon[slot="icon-only"] { + @include padding(0, 1px); +} + +.item-ios ion-avatar[slot="start"], +.item-ios ion-thumbnail[slot="start"] { + @include margin(($item-ios-padding-end / 2), $item-ios-padding-end, ($item-ios-padding-end / 2), 0); +} + +.item-ios ion-avatar[slot="end"], +.item-ios ion-thumbnail[slot="end"] { + @include margin(($item-ios-padding-end / 2)); +} + + +// iOS Item Avatar +// -------------------------------------------------- + +.item-ios ion-avatar { + min-width: $item-ios-avatar-size; + min-height: $item-ios-avatar-size; +} + +.item-ios ion-avatar ion-img, +.item-ios ion-avatar img { + @include border-radius($item-ios-avatar-border-radius); + + overflow: hidden; + + width: $item-ios-avatar-size; + height: $item-ios-avatar-size; +} + + +// iOS Item Thumbnail +// -------------------------------------------------- + +.item-ios ion-thumbnail { + min-width: $item-ios-thumbnail-size; + min-height: $item-ios-thumbnail-size; +} + +.item-ios ion-thumbnail ion-img, +.item-ios ion-thumbnail img { + width: $item-ios-thumbnail-size; + height: $item-ios-thumbnail-size; +} + + +// iOS Item Detail Push +// -------------------------------------------------- + +// Only show the forward arrow icon if true +@if $item-ios-detail-push-show == true { + .item-ios[detail-push] .item-inner, + button.item-ios:not([detail-none]) .item-inner, + a.item-ios:not([detail-none]) .item-inner { + @include svg-background-image($item-ios-detail-push-svg, true); + @include padding-horizontal(null, 32px); + @include background-position(end, $item-ios-padding-end - 2, center); + + background-repeat: no-repeat; + background-size: 14px 14px; + } +} + + +// iOS Item Group +// -------------------------------------------------- + +ion-item-group .item-ios:first-child .item-inner { + border-top-width: 0; +} + +ion-item-group .item-ios:last-child .item-inner, +ion-item-group .item-wrapper:last-child .item-ios .item-inner { + border: 0; +} + + +// Generate iOS Item and Item Divider Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + // If there is text with a color it should use this color + // and override whatever item sets it to + .item-ios .text-ios-#{$color-name} { + color: $color-base; + } + + .item-ios-#{$color-name}, + .item-divider-ios-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + p { + color: $color-contrast; + } + + &.activated { + background-color: color-shade($color-base); + } + } +} + + +// iOS Item Sliding +// -------------------------------------------------- + +.list-ios ion-item-sliding { + background-color: $item-ios-sliding-content-background; +} diff --git a/packages/ionic/src/item/item.md.scss b/packages/ionic/src/item/item.md.scss new file mode 100644 index 0000000000..9f813799a5 --- /dev/null +++ b/packages/ionic/src/item/item.md.scss @@ -0,0 +1,268 @@ +@import "../../themes/ionic.globals.md"; +@import "./item"; + + +// Material Design Item +// -------------------------------------------------- + +/// @prop - Font size of the item text +$item-md-body-text-font-size: 1.4rem !default; + +/// @prop - line height of the item text +$item-md-body-text-line-height: 1.5 !default; + +/// @prop - Color of the item paragraph +$item-md-paragraph-text-color: #666 !default; + +/// @prop - Font size of the item +$item-md-font-size: 1.6rem !default; + +/// @prop - Size of the avatar in the item +$item-md-avatar-size: 40px !default; + +/// @prop - Border radius of the avatar in the item +$item-md-avatar-border-radius: 50% !default; + +/// @prop - Size of the thumbnail in the item +$item-md-thumbnail-size: 80px !default; + +/// @prop - Shows the detail arrow icon on an item +$item-md-detail-push-show: false !default; + +/// @prop - Color of the detail arrow icon +$item-md-detail-push-color: $list-md-border-color !default; + +/// @prop - Icon for the detail arrow +$item-md-detail-push-svg: "" !default; + +/// @prop - Color for the divider +$item-md-divider-color: #858585 !default; + +/// @prop - Background for the divider +$item-md-divider-background: #fff !default; + +/// @prop - Font size for the divider +$item-md-divider-font-size: $item-md-body-text-font-size !default; + +/// @prop - Border bottom for the divider +$item-md-divider-border-bottom: 1px solid $list-md-border-color !default; + +/// @prop - Padding for the divider +$item-md-divider-padding: 5px 15px !default; + +/// @prop - Background for the sliding content +$item-md-sliding-content-background: $list-md-background-color !default; + + +.item-md { + @include padding-horizontal($item-md-padding-start, 0); + + position: relative; + + font-size: $item-md-font-size; + font-weight: normal; + text-transform: none; + + color: $list-md-text-color; + background-color: $list-md-background-color; + box-shadow: none; + transition: background-color 300ms cubic-bezier(.4, 0, .2, 1); +} + +.item-md.activated { + background-color: $list-md-activated-background-color; +} + +.item-md[no-lines] { + border-width: 0; +} + +.item-md h1 { + @include margin(0, 0, 2px); + + font-size: 2.4rem; + font-weight: normal; +} + +.item-md h2 { + @include margin(2px, 0); + + font-size: 1.6rem; + font-weight: normal; +} + +.item-md h3, +.item-md h4, +.item-md h5, +.item-md h6 { + @include margin(2px, 0); + + font-size: 1.4rem; + font-weight: normal; + line-height: normal; +} + +.item-md p { + @include margin(0, 0, 2px); + + overflow: inherit; + + font-size: 1.4rem; + line-height: normal; + text-overflow: inherit; + color: $item-md-paragraph-text-color; +} + +.item-md.item-block .item-inner { + @include padding-horizontal(null, ($item-md-padding-end / 2)); + + border-bottom: 1px solid $list-md-border-color; +} + + +// Material Design Item Detail Push +// -------------------------------------------------- + +// Only show the forward arrow icon if true +@if $item-md-detail-push-show == true { + .item-md[detail-push] .item-inner, + button.item-md:not([detail-none]) .item-inner, + a.item-md:not([detail-none]) .item-inner { + @include svg-background-image($item-md-detail-push-svg, true); + @include padding-horizontal(null, 32px); + @include background-position(end, $item-md-padding-end - 2, center); + + background-repeat: no-repeat; + background-size: 14px 14px; + } +} + + +// Material Design Item Media +// -------------------------------------------------- + +.item-md [slot="start"], +.item-md [slot="end"] { + @include margin($item-md-padding-media-top, ($item-md-padding-end / 2), $item-md-padding-media-bottom, 0); +} + +.item-md ion-icon[slot="start"], +.item-md ion-icon[slot="end"] { + @include margin($item-md-padding-icon-top, null, $item-md-padding-icon-bottom, 0); +} + +.item-md .item-button { + @include padding(0, .6em); + + height: 25px; + + font-size: 1.2rem; +} + +.item-md .item-button ion-icon[slot="icon-only"] { + @include padding(0); +} + +.item-md ion-icon[slot="start"] + .item-inner, +.item-md ion-icon[slot="start"] + .item-input { + @include margin-horizontal($item-md-padding-start + ($item-md-padding-start / 2), null); +} + +.item-md ion-avatar[slot="start"], +.item-md ion-thumbnail[slot="start"] { + @include margin(($item-md-padding-end / 2), $item-md-padding-end, ($item-md-padding-end / 2), 0); +} + +.item-md ion-avatar[slot="end"], +.item-md ion-thumbnail[slot="end"] { + @include margin(($item-md-padding-end / 2)); +} + + +// Material Design Item Avatar +// -------------------------------------------------- + +.item-md ion-avatar { + min-width: $item-md-avatar-size; + min-height: $item-md-avatar-size; +} + +.item-md ion-avatar ion-img, +.item-md ion-avatar img { + @include border-radius($item-md-avatar-border-radius); + + overflow: hidden; + + width: $item-md-avatar-size; + height: $item-md-avatar-size; +} + + +// Material Design Item Thumbnail +// -------------------------------------------------- + +.item-md ion-thumbnail { + min-width: $item-md-thumbnail-size; + min-height: $item-md-thumbnail-size; +} + +.item-md ion-thumbnail ion-img, +.item-md ion-thumbnail img { + width: $item-md-thumbnail-size; + height: $item-md-thumbnail-size; +} + + +// Material Design Item Group +// -------------------------------------------------- + +ion-item-group .item-md:first-child .item-inner { + border-top-width: 0; +} + +ion-item-group .item-md:last-child .item-inner, +ion-item-group .item-md .item-wrapper:last-child .item-inner { + border: 0; +} + + +// Generate Material Design Item and Item Divider Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + // If there is text with a color it should use this color + // and override whatever item sets it to + .item-md .text-md-#{$color-name} { + color: $color-base; + } + + .item-md-#{$color-name}, + .item-divider-md-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + p { + color: $color-contrast; + } + + &.activated { + background-color: color-shade($color-base); + } + } +} + + +// Material Design Item Sliding +// -------------------------------------------------- + +.list-md ion-item-sliding { + background-color: $item-md-sliding-content-background; +} + +// Item reorder +// -------------------------------------------------- + +.item-md ion-reorder { + font-size: 1.5em; + opacity: .3; +} diff --git a/packages/ionic/src/item/item.scss b/packages/ionic/src/item/item.scss new file mode 100644 index 0000000000..29cb451705 --- /dev/null +++ b/packages/ionic/src/item/item.scss @@ -0,0 +1,88 @@ +@import "../../themes/ionic.globals"; + +// Item +// -------------------------------------------------- +// Core structure only, dimensions belong in specific modes +// +// ".item" includes elements: +// ion-item +// [ion-item] +// ion-item-divider +// ion-list-header +// +// ".item-block" includes elements: +// ion-item +// [ion-item] + +ion-item { + display: block; + + contain: content; +} + + +.item-block { + @include margin(0); + @include padding(0); + @include text-align(initial); + + display: flex; + overflow: hidden; + + align-items: center; + justify-content: space-between; + + width: 100%; + min-height: 4.4rem; + + border: 0; + + font-weight: normal; + line-height: normal; + text-decoration: none; + color: inherit; +} + +.item-inner { + @include margin(0); + @include padding(0); + + display: flex; + overflow: hidden; + + flex: 1; + flex-direction: inherit; + align-items: inherit; + align-self: stretch; + + min-height: inherit; + + border: 0; +} + +.input-wrapper { + display: flex; + overflow: hidden; + + flex: 1; + flex-direction: inherit; + align-items: inherit; + align-self: stretch; + + text-overflow: ellipsis; +} + +.item[no-lines], +.item.item[no-lines] .item-inner { + border: 0; +} + +ion-item-group { + display: block; +} + +[vertical-align-top], +ion-input.item { + align-items: flex-start; +} + diff --git a/packages/ionic/src/item/item.tsx b/packages/ionic/src/item/item.tsx new file mode 100644 index 0000000000..d2aaa6485a --- /dev/null +++ b/packages/ionic/src/item/item.tsx @@ -0,0 +1,219 @@ +import { Component, Prop, h, Listen } from '../index'; +import { CssClassObject } from '../../util/interfaces'; +import { createThemedClasses } from '../../util/theme'; + + +@Component({ + tag: 'ion-item', + styleUrls: { + ios: 'item.ios.scss', + md: 'item.md.scss', + wp: 'item.wp.scss' + } +}) +export class Item { + $el: HTMLElement; + childStyles: CssClassObject = Object.create(null); + + @Prop() mode: string; + @Prop() color: string; + + @Listen('ionStyle') + itemStyle(ev: UIEvent) { + ev.stopPropagation(); + + let hasChildStyleChange = false; + let updatedStyles: any = ev.detail; + + for (var key in updatedStyles) { + if (updatedStyles[key] !== this.childStyles['item-' + key]) { + this.childStyles['item-' + key] = updatedStyles[key]; + hasChildStyleChange = true; + } + } + + // returning true tells the renderer to queue an update + return hasChildStyleChange; + } + + ionViewDidLoad() { + // Add item-button classes to each ion-button in the item + const buttons = this.$el.querySelectorAll('ion-button') as any; + for (var i = 0; i < buttons.length; i++) { + buttons[i].itemButton = true; + } + } + + render() { + let themedClasses = { + ...this.childStyles, + ...createThemedClasses(this.mode, this.color, 'item'), + 'item-block': true + }; + + return ( + + + + + + + + + + ); + + // template: + // '' + + // '' + + // '' + + // '' + + // '' + + // '' + + // '' + + // '' + + // '' + + // '' + + // '' + + // '' + + // '', + } + + + // _ids: number = -1; + // _inputs: Array = []; + // _label: Label; + // _viewLabel: boolean = true; + // _name: string = 'item'; + // _hasReorder: boolean; + + // /** + // * @hidden + // */ + // id: string; + + // /** + // * @hidden + // */ + // labelId: string = null; + + // constructor( + // form: Form, + // config: Config, + // elementRef: ElementRef, + // renderer: Renderer, + // @Optional() reorder: ItemReorder + // ) { + // super(config, elementRef, renderer, 'item'); + + // this._setName(elementRef); + // this._hasReorder = !!reorder; + // this.id = form.nextId().toString(); + + // // auto add "tappable" attribute to ion-item components that have a click listener + // if (!(renderer).orgListen) { + // (renderer).orgListen = renderer.listen; + // renderer.listen = function(renderElement: HTMLElement, name: string, callback: Function): Function { + // if (name === 'click' && renderElement.setAttribute) { + // renderElement.setAttribute('tappable', ''); + // } + // return (renderer).orgListen(renderElement, name, callback); + // }; + // } + // } + + // /** + // * @hidden + // */ + // registerInput(type: string) { + // this._inputs.push(type); + // return this.id + '-' + (++this._ids); + // } + + // /** + // * @hidden + // */ + // ngAfterContentInit() { + // if (this._viewLabel && this._inputs.length) { + // let labelText = this.getLabelText().trim(); + // this._viewLabel = (labelText.length > 0); + // } + + // if (this._inputs.length > 1) { + // this.setElementClass('item-multiple-inputs', true); + // } + // } + + // /** + // * @hidden + // */ + // _updateColor(newColor: string, componentName?: string) { + // componentName = componentName || 'item'; // item-radio + // this._setColor(newColor, componentName); + // } + + // /** + // * @hidden + // */ + // _setName(elementRef: ElementRef) { + // let nodeName = elementRef.nativeElement.nodeName.replace('ION-', ''); + + // if (nodeName === 'LIST-HEADER' || nodeName === 'ITEM-DIVIDER') { + // this._name = nodeName; + // } + // } + + // /** + // * @hidden + // */ + // getLabelText(): string { + // return this._label ? this._label.text : ''; + // } + + // /** + // * @hidden + // */ + // @ContentChild(Label) + // set contentLabel(label: Label) { + // if (label) { + // this._label = label; + // this.labelId = label.id = ('lbl-' + this.id); + // if (label.type) { + // this.setElementClass('item-label-' + label.type, true); + // } + // this._viewLabel = false; + // } + // } + + // /** + // * @hidden + // */ + // @ViewChild(Label) + // set viewLabel(label: Label) { + // if (!this._label) { + // this._label = label; + // } + // } + + // /** + // * @hidden + // */ + // @ContentChildren(Button) + // set _buttons(buttons: QueryList) { + // buttons.forEach(button => { + // if (!button._size) { + // button.setElementClass('item-button', true); + // } + // }); + // } + + // /** + // * @hidden + // */ + // @ContentChildren(Icon) + // set _icons(icons: QueryList) { + // icons.forEach(icon => { + // icon.setElementClass('item-icon', true); + // }); + // } +} diff --git a/packages/ionic/src/item/item.wp.scss b/packages/ionic/src/item/item.wp.scss new file mode 100644 index 0000000000..d820502a77 --- /dev/null +++ b/packages/ionic/src/item/item.wp.scss @@ -0,0 +1,257 @@ +@import "../../themes/ionic.globals.wp"; +@import "./item"; + + +// Windows Item +// -------------------------------------------------- + +/// @prop - Font size of the item text +$item-wp-body-text-font-size: 1.4rem !default; + +/// @prop - line height of the item text +$item-wp-body-text-line-height: 1.5 !default; + +/// @prop - Background color of the item +$item-wp-body-background-color: $list-wp-background-color !default; + +/// @prop - Color of the item text +$item-wp-body-text-color: $list-wp-text-color !default; + +/// @prop - Color of the item paragraph +$item-wp-paragraph-text-color: #666 !default; + +/// @prop - Font size of the item +$item-wp-font-size: 1.6rem !default; + +/// @prop - Size of the avatar in the item +$item-wp-avatar-size: 40px !default; + +/// @prop - Border radius of the avatar in the item +$item-wp-avatar-border-radius: 50% !default; + +/// @prop - Size of the thumbnail in the item +$item-wp-thumbnail-size: 80px !default; + +/// @prop - Shows the detail arrow icon on an item +$item-wp-detail-push-show: false !default; + +/// @prop - Color of the detail arrow icon +$item-wp-detail-push-color: $input-wp-border-color !default; + +/// @prop - Icon for the detail arrow +$item-wp-detail-push-svg: "" !default; + +/// @prop - Color for the divider +$item-wp-divider-color: $list-wp-text-color !default; + +/// @prop - Background for the divider +$item-wp-divider-background: #fff !default; + +/// @prop - Bodrer bottom for the divider +$item-wp-divider-border-bottom: 1px solid $list-wp-border-color !default; + +/// @prop - Font size for the divider +$item-wp-divider-font-size: 2rem !default; + +/// @prop - Padding for the divider +$item-wp-divider-padding: 5px 15px !default; + +/// @prop - Background for the sliding content +$item-wp-sliding-content-background: $list-wp-background-color !default; + + +.item-wp { + @include padding-horizontal($item-wp-padding-start, 0); + + position: relative; + + font-size: $item-wp-font-size; + font-weight: normal; + text-transform: none; + + color: $item-wp-body-text-color; + background-color: $item-wp-body-background-color; + box-shadow: none; +} + +.item-wp.activated { + background-color: $list-wp-activated-background-color; +} + +.item-wp[no-lines] { + border-width: 0; +} + +.item-wp h1 { + @include margin(0, 0, 2px); + + font-size: 2.4rem; + font-weight: normal; +} + +.item-wp h2 { + @include margin(2px, 0); + + font-size: 1.6rem; + font-weight: normal; +} + +.item-wp h3, +.item-wp h4, +.item-wp h5, +.item-wp h6 { + @include margin(2px, 0); + + font-size: 1.4rem; + font-weight: normal; + line-height: normal; +} + +.item-wp p { + @include margin(0, 0, 2px); + + overflow: inherit; + + font-size: 1.4rem; + line-height: normal; + text-overflow: inherit; + color: $item-wp-paragraph-text-color; +} + +.item-wp.item-block .item-inner { + @include padding-horizontal(null, ($item-wp-padding-end / 2)); + + border-bottom: 1px solid $list-wp-border-color; +} + + +// Windows Item Detail Push +// -------------------------------------------------- + +// Only show the forward arrow icon if true +@if $item-wp-detail-push-show == true { + .item-wp[detail-push] .item-inner, + button.item-wp:not([detail-none]) .item-inner, + a.item-wp:not([detail-none]) .item-inner { + @include svg-background-image($item-wp-detail-push-svg, true); + @include padding-horizontal(null, 32px); + @include background-position(end, $item-wp-padding-end - 2, center); + + background-repeat: no-repeat; + background-size: 14px 14px; + } +} + + +// Windows Item Media +// -------------------------------------------------- + +.item-wp [slot="start"], +.item-wp [slot="end"] { + @include margin($item-wp-padding-media-top, ($item-wp-padding-end / 2), $item-wp-padding-media-bottom, 0); +} + +.item-wp ion-icon[slot="start"], +.item-wp ion-icon[slot="end"] { + @include margin($item-wp-padding-icon-top, null, $item-wp-padding-icon-bottom, 0); +} + +.item-wp .item-button { + @include padding(0, .6em); + + height: 25px; + + font-size: 1.2rem; +} + +.item-wp .item-button ion-icon[slot="icon-only"] { + @include padding(0); +} + +.item-wp[text-wrap] ion-label { + font-size: $item-wp-body-text-font-size; + line-height: $item-wp-body-text-line-height; +} + +.item-wp ion-icon[slot="start"] + .item-inner, +.item-wp ion-icon[slot="start"] + .item-input { + @include margin-horizontal(($item-wp-padding-start / 2), null); +} + +.item-wp ion-avatar[slot="start"], +.item-wp ion-thumbnail[slot="start"] { + @include margin(($item-wp-padding-end / 2), $item-wp-padding-end, ($item-wp-padding-end / 2), 0); +} + +.item-wp ion-avatar[slot="end"], +.item-wp ion-thumbnail[slot="end"] { + @include margin($item-wp-padding-end / 2); +} + + +// Windows Item Avatar +// -------------------------------------------------- + +.item-wp ion-avatar { + min-width: $item-wp-avatar-size; + min-height: $item-wp-avatar-size; +} + +.item-wp ion-avatar ion-img, +.item-wp ion-avatar img { + @include border-radius($item-wp-avatar-border-radius); + + overflow: hidden; + + width: $item-wp-avatar-size; + height: $item-wp-avatar-size; +} + + +// Windows Item Thumbnail +// -------------------------------------------------- + +.item-wp ion-thumbnail { + min-width: $item-wp-thumbnail-size; + min-height: $item-wp-thumbnail-size; +} + +.item-wp ion-thumbnail ion-img, +.item-wp ion-thumbnail img { + width: $item-wp-thumbnail-size; + height: $item-wp-thumbnail-size; +} + + +// Generate Windows Item and Item Divider Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + // If there is text with a color it should use this color + // and override whatever item sets it to + .item-wp .text-wp-#{$color-name} { + color: $color-base; + } + + .item-wp-#{$color-name}, + .item-divider-wp-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + p { + color: $color-contrast; + } + + &.activated { + background-color: color-shade($color-base); + } + } +} + + +// Windows Item Sliding +// -------------------------------------------------- + +.list-wp ion-item-sliding { + background-color: $item-wp-sliding-content-background; +} diff --git a/packages/ionic/src/label/label.ios.scss b/packages/ionic/src/label/label.ios.scss new file mode 100644 index 0000000000..8d0382e3f2 --- /dev/null +++ b/packages/ionic/src/label/label.ios.scss @@ -0,0 +1,113 @@ +@import "../../themes/ionic.globals.ios"; +@import "./label"; + + +// iOS Label +// -------------------------------------------------- + +/// @prop - Text color of the label by an input, select, or datetime +$label-ios-text-color: null !default; + +/// @prop - Text color of the stacked/floating label when it is focused +$label-ios-text-color-focused: null !default; + +// deprecated +$label-ios-margin: null !default; + +/// @prop - Margin top of the label +$label-ios-margin-top: $item-ios-padding-top !default; + +/// @prop - Margin end of the label +$label-ios-margin-end: ($item-ios-padding-end / 2) !default; + +/// @prop - Margin bottom of the label +$label-ios-margin-bottom: $item-ios-padding-bottom !default; + +/// @prop - Margin start of the label +$label-ios-margin-start: 0 !default; + + +// iOS Default Label +// -------------------------------------------------- + +.label-ios { + @include deprecated-variable(margin, $label-ios-margin) { + @include margin($label-ios-margin-top, $label-ios-margin-end, $label-ios-margin-bottom, $label-ios-margin-start); + } +} + + +// iOS Default Label Inside An Input/Select Item +// -------------------------------------------------- + +.item-input .label-ios, +.item-select .label-ios, +.item-datetime .label-ios { + color: $label-ios-text-color; +} + + +// iOS Input By Label +// -------------------------------------------------- + +.label-ios + ion-input .text-input, +.label-ios + ion-textarea .text-input, +.label-ios + .input + .cloned-input { + @include margin-horizontal($item-ios-padding-start, null); + + width: calc(100% - (#{$item-ios-padding-end} / 2) - #{$item-ios-padding-start}); +} + + +// iOS Stacked & Floating Labels +// -------------------------------------------------- + +.label-ios[stacked] { + @include margin(null, null, 4px, null); + + font-size: 1.2rem; +} + +.label-ios[floating] { + @include margin(null, null, 0, null); + @include transform(translate3d(0, 27px, 0)); + @include transform-origin(start, top); + + transition: transform 150ms ease-in-out; +} + +// TODO remove all uses of input-has-focus in v4 +// TODO remove all uses of input-has-value in v4 +.item-input-has-focus .label-ios[floating], +.input-has-focus .label-ios[floating], +.item-input-has-value .label-ios[floating], +.input-has-value .label-ios[floating] { + @include transform(translate3d(0, 0, 0), scale(.8)); +} + +.item-ios.item-label-stacked [slot="end"], +.item-ios.item-label-floating [slot="end"] { + @include margin($item-ios-padding-media-top - 2, null, $item-ios-padding-media-bottom - 2, null); +} + +.item-input-has-focus .label-ios[stacked], +.input-has-focus .label-ios[stacked], +.item-input-has-focus .label-ios[floating], +.input-has-focus .label-ios[floating] { + color: $label-ios-text-color-focused; +} + + +// Generate iOS Label colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .label-ios-#{$color-name}, + .item-input .label-ios-#{$color-name}, + .item-select .label-ios-#{$color-name}, + .item-datetime .label-ios-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/label/label.md.scss b/packages/ionic/src/label/label.md.scss new file mode 100644 index 0000000000..b42771d724 --- /dev/null +++ b/packages/ionic/src/label/label.md.scss @@ -0,0 +1,108 @@ +@import "../../themes/ionic.globals.md"; +@import "./label"; + + +// Material Design Label +// -------------------------------------------------- + +/// @prop - Text color of the label by an input, select, or datetime +$label-md-text-color: #999 !default; + +/// @prop - Text color of the stacked/floating label when it is focused +$label-md-text-color-focused: color($colors-md, primary) !default; + +// deprecated +$label-md-margin: null !default; + +/// @prop - Margin top of the label +$label-md-margin-top: $item-md-padding-top !default; + +/// @prop - Margin end of the label +$label-md-margin-end: ($item-md-padding-end / 2) !default; + +/// @prop - Margin bottom of the label +$label-md-margin-bottom: $item-md-padding-bottom !default; + +/// @prop - Margin start of the label +$label-md-margin-start: 0 !default; + + +// Material Design Default Label +// -------------------------------------------------- + +.label-md { + @include deprecated-variable(margin, $label-md-margin) { + @include margin($label-md-margin-top, $label-md-margin-end, $label-md-margin-bottom, $label-md-margin-start); + } +} + +// TODO uncomment this and get working +[text-wrap] .label-md { + // font-size: $item-md-body-text-font-size; + // line-height: $item-md-body-text-line-height; +} + +// Material Design Default Label Inside An Input/Select Item +// -------------------------------------------------- + +.item-input .label-md, +.item-select .label-md, +.item-datetime .label-md { + color: $label-md-text-color; +} + + +// Material Design Stacked & Floating Labels +// -------------------------------------------------- + +.label-md[stacked] { + font-size: 1.2rem; +} + +.label-md[floating] { + @include transform(translate3d(0, 27px, 0)); + @include transform-origin(start, top); + + transition: transform 150ms ease-in-out; +} + +.label-md[stacked], +.label-md[floating] { + @include margin(null, null, 0, 0); +} + +// TODO remove all uses of input-has-focus in v4 +// TODO remove all uses of input-has-value in v4 +.item-input-has-focus .label-md[stacked], +.input-has-focus .label-md[stacked], +.item-input-has-focus .label-md[floating], +.input-has-focus .label-md[floating] { + color: $label-md-text-color-focused; +} + +.item-input-has-focus .label-md[floating], +.input-has-focus .label-md[floating], +.item-input-has-value .label-md[floating], +.input-has-value .label-md[floating] { + @include transform(translate3d(0, 0, 0), scale(.8)); +} + +.item-md.item-label-stacked [slot="end"], +.item-md.item-label-floating [slot="end"] { + @include margin($item-md-padding-media-top - 2, null, $item-md-padding-media-bottom - 2, null); +} + + +// Generate Material Design Label colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .label-md-#{$color-name}, + .item-input .label-md-#{$color-name}, + .item-select .label-md-#{$color-name}, + .item-datetime .label-md-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/label/label.scss b/packages/ionic/src/label/label.scss new file mode 100644 index 0000000000..e96f0ccba9 --- /dev/null +++ b/packages/ionic/src/label/label.scss @@ -0,0 +1,68 @@ +@import "../../themes/ionic.globals"; + + +// Label +// -------------------------------------------------- + +ion-label { + @include margin(0); + + display: block; + overflow: hidden; + + flex: 1; + + font-size: inherit; + text-overflow: ellipsis; + white-space: nowrap; +} + +.item-input ion-label { + flex: initial; + + max-width: 200px; + + pointer-events: none; +} + +[text-wrap] ion-label { + white-space: normal; +} + + +// Stacked & Floating Inputs +// -------------------------------------------------- + +ion-label[fixed] { + flex: 0 0 100px; + + width: 100px; + min-width: 100px; + max-width: 200px; +} + +.item-label-stacked ion-label, +.item-label-floating ion-label { + align-self: stretch; + + width: auto; + max-width: 100%; +} + +ion-label[stacked], +ion-label[floating] { + @include margin(null, null, 0, null); +} + +.item-label-stacked .input-wrapper, +.item-label-floating .input-wrapper { + flex: 1; + flex-direction: column; +} + +.item-label-stacked ion-select, +.item-label-floating ion-select { + align-self: stretch; + + max-width: 100%; +} diff --git a/packages/ionic/src/label/label.tsx b/packages/ionic/src/label/label.tsx new file mode 100644 index 0000000000..892ecea393 --- /dev/null +++ b/packages/ionic/src/label/label.tsx @@ -0,0 +1,18 @@ +import { Component, h } from '../index'; + +@Component({ + tag: 'ion-label', + styleUrls: { + ios: 'label.ios.scss', + md: 'label.md.scss', + wp: 'label.wp.scss' + }, + host: { + theme: 'label' + } +}) +export class Label { + render() { + return ; + } +} diff --git a/packages/ionic/src/label/label.wp.scss b/packages/ionic/src/label/label.wp.scss new file mode 100644 index 0000000000..cd3d7a0d15 --- /dev/null +++ b/packages/ionic/src/label/label.wp.scss @@ -0,0 +1,84 @@ +@import "../../themes/ionic.globals.wp"; +@import "./label"; + + +// Windows Label +// -------------------------------------------------- + +/// @prop - Text color of the label by an input, select, or datetime +$label-wp-text-color: #999 !default; + +/// @prop - Text color of the stacked/floating label when it is focused +$label-wp-text-color-focused: color($colors-wp, primary) !default; + + +// Windows Default Label +// -------------------------------------------------- + +.label-wp { + @include margin($item-wp-padding-top, ($item-wp-padding-end / 2), $item-wp-padding-bottom, 0); +} + + +// Windows Default Label Inside An Input/Select Item +// -------------------------------------------------- + +.item-input .label-wp, +.item-select .label-wp, +.item-datetime .label-wp { + color: $label-wp-text-color; +} + + +// Windows Stacked & Floating Labels +// -------------------------------------------------- + +.label-wp[stacked] { + font-size: 1.2rem; +} + +.label-wp[floating] { + @include transform(translate3d(8px, 34px, 0)); + @include transform-origin(start, top); +} + +.label-wp[stacked], +.label-wp[floating] { + @include margin(null, null, 0, 0); +} + +// TODO remove all uses of input-has-focus in v4 +// TODO remove all uses of input-has-value in v4 +.item-input-has-focus .label-wp[stacked], +.input-has-focus .label-wp[stacked], +.item-input-has-focus .label-wp[floating], +.input-has-focus .label-wp[floating] { + color: $label-wp-text-color-focused; +} + +.item-input-has-focus .label-wp[floating], +.input-has-focus .label-wp[floating], +.item-input-has-value .label-wp[floating], +.input-has-value .label-wp[floating] { + @include transform(translate3d(0, 0, 0), scale(.8)); +} + +.item-wp.item-label-stacked [slot="end"], +.item-wp.item-label-floating [slot="end"] { + @include margin($item-wp-padding-media-top + 4, null, $item-wp-padding-media-top + 4, null); +} + + +// Generate Windows Label colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .label-wp-#{$color-name}, + .item-input .label-wp-#{$color-name}, + .item-select .label-wp-#{$color-name}, + .item-datetime .label-wp-#{$color-name} { + color: $color-base; + } + +} diff --git a/packages/ionic/src/list-header/list-header.ios.scss b/packages/ionic/src/list-header/list-header.ios.scss new file mode 100644 index 0000000000..b665830d2d --- /dev/null +++ b/packages/ionic/src/list-header/list-header.ios.scss @@ -0,0 +1,58 @@ +@import "../../themes/ionic.globals.ios"; +@import "./list-header"; + + +// iOS List Header +// -------------------------------------------------- + +// deprecated +$list-ios-header-padding-left: $item-ios-padding-start !default; +/// @prop - Padding start of the header in a list +$list-ios-header-padding-start: $list-ios-header-padding-left !default; + +/// @prop - Border bottom of the header in a list +$list-ios-header-border-bottom: $hairlines-width solid $list-ios-border-color !default; + +/// @prop - Font size of the header in a list +$list-ios-header-font-size: 1.2rem !default; + +/// @prop - Font weight of the header in a list +$list-ios-header-font-weight: 500 !default; + +/// @prop - Letter spacing of the header in a list +$list-ios-header-letter-spacing: .1rem !default; + +/// @prop - Text transform of the header in a list +$list-ios-header-text-transform: uppercase !default; + +/// @prop - Text color of the header in a list +$list-ios-header-color: #333 !default; + +/// @prop - Background color of the header in a list +$list-ios-header-background-color: transparent !default; + + +.list-header-ios { + @include padding-horizontal($list-ios-header-padding-start, null); + + position: relative; + + border-bottom: $list-ios-header-border-bottom; + font-size: $list-ios-header-font-size; + font-weight: $list-ios-header-font-weight; + letter-spacing: $list-ios-header-letter-spacing; + text-transform: $list-ios-header-text-transform; + color: $list-ios-header-color; + background: $list-ios-header-background-color; +} + + +// Generate iOS List Header Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + .list-header-ios-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + } +} diff --git a/packages/ionic/src/list-header/list-header.md.scss b/packages/ionic/src/list-header/list-header.md.scss new file mode 100644 index 0000000000..857936f299 --- /dev/null +++ b/packages/ionic/src/list-header/list-header.md.scss @@ -0,0 +1,48 @@ +@import "../../themes/ionic.globals.ios"; +@import "./list-header"; + +// Material Design List Header +// -------------------------------------------------- + +/// @prop - Margin bottom of the header in a list +$list-md-header-margin-bottom: 13px !default; + +// deprecated +$list-md-header-padding-left: $item-md-padding-start !default; +/// @prop - Padding start of the header in a list +$list-md-header-padding-start: $list-md-header-padding-left !default; + +/// @prop - Minimum height of the header in a list +$list-md-header-min-height: 4.5rem !default; + +/// @prop - Border top of the header in a list +$list-md-header-border-top: 1px solid $list-md-border-color !default; + +/// @prop - Font size of the header in a list +$list-md-header-font-size: 1.4rem !default; + +/// @prop - Text color of the header in a list +$list-md-header-color: #757575 !default; + + +.list-header-md { + @include padding-horizontal($list-md-header-padding-start, null); + @include margin(null, null, $list-md-header-margin-bottom, null); + + min-height: $list-md-header-min-height; + + border-top: $list-md-header-border-top; + font-size: $list-md-header-font-size; + color: $list-md-header-color; +} + + +// Generate Material Design List Header Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + .list-header-md-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + } +} \ No newline at end of file diff --git a/packages/ionic/src/list-header/list-header.scss b/packages/ionic/src/list-header/list-header.scss new file mode 100644 index 0000000000..ca1e8621ca --- /dev/null +++ b/packages/ionic/src/list-header/list-header.scss @@ -0,0 +1,16 @@ +@import "../../themes/ionic.globals"; + + +// List Header +// -------------------------------------------------- + +ion-list-header { + @include margin(0); + @include padding(0); + display: flex; + overflow: hidden; + align-items: center; + justify-content: space-between; + width: 100%; + min-height: 4rem; +} \ No newline at end of file diff --git a/packages/ionic/src/list-header/list-header.tsx b/packages/ionic/src/list-header/list-header.tsx new file mode 100644 index 0000000000..8b245aeded --- /dev/null +++ b/packages/ionic/src/list-header/list-header.tsx @@ -0,0 +1,13 @@ +import { Component, h } from '../index'; + +@Component({ + tag: 'ion-list-header', + host: { + theme: 'list-header' + } +}) +export class ListHeader { + render() { + return ; + } +} diff --git a/packages/ionic/src/list-header/list-header.wp.scss b/packages/ionic/src/list-header/list-header.wp.scss new file mode 100644 index 0000000000..0e45f28a2f --- /dev/null +++ b/packages/ionic/src/list-header/list-header.wp.scss @@ -0,0 +1,39 @@ +@import "../../themes/ionic.globals.wp"; +@import "./list-header"; + +// Windows List Header +// -------------------------------------------------- + +// deprecated +$list-wp-header-padding-left: $item-wp-padding-start !default; +/// @prop - Padding start of the header in a list +$list-wp-header-padding-start: $list-wp-header-padding-left !default; + +/// @prop - Border bottom of the header in a list +$list-wp-header-border-bottom: 1px solid $list-wp-border-color !default; + +/// @prop - Font size of the header in a list +$list-wp-header-font-size: 2rem !default; + +/// @prop - Text color of the header in a list +$list-wp-header-color: $list-wp-text-color !default; + + +.list-header-wp { + @include padding-horizontal($list-wp-header-padding-start, null); + + border-bottom: $list-wp-header-border-bottom; + font-size: $list-wp-header-font-size; + color: $list-wp-header-color; +} + + +// Generate Windows List Header Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + .list-header-wp-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + } +} \ No newline at end of file diff --git a/packages/ionic/src/list/list.ios.scss b/packages/ionic/src/list/list.ios.scss new file mode 100644 index 0000000000..bfe3c0ed86 --- /dev/null +++ b/packages/ionic/src/list/list.ios.scss @@ -0,0 +1,150 @@ +@import "../../themes/ionic.globals.ios"; +@import "./list"; + + +// iOS List +// -------------------------------------------------- + +/// @prop - Margin top of the list +$list-ios-margin-top: 10px !default; + +// deprecated +$list-ios-margin-right: 0 !default; +/// @prop - Margin end of the list +$list-ios-margin-end: $list-ios-margin-right !default; + +/// @prop - Margin bottom of the list +$list-ios-margin-bottom: 32px !default; + +// deprecated +$list-ios-margin-left: 0 !default; +/// @prop - Margin start of the list +$list-ios-margin-start: $list-ios-margin-left !default; + +/// @prop - Margin top of the inset list +$list-inset-ios-margin-top: 16px !default; + +// deprecated +$list-inset-ios-margin-right: 16px !default; +/// @prop - Margin end of the inset list +$list-inset-ios-margin-end: $list-inset-ios-margin-right !default; + +/// @prop - Margin bottom of the inset list +$list-inset-ios-margin-bottom: 16px !default; + +// deprecated +$list-inset-ios-margin-left: 16px !default; +/// @prop - Margin start of the inset list +$list-inset-ios-margin-start: $list-inset-ios-margin-left !default; + +/// @prop - Border radius of the inset list +$list-inset-ios-border-radius: 4px !default; + + +// iOS Default List +// -------------------------------------------------- + +.list-ios { + @include margin(-1px, $list-ios-margin-end, $list-ios-margin-bottom, $list-ios-margin-start); +} + +.list-ios > .item-block:first-child { + border-top: $hairlines-width solid $list-ios-border-color; +} + +.list-ios > .item-block:last-child, +.list-ios > .item-wrapper:last-child .item-block { + border-bottom: $hairlines-width solid $list-ios-border-color; +} + +.list-ios > .item-block:last-child .item-inner, +.list-ios > .item-wrapper:last-child .item-block .item-inner { + border-bottom: 0; +} + +.list-ios .item-block .item-inner { + border-bottom: $hairlines-width solid $list-ios-border-color; +} + +// If the item has the no-lines attribute remove the bottom border from: +// the item itself (for last-child items) +// the item-inner class (if it is not last) +.list-ios .item[no-lines], +.list-ios .item[no-lines] .item-inner { + border-width: 0; +} + +.list-ios ion-item-options { + border-bottom: $hairlines-width solid $list-ios-border-color; +} + +.list-ios ion-item-options .button { + @include margin(0); + @include border-radius(0); + + display: inline-flex; + + align-items: center; + + height: 100%; + min-height: 100%; + + border: 0; + + box-sizing: border-box; +} + +.list-ios ion-item-options .button::before { + @include margin(0, auto); +} + +.list-ios:not([inset]) + .list-ios:not([inset]) ion-list-header { + @include margin(-$list-ios-margin-top, null, null, null); + @include padding(0, null, null, null); +} + + +// iOS Inset List +// -------------------------------------------------- + +.list-ios[inset] { + @include margin($list-inset-ios-margin-top, $list-inset-ios-margin-end, $list-inset-ios-margin-bottom, $list-inset-ios-margin-start); + @include border-radius($list-inset-ios-border-radius); +} + +.list-ios[inset] ion-list-header { + background-color: $list-ios-background-color; +} + +.list-ios[inset] .item { + border-bottom: 1px solid $list-ios-border-color; +} + +.list-ios[inset] .item-inner { + border-bottom: 0; +} + +.list-ios[inset] > .item:first-child, +.list-ios[inset] > .item-wrapper:first-child .item { + border-top: 0; +} + +.list-ios[inset] > .item:last-child, +.list-ios[inset] > .item-wrapper:last-child .item { + border-bottom: 0; +} + +.list-ios[inset] + ion-list[inset] { + @include margin(0, null, null, null); +} + + +// iOS No Lines List +// -------------------------------------------------- + +.list-ios[no-lines] ion-list-header, +.list-ios[no-lines] ion-item-options, +.list-ios[no-lines] .item, +.list-ios[no-lines] .item .item-inner { + border-width: 0; +} diff --git a/packages/ionic/src/list/list.md.scss b/packages/ionic/src/list/list.md.scss new file mode 100644 index 0000000000..8b5fbab2d8 --- /dev/null +++ b/packages/ionic/src/list/list.md.scss @@ -0,0 +1,152 @@ +@import "../../themes/ionic.globals.md"; +@import "./list"; + + +// Material Design List +// -------------------------------------------------- + +/// @prop - Margin top of the list +$list-md-margin-top: 16px !default; + +// deprecated +$list-md-margin-right: 0 !default; +/// @prop - Margin end of the list +$list-md-margin-end: $list-md-margin-right !default; + +/// @prop - Margin bottom of the list +$list-md-margin-bottom: 16px !default; + +// deprecated +$list-md-margin-left: 0 !default; +/// @prop - Margin start of the list +$list-md-margin-start: $list-md-margin-left !default; + +/// @prop - Margin top of the inset list +$list-inset-md-margin-top: 16px !default; + +// deprecated +$list-inset-md-margin-right: 16px !default; +/// @prop - Margin end of the inset list +$list-inset-md-margin-end: $list-inset-md-margin-right !default; + +/// @prop - Margin bottom of the inset list +$list-inset-md-margin-bottom: 16px !default; + +// deprecated +$list-inset-md-margin-left: 16px !default; +/// @prop - Margin start of the inset list +$list-inset-md-margin-start: $list-inset-md-margin-left !default; + +/// @prop - Border radius of the inset list +$list-inset-md-border-radius: 2px !default; + + +// Material Design Default List +// -------------------------------------------------- + +.list-md { + @include margin(-1px, $list-md-margin-end, $list-md-margin-bottom, $list-md-margin-start); +} + +.list-md .item-block .item-inner { + border-bottom: 1px solid $list-md-border-color; +} + +.list-md > .item-block:last-child, +.list-md > .item-wrapper:last-child { + ion-label, + .item-inner { + border-bottom: 0; + } +} + +.list-md > ion-input:last-child::after { + @include position-horizontal(0, null); +} + +.list-md ion-item-options { + border-bottom: 1px solid $list-md-border-color; +} + +.list-md ion-item-options .button { + @include margin(1px, 0); + @include border-radius(0); + + display: inline-flex; + + align-items: center; + + height: calc(100% - 2px); + + border: 0; + box-shadow: none; + + box-sizing: border-box; +} + +.list-md ion-item-options .button::before { + @include margin(0, auto); +} + +// If the item has the no-lines attribute remove the bottom border from: +// the item itself (for last-child items) +// the item-inner class (if it is not last) +.list-md .item[no-lines], +.list-md .item[no-lines] .item-inner { + border-width: 0; +} + +.list-md + ion-list ion-list-header { + @include margin(-$list-md-margin-top, null, null, null); +} + + +// Material Design Inset List +// -------------------------------------------------- + +.list-md[inset] { + @include margin($list-inset-md-margin-top, $list-inset-md-margin-end, $list-inset-md-margin-bottom, $list-inset-md-margin-start); + @include border-radius($list-inset-md-border-radius); +} + +.list-md[inset] .item:first-child { + @include border-radius($list-inset-md-border-radius, $list-inset-md-border-radius, null, null); + + border-top-width: 0; +} + +.list-md[inset] .item:last-child { + @include border-radius(null, null, $list-inset-md-border-radius, $list-inset-md-border-radius); + + border-bottom-width: 0; +} + +.list-md[inset] .item-input { + @include padding-horizontal(0); +} + +.list-md[inset] + ion-list[inset] { + @include margin(0, null, null, null); +} + +.list-md[inset] ion-list-header { + background-color: $list-md-background-color; +} + + +// Material Design No Lines List +// -------------------------------------------------- + +.list-md[no-lines] .item-block, +.list-md[no-lines] ion-item-options, +.list-md[no-lines] .item .item-inner { + border-width: 0; +} + + +// Material Design List inputs +// -------------------------------------------------- + +.list-md .item-input:last-child { + border-bottom: 1px solid $list-md-border-color; +} diff --git a/packages/ionic/src/list/list.scss b/packages/ionic/src/list/list.scss new file mode 100644 index 0000000000..7e554a360e --- /dev/null +++ b/packages/ionic/src/list/list.scss @@ -0,0 +1,22 @@ +@import "../../themes/ionic.globals"; + + +// List +// -------------------------------------------------- + +ion-list { + @include margin(0); + @include padding(0); + + display: block; + + contain: content; + + list-style-type: none; +} + +ion-list[inset] { + overflow: hidden; + + transform: translateZ(0); +} diff --git a/packages/ionic/src/list/list.tsx b/packages/ionic/src/list/list.tsx new file mode 100644 index 0000000000..810d5e61ab --- /dev/null +++ b/packages/ionic/src/list/list.tsx @@ -0,0 +1,18 @@ +import { Component, h } from '../index'; + +@Component({ + tag: 'ion-list', + styleUrls: { + ios: 'list.ios.scss', + md: 'list.md.scss', + wp: 'list.wp.scss' + }, + host: { + theme: 'list' + } +}) +export class List { + render() { + return ; + } +} diff --git a/packages/ionic/src/list/list.wp.scss b/packages/ionic/src/list/list.wp.scss new file mode 100644 index 0000000000..06272ec6ce --- /dev/null +++ b/packages/ionic/src/list/list.wp.scss @@ -0,0 +1,150 @@ +@import "../../themes/ionic.globals.wp"; +@import "./list"; + + +// Windows List +// -------------------------------------------------- + +/// @prop - Margin top of the list +$list-wp-margin-top: 16px !default; + +// deprecated +$list-wp-margin-right: 0 !default; +/// @prop - Margin end of the list +$list-wp-margin-end: $list-wp-margin-right !default; + +/// @prop - Margin bottom of the list +$list-wp-margin-bottom: 16px !default; + +// deprecated +$list-wp-margin-left: 0 !default; +/// @prop - Margin start of the list +$list-wp-margin-start: $list-wp-margin-left !default; + +/// @prop - Margin top of the inset list +$list-inset-wp-margin-top: 16px !default; + +// deprecated +$list-inset-wp-margin-right: 16px !default; +/// @prop - Margin end of the inset list +$list-inset-wp-margin-end: $list-inset-wp-margin-right !default; + +/// @prop - Margin bottom of the inset list +$list-inset-wp-margin-bottom: 16px !default; + +// deprecated +$list-inset-wp-margin-left: 16px !default; +/// @prop - Margin start of the inset list +$list-inset-wp-margin-start: $list-inset-wp-margin-left !default; + +/// @prop - Border radius of the inset list +$list-inset-wp-border-radius: 2px !default; + + +// Windows Default List +// -------------------------------------------------- + +.list-wp { + @include margin(0, $list-wp-margin-end, $list-wp-margin-bottom, $list-wp-margin-start); +} + +.list-wp .item-block .item-inner { + border-bottom: 1px solid $list-wp-border-color; +} + +.list-wp > .item-block:first-child, +.list-wp > .item-wrapper:first-child .item-block { + border-top: 1px solid $list-wp-border-color; +} + +.list-wp > .item-block:last-child, +.list-wp > .item-wrapper:last-child .item-block { + border-bottom: 1px solid $list-wp-border-color; +} + +.list-wp > .item-block:last-child, +.list-wp > .item-wrapper:last-child { + ion-label, + .item-inner { + border-bottom: 0; + } +} + +.list-wp > ion-input:last-child::after { + @include position-horizontal(0, null); +} + +.list-wp ion-item-options .button { + @include margin(1px, 0); + @include border-radius(0); + + display: inline-flex; + + align-items: center; + + height: calc(100% - 2px); + + border: 0; + box-shadow: none; + + box-sizing: border-box; +} + +.list-wp ion-item-options .button::before { + @include margin(0, auto); +} + +// If the item has the no-lines attribute remove the bottom border from: +// the item itself (for last-child items) +// the item-inner class (if it is not last) +.list-wp .item[no-lines], +.list-wp .item[no-lines] .item-inner { + border-width: 0; +} + +.list-wp + ion-list ion-list-header { + @include margin(-$list-wp-margin-top, null, null, null); + @include padding(0, null, null, null); +} + + +// Windows Insert List +// -------------------------------------------------- + +.list-wp[inset] { + @include margin($list-inset-wp-margin-top, $list-inset-wp-margin-end, $list-inset-wp-margin-bottom, $list-inset-wp-margin-start); + @include border-radius($list-inset-wp-border-radius); +} + +.list-wp[inset] .item:first-child { + @include border-radius($list-inset-wp-border-radius, $list-inset-wp-border-radius, null, null); + + border-top-width: 0; +} + +.list-wp[inset] .item:last-child { + @include border-radius(null, null, $list-inset-wp-border-radius, $list-inset-wp-border-radius); + + border-bottom-width: 0; +} + +.list-wp[inset] .item-input { + @include padding-horizontal(0); +} + +.list-wp[inset] + ion-list[inset] { + @include margin(0, null, null, null); +} + +.list-wp[inset] ion-list-header { + background-color: $list-wp-background-color; +} + + +// Windows No Lines List +// -------------------------------------------------- + +.list-wp[no-lines] .item, +.list-wp[no-lines] .item .item-inner { + border-width: 0; +} diff --git a/packages/ionic/src/loading-controller/loading-controller.scss b/packages/ionic/src/loading-controller/loading-controller.scss new file mode 100644 index 0000000000..a54010e525 --- /dev/null +++ b/packages/ionic/src/loading-controller/loading-controller.scss @@ -0,0 +1,32 @@ +@import "../../themes/ionic.globals"; + + +// Loading Controller +// -------------------------------------------------- + +ion-loading-controller { + display: none; +} + + +// Loading Controller Backdrop +// -------------------------------------------------- + +/// @prop - Color of the backdrop +$loading-backdrop-color: #000 !default; + + +.loading-backdrop { + position: absolute; + top: 0; + left: 0; + z-index: $z-index-backdrop; + display: block; + + width: 100%; + height: 100%; + + background-color: $loading-backdrop-color; + opacity: .01; + transform: translateZ(0); +} diff --git a/packages/ionic/src/loading-controller/loading-controller.ts b/packages/ionic/src/loading-controller/loading-controller.ts new file mode 100644 index 0000000000..9d4428bb3a --- /dev/null +++ b/packages/ionic/src/loading-controller/loading-controller.ts @@ -0,0 +1,80 @@ +import { Component, Ionic, Listen } from '../index'; +import { GlobalNamespace, LoadingEvent, LoadingOptions, Loading, IonicControllerApi } from '../../util/interfaces'; + + +@Component({ + tag: 'ion-loading-controller', + styleUrls: 'loading-controller.scss' +}) +export class LoadingController implements IonicControllerApi { + private ids = 0; + private loadingResolves: {[loadingId: string]: Function} = {}; + private loadings: Loading[] = []; + private appRoot: Element; + + + ionViewDidLoad() { + this.appRoot = document.querySelector('ion-app') || document.body; + (Ionic).loadController('loading', this); + } + + + load(opts?: LoadingOptions) { + // create ionic's wrapping ion-loading component + const loading: Loading = document.createElement('ion-loading'); + + const id = this.ids++; + + // give this loading a unique id + loading.id = `loading-${id}`; + loading.style.zIndex = (20000 + id); + + // convert the passed in loading options into props + // that get passed down into the new loading + Object.assign(loading, opts); + + // append the loading element to the document body + this.appRoot.appendChild(loading); + + // store the resolve function to be called later up when the loading loads + return new Promise(resolve => { + this.loadingResolves[loading.id] = resolve; + }); + } + + + @Listen('body:ionLoadingDidLoad') + viewDidLoad(ev: LoadingEvent) { + const loading = ev.detail.loading; + const loadingResolve = this.loadingResolves[loading.id]; + if (loadingResolve) { + loadingResolve(loading); + delete this.loadingResolves[loading.id]; + } + } + + + @Listen('body:ionLoadingWillPresent') + willPresent(ev: LoadingEvent) { + this.loadings.push(ev.detail.loading); + } + + + @Listen('body:ionLoadingWillDismiss, body:ionLoadingDidUnload') + willDismiss(ev: LoadingEvent) { + const index = this.loadings.indexOf(ev.detail.loading); + if (index > -1) { + this.loadings.splice(index, 1); + } + } + + + @Listen('body:keyup.escape') + escapeKeyUp() { + const lastLoading = this.loadings[this.loadings.length - 1]; + if (lastLoading) { + lastLoading.dismiss(); + } + } + +} diff --git a/packages/ionic/src/loading/animations/ios.enter.ts b/packages/ionic/src/loading/animations/ios.enter.ts new file mode 100644 index 0000000000..13df74a4e5 --- /dev/null +++ b/packages/ionic/src/loading/animations/ios.enter.ts @@ -0,0 +1,27 @@ +import { Ionic } from '../../index'; + + +/** + * iOS Loading Enter Animation + */ +export default function(baseElm: HTMLElement) { + const baseAnimation = new Ionic.Animation(); + + const backdropAnimation = new Ionic.Animation(); + backdropAnimation.addElement(baseElm.querySelector('.loading-backdrop')); + + const wrapperAnimation = new Ionic.Animation(); + wrapperAnimation.addElement(baseElm.querySelector('.loading-wrapper')); + + backdropAnimation.fromTo('opacity', 0.01, 0.3); + + wrapperAnimation.fromTo('opacity', 0.01, 1) + .fromTo('scale', 1.1, 1); + + return baseAnimation + .addElement(baseElm) + .easing('ease-in-out') + .duration(200) + .add(backdropAnimation) + .add(wrapperAnimation); +} diff --git a/packages/ionic/src/loading/animations/ios.leave.ts b/packages/ionic/src/loading/animations/ios.leave.ts new file mode 100644 index 0000000000..ee25dbbab6 --- /dev/null +++ b/packages/ionic/src/loading/animations/ios.leave.ts @@ -0,0 +1,28 @@ +import { Ionic } from '../../index'; + + +/** + * iOS Loading Leave Animation + */ +export default function(baseElm: HTMLElement) { + const baseAnimation = new Ionic.Animation(); + + const backdropAnimation = new Ionic.Animation(); + backdropAnimation.addElement(baseElm.querySelector('.loading-backdrop')); + + const wrapperAnimation = new Ionic.Animation(); + wrapperAnimation.addElement(baseElm.querySelector('.loading-wrapper')); + + backdropAnimation.fromTo('opacity', 0.3, 0); + + wrapperAnimation.fromTo('opacity', 0.99, 0) + .fromTo('scale', 1, 0.9); + + + return baseAnimation + .addElement(baseElm) + .easing('ease-in-out') + .duration(200) + .add(backdropAnimation) + .add(wrapperAnimation); +} diff --git a/packages/ionic/src/loading/loading.ios.scss b/packages/ionic/src/loading/loading.ios.scss new file mode 100644 index 0000000000..ce21fb9f27 --- /dev/null +++ b/packages/ionic/src/loading/loading.ios.scss @@ -0,0 +1,109 @@ +@import "../../themes/ionic.globals.ios"; +@import "./loading"; + + +// iOS Loading Indicator +// -------------------------------------------------- + +// deprecated +$loading-ios-padding: null !default; + +/// @prop - Padding top of the loading wrapper +$loading-ios-padding-top: 24px !default; + +/// @prop - Padding end of the loading wrapper +$loading-ios-padding-end: 34px !default; + +/// @prop - Padding bottom of the loading wrapper +$loading-ios-padding-bottom: $loading-ios-padding-top !default; + +/// @prop - Padding start of the loading wrapper +$loading-ios-padding-start: $loading-ios-padding-end !default; + +/// @prop - Max width of the loading wrapper +$loading-ios-max-width: 270px !default; + +/// @prop - Maximum height of the loading wrapper +$loading-ios-max-height: 90% !default; + +/// @prop - Border radius of the loading wrapper +$loading-ios-border-radius: 8px !default; + +/// @prop - Text color of the loading wrapper +$loading-ios-text-color: #000 !default; + +/// @prop - Background of the loading wrapper +$loading-ios-background: #f8f8f8 !default; + +/// @prop - Font weight of the loading content +$loading-ios-content-font-weight: bold !default; + +/// @prop - Color of the loading spinner +$loading-ios-spinner-color: #69717d !default; + +/// @prop - Color of the ios loading spinner +$loading-ios-spinner-ios-color: $loading-ios-spinner-color !default; + +/// @prop - Color of the bubbles loading spinner +$loading-ios-spinner-bubbles-color: $loading-ios-spinner-color !default; + +/// @prop - Color of the circles loading spinner +$loading-ios-spinner-circles-color: $loading-ios-spinner-color !default; + +/// @prop - Color of the crescent loading spinner +$loading-ios-spinner-crescent-color: $loading-ios-spinner-color !default; + +/// @prop - Color of the dots loading spinner +$loading-ios-spinner-dots-color: $loading-ios-spinner-color !default; + + +.loading-ios .loading-wrapper { + @include border-radius($loading-ios-border-radius); + + max-width: $loading-ios-max-width; + max-height: $loading-ios-max-height; + + color: $loading-ios-text-color; + background: $loading-ios-background; + + @include deprecated-variable(padding, $loading-ios-padding) { + @include padding($loading-ios-padding-top, $loading-ios-padding-end, $loading-ios-padding-bottom, $loading-ios-padding-start); + } +} + + +// iOS Loading Content +// ----------------------------------------- + +.loading-ios .loading-content { + font-weight: $loading-ios-content-font-weight; +} + +.loading-ios .loading-spinner + .loading-content { + @include margin-horizontal(16px, null); +} + + +// iOS Loading Spinner fill colors +// ----------------------------------------- + +.loading-ios .spinner-ios line, +.loading-ios .spinner-ios-small line { + stroke: $loading-ios-spinner-ios-color; +} + +.loading-ios .spinner-bubbles circle { + fill: $loading-ios-spinner-bubbles-color; +} + +.loading-ios .spinner-circles circle { + fill: $loading-ios-spinner-circles-color; +} + +.loading-ios .spinner-crescent circle { + stroke: $loading-ios-spinner-crescent-color; +} + +.loading-ios .spinner-dots circle { + fill: $loading-ios-spinner-dots-color; +} diff --git a/packages/ionic/src/loading/loading.md.scss b/packages/ionic/src/loading/loading.md.scss new file mode 100644 index 0000000000..85f57c693f --- /dev/null +++ b/packages/ionic/src/loading/loading.md.scss @@ -0,0 +1,110 @@ +@import "../../themes/ionic.globals.md"; +@import "./loading"; + + +// Material Design Loading Indicator +// -------------------------------------------------- + +// deprecated +$loading-md-padding: null !default; + +/// @prop - Padding top of the loading wrapper +$loading-md-padding-top: 24px !default; + +/// @prop - Padding end of the loading wrapper +$loading-md-padding-end: $loading-md-padding-top !default; + +/// @prop - Padding bottom of the loading wrapper +$loading-md-padding-bottom: $loading-md-padding-top !default; + +/// @prop - Padding start of the loading wrapper +$loading-md-padding-start: $loading-md-padding-end !default; + +/// @prop - Max width of the loading wrapper +$loading-md-max-width: 280px !default; + +/// @prop - Maximum height of the loading wrapper +$loading-md-max-height: 90% !default; + +/// @prop - Border radius of the loading wrapper +$loading-md-border-radius: 2px !default; + +/// @prop - Text color of the loading wrapper +$loading-md-text-color: rgba(0, 0, 0, .5) !default; + +/// @prop - Background of the loading wrapper +$loading-md-background: #fafafa !default; + +/// @prop - Box shadow color of the loading wrapper +$loading-md-box-shadow-color: rgba(0, 0, 0, .4) !default; + +/// @prop - Box shadow of the loading wrapper +$loading-md-box-shadow: 0 16px 20px $loading-md-box-shadow-color !default; + +/// @prop - Color of the loading spinner +$loading-md-spinner-color: color($colors-md, primary) !default; + +/// @prop - Color of the ios loading spinner +$loading-md-spinner-ios-color: $loading-md-spinner-color !default; + +/// @prop - Color of the bubbles loading spinner +$loading-md-spinner-bubbles-color: $loading-md-spinner-color !default; + +/// @prop - Color of the circles loading spinner +$loading-md-spinner-circles-color: $loading-md-spinner-color !default; + +/// @prop - Color of the crescent loading spinner +$loading-md-spinner-crescent-color: $loading-md-spinner-color !default; + +/// @prop - Color of the dots loading spinner +$loading-md-spinner-dots-color: $loading-md-spinner-color !default; + + +.loading-md .loading-wrapper { + @include border-radius($loading-md-border-radius); + + max-width: $loading-md-max-width; + max-height: $loading-md-max-height; + + color: $loading-md-text-color; + background: $loading-md-background; + + box-shadow: $loading-md-box-shadow; + + @include deprecated-variable(padding, $loading-md-padding) { + @include padding($loading-md-padding-top, $loading-md-padding-end, $loading-md-padding-bottom, $loading-md-padding-start); + } +} + + +// Material Design Loading Content +// ----------------------------------------- + +.loading-md .loading-spinner + .loading-content { + @include margin-horizontal(16px, null); +} + + +// Material Design Loading Spinner fill colors +// ----------------------------------------- + +.loading-md .spinner-ios line, +.loading-md .spinner-ios-small line { + stroke: $loading-md-spinner-ios-color; +} + +.loading-md .spinner-bubbles circle { + fill: $loading-md-spinner-bubbles-color; +} + +.loading-md .spinner-circles circle { + fill: $loading-md-spinner-circles-color; +} + +.loading-md .spinner-crescent circle { + stroke: $loading-md-spinner-crescent-color; +} + +.loading-md .spinner-dots circle { + fill: $loading-md-spinner-dots-color; +} diff --git a/packages/ionic/src/loading/loading.scss b/packages/ionic/src/loading/loading.scss new file mode 100644 index 0000000000..77b4f8a8a8 --- /dev/null +++ b/packages/ionic/src/loading/loading.scss @@ -0,0 +1,37 @@ +@import "../../themes/ionic.globals"; + + +// Loading Indicator +// -------------------------------------------------- + +ion-loading { + @include position(0, 0, 0, 0); + + position: absolute; + z-index: $z-index-overlay; + + display: flex; + + align-items: center; + justify-content: center; + + contain: strict; +} + +ion-loading ion-gesture { + display: block; + + width: 100%; + height: 100%; + + visibility: inherit; +} + +.loading-wrapper { + z-index: $z-index-overlay-wrapper; + display: flex; + + align-items: center; + + opacity: 0; +} diff --git a/packages/ionic/src/loading/loading.tsx b/packages/ionic/src/loading/loading.tsx new file mode 100644 index 0000000000..5217753f35 --- /dev/null +++ b/packages/ionic/src/loading/loading.tsx @@ -0,0 +1,178 @@ +import { Component, h, Ionic, Listen, Prop, State } from '../index'; +import { AnimationBuilder, Animation, Loading as ILoading, LoadingEvent } from '../../util/interfaces'; + +import iOSEnterAnimation from './animations/ios.enter'; +import iOSLeaveAnimation from './animations/ios.leave'; + + +@Component({ + tag: 'ion-loading', + styleUrls: { + ios: 'loading.ios.scss', + md: 'loading.md.scss', + wp: 'loading.wp.scss' + }, + host: { + theme: 'loading' + } +}) +export class Loading implements ILoading { + $el: HTMLElement; + animation: Animation; + durationTimeout: any; + + @Prop() cssClass: string; + @Prop() content: string; + @Prop() dismissOnPageChange: boolean = false; + @Prop() duration: number; + @Prop() enterAnimation: AnimationBuilder; + @Prop() exitAnimation: AnimationBuilder; + @Prop() id: string; + @State() showSpinner: boolean = null; + @State() spinner: string; + @Prop() showBackdrop: boolean = true; + + + @Listen('ionDismiss') + onDismiss(ev: UIEvent) { + ev.stopPropagation(); + ev.preventDefault(); + + this.dismiss(); + } + + ionViewDidLoad() { + if (!this.spinner) { + this.spinner = Ionic.config.get('loadingSpinner', Ionic.config.get('spinner', 'lines')); + } + + if (this.showSpinner === null || this.showSpinner === undefined) { + this.showSpinner = !!(this.spinner && this.spinner !== 'hide'); + } + Ionic.emit(this, 'ionLoadingDidLoad', { detail: { loading: this } } as LoadingEvent); + } + + ionViewDidEnter() { + // blur the currently active element + const activeElement: any = document.activeElement; + activeElement && activeElement.blur && activeElement.blur(); + + // If there is a duration, dismiss after that amount of time + if (typeof this.duration === 'number' && this.duration > 10) { + this.durationTimeout = setTimeout(() => this.dismiss(), this.duration); + } + + Ionic.emit(this, 'ionLoadingDidPresent', { detail: { loading: this } } as LoadingEvent); + } + + present() { + return new Promise(resolve => { + this._present(resolve); + }); + } + + private _present(resolve: Function) { + if (this.animation) { + this.animation.destroy(); + this.animation = null; + } + + Ionic.emit(this, 'ionLoadingWillPresent', { detail: { loading: this } } as LoadingEvent); + + // get the user's animation fn if one was provided + let animationBuilder = this.enterAnimation; + + if (!animationBuilder) { + // user did not provide a custom animation fn + // decide from the config which animation to use + // TODO!! + animationBuilder = iOSEnterAnimation; + } + + // build the animation and kick it off + this.animation = animationBuilder(this.$el); + + this.animation.onFinish((a: any) => { + a.destroy(); + this.ionViewDidEnter(); + resolve(); + }).play(); + } + + dismiss() { + clearTimeout(this.durationTimeout); + + if (this.animation) { + this.animation.destroy(); + this.animation = null; + } + + return new Promise(resolve => { + Ionic.emit(this, 'ionLoadingWillDismiss', { detail: { loading: this } } as LoadingEvent); + + // get the user's animation fn if one was provided + let animationBuilder = this.exitAnimation; + + if (!animationBuilder) { + // user did not provide a custom animation fn + // decide from the config which animation to use + // TODO!! + animationBuilder = iOSLeaveAnimation; + } + + // build the animation and kick it off + this.animation = animationBuilder(this.$el); + this.animation.onFinish((a: any) => { + a.destroy(); + Ionic.emit(this, 'ionLoadingDidDismiss', { detail: { loading: this } } as LoadingEvent); + Ionic.dom.write(() => { + this.$el.parentNode.removeChild(this.$el); + }); + resolve(); + }).play(); + }); + } + + ionViewDidUnload() { + Ionic.emit(this, 'ionLoadingDidUnload', { detail: { loading: this } } as LoadingEvent); + } + + render() { + let userCssClass = 'loading-content'; + if (this.cssClass) { + userCssClass += ' ' + this.cssClass; + } + + const loadingInner: any[] = []; + + if (this.showSpinner) { + loadingInner.push( + + + + ); + } + + if (this.content) { + loadingInner.push( + + {this.content} + + ); + } + + return [ + , + + {loadingInner} + + ]; + } +} diff --git a/packages/ionic/src/loading/loading.wp.scss b/packages/ionic/src/loading/loading.wp.scss new file mode 100644 index 0000000000..e373bd6cb3 --- /dev/null +++ b/packages/ionic/src/loading/loading.wp.scss @@ -0,0 +1,102 @@ +@import "../../themes/ionic.globals.wp"; +@import "./loading"; + + +// Windows Loading Indicator +// -------------------------------------------------- + +// deprecated +$loading-wp-padding: null !default; + +/// @prop - Padding top of the loading wrapper +$loading-wp-padding-top: 20px !default; + +/// @prop - Padding end of the loading wrapper +$loading-wp-padding-end: $loading-wp-padding-top !default; + +/// @prop - Padding bottom of the loading wrapper +$loading-wp-padding-bottom: $loading-wp-padding-top !default; + +/// @prop - Padding start of the loading wrapper +$loading-wp-padding-start: $loading-wp-padding-end !default; + +/// @prop - Max width of the loading wrapper +$loading-wp-max-width: 280px !default; + +/// @prop - Maximum height of the loading wrapper +$loading-wp-max-height: 90% !default; + +/// @prop - Border radius of the loading wrapper +$loading-wp-border-radius: 2px !default; + +/// @prop - Text color of the loading wrapper +$loading-wp-text-color: #fff !default; + +/// @prop - Background of the loading wrapper +$loading-wp-background: #000 !default; + +/// @prop - Color of the loading spinner +$loading-wp-spinner-color: $loading-wp-text-color !default; + +/// @prop - Color of the ios loading spinner +$loading-wp-spinner-ios-color: $loading-wp-spinner-color !default; + +/// @prop - Color of the bubbles loading spinner +$loading-wp-spinner-bubbles-color: $loading-wp-spinner-color !default; + +/// @prop - Color of the circles loading spinner +$loading-wp-spinner-circles-color: $loading-wp-spinner-color !default; + +/// @prop - Color of the crescent loading spinner +$loading-wp-spinner-crescent-color: $loading-wp-spinner-color !default; + +/// @prop - Color of the dots loading spinner +$loading-wp-spinner-dots-color: $loading-wp-spinner-color !default; + + +.loading-wp .loading-wrapper { + @include border-radius($loading-wp-border-radius); + + max-width: $loading-wp-max-width; + max-height: $loading-wp-max-height; + + color: $loading-wp-text-color; + background: $loading-wp-background; + + @include deprecated-variable(padding, $loading-wp-padding) { + @include padding($loading-wp-padding-top, $loading-wp-padding-end, $loading-wp-padding-bottom, $loading-wp-padding-start); + } +} + + +// Windows Loading Content +// ----------------------------------------- + +.loading-wp .loading-spinner + .loading-content { + @include margin-horizontal(16px, null); +} + + +// Windows Loading Spinner fill colors +// ----------------------------------------- + +.loading-wp .spinner-ios line, +.loading-wp .spinner-ios-small line { + stroke: $loading-wp-spinner-ios-color; +} + +.loading-wp .spinner-bubbles circle { + fill: $loading-wp-spinner-bubbles-color; +} + +.loading-wp .spinner-circles circle { + fill: $loading-wp-spinner-circles-color; +} + +.loading-wp .spinner-crescent circle { + stroke: $loading-wp-spinner-crescent-color; +} + +.loading-wp .spinner-dots circle { + fill: $loading-wp-spinner-dots-color; +} diff --git a/packages/ionic/src/menu/menu-controller.ts b/packages/ionic/src/menu/menu-controller.ts new file mode 100644 index 0000000000..9f34a45934 --- /dev/null +++ b/packages/ionic/src/menu/menu-controller.ts @@ -0,0 +1,234 @@ +import { Menu, MenuController as IMenuController } from '../../util/interfaces'; +import { MenuType, MenuRevealType, MenuPushType, MenuOverlayType } from './menu-types'; + + +export class MenuController implements IMenuController { + private _menus: Array = []; + private _menuTypes: { [name: string]: new(...args: any[]) => MenuType } = {}; + + constructor() { + this.registerType('reveal', MenuRevealType); + this.registerType('push', MenuPushType); + this.registerType('overlay', MenuOverlayType); + } + + /** + * Programatically open the Menu. + * @param {string} [menuId] Optionally get the menu by its id, or side. + * @return {Promise} returns a promise when the menu is fully opened + */ + open(menuId?: string): Promise { + const menu = this.get(menuId); + if (menu && !this.isAnimating()) { + let openedMenu = this.getOpen(); + if (openedMenu && menu !== openedMenu) { + openedMenu.setOpen(false, false); + } + return menu.open(); + } + return Promise.resolve(false); + } + + /** + * Programatically close the Menu. If no `menuId` is given as the first + * argument then it'll close any menu which is open. If a `menuId` + * is given then it'll close that exact menu. + * @param {string} [menuId] Optionally get the menu by its id, or side. + * @return {Promise} returns a promise when the menu is fully closed + */ + close(menuId?: string): Promise { + let menu: Menu; + + if (menuId) { + // find the menu by its id + menu = this.get(menuId); + + } else { + // find the menu that is open + menu = this.getOpen(); + } + + if (menu) { + // close the menu + return menu.close(); + } + + return Promise.resolve(false); + } + + + /** + * Toggle the menu. If it's closed, it will open, and if opened, it + * will close. + * @param {string} [menuId] Optionally get the menu by its id, or side. + * @return {Promise} returns a promise when the menu has been toggled + */ + toggle(menuId?: string): Promise { + const menu = this.get(menuId); + if (menu && !this.isAnimating()) { + var openedMenu = this.getOpen(); + if (openedMenu && menu !== openedMenu) { + openedMenu.setOpen(false, false); + } + return menu.toggle(); + } + return Promise.resolve(false); + } + + /** + * Used to enable or disable a menu. For example, there could be multiple + * left menus, but only one of them should be able to be opened at the same + * time. If there are multiple menus on the same side, then enabling one menu + * will also automatically disable all the others that are on the same side. + * @param {string} [menuId] Optionally get the menu by its id, or side. + * @return {Menu} Returns the instance of the menu, which is useful for chaining. + */ + enable(shouldEnable: boolean, menuId?: string): Menu { + const menu = this.get(menuId); + return (menu && menu.enable(shouldEnable)) || null; + } + + /** + * Used to enable or disable the ability to swipe open the menu. + * @param {boolean} shouldEnable True if it should be swipe-able, false if not. + * @param {string} [menuId] Optionally get the menu by its id, or side. + * @return {Menu} Returns the instance of the menu, which is useful for chaining. + */ + swipeEnable(shouldEnable: boolean, menuId?: string): Menu { + const menu = this.get(menuId); + return (menu && menu.swipeEnable(shouldEnable)) || null; + } + + /** + * @param {string} [menuId] Optionally get the menu by its id, or side. + * @return {boolean} Returns true if the specified menu is currently open, otherwise false. + * If the menuId is not specified, it returns true if ANY menu is currenly open. + */ + isOpen(menuId?: string): boolean { + if (menuId) { + var menu = this.get(menuId); + return menu && menu.isOpen || false; + } else { + return !!this.getOpen(); + } + } + + /** + * @param {string} [menuId] Optionally get the menu by its id, or side. + * @return {boolean} Returns true if the menu is currently enabled, otherwise false. + */ + isEnabled(menuId?: string): boolean { + const menu = this.get(menuId); + return menu && menu.enabled || false; + } + + /** + * Used to get a menu instance. If a `menuId` is not provided then it'll + * return the first menu found. If a `menuId` is `left` or `right`, then + * it'll return the enabled menu on that side. Otherwise, if a `menuId` is + * provided, then it'll try to find the menu using the menu's `id` + * property. If a menu is not found then it'll return `null`. + * @param {string} [menuId] Optionally get the menu by its id, or side. + * @return {Menu} Returns the instance of the menu if found, otherwise `null`. + */ + get(menuId?: string): Menu { + var menu: Menu; + + if (menuId === 'left' || menuId === 'right') { + // there could be more than one menu on the same side + // so first try to get the enabled one + menu = this._menus.find(m => m.side === menuId && m.enabled); + if (menu) { + return menu; + } + + // didn't find a menu side that is enabled + // so try to get the first menu side found + return this._menus.find(m => m.side === menuId) || null; + + } else if (menuId) { + // the menuId was not left or right + // so try to get the menu by its "id" + return this._menus.find(m => m.id === menuId) || null; + } + + // return the first enabled menu + menu = this._menus.find(m => m.enabled); + if (menu) { + return menu; + } + + // get the first menu in the array, if one exists + return (this._menus.length ? this._menus[0] : null); + } + + /** + * @return {Menu} Returns the instance of the menu already opened, otherwise `null`. + */ + getOpen(): Menu { + return this._menus.find(m => m.isOpen); + } + + /** + * @return {Array} Returns an array of all menu instances. + */ + getMenus(): Array { + return this._menus; + } + + /** + * @hidden + * @return {boolean} if any menu is currently animating + */ + isAnimating(): boolean { + return this._menus.some(menu => menu.isAnimating); + } + + /** + * @hidden + */ + _register(menu: Menu) { + if (this._menus.indexOf(menu) < 0) { + this._menus.push(menu); + } + } + + /** + * @hidden + */ + _unregister(menu: Menu) { + const index = this._menus.indexOf(menu); + if (index > -1) { + this._menus.splice(index, 1); + } + } + + /** + * @hidden + */ + _setActiveMenu(menu: Menu) { + // if this menu should be enabled + // then find all the other menus on this same side + // and automatically disable other same side menus + const side = menu.side; + this._menus + .filter(m => m.side === side && m !== menu) + .map(m => m.enable(false)); + } + + + /** + * @hidden + */ + registerType(name: string, cls: new(...args: any[]) => MenuType) { + this._menuTypes[name] = cls; + } + + /** + * @hidden + */ + create(type: string, menuCmp: Menu) { + return new this._menuTypes[type](menuCmp); + } + +} diff --git a/packages/ionic/src/menu/menu-gestures.ts b/packages/ionic/src/menu/menu-gestures.ts new file mode 100644 index 0000000000..cf4b299b7b --- /dev/null +++ b/packages/ionic/src/menu/menu-gestures.ts @@ -0,0 +1,113 @@ +// import { Menu } from './menu'; +// import { DomController } from '../../platform/dom-controller'; +// import { GestureController, GESTURE_PRIORITY_MENU_SWIPE, GESTURE_MENU_SWIPE } from '../../gestures/gesture-controller'; +// import { Platform } from '../../platform/platform'; +// import { SlideEdgeGesture } from '../../gestures/slide-edge-gesture'; +// import { SlideData } from '../../gestures/slide-gesture'; + +// /** +// * Gesture attached to the content which the menu is assigned to +// */ +// export class MenuContentGesture extends SlideEdgeGesture { + +// constructor( +// plt: Platform, +// public menu: Menu, +// gestureCtrl: GestureController, +// domCtrl: DomController, +// ) { +// super(plt, plt.doc().body, { +// direction: 'x', +// edge: menu.side, +// threshold: 5, +// maxEdgeStart: menu.maxEdgeStart || 50, +// zone: false, +// passive: true, +// domController: domCtrl, +// gesture: gestureCtrl.createGesture({ +// name: GESTURE_MENU_SWIPE, +// priority: GESTURE_PRIORITY_MENU_SWIPE, +// disableScroll: true +// }) +// }); +// } + +// canStart(ev: any): boolean { +// const menu = this.menu; +// if (!menu.canSwipe()) { +// return false; +// } +// if (menu.isOpen) { +// return true; +// } else if (menu.getMenuController().getOpen()) { +// return false; +// } +// return super.canStart(ev); +// } + +// // Set CSS, then wait one frame for it to apply before sliding starts +// onSlideBeforeStart(ev: any) { +// console.debug('menu gesture, onSlideBeforeStart', this.menu.side); +// this.menu._swipeBeforeStart(); +// } + +// onSlideStart() { +// console.debug('menu gesture, onSlideStart', this.menu.side); +// this.menu._swipeStart(); +// } + +// onSlide(slide: SlideData, ev: any) { +// const z = (this.menu.isRightSide ? slide.min : slide.max); +// const stepValue = (slide.distance / z); + +// this.menu._swipeProgress(stepValue); +// } + +// onSlideEnd(slide: SlideData, ev: any) { +// let z = (this.menu.isRightSide ? slide.min : slide.max); +// const currentStepValue = (slide.distance / z); +// const velocity = slide.velocity; +// z = Math.abs(z * 0.5); +// const shouldCompleteRight = (velocity >= 0) +// && (velocity > 0.2 || slide.delta > z); + +// const shouldCompleteLeft = (velocity <= 0) +// && (velocity < -0.2 || slide.delta < -z); + +// console.debug('menu gesture, onSlideEnd', this.menu.side, +// 'distance', slide.distance, +// 'delta', slide.delta, +// 'velocity', velocity, +// 'min', slide.min, +// 'max', slide.max, +// 'shouldCompleteLeft', shouldCompleteLeft, +// 'shouldCompleteRight', shouldCompleteRight, +// 'currentStepValue', currentStepValue); + +// this.menu._swipeEnd(shouldCompleteLeft, shouldCompleteRight, currentStepValue, velocity); +// } + +// getElementStartPos(slide: SlideData, ev: any) { +// const menu = this.menu; +// if (menu.isRightSide) { +// return menu.isOpen ? slide.min : slide.max; +// } +// // left menu +// return menu.isOpen ? slide.max : slide.min; +// } + +// getSlideBoundaries(): { min: number, max: number } { +// const menu = this.menu; +// if (menu.isRightSide) { +// return { +// min: -menu.width(), +// max: 0 +// }; +// } +// // left menu +// return { +// min: 0, +// max: menu.width() +// }; +// } +// } diff --git a/packages/ionic/src/menu/menu-types.ts b/packages/ionic/src/menu/menu-types.ts new file mode 100644 index 0000000000..59ad56fd3d --- /dev/null +++ b/packages/ionic/src/menu/menu-types.ts @@ -0,0 +1,168 @@ +import { Animation, Menu, MenuType as IMenuType } from '../../util/interfaces'; +import { Ionic } from '../index'; + + +/** + * @hidden + * Menu Type + * Base class which is extended by the various types. Each + * type will provide their own animations for open and close + * and registers itself with Menu. + */ +export class MenuType implements IMenuType { + + ani: Animation; + isOpening: boolean; + + constructor() { + this.ani = new Ionic.Animation(); + this.ani + .easing('cubic-bezier(0.0, 0.0, 0.2, 1)') + .easingReverse('cubic-bezier(0.4, 0.0, 0.6, 1)') + .duration(280); + } + + setOpen(shouldOpen: boolean, animated: boolean, done: Function) { + const ani = this.ani + .onFinish(done, {oneTimeCallback: true, clearExistingCallacks: true }) + .reverse(!shouldOpen); + + if (animated) { + ani.play(); + } else { + ani.syncPlay(); + } + } + + setProgressStart(isOpen: boolean) { + this.isOpening = !isOpen; + + // the cloned animation should not use an easing curve during seek + this.ani + .reverse(isOpen) + .progressStart(); + } + + setProgessStep(stepValue: number) { + // adjust progress value depending if it opening or closing + this.ani.progressStep(stepValue); + } + + setProgressEnd(shouldComplete: boolean, currentStepValue: number, velocity: number, done: Function) { + let isOpen = (this.isOpening && shouldComplete); + if (!this.isOpening && !shouldComplete) { + isOpen = true; + } + const ani = this.ani; + ani.onFinish(() => { + this.isOpening = false; + done(isOpen); + }, true); + + const factor = 1 - Math.min(Math.abs(velocity) / 4, 0.7); + const dur = ani.getDuration() * factor; + + ani.progressEnd(shouldComplete, currentStepValue, dur); + } + + destroy() { + this.ani.destroy(); + this.ani = null; + } + +} + + +/** + * @hidden + * Menu Reveal Type + * The content slides over to reveal the menu underneath. + * The menu itself, which is under the content, does not move. + */ +export class MenuRevealType extends MenuType { + + constructor(menu: Menu) { + super(); + + const openedX = (menu.width() * (menu.isRightSide ? -1 : 1)) + 'px'; + const contentOpen = new Ionic.Animation(menu.getContentElement()); + contentOpen.fromTo('translateX', '0px', openedX); + this.ani.add(contentOpen); + } + +} + + +/** + * @hidden + * Menu Push Type + * The content slides over to reveal the menu underneath. + * The menu itself also slides over to reveal its bad self. + */ +export class MenuPushType extends MenuType { + + constructor(menu: Menu) { + super(); + + let contentOpenedX: string, menuClosedX: string, menuOpenedX: string; + const width = menu.width(); + + if (menu.isRightSide) { + // right side + contentOpenedX = -width + 'px'; + menuClosedX = width + 'px'; + menuOpenedX = '0px'; + + } else { + contentOpenedX = width + 'px'; + menuOpenedX = '0px'; + menuClosedX = -width + 'px'; + } + + const menuAni = new Ionic.Animation(menu.getMenuElement()); + menuAni.fromTo('translateX', menuClosedX, menuOpenedX); + this.ani.add(menuAni); + + const contentApi = new Ionic.Animation(menu.getContentElement()); + contentApi.fromTo('translateX', '0px', contentOpenedX); + this.ani.add(contentApi); + } + +} + + +/** + * @hidden + * Menu Overlay Type + * The menu slides over the content. The content + * itself, which is under the menu, does not move. + */ +export class MenuOverlayType extends MenuType { + + constructor(menu: Menu) { + super(); + + let closedX: string, openedX: string; + const width = menu.width(); + + if (menu.isRightSide) { + // right side + closedX = 8 + width + 'px'; + openedX = '0px'; + + } else { + // left side + closedX = -(8 + width) + 'px'; + openedX = '0px'; + } + + const menuAni = new Ionic.Animation(menu.getMenuElement()); + menuAni.fromTo('translateX', closedX, openedX); + this.ani.add(menuAni); + + const backdropApi = new Ionic.Animation(menu.getBackdropElement()); + backdropApi.fromTo('opacity', 0.01, 0.35); + this.ani.add(backdropApi); + } + +} diff --git a/packages/ionic/src/menu/menu.ios.scss b/packages/ionic/src/menu/menu.ios.scss new file mode 100644 index 0000000000..59ef4c4fee --- /dev/null +++ b/packages/ionic/src/menu/menu.ios.scss @@ -0,0 +1,32 @@ +@import "../../themes/ionic.globals.ios"; +@import "./menu"; + + +// iOS Menu +// -------------------------------------------------- + +/// @prop - Background of the menu +$menu-ios-background: $background-ios-color !default; + +/// @prop - Box shadow color of the menu +$menu-ios-box-shadow-color: rgba(0, 0, 0, .25) !default; + +/// @prop - Box shadow of the menu +$menu-ios-box-shadow: 0 0 10px $menu-ios-box-shadow-color !default; + + +.menu-ios { + background: $menu-ios-background; +} + +.ios .menu-content-reveal { + box-shadow: $menu-ios-box-shadow; +} + +.ios .menu-content-push { + box-shadow: $menu-ios-box-shadow; +} + +.ios ion-menu[type=overlay] .menu-inner { + box-shadow: $menu-ios-box-shadow; +} diff --git a/packages/ionic/src/menu/menu.md.scss b/packages/ionic/src/menu/menu.md.scss new file mode 100644 index 0000000000..3dfb143d31 --- /dev/null +++ b/packages/ionic/src/menu/menu.md.scss @@ -0,0 +1,32 @@ +@import "../../themes/ionic.globals.md"; +@import "./menu"; + + +// Material Design Menu +// -------------------------------------------------- + +/// @prop - Background of the menu +$menu-md-background: $background-md-color !default; + +/// @prop - Box shadow color of the menu +$menu-md-box-shadow-color: rgba(0, 0, 0, .25) !default; + +/// @prop - Box shadow of the menu +$menu-md-box-shadow: 0 0 10px $menu-md-box-shadow-color !default; + + +.menu-md { + background: $menu-md-background; +} + +.menu-md .menu-content-reveal { + box-shadow: $menu-md-box-shadow; +} + +.menu-md .menu-content-push { + box-shadow: $menu-md-box-shadow; +} + +ion-menu[type=overlay] .menu-md { + box-shadow: $menu-md-box-shadow; +} diff --git a/packages/ionic/src/menu/menu.scss b/packages/ionic/src/menu/menu.scss new file mode 100644 index 0000000000..f4a896ffde --- /dev/null +++ b/packages/ionic/src/menu/menu.scss @@ -0,0 +1,129 @@ +@import "../../themes/ionic.globals"; + + +// Menu +// -------------------------------------------------- + +/// @prop - Width of the menu +$menu-width: 304px !default; + +/// @prop - Width of the menu on small devices (under 340px) +$menu-small-width: $menu-width - 40px !default; + + +ion-menu { + @include position(0, 0, 0, 0); + + position: absolute; + + display: none; + + contain: strict; +} + +ion-menu.show-menu { + display: block; +} + + +.menu-inner { + @include position(0, auto, 0, 0); + @include transform(translate3d(-9999px, 0, 0)); + + position: absolute; + + display: block; + + width: $menu-width; + height: 100%; + + contain: strict; +} + +.menu-inner > ion-header, +.menu-inner > ion-content, +.menu-inner > ion-footer { + position: absolute; +} + +ion-menu[side=left] > .menu-inner { + @include multi-dir() { + // scss-lint:disable PropertySpelling + right: auto; + left: 0; + } +} + +ion-menu[side=right] > .menu-inner { + @include multi-dir() { + // scss-lint:disable PropertySpelling + right: 0; + left: auto; + } +} + +ion-menu[side=end] > .menu-inner { + @include position-horizontal(auto, 0); +} + +ion-menu ion-backdrop { + z-index: -1; + display: none; + + opacity: .01; +} + +.menu-content { + @include transform(translate3d(0, 0, 0)); +} + +.menu-content-open { + cursor: pointer; + + touch-action: manipulation; +} + +.menu-content-open ion-pane, +.menu-content-open ion-content, +.menu-content-open .toolbar { + // the containing element itself should be clickable but + // everything inside of it should not clickable when menu is open + pointer-events: none; +} + + +@media (max-width: 340px) { + + .menu-inner { + width: $menu-small-width; + } + +} + + +// Menu Reveal +// -------------------------------------------------- +// The content slides over to reveal the menu underneath. +// The menu itself, which is under the content, does not move. + +ion-menu[type=reveal] { + z-index: 0; +} + +ion-menu[type=reveal].show-menu .menu-inner { + @include transform(translate3d(0, 0, 0)); +} + + +// Menu Overlay +// -------------------------------------------------- +// The menu slides over the content. The content +// itself, which is under the menu, does not move. + +ion-menu[type=overlay] { + z-index: $z-index-menu-overlay; +} + +ion-menu[type=overlay] .show-backdrop { + display: block; +} diff --git a/packages/ionic/src/menu/menu.tsx b/packages/ionic/src/menu/menu.tsx new file mode 100644 index 0000000000..8059ba7a38 --- /dev/null +++ b/packages/ionic/src/menu/menu.tsx @@ -0,0 +1,508 @@ +import { Component, h, Ionic, Prop, Watch } from '../index'; +import { VNodeData, GlobalNamespace, Menu as IMenu } from '../../util/interfaces'; +import { MenuController } from './menu-controller'; +import { MenuType } from './menu-types'; + + +@Component({ + tag: 'ion-menu', + styleUrls: { + ios: 'menu.ios.scss', + md: 'menu.md.scss', + wp: 'menu.wp.scss' + }, + host: { + theme: 'menu' + } +}) +export class Menu implements IMenu { + private $el: HTMLElement; + private _backdropElm: HTMLElement; + private _ctrl: MenuController; + private _unregCntClick: Function; + private _unregBdClick: Function; + private _activeBlock: string; + + private _cntElm: HTMLElement; + private _type: MenuType; + private _init = false; + private _isPane = false; + + mode: string; + color: string; + + /** + * @hidden + */ + @Prop() isOpen: boolean = false; + + /** + * @hidden + */ + @Prop() isAnimating: boolean = false; + + /** + * @hidden + */ + isRightSide: boolean = false; + + /** + * @input {any} A reference to the content element the menu should use. + */ + @Prop() content: any; + + /** + * @input {string} An id for the menu. + */ + @Prop() id: string; + + /** + * @input {string} The display type of the menu. Default varies based on the mode, + * see the `menuType` in the [config](../../config/Config). Available options: + * `"overlay"`, `"reveal"`, `"push"`. + */ + @Prop() type: string; + + /** + * @input {boolean} If true, the menu is enabled. Default `true`. + */ + @Prop() enabled: boolean; + + /** + * @input {string} Which side of the view the menu should be placed. Default `"start"`. + */ + @Prop() side: string = 'start'; + + /** + * @input {boolean} If true, swiping the menu is enabled. Default `true`. + */ + @Prop() swipeEnabled: boolean; + + @Watch('swipeEnabled') + swipeEnabledChange(isEnabled: boolean) { + this.swipeEnable(isEnabled); + } + + /** + * @input {boolean} If true, the menu will persist on child pages. + */ + @Prop() persistent: boolean = false; + + /** + * @hidden + */ + @Prop() maxEdgeStart: number; + + + constructor() { + // get or create the MenuController singleton + this._ctrl = (Ionic as GlobalNamespace).controllers.menu = ((Ionic as GlobalNamespace).controllers.menu || new MenuController()); + } + + + /** + * @hidden + */ + ionViewDidLoad() { + this._backdropElm = this.$el.querySelector('.menu-backdrop') as HTMLElement; + + this._init = true; + + if (this.content) { + if ((this.content).tagName as HTMLElement) { + this._cntElm = this.content; + } else if (typeof this.content === 'string') { + this._cntElm = document.querySelector(this.content) as any; + } + } + + if (!this._cntElm || !this._cntElm.tagName) { + // requires content element + return console.error('Menu: must have a "content" element to listen for drag events on.'); + } + + // add menu's content classes + this._cntElm.classList.add('menu-content'); + this._cntElm.classList.add('menu-content-' + this.type); + + let isEnabled = this.enabled; + if (isEnabled === true || typeof isEnabled === 'undefined') { + // check if more than one menu is on the same side + isEnabled = !this._ctrl.getMenus().some(m => { + return m.side === this.side && m.enabled; + }); + } + // register this menu with the app's menu controller + this._ctrl._register(this); + + // mask it as enabled / disabled + this.enable(isEnabled); + } + + hostData(): VNodeData { + return { + attrs: { + 'role': 'navigation', + 'side': this.side, + 'type': this.type + }, + class: { + 'menu-enabled': this.enabled + } + }; + } + + render() { + // normalize the "type" + if (!this.type) { + this.type = Ionic.config.get('menuType', 'overlay'); + } + + return [ + + + , + + ]; + } + + /** + * @hidden + */ + onBackdropClick(ev: UIEvent) { + ev.preventDefault(); + ev.stopPropagation(); + this._ctrl.close(); + } + + /** + * @hidden + */ + private _getType(): MenuType { + if (!this._type) { + this._type = this._ctrl.create(this.type, this); + + if (Ionic.config.getBoolean('animate') === false) { + this._type.ani.duration(0); + } + } + return this._type; + } + + /** + * @hidden + */ + setOpen(shouldOpen: boolean, animated: boolean = true): Promise { + // If the menu is disabled or it is currenly being animated, let's do nothing + if ((shouldOpen === this.isOpen) || !this._canOpen() || this.isAnimating) { + return Promise.resolve(this.isOpen); + } + return new Promise(resolve => { + this._before(); + this._getType().setOpen(shouldOpen, animated, () => { + this._after(shouldOpen); + resolve(this.isOpen); + }); + }); + } + + _forceClosing() { + this.isAnimating = true; + this._getType().setOpen(false, false, () => { + this._after(false); + }); + } + + /** + * @hidden + */ + canSwipe(): boolean { + return this.swipeEnabled && + !this.isAnimating && + this._canOpen(); + // TODO: && this._app.isEnabled(); + } + + + _swipeBeforeStart() { + if (!this.canSwipe()) { + return; + } + this._before(); + } + + _swipeStart() { + if (!this.isAnimating) { + return; + } + + this._getType().setProgressStart(this.isOpen); + } + + _swipeProgress(stepValue: number) { + if (!this.isAnimating) { + return; + } + + this._getType().setProgessStep(stepValue); + + Ionic.emit(this, 'ionDrag', { detail: { menu: this } }); + } + + _swipeEnd(shouldCompleteLeft: boolean, shouldCompleteRight: boolean, stepValue: number, velocity: number) { + if (!this.isAnimating) { + return; + } + + // user has finished dragging the menu + const isRightSide = this.isRightSide; + const opening = !this.isOpen; + const shouldComplete = (opening) + ? isRightSide ? shouldCompleteLeft : shouldCompleteRight + : isRightSide ? shouldCompleteRight : shouldCompleteLeft; + + this._getType().setProgressEnd(shouldComplete, stepValue, velocity, (isOpen: boolean) => { + console.debug('menu, swipeEnd', this.side); + this._after(isOpen); + }); + } + + private _before() { + // this places the menu into the correct location before it animates in + // this css class doesn't actually kick off any animations + this.$el.classList.add('show-menu'); + this._backdropElm.classList.add('show-backdrop'); + + this.resize(); + + // TODO: this._keyboard.close(); + + this.isAnimating = true; + } + + private _after(isOpen: boolean) { + // TODO: this._app.setEnabled(false, 100); + + // keep opening/closing the menu disabled for a touch more yet + // only add listeners/css if it's enabled and isOpen + // and only remove listeners/css if it's not open + // emit opened/closed events + this.isOpen = isOpen; + this.isAnimating = false; + + // add/remove backdrop click listeners + this._backdropClick(isOpen); + + if (isOpen) { + // disable swipe to go back gesture + this._activeBlock = GESTURE_BLOCKER; + + // add css class + Ionic.dom.write(() => { + this._cntElm.classList.add('menu-content-open'); + }); + + // emit open event + Ionic.emit(this, 'ionOpen', { detail: { menu: this } }); + + } else { + // enable swipe to go back gesture + this._activeBlock = null; + + // remove css classes + Ionic.dom.write(() => { + this._cntElm.classList.remove('menu-content-open'); + this._cntElm.classList.remove('show-menu'); + this._backdropElm.classList.remove('show-menu'); + }); + + // emit close event + Ionic.emit(this, 'ionClose', { detail: { menu: this } }); + } + } + + /** + * @hidden + */ + open(): Promise { + return this.setOpen(true); + } + + /** + * @hidden + */ + close(): Promise { + return this.setOpen(false); + } + + /** + * @hidden + */ + resize() { + // TODO + // const content: Content | Nav = this.menuContent + // ? this.menuContent + // : this.menuNav; + // content && content.resize(); + } + + /** + * @hidden + */ + toggle(): Promise { + return this.setOpen(!this.isOpen); + } + + _canOpen(): boolean { + return this.enabled && !this._isPane; + } + + /** + * @hidden + */ + _updateState() { + const canOpen = this._canOpen(); + + // Close menu inmediately + if (!canOpen && this.isOpen) { + // close if this menu is open, and should not be enabled + this._forceClosing(); + } + + if (this.enabled && this._ctrl) { + this._ctrl._setActiveMenu(this); + } + + if (!this._init) { + return; + } + + // TODO + // const gesture = this._gesture; + // // only listen/unlisten if the menu has initialized + // if (canOpen && this.swipeEnabled && !gesture.isListening) { + // // should listen, but is not currently listening + // console.debug('menu, gesture listen', this.side); + // gesture.listen(); + + // } else if (gesture.isListening && (!canOpen || !this.swipeEnabled)) { + // // should not listen, but is currently listening + // console.debug('menu, gesture unlisten', this.side); + // gesture.unlisten(); + // } + + if (this.isOpen || (this._isPane && this.enabled)) { + this.resize(); + } + } + + /** + * @hidden + */ + enable(shouldEnable: boolean): Menu { + this.enabled = shouldEnable; + this._updateState(); + return this; + } + + /** + * @internal + */ + initPane(): boolean { + return false; + } + + /** + * @internal + */ + paneChanged(isPane: boolean) { + this._isPane = isPane; + this._updateState(); + } + + /** + * @hidden + */ + swipeEnable(shouldEnable: boolean): Menu { + this.swipeEnabled = shouldEnable; + this._updateState(); + return this; + } + + /** + * @hidden + */ + getMenuElement(): HTMLElement { + return this.$el.querySelector('.menu-inner') as HTMLElement; + } + + /** + * @hidden + */ + getContentElement(): HTMLElement { + return this._cntElm; + } + + /** + * @hidden + */ + getBackdropElement(): HTMLElement { + return this._backdropElm; + } + + /** + * @hidden + */ + width(): number { + return this.getMenuElement().offsetWidth; + } + + /** + * @hidden + */ + getMenuController(): MenuController { + return this._ctrl; + } + + private _backdropClick(shouldAdd: boolean) { + const onBackdropClick = this.onBackdropClick.bind(this); + + if (shouldAdd && !this._unregBdClick) { + this._unregBdClick = Ionic.listener.add(this._cntElm, 'click', onBackdropClick, { capture: true }); + this._unregCntClick = Ionic.listener.add(this._cntElm, 'click', onBackdropClick, { capture: true }); + + } else if (!shouldAdd && this._unregBdClick) { + this._unregBdClick(); + this._unregCntClick(); + this._unregBdClick = this._unregCntClick = null; + } + } + + /** + * @hidden + */ + ionViewDidUnload() { + this._backdropClick(false); + + this._ctrl._unregister(this); + this._type && this._type.destroy(); + + this._ctrl = this._type = this._cntElm = this._backdropElm = null; + } + +} + +const GESTURE_BLOCKER = 'goback-swipe'; diff --git a/packages/ionic/src/menu/menu.wp.scss b/packages/ionic/src/menu/menu.wp.scss new file mode 100644 index 0000000000..97f6c005fb --- /dev/null +++ b/packages/ionic/src/menu/menu.wp.scss @@ -0,0 +1,14 @@ +@import "../../themes/ionic.globals.wp"; +@import "./menu"; + + +// Windows Menu +// -------------------------------------------------- + +/// @prop - Background of the menu +$menu-wp-background: #f2f2f2 !default; + + +.menu-wp .menu-inner { + background: $menu-wp-background; +} diff --git a/packages/ionic/src/modal-controller/modal-controller.scss b/packages/ionic/src/modal-controller/modal-controller.scss new file mode 100644 index 0000000000..b457f1c500 --- /dev/null +++ b/packages/ionic/src/modal-controller/modal-controller.scss @@ -0,0 +1,36 @@ +@import "../../themes/ionic.globals"; + + +// Modal Controller +// -------------------------------------------------- + +ion-modal-controller { + display: none; +} + + +// Modal Controller Backdrop +// -------------------------------------------------- + +/// @prop - Color of the backdrop +$modal-backdrop-color: #000 !default; + + +.modal-backdrop { + position: absolute; + top: 0; + left: 0; + z-index: $z-index-backdrop; + display: block; + + width: 100%; + height: 100%; + + background-color: $modal-backdrop-color; + opacity: .01; + transform: translateZ(0); +} + +.modal-backdrop.backdrop-no-tappable { + cursor: auto; +} diff --git a/packages/ionic/src/modal-controller/modal-controller.ts b/packages/ionic/src/modal-controller/modal-controller.ts new file mode 100644 index 0000000000..eb4f779fd0 --- /dev/null +++ b/packages/ionic/src/modal-controller/modal-controller.ts @@ -0,0 +1,80 @@ +import { Component, Ionic, Listen } from '../index'; +import { GlobalNamespace, ModalEvent, ModalOptions, Modal, IonicControllerApi } from '../../util/interfaces'; + + +@Component({ + tag: 'ion-modal-controller', + styleUrls: 'modal-controller.scss' +}) +export class ModalController implements IonicControllerApi { + private ids = 0; + private modalResolves: {[modalId: string]: Function} = {}; + private modals: Modal[] = []; + private appRoot: Element; + + + ionViewDidLoad() { + this.appRoot = document.querySelector('ion-app') || document.body; + (Ionic).loadController('modal', this); + } + + + load(opts?: ModalOptions) { + // create ionic's wrapping ion-modal component + const modal: Modal = document.createElement('ion-modal'); + + const id = this.ids++; + + // give this modal a unique id + modal.id = `modal-${id}`; + modal.style.zIndex = (10000 + id); + + // convert the passed in modal options into props + // that get passed down into the new modal + Object.assign(modal, opts); + + // append the modal element to the document body + this.appRoot.appendChild(modal); + + // store the resolve function to be called later up when the modal loads + return new Promise(resolve => { + this.modalResolves[modal.id] = resolve; + }); + } + + + @Listen('body:ionModalDidLoad') + viewDidLoad(ev: ModalEvent) { + const modal = ev.detail.modal; + const modalResolve = this.modalResolves[modal.id]; + if (modalResolve) { + modalResolve(modal); + delete this.modalResolves[modal.id]; + } + } + + + @Listen('body:ionModalWillPresent') + willPresent(ev: ModalEvent) { + this.modals.push(ev.detail.modal); + } + + + @Listen('body:ionModalWillDismiss, body:ionModalDidUnload') + willDismiss(ev: ModalEvent) { + const index = this.modals.indexOf(ev.detail.modal); + if (index > -1) { + this.modals.splice(index, 1); + } + } + + + @Listen('body:keyup.escape') + escapeKeyUp() { + const lastModal = this.modals[this.modals.length - 1]; + if (lastModal) { + lastModal.dismiss(); + } + } + +} diff --git a/packages/ionic/src/modal/animations/ios.enter.ts b/packages/ionic/src/modal/animations/ios.enter.ts new file mode 100644 index 0000000000..1d83416234 --- /dev/null +++ b/packages/ionic/src/modal/animations/ios.enter.ts @@ -0,0 +1,94 @@ +import { Ionic } from '../../index'; + + +/** + * iOS Modal Enter Animation + */ +export default function(baseElm: HTMLElement) { + const baseAnimation = new Ionic.Animation(); + + const backdropAnimation = new Ionic.Animation(); + backdropAnimation.addElement(baseElm.querySelector('.modal-backdrop')); + + const wrapperAnimation = new Ionic.Animation(); + wrapperAnimation.addElement(baseElm.querySelector('.modal-wrapper')); + + wrapperAnimation.beforeStyles({ 'opacity': 1 }) + .fromTo('translateY', '100%', '0%'); + + backdropAnimation.fromTo('opacity', 0.01, 0.4); + + return baseAnimation + .addElement(baseElm) + .easing('cubic-bezier(0.36,0.66,0.04,1)') + .duration(400) + .beforeAddClass('show-modal') + .add(backdropAnimation) + .add(wrapperAnimation); +} + +/** + * Animations for modals + */ +// export function modalSlideIn(rootElm: HTMLElement) { + +// } + + +// export class ModalSlideOut { +// constructor(ele: HTMLElement) { +// let backdrop = new Animation(this.plt, ele.querySelector('ion-backdrop')); +// let wrapperEle = ele.querySelector('.modal-wrapper'); +// let wrapperEleRect = wrapperEle.getBoundingClientRect(); +// let wrapper = new Animation(this.plt, wrapperEle); + +// // height of the screen - top of the container tells us how much to scoot it down +// // so it's off-screen +// wrapper.fromTo('translateY', '0px', `${this.plt.height() - wrapperEleRect.top}px`); +// backdrop.fromTo('opacity', 0.4, 0.0); + +// this +// .element(this.leavingView.pageRef()) +// .easing('ease-out') +// .duration(250) +// .add(backdrop) +// .add(wrapper); +// } +// } + + +// export class ModalMDSlideIn { +// constructor(ele: HTMLElement) { +// const backdrop = new Animation(this.plt, ele.querySelector('ion-backdrop')); +// const wrapper = new Animation(this.plt, ele.querySelector('.modal-wrapper')); + +// backdrop.fromTo('opacity', 0.01, 0.4); +// wrapper.fromTo('translateY', '40px', '0px'); +// wrapper.fromTo('opacity', 0.01, 1); + +// const DURATION = 280; +// const EASING = 'cubic-bezier(0.36,0.66,0.04,1)'; +// this.element(this.enteringView.pageRef()).easing(EASING).duration(DURATION) +// .add(backdrop) +// .add(wrapper); +// } +// } + + +// export class ModalMDSlideOut { +// constructor(ele: HTMLElement) { +// const backdrop = new Animation(this.plt, ele.querySelector('ion-backdrop')); +// const wrapper = new Animation(this.plt, ele.querySelector('.modal-wrapper')); + +// backdrop.fromTo('opacity', 0.4, 0.0); +// wrapper.fromTo('translateY', '0px', '40px'); +// wrapper.fromTo('opacity', 0.99, 0); + +// this +// .element(this.leavingView.pageRef()) +// .duration(200) +// .easing('cubic-bezier(0.47,0,0.745,0.715)') +// .add(wrapper) +// .add(backdrop); +// } +// } diff --git a/packages/ionic/src/modal/animations/ios.leave.ts b/packages/ionic/src/modal/animations/ios.leave.ts new file mode 100644 index 0000000000..ad6ca420c3 --- /dev/null +++ b/packages/ionic/src/modal/animations/ios.leave.ts @@ -0,0 +1,29 @@ +import { Ionic } from '../../index'; + + +/** + * iOS Modal Leave Animation + */ +export default function(baseElm: HTMLElement) { + const baseAnimation = new Ionic.Animation(); + + const backdropAnimation = new Ionic.Animation(); + backdropAnimation.addElement(baseElm.querySelector('.modal-backdrop')); + + const wrapperAnimation = new Ionic.Animation(); + const wrapperElm = baseElm.querySelector('.modal-wrapper'); + wrapperAnimation.addElement(wrapperElm); + const wrapperElmRect = wrapperElm.getBoundingClientRect(); + + wrapperAnimation.beforeStyles({ 'opacity': 1 }) + .fromTo('translateY', '0%', `${window.innerHeight - wrapperElmRect.top}px`); + + backdropAnimation.fromTo('opacity', 0.4, 0.0); + + return baseAnimation + .addElement(baseElm) + .easing('ease-out') + .duration(250) + .add(backdropAnimation) + .add(wrapperAnimation); +} diff --git a/packages/ionic/src/modal/modal.ios.scss b/packages/ionic/src/modal/modal.ios.scss new file mode 100644 index 0000000000..30a48e7da9 --- /dev/null +++ b/packages/ionic/src/modal/modal.ios.scss @@ -0,0 +1,24 @@ +@import "../../themes/ionic.globals.ios"; +@import "./modal"; + + +// iOS Modals +// -------------------------------------------------- + +/// @prop - Background color for the modal +$modal-ios-background-color: $background-ios-color !default; + +/// @prop - Border radius for the modal +$modal-ios-border-radius: 10px !default; + + +.modal-wrapper-ios { + // hidden by default to prevent flickers, the animation will show it + @include transform(translate3d(0, 100%, 0)); + + @media only screen and (min-width: $modal-inset-min-width) and (min-height: $modal-inset-min-height-small) { + @include border-radius($modal-ios-border-radius); + + overflow: hidden; + } +} diff --git a/packages/ionic/src/modal/modal.md.scss b/packages/ionic/src/modal/modal.md.scss new file mode 100644 index 0000000000..bc90356d79 --- /dev/null +++ b/packages/ionic/src/modal/modal.md.scss @@ -0,0 +1,31 @@ +@import "../../themes/ionic.globals.md"; +@import "./modal"; + + +// Material Design Modals +// -------------------------------------------------- + +/// @prop - Background color for the modal +$modal-md-background-color: $background-md-color !default; + +/// @prop - Box shadow color of the alert +$modal-inset-box-shadow-color: rgba(0, 0, 0, .4) !default; + +/// @prop - Box shadow of the alert +$modal-inset-box-shadow: 0 28px 48px $modal-inset-box-shadow-color !default; + + +.modal-wrapper-md { + @include transform(translate3d(0, 40px, 0)); + + opacity: .01; + + @media only screen and (min-width: $modal-inset-min-width) and (min-height: $modal-inset-min-height-small) { + @include border-radius(2px); + + overflow: hidden; + + box-shadow: $modal-inset-box-shadow; + } + +} diff --git a/packages/ionic/src/modal/modal.scss b/packages/ionic/src/modal/modal.scss new file mode 100644 index 0000000000..faaac31541 --- /dev/null +++ b/packages/ionic/src/modal/modal.scss @@ -0,0 +1,99 @@ +@import "../../themes/ionic.globals"; + + +// Modals +// -------------------------------------------------- + +/// @prop - Min width of the modal inset +$modal-inset-min-width: 768px !default; + +/// @prop - Minimum height of the small modal inset +$modal-inset-min-height-small: 600px !default; + +/// @prop - Minimum height of the large modal inset +$modal-inset-min-height-large: 768px !default; + +/// @prop - Width of the large modal inset +$modal-inset-width: 600px !default; + +/// @prop - Height of the small modal inset +$modal-inset-height-small: 500px !default; + +/// @prop - Height of the large modal inset +$modal-inset-height-large: 600px !default; + + +ion-modal { + @include position(0, null, null, 0); + + position: absolute; + + display: block; + + width: 100%; + height: 100%; + + contain: strict; +} + +.modal-backdrop { + @media not all and (min-width: $modal-inset-min-width) and (min-height: $modal-inset-min-height-small) { + visibility: hidden; + } +} + +.modal-backdrop.hide-backdrop { + visibility: hidden; +} + +.modal-wrapper { + z-index: 10; + + height: 100%; + + contain: strict; + + @media only screen and (min-width: $modal-inset-min-width) and (min-height: $modal-inset-min-height-small) { + @include position(calc(50% - (#{$modal-inset-height-small}/2)), null, null, calc(50% - (#{$modal-inset-width}/2))); + + position: absolute; + + width: $modal-inset-width; + height: $modal-inset-height-small; + } + + @media only screen and (min-width: $modal-inset-min-width) and (min-height: $modal-inset-min-height-large) { + @include position(calc(50% - (#{$modal-inset-height-large}/2)), null, null, calc(50% - (#{$modal-inset-width}/2))); + + position: absolute; + + width: $modal-inset-width; + height: $modal-inset-height-large; + } +} + +.modal-content { + position: absolute; + top: 0; + left: 0; + + display: block; + + // override the default visibility cloaking + // added for each component before it's loaded + // visibility: inherit !important; + + width: 100%; + height: 100%; + + // do not show by default, but still render + // so we can get dimensions before transitioning in + opacity: 0; + + contain: strict; +} + +.show-modal .modal-content { + // show the modal now that it's ready + opacity: 1; +} diff --git a/packages/ionic/src/modal/modal.tsx b/packages/ionic/src/modal/modal.tsx new file mode 100644 index 0000000000..6713fcc2c2 --- /dev/null +++ b/packages/ionic/src/modal/modal.tsx @@ -0,0 +1,154 @@ +import { Component, h, Ionic, Listen, Prop } from '../index'; +import { AnimationBuilder, Animation, Modal as IModal, ModalEvent } from '../../util/interfaces'; +import { createThemedClasses } from '../../util/theme'; + +import iOSEnterAnimation from './animations/ios.enter'; +import iOSLeaveAnimation from './animations/ios.leave'; + + +@Component({ + tag: 'ion-modal', + styleUrls: { + ios: 'modal.ios.scss', + md: 'modal.md.scss', + wp: 'modal.wp.scss' + } +}) +export class Modal implements IModal { + $el: HTMLElement; + animation: Animation; + + @Prop() mode: string; + @Prop() color: string; + @Prop() component: string; + @Prop() componentProps: any = {}; + @Prop() cssClass: string; + @Prop() enableBackdropDismiss: boolean = true; + @Prop() enterAnimation: AnimationBuilder; + @Prop() exitAnimation: AnimationBuilder; + @Prop() id: string; + @Prop() showBackdrop: boolean = true; + + @Listen('ionDismiss') + onDismiss(ev: UIEvent) { + ev.stopPropagation(); + ev.preventDefault(); + + this.dismiss(); + } + + ionViewDidLoad() { + Ionic.emit(this, 'ionModalDidLoad', { detail: { modal: this } } as ModalEvent); + } + + present() { + return new Promise(resolve => { + this._present(resolve); + }); + } + + private _present(resolve: Function) { + if (this.animation) { + this.animation.destroy(); + this.animation = null; + } + + Ionic.emit(this, 'ionModalWillPresent', { detail: { modal: this } } as ModalEvent); + + // get the user's animation fn if one was provided + let animationBuilder = this.enterAnimation; + + if (!animationBuilder) { + // user did not provide a custom animation fn + // decide from the config which animation to use + // TODO!! + animationBuilder = iOSEnterAnimation; + } + + // build the animation and kick it off + this.animation = animationBuilder(this.$el); + + this.animation.onFinish((a: any) => { + a.destroy(); + Ionic.emit(this, 'ionModalDidPresent', { detail: { modal: this } } as ModalEvent); + resolve(); + }).play(); + } + + dismiss() { + if (this.animation) { + this.animation.destroy(); + this.animation = null; + } + + return new Promise(resolve => { + Ionic.emit(this, 'ionModalWillDismiss', { detail: { modal: this } } as ModalEvent); + + // get the user's animation fn if one was provided + let animationBuilder = this.exitAnimation; + + if (!animationBuilder) { + // user did not provide a custom animation fn + // decide from the config which animation to use + // TODO!! + animationBuilder = iOSLeaveAnimation; + } + + // build the animation and kick it off + this.animation = animationBuilder(this.$el); + this.animation.onFinish((a: any) => { + a.destroy(); + Ionic.emit(this, 'ionModalDidDismiss', { detail: { modal: this } } as ModalEvent); + Ionic.dom.write(() => { + this.$el.parentNode.removeChild(this.$el); + }); + resolve(); + }).play(); + }); + } + + ionViewDidUnload() { + Ionic.emit(this, 'ionModalDidUnload', { detail: { modal: this } } as ModalEvent); + } + + backdropClick() { + if (this.enableBackdropDismiss) { + // const opts: NavOptions = { + // minClickBlockDuration: 400 + // }; + this.dismiss(); + } + } + + render() { + const ThisComponent = this.component; + + let userCssClasses = 'modal-content'; + if (this.cssClass) { + userCssClasses += ` ${this.cssClass}`; + } + + const dialogClasses = createThemedClasses(this.mode, this.color, 'modal-wrapper'); + const thisComponentClasses = createThemedClasses(this.mode, this.color, userCssClasses); + + return [ + , + + + + + ]; + } +} diff --git a/packages/ionic/src/modal/modal.wp.scss b/packages/ionic/src/modal/modal.wp.scss new file mode 100644 index 0000000000..6b36281214 --- /dev/null +++ b/packages/ionic/src/modal/modal.wp.scss @@ -0,0 +1,16 @@ +@import "../../themes/ionic.globals.wp"; +@import "./modal"; + + +// Windows Modals +// -------------------------------------------------- + +/// @prop - Background color for the modal +$modal-wp-background-color: $background-wp-color !default; + + +.modal-wrapper-wp { + @include transform(translate3d(0, 40px, 0)); + + opacity: .01; +} diff --git a/packages/ionic/src/page/page.ios.scss b/packages/ionic/src/page/page.ios.scss new file mode 100644 index 0000000000..b8ea0ebcb0 --- /dev/null +++ b/packages/ionic/src/page/page.ios.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.ios"; +@import "./page"; + + +// iOS Page +// -------------------------------------------------- diff --git a/packages/ionic/src/page/page.md.scss b/packages/ionic/src/page/page.md.scss new file mode 100644 index 0000000000..fb6200feb4 --- /dev/null +++ b/packages/ionic/src/page/page.md.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.md"; +@import "./page"; + + +// Material Design Page +// -------------------------------------------------- diff --git a/packages/ionic/src/page/page.scss b/packages/ionic/src/page/page.scss new file mode 100644 index 0000000000..0e8c825def --- /dev/null +++ b/packages/ionic/src/page/page.scss @@ -0,0 +1,17 @@ +@import "../../themes/ionic.globals"; + + +// Page +// -------------------------------------------------- + +ion-page { + @include position(0, null, null, 0); + + position: absolute; + display: block; + + width: 100%; + height: 100%; + + contain: strict; +} diff --git a/packages/ionic/src/page/page.tsx b/packages/ionic/src/page/page.tsx new file mode 100644 index 0000000000..5ec6f65f2d --- /dev/null +++ b/packages/ionic/src/page/page.tsx @@ -0,0 +1,19 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-page', + styleUrls: { + ios: 'page.ios.scss', + md: 'page.md.scss', + wp: 'page.wp.scss' + }, + host: { + theme: 'page' + } +}) +export class Page { + render() { + return ; + } +} diff --git a/packages/ionic/src/page/page.wp.scss b/packages/ionic/src/page/page.wp.scss new file mode 100644 index 0000000000..91a9ccfb25 --- /dev/null +++ b/packages/ionic/src/page/page.wp.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.wp"; +@import "./page"; + + +// Windows Page +// -------------------------------------------------- diff --git a/packages/ionic/src/scroll/scroll-interface.ts b/packages/ionic/src/scroll/scroll-interface.ts new file mode 100644 index 0000000000..0b53870056 --- /dev/null +++ b/packages/ionic/src/scroll/scroll-interface.ts @@ -0,0 +1,14 @@ +import { ScrollCallback } from '../../util/interfaces'; + + +export interface Scroll { + enabled: boolean; + jsScroll: boolean; + + ionScrollStart: ScrollCallback; + ionScroll: ScrollCallback; + ionScrollEnd: ScrollCallback; + + scrollToTop: (duration: number) => Promise; + scrollToBottom: (duration: number) => Promise; +} diff --git a/packages/ionic/src/scroll/scroll.ts b/packages/ionic/src/scroll/scroll.ts new file mode 100644 index 0000000000..afa9a5bbcf --- /dev/null +++ b/packages/ionic/src/scroll/scroll.ts @@ -0,0 +1,361 @@ +import { Component, Listen, Ionic, Prop } from '../index'; +import { GestureController, GestureDelegate } from '../gesture/gesture-controller'; +import { GlobalNamespace, ScrollCallback, ScrollDetail } from '../../util/interfaces'; +import { Scroll as IScroll } from './scroll-interface'; + + +@Component({ + tag: 'ion-scroll' +}) +export class Scroll implements IScroll { + private $el: HTMLElement; + private gesture: GestureDelegate; + private positions: number[] = []; + private _l: number; + private _t: number; + private tmr: any; + private queued = false; + + isScrolling: boolean = false; + detail: ScrollDetail = {}; + + @Prop() enabled: boolean = true; + @Prop() jsScroll: boolean = false; + @Prop() ionScrollStart: ScrollCallback; + @Prop() ionScroll: ScrollCallback; + @Prop() ionScrollEnd: ScrollCallback; + + + ionViewDidLoad() { + if (Ionic.isServer) return; + + const ctrl = (Ionic).controllers.gesture = ((Ionic).controllers.gesture || new GestureController()); + + this.gesture = ctrl.createGesture('scroll', 100, false); + } + + + // Native Scroll ************************* + + @Listen('scroll', { passive: true }) + onNativeScroll() { + const self = this; + + if (!self.queued && self.enabled) { + self.queued = true; + + Ionic.dom.read(function(timeStamp) { + self.queued = false; + self.onScroll(timeStamp || Date.now()); + }); + } + } + + onScroll(timeStamp: number) { + const self = this; + const detail = self.detail; + const positions = self.positions; + + detail.timeStamp = timeStamp; + + // get the current scrollTop + // ******** DOM READ **************** + detail.scrollTop = self.getTop(); + + // get the current scrollLeft + // ******** DOM READ **************** + detail.scrollLeft = self.getLeft(); + + if (!self.isScrolling) { + // currently not scrolling, so this is a scroll start + self.isScrolling = true; + + // remember the start positions + detail.startY = detail.scrollTop; + detail.startX = detail.scrollLeft; + + // new scroll, so do some resets + detail.velocityY = detail.velocityX = detail.deltaY = detail.deltaX = positions.length = 0; + + // emit only on the first scroll event + if (self.ionScrollStart) { + self.ionScrollStart(detail); + } else { + Ionic.emit(this, 'ionScrollStart', { detail: detail }); + } + } + + detail.directionX = detail.velocityDirectionX = (detail.deltaX > 0 ? 'left' : (detail.deltaX < 0 ? 'right' : null)); + detail.directionY = detail.velocityDirectionY = (detail.deltaY > 0 ? 'up' : (detail.deltaY < 0 ? 'down' : null)); + + // actively scrolling + positions.push(detail.scrollTop, detail.scrollLeft, detail.timeStamp); + + if (positions.length > 3) { + // we've gotten at least 2 scroll events so far + detail.deltaY = (detail.scrollTop - detail.startY); + detail.deltaX = (detail.scrollLeft - detail.startX); + + var endPos = (positions.length - 1); + var startPos = endPos; + var timeRange = (detail.timeStamp - 100); + + // move pointer to position measured 100ms ago + for (var i = endPos; i > 0 && positions[i] > timeRange; i -= 3) { + startPos = i; + } + + if (startPos !== endPos) { + // compute relative movement between these two points + var movedTop = (positions[startPos - 2] - positions[endPos - 2]); + var movedLeft = (positions[startPos - 1] - positions[endPos - 1]); + var factor = 16.67 / (positions[endPos] - positions[startPos]); + + // based on XXms compute the movement to apply for each render step + detail.velocityY = movedTop * factor; + detail.velocityX = movedLeft * factor; + + // figure out which direction we're scrolling + detail.velocityDirectionX = (movedLeft > 0 ? 'left' : (movedLeft < 0 ? 'right' : null)); + detail.velocityDirectionY = (movedTop > 0 ? 'up' : (movedTop < 0 ? 'down' : null)); + } + } + + clearTimeout(self.tmr); + self.tmr = setTimeout(function() { + + // haven't scrolled in a while, so it's a scrollend + self.isScrolling = false; + + Ionic.dom.read(function(timeStamp) { + if (!self.isScrolling) { + self.onEnd(timeStamp); + } + }); + }, 80); + + // emit on each scroll event + if (self.ionScrollStart) { + self.ionScroll(detail); + } else { + Ionic.emit(this, 'ionScroll', { detail: detail }); + } + } + + + onEnd(timeStamp: number) { + const self = this; + const detail = self.detail; + + detail.timeStamp = timeStamp || Date.now(); + + // emit that the scroll has ended + if (self.ionScrollEnd) { + self.ionScrollEnd(detail); + + } else { + Ionic.emit(this, 'ionScrollEnd', { detail: detail }); + } + } + + + enableJsScroll(contentTop: number, contentBottom: number) { + this.jsScroll = true; + + Ionic.listener.enable(this, 'scroll', false); + + Ionic.listener.enable(this, 'touchstart', true); + + contentTop; contentBottom; + } + + + // Touch Scroll ************************* + + @Listen('touchstart', { passive: true, enabled: false }) + onTouchStart() { + if (!this.enabled) { + return; + } + + Ionic.listener.enable(this, 'touchmove', true); + Ionic.listener.enable(this, 'touchend', true); + + throw 'jsScroll: TODO!'; + } + + @Listen('touchmove', { passive: true, enabled: false }) + onTouchMove() { + if (!this.enabled) { + return; + } + } + + @Listen('touchend', { passive: true, enabled: false }) + onTouchEnd() { + Ionic.listener.enable(this, 'touchmove', false); + Ionic.listener.enable(this, 'touchend', false); + + if (!this.enabled) { + return; + } + } + + + /** + * DOM READ + */ + getTop() { + if (this.jsScroll) { + return this._t; + } + return this._t = this.$el.scrollTop; + } + + /** + * DOM READ + */ + getLeft() { + if (this.jsScroll) { + return 0; + } + return this._l = this.$el.scrollLeft; + } + + /** + * DOM WRITE + */ + setTop(top: number) { + this._t = top; + + if (this.jsScroll) { + this.$el.style.transform = this.$el.style.webkitTransform = `translate3d(${this._l * -1}px,${top * -1}px,0px)`; + + } else { + this.$el.scrollTop = top; + } + } + + /** + * DOM WRITE + */ + setLeft(left: number) { + this._l = left; + + if (this.jsScroll) { + this.$el.style.transform = this.$el.style.webkitTransform = `translate3d(${left * -1}px,${this._t * -1}px,0px)`; + + } else { + this.$el.scrollLeft = left; + } + } + + scrollTo(x: number, y: number, duration: number, done?: Function): Promise { + // scroll animation loop w/ easing + // credit https://gist.github.com/dezinezync/5487119 + + let promise: Promise; + if (done === undefined) { + // only create a promise if a done callback wasn't provided + // done can be a null, which avoids any functions + promise = new Promise(resolve => { + done = resolve; + }); + } + + const self = this; + const el = self.$el; + if (!el) { + // invalid element + done(); + return promise; + } + + if (duration < 32) { + self.setTop(y); + self.setLeft(x); + done(); + return promise; + } + + const fromY = el.scrollTop; + const fromX = el.scrollLeft; + + const maxAttempts = (duration / 16) + 100; + + let startTime: number; + let attempts = 0; + let stopScroll = false; + + // scroll loop + function step(timeStamp: number) { + attempts++; + + if (!self.$el || stopScroll || attempts > maxAttempts) { + self.isScrolling = false; + el.style.transform = el.style.webkitTransform = ''; + done(); + return; + } + + let time = Math.min(1, ((timeStamp - startTime) / duration)); + + // where .5 would be 50% of time on a linear scale easedT gives a + // fraction based on the easing method + let easedT = (--time) * time * time + 1; + + if (fromY !== y) { + self.setTop((easedT * (y - fromY)) + fromY); + } + + if (fromX !== x) { + self.setLeft(Math.floor((easedT * (x - fromX)) + fromX)); + } + + if (easedT < 1) { + // do not use DomController here + // must use nativeRaf in order to fire in the next frame + Ionic.dom.raf(step); + + } else { + stopScroll = true; + self.isScrolling = false; + el.style.transform = el.style.webkitTransform = ''; + done(); + } + } + + // start scroll loop + self.isScrolling = true; + + // chill out for a frame first + Ionic.dom.write(() => { + Ionic.dom.write(timeStamp => { + startTime = timeStamp; + step(timeStamp); + }); + }); + + return promise; + } + + scrollToTop(duration: number): Promise { + return this.scrollTo(0, 0, duration); + } + + scrollToBottom(duration: number): Promise { + let y = 0; + if (this.$el) { + y = this.$el.scrollHeight - this.$el.clientHeight; + } + return this.scrollTo(0, y, duration); + } + + + ionViewDidUnload() { + this.gesture && this.gesture.destroy(); + this.gesture = this.detail = this.detail.event = null; + } + +} + diff --git a/packages/ionic/src/skeleton-text/skeleton-text.scss b/packages/ionic/src/skeleton-text/skeleton-text.scss new file mode 100644 index 0000000000..e31e421c74 --- /dev/null +++ b/packages/ionic/src/skeleton-text/skeleton-text.scss @@ -0,0 +1,18 @@ +@import "../../themes/ionic.globals"; + + +// Skeleton Text +// -------------------------------------------------- + +ion-skeleton-text { + display: inline-block; + width: 100%; + pointer-events: none; + user-select: none; +} + +ion-skeleton-text span { + display: inline-block; + font-size: 0.8rem; + background-color: #ececec; +} \ No newline at end of file diff --git a/packages/ionic/src/skeleton-text/skeleton-text.tsx b/packages/ionic/src/skeleton-text/skeleton-text.tsx new file mode 100644 index 0000000000..7e1f86cc91 --- /dev/null +++ b/packages/ionic/src/skeleton-text/skeleton-text.tsx @@ -0,0 +1,14 @@ +import { Component, h, Prop } from '../index'; + + +@Component({ + tag: 'ion-skeleton-text', + styleUrls: 'skeleton-text.scss' +}) +export class SkeletonText { + @Prop() width: string = '100%'; + + render() { + return ; + } +} diff --git a/packages/ionic/src/slides/slide.scss b/packages/ionic/src/slides/slide.scss new file mode 100644 index 0000000000..fae0044516 --- /dev/null +++ b/packages/ionic/src/slides/slide.scss @@ -0,0 +1,47 @@ +@import "../../themes/ionic.globals"; + + +// Slide +// -------------------------------------------------- + +ion-slide { + width: 100%; + height: 100%; + display: block; +} + +.slide-zoom { + @include text-align(center); + + display: block; + + width: 100%; +} + +.swiper-slide { + @include text-align(center); + + position: relative; + + // Center slide text vertically + display: flex; + + flex-shrink: 0; + + align-items: center; + justify-content: center; + + width: 100%; + height: 100%; + + font-size: 18px; + + box-sizing: border-box; +} + +.swiper-slide img { + width: auto; + max-width: 100%; + height: auto; + max-height: 100%; +} diff --git a/packages/ionic/src/slides/slide.tsx b/packages/ionic/src/slides/slide.tsx new file mode 100644 index 0000000000..8b81bc7649 --- /dev/null +++ b/packages/ionic/src/slides/slide.tsx @@ -0,0 +1,33 @@ +import { Component, h } from '../index'; +import { VNodeData } from '../../util/interfaces'; + + /** + * @name Slide + * @description + * The Slide component is a child component of [Slides](../Slides). The template + * should be written as `ion-slide`. Any slide content should be written + * in this component and it should be used in conjunction with [Slides](../Slides). + * + * See the [Slides API Docs](../Slides) for more usage information. + * + * @demo /docs/demos/src/slides/ + * @see {@link /docs/api/components/slides/Slides/ Slides API Docs} + */ +@Component({ + tag: 'ion-slide', + styleUrls: 'slide.scss' +}) +export class Slide { + hostData(): VNodeData { + return { + class: { + 'slide-zoom': true, + 'swiper-slide': true + } + }; + } + + render() { + return ; + } +} diff --git a/packages/ionic/src/slides/slides-import.scss b/packages/ionic/src/slides/slides-import.scss new file mode 100644 index 0000000000..fa16cf1117 --- /dev/null +++ b/packages/ionic/src/slides/slides-import.scss @@ -0,0 +1,575 @@ +/** + * Swiper 3.4.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * + * http://www.idangero.us/swiper/ + * + * Copyright 2017, Vladimir Kharlampidi + * The iDangero.us + * http://www.idangero.us/ + * + * Licensed under MIT + * + * Released on: March 10, 2017 + */ +.swiper-container { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + /* Fix of Webkit flickering */ + z-index: 1; +} +.swiper-container-no-flexbox .swiper-slide { + float: left; +} +.swiper-container-vertical > .swiper-wrapper { + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -ms-flex-direction: column; + -webkit-flex-direction: column; + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-transition-property: -webkit-transform; + -moz-transition-property: -moz-transform; + -o-transition-property: -o-transform; + -ms-transition-property: -ms-transform; + transition-property: transform; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.swiper-container-android .swiper-slide, +.swiper-wrapper { + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate(0px, 0px); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); +} +.swiper-container-multirow > .swiper-wrapper { + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -ms-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; +} +.swiper-container-free-mode > .swiper-wrapper { + -webkit-transition-timing-function: ease-out; + -moz-transition-timing-function: ease-out; + -ms-transition-timing-function: ease-out; + -o-transition-timing-function: ease-out; + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-slide { + -webkit-flex-shrink: 0; + -ms-flex: 0 0 auto; + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; +} +/* Auto Height */ +.swiper-container-autoheight, +.swiper-container-autoheight .swiper-slide { + height: auto; +} +.swiper-container-autoheight .swiper-wrapper { + -webkit-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + -webkit-transition-property: -webkit-transform, height; + -moz-transition-property: -moz-transform; + -o-transition-property: -o-transform; + -ms-transition-property: -ms-transform; + transition-property: transform, height; +} +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +/* IE10 Windows Phone 8 Fixes */ +.swiper-wp8-horizontal { + -ms-touch-action: pan-y; + touch-action: pan-y; +} +.swiper-wp8-vertical { + -ms-touch-action: pan-x; + touch-action: pan-x; +} +/* Arrows */ +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: 50%; + width: 27px; + height: 44px; + margin-top: -22px; + z-index: 10; + cursor: pointer; + -moz-background-size: 27px 44px; + -webkit-background-size: 27px 44px; + background-size: 27px 44px; + background-position: center; + background-repeat: no-repeat; +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); + left: 10px; + right: auto; +} +.swiper-button-prev.swiper-button-black, +.swiper-container-rtl .swiper-button-next.swiper-button-black { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); +} +.swiper-button-prev.swiper-button-white, +.swiper-container-rtl .swiper-button-next.swiper-button-white { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); +} +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); + right: 10px; + left: auto; +} +.swiper-button-next.swiper-button-black, +.swiper-container-rtl .swiper-button-prev.swiper-button-black { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); +} +.swiper-button-next.swiper-button-white, +.swiper-container-rtl .swiper-button-prev.swiper-button-white { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); +} +/* Pagination Styles */ +.swiper-pagination { + position: absolute; + text-align: center; + -webkit-transition: 300ms; + -moz-transition: 300ms; + -o-transition: 300ms; + transition: 300ms; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-container-horizontal > .swiper-pagination-bullets { + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -moz-appearance: none; + -ms-appearance: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-white .swiper-pagination-bullet { + background: #fff; +} +.swiper-pagination-bullet-active { + opacity: 1; + background: #007aff; +} +.swiper-pagination-white .swiper-pagination-bullet-active { + background: #fff; +} +.swiper-pagination-black .swiper-pagination-bullet-active { + background: #000; +} +.swiper-container-vertical > .swiper-pagination-bullets { + right: 10px; + top: 50%; + -webkit-transform: translate3d(0px, -50%, 0); + -moz-transform: translate3d(0px, -50%, 0); + -o-transform: translate(0px, -50%); + -ms-transform: translate3d(0px, -50%, 0); + transform: translate3d(0px, -50%, 0); +} +.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 5px 0; + display: block; +} +.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 5px; +} +/* Progress */ +.swiper-pagination-progress { + background: rgba(0, 0, 0, 0.25); + position: absolute; +} +.swiper-pagination-progress .swiper-pagination-progressbar { + background: #007aff; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + -webkit-transform-origin: left top; + -moz-transform-origin: left top; + -ms-transform-origin: left top; + -o-transform-origin: left top; + transform-origin: left top; +} +.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar { + -webkit-transform-origin: right top; + -moz-transform-origin: right top; + -ms-transform-origin: right top; + -o-transform-origin: right top; + transform-origin: right top; +} +.swiper-container-horizontal > .swiper-pagination-progress { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.swiper-container-vertical > .swiper-pagination-progress { + width: 4px; + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-progress.swiper-pagination-white { + background: rgba(255, 255, 255, 0.5); +} +.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar { + background: #fff; +} +.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar { + background: #000; +} +/* 3D Container */ +.swiper-container-3d { + -webkit-perspective: 1200px; + -moz-perspective: 1200px; + -o-perspective: 1200px; + perspective: 1200px; +} +.swiper-container-3d .swiper-wrapper, +.swiper-container-3d .swiper-slide, +.swiper-container-3d .swiper-slide-shadow-left, +.swiper-container-3d .swiper-slide-shadow-right, +.swiper-container-3d .swiper-slide-shadow-top, +.swiper-container-3d .swiper-slide-shadow-bottom, +.swiper-container-3d .swiper-cube-shadow { + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + -ms-transform-style: preserve-3d; + transform-style: preserve-3d; +} +.swiper-container-3d .swiper-slide-shadow-left, +.swiper-container-3d .swiper-slide-shadow-right, +.swiper-container-3d .swiper-slide-shadow-top, +.swiper-container-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-container-3d .swiper-slide-shadow-left { + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); + /* Safari 4+, Chrome */ + background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Chrome 10+, Safari 5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Firefox 3.6-15 */ + background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Opera 11.10-12.00 */ + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Firefox 16+, IE10, Opera 12.50+ */ +} +.swiper-container-3d .swiper-slide-shadow-right { + background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); + /* Safari 4+, Chrome */ + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Chrome 10+, Safari 5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Firefox 3.6-15 */ + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Opera 11.10-12.00 */ + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Firefox 16+, IE10, Opera 12.50+ */ +} +.swiper-container-3d .swiper-slide-shadow-top { + background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); + /* Safari 4+, Chrome */ + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Chrome 10+, Safari 5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Firefox 3.6-15 */ + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Opera 11.10-12.00 */ + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Firefox 16+, IE10, Opera 12.50+ */ +} +.swiper-container-3d .swiper-slide-shadow-bottom { + background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); + /* Safari 4+, Chrome */ + background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Chrome 10+, Safari 5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Firefox 3.6-15 */ + background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Opera 11.10-12.00 */ + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + /* Firefox 16+, IE10, Opera 12.50+ */ +} +/* Coverflow */ +.swiper-container-coverflow .swiper-wrapper, +.swiper-container-flip .swiper-wrapper { + /* Windows 8 IE 10 fix */ + -ms-perspective: 1200px; +} +/* Cube + Flip */ +.swiper-container-cube, +.swiper-container-flip { + overflow: visible; +} +.swiper-container-cube .swiper-slide, +.swiper-container-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-container-cube .swiper-slide .swiper-slide, +.swiper-container-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-container-cube .swiper-slide-active, +.swiper-container-flip .swiper-slide-active, +.swiper-container-cube .swiper-slide-active .swiper-slide-active, +.swiper-container-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-container-cube .swiper-slide-shadow-top, +.swiper-container-flip .swiper-slide-shadow-top, +.swiper-container-cube .swiper-slide-shadow-bottom, +.swiper-container-flip .swiper-slide-shadow-bottom, +.swiper-container-cube .swiper-slide-shadow-left, +.swiper-container-flip .swiper-slide-shadow-left, +.swiper-container-cube .swiper-slide-shadow-right, +.swiper-container-flip .swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube */ +.swiper-container-cube .swiper-slide { + visibility: hidden; + -webkit-transform-origin: 0 0; + -moz-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-container-cube.swiper-container-rtl .swiper-slide { + -webkit-transform-origin: 100% 0; + -moz-transform-origin: 100% 0; + -ms-transform-origin: 100% 0; + transform-origin: 100% 0; +} +.swiper-container-cube .swiper-slide-active, +.swiper-container-cube .swiper-slide-next, +.swiper-container-cube .swiper-slide-prev, +.swiper-container-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +.swiper-container-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; +} +/* Fade */ +.swiper-container-fade.swiper-container-free-mode .swiper-slide { + -webkit-transition-timing-function: ease-out; + -moz-transition-timing-function: ease-out; + -ms-transition-timing-function: ease-out; + -o-transition-timing-function: ease-out; + transition-timing-function: ease-out; +} +.swiper-container-fade .swiper-slide { + pointer-events: none; + -webkit-transition-property: opacity; + -moz-transition-property: opacity; + -o-transition-property: opacity; + transition-property: opacity; +} +.swiper-container-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-container-fade .swiper-slide-active, +.swiper-container-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-zoom-container { + width: 100%; + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-box-pack: center; + -moz-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -moz-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0, 0, 0, 0.1); +} +.swiper-container-horizontal > .swiper-scrollbar { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; +} +.swiper-container-vertical > .swiper-scrollbar { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0, 0, 0, 0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +/* Preloader */ +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + -webkit-transform-origin: 50%; + -moz-transform-origin: 50%; + transform-origin: 50%; + -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite; + -moz-animation: swiper-preloader-spin 1s steps(12, end) infinite; + animation: swiper-preloader-spin 1s steps(12, end) infinite; +} +.swiper-lazy-preloader:after { + display: block; + content: ""; + width: 100%; + height: 100%; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); + background-position: 50%; + -webkit-background-size: 100%; + background-size: 100%; + background-repeat: no-repeat; +} +.swiper-lazy-preloader-white:after { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); +} +@-webkit-keyframes swiper-preloader-spin { + 100% { + -webkit-transform: rotate(360deg); + } +} +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); + } +} diff --git a/packages/ionic/src/slides/slides.scss b/packages/ionic/src/slides/slides.scss new file mode 100644 index 0000000000..e92ae46dc6 --- /dev/null +++ b/packages/ionic/src/slides/slides.scss @@ -0,0 +1,11 @@ +@import "../../themes/ionic.globals"; +@import "./slides-import"; + + +// Slides +// -------------------------------------------------- + + +ion-slides { + display: block; +} diff --git a/packages/ionic/src/slides/slides.tsx b/packages/ionic/src/slides/slides.tsx new file mode 100644 index 0000000000..56f1c6b870 --- /dev/null +++ b/packages/ionic/src/slides/slides.tsx @@ -0,0 +1,524 @@ +import { Component, h, Ionic, Prop } from '../index'; +import { Swiper } from '../../vendor/swiper'; + +/** + * @name Slides + * @description + * The Slides component is a multi-section container. Each section can be swiped + * or dragged between. It contains any number of [Slide](../Slide) components. + * + * + * Adopted from Swiper.js: + * The most modern mobile touch slider and framework with + * hardware accelerated transitions. + * + * http://www.idangero.us/swiper/ + * + * Copyright 2016, Vladimir Kharlampidi + * The iDangero.us + * http://www.idangero.us/ + * + * Licensed under MIT + */ + + +@Component({ + tag: 'ion-slides', + styleUrls: 'slides.scss' +}) +export class Slides { + swiper: any; + $el: HTMLElement; + + /** + * @input {string} The animation effect of the slides. + * Possible values are: `slide`, `fade`, `cube`, `coverflow` or `flip`. + * Default: `slide`. + */ + @Prop() effect: string = 'slide'; + + /** + * @input {number} Delay between transitions (in milliseconds). If this + * parameter is not passed, autoplay is disabled. Default does + * not have a value and does not autoplay. + * Default: `null`. + */ + @Prop() autoplay: number; + + /** + * @input {Slides} Pass another Slides instance or array of Slides instances + * that should be controlled by this Slides instance. + * Default: `null`. + */ + @Prop() control: Slides | Slides[] = null; + + /** + * @input {string} Swipe direction: 'horizontal' or 'vertical'. + * Default: `horizontal`. + */ + @Prop() direction: 'horizontal' | 'vertical' = 'horizontal'; + + /** + * @input {number} Index number of initial slide. Default: `0`. + */ + @Prop() initialSlide: number = 0; + + /** + * @input {boolean} If true, continuously loop from the last slide to the + * first slide. + */ + @Prop() loop: boolean = false; + + /** + * @input {boolean} If true, show the pager. + */ + @Prop() pager: boolean; + + /** + * @input {string} Type of pagination. Possible values are: + * `bullets`, `fraction`, `progress`. Default: `bullets`. + * (Note that the pager will not show unless `pager` input + * is set to true). + */ + @Prop() paginationType: string = 'bullets'; + + + /** + * @input {boolean} If true, allows you to use "parallaxed" elements inside of + * slider. + */ + @Prop() parallax: boolean = false; + + /** + * @input {number} Slides per view. Slides visible at the same time. Default: `1`. + */ + @Prop() slidesPerView: number | 'auto' = 1; + + /** + * @input {number} Distance between slides in px. Default: `0`. + */ + @Prop() spaceBetween: number = 0; + + /** + * @input {number} Duration of transition between slides + * (in milliseconds). Default: `300`. + */ + @Prop() speed: number = 300; + + + /** + * @input {boolean} If true, enables zooming functionality. + */ + @Prop() zoom: boolean; + + /** + * @input {boolean} If true, enables keyboard control + */ + @Prop() keyboardControl: boolean; + + + render() { + return ( + + + + + + + ); + } + + /** + * @hidden + * Height of container. + */ + height: number; + + /** + * @hidden + * Width of container. + */ + width: number; + + /** + * @hidden + * Enabled this option and swiper will be operated as usual except it will + * not move, real translate values on wrapper will not be set. Useful when + * you may need to create custom slide transition. + */ + virtualTranslate = false; + + /** + * @hidden + * Set to true to round values of slides width and height to prevent blurry + * texts on usual resolution screens (if you have such) + */ + roundLengths = false; + + // Slides grid + + /** + * @hidden + */ + originalEvent: any; + + emitEvent(eventName: string) { + return (data: any) => { + Ionic.emit(this, eventName, data); + }; + } + + + /** + * Private properties only useful to this class. + * ------------------------------------ + */ + private _init: boolean; + private _tmr: number; + + /** + * Properties that are exposed publically but no docs. + * ------------------------------------ + */ + /** @hidden */ + container: HTMLElement; + /** @hidden */ + id: number; + /** @hidden */ + renderedHeight: number; + /** @hidden */ + renderedWidth: number; + /** @hidden */ + slideId: string; + /** @hidden */ + swipeDirection: string; + /** @hidden */ + velocity: number; + + + /** + * Properties which are for internal use only + * and not exposed to the public + * ------------------------------------ + */ + + /** @hidden */ + nextButton: HTMLElement; + /** @hidden */ + prevButton: HTMLElement; + + + + constructor( + ) { + this.id = ++slidesId; + this.slideId = 'slides-' + this.id; + } + + private _initSlides() { + if (!this._init) { + console.debug(`ion-slides, init`); + + this.container = this.$el.children[0] as HTMLElement; + + var swiperOptions = { + height: this.height, + width: this.width, + virtualTranslate: this.virtualTranslate, + roundLengths: this.roundLengths, + originalEvent: this.originalEvent, + autoplay: this.autoplay, + direction: this.direction, + initialSlide: this.initialSlide, + loop: this.loop, + pager: this.pager, + paginationType: this.paginationType, + parallax: this.parallax, + slidesPerView: this.slidesPerView, + spaceBetween: this.spaceBetween, + speed: this.speed, + zoom: this.zoom, + slidesPerColumn: 1, + slidesPerColumnFill: 'column', + slidesPerGroup: 1, + centeredSlides: false, + slidesOffsetBefore: 0, + slidesOffsetAfter: 0, + touchEventsTarget: 'container', + autoplayDisableOnInteraction: true, + autoplayStopOnLast: false, + freeMode: false, + freeModeMomentum: true, + freeModeMomentumRatio: 1, + freeModeMomentumBounce: true, + freeModeMomentumBounceRatio: 1, + freeModeMomentumVelocityRatio: 1, + freeModeSticky: false, + freeModeMinimumVelocity: 0.02, + autoHeight: false, + setWrapperSize: false, + zoomMax: 3, + zoomMin: 1, + zoomToggle: true, + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + onlyExternal: false, + threshold: 0, + touchMoveStopPropagation: true, + touchReleaseOnEdges: false, + iOSEdgeSwipeDetection: false, + iOSEdgeSwipeThreshold: 20, + paginationClickable: false, + paginationHide: false, + resistance: true, + resistanceRatio: 0.85, + watchSlidesProgress: false, + watchSlidesVisibility: false, + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + loopAdditionalSlides: 0, + noSwiping: true, + runCallbacksOnInit: true, + controlBy: 'slide', + controlInverse: false, + keyboardControl: true, + coverflow: { + rotate: 50, + stretch: 0, + depth: 100, + modifier: 1, + slideShadows: true + }, + flip: { + slideShadows: true, + limitRotation: true + }, + cube: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + }, + fade: { + crossFade: false + }, + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + onSlideChangeStart: this.emitEvent('ionSlideWillChange'), + onSlideChangeEnd: this.emitEvent('ionSlideDidChange'), + onAutoplay: this.emitEvent('ionSlideAutoplay'), + onAutoplayStart: this.emitEvent('ionSlideAutoplayStart'), + onAutoplayStop: this.emitEvent('ionSlideAutoplayStop'), + onSlideNextStart: this.emitEvent('ionSlideNextStarto'), + onSlidePrevStart: this.emitEvent('ionSlidePrevStart'), + onSlideNextEnd: this.emitEvent('ionSlideNextEnd'), + onSlidePrevEnd: this.emitEvent('ionSlidePrevEnd'), + onTransitionStart: this.emitEvent('ionSlideTransitionStart'), + onTransitionEnd: this.emitEvent('ionSlideTransitionEnd'), + onTap: this.emitEvent('ionSlideTap'), + onDoubleTap: this.emitEvent('ionSlideDoubleTap'), + onProgress: this.emitEvent('ionSlideProgress'), + onSliderMove: this.emitEvent('ionSlideDrag'), + onReachBeginning: this.emitEvent('ionSlideReachStart'), + onReachEnd: this.emitEvent('ionSlideReachEnd'), + onTouchStart: this.emitEvent('ionSlideTouchStart'), + onTouchEnd: this.emitEvent('ionSlideTouchEnd') + }; + + // init swiper core + this.swiper = new Swiper(this.container, swiperOptions); + + if (this.keyboardControl) { + // init keyboard event listeners + this.enableKeyboardControl(true); + } + + this._init = true; + } + } + + /** + * @hidden + */ + ionViewDidLoad() { + /** + * TODO: This should change because currently ionViewDidLoad fires independent of whether the + * child components are ready. + */ + setTimeout(() => { + this._initSlides(); + }, 10); + } + + /** + * Update the underlying slider implementation. Call this if you've added or removed + * child slides. + */ + update(debounce = 300) { + if (this._init) { + window.clearTimeout(this._tmr); + this._tmr = window.setTimeout(() => { + this.swiper.update(); + + // Don't allow pager to show with > 10 slides + if (this.length() > 10) { + this.paginationType = undefined; + } + }, debounce); + } + } + + /** + * Transition to the specified slide. + * + * @param {number} index The index number of the slide. + * @param {number} [speed] Transition duration (in ms). + * @param {boolean} [runCallbacks] Whether or not to emit the `ionSlideWillChange`/`ionSlideDidChange` events. Default true. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean) { + this.swiper.slideTo(index, speed, runCallbacks); + } + + /** + * Transition to the next slide. + * + * @param {number} [speed] Transition duration (in ms). + * @param {boolean} [runCallbacks] Whether or not to emit the `ionSlideWillChange`/`ionSlideDidChange` events. Default true. + */ + slideNext(speed?: number, runCallbacks?: boolean) { + this.swiper.slideNext(runCallbacks, speed); + } + + /** + * Transition to the previous slide. + * + * @param {number} [speed] Transition duration (in ms). + * @param {boolean} [runCallbacks] Whether or not to emit the `ionSlideWillChange`/`ionSlideDidChange` events. Default true. + */ + slidePrev(speed?: number, runCallbacks?: boolean) { + this.swiper.slidePrev(runCallbacks, speed); + } + + /** + * Get the index of the active slide. + * + * @returns {number} The index number of the current slide. + */ + getActiveIndex(): number { + return this.swiper.activeIndex; + } + + /** + * Get the index of the previous slide. + * + * @returns {number} The index number of the previous slide. + */ + getPreviousIndex(): number { + return this.swiper.previousIndex; + } + + /** + * Get the total number of slides. + * + * @returns {number} The total number of slides. + */ + length(): number { + return this.swiper.slides.length; + } + + /** + * Get whether or not the current slide is the last slide. + * + * @returns {boolean} If the slide is the last slide or not. + */ + isEnd(): boolean { + return this.isEnd(); + } + + /** + * Get whether or not the current slide is the first slide. + * + * @returns {boolean} If the slide is the first slide or not. + */ + isBeginning(): boolean { + return this.isBeginning(); + } + + /** + * Start auto play. + */ + startAutoplay() { + this.swiper.startAutoplay(); + } + + /** + * Stop auto play. + */ + stopAutoplay() { + this.swiper.stopAutoplay(); + } + + /** + * Lock or unlock the ability to slide to the next slides. + */ + lockSwipeToNext(shouldLockSwipeToNext: boolean) { + if (shouldLockSwipeToNext) { + return this.swiper.lockSwipeToNext(); + } + this.swiper.unlockSwipeToNext(); + } + + /** + * Lock or unlock the ability to slide to the previous slides. + */ + lockSwipeToPrev(shouldLockSwipeToPrev: boolean) { + if (shouldLockSwipeToPrev) { + return this.swiper.lockSwipeToPrev(); + } + this.swiper.unlockSwipeToPrev(); + } + + /** + * Lock or unlock the ability to slide to change slides. + */ + lockSwipes(shouldLockSwipes: boolean) { + if (shouldLockSwipes) { + return this.swiper.lockSwipes(); + } + this.swiper.unlockSwipes(); + } + + /** + * Enable or disable keyboard control. + */ + enableKeyboardControl(shouldEnableKeyboard: boolean) { + if (shouldEnableKeyboard) { + return this.swiper.enableKeyboardControl(); + } + this.swiper.disableKeyboardControl(); + } + + /** + * @hidden + */ + ionViewDidUnload() { + this._init = false; + + this.swiper.destroy(true, true); + this.enableKeyboardControl(false); + } +} + +let slidesId = -1; diff --git a/packages/ionic/src/spinner/spinner-configs.ts b/packages/ionic/src/spinner/spinner-configs.ts new file mode 100644 index 0000000000..aa7a5d4034 --- /dev/null +++ b/packages/ionic/src/spinner/spinner-configs.ts @@ -0,0 +1,125 @@ + + +export const SPINNERS: SpinnerConfigs = { + + lines: { + dur: 1000, + lines: 12, + fn: (dur: number, index: number, total: number) => { + const transform = 'rotate(' + (30 * index + (index < 6 ? 180 : -180)) + 'deg)'; + const animationDelay = -(dur - ((dur / total) * index)) + 'ms'; + return { + y1: 17, + y2: 29, + style: { + transform: transform, + webkitTransform: transform, + animationDelay: animationDelay, + webkitAnimationDelay: animationDelay + } + }; + } + }, + + 'lines-sm': { + dur: 1000, + lines: 12, + fn: (dur: number, index: number, total: number) => { + const transform = 'rotate(' + (30 * index + (index < 6 ? 180 : -180)) + 'deg)'; + const animationDelay = -(dur - ((dur / total) * index)) + 'ms'; + return { + y1: 12, + y2: 20, + style: { + transform: transform, + webkitTransform: transform, + animationDelay: animationDelay, + webkitAnimationDelay: animationDelay + } + }; + } + }, + + bubbles: { + dur: 1000, + circles: 9, + fn: (dur: number, index: number, total: number) => { + const animationDelay = -(dur - ((dur / total) * index)) + 'ms'; + return { + r: 5, + style: { + top: (9 * Math.sin(2 * Math.PI * index / total)) + 'px', + left: (9 * Math.cos(2 * Math.PI * index / total)) + 'px', + animationDelay: animationDelay, + webkitAnimationDelay: animationDelay + } + }; + } + }, + + circles: { + dur: 1000, + circles: 8, + fn: (dur: number, index: number, total: number) => { + const animationDelay = -(dur - ((dur / total) * index)) + 'ms'; + return { + r: 5, + style: { + top: (9 * Math.sin(2 * Math.PI * index / total)) + 'px', + left: (9 * Math.cos(2 * Math.PI * index / total)) + 'px', + animationDelay: animationDelay, + webkitAnimationDelay: animationDelay + } + }; + } + }, + + crescent: { + dur: 750, + circles: 1, + fn: () => { + return { + r: 26, + style: {} + }; + } + }, + + dots: { + dur: 750, + circles: 3, + fn: (dur: number, index: number) => { + const animationDelay = -(110 * index) + 'ms'; dur; + return { + r: 6, + style: { + left: (9 - (9 * index)) + 'px', + animationDelay: animationDelay, + webkitAnimationDelay: animationDelay + } + }; + } + } + +}; + + +export interface SpinnerConfigs { + [spinnerName: string]: SpinnerConfig; +} + + +export interface SpinnerConfig { + dur: number; + circles?: number; + lines?: number; + fn: (dur: number, index: number, total: number) => SpinnerData; +} + + +export interface SpinnerData { + r?: number; + y1?: number; + y2?: number; + style: any; +} diff --git a/packages/ionic/src/spinner/spinner.ios.scss b/packages/ionic/src/spinner/spinner.ios.scss new file mode 100644 index 0000000000..1225591a23 --- /dev/null +++ b/packages/ionic/src/spinner/spinner.ios.scss @@ -0,0 +1,67 @@ +@import "../../themes/ionic.globals.ios"; +@import "./spinner"; + + +// iOS Spinner +// -------------------------------------------------- + +/// @prop - Color of the ios spinner +$spinner-ios-ios-color: #69717d !default; + +/// @prop - Color of the bubbles spinner +$spinner-ios-bubbles-color: #000 !default; + +/// @prop - Color of the circles spinner +$spinner-ios-circles-color: #69717d !default; + +/// @prop - Color of the crescent spinner +$spinner-ios-crescent-color: #000 !default; + +/// @prop - Color of the dots spinner +$spinner-ios-dots-color: #444 !default; + + +.spinner-lines-ios line, +.spinner-lines-sm-ios line { + stroke: $spinner-ios-ios-color; +} + +.spinner-bubbles-ios circle { + fill: $spinner-ios-bubbles-color; +} + +.spinner-circles-ios circle { + fill: $spinner-ios-circles-color; +} + +.spinner-crescent-ios circle { + stroke: $spinner-ios-crescent-color; +} + +.spinner-dots-ios circle { + fill: $spinner-ios-dots-color; +} + + +// Generate iOS Spinner Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .spinner-ios-#{$color-name} { + + &.spinner-lines line, + &.spinner-lines-sm line, + &.spinner-crescent circle { + stroke: $color-base; + } + + &.spinner-bubbles circle, + &.spinner-circles circle, + &.spinner-dots circle { + fill: $color-base; + } + + } + +} diff --git a/packages/ionic/src/spinner/spinner.md.scss b/packages/ionic/src/spinner/spinner.md.scss new file mode 100644 index 0000000000..df524152d1 --- /dev/null +++ b/packages/ionic/src/spinner/spinner.md.scss @@ -0,0 +1,67 @@ +@import "../../themes/ionic.globals.md"; +@import "./spinner"; + + +// Material Design Spinner +// -------------------------------------------------- + +/// @prop - Color of the ios spinner +$spinner-md-ios-color: #69717d !default; + +/// @prop - Color of the bubbles spinner +$spinner-md-bubbles-color: #000 !default; + +/// @prop - Color of the circles spinner +$spinner-md-circles-color: #69717d !default; + +/// @prop - Color of the crescent spinner +$spinner-md-crescent-color: #000 !default; + +/// @prop - Color of the dots spinner +$spinner-md-dots-color: #444 !default; + + +.spinner-lines-md line, +.spinner-lines-sm-md line { + stroke: $spinner-md-ios-color; +} + +.spinner-bubbles-md circle { + fill: $spinner-md-bubbles-color; +} + +.spinner-circles-md circle { + fill: $spinner-md-circles-color; +} + +.spinner-crescent-md circle { + stroke: $spinner-md-crescent-color; +} + +.spinner-dots-md circle { + fill: $spinner-md-dots-color; +} + + +// Generate Material Design Spinner Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .spinner-md-#{$color-name} { + + &.spinner-lines line, + &.spinner-lines-sm line, + &.spinner-crescent circle { + stroke: $color-base; + } + + &.spinner-bubbles circle, + &.spinner-circles circle, + &.spinner-dots circle { + fill: $color-base; + } + + } + +} diff --git a/packages/ionic/src/spinner/spinner.scss b/packages/ionic/src/spinner/spinner.scss new file mode 100644 index 0000000000..405ce3024d --- /dev/null +++ b/packages/ionic/src/spinner/spinner.scss @@ -0,0 +1,113 @@ +@import "../../themes/ionic.globals"; + + +// Spinners +// -------------------------------------------------- + +ion-spinner { + position: relative; + display: inline-block; + + width: 28px; + height: 28px; +} + +ion-spinner svg { + @include position(0, null, null, 0); + + position: absolute; + + width: 100%; + height: 100%; + + transform: translateZ(0); +} + +ion-spinner.spinner-paused svg { + animation-play-state: paused; +} + + +// Spinner: lines / lines-sm +// -------------------------------------------------- + +.spinner-lines line, +.spinner-lines-sm line { + stroke-width: 4px; + stroke-linecap: round; +} + +.spinner-lines svg, +.spinner-lines-sm svg { + animation: spinner-fade-out 1s linear infinite; +} + + +// Spinner: bubbles +// -------------------------------------------------- + +.spinner-bubbles svg { + animation: spinner-scale-out 1s linear infinite; +} + + +// Spinner: circles +// -------------------------------------------------- + +.spinner-circles svg { + animation: spinner-fade-out 1s linear infinite; +} + + +// Spinner: crescent +// -------------------------------------------------- + +.spinner-crescent circle { + fill: transparent; + stroke-width: 4px; + stroke-dasharray: 128px; + stroke-dashoffset: 82px; +} + +.spinner-crescent svg { + animation: spinner-rotate 1s linear infinite; +} + + +// Spinner: dots +// -------------------------------------------------- + +.spinner-dots circle { + stroke-width: 0; +} + +.spinner-dots svg { + @include transform-origin(center); + + animation: spinner-dots 1s linear infinite; +} + + +// Animation Keyframes +// -------------------------------------------------- + +@keyframes spinner-fade-out { + 0% { opacity: 1; } + 100% { opacity: 0; } +} + +@keyframes spinner-scale-out { + 0% { transform: scale(1, 1); } + 100% { transform: scale(0, 0); } +} + +@keyframes spinner-rotate { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +@keyframes spinner-dots { + 0% { opacity: .9; transform: scale(1, 1); } + 50% { opacity: .3; transform: scale(.4, .4); } + 100% { opacity: .9; transform: scale(1, 1); } +} diff --git a/packages/ionic/src/spinner/spinner.tsx b/packages/ionic/src/spinner/spinner.tsx new file mode 100644 index 0000000000..7af1e18a6b --- /dev/null +++ b/packages/ionic/src/spinner/spinner.tsx @@ -0,0 +1,116 @@ +import { Component, h, Ionic, Prop } from '../index'; +import { SPINNERS, SpinnerConfig } from './spinner-configs'; +import { createThemedClasses } from '../../util/theme'; +import { VNodeData } from '../../util/interfaces'; + + +@Component({ + tag: 'ion-spinner', + styleUrls: { + ios: 'spinner.ios.scss', + md: 'spinner.md.scss', + wp: 'spinner.wp.scss' + } +}) +export class Spinner { + + @Prop() mode: string; + @Prop() color: string; + @Prop() duration: number = null; + @Prop() name: string; + @Prop() paused: boolean = false; + + + ionViewDidLoad() { + if (this.name === 'ios') { + // deprecation warning, renamed in v4 + console.warn(`spinner "ios" has been renamed to "lines"`); + + } else if (this.name === 'ios-small') { + // deprecation warning, renamed in v4 + console.warn(`spinner "ios-small" has been renamed to "lines-sm"`); + } + } + + hostData(): VNodeData { + const spinnerThemedClasses = createThemedClasses(this.mode, this.color, `spinner spinner-${this.name}`); + spinnerThemedClasses['spinner-paused'] = true; + + return { + class: spinnerThemedClasses + }; + } + + render() { + let name = this.name || Ionic.config.get('spinner', 'lines'); + if (name === 'ios') { + name = this.name = 'lines'; + + } else if (this.name === 'ios-small') { + name = this.name = 'lines-sm'; + } + + const spinner = SPINNERS[name] || SPINNERS['lines']; + + const duration = (typeof this.duration === 'number' && this.duration > 10 ? this.duration : spinner.dur); + + const svgs: any[] = []; + + let i = 0; + let l = 0; + + if (spinner.circles) { + for (i = 0, l = spinner.circles; i < l; i++) { + svgs.push(buildCircle(spinner, duration, i, l)); + } + + } else if (spinner.lines) { + for (i = 0, l = spinner.lines; i < l; i++) { + svgs.push(buildLine(spinner, duration, i, l)); + } + } + + return svgs; + } +} + + +function buildCircle(spinner: SpinnerConfig, duration: number, index: number, total: number) { + const data = spinner.fn(duration, index, total); + data.style.animationDuration = duration + 'ms'; + + return h('svg', { + attrs: { + 'viewBox': '0 0 64 64' + }, + style: data.style + }, + h('circle', { + attrs: { + 'r': data.r, + 'transform': 'translate(32,32)' + } + }) + ); +} + + +function buildLine(spinner: SpinnerConfig, duration: number, index: number, total: number) { + const data = spinner.fn(duration, index, total); + data.style.animationDuration = duration + 'ms'; + + return h('svg', { + attrs: { + 'viewBox': '0 0 64 64' + }, + style: data.style + }, + h('line', { + attrs: { + 'y1': data.y1, + 'y2': data.y2, + 'transform': 'translate(32,32)' + } + }) + ); +} diff --git a/packages/ionic/src/spinner/spinner.wp.scss b/packages/ionic/src/spinner/spinner.wp.scss new file mode 100644 index 0000000000..5c9efdf75e --- /dev/null +++ b/packages/ionic/src/spinner/spinner.wp.scss @@ -0,0 +1,67 @@ +@import "../../themes/ionic.globals.wp"; +@import "./spinner"; + + +// Windows Spinner +// -------------------------------------------------- + +/// @prop - Color of the ios spinner +$spinner-wp-ios-color: #69717d !default; + +/// @prop - Color of the bubbles spinner +$spinner-wp-bubbles-color: #000 !default; + +/// @prop - Color of the circles spinner +$spinner-wp-circles-color: #69717d !default; + +/// @prop - Color of the crescent spinner +$spinner-wp-crescent-color: #000 !default; + +/// @prop - Color of the dots spinner +$spinner-wp-dots-color: #444 !default; + + +.spinner-lines-wp line, +.spinner-lines-sm-wp line { + stroke: $spinner-wp-ios-color; +} + +.spinner-bubbles-wp circle { + fill: $spinner-wp-bubbles-color; +} + +.spinner-circles-wp circle { + fill: $spinner-wp-circles-color; +} + +.spinner-crescent-wp circle { + stroke: $spinner-wp-crescent-color; +} + +.spinner-dots-wp circle { + fill: $spinner-wp-dots-color; +} + + +// Generate Windows Spinner Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .spinner-wp-#{$color-name} { + + &.spinner-lines line, + &.spinner-lines-sm line, + &.spinner-crescent circle { + stroke: $color-base; + } + + &.spinner-bubbles circle, + &.spinner-circles circle, + &.spinner-dots circle { + fill: $color-base; + } + + } + +} diff --git a/packages/ionic/src/thumbnail/thumbnail.ios.scss b/packages/ionic/src/thumbnail/thumbnail.ios.scss new file mode 100644 index 0000000000..c8b40bfd5d --- /dev/null +++ b/packages/ionic/src/thumbnail/thumbnail.ios.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.ios"; +@import "./thumbnail"; + + +// iOS Thumbnail +// -------------------------------------------------- diff --git a/packages/ionic/src/thumbnail/thumbnail.md.scss b/packages/ionic/src/thumbnail/thumbnail.md.scss new file mode 100644 index 0000000000..e03360d188 --- /dev/null +++ b/packages/ionic/src/thumbnail/thumbnail.md.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.md"; +@import "./thumbnail"; + + +// Material Design Thumbnail +// -------------------------------------------------- diff --git a/packages/ionic/src/thumbnail/thumbnail.scss b/packages/ionic/src/thumbnail/thumbnail.scss new file mode 100644 index 0000000000..1297c3c755 --- /dev/null +++ b/packages/ionic/src/thumbnail/thumbnail.scss @@ -0,0 +1,9 @@ +@import "../../themes/ionic.globals"; + + +// Thumbnail +// -------------------------------------------------- + +ion-thumbnail { + display: block; +} diff --git a/packages/ionic/src/thumbnail/thumbnail.tsx b/packages/ionic/src/thumbnail/thumbnail.tsx new file mode 100644 index 0000000000..9a8c6dad41 --- /dev/null +++ b/packages/ionic/src/thumbnail/thumbnail.tsx @@ -0,0 +1,19 @@ +import { Component, h } from '../index'; + + +@Component({ + tag: 'ion-thumbnail', + styleUrls: { + ios: 'thumbnail.ios.scss', + md: 'thumbnail.md.scss', + wp: 'thumbnail.wp.scss' + }, + host: { + theme: 'thumbnail' + } +}) +export class Thumbnail { + render() { + return ; + } +} diff --git a/packages/ionic/src/thumbnail/thumbnail.wp.scss b/packages/ionic/src/thumbnail/thumbnail.wp.scss new file mode 100644 index 0000000000..3c48ee8b70 --- /dev/null +++ b/packages/ionic/src/thumbnail/thumbnail.wp.scss @@ -0,0 +1,6 @@ +@import "../../themes/ionic.globals.wp"; +@import "./thumbnail"; + + +// Windows Thumbnail +// -------------------------------------------------- diff --git a/packages/ionic/src/title/title.ios.scss b/packages/ionic/src/title/title.ios.scss new file mode 100644 index 0000000000..550858fa9a --- /dev/null +++ b/packages/ionic/src/title/title.ios.scss @@ -0,0 +1,51 @@ +@import "../../themes/ionic.globals.ios"; +@import "./title"; + + +// iOS Title +// -------------------------------------------------- + +/// @prop - Font size of the toolbar title +$toolbar-ios-title-font-size: 1.7rem !default; + +/// @prop - Font weight of the toolbar title +$toolbar-ios-title-font-weight: 600 !default; + +/// @prop - Text alignment of the toolbar title +$toolbar-ios-title-text-align: center !default; + +/// @prop - Text color of the toolbar title +$toolbar-ios-title-text-color: color-contrast($colors-ios, $toolbar-ios-background) !default; + + +.toolbar-ios ion-title { + @include position(0, null, null, 0); + @include padding(0, 90px, 1px); + + position: absolute; + + width: 100%; + height: 100%; + + transform: translateZ(0); + + pointer-events: none; +} + +.toolbar-title-ios { + @include text-align($toolbar-ios-title-text-align); + + font-size: $toolbar-ios-title-font-size; + font-weight: $toolbar-ios-title-font-weight; + color: $toolbar-ios-title-text-color; + + pointer-events: auto; +} + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + .toolbar-#{$color-name} .toolbar-title-ios { + color: $color-contrast; + } + +} diff --git a/packages/ionic/src/title/title.md.scss b/packages/ionic/src/title/title.md.scss new file mode 100644 index 0000000000..3333564703 --- /dev/null +++ b/packages/ionic/src/title/title.md.scss @@ -0,0 +1,29 @@ +@import "../../themes/ionic.globals.md"; +@import "./title"; + + +// Material Design Title +// -------------------------------------------------- + +/// @prop - Font size of the toolbar title +$toolbar-md-title-font-size: 2rem !default; + +/// @prop - Text color of the toolbar title +$toolbar-md-title-text-color: color-contrast($colors-md, $toolbar-md-background, md) !default; + + +.toolbar-title-md { + @include padding(0, 12px); + + font-size: $toolbar-md-title-font-size; + font-weight: 500; + color: $toolbar-md-title-text-color; +} + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + + .toolbar-#{$color-name} .toolbar-title-md { + color: $color-contrast; + } + +} diff --git a/packages/ionic/src/title/title.scss b/packages/ionic/src/title/title.scss new file mode 100644 index 0000000000..19bef4180b --- /dev/null +++ b/packages/ionic/src/title/title.scss @@ -0,0 +1,24 @@ +@import "../../themes/ionic.globals"; + + +// Title +// -------------------------------------------------- + +ion-title { + display: flex; + + flex: 1; + align-items: center; + + transform: translateZ(0); +} + +.toolbar-title { + display: block; + overflow: hidden; + + width: 100%; + + text-overflow: ellipsis; + white-space: nowrap; +} diff --git a/packages/ionic/src/title/title.tsx b/packages/ionic/src/title/title.tsx new file mode 100644 index 0000000000..9f9bb4cf65 --- /dev/null +++ b/packages/ionic/src/title/title.tsx @@ -0,0 +1,63 @@ +import { Component, Prop, h } from '../index'; +import { createThemedClasses } from '../../util/theme'; + +/** + * @name Title + * @description + * `ion-title` is a component that sets the title of the `Toolbar` or `Navbar`. + * + * @usage + * + * ```html + * + * + * + * Settings + * + * + * + * ``` + * + * Or to create a navbar with a toolbar as a subheader: + * + * ```html + * + * + * + * Main Header + * + * + * + * Subheader + * + * + * + * ``` + * + * @demo /docs/demos/src/title/ + */ +@Component({ + tag: 'ion-title', + styleUrls: { + ios: 'title.ios.scss', + md: 'title.md.scss', + wp: 'title.wp.scss' + }, + host: { + theme: 'title' + } +}) +export class ToolbarTitle { + mode: string; + color: string; + + render() { + const titleClasses = createThemedClasses(this.mode, this.color, 'toolbar-title'); + + return [ + + + + ]; + } +} diff --git a/packages/ionic/src/title/title.wp.scss b/packages/ionic/src/title/title.wp.scss new file mode 100644 index 0000000000..f246704b91 --- /dev/null +++ b/packages/ionic/src/title/title.wp.scss @@ -0,0 +1,53 @@ +@import "../../themes/ionic.globals.wp"; +@import "./title"; + + +// Windows Title +// -------------------------------------------------- + +// deprecated +$toolbar-wp-title-padding: null !default; + +/// @prop - Padding top of the toolbar title +$toolbar-wp-title-padding-top: 0 !default; + +/// @prop - Padding end of the toolbar title +$toolbar-wp-title-padding-end: 6px !default; + +/// @prop - Padding bottom of the toolbar title +$toolbar-wp-title-padding-bottom: $toolbar-wp-title-padding-top !default; + +/// @prop - Padding start of the toolbar title +$toolbar-wp-title-padding-start: $toolbar-wp-title-padding-end !default; + +/// @prop - Font size of the toolbar title +$toolbar-wp-title-font-size: 1.5rem !default; + +/// @prop - Font weight of the toolbar title +$toolbar-wp-title-font-weight: bold !default; + +/// @prop - Text transform of the toolbar title +$toolbar-wp-title-text-transform: uppercase !default; + +/// @prop - Text color of the toolbar title +$toolbar-wp-title-text-color: color-contrast($colors-wp, $toolbar-wp-background, wp) !default; + + +.toolbar-title-wp { + font-size: $toolbar-wp-title-font-size; + font-weight: $toolbar-wp-title-font-weight; + text-transform: $toolbar-wp-title-text-transform; + color: $toolbar-wp-title-text-color; + + @include deprecated-variable(padding, $toolbar-wp-title-padding) { + @include padding($toolbar-wp-title-padding-top, $toolbar-wp-title-padding-end, $toolbar-wp-title-padding-bottom, $toolbar-wp-title-padding-start); + } +} + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + .toolbar-#{$color-name} .toolbar-title-wp { + color: $color-contrast; + } + +} diff --git a/packages/ionic/src/toggle/toggle.ios.scss b/packages/ionic/src/toggle/toggle.ios.scss new file mode 100644 index 0000000000..0115369f3f --- /dev/null +++ b/packages/ionic/src/toggle/toggle.ios.scss @@ -0,0 +1,253 @@ +@import "../../themes/ionic.globals.ios"; +@import "./toggle"; + + +// iOS Toggle +// -------------------------------------------------- + +/// @prop - Width of the toggle +$toggle-ios-width: 51px !default; + +/// @prop - Height of the toggle +$toggle-ios-height: 32px !default; + +/// @prop - Border width of the toggle +$toggle-ios-border-width: 2px !default; + +/// @prop - Border radius of the toggle +$toggle-ios-border-radius: $toggle-ios-height / 2 !default; + +/// @prop - Background color of the unchecked toggle +$toggle-ios-background-color-off: $list-ios-background-color !default; + +/// @prop - Border color of the unchecked toggle +$toggle-ios-border-color-off: grayscale(lighten($list-ios-border-color, 11%)) !default; + +/// @prop - Background color of the checked toggle +$toggle-ios-background-color-on: color($colors-ios, primary) !default; + +/// @prop - Width of the toggle handle +$toggle-ios-handle-width: $toggle-ios-height - ($toggle-ios-border-width * 2) !default; + +/// @prop - Height of the toggle handle +$toggle-ios-handle-height: $toggle-ios-handle-width !default; + +/// @prop - Border radius of the toggle handle +$toggle-ios-handle-border-radius: $toggle-ios-handle-height / 2 !default; + +/// @prop - Box shadow of the toggle handle +$toggle-ios-handle-box-shadow: 0 3px 12px rgba(0, 0, 0, .16), 0 3px 1px rgba(0, 0, 0, .1) !default; + +/// @prop - Background color of the toggle handle +$toggle-ios-handle-background-color: $toggle-ios-background-color-off !default; + +/// @prop - Margin of the toggle handle +$toggle-ios-media-margin: 0 !default; + +/// @prop - Transition duration of the toggle icon +$toggle-ios-transition-duration: 300ms !default; + +/// @prop - Opacity of the disabled toggle +$toggle-ios-disabled-opacity: .3 !default; + +// deprecated +$toggle-ios-item-left-padding: null !default; + +/// @prop - Padding top of the toggle positioned on the start in an item +$toggle-ios-item-start-padding-top: 6px !default; + +/// @prop - Padding end of the toggle positioned on the start in an item +$toggle-ios-item-start-padding-end: 16px !default; + +/// @prop - Padding bottom of the toggle positioned on the start in an item +$toggle-ios-item-start-padding-bottom: 5px !default; + +/// @prop - Padding start of the toggle positioned on the start in an item +$toggle-ios-item-start-padding-start: 0 !default; + +// deprecated +$toggle-ios-item-right-padding: null !default; + +/// @prop - Padding top of the toggle positioned on the end in an item +$toggle-ios-item-end-padding-top: 6px !default; + +/// @prop - Padding end of the toggle positioned on the end in an item +$toggle-ios-item-end-padding-end: ($item-ios-padding-end / 2) !default; + +/// @prop - Padding bottom of the toggle positioned on the end in an item +$toggle-ios-item-end-padding-bottom: 5px !default; + +/// @prop - Padding start of the toggle positioned on the end in an item +$toggle-ios-item-end-padding-start: $item-ios-padding-start !default; + +// iOS Toggle +// ----------------------------------------- + +.toggle-ios { + position: relative; + + width: $toggle-ios-width; + height: $toggle-ios-height; + + box-sizing: content-box; + + contain: strict; +} + + +// iOS Toggle Background Track: Unchecked +// ----------------------------------------- + +.toggle-ios .toggle-icon { + @include border-radius($toggle-ios-border-radius); + + position: relative; + display: block; + + width: 100%; + height: 100%; + + background-color: $toggle-ios-border-color-off; + transition: background-color $toggle-ios-transition-duration; + + pointer-events: none; +} + + +// iOS Toggle Background Oval: Unchecked +// ----------------------------------------- + +.toggle-ios .toggle-icon::before { + @include position($toggle-ios-border-width, $toggle-ios-border-width, $toggle-ios-border-width, $toggle-ios-border-width); + @include border-radius($toggle-ios-border-radius); + + position: absolute; + + background-color: $toggle-ios-background-color-off; + + content: ""; + transform: scale3d(1, 1, 1); + transition: transform $toggle-ios-transition-duration; +} + + +// iOS Toggle Inner Knob: Unchecked +// ----------------------------------------- + +.toggle-ios .toggle-inner { + @include position($toggle-ios-border-width, null, null, $toggle-ios-border-width); + @include border-radius($toggle-ios-handle-border-radius); + + position: absolute; + + width: $toggle-ios-handle-width; + height: $toggle-ios-handle-height; + + background-color: $toggle-ios-handle-background-color; + box-shadow: $toggle-ios-handle-box-shadow; + + transition: transform $toggle-ios-transition-duration, width 120ms ease-in-out 80ms, left 110ms ease-in-out 80ms, right 110ms ease-in-out 80ms; + + will-change: transform; + contain: strict; +} + + +// iOS Toggle Background Track: Checked +// ----------------------------------------- + +.toggle-ios.toggle-checked .toggle-icon { + background-color: $toggle-ios-background-color-on; +} + + +// iOS Toggle Background Oval: Activated or Checked +// ----------------------------------------- + +.toggle-ios.toggle-activated .toggle-icon::before, +.toggle-ios.toggle-checked .toggle-icon::before { + transform: scale3d(0, 0, 0); +} + + +// iOS Toggle Inner Knob: Checked +// ----------------------------------------- + +.toggle-ios.toggle-checked .toggle-inner { + @include transform(translate3d($toggle-ios-width - $toggle-ios-handle-width - ($toggle-ios-border-width * 2), 0, 0)); +} + + +// iOS Toggle Background Oval: Activated and Checked +// ----------------------------------------- + +.toggle-ios.toggle-activated.toggle-checked .toggle-inner::before { + transform: scale3d(0, 0, 0); +} + + +// iOS Toggle Inner Knob: Activated and Unchecked +// ----------------------------------------- + +.toggle-ios.toggle-activated .toggle-inner { + width: $toggle-ios-handle-width + 6; +} + + +// iOS Toggle Inner Knob: Activated and Checked +// ----------------------------------------- + +.toggle-ios.toggle-activated.toggle-checked .toggle-inner { + // when pressing down on the toggle and IS checked + // make the knob wider and move it left a bit + @include position-horizontal($toggle-ios-border-width - 6, null); +} + + +// iOS Toggle: Disabled +// ----------------------------------------- + +.toggle-ios.toggle-disabled, +.item-ios.item-toggle-disabled ion-label { + opacity: $toggle-ios-disabled-opacity; + + pointer-events: none; +} + + +// iOS Toggle Within An Item +// ----------------------------------------- + +.item-ios .toggle-ios { + @include margin($toggle-ios-media-margin); + + @include deprecated-variable(padding, $toggle-ios-item-right-padding) { + @include padding($toggle-ios-item-end-padding-top, $toggle-ios-item-end-padding-end, $toggle-ios-item-end-padding-bottom, $toggle-ios-item-end-padding-start); + } +} + +.item-ios .toggle-ios[slot="start"] { + @include deprecated-variable(padding, $toggle-ios-item-left-padding) { + @include padding($toggle-ios-item-start-padding-top, $toggle-ios-item-start-padding-end, $toggle-ios-item-start-padding-bottom, $toggle-ios-item-start-padding-start); + } +} + + +// iOS Toggle Color Mixin +// -------------------------------------------------- + +@mixin ios-toggle-theme($color-name, $color-base) { + + .toggle-ios-#{$color-name}.toggle-checked .toggle-icon { + background-color: $color-base; + } + +} + + +// Generate iOS Toggle Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + @include ios-toggle-theme($color-name, $color-base); +} diff --git a/packages/ionic/src/toggle/toggle.md.scss b/packages/ionic/src/toggle/toggle.md.scss new file mode 100644 index 0000000000..bb41129426 --- /dev/null +++ b/packages/ionic/src/toggle/toggle.md.scss @@ -0,0 +1,251 @@ +@import "../../themes/ionic.globals.md"; +@import "./toggle"; + + +// Material Design Toggle +// -------------------------------------------------- + +/// @prop - Color of the active toggle +$toggle-md-active-color: color($colors-md, primary) !default; + +/// @prop - Width of the toggle track +$toggle-md-track-width: 36px !default; + +/// @prop - Height of the toggle track +$toggle-md-track-height: 14px !default; + +/// @prop - Background color of the toggle track +$toggle-md-track-background-color-off: $list-md-border-color !default; + +/// @prop - Background color of the checked toggle track +$toggle-md-track-background-color-on: lighten($toggle-md-active-color, 25%) !default; + +/// @prop - Width of the toggle handle +$toggle-md-handle-width: 20px !default; + +/// @prop - Height of the toggle handle +$toggle-md-handle-height: 20px !default; + +/// @prop - Border radius of the toggle handle +$toggle-md-handle-border-radius: 50% !default; + +/// @prop - Box shadow of the toggle handle +$toggle-md-handle-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12) !default; + +/// @prop - Background color of the toggle handle +$toggle-md-handle-background-color-off: $background-md-color !default; + +/// @prop - Background color of the checked toggle handle +$toggle-md-handle-background-color-on: $toggle-md-active-color !default; + +// deprecated +$toggle-md-media-margin: null !default; + +/// @prop - Margin top of the toggle +$toggle-md-media-margin-top: 0 !default; + +/// @prop - Margin end of the toggle +$toggle-md-media-margin-end: $toggle-md-media-margin-top !default; + +/// @prop - Margin bottom of the toggle +$toggle-md-media-margin-bottom: $toggle-md-media-margin-top !default; + +/// @prop - Margin start of the toggle +$toggle-md-media-margin-start: $toggle-md-media-margin-end !default; + +/// @prop - Transition duration of the toggle icon +$toggle-md-transition-duration: 300ms !default; + +/// @prop - Opacity of the disabled toggle +$toggle-md-disabled-opacity: .3 !default; + +// deprecated +$toggle-md-padding: null !default; + +/// @prop - Padding top of standalone toggle +$toggle-md-padding-top: 12px !default; + +/// @prop - Padding end of standalone toggle +$toggle-md-padding-end: $toggle-md-padding-top !default; + +/// @prop - Padding bottom of standalone toggle +$toggle-md-padding-bottom: $toggle-md-padding-top !default; + +/// @prop - Padding start of standalone toggle +$toggle-md-padding-start: $toggle-md-padding-end !default; + +// deprecated +$toggle-md-item-left-padding: null !default; + +/// @prop - Padding top of the toggle positioned on the start in an item +$toggle-md-item-start-padding-top: 12px !default; + +/// @prop - Padding end of the toggle positioned on the start in an item +$toggle-md-item-start-padding-end: 18px !default; + +/// @prop - Padding bottom of the toggle positioned on the start in an item +$toggle-md-item-start-padding-bottom: 12px !default; + +/// @prop - Padding start the toggle positioned on the start in an item +$toggle-md-item-start-padding-start: 2px !default; + +// deprecated +$toggle-md-item-right-padding: null !default; + +/// @prop - Padding top of the toggle positioned on the end in an item +$toggle-md-item-end-padding-top: 12px !default; + +/// @prop - Padding end of the toggle positioned on the end in an item +$toggle-md-item-end-padding-end: ($item-md-padding-end / 2) !default; + +/// @prop - Padding bottom of the toggle positioned on the end in an item +$toggle-md-item-end-padding-bottom: 12px !default; + +/// @prop - Padding start of the toggle positioned on the end in an item +$toggle-md-item-end-padding-start: $item-md-padding-start !default; + +// Material Design Toggle +// ----------------------------------------- + +.toggle-md { + position: relative; + + width: $toggle-md-track-width; + height: $toggle-md-track-height; + + box-sizing: content-box; + + contain: strict; + + @include deprecated-variable(padding, $toggle-md-padding) { + @include padding($toggle-md-padding-top, $toggle-md-padding-end, $toggle-md-padding-bottom, $toggle-md-padding-start); + } +} + + +// Material Design Toggle Background Track: Unchecked +// ----------------------------------------- + +.toggle-md .toggle-icon { + @include border-radius($toggle-md-track-height); + + position: relative; + display: block; + + width: 100%; + height: 100%; + + background-color: $toggle-md-track-background-color-off; + + transition: background-color $toggle-md-transition-duration; + + pointer-events: none; +} + + +// Material Design Toggle Inner Knob: Unchecked +// ----------------------------------------- + +.toggle-md .toggle-inner { + @include position(($toggle-md-handle-height - $toggle-md-track-height) / -2, null, null, 0); + @include border-radius($toggle-md-handle-border-radius); + + position: absolute; + + width: $toggle-md-handle-width; + height: $toggle-md-handle-height; + + background-color: $toggle-md-handle-background-color-off; + + box-shadow: $toggle-md-handle-box-shadow; + + transition-duration: $toggle-md-transition-duration; + transition-property: transform, background-color; + + will-change: transform, background-color; + + contain: strict; +} + + +// Material Design Toggle Background Track: Checked +// ----------------------------------------- + +.toggle-md.toggle-checked .toggle-icon { + background-color: $toggle-md-track-background-color-on; +} + + +// Material Design Toggle Inner Knob: Checked +// ----------------------------------------- + +.toggle-md.toggle-checked .toggle-inner { + @include transform(translate3d($toggle-md-track-width - $toggle-md-handle-width, 0, 0)); + + background-color: $toggle-md-handle-background-color-on; +} + + +// Material Design Toggle: Disabled +// ----------------------------------------- + +.toggle-md.toggle-disabled, +.item-md.item-toggle-disabled ion-label { + opacity: $toggle-md-disabled-opacity; + + pointer-events: none; +} + +.toggle-md.toggle-disabled ion-radio { + opacity: $toggle-md-disabled-opacity; +} + + +// Material Design Toggle Within An Item +// ----------------------------------------- + +.item-md .toggle-md { + cursor: pointer; + + @include deprecated-variable(margin, $toggle-md-media-margin) { + @include margin($toggle-md-media-margin-top, $toggle-md-media-margin-end, $toggle-md-media-margin-bottom, $toggle-md-media-margin-start); + } + + @include deprecated-variable(padding, $toggle-md-item-right-padding) { + @include padding($toggle-md-item-end-padding-top, $toggle-md-item-end-padding-end, $toggle-md-item-end-padding-bottom, $toggle-md-item-end-padding-start); + } +} + +.item-md .toggle-md[slot="start"] { + @include deprecated-variable(padding, $toggle-md-item-left-padding) { + @include padding($toggle-md-item-start-padding-top, $toggle-md-item-start-padding-end, $toggle-md-item-start-padding-bottom, $toggle-md-item-start-padding-start); + } +} + +.item-md.item-toggle ion-label { + @include margin-horizontal(0, null); +} + + +// Material Design Color Mixin +// -------------------------------------------------- + +@mixin toggle-theme-md($color-name, $color-base) { + + .toggle-md-#{$color-name}.toggle-checked .toggle-icon { + background-color: lighten($color-base, 25%); + } + + .toggle-md-#{$color-name}.toggle-checked .toggle-inner { + background-color: $color-base; + } + +} + + +// Generate Material Design Toggle Auxiliary Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md) { + @include toggle-theme-md($color-name, $color-base); +} diff --git a/packages/ionic/src/toggle/toggle.scss b/packages/ionic/src/toggle/toggle.scss new file mode 100644 index 0000000000..544caf8ee4 --- /dev/null +++ b/packages/ionic/src/toggle/toggle.scss @@ -0,0 +1,43 @@ +@import "../../themes/ionic.globals"; + + +// Toggle +// -------------------------------------------------- + +ion-toggle { + display: inline-block; + + contain: content; +} + +ion-toggle ion-gesture { + display: block; + + width: 100%; + height: 100%; + + visibility: inherit; +} + +.toggle-cover { + @include position-horizontal(0, null); + + position: absolute; + top: 0; + + width: 100%; + height: 100%; + + border: 0; + outline: none; + + font-family: inherit; + font-style: inherit; + font-variant: inherit; + + line-height: 1; + text-transform: none; + + background: transparent; + cursor: pointer; +} diff --git a/packages/ionic/src/toggle/toggle.tsx b/packages/ionic/src/toggle/toggle.tsx new file mode 100644 index 0000000000..ca2639340c --- /dev/null +++ b/packages/ionic/src/toggle/toggle.tsx @@ -0,0 +1,181 @@ +import { BooleanInputComponent, GestureDetail, VNodeData } from '../../util/interfaces'; +import { Component, h, Ionic, Listen, Prop, Watch } from '../index'; + + +@Component({ + tag: 'ion-toggle', + styleUrls: { + ios: 'toggle.ios.scss', + md: 'toggle.md.scss', + wp: 'toggle.wp.scss' + }, + host: { + theme: 'toggle' + } +}) +export class Toggle implements BooleanInputComponent { + activated: boolean = false; + hasFocus: boolean = false; + id: string; + labelId: string; + startX: number; + styleTmr: any; + + @Prop() color: string; + @Prop() mode: string; + + @Prop({ twoWay: true }) checked: boolean = false; + @Prop({ twoWay: true }) disabled: boolean = false; + @Prop({ twoWay: true }) value: string; + + + ionViewWillLoad() { + this.emitStyle(); + } + + @Watch('checked') + changed(val: boolean) { + Ionic.emit(this, 'ionChange', { detail: { checked: val } }); + this.emitStyle(); + } + + @Watch('disabled') + disableChanged() { + this.emitStyle(); + } + + private emitStyle() { + clearTimeout(this.styleTmr); + + this.styleTmr = setTimeout(() => { + Ionic.emit(this, 'ionStyle', { + detail: { + 'toggle-disabled': this.disabled, + 'toggle-checked': this.checked, + 'toggle-activated': this.activated, + 'toggle-focus': this.hasFocus + } + }); + }); + } + + private canStart() { + return !this.disabled; + } + + + private onDragStart(detail: GestureDetail) { + this.startX = detail.startX; + this.fireFocus(); + } + + + private onDragMove(detail: GestureDetail) { + if (this.checked) { + if (detail.currentX + 15 < this.startX) { + this.checked = false; + this.activated = true; + this.startX = detail.currentX; + } + + } else if (detail.currentX - 15 > this.startX) { + this.checked = true; + this.activated = (detail.currentX < this.startX + 5); + this.startX = detail.currentX; + } + } + + + private onDragEnd(detail: GestureDetail) { + if (this.checked) { + if (detail.startX + 4 > detail.currentX) { + this.checked = false; + } + + } else if (detail.startX - 4 < detail.currentX) { + this.checked = true; + } + + this.activated = false; + this.fireBlur(); + this.startX = null; + } + + + @Listen('keydown.space') + onSpace(ev: KeyboardEvent) { + this.toggle(); + ev.stopPropagation(); + ev.preventDefault(); + } + + toggle() { + if (!this.disabled) { + this.checked = !this.checked; + this.fireFocus(); + } + return this.checked; + } + + + fireFocus() { + if (!this.hasFocus) { + this.hasFocus = true; + Ionic.emit(this, 'ionFocus'); + this.emitStyle(); + } + } + + + fireBlur() { + if (this.hasFocus) { + this.hasFocus = false; + Ionic.emit(this, 'ionBlur'); + this.emitStyle(); + } + } + + hostData(): VNodeData { + return { + class: { + 'toggle-activated': this.activated, + 'toggle-checked': this.checked, + 'toggle-disabled': this.disabled + } + }; + } + + render() { + return ( + + + + + + + + ); + } +} diff --git a/packages/ionic/src/toggle/toggle.wp.scss b/packages/ionic/src/toggle/toggle.wp.scss new file mode 100644 index 0000000000..fc65ddd957 --- /dev/null +++ b/packages/ionic/src/toggle/toggle.wp.scss @@ -0,0 +1,233 @@ +@import "../../themes/ionic.globals.wp"; +@import "./toggle"; + + +// Windows Toggle +// -------------------------------------------------- + +/// @prop - Color of the toggle +$toggle-wp-inactive-color: #323232 !default; + +/// @prop - Color of the checked toggle +$toggle-wp-active-color: color($colors-wp, primary) !default; + +/// @prop - Width of the toggle track +$toggle-wp-track-width: 40px !default; + +/// @prop - Height of the toggle track +$toggle-wp-track-height: 18px !default; + +/// @prop - Background color of the toggle track +$toggle-wp-track-background-color-off: transparent !default; + +/// @prop - Background color of the checked toggle track +$toggle-wp-track-background-color-on: $toggle-wp-active-color !default; + +/// @prop - Border width of the toggle track +$toggle-wp-track-border-width: 2px !default; + +/// @prop - Border color of the toggle track +$toggle-wp-track-border-color-off: $toggle-wp-inactive-color !default; + +/// @prop - Border color of the checked toggle track +$toggle-wp-track-border-color-on: $toggle-wp-active-color !default; + +/// @prop - Width of the toggle handle +$toggle-wp-handle-width: 10px !default; + +/// @prop - Height of the toggle handle +$toggle-wp-handle-height: 10px !default; + +/// @prop - Top of the toggle handle +$toggle-wp-handle-top: 2px !default; + +/// @prop - Left of the toggle handle +$toggle-wp-handle-left: 2px !default; + +/// @prop - Border radius of the toggle handle +$toggle-wp-handle-border-radius: 50% !default; + +/// @prop - Background color of the toggle handle +$toggle-wp-handle-background-color-off: $toggle-wp-inactive-color !default; + +/// @prop - Background color of the checked toggle handle +$toggle-wp-handle-background-color-on: color-contrast($colors-wp, $toggle-wp-active-color) !default; + +/// @prop - Margin of the toggle +$toggle-wp-media-margin: 0 !default; + +/// @prop - Transition duration of the toggle icon +$toggle-wp-transition-duration: 300ms !default; + +/// @prop - Opacity of the disabled toggle +$toggle-wp-disabled-opacity: .3 !default; + +// deprecated +$toggle-wp-item-left-padding: null !default; + +/// @prop - Padding top of the toggle positioned on the start in an item +$toggle-wp-item-start-padding-top: 12px !default; + +/// @prop - Padding end of the toggle positioned on the start in an item +$toggle-wp-item-start-padding-end: 18px !default; + +/// @prop - Padding bottom of the toggle positioned on the start in an item +$toggle-wp-item-start-padding-bottom: 12px !default; + +/// @prop - Padding start the toggle positioned on the start in an item +$toggle-wp-item-start-padding-start: 2px !default; + +// deprecated +$toggle-wp-item-right-padding: null !default; + +/// @prop - Padding top of the toggle positioned on the end in an item +$toggle-wp-item-end-padding-top: 12px !default; + +/// @prop - Padding end of the toggle positioned on the end in an item +$toggle-wp-item-end-padding-end: ($item-wp-padding-end / 2) !default; + +/// @prop - Padding bottom of the toggle positioned on the end in an item +$toggle-wp-item-end-padding-bottom: 12px !default; + +/// @prop - Padding start of the toggle positioned on the end in an item +$toggle-wp-item-end-padding-start: $item-wp-padding-start !default; + +// Windows Toggle +// ----------------------------------------- + +.toggle-wp { + position: relative; + + width: $toggle-wp-track-width; + height: $toggle-wp-track-height; + + box-sizing: content-box; + + contain: strict; +} + + +// Windows Toggle Background Track: Unchecked +// ----------------------------------------- + +.toggle-wp .toggle-icon { + @include border-radius($toggle-wp-track-height); + + position: relative; + display: block; + + width: 100%; + height: 100%; + + border: $toggle-wp-track-border-width solid $toggle-wp-track-border-color-off; + background-color: $toggle-wp-track-background-color-off; + + pointer-events: none; + + contain: strict; +} + + +// Windows Toggle Inner Knob: Unchecked +// ----------------------------------------- + +.toggle-wp .toggle-inner { + @include position($toggle-wp-handle-top, null, null, $toggle-wp-handle-left); + @include border-radius($toggle-wp-handle-border-radius); + + position: absolute; + + width: $toggle-wp-handle-width; + height: $toggle-wp-handle-height; + + background-color: $toggle-wp-handle-background-color-off; + + transition-duration: $toggle-wp-transition-duration; + transition-property: transform, background-color; + + will-change: transform, background-color; +} + + +// Windows Toggle Background Track: Checked +// ----------------------------------------- + +.toggle-wp.toggle-checked .toggle-icon { + border-color: $toggle-wp-track-background-color-on; + background-color: $toggle-wp-track-background-color-on; +} + + +// Windows Toggle Inner Knob: Checked +// ----------------------------------------- + +.toggle-wp.toggle-checked .toggle-inner { + @include transform(translate3d($toggle-wp-track-width - $toggle-wp-handle-width - ($toggle-wp-track-border-width * 2) - ($toggle-wp-handle-left * 2), 0, 0)); + + background-color: $toggle-wp-handle-background-color-on; +} + + +// Windows Toggle: Disabled +// ----------------------------------------- + +.toggle-wp.toggle-disabled, +.item-wp.item-toggle-disabled ion-label { + opacity: $toggle-wp-disabled-opacity; + + pointer-events: none; +} + +.toggle-wp.toggle-disabled ion-radio { + opacity: $toggle-wp-disabled-opacity; +} + + +// Windows Toggle Within An Item +// ----------------------------------------- + +.item-wp .toggle-wp { + @include margin($toggle-wp-media-margin); + + cursor: pointer; + + @include deprecated-variable(padding, $toggle-wp-item-right-padding) { + @include padding($toggle-wp-item-end-padding-top, $toggle-wp-item-end-padding-end, $toggle-wp-item-end-padding-bottom, $toggle-wp-item-end-padding-start); + } +} + +.item-wp .toggle-wp[slot="start"] { + @include deprecated-variable(padding, $toggle-wp-item-left-padding) { + @include padding($toggle-wp-item-start-padding-top, $toggle-wp-item-start-padding-end, $toggle-wp-item-start-padding-bottom, $toggle-wp-item-start-padding-start); + } +} + +.item-wp.item-toggle ion-label { + @include margin-horizontal(0, null); +} + + +// Windows Color Mixin +// -------------------------------------------------- + +@mixin toggle-theme-wp($color-name, $color-base, $color-contrast) { + + .toggle-wp-#{$color-name}.toggle-checked .toggle-icon { + border-color: $color-base; + background-color: $color-base; + } + + .toggle-wp-#{$color-name}.toggle-checked .toggle-inner { + background-color: $color-contrast; + } +} + + +// Generate Windows Toggle Auxiliary Colors +// -------------------------------------------------- + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + + @include toggle-theme-wp($color-name, $color-base, $color-contrast); + +} diff --git a/packages/ionic/src/toolbar/navbar.tsx b/packages/ionic/src/toolbar/navbar.tsx new file mode 100644 index 0000000000..642afa132a --- /dev/null +++ b/packages/ionic/src/toolbar/navbar.tsx @@ -0,0 +1,98 @@ +import { Component, h, Ionic, Prop } from '../index'; +import { createThemedClasses } from '../../util/theme'; +import { VNodeData } from '../../util/interfaces'; + + +/** + * @name Navbar + * @description + * Navbar acts as the navigational toolbar, which also comes with a back + * button. A navbar can contain a `ion-title`, any number of buttons, + * a segment, or a searchbar. Navbars must be placed within an + * `` in order for them to be placed above the content. + * It's important to note that navbar's are part of the dynamic navigation + * stack. If you need a static toolbar, use ion-toolbar. + * + * @usage + * ```html + * + * + * + * + * + * + * + * + * Page Title + * + * + * + * + * + * + * + * + * + * + * ``` + * + * @demo /docs/demos/src/navbar/ + * @see {@link ../../toolbar/Toolbar/ Toolbar API Docs} + */ +@Component({ + tag: 'ion-navbar', + host: { + theme: 'toolbar' + } +}) +export class Navbar { + $el: HTMLElement; + mode: string; + color: string; + sbPadding: boolean = Ionic.config.getBoolean('statusbarPadding'); + + @Prop() hideBackButton: boolean = false; + @Prop() backButtonText: string = Ionic.config.get('backButtonText', 'Back'); + @Prop() backButtonIcon: string = Ionic.config.get('backButtonIcon'); + @Prop() hidden: boolean = false; + + + backButtonClick(ev: UIEvent) { + ev.preventDefault(); + ev.stopPropagation(); + + console.log('back button click'); + } + + hostData(): VNodeData { + return { + class: { + 'statusbar-padding': Ionic.config.getBoolean('statusbarPadding') + } + }; + } + + render() { + const backgroundCss = createThemedClasses(this.mode, this.color, 'toolbar-background'); + const contentCss = createThemedClasses(this.mode, this.color, 'toolbar-content'); + const backButtonCss = createThemedClasses(this.mode, this.color, 'back-button'); + const backButtonIconCss = createThemedClasses(this.mode, this.color, 'back-button-icon'); + const backButtonTextCss = createThemedClasses(this.mode, this.color, 'back-button-text'); + + return [ + , + + + {this.backButtonText} + , + , + , + , + , + + + + ]; + } + +} diff --git a/packages/ionic/src/toolbar/toolbar-button.scss b/packages/ionic/src/toolbar/toolbar-button.scss new file mode 100644 index 0000000000..c116979ebb --- /dev/null +++ b/packages/ionic/src/toolbar/toolbar-button.scss @@ -0,0 +1,78 @@ +@import "../../themes/ionic.globals"; + +// Toolbar Buttons +// -------------------------------------------------- + +.bar-button { + @include margin(0); + @include padding(0); + @include text-align(center); + @include appearance(none); + + position: relative; + display: inline-block; + + line-height: 1; + text-overflow: ellipsis; + text-transform: none; + white-space: nowrap; + + cursor: pointer; + + vertical-align: top; // the better option for most scenarios + vertical-align: -webkit-baseline-middle; // the best for those that support it + + user-select: none; +} + +.bar-button::after { + @include position(-7px, -2px, -6px, -2px); + + // used to make the button's hit area larger + position: absolute; + + content: ""; +} + + +// Menu Toggle +// -------------------------------------------------- + +.bar-button-menutoggle { + display: flex; + + align-items: center; +} + + +// Back Button +// -------------------------------------------------- + +.back-button { + display: none; +} + +.back-button.show-back-button { + display: inline-block; +} + +.back-button-text { + display: flex; + + align-items: center; +} + +// Button Icons +// -------------------------------------------------- + +ion-icon[slot="start"] { + @include button-icon(); + + padding-right: .3em; +} + +ion-icon[slot="end"] { + @include button-icon(); + + padding-left: .4em; +} \ No newline at end of file diff --git a/packages/ionic/src/toolbar/toolbar.ios.scss b/packages/ionic/src/toolbar/toolbar.ios.scss new file mode 100644 index 0000000000..c7c6050b03 --- /dev/null +++ b/packages/ionic/src/toolbar/toolbar.ios.scss @@ -0,0 +1,345 @@ +@import "../../themes/ionic.globals.ios"; +@import "./toolbar"; +@import "./toolbar-button"; + + +// iOS Toolbar +// -------------------------------------------------- + +/// @prop - Order of the toolbar elements +$toolbar-order-ios: ( + back-button: 0, + menu-toggle-start: 1, + buttons-start: 2, + buttons-mode-start: 3, + content: 4, + buttons-mode-end: 5, + buttons-end: 6, + menu-toggle-end: 7, +); + +/// @prop - Font size of the toolbar button +$toolbar-ios-button-font-size: 1.7rem !default; + +/// @prop - Text color of the toolbar button +$toolbar-ios-button-color: color-contrast($colors-ios, $toolbar-ios-background, ios) !default; + +/// @prop - Border radius of the toolbar button +$toolbar-ios-button-border-radius: 4px !default; + +/// @prop - Font weight of the strong toolbar button +$toolbar-ios-button-strong-font-weight: 600 !default; + +/// @prop - Height of the navigation bar +$navbar-ios-height: $toolbar-ios-height !default; + + +.toolbar-ios { + @include padding($toolbar-ios-padding); + + min-height: $toolbar-ios-height; +} + + +// iOS Toolbar Background +// -------------------------------------------------- + +.toolbar-background-ios { + background: $toolbar-ios-background; +} + + +// iOS Header / Footer Borders +// -------------------------------------------------- + +.header-ios .toolbar-background-ios, +.footer-ios .toolbar-background-ios { + border-style: solid; + border-color: $toolbar-ios-border-color; +} + +.header-ios .toolbar-ios:last-child .toolbar-background-ios { + border-width: 0 0 $hairlines-width; +} + +.footer-ios .toolbar-ios:first-child .toolbar-background-ios { + border-width: $hairlines-width 0 0; +} + +.header-ios[no-border] .toolbar-ios:last-child .toolbar-background-ios { + border-bottom-width: 0; +} + +.footer-ios[no-border] .toolbar-ios:first-child .toolbar-background-ios { + border-top-width: 0; +} + + +// iOS Toolbar Content +// -------------------------------------------------- + +.toolbar-content-ios { + flex: 1; + order: map-get($toolbar-order-ios, content); + + min-width: 0; +} + +@mixin ios-toolbar-theme($color-name, $color-base, $color-contrast) { + .toolbar-ios-#{$color-name} { + + .toolbar-background-ios { + background: $color-base; + } + + .bar-button-clear-ios, + .bar-button-default-ios { + color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + @include ios-bar-button-default($color-name, $color-base, $color-contrast); + @include ios-bar-button-outline($color-name, $color-base, $color-contrast); + @include ios-bar-button-solid($color-name, $color-base, $color-contrast); + } + } +} + + +// iOS Toolbar Button Placement +// -------------------------------------------------- + +.bar-buttons-ios { + order: map-get($toolbar-order-ios, buttons-mode-start); + + transform: translateZ(0); +} + +.bar-buttons-ios[slot="start"] { + order: map-get($toolbar-order-ios, buttons-start); +} + +.bar-buttons-ios[slot="mode-end"] { + @include text-align(end); + + order: map-get($toolbar-order-ios, buttons-mode-end); +} + +.bar-buttons-ios[slot="end"] { + @include text-align(right); + + order: map-get($toolbar-order-ios, buttons-end); +} + + +// iOS Toolbar Button Default +// -------------------------------------------------- + +.bar-button-ios { + @include padding(0, 4px); + @include border-radius($toolbar-ios-button-border-radius); + + height: 32px; + + border: 0; + font-size: $toolbar-ios-button-font-size; +} + +@mixin ios-bar-button-default($color-name, $color-base, $color-contrast) { + + .bar-button-#{$color-name}-ios, + .bar-button-clear-ios-#{$color-name}, + .bar-button-ios-#{$color-name} { + color: $color-base; + background-color: transparent; + + &:hover:not(.disable-hover) { + color: $color-base; + } + + &.activated { + opacity: .4; + } + } + +} + + +// iOS Toolbar Button Outline +// -------------------------------------------------- + +.bar-button-outline-ios { + border-width: 1px; + border-style: solid; + border-color: $toolbar-ios-button-color; + color: $toolbar-ios-button-color; + background-color: transparent; + + &:hover:not(.disable-hover) { + opacity: .4; + } + + &.activated { + color: color-contrast($colors-ios, $toolbar-ios-button-color); + background-color: $toolbar-ios-button-color; + } +} + +@mixin ios-bar-button-outline($color-name, $color-base, $color-contrast) { + + .bar-button-outline-ios-#{$color-name} { + $fg-color: $color-base; + border-color: $fg-color; + color: $fg-color; + background-color: transparent; + + &.activated { + color: $color-contrast; + background-color: $fg-color; + } + } + +} + + +// iOS Toolbar Button Solid +// -------------------------------------------------- + +.bar-button-solid-ios { + color: color-contrast($colors-ios, $toolbar-ios-button-color); + background-color: $toolbar-ios-button-color; + + &:hover:not(.disable-hover) { + color: color-contrast($colors-ios, $toolbar-ios-button-color); + opacity: .4; + } + + &.activated { + color: color-contrast($colors-ios, $toolbar-ios-button-color); + background-color: color-shade($toolbar-ios-button-color); + opacity: .4; + } +} + +@mixin ios-bar-button-solid($color-name, $color-base, $color-contrast) { + + .bar-button-solid-ios-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + &.activated { + color: $color-contrast; + background-color: color-shade($color-base); + } + } + +} + + +// iOS Toolbar Button Icon +// -------------------------------------------------- + +.bar-button-ios ion-icon[slot="start"] { + @include padding-horizontal(null, .3em); + + font-size: 1.4em; + line-height: .67; + + pointer-events: none; +} + +.bar-button-ios ion-icon[slot="end"] { + @include padding-horizontal(.4em, null); + + font-size: 1.4em; + line-height: .67; + + pointer-events: none; +} + +.bar-button-ios ion-icon[slot="icon-only"] { + @include padding(0); + + font-size: 1.8em; + line-height: .67; + + pointer-events: none; +} + + +// iOS Toolbar Back Button +// -------------------------------------------------- + +.back-button-ios { + @include margin(0); + + z-index: 99; + overflow: visible; + + order: map-get($toolbar-order-ios, back-button); + + min-height: 3.2rem; + + line-height: 1; + transform: translateZ(0); +} + +.back-button-icon-ios { + @include margin(-1px, 0, 0, 0); + + display: inherit; + + min-width: 18px; + + font-size: 3.4rem; +} + +.back-button-text-ios { + letter-spacing: -.01em; +} + + +// iOS Toolbar Menu Toggle +// -------------------------------------------------- + +.bar-button-menutoggle-ios { + @include margin(0, 6px); + @include padding(0); + + order: map-get($toolbar-order-ios, menu-toggle-start); + + min-width: 36px; + + ion-icon { + @include padding(0, 6px); + + font-size: 2.8rem; + } +} + +.bar-button-menutoggle-ios[slot="mode-end"], +.bar-button-menutoggle-ios[slot="end"] { + order: map-get($toolbar-order-ios, menu-toggle-end); +} + + +// iOS Toolbar Color Generation +// -------------------------------------------------- + +@include ios-bar-button-default(default, $toolbar-ios-button-color, color-contrast($colors-ios, $toolbar-ios-button-color, ios)); +@include ios-bar-button-default(clear, $toolbar-ios-button-color, color-contrast($colors-ios, $toolbar-ios-button-color, ios)); + +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + @include ios-toolbar-theme($color-name, $color-base, $color-contrast); + @include ios-bar-button-default($color-name, $color-base, $color-contrast); + @include ios-bar-button-outline($color-name, $color-base, $color-contrast); + @include ios-bar-button-solid($color-name, $color-base, $color-contrast); +} + + +// iOS strong Button +// -------------------------------------------------- + +.bar-button-strong-ios { + font-weight: $toolbar-ios-button-strong-font-weight; +} \ No newline at end of file diff --git a/packages/ionic/src/toolbar/toolbar.md.scss b/packages/ionic/src/toolbar/toolbar.md.scss new file mode 100644 index 0000000000..d0d8cbd461 --- /dev/null +++ b/packages/ionic/src/toolbar/toolbar.md.scss @@ -0,0 +1,383 @@ +@import "../../themes/ionic.globals.md"; +@import "./toolbar"; +@import "./toolbar-button"; + + +// Material Design Toolbar +// -------------------------------------------------- + +/// @prop - Order of the toolbar elements +$toolbar-order-md: ( + back-button: 0, + menu-toggle-start: 1, + buttons-start: 2, + content: 3, + buttons-mode-start: 4, + buttons-mode-end: 5, + buttons-end: 6, + menu-toggle-end: 7, +); + +/// @prop - Font size of the toolbar button +$toolbar-md-button-font-size: 1.4rem !default; + +/// @prop - Text color of the toolbar button +$toolbar-md-button-color: color-contrast($colors-md, $toolbar-md-background, md) !default; + +/// @prop - Border radius of the toolbar button +$toolbar-md-button-border-radius: 2px !default; + +/// @prop - Font weight of the strong toolbar button +$toolbar-md-button-strong-font-weight: bold !default; + +/// @prop - Height of the navigation bar +$navbar-md-height: $toolbar-md-height !default; + + +.toolbar-md { + @include padding($toolbar-md-padding); + + min-height: $toolbar-md-height; +} + + +// Material Design Toolbar Background +// -------------------------------------------------- + +.toolbar-background-md { + border-color: $toolbar-md-border-color; + background: $toolbar-md-background; +} + + +// Material Design Header / Footer / Tabs Box Shadow +// -------------------------------------------------- + +.header-md::after, +.tabs-md[tabsPlacement="top"] > .tabbar::after, +.footer-md::before, +.tabs-md[tabsPlacement="bottom"] > .tabbar::before { + // using datauri png background image for improved scroll performance + // rather than using `box-shadow: 0 2px 5px rgba(0,0,0,0.26);` + // noticable performance difference on older Android devices + @include position(null, null, -5px, 0); + @include background-position(start, 0, top, -2px); + + position: absolute; + + width: 100%; + height: 5px; + + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAHBAMAAADzDtBxAAAAD1BMVEUAAAAAAAAAAAAAAAAAAABPDueNAAAABXRSTlMUCS0gBIh/TXEAAAAaSURBVAjXYxCEAgY4UIICBmMogMsgFLtAAQCNSwXZKOdPxgAAAABJRU5ErkJggg==); + background-repeat: repeat-x; + + content: ""; +} + +.footer-md::before, +.tabs-md[tabsPlacement="bottom"] > .tabbar::before { + @include position(-2px, null, auto, null); + @include background-position(start, 0, top, 0); + + height: 2px; +} + +.header-md[no-border]::after, +.footer-md[no-border]::before, +.tabs-md[tabsPlacement="top"][no-border] > .tabbar::after, +.tabs-md[tabsPlacement="bottom"][no-border] > .tabbar::before { + display: none; +} + +// Material Design Toolbar Content +// -------------------------------------------------- + +.toolbar-content-md { + flex: 1; + order: map-get($toolbar-order-md, content); + + min-width: 0; + max-width: 100%; +} + + +@mixin md-toolbar-theme($color-name, $color-base, $color-contrast) { + .toolbar-md-#{$color-name} { + + .toolbar-background-md { + background: $color-base; + } + + .bar-button-clear-md, + .bar-button-default-md, + .bar-button-outline-md, + .toolbar-title-md { + color: $color-contrast; + } + + .bar-button-clear-md, + .bar-button-default-md, + .bar-button-outline-md { + .button-effect { + background-color: $color-contrast; + } + } + + .bar-button-outline-md { + border-color: $color-contrast; + } + + @each $color-name, $color-base, $color-contrast in get-colors($colors-md, md) { + @include md-bar-button-default($color-name, $color-base, $color-contrast); + @include md-bar-button-outline($color-name, $color-base, $color-contrast); + @include md-bar-button-solid($color-name, $color-base, $color-contrast); + } + } +} + + +// Material Design Toolbar Button Placement +// -------------------------------------------------- + +.bar-buttons-md { + order: map-get($toolbar-order-md, buttons-mode-start); + + transform: translateZ(0); +} + +.bar-buttons-md[slot="start"] { + order: map-get($toolbar-order-md, buttons-start); +} + +.bar-button-md:first-child { + @include margin-horizontal(0, null); +} + +.bar-buttons-md[slot="mode-end"] { + @include text-align(end); + + order: map-get($toolbar-order-md, buttons-mode-end); +} + +.bar-buttons-md[slot="end"] { + @include text-align(right); + + order: map-get($toolbar-order-md, buttons-end); +} + + +// Material Design Toolbar Button Default +// -------------------------------------------------- + +.bar-button-md { + @include margin(0, .2rem, 0, .2rem); + @include padding(0, 5px); + @include border-radius($toolbar-md-button-border-radius); + + height: 32px; + + border: 0; + font-size: $toolbar-md-button-font-size; + font-weight: 500; + text-transform: uppercase; +} + +.bar-button-solid-md, +.bar-button-outline-md { + // restrict the ripple to button size + overflow: hidden; +} + +@mixin md-bar-button-default($color-name, $color-base, $color-contrast) { + + .bar-button-#{$color-name}-md, + .bar-button-clear-md-#{$color-name}, + .bar-button-md-#{$color-name} { + color: $color-base; + background-color: transparent; + + &:hover:not(.disable-hover) { + color: $color-base; + } + } + +} + + +// Material Design Toolbar Button Outline +// -------------------------------------------------- + +.bar-button-outline-md { + border-width: 1px; + border-style: solid; + border-color: $toolbar-md-button-color; + color: $toolbar-md-button-color; + background-color: transparent; + + &:hover:not(.disable-hover) { + opacity: .4; + } + + &.activated { + background-color: transparent; + } + + .button-effect { + background-color: $toolbar-md-button-color; + } +} + +@mixin md-bar-button-outline($color-name, $color-base, $color-contrast) { + + .bar-button-outline-md-#{$color-name} { + $fg-color: color-shade($color-base); + border-color: $fg-color; + color: $fg-color; + background-color: transparent; + + &.activated { + background-color: transparent; + } + + .button-effect { + background-color: $fg-color; + } + } + +} + + +// Material Design Toolbar Button Solid +// -------------------------------------------------- + +.bar-button-solid-md { + color: color-contrast($colors-md, $toolbar-md-button-color, md); + background-color: $toolbar-md-button-color; + + &:hover:not(.disable-hover) { + color: color-contrast($colors-md, $toolbar-md-button-color, md); + } + + &.activated { + color: color-contrast($colors-md, $toolbar-md-button-color, md); + background-color: color-shade($toolbar-md-button-color); + } +} + +@mixin md-bar-button-solid($color-name, $color-base, $color-contrast) { + + .bar-button-solid-md-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + &.activated { + color: $color-contrast; + background-color: color-shade($color-base); + } + } + +} + + +// Material Design Toolbar Button Icon +// -------------------------------------------------- + +.bar-button-md ion-icon[slot="start"] { + @include padding-horizontal(null, .3em); + + font-size: 1.4em; + line-height: .67; + + pointer-events: none; +} + +.bar-button-md ion-icon[slot="end"] { + @include padding-horizontal(.4em, null); + + font-size: 1.4em; + line-height: .67; + + pointer-events: none; +} + +.bar-button-md ion-icon[slot="icon-only"] { + @include padding(0); + + min-width: 28px; + + font-size: 1.8em; + line-height: .67; + + pointer-events: none; +} + + +// Material Design Toolbar Back Button +// -------------------------------------------------- + +.back-button-md { + @include margin(0, 6px); + + min-width: 44px; + + box-shadow: none; +} + +.back-button-icon-md { + @include margin(0); + @include padding(0, 6px); + @include text-align(start); + + font-size: 2.4rem; + font-weight: normal; +} + + +// Material Design Toolbar Menu Toggle +// -------------------------------------------------- + +.bar-button-menutoggle-md { + @include margin(0, 6px); + @include padding(0, 2px); + + order: map-get($toolbar-order-md, menu-toggle-start); + + min-width: 44px; +} + +.bar-button-menutoggle-md ion-icon { + @include padding(0, 6px); + + font-size: 2.4rem; +} + +.bar-button-menutoggle-md[slot="mode-end"], +.bar-button-menutoggle-md[slot="end"] { + @include margin(0, 2px); + + order: map-get($toolbar-order-md, menu-toggle-end); + + min-width: 28px; +} + + +// Material Design Toolbar Color Generation +// -------------------------------------------------- + +@include md-bar-button-default(default, $toolbar-md-button-color, color-contrast($colors-md, $toolbar-md-button-color, md)); +@include md-bar-button-default(clear, $toolbar-md-button-color, color-contrast($colors-md, $toolbar-md-button-color, md)); + +@each $color-name, $color-base, $color-contrast in get-colors($colors-md, md) { + @include md-toolbar-theme($color-name, $color-base, $color-contrast); + @include md-bar-button-default($color-name, $color-base, $color-contrast); + @include md-bar-button-outline($color-name, $color-base, $color-contrast); + @include md-bar-button-solid($color-name, $color-base, $color-contrast); +} + + +// MD strong Button +// -------------------------------------------------- + +.bar-button-strong-md { + font-weight: $toolbar-md-button-strong-font-weight; +} \ No newline at end of file diff --git a/packages/ionic/src/toolbar/toolbar.scss b/packages/ionic/src/toolbar/toolbar.scss new file mode 100644 index 0000000000..719b2a0cc7 --- /dev/null +++ b/packages/ionic/src/toolbar/toolbar.scss @@ -0,0 +1,86 @@ +@import "../../themes/ionic.globals"; + + +// Toolbar +// -------------------------------------------------- + +ion-toolbar { + position: relative; + z-index: $z-index-toolbar; +} + +.toolbar { + display: flex; + overflow: hidden; + + flex-direction: row; + align-items: center; + justify-content: space-between; + + width: 100%; + + contain: content; +} + +.toolbar-background { + @include position(0, null, null, 0); + + position: absolute; + z-index: $z-index-toolbar-background; + + width: 100%; + height: 100%; + + border: 0; + transform: translateZ(0); + + pointer-events: none; + + contain: strict; +} + +ion-buttons { + @include margin(0, .2rem); + + display: block; + + transform: translateZ(0); + + pointer-events: none; +} + +ion-buttons button, +ion-buttons a, +ion-buttons input, +ion-buttons textarea, +ion-buttons div { + pointer-events: auto; +} + + +// Transparent Toolbar +// -------------------------------------------------- + +.toolbar[transparent] .toolbar-background { + border-color: transparent; + background: transparent; +} + + +// TODO this is a temp hack to fix segment overlapping ion-nav-item +ion-buttons, +.bar-button-menutoggle { + z-index: 99; + + transform: translateZ(0); +} + + +// Navbar +// -------------------------------------------------- + +ion-navbar.toolbar { + display: flex; + + transform: translateZ(0); +} diff --git a/packages/ionic/src/toolbar/toolbar.tsx b/packages/ionic/src/toolbar/toolbar.tsx new file mode 100644 index 0000000000..c9f7e1d9c7 --- /dev/null +++ b/packages/ionic/src/toolbar/toolbar.tsx @@ -0,0 +1,133 @@ +import { Component, h, Ionic } from '../index'; +import { createThemedClasses } from '../../util/theme'; +import { VNodeData } from '../../util/interfaces'; + + +/** + * @name Toolbar + * @description + * A Toolbar is a generic bar that is positioned above or below content. + * Unlike a [Navbar](../../navbar/Navbar), a toolbar can be used as a subheader. + * When toolbars are placed within an `` or ``, + * the toolbars stay fixed in their respective location. When placed within + * ``, toolbars will scroll with the content. + * + * + * ### Buttons in a Toolbar + * Buttons placed in a toolbar should be placed inside of the `` + * element. An exception to this is a [menuToggle](../../menu/MenuToggle) button. + * It should not be placed inside of the `` element. Both the + * `` element and the `menuToggle` can be positioned inside of the + * toolbar using different properties. The below chart has a description of each + * property. + * + * | Property | Description | + * |-------------|-----------------------------------------------------------------------------------------------------------------------| + * | `start` | Positions element to the left of the content in `ios` mode, and directly to the right in `md` and `wp` mode. | + * | `end` | Positions element to the right of the content in `ios` mode, and to the far right in `md` and `wp` mode. | + * | `left` | Positions element to the left of all other elements. | + * | `right` | Positions element to the right of all other elements. | + * + * + * ### Header / Footer Box Shadow and Border + * In `md` mode, the `` will receive a box-shadow on the bottom, and the + * `` will receive a box-shadow on the top. In `ios` mode, the `` + * will receive a border on the bottom, and the `` will receive a border on the + * top. Both the `md` box-shadow and the `ios` border can be removed by adding the `no-border` + * attribute to the element. + * + * ```html + * + * + * Header + * + * + * + * + * + * + * + * + * Footer + * + * + * ``` + * + * @usage + * + * ```html + * + * + * + * + * My Toolbar Title + * + * + * + * I'm a subheader + * + * + * + * + * + * + * + * + * Scrolls with the content + * + * + * + * + * + * + * + * + * I'm a footer + * + * + * + * ``` + * + * @demo /docs/demos/src/toolbar/ + * @see {@link ../../navbar/Navbar/ Navbar API Docs} + */ +@Component({ + tag: 'ion-toolbar', + styleUrls: { + ios: 'toolbar.ios.scss', + md: 'toolbar.md.scss', + wp: 'toolbar.wp.scss' + }, + host: { + theme: 'toolbar' + } +}) +export class Toolbar { + $el: HTMLElement; + mode: string; + color: string; + + hostData(): VNodeData { + return { + class: { + 'statusbar-padding': Ionic.config.getBoolean('statusbarPadding') + } + }; + } + + render() { + const backgroundCss = createThemedClasses(this.mode, this.color, 'toolbar-background'); + const contentCss = createThemedClasses(this.mode, this.color, 'toolbar-content'); + + return [ + , + , + , + , + , + + + + ]; + } +} diff --git a/packages/ionic/src/toolbar/toolbar.wp.scss b/packages/ionic/src/toolbar/toolbar.wp.scss new file mode 100644 index 0000000000..a7966c479a --- /dev/null +++ b/packages/ionic/src/toolbar/toolbar.wp.scss @@ -0,0 +1,328 @@ +@import "../../themes/ionic.globals.wp"; +@import "./toolbar"; +@import "./toolbar-button"; + + +// Windows Toolbar +// -------------------------------------------------- + +/// @prop - Order of the toolbar elements +$toolbar-order-wp: ( + back-button: 0, + menu-toggle-start: 1, + buttons-start: 2, + content: 3, + buttons-mode-start: 4, + buttons-mode-end: 5, + buttons-end: 6, + menu-toggle-end: 7, +); + +/// @prop - Font size of the toolbar button +$toolbar-wp-button-font-size: 1.4rem !default; + +/// @prop - Text color of the toolbar button +$toolbar-wp-button-color: color-contrast($colors-wp, $toolbar-wp-background, wp) !default; + +/// @prop - Border radius of the toolbar button +$toolbar-wp-button-border-radius: 2px !default; + +/// @prop - Font weight of the strong toolbar button +$toolbar-wp-button-strong-font-weight: bold !default; + +/// @prop - Height of the navigation bar +$navbar-wp-height: $toolbar-wp-height !default; + + +.toolbar-wp { + @include padding($toolbar-wp-padding); + + min-height: $toolbar-wp-height; +} + + +// Windows Toolbar Background +// -------------------------------------------------- + +.toolbar-background-wp { + border-color: $toolbar-wp-border-color; + background: $toolbar-wp-background; +} + + +// Windows Toolbar Content +// -------------------------------------------------- + +.toolbar-content-wp { + flex: 1; + order: map-get($toolbar-order-wp, content); + + min-width: 0; + max-width: 100%; +} + +@mixin wp-toolbar-theme($color-name, $color-base, $color-contrast) { + + .toolbar-wp-#{$color-name} .toolbar-background-wp { + background: $color-base; + } + + .toolbar-wp-#{$color-name} .bar-button-clear-wp, + .toolbar-wp-#{$color-name} .bar-button-default-wp, + .toolbar-wp-#{$color-name} .bar-button-outline-wp { + color: $color-contrast; + } + + .toolbar-wp-#{$color-name} .bar-button-outline-wp { + border-color: $color-contrast; + } + + .toolbar-wp-#{$color-name} { + @each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + @include wp-bar-button-default($color-name, $color-base, $color-contrast); + @include wp-bar-button-outline($color-name, $color-base, $color-contrast); + @include wp-bar-button-solid($color-name, $color-base, $color-contrast); + } + } +} + + +// Windows Toolbar Button Placement +// -------------------------------------------------- + +.bar-buttons-wp { + order: map-get($toolbar-order-wp, buttons-mode-start); + + transform: translateZ(0); +} + +.bar-buttons-wp[slot="start"] { + order: map-get($toolbar-order-wp, buttons-start); +} + +.bar-buttons-wp[slot="start"] .bar-button:first-child { + @include margin-horizontal(0, null); +} + +.bar-buttons-wp[slot="mode-end"] { + @include text-align(end); + + order: map-get($toolbar-order-wp, buttons-mode-end); +} + +.bar-buttons-wp[slot="end"] { + @include text-align(right); + + order: map-get($toolbar-order-wp, buttons-end); +} + + +// Windows Toolbar Button Default +// -------------------------------------------------- + +.bar-button-wp { + @include margin(0, .2rem); + @include padding(0, 5px); + @include border-radius($toolbar-wp-button-border-radius); + + height: 32px; + + border: 0; + font-size: $toolbar-wp-button-font-size; + font-weight: 500; + text-transform: uppercase; +} + +.bar-button-solid-wp, +.bar-button-outline-wp { + // restrict the ripple to button size + overflow: hidden; +} + +@mixin wp-bar-button-default($color-name, $color-base, $color-contrast) { + + .bar-button-#{$color-name}-wp, + .bar-button-clear-wp-#{$color-name}, + .bar-button-wp-#{$color-name} { + color: $color-base; + background-color: transparent; + + &:hover:not(.disable-hover) { + color: $color-base; + } + } + +} + + +// Windows Toolbar Button Outline +// -------------------------------------------------- + +.bar-button-outline-wp { + border-width: 1px; + border-style: solid; + border-color: $toolbar-wp-button-color; + color: $toolbar-wp-button-color; + background-color: transparent; + + &:hover:not(.disable-hover) { + opacity: .4; + } + + &.activated { + color: color-contrast($colors-wp, $toolbar-wp-button-color, wp); + background-color: $toolbar-wp-button-color; + } +} + +@mixin wp-bar-button-outline($color-name, $color-base, $color-contrast) { + + .bar-button-outline-wp-#{$color-name} { + $fg-color: color-shade($color-base); + border-color: $fg-color; + color: $fg-color; + background-color: transparent; + + &.activated { + color: $color-contrast; + background-color: $fg-color; + } + } + +} + + +// Windows Toolbar Button Solid +// -------------------------------------------------- + +.bar-button-solid-wp { + color: color-contrast($colors-wp, $toolbar-wp-button-color, wp); + background-color: $toolbar-wp-button-color; + + &:hover:not(.disable-hover) { + color: color-contrast($colors-wp, $toolbar-wp-button-color, wp); + } + + &.activated { + color: color-contrast($colors-wp, $toolbar-wp-button-color, wp); + background-color: color-shade($toolbar-wp-button-color); + } +} + +@mixin wp-bar-button-solid($color-name, $color-base, $color-contrast) { + + .bar-button-solid-wp-#{$color-name} { + color: $color-contrast; + background-color: $color-base; + + &.activated { + color: $color-contrast; + background-color: color-shade($color-base); + } + } + +} + + +// Windows Toolbar Button Icon +// -------------------------------------------------- + +.bar-button-wp ion-icon[slot="start"] { + @include padding-horizontal(null, .3em); + + font-size: 1.4em; + line-height: .67; + + pointer-events: none; +} + +.bar-button-wp ion-icon[slot="end"] { + @include padding-horizontal(.4em, null); + + font-size: 1.4em; + line-height: .67; + + pointer-events: none; +} + +.bar-button-wp ion-icon[slot="icon-only"] { + @include padding(0); + + min-width: 28px; + + font-size: 1.8em; + line-height: .67; + + pointer-events: none; +} + + +// Windows Toolbar Back Button +// -------------------------------------------------- + +.back-button-wp { + @include margin(0, 6px); + + min-width: 44px; + + box-shadow: none; +} + +.back-button-icon-wp { + @include text-align(start); + @include margin(0); + @include padding(0, 6px); + + font-size: 2.4rem; + font-weight: normal; +} + + +// Windows Toolbar Menu Toggle +// -------------------------------------------------- + +.bar-button-menutoggle-wp { + @include margin(0, 6px); + @include padding(0, 2px); + + order: map-get($toolbar-order-wp, menu-toggle-start); + + min-width: 44px; + + ion-icon { + @include padding(0, 6px); + + font-size: 2.4rem; + } +} + +.bar-button-menutoggle-wp[slot="mode-end"], +.bar-button-menutoggle-wp[slot="end"] { + @include margin(0, 2px); + + order: map-get($toolbar-order-wp, menu-toggle-end); + + min-width: 28px; +} + + +// Windows Toolbar Color Generation +// -------------------------------------------------- + +@include wp-bar-button-default(default, $toolbar-wp-button-color, color-contrast($colors-wp, $toolbar-wp-button-color, wp)); +@include wp-bar-button-default(clear, $toolbar-wp-button-color, color-contrast($colors-wp, $toolbar-wp-button-color, wp)); + +@each $color-name, $color-base, $color-contrast in get-colors($colors-wp) { + @include wp-toolbar-theme($color-name, $color-base, $color-contrast); + @include wp-bar-button-default($color-name, $color-base, $color-contrast); + @include wp-bar-button-outline($color-name, $color-base, $color-contrast); + @include wp-bar-button-solid($color-name, $color-base, $color-contrast); +} + + +// WP strong Button +// -------------------------------------------------- + +.bar-button-strong-wp { + font-weight: $toolbar-wp-button-strong-font-weight; +} \ No newline at end of file