Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Polish component docs #153

Merged
merged 44 commits into from
Jun 16, 2020
Merged
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
42fb2a1
feat: Add a PageTitle component and update the reference templates to…
jerelmiller Jun 15, 2020
f7cc7ca
chore: Update line-height site-wide
jerelmiller Jun 15, 2020
fb68322
chore: Update spacing and font-weight on page title
jerelmiller Jun 15, 2020
2ae65d8
chore: Remove spacing on description
jerelmiller Jun 15, 2020
e6dd2bf
chore: Remove top margin from all headers
jerelmiller Jun 15, 2020
742cce1
feat: More tweaks to component doc styling
jerelmiller Jun 15, 2020
52e0c85
feat: Polish styles on method references
jerelmiller Jun 15, 2020
c5cc80f
feat: Add some polish to the prop list
jerelmiller Jun 15, 2020
567e1d5
refactor: Extract getTypeDefs into util function
jerelmiller Jun 15, 2020
8e5dd80
chore: Polish styles on type def reference
jerelmiller Jun 15, 2020
6c5f51a
chore: better spacing for all p tags
jerelmiller Jun 16, 2020
cc6c84f
feat: Create a CodeDef component to abstract the styles of a code def…
jerelmiller Jun 16, 2020
d8e80b3
chore: Use CodeDef in TypeDefReference
jerelmiller Jun 16, 2020
630ff4f
feat: Add operator component for code def
jerelmiller Jun 16, 2020
2f86c62
chore: Better line height and color for keywords
jerelmiller Jun 16, 2020
720e4c1
chore: Update FunctionDefinition to use CodeDef
jerelmiller Jun 16, 2020
361a71f
feat: Update ConstantReference to use CodeDef
jerelmiller Jun 16, 2020
b0ecdfc
feat: Add number and string components for code def
jerelmiller Jun 16, 2020
b15f120
feat: Add syntax highlighting for constants
jerelmiller Jun 16, 2020
83d33f8
refactor: Extract value to JsonValue component
jerelmiller Jun 16, 2020
ce0eb31
chore: Swap margins on p tags
jerelmiller Jun 16, 2020
3d021b1
Merge remote-tracking branch 'origin/master' into jerel/polish-compon…
jerelmiller Jun 16, 2020
23190b0
feat: Create a Markdown component
jerelmiller Jun 16, 2020
41b654c
feat: Change default list styles
jerelmiller Jun 16, 2020
7193215
feat: Use Markdown component for reference templates
jerelmiller Jun 16, 2020
d957f4d
feat: Use the Markdown component for MethodReference
jerelmiller Jun 16, 2020
6a72ead
chore: Minor tweaks to code inside markdown
jerelmiller Jun 16, 2020
3e36937
feat: Remove bottom margin in markdown if p tag is last
jerelmiller Jun 16, 2020
db01bd6
feat: Add small spacing and border radius on types
jerelmiller Jun 16, 2020
a5591d4
feat: Polish some more styles on prop list
jerelmiller Jun 16, 2020
b120fdc
chore: Remove border between examples
jerelmiller Jun 16, 2020
555cddc
chore: Omit Select from live examples
jerelmiller Jun 16, 2020
0aa2bb0
feat: Add a max height on component examples
jerelmiller Jun 16, 2020
6e94f13
feat: Smarter line break opportunities for default values
jerelmiller Jun 16, 2020
de6e2df
fix: Ensure right-column on prop list does not overflow
jerelmiller Jun 16, 2020
b0cf375
chore: Switch to overflow-wrap
jerelmiller Jun 16, 2020
7020f7a
feat: Polish icon gallery
jerelmiller Jun 16, 2020
c4e6094
feat: Ensure charts examples have a height defined
jerelmiller Jun 16, 2020
96650aa
feat: Double the space on shape prop types
jerelmiller Jun 16, 2020
305946d
feat: Ensure equal spacing between prop list info
jerelmiller Jun 16, 2020
a9bea8d
chore: Update renamed bracket component
jerelmiller Jun 16, 2020
5d4eab3
refactor: Simpler logic for wrapping function def keyword/bracket
jerelmiller Jun 16, 2020
ebc3073
chore: Place word-break opportunity before .
jerelmiller Jun 16, 2020
867b60c
Merge remote-tracking branch 'origin/master' into jerel/polish-compon…
jerelmiller Jun 16, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/components/CodeDef/Block.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import React from 'react';
import PropTypes from 'prop-types';
import styles from './CodeDef.module.scss';

const Block = ({ children }) => <div className={styles.block}>{children}</div>;

Block.propTypes = {
children: PropTypes.node,
};

