Skip to content

Commit

Permalink
Merge pull request #401 from lidofinance/feature/ui-833-migrate-addre…
Browse files Browse the repository at this point in the history
…ssbadge

Migrated to css modules addressbadge & identicon
  • Loading branch information
hexnickk4997 authored Jul 19, 2023
2 parents 434c22b + a95cbdf commit afedd4f
Show file tree
Hide file tree
Showing 16 changed files with 172 additions and 154 deletions.
2 changes: 1 addition & 1 deletion packages/accordion/Accordion.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ForwardedRef, forwardRef } from 'react'
import { useExpanded } from './useExpanded'
import { NewLidoComponentProps } from 'packages/utils'
import { NewLidoComponentProps } from '../utils'
import { ArrowBottom } from '../icons'
import styles from './Accordion.module.css'
import cn from 'classnames'
Expand Down
2 changes: 1 addition & 1 deletion packages/address/Address.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { ForwardedRef, forwardRef } from 'react'
import { trimAddress } from './trimAddress'
import { NewLidoComponentProps } from 'packages/utils'
import { NewLidoComponentProps } from '../utils'
import styles from './Address.module.css'
import cn from 'classnames'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import { IdenticonBadge } from '../identicon'
import styled from 'styled-components'

export const AddressBadgeStyle = styled(IdenticonBadge)`
.addressBadge {
max-width: 100%;
box-sizing: border-box;
overflow: hidden;
Expand All @@ -13,4 +10,4 @@ export const AddressBadgeStyle = styled(IdenticonBadge)`
overflow: hidden;
text-overflow: ellipsis;
}
`
}
7 changes: 3 additions & 4 deletions packages/addressBadge/AddressBadge.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Story, Meta } from '@storybook/react'
import { AddressBadgeProps } from './types'
import AddressBadge from './AddressBadge'
import { StoryFn, Meta } from '@storybook/react'
import { AddressBadge, AddressBadgeProps } from '.'

export default {
component: AddressBadge,
Expand All @@ -20,6 +19,6 @@ export default {
},
} as Meta

export const Basic: Story<AddressBadgeProps> = (props) => (
export const Basic: StoryFn<AddressBadgeProps> = (props) => (
<AddressBadge {...props} />
)
54 changes: 36 additions & 18 deletions packages/addressBadge/AddressBadge.tsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,40 @@
import React, { ForwardedRef, forwardRef } from 'react'
import { ForwardedRef, forwardRef } from 'react'
import { useBreakpoint } from '../hooks'
import { AddressBadgeStyle } from './AddressBadgeStyles'
import { AddressBadgeProps } from './types'
import cn from 'classnames'
import styles from './AddressBadge.module.css'
import { IdenticonBadge, IdenticonBadgeProps } from '../identicon'

function AddressBadge(
props: AddressBadgeProps,
ref?: ForwardedRef<HTMLDivElement>,
) {
const { address, symbolsMobile = 3, symbolsDesktop = 6 } = props
const isMobile = useBreakpoint('md')

return (
<AddressBadgeStyle
symbols={isMobile ? symbolsMobile : symbolsDesktop}
address={address ?? ''}
ref={ref}
/>
)
export type AddressBadgeProps = Omit<
IdenticonBadgeProps,
'address' | 'symbols'
> & {
address?: string
symbolsMobile?: number
symbolsDesktop?: number
}

export default forwardRef(AddressBadge)
export const AddressBadge = forwardRef(
(
{
address,
symbolsMobile = 3,
symbolsDesktop = 6,
className,
...rest
}: AddressBadgeProps,
ref?: ForwardedRef<HTMLDivElement>,
) => {
const isMobile = useBreakpoint('md')

return (
<IdenticonBadge
symbols={isMobile ? symbolsMobile : symbolsDesktop}
address={address ?? ''}
className={cn(styles.addressBadge, className)}
{...rest}
ref={ref}
/>
)
},
)
AddressBadge.displayName = 'AddressBadge'
3 changes: 1 addition & 2 deletions packages/addressBadge/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
export { default as AddressBadge } from './AddressBadge'
export * from './types'
export * from './AddressBadge'
10 changes: 0 additions & 10 deletions packages/addressBadge/types.ts

This file was deleted.

7 changes: 7 additions & 0 deletions packages/identicon/Identicon.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* export const IdenticonStyle = styled.div` */
.identicon {
border-radius: 1000px;
overflow: hidden;
line-height: 0;
display: inline-block;
}
16 changes: 9 additions & 7 deletions packages/identicon/Identicon.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Story, Meta } from '@storybook/react'
import { StoryFn, Meta } from '@storybook/react'
import {
Identicon,
IdenticonProps,
IdenticonBadge,
IdenticonBadgeProps,
IdenticonBadgeColor,
} from './types'
import Identicon from './Identicon'
import IdenticonBadge from './IdenticonBadge'
} from '.'

const getOptions = (enumObject: Record<string, string | number>) =>
Object.values(enumObject).filter((value) => typeof value === 'string')
Expand All @@ -22,11 +22,13 @@ export default {
control: { type: 'range', min: 4, max: 64, step: 4 },
},
},
} as Meta
} satisfies Meta

export const Basic: Story<IdenticonProps> = (props) => <Identicon {...props} />
export const Basic: StoryFn<IdenticonProps> = (props) => (
<Identicon {...props} />
)

