Skip to content

Commit

Permalink
Self contained styles (+pptr) (#387)
Browse files Browse the repository at this point in the history
* Styles are now encapsulated
  • Loading branch information
montezume committed Jan 7, 2019
1 parent 2d5a944 commit fa2a1cd
Show file tree
Hide file tree
Showing 40 changed files with 144 additions and 121 deletions.
6 changes: 6 additions & 0 deletions .storybook/main.mod.css
@@ -1,3 +1,9 @@
html,
body {
margin: 0;
padding: 0;
}

body {
overflow: auto;
}
45 changes: 0 additions & 45 deletions materials/internals/grid.mod.css

This file was deleted.

32 changes: 0 additions & 32 deletions materials/internals/reset.mod.css

This file was deleted.

1 change: 1 addition & 0 deletions package.json
Expand Up @@ -186,6 +186,7 @@
"postcss-preset-env": "6.5.0",
"postcss-reporter": "6.0.0",
"postcss-safe-parser": "4.0.1",
"pptr-testing-library": "0.3.1",
"prettier": "1.15.3",
"puppeteer": "1.11.0",
"rcfile": "1.0.3",
Expand Down
5 changes: 5 additions & 0 deletions playground/src/playground.css
@@ -0,0 +1,5 @@
html,
body {
margin: 0;
padding: 0;
}
1 change: 1 addition & 0 deletions playground/src/playground.js
@@ -1,6 +1,7 @@
import React from 'react';
import { PrimaryButton, MoneyInput, i18n } from 'ui-kit';
import { IntlProvider } from 'react-intl';
import './playground.css';

export default class Playground extends React.Component {
static displayName = 'Playground';
Expand Down
13 changes: 10 additions & 3 deletions src/components/avatar/avatar.js
Expand Up @@ -37,7 +37,7 @@ const GravatarImg = props => (
className={styles['gravatar-img']}
src={createGravatarImgUrl(props.hash, getSizeInPx(props.size))}
srcSet={oneLineTrim`
${createGravatarImgUrl(props.hash, getSizeInPx(props.size))} 1x,
${createGravatarImgUrl(props.hash, getSizeInPx(props.size))} 1x,
${createGravatarImgUrl(props.hash, getSizeInPx(props.size) * 2)} 2x
`}
/>
Expand All @@ -50,7 +50,9 @@ GravatarImg.propTypes = {
};

const Initials = props => (
<div className={styles.initials}>
<div
className={classnames(styles.initials, styles[`initials-${props.size}`])}
>
{getInitialsFromName({
firstName: props.firstName,
lastName: props.lastName,
Expand All @@ -62,6 +64,7 @@ Initials.displayName = 'Initials';
Initials.propTypes = {
firstName: PropTypes.string,
lastName: PropTypes.string,
size: PropTypes.oneOf(['s', 'm', 'l']).isRequired,
};

const Avatar = props => (
Expand All @@ -76,7 +79,11 @@ const Avatar = props => (
{...filterDataAttributes(props)}
>
<GravatarImg hash={props.gravatarHash} size={props.size} />
<Initials firstName={props.firstName} lastName={props.lastName} />
<Initials
size={props.size}
firstName={props.firstName}
lastName={props.lastName}
/>
</div>
);
Avatar.displayName = 'Avatar';
Expand Down
17 changes: 14 additions & 3 deletions src/components/avatar/avatar.mod.css
Expand Up @@ -6,8 +6,10 @@

.avatar-base {
align-items: center;
font-family: var(--font-family-default);
background-color: var(--color-gray-60);
border-radius: 100%;
font-size: var(--font-size-default);
color: var(--color-white);
display: flex;
justify-content: center;
Expand All @@ -34,20 +36,29 @@
opacity: 0.7;
}

.initials-s {
font-size: 1em;
}

.initials-m {
font-size: 1.5em;
}

.initials-l {
font-size: 3em;
}

.avatar-s {
font-size: 1rem;
height: var(--size-s);
width: var(--size-s);
}

.avatar-m {
font-size: 1.5rem;
height: var(--size-m);
width: var(--size-m);
}

.avatar-l {
font-size: 3rem;
height: var(--size-l);
width: var(--size-l);
}
22 changes: 0 additions & 22 deletions src/components/avatar/avatar.spec.js
@@ -1,5 +1,4 @@
import React from 'react';
import oneLineTrim from 'common-tags/lib/oneLineTrim';
import Avatar from './avatar';
import { render } from '../../test-utils';

Expand All @@ -19,25 +18,4 @@ describe('Avatar', () => {

expect(container.querySelector("[data-foo='bar']")).toBeInTheDocument();
});

it('should render an <img> with `src` attribute', () => {
const { container } = render(<Avatar data-foo="bar" {...props} />);

expect(container.querySelector('img')).toHaveAttribute(
'src',
'https://www.gravatar.com/avatar/20c9c1b252b46ab49d6f7a4cee9c3e68?s=100&d=blank'
);
});

it('should render an <img> with `srcset` attribute', () => {
const { container } = render(<Avatar data-foo="bar" {...props} />);

expect(container.querySelector('img')).toHaveAttribute(
'srcset',
oneLineTrim`
https://www.gravatar.com/avatar/20c9c1b252b46ab49d6f7a4cee9c3e68?s=100&d=blank 1x,
https://www.gravatar.com/avatar/20c9c1b252b46ab49d6f7a4cee9c3e68?s=200&d=blank 2x
`
);
});
});
Expand Up @@ -10,6 +10,8 @@
cursor: pointer;
color: inherit;
font: inherit;
font-size: var(--font-size-default);
font-family: var(--font-family-default);
}

.disabled {
Expand Down
Expand Up @@ -22,7 +22,7 @@
.button {
display: flex;
align-items: center;
font-size: 1rem;
font-size: var(--font-size-default);
}

.button {
Expand Down
Expand Up @@ -12,7 +12,7 @@
background-color: var(--color-white);
box-shadow: var(--shadow-7);
color: var(--color-black);
font-size: 1rem;
font-size: var(--font-size-default);
transition: background-color var(--transition-linear-80ms),
box-shadow var(--transition-easeinout-150ms);
}
Expand All @@ -36,6 +36,10 @@
border-radius: var(--border-radius-6);
}

a.container {
text-decoration: none;
}

/* The actual button element */

.button {
Expand Down
@@ -1,12 +1,17 @@
import { percySnapshot } from '@percy/puppeteer';
import { getDocument, queries } from 'pptr-testing-library';

const { getByLabelText } = queries;

describe('SecondaryButton', () => {
beforeAll(async () => {
await page.goto(`${HOST}/secondary-button`);
});

it('Default', async () => {
await expect(page).toMatch('A label text');
const doc = await getDocument(page);
const button = await getByLabelText(doc, 'A label text');
expect(button).toBeTruthy();
await percySnapshot(page, 'SecondaryButton');
});
});
6 changes: 0 additions & 6 deletions src/components/field-label/field-label.mod.css
@@ -1,9 +1,3 @@
.wrapper {
overflow: hidden;
width: 100%;
flex: 1;
}

.hint,
.label {
float: left;
Expand Down
@@ -1,6 +1,6 @@
import { percySnapshot } from '@percy/puppeteer';

describe('DateTimeIpnut', () => {
describe('DateTimeInput', () => {
it('Default', async () => {
await page.goto(`${HOST}/date-time-input`);
await expect(page).toMatch('minimal');
Expand Down
2 changes: 1 addition & 1 deletion src/components/inputs/date-time-input/time-input.mod.css
Expand Up @@ -5,8 +5,8 @@
border-top: 1px solid var(--color-gray-90);
padding: 10px 0;
outline: 0;
margin-top: var(--spacing-8);
font-size: var(--font-size-default);
margin-top: var(--spacing-8);
color: var(--color-black);
}

Expand Down
Expand Up @@ -30,6 +30,7 @@
}

.input {
box-sizing: border-box;
color: var(--font-color-default);
font-family: var(--font-family-default);
font-size: var(--font-size-default);
Expand Down
Expand Up @@ -9,6 +9,7 @@
.languageLabel {
/* avoid wrapping label onto new lines */
flex: 1 0 auto;
box-sizing: border-box;
color: var(--font-color-disabled);
height: var(--size-height-input);
line-height: var(--size-height-input);
Expand All @@ -24,6 +25,7 @@
}

.input {
box-sizing: border-box;
color: var(--font-color-default);
font-family: var(--font-family-default);
font-size: var(--font-size-default);
Expand Down
4 changes: 4 additions & 0 deletions src/components/inputs/money-input/money-input.mod.css
Expand Up @@ -9,9 +9,12 @@
padding: 0 var(--spacing-8);
align-items: center;
min-width: 72px;
font-size: var(--font-size-default);
box-sizing: border-box;
}

.field-container {
font-family: var(--font-family-default);
width: 100%;
position: relative;
display: flex;
Expand All @@ -20,6 +23,7 @@
.amountInput {
display: flex;
flex: 1;
box-sizing: border-box;
color: var(--font-color-default);
font-family: var(--font-family-default);
font-size: var(--font-size-default);
Expand Down
Expand Up @@ -13,6 +13,7 @@
/* Default */

.textarea {
box-sizing: border-box;
color: var(--font-color-default);
font-family: var(--font-family-default);
font-size: var(--font-size-default);
Expand Down
1 change: 1 addition & 0 deletions src/components/inputs/number-input/number-input.mod.css
Expand Up @@ -7,6 +7,7 @@

.input {
color: var(--font-color-default);
box-sizing: border-box;
font-family: var(--font-family-default);
font-size: var(--font-size-default);
height: var(--size-height-input);
Expand Down
Expand Up @@ -6,6 +6,7 @@
}

.input {
box-sizing: border-box;
color: var(--font-color-default);
font-family: var(--font-family-default);
font-size: var(--font-size-default);
Expand Down
1 change: 1 addition & 0 deletions src/components/inputs/text-input/text-input.mod.css
Expand Up @@ -19,6 +19,7 @@
transition: var(--transition-standard);
outline: none;
box-shadow: none;
box-sizing: border-box;
appearance: none;
}

Expand Down

0 comments on commit fa2a1cd

Please sign in to comment.