diff --git a/packages/components/asset/README.mdx b/packages/components/asset/README.mdx index 48715dff97..8179b0e0bb 100644 --- a/packages/components/asset/README.mdx +++ b/packages/components/asset/README.mdx @@ -5,7 +5,7 @@ status: 'stable' slug: /components/asset/ github: 'https://github.com/contentful/forma-36/tree/main/packages/components/asset' storybook: 'https://f36-storybook.contentful.com/?path=/story/components-asset--basic' -typescript: ./src/Asset.tsx +typescript: ./src/Asset.tsx,./src/AssetIcon/AssetIcon.tsx --- Represent an asset visually without showing the actual asset. @@ -15,9 +15,9 @@ Useful in a file selector, a drag-n-drop component or in lists. ## Import ```js static=true -import { Asset } from '@contentful/f36-components'; +import { Asset, AssetIcon } from '@contentful/f36-components'; // or -import { Asset } from '@contentful/f36-asset'; +import { Asset, AssetIcon } from '@contentful/f36-asset'; ``` ## Examples @@ -44,6 +44,20 @@ If asset `status` is set to `archived`, an image icon is displayed instead of th ``` +### AssetIcon + +`AssetIcon` renders only the icon that represents an asset's type. It can be used independently from the `Asset` component. + +```jsx file=examples/AssetIconExample.tsx + +``` + ## Props (API reference) +### Asset + + +### AssetIcon + + diff --git a/packages/components/asset/examples/AssetIconExample.tsx b/packages/components/asset/examples/AssetIconExample.tsx new file mode 100644 index 0000000000..5991c567f8 --- /dev/null +++ b/packages/components/asset/examples/AssetIconExample.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { Flex } from '@contentful/f36-core'; +import { AssetIcon } from '@contentful/f36-asset'; + +export default function AssetIconExample() { + return ( + + + + + + + + + + + + + + ); +} diff --git a/packages/components/asset/src/AssetIcon/AssetIcon.tsx b/packages/components/asset/src/AssetIcon/AssetIcon.tsx index 30947376c3..7fb65f8a64 100644 --- a/packages/components/asset/src/AssetIcon/AssetIcon.tsx +++ b/packages/components/asset/src/AssetIcon/AssetIcon.tsx @@ -18,8 +18,7 @@ import type { AssetType } from '../types'; import { cx } from '@emotion/css'; import { getAssetIconStyles } from './AssetIcon.styles'; -export interface AssetIconProps - extends Omit { +export interface AssetIconProps extends GeneratedIconProps { type?: AssetType; } diff --git a/packages/components/asset/stories/AssetIcon.stories.tsx b/packages/components/asset/stories/AssetIcon.stories.tsx new file mode 100644 index 0000000000..5a86c1e190 --- /dev/null +++ b/packages/components/asset/stories/AssetIcon.stories.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import type { Meta, StoryObj } from '@storybook/react-vite'; +import { Flex } from '@contentful/f36-core'; +import { Text } from '@contentful/f36-typography'; +import { AssetIcon } from '../src/AssetIcon/AssetIcon'; +import { types } from '../src/types'; + +import type { AssetIconProps } from '../src/AssetIcon/AssetIcon'; + +export default { + argTypes: { + className: { control: { disable: true } }, + testId: { control: { disable: true } }, + type: { + control: 'select', + options: Object.keys(types), + }, + }, + args: { + type: 'image', + }, + component: AssetIcon, + parameters: { + propTypes: AssetIcon['__docgenInfo'], + }, + title: 'Components/Asset/AssetIcon', +} as Meta; + +export const Basic: StoryObj = { + render: (args) => { + return ; + }, +}; + +export const Overview = () => ( + + {Object.keys(types).map((type) => ( + + + {type} + + ))} + +);