cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mura...@apache.org
Subject cordova-registry-web git commit: CB-9146 Initial commit for npm-search
Date Thu, 11 Jun 2015 22:02:04 GMT
Repository: cordova-registry-web
Updated Branches:
  refs/heads/master 39c791d0e -> 6669015a8


CB-9146 Initial commit for npm-search


Project: http://git-wip-us.apache.org/repos/asf/cordova-registry-web/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-registry-web/commit/6669015a
Tree: http://git-wip-us.apache.org/repos/asf/cordova-registry-web/tree/6669015a
Diff: http://git-wip-us.apache.org/repos/asf/cordova-registry-web/diff/6669015a

Branch: refs/heads/master
Commit: 6669015a8917d204ff8b334bd788f9795a1ca337
Parents: 39c791d
Author: Murat Sutunc <sutunc@gmail.com>
Authored: Tue Jun 9 11:23:12 2015 -0700
Committer: Murat Sutunc <sutunc@gmail.com>
Committed: Thu Jun 11 14:52:45 2015 -0700

----------------------------------------------------------------------
 npm-search/.gitignore                      |   10 +
 npm-search/Gulpfile.js                     |   54 ++
 npm-search/assets/css/base.css             |  148 ++++
 npm-search/assets/css/flexboxgrid.css      | 1026 +++++++++++++++++++++++
 npm-search/assets/img/grid.png             |  Bin 0 -> 1169 bytes
 npm-search/assets/img/pluggy.png           |  Bin 0 -> 16342 bytes
 npm-search/assets/js/app.js                |  238 ++++++
 npm-search/assets/js/official-plugins.json |   26 +
 npm-search/index.html                      |   14 +
 npm-search/package.json                    |   39 +
 10 files changed, 1555 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/.gitignore
