import { Meta, StoryObj } from "@storybook/react" import React, { useState } from "react" import { TestGridContainer } from "../../../tests/TestGridContainer" import { MOONBIRDS_ITEM, OPENSEA_LOGO } from "../../constants/story" import { ArbitrumLogo, ArbitrumNovaLogo, ApeLogo, AvalancheLogo, BaseLogo, BinanceLogo, BitcoinLogo, BlastLogo, EthereumLogo, FlowLogo, KlaytnLogo, OptimismLogo, PolygonLogo, SolanaLogo, Visibility, ZoraLogo, } from "../../icons" import { classNames } from "../../utils" import { Button } from "../Button" import { Flex } from "../Flex" import { FlexColumn } from "../FlexColumn" import { Avatar } from "./Avatar" type Story = StoryObj const meta: Meta = { title: "Design System/Avatar", component: Avatar, } export default meta export const Image: Story = { args: { src: OPENSEA_LOGO, }, } export const Video: Story = { args: { src: "https://i2.dev.seadn.io/base/0x0852af8836a0fbf8dc7a3556b3dd46109d29d0fb/c9772c851000be4491ddfa6c5c91cfa1.mp4", }, } export const Icon: Story = { args: { icon: Visibility, }, } export const Identicon: Story = { render: function Render() { const [seed, setSeed] = useState(new Date().getTime().toString()) return ( ) }, } export const Rounded: Story = { args: { src: "https://lh3.googleusercontent.com/G6ywpOqC1HDpKEKA7jMU5ScfBC3Pak1mRI91N6x9-UO6lXpR1SbFOdwG4kEGwu10pNcfgil0pSDIyCJfWHi_LARlFhCrlF39w6EL", size: 40, rounded: true, }, } export const ObjectFit: Story = { args: { src: "https://lh3.googleusercontent.com/G6ywpOqC1HDpKEKA7jMU5ScfBC3Pak1mRI91N6x9-UO6lXpR1SbFOdwG4kEGwu10pNcfgil0pSDIyCJfWHi_LARlFhCrlF39w6EL", size: 40, objectFit: "cover", }, } export const CustomRenderImage: Story = { render: function Render() { return ( { // Make the size 4x as big return ( ) }} rounded size={40} src="https://lh3.googleusercontent.com/G6ywpOqC1HDpKEKA7jMU5ScfBC3Pak1mRI91N6x9-UO6lXpR1SbFOdwG4kEGwu10pNcfgil0pSDIyCJfWHi_LARlFhCrlF39w6EL" /> ) }, } export const CustomRenderImageWithBadge: Story = { render: function Render() { return ( } border className="rounded" renderImage={props => { // Make the size 2x as big return ( ) }} size={40} src="https://lh3.googleusercontent.com/G6ywpOqC1HDpKEKA7jMU5ScfBC3Pak1mRI91N6x9-UO6lXpR1SbFOdwG4kEGwu10pNcfgil0pSDIyCJfWHi_LARlFhCrlF39w6EL" /> ) }, } const badgeIcons = [ ArbitrumLogo, ArbitrumNovaLogo, ApeLogo, AvalancheLogo, BaseLogo, BinanceLogo, BitcoinLogo, BlastLogo, EthereumLogo, FlowLogo, KlaytnLogo, OptimismLogo, PolygonLogo, SolanaLogo, ZoraLogo, ] export const WithBadge: Story = { render: function Render() { return ( {badgeIcons.map((BadgeIcon, i) => ( } border className="rounded" key={i.toString()} size={48} src={MOONBIRDS_ITEM} /> ))} ) }, } export const WithSmallBadge: Story = { render: function Render() { return ( {badgeIcons.map((BadgeIcon, i) => ( } border className="rounded" key={i.toString()} size={48} src={MOONBIRDS_ITEM} /> ))} ) }, } export const WithExtraSmallBadge: Story = { render: function Render() { return ( {badgeIcons.map((BadgeIcon, i) => ( } border className="rounded" key={i.toString()} size={48} src={MOONBIRDS_ITEM} /> ))} ) }, } export const NoImage: Story = { args: { src: undefined, }, } export const NoImageLarge: Story = { args: { src: undefined, size: 400, }, } export const AllVariants: Story = { render: function Render() { return ( { // Make the size 4x as big return ( ) }} rounded size={40} src="https://lh3.googleusercontent.com/G6ywpOqC1HDpKEKA7jMU5ScfBC3Pak1mRI91N6x9-UO6lXpR1SbFOdwG4kEGwu10pNcfgil0pSDIyCJfWHi_LARlFhCrlF39w6EL" /> ) }, }