From 36756fe75bd0e6814119b4b4d4fea88ace649e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Ramos?= Date: Mon, 5 Feb 2018 15:12:47 +0000 Subject: [PATCH] feat(images): bootstrap --- bundle/package.json | 2 +- commitlint.config.js | 2 +- packages/images/.babelrc | 3 + packages/images/.eslintignore | 4 + packages/images/.eslintrc | 10 + packages/images/.gitignore | 23 + packages/images/.tern-project | 15 + packages/images/.yarnclean | 1 + packages/images/README.md | 20 + packages/images/lib/index.js | 46 + packages/images/package.json | 49 + packages/images/public/index.html | 36 + packages/images/public/manifest.json | 15 + packages/images/src/app.js | 21 + packages/images/src/components/menu.js | 48 + packages/images/src/components/summary.js | 174 + packages/images/src/components/tags.js | 24 + packages/images/src/components/toolbar.js | 53 + packages/images/src/containers/breadcrumb.js | 33 + packages/images/src/containers/create.js | 3 + packages/images/src/containers/list.js | 68 + packages/images/src/containers/menu.js | 21 + packages/images/src/containers/summary.js | 57 + packages/images/src/containers/tags.js | 87 + packages/images/src/graphql/get-image.gql | 19 + packages/images/src/graphql/get-tags.gql | 11 + packages/images/src/graphql/list-images.gql | 18 + packages/images/src/index.js | 15 + packages/images/src/mocks/__aliases__.js | 1 + packages/images/src/router.js | 42 + packages/images/src/state/gen-index.js | 16 + packages/images/src/state/parse-error.js | 4 + packages/images/src/state/store.js | 39 + packages/images/src/sw.js | 108 + packages/logos/.babelrc | 3 + packages/logos/.dockerignore | 9 + packages/logos/.eslintignore | 4 + packages/logos/.eslintrc | 8 + packages/logos/.tern-project | 12 + packages/logos/.yarnclean | 0 packages/logos/README.md | 29 + packages/logos/assets/alpine.svg | 1 + packages/logos/assets/apache.svg | 1 + packages/logos/assets/brocade.svg | 1 + packages/logos/assets/cassandra.svg | 1 + packages/logos/assets/centos.svg | 1 + packages/logos/assets/couchbase.svg | 1 + packages/logos/assets/debian.svg | 1 + packages/logos/assets/fedora.svg | 1 + packages/logos/assets/freebsd.svg | 1 + packages/logos/assets/ghost.svg | 1 + packages/logos/assets/illumos.svg | 1 + packages/logos/assets/java.svg | 1 + packages/logos/assets/linux.svg | 1 + packages/logos/assets/mariadb.svg | 1 + packages/logos/assets/mongodb.svg | 1 + packages/logos/assets/multiarch.svg | 1 + packages/logos/assets/mysql.svg | 1 + packages/logos/assets/nginx.svg | 1 + .../src => logos}/assets/no-packages.svg | 0 packages/logos/assets/node.svg | 1 + packages/logos/assets/openbsd.svg | 1 + packages/logos/assets/percona.svg | 1 + packages/logos/assets/placeholder.svg | 1 + packages/logos/assets/postgresql.svg | 1 + packages/logos/assets/redis.svg | 1 + packages/logos/assets/scylladb.svg | 1 + packages/logos/assets/smart.svg | 1 + packages/logos/assets/ubuntu.svg | 1 + packages/logos/assets/windows.svg | 1 + packages/logos/convert.js | 49 + packages/logos/package.json | 37 + packages/logos/src/Illumos.js | 18 + packages/logos/src/Linux.js | 24 + packages/logos/src/alpine.js | 17 + packages/logos/src/apache.js | 17 + packages/logos/src/brocade.js | 17 + packages/logos/src/cassandra.js | 29 + packages/logos/src/centos.js | 107 + packages/logos/src/couchbase.js | 17 + packages/logos/src/debian.js | 25 + packages/logos/src/fedora.js | 33 + packages/logos/src/freebsd.js | 16 + packages/logos/src/ghost.js | 17 + packages/logos/src/index.js | 29 + packages/logos/src/java.js | 25 + packages/logos/src/mariadb.js | 17 + packages/logos/src/mongodb.js | 52 + packages/logos/src/multiarch.js | 17 + packages/logos/src/mysql.js | 21 + packages/logos/src/nginx.js | 17 + packages/logos/src/no-packages.js | 138 + packages/logos/src/node.js | 63 + packages/logos/src/openbsd.js | 15 + packages/logos/src/percona.js | 18 + packages/logos/src/placeholder.js | 17 + packages/logos/src/postgresql.js | 33 + packages/logos/src/redis.js | 53 + packages/logos/src/scylladb.js | 17 + packages/logos/src/smart.js | 17 + packages/logos/src/ubuntu.js | 22 + packages/logos/src/windows.js | 17 + packages/my-joy-beta/package.json | 3 +- packages/my-joy-beta/src/assets/alpine.svg | 1 - packages/my-joy-beta/src/assets/apache.svg | 1 - packages/my-joy-beta/src/assets/brocade.svg | 1 - packages/my-joy-beta/src/assets/cassandra.svg | 1 - packages/my-joy-beta/src/assets/centos.svg | 1 - packages/my-joy-beta/src/assets/couchbase.svg | 1 - packages/my-joy-beta/src/assets/debian.svg | 1 - packages/my-joy-beta/src/assets/fedora.svg | 1 - packages/my-joy-beta/src/assets/freebsd.svg | 1 - packages/my-joy-beta/src/assets/ghost.svg | 1 - packages/my-joy-beta/src/assets/java.svg | 1 - packages/my-joy-beta/src/assets/mariadb.svg | 1 - packages/my-joy-beta/src/assets/mongodb.svg | 1 - packages/my-joy-beta/src/assets/multiarch.svg | 1 - packages/my-joy-beta/src/assets/mysql.svg | 1 - packages/my-joy-beta/src/assets/nginx.svg | 1 - packages/my-joy-beta/src/assets/node.svg | 1 - packages/my-joy-beta/src/assets/openbsd.svg | 1 - packages/my-joy-beta/src/assets/percona.svg | 1 - .../my-joy-beta/src/assets/placeholder.svg | 1 - .../my-joy-beta/src/assets/postgresql.svg | 1 - packages/my-joy-beta/src/assets/redis.svg | 1 - packages/my-joy-beta/src/assets/scylladb.svg | 1 - packages/my-joy-beta/src/assets/smart.svg | 1 - packages/my-joy-beta/src/assets/ubuntu.svg | 1 - packages/my-joy-beta/src/assets/windows.svg | 1 - ...lue-ui-js-key-value-method-edit-1-snap.png | Bin 15559 -> 15578 bytes ...alue-ui-js-key-value-submitting-1-snap.png | Bin 14872 -> 14858 bytes .../network-ui-js-network-network-5-snap.png | Bin 0 -> 13555 bytes ...s-network-network-info-expanded-3-snap.png | Bin 26680 -> 13259 bytes .../__tests__/__snapshots__/cns.spec.js.snap | 26 - .../__snapshots__/firewall.spec.js.snap | 181 +- .../__snapshots__/key-value.spec.js.snap | 5020 +++++++++-------- .../__snapshots__/network.spec.js.snap | 156 - .../__tests__/__snapshots__/tags.spec.js.snap | 412 +- .../components/__tests__/key-value.spec.js | 2 +- .../src/components/__tests__/key-value.ui.js | 2 +- packages/my-joy-beta/src/components/cns.js | 6 +- ...ges-name-stuff-image-name-stuff-1-snap.png | Bin 12238 -> 11340 bytes .../__snapshots__/images.spec.js.snap | 25 +- .../__snapshots__/package.spec.js.snap | 8 +- .../__snapshots__/title.spec.js.snap | 72 +- .../src/components/create-instance/image.js | 33 +- packages/my-joy-beta/src/components/empty.js | 4 +- .../snapshots-ui-js-item-mutating-1-snap.png | Bin 9404 -> 9411 bytes ...ing-stopping-rebooting-removing-1-snap.png | Bin 31205 -> 31199 bytes .../__snapshots__/metadata.spec.js.snap | 452 +- .../__snapshots__/snapshots.spec.js.snap | 289 +- .../src/components/instances/metadata.js | 20 +- .../src/components/instances/snapshots.js | 2 +- .../src/components/instances/summary.js | 2 - packages/my-joy-beta/src/components/tags.js | 3 +- .../__snapshots__/metadata.spec.js.snap | 539 +- .../__snapshots__/networks.spec.js.snap | 279 +- .../__tests__/__snapshots__/tag.spec.js.snap | 279 +- .../__snapshots__/user-script.spec.js.snap | 665 +-- .../containers/create-instance/affinity.js | 3 +- .../containers/create-instance/animated.js | 3 +- .../src/containers/create-instance/index.js | 4 +- .../containers/create-instance/metadata.js | 8 +- .../src/containers/create-instance/tags.js | 10 +- .../containers/create-instance/user-script.js | 5 +- .../cns-ui-js-cns-loading-1-snap.png | Bin 31172 -> 31178 bytes ...firewall-ui-js-firewall-loading-1-snap.png | Bin 42553 -> 42579 bytes .../list-ui-js-list-loading-1-snap.png | Bin 14917 -> 14913 bytes ...metadata-ui-js-metadata-loading-1-snap.png | Bin 16711 -> 16701 bytes ...etadata-ui-js-metadata-metadata-1-snap.png | Bin 50872 -> 50859 bytes ...networks-ui-js-networks-loading-1-snap.png | Bin 38655 -> 38664 bytes .../summary-ui-js-summary-1-snap.png | Bin 9292 -> 9282 bytes .../summary-ui-js-summary-loading-1-snap.png | Bin 9282 -> 9300 bytes ...ry-ui-js-summary-mutation-error-1-snap.png | Bin 13126 -> 13130 bytes ...ing-stopping-rebooting-removing-1-snap.png | Bin 9300 -> 9300 bytes ...ags-ui-js-tags-editing-removing-1-snap.png | Bin 23704 -> 23699 bytes .../tags-ui-js-tags-loading-1-snap.png | Bin 16299 -> 16293 bytes .../__tests__/__snapshots__/cns.spec.js.snap | 1492 +++-- .../__snapshots__/firewall.spec.js.snap | 1522 +++-- .../__tests__/__snapshots__/list.spec.js.snap | 542 +- .../__snapshots__/metadata.spec.js.snap | 450 +- .../__snapshots__/networks.spec.js.snap | 200 +- .../__snapshots__/summary.spec.js.snap | 78 - .../__tests__/__snapshots__/tags.spec.js.snap | 1101 ++-- .../src/containers/instances/list.js | 3 +- .../src/containers/instances/snapshots.js | 8 +- packages/navigation/package.json | 2 +- packages/ui-toolkit/package.json | 2 +- .../ui-toolkit/src/form/copiable-field.js | 1 - packages/ui-toolkit/src/index.js | 1 + .../src/key-value/index.js} | 56 +- .../__snapshots__/message.spec.js.snap | 52 - .../__snapshots__/loading.spec.js.snap | 13 - .../__tests__/__snapshots__/text.spec.js.snap | 13 - packages/ui-toolkit/src/text/p.js | 13 - yarn.lock | 163 +- 196 files changed, 8786 insertions(+), 7657 deletions(-) create mode 100644 packages/images/.babelrc create mode 100644 packages/images/.eslintignore create mode 100644 packages/images/.eslintrc create mode 100644 packages/images/.gitignore create mode 100644 packages/images/.tern-project create mode 100644 packages/images/.yarnclean create mode 100644 packages/images/README.md create mode 100644 packages/images/lib/index.js create mode 100644 packages/images/package.json create mode 100644 packages/images/public/index.html create mode 100644 packages/images/public/manifest.json create mode 100644 packages/images/src/app.js create mode 100644 packages/images/src/components/menu.js create mode 100644 packages/images/src/components/summary.js create mode 100644 packages/images/src/components/tags.js create mode 100644 packages/images/src/components/toolbar.js create mode 100644 packages/images/src/containers/breadcrumb.js create mode 100644 packages/images/src/containers/create.js create mode 100644 packages/images/src/containers/list.js create mode 100644 packages/images/src/containers/menu.js create mode 100644 packages/images/src/containers/summary.js create mode 100644 packages/images/src/containers/tags.js create mode 100644 packages/images/src/graphql/get-image.gql create mode 100644 packages/images/src/graphql/get-tags.gql create mode 100644 packages/images/src/graphql/list-images.gql create mode 100644 packages/images/src/index.js create mode 100644 packages/images/src/mocks/__aliases__.js create mode 100644 packages/images/src/router.js create mode 100644 packages/images/src/state/gen-index.js create mode 100644 packages/images/src/state/parse-error.js create mode 100644 packages/images/src/state/store.js create mode 100644 packages/images/src/sw.js create mode 100644 packages/logos/.babelrc create mode 100644 packages/logos/.dockerignore create mode 100644 packages/logos/.eslintignore create mode 100644 packages/logos/.eslintrc create mode 100644 packages/logos/.tern-project create mode 100644 packages/logos/.yarnclean create mode 100644 packages/logos/README.md create mode 100644 packages/logos/assets/alpine.svg create mode 100644 packages/logos/assets/apache.svg create mode 100644 packages/logos/assets/brocade.svg create mode 100644 packages/logos/assets/cassandra.svg create mode 100644 packages/logos/assets/centos.svg create mode 100644 packages/logos/assets/couchbase.svg create mode 100644 packages/logos/assets/debian.svg create mode 100644 packages/logos/assets/fedora.svg create mode 100755 packages/logos/assets/freebsd.svg create mode 100644 packages/logos/assets/ghost.svg create mode 100755 packages/logos/assets/illumos.svg create mode 100644 packages/logos/assets/java.svg create mode 100755 packages/logos/assets/linux.svg create mode 100644 packages/logos/assets/mariadb.svg create mode 100644 packages/logos/assets/mongodb.svg create mode 100644 packages/logos/assets/multiarch.svg create mode 100644 packages/logos/assets/mysql.svg create mode 100644 packages/logos/assets/nginx.svg rename packages/{my-joy-beta/src => logos}/assets/no-packages.svg (100%) create mode 100644 packages/logos/assets/node.svg create mode 100755 packages/logos/assets/openbsd.svg create mode 100644 packages/logos/assets/percona.svg create mode 100644 packages/logos/assets/placeholder.svg create mode 100644 packages/logos/assets/postgresql.svg create mode 100644 packages/logos/assets/redis.svg create mode 100644 packages/logos/assets/scylladb.svg create mode 100644 packages/logos/assets/smart.svg create mode 100644 packages/logos/assets/ubuntu.svg create mode 100644 packages/logos/assets/windows.svg create mode 100644 packages/logos/convert.js create mode 100644 packages/logos/package.json create mode 100644 packages/logos/src/Illumos.js create mode 100644 packages/logos/src/Linux.js create mode 100644 packages/logos/src/alpine.js create mode 100644 packages/logos/src/apache.js create mode 100644 packages/logos/src/brocade.js create mode 100644 packages/logos/src/cassandra.js create mode 100644 packages/logos/src/centos.js create mode 100644 packages/logos/src/couchbase.js create mode 100644 packages/logos/src/debian.js create mode 100644 packages/logos/src/fedora.js create mode 100644 packages/logos/src/freebsd.js create mode 100644 packages/logos/src/ghost.js create mode 100644 packages/logos/src/index.js create mode 100644 packages/logos/src/java.js create mode 100644 packages/logos/src/mariadb.js create mode 100644 packages/logos/src/mongodb.js create mode 100644 packages/logos/src/multiarch.js create mode 100644 packages/logos/src/mysql.js create mode 100644 packages/logos/src/nginx.js create mode 100644 packages/logos/src/no-packages.js create mode 100644 packages/logos/src/node.js create mode 100644 packages/logos/src/openbsd.js create mode 100644 packages/logos/src/percona.js create mode 100644 packages/logos/src/placeholder.js create mode 100644 packages/logos/src/postgresql.js create mode 100644 packages/logos/src/redis.js create mode 100644 packages/logos/src/scylladb.js create mode 100644 packages/logos/src/smart.js create mode 100644 packages/logos/src/ubuntu.js create mode 100644 packages/logos/src/windows.js delete mode 100644 packages/my-joy-beta/src/assets/alpine.svg delete mode 100644 packages/my-joy-beta/src/assets/apache.svg delete mode 100644 packages/my-joy-beta/src/assets/brocade.svg delete mode 100644 packages/my-joy-beta/src/assets/cassandra.svg delete mode 100644 packages/my-joy-beta/src/assets/centos.svg delete mode 100644 packages/my-joy-beta/src/assets/couchbase.svg delete mode 100644 packages/my-joy-beta/src/assets/debian.svg delete mode 100644 packages/my-joy-beta/src/assets/fedora.svg delete mode 100644 packages/my-joy-beta/src/assets/freebsd.svg delete mode 100644 packages/my-joy-beta/src/assets/ghost.svg delete mode 100644 packages/my-joy-beta/src/assets/java.svg delete mode 100644 packages/my-joy-beta/src/assets/mariadb.svg delete mode 100644 packages/my-joy-beta/src/assets/mongodb.svg delete mode 100644 packages/my-joy-beta/src/assets/multiarch.svg delete mode 100644 packages/my-joy-beta/src/assets/mysql.svg delete mode 100644 packages/my-joy-beta/src/assets/nginx.svg delete mode 100644 packages/my-joy-beta/src/assets/node.svg delete mode 100644 packages/my-joy-beta/src/assets/openbsd.svg delete mode 100644 packages/my-joy-beta/src/assets/percona.svg delete mode 100644 packages/my-joy-beta/src/assets/placeholder.svg delete mode 100644 packages/my-joy-beta/src/assets/postgresql.svg delete mode 100644 packages/my-joy-beta/src/assets/redis.svg delete mode 100644 packages/my-joy-beta/src/assets/scylladb.svg delete mode 100644 packages/my-joy-beta/src/assets/smart.svg delete mode 100644 packages/my-joy-beta/src/assets/ubuntu.svg delete mode 100644 packages/my-joy-beta/src/assets/windows.svg create mode 100644 packages/my-joy-beta/src/components/__tests__/__image_snapshots__/network-ui-js-network-network-5-snap.png rename packages/{my-joy-beta/src/components/key-value.js => ui-toolkit/src/key-value/index.js} (90%) diff --git a/bundle/package.json b/bundle/package.json index af9247ee..f9a41c4a 100644 --- a/bundle/package.json +++ b/bundle/package.json @@ -14,7 +14,7 @@ "dependencies": { "apr-main": "^4.0.3", "brule": "^3.1.0", - "cloudapi-gql": "^4.5.1", + "cloudapi-gql": "^4.6.0", "hapi": "^17.2.0", "inert": "^5.1.0", "joyent-navigation": "^1.0.0", diff --git a/commitlint.config.js b/commitlint.config.js index 79d62efb..5c048575 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -4,7 +4,7 @@ module.exports = { 'scope-enum': [ 2, 'always', - ['ui-toolkit', 'icons', 'my-joy-beta', 'navigation', 'bundle'] + ['ui-toolkit', 'icons', 'my-joy-beta', 'navigation', 'bundle', 'images'] ] } }; diff --git a/packages/images/.babelrc b/packages/images/.babelrc new file mode 100644 index 00000000..bc07a154 --- /dev/null +++ b/packages/images/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": "joyent-portal" +} diff --git a/packages/images/.eslintignore b/packages/images/.eslintignore new file mode 100644 index 00000000..0321eefc --- /dev/null +++ b/packages/images/.eslintignore @@ -0,0 +1,4 @@ +.nyc_output +coverage +dist +build \ No newline at end of file diff --git a/packages/images/.eslintrc b/packages/images/.eslintrc new file mode 100644 index 00000000..435e02c4 --- /dev/null +++ b/packages/images/.eslintrc @@ -0,0 +1,10 @@ +{ + "extends": "joyent-portal", + "rules": { + "no-console": 0, + "new-cap": 0, + "camelcase": 1, + "jsx-a11y/href-no-hash": 0, + "no-negated-condition": 0 + } +} diff --git a/packages/images/.gitignore b/packages/images/.gitignore new file mode 100644 index 00000000..0bb3d99c --- /dev/null +++ b/packages/images/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env +npm-debug.log* +yarn-debug.log* + +yarn-error.log* + +## Image Snapshots Diff + +**/__diff_output__ + diff --git a/packages/images/.tern-project b/packages/images/.tern-project new file mode 100644 index 00000000..8c5745d4 --- /dev/null +++ b/packages/images/.tern-project @@ -0,0 +1,15 @@ +{ + "libs": [ + "ecmascript", + "browser" + ], + "plugins": { + "doc_comment": true, + "local-scope": true, + "jsx": true, + "node": true, + "webpack": { + "configPath": "../../node_modules/joyent-react-scripts/src/webpack.config.dev.js" + } + } +} diff --git a/packages/images/.yarnclean b/packages/images/.yarnclean new file mode 100644 index 00000000..378eac25 --- /dev/null +++ b/packages/images/.yarnclean @@ -0,0 +1 @@ +build diff --git a/packages/images/README.md b/packages/images/README.md new file mode 100644 index 00000000..15c1af8e --- /dev/null +++ b/packages/images/README.md @@ -0,0 +1,20 @@ +# images + +[![License: MPL 2.0](https://img.shields.io/badge/License-MPL%202.0-brightgreen.svg)](https://opensource.org/licenses/MPL-2.0) +[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg)](https://github.com/RichardLitt/standard-readme) + +## Table of Contents + +* [Usage](#usage) +* [License](#license) + +## Usage + +``` +npm run start +open http://0.0.0.0:3069 +``` + +## License + +MPL-2.0 diff --git a/packages/images/lib/index.js b/packages/images/lib/index.js new file mode 100644 index 00000000..7c81bee0 --- /dev/null +++ b/packages/images/lib/index.js @@ -0,0 +1,46 @@ +const Inert = require('inert'); +const Path = require('path'); +const Execa = require('execa'); +const { readFile } = require('mz/fs'); + +exports.register = async server => { + await Execa('npm', ['run', 'build'], { + cwd: Path.join(__dirname, '..'), + stdio: 'inherit' + }); + + const indexFile = await readFile( + Path.join(__dirname, '../build/index.html'), + 'utf-8' + ); + + await server.register(Inert); + + server.route([ + { + method: 'GET', + path: '/static/{path*}', + config: { + auth: false, + handler: { + directory: { + path: Path.join(__dirname, '../build/static/'), + redirectToSlash: true, + index: false + } + } + } + }, + { + method: '*', + path: '/{path*}', + config: { + handler: (request, h) => { + return h.response(indexFile).type('text/html'); + } + } + } + ]); +}; + +exports.pkg = require('../package.json'); diff --git a/packages/images/package.json b/packages/images/package.json new file mode 100644 index 00000000..1e1cd108 --- /dev/null +++ b/packages/images/package.json @@ -0,0 +1,49 @@ +{ + "name": "my-images-console", + "version": "1.0.0", + "license": "MPL-2.0", + "private": true, + "repository": "github:yldio/joyent-portal", + "main": "lib/index.js", + "scripts": { + "dev": "REACT_APP_GQL_PORT=4000 PORT=3070 REACT_APP_GQL_PROTOCOL=http joyent-react-scripts start", + "start": "PORT=3069 joyent-react-scripts start", + "build": "NODE_ENV=production joyent-react-scripts build", + "lint-ci": "eslint . --ext .js --ext .md", + "lint": "eslint . --fix --ext .js --ext .md", + "test-ci": "NODE_ENV=test joyent-react-scripts test --env=jsdom --testPathIgnorePatterns='.ui.js'", + "test": "DEFAULT_TIMEOUT_INTERVAL=100000 NODE_ENV=test joyent-react-scripts test --env=jsdom", + "prepublish": "echo 0" + }, + "dependencies": { + "@manaflair/redux-batch": "^0.1.0", + "apollo": "^0.2.2", + "date-fns": "^1.29.0", + "declarative-redux-form": "^2.0.8", + "joyent-ui-toolkit": "^5.0.0", + "lunr": "^2.1.5", + "mz": "^2.7.0", + "react": "^16.2.0", + "react-apollo": "^2.0.4", + "react-dom": "^16.2.0", + "react-redux": "^5.0.6", + "react-redux-values": "^1.1.2", + "react-router": "^4.2.0", + "react-router-dom": "^4.2.2", + "redux": "^3.7.2", + "redux-form": "^7.2.3", + "remcalc": "^1.0.10", + "styled-components-spacing": "^2.1.3", + "styled-flex-component": "^2.2.0" + }, + "devDependencies": { + "babel-preset-joyent-portal": "^6.0.3", + "eslint": "^4.16.0", + "eslint-config-joyent-portal": "^3.3.1", + "jest-image-snapshot": "^2.3.0", + "jest-styled-components": "^4.11.0-0", + "joyent-react-scripts": "^7.2.2", + "react-screenshot-renderer": "^1.1.2", + "react-test-renderer": "^16.2.0" + } +} diff --git a/packages/images/public/index.html b/packages/images/public/index.html new file mode 100644 index 00000000..4d61687c --- /dev/null +++ b/packages/images/public/index.html @@ -0,0 +1,36 @@ + + + + + + + + + + + My Joyent β + + + + + + + +
+ + + diff --git a/packages/images/public/manifest.json b/packages/images/public/manifest.json new file mode 100644 index 00000000..4372986a --- /dev/null +++ b/packages/images/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "Joyent", + "name": "My Joyent β", + "icons": [ + { + "src": "favicon.ico", + "sizes": "192x192", + "type": "image/png" + } + ], + "start_url": "./index.html", + "display": "standalone", + "theme_color": "#1E313B", + "background_color": "#FAFAFA" +} diff --git a/packages/images/src/app.js b/packages/images/src/app.js new file mode 100644 index 00000000..27e896a5 --- /dev/null +++ b/packages/images/src/app.js @@ -0,0 +1,21 @@ +import React from 'react'; +import { ThemeProvider } from 'styled-components'; +import { Provider as ReduxProvider } from 'react-redux'; +import { ApolloProvider } from 'react-apollo'; + +import { theme, RootContainer } from 'joyent-ui-toolkit'; + +import { client, store } from '@state/store'; +import Router from '@root/router'; + +export default () => ( + + + + + + + + + +); diff --git a/packages/images/src/components/menu.js b/packages/images/src/components/menu.js new file mode 100644 index 00000000..7de0b1ec --- /dev/null +++ b/packages/images/src/components/menu.js @@ -0,0 +1,48 @@ +import React from 'react'; +import { Margin } from 'styled-components-spacing'; +import { NavLink } from 'react-router-dom'; +import PropTypes from 'prop-types'; +import forceArray from 'force-array'; + +import { + SectionList, + SectionListItem, + SectionListAnchor, + ViewContainer +} from 'joyent-ui-toolkit'; + +const getMenuItems = (links = []) => + links.map(({ pathname, name }) => ( + + + {name} + + + )); + +const Menu = ({ links = [] }) => { + const _links = forceArray(links); + + if (!_links.length) { + return null; + } + + return ( + + + {getMenuItems(_links)} + + + ); +}; + +Menu.propTypes = { + links: PropTypes.arrayOf( + PropTypes.shape({ + name: PropTypes.string, + pathname: PropTypes.string + }) + ) +}; + +export default Menu; diff --git a/packages/images/src/components/summary.js b/packages/images/src/components/summary.js new file mode 100644 index 00000000..020549aa --- /dev/null +++ b/packages/images/src/components/summary.js @@ -0,0 +1,174 @@ +import React, { Fragment } from 'react'; +import { Row, Col } from 'joyent-react-styled-flexboxgrid'; +import { Margin, Padding } from 'styled-components-spacing'; +import styled, { withTheme } from 'styled-components'; +import Flex, { FlexItem } from 'styled-flex-component'; +import distanceInWordsToNow from 'date-fns/distance_in_words_to_now'; +import titleCase from 'title-case'; +import remcalc from 'remcalc'; + +import { + Card, + CardOutlet, + H2, + P, + Label, + Divider, + Button, + QueryBreakpoints, + CopiableField, + DuplicateIcon, + DeleteIcon, + DotIcon +} from 'joyent-ui-toolkit'; + +import { + Linux, + Freebsd, + Illumos, + Smart, + Windows, + Placeholder +} from 'joyent-logo-assets'; + +const { SmallOnly, Medium } = QueryBreakpoints; + +const VerticalDivider = styled.div` + width: ${remcalc(1)}; + background: ${props => props.theme.grey}; + height: ${remcalc(24)}; + display: flex; + align-self: flex-end; + margin: 0 ${remcalc(18)}; + + @media (max-width: ${remcalc(767)}) { + display: none; + } +`; + +const GreyLabel = styled(Label)` + opacity: 0.5; + padding-right: ${remcalc(3)}; +`; + +const ImageType = { + ZONE_DATASET: 'Hardware Virtual Machine', + LX_DATASET: 'Infrastructure Container', + ZVOL: 'Hardware Virtual Machine', + DOCKER: 'Docker Container', + OTHER: 'Hardware Virtual Machine' +}; + +const StateColor = { + ACTIVE: 'green', + UNACTIVATED: 'grey', + DISABLED: 'secondaryActive', + CREATING: 'primary', + FAILED: 'red' +}; + +const OS = { + SMARTOS: Smart, + LINUX: Linux, + WINDOWS: Windows, + BSD: Freebsd, + ILLUMOS: Illumos, + OTHER: Placeholder +}; + +export const Meta = ({ name, version, type, published_at, state, os }) => ( + + + + + {React.createElement(OS[os], { + width: '30', + height: '30' + })} + + + +

{name}

+
+
+ + + + + + + + Created: + + + + + + + + + + + + + +
+); + +export default withTheme(({ theme = {}, ...image }) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

{image.description}

+
+ + + +
+
+
+ +
+)); diff --git a/packages/images/src/components/tags.js b/packages/images/src/components/tags.js new file mode 100644 index 00000000..04ef9757 --- /dev/null +++ b/packages/images/src/components/tags.js @@ -0,0 +1,24 @@ +import React from 'react'; +import { Margin } from 'styled-components-spacing'; + +import { TagItem, KeyValue } from 'joyent-ui-toolkit'; + +export const AddForm = props => ( + +); + +export const EditForm = props => ( + +); + +export default ({ norMargin, name, value, onClick, onRemoveClick, active }) => ( + + + {name ? `${name}: ${value}` : value} + + +); diff --git a/packages/images/src/components/toolbar.js b/packages/images/src/components/toolbar.js new file mode 100644 index 00000000..f3c740ed --- /dev/null +++ b/packages/images/src/components/toolbar.js @@ -0,0 +1,53 @@ +import React from 'react'; +import { Field } from 'redux-form'; +import Flex from 'styled-flex-component'; +import { Margin } from 'styled-components-spacing'; +import remcalc from 'remcalc'; + +import { + Button, + FormGroup, + Input, + FormLabel, + Divider +} from 'joyent-ui-toolkit'; + +export const Toolbar = ({ + searchable = true, + searchLabel = 'Filter', + searchPlaceholder = '', + action = false, + actionLabel = '', + actionable = false, + onActionClick +}) => ( + + + {searchLabel} + + + + + {action ? ( + + + + + ) : null} + +); + +export default ({ handleSubmit, ...rest }) => ( +
+ + + +); diff --git a/packages/images/src/containers/breadcrumb.js b/packages/images/src/containers/breadcrumb.js new file mode 100644 index 00000000..58293379 --- /dev/null +++ b/packages/images/src/containers/breadcrumb.js @@ -0,0 +1,33 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import paramCase from 'param-case'; +import get from 'lodash.get'; + +import { Breadcrumb, BreadcrumbItem } from 'joyent-ui-toolkit'; + +export default ({ match }) => { + const image = get(match, 'params.image'); + + const links = [ + { + name: 'Images', + pathname: '/' + } + ] + .concat( + image && [ + { + name: paramCase(image), + pathname: `/${image}` + } + ] + ) + .filter(Boolean) + .map(({ name, pathname }) => ( + + {name} + + )); + + return {links}; +}; diff --git a/packages/images/src/containers/create.js b/packages/images/src/containers/create.js new file mode 100644 index 00000000..61cba9c0 --- /dev/null +++ b/packages/images/src/containers/create.js @@ -0,0 +1,3 @@ +import React from 'react'; + +export default () => (

hello world

); \ No newline at end of file diff --git a/packages/images/src/containers/list.js b/packages/images/src/containers/list.js new file mode 100644 index 00000000..d1288f7e --- /dev/null +++ b/packages/images/src/containers/list.js @@ -0,0 +1,68 @@ +import React, { Fragment } from 'react'; +import { compose, graphql } from 'react-apollo'; +import ReduxForm from 'declarative-redux-form'; +import { Link } from 'react-router-dom'; +import { Margin } from 'styled-components-spacing'; +import remcalc from 'remcalc'; + +import { + ViewContainer, + Divider, + Anchor, + StatusLoader, + Message, + MessageTitle, + MessageDescription +} from 'joyent-ui-toolkit'; + +import ToolbarForm from '@components/toolbar'; +import ListImages from '@graphql/list-images.gql'; + +// const TABLE_FORM_NAME = 'images-list-table'; +const MENU_FORM_NAME = 'images-list-menu'; + +export const List = ({ images = [], loading = false, error = null }) => ( + + + + {props => } + + {loading && !images.length ? ( + + + + + ) : null} + {error && !images.length && !loading ? ( + + + Ooops! + + An error occurred while loading your instances + + + + ) : null} +
    + {images.map(({ name }) => ( +
  • + + {name} + +
  • + ))} +