----------------------------------------------------------------------
diff --git a/npm-search/.gitignore b/npm-search/.gitignore
new file mode 100644
index 0000000..f1ce98d
--- /dev/null
+++ b/npm-search/.gitignore
@@ -0,0 +1,10 @@
+# npm stuff
+npm-debug.log
+node_modules/*
+
+# OSX
+Thumbs.db
+.DS_Store
+
+# ignores specific to this repo
+build/

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/Gulpfile.js
----------------------------------------------------------------------
diff --git a/npm-search/Gulpfile.js b/npm-search/Gulpfile.js
new file mode 100644
index 0000000..cd520b0
--- /dev/null
+++ b/npm-search/Gulpfile.js
@@ -0,0 +1,54 @@
+var gulp       = require('gulp'),
+    concat     = require('gulp-concat'),
+    imagemin   = require('gulp-imagemin'),
+    sourcemaps = require('gulp-sourcemaps'),
+    uglify     = require('gulp-uglify'),
+    gutil      = require('gulp-util'),
+    buffer     = require('vinyl-buffer'),
+    source     = require('vinyl-source-stream'),
+    browserify = require('browserify'),
+    reactify   = require('reactify');
+
+gulp.task('styles', function () {
+    gulp.src(['assets/css/base.css', 'assets/css/flexboxgrid.css'])
+        .pipe(concat('styles.css'))
+        .pipe(gulp.dest('./build/'));
+
+});
+
+gulp.task('scripts', function () {
+    var b = browserify({
+        entries: './assets/js/app.js',
+        debug: true,
+        transform: [ reactify ]
+    });
+
+    return b.bundle()
+        .pipe(source('app.js'))
+        .pipe(buffer())
+        .pipe(sourcemaps.init({loadMaps: true}))
+            // Add transformation tasks to the pipeline here.
+            .pipe(uglify())
+            .on('error', gutil.log)
+        .pipe(sourcemaps.write('./'))
+        .pipe(gulp.dest('./build/'));
+});
+;
+gulp.task('images', function () {
+    gulp.src(['assets/img/**/*.png', 'assets/img/**/*.gif'])
+        .pipe(imagemin())
+        .pipe(gulp.dest('build/img/'));
+    gulp.src(['assets/img/**/*.svg'])
+        .pipe(gulp.dest('build/img'));
+});
+
+gulp.task('dev', function () {
+    gulp.run('build');
+
+    gulp.watch(['assets/js/**/*.js', 'assets/js/official-plugins.json'], [ 'scripts' ]);
+    gulp.watch('assets/css/**/*.css', [ 'styles' ]);
+    gulp.watch('assets/img/**/*', [ 'images' ]);
+
+});
+
+gulp.task('build', [ 'styles', 'scripts', 'images' ]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/assets/css/base.css
----------------------------------------------------------------------
diff --git a/npm-search/assets/css/base.css b/npm-search/assets/css/base.css
new file mode 100644
index 0000000..8726072
--- /dev/null
+++ b/npm-search/assets/css/base.css
@@ -0,0 +1,148 @@
+h1 {
+  text-align: center;
+}
+
+body {
+  margin: 0;
+}
+
+/*  HEADER RELATED  */
+
+/*PLUG AND MSG*/
+#headerBackground {
+  background: url('img/grid.png');
+}
+
+#topContent {
+  margin-top: 25px;
+}
+
+#pluggy {
+  background: transparent url('img/pluggy.png') no-repeat center;
+  background-size: contain;
+  height: 200px;
+  margin-left: 25px;
+}
+
+.discover-message {
+  background-color: white;
+  font-size: 48px;
+  margin: 5px;
+  text-align: left;
+  display: inline-block;
+  padding: 0px 8px;
+  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
+}
+
+/*SEARCHBOX*/
+
+#searchwrapper {
+  margin: 25px 0px;
+  border: 2px solid gray;
+  background-color: white;
+}
+
+#searchwrapper .searchBox {
+  display: block;
+  height: 35px;
+  width: 100%;
+  border: 0;
+  background: none;
+  outline: 0;
+  /*margin-left: 5px;*/
+  font-size: 14px;
+}
+
+/* Plugin List */
+
+#pluginList {
+  list-style-type: none;
+  padding: 0px;
+}
+
+#pluginList li {
+  border: 1px solid #363636;
+  /*padding: 5px;*/
+  margin-bottom: 10px;
+  position: relative;
+  background: white;
+}
+
+#pluginList li:before {
+  content: "";
+  position:absolute;
+  z-index: -1;
+  width:96%;
+  bottom: 0;
+  height: 10px;
+  left: 2%;
+  border-radius: 20px;
+  box-shadow:0 0 18px rgba(0,0,0,0.6);
+}
+
+/* Plugin Cards */
+
+.pluginCardContents {
+  overflow: hidden;
+}
+
+#pluginInfo {
+  padding: 5px 20px;
+  display: block;
+  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
+}
+
+#pluginInfo a {
+  font-size: 21px;
+  font-weight: bold;
+  color: black;
+  text-decoration: none;
+}
+
+#pluginInfo a:hover {
+    text-decoration: underline;
+}
+
+#pluginInfo .author {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+p.license {
+  text-align: right;
+  display: block;
+  margin: 0;
+  font-style: italic;
+  color: #363636;
+  font-size: 14px;
+}
+
+p.version {
+  text-align: right;
+  display: block;
+  margin: 0;
+}
+
+
+#featured {
+  padding-bottom:100%;
+  margin-bottom:-100%;
+  float: left;
+  width: 10px;
+  background-color: #71B9F9;
+}
+
+#supportedPlatforms {
+  display: flex;
+}
+
+#supportedPlatforms div {
+  margin: 12px 2px 2px 0;
+  border: 1px solid #363636;
+  border-radius: 8px;
+  padding: .4em .5em;
+  font-size: 9px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/assets/css/flexboxgrid.css
----------------------------------------------------------------------
diff --git a/npm-search/assets/css/flexboxgrid.css b/npm-search/assets/css/flexboxgrid.css
new file mode 100644
index 0000000..68dace4
--- /dev/null
+++ b/npm-search/assets/css/flexboxgrid.css
@@ -0,0 +1,1026 @@
+/*
+ * Copyright 2013 Kristofer Joseph
+ *
+ * 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.
+ */
+
+/*
+ *
+ * Uncomment and set these variables to customize the grid.
+ *
+ * :root {
+ *  --gutter-width: 1rem;
+ *  --outer-margin: 2rem;
+ *  --gutter-compensation: calc( var( --gutter-width / 2 ) * -1 );
+ *  --half-gutter-width: calc( var( --gutter-width / 2 ) );
+ *  --screen-xs-min: 30em;
+ *  --screen-sm-min: 48em;
+ *  --screen-md-min: 62em;
+ *  --screen-lg-min: 75em;
+ *  --container-sm: calc( 45rem + var( --gutter-width ) );
+ *  --container-md: calc( 60rem + var( --gutter-width ) );
+ *  --container-lg: calc( 70rem + var( --gutter-width ) );
+ * }
+ *
+*/
+
+.container-fluid {
+  margin-right: auto;
+  margin-left: auto;
+  padding-right: 2rem;
+  padding-left: 2rem;
+}
+
+.row {
+  box-sizing: border-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-flex: 0 1 auto;
+  -ms-flex: 0 1 auto;
+  flex: 0 1 auto;
+  -webkit-flex-direction: row;
+  -ms-flex-direction: row;
+  flex-direction: row;
+  -webkit-flex-wrap: wrap;
+  -ms-flex-wrap: wrap;
+  flex-wrap: wrap;
+  margin-right: -0.5rem;
+  margin-left: -0.5rem;
+}
+
+.row.reverse {
+  -webkit-flex-direction: row-reverse;
+  -ms-flex-direction: row-reverse;
+  flex-direction: row-reverse;
+}
+
+.col.reverse {
+  -webkit-flex-direction: column-reverse;
+  -ms-flex-direction: column-reverse;
+  flex-direction: column-reverse;
+}
+
+.col-xs,
+.col-xs-1,
+.col-xs-2,
+.col-xs-3,
+.col-xs-4,
+.col-xs-5,
+.col-xs-6,
+.col-xs-7,
+.col-xs-8,
+.col-xs-9,
+.col-xs-10,
+.col-xs-11,
+.col-xs-12,
+.col-xs-offset-1,
+.col-xs-offset-2,
+.col-xs-offset-3,
+.col-xs-offset-4,
+.col-xs-offset-5,
+.col-xs-offset-6,
+.col-xs-offset-7,
+.col-xs-offset-8,
+.col-xs-offset-9,
+.col-xs-offset-10,
+.col-xs-offset-11,
+.col-xs-offset-12 {
+  box-sizing: border-box;
+  -webkit-flex: 0 0 auto;
+  -ms-flex: 0 0 auto;
+  flex: 0 0 auto;
+  padding-right: 0.5rem;
+  padding-left: 0.5rem;
+}
+
+.col-xs {
+  -webkit-flex-grow: 1;
+  -ms-flex-positive: 1;
+  flex-grow: 1;
+  -webkit-flex-basis: 0;
+  -ms-flex-preferred-size: 0;
+  flex-basis: 0;
+  max-width: 100%;
+}
+
+.col-xs-1 {
+  -webkit-flex-basis: 8.333%;
+  -ms-flex-preferred-size: 8.333%;
+  flex-basis: 8.333%;
+  max-width: 8.333%;
+}
+
+.col-xs-2 {
+  -webkit-flex-basis: 16.667%;
+  -ms-flex-preferred-size: 16.667%;
+  flex-basis: 16.667%;
+  max-width: 16.667%;
+}
+
+.col-xs-3 {
+  -webkit-flex-basis: 25%;
+  -ms-flex-preferred-size: 25%;
+  flex-basis: 25%;
+  max-width: 25%;
+}
+
+.col-xs-4 {
+  -webkit-flex-basis: 33.333%;
+  -ms-flex-preferred-size: 33.333%;
+  flex-basis: 33.333%;
+  max-width: 33.333%;
+}
+
+.col-xs-5 {
+  -webkit-flex-basis: 41.667%;
+  -ms-flex-preferred-size: 41.667%;
+  flex-basis: 41.667%;
+  max-width: 41.667%;
+}
+
+.col-xs-6 {
+  -webkit-flex-basis: 50%;
+  -ms-flex-preferred-size: 50%;
+  flex-basis: 50%;
+  max-width: 50%;
+}
+
+.col-xs-7 {
+  -webkit-flex-basis: 58.333%;
+  -ms-flex-preferred-size: 58.333%;
+  flex-basis: 58.333%;
+  max-width: 58.333%;
+}
+
+.col-xs-8 {
+  -webkit-flex-basis: 66.667%;
+  -ms-flex-preferred-size: 66.667%;
+  flex-basis: 66.667%;
+  max-width: 66.667%;
+}
+
+.col-xs-9 {
+  -webkit-flex-basis: 75%;
+  -ms-flex-preferred-size: 75%;
+  flex-basis: 75%;
+  max-width: 75%;
+}
+
+.col-xs-10 {
+  -webkit-flex-basis: 83.333%;
+  -ms-flex-preferred-size: 83.333%;
+  flex-basis: 83.333%;
+  max-width: 83.333%;
+}
+
+.col-xs-11 {
+  -webkit-flex-basis: 91.667%;
+  -ms-flex-preferred-size: 91.667%;
+  flex-basis: 91.667%;
+  max-width: 91.667%;
+}
+
+.col-xs-12 {
+  -webkit-flex-basis: 100%;
+  -ms-flex-preferred-size: 100%;
+  flex-basis: 100%;
+  max-width: 100%;
+}
+
+.col-xs-offset-1 {
+  margin-left: 8.333%;
+}
+
+.col-xs-offset-2 {
+  margin-left: 16.667%;
+}
+
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+
+.col-xs-offset-4 {
+  margin-left: 33.333%;
+}
+
+.col-xs-offset-5 {
+  margin-left: 41.667%;
+}
+
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+
+.col-xs-offset-7 {
+  margin-left: 58.333%;
+}
+
+.col-xs-offset-8 {
+  margin-left: 66.667%;
+}
+
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+
+.col-xs-offset-10 {
+  margin-left: 83.333%;
+}
+
+.col-xs-offset-11 {
+  margin-left: 91.667%;
+}
+
+.start-xs {
+  -webkit-justify-content: flex-start;
+  -ms-flex-pack: start;
+  justify-content: flex-start;
+  text-align: start;
+}
+
+.center-xs {
+  -webkit-justify-content: center;
+  -ms-flex-pack: center;
+  justify-content: center;
+  text-align: center;
+}
+
+.end-xs {
+  -webkit-justify-content: flex-end;
+  -ms-flex-pack: end;
+  justify-content: flex-end;
+  text-align: end;
+}
+
+.top-xs {
+  -webkit-align-items: flex-start;
+  -ms-flex-align: start;
+  align-items: flex-start;
+}
+
+.middle-xs {
+  -webkit-align-items: center;
+  -ms-flex-align: center;
+  align-items: center;
+}
+
+.bottom-xs {
+  -webkit-align-items: flex-end;
+  -ms-flex-align: end;
+  align-items: flex-end;
+}
+
+.around-xs {
+  -webkit-justify-content: space-around;
+  -ms-flex-pack: distribute;
+  justify-content: space-around;
+}
+
+.between-xs {
+  -webkit-justify-content: space-between;
+  -ms-flex-pack: justify;
+  justify-content: space-between;
+}
+
+.first-xs {
+  -webkit-order: -1;
+  -ms-flex-order: -1;
+  order: -1;
+}
+
+.last-xs {
+  -webkit-order: 1;
+  -ms-flex-order: 1;
+  order: 1;
+}
+
+@media only screen and (min-width: 48em) {
+  .container {
+    width: 46rem;
+  }
+
+  .col-sm,
+  .col-sm-1,
+  .col-sm-2,
+  .col-sm-3,
+  .col-sm-4,
+  .col-sm-5,
+  .col-sm-6,
+  .col-sm-7,
+  .col-sm-8,
+  .col-sm-9,
+  .col-sm-10,
+  .col-sm-11,
+  .col-sm-12,
+  .col-sm-offset-1,
+  .col-sm-offset-2,
+  .col-sm-offset-3,
+  .col-sm-offset-4,
+  .col-sm-offset-5,
+  .col-sm-offset-6,
+  .col-sm-offset-7,
+  .col-sm-offset-8,
+  .col-sm-offset-9,
+  .col-sm-offset-10,
+  .col-sm-offset-11,
+  .col-sm-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-sm {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-sm-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-sm-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-sm-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-sm-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-sm-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-sm-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-sm-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-sm-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-sm-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-sm-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-sm-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-sm-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-sm-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-sm-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-sm-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-sm-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-sm-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-sm-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-sm-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-sm-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-sm {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-sm {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-sm {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-sm {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-sm {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-sm {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-sm {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-sm {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-sm {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-sm {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
+
+@media only screen and (min-width: 62em) {
+  .container {
+    width: 61rem;
+  }
+
+  .col-md,
+  .col-md-1,
+  .col-md-2,
+  .col-md-3,
+  .col-md-4,
+  .col-md-5,
+  .col-md-6,
+  .col-md-7,
+  .col-md-8,
+  .col-md-9,
+  .col-md-10,
+  .col-md-11,
+  .col-md-12,
+  .col-md-offset-1,
+  .col-md-offset-2,
+  .col-md-offset-3,
+  .col-md-offset-4,
+  .col-md-offset-5,
+  .col-md-offset-6,
+  .col-md-offset-7,
+  .col-md-offset-8,
+  .col-md-offset-9,
+  .col-md-offset-10,
+  .col-md-offset-11,
+  .col-md-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-md {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-md-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-md-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-md-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-md-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-md-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-md-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-md-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-md-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-md-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-md-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-md-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-md-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-md-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-md-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-md-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-md-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-md-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-md-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-md-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-md-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-md {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-md {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-md {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-md {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-md {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-md {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-md {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-md {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-md {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-md {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
+
+@media only screen and (min-width: 75em) {
+  .container {
+    width: 71rem;
+  }
+
+  .col-lg,
+  .col-lg-1,
+  .col-lg-2,
+  .col-lg-3,
+  .col-lg-4,
+  .col-lg-5,
+  .col-lg-6,
+  .col-lg-7,
+  .col-lg-8,
+  .col-lg-9,
+  .col-lg-10,
+  .col-lg-11,
+  .col-lg-12,
+  .col-lg-offset-1,
+  .col-lg-offset-2,
+  .col-lg-offset-3,
+  .col-lg-offset-4,
+  .col-lg-offset-5,
+  .col-lg-offset-6,
+  .col-lg-offset-7,
+  .col-lg-offset-8,
+  .col-lg-offset-9,
+  .col-lg-offset-10,
+  .col-lg-offset-11,
+  .col-lg-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-lg {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-lg-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-lg-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-lg-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-lg-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-lg-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-lg-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-lg-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-lg-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-lg-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-lg-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-lg-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-lg-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-lg-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-lg-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-lg-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-lg-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-lg-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-lg-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-lg-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-lg-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-lg {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-lg {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-lg {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-lg {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-lg {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-lg {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-lg {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-lg {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-lg {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-lg {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/assets/img/grid.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/grid.png b/npm-search/assets/img/grid.png
new file mode 100644
index 0000000..5d97586
Binary files /dev/null and b/npm-search/assets/img/grid.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/assets/img/pluggy.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/pluggy.png b/npm-search/assets/img/pluggy.png
new file mode 100644
index 0000000..1317585
Binary files /dev/null and b/npm-search/assets/img/pluggy.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/assets/js/app.js
----------------------------------------------------------------------
diff --git a/npm-search/assets/js/app.js b/npm-search/assets/js/app.js
new file mode 100644
index 0000000..c8476ff
--- /dev/null
+++ b/npm-search/assets/js/app.js
@@ -0,0 +1,238 @@
+var React    = window.React = require('react'), // assign it to window for react chrome extension
+    App = {};
+
+var OfficialPlugin = React.createClass({
+    render: function() {
+        return (
+            <div id="featured"></div>
+        );
+    }
+})
+
+var SupportedPlatforms = React.createClass({
+    render: function() {
+        var keywords = this.props.keywords;
+        var platformsSupported = [];
+        // remove windows8 & windows dupe
+        if (keywords.indexOf('cordova-windows') > -1 && keywords.indexOf('cordova-windows8')
> -1) {
+            keywords.splice(keywords.indexOf('cordova-windows8'), 1);
+        }
+        keywords.forEach(function(keyword) {
+            switch (keyword) {
+                case 'cordova-firefoxos':
+                    platformsSupported.push(<div>FirefoxOS</div>);
+                    break;
+                case 'cordova-android':
+                    platformsSupported.push(<div>Android</div>);
+                    break;
+                case 'cordova-amazon-fireos':
+                    platformsSupported.push(<div>FireOS</div>);
+                    break;
+                case 'cordova-ubuntu':
+                    platformsSupported.push(<div>Ubuntu</div>);
+                    break;
+                case 'cordova-ios':
+                    platformsSupported.push(<div>iOS</div>);
+                    break;
+                case 'cordova-blackberry10':
+                    platformsSupported.push(<div>Blackberry10</div>);
+                    break;
+                case 'cordova-wp7':
+                    platformsSupported.push(<div>Windows Phone 7</div>);
+                    break;
+                case 'cordova-wp8':
+                    platformsSupported.push(<div>Windows Phone 8</div>);
+                    break;
+                case 'cordova-windows8':
+                case 'cordova-windows':
+                    platformsSupported.push(<div>Windows</div>);
+                    break;
+                case 'cordova-browser':
+                    platformsSupported.push(<div>Browser</div>);
+                    break;
+            }
+        });
+        return (
+            <div id="supportedPlatforms" className="col-xs-9">{platformsSupported}</div>
+        );
+    }
+})
+
+var SearchBar = React.createClass({
+    handleChange: function() {
+        this.props.onUserInput(
+            this.refs.filterTextInput.getDOMNode().value
+        )
+    },
+    render: function() {
+        return (
+            <div className="col-xs-offset-2 col-xs-8">
+                <div id="searchwrapper">
+                    <input
+                        className="searchBox"
+                        type="search"
+                        autoComplete="off"
+                        placeholder={this.props.placeHolderText}
+                        value={this.props.filterText}
+                        ref="filterTextInput"
+                        onChange={this.handleChange}
+                    />
+                </div>
+            </div>
+        );
+    }
+})
+
+var Plugin = React.createClass({
+    render: function() {
+        var license = this.props.plugin.license;
+        if (license && license.length > 1) {
+            license = license[0];
+        }
+        var officialPlugin = this.props.plugin.isOfficial;
+        return (
+            <li>
+                <div className="pluginCardContents">
+                    {officialPlugin ? <OfficialPlugin/> : ''}
+                    <div id="pluginInfo">
+                        <div><a href={
+                            'https://www.npmjs.com/package/' + this.props.plugin.name
+                        }>{this.props.plugin.name}</a> by <span className="author">{this.props.plugin.author}</span></div>
+                        <div id="pluginDesc">{this.props.plugin.description}</div>
+                        <div className="row">
+                            <SupportedPlatforms keywords={this.props.plugin.keywords}/>
+                            <div className="col-xs-3">
+                                <p className="license">License: {license}</p>
+                                <p className="version">Version: {this.props.plugin.version}</p>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </li>
+        )
+    }
+})
+
+var PluginList = React.createClass({
+    render: function() {
+        var plugins = [];
+        this.props.plugins.forEach(function(plugin) {
+            if (plugin.name[0].indexOf(this.props.filterText) > -1) {
+                plugins.push(<Plugin plugin={plugin} key={plugin.author + plugin.name}/>);
+            }
+        }.bind(this));
+        return (
+            <div className="col-xs-offset-2 col-xs-8">
+                <ul id="pluginList">
+                    {plugins}
+                </ul>
+            </div>
+        );
+    }
+});
+
+
+var App = React.createClass({
+    getInitialState: function() {
+        return {
+            plugins: [],
+            filterText: '',
+            placeHolderText: 'Loading...'
+        };
+    },
+    handleUserInput: function(filterText) {
+        this.setState({
+            filterText: filterText
+        });
+    },
+
+    componentDidMount: function() {
+        var plugins = [],
+            officialPlugins = [],
+            pluginCount = 0,
+            self = this;
+
+        xhrRequest("http://npmsearch.com/query?fields=name,keywords,license,description,author,modified,homepage,version&q=keywords:%22ecosystem:cordova%22&size=20&start=0",
function(xhrResult) {
+            plugins = xhrResult.results;
+            pluginCount = xhrResult.total;
+            xhrRequest("http://npmsearch.com/query?fields=name,keywords,license,description,author,modified,homepage,version&q=keywords:%22ecosystem:cordova%22&size="
+ (pluginCount - 20) + "&start=20", function(xhrResult) {
+                plugins = [].concat(plugins, xhrResult.results);
+                officialPlugins = require('./official-plugins.json').plugins;
+                officialPlugins.forEach(function(plugin) {
+                    for (var i = 0; i < plugins.length; i++) {
+                        if (plugins[i].name[0] === plugin) {
+                            plugins[i].isOfficial = true;
+                            return;
+                        }
+                    };
+                })
+
+                if (this.isMounted()) {
+                    this.setState({
+                      plugins: plugins,
+                      placeHolderText: 'Search ' + pluginCount + ' plugins...'
+                    });
+                }
+            }.bind(self), function() { console.log('xhr err'); });
+        }, function() { console.log('xhr err'); });
+    },
+
+    render: function() {
+        return (
+            <div>
+                <div className="row" id="headerBackground">
+                    <div className="col-xs-offset-2 col-xs-8">
+                        <div id="topContent" className="row">
+                            <div className="col-xs-3">
+                                <div id="pluggy"></div>
+                            </div>
+                            <div className="col-xs-9">
+                                <p className="discover-message">Search Cordova</p>
+                                <br/>
+                                <p className="discover-message">Plugins</p>
+                            </div>
+                        </div>
+                    </div>
+                    <SearchBar
+                        filterText={this.state.filterText}
+                        placeHolderText={this.state.placeHolderText}
+                        onUserInput={this.handleUserInput}
+                    />
+                </div>
+                <div className="row">
+                    <PluginList
+                        plugins={this.state.plugins}
+                        filterText={this.state.filterText}
+                    />
+                </div>
+            </div>
+        );
+    }
+});
+
+App.start = function() {
+    React.render(
+        <App />,
+        document.getElementById('container')
+    )    
+};
+
+function xhrRequest(url, success, fail) {
+    var xhr = new XMLHttpRequest();
+    xhr.onreadystatechange = function() {
+        if (xhr.readyState == XMLHttpRequest.DONE ) {
+            if(xhr.status == 200){
+                success(JSON.parse(xhr.responseText));
+                return;
+            } else {
+                fail();
+                return;
+            }
+        }
+    }.bind(this)
+    xhr.open("GET", url, true);
+    xhr.send();
+}
+
+
+module.exports = window.App = App;

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/assets/js/official-plugins.json
----------------------------------------------------------------------
diff --git a/npm-search/assets/js/official-plugins.json b/npm-search/assets/js/official-plugins.json
new file mode 100644
index 0000000..d220cfb
--- /dev/null
+++ b/npm-search/assets/js/official-plugins.json
@@ -0,0 +1,26 @@
+{
+    "plugins" : [
+        "cordova-plugin-battery-status",
+        "cordova-plugin-camera",
+        "cordova-plugin-console",
+        "cordova-plugin-contacts",
+        "cordova-plugin-device",
+        "cordova-plugin-device-motion",
+        "cordova-plugin-device-orientation",
+        "cordova-plugin-dialogs",
+        "cordova-plugin-file",
+        "cordova-plugin-file-transfer",
+        "cordova-plugin-geolocation",
+        "cordova-plugin-globalization",
+        "cordova-plugin-inappbrowser",
+        "cordova-plugin-legacy-whitelist",
+        "cordova-plugin-media",
+        "cordova-plugin-media-capture",
+        "cordova-plugin-ms-appinsights",
+        "cordova-plugin-network-information",
+        "cordova-plugin-splashscreen",
+        "cordova-plugin-statusbar",
+        "cordova-plugin-vibration",
+        "cordova-plugin-whitelist"
+    ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/index.html
----------------------------------------------------------------------
diff --git a/npm-search/index.html b/npm-search/index.html
new file mode 100644
index 0000000..a1cf953
--- /dev/null
+++ b/npm-search/index.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
+    <title>Cordova Search Website</title>
+    <link rel="stylesheet" href="build/styles.css" />
+  </head>
+
+  <body>
+    <div id="container"></div>
+    <script src="build/app.js"></script>
+    <script>App.start();</script>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/6669015a/npm-search/package.json
----------------------------------------------------------------------
diff --git a/npm-search/package.json b/npm-search/package.json
new file mode 100644
index 0000000..12b2b72
--- /dev/null
+++ b/npm-search/package.json
@@ -0,0 +1,39 @@
+{
+  "name": "Cordova-Plugin-Search-WWW",
+  "version": "0.0.1",
+  "description": "Website for Cordova Plugin Search",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/apache/cordova-registry-web.git"
+  },
+  "author": "Apache Software Foundation",
+  "license": "Apache 2.0",
+  "bugs": {
+    "url": "https://github.com/apache/cordova-registry-web/issues"
+  },
+  "homepage": "https://github.com/apache/cordova-registry-web",
+  "devDependencies": {
+    "browserify": "^10.2.4",
+    "gulp": "^3.9.0",
+    "gulp-concat": "^2.5.2",
+    "gulp-imagemin": "^2.2.1",
+    "gulp-sourcemaps": "^1.5.2",
+    "gulp-uglify": "^1.2.0",
+    "gulp-util": "^3.0.5",
+    "react": "^0.13.3",
+    "react-tools": "^0.13.3",
+    "reactify": "^1.1.1",
+    "vinyl-buffer": "^1.0.0",
+    "vinyl-source-stream": "^1.1.0"
+  },
+  "maintainers": [
+    {
+      "name": "muratsu",
+      "email": "sutunc@gmail.com"
+    }
+  ]
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


Mime
View raw message