export const Badge: Story<IdenticonBadgeProps> = (props) => (
export const Badge: StoryFn<IdenticonBadgeProps> = (props) => (
<IdenticonBadge {...props} />
)

Expand Down
47 changes: 34 additions & 13 deletions packages/identicon/Identicon.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,38 @@
import React, { ForwardedRef, forwardRef } from 'react'
import { IdenticonProps } from './types'
import { IdenticonStyle } from './IdenticonStyles'
import { ForwardedRef, forwardRef } from 'react'
import Jazzicon, { jsNumberForAddress } from 'react-jazzicon'
import cn from 'classnames'
import styles from './Identicon.module.css'
import { NewLidoComponentProps } from '../utils'

function Identicon(props: IdenticonProps, ref?: ForwardedRef<HTMLDivElement>) {
const { diameter = 24, address, paperStyles, svgStyles, ...rest } = props
const iconProps = { diameter, paperStyles, svgStyles }
export type IdenticonProps = NewLidoComponentProps<
'div',
{
address: string
diameter?: number
paperStyles?: React.CSSProperties
svgStyles?: React.CSSProperties
}
>

return (
<IdenticonStyle {...rest} ref={ref}>
<Jazzicon seed={jsNumberForAddress(address)} {...iconProps} />
</IdenticonStyle>
)
}
export const Identicon = forwardRef(
(
{
diameter = 24,
address,
paperStyles,
svgStyles,
className,
...rest
}: IdenticonProps,
ref?: ForwardedRef<HTMLDivElement>,
) => {
const iconProps = { diameter, paperStyles, svgStyles }

export default forwardRef(Identicon)
return (
<div className={cn(styles.identicon, className)} {...rest} ref={ref}>
<Jazzicon seed={jsNumberForAddress(address)} {...iconProps} />
</div>
)
},
)
Identicon.displayName = 'Identicon'
26 changes: 26 additions & 0 deletions packages/identicon/IdenticonBadge.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* export const IdenticonBadgeStyle = styled.div<{ $color: IdenticonBadgeColors }>`
${({ $color }) => colors[$color]}
` */

.identiconBadge {
border-radius: 1000px;
padding: 4px;
margin: 0 6px;
display: inline-flex;
align-items: center;
}

.background {
background: var(--lido-color-background);
color: var(--lido-color-textSecondary);
}

.accent {
background: var(--lido-color-accentDarken);
color: var(--lido-color-accentContrast);
}

.wrapper {
padding: 0 6px;
}
81 changes: 50 additions & 31 deletions packages/identicon/IdenticonBadge.tsx
Original file line number Diff line number Diff line change
@@ -1,36 +1,55 @@
import React, { ForwardedRef, forwardRef } from 'react'
import { ForwardedRef, forwardRef } from 'react'
import { Address } from '../address'
import { IdenticonBadgeProps } from './types'
import { IdenticonBadgeStyle, AddressWrapperStyle } from './IdenticonStyles'
import Identicon from './Identicon'
import { Identicon, IdenticonProps } from './Identicon'
import cn from 'classnames'
import styles from './IdenticonBadge.module.css'

function IdenticonBadge(
props: IdenticonBadgeProps,
ref?: ForwardedRef<HTMLDivElement>,
) {
const {
symbols = 3,
color = 'background',
diameter,
address,
paperStyles,
svgStyles,
...rest
} = props
const identiconProps = { address, diameter, paperStyles, svgStyles }
export enum IdenticonBadgeColor {
background,
accent,
}
export type IdenticonBadgeColors = keyof typeof IdenticonBadgeColor

return (
<IdenticonBadgeStyle $color={color} {...rest} ref={ref}>
{symbols > 0 ? (
<AddressWrapperStyle>
<Address address={address} symbols={symbols} />
</AddressWrapperStyle>
) : (
''
)}
<Identicon {...identiconProps} />
</IdenticonBadgeStyle>
)
export type IdenticonBadgeProps = IdenticonProps & {
symbols?: number
color?: IdenticonBadgeColors
}

export default forwardRef(IdenticonBadge)
export const IdenticonBadge = forwardRef(
(
{
symbols = 3,
color = 'background',
diameter,
address,
paperStyles,
svgStyles,
className,
...rest
}: IdenticonBadgeProps,
ref?: ForwardedRef<HTMLDivElement>,
) => {
const identiconProps = { address, diameter, paperStyles, svgStyles }

return (
<div
className={cn(styles.identiconBadge, className, {
[styles.background]: color === 'background',
[styles.accent]: color === 'accent',
})}
{...rest}
ref={ref}
>
{symbols > 0 ? (
<div className={styles.wrapper}>
<Address address={address} symbols={symbols} />
</div>
) : (
''
)}
<Identicon {...identiconProps} />
</div>
)
},
)
IdenticonBadge.displayName = 'IdenticonBadge'
34 changes: 0 additions & 34 deletions packages/identicon/IdenticonStyles.tsx

This file was deleted.

5 changes: 2 additions & 3 deletions packages/identicon/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
export { default as IdenticonBadge } from './IdenticonBadge'
export { default as Identicon } from './Identicon'
export * from './types'
export * from './IdenticonBadge'
export * from './Identicon'
24 changes: 0 additions & 24 deletions packages/identicon/types.ts

This file was deleted.

Loading

0 comments on commit afedd4f

Please sign in to comment.