ant-design/components/skeleton/demo/_semantic_element.tsx
EmilyyyLiu b1467d6ec8
feat(Divider): unify orientation attribute usage (#53645)
* feat[Divider]: Unified use of orientation attribute

* feat: Restore the size type missed in the merge

* feat: Delete unnecessary demo adjustments

* docs: change text

* feat: deprecated warning

* Update components/divider/index.zh-CN.md

Signed-off-by: thinkasany <480968828@qq.com>

* Update components/divider/index.en-US.md

Signed-off-by: thinkasany <480968828@qq.com>

* feat: use useOrientation and change test,doc

* feat: change demos orientation attribut

* docs: change token and demo (orientationMargin->titlePlacementMargin)

* feat: change demos  titlePlacement="left/right" -> "start/end"

* docs: titlePlacement align

* feat: Resolve merge conflicts

* fix: lint error

* fix: demo lint error

* feat: use mergedStyles.content

* test: update snapshot

* rerun ci

* test: update snapshot

* fix: delete titlePlacementMargin and udpate snapshots

* feat: change demos orientationMargin-> styles.content.margin

* Update components/divider/demo/vertical.md

Co-authored-by: thinkasany <480968828@qq.com>
Signed-off-by: EmilyyyLiu <100924403+EmilyyyLiu@users.noreply.github.com>

* feat: Call warning using list

* docs: `vertical` to make the divider vertical.

* docs: Modify punctuation usage

* docs: Add deprecated description

* docs: Clarify the possible values for titlePlacement in the example

* feat: replase  { margin: '0' } ->{ margin: 0 }

---------

Signed-off-by: thinkasany <480968828@qq.com>
Signed-off-by: EmilyyyLiu <100924403+EmilyyyLiu@users.noreply.github.com>
Co-authored-by: 刘欢 <lh01217311@antgroup.com>
Co-authored-by: thinkasany <480968828@qq.com>
2025-06-03 14:09:56 +08:00

90 lines
1.9 KiB
TypeScript

import React, { useState } from 'react';
import { Divider, Flex, Segmented, Skeleton } from 'antd';
import SemanticPreview from '../../../.dumi/theme/common/SemanticPreview';
import useLocale from '../../../.dumi/hooks/useLocale';
interface PreviewContentProps {
element: string;
setElement: (element: string) => void;
}
const COMPONENT_MAP: Record<string, React.ElementType> = {
Avatar: Skeleton.Avatar,
Button: Skeleton.Button,
Input: Skeleton.Input,
Node: Skeleton.Node,
Image: Skeleton.Image,
};
const OPTIONS = [
{
value: 'Avatar',
label: 'Avatar',
},
{
value: 'Button',
label: 'Button',
},
{
value: 'Input',
label: 'Input',
},
{
value: 'Image',
label: 'Image',
},
{
value: 'Node',
label: 'Node',
},
];
const PreviewContent: React.FC<PreviewContentProps> = ({ element, setElement, ...rest }) => {
const Element = COMPONENT_MAP[element];
return (
<Flex vertical style={{ width: 'fit-content', marginRight: 'auto' }}>
<Segmented
options={OPTIONS}
value={element}
onChange={(value: string) => setElement(value)}
/>
<Divider titlePlacement="start" plain>
Preview
</Divider>
<Element {...rest} />
</Flex>
);
};
const locales = {
cn: {
root: '根元素',
content: '内容元素',
},
en: {
root: 'Root element',
content: 'Content element',
},
};
const App: React.FC = () => {
const [element, setElement] = useState('Avatar');
const [locale] = useLocale(locales);
return (
<SemanticPreview
componentName={`Skeleton.${element}`}
semantics={[
{ name: 'root', desc: locale.root, version: '6.0.0' },
{ name: 'content', desc: locale.content, version: '6.0.0' },
]}
>
<PreviewContent element={element} setElement={setElement} />
</SemanticPreview>
);
};
export default App;