+
+); + +export default compose( + graphql(ListImages, { + props: ({ data: { images, loading, error, refetch } }) => { + return { + images, + loading, + error + }; + } + }) +)(List); diff --git a/packages/images/src/containers/menu.js b/packages/images/src/containers/menu.js new file mode 100644 index 00000000..04853cfc --- /dev/null +++ b/packages/images/src/containers/menu.js @@ -0,0 +1,21 @@ +import React from 'react'; +import get from 'lodash.get'; + +import Menu from '@components/menu'; + +const SECTIONS = [ + { name: 'Summary', pathname: 'summary' }, + { name: 'Tags', pathname: 'tags' } +]; + +export default ({ match }) => { + const imageSlug = get(match, 'params.image'); + const sections = imageSlug ? SECTIONS : []; + + const links = sections.map(({ name, pathname }) => ({ + name, + pathname: `/${imageSlug}/${pathname}` + })); + + return ; +}; diff --git a/packages/images/src/containers/summary.js b/packages/images/src/containers/summary.js new file mode 100644 index 00000000..57199fac --- /dev/null +++ b/packages/images/src/containers/summary.js @@ -0,0 +1,57 @@ +import React, { Fragment } from 'react'; +import { compose, graphql } from 'react-apollo'; +import { Margin } from 'styled-components-spacing'; +import find from 'lodash.find'; +import get from 'lodash.get'; +import remcalc from 'remcalc'; + +import { + ViewContainer, + StatusLoader, + Divider, + Message, + MessageTitle, + MessageDescription +} from 'joyent-ui-toolkit'; + +import ImageSummary from '@components/summary'; +import GetImage from '@graphql/get-image.gql'; + +export const Summary = ({ image, loading = false, error = null }) => ( + + {loading && !image ? ( + + + + + ) : null} + {error && !loading && !image ? ( + + + Ooops! + + An error occurred while loading your instance summary + + + + ) : null} + {image ? : null} + +); + +export default compose( + graphql(GetImage, { + options: ({ match }) => ({ + variables: { + name: get(match, 'params.image') + } + }), + props: ({ + data: { loading = false, error = null, variables, ...rest } + }) => ({ + image: find(get(rest, 'images', []), ['name', variables.name]), + loading, + error + }) + }) +)(Summary); diff --git a/packages/images/src/containers/tags.js b/packages/images/src/containers/tags.js new file mode 100644 index 00000000..f6672c5d --- /dev/null +++ b/packages/images/src/containers/tags.js @@ -0,0 +1,87 @@ +import React from 'react'; +import { compose, graphql } from 'react-apollo'; +import { Margin } from 'styled-components-spacing'; +import ReduxForm from 'declarative-redux-form'; +import find from 'lodash.find'; +import get from 'lodash.get'; +import remcalc from 'remcalc'; + +import { + H3, + ViewContainer, + StatusLoader, + Divider, + Message, + MessageTitle, + MessageDescription, + TagList +} from 'joyent-ui-toolkit'; + +import Tag from '@components/tags'; +import ToolbarForm from '@components/toolbar'; +import GetTags from '@graphql/get-tags.gql'; + +const MENU_FORM_NAME = 'image-tags-list-menu'; + +export const Tags = ({ tags = [], loading = false, error = null }) => ( + + + {props => ( + + + + + )} + + {error && !loading && !tags.length ? ( + + + Ooops! + + An error occurred while loading your instance tags + + + + ) : null} + {!loading ? ( + +

+ {tags.length} tag{tags.length === 1 ? '' : 's'} +

+
+ ) : null} + {loading && !tags.length ? : null} + + {tags.map(({ name, value }) => ( + + ))} + +
+); + +export default compose( + graphql(GetTags, { + options: ({ match }) => ({ + variables: { + name: get(match, 'params.image') + } + }), + props: ({ + data: { loading = false, error = null, variables, ...rest } + }) => ({ + tags: get( + find(get(rest, 'images', []), ['name', variables.name]), + 'tags', + [] + ), + loading, + error + }) + }) +)(Tags); diff --git a/packages/images/src/graphql/get-image.gql b/packages/images/src/graphql/get-image.gql new file mode 100644 index 00000000..df298c7f --- /dev/null +++ b/packages/images/src/graphql/get-image.gql @@ -0,0 +1,19 @@ +query image($name: String) { + images(name: $name) { + id + name + os + version + description + type + homepage + published_at + owner + public + state + error { + code + message + } + } +} diff --git a/packages/images/src/graphql/get-tags.gql b/packages/images/src/graphql/get-tags.gql new file mode 100644 index 00000000..76bbbcfb --- /dev/null +++ b/packages/images/src/graphql/get-tags.gql @@ -0,0 +1,11 @@ +query image($name: String) { + images(name: $name) { + id + name + tags { + id + name + value + } + } +} diff --git a/packages/images/src/graphql/list-images.gql b/packages/images/src/graphql/list-images.gql new file mode 100644 index 00000000..82b3f355 --- /dev/null +++ b/packages/images/src/graphql/list-images.gql @@ -0,0 +1,18 @@ +query images { + images(public: false) { + id + name + os + version + type + homepage + published_at + owner + public + state + error { + code + message + } + } +} diff --git a/packages/images/src/index.js b/packages/images/src/index.js new file mode 100644 index 00000000..9d35a45d --- /dev/null +++ b/packages/images/src/index.js @@ -0,0 +1,15 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import isFunction from 'lodash.isfunction'; +import isFinite from 'lodash.isfinite'; + +import { register } from './sw'; +import App from './app'; + +if (!isFunction(Number.isFinite)) { + Number.isFinite = isFinite; +} + +ReactDOM.render(, document.getElementById('root')); + +register(); diff --git a/packages/images/src/mocks/__aliases__.js b/packages/images/src/mocks/__aliases__.js new file mode 100644 index 00000000..f053ebf7 --- /dev/null +++ b/packages/images/src/mocks/__aliases__.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/packages/images/src/router.js b/packages/images/src/router.js new file mode 100644 index 00000000..6fde69e6 --- /dev/null +++ b/packages/images/src/router.js @@ -0,0 +1,42 @@ +import React from 'react'; +import { BrowserRouter, Route, Switch, Redirect } from 'react-router-dom'; +import get from 'lodash.get'; + +import { PageContainer } from 'joyent-ui-toolkit'; +import Breadcrumb from '@containers/breadcrumb'; +import Menu from '@containers/menu'; +import List from '@containers/list'; +import Summary from '@containers/summary'; +import Create from '@containers/create'; +import Tags from '@containers/tags'; + +export default () => ( + + + {/* Breadcrumb */} + + + + + {/* Menu */} + + null} /> + + + {/* Images */} + + + + + + ( + + )} + /> + + + +); diff --git a/packages/images/src/state/gen-index.js b/packages/images/src/state/gen-index.js new file mode 100644 index 00000000..327982f0 --- /dev/null +++ b/packages/images/src/state/gen-index.js @@ -0,0 +1,16 @@ +import Lunr from 'lunr'; + +Lunr.tokenizer.separator = /[\s\-|_]+/; + +export default items => + Lunr(function() { + const fields = items + .map(item => Object.keys(item)) + .reduce((all, keys) => all.concat(keys), []) + // eslint-disable-next-line no-implicit-coercion + .reduce((all, key) => (~all.indexOf(key) ? all : all.concat(key)), []) + .filter(key => !key.match(/^__/)); + + fields.forEach(field => this.field(field)); + items.forEach(item => this.add(item)); + }); diff --git a/packages/images/src/state/parse-error.js b/packages/images/src/state/parse-error.js new file mode 100644 index 00000000..a42ee0d6 --- /dev/null +++ b/packages/images/src/state/parse-error.js @@ -0,0 +1,4 @@ +export default ({ graphQLErrors = [], message = '' }) => + graphQLErrors.length + ? graphQLErrors.map(({ message }) => message).join('\n') + : message; diff --git a/packages/images/src/state/store.js b/packages/images/src/state/store.js new file mode 100644 index 00000000..380e1ee2 --- /dev/null +++ b/packages/images/src/state/store.js @@ -0,0 +1,39 @@ +import { reduxBatch } from '@manaflair/redux-batch'; +import { createStore, combineReducers, compose } from 'redux'; +import { reducer as formReducer } from 'redux-form'; +import { ApolloClient } from 'apollo-client'; +import { HttpLink } from 'apollo-link-http'; +import { InMemoryCache } from 'apollo-cache-inmemory'; +import { reducer as valuesReducer } from 'react-redux-values'; + +const { + REACT_APP_GQL_PORT = 443, + REACT_APP_GQL_PROTOCOL = 'https', + REACT_APP_GQL_HOSTNAME = window.location.hostname +} = process.env; + +export const client = new ApolloClient({ + cache: new InMemoryCache(), + link: new HttpLink({ + uri: `${REACT_APP_GQL_PROTOCOL}://${REACT_APP_GQL_HOSTNAME}:${REACT_APP_GQL_PORT}/graphql` + }) +}); + +const initialState = {}; + +export const store = createStore( + combineReducers({ + values: valuesReducer, + form: formReducer, + ui: (state = {}) => state + }), + initialState, + compose( + reduxBatch, + // If you are using the devToolsExtension, you can add it here also + // eslint-disable-next-line no-negated-condition + typeof window.__REDUX_DEVTOOLS_EXTENSION__ !== 'undefined' + ? window.__REDUX_DEVTOOLS_EXTENSION__() + : f => f + ) +); diff --git a/packages/images/src/sw.js b/packages/images/src/sw.js new file mode 100644 index 00000000..eb7a28cf --- /dev/null +++ b/packages/images/src/sw.js @@ -0,0 +1,108 @@ +// In production, we register a service worker to serve assets from local cache. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on the "N+1" visit to a page, since previously +// cached resources are updated in the background. + +// To learn more about the benefits of this model, read https://goo.gl/KwvDNy. +// This link also includes instructions on opting out of this behavior. + +const isLocalhost = Boolean( + window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.1/8 is considered localhost for IPv4. + window.location.hostname.match( + /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ + ) +); + +export function register() { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + // The URL constructor is available in all browsers that support SW. + const publicUrl = new URL(process.env.PUBLIC_URL, window.location); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374 + return; + } + + window.addEventListener('load', () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (!isLocalhost) { + // Is not local host. Just register service worker + registerValidSW(swUrl); + } else { + // This is running on localhost. Lets check if a service worker still exists or not. + checkValidServiceWorker(swUrl); + } + }); + } +} + +function registerValidSW(swUrl) { + navigator.serviceWorker + .register(swUrl) + .then(registration => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + installingWorker.onstatechange = () => { + if (installingWorker.state === 'installed') { + if (navigator.serviceWorker.controller) { + // At this point, the old content will have been purged and + // the fresh content will have been added to the cache. + // It's the perfect time to display a "New content is + // available; please refresh." message in your web app. + console.log('New content is available; please refresh.'); + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // "Content is cached for offline use." message. + console.log('Content is cached for offline use.'); + } + } + }; + }; + }) + .catch(error => { + console.error('Error during service worker registration:', error); + }); +} + +function checkValidServiceWorker(swUrl) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl) + .then(response => { + // Ensure service worker exists, and that we really are getting a JS file. + if ( + response.status === 404 || + response.headers.get('content-type').indexOf('javascript') === -1 + ) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then(registration => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl); + } + }) + .catch(() => { + console.log( + 'No internet connection found. App is running in offline mode.' + ); + }); +} + +export function unregister() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.ready.then(registration => { + registration.unregister(); + }); + } +} diff --git a/packages/logos/.babelrc b/packages/logos/.babelrc new file mode 100644 index 00000000..594acfe3 --- /dev/null +++ b/packages/logos/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["joyent-portal"] +} diff --git a/packages/logos/.dockerignore b/packages/logos/.dockerignore new file mode 100644 index 00000000..06ad4916 --- /dev/null +++ b/packages/logos/.dockerignore @@ -0,0 +1,9 @@ +src/components/base/*.css +node_modules +coverage +.nyc_output +docs/static +!docs/static/index.html +docs/node_modules +dist +package-lock.json diff --git a/packages/logos/.eslintignore b/packages/logos/.eslintignore new file mode 100644 index 00000000..0dd1156c --- /dev/null +++ b/packages/logos/.eslintignore @@ -0,0 +1,4 @@ +.nyc_output +coverage +dist +styleguide \ No newline at end of file diff --git a/packages/logos/.eslintrc b/packages/logos/.eslintrc new file mode 100644 index 00000000..54492a1a --- /dev/null +++ b/packages/logos/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "joyent-portal", + "rules": { + "no-console": 1, + "new-cap": 0, + "jsx-a11y/href-no-hash": 0 + } +} diff --git a/packages/logos/.tern-project b/packages/logos/.tern-project new file mode 100644 index 00000000..b4542e69 --- /dev/null +++ b/packages/logos/.tern-project @@ -0,0 +1,12 @@ +{ + "libs": [ + "ecmascript", + "browser" + ], + "plugins": { + "doc_comment": true, + "local-scope": true, + "jsx": true, + "node": true + } +} diff --git a/packages/logos/.yarnclean b/packages/logos/.yarnclean new file mode 100644 index 00000000..e69de29b diff --git a/packages/logos/README.md b/packages/logos/README.md new file mode 100644 index 00000000..805697ee --- /dev/null +++ b/packages/logos/README.md @@ -0,0 +1,29 @@ +# joyent-icons + +[![License: MPL 2.0](https://img.shields.io/badge/License-MPL%202.0-brightgreen.svg)](https://opensource.org/licenses/MPL-2.0) +[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg)](https://github.com/RichardLitt/standard-readme) + +## Table of Contents + +* [Install](#install) +* [Usage](#usage) +* [License](#license) + +## Install + +``` +yarn add --dev joyent-icons +``` + +## Usage + +```js +import React from 'react'; +import { Arrow } from 'joyent-icons'; + +export default () => ; +``` + +## License + +MPL-2.0 diff --git a/packages/logos/assets/alpine.svg b/packages/logos/assets/alpine.svg new file mode 100644 index 00000000..c4e89cfd --- /dev/null +++ b/packages/logos/assets/alpine.svg @@ -0,0 +1 @@ +Artboard 1 copy 6 diff --git a/packages/logos/assets/apache.svg b/packages/logos/assets/apache.svg new file mode 100644 index 00000000..0520c3b0 --- /dev/null +++ b/packages/logos/assets/apache.svg @@ -0,0 +1 @@ +Artboard 1 copy 13 diff --git a/packages/logos/assets/brocade.svg b/packages/logos/assets/brocade.svg new file mode 100644 index 00000000..c8055720 --- /dev/null +++ b/packages/logos/assets/brocade.svg @@ -0,0 +1 @@ +Artboard 1 copy 14 diff --git a/packages/logos/assets/cassandra.svg b/packages/logos/assets/cassandra.svg new file mode 100644 index 00000000..41c42092 --- /dev/null +++ b/packages/logos/assets/cassandra.svg @@ -0,0 +1 @@ +Artboard 1 copy 15 diff --git a/packages/logos/assets/centos.svg b/packages/logos/assets/centos.svg new file mode 100644 index 00000000..19540996 --- /dev/null +++ b/packages/logos/assets/centos.svg @@ -0,0 +1 @@ +Artboard 1 diff --git a/packages/logos/assets/couchbase.svg b/packages/logos/assets/couchbase.svg new file mode 100644 index 00000000..a759b170 --- /dev/null +++ b/packages/logos/assets/couchbase.svg @@ -0,0 +1 @@ +Artboard 1 copy 7 diff --git a/packages/logos/assets/debian.svg b/packages/logos/assets/debian.svg new file mode 100644 index 00000000..df713340 --- /dev/null +++ b/packages/logos/assets/debian.svg @@ -0,0 +1 @@ +Artboard 1 copy diff --git a/packages/logos/assets/fedora.svg b/packages/logos/assets/fedora.svg new file mode 100644 index 00000000..c2b7cf56 --- /dev/null +++ b/packages/logos/assets/fedora.svg @@ -0,0 +1 @@ +Artboard 1 copy 2 \ No newline at end of file diff --git a/packages/logos/assets/freebsd.svg b/packages/logos/assets/freebsd.svg new file mode 100755 index 00000000..cf420559 --- /dev/null +++ b/packages/logos/assets/freebsd.svg @@ -0,0 +1 @@ +Artboard 1 copy 3 \ No newline at end of file diff --git a/packages/logos/assets/ghost.svg b/packages/logos/assets/ghost.svg new file mode 100644 index 00000000..4a9e2370 --- /dev/null +++ b/packages/logos/assets/ghost.svg @@ -0,0 +1 @@ +Artboard 1 copy 16 diff --git a/packages/logos/assets/illumos.svg b/packages/logos/assets/illumos.svg new file mode 100755 index 00000000..3725f8c3 --- /dev/null +++ b/packages/logos/assets/illumos.svg @@ -0,0 +1 @@ +Illumos \ No newline at end of file diff --git a/packages/logos/assets/java.svg b/packages/logos/assets/java.svg new file mode 100644 index 00000000..f0ba2899 --- /dev/null +++ b/packages/logos/assets/java.svg @@ -0,0 +1 @@ +Artboard 1 copy 17 diff --git a/packages/logos/assets/linux.svg b/packages/logos/assets/linux.svg new file mode 100755 index 00000000..5dd1b15b --- /dev/null +++ b/packages/logos/assets/linux.svg @@ -0,0 +1 @@ +Linux \ No newline at end of file diff --git a/packages/logos/assets/mariadb.svg b/packages/logos/assets/mariadb.svg new file mode 100644 index 00000000..8de3aaa2 --- /dev/null +++ b/packages/logos/assets/mariadb.svg @@ -0,0 +1 @@ +Artboard 1 copy 18 diff --git a/packages/logos/assets/mongodb.svg b/packages/logos/assets/mongodb.svg new file mode 100644 index 00000000..5bf582e2 --- /dev/null +++ b/packages/logos/assets/mongodb.svg @@ -0,0 +1 @@ +Artboard 1 copy 8 diff --git a/packages/logos/assets/multiarch.svg b/packages/logos/assets/multiarch.svg new file mode 100644 index 00000000..d13493e8 --- /dev/null +++ b/packages/logos/assets/multiarch.svg @@ -0,0 +1 @@ +Artboard 1 copy 43 diff --git a/packages/logos/assets/mysql.svg b/packages/logos/assets/mysql.svg new file mode 100644 index 00000000..db3e33c5 --- /dev/null +++ b/packages/logos/assets/mysql.svg @@ -0,0 +1 @@ +Artboard 1 copy 19 diff --git a/packages/logos/assets/nginx.svg b/packages/logos/assets/nginx.svg new file mode 100644 index 00000000..a0bc64a6 --- /dev/null +++ b/packages/logos/assets/nginx.svg @@ -0,0 +1 @@ +Artboard 1 copy 9 diff --git a/packages/my-joy-beta/src/assets/no-packages.svg b/packages/logos/assets/no-packages.svg similarity index 100% rename from packages/my-joy-beta/src/assets/no-packages.svg rename to packages/logos/assets/no-packages.svg diff --git a/packages/logos/assets/node.svg b/packages/logos/assets/node.svg new file mode 100644 index 00000000..9734a4aa --- /dev/null +++ b/packages/logos/assets/node.svg @@ -0,0 +1 @@ +Nodejs \ No newline at end of file diff --git a/packages/logos/assets/openbsd.svg b/packages/logos/assets/openbsd.svg new file mode 100755 index 00000000..90bb151d --- /dev/null +++ b/packages/logos/assets/openbsd.svg @@ -0,0 +1 @@ +Artboard 1 copy 46 \ No newline at end of file diff --git a/packages/logos/assets/percona.svg b/packages/logos/assets/percona.svg new file mode 100644 index 00000000..cefb4459 --- /dev/null +++ b/packages/logos/assets/percona.svg @@ -0,0 +1 @@ +Artboard 1 copy 11 diff --git a/packages/logos/assets/placeholder.svg b/packages/logos/assets/placeholder.svg new file mode 100644 index 00000000..0e5ed8ef --- /dev/null +++ b/packages/logos/assets/placeholder.svg @@ -0,0 +1 @@ +Artboard 1 copy 45 diff --git a/packages/logos/assets/postgresql.svg b/packages/logos/assets/postgresql.svg new file mode 100644 index 00000000..636e8bf5 --- /dev/null +++ b/packages/logos/assets/postgresql.svg @@ -0,0 +1 @@ +Artboard 1 copy 12 diff --git a/packages/logos/assets/redis.svg b/packages/logos/assets/redis.svg new file mode 100644 index 00000000..20b696cb --- /dev/null +++ b/packages/logos/assets/redis.svg @@ -0,0 +1 @@ +Artboard 1 copy 20 diff --git a/packages/logos/assets/scylladb.svg b/packages/logos/assets/scylladb.svg new file mode 100644 index 00000000..d8f0664e --- /dev/null +++ b/packages/logos/assets/scylladb.svg @@ -0,0 +1 @@ +Artboard 1 copy 44 diff --git a/packages/logos/assets/smart.svg b/packages/logos/assets/smart.svg new file mode 100644 index 00000000..d13493e8 --- /dev/null +++ b/packages/logos/assets/smart.svg @@ -0,0 +1 @@ +Artboard 1 copy 43 diff --git a/packages/logos/assets/ubuntu.svg b/packages/logos/assets/ubuntu.svg new file mode 100644 index 00000000..2edec6ea --- /dev/null +++ b/packages/logos/assets/ubuntu.svg @@ -0,0 +1 @@ +Artboard 1 copy 4 diff --git a/packages/logos/assets/windows.svg b/packages/logos/assets/windows.svg new file mode 100644 index 00000000..b54071b4 --- /dev/null +++ b/packages/logos/assets/windows.svg @@ -0,0 +1 @@ +Artboard 1 copy 5 diff --git a/packages/logos/convert.js b/packages/logos/convert.js new file mode 100644 index 00000000..c9aa4e8c --- /dev/null +++ b/packages/logos/convert.js @@ -0,0 +1,49 @@ +const HTMLtoJSX = require('htmltojsx'); +const { default: forEach } = require('apr-for-each'); +const main = require('apr-main'); +const pascalCase = require('pascal-case'); +const { readFile, writeFile } = require('mz/fs'); +const execa = require('execa'); +const globby = require('globby'); +const path = require('path'); + +const ASSETS_ROOT = path.join(__dirname, 'assets'); +const SRC_ROOT = path.join(__dirname, 'src'); + +const converter = new HTMLtoJSX({ + createClass: false +}); + +main(async () => { + const files = await globby(`${ASSETS_ROOT}/*.svg`); + + await forEach(files, async file => { + const svg = await readFile(file, 'utf-8'); + const jsx = converter.convert(svg); + + const header = jsx.match(/(^]*)/ig)[0]; + + await writeFile( + file.replace(/logos\/assets\//, '/logos/src/').replace(/\.svg$/, '.js'), + ` + import React from 'react'; + + export default (props) => (${jsx.replace(header, `${header} {...props}`)}); + ` + ); + }); + + await writeFile( + path.join(SRC_ROOT, 'index.js'), + files + .map(file => { + const name = path.basename(file).replace(/\.svg$/, ''); + return `export { default as ${pascalCase(name)} } from './${name}'`; + }) + .join('\n') + ); + + await execa('prettier', ['--write', '--single-quote', 'src/*.js'], { + cwd: __dirname + }); +}); diff --git a/packages/logos/package.json b/packages/logos/package.json new file mode 100644 index 00000000..bf751902 --- /dev/null +++ b/packages/logos/package.json @@ -0,0 +1,37 @@ +{ + "name": "joyent-logo-assets", + "version": "1.0.0", + "license": "MPL-2.0", + "repository": "github:yldio/joyent-portal", + "main": "dist/umd/index.js", + "jsnext:main": "dist/es/index.js", + "module": "dist/es/index.js", + "scripts": { + "test-ci": "redrun -s test", + "test": "NODE_ENV=test joyent-react-scripts test --env=jsdom", + "compile:es": "babel src --out-dir dist/es", + "compile:umd": "UMD=1 babel src --out-dir dist/umd", + "compile": "redrun -p compile:*", + "dev": "NODE_ENV=development npm run compile -- -- --watch --source-maps inline", + "prepublish": "NODE_ENV=production npm run compile" + }, + "devDependencies": { + "apr-for-each": "^3.0.3", + "apr-main": "^4.0.3", + "babel-cli": "^6.26.0", + "babel-preset-joyent-portal": "^6.0.3", + "eslint": "^4.16.0", + "eslint-config-joyent-portal": "^3.3.1", + "execa": "^0.9.0", + "globby": "^7.1.1", + "htmltojsx": "^0.3.0", + "joyent-react-scripts": "^7.2.2", + "mz": "^2.7.0", + "prettier": "^1.10.2", + "react": "^16.2.0", + "redrun": "^5.10.0" + }, + "peerDependencies": { + "react": "^16.2.0" + } +} diff --git a/packages/logos/src/Illumos.js b/packages/logos/src/Illumos.js new file mode 100644 index 00000000..1986203a --- /dev/null +++ b/packages/logos/src/Illumos.js @@ -0,0 +1,18 @@ +import React from 'react'; + +export default props => ( + + Illumos + + + + + + +); diff --git a/packages/logos/src/Linux.js b/packages/logos/src/Linux.js new file mode 100644 index 00000000..53f01f01 --- /dev/null +++ b/packages/logos/src/Linux.js @@ -0,0 +1,24 @@ +import React from 'react'; + +export default props => ( + + + + + Linux + + + + + + +); diff --git a/packages/logos/src/alpine.js b/packages/logos/src/alpine.js new file mode 100644 index 00000000..5992a50c --- /dev/null +++ b/packages/logos/src/alpine.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 6 + + +); diff --git a/packages/logos/src/apache.js b/packages/logos/src/apache.js new file mode 100644 index 00000000..d32a9716 --- /dev/null +++ b/packages/logos/src/apache.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 13 + + +); diff --git a/packages/logos/src/brocade.js b/packages/logos/src/brocade.js new file mode 100644 index 00000000..5145a30f --- /dev/null +++ b/packages/logos/src/brocade.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 14 + + +); diff --git a/packages/logos/src/cassandra.js b/packages/logos/src/cassandra.js new file mode 100644 index 00000000..0c81f516 --- /dev/null +++ b/packages/logos/src/cassandra.js @@ -0,0 +1,29 @@ +import React from 'react'; + +export default props => ( + + + + + Artboard 1 copy 15 + + + + +); diff --git a/packages/logos/src/centos.js b/packages/logos/src/centos.js new file mode 100644 index 00000000..9c7dc3ed --- /dev/null +++ b/packages/logos/src/centos.js @@ -0,0 +1,107 @@ +import React from 'react'; + +export default props => ( + + + + + Artboard 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/packages/logos/src/couchbase.js b/packages/logos/src/couchbase.js new file mode 100644 index 00000000..247f959e --- /dev/null +++ b/packages/logos/src/couchbase.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 7 + + +); diff --git a/packages/logos/src/debian.js b/packages/logos/src/debian.js new file mode 100644 index 00000000..895e70eb --- /dev/null +++ b/packages/logos/src/debian.js @@ -0,0 +1,25 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy + + + + +); diff --git a/packages/logos/src/fedora.js b/packages/logos/src/fedora.js new file mode 100644 index 00000000..09492cae --- /dev/null +++ b/packages/logos/src/fedora.js @@ -0,0 +1,33 @@ +import React from 'react'; + +export default props => ( + + + + + Artboard 1 copy 2 + + + + +); diff --git a/packages/logos/src/freebsd.js b/packages/logos/src/freebsd.js new file mode 100644 index 00000000..4fc5250b --- /dev/null +++ b/packages/logos/src/freebsd.js @@ -0,0 +1,16 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 3 + + + +); diff --git a/packages/logos/src/ghost.js b/packages/logos/src/ghost.js new file mode 100644 index 00000000..78d83336 --- /dev/null +++ b/packages/logos/src/ghost.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 16 + + +); diff --git a/packages/logos/src/index.js b/packages/logos/src/index.js new file mode 100644 index 00000000..4b7e6a69 --- /dev/null +++ b/packages/logos/src/index.js @@ -0,0 +1,29 @@ +export { default as Alpine } from './alpine'; +export { default as Apache } from './apache'; +export { default as Brocade } from './brocade'; +export { default as Cassandra } from './cassandra'; +export { default as Centos } from './centos'; +export { default as Couchbase } from './couchbase'; +export { default as Debian } from './debian'; +export { default as Fedora } from './fedora'; +export { default as Freebsd } from './freebsd'; +export { default as Ghost } from './ghost'; +export { default as Illumos } from './illumos'; +export { default as Java } from './java'; +export { default as Linux } from './linux'; +export { default as Mariadb } from './mariadb'; +export { default as Mongodb } from './mongodb'; +export { default as Multiarch } from './multiarch'; +export { default as Mysql } from './mysql'; +export { default as Nginx } from './nginx'; +export { default as NoPackages } from './no-packages'; +export { default as Node } from './node'; +export { default as Openbsd } from './openbsd'; +export { default as Percona } from './percona'; +export { default as Placeholder } from './placeholder'; +export { default as Postgresql } from './postgresql'; +export { default as Redis } from './redis'; +export { default as Scylladb } from './scylladb'; +export { default as Smart } from './smart'; +export { default as Ubuntu } from './ubuntu'; +export { default as Windows } from './windows'; diff --git a/packages/logos/src/java.js b/packages/logos/src/java.js new file mode 100644 index 00000000..daed41cd --- /dev/null +++ b/packages/logos/src/java.js @@ -0,0 +1,25 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 17 + + + + +); diff --git a/packages/logos/src/mariadb.js b/packages/logos/src/mariadb.js new file mode 100644 index 00000000..afba0458 --- /dev/null +++ b/packages/logos/src/mariadb.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 18 + + +); diff --git a/packages/logos/src/mongodb.js b/packages/logos/src/mongodb.js new file mode 100644 index 00000000..f9d671a7 --- /dev/null +++ b/packages/logos/src/mongodb.js @@ -0,0 +1,52 @@ +import React from 'react'; + +export default props => ( + + + + + + + + Artboard 1 copy 8 + + + + + + + + + + + +); diff --git a/packages/logos/src/multiarch.js b/packages/logos/src/multiarch.js new file mode 100644 index 00000000..25872e22 --- /dev/null +++ b/packages/logos/src/multiarch.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 43 + + +); diff --git a/packages/logos/src/mysql.js b/packages/logos/src/mysql.js new file mode 100644 index 00000000..d489b915 --- /dev/null +++ b/packages/logos/src/mysql.js @@ -0,0 +1,21 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 19 + + + +); diff --git a/packages/logos/src/nginx.js b/packages/logos/src/nginx.js new file mode 100644 index 00000000..46dfdf9e --- /dev/null +++ b/packages/logos/src/nginx.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 9 + + +); diff --git a/packages/logos/src/no-packages.js b/packages/logos/src/no-packages.js new file mode 100644 index 00000000..453e41c2 --- /dev/null +++ b/packages/logos/src/no-packages.js @@ -0,0 +1,138 @@ +import React from 'react'; + +export default props => ( + + Guilty_Salamander + Created using Figma + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/packages/logos/src/node.js b/packages/logos/src/node.js new file mode 100644 index 00000000..449c759b --- /dev/null +++ b/packages/logos/src/node.js @@ -0,0 +1,63 @@ +import React from 'react'; + +export default props => ( + + + + + + + + + + + + + Nodejs + + + + + + + + +); diff --git a/packages/logos/src/openbsd.js b/packages/logos/src/openbsd.js new file mode 100644 index 00000000..437c268b --- /dev/null +++ b/packages/logos/src/openbsd.js @@ -0,0 +1,15 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 46 + + +); diff --git a/packages/logos/src/percona.js b/packages/logos/src/percona.js new file mode 100644 index 00000000..9a1bb819 --- /dev/null +++ b/packages/logos/src/percona.js @@ -0,0 +1,18 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 11 + + + +); diff --git a/packages/logos/src/placeholder.js b/packages/logos/src/placeholder.js new file mode 100644 index 00000000..62c16130 --- /dev/null +++ b/packages/logos/src/placeholder.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 45 + + +); diff --git a/packages/logos/src/postgresql.js b/packages/logos/src/postgresql.js new file mode 100644 index 00000000..1b23acdf --- /dev/null +++ b/packages/logos/src/postgresql.js @@ -0,0 +1,33 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 12 + + + + + + +); diff --git a/packages/logos/src/redis.js b/packages/logos/src/redis.js new file mode 100644 index 00000000..ac7cd4af --- /dev/null +++ b/packages/logos/src/redis.js @@ -0,0 +1,53 @@ +import React from 'react'; + +export default props => ( + + + + + Artboard 1 copy 20 + + + + + + + + + + + +); diff --git a/packages/logos/src/scylladb.js b/packages/logos/src/scylladb.js new file mode 100644 index 00000000..9879cb78 --- /dev/null +++ b/packages/logos/src/scylladb.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 44 + + +); diff --git a/packages/logos/src/smart.js b/packages/logos/src/smart.js new file mode 100644 index 00000000..25872e22 --- /dev/null +++ b/packages/logos/src/smart.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 43 + + +); diff --git a/packages/logos/src/ubuntu.js b/packages/logos/src/ubuntu.js new file mode 100644 index 00000000..fc62996d --- /dev/null +++ b/packages/logos/src/ubuntu.js @@ -0,0 +1,22 @@ +import React from 'react'; + +export default props => ( + + + + + Artboard 1 copy 4 + + + +); diff --git a/packages/logos/src/windows.js b/packages/logos/src/windows.js new file mode 100644 index 00000000..a32b06e2 --- /dev/null +++ b/packages/logos/src/windows.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export default props => ( + + Artboard 1 copy 5 + + +); diff --git a/packages/my-joy-beta/package.json b/packages/my-joy-beta/package.json index 3b997c8d..1dab7da5 100644 --- a/packages/my-joy-beta/package.json +++ b/packages/my-joy-beta/package.json @@ -24,9 +24,10 @@ "constant-case": "^2.0.0", "date-fns": "^1.29.0", "declarative-redux-form": "^2.0.8", + "joyent-logo-assets": "^1.0.0", "joyent-manifest-editor": "^1.4.0", "joyent-react-styled-flexboxgrid": "^2.2.3", - "joyent-ui-toolkit": "^4.5.0", + "joyent-ui-toolkit": "^5.0.0", "lodash.find": "^4.6.0", "lodash.findindex": "^4.6.0", "lodash.get": "^4.4.2", diff --git a/packages/my-joy-beta/src/assets/alpine.svg b/packages/my-joy-beta/src/assets/alpine.svg deleted file mode 100644 index a592a2e7..00000000 --- a/packages/my-joy-beta/src/assets/alpine.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 6 diff --git a/packages/my-joy-beta/src/assets/apache.svg b/packages/my-joy-beta/src/assets/apache.svg deleted file mode 100644 index 6c9a8557..00000000 --- a/packages/my-joy-beta/src/assets/apache.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 13 diff --git a/packages/my-joy-beta/src/assets/brocade.svg b/packages/my-joy-beta/src/assets/brocade.svg deleted file mode 100644 index ce29348d..00000000 --- a/packages/my-joy-beta/src/assets/brocade.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 14 diff --git a/packages/my-joy-beta/src/assets/cassandra.svg b/packages/my-joy-beta/src/assets/cassandra.svg deleted file mode 100644 index 2c7c2241..00000000 --- a/packages/my-joy-beta/src/assets/cassandra.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 15 diff --git a/packages/my-joy-beta/src/assets/centos.svg b/packages/my-joy-beta/src/assets/centos.svg deleted file mode 100644 index 49e5147c..00000000 --- a/packages/my-joy-beta/src/assets/centos.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 diff --git a/packages/my-joy-beta/src/assets/couchbase.svg b/packages/my-joy-beta/src/assets/couchbase.svg deleted file mode 100644 index 8635fb90..00000000 --- a/packages/my-joy-beta/src/assets/couchbase.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 7 diff --git a/packages/my-joy-beta/src/assets/debian.svg b/packages/my-joy-beta/src/assets/debian.svg deleted file mode 100644 index abf4cb00..00000000 --- a/packages/my-joy-beta/src/assets/debian.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy diff --git a/packages/my-joy-beta/src/assets/fedora.svg b/packages/my-joy-beta/src/assets/fedora.svg deleted file mode 100644 index 79022386..00000000 --- a/packages/my-joy-beta/src/assets/fedora.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 2 \ No newline at end of file diff --git a/packages/my-joy-beta/src/assets/freebsd.svg b/packages/my-joy-beta/src/assets/freebsd.svg deleted file mode 100644 index dcfdb7de..00000000 --- a/packages/my-joy-beta/src/assets/freebsd.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 3 diff --git a/packages/my-joy-beta/src/assets/ghost.svg b/packages/my-joy-beta/src/assets/ghost.svg deleted file mode 100644 index c0a69bf3..00000000 --- a/packages/my-joy-beta/src/assets/ghost.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 16 diff --git a/packages/my-joy-beta/src/assets/java.svg b/packages/my-joy-beta/src/assets/java.svg deleted file mode 100644 index 1e0b7e7a..00000000 --- a/packages/my-joy-beta/src/assets/java.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 17 diff --git a/packages/my-joy-beta/src/assets/mariadb.svg b/packages/my-joy-beta/src/assets/mariadb.svg deleted file mode 100644 index a514e5e7..00000000 --- a/packages/my-joy-beta/src/assets/mariadb.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 18 diff --git a/packages/my-joy-beta/src/assets/mongodb.svg b/packages/my-joy-beta/src/assets/mongodb.svg deleted file mode 100644 index 45d0d70a..00000000 --- a/packages/my-joy-beta/src/assets/mongodb.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 8 diff --git a/packages/my-joy-beta/src/assets/multiarch.svg b/packages/my-joy-beta/src/assets/multiarch.svg deleted file mode 100644 index ec7c989f..00000000 --- a/packages/my-joy-beta/src/assets/multiarch.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 43 diff --git a/packages/my-joy-beta/src/assets/mysql.svg b/packages/my-joy-beta/src/assets/mysql.svg deleted file mode 100644 index febd4b5c..00000000 --- a/packages/my-joy-beta/src/assets/mysql.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 19 diff --git a/packages/my-joy-beta/src/assets/nginx.svg b/packages/my-joy-beta/src/assets/nginx.svg deleted file mode 100644 index 7e833f7c..00000000 --- a/packages/my-joy-beta/src/assets/nginx.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 9 diff --git a/packages/my-joy-beta/src/assets/node.svg b/packages/my-joy-beta/src/assets/node.svg deleted file mode 100644 index 16cd387b..00000000 --- a/packages/my-joy-beta/src/assets/node.svg +++ /dev/null @@ -1 +0,0 @@ -Nodejs \ No newline at end of file diff --git a/packages/my-joy-beta/src/assets/openbsd.svg b/packages/my-joy-beta/src/assets/openbsd.svg deleted file mode 100644 index 09b50623..00000000 --- a/packages/my-joy-beta/src/assets/openbsd.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 46 diff --git a/packages/my-joy-beta/src/assets/percona.svg b/packages/my-joy-beta/src/assets/percona.svg deleted file mode 100644 index cc9778a0..00000000 --- a/packages/my-joy-beta/src/assets/percona.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 11 diff --git a/packages/my-joy-beta/src/assets/placeholder.svg b/packages/my-joy-beta/src/assets/placeholder.svg deleted file mode 100644 index 3e8734b6..00000000 --- a/packages/my-joy-beta/src/assets/placeholder.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 45 diff --git a/packages/my-joy-beta/src/assets/postgresql.svg b/packages/my-joy-beta/src/assets/postgresql.svg deleted file mode 100644 index 673b52af..00000000 --- a/packages/my-joy-beta/src/assets/postgresql.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 12 diff --git a/packages/my-joy-beta/src/assets/redis.svg b/packages/my-joy-beta/src/assets/redis.svg deleted file mode 100644 index 56887cfa..00000000 --- a/packages/my-joy-beta/src/assets/redis.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 20 diff --git a/packages/my-joy-beta/src/assets/scylladb.svg b/packages/my-joy-beta/src/assets/scylladb.svg deleted file mode 100644 index d16985ba..00000000 --- a/packages/my-joy-beta/src/assets/scylladb.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 44 diff --git a/packages/my-joy-beta/src/assets/smart.svg b/packages/my-joy-beta/src/assets/smart.svg deleted file mode 100644 index ec7c989f..00000000 --- a/packages/my-joy-beta/src/assets/smart.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 43 diff --git a/packages/my-joy-beta/src/assets/ubuntu.svg b/packages/my-joy-beta/src/assets/ubuntu.svg deleted file mode 100644 index f6e9aaa5..00000000 --- a/packages/my-joy-beta/src/assets/ubuntu.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 4 diff --git a/packages/my-joy-beta/src/assets/windows.svg b/packages/my-joy-beta/src/assets/windows.svg deleted file mode 100644 index 87d416ca..00000000 --- a/packages/my-joy-beta/src/assets/windows.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 copy 5 diff --git a/packages/my-joy-beta/src/components/__tests__/__image_snapshots__/key-value-ui-js-key-value-method-edit-1-snap.png b/packages/my-joy-beta/src/components/__tests__/__image_snapshots__/key-value-ui-js-key-value-method-edit-1-snap.png index a8a153e25186eba5f6ddfde2ddcdf528c67bc711..63bc33ce4f2415ad2ad6a9a929a2a915e9c60bf6 100644 GIT binary patch literal 15578 zcmeHuX;4$?y6$pB+kxG(RS*TcMNknzK#?KDZrdR;wW1&(gN@7rN@NHGf^7?1MNp6# zLfcG@43T*V5EW&H2*^A{1QH=YAR#~?A@^PEU3E{@{d4ZAz0W@PmQ`9Sabt|?A)4t^J`ZKAHxFo_8jt$eG#*iqe>(6Ry{(@e=QAE(^Prq4z z8vS}G4%viWH%R@{AAZ!?(Gm6dSj8dQ3ZGKve@M-7^_9P0z+f=ti=Q9k>6nGl&yQ7i zt&u7H`<+u(pBa${4ZLRFNMx3lny(mk`MN^0ev7&Jk-`==gsy0dX;o6Ficd7I_)GZCL^h-M;HcVQM z1O^2h*>&uC9C{PG+)JVF z+0(>2*Gx8QWG(VKZ$F~$p?UITMpo8goY%+`Eys=wqnZd6tCFJzvB!)ei;9ae%<@iG z{&CM=tgNh3X8bx`z2DVs+_*7Pp{1oIVtMh?C%dKPW%-5tXG3Y*w{G3aS;&&k6(Q7c z!Bm4xi=gHDX5_W}jx|s3WYK6?>{44q2)25*R#x7ZYP-UX)gF6p%H_t=^mr^fohDwU zW!g}jdJ7x~Q*O42)z#Glw`;a(i{?5CJq9c078Y0|@?yVmZDw4ha7>ksQ%ZiW%c;cs zk)W?FS()U7kqE5*mR(2dVb)7^hF)IH_ClwiY$UvCvr^JiNG>I1vz!aXmMvC8+!&#d zg{42*smu-0s{GD((Azw6G>Smn&yVG;4uI(f9oB|aNJk(J4G_YAPwC?OF_3zsrJ^<9c^RH<}1Kyvc> zhSO_NM3zzi?fJdWw5n&HWSM0X7O0HmZL%lR zGBcG}_aZ2IAhldGnFYzmnbgEvqqK$6E$L$YB}za>%5sgq)w< ze7`4+$V+52LnLvtZAC{CPr5huI;AAL<&`@wUMYjy7@XI9uM=ygMv{IbbYF}XP0&(4 zo{`AiO`6@kI;-Z@+-L$UMv?|yPXotgYSFYa$^NbxMu{;Q85ubig^IS~rEU#1wWrG* z8a6O6PvzuT=;(NLTl=QN(xXXuI5Q~{X62|&}$i6 zs#0oeYn6m6Ljjzs1Fg~4*4FVS-TT66et>jRn}fr2Wwkt-VVWn`CAm!`N;%|LFBHwJp1k4NRQEGn;Ygmt}%RR=!+SMBh0UYfF}2nF;L| zSYIH|hB>9BrXIj?c`0JO2Bzr-`6^52rXES%$yb1eW4a81F)& zo6bHtkK`^Z*L4-7>p$e>qyOoDWXXT)ST<( z>QA0LvC7@i%T0oeCr;YS8vrh^jM=Un)NpETc8Il(@gyzx<4#JH-sGLgEy+m=`0^q& zWC1T0EjSIoeSqd6FWk5C05qdLRn$SAX?P7NpX<(MB#|MNhBJQQi_K4ck1@VCVEzDmokC^P{b0RlkUNUEeNInR!m@d zs~4&`>Cga)t3--a=r2yGS{TwrA2iY$d_LZh=>*S|FHciLX{|~c=1|tB>$R1`WMNE3 zMn*2~?nVWIZEUn!7Pjgrn`Riw1aWppvw6q>%I-puLnQ=k8)$I_-Z z?DHLXMiceZS|)o7I|c^yDjzv0OifJ*K1pEX6i|}g0bOoVrRl){8nB`c>{z>js*#hE z)3K_#_F=6eiM_W^&jYk5G(c8%d>my++WFoH>er*}BaA-7MUI5)diYKEbp@5&>V}3& zN=lM^hX`5S?DF|Ow?gN(KPo?MQ0r9 z+T@5cZz{)BJaIr2oPgf}`0@_RZ;`edaS7@ti$1y*!ym&0&G9?5@SCH65z;9rRV>G| z!ue`;KgG z?g8^KUFwyVUJ7sJ5rlMM{b{?z?EqnhDf*b@$wCvdXwoTye;cLOQ~Qy%{YB!HWhcN0 zdG-yIX6wE-I*nfc4+U1fasNo;>({3%Dk{*Vvdlf%RkP+ofgrDN-@bk0laq#~9pNJ9 zle9I|)V4SV5}es;a-;Uiy?bZ`=tU_SHNpxdcXf5;%k4NFnP!=r0TsC^R+SEmUb>9N zX^%CgQ?Lz@-WRl1!{e^Ew?lgxE?z%y>6+vQJLTNm+?uw$>})qG>o8CD71jSGPZm+r zxxVh{om6NDx?qpl8vL#I-MeX2Y5+CGDQKOKudWVl4U&2WxjFD>r>pVfbv|y;jP6~L zKH5Tm+v>~yhv>}zyw>>l$zvHU0MyI5W_AA3$bpw;*)A?Fz0<6CM)2TZc&jJ!`paJs z87&|c5FVJW8btb%udgqBEm*s2Uqt*5>zh#PkG#s(JaNKdezJFbVxkdh=5sXk&a8#d`|D76cz81zqibZ;FHY?h zZk)^`PY5?6VcW3}WXypgsRu62LEH!CgsxS4+3blRuP-F6-HL|yf6XemhDvdtbO>sQ z&vb~pVoUd&&>GVZfGg0IyFNY{S>q2g)hPkmB`j|VL|R3ZZSF9oMI-YW0wN5xCMr~)ASC#z}jn)5O}DO+bN*5zLLN@=U}^T-8zeEB0JM4~l-Ughu9ZU<*P)fwXHOM&w z@x)b&r4`?Fk%?r>^VrIx?k4@7Iic@NKP-F_S%{OZI(SiM<9TG7Z1JWtzuC{t$-2H* z<~QixHw~82f^0_%0!*T{Q28{-iVTw!GA>Fn9a8b#6p961T`|DWACfjWySOwIxpb%l zEy}Sf^~ecbhlH(jqY3y$;_(;pgub=26a-$as$pXFbe<)`S_IVa?J;|M9MF&ef_wMw z-7vnIv;zt!)6;UZv+!>)EY90+^OXT04};K!97pW-UV}bsj2%>!W#3S1%&1&Uw;(OM z!>zx!WSQ$YW_!;Pm8=y(0J@E|wZ%n6W#j|MD}yVs`gU-$k6e<%)>hBk6pV(#zrRPNo~56BF+H-+Q(o>)qBo=B zc$Kf{D6W8ITYblT+qOf`kxkTxP=a?VnRA z03-wHM>7Rr6Q&hG&NVc;QHGc&+0~+!VeFRR*QN)Nw;rE>X1nH9OuWq1_x*V3{Mck6 zeaQW-NtF$~4!bhD*Q@@!wV#YjTsvRh_4W1SmxqLeG{+scFBL39@`URy#&9?vMGL|? zrE>9Go*YlGSz>RTHpkD_a-Lje8X-9uwEncTeG0H-{8Vvw1}G9IGQm+tSC^M%5_qI^ zz{>!Yj@Joe(JszCnCb40-rji7jIi#HO74u*4lkk=8j8fNfwJTG@87p5cD>ry*Vo?D zbE-CVJ@P55jP>V%61U~4?IC>s$h14$QA53%UYUt($Bw|qh2ulEOcKM-b^B6ZOIA_Q zEr$L*tn=FaVK2yJGD^6BgT&ef5#|{rvBD~4O#;bD_;gRA;8t&e-js`pY)~th8ZhK` zU?HD_Bv7xz$S6WgTP%?ysn^-DzKoCKB2o5N=-9GnMR;FQAJvg_e7<|}H@B@QVCK}DY@WwwCO^B0|I5G*ft-l7GiCX%Kc@m88lkZ)u2wO%nQL#6-@0wA z+Y_TC%PCi8bILHu=jEz8OU}q@W!(7u?%Rc{^3oS3_*dlkRQoDg%tcfD>E9zYGrBogEu>m3;$%`Ns-Pv7ZVL?}nM`I9X+@yTspN6NJo?@wps%CA zXR7bI|9CnoA|r3shRG1>bcddSmR198ti3RR$Jc)sdULSCTQKcQOH@EPbSq|IV0foJ z>a&FE&%HQmQJ{c>APF7)b<45(=6H>$TQ-3{y$-QsAel`fA)53FpwVMNzxc)mn$%KN zexMW=duP)@-Drd2+8dD|O95Sfc`KF#9>Vze zc*ERyhX#Q=Ivi2z?C#!T15~F!=i~>`bV z(O-FyFJ7EK`6ugzn8VExL_A2u=3P-=R@v>?w^>OM7sP9$(Q5<5N>b!vQiVtLVO&9- zvTYQ`_|)+QnkaYNwp_4>S=j1l>L^U<#;)i`O%f(t;t5OfGJR#o#rQ^L^|1%44f>t| zteFuv+8yf{aYs6#>uQQof5$?=+v96=YjrWwXJk*_x&Tg%4G0T;WFVX_q&u}THCl;&VDQAD_5^CBwCb>Pz;^!L zDcRf1Ebn@GHtobnSBz;6wW6ZHYpfB9uwpOKKCZXWDKj@$1?{xCxj9&ws8)e295($; zR#vv-<3}jDF?|PUGhjbLX5R4=TYa_#+4t_D6nYct_gGVGM9c1Nh+1n=bD#2k%wYe3 z$E!?Tce-EKc6ru<32(}_*fl#sp2+DhWMX$Yettu5AXBgyqmKD{Zj*kJx7Og(t=k+% zs>D$f>kQiYDOygYI>dTdw|-Jh z8M(1F*QQDb%#3(F0(V5edaS4wfY`T+Z5@vZ@R>BN|@@!$-EL0Gg8YwtHQq)y|H9v?W^O9Jj)*OFxvz%+s zK&?7LYL$;h8gT1C+v6f*tLM^J{Z3R8fqU80%h+C^J?9P*8Jr$S02!O~?!LYR%zV!Q zcXxLeSJ#W@&z}c04K-l|g1B$*?v8~rj{*{`T|M}asM~^4D`#it#ie`TAEVt&(#D6F z3q@c+;d0HIYM;nzw7Kj8rhk>!TvagMP3vR&+{a*CZgF~sM{X^0bk)nMm2vI9VoD*C z-F@)M6Bp7nZ}saitvc4Fj;2>gryatn^Z1!8l5x;kv+KNZL(D|nl_Sw<`Nv6fp5kX2 zE&(@}l#LrzZ3BO_TKjU!h?x%D9!% zYVkDB%CptRiJUA$(LZP)p2k>+Z5alvXXi7QK6qYUZYh|YZR}2~AofZ{jDNA0>aGdd z_dW7fIzf-%1-5GkgCYJ+tJ~StwGosz4|Y)c6-o1N+^kHGTqx3iUHBi(=X*5`pyMx4znJg-< zy+`{5eX%Yg)1^ zC0f&#K5&9aleSfa2g5}I(hBv7ax{u*gqc82{m;b-4XS=O_9z-QCr|=Upv8wkjJ`O3 zYW8XtM)=`mU6H-H)Oxh0qhz$)YiuNM?e+X$&VpH$1oSM)r_TlYE-1t<7YfHyR$Nf% zLif3{r`#f{YwLVo>T%ZzVRnolZlSJ%T5gAU7D25DU1*w@m6pB$zBJfH5yNy9kct1` zw!r>uWO@b$lE5_tbv(QY{S0^n%yu}qr>7?lNYEU{>*d+>%e@n|-&vXMsHjmxUbkuu z$D6Da4aHalOwHVJ6t|p>_Zet1wJy;VQ$KmTIC~g3P3BTKm>Xh3yx*rcS=}#jkuds8 zM^sd@G{chmCORj4o{Y3*es6ARsm}jmU&st$Yn0sx>pPZ4p7w`#q>rIC(dy zy5*ee<&ui*nF5EV)xDjf4rAHvPtVH{Zf-yIDR`JQ2rj18gF`-fC}h~#?FY8eH*sYk zCME`E0Mcyu19f320EO%Zj`8r|FOAO+!`e8Q03TMAyOawIfQ!z}H~zr1+hM{g#T#;ccGvi9>T4!2Cx` z`aPOZ4;^F<^Uu`qMj$0m6)ehb-+(=)(3-(rR>llrpq1Hg2OC^6lVi~R0jHEeAGACw zG@#xmR4AGtk=6i}FwrD%!cMmLy zrId^f4GfxQPOOPSw@cVvxnR8Si3G@ntrppEl9icPNogtSwZUG6NrCnz#YFQZBNTPP zLPkj-8jlMLk_-j#k86^HfdCfZ=md|*o3DIFW$)c0+)6vWn5H)|aZJNR_dqsf`J$PM zu+(swXYTlRg{M9oyl%B9-VQX^v7HxZu)91n*;r5GWqeAk=vevW@z~HTESEZVp#V7MTO8+NRI9> z!D3Pb%}!j{fIEeH`b%F@@w^r-P@CvR0MsP^=80V3@Tgr63>z%=hC2QE{7P_A=~!V6 zR-t$ALm-Zl4t+%~xJYG6r8>H?!+U5#{Jw#C^%qtW-q?m48JlK9iSR4jagGjKJ@Nik zWC+_~ab(L4&xwy&@oG1I1U1hEQ&f^M?%On8320QaMh%BbV|4Q>H`jgfuMCCw6K-ZG z0-+u=V75sC!Qm57$Wk2@X(Tu~d%izZV_Z8z-1F%`EV1{y2%&M0noB!JzxzX6U@J`x zDo&NfotDf(&RI^Y#<8mJB`bNq-W9Q0#+T@cQ3_EJewUb)%j*(T+Ph+2oEOPixOm|9 z$eI#vI^5t=uLedlnQ50BR-daDC-=^XIF2<7D2e7qrmC~1IK8e!4I3V*V2(4Cm{lhy zrkegHPgs$9vbpDYv}G>y5ofX_=BR}_v92%E6^=!umQa#km}NUm^%dhzh9-uG*B#?C zb`W92MOVM{+Q9JSs}%=EfFuCpFbN1)Hq~j(jz}?jMxV9dSez@K8 zq=RH_g}=rH+UMN!$LLYp1tZoPF%3}~edgV6acalo)$a7mhTA!XZLZZ=JqzNKZ=GKt zX}87PUjpRzKg&h~R}tbHcD!>!-yF(bwYp?xX90i#O07?Q@AJSicm6kuF7n#hC7Cxj zhw&3%le~Ya3k((Xd%oPpNp;xhIR{m*f=UIyEUe%k2FIcw{F}eOzt8aBdUpB;1i%KT zK6qtF?Y+aQ1dA>b3;fZIskcN^r4EgcZFRb8g00VifB6OcRZmY(Gm4G-LAy1e5#UoY zqzE`p;bqofg~N8*b8mK+#pY|lfQ0bLVWjp+ypHz-m`jMXM8>`a*0`YIkDM~5tMZyH ztIp4zmdJy4!nf|Yh(yPsOzwmlfuQLS(NX&+zXHRu_Z zf7Y7*S56L{c)~~QtiX`hTRo71EZ#qe6j&u5w+GV>HDW(WCYS=;qjotYv6(#k2lxyO zE_7!wdi|GJOaHpVPXErC{&yYl`a0(S&f|1nXZ!1H11|m#I)eCh|L@;+w)X#PFnBFy zgzu|INx)WaX?2~s^l`=2!^w7rt4Eh#$D#W_NbvDBt0$N3*RHaY+V%Uw{k>2jbvsLxl|6o?)@UMpl@DLF g6&eTsPw2 z^FGh>eZTzG(&WHLM?ONKPzOxUe{&Iq+5>;?Mt%4J92!zqj8Ul1QKsMg`O>v4_E>Dp zSa_^h%xnuEd2C^3cKt7@5AR=}ICV3(wI20WVvo`Z{k1P8yI&r)#SNW(w=-P7@HgWJ z%ZEneCGY7KNnSd2RQ;P^Yu2Z~CMDVZTIEWjEBS_6_GB>>^6!0=S80*C-nE6R3$8n( z$BgMx(VNN6GQmiv+Lzc!u^)bR%29Xt7>ua#v(Ah&ew8M1ZfEZBQDw&~ylL{BgK)z2 z^1jbb%5V-&*quq_!)LfO=@@D!9M8VkeHQtA;sNSIwe4C>iX2y@!suI zwdeoqWENf|G+yG8L<=N>V$0Fc4zGh(U)}ojk>PQ+p~WLK@^+2qqvy?BG8B!Mf>PX* z^ps3P2Am@EA3bs}r0sc>f3c`<;SqZGe($$0ee4k__U`_UAu7CD|@DIB;mL1)> zAGy!}SuFqN$;G~v5^<__Wv(xLl97?UGcZGWr0Zb$>~48v^zoi8pGJgB?m*J|e_^iw zW_s~l0TylEDBUr{w99CNyZjSuwwzPNm z!*iwtGMQY6Cfk=7aV-4({8$x6E>-q&eDd|{*A-1eLwTCx4Q@^GD*^##DxisCDkmc& zGrY)`dBQ;%B(HL64!5m#+V4d*a{mPH@q|jnVAftp#Tzwj@ker(aMZO|Y9YhEg)?VJ zQ5Lfu#1#D20N#S)Oq+alo7b$f}iVwF_S{(i`+W1+7o#bdDQPmmCvJ3n{tw{2KXg*h!Ck+_E$pQ|}O zSC@7Q`)++>Lla*8Xw178HKKJE@0A+vbV*5x-rTP@dfvRb%jfeua?l2yot-rcPm7lC z1jQUPIU4-U_;OnHWBZcX<#sjNaFrjOPEXl)>iOp?wxu0r&dUVzOl?(Lr|`ZvyaSSw zvp?=T)w)Z{@UFEL`V5k7^0>9PjyU0rDM7k^Vvn!Czj^+}wqm;qjlj|8CmqNqxz}0@ z%KeARJF*RQ66B+O7He6hqgR^_G~vcL9F9;(!{-R7;w@8xnHoiFYimnygI&QxptRT8 zsxwP3G=vc=m>J{ZB8NvtG(BJ6H(Z;zflL@-+JGUngclB-xGs@2ZMHM=S8D3sjX8;eftGd$nhS^`@kbXc``>`{r z(7r^n&L*ipuN~mWQ48r$6>`@mt`9{rVnas)sy&6vGeU-Vivi_f#LU4420niqpJ)7b zks=sZY^!1BWHw1*3=`xcE_WGl>qmoI#8yhdIMhDi;7eJ19El;=UvCEp4 z>A9k?!6p`AdY{YMUmD*1q~@`{GG8;B;n&mMeQ$$H#Xu(`YI<8*8gMH82g|;ImfT9i zi+C`bN+j$UE9BLuw$oU~hO_g=@W3o!(S^{^P)P%JnVj(A4hP@j(x4W3tbYTPG;;EF zyEDH$hULJx0HaCLU-%93h@%%&`0Uw|9hEADUU^gI=V@zeTVPHs=cvh}Q0%ji*j=^Z ztmX9qs!{cLv|j_iisT7h%r_vQQ^k4dRt&!)*P?vs<_c!LJDH%Uur+6r8*Gp%DU4po zY!&jDOm~HiL9bjtpTXykIL1=w`-*y#KOc(^%!DrZCYQAuJ=>X?4hS2-H`Mg*f@j$!=7fQ!1+U0exT~9a_OLq%aybXVjEUyYyMb=2^PIa~3{OM}L-(yPu$d z)5QxS@#)f(xpPkjSV(Rkk(JdMG4r6iL;mxAv5NT;8C45@v&B5u2o1IRy=aReMz=Lj zr1={b_7$L+@&JE%9K+?-V?>=GXGsWtJ%;rp*sv%-2zg=;OC96u68n>9e9v7809T3TBE zeG%GD&pqgltI@F)ysrZPD@4n^Do!~7>qHD5cjU+s4G4E3bJhwPv02jm0|nhMupluW4jtcMYg1_4x(nlqIHQ44>>d7 zj192Vo4KE;fH5*%e%B=BE!q?cN0~;|uXumuz+>Q?^>$~=@GC{|Fr;yZ#N(P8y#W_| zY;&?gZb3mo%yLSuIiVv{M{TP4PWw`eLM{M@reGW!#0LtHr}MJ0)UB8l1PO3$czAd@ zn;WAH&@H@yS-YV)^pwM{8gM?W6X>}3d@9L2TmKA#*MQ9GE8#}z+l}H}lAT+}ZjJ(pPwJ$PS9m57*uG3DS9}@#(4UL ze8S#CO4D%n_K6ACQmSaZ_evGQPE83aqXh;r$HOG^U)_sz6Cx5O7+~|rG zjHOdWENWNcVNIAB!%FG)s{s5wB3L!RmR`T56fU1GzPEHds>#T!&ws;x7ztE?=}b0_jra5rF61v)j_71#{hqgAQm#~G#K*_0##5OOfta;5>(H%M zVOnQ6L3r%bzAH$5cmn>8Y&ka09Wi5#^!pdu6y@6#dA_{4m$nwJ*hET2H4av~zWA{N z(M&CIZbLswkbiylEVyWVVvDa=N#^rQqTK7z$%nf%V@q_#uelqEg*0VTOZ|DpC8>{2 zr}bBt3|X3)wZ9oBG#wP7P-{+KqINoj4Z0F-Ny=si8~UQk7II0(2EbQeU!S}l+^^$mTV2AEMX75bx&umgh0jO&B>(=7h_Cvt zoB zk8LUX)=ApYyT{GaJOCLGS^|ahvwwQ` zcM$fmvF!2j@s0LOmRk@aO0r%e5#38CqlAUX=*MxfS{d51JJ5{=>;4OyaM9E0y@VZkn>cdCuX4#+)CPpj-dN<9kpjmo*dmHhHv}r^efKjr8*Y>wMc*vl z(^FD0-+i$0)K2{F$71}Pv@o|iE9XW-g!k8~st(l_6OkD(p5LGg^JY8EfL8a}x@1F_ z!OG zWU7JNTw_0LkvGo8!vPs4)L8&odLqraT@`E!f&MNO+XLulkR)dFT~=`OVN>l7URd1Y zKEXFEHOnS+?Ru{2waJL|=ut@;U3)R%iWAy0y~l0{ygOqB1-#$fwd=SOwc)-p7~Eh$ zpTq}*Xmo1f=Hg{8DZi&T>(bY>wFfW4Sv~53qh-}WZE0RRa}0KT{B3t6bz=+$GE-d9 zb>tS_6k)euFP@NgzUGD#@p73_G_12tiG3=<;CM`$)wa6lMi115fQ&8xdj^SyBqV3C zGew^v;#a3AhR$}h?U8m=uWT87c<%P{TPeKmKIv2Dgrgy?U(~Ek-qws=Us0457}bHN z5W=MhluY^KSZ=*|i%SFJse<01>^@fT>%j1E?GRJhGV4J&tN#Ec4e?HZ*IZ<*km~N- z0a&?`k(tQ@*9_)N72zfc@>H-5R#sL#fUFR8gD2m#WLA>NUcf3xJ^9*uP$%rL*o`;b zY1(YfD08USuZj@^d5Z3e@%zj<#!W+aZCY+2YExXNuObc@Z%$T8?YOpaoES1`YD#d4 z-3+Q&%oBG#mtM>*HQ=5nu=&F}9@U4eULWIb7Okj_T$ALX$Jfc`8OyJ=YdY5jmi|w`5Dsdaqcz28%|L}aA?}*R%+DS@LaPIo*=fL7#A>=EuZ+X%5R_` zFYgNz`KW0+qCq19DXaa65rw!|L*BXB3Zi!j!V1hr1;VQ5=jYqNOd{ zNhkkF)u1Rd#F)s6UU;I%%nB_Jo9{t*KZwVnE>VA?U8dx-#f62}<(}<5BO{p}Q$M+R zbv(ESR$sAGowk#c6F|XX3@*mr!68BNU?8|U&_b_N*rWhx-=rM7Ye{?S;hreA+?04|4N)KQHWE_WK?*s*Z9oz zB?+o-9d*7~%VJ2?taRPSh7s(iq5B|QYAf<-@+tEH{3vnWJ3ECOD`-b97e}!U`(_yG zVe4mTboD$mRaEFl-)OYb8JT@PB;i4;cDjpPTAnG=yNy}bfx0=y^1 zZ4pjgyG?EVanHUG0A*!UudXbjRqTSbua8e_w~0b_O(=7Av5wny*gNYU4acv5;MJ@z z6lsEet=M+kWpfhl$8GD$H$!A9QdqW*!RK&d0Ul!-GJVfv7K}Lez?zvfkkpYTc!SpF zH`TbUbtvO}Xmvhn6zH~W@<^aBba#j}@Ti`lA-%A*#i?XWPD4WjTGk1w{Z?UH)^^0u0} zxIEu@#2?@0HY7Nfd!As9p6T7>3Pb7Pg6tt4J5-aiTIku$sMqlm@eJk-7am+v5PyG# zYM(Xcyb*sX{UnZ0Owv0QY~(+vwDa@Chrb+B_G*eh09A$WzwHNpm?wlmIIBY?Lg=Nz z=ldSSLQVt~>>K|IW8Fe?BEhpgE#H~s-9|W$m}$;XQ_#?0ZkcHgfu@8_a40MZjc63$7CBpT-qMly8s5!yQ zf}~%3GkR-=B1W9c#BZXu7H&|5ThH*Xn$i0UJA^5W(VB~Gi-ozwmT__Eew!lVT6ub* z+vr;H=CCb2s`s=kv*=R!h$+d8^Gi#$E}fih@$ttfxBEbMJ%-9XY0sr6Ae%LVCw~XV z!R*kaAwg0QFDWpSMRUo^U|4&A$DTPx<@bih_~*Y)!89U<9|!`(HitX`QyTGAtE1}t zDWD^@bacFdRmiR*cz5v+UJJ}454|fhGm}0z_`tqI`;#5W-^0ThSE}?s`B+v~mOeh7 z)1WL>1rA51ldcCn=Vqz;epK01K&Klevul6??R6%f7_#Yi(W(A~SW}RwrKMBo**wb> z$XAQmiI{g2y?%X)ZNH~ezD!L^yL2SpDq!_Wc+u>&g}heyhq=-0^Wyr|H2=$WN=4!= ze&Pr|!rq&$`3b7pQ)yyoZ=Cuqq_ZPlHsYp-toGRkedf|2>f zG2xZK6irBATA_3CvU2@~D}AHZ-X`eOJ$(nJZRl9|zzl@&=tp-=LuQ z{OLqQ@wwZdd4ewt%N;FV36tc?O6Uy*7oY6^X`I3zRsmLIiVOXatCXT-fna%gjBpu< zizKBXQPdyzDu|3y@Y!eJx4cJ9r*-^E)l*1z9o6Z8gH# zOdb@dUJ!O<1aY5%e=0))I6%J%UFkMq0;*bUJ7Zwf8@~-qu}BCKku9({kGB!MbBNGg z)DQ>$RKwb&V%zt&PO#3LM%`?ub^zf>p~cK<*33P;9RjOjUa+QwxKapFj%?s%N6o0X z)a;@j^6%;IN3;>pZ7rmMAufsDj+8qIw-I=5YYsh6uByr>k%CT$0)|s6C=@ifYvy=7 zo^a>S>O;>98EZ>ZNE0*!r_MJh$O?}azd838KxW6iGALIG10eT=X*;W`ih1(eoo_>z z?^o2BV|XQY!93gYm~pDd>)d+nDSmEtu*A^^sbXz4+5WJ6UY|Iqc2Oh<+iJ=76*r}O zFjPvThv(fEtVDr&SrG70E`ItMm@e|dh2q+&{uQHlbaTVaWP0UDuc9d{F;*jxzrzmT zJ0A)eIiZ8yEYpl#SqKn2H+oF#;!&uhKO%bpWRy`aPe9&X;>dXtl;G#8crLt`BnyWkP$nhv|(3c3Y1P`o`LpcM?9e5cer3VCC z_`9;vJtWe?RudzFhr8nXy97+uSJnlJrlpXv^&4Z{u0o^LCqNkgWFX$;@t)dJz6R5G z@OG+t2-0tRS*u_ONN%P3@5iPnTXlhm?CI^jubgx3hq(*XOi3oP!1z&ITQgqO85$l~ zc=3`;76imaw=!J%2Jz;AK`9PB_nzo|Vy$CvQU+3G?XF*8G~4Wp?DunW&X9=|UD}ahrW860iNPqQP613XD1L;P652GS(x% z23nl?OdEP%3WMEe>lk-inUs{| zT@MaN`^~+FwD+MM{J@AeX5Pdq!7>fB3rIUgDRam!hg0PQ>*hAu?w+P zdMZyLlfORF-xQ(aKX?~d0${AzQhwclzyeixRo-y@=c6$LktQ*9$a2(wXcRrs+7zF~6_$oim%S8pglaD*Q2CC5?43Nwy_7?dyp1hCsZfS0j z@5Kb*(;1QK+Jk+&A`T)n-aQ!&((~SjXEG%vtKt2B^)?_Z%E?u(yXz6%mu)u=iKlbL?Cq!EWr) z=LzSr?0bm!&@UJ~=9?|t?3UjZaRjj#!HWV*X!{=EU4S3dG(HX}2Y{2Ud(glb>@6_0 zO|bh>uKORXJhk=itX`DooR)F(TcjwbI7dyxmJNeDus+m1G(-e{r}*--mpO5JeuD+( zXFr?+PE7~?$KC?jTmd{05NjAY+jqr|5*?1LWwoU!C-ZfIhpW%5VN7Ysv)=Ou21X8* zp<bKJx&Uc8rXc@!k1(UFAK=IK(CC*?sn3VVlPvyOaLdl7wUz z&UlG1bV0J@ z@ARAh>HFK>&-43vexIKIQd>^nm*oH7B`Fd|u+Jh}R$cE>SJ4eGVHsEEP#k zM}(}r?;Y>^Ks-alU0_1&f~Eb>Av#P)8LyQFEWwEx&-k&@5p>|3_qpL=lf?A(r= zT6txsv~QnnyZPe4Cbh%qTi>6!boUPaG4nX@IBBhpDR%RY*=eWO8mTRgZj%wb<=(Pd zV)Ke$!kO%gnIeH_gV+%Zm&7;0eu~|B^aYvmFRLyV-Ji!e5k^{4aUHNj%#Cc@yzkz@ zmuTnPE{VfGFqq(_9XHVRTh&dUq3ce0%x1WpsNQ-4y*>IEvjbhX?Zcpze{$M<7`^@6 z49*Vg-4eZl-u}%$zH@eLY^xkWA>OCllqo%F$1sx}JDPxshda9dbFv zJwB!+5^0a&RMq*+cIks#;NC9>?Kahw&QaMyc_SkuJjGG?QNpIgr%xN#)|#J}U`f^H z;++TH{;*Gnu$Fi(w{up|LN-nn4k;9T_wGmO{{AZq3whdJT@PZ&!a>3N=f>@eE6B9Y zrWlvrjLz}0k3T9NT$4F?us%wszqEZm^6p*Av%S?GMcw;5Ltd0H_w3qre~d`oB`!{M za&o%I*75Ex#KwG6r{ulBEKa%aLoU(2E4okqSz4N0+!?uj@@8FQ2eyldq+Z(vH>qkK z-0xJAvip$sP&(D;45g7~WRQ}QQZ`esILjfga@;+-yWWn^hbos(47z4sok>cB9TaJHk@tDvMWm;1FG0u(Kmg4T(e=t2CVk(URo%RV>cMp&H9`-8#xNYH4apOfN3*5@w-2A*8-ok)e*htk; zAupGZsp;wIcI1_LK?%Iea%33e)yb)a;YU_}{UIDJT3?Ar`-|j| zkwi&JNj%-5#fF#?mm9(L%s7865l6m$EbdJFaT`iOi?P9*H*ctY{PI9I=|j{c_KDW(RyTQJh$cNQ}@(WRUgQi#$)mQ ztNaqqoqZN{A3iuW>ki%*&Ll9ryv7x90{qg_k~+kV-PP)CiF*ESKJ@vH@VTe55v^)o zueA69xncGeV5MsT0mEEj;5}(Bx(>E}f6>@Mm(*)%vLjO$sdygW!@acC^1Pb^eaXlDbI(NYAe_h z85wy97sfPopxnH9(=L$ZTDG>jTyTA5spgA>rxDetl1#nd0SCt|vs%>E)hSp30;8sQ zqs0%m*O4TQKY`QEZut2RZI2LAH3i0hRrM_WRg z{j~|aytCXS&m1Po8Y~OoeYTfltOE%)Iyq@U(bUl)`S!-J*~>fzj=a)IPQkLgOZsMh zmY^Svl{Y^_By#rGE_JDe^9xd&<~tozU7WEI)nX10+B2<5`$eJP-FO~}sVhATxHp=X zAdinWm@KWBa8+r5aJ03xMOgQ|pg?177Pl6w!w@t<(xSXH*XeuISuvsoATOAXAy=^Y z+S~FE`ILT1iWn!fb#%msO_mYQTdx^ih*hv`Hed^yq2^$j+!8h|Cnx8d!rsq6)1hB^ z3S|lK(Va5%$jXALRx1??X=fS!abHv>Mlr7bPy7V{>kE{jn6?ptDt1SN8@FMvZd0ePxWpD5piYo~Vfm#q+HSbKYW1E4dZvOhi& zW2g?O<4DP7s~ZN4y;o8ud3bb>%}zl!HtUaPNnKwY0B@{k8ZroiedSl5ey;iAripaG z`H?1S0yuuSA>sMO%;EW5a)iU`Ov3Y$5*=&DhyZzuL`zVjT10va=~fnca-VF&-)yf|x%X!U0!EEisvdH%BlxNfG(b=Oso@LrO_lkjq(f2()RNL%$ z00!ifC4VY^m|3Hnv?9&r4P`__5`AE~z5DSC7DQNW=z*6Pd^X)xQ0xA-$mmNS6Z0g^ zuOJh(Z>E>{`+_A^RF`RnkZDBb4q{5URzx#0J@-X+%fOFQ4sZi`bc3d*CUuk;TQdNX_*@=Qfe*i4k)YW~AhdkZ?rPr_%iL*gMih|1BeH_i zt1~KV>QE~2+78vF!P6g;L&q`zvn1yYLt2a$hCV%w>7O`O-=M-UL`%GS^@`$>=`V-D zOw>cY$VSMDC@Yz~w%_sr59mSo)NNVB)6m%~hU8S3NK1r+bYR{Q-8b`5f}smi!kt8F z0Vrwf?oRS=G19>;{ThQ{XIPpSY_fg(cE6?3=bVQoGI&c%%l?JR1y^o&k>01DZmWBC zWFJd^xU(<+ z>cH#Xt8aGeaSPj!4vCJAM!1TU24x8GT{yDC+|Lr+#*>>Tu!HW`JwcD4BeGbD0NM(8 zpR(cjEc?YM^I?TUF4xeG-DNs0#P@w4R>$kSHQi?n~M{uiy zICV|UN3d`Z;Cl=BAra9(JVi{ULN&o5)SVKgkmm@@u(hu*r7wtW1gU}45;zX6vA|ec zL0N+iDICPDIs;)wvKVpiBS(%TsyTnNM{nqX5bAOF7&ibvlTC_HWG{7; z)6%%Vc;pP!v%tO70gyL5|`Ze7vr^T$G_?>Q!e&ed20z@V%w zuyOODMvzVJK0W{t56x3iC^J^a8R;M<90m2(>+bCJZ)v(_}Kc`Zn}Y>0woLLBSWvvsG; zBy(p8Y3G=EwK7yxw@?{q>+DQ`u7xr{Q%_Nfxr#DNGbfZ@$(sGVM9X?JrYh$Q#>FmV zf~qW`;*jjx5T6G69YQnw^$(veM@q+=s?ar4LFDzx(o2R4JYeO(CZEz@zuL*6{;QG9%SGI>>ir=W2B`1XeouBRhac5Sg% zz_h$h;TUrCqV`>O>QwFLlvr2J#JPKVHXw}zR9Fh`kI%R7VF83|_2KW#FY$O5CgsMQtQ~aCt6rfwknvj!hOE+&o zeIz&=$|}L?0wZ;wh3*rzVrWqvLDg~+P$}8BM$(2JI`3xv2sTs!V!{%n4pK})_(2PD z=9WFWhjn_do-_snxHTv1fim&7dzY`p<#Gjc&v7YOL7j;)#iJ-`w%I@h-4)U8WY|ff zaYSe{h?W{rE;8~2+zwCqUQ8lA?Hw6+!~T1L_h1D-sk1^JKLbs$VznS|PXlU4=EY28 z(`BG((5?)Jwpbkk58w+v#i>0>ikmP_*5@u942k)QIJLh~kI9N9#A_AC_ zJM1kRbqxkJq0OXU3f8L6-d4~N_I;erfLyUMN~iKG7o@2uF0i1L5# zNfR;ZIncdu?Ryn~gnstLL*oM&ENiiY1+7DurMXde_YeaR~&1TMI44qe#Ewg^B|} zo3ymFMf6SkGex%MCMG6GctK8bS1Sa&yDo4)3AbY=q&6QO{3a+UsJo{Jln#cV6*4mf zOM5MF8eu1s8S6`aiBb1?@1bQ~gDEfcC|Y_%V-v4$2@J3dxV{AwxaWVe3IER&A;@k2 zq}jorw|)N*AS!6otjJ9-FBI7-wR;4Vl#4{9(#Z!)c*pbfA7vf)pV%fM`V%lu(9u<~2vd6;l?FixB)h`coD(HFQi)k7t& z2|bE2h!gCF;(M?JgTnm3Iciy-ix68u0(E2)5+)}nA&&E8_89zRo9zatMwn!4OA9~d z-`kL9R4Wa=tf*uoH6N5V5b6kdCRhbl*%xa=Pfy%{w5QQ%Sq^l4|B*(P$1cC#2KDa2 zJ)nZ0_HJ%0&4YpklmjTz$*spu{6zv}=Wt3BTnpE4U;=F75Y#v@h3xp{m$BwFLp_+B z5bP&Q6Wj^^{*@xzrZ1efy||cZxnzf{rJMEWPl6o`&-{Her9a073cbHJkn#j_je+EZG(~07MOL&4DL04aW3QjJeoAz;12CP zao{8XIl^g5<72fW8g7lJDbS2^1MeVV1vrv!ncBbDI5l+@`Z>0?#j9lYlP6EGtTFu_ zTjM0&htUOYT8d2ouWElnQ%|PSy_nQE!u7sbM(C1^mSPEP(bzXynI>0Tbx+;nqlJcyicRK0wBEa(oTEC`YU z;FHhF%JlI0z`-HzT|s-|TYGzx;frR8>T>v2n9m{GfjW-jefspN4n_yGo9yi|C1d?J zdqb=p&t;G*e{x`^-%}&ey-!y1xy?$sv+-yC!xk|+oUgQT>D0}=&P`wst8_Ckt|_Q7 zq@=Kks+WJCM5VStv+3XP7~BMQLW3*N8R`gX7Zy;942BwY$$I{+Fq8pRBhNY@1#>Qt zC^I0QP$I<PToKDiCp~<-k5629VAKK5G$Hep*xh7+#Lb4z(u>Q@RX1A#pH2Vll4| zbYGKmD6;MQIAdP&;o`A4vlM+T2!p84I@{ahpb&UXPRRvTHm$bDEas$J@YKC}YRx&8XVh)07xUzH5PjZcxvDYrdI^-cY@(O+W8U zP+7X-?#@K>8^}RJ;nW)x8*~Tu$55)z0q%%t{h?gh~X5e-uzOivw26Ll9H0UN9f$P z0hlO4pcqux!||QGcED~BWrUUmnw`Npz3u1;Sfqi`fD@M0^4Uw%5AXoml!&F$vz#@N zPc$_PS%mL9a~)H`W#0TgAW~HNgJ+qUrWh&H`Dc~iCj=Q@PpKh%eGnHWBz}_zc!N3h zFPO`_kpH3IbUOQD!;1@<$hS2OIvz!~lxI($u75xQb3d7mXIEBM)&zdzKg>pxDrj}B z8|c7+D_$zB#a*v~$q?V%-3`XC2i9y$AfQ3rz`%eR&5)&msjaG@chi2EIM^^!EQjCI zMfU5j4Ce3e)N@*6K6Ma*B=rL?)F7UM<_D0gP)Xc{6%az@++qTN2E1U3bx>veG%_RP zt~PD{<)v%^1|#_nJqwUvxMWssj)pEoL>D2E0jfK9kn!qJam;8HYMYy2EDNm-JoEsZ z1<1+3$P}1vCEI7`2;ssk?;QURxA;<}ADDv^S300G`jg$}!xNii%kzQnQ`_wHim+qvMT}LeI;~CxKR#yz2E;X)BI4fDOg`3r120Ad&__ z0FYGnyDSVO8$vW_rr(#;D1Jp7bcp{|26d8U+R;-4#4`XW$e)m}kZwPI-Qoun0-`d} zAjk&*);LaY(p8fC+Xk9x2dq({2loKvduBzx)~G|DI2r!$_kjQFUbQ!9``>!iH;7t) z<`&S!&o=J3jXa2B~sgnQLXFfLWyg}~&xla{sMA$}zZA92V`dPh=tlG$`|07wo z#*UV*LriAZOi5*}^?^;8`=Te%`vd!Kpo^;f`ctY-X6w(eRz3cW?Wk>9e}vU}Gg97| znyrV?W#fk%#zAqg5jh*#f#P5TIyT@D8Z4NN+Obg|*B}4eAP*-HE^gGvjrxe1y&S!4i-?Huc#do{6|8RL5#j|+Jx5sas%wYcXc%ZW6o#Oe(ZSVI# zym8>y-%Tf8dJU}2`OB|GyMNfWclWxt52JQ`p19}oSFYNLI*FqBy&5v#eWktU`g(y8 z!_jrxWWItpEle%Oj+$m#QJ8DWpArR?K{f|-7zTWz!gPs!Dodo6uYh9`Fks}Yu_^J>JUv|?bRovbiOpjvCJkd3L+)jCUc_!oN z4rOI}O-;@AYCNnEr+n|eUC+3sx1mCx)W>_{R<(0yOifMq$DdU@_vi)l@W#!XO@`!Q zkf_u;&6;RKekYZoN$Vx4Bw_4XTM8H|)Gktl@a6eE{=9 z*^+c#$EERM3W2U)#?LGF|9DHz)!A8vz@xWxyQTM)#*{ix-C(CBJ)Knv&L@5&wv+oG z(yAB76kuW5*u~)kb|nXJ{;enF&=yKK>e!@xmRX!M;&_9Em!3`>FH^_0_4lV$FU?mo zG#n+3V?FEue#g+jT`l@1z25sO?j9bEhW(SV2kc7^$zm6L=|-aFDX~};M?W?g-JEKu z7dcOhBxhx1^#%{dNNDgW$BuRor;YEgSa^e7IN{1jt4uwO(z;7I598cx^YWVe-2A*w z(0Fgyh-La&5=7yrxWvFP0g>ILnrM$gbuQ)D;h(+5jG+%PL?Z*Pwas-Ew&$^Ypj z$r+NZYYo06V)~%OQopFxGqX<_)=by46E~-3W_XY9D0}2o!vq#S%0`|c*$4FnNJibTWE9`1HJj_-KeH?hlL#w# z#sc@x0OT+ql0JTMyf!|xGL1s5GQjyywVrkpRL;<==Eup~G^{waiumT&w>Ib;I&>du zSse%462y5DXWsbXgA?6=pR*uLtoHKat79d&xw$!Q$Q%1>ttXQXUpeJdy*M2UdPr>rQJsx{d43loZHG@ixMltugd_YcWFFZZQO zn%&yEyOZRqCT`gjIOF=~I%ru|lp%<$cQ484N^Nw-e4l{6AQ6cccv$S-y?aA=hU_FJ z#X6fx#Zzbp)<7f;%`wjQ!y_Y&sX_fo&Tm9Q<wl(r@7ZDxH6|@7DdFl;L(KBZxXCDOVF_ogtvg-Ww8`%4 zkfJf^m7^|NO*J*g^GXMPHG-(x(0ncp{@T=9<%F0dIP^0}p!CI2HW{qHqEk-n^Y*6R%M2i_&H)%sPla z{a8N!lJ8H~=c(YPS@>$BB?-eKC@APh!h$m*XiDJm`=f^t!0G9xWIISp~5yr4=AriU)hpO+exMWIl>)YMz|Hb$%GX(wMY zY!R8PvJ4iZ`E^+iR9;;Ag7e`1nzNbO&leY&)QET$$skrbm=e%ogCl9=m3|G$&r;)i zhv`hzQnn%pV0qIZEjSw-XTNhmYxDIzq{j{;gc6BC<64OFyP|=Q{FWAH++f)VOxLTY z{5`n)6e;Ce8?J2P^#($VZYReZPqd3Q64s+Y=+E>LL@1s%g|01Xw3ZIOSjq40mt|9J zrtMG{TP=(Z-%;{E<5MN!ddChv%M-HX8EIZn;GVs<6<1q-R|?@gkcg>~sVM7mb8}G< zLFhIceEO|7gqNx>s1W&&6?bx@b?Eidc|rQpB73Q&vsx-fd{ixI!5{5TggpG~m|%m$ z#0`~(Tv~rJBaEwKQysDBI!T3`CUBb(`3tLNDzy-ripGPg4T)pL)>6TeRLd zoAR*|*7ig_U0rW+NHE;aOCgxY9vk=@FauWxJNxZ8KzTD+Pb<;hA2;}GO~ySF10Yf} z-~|}$Jca4MFj>cor-r$}_7NaNt^;p>(I0*BW(Ug*5+Z!^u4Br{yW2A%QBbSBkbaL8_+o3hsl`NG?f7~Bms~C}vtE{Yi#`JLa^fa}zV?D*v{2bFf zqCr=+O3l;8krqkwOwe*n1FUe%xwFb{XuDJJ7a5x_u(l2azDK;|-u7fn+Iw}{#VuEK zE^IqI5FFYYxvWnA95MQblKn#}HzjKAT9(QfBe(TYqe5;AS+4^zUsSID$1lnaXcz?E z|F-V^KN8LVdk;JJ0&tX#Jf{d31(8_Kj+|~UkfTkaN z(~AXjAk3ztBjqMWcL+qR*o#n%sL&TitgCnMA44kWoB~yJu{t9B;LA_HhYg!LHU?FR zQq2;Wd~pg?a2bbW>faa88RJ1THa6BDFC7#PX+?(Isk5SXo-U>jXQ!uGS{UmB4O+~X zcTgRdim)3-lbi8|c~+E|hMConYu~~ESABfULCTUi&nbCl9UUF7pwvu+ic`b&^z8t*zGqq=LldqWGalZf%g`cG%&)z3@Yg@is+Q{~BvD_bJ7{ zai2|9m_&^|1NU*J+ASD-$E7(XLi6De_I!ULRNApMYt~3U$Y39Vj^2x8t8|1a-A`jj z5J?;$GDd@XdI~E4)4Rg20lTGS8|kw@A>oY#K-j?6^!obxGs@vpttk<6!!cus02Jiq z>p}Mv0K$gNzS%{enDD)Vjn(HqvJabl$673xNwXRBj!;xkXgH0XYh4&}l)50A^eVmK z*ZTWO{l%$v9c^vxkq{x!Q`6x(rNV{_53LY1UyhBcM%7ORHE~6fi)F_=CZ716a~uS`aC+^m` zhh_lMF)05dpqRM*L_y2X>$m#9{qi)jP-X=muTT9U6-4Pv3)^XhlL=JywC@jIdU*s$ zovw!U^yu+@JcfLSO2fxHyZSF41;bgpl-J2eawp+{O+mv9a;NcUGyMjnZz<;xrGq8p zaLM?7I{Q1}?{byjSZ1BWk$U~=cH)lq?w@^2xpg#l5n^a&XJ?mJEuE_vxj9l{GqU6?8nnvKx}a$Zs`|FewBiNl^{D(o@P#h&XZHo_U{PqAtawrNS;kGKJ_v zZ3toS^>D~JxdB&rru=NRKfYorQ>&#fh@BcKNsMe*C8Km7>>r&@Kcc6H_m8iyWuOW` zY7mJYYS@qlN)3OhgvU$v%)=GzDOFWWb1$B3ECT`mTYf5gaXbh`U^9#t2I|;?Kp-HS zXf#CLM+GszteGU7xI*8LuWL1ZEQUVZl%)f#3ER`9N3dX22_S`C0iDfA%TR;b3C?c_ zdF$4#(+;1T0#&lmkiLME&Q~uPCSD4J0(_bgyJHBi6kHPBDai#XTsj!r1UieX6)|~t zn9pC%DJa^p9(t`@qL-3&r30H2@+&J@V-?29S{0+6XEbS+cz3&IBk(2ifDml2z^_AR zKi=U9o3t1_lbNz*z%TQ6sRAZ(l`cpmVEov@dus0i!Zj!BY5<6wDYi8OV}g8c&ZY9B z){fx;gN^sGa~asP$hd-I%sT(<2^cu&mBa{Gvw?J|<8NsFp`H=YSIVYPG(ZV@=OAm1 zzHnR^kV7FlmwaR&&VQya$ZfbSvuw1WsYIgmd~t@2-5__cnap0`B7=>)DWl6gY9bs zuB)13QjyCJ7Z4puoC*=WY2e*my%1b2G$};jlMMc0B&vWncp%9=qP-c$GtIxKr#(WT zgfzcZu5EF{HYC&Qc14B(9r?f8X3YUQ3Ezxem{1D-aJ_6ei!4N5KgpOFXlrMuXr1q6 zMkEqV7Kbg=ai{~4Wt+>rvEd+Ujfeo3_kd}0$TA}*i0Fn?zwhQzkdeL@#Z-LrB^IQb82mWIRCrxBY&Sy5*;>7VYr}0yfnAr$qr4I> zqS|d2Jc@0@S(H~@rO?LI3yFPyQC?Zu9MqAmt?dq&o97~EpxR$%I})rZOi2Bf1boo%9m9W!`E6zUX}1WBe-O#+8a3tGYBsX$wi}x40G5W{j zoJEQ+C_Sy{G5y}v&87K)V?AKnfhpfK9DZT?%!-0Ez}sK8wlkTiSHH)+q_~|ie3e1FQ+_(Ib(Ef;l9BPzzO0>$gO79TOH{)ya z#)s*6ObvYx@?QUa!GB6m{{OL&@B3xg<^mwZh!0^(o?B5eZF7BQc>fejZ6Bm4z?57u z-WZi@3l64-#iGp&krZQ4D`((r9|^*%s_^ z2ALgoi5a`RJ+0auYogr1rI><GuTFUFfL2&fv1dCdN~pAs zH(h@M6R zOdJD)l~G=92%&(82NnQ&XJ==-QJQwnXnXVj=Pg#0veh}qnI7VO>3m*kqPtz)PJn>A z|GP&_|I2jNykd-Tx(SsJ`>uj3wrzoOt_%L2OyoQ`-3Am7awk0J4*H2`66W*rC}@qo z_;Tr}2lRoOlXO7n96goMV-Kf7fWym2V8NUHHXMr1hY0Epu;Isa07U_hku-uPd*j5! zg#5h;zxcB*f1J>Hsas=S%a4HgfJP|^^=y+&!b3^Odr+)$5#50^)A8;ps&%`4=MLD> z_O=4?()?yPB5JVe?Cub@hRHB0R1>N6#`$?#sn>YQ`jGZX9RiC=6jEG_?d*9&TAqw= zMXb}sn_&?{{(-VrK7m~|B>|G@4mcKkoMu0>%!YQO#^R#l>K|Yw$V;B8pun+%L4XH{ z;T^ADl$Gg=Lo4&mAwF;%lLXMO(f~@VjmeCM=9UT$lpEZLy7(%%$jC@#XzRg(k5*-X zsX(V=+anZ>x?zHa3rnGvk!=hO-2QG~UG7*=4x_WGFX_j$BCASLqn(ES)rk409guCm z*{|Lm{Wyj;~rC zgmx-Yv#_s7A_1J6!@@dpY~q|x_~vx-kwM;j&xi!A+jEZ&?U6N^b%GWx@NhDj+}_!l z2>Rs-ta)tg>(+};)kB1-onpp);4JqPZ z<$~Arru9K*t>bgQOP4O8p8lMeU&!()SH*$GKnIX|d7mvnHwI1YRoyO5iXE)ra(w1_cYB4>NyDSJ-^QRu_o-3hhwCyVuTsr2s7hSPER-3hhHw{U z^!4l4K{~n@ro+%c(mwthd;!)#@_cXSvL2(!O^t~JfgBwGcA#uRv&|&2|(9o;Zd=0HmJ0uEK$Q3zPjzA!^j~pp# zu)EcnYnNE;+36$f1DGIJ+-hZVKhPnjM#QfzE2`T|!Fu{c+27coCKw}Yk75+4bf*Mj`^r;K|bbbiaP zbbh1rxjIm>nBR$HG*U+1-ewSGC@rW{X9h-T4S{#AYxLdD7#AY`Z?9#P59tdo9`U@( zR|>A-{FMsWcDxKW;Rii|l^<;biLr@-t@7DC}6$M4yh=lyfFO43npTQ!URE!W{-FCLu{(P*^% zFxX>cqe#wib~i(~mBX`1EPLK>k}>_OQp>vT)|`J#scY>hI2jN?F&ZL(BGm9O>*)5R zRw5w>o*O{Br6eET2Jo6LEF!V)W?F!ChmvnS1luW&TpdRW!3j<=(%6l3AiM}kfEUhTZDh@~kY6MD)ITTAwDhc?5 zg21F629SY}M~e@2H9!wB9r`x82ZMT>igE`5;A#eus&a47%A``Ypa%0k*EpVQWeV*& zFx5JcLAiOrGcHAc@Jw;E81tdK4fYQB7}8GzS~WlYonQ|J4WvF|_Jo97M4bPF1A#c> z0W_LZ^mTOH=t}&@69@d!)Z`hxt2aVm{-n1i{w1X?zaLR@;E(q@U@8+Ss+a;(^0L%` zDPlh8w`kVD74yT3v$bLzLTXjX&c>kAFGk6*>DKdaY(9+JELtOe@h|iS~c? zHMx}xTgkAM4EvWapVlnl>oz+hDYH&u#~##(h8HV8+l@X)uRo41@>`?O<&fI4%yBxm z+*zx6gjs%__3*0YmtC){UVfW(<-wKUpj=tWoR#W8d9VTZ@K rvO-pDMLn)a>lOO|h4BBOKssQDJ-k`5;tO?HJ_dKv{QJD`oNoLV+69|3 diff --git a/packages/my-joy-beta/src/components/__tests__/__image_snapshots__/network-ui-js-network-network-5-snap.png b/packages/my-joy-beta/src/components/__tests__/__image_snapshots__/network-ui-js-network-network-5-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..06e13d30673f21a237dd352d7c2df87702fde773 GIT binary patch literal 13555 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 literal 0 HcmV?d00001 diff --git a/packages/my-joy-beta/src/components/__tests__/__image_snapshots__/network-ui-js-network-network-info-expanded-3-snap.png b/packages/my-joy-beta/src/components/__tests__/__image_snapshots__/network-ui-js-network-network-info-expanded-3-snap.png index 8605ef3f50a0a04f2aa290e25098e43064406f47..d6efbae0a6c33a08012d9b11da73250715c54434 100644 GIT binary patch literal 13259 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 literal 26680 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 @@ -985,19 +972,6 @@ exports[`renders without throwing 1`] = ` margin: 0; } -.c3 + p, -.c3 + small, -.c3 + h1, -.c3 + h2, -.c3 + label, -.c3 + h3, -.c3 + h4, -.c3 + h5, -.c3 + div, -.c3 + span { - padding-bottom: 2.25rem; -} - .c1 { color: rgba(73,73,73,1); font-weight: normal; diff --git a/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap b/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap index 04e56639..458cdb49 100644 --- a/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap +++ b/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap @@ -196,19 +196,6 @@ Array [ margin: 0; } -.c12 + p, -.c12 + small, -.c12 + h1, -.c12 + h2, -.c12 + label, -.c12 + h3, -.c12 + h4, -.c12 + h5, -.c12 + div, -.c12 + span { - padding-bottom: 2.25rem; -} - .c9 { color: rgba(73,73,73,1); font-weight: 700; @@ -230,21 +217,6 @@ Array [ padding-bottom: 2.25rem; } -.c18 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - .c2 { box-sizing: content-box; display: -webkit-box; @@ -293,6 +265,21 @@ Array [ cursor: default; } +.c18 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + .c19 { border: 0.0625rem solid rgb(216,216,216); box-sizing: border-box; @@ -1695,19 +1682,6 @@ Array [ margin: 0; } -.c11 + p, -.c11 + small, -.c11 + h1, -.c11 + h2, -.c11 + label, -.c11 + h3, -.c11 + h4, -.c11 + h5, -.c11 + div, -.c11 + span { - padding-bottom: 2.25rem; -} - .c8 { color: rgba(73,73,73,1); font-weight: 700; @@ -2150,19 +2124,6 @@ Array [ margin: 0; } -.c11 + p, -.c11 + small, -.c11 + h1, -.c11 + h2, -.c11 + label, -.c11 + h3, -.c11 + h4, -.c11 + h5, -.c11 + div, -.c11 + span { - padding-bottom: 2.25rem; -} - .c8 { color: rgba(73,73,73,1); font-weight: 700; @@ -2605,19 +2566,6 @@ Array [ margin: 0; } -.c11 + p, -.c11 + small, -.c11 + h1, -.c11 + h2, -.c11 + label, -.c11 + h3, -.c11 + h4, -.c11 + h5, -.c11 + div, -.c11 + span { - padding-bottom: 2.25rem; -} - .c8 { color: rgba(73,73,73,1); font-weight: 700; @@ -3064,19 +3012,6 @@ Array [ margin: 0; } -.c11 + p, -.c11 + small, -.c11 + h1, -.c11 + h2, -.c11 + label, -.c11 + h3, -.c11 + h4, -.c11 + h5, -.c11 + div, -.c11 + span { - padding-bottom: 2.25rem; -} - .c8 { color: rgba(73,73,73,1); font-weight: 700; @@ -3532,19 +3467,6 @@ Array [ margin: 0; } -.c11 + p, -.c11 + small, -.c11 + h1, -.c11 + h2, -.c11 + label, -.c11 + h3, -.c11 + h4, -.c11 + h5, -.c11 + div, -.c11 + span { - padding-bottom: 2.25rem; -} - .c8 { color: rgba(73,73,73,1); font-weight: 700; @@ -3566,21 +3488,6 @@ Array [ padding-bottom: 2.25rem; } -.c15 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - .c1 { box-sizing: content-box; display: -webkit-box; @@ -3607,6 +3514,21 @@ Array [ cursor: default; } +.c15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + .c16 { border: 0.0625rem solid rgb(216,216,216); box-sizing: border-box; @@ -4106,19 +4028,6 @@ Array [ margin: 0; } -.c12 + p, -.c12 + small, -.c12 + h1, -.c12 + h2, -.c12 + label, -.c12 + h3, -.c12 + h4, -.c12 + h5, -.c12 + div, -.c12 + span { - padding-bottom: 2.25rem; -} - .c9 { color: rgba(73,73,73,1); font-weight: 700; @@ -4140,21 +4049,6 @@ Array [ padding-bottom: 2.25rem; } -.c18 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - .c2 { box-sizing: content-box; display: -webkit-box; @@ -4203,6 +4097,21 @@ Array [ cursor: default; } +.c18 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + .c19 { border: 0.0625rem solid rgb(216,216,216); box-sizing: border-box; diff --git a/packages/my-joy-beta/src/components/__tests__/__snapshots__/key-value.spec.js.snap b/packages/my-joy-beta/src/components/__tests__/__snapshots__/key-value.spec.js.snap index 56f69652..d0cc7a51 100644 --- a/packages/my-joy-beta/src/components/__tests__/__snapshots__/key-value.spec.js.snap +++ b/packages/my-joy-beta/src/components/__tests__/__snapshots__/key-value.spec.js.snap @@ -1,165 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`renders without throwing 1`] = ` -.c14 { - margin-top: 0.1875rem; -} - -.c18 { - margin-top: 0.375rem; -} - -.c3 { - padding-right: 1.125rem; - padding-left: 1.125rem; -} - -.c9 { - padding: 1.125rem; -} - -.c19 { - box-sizing: border-box; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 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.625rem; - margin-left: -0.625rem; -} - -.c20 { - box-sizing: border-box; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - padding-right: 0.625rem; - padding-left: 0.625rem; - display: block; -} - -.c25 { - box-sizing: border-box; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - padding-right: 0.625rem; - padding-left: 0.625rem; - display: block; -} - -.c4 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; - height: 100%; - -webkit-flex-basis: 100%; - -ms-flex-preferred-size: 100%; - flex-basis: 100%; -} - -.c10 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; -} - -.c11 { - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; - -webkit-box-flex: 0; - -webkit-flex-grow: 0; - -ms-flex-positive: 0; - flex-grow: 0; - -webkit-flex-shrink: 1; - -ms-flex-negative: 1; - flex-shrink: 1; - display: block; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; -} - -.c17 { - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; - -webkit-box-flex: 0; - -webkit-flex-grow: 0; - -ms-flex-positive: 0; - flex-grow: 0; - -webkit-flex-shrink: 1; - -ms-flex-negative: 1; - flex-shrink: 1; - display: block; - -webkit-flex-basis: 0.75rem; - -ms-flex-preferred-size: 0.75rem; - flex-basis: 0.75rem; -} - .c23 { font-family: sans-serif; font-size: 100%; @@ -525,6 +366,45 @@ exports[`renders without throwing 1`] = ` float: none; } +.c19 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 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.625rem; + margin-left: -0.625rem; +} + +.c20 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.625rem; + padding-left: 0.625rem; + display: block; +} + +.c25 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.625rem; + padding-left: 0.625rem; + display: block; +} + .c7 { color: rgba(73,73,73,1); font-weight: 600; @@ -546,6 +426,126 @@ exports[`renders without throwing 1`] = ` margin-top: 0.75rem; } +.c14 { + margin-top: 0.1875rem; +} + +.c18 { + margin-top: 0.375rem; +} + +.c3 { + padding-right: 1.125rem; + padding-left: 1.125rem; +} + +.c9 { + padding: 1.125rem; +} + +.c4 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c10 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; +} + +.c11 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; + display: block; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; +} + +.c17 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; + display: block; + -webkit-flex-basis: 0.75rem; + -ms-flex-preferred-size: 0.75rem; + flex-basis: 0.75rem; +} + .c0 { box-sizing: content-box; display: -webkit-box; @@ -833,187 +833,212 @@ exports[`renders without throwing 1`] = ` } } -
-

- Add metadata -

+

+ Add metadata +

+
-
-
-
- -
-
-
-
-
-
- -
- -
-
-
-
-
-
-
- - -
-
- +
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ + +
+
+ +
- + `; exports[`renders without throwing 1`] = ` +.c7 { + color: rgba(73,73,73,1); + font-weight: 600; + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c7 + p, +.c7 + small, +.c7 + h1, +.c7 + h2, +.c7 + label, +.c7 + h3, +.c7 + h4, +.c7 + h5, +.c7 + div, +.c7 + span { + margin-top: 0.75rem; +} + .c3 { padding-right: 1.125rem; padding-left: 1.125rem; @@ -1052,27 +1077,6 @@ exports[`renders without throwing 1`] = ` flex-basis: 100%; } -.c7 { - color: rgba(73,73,73,1); - font-weight: 600; - line-height: 1.5rem; - font-size: 0.9375rem; - margin: 0; -} - -.c7 + p, -.c7 + small, -.c7 + h1, -.c7 + h2, -.c7 + label, -.c7 + h3, -.c7 + h4, -.c7 + h5, -.c7 + div, -.c7 + span { - margin-top: 0.75rem; -} - .c6 { box-sizing: content-box; display: -webkit-box; @@ -1214,200 +1218,45 @@ exports[`renders without throwing 1`] = ` max-width: 98%; } -
-

- Add metadata -

+

+ Add metadata +

+
- + `; exports[`renders without throwing 1`] = ` -.c14 { - margin-top: 0.1875rem; -} - -.c18 { - margin-top: 0.375rem; -} - -.c3 { - padding-right: 1.125rem; - padding-left: 1.125rem; -} - -.c9 { - padding: 1.125rem; -} - -.c19 { - box-sizing: border-box; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 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.625rem; - margin-left: -0.625rem; -} - -.c20 { - box-sizing: border-box; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - padding-right: 0.625rem; - padding-left: 0.625rem; - display: block; -} - -.c25 { - box-sizing: border-box; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - padding-right: 0.625rem; - padding-left: 0.625rem; - display: block; -} - -.c4 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; - height: 100%; - -webkit-flex-basis: 100%; - -ms-flex-preferred-size: 100%; - flex-basis: 100%; -} - -.c10 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; -} - -.c11 { - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; - -webkit-box-flex: 0; - -webkit-flex-grow: 0; - -ms-flex-positive: 0; - flex-grow: 0; - -webkit-flex-shrink: 1; - -ms-flex-negative: 1; - flex-shrink: 1; - display: block; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; -} - -.c17 { - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; - -webkit-box-flex: 0; - -webkit-flex-grow: 0; - -ms-flex-positive: 0; - flex-grow: 0; - -webkit-flex-shrink: 1; - -ms-flex-negative: 1; - flex-shrink: 1; - display: block; - -webkit-flex-basis: 0.75rem; - -ms-flex-preferred-size: 0.75rem; - flex-basis: 0.75rem; -} - .c23 { font-family: sans-serif; font-size: 100%; @@ -1773,6 +1622,45 @@ exports[`renders without throwing 1`] = ` float: none; } +.c19 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 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.625rem; + margin-left: -0.625rem; +} + +.c20 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.625rem; + padding-left: 0.625rem; + display: block; +} + +.c25 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.625rem; + padding-left: 0.625rem; + display: block; +} + .c7 { color: rgba(73,73,73,1); font-weight: 600; @@ -1794,6 +1682,126 @@ exports[`renders without throwing 1`] = ` margin-top: 0.75rem; } +.c14 { + margin-top: 0.1875rem; +} + +.c18 { + margin-top: 0.375rem; +} + +.c3 { + padding-right: 1.125rem; + padding-left: 1.125rem; +} + +.c9 { + padding: 1.125rem; +} + +.c4 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c10 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; +} + +.c11 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; + display: block; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; +} + +.c17 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; + display: block; + -webkit-flex-basis: 0.75rem; + -ms-flex-preferred-size: 0.75rem; + flex-basis: 0.75rem; +} + .c0 { box-sizing: content-box; display: -webkit-box; @@ -2081,295 +2089,191 @@ exports[`renders without throwing 1`] = ` } } -
-

- Add metadata -

+

+ Add metadata +

+
-
-
-
- -
-
-
-
-
-
- -
- -
-
-
-
-
-
-
- - -
-
- +
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ + +
+
+ +
- + `; exports[`renders without throwing 1`] = ` -.c14 { - margin-top: 0.1875rem; -} - -.c20 { - margin-top: 0.375rem; -} - -.c3 { - padding-right: 1.125rem; - padding-left: 1.125rem; -} - -.c9 { - padding: 1.125rem; -} - -.c21 { - box-sizing: border-box; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 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.625rem; - margin-left: -0.625rem; -} - -.c10 { - box-sizing: border-box; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 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.625rem; - margin-left: -0.625rem; -} - -.c11 { - box-sizing: border-box; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - padding-right: 0.625rem; - padding-left: 0.625rem; - display: block; -} - -.c26 { - box-sizing: border-box; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - padding-right: 0.625rem; - padding-left: 0.625rem; - display: block; -} - -.c4 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; - height: 100%; - -webkit-flex-basis: 100%; - -ms-flex-preferred-size: 100%; - flex-basis: 100%; -} - .c24 { font-family: sans-serif; font-size: 100%; @@ -2747,6 +2651,64 @@ exports[`renders without throwing 1`] = ` float: none; } +.c21 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 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.625rem; + margin-left: -0.625rem; +} + +.c10 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 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.625rem; + margin-left: -0.625rem; +} + +.c11 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.625rem; + padding-left: 0.625rem; + display: block; +} + +.c26 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.625rem; + padding-left: 0.625rem; + display: block; +} + .c7 { color: rgba(73,73,73,1); font-weight: 600; @@ -2775,6 +2737,56 @@ exports[`renders without throwing 1`] = ` height: 0.75rem; } +.c14 { + margin-top: 0.1875rem; +} + +.c20 { + margin-top: 0.375rem; +} + +.c3 { + padding-right: 1.125rem; + padding-left: 1.125rem; +} + +.c9 { + padding: 1.125rem; +} + +.c4 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + .c0 { box-sizing: content-box; display: -webkit-box; @@ -3141,354 +3153,199 @@ exports[`renders without throwing 1`] = ` } } -
-

- Add metadata -

+

+ Add metadata +

+
-
-
-
- -
- -
-
-
-
-
-
-
-
- -
-