nifi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From scottyas...@apache.org
Subject [3/3] nifi-fds git commit: install nifi-fds module and update systemjs paths
Date Sat, 24 Mar 2018 14:50:50 GMT
install nifi-fds module and update systemjs paths


Project: http://git-wip-us.apache.org/repos/asf/nifi-fds/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-fds/commit/a15fb7b4
Tree: http://git-wip-us.apache.org/repos/asf/nifi-fds/tree/a15fb7b4
Diff: http://git-wip-us.apache.org/repos/asf/nifi-fds/diff/a15fb7b4

Branch: refs/heads/gh-pages
Commit: a15fb7b4269e6b34d790775e82544f63495ac525
Parents: 2d47c86
Author: Scott Aslan <scottyaslan@gmail.com>
Authored: Sat Mar 24 10:50:39 2018 -0400
Committer: Scott Aslan <scottyaslan@gmail.com>
Committed: Sat Mar 24 10:50:39 2018 -0400

----------------------------------------------------------------------
 NOTICE                                          |   5 +
 index.html                                      |   2 +-
 node_modules/nifi-fds/Gruntfile.js              |  68 ++++++
 node_modules/nifi-fds/LICENSE                   | 240 +++++++++++++++++++
 node_modules/nifi-fds/NOTICE                    |   5 +
 node_modules/nifi-fds/README.md                 | 128 ++++++++++
 node_modules/nifi-fds/karma-test-shim.js        | 112 +++++++++
 node_modules/nifi-fds/karma.conf.js             | 134 +++++++++++
 node_modules/nifi-fds/package.json              |  97 ++++++++
 .../platform/core/common/fds-common.module.js   |  48 ++++
 .../platform/core/common/fds.animations.js      | 133 ++++++++++
 .../core/common/services/fds-storage.service.js | 219 +++++++++++++++++
 .../common/services/fds-storage.service.spec.js |  61 +++++
 .../core/common/styles/_basicElements.scss      | 130 ++++++++++
 .../core/common/styles/_buttonToggles.scss      |  98 ++++++++
 .../platform/core/common/styles/_buttons.scss   | 214 +++++++++++++++++
 .../core/common/styles/_checkboxes.scss         |  85 +++++++
 .../platform/core/common/styles/_chips.scss     |  69 ++++++
 .../core/common/styles/_expansionPanels.scss    |  62 +++++
 .../core/common/styles/_globalVars.scss         |  69 ++++++
 .../core/common/styles/_helperClasses.scss      |  85 +++++++
 .../platform/core/common/styles/_inputs.scss    | 109 +++++++++
 .../platform/core/common/styles/_links.scss     |  35 +++
 .../platform/core/common/styles/_menus.scss     | 118 +++++++++
 .../platform/core/common/styles/_modals.scss    |  23 ++
 .../platform/core/common/styles/_panels.scss    |  54 +++++
 .../platform/core/common/styles/_radios.scss    |  56 +++++
 .../platform/core/common/styles/_sideNav.scss   |  20 ++
 .../platform/core/common/styles/_stepper.scss   |  20 ++
 .../platform/core/common/styles/_tables.scss    | 118 +++++++++
 .../platform/core/common/styles/_tabs.scss      |  41 ++++
 .../platform/core/common/styles/_tooltips.scss  |  24 ++
 .../styles/css/fluid-design-system.min.css      |   3 +
 .../styles/css/fluid-design-system.min.css.gz   | Bin 0 -> 3176 bytes
 .../styles/css/fluid-design-system.min.css.map  |  27 +++
 .../core/common/styles/fluid-design-system.scss |  35 +++
 .../core/dialogs/_fds-dialog-component.scss     |  21 ++
 .../confirm-dialog.component.html               |  45 ++++
 .../confirm-dialog/confirm-dialog.component.js  |  64 +++++
 .../confirm-dialog.component.spec.js            |  50 ++++
 .../core/dialogs/fds-dialog.component.html      |  29 +++
 .../core/dialogs/fds-dialog.component.js        |  85 +++++++
 .../core/dialogs/fds-dialogs.component.spec.js  |  32 +++
 .../platform/core/dialogs/fds-dialogs.module.js |  87 +++++++
 .../core/dialogs/services/dialog.service.js     | 134 +++++++++++
 .../platform/core/fluid-design-system.module.js | 155 ++++++++++++
 .../snackbars/coaster/_coaster.component.scss   |  63 +++++
 .../snackbars/coaster/coaster.component.html    |  33 +++
 .../core/snackbars/coaster/coaster.component.js |  70 ++++++
 .../snackbars/coaster/coaster.component.spec.js |  32 +++
 .../core/snackbars/fds-snackbar.component.html  |  29 +++
 .../core/snackbars/fds-snackbar.component.js    |  85 +++++++
 .../snackbars/fds-snackbar.component.spec.js    |  32 +++
 .../core/snackbars/fds-snackbars.module.js      |  87 +++++++
 .../core/snackbars/services/snackbar.service.js | 132 ++++++++++
 .../platform/core/theming/_all-theme.scss       |  36 +++
 .../platform/systemjs-angular-loader.js         |  66 +++++
 .../nifi-fds/platform/systemjs.spec.config.js   | 106 ++++++++
 package-lock.json                               |  23 ++
 .../fluid-design-system/fds-demo.html           |   4 +-
 webapp/systemjs.config.js                       |  18 +-
 61 files changed, 4253 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..50b77ff
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,5 @@
+Apache NiFi Fluid Design System
+Copyright 2014-2018 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index a821920..0a6213d 100644
--- a/index.html
+++ b/index.html
@@ -23,7 +23,7 @@
     <meta name='viewport' content='width=device-width, initial-scale=1'>
     <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
     <link rel="stylesheet" href="node_modules/@covalent/core/common/platform.css">
