Skip to content

Commit

Permalink
feat: refactor MemberProfile component
Browse files Browse the repository at this point in the history
  • Loading branch information
thisislawatts committed Feb 21, 2022
1 parent 5fab501 commit 6dc9206
Show file tree
Hide file tree
Showing 15 changed files with 408 additions and 145 deletions.
8 changes: 5 additions & 3 deletions packages/storybook/.storybook/preview.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@ import { GlobalStyle } from '../../../src/themes/app.globalStyles'
import preciousPlasticTheme from '../../../src/themes/precious-plastic/styles'
import projectKampTheme from '../../../src/themes/project-kamp/styles'

import { MemoryRouter } from 'react-router'

// pass ThemeProvider and array of your themes to decorator
addDecorator(
withThemes(ThemeProvider, [preciousPlasticTheme, projectKampTheme]),
)

addDecorator((story) => (
addDecorator(story => (
<>
<GlobalStyle/>
{story()}
<GlobalStyle />
<MemoryRouter initialEntries={['/']}>{story()}</MemoryRouter>
</>
))

Expand Down
2 changes: 1 addition & 1 deletion src/components/Button/button.stories.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
Preview,
Props,
Description,
} from '@storybook/addon-docs/blocks'
} from '@storybook/addon-docs'
import { Button } from './index.tsx'

<Meta title="Components|Button" component={Button} decorators={[withKnobs]} />
Expand Down
2 changes: 1 addition & 1 deletion src/components/DiscordLink/DiscordLink.stories.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
Preview,
Props,
Description,
} from '@storybook/addon-docs/blocks'
} from '@storybook/addon-docs'
import DiscordLink from './DiscordLink'

<Meta title="Components|DiscordLink" component={DiscordLink} />
Expand Down
2 changes: 1 addition & 1 deletion src/components/EventCard/event.card.stories.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { withKnobs, text } from '@storybook/addon-knobs'
import { PropsTable } from '@storybook/components'
import { Story, Meta, Preview } from '@storybook/addon-docs/blocks'
import { Story, Meta, Preview } from '@storybook/addon-docs'
import { EventCard } from './EventCard.tsx'

<Meta
Expand Down
2 changes: 1 addition & 1 deletion src/components/Heading/heading.stories.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { withKnobs, text, boolean } from '@storybook/addon-knobs'
import { PropsTable } from '@storybook/components'
import { Story, Meta, Preview } from '@storybook/addon-docs/blocks'
import { Story, Meta, Preview } from '@storybook/addon-docs'
import Heading from './index.tsx'

<Meta title="Components|Heading" component={Heading} decorators={[withKnobs]} />
Expand Down
15 changes: 10 additions & 5 deletions src/components/Icons/FlagIcon/FlagIcon.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import * as React from 'react'
import FlagIconFactory from 'react-flag-icon-css'
import styled from 'styled-components'
import { Box } from 'rebass/styled-components'

// Please only use `FlagIconFactory` one time in your application, there is no
// need to use it multiple times (it would slow down your app). You may place the
// line below in a `FlagIcon.js` file in your 'components' directory, then
// write `export default FlagIcon` as shown below and import it elsewhere in your app.
const FlagIcon = FlagIconFactory(React, { useCssModules: false })
const FlagIconFact = FlagIconFactory(React, { useCssModules: false })

const FlagIconEvents = styled(FlagIcon)`
const FlagIconEvents = styled(FlagIconFact)`
border-radius: 5px;
background-size: cover !important;
height: 23px;
Expand All @@ -20,14 +21,18 @@ const FlagIconEvents = styled(FlagIcon)`
}
`

