From c409091fb39a22f7ce72687a92991a120b200753 Mon Sep 17 00:00:00 2001 From: Lars Tadema Date: Thu, 2 Nov 2017 15:58:16 +0100 Subject: [PATCH 1/7] Fixed bug in unmounting of media listeners. (#935) --- src/media/index.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/media/index.jsx b/src/media/index.jsx index b9515b09..b1760384 100644 --- a/src/media/index.jsx +++ b/src/media/index.jsx @@ -41,7 +41,9 @@ class Media extends Component { } componentWillUnmount() { - this.mediaQueryList.removeListener(this.updateMatches); + forEach(this.mediaQueryList, (value, key) => { + this.mediaQueryList[key].removeListener(this.updateMatches); + }); } updateMatches = () => { From c5429cb94ac0e77a0359c4e7083781741db93354 Mon Sep 17 00:00:00 2001 From: Sjaak Luthart Date: Fri, 3 Nov 2017 09:00:02 +0100 Subject: [PATCH 2/7] Update dev dependencies (#933) * Updated react-docgen. * Docgen. * Updated prettier. * Updated nyc. * Updated babel-cli. * Updated babel-eslint. --- docs/components.json | 475 ++++++++++++++++++++++++++++++++++++++++++- package.json | 10 +- 2 files changed, 470 insertions(+), 15 deletions(-) diff --git a/docs/components.json b/docs/components.json index b9f55698..ba946401 100644 --- a/docs/components.json +++ b/docs/components.json @@ -919,7 +919,114 @@ "components/commands/index.jsx": { "description": "Used for displaying a list of commands", "displayName": "Commands", - "methods": [], + "methods": [ + { + "name": "filterCommands", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "commands", + "type": null + }, + { + "name": "value", + "type": null + } + ], + "returns": null + }, + { + "name": "hideMenu", + "docblock": null, + "modifiers": [], + "params": [], + "returns": null + }, + { + "name": "handleClickOutside", + "docblock": null, + "modifiers": [], + "params": [], + "returns": null + }, + { + "name": "handleKeyDown", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "selectNext", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "selectPrevious", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "handleSelect", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + }, + { + "name": "command", + "type": null + }, + { + "name": "index", + "type": null + } + ], + "returns": null + }, + { + "name": "handleChange", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + }, + { + "name": "command", + "type": null + }, + { + "name": "index", + "type": null + } + ], + "returns": null + } + ], "props": { "header": { "type": { @@ -1177,7 +1284,20 @@ "components/dialog/index.jsx": { "description": "General purpose dialog", "displayName": "Dialog", - "methods": [], + "methods": [ + { + "name": "handleKeyUp", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + } + ], "props": { "header": { "type": { @@ -1308,7 +1428,138 @@ "components/emoji-filter/index.jsx": { "description": "Used for displaying a list of commands", "displayName": "EmojiFilter", - "methods": [], + "methods": [ + { + "name": "filterEmoji", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "value", + "type": null + }, + { + "name": "tone", + "type": null + } + ], + "returns": null + }, + { + "name": "hideMenu", + "docblock": null, + "modifiers": [], + "params": [], + "returns": null + }, + { + "name": "handleKeyDown", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "handleClickOutside", + "docblock": null, + "modifiers": [], + "params": [], + "returns": null + }, + { + "name": "selectNext", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "selectPrevious", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "changeTone", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "tone", + "type": null + } + ], + "returns": null + }, + { + "name": "parseHtml", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "html", + "type": null + } + ], + "returns": null + }, + { + "name": "handleSelect", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + }, + { + "name": "icon", + "type": null + }, + { + "name": "index", + "type": null + } + ], + "returns": null + }, + { + "name": "handleChange", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + }, + { + "name": "icon", + "type": null + }, + { + "name": "index", + "type": null + } + ], + "returns": null + } + ], "props": { "value": { "type": { @@ -1513,6 +1764,7 @@ }, "components/emoji-menu/emoji-modifiers.jsx": { "description": "", + "displayName": "EmojiModifiers", "methods": [], "props": { "modifiers": { @@ -1579,6 +1831,30 @@ "description": "Menu for sending messages with emoji", "displayName": "EmojiMenu", "methods": [ + { + "name": "handleClickOutside", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "handleKeyUp", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, { "name": "changeTone", "docblock": null, @@ -1832,7 +2108,27 @@ "components/gallery/index.jsx": { "description": "Justified grid layout for showcasing images.", "displayName": "Gallery", - "methods": [], + "methods": [ + { + "name": "showLightbox", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "item", + "type": null + } + ], + "returns": null + }, + { + "name": "hideLightbox", + "docblock": null, + "modifiers": [], + "params": [], + "returns": null + } + ], "props": { "items": { "type": { @@ -1959,6 +2255,18 @@ ], "returns": null }, + { + "name": "handleClickOutside", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, { "name": "applyCloseMenuToChildren", "docblock": null, @@ -1971,6 +2279,18 @@ ], "returns": null }, + { + "name": "handleKeyUp", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, { "name": "handleHeaderClick", "docblock": null, @@ -3426,7 +3746,20 @@ "components/input/index.jsx": { "description": "General purpose form input", "displayName": "Input", - "methods": [], + "methods": [ + { + "name": "handleChange", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + } + ], "props": { "onChange": { "type": { @@ -3621,7 +3954,20 @@ "components/lightbox/index.jsx": { "description": "Lightbox for images", "displayName": "Lightbox", - "methods": [], + "methods": [ + { + "name": "handleKeyUp", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + } + ], "props": { "style": { "type": { @@ -4043,7 +4389,15 @@ "components/media/index.jsx": { "description": "CSS media query component, listens to matches for given queries", "displayName": "Media", - "methods": [], + "methods": [ + { + "name": "updateMatches", + "docblock": null, + "modifiers": [], + "params": [], + "returns": null + } + ], "props": { "query": { "type": { @@ -4067,7 +4421,27 @@ "components/menu/index.jsx": { "description": "Menu that slides in from the left", "displayName": "Menu", - "methods": [], + "methods": [ + { + "name": "handleKeyUp", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "renderNav", + "docblock": null, + "modifiers": [], + "params": [], + "returns": null + } + ], "props": { "children": { "type": { @@ -4775,7 +5149,44 @@ "components/message-input/index.jsx": { "description": "Message input with send button", "displayName": "MessageInput", - "methods": [], + "methods": [ + { + "name": "handleChange", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "handleKeyDown", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + }, + { + "name": "handleMessageSend", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null + } + ], "props": { "onChange": { "type": { @@ -5171,7 +5582,32 @@ "components/pagination/index.jsx": { "description": "Navigate through large sets of data", "displayName": "Pagination", - "methods": [], + "methods": [ + { + "name": "setPage", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + }, + { + "name": "page", + "type": null + }, + { + "name": "list", + "type": null + }, + { + "name": "pageSize", + "type": null + } + ], + "returns": null + } + ], "props": { "list": { "type": { @@ -6088,6 +6524,25 @@ "modifiers": [], "params": [], "returns": null + }, + { + "name": "handleClickOutside", + "docblock": null, + "modifiers": [], + "params": [], + "returns": null + }, + { + "name": "handleKeyUp", + "docblock": null, + "modifiers": [], + "params": [ + { + "name": "event", + "type": null + } + ], + "returns": null } ], "props": { diff --git a/package.json b/package.json index c8ea76b1..ba815d30 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,8 @@ }, "homepage": "https://github.com/anchorchat/anchor-ui#readme", "devDependencies": { - "babel-cli": "^6.18.0", - "babel-eslint": "^7.1.1", + "babel-cli": "^6.26.0", + "babel-eslint": "^8.0.1", "babel-plugin-add-module-exports": "^0.2.1", "babel-preset-es2015": "^6.18.0", "babel-preset-react": "^6.16.0", @@ -51,11 +51,11 @@ "eslint-plugin-mocha": "^4.8.0", "eslint-plugin-react": "^7.1.0", "mocha": "^3.2.0", - "nyc": "^10.1.2", - "prettier": "^1.4.4", + "nyc": "^11.3.0", + "prettier": "^1.7.4", "react": "^15.4.2", "react-addons-test-utils": "^15.4.2", - "react-docgen": "^2.14.0", + "react-docgen": "^2.19.0", "react-dom": "^15.4.2", "react-test-renderer": "^15.5.4", "rimraf": "^2.6.2", From d37158bbd9d74f45aff9044574d4ea9c5c8a85f9 Mon Sep 17 00:00:00 2001 From: Sjaak Luthart Date: Fri, 3 Nov 2017 19:05:27 +0100 Subject: [PATCH 3/7] Sjaak/docs code examples (#936) * Installed marked and prismjs. * Added markdown component. * Added styles. * Added detailed code example. * Added Markdown component to AdminBadge. * Refactored to new Markdown component. * Changed colors. * Added languages. * Refactored to new Markdown. * Refactored to Markdown component. * Added title to Markdown. * Removed fonts. * Added title. * Uninstalled react-markdown. * Indented file. * Removed prefixes. --- docs/package.json | 3 +- docs/src/assets/fonts/Lato/Lato-Bold.ttf | Bin 121788 -> 0 bytes docs/src/assets/fonts/Lato/Lato-Light.ttf | Bin 122524 -> 0 bytes docs/src/assets/fonts/Lato/Lato-Regular.ttf | Bin 120196 -> 0 bytes docs/src/components/admin-badge.jsx | 13 +- docs/src/components/alert.jsx | 13 +- docs/src/components/app-header.jsx | 13 +- docs/src/components/avatar.jsx | 13 +- docs/src/components/badge.jsx | 13 +- docs/src/components/button.jsx | 13 +- docs/src/components/card.jsx | 13 +- docs/src/components/channel-header.jsx | 13 +- docs/src/components/checkbox.jsx | 13 +- docs/src/components/commands/index.jsx | 13 +- docs/src/components/date-separator.jsx | 13 +- docs/src/components/dialog.jsx | 13 +- docs/src/components/divider.jsx | 13 +- docs/src/components/emoji-filter.jsx | 13 +- docs/src/components/emoji-menu.jsx | 13 +- docs/src/components/empty-state.jsx | 13 +- docs/src/components/gallery.jsx | 13 +- docs/src/components/home.jsx | 59 ++++++-- docs/src/components/icon-menu.jsx | 13 +- docs/src/components/icons.jsx | 14 +- docs/src/components/input.jsx | 13 +- docs/src/components/lightbox.jsx | 13 +- docs/src/components/list-item.jsx | 13 +- docs/src/components/list.jsx | 13 +- docs/src/components/loader.jsx | 13 +- docs/src/components/markdown.jsx | 93 ++++++++++++ docs/src/components/media.jsx | 11 +- docs/src/components/menu-item.jsx | 13 +- docs/src/components/menu.jsx | 13 +- docs/src/components/message-input/example.js | 42 ++++++ .../index.jsx} | 20 ++- docs/src/components/message-list.jsx | 13 +- docs/src/components/message.jsx | 61 ++++---- docs/src/components/modal.jsx | 13 +- docs/src/components/pagination.jsx | 13 +- docs/src/components/paper.jsx | 13 +- docs/src/components/pop-over.jsx | 13 +- docs/src/components/profile-card.jsx | 13 +- docs/src/components/profile.jsx | 13 +- docs/src/components/radio-button.jsx | 13 +- docs/src/components/search-box.jsx | 13 +- docs/src/components/select.jsx | 13 +- docs/src/components/slider.jsx | 13 +- docs/src/components/switch.jsx | 13 +- docs/src/components/table.jsx | 57 +++++++- docs/src/components/tabs.jsx | 22 ++- docs/src/components/theme-provider.jsx | 25 +++- docs/src/components/themeable.jsx | 99 +++++++------ docs/src/index.css | 44 +----- docs/src/index.js | 1 + docs/src/prism.css | 138 ++++++++++++++++++ 55 files changed, 777 insertions(+), 393 deletions(-) delete mode 100644 docs/src/assets/fonts/Lato/Lato-Bold.ttf delete mode 100644 docs/src/assets/fonts/Lato/Lato-Light.ttf delete mode 100644 docs/src/assets/fonts/Lato/Lato-Regular.ttf create mode 100644 docs/src/components/markdown.jsx create mode 100644 docs/src/components/message-input/example.js rename docs/src/components/{message-input.jsx => message-input/index.jsx} (83%) create mode 100644 docs/src/prism.css diff --git a/docs/package.json b/docs/package.json index 50bf27ce..aad6e1f3 100644 --- a/docs/package.json +++ b/docs/package.json @@ -47,12 +47,13 @@ "emojione": "^2.2.7", "escape-html": "^1.0.3", "lodash": "^4.17.4", + "marked": "^0.3.6", + "prismjs": "^1.8.3", "prop-types": "^15.5.6", "radium": "^0.19.1", "react": "^15.5.3", "react-dom": "^15.5.3", "react-jss": "^5.3.0", - "react-markdown": "^2.4.4", "react-router": "^3.0.2", "uuid": "^3.0.1" }, diff --git a/docs/src/assets/fonts/Lato/Lato-Bold.ttf b/docs/src/assets/fonts/Lato/Lato-Bold.ttf deleted file mode 100644 index 74343694e2b2114272f38b1124813b972cb592e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121788 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 diff --git a/docs/src/assets/fonts/Lato/Lato-Light.ttf b/docs/src/assets/fonts/Lato/Lato-Light.ttf deleted file mode 100644 index a958067a86f46b4b82b6b1ec43fa83f5875f3e43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122524 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

_@=QvuA-{V9(`#&VJ0E2Y!*g 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

ask~-O`^ssB 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 diff --git a/docs/src/assets/fonts/Lato/Lato-Regular.ttf b/docs/src/assets/fonts/Lato/Lato-Regular.ttf deleted file mode 100644 index 04ea8efb1367727b081dea87e63818be0a4d02f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120196 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�r(aJ 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 d3)lz{Xfc9M412p diff --git a/docs/src/components/admin-badge.jsx b/docs/src/components/admin-badge.jsx index fe8fe3af..a64f263b 100644 --- a/docs/src/components/admin-badge.jsx +++ b/docs/src/components/admin-badge.jsx @@ -1,12 +1,16 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import AdminBadge from '../../../dist/admin-badge'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import AdminBadge from \'anchor-ui/admin-badge\';'; +const usage = ` + \`\`\`js + import AdminBadge from 'anchor-ui/admin-badge'; + \`\`\` +`; const AdminBadgeDoc = () => { const componentData = _.find(components, component => component.displayName === 'AdminBadge'); @@ -28,10 +32,7 @@ const AdminBadgeDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/alert.jsx b/docs/src/components/alert.jsx index 8c8ce0c2..bc7f2fc8 100644 --- a/docs/src/components/alert.jsx +++ b/docs/src/components/alert.jsx @@ -1,12 +1,16 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Props from './props'; import Alert from '../../../dist/alert'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Alert from \'anchor-ui/alert\';'; +const usage = ` + \`\`\`js + import Alert from 'anchor-ui/alert'; + \`\`\` +`; const AlertDoc = () => { const componentData = _.find(components, component => component.displayName === 'Alert'); @@ -28,10 +32,7 @@ const AlertDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/app-header.jsx b/docs/src/components/app-header.jsx index 59b531b5..e4f6391f 100644 --- a/docs/src/components/app-header.jsx +++ b/docs/src/components/app-header.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import AppHeader from '../../../dist/app-header'; import Button from '../../../dist/button'; @@ -9,8 +8,13 @@ import Props from './props'; import components from '../../components.json'; import logo from '../assets/images/logo.svg'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import AppHeader from \'anchor-ui/app-header\';'; +const usage = ` + \`\`\`js + import AppHeader from 'anchor-ui/app-header'; + \`\`\` +`; const AppHeaderDoc = () => { const componentData = _.find(components, component => component.displayName === 'AppHeader'); @@ -32,10 +36,7 @@ const AppHeaderDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/avatar.jsx b/docs/src/components/avatar.jsx index a45d5a94..efd08f67 100644 --- a/docs/src/components/avatar.jsx +++ b/docs/src/components/avatar.jsx @@ -1,12 +1,16 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Avatar from '../../../dist/avatar'; import components from '../../components.json'; import Props from './props'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Avatar from \'anchor-ui/avatar\';'; +const usage = ` + \`\`\`js + import Avatar from 'anchor-ui/avatar'; + \`\`\` +`; const AvatarDoc = () => { const componentData = _.find(components, component => component.displayName === 'Avatar'); @@ -28,10 +32,7 @@ const AvatarDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/badge.jsx b/docs/src/components/badge.jsx index 95ebc262..078fa732 100644 --- a/docs/src/components/badge.jsx +++ b/docs/src/components/badge.jsx @@ -1,12 +1,16 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Badge from '../../../dist/badge'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Badge from \'anchor-ui/badge\';'; +const usage = ` + \`\`\`js + import Badge from 'anchor-ui/badge'; + \`\`\` +`; const BadgeDoc = () => { const componentData = _.find(components, component => component.displayName === 'Badge'); @@ -28,10 +32,7 @@ const BadgeDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/button.jsx b/docs/src/components/button.jsx index ca68e52f..d1bd48cc 100644 --- a/docs/src/components/button.jsx +++ b/docs/src/components/button.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import IconEmoji from '../../../dist/icons/icon-emoji'; import Button from '../../../dist/button'; @@ -7,8 +6,13 @@ import Props from './props'; import components from '../../components.json'; import colors from '../../../dist/settings/colors'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Button from \'anchor-ui/button\';'; +const usage = ` + \`\`\`js + import Button from 'anchor-ui/button'; + \`\`\` +`; const ButtonDoc = () => { const componentData = _.find(components, component => component.displayName === 'Button'); @@ -34,10 +38,7 @@ const ButtonDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/card.jsx b/docs/src/components/card.jsx index 8ac6f55c..bc3069a6 100644 --- a/docs/src/components/card.jsx +++ b/docs/src/components/card.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Card from '../../../dist/card'; import CardHeader from '../../../dist/card-header'; @@ -7,8 +6,13 @@ import CardContent from '../../../dist/card-content'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Card from \'anchor-ui/card\';'; +const usage = ` + \`\`\`js + import Card from 'anchor-ui/card'; + \`\`\` +`; const CardDoc = () => { const componentData = _.find(components, component => component.displayName === 'Card'); @@ -32,10 +36,7 @@ const CardDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/channel-header.jsx b/docs/src/components/channel-header.jsx index 45594e9b..4538f66a 100644 --- a/docs/src/components/channel-header.jsx +++ b/docs/src/components/channel-header.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import ChannelHeader from '../../../dist/channel-header'; import Button from '../../../dist/button'; @@ -8,8 +7,13 @@ import IconPeople from '../../../dist/icons/icon-people'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import ChannelHeader from \'anchor-ui/channel-header\';'; +const usage = ` + \`\`\`js + import ChannelHeader from 'anchor-ui/channel-header'; + \`\`\` +`; const ChannelHeaderDoc = () => { const componentData = _.find(components, component => component.displayName === 'ChannelHeader'); @@ -34,10 +38,7 @@ const ChannelHeaderDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/checkbox.jsx b/docs/src/components/checkbox.jsx index 9160f095..8aebe839 100644 --- a/docs/src/components/checkbox.jsx +++ b/docs/src/components/checkbox.jsx @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Checkbox from '../../../dist/checkbox'; import Divider from '../../../dist/divider'; @@ -7,8 +6,13 @@ import colors from '../../../dist/settings/colors'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Checkbox from \'anchor-ui/checkbox\';'; +const usage = ` + \`\`\`js + import Checkbox from 'anchor-ui/checkbox'; + \`\`\` +`; class CheckboxDoc extends Component { constructor() { @@ -65,10 +69,7 @@ class CheckboxDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/commands/index.jsx b/docs/src/components/commands/index.jsx index ac1505ed..9d82664b 100644 --- a/docs/src/components/commands/index.jsx +++ b/docs/src/components/commands/index.jsx @@ -1,12 +1,16 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Props from '../props'; import components from '../../../components.json'; import SlashCommands from './slash-commands'; import Mentions from './mentions'; +import Markdown from '../markdown'; -const usage = '```js\n import Commands from \'anchor-ui/commands\';'; +const usage = ` + \`\`\`js + import Commands from 'anchor-ui/commands'; + \`\`\` +`; const CommandsDoc = () => { const componentData = _.find(components, component => component.displayName === 'Commands'); @@ -18,10 +22,7 @@ const CommandsDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/date-separator.jsx b/docs/src/components/date-separator.jsx index 81698306..019e14fe 100644 --- a/docs/src/components/date-separator.jsx +++ b/docs/src/components/date-separator.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import addDays from 'date-fns/add_days'; import differenceInCalendarDays from 'date-fns/difference_in_calendar_days'; @@ -10,8 +9,13 @@ import components from '../../components.json'; import background from '../assets/images/channel-background.jpg'; import Paper from '../../../dist/paper'; import DateSeparator from '../../../dist/date-separator'; +import Markdown from './markdown'; -const usage = '```js\n import DateSeparator from \'anchor-ui/date-separator\';'; +const usage = ` + \`\`\`js + import DateSeparator from 'anchor-ui/date-separator'; + \`\`\` +`; const messages = [ { @@ -64,10 +68,7 @@ const DateSeparatorDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/dialog.jsx b/docs/src/components/dialog.jsx index b87959b6..6858cdda 100644 --- a/docs/src/components/dialog.jsx +++ b/docs/src/components/dialog.jsx @@ -1,13 +1,17 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Dialog from '../../../dist/dialog'; import Button from '../../../dist/button'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Dialog from \'anchor-ui/dialog\';'; +const usage = ` + \`\`\`js + import Dialog from 'anchor-ui/dialog'; + \`\`\` +`; class DialogDoc extends Component { constructor() { @@ -47,10 +51,7 @@ class DialogDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/divider.jsx b/docs/src/components/divider.jsx index b6298aa2..2a607861 100644 --- a/docs/src/components/divider.jsx +++ b/docs/src/components/divider.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Divider from '../../../dist/divider'; import List from '../../../dist/list'; @@ -7,8 +6,13 @@ import ListItem from '../../../dist/list-item'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Divider from \'anchor-ui/divider\';'; +const usage = ` + \`\`\`js + import Divider from 'anchor-ui/divider'; + \`\`\` +`; const DividerDoc = () => { const componentData = _.find(components, component => component.displayName === 'Divider'); @@ -30,10 +34,7 @@ const DividerDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/emoji-filter.jsx b/docs/src/components/emoji-filter.jsx index 171d313e..b81daeb1 100644 --- a/docs/src/components/emoji-filter.jsx +++ b/docs/src/components/emoji-filter.jsx @@ -1,14 +1,18 @@ /* eslint no-console: [0] */ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import EmojiFilter from '../../../dist/emoji-filter'; import MessageInput from '../../../dist/message-input'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import EmojiFilter from \'anchor-ui/commands\';'; +const usage = ` + \`\`\`js + import EmojiFilter from 'anchor-ui/emoji-filter'; + \`\`\` +`; class EmojiFilterDoc extends Component { constructor() { @@ -95,10 +99,7 @@ class EmojiFilterDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/emoji-menu.jsx b/docs/src/components/emoji-menu.jsx index 5bc39e07..ef959090 100644 --- a/docs/src/components/emoji-menu.jsx +++ b/docs/src/components/emoji-menu.jsx @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import emojione from 'emojione'; import EmojiMenu from '../../../dist/emoji-menu'; @@ -7,8 +6,13 @@ import Button from '../../../dist/button'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import EmojiMenu from \'anchor-ui/emoji-menu\';'; +const usage = ` + \`\`\`js + import EmojiMenu from 'anchor-ui/emoji-menu'; + \`\`\` +`; class EmojiMenuDoc extends Component { static createMarkup = text => ({ @@ -55,10 +59,7 @@ class EmojiMenuDoc extends Component { > This component uses free Emoji icons supplied by EmojiOne -
-

Usage

- -
+

Examples

diff --git a/docs/src/components/empty-state.jsx b/docs/src/components/empty-state.jsx index 84c19b0e..80be0d89 100644 --- a/docs/src/components/empty-state.jsx +++ b/docs/src/components/empty-state.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import EmptyState from '../../../dist/empty-state'; import Button from '../../../dist/button'; @@ -7,8 +6,13 @@ import Props from './props'; import components from '../../components.json'; import emptyStateBackground from '../assets/images/empty_state_users.jpg'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import EmptyState from \'anchor-ui/empty-state\';'; +const usage = ` + \`\`\`js + import EmptyState from 'anchor-ui/empty-state'; + \`\`\` +`; const EmptyStateDoc = () => { const componentData = _.find(components, component => component.displayName === 'EmptyState'); @@ -41,10 +45,7 @@ const EmptyStateDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/gallery.jsx b/docs/src/components/gallery.jsx index efeb7db3..2405acdc 100644 --- a/docs/src/components/gallery.jsx +++ b/docs/src/components/gallery.jsx @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Gallery from '../../../dist/gallery'; import Props from './props'; @@ -7,8 +6,13 @@ import components from '../../components.json'; import Paper from '../../../dist/paper'; import Select from '../../../dist/select'; import MenuItem from '../../../dist/menu-item'; +import Markdown from './markdown'; -const usage = '```js\n import Gallery from \'anchor-ui/gallery\';'; +const usage = ` + \`\`\`js + import Gallery from 'anchor-ui/gallery'; + \`\`\` +`; const images = [ { @@ -90,10 +94,7 @@ class GalleryDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

Examples

diff --git a/docs/src/components/home.jsx b/docs/src/components/home.jsx index fe8a293b..3436ee74 100644 --- a/docs/src/components/home.jsx +++ b/docs/src/components/home.jsx @@ -1,13 +1,47 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import npmPackage from '../../../package.json'; +import Markdown from './markdown'; -const install = '```bash\n $ npm i -S anchor-ui'; -const font = '```css\n * {\n font-family: \'Lato\', sans-serif;\n }'; -const named = '```js\n import { AppHeader, Button } from \'anchor-ui\';'; -const defaultImport = '```js\n import AppHeader from \'anchor-ui/app-header\'; \n import Button from \'anchor-ui/button\';'; -const theme = '```js\n import ThemeProvider from \'anchor-ui/theme-provider\'; \n ;'; +const install = ` + \`\`\`bash + $ npm i -S anchor-ui; + \`\`\` +`; +const font = ` + \`\`\`css + @import url('https://fonts.googleapis.com/css?family=Lato:300,400'); + + * { + font-family: 'Lato', sans-serif; + } + \`\`\` +`; +const named = ` + \`\`\`js + import { AppHeader, Button } from 'anchor-ui'; + \`\`\` +`; +const defaultImport = ` + \`\`\`js + import AppHeader from 'anchor-ui/app-header'; + import Button from 'anchor-ui/button'; + \`\`\` +`; +const theme = ` + \`\`\`jsx + import ThemeProvider from 'anchor-ui/theme-provider'; + import YourComponent from './your-component'; + + const App = () => ( + + + + ); + + export default App; + \`\`\` +`; const Home = () => { const style = { @@ -32,24 +66,21 @@ const Home = () => {

Getting started

-

Install from npm

- +

Font

Anchor UI is designed with Lato but you can also supply your own font with CSS.

- +

Usage

-

Import using named import

- -

Or use default import

- + +

Theme

Add your own color to the components, color is applied with props.
Wrap ThemeProvider around components you want your theme color in.

- +

StyleRoot

If you want to use inline Media Queries or inline CSS animations you need to wrap your app in Radium's StyleRoot component

Dependencies

diff --git a/docs/src/components/icon-menu.jsx b/docs/src/components/icon-menu.jsx index b3a872d4..9730ffd7 100644 --- a/docs/src/components/icon-menu.jsx +++ b/docs/src/components/icon-menu.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import IconMenu from '../../../dist/icon-menu'; import MenuItem from '../../../dist/menu-item'; @@ -8,8 +7,13 @@ import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; import fade from '../../../dist/internal/fade'; +import Markdown from './markdown'; -const usage = '```js\n import IconMenu from \'anchor-ui/icon-menu\';'; +const usage = ` + \`\`\`js + import IconMenu from 'anchor-ui/icon-menu'; + \`\`\` +`; const IconMenuDoc = () => { const componentData = _.find(components, component => component.displayName === 'IconMenu'); @@ -45,10 +49,7 @@ const IconMenuDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/icons.jsx b/docs/src/components/icons.jsx index 6fc2bdb4..05a1bbd6 100644 --- a/docs/src/components/icons.jsx +++ b/docs/src/components/icons.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import * as icons from '../../../dist/icons'; import Paper from '../../../dist/paper'; @@ -9,8 +8,14 @@ import TableHeaderColumn from '../../../dist/table-header-column'; import TableBody from '../../../dist/table-body'; import TableRow from '../../../dist/table-row'; import TableColumn from '../../../dist/table-column'; +import Markdown from './markdown'; -const usage = '```js\n import { IconEmoji } from \'anchor-ui/icons\'; \n import IconHammer from \'anchor-ui/icons/icon-hammer\''; +const usage = ` + \`\`\`js + import { IconEmoji } from 'anchor-ui/icons'; + import IconHammer from 'anchor-ui/icons/icon-hammer'; + \`\`\` +`; const IconsDoc = () => { const style = { @@ -45,10 +50,7 @@ const IconsDoc = () => {

Description

SVG Icons

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/input.jsx b/docs/src/components/input.jsx index 56d3e518..110c5d18 100644 --- a/docs/src/components/input.jsx +++ b/docs/src/components/input.jsx @@ -1,12 +1,16 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Input from '../../../dist/input'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Input from \'anchor-ui/input\';'; +const usage = ` + \`\`\`js + import Input from 'anchor-ui/input'; + \`\`\` +`; class InputDoc extends Component { constructor() { @@ -78,10 +82,7 @@ class InputDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/lightbox.jsx b/docs/src/components/lightbox.jsx index dec796dc..b2dc1093 100644 --- a/docs/src/components/lightbox.jsx +++ b/docs/src/components/lightbox.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Message from '../../../dist/message'; import MessageList from '../../../dist/message-list'; @@ -7,8 +6,13 @@ import Props from './props'; import components from '../../components.json'; import background from '../assets/images/channel-background.jpg'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Lightbox from \'anchor-ui/message\';'; +const usage = ` + \`\`\`js + import Lightbox from 'anchor-ui/lightbox'; + \`\`\` +`; const message = { body: 'https://source.unsplash.com/random/1280x1080', @@ -41,10 +45,7 @@ const LightboxDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Example

diff --git a/docs/src/components/list-item.jsx b/docs/src/components/list-item.jsx index 84378142..dae69f66 100644 --- a/docs/src/components/list-item.jsx +++ b/docs/src/components/list-item.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import ListItem from '../../../dist/list-item'; import List from '../../../dist/list'; @@ -13,8 +12,13 @@ import Paper from '../../../dist/paper'; import IconMenu from '../../../dist/icon-menu'; import MenuItem from '../../../dist/menu-item'; import IconRocket from '../../../dist/icons/icon-rocket'; +import Markdown from './markdown'; -const usage = '```js\n import ListItem from \'anchor-ui/list-item\';'; +const usage = ` + \`\`\`js + import ListItem from 'anchor-ui/list-item'; + \`\`\` +`; const ListItemDoc = () => { const componentData = _.find(components, component => component.displayName === 'ListItem'); @@ -38,10 +42,7 @@ const ListItemDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/list.jsx b/docs/src/components/list.jsx index b18a82dd..b514772b 100644 --- a/docs/src/components/list.jsx +++ b/docs/src/components/list.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import List from '../../../dist/list'; import ListItem from '../../../dist/list-item'; @@ -9,8 +8,13 @@ import colors from '../../../dist/settings/colors'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import List from \'anchor-ui/list\';'; +const usage = ` + \`\`\`js + import List from 'anchor-ui/list'; + \`\`\` +`; const ListDoc = () => { const componentData = _.find(components, component => component.displayName === 'List'); @@ -55,10 +59,7 @@ const ListDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/loader.jsx b/docs/src/components/loader.jsx index 0802e079..0b3b5ffd 100644 --- a/docs/src/components/loader.jsx +++ b/docs/src/components/loader.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Loader from '../../../dist/loader'; import colors from '../../../dist/settings/colors'; @@ -7,8 +6,13 @@ import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; import Alert from '../../../dist/alert'; +import Markdown from './markdown'; -const usage = '```js\n import Loader from \'anchor-ui/loader\';'; +const usage = ` + \`\`\`js + import Loader from 'anchor-ui/loader'; + \`\`\` +`; const LoaderDoc = () => { const componentData = _.find(components, component => component.displayName === 'Loader'); @@ -58,10 +62,7 @@ const LoaderDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/markdown.jsx b/docs/src/components/markdown.jsx new file mode 100644 index 00000000..8c40eabb --- /dev/null +++ b/docs/src/components/markdown.jsx @@ -0,0 +1,93 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import marked from 'marked'; +import prism from 'prismjs'; +import 'prismjs/components/prism-css'; +import 'prismjs/components/prism-bash'; +import 'prismjs/components/prism-jsx'; +import Button from '../../../dist/button'; +import IconChevronDown from '../../../dist/icons/icon-chevron-down'; + +const propTypes = { + title: PropTypes.string.isRequired, + markdown: PropTypes.string.isRequired +}; + +marked.setOptions({ + highlight(code, language) { + return prism.highlight(code, prism.languages[language]); + } +}); + +class Markdown extends Component { + constructor() { + super(); + + this.state = { + open: false + }; + } + + toggleOpen = () => { + this.setState({ + open: !this.state.open + }); + } + + render() { + const { open } = this.state; + const { markdown, title } = this.props; + + const style = { + container: { + margin: '16px 0' + }, + header: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + paddingLeft: '9px', + background: '#f6f6f6', + borderRadius: '4px', + cursor: 'pointer' + }, + heading: { + margin: '0' + }, + markdown: { + overflow: 'hidden', + height: '0' + }, + markdownOpen: { + height: 'auto' + }, + icon: { + transform: 'rotate(0)', + transition: 'transform .3s ease-in-out' + }, + iconOpen: { + transform: 'rotate(180deg)', + transition: 'transform .3s ease-in-out' + } + }; + + return ( +
+
+

{title}

+ +
+
+
+ ); + } +} + +Markdown.propTypes = propTypes; + +export default Markdown; diff --git a/docs/src/components/media.jsx b/docs/src/components/media.jsx index 5f8fdfb7..7a88aa81 100644 --- a/docs/src/components/media.jsx +++ b/docs/src/components/media.jsx @@ -1,13 +1,13 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Media from '../../../dist/media'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; const usage = ` - \`\`\`js + \`\`\`jsx import Media from 'anchor-ui/media' const query = { @@ -57,11 +57,8 @@ class MediaDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -

The query prop must be an object of valid CSS Media Queries.

-
+ +

The query prop must be an object of valid CSS Media Queries.

Examples

Resize your window to change the values

diff --git a/docs/src/components/menu-item.jsx b/docs/src/components/menu-item.jsx index fc48f03e..1a140841 100644 --- a/docs/src/components/menu-item.jsx +++ b/docs/src/components/menu-item.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import MenuItem from '../../../dist/menu-item'; import IconMenu from '../../../dist/icon-menu'; @@ -8,8 +7,13 @@ import components from '../../components.json'; import IconReport from '../../../dist/icons/icon-report'; import IconMore from '../../../dist/icons/icon-more'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import MenuItem from \'anchor-ui/menu-item\';'; +const usage = ` + \`\`\`js + import MenuItem from 'anchor-ui/menu-item'; + \`\`\` +`; const MenuItemDoc = () => { const componentData = _.find(components, component => component.displayName === 'MenuItem'); @@ -33,10 +37,7 @@ const MenuItemDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/menu.jsx b/docs/src/components/menu.jsx index aed59e5c..43d7cda4 100644 --- a/docs/src/components/menu.jsx +++ b/docs/src/components/menu.jsx @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Menu from '../../../dist/menu'; import MenuItem from '../../../dist/menu-item'; @@ -8,8 +7,13 @@ import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; import IconRocket from '../../../dist/icons/icon-rocket'; +import Markdown from './markdown'; -const usage = '```js\n import Menu from \'anchor-ui/menu\';'; +const usage = ` + \`\`\`js + import Menu from 'anchor-ui/menu'; + \`\`\` +`; class MenuDoc extends Component { constructor() { @@ -57,10 +61,7 @@ class MenuDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/message-input/example.js b/docs/src/components/message-input/example.js new file mode 100644 index 00000000..deccee2d --- /dev/null +++ b/docs/src/components/message-input/example.js @@ -0,0 +1,42 @@ +export default ` + \`\`\`js + import React, { Component } from 'react'; + import MessageInput from 'anchor-ui/message-input'; + + class MyComponent extends Component { + state = { + value: '' + } + + // This is called by both enter and click + handleSendMessage = () => { + // Assuming there is a function/prop which actually sends the message + const { sendMessage } = this.props; + + // Grab input value from state. This is set by handleChange + const { value } = this.state; + + sendMessage(value); + } + + handleChange = (event) => { + this.setState({ + value: event.currentTarget.value + }); + } + + render() { + const { value } = this.state; + + return ( + + ); + } + } + \`\`\` +`; diff --git a/docs/src/components/message-input.jsx b/docs/src/components/message-input/index.jsx similarity index 83% rename from docs/src/components/message-input.jsx rename to docs/src/components/message-input/index.jsx index 92c9c5f4..14f5d88f 100644 --- a/docs/src/components/message-input.jsx +++ b/docs/src/components/message-input/index.jsx @@ -1,14 +1,13 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; -import MessageInput from '../../../dist/message-input'; -import Button from '../../../dist/button'; -import IconEmoji from '../../../dist/icons/icon-emoji'; -import Props from './props'; -import components from '../../components.json'; -import Paper from '../../../dist/paper'; - -const usage = '```js\n import MessageInput from \'anchor-ui/message-input\';'; +import MessageInput from '../../../../dist/message-input'; +import Button from '../../../../dist/button'; +import IconEmoji from '../../../../dist/icons/icon-emoji'; +import Props from '../props'; +import components from '../../../components.json'; +import Paper from '../../../../dist/paper'; +import example from './example'; +import Markdown from '../markdown'; class MessageInputDoc extends React.Component { constructor() { @@ -48,8 +47,7 @@ class MessageInputDoc extends React.Component {

{componentData.description}

-

Usage

- +

Examples

diff --git a/docs/src/components/message-list.jsx b/docs/src/components/message-list.jsx index cb81be55..bcc8e060 100644 --- a/docs/src/components/message-list.jsx +++ b/docs/src/components/message-list.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Message from '../../../dist/message'; import MessageList from '../../../dist/message-list'; @@ -7,8 +6,13 @@ import Props from './props'; import components from '../../components.json'; import background from '../assets/images/channel-background.jpg'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import MessageList from \'anchor-ui/message-list\';'; +const usage = ` + \`\`\`js + import MessageList from 'anchor-ui/message-list'; + \`\`\` +`; const messages = [ { @@ -59,10 +63,7 @@ const MessageListDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/message.jsx b/docs/src/components/message.jsx index 7d5027d2..16e86fc7 100644 --- a/docs/src/components/message.jsx +++ b/docs/src/components/message.jsx @@ -1,6 +1,5 @@ /* global alert */ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Message from '../../../dist/message'; import MessageList from '../../../dist/message-list'; @@ -10,8 +9,37 @@ import components from '../../components.json'; import background from '../assets/images/channel-background.jpg'; import Paper from '../../../dist/paper'; import Select from '../../../dist/select'; +import Markdown from './markdown'; -const usage = '```js\n import Message from \'anchor-ui/message\';'; +const usage = ` + \`\`\`js + import Message from 'anchor-ui/message'; + \`\`\` +`; +const scalingEmoji = ` + \`\`\`css + /* default */ + .emojione { + width: 1em; + height: 1em; + vertical-align: middle; + margin-top: -4px; + } + + /* scaling */ + .small .emojione { + font-size: 22px; + } + + .medium .emojione { + font-size: 26px; + } + + .large .emojione { + font-size: 30px; + } + \`\`\` +`; const messages = [ { @@ -133,28 +161,6 @@ class MessageDoc extends Component { margin: '5px' } }; - const scalingEmoji = ` - /* default */ - .emojione { - width: 1em; - height: 1em; - vertical-align: middle; - margin-top: -4px; - } - - /* scaling */ - .small .emojione { - font-size: 22px; - } - - .medium .emojione { - font-size: 26px; - } - - .large .emojione { - font-size: 30px; - } - `; const menuItems = [ {}} />, @@ -168,10 +174,7 @@ class MessageDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+ - +

Examples

diff --git a/docs/src/components/modal.jsx b/docs/src/components/modal.jsx index 8e2bf9d4..4d7363c8 100644 --- a/docs/src/components/modal.jsx +++ b/docs/src/components/modal.jsx @@ -1,13 +1,17 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Modal from '../../../dist/modal'; import Button from '../../../dist/button'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Modal from \'anchor-ui/modal\';'; +const usage = ` + \`\`\`js + import Modal from 'anchor-ui/modal'; + \`\`\` +`; class ModalDoc extends Component { constructor() { @@ -47,10 +51,7 @@ class ModalDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/pagination.jsx b/docs/src/components/pagination.jsx index c43922f0..1cd9f74d 100644 --- a/docs/src/components/pagination.jsx +++ b/docs/src/components/pagination.jsx @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Pagination from '../../../dist/pagination'; import Props from './props'; @@ -12,8 +11,13 @@ import TableHeaderColumn from '../../../dist/table-header-column'; import TableBody from '../../../dist/table-body'; import TableRow from '../../../dist/table-row'; import TableColumn from '../../../dist/table-column'; +import Markdown from './markdown'; -const usage = '```js\n import Pagination from \'anchor-ui/pagination\';'; +const usage = ` + \`\`\`js + import Pagination from 'anchor-ui/pagination'; + \`\`\` +`; const range = _.range(1, 351); const listDefault = _.map(range, number => ({ id: number, name: `Item ${number}` })); @@ -67,10 +71,7 @@ class PaginationDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Default pagination

diff --git a/docs/src/components/paper.jsx b/docs/src/components/paper.jsx index 6c6020ee..02464959 100644 --- a/docs/src/components/paper.jsx +++ b/docs/src/components/paper.jsx @@ -1,11 +1,15 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Paper from \'anchor-ui/paper\';'; +const usage = ` + \`\`\`js + import Markdown from 'anchor-ui/markdown'; + \`\`\` +`; const PaperDoc = () => { const componentData = _.find(components, component => component.displayName === 'Paper'); @@ -26,10 +30,7 @@ const PaperDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/pop-over.jsx b/docs/src/components/pop-over.jsx index 9263a6dc..19cc4b75 100644 --- a/docs/src/components/pop-over.jsx +++ b/docs/src/components/pop-over.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import IconMenu from '../../../dist/icon-menu'; import MenuItem from '../../../dist/menu-item'; @@ -7,8 +6,13 @@ import IconLanguage from '../../../dist/icons/icon-language'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import PopOver from \'anchor-ui/pop-over\';'; +const usage = ` + \`\`\`js + import PopOver from 'anchor-ui/pop-over'; + \`\`\` +`; const PopOverDoc = () => { const componentData = _.find(components, component => component.displayName === 'PopOver'); @@ -34,10 +38,7 @@ const PopOverDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/profile-card.jsx b/docs/src/components/profile-card.jsx index f203b642..9ea0a694 100644 --- a/docs/src/components/profile-card.jsx +++ b/docs/src/components/profile-card.jsx @@ -1,12 +1,16 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import ProfileCard from '../../../dist/profile-card'; import components from '../../components.json'; import Props from './props'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import ProfileCard from \'anchor-ui/profile-card\';'; +const usage = ` + \`\`\`js + import ProfileCard from 'anchor-ui/profile-card'; + \`\`\` +`; const ProfileCardDoc = () => { const componentData = _.find(components, component => component.displayName === 'ProfileCard'); @@ -24,10 +28,7 @@ const ProfileCardDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/profile.jsx b/docs/src/components/profile.jsx index decc3822..c892c200 100644 --- a/docs/src/components/profile.jsx +++ b/docs/src/components/profile.jsx @@ -1,13 +1,17 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Profile from '../../../dist/profile'; import Button from '../../../dist/button'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Profile from \'anchor-ui/profile\';'; +const usage = ` + \`\`\`js + import Profile from 'anchor-ui/profile'; + \`\`\` +`; const ProfileDoc = () => { const componentData = _.find(components, component => component.displayName === 'Profile'); @@ -31,10 +35,7 @@ const ProfileDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/radio-button.jsx b/docs/src/components/radio-button.jsx index b1aa0435..66646f0b 100644 --- a/docs/src/components/radio-button.jsx +++ b/docs/src/components/radio-button.jsx @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import RadioButton from '../../../dist/radio-button'; import RadioButtonGroup from '../../../dist/radio-button-group'; @@ -7,8 +6,13 @@ import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; import Avatar from '../../../dist/avatar'; +import Markdown from './markdown'; -const usage = '```js\n import RadioButton from \'anchor-ui/radio-button\';'; +const usage = ` + \`\`\`js + import RadioButton from 'anchor-ui/radio-button'; + \`\`\` +`; class RadioButtonDoc extends Component { constructor() { @@ -54,10 +58,7 @@ class RadioButtonDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/search-box.jsx b/docs/src/components/search-box.jsx index c385a599..66fc14c1 100644 --- a/docs/src/components/search-box.jsx +++ b/docs/src/components/search-box.jsx @@ -1,12 +1,16 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import SearchBox from '../../../dist/search-box'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import SearchBox from \'anchor-ui/search-box\';'; +const usage = ` + \`\`\`js + import SearchBox from 'anchor-ui/search-box'; + \`\`\` +`; class SearchBoxDoc extends React.Component { constructor(props) { @@ -41,10 +45,7 @@ class SearchBoxDoc extends React.Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/select.jsx b/docs/src/components/select.jsx index 1f961dd7..2378826a 100644 --- a/docs/src/components/select.jsx +++ b/docs/src/components/select.jsx @@ -1,13 +1,17 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import MenuItem from '../../../dist/menu-item'; import Select from '../../../dist/select'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Select from \'anchor-ui/select\';'; +const usage = ` + \`\`\`js + import Select from 'anchor-ui/select'; + \`\`\` +`; class SelectDoc extends Component { constructor() { @@ -51,10 +55,7 @@ class SelectDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/slider.jsx b/docs/src/components/slider.jsx index 5e29119e..ce9f8c90 100644 --- a/docs/src/components/slider.jsx +++ b/docs/src/components/slider.jsx @@ -1,12 +1,16 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Slider from '../../../dist/slider'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Slider from \'anchor-ui/slider\';'; +const usage = ` + \`\`\`js + import Slider from 'anchor-ui/slider'; + \`\`\` +`; class SliderDoc extends Component { constructor() { @@ -67,10 +71,7 @@ class SliderDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/switch.jsx b/docs/src/components/switch.jsx index 36bc939b..baeb28f5 100644 --- a/docs/src/components/switch.jsx +++ b/docs/src/components/switch.jsx @@ -1,12 +1,16 @@ import React, { Component } from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Switch from '../../../dist/switch'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Switch from \'anchor-ui/switch\';'; +const usage = ` + \`\`\`js + import Switch from 'anchor-ui/switch'; + \`\`\` +`; class SwitchDoc extends Component { constructor() { @@ -53,10 +57,7 @@ class SwitchDoc extends Component {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/table.jsx b/docs/src/components/table.jsx index 1f0dad36..7c3c4203 100644 --- a/docs/src/components/table.jsx +++ b/docs/src/components/table.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Table from '../../../dist/table'; import TableHeader from '../../../dist/table-header'; @@ -10,8 +9,57 @@ import TableColumn from '../../../dist/table-column'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Table from \'anchor-ui/table\';'; +const usage = ` + \`\`\`jsx + import Table from 'anchor-ui/table'; + import TableHeader from 'anchor-ui/table-header'; + import TableHeaderColumn from 'anchor-ui/table-header-column'; + import TableBody from 'anchor-ui/table-body'; + import TableRow from 'anchor-ui/table-row'; + import TableColumn from 'anchor-ui/table-column'; + + const MyTable = () => ( + + + + Column 1 + Column 2 + Column 3 + Column 4 + + + + + Row 1 + Row 1 + Row 1 + Row 1 + + + Row 2 + Row 2 + Row 2 + Row 2 + + + Row 3 + Row 3 + Row 3 + Row 3 + + + Row 4 + Row 4 + Row 4 + Row 4 + + +
+ ); + \`\`\` +`; const TableDoc = () => { const componentData = _.find(components, component => component.displayName === 'Table'); @@ -39,10 +87,7 @@ const TableDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/tabs.jsx b/docs/src/components/tabs.jsx index e511186f..282a9644 100644 --- a/docs/src/components/tabs.jsx +++ b/docs/src/components/tabs.jsx @@ -1,13 +1,26 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import Tab from '../../../dist/tab'; import Tabs from '../../../dist/tabs'; import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; +import Markdown from './markdown'; -const usage = '```js\n import Tabs from \'anchor-ui/tabs\';'; +const usage = ` + \`\`\`jsx + import Tabs from 'anchor-ui/tabs'; + import Tab from 'anchor-ui/tab'; + + const MyTabs = () => ( + + Content 1 + Content 2 + Content 3 + + ); + \`\`\` +`; const TabsDoc = () => { const componentData = _.find(components, component => component.displayName === 'Tabs'); @@ -29,10 +42,7 @@ const TabsDoc = () => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

diff --git a/docs/src/components/theme-provider.jsx b/docs/src/components/theme-provider.jsx index c2dd44fe..13829ef8 100644 --- a/docs/src/components/theme-provider.jsx +++ b/docs/src/components/theme-provider.jsx @@ -1,6 +1,5 @@ import React from 'react'; import PropTypes from 'prop-types'; -import ReactMarkdown from 'react-markdown'; import _ from 'lodash'; import ThemeProvider from '../../../dist/theme-provider'; import Button from '../../../dist/button'; @@ -8,8 +7,25 @@ import Props from './props'; import components from '../../components.json'; import Paper from '../../../dist/paper'; import colors from '../../../dist/settings/colors'; +import Markdown from './markdown'; + +const usage = ` + \`\`\`jsx + import ThemeProvider from 'anchor-ui/theme-provider'; + + const App = () => ( +
+ + + + + + +
+ ); + \`\`\` +`; -const usage = '```js\n import ThemeProvider from \'anchor-ui/theme-provider\';'; const ThemeProviderDoc = ({ setColor }) => { const componentData = _.find(components, component => component.displayName === 'ThemeProvider'); @@ -30,10 +46,7 @@ const ThemeProviderDoc = ({ setColor }) => {

Description

{componentData.description}

-
-

Usage

- -
+

Examples

Click one of the buttons to change the app's theme

diff --git a/docs/src/components/themeable.jsx b/docs/src/components/themeable.jsx index bc988744..4a016e99 100644 --- a/docs/src/components/themeable.jsx +++ b/docs/src/components/themeable.jsx @@ -1,55 +1,66 @@ import React from 'react'; -import ReactMarkdown from 'react-markdown'; import Table from '../../../dist/table'; import TableHeader from '../../../dist/table-header'; import TableHeaderColumn from '../../../dist/table-header-column'; import TableBody from '../../../dist/table-body'; import TableRow from '../../../dist/table-row'; import TableColumn from '../../../dist/table-column'; +import Markdown from './markdown'; -const usage = '```js\n import themeable from \'anchor-ui/themeable\'; \n export default themeable()(YourComponent);'; +const usage = ` + \`\`\`js + import themeable from 'anchor-ui/themeable'; + import MyComponent from './my-component'; -const ThemeableDoc = () => { - const customPropName = '```js\n import themeable from \'anchor-ui/themeable\'; \n export default themeable({ propName: \'themeColor\' })(YourComponent);'; - return ( -
-

ThemeProvider

-
-

Description

-

- A higher order component which applies theme to your component by passing a color prop. - You can change the prop name passed to your component by passing an options object. -

-
-
-

Usage

- -

Usage with propName option

- -
-
-

Options

- - - - Name - Type - Description - Default value - - - - - propName - String - Custom prop name for theme color - color - - -
-
-
- ); -}; + export default themeable()(MyComponent); + \`\`\` +`; + +const customPropName = ` + \`\`\`js + import themeable from 'anchor-ui/themeable'; + import MyComponent from './my-component'; + + export default themeable({ propName: 'themeColor' })(MyComponent); + \`\`\` +`; + +const ThemeableDoc = () => ( +
+

ThemeProvider

+
+

Description

+

+ A higher order component which applies theme to your component by passing a color prop. + You can change the prop name passed to your component by passing an options object. +

+
+
+ + +
+
+

Options

+ + + + Name + Type + Description + Default value + + + + + propName + String + Custom prop name for theme color + color + + +
+
+
+); export default ThemeableDoc; diff --git a/docs/src/index.css b/docs/src/index.css index e5eff2d4..3495198c 100644 --- a/docs/src/index.css +++ b/docs/src/index.css @@ -1,23 +1,4 @@ -@font-face { - font-family: 'Lato'; - src: url('./assets/fonts/Lato/Lato-Bold.ttf'); - font-weight: 700; - font-style: normal; -} - -@font-face { - font-family: 'Lato'; - src: url('./assets/fonts/Lato/Lato-Regular.ttf'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Lato'; - src: url('./assets/fonts/Lato/Lato-Light.ttf'); - font-weight: 100; - font-style: normal; -} +@import url('https://fonts.googleapis.com/css?family=Lato:300,400'); html { background: #FEFEFE; @@ -74,7 +55,7 @@ main > article > article { main > article article h1, h2 { margin-top: 32px; - font-weight: bold; + font-weight: bolder; margin-bottom: 16px; font-size: 18px; color: #757575; @@ -120,7 +101,7 @@ main > article > article section:last-of-type { } table thead th { - font-weight: bold; + font-weight: bolder; text-align: left; } @@ -137,25 +118,6 @@ tr { width: 24px; } -.markdown { - padding: 15px; - background: #F7F7F7; - margin: 16px 0; - width: auto; -} - -.markdown * { - font-family: 'Inconsolata', monospace; -} - -pre { - margin: 0; -} - -code { - color: #1BA6C4; -} - tbody tr td:nth-of-type(2) { text-transform: capitalize; } diff --git a/docs/src/index.js b/docs/src/index.js index 975de88c..1a08acac 100644 --- a/docs/src/index.js +++ b/docs/src/index.js @@ -52,6 +52,7 @@ import EmojiFilter from './components/emoji-filter'; import Gallery from './components/gallery'; import Media from './components/media'; import './index.css'; +import './prism.css'; ReactDOM.render( diff --git a/docs/src/prism.css b/docs/src/prism.css new file mode 100644 index 00000000..b5c71876 --- /dev/null +++ b/docs/src/prism.css @@ -0,0 +1,138 @@ +/** +* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML +* Based on https://github.com/chriskempson/tomorrow-theme +* @author Rose Pritchard +*/ + +code, +pre { + color: #E46C75; + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + tab-size: 4; + hyphens: none; + font-size: 14px; + border-radius: 4px; +} + +/* Code blocks */ +pre { + height: 100%; + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code, +pre { + background: #282C34; +} + +/* Inline code */ +:not(pre) > code { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #999; +} + +.token.punctuation { + color: #ccc; +} + +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted { + color: #e2777a; +} + +.token.tag { + color: #E6C07C; +} + +.token.attr-name { + color: #D39858; +} + +.token.function-name { + color: #6196cc; +} + +.token.boolean, +.token.number, +.token.function { + color: #f08d49; +} + +.token.function { + color: #86b0f4; +} + +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: #f8c555; +} + +.token.property { + color: #ABB2BF; +} + +.token.important, +.token.atrule, +.token.keyword, +.token.builtin { + color: #BF78DC; +} + +.token.selector { + color: #D39A67; +} + +.token.string, +.token.char, +.token.attr-value, +.token.regex, +.token.variable { + color: #95C37A; +} + +.token.operator, +.token.entity { + color: #C978DC; +} + +.token.url { + color: #67cdcc; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.inserted { + color: green; +} From 049839f60d4c9518e4c0a135f8b8d4549012a656 Mon Sep 17 00:00:00 2001 From: Sjaak Luthart Date: Sat, 4 Nov 2017 09:58:42 +0100 Subject: [PATCH 4/7] Sjaakluthart/docs styles (#938) * Removed unused className. * Removed redundant styles. * Added meyer reset. * Started with refactor. * Moved files. * Changed classname. * Renamed classNames. * Changed selector. * Added margin. * Fixed paper styles. * Changed heading styles. * Changed selector. * Changed markup. * Added margin. * Changed markup. * Changed to anchor-ui Table. * Increased margin. * Removed overflow. * Reverted changes. * Added responsive menu, fixes #180. --- docs/src/components/admin-badge.jsx | 2 +- docs/src/components/alert.jsx | 2 +- docs/src/components/app-header.jsx | 2 +- docs/src/components/app.jsx | 43 +++++++- docs/src/components/avatar.jsx | 2 +- docs/src/components/badge.jsx | 2 +- docs/src/components/button.jsx | 2 +- docs/src/components/card.jsx | 2 +- docs/src/components/channel-header.jsx | 2 +- docs/src/components/checkbox.jsx | 12 ++- docs/src/components/commands/index.jsx | 2 +- docs/src/components/date-separator.jsx | 2 +- docs/src/components/dialog.jsx | 2 +- docs/src/components/divider.jsx | 2 +- docs/src/components/emoji-filter.jsx | 2 +- docs/src/components/emoji-menu.jsx | 2 +- docs/src/components/empty-state.jsx | 2 +- docs/src/components/gallery.jsx | 2 +- docs/src/components/home.jsx | 106 +++++++++++++------- docs/src/components/icon-menu.jsx | 2 +- docs/src/components/icons.jsx | 2 +- docs/src/components/input.jsx | 2 +- docs/src/components/lightbox.jsx | 2 +- docs/src/components/list-item.jsx | 2 +- docs/src/components/list.jsx | 2 +- docs/src/components/loader.jsx | 2 +- docs/src/components/media.jsx | 2 +- docs/src/components/menu-item.jsx | 2 +- docs/src/components/menu.jsx | 2 +- docs/src/components/message-input/index.jsx | 2 +- docs/src/components/message-list.jsx | 2 +- docs/src/components/message.jsx | 2 +- docs/src/components/modal.jsx | 2 +- docs/src/components/nav.jsx | 26 ++++- docs/src/components/pagination.jsx | 2 +- docs/src/components/paper.jsx | 2 +- docs/src/components/pop-over.jsx | 2 +- docs/src/components/profile-card.jsx | 2 +- docs/src/components/profile.jsx | 2 +- docs/src/components/radio-button.jsx | 2 +- docs/src/components/search-box.jsx | 2 +- docs/src/components/select.jsx | 2 +- docs/src/components/slider.jsx | 2 +- docs/src/components/switch.jsx | 2 +- docs/src/components/table.jsx | 2 +- docs/src/components/tabs.jsx | 2 +- docs/src/components/theme-provider.jsx | 2 +- docs/src/components/themeable.jsx | 2 +- docs/src/{ => css}/index.css | 83 +++++---------- docs/src/css/meyer-reset.css | 48 +++++++++ docs/src/{ => css}/prism.css | 0 docs/src/index.js | 5 +- 52 files changed, 254 insertions(+), 157 deletions(-) rename docs/src/{ => css}/index.css (51%) create mode 100644 docs/src/css/meyer-reset.css rename docs/src/{ => css}/prism.css (100%) diff --git a/docs/src/components/admin-badge.jsx b/docs/src/components/admin-badge.jsx index a64f263b..4e908970 100644 --- a/docs/src/components/admin-badge.jsx +++ b/docs/src/components/admin-badge.jsx @@ -26,7 +26,7 @@ const AdminBadgeDoc = () => { }; return ( -
+

AdminBadge

Description

diff --git a/docs/src/components/alert.jsx b/docs/src/components/alert.jsx index bc7f2fc8..c55b4097 100644 --- a/docs/src/components/alert.jsx +++ b/docs/src/components/alert.jsx @@ -26,7 +26,7 @@ const AlertDoc = () => { }; return ( -
+

Alert

Description

diff --git a/docs/src/components/app-header.jsx b/docs/src/components/app-header.jsx index e4f6391f..b3911739 100644 --- a/docs/src/components/app-header.jsx +++ b/docs/src/components/app-header.jsx @@ -30,7 +30,7 @@ const AppHeaderDoc = () => { }; return ( -
+

AppHeader

Description

diff --git a/docs/src/components/app.jsx b/docs/src/components/app.jsx index c7a90fbf..737562a8 100644 --- a/docs/src/components/app.jsx +++ b/docs/src/components/app.jsx @@ -7,20 +7,39 @@ import logo from '../assets/images/logo.svg'; import github from '../assets/images/github.svg'; import ThemeProvider from '../../../dist/theme-provider'; import colors from '../../../dist/settings/colors'; +import Media from '../../../dist/media'; +import IconMenu from '../../../dist/icons/icon-menu'; class App extends Component { constructor() { super(); this.state = { - color: colors.theme + color: colors.theme, + media: { + medium: false + }, + menu: false }; } setColor = color => this.setState({ color }) + setMedia = (matches) => { + this.setState({ + media: matches + }); + } + + toggleMenu = () => { + this.setState({ + menu: !this.state.menu + }); + } + render() { const { children } = this.props; + const { media, menu } = this.state; const childrenWithProps = React.Children.map( children, child => React.cloneElement( @@ -31,9 +50,19 @@ class App extends Component { ) ); + const query = { + medium: '(min-width: 768px)' + }; + + const leftButton = ( + + ); + return ( -
+
} + leftButton={ + !media.medium + ? leftButton + : null + } rightButton={ } /> -
-
); diff --git a/docs/src/components/avatar.jsx b/docs/src/components/avatar.jsx index efd08f67..d223c5bf 100644 --- a/docs/src/components/avatar.jsx +++ b/docs/src/components/avatar.jsx @@ -26,7 +26,7 @@ const AvatarDoc = () => { }; return ( -
+

Avatar

Description

diff --git a/docs/src/components/badge.jsx b/docs/src/components/badge.jsx index 078fa732..691926e1 100644 --- a/docs/src/components/badge.jsx +++ b/docs/src/components/badge.jsx @@ -26,7 +26,7 @@ const BadgeDoc = () => { }; return ( -
+

Badge

Description

diff --git a/docs/src/components/button.jsx b/docs/src/components/button.jsx index d1bd48cc..9715e89d 100644 --- a/docs/src/components/button.jsx +++ b/docs/src/components/button.jsx @@ -32,7 +32,7 @@ const ButtonDoc = () => { }; return ( -
+

Button

Description

diff --git a/docs/src/components/card.jsx b/docs/src/components/card.jsx index bc3069a6..f433bd3e 100644 --- a/docs/src/components/card.jsx +++ b/docs/src/components/card.jsx @@ -30,7 +30,7 @@ const CardDoc = () => { }; return ( -
+

Card

Description

diff --git a/docs/src/components/channel-header.jsx b/docs/src/components/channel-header.jsx index 4538f66a..fa905ad0 100644 --- a/docs/src/components/channel-header.jsx +++ b/docs/src/components/channel-header.jsx @@ -32,7 +32,7 @@ const ChannelHeaderDoc = () => { }; return ( -
+

ChannelHeader

Description

diff --git a/docs/src/components/checkbox.jsx b/docs/src/components/checkbox.jsx index 8aebe839..85085687 100644 --- a/docs/src/components/checkbox.jsx +++ b/docs/src/components/checkbox.jsx @@ -50,11 +50,15 @@ class CheckboxDoc extends Component { checkboxWrapper: { display: 'flex', flexWrap: 'wrap', - alignItems: 'center', + alignItems: 'center' + }, + paper: { margin: 0, padding: '20px' }, - checkbox: { margin: '10px' }, + checkbox: { + margin: '10px' + }, label: { paddingLeft: 0, marginTop: '20px', @@ -63,7 +67,7 @@ class CheckboxDoc extends Component { }; return ( -
+

Checkbox

Description

@@ -72,7 +76,7 @@ class CheckboxDoc extends Component {

Examples

- +
{ const componentData = _.find(components, component => component.displayName === 'Commands'); return ( -
+

Commands

Description

diff --git a/docs/src/components/date-separator.jsx b/docs/src/components/date-separator.jsx index 019e14fe..a6e40905 100644 --- a/docs/src/components/date-separator.jsx +++ b/docs/src/components/date-separator.jsx @@ -62,7 +62,7 @@ const DateSeparatorDoc = () => { let lastDate = new Date(); return ( -
+

{componentData.displayName}

Description

diff --git a/docs/src/components/dialog.jsx b/docs/src/components/dialog.jsx index 6858cdda..7ab4b618 100644 --- a/docs/src/components/dialog.jsx +++ b/docs/src/components/dialog.jsx @@ -45,7 +45,7 @@ class DialogDoc extends Component { }; return ( -
+

Dialog

Description

diff --git a/docs/src/components/divider.jsx b/docs/src/components/divider.jsx index 2a607861..26347b2c 100644 --- a/docs/src/components/divider.jsx +++ b/docs/src/components/divider.jsx @@ -28,7 +28,7 @@ const DividerDoc = () => { }; return ( -
+

Divider

Description

diff --git a/docs/src/components/emoji-filter.jsx b/docs/src/components/emoji-filter.jsx index b81daeb1..072dfd0c 100644 --- a/docs/src/components/emoji-filter.jsx +++ b/docs/src/components/emoji-filter.jsx @@ -93,7 +93,7 @@ class EmojiFilterDoc extends Component { }; return ( -
+

EmojiFilter

Description

diff --git a/docs/src/components/emoji-menu.jsx b/docs/src/components/emoji-menu.jsx index ef959090..bd2a98c8 100644 --- a/docs/src/components/emoji-menu.jsx +++ b/docs/src/components/emoji-menu.jsx @@ -46,7 +46,7 @@ class EmojiMenuDoc extends Component { }; return ( -
+

EmojiMenu

Description

diff --git a/docs/src/components/empty-state.jsx b/docs/src/components/empty-state.jsx index 80be0d89..b7cc38eb 100644 --- a/docs/src/components/empty-state.jsx +++ b/docs/src/components/empty-state.jsx @@ -39,7 +39,7 @@ const EmptyStateDoc = () => { }; return ( -
+

EmptyState

Description

diff --git a/docs/src/components/gallery.jsx b/docs/src/components/gallery.jsx index 2405acdc..a4666afe 100644 --- a/docs/src/components/gallery.jsx +++ b/docs/src/components/gallery.jsx @@ -88,7 +88,7 @@ class GalleryDoc extends Component { }; return ( -
+

Gallery

Description

diff --git a/docs/src/components/home.jsx b/docs/src/components/home.jsx index 3436ee74..47e1350c 100644 --- a/docs/src/components/home.jsx +++ b/docs/src/components/home.jsx @@ -2,6 +2,12 @@ import React from 'react'; import _ from 'lodash'; import npmPackage from '../../../package.json'; import Markdown from './markdown'; +import Table from '../../../dist/table'; +import TableHeader from '../../../dist/table-header'; +import TableHeaderColumn from '../../../dist/table-header-column'; +import TableBody from '../../../dist/table-body'; +import TableRow from '../../../dist/table-row'; +import TableColumn from '../../../dist/table-column'; const install = ` \`\`\`bash @@ -52,11 +58,21 @@ const Home = () => { link: { textDecoration: 'underline', fontWeight: 'normal' + }, + table: { + minWidth: '240px', + maxWidth: '360px', + flex: '1' + }, + tables: { + display: 'flex', + flexWrap: 'wrap', + justifyContent: 'space-between' } }; return ( -
+

UI kit for chat engines made with React

@@ -67,56 +83,70 @@ const Home = () => {

Getting started

-

Font

+
+
+

Font

Anchor UI is designed with Lato but you can also supply your own font with CSS.

-

Usage

+
+
+

Usage

-

Theme

+
+
+

Theme

Add your own color to the components, color is applied with props.
Wrap ThemeProvider around components you want your theme color in.

+
+

StyleRoot

If you want to use inline Media Queries or inline CSS animations you need to wrap your app in Radium's StyleRoot component

-

Dependencies

- - - - - - - - - {_.map(npmPackage.dependencies, (version, name) => ( - - - - - ))} - -
NameVersion
{name}{version}
-

Peer Dependencies

- - - - - - - - - {_.map(npmPackage.peerDependencies, (version, name) => ( - - - - - ))} - -
NameVersion
{name}{version}
+
+
+
+

Dependencies

+ + + + Name + Version + + + + {_.map(npmPackage.dependencies, (version, name) => ( + + {name} + {version} + + ))} + +
+
+
+

Peer Dependencies

+ + + + Name + Version + + + + {_.map(npmPackage.peerDependencies, (version, name) => ( + + {name} + {version} + + ))} + +
+
); diff --git a/docs/src/components/icon-menu.jsx b/docs/src/components/icon-menu.jsx index 9730ffd7..2e0611b9 100644 --- a/docs/src/components/icon-menu.jsx +++ b/docs/src/components/icon-menu.jsx @@ -43,7 +43,7 @@ const IconMenuDoc = () => { }; return ( -
+

IconMenu

Description

diff --git a/docs/src/components/icons.jsx b/docs/src/components/icons.jsx index 05a1bbd6..b1bb400a 100644 --- a/docs/src/components/icons.jsx +++ b/docs/src/components/icons.jsx @@ -44,7 +44,7 @@ const IconsDoc = () => { }; return ( -
+

Icons

Description

diff --git a/docs/src/components/input.jsx b/docs/src/components/input.jsx index 110c5d18..3fa1d2c3 100644 --- a/docs/src/components/input.jsx +++ b/docs/src/components/input.jsx @@ -76,7 +76,7 @@ class InputDoc extends Component { }; return ( -
+

Input

Description

diff --git a/docs/src/components/lightbox.jsx b/docs/src/components/lightbox.jsx index b2dc1093..d649816c 100644 --- a/docs/src/components/lightbox.jsx +++ b/docs/src/components/lightbox.jsx @@ -39,7 +39,7 @@ const LightboxDoc = () => { }; return ( -
+

Lightbox

Description

diff --git a/docs/src/components/list-item.jsx b/docs/src/components/list-item.jsx index dae69f66..9fa48453 100644 --- a/docs/src/components/list-item.jsx +++ b/docs/src/components/list-item.jsx @@ -36,7 +36,7 @@ const ListItemDoc = () => { }; return ( -
+

ListItem

Description

diff --git a/docs/src/components/list.jsx b/docs/src/components/list.jsx index b514772b..1d35345b 100644 --- a/docs/src/components/list.jsx +++ b/docs/src/components/list.jsx @@ -53,7 +53,7 @@ const ListDoc = () => { }; return ( -
+

List

Description

diff --git a/docs/src/components/loader.jsx b/docs/src/components/loader.jsx index 0b3b5ffd..b150da79 100644 --- a/docs/src/components/loader.jsx +++ b/docs/src/components/loader.jsx @@ -46,7 +46,7 @@ const LoaderDoc = () => { }; return ( -
+

Loader

+

Media

Description

diff --git a/docs/src/components/menu-item.jsx b/docs/src/components/menu-item.jsx index 1a140841..b8373661 100644 --- a/docs/src/components/menu-item.jsx +++ b/docs/src/components/menu-item.jsx @@ -31,7 +31,7 @@ const MenuItemDoc = () => { }; return ( -
+

Menu Item

Description

diff --git a/docs/src/components/menu.jsx b/docs/src/components/menu.jsx index 43d7cda4..c92834ae 100644 --- a/docs/src/components/menu.jsx +++ b/docs/src/components/menu.jsx @@ -55,7 +55,7 @@ class MenuDoc extends Component { }; return ( -
+

Menu

Description

diff --git a/docs/src/components/message-input/index.jsx b/docs/src/components/message-input/index.jsx index 14f5d88f..1bbe93bf 100644 --- a/docs/src/components/message-input/index.jsx +++ b/docs/src/components/message-input/index.jsx @@ -40,7 +40,7 @@ class MessageInputDoc extends React.Component { }; return ( -
+

MessageInput

Description

diff --git a/docs/src/components/message-list.jsx b/docs/src/components/message-list.jsx index bcc8e060..31dbdd2a 100644 --- a/docs/src/components/message-list.jsx +++ b/docs/src/components/message-list.jsx @@ -57,7 +57,7 @@ const MessageListDoc = () => { }; return ( -
+

MessageList

Description

diff --git a/docs/src/components/message.jsx b/docs/src/components/message.jsx index 16e86fc7..37c48e07 100644 --- a/docs/src/components/message.jsx +++ b/docs/src/components/message.jsx @@ -168,7 +168,7 @@ class MessageDoc extends Component { ]; return ( -
+

Message

Description

diff --git a/docs/src/components/modal.jsx b/docs/src/components/modal.jsx index 4d7363c8..80bbe691 100644 --- a/docs/src/components/modal.jsx +++ b/docs/src/components/modal.jsx @@ -45,7 +45,7 @@ class ModalDoc extends Component { }; return ( -
+

Modal

Description

diff --git a/docs/src/components/nav.jsx b/docs/src/components/nav.jsx index f18ddcc7..cfcbf940 100644 --- a/docs/src/components/nav.jsx +++ b/docs/src/components/nav.jsx @@ -6,7 +6,19 @@ import MenuItem from '../../../dist/menu-item'; import npmPackage from '../../../package.json'; import * as icons from '../../../dist/icons'; -const Nav = (props, context) => { +const propTypes = { + media: PropTypes.shape({ + medium: PropTypes.bool.isRequired + }).isRequired, + toggleMenu: PropTypes.func.isRequired, + open: PropTypes.bool.isRequired +}; + +const contextTypes = { + router: PropTypes.object +}; + +const Nav = ({ media, toggleMenu, open }, context) => { const { router } = context; const style = { @@ -17,7 +29,12 @@ const Nav = (props, context) => { }; return ( - + router.push('/')} active={router.location.pathname === '/'} text="Getting started" /> router.push('/admin-badge')} active={router.isActive('/admin-badge')} text="AdminBadge" /> router.push('/alert')} active={router.isActive('/alert')} text="Alert" /> @@ -68,8 +85,7 @@ const Nav = (props, context) => { ); }; -Nav.contextTypes = { - router: PropTypes.object -}; +Nav.propTypes = propTypes; +Nav.contextTypes = contextTypes; export default Nav; diff --git a/docs/src/components/pagination.jsx b/docs/src/components/pagination.jsx index 1cd9f74d..83eb476b 100644 --- a/docs/src/components/pagination.jsx +++ b/docs/src/components/pagination.jsx @@ -65,7 +65,7 @@ class PaginationDoc extends Component { button: { margin: '10px' } }; return ( -
+

Pagination

Description

diff --git a/docs/src/components/paper.jsx b/docs/src/components/paper.jsx index 02464959..6b5db5b1 100644 --- a/docs/src/components/paper.jsx +++ b/docs/src/components/paper.jsx @@ -24,7 +24,7 @@ const PaperDoc = () => { }; return ( -
+

Paper

Description

diff --git a/docs/src/components/pop-over.jsx b/docs/src/components/pop-over.jsx index 19cc4b75..438851b6 100644 --- a/docs/src/components/pop-over.jsx +++ b/docs/src/components/pop-over.jsx @@ -32,7 +32,7 @@ const PopOverDoc = () => { }; return ( -
+

PopOver

Description

diff --git a/docs/src/components/profile-card.jsx b/docs/src/components/profile-card.jsx index 9ea0a694..99875d48 100644 --- a/docs/src/components/profile-card.jsx +++ b/docs/src/components/profile-card.jsx @@ -22,7 +22,7 @@ const ProfileCardDoc = () => { }; return ( -
+

ProfileCard

Description

diff --git a/docs/src/components/profile.jsx b/docs/src/components/profile.jsx index c892c200..7cd78f99 100644 --- a/docs/src/components/profile.jsx +++ b/docs/src/components/profile.jsx @@ -29,7 +29,7 @@ const ProfileDoc = () => { }; return ( -
+

Profile

Description

diff --git a/docs/src/components/radio-button.jsx b/docs/src/components/radio-button.jsx index 66646f0b..105053a3 100644 --- a/docs/src/components/radio-button.jsx +++ b/docs/src/components/radio-button.jsx @@ -52,7 +52,7 @@ class RadioButtonDoc extends Component { }; return ( -
+

RadioButton

Description

diff --git a/docs/src/components/search-box.jsx b/docs/src/components/search-box.jsx index 66fc14c1..b8c7a874 100644 --- a/docs/src/components/search-box.jsx +++ b/docs/src/components/search-box.jsx @@ -39,7 +39,7 @@ class SearchBoxDoc extends React.Component { }; return ( -
+

SearchBox

Description

diff --git a/docs/src/components/select.jsx b/docs/src/components/select.jsx index 2378826a..da3720e3 100644 --- a/docs/src/components/select.jsx +++ b/docs/src/components/select.jsx @@ -49,7 +49,7 @@ class SelectDoc extends Component { }; return ( -
+

{componentData.displayName}

Description

diff --git a/docs/src/components/slider.jsx b/docs/src/components/slider.jsx index ce9f8c90..b41f5903 100644 --- a/docs/src/components/slider.jsx +++ b/docs/src/components/slider.jsx @@ -65,7 +65,7 @@ class SliderDoc extends Component { }; return ( -
+

Slider

Description

diff --git a/docs/src/components/switch.jsx b/docs/src/components/switch.jsx index baeb28f5..3e256e8c 100644 --- a/docs/src/components/switch.jsx +++ b/docs/src/components/switch.jsx @@ -51,7 +51,7 @@ class SwitchDoc extends Component { }; return ( -
+

Switch

Description

diff --git a/docs/src/components/table.jsx b/docs/src/components/table.jsx index 7c3c4203..0eb7d7d3 100644 --- a/docs/src/components/table.jsx +++ b/docs/src/components/table.jsx @@ -81,7 +81,7 @@ const TableDoc = () => { }; return ( -
+

Table

Description

diff --git a/docs/src/components/tabs.jsx b/docs/src/components/tabs.jsx index 282a9644..e08a07ba 100644 --- a/docs/src/components/tabs.jsx +++ b/docs/src/components/tabs.jsx @@ -36,7 +36,7 @@ const TabsDoc = () => { }; return ( -
+

Tabs

Description

diff --git a/docs/src/components/theme-provider.jsx b/docs/src/components/theme-provider.jsx index 13829ef8..3621d492 100644 --- a/docs/src/components/theme-provider.jsx +++ b/docs/src/components/theme-provider.jsx @@ -40,7 +40,7 @@ const ThemeProviderDoc = ({ setColor }) => { button: { margin: '10px' } }; return ( -
+

ThemeProvider

Description

diff --git a/docs/src/components/themeable.jsx b/docs/src/components/themeable.jsx index 4a016e99..4338a5c6 100644 --- a/docs/src/components/themeable.jsx +++ b/docs/src/components/themeable.jsx @@ -26,7 +26,7 @@ const customPropName = ` `; const ThemeableDoc = () => ( -
+

ThemeProvider

Description

diff --git a/docs/src/index.css b/docs/src/css/index.css similarity index 51% rename from docs/src/index.css rename to docs/src/css/index.css index 3495198c..475d3bc2 100644 --- a/docs/src/index.css +++ b/docs/src/css/index.css @@ -37,91 +37,54 @@ main { a { text-decoration: none; -} - -main > article { - display: flex; - height: calc(100% - 56px); -} - -main > article > article { - width: calc(100% - 200px); - height: 100%; - overflow-y: scroll; - padding: 32px; - box-sizing: border-box; -} - -main > article article h1, -h2 { - margin-top: 32px; - font-weight: bolder; - margin-bottom: 16px; - font-size: 18px; - color: #757575; -} - -.home > h1, -.doc > h1 { - font-size: 22px; - margin-top: 0; -} - -.home a, -.doc a { font-weight: bolder; color: #757575; } -.home th { +h1, +h2 { color: #757575; font-weight: bolder; } -h2 { - font-weight: normal; - font-size: 18px; - margin-top: 16px; -} - -h3 { - font-size: 17px; -} - -p { - margin: 0 +h1 { + font-size: 32px; + margin-bottom: 24px; } -main > article > article > section { +h2, +.page > section h1 { + font-size: 24px; margin-bottom: 16px; } -main > article > article section:last-of-type { - margin-bottom: 0; +.docs { + display: flex; + height: calc(100% - 56px); } -table thead th { - font-weight: bolder; - text-align: left; +.page { + width: 100%; + height: 100%; + overflow-y: auto; + padding: 24px; + box-sizing: border-box; } -th, -td { - padding: 5px 20px 5px 0; +@media (min-width: 768px) { + .page { + width: calc(100% - 200px); + } } -tr { - border-bottom: 1px solid; +.page > section:not(:last-child) { + margin-bottom: 24px; } .github { width: 24px; } -tbody tr td:nth-of-type(2) { - text-transform: capitalize; -} - .emojione { width: 1em; height: 1em; diff --git a/docs/src/css/meyer-reset.css b/docs/src/css/meyer-reset.css new file mode 100644 index 00000000..ed11813c --- /dev/null +++ b/docs/src/css/meyer-reset.css @@ -0,0 +1,48 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/docs/src/prism.css b/docs/src/css/prism.css similarity index 100% rename from docs/src/prism.css rename to docs/src/css/prism.css diff --git a/docs/src/index.js b/docs/src/index.js index 1a08acac..f8de7ff5 100644 --- a/docs/src/index.js +++ b/docs/src/index.js @@ -51,8 +51,9 @@ import DateSeparator from './components/date-separator'; import EmojiFilter from './components/emoji-filter'; import Gallery from './components/gallery'; import Media from './components/media'; -import './index.css'; -import './prism.css'; +import './css/meyer-reset.css'; +import './css/index.css'; +import './css/prism.css'; ReactDOM.render( From 77c9b297a759253c4fa668dfe32632bbd48240fd Mon Sep 17 00:00:00 2001 From: Sjaak Luthart Date: Sat, 4 Nov 2017 11:08:46 +0100 Subject: [PATCH 5/7] Sjaakluthart/code examples (#939) * Added example. * Added example. * Added example. * Added example. * Added example. * Added example. * Added example. * Added example. * Simplified handler. * Changed markup. * Changed syntax. * Added example. * Removed log. * Added example. --- docs/src/components/admin-badge/example.js | 16 ++++ .../index.jsx} | 19 ++--- docs/src/components/alert/example.js | 17 ++++ .../components/{alert.jsx => alert/index.jsx} | 19 ++--- docs/src/components/app-header/example.js | 24 ++++++ .../{app-header.jsx => app-header/index.jsx} | 32 ++++---- docs/src/components/avatar/example.js | 18 +++++ .../{avatar.jsx => avatar/index.jsx} | 29 +++---- docs/src/components/badge/example.js | 19 +++++ .../components/{badge.jsx => badge/index.jsx} | 19 ++--- docs/src/components/button/example.js | 29 +++++++ .../{button.jsx => button/index.jsx} | 52 ++++--------- docs/src/components/card/example.js | 19 +++++ .../components/{card.jsx => card/index.jsx} | 23 +++--- docs/src/components/channel-header/example.js | 28 +++++++ .../index.jsx} | 25 +++--- docs/src/components/checkbox/example.js | 62 +++++++++++++++ .../{checkbox.jsx => checkbox/index.jsx} | 77 ++++++++----------- .../components/commands/slash-commands.jsx | 1 - docs/src/components/date-separator/example.js | 76 ++++++++++++++++++ .../index.jsx} | 25 +++--- 21 files changed, 431 insertions(+), 198 deletions(-) create mode 100644 docs/src/components/admin-badge/example.js rename docs/src/components/{admin-badge.jsx => admin-badge/index.jsx} (72%) create mode 100644 docs/src/components/alert/example.js rename docs/src/components/{alert.jsx => alert/index.jsx} (77%) create mode 100644 docs/src/components/app-header/example.js rename docs/src/components/{app-header.jsx => app-header/index.jsx} (64%) create mode 100644 docs/src/components/avatar/example.js rename docs/src/components/{avatar.jsx => avatar/index.jsx} (55%) create mode 100644 docs/src/components/badge/example.js rename docs/src/components/{badge.jsx => badge/index.jsx} (76%) create mode 100644 docs/src/components/button/example.js rename docs/src/components/{button.jsx => button/index.jsx} (51%) create mode 100644 docs/src/components/card/example.js rename docs/src/components/{card.jsx => card/index.jsx} (74%) create mode 100644 docs/src/components/channel-header/example.js rename docs/src/components/{channel-header.jsx => channel-header/index.jsx} (69%) create mode 100644 docs/src/components/checkbox/example.js rename docs/src/components/{checkbox.jsx => checkbox/index.jsx} (54%) create mode 100644 docs/src/components/date-separator/example.js rename docs/src/components/{date-separator.jsx => date-separator/index.jsx} (84%) diff --git a/docs/src/components/admin-badge/example.js b/docs/src/components/admin-badge/example.js new file mode 100644 index 00000000..9df9b987 --- /dev/null +++ b/docs/src/components/admin-badge/example.js @@ -0,0 +1,16 @@ +export default ` + \`\`\`jsx + import React from 'react'; + import AdminBadge from 'anchor-ui/admin-badge'; + + const AdminBadgeExample = () => ( +
+ + + +
+ ); + + export default AdminBadgeExample; + \`\`\` +`; diff --git a/docs/src/components/admin-badge.jsx b/docs/src/components/admin-badge/index.jsx similarity index 72% rename from docs/src/components/admin-badge.jsx rename to docs/src/components/admin-badge/index.jsx index 4e908970..c03bbf02 100644 --- a/docs/src/components/admin-badge.jsx +++ b/docs/src/components/admin-badge/index.jsx @@ -1,16 +1,11 @@ import React from 'react'; import _ from 'lodash'; -import AdminBadge from '../../../dist/admin-badge'; -import Props from './props'; -import components from '../../components.json'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import AdminBadge from 'anchor-ui/admin-badge'; - \`\`\` -`; +import AdminBadge from '../../../../dist/admin-badge'; +import Props from '../props'; +import components from '../../../components.json'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; const AdminBadgeDoc = () => { const componentData = _.find(components, component => component.displayName === 'AdminBadge'); @@ -32,9 +27,9 @@ const AdminBadgeDoc = () => {

Description

{componentData.description}

-

Examples

+ diff --git a/docs/src/components/alert/example.js b/docs/src/components/alert/example.js new file mode 100644 index 00000000..0688b051 --- /dev/null +++ b/docs/src/components/alert/example.js @@ -0,0 +1,17 @@ +export default ` + \`\`\`jsx + import React from 'react'; + import Alert from 'anchor-ui/alert'; + + const AlertExample = ({ hideAlert }) => ( +
+ + + + +
+ ); + + export default AlertExample; + \`\`\` +`; diff --git a/docs/src/components/alert.jsx b/docs/src/components/alert/index.jsx similarity index 77% rename from docs/src/components/alert.jsx rename to docs/src/components/alert/index.jsx index c55b4097..a5c3c119 100644 --- a/docs/src/components/alert.jsx +++ b/docs/src/components/alert/index.jsx @@ -1,16 +1,11 @@ import React from 'react'; import _ from 'lodash'; -import Props from './props'; -import Alert from '../../../dist/alert'; -import components from '../../components.json'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import Alert from 'anchor-ui/alert'; - \`\`\` -`; +import Props from '../props'; +import Alert from '../../../../dist/alert'; +import components from '../../../components.json'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; const AlertDoc = () => { const componentData = _.find(components, component => component.displayName === 'Alert'); @@ -32,9 +27,9 @@ const AlertDoc = () => {

Description

{componentData.description}

-

Examples

+ {}} onClick={() => {}} /> {}} onClick={() => {}} /> diff --git a/docs/src/components/app-header/example.js b/docs/src/components/app-header/example.js new file mode 100644 index 00000000..b4262770 --- /dev/null +++ b/docs/src/components/app-header/example.js @@ -0,0 +1,24 @@ +export default ` + \`\`\`jsx + import React from 'react'; + import AppHeader from 'anchor-ui/app-header'; + import Button from 'anchor-ui/button'; + import colors from 'anchor-ui/settings/colors'; + import IconExit from 'anchor-ui/icons/icon-exit'; + import logo from '../../assets/images/logo.svg'; + + const AppHeaderExample = () => ( + } + rightButton={ + + } + /> + ); + + export default AppHeaderExample; + \`\`\` +`; diff --git a/docs/src/components/app-header.jsx b/docs/src/components/app-header/index.jsx similarity index 64% rename from docs/src/components/app-header.jsx rename to docs/src/components/app-header/index.jsx index b3911739..0849d4e2 100644 --- a/docs/src/components/app-header.jsx +++ b/docs/src/components/app-header/index.jsx @@ -1,20 +1,15 @@ import React from 'react'; import _ from 'lodash'; -import AppHeader from '../../../dist/app-header'; -import Button from '../../../dist/button'; -import { colors } from '../../../dist/settings'; -import { IconExit } from '../../../dist/icons'; -import Props from './props'; -import components from '../../components.json'; -import logo from '../assets/images/logo.svg'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import AppHeader from 'anchor-ui/app-header'; - \`\`\` -`; +import AppHeader from '../../../../dist/app-header'; +import Button from '../../../../dist/button'; +import { colors } from '../../../../dist/settings'; +import IconExit from '../../../../dist/icons/icon-exit'; +import Props from '../props'; +import components from '../../../components.json'; +import logo from '../../assets/images/logo.svg'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; const AppHeaderDoc = () => { const componentData = _.find(components, component => component.displayName === 'AppHeader'); @@ -26,7 +21,10 @@ const AppHeaderDoc = () => { margin: 0, padding: '20px' }, - appHeader: { margin: '10px' } + appHeader: { + margin: '10px', + zIndex: '0' + } }; return ( @@ -36,9 +34,9 @@ const AppHeaderDoc = () => {

Description

{componentData.description}

-

Examples

+ ( +
+ + + + + +
+ ); + + export default AvatarExample; + \`\`\` +`; diff --git a/docs/src/components/avatar.jsx b/docs/src/components/avatar/index.jsx similarity index 55% rename from docs/src/components/avatar.jsx rename to docs/src/components/avatar/index.jsx index d223c5bf..810e690b 100644 --- a/docs/src/components/avatar.jsx +++ b/docs/src/components/avatar/index.jsx @@ -1,16 +1,11 @@ import React from 'react'; import _ from 'lodash'; -import Avatar from '../../../dist/avatar'; -import components from '../../components.json'; -import Props from './props'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import Avatar from 'anchor-ui/avatar'; - \`\`\` -`; +import Avatar from '../../../../dist/avatar'; +import components from '../../../components.json'; +import Props from '../props'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; const AvatarDoc = () => { const componentData = _.find(components, component => component.displayName === 'Avatar'); @@ -32,15 +27,15 @@ const AvatarDoc = () => {

Description

{componentData.description}

-

Examples

+ - - - - - + + + + +
diff --git a/docs/src/components/badge/example.js b/docs/src/components/badge/example.js new file mode 100644 index 00000000..83d67ee7 --- /dev/null +++ b/docs/src/components/badge/example.js @@ -0,0 +1,19 @@ +export default ` + \`\`\`jsx + import React from 'react'; + import Badge from 'anchor-ui/badge'; + + const BadgeExample = () => ( +
+ + + + + + +
+ ); + + export default BadgeExample; + \`\`\` +`; diff --git a/docs/src/components/badge.jsx b/docs/src/components/badge/index.jsx similarity index 76% rename from docs/src/components/badge.jsx rename to docs/src/components/badge/index.jsx index 691926e1..da460fd7 100644 --- a/docs/src/components/badge.jsx +++ b/docs/src/components/badge/index.jsx @@ -1,16 +1,11 @@ import React from 'react'; import _ from 'lodash'; -import Badge from '../../../dist/badge'; -import Props from './props'; -import components from '../../components.json'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import Badge from 'anchor-ui/badge'; - \`\`\` -`; +import Badge from '../../../../dist/badge'; +import Props from '../props'; +import components from '../../../components.json'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; const BadgeDoc = () => { const componentData = _.find(components, component => component.displayName === 'Badge'); @@ -32,9 +27,9 @@ const BadgeDoc = () => {

Description

{componentData.description}

-

Examples

+ diff --git a/docs/src/components/button/example.js b/docs/src/components/button/example.js new file mode 100644 index 00000000..3da2f4d0 --- /dev/null +++ b/docs/src/components/button/example.js @@ -0,0 +1,29 @@ +export default ` + \`\`\`jsx + import React from 'react'; + import Button from 'anchor-ui/button'; + import IconEmoji from 'anchor-ui/icons/icon-emoji'; + + const ButtonExample = () => { +
+ + + + + +
+ }; + + export default ButtonExample; + \`\`\` +`; diff --git a/docs/src/components/button.jsx b/docs/src/components/button/index.jsx similarity index 51% rename from docs/src/components/button.jsx rename to docs/src/components/button/index.jsx index 9715e89d..5ba91cf9 100644 --- a/docs/src/components/button.jsx +++ b/docs/src/components/button/index.jsx @@ -1,18 +1,13 @@ import React from 'react'; import _ from 'lodash'; -import IconEmoji from '../../../dist/icons/icon-emoji'; -import Button from '../../../dist/button'; -import Props from './props'; -import components from '../../components.json'; -import colors from '../../../dist/settings/colors'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import Button from 'anchor-ui/button'; - \`\`\` -`; +import IconEmoji from '../../../../dist/icons/icon-emoji'; +import Button from '../../../../dist/button'; +import Props from '../props'; +import components from '../../../components.json'; +import colors from '../../../../dist/settings/colors'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; const ButtonDoc = () => { const componentData = _.find(components, component => component.displayName === 'Button'); @@ -38,42 +33,23 @@ const ButtonDoc = () => {

Description

{componentData.description}

-

Examples

+ - - - - - diff --git a/docs/src/components/card/example.js b/docs/src/components/card/example.js new file mode 100644 index 00000000..04d522fa --- /dev/null +++ b/docs/src/components/card/example.js @@ -0,0 +1,19 @@ +export default ` + \`\`\`jsx + import React from 'react'; + import Card from 'anchor-ui/card'; + import CardHeader from 'anchor-ui/card-header'; + import CardContent from 'anchor-ui/card-content'; + + const CardExample = () => ( + + + +

Content

+
+
+ ); + + export default CardExample; + \`\`\` +`; diff --git a/docs/src/components/card.jsx b/docs/src/components/card/index.jsx similarity index 74% rename from docs/src/components/card.jsx rename to docs/src/components/card/index.jsx index f433bd3e..f6e643f3 100644 --- a/docs/src/components/card.jsx +++ b/docs/src/components/card/index.jsx @@ -1,18 +1,13 @@ import React from 'react'; import _ from 'lodash'; -import Card from '../../../dist/card'; -import CardHeader from '../../../dist/card-header'; -import CardContent from '../../../dist/card-content'; -import Props from './props'; -import components from '../../components.json'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import Card from 'anchor-ui/card'; - \`\`\` -`; +import Card from '../../../../dist/card'; +import CardHeader from '../../../../dist/card-header'; +import CardContent from '../../../../dist/card-content'; +import Props from '../props'; +import components from '../../../components.json'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; const CardDoc = () => { const componentData = _.find(components, component => component.displayName === 'Card'); @@ -36,9 +31,9 @@ const CardDoc = () => {

Description

{componentData.description}

-

Examples

+ diff --git a/docs/src/components/channel-header/example.js b/docs/src/components/channel-header/example.js new file mode 100644 index 00000000..983c2403 --- /dev/null +++ b/docs/src/components/channel-header/example.js @@ -0,0 +1,28 @@ +export default ` + \`\`\`jsx + import React from 'react'; + import ChannelHeader from 'anchor-ui/channel-header'; + import Button from 'anchor-ui/button'; + import IconChannels from 'anchor-ui/cons/icon-channels'; + import IconPeople from 'anchor-ui/cons/icon-people'; + + const ChannelHeaderExample = () => { + + + + } + leftButton={ + + } + /> + }; + + export default ChannelHeaderExample; + \`\`\` +`; diff --git a/docs/src/components/channel-header.jsx b/docs/src/components/channel-header/index.jsx similarity index 69% rename from docs/src/components/channel-header.jsx rename to docs/src/components/channel-header/index.jsx index fa905ad0..338633d5 100644 --- a/docs/src/components/channel-header.jsx +++ b/docs/src/components/channel-header/index.jsx @@ -1,19 +1,14 @@ import React from 'react'; import _ from 'lodash'; -import ChannelHeader from '../../../dist/channel-header'; -import Button from '../../../dist/button'; -import IconChannels from '../../../dist/icons/icon-channels'; -import IconPeople from '../../../dist/icons/icon-people'; -import Props from './props'; -import components from '../../components.json'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import ChannelHeader from 'anchor-ui/channel-header'; - \`\`\` -`; +import ChannelHeader from '../../../../dist/channel-header'; +import Button from '../../../../dist/button'; +import IconChannels from '../../../../dist/icons/icon-channels'; +import IconPeople from '../../../../dist/icons/icon-people'; +import Props from '../props'; +import components from '../../../components.json'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; const ChannelHeaderDoc = () => { const componentData = _.find(components, component => component.displayName === 'ChannelHeader'); @@ -38,9 +33,9 @@ const ChannelHeaderDoc = () => {

Description

{componentData.description}

-

Examples

+ { + const { values } = this.state; + const { value, checked } = event.target; + + if (checked) { + this.setState({ + values: _.union(values, [value]) + }); + } else { + this.setState({ + values: _.without(values, value) + }); + } + } + + render() { + const { values } = this.state; + + return ( +
+ + + +
    + { + _.map(values, (value, key) => ( +
  • {value}
  • + )) + } +
+
+ ); + } + } + + export default CheckboxExample; + \`\`\` +`; diff --git a/docs/src/components/checkbox.jsx b/docs/src/components/checkbox/index.jsx similarity index 54% rename from docs/src/components/checkbox.jsx rename to docs/src/components/checkbox/index.jsx index 85085687..3539f8ba 100644 --- a/docs/src/components/checkbox.jsx +++ b/docs/src/components/checkbox/index.jsx @@ -1,45 +1,31 @@ import React, { Component } from 'react'; import _ from 'lodash'; -import Checkbox from '../../../dist/checkbox'; -import Divider from '../../../dist/divider'; -import colors from '../../../dist/settings/colors'; -import Props from './props'; -import components from '../../components.json'; -import Paper from '../../../dist/paper'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import Checkbox from 'anchor-ui/checkbox'; - \`\`\` -`; +import Checkbox from '../../../../dist/checkbox'; +import Divider from '../../../../dist/divider'; +import Props from '../props'; +import components from '../../../components.json'; +import Paper from '../../../../dist/paper'; +import Markdown from '../markdown'; +import example from './example'; class CheckboxDoc extends Component { - constructor() { - super(); - - this.state = { - values: ['One'] - }; - - this.changeCheckBox = this.changeCheckBox.bind(this); + state = { + values: ['One'] } - changeCheckBox = (event) => { + handleCheckboxChange = (event) => { const { values } = this.state; - const checked = event.target.checked; - const value = event.target.value; + const { value, checked } = event.target; - if (checked && !_.includes(values, value)) { - values.push(value); + if (checked) { + this.setState({ + values: _.union(values, [value]) + }); + } else { + this.setState({ + values: _.without(values, value) + }); } - - if (!checked && _.includes(values, value)) { - const index = _.indexOf(values, value); - values.splice(index, 1); - } - - this.setState({ values }); } render() { @@ -59,11 +45,13 @@ class CheckboxDoc extends Component { checkbox: { margin: '10px' }, - label: { - paddingLeft: 0, - marginTop: '20px', - color: colors.primaryText + list: { + paddingLeft: '24px', + listStyle: 'initial' }, + listItem: { + margin: '8px 0' + } }; return ( @@ -73,13 +61,13 @@ class CheckboxDoc extends Component {

Description

{componentData.description}

-

Examples

+
- -
-

Checked Items:

+ +
    { _.map(values, (value, key) => ( -

    - {value}

    +
  • {value}
  • )) } -
+
diff --git a/docs/src/components/commands/slash-commands.jsx b/docs/src/components/commands/slash-commands.jsx index f544c567..8e0bb96c 100644 --- a/docs/src/components/commands/slash-commands.jsx +++ b/docs/src/components/commands/slash-commands.jsx @@ -61,7 +61,6 @@ class SlashCommands extends Component { } handleClose = () => { - console.log('close'); this.setState({ valueToMatch: '', selectedCommand: '' }); } diff --git a/docs/src/components/date-separator/example.js b/docs/src/components/date-separator/example.js new file mode 100644 index 00000000..9f5678d1 --- /dev/null +++ b/docs/src/components/date-separator/example.js @@ -0,0 +1,76 @@ +export default ` + \`\`\`jsx + import React from 'react'; + import _ from 'lodash'; + import addDays from 'date-fns/add_days'; + import differenceInCalendarDays from 'date-fns/difference_in_calendar_days'; + import Message from 'anchor-ui/message'; + import MessageList from 'anchor-ui/message-list'; + import Paper from 'anchor-ui/paper'; + import DateSeparator from 'anchor-ui/date-separator'; + + const messages = [ + { + body: 'Stop talking, brain thinking. Hush. You know when grown-ups tell you 'everything's going to be fine' and you think they're probably lying to make you feel better? I'm the Doctor. Well, they call me the Doctor. I don't know why. I call me the Doctor too. I still don't know why.', + createdAt: new Date(), + username: 'Sjaak', + avatar: 'https://avatars1.githubusercontent.com/u/6596471?v=3&s=120', + id: 1 + }, + { + body: 'Daleks have no concept of elegance.', + createdAt: new Date(), + username: 'Ian', + avatar: 'https://avatars0.githubusercontent.com/u/14125280?v=3&s=120', + id: 2 + }, + { + body: ':pig2:', + createdAt: addDays(new Date(), 1), + username: 'Sjaak', + avatar: 'https://avatars1.githubusercontent.com/u/6596471?v=3&s=120', + id: 3 + }, + ]; + + const currentUser = 'Ian'; + + const DateSeparatorExample = () => { + let lastDate = new Date(); + + return ( + + {messages.map((message, index) => { + let showDateSeparator = false; + + if (index === 0) { + showDateSeparator = true; + } + + const date = message.createdAt; + const dateIsAfterLastDate = differenceInCalendarDays(date, lastDate); + + if (!showDateSeparator && dateIsAfterLastDate) { + showDateSeparator = true; + } + + lastDate = date; + + return ( + : null} + /> + ); + })} + + ); + }; + + export default DateSeparatorExample; + \`\`\` +`; diff --git a/docs/src/components/date-separator.jsx b/docs/src/components/date-separator/index.jsx similarity index 84% rename from docs/src/components/date-separator.jsx rename to docs/src/components/date-separator/index.jsx index a6e40905..5261671b 100644 --- a/docs/src/components/date-separator.jsx +++ b/docs/src/components/date-separator/index.jsx @@ -2,20 +2,15 @@ import React from 'react'; import _ from 'lodash'; import addDays from 'date-fns/add_days'; import differenceInCalendarDays from 'date-fns/difference_in_calendar_days'; -import Message from '../../../dist/message'; -import MessageList from '../../../dist/message-list'; -import Props from './props'; -import components from '../../components.json'; -import background from '../assets/images/channel-background.jpg'; -import Paper from '../../../dist/paper'; -import DateSeparator from '../../../dist/date-separator'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import DateSeparator from 'anchor-ui/date-separator'; - \`\`\` -`; +import Message from '../../../../dist/message'; +import MessageList from '../../../../dist/message-list'; +import Props from '../props'; +import components from '../../../components.json'; +import background from '../../assets/images/channel-background.jpg'; +import Paper from '../../../../dist/paper'; +import DateSeparator from '../../../../dist/date-separator'; +import Markdown from '../markdown'; +import example from './example'; const messages = [ { @@ -68,9 +63,9 @@ const DateSeparatorDoc = () => {

Description

{componentData.description}

-

Examples

+ {messages.map((message, index) => { From 50c6904ae7d928a71ea2d2f64aefcb61647660db Mon Sep 17 00:00:00 2001 From: Ian Stewart Date: Mon, 6 Nov 2017 12:24:50 +0100 Subject: [PATCH 6/7] Issue #937 (#940) * Added header check to contentContainer. * Added test for `getStyles.contentContainer()`. Fixes #937. * Added code example for menu. * Fixed example. --- docs/src/components/menu/example.js | 58 +++++++++++++++++++ .../components/{menu.jsx => menu/index.jsx} | 25 ++++---- docs/src/components/message-input/example.js | 2 +- src/menu/get-styles.js | 10 +++- src/menu/index.jsx | 2 +- test/menu/get-styles.test.js | 32 ++++++++++ 6 files changed, 111 insertions(+), 18 deletions(-) create mode 100644 docs/src/components/menu/example.js rename docs/src/components/{menu.jsx => menu/index.jsx} (86%) diff --git a/docs/src/components/menu/example.js b/docs/src/components/menu/example.js new file mode 100644 index 00000000..8b1ab723 --- /dev/null +++ b/docs/src/components/menu/example.js @@ -0,0 +1,58 @@ +export default ` + \`\`\`jsx + import React, { Component } from 'react'; + import Menu from 'anchor-ui/menu'; + import IconRocket from 'anchor-ui/icons/icon-rocket'; + + class MyComponent extends Component { + state = { + open: false, + activeRoute: '' + }; + + toggleMenu() { + this.setState({ + open: !this.state.open + }); + } + + handleClick(location) { + this.setState({ + activeRoute: location + }); + } + + render() { + const { open, activeRoute } = this.state; + + return ( +
+ } + footer="Footer" + > + this.handleClick('/')} + active={activeRoute === '/'} + /> + this.handleClick('/docs')} + active={activeRoute === '/docs'} + /> + this.handleClick('/dashboard')} + active={activeRoute === '/dashboard'} + /> + +
+ ); + } + } + \`\`\` +`; diff --git a/docs/src/components/menu.jsx b/docs/src/components/menu/index.jsx similarity index 86% rename from docs/src/components/menu.jsx rename to docs/src/components/menu/index.jsx index c92834ae..76cc234f 100644 --- a/docs/src/components/menu.jsx +++ b/docs/src/components/menu/index.jsx @@ -1,19 +1,14 @@ import React, { Component } from 'react'; import _ from 'lodash'; -import Menu from '../../../dist/menu'; -import MenuItem from '../../../dist/menu-item'; -import Button from '../../../dist/button'; -import Props from './props'; -import components from '../../components.json'; -import Paper from '../../../dist/paper'; -import IconRocket from '../../../dist/icons/icon-rocket'; -import Markdown from './markdown'; - -const usage = ` - \`\`\`js - import Menu from 'anchor-ui/menu'; - \`\`\` -`; +import Menu from '../../../../dist/menu'; +import MenuItem from '../../../../dist/menu-item'; +import Button from '../../../../dist/button'; +import Props from '../props'; +import components from '../../../components.json'; +import Paper from '../../../../dist/paper'; +import IconRocket from '../../../../dist/icons/icon-rocket'; +import Markdown from '../markdown'; +import example from './example'; class MenuDoc extends Component { constructor() { @@ -61,7 +56,7 @@ class MenuDoc extends Component {

Description

{componentData.description}

- +

Examples

diff --git a/docs/src/components/message-input/example.js b/docs/src/components/message-input/example.js index deccee2d..e751e330 100644 --- a/docs/src/components/message-input/example.js +++ b/docs/src/components/message-input/example.js @@ -1,5 +1,5 @@ export default ` - \`\`\`js + \`\`\`jsx import React, { Component } from 'react'; import MessageInput from 'anchor-ui/message-input'; diff --git a/src/menu/get-styles.js b/src/menu/get-styles.js index 84ddf117..27ef1ffa 100644 --- a/src/menu/get-styles.js +++ b/src/menu/get-styles.js @@ -24,13 +24,21 @@ const root = (open, overrideStyle) => { return combineStyles(style, overrideStyle); }; -const contentContainer = (footer, overrideStyle) => { +const contentContainer = (header, footer, overrideStyle) => { let style = styles.contentContainer; + if (header) { + style = combineStyles(style, { maxHeight: 'calc(100% - 48px)' }); + } + if (footer) { style = combineStyles(style, { maxHeight: 'calc(100% - 35px)' }); } + if (header && footer) { + style = combineStyles(style, { maxHeight: 'calc(100% - 83px)' }); + } + return combineStyles(style, overrideStyle); }; diff --git a/src/menu/index.jsx b/src/menu/index.jsx index 0ff6191e..9cf3a331 100644 --- a/src/menu/index.jsx +++ b/src/menu/index.jsx @@ -58,7 +58,7 @@ class Menu extends Component { ?

{header}

: null } -
+
{menuItems} {footer ? {footer} : null}
diff --git a/test/menu/get-styles.test.js b/test/menu/get-styles.test.js index 77d3591e..c872dd42 100644 --- a/test/menu/get-styles.test.js +++ b/test/menu/get-styles.test.js @@ -47,6 +47,38 @@ describe('Menu.getStyles', () => { }); }); + describe('contentContainer', () => { + it('should get styles', () => { + const style = getStyles.contentContainer(); + + expect(style).to.deep.equal(styles.contentContainer); + }); + + it('should add header styles', () => { + const style = getStyles.contentContainer(true); + + expect(style).to.have.property('maxHeight', 'calc(100% - 48px)'); + }); + + it('should add footer styles', () => { + const style = getStyles.contentContainer(false, true); + + expect(style).to.have.property('maxHeight', 'calc(100% - 35px)'); + }); + + it('should add header & footer styles', () => { + const style = getStyles.contentContainer(true, true); + + expect(style).to.have.property('maxHeight', 'calc(100% - 83px)'); + }); + + it('should combine styles', () => { + const style = getStyles.contentContainer(false, false, { color: 'red' }); + + expect(style).to.have.property('color', 'red'); + }); + }); + describe('header', () => { it('should get styles', () => { const style = getStyles.header(); From bf510afef249d3fa82cfe56d31ebf41bd8566d2a Mon Sep 17 00:00:00 2001 From: Ian Stewart Date: Mon, 6 Nov 2017 12:27:13 +0100 Subject: [PATCH 7/7] Issue #552 button (#942) * Fixed button getStyle test. * New structure for correct testing. * Fixed index test. --- src/button/{index.jsx => component.jsx} | 10 +--------- src/button/index.js | 11 +++++++++++ test/button/get-styles.test.js | 17 +++++++++++++++-- test/button/index.test.js | 20 ++++++++++---------- 4 files changed, 37 insertions(+), 21 deletions(-) rename src/button/{index.jsx => component.jsx} (86%) create mode 100644 src/button/index.js diff --git a/src/button/index.jsx b/src/button/component.jsx similarity index 86% rename from src/button/index.jsx rename to src/button/component.jsx index a9ea293e..c010bbde 100644 --- a/src/button/index.jsx +++ b/src/button/component.jsx @@ -1,9 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import compose from 'recompose/compose'; -import Radium from 'radium'; import getStyles from './get-styles'; -import themeable from '../themeable'; /** General purpose button with three types */ const Button = ({ @@ -52,9 +49,4 @@ Button.defaultProps = { flatButton: false }; -const enhance = compose( - themeable(), - Radium -); - -export default enhance(Button); +export default Button; diff --git a/src/button/index.js b/src/button/index.js new file mode 100644 index 00000000..b14bfe47 --- /dev/null +++ b/src/button/index.js @@ -0,0 +1,11 @@ +import Radium from 'radium'; +import compose from 'recompose/compose'; +import themeable from '../themeable'; +import Button from './component'; + +const enhance = compose( + themeable(), + Radium +); + +export default enhance(Button); diff --git a/test/button/get-styles.test.js b/test/button/get-styles.test.js index 9e8224fb..2dda4ec7 100644 --- a/test/button/get-styles.test.js +++ b/test/button/get-styles.test.js @@ -2,6 +2,10 @@ import { expect } from 'chai'; import getStyles from '../../src/button/get-styles'; import styles from '../../src/button/styles'; +import colors from '../../src/settings/colors'; +import darken from '../../src/internal/darken'; +import fade from '../../src/internal/fade'; +import internalStyles from '../../src/settings/styles'; describe('Button.getStyles', () => { describe('root', () => { @@ -21,18 +25,22 @@ describe('Button.getStyles', () => { const style = getStyles.root('red'); expect(style).to.have.property('backgroundColor', 'red'); + expect(style[':hover']).to.have.property('backgroundColor', darken('red', 0.15)); }); it('should add inverted styles', () => { const style = getStyles.root('red', true); - expect(style).to.have.property('backgroundColor', '#FEFEFE'); + expect(style).to.have.property('color', 'red'); + expect(style).to.have.property('backgroundColor', colors.white); + expect(style[':hover']).to.have.property('backgroundColor', darken(colors.white, 0.15)); + expect(style[':active']).to.have.property('boxShadow', internalStyles.depthShadows[1]); }); it('should add iconButton styles', () => { const style = getStyles.root('red', false, true); - expect(style).to.have.property('borderRadius', '50%'); + expect(style).to.deep.equal(styles.iconButton); }); it('should add disabled styles', () => { @@ -45,6 +53,11 @@ describe('Button.getStyles', () => { const style = getStyles.root('red', false, false, false, true); expect(style).to.have.property('backgroundColor', 'transparent'); + expect(style).to.have.property('boxShadow', 'none'); + expect(style).to.have.property('textTransform', 'uppercase'); + expect(style).to.have.property('flexShrink', 0); + expect(style[':hover']).to.have.property('backgroundColor', fade(colors.black, 0.95)); + expect(style[':active']).to.have.property('backgroundColor', fade(colors.black, 0.85)); }); }); }); diff --git a/test/button/index.test.js b/test/button/index.test.js index 7fe7eb8b..51cea777 100644 --- a/test/button/index.test.js +++ b/test/button/index.test.js @@ -5,7 +5,7 @@ import chai, { expect } from 'chai'; import { shallow } from 'enzyme'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; -import Button from '../../src/button'; +import Button from '../../src/button/component'; import getStyles from '../../src/button/get-styles'; chai.use(sinonChai); @@ -13,7 +13,7 @@ chai.use(sinonChai); describe('Button', () => { const props = { onClick: null, - style: { root: true }, + style: {}, iconButton: false, inverted: false, disabled: false, @@ -30,24 +30,24 @@ describe('Button', () => { global.navigator = undefined; }); - it('should always render a button element', () => { - const wrapper = shallow().dive(); + it('should be an instanceOf Button', () => { + const component = shallow(); - expect(wrapper.find('button')).to.have.length(1); + expect(component.find('button').exists()).to.equal(true); }); it('should render children', () => { - const wrapper = shallow().dive(); + const component = shallow(); - expect(wrapper.containsMatchingElement(

children

)).to.equal(true); + expect(component.containsMatchingElement(

children

)).to.equal(true); }); it('should call button onClick function', () => { const spy = sinon.spy(); props.onClick = spy; - const wrapper = shallow().dive(); + const component = shallow(); - wrapper.find('button').simulate('click'); + component.find('button').simulate('click'); expect(spy).to.have.callCount(1); props.hideAlert = null; }); @@ -55,7 +55,7 @@ describe('Button', () => { it('should get root styles', () => { const spy = sinon.spy(getStyles, 'root'); - shallow().dive(); + shallow(); expect(spy).to.have.been.calledWith( props.color, props.inverted, props.iconButton, props.disabled, props.flatButton, props.style );