-    <link rel="stylesheet" href='node_modules/fluid-design-system/platform/core/common/styles/css/fluid-design-system.min.css'/>
+    <link rel="stylesheet" href='node_modules/nifi-fds/platform/core/common/styles/css/fluid-design-system.min.css'/>
     <link rel="stylesheet" href='webapp/css/fds-demo.min.css'/>
     <link rel='stylesheet' href='node_modules/font-awesome/css/font-awesome.css'/>
 </head>

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/Gruntfile.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/Gruntfile.js b/node_modules/nifi-fds/Gruntfile.js
new file mode 100644
index 0000000..f4f8ae7
--- /dev/null
+++ b/node_modules/nifi-fds/Gruntfile.js
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+module.exports = function (grunt) {
+    // load all grunt tasks matching the ['grunt-*', '@*/grunt-*'] patterns
+    require('load-grunt-tasks')(grunt);
+
+    grunt.initConfig({
+        sass: {
+            options: {
+                outputStyle: 'compressed',
+                sourceMap: true
+            },
+            minifyFds: {
+                files: [{
+                    './platform/core/common/styles/css/fluid-design-system.min.css': ['./platform/core/common/styles/fluid-design-system.scss']
+                }]
+            }
+        },
+        compress: {
+            options: {
+                mode: 'gzip'
+            },
+            fdsStyles: {
+                files: [{
+                    expand: true,
+                    src: ['./platform/core/common/styles/css/fluid-design-system.min.css'],
+                    dest: './',
+                    ext: '.min.css.gz'
+                }]
+            }
+        },
+        bump: {
+            options: {
+                files: ['package.json'],
+                updateConfigs: [],
+                commit: true,
+                commitMessage: 'Release FDS-%VERSION%',
+                commitFiles: ['-a'],
+                createTag: true,
+                tagName: 'FDS-%VERSION%',
+                tagMessage: 'Version FDS-%VERSION%',
+                push: true,
+                pushTo: 'origin',
+                gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
+                globalReplace: false,
+                prereleaseName: 'RC',
+                metadata: '',
+                regExp: false
+            }
+        }
+    });
+    grunt.registerTask('compile-fds-styles', ['sass:minifyFds', 'compress:fdsStyles']);
+};

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/LICENSE
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/LICENSE b/node_modules/nifi-fds/LICENSE
new file mode 100644
index 0000000..c7c91cd
--- /dev/null
+++ b/node_modules/nifi-fds/LICENSE
@@ -0,0 +1,240 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+This product bundles 'Apache NiFi Registry' source code which is available under an ASLv2 license.
+
+    Copyright (c) 2018 Apache NiFi Registry https://nifi.apache.org/registry.html
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+This product bundles 'Angular Quickstart' which is available under an MIT license.
+
+    Copyright (c) 2010-2016 Google, Inc. http://angularjs.org
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/NOTICE
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/NOTICE b/node_modules/nifi-fds/NOTICE
new file mode 100644
index 0000000..50b77ff
--- /dev/null
+++ b/node_modules/nifi-fds/NOTICE
@@ -0,0 +1,5 @@
+Apache NiFi Fluid Design System
+Copyright 2014-2018 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/README.md
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/README.md b/node_modules/nifi-fds/README.md
new file mode 100644
index 0000000..5ac1f90
--- /dev/null
+++ b/node_modules/nifi-fds/README.md
@@ -0,0 +1,128 @@
+# Apache NiFi Fluid Design System
+
+The Apache NiFi Fluid Design System module is an atomic reusable platform providing consistent set of UI/UX components for open source friendly web applications to consume. Checkout the demo web application on the `gh-pages` branch to see a complete example of an Angular application that leverages this NGModule. This demo application allows users to interact with and provides sample code for the available UI/UX components: [https://apache.github.io/nifi-fds/](https://apache.github.io/nifi-fds/).
+
+#### npm
+
+For developers not interested in building the FDS NgModule you can use **npm** to install the distribution files.
+
+```bash
+npm install nifi-fds
+```
+
+## Setup
+
+Import the **Fluid Design System** NgModule into your angular application:
+
+```javascript
+var fdsCore = require('fluid-design-system/core');
+AppModule.prototype = {
+    constructor: AppModule
+};
+
+AppModule.annotations = [
+    new ngCore.NgModule({
+        imports: [
+            fdsCore,
+    ...
+  ],
+  ...
+})
+...
+```
+
+## Styles, Icons and Theming
+
+A typical theme file will look something like this:
+
+```javascript
+@import '../../platform/core/theming/all-theme';
+
+$primaryColor: #9E737D;
+$primaryColorHover: #915D69;
+$accentColor: #d0dbe0;
+$accentColorHover: #CCCCCC;
+
+// Include the base styles for Angular Material core. We include this here so that you only
+// have to load a single css file for Angular Material in your app.
+@include mat-core;
+
+// Define the palettes
+$fds-base-palette: (50: #89df79, 100: $primaryColorHover, 200: #65d550, 300: #53d03b, 400: #46c32f, 500: $primaryColor, 600: $primaryColor, 700: #89df79, 800: #29701b, 900: #215c16, A100: #9be48d, A200: #ade9a2, A400: #bfedb6, A700: #1a4711, contrast: (50: $black-87-opacity, 100: $black-87-opacity, 200: $black-87-opacity, 300: white, 400: white, 500: $white-87-opacity, 600: $white-87-opacity, 700: $white-87-opacity, 800: $white-87-opacity, 900: $white-87-opacity, A100: $black-87-opacity, A200: white, A400: white, A700: $white-87-opacity));
+$fds-accent-palette: (50: #89df79, 100: $accentColorHover, 200: #65d550, 300: #53d03b, 400: #46c32f, 500: $accentColor, 600: $accentColor, 700: #89df79, 800: #29701b, 900: #215c16, A100: #9be48d, A200: #ade9a2, A400: #bfedb6, A700: #1a4711, contrast: (50: $black-87-opacity, 100: $black-87-opacity, 200: $black-87-opacity, 300: white, 400: white, 500: $white-87-opacity, 600: $white-87-opacity, 700: $white-87-opacity, 800: $white-87-opacity, 900: $white-87-opacity, A100: $black-87-opacity, A200: white, A400: white, A700: $white-87-opacity));
+$fds-warn-palette: (50: #81410f, 100: #D14A50, 200: #af5814, 300: #c66317, 400: #dd6f19, 500: $warnColor, 600: $warnColor, 700: #eea66e, 800: #f1b485, 900: #f4c29b, A100: #ec9857, A200: #89df79, A400: #89df79, A700: #f6d0b2, contrast: (50: $black-87-opacity, 100: $black-87-opacity, 200: $black-87-opacity, 300: white, 400: white, 500: $white-87-opacity, 600: $white-87-opacity, 700: $white-87-opacity, 800: $white-87-opacity, 900: $white-87-opacity, A100: $black-87-opacity, A200: white, A400: white, A700: $white-87-opacity));
+$fds-primary: mat-palette($fds-base-palette, 500, 100, 500);
+$fds-accent: mat-palette($fds-accent-palette, 500, 100, 500);
+$fds-warn: mat-palette($fds-warn-palette, 500, 100, 500);
+
+// Define the theme (Optionally specify a default, lighter, and darker hue.)
+$fds-theme: mat-light-theme($fds-primary, $fds-accent, $fds-warn);
+
+// FDS theme mixin
+@include fds-theme($fds-theme);
+```
+
+NiFi Fluid Design System UI/UX Platform comes with a base CSS file `node_modules/fluid-design-system/core/common/styles/css/fluid-design-system.min.css` (includes icons).
+
+## Building
+
+Developers can easily build this project using **npm**.
+
+First install or update your local project's **npm** tools:
+
+```bash
+npm install
+```
+
+Next run:
+
+```bash
+npm run build
+```
+
+## Testing
+
+Developers can easily test this project using **npm**.
+
+```bash
+npm test
+```
+
+Or, during development:
+
+```bash
+npm run test:dev
+```
+
+## Release Managment
+
+For developers with permissions releasing a new version of the NiFi Fluid Design System is simple with [grunt bump](https://github.com/vojtajina/grunt-bump)
+
+## Running the demo locally
+
+For developers that would like to contribute to the demo please checkout the `gh-pages` branch:
+
+```bash
+git checkout gh-pages
+```
+
+Next, you will need to update the base url. To do this simply edit the index.html file on line 21:
+
+```bash
+<base href='/fluid-design-system/'>
+```
+
+should be:
+
+```bash
+<base href='/'>
+```
+
+Finally, start the application:
+
+```bash
+npm start
+```
+
+The demo application should now be availalbe at: [http://127.0.0.1:8080/](http://127.0.0.1:8080/).
+

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/karma-test-shim.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/karma-test-shim.js b/node_modules/nifi-fds/karma-test-shim.js
new file mode 100644
index 0000000..eeeb18d
--- /dev/null
+++ b/node_modules/nifi-fds/karma-test-shim.js
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// /*global jasmine, __karma__, window*/
+Error.stackTraceLimit = 0; // "No stacktrace"" is usually best for app testing.
+
+// Uncomment to get full stacktrace output. Sometimes helpful, usually not.
+// Error.stackTraceLimit = Infinity; //
+
+jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;
+
+// builtPaths: root paths for output ("built") files
+// get from karma.config.js, then prefix with '/base/'
+var builtPaths = (__karma__.config.builtPaths)
+    .map(function (p) {
+        return '/base/' + p;
+    });
+
+__karma__.loaded = function () {
+};
+
+function isJsFile(path) {
+    return path.slice(-3) == '.js';
+}
+
+function isSpecFile(path) {
+    return /\.spec\.(.*\.)?js$/.test(path);
+}
+
+// Is a "built" file if is JavaScript file in one of the "built" folders
+function isBuiltFile(path) {
+    return isJsFile(path) &&
+        builtPaths.reduce(function (keep, bp) {
+            return keep || (path.substr(0, bp.length) === bp);
+        }, false);
+}
+
+var allSpecFiles = Object.keys(window.__karma__.files)
+    .filter(isSpecFile)
+    .filter(isBuiltFile);
+
+System.config({
+    // Base URL for System.js calls. 'base/' is where Karma serves files from.
+    baseURL: 'base',
+
+    // Map the angular testing umd bundles
+    map: {
+        '@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js',
+        '@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js',
+        '@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js',
+        '@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js',
+        '@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js',
+        '@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js',
+        '@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js',
+        '@angular/forms/testing': 'npm:@angular/forms/bundles/forms-testing.umd.js'
+    }
+});
+
+System.import('platform/systemjs.spec.config.js')
+    .then(initTestBed)
+    .then(initTesting);
+
+/** Optional SystemJS configuration extras. Keep going w/o it */
+function importSystemJsExtras() {
+    return System.import('platform/systemjs.config.extras.js')
+        .catch(function (reason) {
+            console.log(
+                'Warning: System.import could not load the optional "systemjs.config.extras.js". Did you omit it by accident? Continuing without it.'
+            );
+            console.log(reason);
+        });
+}
+
+function initTestBed() {
+    return Promise.all([
+        System.import('@angular/core/testing'),
+        System.import('@angular/platform-browser-dynamic/testing')
+    ])
+
+        .then(function (providers) {
+            var coreTesting = providers[0];
+            var browserTesting = providers[1];
+
+            coreTesting.TestBed.initTestEnvironment(
+                browserTesting.BrowserDynamicTestingModule,
+                browserTesting.platformBrowserDynamicTesting());
+        })
+}
+
+// Import all spec files and start karma
+function initTesting() {
+    return Promise.all(
+        allSpecFiles.map(function (moduleName) {
+            return System.import(moduleName);
+        })
+    )
+        .then(__karma__.start, __karma__.error);
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/karma.conf.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/karma.conf.js b/node_modules/nifi-fds/karma.conf.js
new file mode 100644
index 0000000..4b0f692
--- /dev/null
+++ b/node_modules/nifi-fds/karma.conf.js
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+module.exports = function (config) {
+
+    var appBase = 'platform/';       // app JS and map files
+
+    config.set({
+        basePath: '',
+        browserNoActivityTimeout: 9999999, //default 10000
+        browserDisconnectTimeout: 999999, // default 2000
+        browserDisconnectTolerance: 1, // default 0
+        captureTimeout: 999999,
+        frameworks: ['jasmine'],
+        customLaunchers: {
+            Chrome_travis_ci: {
+                base: 'ChromeHeadless',
+                flags: ['--no-sandbox']
+            }
+        },
+        plugins: [
+            require('karma-jasmine'),
+            require('karma-chrome-launcher'),
+            require('karma-jasmine-html-reporter'),
+            require('karma-spec-reporter'),
+            require('karma-coverage')
+        ],
+
+        client: {
+            builtPaths: [appBase], // add more spec base paths as needed
+            clearContext: false // leave Jasmine Spec Runner output visible in browser
+        },
+
+        files: [
+            // System.js for module loading
+            'node_modules/systemjs/dist/system.src.js',
+
+            // Polyfills
+            'node_modules/core-js/client/shim.js',
+
+            // zone.js
+            'node_modules/zone.js/dist/zone.js',
+            'node_modules/zone.js/dist/long-stack-trace-zone.js',
+            'node_modules/zone.js/dist/proxy.js',
+            'node_modules/zone.js/dist/sync-test.js',
+            'node_modules/zone.js/dist/jasmine-patch.js',
+            'node_modules/zone.js/dist/async-test.js',
+            'node_modules/zone.js/dist/fake-async-test.js',
+
+            // RxJs
+            {pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false},
+            {pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false},
+
+            // Paths loaded via module imports:
+            {pattern: 'node_modules/systemjs/**/*.js.map', included: false, watched: false},
+            {pattern: 'node_modules/@angular/**/*.js', included: false, watched: false},
+            {pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false},
+            {pattern: 'node_modules/jquery/**/*.js', included: false, watched: false},
+            {pattern: 'node_modules/systemjs-plugin-text/text.js', included: false, watched: false},
+
+            {pattern: appBase + 'systemjs.spec.config.js', included: false, watched: false},
+            'karma-test-shim.js', // optionally extend SystemJS mapping e.g., with barrels
+
+            // Include the Fluid Design System templates in the test suite.
+            {
+                pattern: 'platform/core/**/*.html',
+                included: true,
+                watched: true,
+                served: true
+            },
+
+            // Paths for debugging with source maps in dev tools
+            {pattern: appBase + '**/*.css.map', included: false, watched: false},
+            {pattern: appBase + '**/*.js', included: false, watched: false}
+        ],
+
+        // Proxied base paths for loading assets
+        proxies: {
+            // required for modules fetched by SystemJS
+            '/base/fds/node_modules/': '/base/node_modules/',
+            '/base/systemjs-angular-loader.js': '/base/platform/systemjs-angular-loader.js',
+            '/base/fds/': '/base/platform/'
+        },
+
+        exclude: [],
+        preprocessors: {
+            'platform/**/!(*spec|*mock|*stub|*config|*extras|).js': 'coverage'
+        },
+        reporters: ['kjhtml', 'spec', 'coverage'],
+        coverageReporter: {
+            type: 'html',
+            dir: 'coverage/'
+        },
+        specReporter: {
+            failFast: false
+        },
+        port: 9876,
+        colors: true,
+        logLevel: config.LOG_INFO,
+        autoWatch: true,
+        browsers: ['Chrome'],
+        singleRun: false
+    });
+
+    if (process.env.TRAVIS) {
+        config.set({
+            browsers: ['Chrome_travis_ci']
+        });
+
+        // Override base config
+        config.set({
+            singleRun: true,
+            autoWatch: false,
+            reporters: ['spec', 'coverage'],
+            specReporter: {
+                failFast: true
+            }
+        });
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/package.json
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/package.json b/node_modules/nifi-fds/package.json
new file mode 100644
index 0000000..72296e0
--- /dev/null
+++ b/node_modules/nifi-fds/package.json
@@ -0,0 +1,97 @@
+{
+  "_from": "git://github.com/apache/nifi-fds.git",
+  "_id": "nifi-fds@0.0.1",
+  "_inBundle": false,
+  "_location": "/nifi-fds",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "git",
+    "raw": "git://github.com/apache/nifi-fds.git",
+    "rawSpec": "git://github.com/apache/nifi-fds.git",
+    "saveSpec": "git://github.com/apache/nifi-fds.git",
+    "fetchSpec": "git://github.com/apache/nifi-fds.git",
+    "gitCommittish": null
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "git://github.com/apache/nifi-fds.git#3567be34f6b26acd4b4b6e341b04afa44b054015",
+  "_spec": "git://github.com/apache/nifi-fds.git",
+  "_where": "/Users/scottyaslan/Development/nifi-fds",
+  "author": {
+    "name": "Scott Aslan"
+  },
+  "bugs": {
+    "url": "https://github.com/apache/nifi-fds/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Scott Aslan",
+      "email": "scottyaslan@gmail.com"
+    }
+  ],
+  "dependencies": {
+    "@angular/animations": "4.4.6",
+    "@angular/cdk": "2.0.0-beta.12",
+    "@angular/common": "4.4.6",
+    "@angular/compiler": "4.4.6",
+    "@angular/core": "4.4.6",
+    "@angular/flex-layout": "2.0.0-beta.9",
+    "@angular/forms": "4.4.6",
+    "@angular/http": "4.4.6",
+    "@angular/material": "2.0.0-beta.12",
+    "@angular/platform-browser": "4.4.6",
+    "@angular/platform-browser-dynamic": "4.4.6",
+    "@angular/router": "4.4.6",
+    "jquery": "3.2.1",
+    "roboto-fontface": "0.7.0",
+    "rxjs": "5.4.3",
+    "systemjs": "0.20.17",
+    "systemjs-plugin-text": "0.0.11",
+    "zone.js": "0.8.7"
+  },
+  "deprecated": false,
+  "description": "The Apache NiFi Fluid Design System module is an atomic reusable platform providing consistent set of UI/UX components for open source friendly web applications to consume.",
+  "devDependencies": {
+    "grunt": "0.4.5",
+    "grunt-bump": "^0.8.0",
+    "grunt-cli": "1.2.0",
+    "grunt-contrib-compress": "1.4.3",
+    "grunt-sass": "2.0.0",
+    "jasmine-core": "2.8.0",
+    "karma": "1.7.1",
+    "karma-chrome-launcher": "2.2.0",
+    "karma-cli": "1.0.1",
+    "karma-coverage": "1.1.1",
+    "karma-jasmine": "1.1.1",
+    "karma-jasmine-html-reporter": "0.2.2",
+    "karma-spec-reporter": "0.0.31",
+    "load-grunt-tasks": "3.5.2",
+    "protractor": "4.0.14"
+  },
+  "homepage": "https://github.com/apache/nifi-fds#readme",
+  "keywords": [
+    "fluid design system",
+    "angular",
+    "material",
+    "material design",
+    "components",
+    "reusable",
+    "covalent"
+  ],
+  "license": "Apache License, Version 2.0",
+  "module": "./platform/core/fluid-design-system.module.js",
+  "name": "nifi-fds",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/apache/nifi-fds.git"
+  },
+  "scripts": {
+    "build": "./node_modules/grunt-cli/bin/grunt compile-fds-styles",
+    "test": "./node_modules/protractor/bin/webdriver-manager update --gecko false && karma start karma.conf.js --single-run",
+    "test:dev": "./node_modules/protractor/bin/webdriver-manager update --gecko false && karma start karma.conf.js"
+  },
+  "version": "0.0.1"
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/fds-common.module.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/fds-common.module.js b/node_modules/nifi-fds/platform/core/common/fds-common.module.js
new file mode 100644
index 0000000..32b5512
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/fds-common.module.js
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var ngCore = require('@angular/core');
+var fdsStorageServiceModule = require('@fluid-design-system/storage-service');
+
+/**
+ * FdsCommonsModule constructor.
+ *
+ * @constructor
+ */
+function FdsCommonsModule() {
+
+};
+
+FdsCommonsModule.prototype = {
+    constructor: FdsCommonsModule
+};
+
+FdsCommonsModule.annotations = [
+    new ngCore.NgModule({
+        imports: [],
+        declarations: [],
+        exports: [],
+        providers: [
+            fdsStorageServiceModule.FdsStorageService
+        ]
+    })
+];
+
+module.exports = {
+    FdsCommonsModule: FdsCommonsModule,
+    FdsStorageService: fdsStorageServiceModule.FdsStorageService
+};

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/fds.animations.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/fds.animations.js b/node_modules/nifi-fds/platform/core/common/fds.animations.js
new file mode 100644
index 0000000..90cb660
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/fds.animations.js
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var ngAnimate = require('@angular/animations');
+
+/**
+ * FdsAnimations constructor.
+ *
+ * @constructor
+ */
+function FdsAnimations() {
+};
+
+FdsAnimations.prototype = {
+    constructor: FdsAnimations,
+
+    /**
+     * Fade animation
+     */
+    fadeAnimation: ngAnimate.trigger('routeAnimation', [
+        ngAnimate.state('*',
+            ngAnimate.style({
+                opacity: 1
+            })
+        ),
+        ngAnimate.transition(':enter', [
+            ngAnimate.style({
+                opacity: 0
+            }),
+            ngAnimate.animate('0.5s ease-in')
+        ]),
+        ngAnimate.transition(':leave', [
+            ngAnimate.animate('0.5s ease-out', ngAnimate.style({
+                opacity: 0
+            }))
+        ])
+    ]),
+
+    /**
+     * Slide in from the left animation
+     */
+    slideInLeftAnimation: ngAnimate.trigger('routeAnimation', [
+        ngAnimate.state('*',
+            ngAnimate.style({
+                opacity: 1,
+                transform: 'translateX(0)'
+            })
+        ),
+        ngAnimate.transition(':enter', [
+            ngAnimate.style({
+                opacity: 0,
+                transform: 'translateX(-100%)'
+            }),
+            ngAnimate.animate('0.5s ease-in')
+        ]),
+        ngAnimate.transition(':leave', [
+            ngAnimate.animate('0.5s ease-out', ngAnimate.style({
+                opacity: 0,
+                transform: 'translateX(100%)'
+            }))
+        ])
+    ]),
+
+    /**
+     * Slide in from the top animation
+     */
+    slideInDownAnimation: ngAnimate.trigger('routeAnimation', [
+        ngAnimate.state('*',
+            ngAnimate.style({
+                opacity: 1,
+                transform: 'translateY(0)'
+            })
+        ),
+        ngAnimate.transition(':enter', [
+            ngAnimate.style({
+                opacity: 0,
+                transform: 'translateY(-100%)'
+            }),
+            ngAnimate.animate('0.5s ease-in')
+        ]),
+        ngAnimate.transition(':leave', [
+            ngAnimate.animate('0.5s ease-out', ngAnimate.style({
+                opacity: 0,
+                transform: 'translateY(100%)'
+            }))
+        ])
+    ]),
+
+    /**
+     * Fly in/out animation
+     */
+    flyInOutAnimation: ngAnimate.trigger('flyInOut', [
+        ngAnimate.state('in',
+            ngAnimate.style({transform: 'translateX(0)'})
+        ),
+        ngAnimate.transition('void => *', [
+            ngAnimate.style({transform: 'translateX(100%)'}),
+            ngAnimate.animate('0.4s 0.1s ease-in')
+        ]),
+        ngAnimate.transition('* => void', ngAnimate.animate('0.2s ease-out', ngAnimate.style({transform: 'translateX(-100%)'})))
+    ]),
+
+    /**
+     * Fly in/out animation
+     */
+    fadeInOutAnimation: ngAnimate.trigger('fadeInOut', [
+        ngAnimate.state('in',
+            ngAnimate.style({opacity: 1})
+        ),
+        ngAnimate.transition('void => *', [
+            ngAnimate.style({opacity: 0}),
+            ngAnimate.animate('0.5s 0.1s ease-in')
+        ]),
+        ngAnimate.transition('* => void', ngAnimate.animate('0.5s ease-out', ngAnimate.style({opacity: 0})))
+    ])
+
+};
+
+module.exports = new FdsAnimations();

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.js b/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.js
new file mode 100644
index 0000000..8dff679
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.js
@@ -0,0 +1,219 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Store items for two days before being eligible for removal.
+var MILLIS_PER_DAY = 86400000;
+var TWO_DAYS = MILLIS_PER_DAY * 2;
+
+var isUndefined = function (obj) {
+    return typeof obj === 'undefined';
+};
+
+var isNull = function (obj) {
+    return obj === null;
+};
+
+var isDefinedAndNotNull = function (obj) {
+    return !isUndefined(obj) && !isNull(obj);
+};
+
+/**
+ * Checks the expiration for the specified entry.
+ *
+ * @param {object} entry
+ * @returns {boolean}
+ */
+var checkExpiration = function (entry) {
+    if (isDefinedAndNotNull(entry.expires)) {
+        // get the expiration
+        var expires = new Date(entry.expires);
+        var now = new Date();
+
+        // return whether the expiration date has passed
+        return expires.valueOf() < now.valueOf();
+    } else {
+        return false;
+    }
+};
+
+/**
+ * Gets an enty for the key. The entry expiration is not checked.
+ *
+ * @param {string} key
+ */
+var getEntry = function (key) {
+    try {
+        // parse the entry
+        var entry = JSON.parse(localStorage.getItem(key));
+
+        // ensure the entry and item are present
+        if (isDefinedAndNotNull(entry)) {
+            return entry;
+        } else {
+            return null;
+        }
+    } catch (e) {
+        return null;
+    }
+};
+
+/**
+ * FdsStorageService constructor.
+ * @constructor
+ */
+function FdsStorageService() {
+};
+
+FdsStorageService.prototype = {
+    constructor: FdsStorageService,
+    /**
+     * Initializes the storage. Items will be persisted for two days. Once the scripts runs
+     * thereafter, all eligible items will be removed. This strategy does not support persistence.
+     */
+    init: function () {
+        for (var i = 0; i < localStorage.length; i++) {
+            try {
+                // get the next item
+                var key = localStorage.key(i);
+
+                // attempt to get the item which will expire if necessary
+                this.getItem(key);
+            } catch (e) {
+            }
+        }
+    },
+
+    /**
+     * Stores the specified item.
+     *
+     * @param {string} key
+     * @param {object} item
+     * @param {integer} expires
+     */
+    setItem: function (key, item, expires) {
+        // calculate the expiration
+        expires = isDefinedAndNotNull(expires) ? expires : new Date().valueOf() + TWO_DAYS;
+
+        // create the entry
+        var entry = {
+            expires: expires,
+            item: item
+        };
+
+        // store the item
+        localStorage.setItem(key, JSON.stringify(entry));
+    },
+
+    /**
+     * Returns whether there is an entry for this key. This will not check the expiration. If
+     * the entry is expired, it will return null on a subsequent getItem invocation.
+     *
+     * @param {string} key
+     * @returns {boolean}
+     */
+    hasItem: function (key) {
+        return getEntry(key) !== null;
+    },
+
+    /**
+     * Gets the item with the specified key. If an item with this key does
+     * not exist, null is returned. If an item exists but cannot be parsed
+     * or is malformed/unrecognized, null is returned.
+     *
+     * @param {type} key
+     */
+    getItem: function (key) {
+        var entry = getEntry(key);
+        if (entry === null) {
+            return null;
+        }
+
+        // if the entry is expired, drop it and return null
+        if (checkExpiration(entry)) {
+            this.removeItem(key);
+            return null;
+        }
+
+        // if the entry has the specified field return its value
+        if (isDefinedAndNotNull(entry['item'])) {
+            return entry['item'];
+        } else {
+            return null;
+        }
+    },
+
+    /**
+     * Gets the expiration for the specified item. This will not check the expiration. If
+     * the entry is expired, it will return null on a subsequent getItem invocation.
+     *
+     * @param {string} key
+     * @returns {integer}
+     */
+    getItemExpiration: function (key) {
+        var entry = getEntry(key);
+        if (entry === null) {
+            return null;
+        }
+
+        // if the entry has the specified field return its value
+        if (isDefinedAndNotNull(entry['expires'])) {
+            return entry['expires'];
+        } else {
+            return null;
+        }
+    },
+
+    /**
+     * Extracts the subject from the specified jwt. If the jwt is not as expected
+     * an empty string is returned.
+     *
+     * @param {string} jwt
+     * @returns {string}
+     */
+    getJwtPayload: function (jwt) {
+        if (isDefinedAndNotNull(jwt)) {
+            var segments = jwt.split(/\./);
+            if (segments.length !== 3) {
+                return '';
+            }
+
+            var rawPayload = window.atob(segments[1]);
+            var payload = JSON.parse(rawPayload);
+
+            if (isDefinedAndNotNull(payload)) {
+                return payload;
+            } else {
+                return null;
+            }
+        }
+
+        return null;
+    },
+
+    /**
+     * Removes the item with the specified key.
+     *
+     * @param {type} key
+     */
+    removeItem: function (key) {
+        localStorage.removeItem(key);
+    }
+};
+
+FdsStorageService.parameters = [];
+
+module.exports = FdsStorageService;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.spec.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.spec.js b/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.spec.js
new file mode 100644
index 0000000..f990af1
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.spec.js
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var FdsStorageService = require('@fluid-design-system/common/storage-service');
+
+describe('FdsStorageService isolated unit tests', function () {
+    var fdsStorage;
+
+    beforeEach(function () {
+        fdsStorage = new FdsStorageService();
+    });
+
+    it('should set, retrieve, and remove an item from local storage.', function () {
+        fdsStorage.init();
+
+        var jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ';
+        var expiration;
+        var item;
+
+        if (!fdsStorage.hasItem('jwt')) {
+            fdsStorage.setItem('jwt', jwt);
+            item = fdsStorage.getItem('jwt');
+
+            //assertions
+            expect(item).toBe('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ');
+
+            var payload = fdsStorage.getItemExpiration('jwt');
+
+            fdsStorage.removeItem('jwt');
+            item = fdsStorage.getItem('jwt');
+
+            //assertions
+            expect(item).toBe(null);
+        }
+    });
+
+    it('should get jet payload.', function () {
+
+        var jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ';
+
+        var payload = fdsStorage.getJwtPayload(jwt);
+
+        //assertions
+        expect(payload).toBeDefined();
+        expect(payload.sub).toBe('1234567890');
+    });
+});

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_basicElements.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_basicElements.scss b/node_modules/nifi-fds/platform/core/common/styles/_basicElements.scss
new file mode 100644
index 0000000..76c3a58
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_basicElements.scss
@@ -0,0 +1,130 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  src: local("Roboto Light"), local("Roboto-Light"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Light.ttf") format("truetype");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 300;
+  src: local("Roboto LightItalic"), local("Roboto-LightItalic"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-LightItalic.ttf") format("truetype");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: normal;
+  src: local("Roboto Regular"), local("Roboto-Regular"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Regular.ttf") format("truetype");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  src: local("Roboto Medium"), local("Roboto-Medium"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Medium.ttf") format("truetype");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: bold;
+  src: local("Roboto Bold"), local("Roboto-Bold"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Bold.ttf") format("truetype");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: normal;
+  src: local("Roboto Italic"), local("Roboto-Italic"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.ttf") format("truetype");
+}
+
+@font-face {
+  font-family: 'Roboto Slab';
+  font-style: normal;
+  font-weight: normal;
+  src: local("RobotoSlab Regular"), local("RobotoSlab-Regular"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.ttf") format("truetype");
+}
+
+@font-face {
+  font-family: 'Roboto Slab';
+  font-style: normal;
+  font-weight: bold;
+  src: local("RobotoSlab Bold"), local("RobotoSlab-Bold"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.ttf") format("truetype");
+}
+
+body,
+html {
+  height: 100%;
+}
+
+body,
+button,
+input,
+label,
+select,
+td,
+textarea {
+  font-family: $fontPrimary;
+  font-size: 14px;
+}
+
+body {
+  color: $bodyTextColor;
+}
+
+strong {
+  font-weight: bold;
+}
+
+pre {
+  overflow-x: auto;
+}
+
+em {
+  font-style: italic;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  font-family: $fontPrimary;
+  font-weight: normal;
+  font-style: normal;
+  background: #FFFFFF;
+}
+
+h1 {
+  color: $pageHeaderTextColor;
+}
+
+h2 {
+  color: $subHeaderTextColor;
+}
+
+table {
+  font-family: $fontPrimary;
+  font-size: 13px;
+  color: $grey2;
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_buttonToggles.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_buttonToggles.scss b/node_modules/nifi-fds/platform/core/common/styles/_buttonToggles.scss
new file mode 100644
index 0000000..73f4263
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_buttonToggles.scss
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+body[fds] .expansion-panel-filter-toggle-group {
+  box-shadow: none !important;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .mat-button-toggle {
+  height: 75px;
+  width: 125px;
+  border: 1px solid $grey4;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .mat-button-toggle-label-content {
+  height: 100%;
+  width: 100%;
+  padding: 0;
+  line-height: 63px;
+  text-align: center;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .mat-button-toggle-checked {
+  background-color: $blue-grey1;
+  color: white;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .mat-button-toggle-checked .md-display-1 {
+  color: white;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .md-display-1 {
+  color: $blue-grey1;
+}
+
+body[fds] .expansion-panel-filter-toggle-group div {
+  line-height: normal;
+}
+
+body[fds] .tab-toggle-group {
+  box-shadow: none !important;
+}
+
+body[fds] .tab-toggle-group .mat-button-toggle-label-content {
+  border-bottom: 2px solid $grey5;
+}
+
+body[fds] .tab-toggle-group .mat-button-toggle-checked {
+  background: transparent;
+}
+
+body[fds] .tab-toggle-group .mat-button-toggle-checked .mat-button-toggle-label-content {
+  border-bottom: 2px solid $blue-grey1;
+  background: transparent;
+}
+
+body[fds] .on-off-toggle-group {
+  box-shadow: none !important;
+}
+
+body[fds] .on-off-toggle-group .mat-button-toggle {
+  height: 20px;
+  width: 35px;
+  border: 1px solid $grey4;
+}
+
+body[fds] .on-off-toggle-group .mat-button-toggle-label-content {
+  height: 100%;
+  width: 100%;
+  padding: 0;
+  line-height: 20px;
+  text-align: center;
+}
+
+body[fds] .on-off-toggle-group .mat-button-toggle-checked {
+  background-color: $blue-grey1;
+  color: white;
+  border: 1px solid $blue-grey1;
+}
+
+body[fds] .off-toggle.mat-button-toggle-checked {
+  background-color: $grey4;
+  color: $grey1;
+  border: 1px solid $grey4;
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_buttons.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_buttons.scss b/node_modules/nifi-fds/platform/core/common/styles/_buttons.scss
new file mode 100644
index 0000000..a9c9627
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_buttons.scss
@@ -0,0 +1,214 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/* Buttons */
+
+@mixin fds-buttons-theme($theme) {
+  $primaryColor: map-get(map-get($theme, primary), 500);
+  $primaryColorHover: map-get(map-get($theme, primary), 100);
+  $accentColor: map-get(map-get($theme, accent), 500);
+  $accentColorHover: map-get(map-get($theme, accent), 100);
+  $buttonFontColor: #FFFFFF;
+  $buttonFontColorDisabled: #D1E8D1;
+  $buttonBgColorPrimary: $primaryColor;
+  $buttonBgColorPrimaryHover: $primaryColorHover;
+  $buttonBgColorPrimaryDisabled: $primaryColor;
+  $buttonBgColorPrimarySelected: $primaryColor;
+  $buttonBgColorSecondary: #FFFFFF;
+  $buttonBgColorSecondaryHover: $primaryColorHover;
+  $buttonBgColorSecondarySelected: #FFFFFF;
+  $buttonBgColorRegular: #FFFFFF;
+  $buttonBgColorRegularHover: #808793;
+  $buttonBgColorRegularDisabled: #808793;
+  $buttonBgColorRegularSelected: #FFFFFF;
+  $buttonBorderColorSecondary: $primaryColor;
+  $buttonBorderColorSecondaryHover: $buttonBgColorSecondaryHover;
+  $buttonBorderColorSecondaryDisabled: $buttonBgColorSecondaryHover;
+  $buttonBorderColorSecondarySelected: $primaryColor;
+  $buttonBorderColorRegular: #CFD3D7;
+  $buttonBorderColorRegularHover: $buttonBgColorRegularHover;
+  $buttonBorderColorRegularDisabled: $buttonBgColorRegularHover;
+  $buttonBorderColorRegularSelected: #CFD3D7;
+  $buttonFontPrimaryColor: $buttonFontColor;
+  $buttonFontPrimaryColorHover: $buttonFontColor;
+  $buttonFontPrimaryColorDisabled: $buttonFontColorDisabled;
+  $buttonFontPrimaryColorSelected: $buttonFontColor;
+  $buttonFontSecondaryColor: $primaryColorHover;
+  $buttonFontSecondaryColorHover: $buttonFontColor;
+  $buttonFontSecondaryColorDisabled: $buttonFontColorDisabled;
+  $buttonFontSecondaryColorSelected: $primaryColorHover;
+  $buttonFontRegularColor: $descriptionTextColor;
+  $buttonFontRegularColorHover: $buttonFontColor;
+  $buttonFontRegularColorDisabled: $buttonFontColorDisabled;
+  $buttonFontRegularColorSelected: $bodyTextColor;
+  $buttonFontWarnColor: $buttonFontColor;
+  $buttonFontWarnColorHover: $buttonFontColor;
+  $buttonFontWarnColorDisabled: $buttonFontColorDisabled;
+  $buttonFontWarnColorSelected: $buttonFontColor;
+  $buttonFontCriticalColor: $buttonFontColor;
+  $buttonFontCriticalColorHover: $buttonFontColor;
+  $buttonFontCriticalColorDisabled: $buttonFontColorDisabled;
+  $buttonFontCriticalColorSelected: $buttonFontColor;
+
+  body[fds] .mat-raised-button {
+    height: 34px;
+    font-family: $fontPrimary;
+    font-weight: normal;
+    font-size: 14px;
+    text-transform: uppercase;
+    line-height: normal;
+    box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
+  }
+
+  body[fds] .mat-raised-button.cdk-focused:focus {
+    box-shadow: 0px 0px 2px 0px rgba(19, 145, 193, 1);
+  }
+
+  body[fds] .mat-raised-button[disabled] {
+    opacity: .6;
+    cursor: not-allowed;
+  }
+
+  body[fds] .mat-button-toggle-disabled .mat-button-toggle-label-content {
+    cursor: not-allowed;
+  }
+
+  body[fds] .mat-button-focus-overlay {
+    background-color: transparent;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-primary {
+    border: 1px solid $buttonBgColorPrimary;
+    background-color: $buttonBgColorPrimary;
+    color: $buttonFontPrimaryColor;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-primary:hover {
+    background-color: $buttonBgColorPrimaryHover;
+    color: $buttonFontPrimaryColorHover;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-primary.mat-button-focus {
+    color: $buttonFontPrimaryColorSelected;
+    background-color: $buttonBgColorPrimarySelected;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-primary[disabled] {
+    color: $buttonFontPrimaryColorDisabled;
+    background-color: $buttonBgColorPrimaryDisabled;
+    color: $buttonFontPrimaryColorDisabled;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-secondary {
+    color: $buttonFontSecondaryColor;
+    border: 1px solid $buttonBorderColorSecondary;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-secondary:hover:not([disabled]) {
+    color: $buttonFontSecondaryColorHover;
+    background-color: $buttonBgColorSecondaryHover;
+    border: 1px solid $buttonBorderColorSecondaryHover;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-secondary.mat-button-focus {
+    color: $buttonFontSecondaryColorSelected;
+    background-color: $buttonBgColorSecondarySelected;
+    border: 1px solid $buttonBorderColorSecondarySelected;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-secondary[disabled] {
+    color: $buttonFontPrimaryColorDisabled;
+    background-color: $buttonBgColorPrimaryDisabled;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-regular {
+    color: $buttonFontRegularColor;
+    background-color: $buttonBgColorRegular;
+    border: 1px solid $buttonBorderColorRegular;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-regular:hover {
+    color: $buttonFontRegularColorHover;
+    background-color: $buttonBgColorRegularHover;
+    border: 1px solid $buttonBorderColorRegularHover;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-regular.mat-button-focus {
+    color: $buttonFontRegularColorSelected;
+    background-color: $buttonBgColorRegularSelected;
+    border: 1px solid $buttonBorderColorRegularSelected;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-regular[disabled] {
+    color: $buttonFontRegularColorDisabled;
+    background-color: $buttonBgColorRegularDisabled;
+    border: 1px solid $buttonBorderColorRegularDisabled;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-warn {
+    border: 1px solid $warnColor;
+    background-color: $warnColor;
+    color: $buttonFontWarnColor;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-warn:hover {
+    color: $buttonFontWarnColorHover;
+    background-color: $red2;
+    border: 1px solid $warnColor;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-warn.mat-button-focus {
+    color: $buttonFontWarnColorSelected;
+    background-color: $warnColor;
+    border: 1px solid $buttonBorderColorRegularSelected;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-warn[disabled] {
+    color: $buttonFontWarnColorDisabled;
+    background-color: $warnColor;
+    border: 1px solid $warnColor;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-critical {
+    color: $buttonFontCriticalColor;
+    background-color: $orange1;
+    border: 1px solid $orange1;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-critical:hover {
+    color: $buttonFontCriticalColorHover;
+    background-color: $orange2;
+    border: 1px solid $orange2;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-critical.mat-button-focus {
+    color: $buttonFontCriticalColorSelected;
+    background-color: $orange2;
+    border: 1px solid $buttonBorderColorRegularSelected;
+  }
+
+  body[fds] .mat-raised-button.mat-fds-critical[disabled] {
+    color: $buttonFontCriticalColorDisabled;
+    background-color: $orange1;
+    border: 1px solid $orange1;
+  }
+
+  .fds-primary-dropdown-button-menu .cdk-focused {
+    color: $buttonFontPrimaryColorSelected;
+    background-color: $buttonBgColorPrimarySelected;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_checkboxes.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_checkboxes.scss b/node_modules/nifi-fds/platform/core/common/styles/_checkboxes.scss
new file mode 100644
index 0000000..0268fde
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_checkboxes.scss
@@ -0,0 +1,85 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/* Checkboxes */
+
+body[fds] .mat-checkbox-inner-container {
+  height: 10px !important;
+  width: 10px !important;
+}
+
+body[fds] .mat-checkbox-frame {
+  height: 10px;
+  width: 10px;
+  border-color: $grey7;
+}
+
+body[fds] .mat-checkbox-ripple {
+  left: -7px;
+  top: -7px;
+  right: -7px;
+  bottom: -7px;
+}
+
+body[fds] .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background,
+body[fds] .mat-checkbox-checked.mat-accent .mat-checkbox-background {
+  background-color: $blue-grey1;
+}
+
+body[fds] .mat-checkbox-inner-container:hover {
+  background-color: $blue-grey1;
+  border-radius: 2px;
+}
+
+body[fds] .mat-checkbox-background {
+  height: 10px;
+  width: 10px;
+}
+
+/* Covalent TdDataTableComponent 'selectable' property checkboxes */
+
+body[fds] .mat-pseudo-checkbox {
+  height: 10px !important;
+  width: 10px !important;
+  border: 1px solid $grey7;
+}
+
+body[fds] .mat-pseudo-checkbox:hover {
+  background-color: $blue-grey1;
+  border: 1px solid $blue-grey1;
+}
+
+body[fds] .mat-pseudo-checkbox-checked::after {
+  content: '\f00c';
+  font-size: 8px;
+  font-family: fontawesome;
+  margin-top: -9px;
+  margin-left: -1px;
+  border: none;
+  transform: initial;
+}
+
+body[fds] .mat-pseudo-checkbox-checked, body[fds] .mat-pseudo-checkbox-indeterminate {
+  background-color: $blue-grey1;
+  border: 1px solid $blue-grey1;
+  height: 10px;
+  width: 10px;
+}
+
+body[fds] .mat-checkbox-disabled {
+  cursor: not-allowed;
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_chips.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_chips.scss b/node_modules/nifi-fds/platform/core/common/styles/_chips.scss
new file mode 100644
index 0000000..894fbec
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_chips.scss
@@ -0,0 +1,69 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/* Chips */
+
+body[fds] .mat-chip {
+  border-radius: 2px;
+  font-size: 10px;
+  font-family: $fontPrimary;
+  font-style: normal;
+  font-weight: normal;
+  padding: 4px 12px 4px 12px;
+}
+
+body[fds] .mat-chip i {
+  margin-left: 10px;
+  float: right;
+  margin-top: 2px;
+}
+
+body[fds] .mat-basic-chip {
+  color: $grey2;
+  height: 24px;
+  margin: 22px 8px 0 0;
+}
+
+body[fds] .mat-basic-chip i {
+  margin-left: 10px;
+  float: right;
+  margin-top: 2px;
+}
+
+body[fds] .mat-basic-chip .td-chip {
+  font-size: 10px;
+  min-height: unset;
+  line-height: 20px;
+  position: relative;
+  top: -2px;
+}
+
+body[fds] .td-chip span {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  width: 65px;
+}
+
+body[fds] .td-chip-disabled .td-chip {
+  padding: 0px 0px 0px 12px;
+}
+
+body[fds] .mat-basic-chip mat-icon.td-chip-removal {
+  font-size: 15px;
+  margin-bottom: 7px;
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_expansionPanels.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_expansionPanels.scss b/node_modules/nifi-fds/platform/core/common/styles/_expansionPanels.scss
new file mode 100644
index 0000000..fdf9d4f
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_expansionPanels.scss
@@ -0,0 +1,62 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/* Expansion Panels */
+
+@mixin fds-expansion-panels-theme($theme) {
+  $primaryColor: map-get(map-get($theme, primary), 500);
+  $primaryColorHover: map-get(map-get($theme, primary), 100);
+  $accentColor: map-get(map-get($theme, accent), 500);
+  $accentColorHover: map-get(map-get($theme, accent), 100);
+
+  body[fds] td-expansion-panel:not(:last-of-type) .td-expanded {
+    margin-bottom: 0px;
+  }
+
+  body[fds] .td-expansion-panel-header-content {
+    height: 80px !important;
+    padding: 0px 30px !important;
+    border-bottom: 1px solid $grey7;
+  }
+
+  body[fds] .td-expansion-content form {
+    padding: 15px 10px 20px 20px;
+  }
+
+  body[fds] .md-subhead {
+    font-size: 18px;
+    color: $grey3;
+  }
+
+  body[fds] td-expansion-panel .td-expansion-panel-header .td-expansion-panel-header-content mat-icon.td-expand-icon {
+    font-size: 28px;
+    color: $blue-grey1;
+    font-weight: bold;
+  }
+
+  body[fds] td-expansion-panel .td-expansion-panel-header:hover:not(.mat-disabled) {
+    background: $blue4;
+  }
+
+  body[fds] td-expansion-panel .td-expansion-panel-header:focus {
+    background: #FFFFFF;
+  }
+
+  body[fds] td-expansion-panel .td-expansion-panel-header:focus .td-expansion-panel-header-content {
+    border-bottom: 1px solid $primaryColor;
+  }
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_globalVars.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_globalVars.scss b/node_modules/nifi-fds/platform/core/common/styles/_globalVars.scss
new file mode 100644
index 0000000..aede0a3
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_globalVars.scss
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Text */
+
+$fontPrimary: "Roboto",
+sans-serif;
+$fontSecondary: "Robot Slab",
+sans-serif;
+$fontMedium: "Roboto Medium",
+sans-serif;
+$fontLight: "Roboto Light",
+sans-serif;
+
+/* Define colors */
+
+$grey1: #333333;
+$grey2: #666666;
+$grey3: #999999;
+$grey4: #CCCCCC;
+$grey5: #EEEEEE;
+$grey6: #F8F9F9;
+$grey7: #DDDDDD;
+$grey8: #CFD3D7;
+$grey9: #b2b8c1;
+$grey10: #dbdee2;
+$grey11: #2C3E44;
+$grey12: #EEEFF0;
+$grey13: #808793;
+$blue1: #1491C1;
+$blue2: #E7f6Fc;
+$blue3: #A7DFF2;
+$blue4: #F3FAFF;
+$blue5: #728E9B;
+$blue6: #004849;
+$blue7: #d0dbe0;
+$blue8: #1291c1;
+$red1: #EF6162;
+$red2: #D14A50;
+$orange1: #E98A40;
+$orange2: #D3702D;
+$green1: #1EB475;
+$green2: #3FAE2A;
+$green3: #429929;
+$rose1: #9E737D;
+$rose2: #915D69;
+$blue-grey1: #6B8791;
+$blue-grey2: #B2C1C6;
+$bodyTextColor: $grey1;
+$pageHeaderTextColor: $grey1;
+$subHeaderTextColor: $grey2;
+$descriptionTextColor: $grey2;
+$linkColor: $blue-grey1;
+$linkColorDisabled: $grey1;
+$warnColor: $red1;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_helperClasses.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_helperClasses.scss b/node_modules/nifi-fds/platform/core/common/styles/_helperClasses.scss
new file mode 100644
index 0000000..1298358
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_helperClasses.scss
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Text */
+
+.camel-case {
+  text-transform: capitalize;
+}
+
+.header {
+  font-family: $fontMedium;
+  font-size: 16px;
+  color: $pageHeaderTextColor;
+  padding-bottom: 10px;
+}
+
+.help-icon {
+  font-size: 12px;
+  color: $blue1;
+}
+
+.details-header {
+  height: 92px;
+}
+
+.details-header-container {
+  position: relative;
+  top: 22px;
+  left: 10px;
+}
+
+.description {
+  font-family: $fontLight;
+  font-size: 12px;
+  color: $descriptionTextColor;
+}
+
+.description i {
+  padding-right: 5px;
+}
+
+.label {
+  font-family: $fontMedium;
+  font-size: 14px;
+  color: $bodyTextColor;
+  text-transform: uppercase;
+}
+
+.units {
+  font-family: $fontLight;
+  font-size: 14px;
+  color: $bodyTextColor;
+}
+
+.align-vertical {
+  margin-top: auto;
+  margin-bottom: auto;
+}
+
+.align-horizontal {
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.fill-available-width {
+  width: 100%;
+}
+
+.pointer {
+  cursor: pointer;
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/a15fb7b4/node_modules/nifi-fds/platform/core/common/styles/_inputs.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_inputs.scss b/node_modules/nifi-fds/platform/core/common/styles/_inputs.scss
new file mode 100644
index 0000000..392f5cb
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_inputs.scss
@@ -0,0 +1,109 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/* Inputs */
+
+body[fds] .mat-input-container {
+  min-width: 200px;
+}
+
+body[fds] .mat-input-wrapper {
+  margin: 0;
+  padding-bottom: 0;
+}
+
+body[fds] input.mat-input-element, body[fds] textarea.mat-input-element {
+  border-radius: 2px;
+  color: $grey2;
+  border: 1px solid $grey8;
+  height: 32px;
+  padding: 0px 10px;
+  width: calc(100% - 26px);
+}
+
+body[fds] textarea.mat-input-element {
+  padding: 10px 10px;
+}
+
+body[fds] input.mat-input-element[disabled], body[fds] textarea.mat-input-element[disabled] {
+  background: $grey9;
+  color: $grey10;
+  border: 1px solid $grey9;
+}
+
+body[fds] .mat-input-subscript-wrapper {
+  margin-top: 18px;
+  width: calc(100% - 23px);
+}
+
+body[fds] input.mat-input-element:focus, body[fds] textarea.mat-input-element:focus {
+  border-color: $blue-grey1;
+}
+
+body[fds] .mat-input-underline {
+  display: none;
+}
+
+body[fds] .mat-input-placeholder {
+  font-size: 14px;
+  color: $grey3;
+  font-weight: 300;
+}
+
+body[fds] .mat-input-placeholder {
+  top: 29px;
+  left: 10px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  width: calc(100% - 44px);
+}
+
+body[fds] mat-input-container.mat-focused .mat-input-placeholder {
+  transform: translateY(-26px) translateX(-10px) scale(0.75);
+}
+
+body[fds] .mat-form-field-can-float.mat-form-field-should-float .mat-form-field-placeholder {
+  transform: translateY(-26px) translateX(-10px) scale(.75);
+}
+
+body[fds] .mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-placeholder-wrapper .mat-form-field-placeholder {
+  transform: translateY(-26px) translateX(-10px) scale(.75);
+}
+
+body[fds] .input-button {
+  top: 5px;
+  left: -4px;
+  border-left: none !important;
+}
+
+body[fds] .input-button.mat-raised-button[disabled] {
+  opacity: 1;
+}
+
+body[fds] td-chips .mat-input-placeholder-wrapper::after {
+  content: '\f0b0';
+  display: inline-table;
+  font-family: FontAwesome;
+  float: right;
+  margin: 12px 10px 0px 0px;
+  color: $grey3;
+}
+
+body[fds] .mat-hint {
+  color: $grey3;
+}


Mime
View raw message