export default Block;
13 changes: 13 additions & 0 deletions src/components/CodeDef/Bracket.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react';
import PropTypes from 'prop-types';
import styles from './CodeDef.module.scss';

const Bracket = ({ children }) => (
<span className={styles.bracket}>{children}</span>
);

Bracket.propTypes = {
children: PropTypes.node,
};

export default Bracket;
34 changes: 34 additions & 0 deletions src/components/CodeDef/CodeDef.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import React from 'react';
import PropTypes from 'prop-types';
import cx from 'classnames';
import styles from './CodeDef.module.scss';
import Block from './Block';
import Bracket from './Bracket';
import Comment from './Comment';
import Identifier from './Identifier';
import Keyword from './Keyword';
import NumberValue from './Number';
import Operator from './Operator';
import StringValue from './String';
import Type from './Type';

const CodeDef = ({ className, children }) => (
<code className={cx(styles.container, className)}>{children}</code>
);

CodeDef.propTypes = {
className: PropTypes.string,
children: PropTypes.node,
};

CodeDef.Block = Block;
CodeDef.Bracket = Bracket;
CodeDef.Comment = Comment;
CodeDef.Keyword = Keyword;
CodeDef.Identifier = Identifier;
CodeDef.Number = NumberValue;
CodeDef.Operator = Operator;
CodeDef.String = StringValue;
CodeDef.Type = Type;
Comment on lines +24 to +32
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call on doing this for the reuse/flexibility/consistency 💯


export default CodeDef;
41 changes: 41 additions & 0 deletions src/components/CodeDef/CodeDef.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
.container {
display: block;
line-height: 2;
}

.identifier {
color: var(--color-neutrals-700);
}

.type {
padding: 0.125rem;
border-radius: 0.125rem;
color: var(--color-green-500);
background: var(--color-green-050);
}

.comment {
color: var(--color-neutrals-500);

> p {
display: inline;
}
}

.keyword,
.bracket,
.operator {
color: var(--color-neutrals-600);
}

.block {
margin-left: 1rem;
}

.string {
color: var(--color-green-500);
}

.number {
color: var(--color-red-400);
}
32 changes: 32 additions & 0 deletions src/components/CodeDef/Comment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import React, { Children } from 'react';
import PropTypes from 'prop-types';
import Markdown from 'react-markdown';
import styles from './CodeDef.module.scss';

const Content = ({ children, ...props }) => {
if (Children.toArray(children).length === 0) {
return null;
}

return (
<span {...props} className={styles.comment}>
{`//`} {children}
</span>
);
};

const renderers = {
root: Content,
};

const Comment = ({ text }) => <Markdown source={text} renderers={renderers} />;

Content.propTypes = {
children: PropTypes.node,
};

Comment.propTypes = {
text: PropTypes.string,
};

export default Comment;
13 changes: 13 additions & 0 deletions src/components/CodeDef/Identifier.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react';
import PropTypes from 'prop-types';
import styles from './CodeDef.module.scss';

const Identifier = ({ children }) => (
<span className={styles.identifier}>{children}</span>
);

Identifier.propTypes = {
children: PropTypes.node,
};

export default Identifier;
13 changes: 13 additions & 0 deletions src/components/CodeDef/Keyword.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react';
import PropTypes from 'prop-types';
import styles from './CodeDef.module.scss';

const Keyword = ({ children }) => (
<span className={styles.keyword}>{children}</span>
);

Keyword.propTypes = {
children: PropTypes.node,
};

export default Keyword;
13 changes: 13 additions & 0 deletions src/components/CodeDef/Number.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react';
import PropTypes from 'prop-types';
import styles from './CodeDef.module.scss';

const NumberValue = ({ value }) => (
<span className={styles.number}>{value}</span>
);

NumberValue.propTypes = {
value: PropTypes.number.isRequired,
};

export default NumberValue;
13 changes: 13 additions & 0 deletions src/components/CodeDef/Operator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react';
import PropTypes from 'prop-types';
import styles from './CodeDef.module.scss';

const Operator = ({ children }) => (
<span className={styles.operator}>{children}</span>
);

Operator.propTypes = {
children: PropTypes.node,
};

export default Operator;
13 changes: 13 additions & 0 deletions src/components/CodeDef/String.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react';
import PropTypes from 'prop-types';
import styles from './CodeDef.module.scss';

const StringValue = ({ value }) => (
<span className={styles.string}>"{value}"</span>
);

StringValue.propTypes = {
value: PropTypes.string.isRequired,
};

export default StringValue;
11 changes: 11 additions & 0 deletions src/components/CodeDef/Type.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import React from 'react';
import PropTypes from 'prop-types';
import styles from './CodeDef.module.scss';

