//
// Copyright 2025 DXOS.org
//
import { type Meta, type StoryObj } from '@storybook/react-vite';
import React, { useMemo } from 'react';
import { random } from '@dxos/random';
import { withTheme } from '@dxos/react-ui/testing';
import { Image } from './Image';
const seed = Math.random();
random.seed(seed);
const meta = {
title: 'ui/react-ui-core/components/Image',
component: Image,
render: (args) => (
),
decorators: [withTheme()],
parameters: {
layout: 'centered',
},
} satisfies Meta;
export default meta;
type Story = StoryObj;
export const Default: Story = {
args: {
src: random.image.url(),
},
};
const classNames = 'h-[12rem] w-[18rem]';
/**
* Access to image at 'https://dxos.network/dxos-logotype-blue.png'
* from origin 'http://localhost:9009' has been blocked by CORS policy:
* No 'Access-Control-Allow-Origin' header is present on the requested resource.
*/
export const Cors: Story = {
args: {
src: 'https://dxos.network/dxos-logotype-blue.png',
classNames,
},
};
export const Corners: Story = {
args: {
src: 'https://picsum.photos/seed/picsum/200/200',
classNames,
},
};
export const SVG: Story = {
args: {
src: 'https://dxos.network/bg-kube.svg',
classNames,
},
};
export const Many: Story = {
args: {
src: 'https://dxos.network/bg-kube.svg',
},
render: () => {
const images = useMemo(
() => Array.from({ length: 9 }, (_, i) => `https://picsum.photos/seed/${seed + i}/500/500`),
[],
);
return (
{images.map((src, i) => (
))}
);
},
};