const FlagIconHowTos = styled(FlagIcon)`
const FlagIconHowTos = styled(FlagIconFact)`
border-radius: 3px;
background-size: cover !important;
height: 14px;
width: 21px !important;
`
// If you are not using css modules, write the following:
// const FlagIcon = FlagIconFactory(React, { useCssModules: false })

export const FlagIcon = props => (
<Box {...(props as any)}>
<FlagIconEvents code={props.code}>{props.children}</FlagIconEvents>
</Box>
)

export { FlagIconHowTos }
export default FlagIconEvents
2 changes: 1 addition & 1 deletion src/components/Icons/icon.stories.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { action } from '@storybook/addon-actions'
import { withKnobs, text, boolean } from '@storybook/addon-knobs'
import { Story, Meta, Preview } from '@storybook/addon-docs/blocks'
import { Story, Meta, Preview } from '@storybook/addon-docs'
import { PropsTable } from '@storybook/components'
import { Icon, glyphs } from './index.tsx'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
Preview,
Props,
Description,
} from '@storybook/addon-docs/blocks'
} from '@storybook/addon-docs'
import MapWithDraggablePin from './MapWithDraggablePin'

<Meta title="Components|MapWithDraggablePin" component={MapWithDraggablePin}
Expand Down
2 changes: 1 addition & 1 deletion src/components/OsmGeocoding/OsmGeocoding.stories.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
Preview,
Props,
Description,
} from '@storybook/addon-docs/blocks'
} from '@storybook/addon-docs'
import OsmGeocoding from './OsmGeocoding'
import OsmGeocodingResultsList from './OsmGeocodingResultsList'
import OsmGeocodingLoader from './OsmGeocodingLoader'
Expand Down
2 changes: 1 addition & 1 deletion src/components/SiteFooter/SiteFooter.stories.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
Preview,
Props,
Description,
} from '@storybook/addon-docs/blocks'
} from '@storybook/addon-docs'
import SiteFooter from './SiteFooter'

<Meta title="Components|SiteFooter" component={SiteFooter} />
Expand Down
2 changes: 1 addition & 1 deletion src/components/Text/text.stories.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { action } from '@storybook/addon-actions'
import { withKnobs, text, boolean } from '@storybook/addon-knobs'
import { Story, Meta, Preview } from '@storybook/addon-docs/blocks'
import { Story, Meta, Preview } from '@storybook/addon-docs'
import { PropsTable } from '@storybook/components'
import { Text } from './index.tsx'

Expand Down
252 changes: 252 additions & 0 deletions src/pages/User/content/MemberProfile.stories.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
import { Story, Preview } from '@storybook/addon-docs'
import { MemberProfile } from './MemberProfile.tsx'
import { Provider, observable } from 'mobx-react'

<Meta title="Components|MemberProfile" component={MemberProfile} />

# Member Profile

Using the Member Profile component

<Story name="Default story">
<Provider>
<MemberProfile
user={{
userName: 'example',
displayName: 'displayName',
profileType: 'member',
coverImages: [],
about:
'Curabitur vulputate sit amet felis quis aliquet. Maecenas varius congue arcu at elementum. Quisque in ornare odio.',
badges: {
verified: true,
},
location: {
countryCode: 'nl',
latlng: {},
},
links: [
{
url: 'https://example.com',
label: 'website',
},
],
stats: {
userCreatedHowtos: [1],
userCreatedEvents: [1],
},
}}
/>
</Provider>
</Story>

Stress testing the component

<Preview>
<Story name="No location data provided">
<MemberProfile
user={{
userName: 'aUserWithOutALocation',
displayName: 'User Without A Location',
profileType: 'member',
coverImages: [],
about: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce non sollicitudin nunc. Sed in nisl in velit dapibus dapibus a ut nisi. Donec lectus tellus, pretium sed sollicitudin vitae, consequat vitae ante. Sed ex est, molestie ut augue in, vehicula tempor arcu. Curabitur at finibus enim.`,
links: [
{
url: 'https://example.com',
label: 'website',
},
],
stats: {
userCreatedHowtos: 1,
userCreatedEvents: 1,
},
}}
/>
</Story>
<Story name="Short usernames">
<MemberProfile
user={{
userName: 'A',
displayName: 'ABC',
profileType: 'member',
coverImages: [],
about: `a`,
location: {
countryCode: 'nl',
latlng: {},
},
links: [
{
url: 'https://example.com',
label: 'website',
},
],
stats: {
userCreatedHowtos: 1,
userCreatedEvents: 1,
},
}}
/>
</Story>
<Story name="Long broken username">
<MemberProfile
user={{
userName:
'AReallyLongButBrokenDisplayNameWhichContainsHelpfulSpaceCharacters',
displayName:
'A Really Long But Broken Display Name Which Contains Helpful Space Characters',
profileType: 'member',
coverImages: [],
about: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce non sollicitudin nunc. Sed in nisl in velit dapibus dapibus a ut nisi. Donec lectus tellus, pretium sed sollicitudin vitae, consequat vitae ante. Sed ex est, molestie ut augue in, vehicula tempor arcu. Curabitur at finibus enim. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam accumsan tellus libero, et pellentesque ex mollis eget. Proin id dolor auctor elit viverra fermentum eget sit amet erat. Nullam et venenatis nunc. Sed a tellus cursus, dapibus massa eget, varius sapien. Morbi a facilisis nibh, vitae rhoncus massa. Integer iaculis nulla sit amet nunc lacinia, non elementum mi egestas. Nam turpis eros, luctus a est vel, commodo accumsan nunc. Phasellus consectetur pretium auctor. Vivamus at sollicitudin lacus. Sed id dapibus diam. Nulla condimentum, magna in ultricies suscipit, felis felis vestibulum nibh, vel euismod elit ipsum in turpis. Pellentesque elementum nisi non molestie efficitur. Vestibulum sed gravida ipsum. Suspendisse lacinia, lectus ut mattis volutpat, justo tellus sollicitudin dolor, non malesuada ex orci at nisi. Pellentesque maximus convallis nulla quis suscipit. Proin sodales dolor mauris. Suspendisse a mauris tortor. Morbi eleifend varius posuere.
Suspendisse mattis egestas justo eu faucibus. Nulla in feugiat mi. Mauris malesuada sapien nec leo scelerisque, et viverra massa commodo. Maecenas nunc metus, lacinia id dignissim a, dictum nec augue. Etiam condimentum maximus nulla ut imperdiet. Praesent tempor at risus eget luctus. Nulla eleifend, nisl ut fermentum iaculis, lectus orci imperdiet magna, id semper metus diam sit amet urna. Sed ultricies quam nisl, vel iaculis erat gravida vel. Donec cursus facilisis faucibus. Etiam elit sapien, tristique quis felis quis, vehicula ornare lorem. Sed tristique diam neque, in convallis turpis sodales ac. Phasellus blandit turpis sem, at ultricies nibh eleifend in. Aenean varius sem nec sodales porttitor. Proin non orci euismod, suscipit mauris eu, iaculis massa. Etiam nec vestibulum leo. Donec pharetra nunc ut arcu tincidunt dignissim. Aenean at pretium lectus, a lacinia neque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam nec lacinia magna. Proin scelerisque commodo mattis. Pellentesque ullamcorper nunc eget eros vehicula, in sollicitudin enim aliquam. Sed id quam magna. Donec non accumsan arcu. Etiam nisi quam, consequat et ex id, hendrerit maximus tortor. Curabitur vulputate sit amet felis quis aliquet. Maecenas varius congue arcu at elementum. Quisque in ornare odio.`,
location: {
countryCode: 'nl',
latlng: {},
},
links: [
{
url: 'https://example.com',
label: 'website',
},
],
stats: {
userCreatedHowtos: 1,
userCreatedEvents: 1,
},
}}
/>
</Story>
<Story name="Long unbroken username">
<MemberProfile
user={{
userName:
'aReallyLongUnbrokenDisplayNameWhichDoesNotContainAnyHelpfulBreakpoints',
displayName:
'aReallyLongUnbrokenDisplayNameWhichDoesNotContainAnyHelpfulBreakpoints',
profileType: 'member',
coverImages: [],
about: 'Long text',
location: {
countryCode: 'nl',
latlng: {},
},
links: [
{
url: 'https://example.com',
label: 'website',
},
],
stats: {
userCreatedHowtos: 1,
userCreatedEvents: 1,
},
}}
/>
</Story>
<Story name="A long list of user provided links">
<MemberProfile
user={{
userName: 'aLongListOfUserLinks',
displayName: 'A Long List of User Links',
profileType: 'member',
coverImages: [],
about: 'Long text',
location: {
countryCode: 'nl',
latlng: {},
},
links: [
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
{
url: 'https://example.com',
label: 'website',
},
],
stats: {
userCreatedHowtos: 1,
userCreatedEvents: 1,
},
}}
/>
</Story>
</Preview>
Loading

0 comments on commit 6dc9206

Please sign in to comment.