From 679b2cd1a4887dea325e73ecf7f08aacc31f3864 Mon Sep 17 00:00:00 2001 From: Tamlyn Rhodes <tamlyn@tamlyn.org> Date: Thu, 14 Dec 2017 18:06:26 +0000 Subject: [PATCH] Use @pubsweet/ui and remove xpub-ui --- README.md | 1 - packages/component-app/package.json | 2 +- packages/component-app/src/components/App.js | 2 +- .../component-authentication/package.json | 2 +- .../src/components/Login.js | 2 +- .../src/components/Signup.js | 2 +- packages/component-dashboard/package.json | 2 +- .../src/components/AssignEditor.js | 3 +- .../src/components/Reviews.js | 2 +- .../src/components/UploadManuscript.js | 2 +- .../src/components/sections/ReviewerItem.js | 2 +- packages/component-review/package.json | 2 +- .../src/components/decision/Decision.js | 2 +- .../src/components/decision/DecisionForm.js | 2 +- .../src/components/metadata/ReviewMetadata.js | 2 +- .../src/components/review/Review.js | 2 +- .../src/components/review/ReviewForm.js | 2 +- .../src/components/reviewers/Reviewer.js | 2 +- .../src/components/reviewers/ReviewerForm.js | 2 +- packages/component-submit/package.json | 2 +- .../src/components/Confirm.js | 2 +- .../src/components/Declarations.js | 2 +- .../src/components/Metadata.js | 2 +- .../component-submit/src/components/Notes.js | 2 +- .../component-submit/src/components/Submit.js | 2 +- .../src/components/Suggestions.js | 2 +- .../src/components/SupplementaryFiles.js | 2 +- packages/xpub-collabra/package.json | 2 +- packages/xpub-theme/src/variables.css | 2 +- packages/xpub-ui/.eslintrc | 7 - packages/xpub-ui/docs/colors.md | 45 -- packages/xpub-ui/docs/fonts.md | 33 - packages/xpub-ui/package.json | 69 -- packages/xpub-ui/src/atoms/Attachment.js | 14 - .../xpub-ui/src/atoms/Attachment.local.scss | 13 - packages/xpub-ui/src/atoms/Attachment.md | 10 - packages/xpub-ui/src/atoms/Avatar.js | 44 -- packages/xpub-ui/src/atoms/Avatar.local.scss | 141 ---- packages/xpub-ui/src/atoms/Avatar.md | 10 - packages/xpub-ui/src/atoms/Badge.js | 13 - packages/xpub-ui/src/atoms/Badge.local.scss | 25 - packages/xpub-ui/src/atoms/Badge.md | 16 - packages/xpub-ui/src/atoms/Button.js | 26 - packages/xpub-ui/src/atoms/Button.local.scss | 103 --- packages/xpub-ui/src/atoms/Button.md | 18 - packages/xpub-ui/src/atoms/Checkbox.js | 34 - .../xpub-ui/src/atoms/Checkbox.local.scss | 56 -- packages/xpub-ui/src/atoms/Checkbox.md | 33 - packages/xpub-ui/src/atoms/File.js | 20 - packages/xpub-ui/src/atoms/File.local.scss | 101 --- packages/xpub-ui/src/atoms/File.md | 31 - packages/xpub-ui/src/atoms/Icon.js | 16 - packages/xpub-ui/src/atoms/Icon.local.scss | 3 - packages/xpub-ui/src/atoms/Icon.md | 17 - packages/xpub-ui/src/atoms/Menu.js | 99 --- packages/xpub-ui/src/atoms/Menu.local.scss | 92 --- packages/xpub-ui/src/atoms/Menu.md | 44 -- packages/xpub-ui/src/atoms/Radio.js | 52 -- packages/xpub-ui/src/atoms/Radio.local.scss | 59 -- packages/xpub-ui/src/atoms/Radio.md | 54 -- packages/xpub-ui/src/atoms/Tags.js | 59 -- packages/xpub-ui/src/atoms/Tags.md | 21 - packages/xpub-ui/src/atoms/Tags.scss | 129 ---- packages/xpub-ui/src/atoms/TextField.js | 31 - .../xpub-ui/src/atoms/TextField.local.scss | 35 - packages/xpub-ui/src/atoms/TextField.md | 23 - packages/xpub-ui/src/atoms/UploadingFile.js | 27 - .../src/atoms/UploadingFile.local.scss | 113 ---- packages/xpub-ui/src/atoms/UploadingFile.md | 29 - packages/xpub-ui/src/atoms/ValidatedField.js | 44 -- .../src/atoms/ValidatedField.local.scss | 28 - packages/xpub-ui/src/atoms/ValidatedField.md | 33 - packages/xpub-ui/src/index.js | 23 - packages/xpub-ui/src/lib/animation.scss | 29 - packages/xpub-ui/src/lib/colors.local.scss | 4 - packages/xpub-ui/src/molecules/AppBar.js | 40 -- .../xpub-ui/src/molecules/AppBar.local.scss | 43 -- packages/xpub-ui/src/molecules/AppBar.md | 20 - packages/xpub-ui/src/molecules/Attachments.js | 25 - .../src/molecules/Attachments.local.scss | 13 - packages/xpub-ui/src/molecules/Attachments.md | 18 - .../xpub-ui/src/molecules/CheckboxGroup.js | 53 -- .../xpub-ui/src/molecules/CheckboxGroup.md | 54 -- packages/xpub-ui/src/molecules/Files.js | 99 --- .../xpub-ui/src/molecules/Files.local.scss | 34 - packages/xpub-ui/src/molecules/Files.md | 22 - packages/xpub-ui/src/molecules/PlainButton.js | 25 - .../src/molecules/PlainButton.local.scss | 21 - packages/xpub-ui/src/molecules/PlainButton.md | 5 - packages/xpub-ui/src/molecules/RadioGroup.js | 44 -- packages/xpub-ui/src/molecules/RadioGroup.md | 48 -- .../xpub-ui/src/molecules/Supplementary.js | 22 - .../xpub-ui/src/molecules/Supplementary.md | 18 - packages/xpub-ui/src/molecules/Upload.js | 67 -- packages/xpub-ui/src/molecules/YesOrNo.js | 29 - .../xpub-ui/src/molecules/YesOrNo.local.scss | 3 - packages/xpub-ui/src/molecules/YesOrNo.md | 17 - packages/xpub-ui/styleguide.config.js | 39 -- packages/xpub-ui/test/AppBar.test.js | 103 --- packages/xpub-ui/test/Menu.test.js | 24 - packages/xpub-ui/test/Radio.test.js | 31 - packages/xpub-ui/test/RadioGroup.test.js | 110 ---- packages/xpub-ui/test/YesOrNo.test.js | 47 -- .../test/__snapshots__/AppBar.test.js.snap | 64 -- .../test/__snapshots__/Menu.test.js.snap | 33 - .../test/__snapshots__/Radio.test.js.snap | 38 -- .../__snapshots__/RadioGroup.test.js.snap | 108 ---- .../test/__snapshots__/YesOrNo.test.js.snap | 74 --- packages/xpub-ui/test/config/transform.js | 3 - packages/xpub-ui/test/setup/enzyme.js | 4 - packages/xpub-ui/webpack.config.js | 3 - yarn.lock | 605 ++---------------- 112 files changed, 73 insertions(+), 3917 deletions(-) delete mode 100644 packages/xpub-ui/.eslintrc delete mode 100644 packages/xpub-ui/docs/colors.md delete mode 100644 packages/xpub-ui/docs/fonts.md delete mode 100644 packages/xpub-ui/package.json delete mode 100644 packages/xpub-ui/src/atoms/Attachment.js delete mode 100644 packages/xpub-ui/src/atoms/Attachment.local.scss delete mode 100644 packages/xpub-ui/src/atoms/Attachment.md delete mode 100644 packages/xpub-ui/src/atoms/Avatar.js delete mode 100644 packages/xpub-ui/src/atoms/Avatar.local.scss delete mode 100644 packages/xpub-ui/src/atoms/Avatar.md delete mode 100644 packages/xpub-ui/src/atoms/Badge.js delete mode 100644 packages/xpub-ui/src/atoms/Badge.local.scss delete mode 100644 packages/xpub-ui/src/atoms/Badge.md delete mode 100644 packages/xpub-ui/src/atoms/Button.js delete mode 100644 packages/xpub-ui/src/atoms/Button.local.scss delete mode 100644 packages/xpub-ui/src/atoms/Button.md delete mode 100644 packages/xpub-ui/src/atoms/Checkbox.js delete mode 100644 packages/xpub-ui/src/atoms/Checkbox.local.scss delete mode 100644 packages/xpub-ui/src/atoms/Checkbox.md delete mode 100644 packages/xpub-ui/src/atoms/File.js delete mode 100644 packages/xpub-ui/src/atoms/File.local.scss delete mode 100644 packages/xpub-ui/src/atoms/File.md delete mode 100644 packages/xpub-ui/src/atoms/Icon.js delete mode 100644 packages/xpub-ui/src/atoms/Icon.local.scss delete mode 100644 packages/xpub-ui/src/atoms/Icon.md delete mode 100644 packages/xpub-ui/src/atoms/Menu.js delete mode 100644 packages/xpub-ui/src/atoms/Menu.local.scss delete mode 100644 packages/xpub-ui/src/atoms/Menu.md delete mode 100644 packages/xpub-ui/src/atoms/Radio.js delete mode 100644 packages/xpub-ui/src/atoms/Radio.local.scss delete mode 100644 packages/xpub-ui/src/atoms/Radio.md delete mode 100644 packages/xpub-ui/src/atoms/Tags.js delete mode 100644 packages/xpub-ui/src/atoms/Tags.md delete mode 100644 packages/xpub-ui/src/atoms/Tags.scss delete mode 100644 packages/xpub-ui/src/atoms/TextField.js delete mode 100644 packages/xpub-ui/src/atoms/TextField.local.scss delete mode 100644 packages/xpub-ui/src/atoms/TextField.md delete mode 100644 packages/xpub-ui/src/atoms/UploadingFile.js delete mode 100644 packages/xpub-ui/src/atoms/UploadingFile.local.scss delete mode 100644 packages/xpub-ui/src/atoms/UploadingFile.md delete mode 100644 packages/xpub-ui/src/atoms/ValidatedField.js delete mode 100644 packages/xpub-ui/src/atoms/ValidatedField.local.scss delete mode 100644 packages/xpub-ui/src/atoms/ValidatedField.md delete mode 100644 packages/xpub-ui/src/index.js delete mode 100644 packages/xpub-ui/src/lib/animation.scss delete mode 100644 packages/xpub-ui/src/lib/colors.local.scss delete mode 100644 packages/xpub-ui/src/molecules/AppBar.js delete mode 100644 packages/xpub-ui/src/molecules/AppBar.local.scss delete mode 100644 packages/xpub-ui/src/molecules/AppBar.md delete mode 100644 packages/xpub-ui/src/molecules/Attachments.js delete mode 100644 packages/xpub-ui/src/molecules/Attachments.local.scss delete mode 100644 packages/xpub-ui/src/molecules/Attachments.md delete mode 100644 packages/xpub-ui/src/molecules/CheckboxGroup.js delete mode 100644 packages/xpub-ui/src/molecules/CheckboxGroup.md delete mode 100644 packages/xpub-ui/src/molecules/Files.js delete mode 100644 packages/xpub-ui/src/molecules/Files.local.scss delete mode 100644 packages/xpub-ui/src/molecules/Files.md delete mode 100644 packages/xpub-ui/src/molecules/PlainButton.js delete mode 100644 packages/xpub-ui/src/molecules/PlainButton.local.scss delete mode 100644 packages/xpub-ui/src/molecules/PlainButton.md delete mode 100644 packages/xpub-ui/src/molecules/RadioGroup.js delete mode 100644 packages/xpub-ui/src/molecules/RadioGroup.md delete mode 100644 packages/xpub-ui/src/molecules/Supplementary.js delete mode 100644 packages/xpub-ui/src/molecules/Supplementary.md delete mode 100644 packages/xpub-ui/src/molecules/Upload.js delete mode 100644 packages/xpub-ui/src/molecules/YesOrNo.js delete mode 100644 packages/xpub-ui/src/molecules/YesOrNo.local.scss delete mode 100644 packages/xpub-ui/src/molecules/YesOrNo.md delete mode 100644 packages/xpub-ui/styleguide.config.js delete mode 100644 packages/xpub-ui/test/AppBar.test.js delete mode 100644 packages/xpub-ui/test/Menu.test.js delete mode 100644 packages/xpub-ui/test/Radio.test.js delete mode 100644 packages/xpub-ui/test/RadioGroup.test.js delete mode 100644 packages/xpub-ui/test/YesOrNo.test.js delete mode 100644 packages/xpub-ui/test/__snapshots__/AppBar.test.js.snap delete mode 100644 packages/xpub-ui/test/__snapshots__/Menu.test.js.snap delete mode 100644 packages/xpub-ui/test/__snapshots__/Radio.test.js.snap delete mode 100644 packages/xpub-ui/test/__snapshots__/RadioGroup.test.js.snap delete mode 100644 packages/xpub-ui/test/__snapshots__/YesOrNo.test.js.snap delete mode 100644 packages/xpub-ui/test/config/transform.js delete mode 100644 packages/xpub-ui/test/setup/enzyme.js delete mode 100644 packages/xpub-ui/webpack.config.js diff --git a/README.md b/README.md index 5c22e3415..f519a4a66 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,6 @@ Note: xpub is still _very_ new. This repository contains an initial set of compo * `xpub-selectors`: some useful redux selectors * `xpub-styleguide`: components for use in react-styleguidist * `xpub-theme`: fonts and styles for use in xpub applications -* `xpub-ui`: a library of user interface elements for use in PubSweet components * `xpub-upload`: a helper function for file uploading * `xpub-validators`: validator functions for use with redux-form diff --git a/packages/component-app/package.json b/packages/component-app/package.json index 6a959c126..3307ac7ce 100644 --- a/packages/component-app/package.json +++ b/packages/component-app/package.json @@ -19,7 +19,7 @@ "redux": "^3.6.0", "xpub-bootstrap": "^0.0.2", "xpub-journal": "^0.0.2", - "xpub-ui": "^0.0.2" + "@pubsweet/ui": "^0.1.1" }, "peerDependencies": { "prop-types": "^15.5.10", diff --git a/packages/component-app/src/components/App.js b/packages/component-app/src/components/App.js index 35f4a9d23..a40e281af 100644 --- a/packages/component-app/src/components/App.js +++ b/packages/component-app/src/components/App.js @@ -3,7 +3,7 @@ import { compose } from 'recompose' import { connect } from 'react-redux' // import PropTypes from 'prop-types' -import { AppBar } from 'xpub-ui' +import { AppBar } from '@pubsweet/ui' import { withJournal } from 'xpub-journal' import 'xpub-bootstrap' diff --git a/packages/component-authentication/package.json b/packages/component-authentication/package.json index 98e62a50d..b62bb98b2 100644 --- a/packages/component-authentication/package.json +++ b/packages/component-authentication/package.json @@ -20,7 +20,7 @@ "recompose": "^0.26.0", "redux": "^3.6.0", "redux-form": "^7.0.3", - "xpub-ui": "^0.0.2" + "@pubsweet/ui": "^0.1.1" }, "devDependencies": { "babel-core": "^6.26.0", diff --git a/packages/component-authentication/src/components/Login.js b/packages/component-authentication/src/components/Login.js index 7441bbd33..289d5f764 100644 --- a/packages/component-authentication/src/components/Login.js +++ b/packages/component-authentication/src/components/Login.js @@ -1,7 +1,7 @@ import React from 'react' import { Field } from 'redux-form' import { Link } from 'react-router-dom' -import { Button, TextField } from 'xpub-ui' +import { Button, TextField } from '@pubsweet/ui' import classes from './Form.local.scss' const UsernameInput = props => <TextField label="Username" {...props.input} /> diff --git a/packages/component-authentication/src/components/Signup.js b/packages/component-authentication/src/components/Signup.js index 8a95e2222..e74971775 100644 --- a/packages/component-authentication/src/components/Signup.js +++ b/packages/component-authentication/src/components/Signup.js @@ -1,7 +1,7 @@ import React from 'react' import { Field } from 'redux-form' import { Link } from 'react-router-dom' -import { Button, TextField } from 'xpub-ui' +import { Button, TextField } from '@pubsweet/ui' import classes from './Form.local.scss' const UsernameInput = props => <TextField label="Username" {...props.input} /> diff --git a/packages/component-dashboard/package.json b/packages/component-dashboard/package.json index eb86aeb32..b03081dd2 100644 --- a/packages/component-dashboard/package.json +++ b/packages/component-dashboard/package.json @@ -25,7 +25,7 @@ "xpub-connect": "^0.0.2", "xpub-journal": "^0.0.2", "xpub-selectors": "^0.0.2", - "xpub-ui": "^0.0.2", + "@pubsweet/ui": "^0.1.1", "xpub-upload": "^0.0.2" }, "devDependencies": { diff --git a/packages/component-dashboard/src/components/AssignEditor.js b/packages/component-dashboard/src/components/AssignEditor.js index a08077a97..95d1ae2ca 100644 --- a/packages/component-dashboard/src/components/AssignEditor.js +++ b/packages/component-dashboard/src/components/AssignEditor.js @@ -1,11 +1,10 @@ import React from 'react' import { compose, withProps } from 'recompose' -import { Menu } from 'xpub-ui' +import { Menu } from '@pubsweet/ui' import { withJournal } from 'xpub-journal' // TODO: select multiple editors const AssignEditor = ({ - journal, project, team, teamName, diff --git a/packages/component-dashboard/src/components/Reviews.js b/packages/component-dashboard/src/components/Reviews.js index 7eb86d258..7ab111cfd 100644 --- a/packages/component-dashboard/src/components/Reviews.js +++ b/packages/component-dashboard/src/components/Reviews.js @@ -1,7 +1,7 @@ import React from 'react' import { compose, withProps } from 'recompose' import { groupBy } from 'lodash' -import { Badge } from 'xpub-ui' +import { Badge } from '@pubsweet/ui' import classes from './Reviews.local.scss' const Reviews = ({ reviews }) => ( diff --git a/packages/component-dashboard/src/components/UploadManuscript.js b/packages/component-dashboard/src/components/UploadManuscript.js index eae6ef8c3..0c66d43e0 100644 --- a/packages/component-dashboard/src/components/UploadManuscript.js +++ b/packages/component-dashboard/src/components/UploadManuscript.js @@ -1,7 +1,7 @@ import React from 'react' import Dropzone from 'react-dropzone' import classnames from 'classnames' -import { Icon } from 'xpub-ui' +import { Icon } from '@pubsweet/ui' import classes from './UploadManuscript.local.scss' const isIdle = conversion => diff --git a/packages/component-dashboard/src/components/sections/ReviewerItem.js b/packages/component-dashboard/src/components/sections/ReviewerItem.js index a4e5f7f08..8ec3b7869 100644 --- a/packages/component-dashboard/src/components/sections/ReviewerItem.js +++ b/packages/component-dashboard/src/components/sections/ReviewerItem.js @@ -1,5 +1,5 @@ import React from 'react' -import { Button } from 'xpub-ui' +import { Button } from '@pubsweet/ui' import { getReviewerFromUser } from 'xpub-selectors' import classes from './Item.local.scss' import ProjectLink from '../ProjectLink' diff --git a/packages/component-review/package.json b/packages/component-review/package.json index 42251743e..abc7d527b 100644 --- a/packages/component-review/package.json +++ b/packages/component-review/package.json @@ -30,7 +30,7 @@ "xpub-edit": "^0.0.2", "xpub-journal": "^0.0.2", "xpub-selectors": "^0.0.2", - "xpub-ui": "^0.0.2", + "@pubsweet/ui": "^0.1.1", "xpub-upload": "^0.0.2", "xpub-validators": "^0.0.2" }, diff --git a/packages/component-review/src/components/decision/Decision.js b/packages/component-review/src/components/decision/Decision.js index f23e1b1a5..3871d6b56 100644 --- a/packages/component-review/src/components/decision/Decision.js +++ b/packages/component-review/src/components/decision/Decision.js @@ -1,6 +1,6 @@ import React from 'react' import { NoteViewer } from 'xpub-edit' -import { Attachment } from 'xpub-ui' +import { Attachment } from '@pubsweet/ui' import classes from './Decision.local.scss' const Decision = ({ decision }) => ( diff --git a/packages/component-review/src/components/decision/DecisionForm.js b/packages/component-review/src/components/decision/DecisionForm.js index ed32ac84f..9e3221b52 100644 --- a/packages/component-review/src/components/decision/DecisionForm.js +++ b/packages/component-review/src/components/decision/DecisionForm.js @@ -1,7 +1,7 @@ import React from 'react' import { FormSection } from 'redux-form' import { NoteEditor } from 'xpub-edit' -import { Attachments, Button, RadioGroup, ValidatedField } from 'xpub-ui' +import { Attachments, Button, RadioGroup, ValidatedField } from '@pubsweet/ui' import { withJournal } from 'xpub-journal' import { required } from 'xpub-validators' import classes from './DecisionForm.local.scss' diff --git a/packages/component-review/src/components/metadata/ReviewMetadata.js b/packages/component-review/src/components/metadata/ReviewMetadata.js index af1389da0..8c3912c5e 100644 --- a/packages/component-review/src/components/metadata/ReviewMetadata.js +++ b/packages/component-review/src/components/metadata/ReviewMetadata.js @@ -1,5 +1,5 @@ import React from 'react' -import { File } from 'xpub-ui' +import { File } from '@pubsweet/ui' import classes from './ReviewMetadata.local.scss' const ReviewMetadata = ({ version, handlingEditors }) => ( diff --git a/packages/component-review/src/components/review/Review.js b/packages/component-review/src/components/review/Review.js index d1dda9ad4..27bf6e2f1 100644 --- a/packages/component-review/src/components/review/Review.js +++ b/packages/component-review/src/components/review/Review.js @@ -1,6 +1,6 @@ import React from 'react' import { NoteViewer } from 'xpub-edit' -import { Attachment } from 'xpub-ui' +import { Attachment } from '@pubsweet/ui' import classes from './Review.local.scss' const Review = ({ review }) => ( diff --git a/packages/component-review/src/components/review/ReviewForm.js b/packages/component-review/src/components/review/ReviewForm.js index 2beaa334a..832244780 100644 --- a/packages/component-review/src/components/review/ReviewForm.js +++ b/packages/component-review/src/components/review/ReviewForm.js @@ -1,7 +1,7 @@ import React from 'react' import { FormSection } from 'redux-form' import { NoteEditor } from 'xpub-edit' -import { Attachments, Button, RadioGroup, ValidatedField } from 'xpub-ui' +import { Attachments, Button, RadioGroup, ValidatedField } from '@pubsweet/ui' import { withJournal } from 'xpub-journal' import { required } from 'xpub-validators' import classes from './ReviewForm.local.scss' diff --git a/packages/component-review/src/components/reviewers/Reviewer.js b/packages/component-review/src/components/reviewers/Reviewer.js index 8ecc11ca0..ba71d9617 100644 --- a/packages/component-review/src/components/reviewers/Reviewer.js +++ b/packages/component-review/src/components/reviewers/Reviewer.js @@ -1,7 +1,7 @@ import React from 'react' import { map } from 'lodash' import Moment from 'react-moment' -import { Avatar, Button } from 'xpub-ui' +import { Avatar, Button } from '@pubsweet/ui' import classes from './Reviewer.local.scss' diff --git a/packages/component-review/src/components/reviewers/ReviewerForm.js b/packages/component-review/src/components/reviewers/ReviewerForm.js index 6a94db20a..4a542367f 100644 --- a/packages/component-review/src/components/reviewers/ReviewerForm.js +++ b/packages/component-review/src/components/reviewers/ReviewerForm.js @@ -1,7 +1,7 @@ import React from 'react' import Select from 'react-select' import { Field } from 'redux-form' -import { Button } from 'xpub-ui' +import { Button } from '@pubsweet/ui' import { required } from 'xpub-validators' import 'react-select/dist/react-select.css' import classes from './ReviewerForm.local.scss' diff --git a/packages/component-submit/package.json b/packages/component-submit/package.json index a42558b1e..f5a2d8175 100644 --- a/packages/component-submit/package.json +++ b/packages/component-submit/package.json @@ -25,7 +25,7 @@ "xpub-edit": "^0.0.2", "xpub-journal": "^0.0.2", "xpub-selectors": "^0.0.2", - "xpub-ui": "^0.0.2", + "@pubsweet/ui": "^0.1.1", "xpub-upload": "^0.0.2", "xpub-validators": "^0.0.2" }, diff --git a/packages/component-submit/src/components/Confirm.js b/packages/component-submit/src/components/Confirm.js index 80042aec6..7c4799c25 100644 --- a/packages/component-submit/src/components/Confirm.js +++ b/packages/component-submit/src/components/Confirm.js @@ -1,5 +1,5 @@ import React from 'react' -import { Button, PlainButton } from 'xpub-ui' +import { Button, PlainButton } from '@pubsweet/ui' import classes from './Confirm.local.scss' const Confirm = ({ toggleConfirming }) => ( diff --git a/packages/component-submit/src/components/Declarations.js b/packages/component-submit/src/components/Declarations.js index c89e90c2f..d7d3e967f 100644 --- a/packages/component-submit/src/components/Declarations.js +++ b/packages/component-submit/src/components/Declarations.js @@ -1,7 +1,7 @@ import React from 'react' import classnames from 'classnames' import { FormSection } from 'redux-form' -import { ValidatedField, YesOrNo } from 'xpub-ui' +import { ValidatedField, YesOrNo } from '@pubsweet/ui' import { withJournal } from 'xpub-journal' import { required } from 'xpub-validators' import classes from './Declarations.local.scss' diff --git a/packages/component-submit/src/components/Metadata.js b/packages/component-submit/src/components/Metadata.js index 905c557c2..a7e103a9f 100644 --- a/packages/component-submit/src/components/Metadata.js +++ b/packages/component-submit/src/components/Metadata.js @@ -1,7 +1,7 @@ import React from 'react' import { FormSection } from 'redux-form' import { AbstractEditor, TitleEditor } from 'xpub-edit' -import { CheckboxGroup, Menu, TextField, ValidatedField } from 'xpub-ui' +import { CheckboxGroup, Menu, TextField, ValidatedField } from '@pubsweet/ui' import { withJournal } from 'xpub-journal' import { join, diff --git a/packages/component-submit/src/components/Notes.js b/packages/component-submit/src/components/Notes.js index b8d57f0c2..431aab266 100644 --- a/packages/component-submit/src/components/Notes.js +++ b/packages/component-submit/src/components/Notes.js @@ -1,7 +1,7 @@ import React from 'react' import { FormSection } from 'redux-form' import { NoteEditor } from 'xpub-edit' -import { ValidatedField } from 'xpub-ui' +import { ValidatedField } from '@pubsweet/ui' import { required } from 'xpub-validators' import classes from './Metadata.local.scss' diff --git a/packages/component-submit/src/components/Submit.js b/packages/component-submit/src/components/Submit.js index 0126764c0..5b8bfab25 100644 --- a/packages/component-submit/src/components/Submit.js +++ b/packages/component-submit/src/components/Submit.js @@ -1,7 +1,7 @@ import React from 'react' import classnames from 'classnames' import { Link } from 'react-router-dom' -import { Button } from 'xpub-ui' +import { Button } from '@pubsweet/ui' import Metadata from './Metadata' import Declarations from './Declarations' import Suggestions from './Suggestions' diff --git a/packages/component-submit/src/components/Suggestions.js b/packages/component-submit/src/components/Suggestions.js index a6ec1be9d..9151eaa05 100644 --- a/packages/component-submit/src/components/Suggestions.js +++ b/packages/component-submit/src/components/Suggestions.js @@ -1,6 +1,6 @@ import React from 'react' import { FormSection } from 'redux-form' -import { TextField, ValidatedField } from 'xpub-ui' +import { TextField, ValidatedField } from '@pubsweet/ui' import { join, split } from 'xpub-validators' import classes from './Suggestions.local.scss' diff --git a/packages/component-submit/src/components/SupplementaryFiles.js b/packages/component-submit/src/components/SupplementaryFiles.js index f875d5d01..372863741 100644 --- a/packages/component-submit/src/components/SupplementaryFiles.js +++ b/packages/component-submit/src/components/SupplementaryFiles.js @@ -1,6 +1,6 @@ import React from 'react' import { FormSection } from 'redux-form' -import { Supplementary, ValidatedField } from 'xpub-ui' +import { Supplementary, ValidatedField } from '@pubsweet/ui' import classes from './Metadata.local.scss' const FileInput = uploadFile => input => ( diff --git a/packages/xpub-collabra/package.json b/packages/xpub-collabra/package.json index 5806c4a7a..aa8b1bfb7 100644 --- a/packages/xpub-collabra/package.json +++ b/packages/xpub-collabra/package.json @@ -39,7 +39,7 @@ "xpub-journal": "^0.0.2", "xpub-selectors": "^0.0.2", "xpub-theme": "^0.0.2", - "xpub-ui": "^0.0.2" + "@pubsweet/ui": "^0.1.1" }, "devDependencies": { "babel-core": "^6.26.0", diff --git a/packages/xpub-theme/src/variables.css b/packages/xpub-theme/src/variables.css index fb261f0b2..a36415dd7 100644 --- a/packages/xpub-theme/src/variables.css +++ b/packages/xpub-theme/src/variables.css @@ -2,7 +2,7 @@ /* brand colors */ --color-primary: #0d78f2; - /* colors for interactions */ + /* colors for inte./ractions */ --color-danger: #ff2d1a; --color-warning: #ee7600; --color-valid: #00bf05; diff --git a/packages/xpub-ui/.eslintrc b/packages/xpub-ui/.eslintrc deleted file mode 100644 index db7f6d5a8..000000000 --- a/packages/xpub-ui/.eslintrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "globals": { - "initialState": true, - "state": false, - "setState": false - } -} diff --git a/packages/xpub-ui/docs/colors.md b/packages/xpub-ui/docs/colors.md deleted file mode 100644 index 4f66808b4..000000000 --- a/packages/xpub-ui/docs/colors.md +++ /dev/null @@ -1,45 +0,0 @@ -CSS variables are used to define the theme's color scheme. - -## Brand colors - -`--color-primary` - -```js -<div style={{ color: 'var(--color-primary)' }}> -{faker.lorem.sentence(5)} -</div> -``` - -## Colors for interactions - -`--color-danger` - -```js -<div style={{ color: 'var(--color-danger)' }}> -{faker.lorem.sentence(5)} -</div> -``` - -`--color-valid` - -```js -<div style={{ color: 'var(--color-valid)' }}> -{faker.lorem.sentence(5)} -</div> -``` - -`--color-warning` - -```js -<div style={{ color: 'var(--color-warning)' }}> -{faker.lorem.sentence(5)} -</div> -``` - -`--color-pending` - -```js -<div style={{ color: 'var(--color-pending)' }}> -{faker.lorem.sentence(5)} -</div> -``` diff --git a/packages/xpub-ui/docs/fonts.md b/packages/xpub-ui/docs/fonts.md deleted file mode 100644 index e3d69cb97..000000000 --- a/packages/xpub-ui/docs/fonts.md +++ /dev/null @@ -1,33 +0,0 @@ -CSS variables are used to define font families. - -`--font-author` - -```js -<div style={{ fontFamily: 'var(--font-author)' }}> -{faker.lorem.sentence(5)} -</div> -``` - -`--font-reviewer` - -```js -<div style={{ fontFamily: 'var(--font-reviewer)' }}> -{faker.lorem.sentence(5)} -</div> -``` - -`--font-interface` - -```js -<div style={{ fontFamily: 'var(--font-interface)' }}> -{faker.lorem.sentence(5)} -</div> -``` - -`--font-mono` - -```js -<div style={{ fontFamily: 'var(--font-mono)' }}> -{faker.lorem.sentence(5)} -</div> -``` diff --git a/packages/xpub-ui/package.json b/packages/xpub-ui/package.json deleted file mode 100644 index 13126a9fc..000000000 --- a/packages/xpub-ui/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "xpub-ui", - "version": "0.0.2", - "files": [ - "docs", - "dist", - "src" - ], - "main": "src", - "jsnext:main": "src", - "dependencies": { - "babel-jest": "^21.2.0", - "classnames": "^2.2.5", - "enzyme": "^3.2.0", - "enzyme-adapter-react-15": "^1.0.5", - "lodash": "^4.17.4", - "humps": "^2.0.1", - "prop-types": "^15.5.10", - "react": "^15.6.1", - "react-dom": "^15.6.1", - "react-feather": "^1.0.7", - "react-redux": "^5.0.2", - "react-router-dom": "^4.2.2", - "react-tag-autocomplete": "^5.4.1", - "recompose": "^0.26.0", - "redux": "^3.6.0", - "redux-form": "^7.0.3" - }, - "devDependencies": { - "babel-core": "^6.26.0", - "babel-loader": "^7.1.2", - "babel-preset-env": "^1.6.0", - "babel-preset-react": "^6.24.1", - "babel-preset-stage-2": "^6.24.1", - "css-loader": "^0.28.4", - "faker": "^4.1.0", - "file-loader": "^1.1.5", - "identity-obj-proxy": "^3.0.0", - "jest": "^21.2.1", - "node-sass": "^4.5.3", - "react-styleguidist": "^6.0.8", - "react-test-renderer": "^15.6.1", - "sass-loader": "^6.0.6", - "style-loader": "^0.19.0", - "webpack": "^3.8.1", - "webpack-node-externals": "^1.6.0", - "xpub-styleguide": "^0.0.2" - }, - "jest": { - "moduleNameMapper": { - "\\.s?css$": "identity-obj-proxy" - }, - "setupTestFrameworkScriptFile": "<rootDir>/test/setup/enzyme.js", - "transform": { - "\\.js$": "<rootDir>/test/config/transform.js" - } - }, - "scripts": { - "styleguide": "styleguidist server", - "styleguide:build": "styleguidist build", - "clean": "rimraf dist", - "prebuild": "npm run clean && npm run lint", - "build": "webpack --progress --profile", - "test": "jest", - "test:watch": "npm test -- --watch", - "test:cover": "npm test -- --coverage", - "test:u": "npm test -- --updateSnapshot" - } -} diff --git a/packages/xpub-ui/src/atoms/Attachment.js b/packages/xpub-ui/src/atoms/Attachment.js deleted file mode 100644 index 9f9be1d49..000000000 --- a/packages/xpub-ui/src/atoms/Attachment.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react' -import Icon from './Icon' -import classes from './Attachment.local.scss' - -const Attachment = ({ value }) => ( - <a download={value.name} href={value.url}> - <span className={classes.icon}> - <Icon color="var(--color-primary)">paperclip</Icon> - </span> - <span className={classes.filename}>{value.name}</span> - </a> -) - -export default Attachment diff --git a/packages/xpub-ui/src/atoms/Attachment.local.scss b/packages/xpub-ui/src/atoms/Attachment.local.scss deleted file mode 100644 index 4a6f52020..000000000 --- a/packages/xpub-ui/src/atoms/Attachment.local.scss +++ /dev/null @@ -1,13 +0,0 @@ -.icon { - color: var(--color-primary); - display: inline-flex; - margin-right: 10px; -} - -.filename { - font-size: 0.7em; - height: 2em; - max-width: 25ch; - overflow-wrap: break-word; - padding: 0; -} diff --git a/packages/xpub-ui/src/atoms/Attachment.md b/packages/xpub-ui/src/atoms/Attachment.md deleted file mode 100644 index 3156671c6..000000000 --- a/packages/xpub-ui/src/atoms/Attachment.md +++ /dev/null @@ -1,10 +0,0 @@ -A file attached to a note. - -```js -const value = { - name: faker.system.commonFileName(), - url: faker.internet.url() -}; - -<Attachment value={value}/> -``` diff --git a/packages/xpub-ui/src/atoms/Avatar.js b/packages/xpub-ui/src/atoms/Avatar.js deleted file mode 100644 index d30de999d..000000000 --- a/packages/xpub-ui/src/atoms/Avatar.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react' -import classes from './Avatar.local.scss' - -const Avatar = ({ status, width, height, reviewerLetter }) => { - const classValue = - status && classes[status.toLowerCase()] ? status.toLowerCase() : 'default' - - return ( - <svg - className={classes[classValue]} - height={height || '70'} - viewBox={`0 0 ${width ? width + 5 : '105'} ${height || '70'}`} - width={width || '100'} - xmlns="http://www.w3.org/2000/svg" - > - <path - className={classes.persona} - d=" M 47.666 50.14 C 44.947 49 41.588 47.535 41.588 46.395 L 41.588 39.07 C 45.587 35.977 47.986 31.093 47.986 26.047 L 47.986 16.279 C 47.986 7.326 40.788 0 31.991 0 C 23.193 0 15.995 7.326 15.995 16.279 L 15.995 26.047 C 15.995 31.093 18.395 36.14 22.393 39.07 L 22.393 46.395 C 22.393 47.372 19.034 48.837 16.315 50.14 C 9.757 52.907 0 57.14 0 68.372 L 0 70 L 63.981 70 L 63.981 68.372 C 63.981 57.14 54.224 52.907 47.666 50.14 Z " - /> - <path - className={classes.check} - d=" M 60.106 37.467 C 59.299 36.645 58.895 35.617 58.895 34.486 C 58.895 33.458 59.299 32.43 60.106 31.608 C 60.813 30.888 61.823 30.375 62.934 30.375 C 64.045 30.375 65.055 30.888 65.762 31.608 L 74.246 40.242 L 93.132 21.021 C 93.839 20.301 94.95 19.89 95.96 19.89 C 97.071 19.89 98.081 20.301 98.788 21.021 C 99.596 21.843 100 22.871 100 24.002 C 100 25.03 99.596 26.057 98.788 26.88 L 74.246 51.857 L 60.106 37.467 Z " - /> - <path - className={classes.x} - d="M 70.964 37.518 L 62.025 46.615 C 61.217 47.54 60.712 48.671 60.712 49.904 C 60.712 51.138 61.217 52.268 62.025 53.091 C 62.934 54.016 64.045 54.427 65.257 54.427 C 66.469 54.427 67.58 54.016 68.388 53.091 L 77.326 43.994 L 86.265 53.091 C 87.173 54.016 88.284 54.427 89.496 54.427 C 90.708 54.427 91.819 54.016 92.627 53.091 C 93.536 52.268 93.94 51.138 93.94 49.904 C 93.94 48.671 93.536 47.54 92.627 46.615 L 83.689 37.518 L 92.627 28.422 C 93.536 27.599 93.94 26.469 93.94 25.235 C 93.94 24.002 93.536 22.871 92.627 21.946 C 91.819 21.124 90.708 20.61 89.496 20.61 C 88.284 20.61 87.173 21.124 86.265 21.946 L 77.326 31.043 L 68.388 21.946 C 67.58 21.124 66.469 20.61 65.257 20.61 C 64.045 20.61 62.934 21.124 62.025 21.946 C 61.217 22.871 60.712 24.002 60.712 25.235 C 60.712 26.469 61.217 27.599 62.025 28.422 L 70.964 37.518 Z" - /> - <path - className={classes['question-mark']} - d=" M 79.674 23.203 L 79.674 23.203 Q 83.397 23.203 85.424 25.077 L 85.424 25.077 L 85.424 25.077 Q 87.451 26.95 87.451 29.771 L 87.451 29.771 L 87.451 29.771 Q 87.451 31.75 86.728 33.14 L 86.728 33.14 L 86.728 33.14 Q 86.003 34.529 85.011 35.371 L 85.011 35.371 L 85.011 35.371 Q 84.018 36.214 82.404 37.224 L 82.404 37.224 L 82.404 37.224 Q 80.625 38.361 79.798 39.182 L 79.798 39.182 L 79.798 39.182 Q 78.97 40.003 78.97 41.308 L 78.97 41.308 L 78.97 41.308 Q 78.97 41.94 79.094 42.319 L 79.094 42.319 L 72.971 43.287 L 72.971 43.287 Q 72.64 42.024 72.64 41.098 L 72.64 41.098 L 72.64 41.098 Q 72.64 39.203 73.282 37.898 L 73.282 37.898 L 73.282 37.898 Q 73.923 36.593 74.833 35.814 L 74.833 35.814 L 74.833 35.814 Q 75.743 35.035 77.15 34.108 L 77.15 34.108 L 77.15 34.108 Q 78.681 33.056 79.405 32.298 L 79.405 32.298 L 79.405 32.298 Q 80.129 31.54 80.129 30.403 L 80.129 30.403 L 80.129 30.403 Q 80.129 29.603 79.653 29.203 L 79.653 29.203 L 79.653 29.203 Q 79.177 28.803 78.35 28.803 L 78.35 28.803 L 78.35 28.803 Q 76.405 28.803 74.006 31.245 L 74.006 31.245 L 70.282 27.708 L 70.282 27.708 Q 74.171 23.203 79.674 23.203 L 79.674 23.203 Z M 75.371 53.94 L 75.371 53.94 Q 73.84 53.94 72.93 52.951 L 72.93 52.951 L 72.93 52.951 Q 72.02 51.961 72.02 50.445 L 72.02 50.445 L 72.02 50.445 Q 72.02 48.635 73.24 47.33 L 73.24 47.33 L 73.24 47.33 Q 74.461 46.024 76.24 46.024 L 76.24 46.024 L 76.24 46.024 Q 77.77 46.024 78.681 47.014 L 78.681 47.014 L 78.681 47.014 Q 79.591 48.003 79.591 49.561 L 79.591 49.561 L 79.591 49.561 Q 79.591 51.414 78.37 52.677 L 78.37 52.677 L 78.37 52.677 Q 77.15 53.94 75.371 53.94 L 75.371 53.94 Z " - /> - <g transform="matrix(1.01,0,0,1.028,64.651,6.065)"> - <text - className={classes['reviewer-number']} - transform="matrix(1,0,0,1,0,46.75)" - > - {reviewerLetter} - </text> - </g> - </svg> - ) -} - -export default Avatar diff --git a/packages/xpub-ui/src/atoms/Avatar.local.scss b/packages/xpub-ui/src/atoms/Avatar.local.scss deleted file mode 100644 index 9ff6dfcf5..000000000 --- a/packages/xpub-ui/src/atoms/Avatar.local.scss +++ /dev/null @@ -1,141 +0,0 @@ -figure { - margin: 0 auto 2px; - text-align: center; - width: auto; -} - -svg { - height: auto; - max-height: 100vh; - max-width: 100%; - width: auto; -} - -.default { - .persona { - display: block; - fill: var(--color-primary); - } - - .check { - display: none; - } - - .x { - display: none; - } - - .question-mark { - display: none; - } - - .reviewer-number { - display: none; - } -} - -.accepted { - .persona { - display: block; - fill: var(--color-primary); - } - - .check { - display: block; - fill: var(--color-primary); - } - - .x { - display: none; - } - - .question-mark { - display: none; - } - - .reviewer-number { - display: none; - } -} - -.declined { - .persona { - display: block; - fill: var(--color-danger); - } - - .check { - display: none; - } - - .x { - display: block; - fill: var(--color-danger); - } - - .question-mark { - display: none; - } - - .reviewer-number { - display: none; - } -} - -.pending { - .persona { - display: block; - fill: var(--color-pending); - } - - .check { - display: none; - } - - .x { - display: none; - } - - .question-mark { - display: block; - fill: var(--color-pending); - } - - .reviewer-number { - display: none; - } -} - -.submitted { - .persona { - display: block; - fill: var(--color-primary); - } - - .check { - display: none; - } - - .x { - display: none; - } - - .question-mark { - display: none; - } - - .reviewer-number { - fill: var(--color-primary); - font-family: 'Fira Sans Condensed', sans-serif; - font-size: 50px; - font-style: normal; - font-weight: 600; - stroke: none; - text-transform: uppercase; - } -} - -.fullname { - color: red; - font-family: var(--font-reviewer); -} diff --git a/packages/xpub-ui/src/atoms/Avatar.md b/packages/xpub-ui/src/atoms/Avatar.md deleted file mode 100644 index e4928b9d7..000000000 --- a/packages/xpub-ui/src/atoms/Avatar.md +++ /dev/null @@ -1,10 +0,0 @@ -A general purpose Avatar element. - -```js -const statusFactory = () => { - const statuses = ['Accepted', 'Pending', 'Declined', 'Submitted'] - return statuses[Math.floor(Math.random() * statuses.length)] -}; - -<Avatar status={statusFactory()}/> -``` diff --git a/packages/xpub-ui/src/atoms/Badge.js b/packages/xpub-ui/src/atoms/Badge.js deleted file mode 100644 index eb6f00420..000000000 --- a/packages/xpub-ui/src/atoms/Badge.js +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react' -import classes from './Badge.local.scss' - -const Badge = ({ count, label, plural }) => ( - <span className={classes.root}> - <span className={classes.count}>{count}</span> - <span className={classes.label}> - {plural && count !== 1 ? plural : label} - </span> - </span> -) - -export default Badge diff --git a/packages/xpub-ui/src/atoms/Badge.local.scss b/packages/xpub-ui/src/atoms/Badge.local.scss deleted file mode 100644 index b5eb36513..000000000 --- a/packages/xpub-ui/src/atoms/Badge.local.scss +++ /dev/null @@ -1,25 +0,0 @@ -.root { - align-items: center; - // background: lightgrey; - background: linear-gradient(#fff 0, #fff 1.1em, grey 1.1em, grey 1.15em, #fff 1.15em, #fff 2em); - color: inherit; - display: inline-flex; - font-size: 0.8rem; - margin-right: 1em; - padding-bottom: 1em; -} - -.count { - border-radius: 50%; - color: grey; - font-size: 1em; - font-weight: 600; - padding-right: 0.5em; - text-align: center; -} - -.label { - display: inline-block; - padding: 0; - text-shadow: 0.05em 0.05em 0 #fff, -0.05em -0.05em 0 #fff, -0.05em 0.05em 0 #fff, 0.05em -0.05em 0 #fff; -} diff --git a/packages/xpub-ui/src/atoms/Badge.md b/packages/xpub-ui/src/atoms/Badge.md deleted file mode 100644 index ed418eaab..000000000 --- a/packages/xpub-ui/src/atoms/Badge.md +++ /dev/null @@ -1,16 +0,0 @@ -A badge that displays a count and a label. - -```js -<Badge count={5} label="created"/> -``` - -A plural form of the label can be provided. - -```js -<div> - <Badge count={1} label="thing" plural="things"/> - <Badge count={99} label="thing" plural="things"/> - <Badge count={0} label="thing" plural="things"/> - <Badge count={299} label="thing" plural="things"/> -</div> -``` diff --git a/packages/xpub-ui/src/atoms/Button.js b/packages/xpub-ui/src/atoms/Button.js deleted file mode 100644 index 3f8163bad..000000000 --- a/packages/xpub-ui/src/atoms/Button.js +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react' -import classnames from 'classnames' -import classes from './Button.local.scss' - -const Button = ({ - className, - children, - type = 'button', - disabled, - primary, - onClick, -}) => ( - <button - className={classnames(className, classes.root, { - [classes.disabled]: disabled, - [classes.primary]: primary, - })} - disabled={disabled} - onClick={onClick} - type={type} - > - {children} - </button> -) - -export default Button diff --git a/packages/xpub-ui/src/atoms/Button.local.scss b/packages/xpub-ui/src/atoms/Button.local.scss deleted file mode 100644 index 75b469bc1..000000000 --- a/packages/xpub-ui/src/atoms/Button.local.scss +++ /dev/null @@ -1,103 +0,0 @@ -.root { - background: #ddd; - border: none; - cursor: pointer; - font-family: var(--font-interface); - font-size: inherit; - letter-spacing: 0.05em; - padding: 10px 20px; - position: relative; - text-transform: uppercase; -} - -.root:hover, -.root:focus { - background: #777; - color: white; - outline: 1px solid transparent; -} - -// this will be added to the button that need a feedback to the user. -// &::after { -// content: "Saved!"; -// top: 20%; -// left: 115%; -// position: absolute; -// background: var(--color-primary); -// color: white; -// padding: 0.1em 0.3em; -// opacity: 0; -// } - -.root :active { - transform: scale(0.8); -} - -.root ::after { - animation: 1s warning; - opacity: 1; -} - -.primary { - background-color: var(--color-primary); - border: 2px solid transparent; - border-bottom: 4px solid var(--color-primary); - color: white; -} - -.primary:hover { - background: white; - border: 2px solid var(--color-primary); - border-bottom: 4px solid var(--color-primary); - color: var(--color-primary); - outline: 1px solid transparent; -} - -.primary:focus { - background: white; - border: 2px solid var(--color-primary); - border-bottom: 4px solid var(--color-primary); - box-shadow: 0 2px 0 0 var(--color-primary); - color: var(--color-primary); - outline: 1px solid transparent; -} - -.disabled { - background: white; - border: 2px solid transparent; - border-bottom: 2px solid #bbb; - color: #bbb; -} - -.disabled:hover { - background: transparent; - border: 2px solid transparent; - border-bottom: 2px solid #bbb; - color: #aaa; - cursor: not-allowed; -} - -.disabled:hover::after { - color: var(--color-danger); - content: "sorry, this action is not possible"; - display: inline; - font-size: 0.9em; - font-style: italic; - left: 115%; - letter-spacing: 0; - opacity: 1; - position: absolute; - text-align: left; - text-transform: lowercase; - top: 30%; - // width: 30ch; -} - -.addFile { - background: none; - border: none; - font-style: normal; - letter-spacing: 0; - padding: 0; - text-transform: none; -} diff --git a/packages/xpub-ui/src/atoms/Button.md b/packages/xpub-ui/src/atoms/Button.md deleted file mode 100644 index a7871d1b7..000000000 --- a/packages/xpub-ui/src/atoms/Button.md +++ /dev/null @@ -1,18 +0,0 @@ -A button. - -```js - -<Button>Save</Button> -``` - -A button can be disabled. - -```js -<Button disabled>Save</Button> -``` - -A button can be marked as the "primary" action. - -```js -<Button primary>Save</Button> -``` diff --git a/packages/xpub-ui/src/atoms/Checkbox.js b/packages/xpub-ui/src/atoms/Checkbox.js deleted file mode 100644 index 753235e97..000000000 --- a/packages/xpub-ui/src/atoms/Checkbox.js +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react' -import classnames from 'classnames' -import classes from './Checkbox.local.scss' - -const Checkbox = ({ - inline, - name, - value, - label, - checked, - required, - onChange, - readonly, -}) => ( - <label - className={classnames(classes.root, { - [classes.inline]: inline, - })} - > - <input - checked={checked || false} - className={classes.input} - disabled={readonly} - name={name} - onChange={onChange} - required={required} - type="checkbox" - value={value} - /> - <span>{label}</span> - </label> -) - -export default Checkbox diff --git a/packages/xpub-ui/src/atoms/Checkbox.local.scss b/packages/xpub-ui/src/atoms/Checkbox.local.scss deleted file mode 100644 index 779e4d9e5..000000000 --- a/packages/xpub-ui/src/atoms/Checkbox.local.scss +++ /dev/null @@ -1,56 +0,0 @@ -.root { - align-items: center; - display: flex; - font-family: var(--font-author); - font-size: 1em; - font-style: italic; - letter-spacing: 1px; - transition: all 2s; -} - -.root.inline { - display: inline-flex; -} - -.root.inline:not(:last-child) { - margin-right: 2.7em; -} - -.root:not(.inline):not(:last-child) { - margin-bottom: 0.5rem; -} - -.root .input { - display: none; - margin-right: 0.25rem; -} - -.root span::before { - background-size: 0; - border: 1px solid black; // border-radius: 20px; - content: ' '; - display: inline-block; - height: 9px; - margin-right: 0.3em; - transition: border 0.5s ease, background-size 0.3s ease; - vertical-align: middle; - width: 9px; -} - -.root input:checked + span { - font-weight: 600; - - &::before { - background: black; - border: 1px solid black; - box-shadow: inset 1px 1px 0 0 white, inset -1px -1px 0 0 white; - transition: border 0.5s ease, background-size 0.3s ease; - } -} - -.root:hover input:not(:disabled) + span::before { - //background-size: 100%; - background: var(--color-primary); - box-shadow: inset 1px 1px 0 0 white, inset -1px -1px 0 0 white; -} - diff --git a/packages/xpub-ui/src/atoms/Checkbox.md b/packages/xpub-ui/src/atoms/Checkbox.md deleted file mode 100644 index ceffd9ae8..000000000 --- a/packages/xpub-ui/src/atoms/Checkbox.md +++ /dev/null @@ -1,33 +0,0 @@ -A checkbox. - -```js -initialState = { checked: null }; - -<Checkbox - name="checkbox" - checked={state.checked} - onChange={event => setState({ checked: event.target.checked })}/> -``` - -A checked checkbox. - -```js -initialState = { checked: true }; - -<Checkbox - name="checkbox-checked" - checked={state.checked} - onChange={event => setState({ checked: event.target.checked })}/> -``` - -A checkbox with a label. - -```js -initialState = { checked: false }; - -<Checkbox - name="checkbox-labelled" - checked={state.checked} - label="Foo" - onChange={event => setState({ checked: event.target.checked })}/> -``` diff --git a/packages/xpub-ui/src/atoms/File.js b/packages/xpub-ui/src/atoms/File.js deleted file mode 100644 index 93e5ef6d1..000000000 --- a/packages/xpub-ui/src/atoms/File.js +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' -import classes from './File.local.scss' - -const extension = ({ name }) => name.replace(/^.+\./, '') - -const File = ({ value }) => ( - <div className={classes.root}> - <div className={classes.icon}> - <div className={classes.extension}>{extension(value)}</div> - </div> - - <div className={classes.name}> - <a download={value.name} href={value.url}> - {value.name} - </a> - </div> - </div> -) - -export default File diff --git a/packages/xpub-ui/src/atoms/File.local.scss b/packages/xpub-ui/src/atoms/File.local.scss deleted file mode 100644 index b75173420..000000000 --- a/packages/xpub-ui/src/atoms/File.local.scss +++ /dev/null @@ -1,101 +0,0 @@ -.root { - align-items: center; - display: inline-flex; - flex-direction: column; - margin-bottom: 2em; - margin-right: 3em; - position: relative; - width: 20ch; - - &::before, - &::after { - cursor: pointer; - transition: transform 0.3s; - } - - &::after { - background: var(--color-danger); - border: 1px solid white; - color: white; - content: 'remove'; - cursor: pointer; - font-size: 0.8em; - left: 70%; - letter-spacing: 0.5px; - padding: 0.2em 0.4em; - position: absolute; - text-transform: uppercase; - top: 4em; - transform: scaleX(0); - transform-origin: 0 0; - z-index: 2; - } - - &::before { - background: var(--color-primary); - border: 1px solid white; - color: white; - content: 'replace'; - cursor: pointer; - font-size: 0.8em; - left: 70%; - letter-spacing: 0.5px; - padding: 0.2em 0.4em; - position: absolute; - text-transform: uppercase; - top: 6em; - transform: scaleX(0); - transform-origin: 0 0; - z-index: 3; - } - - .icon { - background: #ddd; - height: 100px; - padding: 5px; - position: relative; - transition: transform 0.3s ease; - width: 70px; - } - - .extension { - background: #888; - color: white; - font-size: 12px; - left: 20px; - padding: 2px; - position: absolute; - right: 0; - text-align: center; - text-transform: uppercase; - top: 20px; - } - - .name { - color: #aaa; - font-size: 0.9em; - font-style: italic; - margin: 5px; - max-width: 15ch; - text-align: center; - word-break: break-all; /* to divide into lines */ - } - - &:hover { - .extension { - background: white; - border-right: 2px solid #ddd; - color: var(--color-primary); - } - - .icon { - background: var(--color-primary); - transform: skewY(6deg) rotate(-6deg); - } - - &::after, - &::before { - transform: scaleX(1); - } - } -} diff --git a/packages/xpub-ui/src/atoms/File.md b/packages/xpub-ui/src/atoms/File.md deleted file mode 100644 index fe482efec..000000000 --- a/packages/xpub-ui/src/atoms/File.md +++ /dev/null @@ -1,31 +0,0 @@ -A file. - -```js -const value = { - name: faker.system.commonFileName(), - // type: faker.system.commonFileType(), - // size: faker.random.number(), -}; - -<File value={value}/> -``` - -Upload progress is displayed as an overlay. - -```js -const value = { - name: faker.system.commonFileName(), -}; - -<File value={value} progress={0.5}/> -``` - -An upload error is displayed above the file. - -```js -const value = { - name: faker.system.commonFileName(), -}; - -<File value={value} error="There was an error"/> -``` diff --git a/packages/xpub-ui/src/atoms/Icon.js b/packages/xpub-ui/src/atoms/Icon.js deleted file mode 100644 index 26a904615..000000000 --- a/packages/xpub-ui/src/atoms/Icon.js +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' -import { pascalize } from 'humps' -import * as icons from 'react-feather' -import classes from './Icon.local.scss' - -const Icon = ({ children, color = 'black', size = 24 }) => { - // convert `arrow_left` to `ArrowLeft` - const name = pascalize(children) - - // select the icon - const icon = icons[name] - - return <span className={classes.root}>{icon({ color, size })}</span> -} - -export default Icon diff --git a/packages/xpub-ui/src/atoms/Icon.local.scss b/packages/xpub-ui/src/atoms/Icon.local.scss deleted file mode 100644 index dfc0a60d1..000000000 --- a/packages/xpub-ui/src/atoms/Icon.local.scss +++ /dev/null @@ -1,3 +0,0 @@ -.root { - display: inline-flex; -} diff --git a/packages/xpub-ui/src/atoms/Icon.md b/packages/xpub-ui/src/atoms/Icon.md deleted file mode 100644 index bbee05936..000000000 --- a/packages/xpub-ui/src/atoms/Icon.md +++ /dev/null @@ -1,17 +0,0 @@ -An icon, from the [Feather](https://feathericons.com/) icon set. - -```js -<Icon>arrow_right</Icon> -``` - -The color can be changed. - -```js -<Icon color="red">arrow_right</Icon> -``` - -The size can be changed. - -```js -<Icon size={48}>arrow_right</Icon> -``` diff --git a/packages/xpub-ui/src/atoms/Menu.js b/packages/xpub-ui/src/atoms/Menu.js deleted file mode 100644 index 9582d08d4..000000000 --- a/packages/xpub-ui/src/atoms/Menu.js +++ /dev/null @@ -1,99 +0,0 @@ -import React from 'react' -import classnames from 'classnames' -import classes from './Menu.local.scss' - -// TODO: match the width of the container to the width of the widest option? -// TODO: use a <select> element instead of divs? - -class Menu extends React.Component { - constructor(props) { - super(props) - - this.state = { - open: false, - selected: props.value, - } - } - - toggleMenu = () => { - this.setState({ - open: !this.state.open, - }) - } - - handleSelect = selected => { - this.setState({ - open: false, - selected, - }) - - this.props.onChange(selected) - } - - optionLabel = value => { - const { options } = this.props - - return options.find(option => option.value === value).label - } - - render() { - const { - label, - options, - placeholder = 'Choose in the list', - readonly, - } = this.props - const { open, selected } = this.state - - return ( - <div - className={classnames(classes.root, { - [classes.open]: open, - })} - > - {label && <span className={classes.label}>{label}</span>} - - <div className={classes.main}> - <div className={classes.openerContainer}> - {readonly ? ( - <span>{this.optionLabel(selected)}</span> - ) : ( - <button - className={classes.opener} - onClick={this.toggleMenu} - type="button" - > - {selected ? ( - <span>{this.optionLabel(selected)}</span> - ) : ( - <span className={classes.placeholder}>{placeholder}</span> - )} - <span className={classes.arrow}>▼</span> - </button> - )} - </div> - - <div className={classes.optionsContainer}> - {open && ( - <div className={classes.options}> - {options.map(option => ( - <div - className={classnames(classes.option, { - [classes.active]: option.value === selected, - })} - key={option.value} - onClick={() => this.handleSelect(option.value)} - > - {option.label || option.value} - </div> - ))} - </div> - )} - </div> - </div> - </div> - ) - } -} - -export default Menu diff --git a/packages/xpub-ui/src/atoms/Menu.local.scss b/packages/xpub-ui/src/atoms/Menu.local.scss deleted file mode 100644 index 67555549e..000000000 --- a/packages/xpub-ui/src/atoms/Menu.local.scss +++ /dev/null @@ -1,92 +0,0 @@ -.root { - align-items: center; - display: flex; -} - -.label { - margin-right: 0.5em; -} - -.main { - position: relative; -} - -.optionsContainer { - position: absolute; -} - -.opener { - align-items: center; - background: transparent; - border: none; - border-left: 2px solid transparent; - cursor: pointer; - display: flex; - font-family: var(--font-author); - font-size: inherit; - outline: none; -} - -.opener:hover { - color: var(--color-primary); -} - -.open .opener { - border-left: 2px solid var(--color-primary); - color: var(--color-primary); -} - -.placeholder { - color: #aaa; - font-family: var(--font-interface); - font-weight: 400; -} - -.opener:hover .placeholder { - color: var(--color-primary); -} - -.arrow { - font-size: 50%; - margin-left: 10px; - transform: scaleY(1.2) scaleX(2.2); - transition: transform 0.2s; -} - -.open .arrow { - transform: scaleX(2.2) scaleY(-1.2); -} - -.options { - background-color: white; - border-bottom: 2px solid var(--color-primary); - border-left: 2px solid var(--color-primary); - // columns: 2 auto; - left: 0; - min-width: 10em; - opacity: 0; - padding-top: 0.5em; - position: absolute; - top: 0; - z-index: 10; -} - -.open .options { - opacity: 1; -} - -.option { - cursor: pointer; - font-family: var(--font-author); - padding: 10px; - white-space: nowrap; -} - -.option:hover { - color: var(--color-primary); -} - -.active { - color: black; - font-weight: 600; /* placeholder for the semibold */ -} diff --git a/packages/xpub-ui/src/atoms/Menu.md b/packages/xpub-ui/src/atoms/Menu.md deleted file mode 100644 index 0b2620619..000000000 --- a/packages/xpub-ui/src/atoms/Menu.md +++ /dev/null @@ -1,44 +0,0 @@ -A menu for selecting one of a list of options. - -```js -const options = [ - { value: 'foo', label: 'Foo' }, - { value: 'bar', label: 'Bar' }, - { value: 'baz', label: 'Baz' } -]; - -<Menu - options={options} - onChange={value => console.log(value)}/> -``` - -When an option is selected, it replaces the placeholder. - -```js -const options = [ - { value: 'foo', label: 'Foo' }, - { value: 'bar', label: 'Bar' }, - { value: 'baz', label: 'Baz' } -]; - -<Menu - options={options} - value="foo" - onChange={value => console.log(value)}/> -``` - -A menu can have a label - -```js -const options = [ - { value: 'foo', label: 'Foo' }, - { value: 'bar', label: 'Bar' }, - { value: 'baz', label: 'Baz' } -]; - -<Menu - options={options} - label="Title" - value="foo" - onChange={value => console.log(value)}/> -``` diff --git a/packages/xpub-ui/src/atoms/Radio.js b/packages/xpub-ui/src/atoms/Radio.js deleted file mode 100644 index 9421e2bba..000000000 --- a/packages/xpub-ui/src/atoms/Radio.js +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react' -import classnames from 'classnames' -import classes from './Radio.local.scss' - -const inputGradient = color => - `radial-gradient(closest-corner at center, ${color} 0%, ${color} 45%, - white 45%, white 100%)` - -const Radio = ({ - className, - color = 'black', - inline, - name, - value, - label, - checked, - required, - onChange, - readonly, -}) => ( - <label - className={classnames( - classes.root, - { - [classes.inline]: inline, - [classes.checked]: checked, - }, - className, - )} - style={{ color }} - > - <input - checked={checked} - className={classes.input} - disabled={readonly} - name={name} - onChange={onChange} - required={required} - type="radio" - value={value} - /> - <span - className={classes.pseudoInput} - style={{ background: checked ? inputGradient(color) : 'transparent' }} - > - {' '} - </span> - <span className={classes.label}>{label}</span> - </label> -) - -export default Radio diff --git a/packages/xpub-ui/src/atoms/Radio.local.scss b/packages/xpub-ui/src/atoms/Radio.local.scss deleted file mode 100644 index 49f699cb1..000000000 --- a/packages/xpub-ui/src/atoms/Radio.local.scss +++ /dev/null @@ -1,59 +0,0 @@ -.root { - align-items: center; - cursor: pointer; - display: flex; - transition: all 2s; -} - -.root.inline { - display: inline-flex; -} - -.root.inline:not(:last-child) { - margin-right: 2.7em; -} - -.root:not(.inline):not(:last-child) { - margin-bottom: 0.5rem; -} - -/* label text */ - -.label { - display: inline-block; - font-family: inherit; - font-size: 1em; - font-style: italic; - letter-spacing: 1px; -} - -.checked .label { - font-weight: 600; -} - -// hide the input - -.input { - display: none; -} - -/* pseudo-input */ - -.pseudoInput { - background-size: 0; - border-color: transparent; - border-radius: 10px; - box-shadow: 0 0 0 1px; - content: " "; - display: inline-block; - height: 10px; - margin-right: 0.3em; - transition: border 0.5s ease, background-size 0.3s ease; - vertical-align: center; - width: 10px; -} - -.root:not(.checked):hover .pseudoInput { - background: radial-gradient(closest-corner at center, var(--color-primary) 0%, var(--color-primary) 30%, white 30%, white 100%); - box-shadow: 0 0 0 1px var(--color-primary); -} diff --git a/packages/xpub-ui/src/atoms/Radio.md b/packages/xpub-ui/src/atoms/Radio.md deleted file mode 100644 index 96aeba898..000000000 --- a/packages/xpub-ui/src/atoms/Radio.md +++ /dev/null @@ -1,54 +0,0 @@ -A radio button. - -```js -initialState = { - value: undefined -}; - -<Radio - name="radio" - checked={state.value === 'on'} - onChange={event => setState({ value: event.target.value })}/> -``` - -A checked radio button. - -```js -initialState = { - value: 'on' -}; - -<Radio - name="radio-checked" - checked={state.value === 'on'} - onChange={event => setState({ value: event.target.value })}/> -``` - -A radio button with a label. - -```js -initialState = { - value: undefined -}; - -<Radio - name="radio-checked" - label="Foo" - checked={state.value === 'on'} - onChange={event => setState({ value: event.target.value })}/> -``` - -A radio button with a color. - -```js -initialState = { - value: undefined -}; - -<Radio - name="radio-color" - label="Foo" - color="red" - checked={state.value === 'on'} - onChange={event => setState({ value: event.target.value })}/> -``` diff --git a/packages/xpub-ui/src/atoms/Tags.js b/packages/xpub-ui/src/atoms/Tags.js deleted file mode 100644 index c16f59947..000000000 --- a/packages/xpub-ui/src/atoms/Tags.js +++ /dev/null @@ -1,59 +0,0 @@ -import React from 'react' -import ReactTags from 'react-tag-autocomplete' -import './Tags.scss' - -// TODO: separate tags when pasted -// TODO: allow tags to be edited - -class Tags extends React.Component { - constructor(props) { - super(props) - - this.state = { - tags: props.value || [], - } - } - - handleDelete = index => { - const { tags } = this.state - - tags.splice(index, 1) - - this.setState({ tags }) - - this.props.onChange(tags) - } - - handleAddition = tag => { - const { tags } = this.state - - tags.push(tag) - - this.setState({ tags }) - - this.props.onChange(tags) - } - - render() { - const { tags } = this.state - const { name, suggestions, placeholder } = this.props - - return ( - <ReactTags - allowNew - autofocus={false} - // TODO: enable these when react-tag-autocomplete update is released - // delimiters={[]} - // delimiterChars={[',', ';']} - handleAddition={this.handleAddition} - handleDelete={this.handleDelete} - name={name} - placeholder={placeholder} - suggestions={suggestions} - tags={tags} - /> - ) - } -} - -export default Tags diff --git a/packages/xpub-ui/src/atoms/Tags.md b/packages/xpub-ui/src/atoms/Tags.md deleted file mode 100644 index 9bfba763b..000000000 --- a/packages/xpub-ui/src/atoms/Tags.md +++ /dev/null @@ -1,21 +0,0 @@ -A form input for a list of tags. - -```js -<Tags - onChange={value => console.log(value)}/> -``` - -Existing values can be passed in, and the placeholder can be customized. - -```js -const value = [ - {name: 'foo'}, - {name: 'bar'}, - {name: 'baz'} -]; - -<Tags - value={value} - placeholder="Add new keyword" - onChange={value => console.log(value)}/> -``` diff --git a/packages/xpub-ui/src/atoms/Tags.scss b/packages/xpub-ui/src/atoms/Tags.scss deleted file mode 100644 index 991d4395c..000000000 --- a/packages/xpub-ui/src/atoms/Tags.scss +++ /dev/null @@ -1,129 +0,0 @@ -/* stylelint-disable */ - -/* trying to reuse some parts frome pubsweet website: the mixins for the underlines for the tags */ - -$color: var(--color-primary); -$color-back: white; - -@mixin realBorder($color, $colorback) { - background: linear-gradient($colorback 0, $colorback 1.2em, $color 1.2em, $color 1.25em, $colorback 1.25em, $colorback 2em) no-repeat; - text-shadow: 0.05em 0.05em 0 $colorback, -0.05em -0.05em 0 $colorback, -0.05em 0.05em 0 $colorback, 0.05em -0.05em 0 $colorback; -} - -.root { - font-family: "Fira Sans Condensed", sans-serif; -} - -.react-tags { - position: relative; - padding: 6px 0 0 6px; - font-size: 1em; - line-height: 1.2; - - /* clicking anywhere will focus the input */ - cursor: text; -} - -.react-tags.is-focused { - border-color: var(--color-primary); -} - -.react-tags__selected { - display: inline; -} - -.react-tags__selected-tag { - font-family: "Vollkorn", serif; - display: inline-block; - box-sizing: border-box; - margin: 0 1em 1em 0; - padding: 0.1em 0.3em; - border: 0 solid transparent; - @include realBorder(#aaa, white); - - /* match the font styles */ - font-size: inherit; - line-height: inherit; - cursor: pointer; -} - -.react-tags__selected-tag::after { - content: '\2715'; - margin-left: 8px; - padding: 3px 0 0; - // margin: 0; - display: inline-block; - width: 13px; - height: 10px; - font-size: 0.9em; - background: white; - color: #aaa; - font-weight: 600; - text-shadow: none; - - &:hover { - background: var(--color-primary); - } -} - -.react-tags__selected-tag:hover, -.react-tags__selected-tag:focus { - @include realBorder(transparent, white); - - text-decoration: line-through; - - &::after { - color: var(--color-danger); - } -} - -.react-tags__search { - display: inline-block; - - /* match tag layout */ - margin: 0 1em 1em 0; - padding: 0.1em 0.3em; - - /* prevent autoresize overflowing the container */ - max-width: 100px; -} - -@media screen and (min-width: 30em) { - .react-tags__search { - /* this will become the offsetParent for suggestions */ - position: relative; - } -} - -.react-tags__search input { - /* prevent autoresize overflowing the container */ - max-width: 100%; - - /* remove styles and layout from this element */ - margin: 0; - padding: 0; - border: 0; - outline: none; - - /* match the font styles */ - font-size: inherit; - line-height: inherit; - border-bottom: 1px dashed grey; - min-width: 15ch; - font-family: "Vollkorn", serif; - color: black; // color: red; - - &::placeholder { - font-family: "Fira Sans Condensed", sans-serif; - opacity: 0.5; - } - - &:focus, - &:hover { - border-bottom: 1px dashed var(--color-primary); - } -} - -.react-tags__search input::-ms-clear { - display: none; -} diff --git a/packages/xpub-ui/src/atoms/TextField.js b/packages/xpub-ui/src/atoms/TextField.js deleted file mode 100644 index 987e07676..000000000 --- a/packages/xpub-ui/src/atoms/TextField.js +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import classes from './TextField.local.scss' - -const TextField = ({ - label, - name, - placeholder, - required, - type = 'text', - value = '', - onBlur, - onChange, - readonly, -}) => ( - <label className={classes.root}> - {label && <span className={classes.text}>{label}</span>} - <input - className={classes.input} - name={name} - onBlur={onBlur} - onChange={onChange} - placeholder={placeholder} - readOnly={readonly} - required={required} - type={type} - value={value} - /> - </label> -) - -export default TextField diff --git a/packages/xpub-ui/src/atoms/TextField.local.scss b/packages/xpub-ui/src/atoms/TextField.local.scss deleted file mode 100644 index b857af22d..000000000 --- a/packages/xpub-ui/src/atoms/TextField.local.scss +++ /dev/null @@ -1,35 +0,0 @@ -.root { - align-items: center; - display: flex; -} - -.text { - margin-right: 10px; -} - -.input { - flex: 1; - font-size: inherit; - padding: 0.5em; -} - -.root input { - border: 0 none; - border-bottom: 1px dashed #aaa; - font-family: "Vollkorn", serif; - padding: 0; - - &:hover, - &:focus { - border-bottom: 1px dashed var(--color-primary); - border-color: transparent; - box-shadow: none; - outline-style: none; - } -} - -.root input::placeholder { - color: #777; - font-family: var(--font-interface); - font-style: italic; -} diff --git a/packages/xpub-ui/src/atoms/TextField.md b/packages/xpub-ui/src/atoms/TextField.md deleted file mode 100644 index 4c5743191..000000000 --- a/packages/xpub-ui/src/atoms/TextField.md +++ /dev/null @@ -1,23 +0,0 @@ -A form input for plain text. - - -```js -initialState = { value: '' }; - -<TextField - value={state.value} - placeholder="so you can write some in here" - onChange={event => setState({ value: event.target.value })}/> -``` - -The input can have a label. - -```js -initialState = { value: '' }; - -<TextField - label="Foo" - value={state.value} - placeholder="so you can write some in here" - onChange={event => setState({ value: event.target.value })}/> -``` diff --git a/packages/xpub-ui/src/atoms/UploadingFile.js b/packages/xpub-ui/src/atoms/UploadingFile.js deleted file mode 100644 index b5f6b6ad6..000000000 --- a/packages/xpub-ui/src/atoms/UploadingFile.js +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import classes from './UploadingFile.local.scss' - -// TODO: cancel button - -const extension = ({ name }) => name.replace(/^.+\./, '') - -const UploadingFile = ({ file, error, progress }) => ( - <div className={classes.root}> - {!!error && <div className={classes.error}>{error}</div>} - - <div className={classes.icon}> - {!!progress && ( - <div - className={classes.progress} - style={{ top: `${progress * 100}%` }} - /> - )} - - <div className={classes.extension}>{extension(file)}</div> - </div> - - <div className={classes.name}>{file.name}</div> - </div> -) - -export default UploadingFile diff --git a/packages/xpub-ui/src/atoms/UploadingFile.local.scss b/packages/xpub-ui/src/atoms/UploadingFile.local.scss deleted file mode 100644 index 895148f99..000000000 --- a/packages/xpub-ui/src/atoms/UploadingFile.local.scss +++ /dev/null @@ -1,113 +0,0 @@ -.root { - align-items: center; - display: inline-flex; - flex-direction: column; - margin-bottom: 2em; - margin-right: 3em; - position: relative; - width: 20ch; -} - -.icon { - background: #ddd; - height: 100px; - margin: 5px; - opacity: 0.5; - position: relative; - width: 70px; -} - -.progress { - background-image: - linear-gradient( - var(--color-primary-light) 50%, - var(--color-primary) 75%, - to top - ); - bottom: 0; - content: ''; - display: block; - left: 0; - opacity: 1; - position: absolute; - right: 0; - transform-origin: 0 0; - - &::after { - /* we can use a data attribute for the numbering below */ - bottom: 2px; - color: white; - content: "00%"; - display: block; - position: absolute; - right: 2px; - } -} - -.error { - background: var(--color-danger); - border: 2px solid white; - color: white; - font-size: 0.8em; - letter-spacing: 0.01em; - opacity: 1; - padding: 0.3em 0.5em; - position: absolute; - top: 25%; - z-index: 4; -} - -.extension { - background: #888; - color: white; - font-size: 12px; - left: 20px; - padding: 2px; - position: absolute; - right: 0; - text-align: center; - text-transform: uppercase; - top: 20px; -} - -.name { - color: gray; - font-size: 90%; - font-style: italic; - margin: 5px; - max-width: 20ch; -} - -// clock experiment, on hold. -//.progress { -// opacity: 1; -// background: var(--color-primary); -// position: absolute; -// bottom: 10%; -// right: 10%; -// content: ''; -// width: 3px; -// height: 1em; -// display: block; -// // margin-left: 30%; -// transform-origin: 0 0; -// animation: rotate 1s infinite ease-in-out ; -// background-image: -// &:after { -// content: "uploading"; -// display: block; -// position: absolute; -// width: 1em; -// height: 1em; -// } -//} -// -// -//@keyframes rotate { -// 0% { -// transform: rotate(0) -// } -// 100% { -// transform: rotate(360deg); -// } -//} diff --git a/packages/xpub-ui/src/atoms/UploadingFile.md b/packages/xpub-ui/src/atoms/UploadingFile.md deleted file mode 100644 index 7a9db24c9..000000000 --- a/packages/xpub-ui/src/atoms/UploadingFile.md +++ /dev/null @@ -1,29 +0,0 @@ -A file that's being uploaded. - -```js -const file = { - name: faker.system.commonFileName() -}; - -<UploadingFile file={file}/> -``` - -Upload progress is displayed as an overlay. - -```js -const file = { - name: faker.system.commonFileName(), -}; - -<UploadingFile file={file} progress={0.5}/> -``` - -An upload error is displayed above the file. - -```js -const file = { - name: faker.system.commonFileName(), -}; - -<UploadingFile file={file} error="There was an error"/> -``` diff --git a/packages/xpub-ui/src/atoms/ValidatedField.js b/packages/xpub-ui/src/atoms/ValidatedField.js deleted file mode 100644 index 2a5528bd9..000000000 --- a/packages/xpub-ui/src/atoms/ValidatedField.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react' -import { compose, withHandlers } from 'recompose' -import classnames from 'classnames' -import { Field } from 'redux-form' -import classes from './ValidatedField.local.scss' - -// TODO: pass ...props.input to children automatically? - -const ValidatedFieldComponent = ({ component: Component }) => ({ - meta, - input, - readonly, -}) => ( - <div> - <Component {...input} readonly={readonly} /> - - {meta.touched && - (meta.error || meta.warning) && ( - <div className={classes.messages}> - {meta.error && ( - <div className={classnames(classes.message, classes.error)}> - {meta.error} - </div> - )} - - {meta.warning && ( - <div className={classnames(classes.message, classes.warning)}> - {meta.warning} - </div> - )} - </div> - )} - </div> -) - -const ValidatedField = ({ fieldComponent, ...rest }) => ( - <Field {...rest} component={fieldComponent} /> -) - -export default compose( - withHandlers({ - fieldComponent: ValidatedFieldComponent, - }), -)(ValidatedField) diff --git a/packages/xpub-ui/src/atoms/ValidatedField.local.scss b/packages/xpub-ui/src/atoms/ValidatedField.local.scss deleted file mode 100644 index 3ba44df3b..000000000 --- a/packages/xpub-ui/src/atoms/ValidatedField.local.scss +++ /dev/null @@ -1,28 +0,0 @@ -.root { - font-family: var(--font-author); -} - -.messages { - display: inline-block; - font-style: italic; - margin-left: 1em; - margin-top: 10px; -} - -.message:not(:last-child) { - margin-bottom: 10px; -} - -.error, -.warning { - font-size: 0.9em; - letter-spacing: 0.01em; -} - -.error { - color: var(--color-danger); -} - -.warning { - color: var(--color-warning); -} diff --git a/packages/xpub-ui/src/atoms/ValidatedField.md b/packages/xpub-ui/src/atoms/ValidatedField.md deleted file mode 100644 index 136df6151..000000000 --- a/packages/xpub-ui/src/atoms/ValidatedField.md +++ /dev/null @@ -1,33 +0,0 @@ -A form field that displays the results of validation. - -```js -const { reduxForm } = require('redux-form'); - -const ValidatedFieldForm = reduxForm({ - form: 'validated-field-error', - onChange: values => console.log(values) -})(ValidatedField); - -const TextInput = input => <TextField {...input}/>; - -<ValidatedFieldForm - name="error" - validate={() => 'Required'} - component={TextInput}/> -``` - -```js -const { reduxForm } = require('redux-form'); - -const ValidatedFieldForm = reduxForm({ - form: 'validated-field-warning', - onChange: values => console.log(values) -})(ValidatedField); - -const TextInput = input => <TextField {...input}/>; - -<ValidatedFieldForm - name="warning" - warn={() => 'Expected'} - component={TextInput}/> -``` diff --git a/packages/xpub-ui/src/index.js b/packages/xpub-ui/src/index.js deleted file mode 100644 index 699a30066..000000000 --- a/packages/xpub-ui/src/index.js +++ /dev/null @@ -1,23 +0,0 @@ -/* atoms */ -export { default as Attachment } from './atoms/Attachment' -export { default as Avatar } from './atoms/Avatar' -export { default as Badge } from './atoms/Badge' -export { default as Button } from './atoms/Button' -export { default as Checkbox } from './atoms/Checkbox' -export { default as File } from './atoms/File' -export { default as Icon } from './atoms/Icon' -export { default as Menu } from './atoms/Menu' -export { default as Radio } from './atoms/Radio' -export { default as Tags } from './atoms/Tags' -export { default as TextField } from './atoms/TextField' -export { default as ValidatedField } from './atoms/ValidatedField' - -/* molecules */ -export { default as AppBar } from './molecules/AppBar' -export { default as Attachments } from './molecules/Attachments' -export { default as CheckboxGroup } from './molecules/CheckboxGroup' -export { default as Files } from './molecules/Files' -export { default as PlainButton } from './molecules/PlainButton' -export { default as Supplementary } from './molecules/Supplementary' -export { default as RadioGroup } from './molecules/RadioGroup' -export { default as YesOrNo } from './molecules/YesOrNo' diff --git a/packages/xpub-ui/src/lib/animation.scss b/packages/xpub-ui/src/lib/animation.scss deleted file mode 100644 index 21b947737..000000000 --- a/packages/xpub-ui/src/lib/animation.scss +++ /dev/null @@ -1,29 +0,0 @@ -/* This file is here to share animations between modules, not used yet.. */ - -@keyframes bounce { - 33% { - transform: translateY(-20px); - } - - 66% { - transform: translateY(0); - } -} - -.bounce { - animation: bounce 1s infinite ease-in-out; -} - -@keyframes rotate { - from { - transform: rotate(0); - } - - to { - transform: rotate(360deg); - } -} - -.rotate { - animation: rotate 1s infinite ease-in-out; -} diff --git a/packages/xpub-ui/src/lib/colors.local.scss b/packages/xpub-ui/src/lib/colors.local.scss deleted file mode 100644 index e06cf2a6b..000000000 --- a/packages/xpub-ui/src/lib/colors.local.scss +++ /dev/null @@ -1,4 +0,0 @@ -.primary { - background-color: cornflowerblue; - color: white; -} diff --git a/packages/xpub-ui/src/molecules/AppBar.js b/packages/xpub-ui/src/molecules/AppBar.js deleted file mode 100644 index 2601c8fb9..000000000 --- a/packages/xpub-ui/src/molecules/AppBar.js +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import { Link } from 'react-router-dom' -import classnames from 'classnames' -import classes from './AppBar.local.scss' -import Icon from '../atoms/Icon' - -const AppBar = ({ brandLink, brandName, loginLink, logoutLink, userName }) => ( - <div className={classes.root}> - <Link - className={classnames(classes.link, classes.logo)} - to={brandLink || '/'} - > - {brandName} - </Link> - - <div className={classes.actions}> - {userName && ( - <span className={classes.item}> - <Icon size={16}>user</Icon> - <span className={classes.username}>{userName}</span> - </span> - )} - - {userName ? ( - <Link - className={classnames(classes.item, classes.link)} - to={logoutLink} - > - logout - </Link> - ) : ( - <Link className={classnames(classes.item, classes.link)} to={loginLink}> - login - </Link> - )} - </div> - </div> -) - -export default AppBar diff --git a/packages/xpub-ui/src/molecules/AppBar.local.scss b/packages/xpub-ui/src/molecules/AppBar.local.scss deleted file mode 100644 index bfe123d50..000000000 --- a/packages/xpub-ui/src/molecules/AppBar.local.scss +++ /dev/null @@ -1,43 +0,0 @@ -.root { - display: flex; - justify-content: space-between; -} - -.link { - color: var(--color-primary); - - &::before { - color: #aaa; - display: inline-block; - height: 1em; - margin-right: 0.3em; - text-align: center; - } -} - -.link:hover { - cursor: pointer; - text-decoration: underline; - - &::before { - color: var(--color-primary); - } -} - -.item { - align-items: center; - display: inline-flex; - padding: 0 1rem; -} - -.actions { - display: flex; -} - -.username { - margin-left: 0.3em; -} - -.logo::before { - content: ""; -} diff --git a/packages/xpub-ui/src/molecules/AppBar.md b/packages/xpub-ui/src/molecules/AppBar.md deleted file mode 100644 index a2b7acebc..000000000 --- a/packages/xpub-ui/src/molecules/AppBar.md +++ /dev/null @@ -1,20 +0,0 @@ -The app bar appears at the top of every page of the application. - -It displays the name of the application (as a link to the home page), the username of the current user, and a link to sign out. - -```js -<AppBar - brandName="xpub" - loginLink="/login" - logoutLink="/logout" - userName="foo"/> -``` - -When the user is not signed in, only the login link is displayed. - -```js -<AppBar - brandName="xpub" - loginLink="/login" - logoutLink="/logout"/> -``` diff --git a/packages/xpub-ui/src/molecules/Attachments.js b/packages/xpub-ui/src/molecules/Attachments.js deleted file mode 100644 index c05eb4879..000000000 --- a/packages/xpub-ui/src/molecules/Attachments.js +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react' -import Files from './Files' -import Attachment from '../atoms/Attachment' -import classes from './Attachments.local.scss' -import Icon from '../atoms/Icon' - -// TODO: show upload progress - -const Attachments = props => ( - <Files - {...props} - buttonText="Attach file" - uploadedFile={value => <Attachment key={value.url} value={value} />} - uploadingFile={({ file, progress, error }) => ( - <div className={classes.uploading}> - <span className={classes.icon}> - <Icon color="var(--color-primary)">paperclip</Icon> - </span> - <span className={classes.filename}>{error || 'Uploading…'}</span> - </div> - )} - /> -) - -export default Attachments diff --git a/packages/xpub-ui/src/molecules/Attachments.local.scss b/packages/xpub-ui/src/molecules/Attachments.local.scss deleted file mode 100644 index 67c036fe4..000000000 --- a/packages/xpub-ui/src/molecules/Attachments.local.scss +++ /dev/null @@ -1,13 +0,0 @@ -.uploading { - align-items: center; - display: flex; -} - -.icon { - color: gray; - margin-right: 10px; -} - -.filename { - color: gray; -} diff --git a/packages/xpub-ui/src/molecules/Attachments.md b/packages/xpub-ui/src/molecules/Attachments.md deleted file mode 100644 index 01dbde245..000000000 --- a/packages/xpub-ui/src/molecules/Attachments.md +++ /dev/null @@ -1,18 +0,0 @@ -A list of files attached to a note, and a button to attach a new file. - -```js -const value = [ - { - name: faker.system.commonFileName(), - url: faker.internet.url() - }, - { - name: faker.system.commonFileName(), - url: faker.internet.url() - } -]; - -<Attachments - value={value} - uploadFile={file => new XMLHttpRequest()}/> -``` diff --git a/packages/xpub-ui/src/molecules/CheckboxGroup.js b/packages/xpub-ui/src/molecules/CheckboxGroup.js deleted file mode 100644 index e4469cfd4..000000000 --- a/packages/xpub-ui/src/molecules/CheckboxGroup.js +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' -import Checkbox from '../atoms/Checkbox' - -class CheckboxGroup extends React.Component { - constructor(props) { - super(props) - - this.state = { - values: props.value || [], - } - } - - handleChange = event => { - const { values } = this.state - - const { value } = event.target - - if (event.target.checked) { - values.push(value) - } else { - values.splice(values.indexOf(value), 1) - } - - this.setState({ values }) - - this.props.onChange(values) - } - - render() { - const { inline, name, options, required, readonly } = this.props - const { values } = this.state - - return ( - <div> - {options.map(option => ( - <Checkbox - checked={values.includes(option.value)} - inline={inline} - key={option.value} - label={option.label} - name={name} - onChange={this.handleChange} - readonly={readonly} - required={required} - value={option.value} - /> - ))} - </div> - ) - } -} - -export default CheckboxGroup diff --git a/packages/xpub-ui/src/molecules/CheckboxGroup.md b/packages/xpub-ui/src/molecules/CheckboxGroup.md deleted file mode 100644 index 7b43e13ec..000000000 --- a/packages/xpub-ui/src/molecules/CheckboxGroup.md +++ /dev/null @@ -1,54 +0,0 @@ -A group of checkboxes. - -```js -const options = [ - { - value: 'one', - label: 'One' - }, - { - value: 'two', - label: 'Two' - }, - { - value: 'three', - label: 'Three' - } -]; - -initialState = { value: [] }; - -<CheckboxGroup - name="checkboxgroup" - options={options} - value={state.value} - onChange={value => setState({ value })}/> -``` - -The checkboxes can be displayed inline. - -```js -const options = [ - { - value: 'one', - label: 'One' - }, - { - value: 'two', - label: 'Two' - }, - { - value: 'three', - label: 'Three' - } -]; - -initialState = { value: [] }; - -<CheckboxGroup - name="checkboxgroup-inline" - options={options} - value={state.value} - inline={true} - onChange={value => setState({ value })}/> -``` diff --git a/packages/xpub-ui/src/molecules/Files.js b/packages/xpub-ui/src/molecules/Files.js deleted file mode 100644 index de6321fed..000000000 --- a/packages/xpub-ui/src/molecules/Files.js +++ /dev/null @@ -1,99 +0,0 @@ -import React from 'react' -import classes from './Files.local.scss' -import Upload from './Upload' - -class Files extends React.Component { - constructor(props) { - super(props) - - this.state = { - values: props.value || [], - uploads: [], - } - } - - handleClick = () => { - this.fileInput.click() - } - - handleChange = event => { - const { uploads } = this.state - - Array.from(event.target.files).forEach(file => { - uploads.push({ - file, - request: this.props.uploadFile(file), - }) - }) - - this.setState({ uploads }) - } - - handleUploadedFile = ({ file, url }) => { - const values = this.state.values.concat({ - name: file.name, - url, - }) - - const uploads = this.state.uploads.filter( - item => item.file.name !== file.name, - ) - - this.setState({ values, uploads }) - - this.props.onChange(values) - } - - render() { - const { - name, - buttonText, - uploadingFile, - uploadedFile, - readonly, - } = this.props - const { values, uploads } = this.state - - return ( - <div className={classes.root}> - {!readonly && ( - <div className={classes.upload}> - <button - className={classes.attach} - onClick={() => this.fileInput.click()} - type="button" - > - {buttonText} - </button> - - <input - className={classes.input} - multiple - name={name} - onChange={this.handleChange} - ref={input => (this.fileInput = input)} - type="file" - /> - </div> - )} - - <div className={classes.files}> - {uploads && - uploads.map(upload => ( - <Upload - file={upload.file} - handleUploadedFile={this.handleUploadedFile} - key={upload.file.name} - render={uploadingFile} - request={upload.request} - /> - ))} - - {values && values.map(uploadedFile)} - </div> - </div> - ) - } -} - -export default Files diff --git a/packages/xpub-ui/src/molecules/Files.local.scss b/packages/xpub-ui/src/molecules/Files.local.scss deleted file mode 100644 index b6e58a85f..000000000 --- a/packages/xpub-ui/src/molecules/Files.local.scss +++ /dev/null @@ -1,34 +0,0 @@ -.input { - display: none; -} - -.button { - background: transparent; - border: 1px dashed grey; - cursor: pointer; - font-family: inherit; - font-size: inherit; - margin-bottom: 2em; - padding: 10px; -} - -.button:hover { - border-color: var(--color-primary); - color: var(--color-primary); -} - -.files { - font-size: 0.9em; - font-style: italic; - line-height: 1.5; -} - -.attach { - background: transparent; - border: 1px dashed grey; - cursor: pointer; - font-family: inherit; - font-size: inherit; - margin-bottom: 2em; - padding: 10px; -} diff --git a/packages/xpub-ui/src/molecules/Files.md b/packages/xpub-ui/src/molecules/Files.md deleted file mode 100644 index c13062d66..000000000 --- a/packages/xpub-ui/src/molecules/Files.md +++ /dev/null @@ -1,22 +0,0 @@ -A list of uploaded files, a list of uploading files and a button to upload more files. - -```js -const file = () => ({ - name: faker.system.commonFileName(), - type: faker.system.commonFileType(), - size: faker.random.number(), -}); - -const value = [ - file(), - file(), - file() -]; - -<Files - value={value} - buttonText="↑ Choose a file to upload" - uploadingFile={({ file, progress, error }) => <div style={{color:'gray'}}>{file.name}</div>} - uploadedFile={value => <div>{value.name}</div>} - uploadFile={file => new XMLHttpRequest()}/> -``` diff --git a/packages/xpub-ui/src/molecules/PlainButton.js b/packages/xpub-ui/src/molecules/PlainButton.js deleted file mode 100644 index dc7179090..000000000 --- a/packages/xpub-ui/src/molecules/PlainButton.js +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react' -import classnames from 'classnames' -import Button from '../atoms/Button' -import classes from './PlainButton.local.scss' - -const PlainButton = ({ - className, - children, - type, - disabled, - primary, - onClick, -}) => ( - <Button - className={classnames(classes.root, className)} - disabled={disabled} - onClick={onClick} - primary={primary} - type={type} - > - {children} - </Button> -) - -export default PlainButton diff --git a/packages/xpub-ui/src/molecules/PlainButton.local.scss b/packages/xpub-ui/src/molecules/PlainButton.local.scss deleted file mode 100644 index 2b1967481..000000000 --- a/packages/xpub-ui/src/molecules/PlainButton.local.scss +++ /dev/null @@ -1,21 +0,0 @@ -.root.root { - background: none; - border: 0; - border-bottom: 2px solid #777; - font-style: italic; - letter-spacing: 0; - padding: 0; - text-transform: none; -} - -.root.root:hover, -.root.root:focus { - background: transparent; - border: 0; - border-bottom: 2px solid var(--color-primary); - color: var(--color-primary); -} - -.root.root:active { - transform: scale(0.99); -} diff --git a/packages/xpub-ui/src/molecules/PlainButton.md b/packages/xpub-ui/src/molecules/PlainButton.md deleted file mode 100644 index 97f05703c..000000000 --- a/packages/xpub-ui/src/molecules/PlainButton.md +++ /dev/null @@ -1,5 +0,0 @@ -A button that is styled as a link. - -```js -<PlainButton>Take me back.</PlainButton> -``` diff --git a/packages/xpub-ui/src/molecules/RadioGroup.js b/packages/xpub-ui/src/molecules/RadioGroup.js deleted file mode 100644 index 381852a8d..000000000 --- a/packages/xpub-ui/src/molecules/RadioGroup.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react' -import Radio from '../atoms/Radio' - -class RadioGroup extends React.Component { - constructor(props) { - super(props) - - this.state = { - value: props.value, - } - } - - handleChange = event => { - const { value } = event.target - this.setState({ value }) - this.props.onChange(value) - } - - render() { - const { inline, name, options, required, readonly } = this.props - const { value } = this.state - - return ( - <div> - {options.map(option => ( - <Radio - checked={option.value === value} - color={option.color} - inline={inline} - key={option.value} - label={option.label} - name={name} - onChange={this.handleChange} - readonly={readonly} - required={required} - value={option.value} - /> - ))} - </div> - ) - } -} - -export default RadioGroup diff --git a/packages/xpub-ui/src/molecules/RadioGroup.md b/packages/xpub-ui/src/molecules/RadioGroup.md deleted file mode 100644 index 1a753db59..000000000 --- a/packages/xpub-ui/src/molecules/RadioGroup.md +++ /dev/null @@ -1,48 +0,0 @@ -A group of radio buttons. - -```js -const options = [ - { - value: 'one', - label: 'One' - }, - { - value: 'two', - label: 'Two' - }, - { - value: 'three', - label: 'Three' - } -]; - -<RadioGroup - options={options} - name="radiogroup" - onChange={value => console.log(value)}/> -``` - -The buttons can be displayed inline - -```js -const options = [ - { - value: 'one', - label: 'One' - }, - { - value: 'two', - label: 'Two' - }, - { - value: 'three', - label: 'Three' - } -]; - -<RadioGroup - options={options} - name="radiogroup-inline" - inline={true} - onChange={value => console.log(value)}/> -``` diff --git a/packages/xpub-ui/src/molecules/Supplementary.js b/packages/xpub-ui/src/molecules/Supplementary.js deleted file mode 100644 index b876ff92e..000000000 --- a/packages/xpub-ui/src/molecules/Supplementary.js +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react' -import Files from './Files' -import UploadingFile from '../atoms/UploadingFile' -import File from '../atoms/File' - -const Supplementary = props => ( - <Files - {...props} - buttonText="↑ Upload files" - uploadedFile={value => <File key={value.url} value={value} />} - uploadingFile={({ file, progress, error }) => ( - <UploadingFile - error={error} - file={file} - key={file.name} - progress={progress} - /> - )} - /> -) - -export default Supplementary diff --git a/packages/xpub-ui/src/molecules/Supplementary.md b/packages/xpub-ui/src/molecules/Supplementary.md deleted file mode 100644 index c95a11fb4..000000000 --- a/packages/xpub-ui/src/molecules/Supplementary.md +++ /dev/null @@ -1,18 +0,0 @@ -A list of supplementary files, and a button to upload a new file. - -```js -const value = [ - { - name: faker.system.commonFileName(), - url: faker.internet.url() - }, - { - name: faker.system.commonFileName(), - url: faker.internet.url() - } -]; - -<Supplementary - value={value} - uploadFile={file => new XMLHttpRequest()}/> -``` diff --git a/packages/xpub-ui/src/molecules/Upload.js b/packages/xpub-ui/src/molecules/Upload.js deleted file mode 100644 index cb1e244ba..000000000 --- a/packages/xpub-ui/src/molecules/Upload.js +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react' - -// TODO: retry on error -// TODO: make this a HOC for <UploadingFile>? - -class Upload extends React.Component { - state = { - error: undefined, - progress: 0, - } - - componentDidMount() { - const { request } = this.props - - request.addEventListener('progress', this.handleProgress) - request.addEventListener('load', this.handleLoad) - request.addEventListener('error', this.handleError) - request.addEventListener('abort', this.handleAbort) - } - - // TODO: 'progress' event not being fired often enough? - handleProgress = event => { - if (!event.lengthComputable) return - - this.setState({ - progress: event.loaded / event.total, - }) - } - - handleLoad = event => { - if (this.props.request.status === 200) { - this.setState({ - progress: 1, - }) - - this.props.handleUploadedFile({ - file: this.props.file, - url: this.props.request.responseText, - }) - } else { - this.setState({ - error: 'There was an error', - }) - } - } - - handleError = event => { - this.setState({ - error: 'There was an error', - }) - } - - handleAbort = event => { - this.setState({ - error: 'The upload was cancelled', - }) - } - - render() { - const { file, render } = this.props - const { progress, error } = this.state - - return render({ file, progress, error }) - } -} - -export default Upload diff --git a/packages/xpub-ui/src/molecules/YesOrNo.js b/packages/xpub-ui/src/molecules/YesOrNo.js deleted file mode 100644 index 91ac8b3f9..000000000 --- a/packages/xpub-ui/src/molecules/YesOrNo.js +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react' -import RadioGroup from './RadioGroup' -import classes from './YesOrNo.local.scss' - -const options = [ - { - label: 'Yes', - value: 'yes', - }, - { - label: 'No', - value: 'no', - }, -] - -const YesOrNo = ({ name, value, required, onChange, readonly }) => ( - <RadioGroup - className={classes.root} - inline - name={name} - onChange={onChange} - options={options} - readonly={readonly} - required={required} - value={value} - /> -) - -export default YesOrNo diff --git a/packages/xpub-ui/src/molecules/YesOrNo.local.scss b/packages/xpub-ui/src/molecules/YesOrNo.local.scss deleted file mode 100644 index 46dab1801..000000000 --- a/packages/xpub-ui/src/molecules/YesOrNo.local.scss +++ /dev/null @@ -1,3 +0,0 @@ -.root { - color: darkgreen; -} diff --git a/packages/xpub-ui/src/molecules/YesOrNo.md b/packages/xpub-ui/src/molecules/YesOrNo.md deleted file mode 100644 index 1d410998e..000000000 --- a/packages/xpub-ui/src/molecules/YesOrNo.md +++ /dev/null @@ -1,17 +0,0 @@ -A group of radio buttons that provides just two options: "Yes" or "No" - -```js -<YesOrNo - name="yesorno" - onChange={value => console.log(value)}/> -``` - -If a value is set, one option is selected. - -```js -<YesOrNo - name="yesorno-value" - value="yes" - onChange={value => console.log(value)}/> -``` - diff --git a/packages/xpub-ui/styleguide.config.js b/packages/xpub-ui/styleguide.config.js deleted file mode 100644 index 8b14c4584..000000000 --- a/packages/xpub-ui/styleguide.config.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = { - context: { - faker: 'faker', - }, - sections: [ - { - content: 'docs/colors.md', - name: 'Colors', - }, - { - content: 'docs/fonts.md', - name: 'Fonts', - }, - { - components: 'src/atoms/*.js', - name: 'Atoms', - }, - { - components: 'src/molecules/*.js', - name: 'Molecules', - }, - ], - skipComponentsWithoutExample: true, - styleguideComponents: { - StyleGuideRenderer: require.resolve( - 'xpub-styleguide/src/components/StyleGuideRenderer', - ), - Wrapper: require.resolve('xpub-styleguide/src/components/Wrapper'), - }, - theme: { - color: { - link: 'cornflowerblue', - }, - fontFamily: { - base: '"Fira Sans", sans-serif', - }, - }, - title: 'xpub-ui style guide', -} diff --git a/packages/xpub-ui/test/AppBar.test.js b/packages/xpub-ui/test/AppBar.test.js deleted file mode 100644 index 25c7946b6..000000000 --- a/packages/xpub-ui/test/AppBar.test.js +++ /dev/null @@ -1,103 +0,0 @@ -import React from 'react' -import { shallow } from 'enzyme' -import { Link, MemoryRouter } from 'react-router-dom' -import renderer from 'react-test-renderer' - -import AppBar from '../src/molecules/AppBar' - -const props = { - brandLink: 'some link', - brandName: 'some brand', - loginLink: 'login link', - logoutLink: 'logout link', - userName: 'some name', -} - -function makeWrapper(extraProps = {}) { - return shallow( - <MemoryRouter> - <AppBar {...props} {...extraProps} /> - </MemoryRouter>, - ) - .dive() - .dive() -} - -describe('AppBar', () => { - test('Snapshot', () => { - const tree = renderer - .create( - <MemoryRouter> - <AppBar {...props} /> - </MemoryRouter>, - ) - .toJSON() - expect(tree).toMatchSnapshot() - }) - - test("Should link the brand to '/' if no brand link is given", () => { - const wrapper = makeWrapper({ brandLink: undefined }) - - const brand = wrapper.childAt(0) - expect(brand.prop('to')).toBe('/') - }) - - test('Should link the brand to the given prop', () => { - const wrapper = makeWrapper() - const brand = wrapper.childAt(0) - expect(brand.prop('to')).toBe(props.brandLink) - }) - - test('Should display the brand name', () => { - const wrapper = makeWrapper() - const brand = wrapper.childAt(0) - const brandName = brand.childAt(0) - - expect(brandName.text()).toBe(props.brandName) - }) - - test('Should not display the username if there is none given', () => { - const wrapper = makeWrapper({ userName: undefined }) - - const rightArea = wrapper.childAt(1) - - // If the username does not display, there is only child (login / logout) - expect(rightArea.children).toHaveLength(1) - }) - - test('Should display the username', () => { - const wrapper = makeWrapper() - const rightArea = wrapper.childAt(1) - expect(rightArea.children()).toHaveLength(2) - - const userName = rightArea.childAt(0) - expect(userName.text()).toBe('<Icon />some name') - }) - - test('Should display the login link if no username is given', () => { - const wrapper = makeWrapper({ userName: undefined }) - - const rightArea = wrapper.childAt(1) - const logLink = rightArea.childAt(0) // first el if there is no username - - expect(logLink.is(Link)).toBeTruthy() - expect(logLink.prop('to')).toBe(props.loginLink) - expect(logLink.children()).toHaveLength(1) - - const logLinkText = logLink.childAt(0) - expect(logLinkText.text()).toBe('login') - }) - - test('Should display the logout link if a username is found', () => { - const wrapper = makeWrapper() - const rightArea = wrapper.childAt(1) - const logLink = rightArea.childAt(1) // 2nd el if there is a username - - expect(logLink.is(Link)).toBeTruthy() - expect(logLink.prop('to')).toBe(props.logoutLink) - expect(logLink.children()).toHaveLength(1) - - const logLinkText = logLink.childAt(0) - expect(logLinkText.text()).toBe('logout') - }) -}) diff --git a/packages/xpub-ui/test/Menu.test.js b/packages/xpub-ui/test/Menu.test.js deleted file mode 100644 index b71f3a4d4..000000000 --- a/packages/xpub-ui/test/Menu.test.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' -import { shallow } from 'enzyme' -import renderer from 'react-test-renderer' - -import Menu from '../src/atoms/Menu' - -const props = { - options: [{ label: 'Foo', value: 'foo' }, { label: 'Bar', value: 'bar' }], - value: 'foo', -} - -const wrapper = shallow(<Menu {...props} />) - -describe('Menu', () => { - test('Snapshot', () => { - const tree = renderer.create(<Menu {...props} />).toJSON() - expect(tree).toMatchSnapshot() - }) - - test('Renders a Menu', () => { - expect(wrapper.is('div')).toBeTruthy() - expect(wrapper).toHaveLength(1) - }) -}) diff --git a/packages/xpub-ui/test/Radio.test.js b/packages/xpub-ui/test/Radio.test.js deleted file mode 100644 index 35d330995..000000000 --- a/packages/xpub-ui/test/Radio.test.js +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import { shallow } from 'enzyme' -import renderer from 'react-test-renderer' - -import Radio from '../src/atoms/Radio' - -const props = { - checked: false, - label: 'TestLabel', - name: 'TestName', - required: true, - value: 'TestValue', -} - -const wrapper = shallow(<Radio {...props} />) - -describe('Radio', () => { - test('Snapshot', () => { - const tree = renderer.create(<Radio {...props} />).toJSON() - expect(tree).toMatchSnapshot() - }) - - test('Input gets the correct props', () => { - const input = wrapper.find('input') - - expect(input.prop('name')).toBe(props.name) - expect(input.prop('value')).toBe(props.value) - expect(input.prop('checked')).toBe(props.checked) - expect(input.prop('required')).toBe(props.required) - }) -}) diff --git a/packages/xpub-ui/test/RadioGroup.test.js b/packages/xpub-ui/test/RadioGroup.test.js deleted file mode 100644 index b6ff69ef3..000000000 --- a/packages/xpub-ui/test/RadioGroup.test.js +++ /dev/null @@ -1,110 +0,0 @@ -import React from 'react' -import { clone } from 'lodash' -import { shallow } from 'enzyme' -import renderer from 'react-test-renderer' - -import Radio from '../src/atoms/Radio' -import RadioGroup from '../src/molecules/RadioGroup' - -const props = { - name: 'TestName', - options: [ - { - label: 'Yes', - value: 'yes', - }, - { - label: 'No', - value: 'no', - }, - { - label: 'Maybe', - value: 'maybe', - }, - ], - required: true, - value: undefined, -} - -const wrapper = shallow(<RadioGroup {...props} />) -const radios = wrapper.find(Radio) - -describe('Radio Group', () => { - test('Snapshot', () => { - const tree = renderer.create(<RadioGroup {...props} />).toJSON() - expect(tree).toMatchSnapshot() - }) - - test('Renders a number of radio buttons', () => { - expect(wrapper.is('div')).toBeTruthy() - - const len = props.options.length - expect(wrapper.children()).toHaveLength(len) - - let i = 0 - - while (i < len) { - const child = wrapper.childAt(i) - expect(child.is(Radio)).toBeTruthy() - - i += 1 - } - - expect(radios).toHaveLength(len) - }) - - test('Radios get the correct props', () => { - const radioComps = radios.getElements() - let i = 0 - - while (i < props.options.length) { - const radio = radioComps[i] - const radioProps = radio.props - - expect(radioProps.label).toEqual(props.options[i].label) - expect(radioProps.value).toEqual(props.options[i].value) - expect(radioProps.name).toEqual(props.name) - expect(radioProps.required).toEqual(props.required) - - i += 1 - } - }) - - test('Value should match the checked radio button', () => { - // With no radio button selected - const radioComps = radios.getElements() - let i = 0 - - while (i < props.options.length) { - const radio = radioComps[i] - const radioProps = radio.props - - expect(radioProps.checked).toBeFalsy() - i += 1 - } - - // With the first radio button selected - // (re-initialise the wrapper with changed props) - const newProps = clone(props) - newProps.value = 'yes' - - const newWrapper = shallow(<RadioGroup {...newProps} />) - const newRadios = newWrapper.find(Radio) - const newRadioComps = newRadios.getElements() - - i = 0 - - while (i < props.options.length) { - const radio = newRadioComps[i] - const radioProps = radio.props - - if (i === 0) { - expect(radioProps.checked).toBeTruthy() - } else { - expect(radioProps.checked).toBeFalsy() - } - - i += 1 - } - }) -}) diff --git a/packages/xpub-ui/test/YesOrNo.test.js b/packages/xpub-ui/test/YesOrNo.test.js deleted file mode 100644 index b893b903c..000000000 --- a/packages/xpub-ui/test/YesOrNo.test.js +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react' -import { shallow } from 'enzyme' -import renderer from 'react-test-renderer' - -import YesOrNo from '../src/molecules/YesOrNo' -import RadioGroup from '../src/molecules/RadioGroup' - -const props = { - name: 'TestName', - value: 'Maybe', -} - -const wrapper = shallow(<YesOrNo {...props} />) -const radio = wrapper.find(RadioGroup) - -describe('Yes or No', () => { - test('Snapshot', () => { - const tree = renderer.create(<YesOrNo {...props} />).toJSON() - expect(tree).toMatchSnapshot() - }) - - test('Renders a RadioGroup', () => { - expect(wrapper.is('RadioGroup')).toBeTruthy() - expect(radio).toHaveLength(1) - }) - - test('Passes the correct options', () => { - const { options } = radio.props() - expect(options).toHaveLength(2) - - expect(options[0].value).toEqual('yes') - expect(options[0].label).toEqual('Yes') - - expect(options[1].value).toEqual('no') - expect(options[1].label).toEqual('No') - }) - - test('Passes down the correct name', () => { - const { name } = radio.props() - expect(name).toEqual(props.name) - }) - - test('Passes down the correct value', () => { - const { value } = radio.props() - expect(value).toEqual(props.value) - }) -}) diff --git a/packages/xpub-ui/test/__snapshots__/AppBar.test.js.snap b/packages/xpub-ui/test/__snapshots__/AppBar.test.js.snap deleted file mode 100644 index df74fa0cb..000000000 --- a/packages/xpub-ui/test/__snapshots__/AppBar.test.js.snap +++ /dev/null @@ -1,64 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`AppBar Snapshot 1`] = ` -<div - className="root" -> - <a - className="link logo" - href="some link" - onClick={[Function]} - > - some brand - </a> - <div - className="actions" - > - <span - className="item" - > - <span - className="root" - > - <svg - height={16} - viewBox="0 0 24 24" - width={16} - xmlns="http://www.w3.org/2000/svg" - > - <path - d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" - fill="none" - stroke="black" - strokeLinecap="round" - strokeLinejoin="round" - strokeWidth="2" - /> - <circle - cx="12" - cy="7" - fill="none" - r="4" - stroke="black" - strokeLinecap="round" - strokeLinejoin="round" - strokeWidth="2" - /> - </svg> - </span> - <span - className="username" - > - some name - </span> - </span> - <a - className="item link" - href="logout link" - onClick={[Function]} - > - logout - </a> - </div> -</div> -`; diff --git a/packages/xpub-ui/test/__snapshots__/Menu.test.js.snap b/packages/xpub-ui/test/__snapshots__/Menu.test.js.snap deleted file mode 100644 index dfbe9ad31..000000000 --- a/packages/xpub-ui/test/__snapshots__/Menu.test.js.snap +++ /dev/null @@ -1,33 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Menu Snapshot 1`] = ` -<div - className="root" -> - <div - className="main" - > - <div - className="openerContainer" - > - <button - className="opener" - onClick={[Function]} - type="button" - > - <span> - Foo - </span> - <span - className="arrow" - > - ▼ - </span> - </button> - </div> - <div - className="optionsContainer" - /> - </div> -</div> -`; diff --git a/packages/xpub-ui/test/__snapshots__/Radio.test.js.snap b/packages/xpub-ui/test/__snapshots__/Radio.test.js.snap deleted file mode 100644 index 523244afc..000000000 --- a/packages/xpub-ui/test/__snapshots__/Radio.test.js.snap +++ /dev/null @@ -1,38 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Radio Snapshot 1`] = ` -<label - className="root" - style={ - Object { - "color": "black", - } - } -> - <input - checked={false} - className="input" - disabled={undefined} - name="TestName" - onChange={undefined} - required={true} - type="radio" - value="TestValue" - /> - <span - className="pseudoInput" - style={ - Object { - "background": "transparent", - } - } - > - - </span> - <span - className="label" - > - TestLabel - </span> -</label> -`; diff --git a/packages/xpub-ui/test/__snapshots__/RadioGroup.test.js.snap b/packages/xpub-ui/test/__snapshots__/RadioGroup.test.js.snap deleted file mode 100644 index 349310db8..000000000 --- a/packages/xpub-ui/test/__snapshots__/RadioGroup.test.js.snap +++ /dev/null @@ -1,108 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Radio Group Snapshot 1`] = ` -<div> - <label - className="root" - style={ - Object { - "color": "black", - } - } - > - <input - checked={false} - className="input" - disabled={undefined} - name="TestName" - onChange={[Function]} - required={true} - type="radio" - value="yes" - /> - <span - className="pseudoInput" - style={ - Object { - "background": "transparent", - } - } - > - - </span> - <span - className="label" - > - Yes - </span> - </label> - <label - className="root" - style={ - Object { - "color": "black", - } - } - > - <input - checked={false} - className="input" - disabled={undefined} - name="TestName" - onChange={[Function]} - required={true} - type="radio" - value="no" - /> - <span - className="pseudoInput" - style={ - Object { - "background": "transparent", - } - } - > - - </span> - <span - className="label" - > - No - </span> - </label> - <label - className="root" - style={ - Object { - "color": "black", - } - } - > - <input - checked={false} - className="input" - disabled={undefined} - name="TestName" - onChange={[Function]} - required={true} - type="radio" - value="maybe" - /> - <span - className="pseudoInput" - style={ - Object { - "background": "transparent", - } - } - > - - </span> - <span - className="label" - > - Maybe - </span> - </label> -</div> -`; diff --git a/packages/xpub-ui/test/__snapshots__/YesOrNo.test.js.snap b/packages/xpub-ui/test/__snapshots__/YesOrNo.test.js.snap deleted file mode 100644 index 07bff3f16..000000000 --- a/packages/xpub-ui/test/__snapshots__/YesOrNo.test.js.snap +++ /dev/null @@ -1,74 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Yes or No Snapshot 1`] = ` -<div> - <label - className="root inline" - style={ - Object { - "color": "black", - } - } - > - <input - checked={false} - className="input" - disabled={undefined} - name="TestName" - onChange={[Function]} - required={undefined} - type="radio" - value="yes" - /> - <span - className="pseudoInput" - style={ - Object { - "background": "transparent", - } - } - > - - </span> - <span - className="label" - > - Yes - </span> - </label> - <label - className="root inline" - style={ - Object { - "color": "black", - } - } - > - <input - checked={false} - className="input" - disabled={undefined} - name="TestName" - onChange={[Function]} - required={undefined} - type="radio" - value="no" - /> - <span - className="pseudoInput" - style={ - Object { - "background": "transparent", - } - } - > - - </span> - <span - className="label" - > - No - </span> - </label> -</div> -`; diff --git a/packages/xpub-ui/test/config/transform.js b/packages/xpub-ui/test/config/transform.js deleted file mode 100644 index 7cc533c7f..000000000 --- a/packages/xpub-ui/test/config/transform.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require('babel-jest').createTransformer({ - presets: ['env', 'react', 'stage-2'], -}) diff --git a/packages/xpub-ui/test/setup/enzyme.js b/packages/xpub-ui/test/setup/enzyme.js deleted file mode 100644 index 7ae191afc..000000000 --- a/packages/xpub-ui/test/setup/enzyme.js +++ /dev/null @@ -1,4 +0,0 @@ -import Enzyme from 'enzyme' -import Adapter from 'enzyme-adapter-react-15' - -Enzyme.configure({ adapter: new Adapter() }) diff --git a/packages/xpub-ui/webpack.config.js b/packages/xpub-ui/webpack.config.js deleted file mode 100644 index 4aa149ad2..000000000 --- a/packages/xpub-ui/webpack.config.js +++ /dev/null @@ -1,3 +0,0 @@ -const webpackConfig = require('xpub-styleguide/src/webpack-config') - -module.exports = webpackConfig(__dirname) diff --git a/yarn.lock b/yarn.lock index ef0c868d3..5540cc6ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -73,6 +73,27 @@ config "^1.26.2" joi "^10.6.0" +"@pubsweet/ui@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pubsweet/ui/-/ui-0.1.1.tgz#fdd6aaf85ff79de62ef6933ac90105a2b7cd8863" + dependencies: + babel-jest "^21.2.0" + classnames "^2.2.5" + enzyme "^3.2.0" + enzyme-adapter-react-15 "^1.0.5" + humps "^2.0.1" + lodash "^4.17.4" + prop-types "^15.5.10" + react "^15.6.1" + react-dom "^15.6.1" + react-feather "^1.0.7" + react-redux "^5.0.2" + react-router-dom "^4.2.2" + react-tag-autocomplete "^5.4.1" + recompose "^0.26.0" + redux "^3.6.0" + redux-form "^7.0.3" + "@types/node@*": version "8.0.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.55.tgz#015966c0af809216b8a46cc527b5c211994d36f0" @@ -84,10 +105,6 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -117,12 +134,6 @@ acorn-dynamic-import@^2.0.0: dependencies: acorn "^4.0.3" -acorn-globals@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" - dependencies: - acorn "^4.0.4" - acorn-jsx@^3.0.0, acorn-jsx@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" @@ -143,7 +154,7 @@ acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^4.0.3, acorn@^4.0.4: +acorn@^4.0.3: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" @@ -260,12 +271,6 @@ append-field@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/append-field/-/append-field-0.1.0.tgz#6ddc58fa083c7bc545d3c5995b2830cc2366d44a" -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -303,10 +308,6 @@ arr-flatten@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - array-filter@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" @@ -429,10 +430,6 @@ ast-types@^0.9.13: version "0.9.14" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.14.tgz#d34ba5dffb9d15a44351fd2a9d82e4ab2838b5ba" -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -539,7 +536,7 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.0.0, babel-core@^6.26.0: +babel-core@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" dependencies: @@ -1389,12 +1386,6 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" -browser-resolve@^1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" - dependencies: - resolve "1.1.7" - browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" @@ -1461,12 +1452,6 @@ browserslist@^2.1.2, browserslist@^2.9.1: caniuse-lite "^1.0.30000780" electron-to-chromium "^1.3.28" -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - dependencies: - node-int64 "^0.4.0" - buble@^0.15.2: version "0.15.2" resolved "https://registry.yarnpkg.com/buble/-/buble-0.15.2.tgz#547fc47483f8e5e8176d82aa5ebccb183b02d613" @@ -1578,10 +1563,6 @@ callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - camel-case@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" @@ -2056,10 +2037,6 @@ content-security-policy-builder@1.1.0: dependencies: dashify "^0.2.0" -content-type-parser@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" - content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" @@ -2209,7 +2186,7 @@ conventional-recommended-bump@^1.0.1: meow "^3.3.0" object-assign "^4.0.1" -convert-source-map@^1.4.0, convert-source-map@^1.5.0: +convert-source-map@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -2460,16 +2437,6 @@ csso@~2.3.1: clap "^1.0.9" source-map "^0.5.3" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" - -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - dependencies: - cssom "0.3.x" - currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2579,12 +2546,6 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -2693,10 +2654,6 @@ dicer@0.2.5: readable-stream "1.1.x" streamsearch "0.1.2" -diff@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" - diffie-hellman@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" @@ -3100,7 +3057,7 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@^1.6.1, escodegen@^1.9.0: +escodegen@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" dependencies: @@ -3390,12 +3347,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -exec-sh@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" - dependencies: - merge "^1.1.3" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -3462,17 +3413,6 @@ expect-ct@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/expect-ct/-/expect-ct-0.1.0.tgz#52735678de18530890d8d7b95f0ac63640958094" -expect@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-21.2.1.tgz#003ac2ac7005c3c29e73b38a272d4afadd6d1d7b" - dependencies: - ansi-styles "^3.2.0" - jest-diff "^21.2.1" - jest-get-type "^21.2.0" - jest-matcher-utils "^21.2.1" - jest-message-util "^21.2.1" - jest-regex-util "^21.2.0" - express@^4.15.3, express@^4.16.1, express@^4.16.2: version "4.16.2" resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" @@ -3596,12 +3536,6 @@ faye-websocket@~0.11.0: dependencies: websocket-driver ">=0.5.1" -fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - dependencies: - bser "^2.0.0" - fbjs@^0.8.1, fbjs@^0.8.16, fbjs@^0.8.9: version "0.8.16" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" @@ -3645,13 +3579,6 @@ filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - filesize@3.5.10: version "3.5.10" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.10.tgz#fc8fa23ddb4ef9e5e0ab6e1e64f679a24a56761f" @@ -3824,7 +3751,7 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0, fsevents@^1.1.1: +fsevents@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" dependencies: @@ -4031,7 +3958,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -"glob@3 || 4 || 5 || 6 || 7", glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: +"glob@3 || 4 || 5 || 6 || 7", glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -4169,10 +4096,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - gzip-size@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" @@ -4183,7 +4106,7 @@ handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" -handlebars@^4.0.2, handlebars@^4.0.3: +handlebars@^4.0.2: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -4224,10 +4147,6 @@ har-validator@~5.0.3: ajv "^5.1.0" har-schema "^2.0.0" -harmony-reflect@^1.4.6: - version "1.5.1" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.5.1.tgz#b54ca617b00cc8aef559bbb17b3d85431dc7e329" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -4419,12 +4338,6 @@ html-comment-regex@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" -html-encoding-sniffer@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - dependencies: - whatwg-encoding "^1.0.1" - html-entities@1.2.1, html-entities@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" @@ -4571,12 +4484,6 @@ icss-utils@^2.1.0: dependencies: postcss "^6.0.1" -identity-obj-proxy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - dependencies: - harmony-reflect "^1.4.6" - ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" @@ -5125,33 +5032,11 @@ isstream@0.1.x, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-api@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620" - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-hook "^1.1.0" - istanbul-lib-instrument "^1.9.1" - istanbul-lib-report "^1.1.2" - istanbul-lib-source-maps "^1.2.2" - istanbul-reports "^1.1.3" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: +istanbul-lib-coverage@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" -istanbul-lib-hook@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.9.1: +istanbul-lib-instrument@^1.7.5: version "1.9.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" dependencies: @@ -5163,31 +5048,6 @@ istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-ins istanbul-lib-coverage "^1.1.1" semver "^5.3.0" -istanbul-lib-report@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" - dependencies: - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" - dependencies: - handlebars "^4.0.3" - items@2.x.x: version "2.1.1" resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" @@ -5196,217 +5056,15 @@ javascript-stringify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" -jest-changed-files@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.2.0.tgz#5dbeecad42f5d88b482334902ce1cba6d9798d29" - dependencies: - throat "^4.0.0" - -jest-cli@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-21.2.1.tgz#9c528b6629d651911138d228bdb033c157ec8c00" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - istanbul-api "^1.1.1" - istanbul-lib-coverage "^1.0.1" - istanbul-lib-instrument "^1.4.2" - istanbul-lib-source-maps "^1.1.0" - jest-changed-files "^21.2.0" - jest-config "^21.2.1" - jest-environment-jsdom "^21.2.1" - jest-haste-map "^21.2.0" - jest-message-util "^21.2.1" - jest-regex-util "^21.2.0" - jest-resolve-dependencies "^21.2.0" - jest-runner "^21.2.1" - jest-runtime "^21.2.1" - jest-snapshot "^21.2.1" - jest-util "^21.2.1" - micromatch "^2.3.11" - node-notifier "^5.0.2" - pify "^3.0.0" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - worker-farm "^1.3.1" - yargs "^9.0.0" - -jest-config@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-21.2.1.tgz#c7586c79ead0bcc1f38c401e55f964f13bf2a480" - dependencies: - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^21.2.1" - jest-environment-node "^21.2.1" - jest-get-type "^21.2.0" - jest-jasmine2 "^21.2.1" - jest-regex-util "^21.2.0" - jest-resolve "^21.2.0" - jest-util "^21.2.1" - jest-validate "^21.2.1" - pretty-format "^21.2.1" - -jest-diff@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.2.1.tgz#46cccb6cab2d02ce98bc314011764bb95b065b4f" - dependencies: - chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^21.2.0" - pretty-format "^21.2.1" - -jest-docblock@^21.0.0, jest-docblock@^21.2.0: +jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" -jest-environment-jsdom@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz#38d9980c8259b2a608ec232deee6289a60d9d5b4" - dependencies: - jest-mock "^21.2.0" - jest-util "^21.2.1" - jsdom "^9.12.0" - -jest-environment-node@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-21.2.1.tgz#98c67df5663c7fbe20f6e792ac2272c740d3b8c8" - dependencies: - jest-mock "^21.2.0" - jest-util "^21.2.1" - jest-get-type@^21.2.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" -jest-haste-map@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-21.2.0.tgz#1363f0a8bb4338f24f001806571eff7a4b2ff3d8" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "^21.2.0" - micromatch "^2.3.11" - sane "^2.0.0" - worker-farm "^1.3.1" - -jest-jasmine2@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz#9cc6fc108accfa97efebce10c4308548a4ea7592" - dependencies: - chalk "^2.0.1" - expect "^21.2.1" - graceful-fs "^4.1.11" - jest-diff "^21.2.1" - jest-matcher-utils "^21.2.1" - jest-message-util "^21.2.1" - jest-snapshot "^21.2.1" - p-cancelable "^0.3.0" - -jest-matcher-utils@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz#72c826eaba41a093ac2b4565f865eb8475de0f64" - dependencies: - chalk "^2.0.1" - jest-get-type "^21.2.0" - pretty-format "^21.2.1" - -jest-message-util@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.2.1.tgz#bfe5d4692c84c827d1dcf41823795558f0a1acbe" - dependencies: - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - -jest-mock@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-21.2.0.tgz#7eb0770e7317968165f61ea2a7281131534b3c0f" - -jest-regex-util@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.2.0.tgz#1b1e33e63143babc3e0f2e6c9b5ba1eb34b2d530" - -jest-resolve-dependencies@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz#9e231e371e1a736a1ad4e4b9a843bc72bfe03d09" - dependencies: - jest-regex-util "^21.2.0" - -jest-resolve@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-21.2.0.tgz#068913ad2ba6a20218e5fd32471f3874005de3a6" - dependencies: - browser-resolve "^1.11.2" - chalk "^2.0.1" - is-builtin-module "^1.0.0" - -jest-runner@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-21.2.1.tgz#194732e3e518bfb3d7cbfc0fd5871246c7e1a467" - dependencies: - jest-config "^21.2.1" - jest-docblock "^21.2.0" - jest-haste-map "^21.2.0" - jest-jasmine2 "^21.2.1" - jest-message-util "^21.2.1" - jest-runtime "^21.2.1" - jest-util "^21.2.1" - pify "^3.0.0" - throat "^4.0.0" - worker-farm "^1.3.1" - -jest-runtime@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-21.2.1.tgz#99dce15309c670442eee2ebe1ff53a3cbdbbb73e" - dependencies: - babel-core "^6.0.0" - babel-jest "^21.2.0" - babel-plugin-istanbul "^4.0.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - graceful-fs "^4.1.11" - jest-config "^21.2.1" - jest-haste-map "^21.2.0" - jest-regex-util "^21.2.0" - jest-resolve "^21.2.0" - jest-util "^21.2.1" - json-stable-stringify "^1.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^9.0.0" - -jest-snapshot@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-21.2.1.tgz#29e49f16202416e47343e757e5eff948c07fd7b0" - dependencies: - chalk "^2.0.1" - jest-diff "^21.2.1" - jest-matcher-utils "^21.2.1" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^21.2.1" - -jest-util@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-21.2.1.tgz#a274b2f726b0897494d694a6c3d6a61ab819bb78" - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - jest-message-util "^21.2.1" - jest-mock "^21.2.0" - jest-validate "^21.2.1" - mkdirp "^0.5.1" - -jest-validate@^21.1.0, jest-validate@^21.2.1: +jest-validate@^21.1.0: version "21.2.1" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7" dependencies: @@ -5415,12 +5073,6 @@ jest-validate@^21.1.0, jest-validate@^21.2.1: leven "^2.1.0" pretty-format "^21.2.1" -jest@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-21.2.1.tgz#c964e0b47383768a1438e3ccf3c3d470327604e1" - dependencies: - jest-cli "^21.2.1" - joi-browser@^10.0.6: version "10.6.1" resolved "https://registry.yarnpkg.com/joi-browser/-/joi-browser-10.6.1.tgz#1cfc1a244c9242327842c24354d8ead1c2fe3571" @@ -5459,7 +5111,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.4.3, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: @@ -5477,30 +5129,6 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdom@^9.12.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" - dependencies: - abab "^1.0.3" - acorn "^4.0.4" - acorn-globals "^3.1.0" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - escodegen "^1.6.1" - html-encoding-sniffer "^1.0.1" - nwmatcher ">= 1.3.9 < 2.0.0" - parse5 "^1.5.1" - request "^2.79.0" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.2" - webidl-conversions "^4.0.0" - whatwg-encoding "^1.0.1" - whatwg-url "^4.3.0" - xml-name-validator "^2.0.1" - jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -6142,12 +5770,6 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - dependencies: - tmpl "1.0.x" - map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -6254,10 +5876,6 @@ merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" -merge@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -6347,7 +5965,7 @@ minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" -minimist@^1.1.1, minimist@^1.1.2, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.2, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -6551,10 +6169,6 @@ node-gyp@^3.0.3, node-gyp@^3.3.1: tar "^2.0.0" which "1" -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - node-libs-browser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" @@ -6602,15 +6216,6 @@ node-ninja@^1.0.1: tar "^2.0.0" which "1" -node-notifier@^5.0.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff" - dependencies: - growly "^1.3.0" - semver "^5.3.0" - shellwords "^0.1.0" - which "^1.2.12" - node-pre-gyp@0.6.36: version "0.6.36" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" @@ -6784,10 +6389,6 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -"nwmatcher@>= 1.3.9 < 2.0.0": - version "1.4.3" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" - oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -6979,10 +6580,6 @@ osenv@0, osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -7087,10 +6684,6 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - parse5@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" @@ -8617,13 +8210,6 @@ react-tag-autocomplete@^5.4.1: version "5.5.0" resolved "https://registry.yarnpkg.com/react-tag-autocomplete/-/react-tag-autocomplete-5.5.0.tgz#49841388b88323f6bccb0c10039bd0252875b49f" -react-test-renderer@^15.6.1: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.6.2.tgz#d0333434fc2c438092696ca770da5ed48037efa8" - dependencies: - fbjs "^0.8.9" - object-assign "^4.1.0" - react@^15.4.4, react@^15.6.1: version "15.6.2" resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72" @@ -9036,7 +8622,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@2, request@^2.79.0, request@^2.81.0, request@^2.83.0: +request@2, request@^2.81.0, request@^2.83.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: @@ -9214,10 +8800,6 @@ resolve-pathname@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - resolve@^1.2.0, resolve@^1.3.3: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" @@ -9312,20 +8894,6 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -sane@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.2.0.tgz#d6d2e2fcab00e3d283c93b912b7c3a20846f1d56" - dependencies: - anymatch "^1.3.0" - exec-sh "^0.2.0" - fb-watchman "^2.0.0" - minimatch "^3.0.2" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.1.1" - sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" @@ -9345,7 +8913,7 @@ sass-loader@^6.0.6: lodash.tail "^4.1.1" pify "^3.0.0" -sax@^1.2.1, sax@~1.2.1: +sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -9482,10 +9050,6 @@ shell-quote@1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" -shellwords@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -9761,13 +9325,6 @@ strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - string-replace-loader@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string-replace-loader/-/string-replace-loader-1.3.0.tgz#1d404a7bf5e2ec21b08ffc76d89445fbe49bc01d" @@ -9833,16 +9390,16 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-bom@3.0.0, strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -9987,7 +9544,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.2, supports-color@^3.2.3: +supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: @@ -10023,10 +9580,6 @@ symbol-observable@^1.0.3, symbol-observable@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32" -symbol-tree@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - table@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -10128,10 +9681,6 @@ text-table@0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - through2@2.0.3, through2@^2.0.0, through2@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -10174,10 +9723,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -10285,16 +9830,12 @@ toposort@^1.0.0: version "1.0.6" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" -tough-cookie@>=2.3.3, tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - trim-left-x@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/trim-left-x/-/trim-left-x-3.0.0.tgz#356cf055896726b9754425e841398842e90b4cdf" @@ -10748,25 +10289,12 @@ w3c-keyname@^1.1.0: version "1.1.8" resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-1.1.8.tgz#4e2219663760fd6535b7a1550f1552d71fc9372c" -walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - dependencies: - makeerror "1.0.x" - warning@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" dependencies: loose-envify "^1.0.0" -watch@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - watchpack@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" @@ -10805,14 +10333,6 @@ wcwidth@^1.0.0: dependencies: defaults "^1.0.3" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - -webidl-conversions@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - webpack-dev-middleware@^1.11.0, webpack-dev-middleware@^1.12.0: version "1.12.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e" @@ -10919,23 +10439,10 @@ websocket-extensions@>=0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" -whatwg-encoding@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" - dependencies: - iconv-lite "0.4.19" - whatwg-fetch@>=0.10.0: version "2.0.3" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" -whatwg-url@^4.3.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" @@ -10948,7 +10455,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1, which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9: +which@1, which@^1.2.10, which@^1.2.14, which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: @@ -11026,7 +10533,7 @@ wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" -worker-farm@^1.3.1, worker-farm@^1.4.1: +worker-farm@^1.4.1: version "1.5.2" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" dependencies: @@ -11044,7 +10551,7 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" dependencies: @@ -11098,10 +10605,6 @@ xml-char-classes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" -xml-name-validator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -11186,24 +10689,6 @@ yargs@^8.0.2: y18n "^3.2.1" yargs-parser "^7.0.0" -yargs@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" -- GitLab