const Type = ({ children }) => <span className={styles.type}>{children}</span>;

Type.propTypes = {
children: PropTypes.node,
};

export default Type;
1 change: 1 addition & 0 deletions src/components/CodeDef/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default } from './CodeDef';
25 changes: 11 additions & 14 deletions src/components/ConstantReference.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,26 @@
import React from 'react';
import Markdown from 'react-markdown';
import PropTypes from 'prop-types';
import CodeDef from './CodeDef';
import JsonValue from './JsonValue';
import styles from './ConstantReference.module.scss';

const ConstantReference = ({ constant }) => {
const { name, values, type } = constant;
const { name, value } = constant;

return (
<div className={styles.container}>
<div className={styles.name}>{name}</div>
<div>{type === 'array' ? '[' : '{'}</div>
<div className={styles.constantContainer}>
{values.map((value, i) => (
<Markdown key={i} source={value} />
))}
</div>
<div>{type === 'array' ? ']' : '}'}</div>
</div>
<CodeDef className={styles.container}>
<h3 className={styles.name}>
<code>{name}</code>
</h3>
<JsonValue value={value} />
</CodeDef>
);
};

ConstantReference.propTypes = {
constant: PropTypes.shape({
type: PropTypes.string,
name: PropTypes.string,
values: PropTypes.array,
value: PropTypes.any,
}),
};

Expand Down
15 changes: 6 additions & 9 deletions src/components/ConstantReference.module.scss
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
.container {
color: var(--color-neutrals-500);
font-family: var(--code-font);
color: var(--color-neutrals-600);
font-size: 0.875rem;
line-height: 1.5;
margin-top: 2rem;

&:not(:last-child) {
margin-bottom: 2rem;
}
}

.name {
font-size: 1rem;
font-family: var(--primary-font-family);
color: var(--color-neutrals-800);
font-weight: normal;
margin-bottom: 0.5rem;
}

.block {
margin-left: 0.5rem;
}

.constantContainer {
margin: 0 0 1rem 1.5rem;
}
69 changes: 27 additions & 42 deletions src/components/FunctionDefinition.js
Original file line number Diff line number Diff line change
@@ -1,53 +1,38 @@
import React, { Children } from 'react';
import React from 'react';
import PropTypes from 'prop-types';
import Markdown from 'react-markdown';
import cx from 'classnames';
import CodeDef from './CodeDef';
import styles from './FunctionDefinition.module.scss';

const ParamDescription = ({ children, ...props }) => {
if (Children.toArray(children).length === 0) {
return null;
}

return (
<span {...props} className={styles.paramDescription}>
{' //'} {children}
</span>
);
};

ParamDescription.propTypes = {
children: PropTypes.node,
};

const FunctionDefinition = ({ params, returnValue }) => {
const FunctionDefinition = ({ className, params, returnValue }) => {
return (
<div className={styles.container}>
<span className={styles.keyword}>
{params.length > 0 ? 'function (' : 'function ()'}
</span>
{params.map((param, i) => (
<div key={i} className={styles.param}>
<span className={styles.paramName}>
{param.type.startsWith('...') ? `...${param.name}` : param.name}:{' '}
</span>
<span className={styles.type}>{param.type}</span>
{i !== params.length - 1 && ', '}
<Markdown
source={param.description}
renderers={{
root: ParamDescription,
}}
/>
</div>
))}
{params.length > 0 && <span className={styles.keyword}>)</span>}
<span className={styles.keyword}> => </span>
<span className={styles.type}>{returnValue.type}</span>
</div>
<CodeDef className={cx(styles.container, className)}>
<CodeDef.Keyword>function</CodeDef.Keyword>{' '}
<CodeDef.Bracket>{params.length > 0 ? '(' : '()'}</CodeDef.Bracket>
{params.length > 0 && (
<CodeDef.Block>
{params.map((param, i) => (
<div key={i}>
<CodeDef.Identifier>
{param.type.startsWith('...') ? `...${param.name}` : param.name}
:{' '}
</CodeDef.Identifier>
<CodeDef.Type>{param.type}</CodeDef.Type>
{i !== params.length - 1 ? ', ' : ' '}
<CodeDef.Comment text={param.description} />
</div>
))}
</CodeDef.Block>
)}
{params.length > 0 && <CodeDef.Bracket>)</CodeDef.Bracket>}
<CodeDef.Operator> => </CodeDef.Operator>
<CodeDef.Type>{returnValue.type}</CodeDef.Type>
</CodeDef>
);
};

FunctionDefinition.propTypes = {
className: PropTypes.string,
params: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string,
Expand Down
Loading