+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/avatar/demo/presence.md b/packages/react/src/avatar/demo/Presence.tsx
old mode 100755
new mode 100644
similarity index 64%
rename from packages/react/src/avatar/demo/presence.md
rename to packages/react/src/avatar/demo/Presence.tsx
index 28f11e3d..632082a4
--- a/packages/react/src/avatar/demo/presence.md
+++ b/packages/react/src/avatar/demo/Presence.tsx
@@ -1,15 +1,11 @@
-
+import React from 'react';
+import { Avatar } from '@tiny-design/react';
-### Presence Indicator
-
-Avatar also support presence indicators. Add `online`, `busy`, `away` or `offline` attribute for different status colors.
-
-```jsx live
-() => {
+export default function PresenceDemo() {
const style = {
marginRight: 10
};
-
+
return (
<>
JT
@@ -18,7 +14,4 @@ Avatar also support presence indicators. Add `online`, `busy`, `away` or `offlin
JT
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/avatar/demo/type.md b/packages/react/src/avatar/demo/Type.tsx
old mode 100755
new mode 100644
similarity index 73%
rename from packages/react/src/avatar/demo/type.md
rename to packages/react/src/avatar/demo/Type.tsx
index 4cff1c38..3e8c417a
--- a/packages/react/src/avatar/demo/type.md
+++ b/packages/react/src/avatar/demo/Type.tsx
@@ -1,15 +1,12 @@
-
+import React from 'react';
+import { Avatar } from '@tiny-design/react';
+import { IconUser } from '@tiny-design/icons';
-### Type
-
-Image, Icon and letter are supported, and the latter two kinds avatar can have custom colors and background colors.
-
-```jsx live
-() => {
+export default function TypeDemo() {
const style = {
marginRight: 10
};
-
+
return (
<>
} style={style}/>
@@ -20,7 +17,4 @@ Image, Icon and letter are supported, and the latter two kinds avatar can have c
} />
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/avatar/demo/basic.md b/packages/react/src/avatar/demo/basic.md
deleted file mode 100755
index c25441a0..00000000
--- a/packages/react/src/avatar/demo/basic.md
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-### Basic
-
-Different sizes setting by `size` and two shapes are available.
-
-```jsx live
-() => {
- const style = {
- marginRight: 10
- };
-
- return (
- <>
-
- )
-}
-```
-
-
diff --git a/packages/react/src/avatar/index.md b/packages/react/src/avatar/index.md
index ace20e66..7b0e2baa 100755
--- a/packages/react/src/avatar/index.md
+++ b/packages/react/src/avatar/index.md
@@ -1,8 +1,13 @@
-import AutoFont from './demo/auto-font.md'
-import Basic from './demo/basic.md'
-import Group from './demo/group.md'
-import Presence from './demo/presence.md'
-import Type from './demo/type.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import TypeDemo from './demo/Type';
+import TypeSource from './demo/Type.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
+import PresenceDemo from './demo/Presence';
+import PresenceSource from './demo/Presence.tsx?raw';
+import AutoFontDemo from './demo/AutoFont';
+import AutoFontSource from './demo/AutoFont.tsx?raw';
# Avatar
@@ -24,13 +29,53 @@ const { Group } = Avatar;
-
-
-
+
+
+### Basic
+
+Different sizes setting by `size` and two shapes are available.
+
+
+
+
+
+
+### Type
+
+Image, Icon and letter are supported, and the latter two kinds avatar can have custom colors and background colors.
+
+
+
+
+
+
+### Group
+
+Include multiple avatar items inside an `AvatarGroup` container.
+
+
+
+
-
-
+
+
+### Presence Indicator
+
+Avatar also support presence indicators. Add `online`, `busy`, `away` or `offline` attribute for different status colors.
+
+
+
+
+
+
+### Auto set font size
+
+For letter type Avatar, when the letters are too long to display, the font size can be automatically adjusted according to the width of the Avatar.
+
+
+
+
@@ -53,4 +98,4 @@ const { Group } = Avatar;
| Property | Description | Type | Default |
| --------- | ----------------------------------------- | ------------------------------------------------------------- | --------- |
-| gap | the distance between two avatars | number | string | -15 |
+| gap | the distance between two avatars | number | string | -15 |
\ No newline at end of file
diff --git a/packages/react/src/avatar/index.zh_CN.md b/packages/react/src/avatar/index.zh_CN.md
index a110c986..7344d7a6 100644
--- a/packages/react/src/avatar/index.zh_CN.md
+++ b/packages/react/src/avatar/index.zh_CN.md
@@ -1,8 +1,13 @@
-import AutoFont from './demo/auto-font.md'
-import Basic from './demo/basic.md'
-import Group from './demo/group.md'
-import Presence from './demo/presence.md'
-import Type from './demo/type.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import TypeDemo from './demo/Type';
+import TypeSource from './demo/Type.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
+import PresenceDemo from './demo/Presence';
+import PresenceSource from './demo/Presence.tsx?raw';
+import AutoFontDemo from './demo/AutoFont';
+import AutoFontSource from './demo/AutoFont.tsx?raw';
# Avatar
@@ -24,13 +29,53 @@ const { Group } = Avatar;
-
-
-
+
+
+### 基本用法
+
+通过 `size` 设置不同尺寸,支持两种形状。
+
+
+
+
+
+
+### 类型
+
+支持图片、图标和文字,后两种可以自定义颜色和背景色。
+
+
+
+
+
+
+### 头像组
+
+在 `AvatarGroup` 容器中包含多个头像项。
+
+
+
+
-
-
+
+
+### 状态指示器
+
+头像也支持状态指示器。添加 `online`、`busy`、`away` 或 `offline` 属性显示不同的状态颜色。
+
+
+
+
+
+
+### 自动调整字体大小
+
+对于文字类型的头像,当文字过长时,字体大小可以根据头像宽度自动调整。
+
+
+
+
@@ -53,4 +98,4 @@ const { Group } = Avatar;
| 属性 | 说明 | 类型 | 默认值 |
| --------- | ----------------------------------------- | ------------------------------------------------------------- | --------- |
-| gap | 两个头像之间的距离 | number | string | -15 |
+| gap | 两个头像之间的距离 | number | string | -15 |
\ No newline at end of file
diff --git a/packages/react/src/back-top/demo/Basic.tsx b/packages/react/src/back-top/demo/Basic.tsx
new file mode 100644
index 00000000..606d2fc7
--- /dev/null
+++ b/packages/react/src/back-top/demo/Basic.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import { BackTop } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+ <>
+
+ Scroll down to see the bottom-right gray button.
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/back-top/demo/Custom.tsx b/packages/react/src/back-top/demo/Custom.tsx
new file mode 100644
index 00000000..e3a8200e
--- /dev/null
+++ b/packages/react/src/back-top/demo/Custom.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+import { BackTop } from '@tiny-design/react';
+
+export default function CustomDemo() {
+ return (
+
+
+ UP
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/back-top/demo/basic.md b/packages/react/src/back-top/demo/basic.md
deleted file mode 100644
index 0c250616..00000000
--- a/packages/react/src/back-top/demo/basic.md
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-### Basic
-
-A basic example.
-
-```jsx live
-<>
-
- Scroll down to see the bottom-right gray button.
->
-```
-
-
diff --git a/packages/react/src/back-top/demo/custom.md b/packages/react/src/back-top/demo/custom.md
deleted file mode 100644
index 54f219a1..00000000
--- a/packages/react/src/back-top/demo/custom.md
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-### Custom Trigger
-
-Use custom children to replace the default button.
-
-```jsx live
-() => {
- return (
-
-
- UP
-
-
- );
-}
-```
-
-
diff --git a/packages/react/src/back-top/index.md b/packages/react/src/back-top/index.md
index f58b9d1c..b628a322 100644
--- a/packages/react/src/back-top/index.md
+++ b/packages/react/src/back-top/index.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Custom from './demo/custom.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomDemo from './demo/Custom';
+import CustomSource from './demo/Custom.tsx?raw';
# BackTop
@@ -20,10 +22,26 @@ import { BackTop } from 'tiny-design';
-
+
+
+### Basic
+
+A basic example.
+
+
+
+
-
+
+
+### Custom Trigger
+
+Use custom children to replace the default button.
+
+
+
+
@@ -35,4 +53,4 @@ import { BackTop } from 'tiny-design';
| visibilityHeight | The `BackTop` button will not show until the scroll height reaches this value | number | 300 |
| onClick | A callback function, which can be executed when you click the button | () => void | - |
| style | Style object of container object | CSSProperties | - |
-| className | ClassName of container | string | - |
+| className | ClassName of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/back-top/index.zh_CN.md b/packages/react/src/back-top/index.zh_CN.md
index 89553c5e..890c6306 100644
--- a/packages/react/src/back-top/index.zh_CN.md
+++ b/packages/react/src/back-top/index.zh_CN.md
@@ -1,4 +1,7 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomDemo from './demo/Custom';
+import CustomSource from './demo/Custom.tsx?raw';
# BackTop
@@ -19,9 +22,26 @@ import { BackTop } from 'tiny-design';
-
+
+
+### 基本用法
+
+基本示例。
+
+
+
+
+
+
+### 自定义触发器
+
+使用自定义子元素替换默认按钮。
+
+
+
+
@@ -33,4 +53,4 @@ import { BackTop } from 'tiny-design';
| visibilityHeight | 滚动高度达到此值时才出现 `BackTop` 按钮 | number | 300 |
| onClick | 点击按钮时的回调 | () => void | - |
| style | 容器的样式对象 | CSSProperties | - |
-| className | 容器的类名 | string | - |
+| className | 容器的类名 | string | - |
\ No newline at end of file
diff --git a/packages/react/src/badge/demo/basic.md b/packages/react/src/badge/demo/Basic.tsx
old mode 100755
new mode 100644
similarity index 80%
rename from packages/react/src/badge/demo/basic.md
rename to packages/react/src/badge/demo/Basic.tsx
index 06f2c7d2..4d43fd8b
--- a/packages/react/src/badge/demo/basic.md
+++ b/packages/react/src/badge/demo/Basic.tsx
@@ -1,11 +1,8 @@
-
+import React from 'react';
+import { Badge } from '@tiny-design/react';
+import { IconLock } from '@tiny-design/icons';
-### Basic
-
-Simplest Usage.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const spanStyle = {
width: '42px',
height: '42px',
@@ -14,11 +11,11 @@ Simplest Usage.
display: 'inline-block',
verticalAlign: 'middle',
};
-
+
const badgeStyle = {
marginRight: '20px'
};
-
+
return (
<>
@@ -35,7 +32,4 @@ Simplest Usage.
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/badge/demo/Custom.tsx b/packages/react/src/badge/demo/Custom.tsx
new file mode 100644
index 00000000..9912e635
--- /dev/null
+++ b/packages/react/src/badge/demo/Custom.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Badge } from '@tiny-design/react';
+
+export default function CustomDemo() {
+ return (
+ <>
+
Error
+
Processing
+
Successful
+
Warning
+
Warning with animation
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/badge/demo/dot.md b/packages/react/src/badge/demo/Dot.tsx
old mode 100755
new mode 100644
similarity index 66%
rename from packages/react/src/badge/demo/dot.md
rename to packages/react/src/badge/demo/Dot.tsx
index 3a32ec52..a99c1578
--- a/packages/react/src/badge/demo/dot.md
+++ b/packages/react/src/badge/demo/Dot.tsx
@@ -1,15 +1,12 @@
-
+import React from 'react';
+import { Badge } from '@tiny-design/react';
+import { IconBroadcast } from '@tiny-design/icons';
-### Red badge
-
-Display a red badge without a specific count.
-
-```jsx live
-() => {
+export default function DotDemo() {
const badgeStyle = {
marginRight: '20px'
};
-
+
return (
<>
@@ -23,7 +20,4 @@ Display a red badge without a specific count.
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/badge/demo/overflow.md b/packages/react/src/badge/demo/Overflow.tsx
old mode 100755
new mode 100644
similarity index 80%
rename from packages/react/src/badge/demo/overflow.md
rename to packages/react/src/badge/demo/Overflow.tsx
index e71522d4..0c83f968
--- a/packages/react/src/badge/demo/overflow.md
+++ b/packages/react/src/badge/demo/Overflow.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Badge } from '@tiny-design/react';
-### Overflow
-
-`max` is displayed when count is larger than max count. The default maximum value is **99**.
-
-```jsx live
-() => {
+export default function OverflowDemo() {
const spanStyle = {
width: '42px',
height: '42px',
@@ -14,11 +10,11 @@
display: 'inline-block',
verticalAlign: 'middle',
};
-
+
const badgeStyle = {
marginRight: '20px'
};
-
+
return (
<>
@@ -35,7 +31,4 @@
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/badge/demo/standalone.md b/packages/react/src/badge/demo/Standalone.tsx
old mode 100755
new mode 100644
similarity index 59%
rename from packages/react/src/badge/demo/standalone.md
rename to packages/react/src/badge/demo/Standalone.tsx
index 3e1112ea..392cf1b8
--- a/packages/react/src/badge/demo/standalone.md
+++ b/packages/react/src/badge/demo/Standalone.tsx
@@ -1,23 +1,16 @@
-
+import React from 'react';
+import { Badge } from '@tiny-design/react';
-### Standalone
-
-Used in standalone when children is empty.
-
-```jsx live
-() => {
+export default function StandaloneDemo() {
const badgeStyle = {
marginRight: '15px'
};
-
+
return (
<>
-
+
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/badge/demo/custom.md b/packages/react/src/badge/demo/custom.md
deleted file mode 100755
index 9d93fabf..00000000
--- a/packages/react/src/badge/demo/custom.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### Colorful badge
-
-Set `color` to display the dot badge with different colors. `processing` can show an wave animation.
-
-> Only the dot badge has the `processing` effect.
-
-```jsx live
-<>
-
Error
-
Processing
-
Successful
-
Warning
-
Warning with animation
->
-```
-
-
diff --git a/packages/react/src/badge/index.md b/packages/react/src/badge/index.md
index 3d7ea6de..9bc51a18 100755
--- a/packages/react/src/badge/index.md
+++ b/packages/react/src/badge/index.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Custom from './demo/custom.md'
-import Dot from './demo/dot.md'
-import Overflow from './demo/overflow.md'
-import Standalone from './demo/standalone.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomDemo from './demo/Custom';
+import CustomSource from './demo/Custom.tsx?raw';
+import DotDemo from './demo/Dot';
+import DotSource from './demo/Dot.tsx?raw';
+import OverflowDemo from './demo/Overflow';
+import OverflowSource from './demo/Overflow.tsx?raw';
+import StandaloneDemo from './demo/Standalone';
+import StandaloneSource from './demo/Standalone.tsx?raw';
# Badge
@@ -22,13 +27,55 @@ import { Badge } from 'tiny-design';
-
-
-
+
+
+### Basic
+
+Simplest Usage.
+
+
+
+
+
+
+### Overflow
+
+`max` is displayed when count is larger than max count. The default maximum value is **99**.
+
+
+
+
+
+
+### Standalone
+
+Used in standalone when children is empty.
+
+
+
+
-
-
+
+
+### Red badge
+
+Display a red badge without a specific count.
+
+
+
+
+
+
+### Colorful badge
+
+Set `color` to display the dot badge with different colors. `processing` can show an wave animation.
+
+> Only the dot badge has the `processing` effect.
+
+
+
+
@@ -43,5 +90,4 @@ import { Badge } from 'tiny-design';
| processing | display wave effect | boolean | false |
| showZero | when value is equal to zero, the badge will be hidden by default | boolean | false |
| title | text to show when hovering over the badge | string | |
-| badgeStyle | internal badge style | CSSProperties | |
-
+| badgeStyle | internal badge style | CSSProperties | |
\ No newline at end of file
diff --git a/packages/react/src/badge/index.zh_CN.md b/packages/react/src/badge/index.zh_CN.md
index fe0b515b..f176c1fb 100644
--- a/packages/react/src/badge/index.zh_CN.md
+++ b/packages/react/src/badge/index.zh_CN.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Custom from './demo/custom.md'
-import Dot from './demo/dot.md'
-import Overflow from './demo/overflow.md'
-import Standalone from './demo/standalone.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomDemo from './demo/Custom';
+import CustomSource from './demo/Custom.tsx?raw';
+import DotDemo from './demo/Dot';
+import DotSource from './demo/Dot.tsx?raw';
+import OverflowDemo from './demo/Overflow';
+import OverflowSource from './demo/Overflow.tsx?raw';
+import StandaloneDemo from './demo/Standalone';
+import StandaloneSource from './demo/Standalone.tsx?raw';
# Badge
@@ -22,13 +27,55 @@ import { Badge } from 'tiny-design';
-
-
-
+
+
+### 基本用法
+
+最简单的用法。
+
+
+
+
+
+
+### 溢出
+
+当 count 大于 max 时,会显示 `max+`。默认最大值是 **99**。
+
+
+
+
+
+
+### 独立使用
+
+在子元素为空时独立使用。
+
+
+
+
-
-
+
+
+### 红点徽标
+
+不显示具体数字,只显示红点。
+
+
+
+
+
+
+### 多彩徽标
+
+设置 `color` 以不同颜色显示小圆点徽标。`processing` 可以显示波纹动画。
+
+> 只有小圆点徽标才有 `processing` 效果。
+
+
+
+
@@ -43,4 +90,4 @@ import { Badge } from 'tiny-design';
| processing | 显示波纹动画效果 | boolean | false |
| showZero | 当值为零时,默认隐藏徽标 | boolean | false |
| title | 鼠标悬停在徽标上时显示的文本 | string | |
-| badgeStyle | 内部徽标样式 | CSSProperties | |
+| badgeStyle | 内部徽标样式 | CSSProperties | |
\ No newline at end of file
diff --git a/packages/react/src/breadcrumb/demo/Basic.tsx b/packages/react/src/breadcrumb/demo/Basic.tsx
new file mode 100644
index 00000000..acf73dc6
--- /dev/null
+++ b/packages/react/src/breadcrumb/demo/Basic.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { Breadcrumb } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+ Home
+
+ Project Center
+
+
+ Project List
+
+ A Project
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/breadcrumb/demo/Icon.tsx b/packages/react/src/breadcrumb/demo/Icon.tsx
new file mode 100644
index 00000000..322ec836
--- /dev/null
+++ b/packages/react/src/breadcrumb/demo/Icon.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { Breadcrumb } from '@tiny-design/react';
+import { IconHome, IconInspection } from '@tiny-design/icons';
+
+export default function IconDemo() {
+ return (
+
+
+
+
+
+ Project List
+
+ A Project
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/breadcrumb/demo/Separator.tsx b/packages/react/src/breadcrumb/demo/Separator.tsx
new file mode 100644
index 00000000..66b9c914
--- /dev/null
+++ b/packages/react/src/breadcrumb/demo/Separator.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { Breadcrumb } from '@tiny-design/react';
+
+export default function SeparatorDemo() {
+ return (
+
+ Home
+
+ Project Center
+
+
+ Project List
+
+ A Project
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/breadcrumb/demo/basic.md b/packages/react/src/breadcrumb/demo/basic.md
deleted file mode 100755
index 3cf43748..00000000
--- a/packages/react/src/breadcrumb/demo/basic.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-### Basic Usage
-
-The simplest use
-
-```jsx live
-
- Home
-
- Project Center
-
-
- Project List
-
- A Project
-
-```
-
-
diff --git a/packages/react/src/breadcrumb/demo/icon.md b/packages/react/src/breadcrumb/demo/icon.md
deleted file mode 100755
index 0be8c94f..00000000
--- a/packages/react/src/breadcrumb/demo/icon.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### With Icon
-
-Using an icon replaces a text or combination.
-
-```jsx live
-
-
-
-
-
- Project List
-
- A Project
-
-```
-
-
diff --git a/packages/react/src/breadcrumb/demo/separator.md b/packages/react/src/breadcrumb/demo/separator.md
deleted file mode 100755
index 17a1494c..00000000
--- a/packages/react/src/breadcrumb/demo/separator.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-### Separator
-
-Customise the separator symbol.
-
-```jsx live
-
- Home
-
- Project Center
-
-
- Project List
-
- A Project
-
-```
-
-
diff --git a/packages/react/src/breadcrumb/index.md b/packages/react/src/breadcrumb/index.md
index fa927761..799df9c0 100755
--- a/packages/react/src/breadcrumb/index.md
+++ b/packages/react/src/breadcrumb/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Icon from './demo/icon.md'
-import Separator from './demo/separator.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import SeparatorDemo from './demo/Separator';
+import SeparatorSource from './demo/Separator.tsx?raw';
# Breadcrumb
@@ -25,11 +28,35 @@ const { Item } = Breadcrumb;
-
-
+
+
+### Basic Usage
+
+The simplest use
+
+
+
+
+
+
+### Separator
+
+Customise the separator symbol.
+
+
+
+
-
+
+
+### With Icon
+
+Using an icon replaces a text or combination.
+
+
+
+
@@ -37,4 +64,4 @@ const { Item } = Breadcrumb;
| Property | Description | Type | Default |
| ----------------- | --------------------------------------------------------- | ----------------- | ------------- |
-| separator | customised separator | ReactNode | '/' |
+| separator | customised separator | ReactNode | '/' |
\ No newline at end of file
diff --git a/packages/react/src/breadcrumb/index.zh_CN.md b/packages/react/src/breadcrumb/index.zh_CN.md
index 62153e13..76e3b1d0 100644
--- a/packages/react/src/breadcrumb/index.zh_CN.md
+++ b/packages/react/src/breadcrumb/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Icon from './demo/icon.md'
-import Separator from './demo/separator.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import SeparatorDemo from './demo/Separator';
+import SeparatorSource from './demo/Separator.tsx?raw';
# Breadcrumb
@@ -25,11 +28,35 @@ const { Item } = Breadcrumb;
-
-
+
+
+### 基本用法
+
+最简单的用法
+
+
+
+
+
+
+### 分隔符
+
+自定义分隔符符号。
+
+
+
+
-
+
+
+### 带图标
+
+使用图标替换文本或组合。
+
+
+
+
@@ -37,4 +64,4 @@ const { Item } = Breadcrumb;
| 属性 | 说明 | 类型 | 默认值 |
| ----------------- | --------------------------------------------------------- | ----------------- | ------------- |
-| separator | 自定义分隔符 | ReactNode | '/' |
+| separator | 自定义分隔符 | ReactNode | '/' |
\ No newline at end of file
diff --git a/packages/react/src/button/demo/block.md b/packages/react/src/button/demo/Block.tsx
old mode 100755
new mode 100644
similarity index 77%
rename from packages/react/src/button/demo/block.md
rename to packages/react/src/button/demo/Block.tsx
index 74bd6e73..3b96df85
--- a/packages/react/src/button/demo/block.md
+++ b/packages/react/src/button/demo/Block.tsx
@@ -1,12 +1,7 @@
-
-
-### Block Button
-
-block property will make the button fit to its parent width.
-
-```jsx live
-() => {
+import React from 'react';
+import { Button } from '@tiny-design/react';
+export default function BlockDemo() {
const style = {
marginBottom: 12,
};
@@ -20,7 +15,4 @@ block property will make the button fit to its parent width.
>
);
-};
-```
-
-
+}
diff --git a/packages/react/src/button/demo/disabled.md b/packages/react/src/button/demo/Disabled.tsx
old mode 100755
new mode 100644
similarity index 91%
rename from packages/react/src/button/demo/disabled.md
rename to packages/react/src/button/demo/Disabled.tsx
index 3e8b9fbf..b206d7ee
--- a/packages/react/src/button/demo/disabled.md
+++ b/packages/react/src/button/demo/Disabled.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Button, Flex } from '@tiny-design/react';
-### Disabled
-
-Add the `disabled` property to disable the Button.
-
-```jsx live
-() => {
+export default function DisabledDemo() {
const style = {
marginBottom: 12,
};
@@ -40,7 +36,7 @@ Add the `disabled` property to disable the Button.
-
+
@@ -49,8 +45,5 @@ Add the `disabled` property to disable the Button.
>
- )
+ );
}
-```
-
-
diff --git a/packages/react/src/button/demo/group.md b/packages/react/src/button/demo/Group.tsx
old mode 100755
new mode 100644
similarity index 80%
rename from packages/react/src/button/demo/group.md
rename to packages/react/src/button/demo/Group.tsx
index 1e5d2bc2..b8720f92
--- a/packages/react/src/button/demo/group.md
+++ b/packages/react/src/button/demo/Group.tsx
@@ -1,13 +1,9 @@
-
+import React from 'react';
+import { Button, Typography } from '@tiny-design/react';
-### Button Group
-
-Buttons can be grouped by placing multiple `Button` components into a `Button.Group`.
-
-```jsx live
-() => {
- const { Group } = Button;
+const { Group } = Button;
+export default function GroupDemo() {
return (
<>
@@ -16,27 +12,27 @@ Buttons can be grouped by placing multiple `Button` components into a `Button.Gr
-
+
-
+
Group props
-
+
-
+
@@ -46,6 +42,3 @@ Buttons can be grouped by placing multiple `Button` components into a `Button.Gr
>
);
}
-```
-
-
diff --git a/packages/react/src/button/demo/Icon.tsx b/packages/react/src/button/demo/Icon.tsx
new file mode 100644
index 00000000..edbce351
--- /dev/null
+++ b/packages/react/src/button/demo/Icon.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Button, Flex } from '@tiny-design/react';
+import { IconWifi, IconGift, IconSearch, IconCloudUpload } from '@tiny-design/icons';
+
+export default function IconDemo() {
+ return (
+
+ } color="primary" />
+ } color="primary" />
+ } color="primary">Search
+
+
+ );
+}
diff --git a/packages/react/src/button/demo/Loading.tsx b/packages/react/src/button/demo/Loading.tsx
new file mode 100644
index 00000000..d00c5c06
--- /dev/null
+++ b/packages/react/src/button/demo/Loading.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Button, Flex } from '@tiny-design/react';
+
+export default function LoadingDemo() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/packages/react/src/button/demo/MoreTypes.tsx b/packages/react/src/button/demo/MoreTypes.tsx
new file mode 100644
index 00000000..29661628
--- /dev/null
+++ b/packages/react/src/button/demo/MoreTypes.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import { Button, Flex } from '@tiny-design/react';
+
+export default function MoreTypesDemo() {
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/packages/react/src/button/demo/Size.tsx b/packages/react/src/button/demo/Size.tsx
new file mode 100644
index 00000000..b300c779
--- /dev/null
+++ b/packages/react/src/button/demo/Size.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Button, Flex } from '@tiny-design/react';
+
+export default function SizeDemo() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/packages/react/src/button/demo/Type.tsx b/packages/react/src/button/demo/Type.tsx
new file mode 100644
index 00000000..2b354d06
--- /dev/null
+++ b/packages/react/src/button/demo/Type.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Button, Flex } from '@tiny-design/react';
+
+export default function TypeDemo() {
+ return (
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/react/src/button/demo/icon.md b/packages/react/src/button/demo/icon.md
deleted file mode 100755
index a67b1a59..00000000
--- a/packages/react/src/button/demo/icon.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### Icon Button
-
-Use icons to add more meaning to Button. You can use icon alone to save some space, or with text together.
-
-```jsx live
-
-
-```
-
-
diff --git a/packages/react/src/button/demo/loading.md b/packages/react/src/button/demo/loading.md
deleted file mode 100755
index 14c57618..00000000
--- a/packages/react/src/button/demo/loading.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Loading Button
-
-Click the button to load data, then the button displays a loading state.
-
-```jsx live
-
- Default Button
- Primary Button
- Link
-
-```
-
-
diff --git a/packages/react/src/button/demo/more-types.md b/packages/react/src/button/demo/more-types.md
deleted file mode 100755
index e300b27d..00000000
--- a/packages/react/src/button/demo/more-types.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### More Types
-
-Different colors represent different meanings.
-
-```jsx live
-
- Success
- Info
- Warning
- Danger
-
-```
-
-
diff --git a/packages/react/src/button/demo/size.md b/packages/react/src/button/demo/size.md
deleted file mode 100755
index ac8ea1f8..00000000
--- a/packages/react/src/button/demo/size.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Size
-
-There are three different sizes, `lg`, `md`, `sm`. The default size is `md`.
-
-```jsx live
-
- Large Size
- Default Size
- Small Size
-
-```
-
-
diff --git a/packages/react/src/button/demo/type.md b/packages/react/src/button/demo/type.md
deleted file mode 100755
index 27adfaeb..00000000
--- a/packages/react/src/button/demo/type.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-### Type
-
-There are `default`, `primary`, `outline`, `ghost` and `link` button.
-
-> The link type button only changes the style. It is still a `` tag. Considering using a `` component to represent a hyperlink with the `href` property.
-
-
-```jsx live
-
- Default
- Primary
- Outline
- Ghost
- Link
-
-```
-
-
diff --git a/packages/react/src/button/index.md b/packages/react/src/button/index.md
index 06ce19a4..64dd7071 100755
--- a/packages/react/src/button/index.md
+++ b/packages/react/src/button/index.md
@@ -1,11 +1,19 @@
-import Block from './demo/block.md'
-import MoreTypes from './demo/more-types.md'
-import Disabled from './demo/disabled.md'
-import ButtonGroup from './demo/group.md'
-import Icon from './demo/icon.md'
-import Loading from './demo/loading.md'
-import Size from './demo/size.md'
-import Type from './demo/type.md'
+import TypeDemo from './demo/Type';
+import TypeSource from './demo/Type.tsx?raw';
+import MoreTypesDemo from './demo/MoreTypes';
+import MoreTypesSource from './demo/MoreTypes.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import LoadingDemo from './demo/Loading';
+import LoadingSource from './demo/Loading.tsx?raw';
+import BlockDemo from './demo/Block';
+import BlockSource from './demo/Block.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
# Button
@@ -27,16 +35,82 @@ const { Group } = Button;
-
-
-
-
-
+
+
+### Type
+
+There are `default`, `primary`, `outline`, `ghost` and `link` button.
+
+> The link type button only changes the style. It is still a `` tag. Considering using a `` component to represent a hyperlink with the `href` property.
+
+
+
+
+
+
+### More Types
+
+Different colors represent different meanings.
+
+
+
+
+
+
+### Size
+
+There are three different sizes, `lg`, `md`, `sm`. The default size is `md`.
+
+
+
+
+
+
+### Button Group
+
+Buttons can be grouped by placing multiple `Button` components into a `Button.Group`.
+
+
+
+
+
+
+### Loading Button
+
+Click the button to load data, then the button displays a loading state.
+
+
+
+
-
-
-
+
+
+### Icon Button
+
+Use icons to add more meaning to Button. You can use icon alone to save some space, or with text together.
+
+
+
+
+
+
+### Disabled
+
+Add the `disabled` property to disable the Button.
+
+
+
+
+
+
+### Block Button
+
+block property will make the button fit to its parent width.
+
+
+
+
diff --git a/packages/react/src/button/index.zh_CN.md b/packages/react/src/button/index.zh_CN.md
index 06443c48..67b622e6 100644
--- a/packages/react/src/button/index.zh_CN.md
+++ b/packages/react/src/button/index.zh_CN.md
@@ -1,11 +1,19 @@
-import Block from './demo/block.md'
-import MoreTypes from './demo/more-types.md'
-import Disabled from './demo/disabled.md'
-import ButtonGroup from './demo/group.md'
-import Icon from './demo/icon.md'
-import Loading from './demo/loading.md'
-import Size from './demo/size.md'
-import Type from './demo/type.md'
+import TypeDemo from './demo/Type';
+import TypeSource from './demo/Type.tsx?raw';
+import MoreTypesDemo from './demo/MoreTypes';
+import MoreTypesSource from './demo/MoreTypes.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import LoadingDemo from './demo/Loading';
+import LoadingSource from './demo/Loading.tsx?raw';
+import BlockDemo from './demo/Block';
+import BlockSource from './demo/Block.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
# Button
@@ -27,16 +35,82 @@ const { Group } = Button;
-
-
-
-
-
+
+
+### 类型
+
+按钮有 `default`、`primary`、`outline`、`ghost` 和 `link` 五种类型。
+
+> link 类型按钮仅改变样式,它仍然是一个 `` 标签。如果需要表示带有 `href` 属性的超链接,建议使用 `` 组件。
+
+
+
+
+
+
+### 更多类型
+
+不同的颜色代表不同的含义。
+
+
+
+
+
+
+### 尺寸
+
+有三种不同的尺寸:`lg`、`md`、`sm`。默认尺寸为 `md`。
+
+
+
+
+
+
+### 按钮组
+
+通过将多个 `Button` 组件放入 `Button.Group` 中来对按钮进行分组。
+
+
+
+
+
+
+### 加载按钮
+
+点击按钮加载数据后,按钮会显示加载状态。
+
+
+
+
-
-
-
+
+
+### 图标按钮
+
+使用图标为按钮添加更多含义。可以单独使用图标以节省空间,也可以与文本一起使用。
+
+
+
+
+
+
+### 禁用状态
+
+添加 `disabled` 属性来禁用按钮。
+
+
+
+
+
+
+### 块级按钮
+
+block 属性会使按钮宽度适应其父元素宽度。
+
+
+
+
@@ -52,4 +126,4 @@ const { Group } = Button;
| round | 圆角按钮 | boolean | false |
| icon | 在文本左侧渲染一个图标 | React.ReactNode | - |
| style | 容器的样式对象 | CSSProperties | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/calendar/demo/basic.md b/packages/react/src/calendar/demo/Basic.tsx
similarity index 58%
rename from packages/react/src/calendar/demo/basic.md
rename to packages/react/src/calendar/demo/Basic.tsx
index 5d278cda..9177d049 100644
--- a/packages/react/src/calendar/demo/basic.md
+++ b/packages/react/src/calendar/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Calendar } from '@tiny-design/react';
-### Basic
-
-A full-size calendar with date selection.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const [value, setValue] = React.useState(new Date());
return (
@@ -14,7 +10,4 @@ A full-size calendar with date selection.
onChange={(date) => setValue(date)}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/calendar/index.md b/packages/react/src/calendar/index.md
index cabd2cb3..6edb7d95 100644
--- a/packages/react/src/calendar/index.md
+++ b/packages/react/src/calendar/index.md
@@ -1,4 +1,5 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
# Calendar
@@ -18,7 +19,15 @@ import { Calendar } from 'tiny-design';
-
+
+
+### Basic
+
+A full-size calendar with date selection.
+
+
+
+
@@ -36,4 +45,4 @@ import { Calendar } from 'tiny-design';
| onPanelChange | callback when panel changes | (date: Date, mode: string) => void | |
| dateCellRender | custom render for date cell content | (date: Date) => ReactNode | |
| monthCellRender | custom render for month cell content | (date: Date) => ReactNode | |
-| headerRender | custom header render | (config) => ReactNode | |
+| headerRender | custom header render | (config) => ReactNode | |
\ No newline at end of file
diff --git a/packages/react/src/calendar/index.zh_CN.md b/packages/react/src/calendar/index.zh_CN.md
index 47cdf701..a3338ec2 100644
--- a/packages/react/src/calendar/index.zh_CN.md
+++ b/packages/react/src/calendar/index.zh_CN.md
@@ -1,4 +1,5 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
# Calendar 日历
@@ -18,7 +19,15 @@ import { Calendar } from 'tiny-design';
-
+
+
+### 基本用法
+
+支持日期选择的全尺寸日历。
+
+
+
+
@@ -36,4 +45,4 @@ import { Calendar } from 'tiny-design';
| onPanelChange | 面板切换回调 | (date: Date, mode: string) => void | |
| dateCellRender | 自定义日期单元格内容 | (date: Date) => ReactNode | |
| monthCellRender | 自定义月份单元格内容 | (date: Date) => ReactNode | |
-| headerRender | 自定义头部渲染 | (config) => ReactNode | |
+| headerRender | 自定义头部渲染 | (config) => ReactNode | |
\ No newline at end of file
diff --git a/packages/react/src/card/demo/Active.tsx b/packages/react/src/card/demo/Active.tsx
new file mode 100644
index 00000000..35fc3f25
--- /dev/null
+++ b/packages/react/src/card/demo/Active.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Card } from '@tiny-design/react';
+
+export default function ActiveDemo() {
+ return (
+ More}>
+
+
This is a content.
+
This is a content.
+
This is a content.
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/card/demo/Basic.tsx b/packages/react/src/card/demo/Basic.tsx
new file mode 100644
index 00000000..ae6ba6ec
--- /dev/null
+++ b/packages/react/src/card/demo/Basic.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Card } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+ More}>
+
+
This is a content.
+
This is a content.
+
This is a content.
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/card/demo/Hoverable.tsx b/packages/react/src/card/demo/Hoverable.tsx
new file mode 100644
index 00000000..d16e243a
--- /dev/null
+++ b/packages/react/src/card/demo/Hoverable.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Card } from '@tiny-design/react';
+
+export default function HoverableDemo() {
+ return (
+ More}>
+
+
This is a content.
+
This is a content.
+
This is a content.
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/card/demo/Image.tsx b/packages/react/src/card/demo/Image.tsx
new file mode 100644
index 00000000..fa142434
--- /dev/null
+++ b/packages/react/src/card/demo/Image.tsx
@@ -0,0 +1,22 @@
+import React from 'react';
+import { Card, Image } from '@tiny-design/react';
+
+export default function ImageDemo() {
+ return (
+ Learn more
+ ]}
+ >
+
+
+
Koala
+
+ The koala is an arboreal herbivorous marsupial native to Australia. It is
+ the only extant representative of the family Phascolarctidae and its closest
+ living relatives are the wombats, which comprise the family Vombatidae.
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/card/demo/InnerCard.tsx b/packages/react/src/card/demo/InnerCard.tsx
new file mode 100644
index 00000000..aa09c21f
--- /dev/null
+++ b/packages/react/src/card/demo/InnerCard.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+import { Card } from '@tiny-design/react';
+
+export default function InnerCardDemo() {
+ return (
+
+
+
Group title
+ More}>
+
+
Inner Card content
+
+
+
+ More}>
+
+
Inner Card content
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/card/demo/NoBorder.tsx b/packages/react/src/card/demo/NoBorder.tsx
new file mode 100644
index 00000000..eec9dc84
--- /dev/null
+++ b/packages/react/src/card/demo/NoBorder.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Card } from '@tiny-design/react';
+
+export default function NoBorderDemo() {
+ return (
+
+ More}>
+
+
This is a content.
+
This is a content.
+
This is a content.
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/card/demo/Simple.tsx b/packages/react/src/card/demo/Simple.tsx
new file mode 100644
index 00000000..633828b1
--- /dev/null
+++ b/packages/react/src/card/demo/Simple.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Card } from '@tiny-design/react';
+
+export default function SimpleDemo() {
+ return (
+
+
+
This is a content.
+
This is a content.
+
This is a content.
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/card/demo/active.md b/packages/react/src/card/demo/active.md
deleted file mode 100644
index b2eca732..00000000
--- a/packages/react/src/card/demo/active.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Active
-
-Set `active` to allow the card always in elevation.
-
-```jsx live
-More}>
-
-
This is a content.
-
This is a content.
-
This is a content.
-
-
-```
-
-
diff --git a/packages/react/src/card/demo/basic.md b/packages/react/src/card/demo/basic.md
deleted file mode 100644
index 20fdae11..00000000
--- a/packages/react/src/card/demo/basic.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Basic card
-
-A basic card containing a title, content and an extra corner content.
-
-```jsx live
-More}>
-
-
This is a content.
-
This is a content.
-
This is a content.
-
-
-```
-
-
diff --git a/packages/react/src/card/demo/hoverable.md b/packages/react/src/card/demo/hoverable.md
deleted file mode 100644
index 9ad1e3ce..00000000
--- a/packages/react/src/card/demo/hoverable.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Hoverable
-
-Set `hoverable` to allow the card having a hover effect.
-
-```jsx live
-More}>
-
-
This is a content.
-
This is a content.
-
This is a content.
-
-
-```
-
-
diff --git a/packages/react/src/card/demo/image.md b/packages/react/src/card/demo/image.md
deleted file mode 100644
index c9a6f368..00000000
--- a/packages/react/src/card/demo/image.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### Media
-
-A card using an image to reinforce the content.
-
-```jsx live
-Learn more
- ]}>
-
-
-
Koala
-
The koala is an arboreal herbivorous marsupial native to Australia. It is the only extant representative of the family Phascolarctidae and its closest living relatives are the wombats, which comprise the family Vombatidae.
-
-
-```
-
-
diff --git a/packages/react/src/card/demo/inner-card.md b/packages/react/src/card/demo/inner-card.md
deleted file mode 100644
index d6c76dd4..00000000
--- a/packages/react/src/card/demo/inner-card.md
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-### Inner card
-
-It can be placed inside the ordinary card to display the information of the multilevel structure.
-
-```jsx live
-
-
-
Group title
- More}>
-
-
Inner Card content
-
-
-
- More}>
-
-
Inner Card content
-
-
-
-
-```
-
-
diff --git a/packages/react/src/card/demo/no-border.md b/packages/react/src/card/demo/no-border.md
deleted file mode 100644
index 1dd413b6..00000000
--- a/packages/react/src/card/demo/no-border.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### No border
-
-A borderless card on a gray background.
-
-```jsx live
-
- More}>
-
-
This is a content.
-
This is a content.
-
This is a content.
-
-
-
-```
-
-
diff --git a/packages/react/src/card/demo/simple.md b/packages/react/src/card/demo/simple.md
deleted file mode 100644
index e01980da..00000000
--- a/packages/react/src/card/demo/simple.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Simple card
-
-A simple card only containing a content area.
-
-```jsx live
-
-
-
This is a content.
-
This is a content.
-
This is a content.
-
-
-```
-
-
diff --git a/packages/react/src/card/index.md b/packages/react/src/card/index.md
index fa5b5bbf..7138ab3c 100644
--- a/packages/react/src/card/index.md
+++ b/packages/react/src/card/index.md
@@ -1,10 +1,17 @@
-import Basic from './demo/basic.md'
-import NoBorder from './demo/no-border.md'
-import Simple from './demo/simple.md'
-import Hoverable from './demo/hoverable.md'
-import Active from './demo/active.md'
-import InnerCard from './demo/inner-card.md'
-import Image from './demo/image.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import NoBorderDemo from './demo/NoBorder';
+import NoBorderSource from './demo/NoBorder.tsx?raw';
+import SimpleDemo from './demo/Simple';
+import SimpleSource from './demo/Simple.tsx?raw';
+import HoverableDemo from './demo/Hoverable';
+import HoverableSource from './demo/Hoverable.tsx?raw';
+import ActiveDemo from './demo/Active';
+import ActiveSource from './demo/Active.tsx?raw';
+import InnerCardDemo from './demo/InnerCard';
+import InnerCardSource from './demo/InnerCard.tsx?raw';
+import ImageDemo from './demo/Image';
+import ImageSource from './demo/Image.tsx?raw';
# Card
@@ -26,15 +33,71 @@ const { Content } = Card;
-
-
-
-
-
+
+
+### Basic card
+
+A basic card containing a title, content and an extra corner content.
+
+
+
+
+
+
+### No border
+
+A borderless card on a gray background.
+
+
+
+
+
+
+### Simple card
+
+A simple card only containing a content area.
+
+
+
+
+
+
+### Hoverable
+
+Set `hoverable` to allow the card having a hover effect.
+
+
+
+
+
+
+### Active
+
+Set `active` to allow the card always in elevation.
+
+
+
+
-
-
+
+
+### Inner card
+
+It can be placed inside the ordinary card to display the information of the multilevel structure.
+
+
+
+
+
+
+### Media
+
+A card using an image to reinforce the content.
+
+
+
+
@@ -54,4 +117,4 @@ const { Content } = Card;
| bodyStyle | inline style of body container | CSSProperties | - |
| footerStyle | inline style of footer container | CSSProperties | - |
| style | style object of container | CSSProperties | - |
-| className | className of container | string | - |
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/card/index.zh_CN.md b/packages/react/src/card/index.zh_CN.md
index 8f7ef9ea..361e7c39 100644
--- a/packages/react/src/card/index.zh_CN.md
+++ b/packages/react/src/card/index.zh_CN.md
@@ -1,10 +1,17 @@
-import Basic from './demo/basic.md'
-import NoBorder from './demo/no-border.md'
-import Simple from './demo/simple.md'
-import Hoverable from './demo/hoverable.md'
-import Active from './demo/active.md'
-import InnerCard from './demo/inner-card.md'
-import Image from './demo/image.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import NoBorderDemo from './demo/NoBorder';
+import NoBorderSource from './demo/NoBorder.tsx?raw';
+import SimpleDemo from './demo/Simple';
+import SimpleSource from './demo/Simple.tsx?raw';
+import HoverableDemo from './demo/Hoverable';
+import HoverableSource from './demo/Hoverable.tsx?raw';
+import ActiveDemo from './demo/Active';
+import ActiveSource from './demo/Active.tsx?raw';
+import InnerCardDemo from './demo/InnerCard';
+import InnerCardSource from './demo/InnerCard.tsx?raw';
+import ImageDemo from './demo/Image';
+import ImageSource from './demo/Image.tsx?raw';
# Card
@@ -26,15 +33,71 @@ const { Content } = Card;
-
-
-
-
-
+
+
+### 基本卡片
+
+包含标题、内容和右上角额外内容的基本卡片。
+
+
+
+
+
+
+### 无边框
+
+灰色背景上的无边框卡片。
+
+
+
+
+
+
+### 简洁卡片
+
+只包含内容区域的简洁卡片。
+
+
+
+
+
+
+### 悬停效果
+
+设置 `hoverable` 使卡片具有悬停效果。
+
+
+
+
+
+
+### 激活状态
+
+设置 `active` 使卡片始终显示阴影效果。
+
+
+
+
-
-
+
+
+### 内部卡片
+
+可以放置在普通卡片内部来展示多级结构的信息。
+
+
+
+
+
+
+### 媒体卡片
+
+使用图片来增强内容的卡片。
+
+
+
+
@@ -54,4 +117,4 @@ const { Content } = Card;
| bodyStyle | 内容容器的行内样式 | CSSProperties | - |
| footerStyle | 底部容器的行内样式 | CSSProperties | - |
| style | 容器样式对象 | CSSProperties | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/carousel/demo/arrows.md b/packages/react/src/carousel/demo/Arrows.tsx
similarity index 78%
rename from packages/react/src/carousel/demo/arrows.md
rename to packages/react/src/carousel/demo/Arrows.tsx
index 9ce4d737..e1dba4cc 100644
--- a/packages/react/src/carousel/demo/arrows.md
+++ b/packages/react/src/carousel/demo/Arrows.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Carousel } from '@tiny-design/react';
-### Arrows
-
-Show navigation arrows on hover.
-
-```jsx live
-() => {
+export default function ArrowsDemo() {
const style = {
height: 200,
display: 'flex',
@@ -21,7 +17,4 @@ Show navigation arrows on hover.
Slide 3
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/carousel/demo/basic.md b/packages/react/src/carousel/demo/Basic.tsx
similarity index 78%
rename from packages/react/src/carousel/demo/basic.md
rename to packages/react/src/carousel/demo/Basic.tsx
index f001ce30..115c89ac 100644
--- a/packages/react/src/carousel/demo/basic.md
+++ b/packages/react/src/carousel/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Carousel } from '@tiny-design/react';
-### Basic
-
-A basic carousel. You can pass children directly — no need for `Carousel.Item`.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const style = {
height: 200,
display: 'flex',
@@ -22,7 +18,4 @@ A basic carousel. You can pass children directly — no need for `Carousel.Item`
Slide 4
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/carousel/demo/fade.md b/packages/react/src/carousel/demo/Fade.tsx
similarity index 79%
rename from packages/react/src/carousel/demo/fade.md
rename to packages/react/src/carousel/demo/Fade.tsx
index 0f81423d..68c2acaa 100644
--- a/packages/react/src/carousel/demo/fade.md
+++ b/packages/react/src/carousel/demo/Fade.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Carousel } from '@tiny-design/react';
-### Fade Effect
-
-Use fade transition instead of scrolling.
-
-```jsx live
-() => {
+export default function FadeDemo() {
const style = {
height: 200,
display: 'flex',
@@ -21,7 +17,4 @@ Use fade transition instead of scrolling.
Slide 3
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/carousel/demo/methods.md b/packages/react/src/carousel/demo/Methods.tsx
similarity index 85%
rename from packages/react/src/carousel/demo/methods.md
rename to packages/react/src/carousel/demo/Methods.tsx
index 8107614a..61033716 100644
--- a/packages/react/src/carousel/demo/methods.md
+++ b/packages/react/src/carousel/demo/Methods.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Carousel, Button, Space } from '@tiny-design/react';
-### Ref Methods
-
-Use `ref` to access `goTo`, `next`, and `prev` methods for programmatic control.
-
-```jsx live
-() => {
+export default function MethodsDemo() {
const ref = React.useRef();
const style = {
height: 160,
@@ -31,7 +27,4 @@ Use `ref` to access `goTo`, `next`, and `prev` methods for programmatic control.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/carousel/index.md b/packages/react/src/carousel/index.md
index b7378e18..220c3ac4 100644
--- a/packages/react/src/carousel/index.md
+++ b/packages/react/src/carousel/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Arrows from './demo/arrows.md'
-import Fade from './demo/fade.md'
-import Methods from './demo/methods.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ArrowsDemo from './demo/Arrows';
+import ArrowsSource from './demo/Arrows.tsx?raw';
+import FadeDemo from './demo/Fade';
+import FadeSource from './demo/Fade.tsx?raw';
+import MethodsDemo from './demo/Methods';
+import MethodsSource from './demo/Methods.tsx?raw';
# Carousel
@@ -17,12 +21,44 @@ import { Carousel } from 'tiny-design';
-
-
+
+
+### Basic
+
+A basic carousel. You can pass children directly — no need for `Carousel.Item`.
+
+
+
+
+
+
+### Fade Effect
+
+Use fade transition instead of scrolling.
+
+
+
+
-
-
+
+
+### Arrows
+
+Show navigation arrows on hover.
+
+
+
+
+
+
+### Ref Methods
+
+Use `ref` to access `goTo`, `next`, and `prev` methods for programmatic control.
+
+
+
+
@@ -63,4 +99,4 @@ ref.current.goTo(2); // go to slide 2
| ------------------------- | -------------------------------------------------- |
| goTo(index, dontAnimate?) | Go to a specific slide. Skip animation if `true`. |
| next() | Go to the next slide. |
-| prev() | Go to the previous slide. |
+| prev() | Go to the previous slide. |
\ No newline at end of file
diff --git a/packages/react/src/carousel/index.zh_CN.md b/packages/react/src/carousel/index.zh_CN.md
index eb868954..dc8144d2 100644
--- a/packages/react/src/carousel/index.zh_CN.md
+++ b/packages/react/src/carousel/index.zh_CN.md
@@ -1,6 +1,11 @@
-import Basic from './demo/basic.md'
-import Arrows from './demo/arrows.md'
-import Fade from './demo/fade.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ArrowsDemo from './demo/Arrows';
+import ArrowsSource from './demo/Arrows.tsx?raw';
+import FadeDemo from './demo/Fade';
+import FadeSource from './demo/Fade.tsx?raw';
+import MethodsDemo from './demo/Methods';
+import MethodsSource from './demo/Methods.tsx?raw';
# Carousel
@@ -16,11 +21,44 @@ import { Carousel } from 'tiny-design';
-
-
+
+
+### 基本用法
+
+基本的走马灯。可以直接传入子元素,不需要 `Carousel.Item`。
+
+
+
+
+
+
+### 渐变效果
+
+使用渐变过渡效果代替滚动。
+
+
+
+
-
+
+
+### 切换箭头
+
+鼠标悬停时显示导航箭头。
+
+
+
+
+
+
+### 编程控制
+
+使用 `ref` 来访问 `goTo`、`next` 和 `prev` 方法进行编程控制。
+
+
+
+
@@ -61,4 +99,4 @@ ref.current.goTo(2); // go to slide 2
| ------------------------- | -------------------------------------------------- |
| goTo(index, dontAnimate?) | 跳转到指定幻灯片。传入 `true` 可跳过动画。 |
| next() | 跳转到下一张幻灯片。 |
-| prev() | 跳转到上一张幻灯片。 |
+| prev() | 跳转到上一张幻灯片。 |
\ No newline at end of file
diff --git a/packages/react/src/cascader/demo/Basic.tsx b/packages/react/src/cascader/demo/Basic.tsx
new file mode 100644
index 00000000..5b2ed62e
--- /dev/null
+++ b/packages/react/src/cascader/demo/Basic.tsx
@@ -0,0 +1,93 @@
+import React from 'react';
+import { Cascader } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ const options = [
+ {
+ value: 'us',
+ label: 'United States',
+ children: [
+ {
+ value: 'california',
+ label: 'California',
+ children: [
+ { value: 'la', label: 'Los Angeles' },
+ { value: 'sf', label: 'San Francisco' },
+ { value: 'sd', label: 'San Diego' },
+ ],
+ },
+ {
+ value: 'newyork',
+ label: 'New York',
+ children: [
+ { value: 'nyc', label: 'New York City' },
+ { value: 'buffalo', label: 'Buffalo' },
+ ],
+ },
+ {
+ value: 'texas',
+ label: 'Texas',
+ children: [
+ { value: 'houston', label: 'Houston' },
+ { value: 'austin', label: 'Austin' },
+ { value: 'dallas', label: 'Dallas' },
+ ],
+ },
+ ],
+ },
+ {
+ value: 'jp',
+ label: 'Japan',
+ children: [
+ {
+ value: 'kanto',
+ label: 'Kanto',
+ children: [
+ { value: 'tokyo', label: 'Tokyo' },
+ { value: 'yokohama', label: 'Yokohama' },
+ ],
+ },
+ {
+ value: 'kansai',
+ label: 'Kansai',
+ children: [
+ { value: 'osaka', label: 'Osaka' },
+ { value: 'kyoto', label: 'Kyoto' },
+ { value: 'kobe', label: 'Kobe' },
+ ],
+ },
+ ],
+ },
+ {
+ value: 'uk',
+ label: 'United Kingdom',
+ children: [
+ {
+ value: 'england',
+ label: 'England',
+ children: [
+ { value: 'london', label: 'London' },
+ { value: 'manchester', label: 'Manchester' },
+ { value: 'birmingham', label: 'Birmingham' },
+ ],
+ },
+ {
+ value: 'scotland',
+ label: 'Scotland',
+ children: [
+ { value: 'edinburgh', label: 'Edinburgh' },
+ { value: 'glasgow', label: 'Glasgow' },
+ ],
+ },
+ ],
+ },
+ ];
+
+ return (
+ console.log(value, opts)}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/cascader/demo/change-on-select.md b/packages/react/src/cascader/demo/ChangeOnSelect.tsx
similarity index 80%
rename from packages/react/src/cascader/demo/change-on-select.md
rename to packages/react/src/cascader/demo/ChangeOnSelect.tsx
index 3f42865d..66e2030c 100644
--- a/packages/react/src/cascader/demo/change-on-select.md
+++ b/packages/react/src/cascader/demo/ChangeOnSelect.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Cascader } from '@tiny-design/react';
-### Change On Select
-
-By default, only selecting a leaf node triggers `onChange`. Set `changeOnSelect` to fire `onChange` at every level, allowing partial selections. Use `displayRender` to customize how the selected path is shown.
-
-```jsx live
-() => {
+export default function ChangeOnSelectDemo() {
const options = [
{
value: 'jiangsu',
@@ -55,7 +51,4 @@ By default, only selecting a leaf node triggers `onChange`. Set `changeOnSelect`
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/cascader/demo/default-value.md b/packages/react/src/cascader/demo/DefaultValue.tsx
similarity index 87%
rename from packages/react/src/cascader/demo/default-value.md
rename to packages/react/src/cascader/demo/DefaultValue.tsx
index b480ffd6..e946bfa7 100644
--- a/packages/react/src/cascader/demo/default-value.md
+++ b/packages/react/src/cascader/demo/DefaultValue.tsx
@@ -1,15 +1,11 @@
-
+import React from 'react';
+import { Cascader } from '@tiny-design/react';
-### Default Value
-
-Pre-select a value and customize how the selection is displayed.
-
-```jsx live
-() => {
+export default function DefaultValueDemo() {
const options = [
{
value: 'electronics',
- label: '💻 Electronics',
+ label: 'Electronics',
children: [
{
value: 'phones',
@@ -33,7 +29,7 @@ Pre-select a value and customize how the selection is displayed.
},
{
value: 'clothing',
- label: '👕 Clothing',
+ label: 'Clothing',
children: [
{
value: 'mens',
@@ -62,7 +58,4 @@ Pre-select a value and customize how the selection is displayed.
displayRender={(labels) => labels.join(' > ')}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/cascader/demo/disabled.md b/packages/react/src/cascader/demo/Disabled.tsx
similarity index 79%
rename from packages/react/src/cascader/demo/disabled.md
rename to packages/react/src/cascader/demo/Disabled.tsx
index 72a02d39..b974d2a9 100644
--- a/packages/react/src/cascader/demo/disabled.md
+++ b/packages/react/src/cascader/demo/Disabled.tsx
@@ -1,15 +1,11 @@
-
+import React from 'react';
+import { Cascader } from '@tiny-design/react';
-### Disabled Options
-
-Disable specific options or the entire cascader.
-
-```jsx live
-() => {
+export default function DisabledDemo() {
const options = [
{
value: 'free',
- label: '🆓 Free Tier',
+ label: 'Free Tier',
children: [
{ value: 'starter', label: 'Starter — 1 GB' },
{ value: 'hobby', label: 'Hobby — 5 GB' },
@@ -17,7 +13,7 @@ Disable specific options or the entire cascader.
},
{
value: 'pro',
- label: '⭐ Pro Tier',
+ label: 'Pro Tier',
children: [
{ value: 'team', label: 'Team — 100 GB' },
{ value: 'business', label: 'Business — 500 GB' },
@@ -25,7 +21,7 @@ Disable specific options or the entire cascader.
},
{
value: 'enterprise',
- label: '🏢 Enterprise',
+ label: 'Enterprise',
disabled: true,
children: [
{ value: 'custom', label: 'Custom — Contact us' },
@@ -46,7 +42,4 @@ Disable specific options or the entire cascader.
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/cascader/demo/hover.md b/packages/react/src/cascader/demo/Hover.tsx
similarity index 77%
rename from packages/react/src/cascader/demo/hover.md
rename to packages/react/src/cascader/demo/Hover.tsx
index 6aa095ae..266fbec4 100644
--- a/packages/react/src/cascader/demo/hover.md
+++ b/packages/react/src/cascader/demo/Hover.tsx
@@ -1,15 +1,11 @@
-
+import React from 'react';
+import { Cascader } from '@tiny-design/react';
-### Hover Expand
-
-Expand sub-menus on hover instead of click for faster navigation.
-
-```jsx live
-() => {
+export default function HoverDemo() {
const options = [
{
value: 'design',
- label: '🎨 Design',
+ label: 'Design',
children: [
{ value: 'figma', label: 'Figma' },
{ value: 'sketch', label: 'Sketch' },
@@ -18,7 +14,7 @@ Expand sub-menus on hover instead of click for faster navigation.
},
{
value: 'development',
- label: '⚡ Development',
+ label: 'Development',
children: [
{ value: 'vscode', label: 'VS Code' },
{ value: 'webstorm', label: 'WebStorm' },
@@ -27,7 +23,7 @@ Expand sub-menus on hover instead of click for faster navigation.
},
{
value: 'collaboration',
- label: '🤝 Collaboration',
+ label: 'Collaboration',
children: [
{ value: 'slack', label: 'Slack' },
{ value: 'notion', label: 'Notion' },
@@ -43,7 +39,4 @@ Expand sub-menus on hover instead of click for faster navigation.
placeholder="Pick your toolset"
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/cascader/demo/sizes.md b/packages/react/src/cascader/demo/Sizes.tsx
similarity index 89%
rename from packages/react/src/cascader/demo/sizes.md
rename to packages/react/src/cascader/demo/Sizes.tsx
index 45e33ba3..9c8e4eb5 100644
--- a/packages/react/src/cascader/demo/sizes.md
+++ b/packages/react/src/cascader/demo/Sizes.tsx
@@ -1,15 +1,11 @@
-
+import React from 'react';
+import { Cascader } from '@tiny-design/react';
-### Sizes
-
-Three sizes to match different form densities.
-
-```jsx live
-() => {
+export default function SizesDemo() {
const options = [
{
value: 'asia',
- label: '🌏 Asia',
+ label: 'Asia',
children: [
{
value: 'japan',
@@ -31,7 +27,7 @@ Three sizes to match different form densities.
},
{
value: 'europe',
- label: '🌍 Europe',
+ label: 'Europe',
children: [
{
value: 'france',
@@ -60,7 +56,4 @@ Three sizes to match different form densities.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/cascader/demo/basic.md b/packages/react/src/cascader/demo/basic.md
deleted file mode 100644
index 5d8860ed..00000000
--- a/packages/react/src/cascader/demo/basic.md
+++ /dev/null
@@ -1,182 +0,0 @@
-
-
-### Basic
-
-Select a location from a country → state/province → city hierarchy.
-
-```jsx live
-() => {
- const options = [
- {
- value: 'us',
- label: '🇺🇸 United States',
- children: [
- {
- value: 'california',
- label: 'California',
- children: [
- { value: 'la', label: 'Los Angeles' },
- { value: 'sf', label: 'San Francisco' },
- { value: 'sd', label: 'San Diego' },
- ],
- },
- {
- value: 'newyork',
- label: 'New York',
- children: [
- { value: 'nyc', label: 'New York City' },
- { value: 'buffalo', label: 'Buffalo' },
- ],
- },
- {
- value: 'texas',
- label: 'Texas',
- children: [
- { value: 'houston', label: 'Houston' },
- { value: 'austin', label: 'Austin' },
- { value: 'dallas', label: 'Dallas' },
- ],
- },
- ],
- },
- {
- value: 'jp',
- label: '🇯🇵 Japan',
- children: [
- {
- value: 'kanto',
- label: 'Kantō',
- children: [
- { value: 'tokyo', label: 'Tokyo' },
- { value: 'yokohama', label: 'Yokohama' },
- ],
- },
- {
- value: 'kansai',
- label: 'Kansai',
- children: [
- { value: 'osaka', label: 'Osaka' },
- { value: 'kyoto', label: 'Kyoto' },
- { value: 'kobe', label: 'Kobe' },
- ],
- },
- ],
- },
- {
- value: 'uk',
- label: '🇬🇧 United Kingdom',
- children: [
- {
- value: 'england',
- label: 'England',
- children: [
- { value: 'london', label: 'London' },
- { value: 'manchester', label: 'Manchester' },
- { value: 'birmingham', label: 'Birmingham' },
- ],
- },
- {
- value: 'scotland',
- label: 'Scotland',
- children: [
- { value: 'edinburgh', label: 'Edinburgh' },
- { value: 'glasgow', label: 'Glasgow' },
- ],
- },
- ],
- },
- {
- value: 'br',
- label: '🇧🇷 Brazil',
- children: [
- {
- value: 'sp',
- label: 'São Paulo',
- children: [
- { value: 'saopaulo', label: 'São Paulo' },
- { value: 'campinas', label: 'Campinas' },
- ],
- },
- {
- value: 'rj',
- label: 'Rio de Janeiro',
- children: [
- { value: 'rio', label: 'Rio de Janeiro' },
- { value: 'niteroi', label: 'Niterói' },
- ],
- },
- ],
- },
- {
- value: 'au',
- label: '🇦🇺 Australia',
- children: [
- {
- value: 'nsw',
- label: 'New South Wales',
- children: [
- { value: 'sydney', label: 'Sydney' },
- { value: 'newcastle', label: 'Newcastle' },
- ],
- },
- {
- value: 'vic',
- label: 'Victoria',
- children: [
- { value: 'melbourne', label: 'Melbourne' },
- { value: 'geelong', label: 'Geelong' },
- ],
- },
- {
- value: 'qld',
- label: 'Queensland',
- children: [
- { value: 'brisbane', label: 'Brisbane' },
- { value: 'goldcoast', label: 'Gold Coast' },
- ],
- },
- ],
- },
- {
- value: 'fr',
- label: '🇫🇷 France',
- children: [
- {
- value: 'idf',
- label: 'Île-de-France',
- children: [
- { value: 'paris', label: 'Paris' },
- { value: 'versailles', label: 'Versailles' },
- ],
- },
- {
- value: 'aura',
- label: 'Auvergne-Rhône-Alpes',
- children: [
- { value: 'lyon', label: 'Lyon' },
- { value: 'grenoble', label: 'Grenoble' },
- ],
- },
- {
- value: 'paca',
- label: 'Provence-Alpes-Côte d\'Azur',
- children: [
- { value: 'marseille', label: 'Marseille' },
- { value: 'nice', label: 'Nice' },
- ],
- },
- ],
- },
- ];
-
- return (
- console.log(value, opts)}
- />
- );
-}
-```
-
-
diff --git a/packages/react/src/cascader/index.md b/packages/react/src/cascader/index.md
index f4a8686e..ee4756d3 100644
--- a/packages/react/src/cascader/index.md
+++ b/packages/react/src/cascader/index.md
@@ -1,9 +1,15 @@
-import Basic from './demo/basic.md'
-import ChangeOnSelect from './demo/change-on-select.md'
-import DefaultValue from './demo/default-value.md'
-import Hover from './demo/hover.md'
-import Disabled from './demo/disabled.md'
-import Sizes from './demo/sizes.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ChangeOnSelectDemo from './demo/ChangeOnSelect';
+import ChangeOnSelectSource from './demo/ChangeOnSelect.tsx?raw';
+import DefaultValueDemo from './demo/DefaultValue';
+import DefaultValueSource from './demo/DefaultValue.tsx?raw';
+import HoverDemo from './demo/Hover';
+import HoverSource from './demo/Hover.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import SizesDemo from './demo/Sizes';
+import SizesSource from './demo/Sizes.tsx?raw';
# Cascader
@@ -23,14 +29,62 @@ import { Cascader } from 'tiny-design';
-
-
-
+
+
+### Basic
+
+Select a location from a country > state/province > city hierarchy.
+
+
+
+
+
+
+### Hover Expand
+
+Expand sub-menus on hover instead of click for faster navigation.
+
+
+
+
+
+
+### Sizes
+
+Three sizes to match different form densities.
+
+
+
+
-
-
-
+
+
+### Default Value
+
+Pre-select a value and customize how the selection is displayed.
+
+
+
+
+
+
+### Disabled Options
+
+Disable specific options or the entire cascader.
+
+
+
+
+
+
+### Change On Select
+
+By default, only selecting a leaf node triggers `onChange`. Set `changeOnSelect` to fire `onChange` at every level, allowing partial selections. Use `displayRender` to customize how the selected path is shown.
+
+
+
+
@@ -58,4 +112,4 @@ import { Cascader } from 'tiny-design';
| label | option label | ReactNode | |
| disabled | disable this option | boolean | false |
| children | child options | CascaderOption[] | |
-| isLeaf | mark as leaf node | boolean | |
+| isLeaf | mark as leaf node | boolean | |
\ No newline at end of file
diff --git a/packages/react/src/cascader/index.zh_CN.md b/packages/react/src/cascader/index.zh_CN.md
index 3bb7443e..59a8629d 100644
--- a/packages/react/src/cascader/index.zh_CN.md
+++ b/packages/react/src/cascader/index.zh_CN.md
@@ -1,8 +1,15 @@
-import Basic from './demo/basic.md'
-import DefaultValue from './demo/default-value.md'
-import Hover from './demo/hover.md'
-import Disabled from './demo/disabled.md'
-import Sizes from './demo/sizes.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ChangeOnSelectDemo from './demo/ChangeOnSelect';
+import ChangeOnSelectSource from './demo/ChangeOnSelect.tsx?raw';
+import DefaultValueDemo from './demo/DefaultValue';
+import DefaultValueSource from './demo/DefaultValue.tsx?raw';
+import HoverDemo from './demo/Hover';
+import HoverSource from './demo/Hover.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import SizesDemo from './demo/Sizes';
+import SizesSource from './demo/Sizes.tsx?raw';
# Cascader 级联选择
@@ -22,13 +29,62 @@ import { Cascader } from 'tiny-design';
-
-
-
+
+
+### 基本用法
+
+从国家 > 省/州 > 城市的层级中选择位置。
+
+
+
+
+
+
+### 悬停展开
+
+悬停时展开子菜单而不是点击,以便更快地导航。
+
+
+
+
+
+
+### 尺寸
+
+三种尺寸以适应不同的表单密度。
+
+
+
+
-
-
+
+
+### 默认值
+
+预设默认值并自定义显示方式。
+
+
+
+
+
+
+### 禁用选项
+
+禁用特定选项或整个级联选择器。
+
+
+
+
+
+
+### 即时选择
+
+默认情况下,只有选中叶子节点才会触发 `onChange`。设置 `changeOnSelect` 可在每一级触发 `onChange`,允许部分选择。使用 `displayRender` 自定义选中路径的显示方式。
+
+
+
+
@@ -56,4 +112,4 @@ import { Cascader } from 'tiny-design';
| label | 选项标签 | ReactNode | |
| disabled | 禁用此选项 | boolean | false |
| children | 子选项 | CascaderOption[] | |
-| isLeaf | 标记为叶节点 | boolean | |
+| isLeaf | 标记为叶节点 | boolean | |
\ No newline at end of file
diff --git a/packages/react/src/checkbox/demo/Basic.tsx b/packages/react/src/checkbox/demo/Basic.tsx
new file mode 100644
index 00000000..2b0e2e78
--- /dev/null
+++ b/packages/react/src/checkbox/demo/Basic.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { Checkbox } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ const onChange = (e) => {
+ console.log(e.currentTarget.checked);
+ };
+
+ return Checkbox;
+}
\ No newline at end of file
diff --git a/packages/react/src/checkbox/demo/CheckAll.tsx b/packages/react/src/checkbox/demo/CheckAll.tsx
new file mode 100644
index 00000000..0dc3e81b
--- /dev/null
+++ b/packages/react/src/checkbox/demo/CheckAll.tsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import { Checkbox } from '@tiny-design/react';
+
+export default function CheckAllDemo() {
+ const [checkboxVal, setCheckboxVal] = React.useState(['a', 'c']);
+ const [indeterminate, setIndeterminate] = React.useState(true);
+ const [checkAll, setCheckAll] = React.useState(false);
+
+ return (
+ <>
+
-
- {
- this.setState({
- checkboxVal: val,
- indeterminate: val.length < 3 && val.length > 0,
- checkAll: val.length === 3,
- });
- }}>
- A
- B
- C
-
- >
- );
- }
-}
-```
-
-
diff --git a/packages/react/src/checkbox/index.md b/packages/react/src/checkbox/index.md
index c095e47f..45f4f496 100644
--- a/packages/react/src/checkbox/index.md
+++ b/packages/react/src/checkbox/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import CheckAll from './demo/check-all.md'
-import Disabled from './demo/disabled.md'
-import Group from './demo/group.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CheckAllDemo from './demo/CheckAll';
+import CheckAllSource from './demo/CheckAll.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
# Checkbox
@@ -24,12 +28,44 @@ const { Group } = Checkbox;
-
-
+
+
+### Basic
+
+The simplest use.
+
+
+
+
+
+
+### Checkbox Group
+
+A group of checkbox components.
+
+
+
+
-
-
+
+
+### Check all
+
+The `indeterminate` property can help you to achieve a **check all** effect.
+
+
+
+
+
+
+### Disabled
+
+Disabled state of Checkbox.
+
+
+
+
@@ -55,4 +91,4 @@ const { Group } = Checkbox;
| defaultValue | default selected values | string[] | - |
| value | controlled selected values | string[] | - |
| onChange | callback when selection changes | (checkedValues: string[]) => void| - |
-| disabled | whether disabled all checkboxes | boolean | false |
+| disabled | whether disabled all checkboxes | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/checkbox/index.zh_CN.md b/packages/react/src/checkbox/index.zh_CN.md
index e3561148..eeb89dcf 100644
--- a/packages/react/src/checkbox/index.zh_CN.md
+++ b/packages/react/src/checkbox/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import CheckAll from './demo/check-all.md'
-import Disabled from './demo/disabled.md'
-import Group from './demo/group.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CheckAllDemo from './demo/CheckAll';
+import CheckAllSource from './demo/CheckAll.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
# Checkbox
@@ -24,12 +28,44 @@ const { Group } = Checkbox;
-
-
+
+
+### 基本用法
+
+最简单的用法。
+
+
+
+
+
+
+### 复选框组
+
+复选框组件组。
+
+
+
+
-
-
+
+
+### 全选
+
+`indeterminate` 属性可以帮助你实现**全选**效果。
+
+
+
+
+
+
+### 禁用
+
+复选框的禁用状态。
+
+
+
+
@@ -55,4 +91,4 @@ const { Group } = Checkbox;
| defaultValue | 默认选中的值 | string[] | - |
| value | 受控选中的值 | string[] | - |
| onChange | 选择项变化时的回调 | (checkedValues: string[]) => void| - |
-| disabled | 是否禁用所有复选框 | boolean | false |
+| disabled | 是否禁用所有复选框 | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/collapse/demo/Accordion.tsx b/packages/react/src/collapse/demo/Accordion.tsx
new file mode 100644
index 00000000..1b819db4
--- /dev/null
+++ b/packages/react/src/collapse/demo/Accordion.tsx
@@ -0,0 +1,24 @@
+import React from 'react';
+import { Collapse } from '@tiny-design/react';
+
+export default function AccordionDemo() {
+ const { Panel } = Collapse;
+
+ const text = `A dog is a type of domesticated animal.
+Known for its loyalty and faithfulness,
+it can be found as a welcome guest in many households across the world.`;
+
+ return (
+
+
+
{text}
+
+
+
{text}
+
+
+
{text}
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/collapse/demo/basic.md b/packages/react/src/collapse/demo/Basic.tsx
old mode 100755
new mode 100644
similarity index 56%
rename from packages/react/src/collapse/demo/basic.md
rename to packages/react/src/collapse/demo/Basic.tsx
index f94c5b4b..1a486bf5
--- a/packages/react/src/collapse/demo/basic.md
+++ b/packages/react/src/collapse/demo/Basic.tsx
@@ -1,23 +1,17 @@
-
+import React from 'react';
+import { Collapse } from '@tiny-design/react';
-### Basic Collapse
-
-By default, any number of panels can be expanded at a time. The first panel is expanded in this example.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const { Panel } = Collapse;
-
+
const callback = (key) => {
console.log(key);
- }
-
- const text = `
- A dog is a type of domesticated animal.
- Known for its loyalty and faithfulness,
- it can be found as a welcome guest in many households across the world.
- `;
-
+ };
+
+ const text = `A dog is a type of domesticated animal.
+Known for its loyalty and faithfulness,
+it can be found as a welcome guest in many households across the world.`;
+
return (
@@ -31,7 +25,4 @@ By default, any number of panels can be expanded at a time. The first panel is e
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/collapse/demo/borderless.md b/packages/react/src/collapse/demo/Borderless.tsx
old mode 100755
new mode 100644
similarity index 57%
rename from packages/react/src/collapse/demo/borderless.md
rename to packages/react/src/collapse/demo/Borderless.tsx
index aa0c4da6..c02b7aad
--- a/packages/react/src/collapse/demo/borderless.md
+++ b/packages/react/src/collapse/demo/Borderless.tsx
@@ -1,19 +1,13 @@
-
+import React from 'react';
+import { Collapse } from '@tiny-design/react';
-### Borderless
+export default function BorderlessDemo() {
+ const { Panel } = Collapse;
-A borderless style of Collapse.
+ const text = `A dog is a type of domesticated animal.
+Known for its loyalty and faithfulness,
+it can be found as a welcome guest in many households across the world.`;
-```jsx live
-() => {
- const { Panel } = Collapse;
-
- const text = `
- A dog is a type of domesticated animal.
- Known for its loyalty and faithfulness,
- it can be found as a welcome guest in many households across the world.
- `;
-
return (
@@ -27,7 +21,4 @@ A borderless style of Collapse.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/collapse/demo/deletable.md b/packages/react/src/collapse/demo/Deletable.tsx
old mode 100755
new mode 100644
similarity index 50%
rename from packages/react/src/collapse/demo/deletable.md
rename to packages/react/src/collapse/demo/Deletable.tsx
index bdf0fbaa..8a86bbba
--- a/packages/react/src/collapse/demo/deletable.md
+++ b/packages/react/src/collapse/demo/Deletable.tsx
@@ -1,21 +1,15 @@
-
+import React from 'react';
+import { Collapse } from '@tiny-design/react';
-### Deletable
+export default function DeletableDemo() {
+ const { Panel } = Collapse;
-`Panel` can be deleted.
+ const text = `A dog is a type of domesticated animal.
+Known for its loyalty and faithfulness,
+it can be found as a welcome guest in many households across the world.`;
-```jsx live
-() => {
- const { Panel } = Collapse;
-
- const text = `
- A dog is a type of domesticated animal.
- Known for its loyalty and faithfulness,
- it can be found as a welcome guest in many households across the world.
- `;
-
return (
-
+
{text}
@@ -27,7 +21,4 @@
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/collapse/demo/extra.md b/packages/react/src/collapse/demo/Extra.tsx
similarity index 86%
rename from packages/react/src/collapse/demo/extra.md
rename to packages/react/src/collapse/demo/Extra.tsx
index 6d28ffde..b82143d9 100644
--- a/packages/react/src/collapse/demo/extra.md
+++ b/packages/react/src/collapse/demo/Extra.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Collapse, Button, Badge, Tag } from '@tiny-design/react';
-### Extra Content
-
-Add extra elements in the panel header corner with the `extra` prop.
-
-```jsx live
-() => {
+export default function ExtraDemo() {
const { Panel } = Collapse;
return (
@@ -43,7 +39,4 @@ Add extra elements in the panel header corner with the `extra` prop.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/collapse/demo/nested.md b/packages/react/src/collapse/demo/Nested.tsx
old mode 100755
new mode 100644
similarity index 59%
rename from packages/react/src/collapse/demo/nested.md
rename to packages/react/src/collapse/demo/Nested.tsx
index 565d1cb1..5c7f2cde
--- a/packages/react/src/collapse/demo/nested.md
+++ b/packages/react/src/collapse/demo/Nested.tsx
@@ -1,21 +1,15 @@
-
+import React from 'react';
+import { Collapse } from '@tiny-design/react';
-### Nested panel
+export default function NestedDemo() {
+ const { Panel } = Collapse;
-`Collapse` is nested inside the `Collapse`.
+ const text = `A dog is a type of domesticated animal.
+Known for its loyalty and faithfulness,
+it can be found as a welcome guest in many households across the world.`;
-```jsx live
-() => {
- const { Panel } = Collapse;
-
- const text = `
- A dog is a type of domesticated animal.
- Known for its loyalty and faithfulness,
- it can be found as a welcome guest in many households across the world.
- `;
-
return (
-
+
@@ -31,7 +25,4 @@
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/collapse/demo/accordion.md b/packages/react/src/collapse/demo/accordion.md
deleted file mode 100755
index f2d8ffc7..00000000
--- a/packages/react/src/collapse/demo/accordion.md
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-### Accordion
-
-Only one panel can be expanded at a time.
-
-```jsx live
-() => {
- const { Panel } = Collapse;
-
- const text = `
- A dog is a type of domesticated animal.
- Known for its loyalty and faithfulness,
- it can be found as a welcome guest in many households across the world.
- `;
-
- return (
-
-
-
{text}
-
-
-
{text}
-
-
-
{text}
-
-
- );
-}
-```
-
-
diff --git a/packages/react/src/collapse/index.md b/packages/react/src/collapse/index.md
index 0f5352b6..20ddf7f5 100755
--- a/packages/react/src/collapse/index.md
+++ b/packages/react/src/collapse/index.md
@@ -1,9 +1,15 @@
-import Accordion from './demo/accordion.md'
-import Basic from './demo/basic.md'
-import Borderless from './demo/borderless.md'
-import Deletable from './demo/deletable.md'
-import Extra from './demo/extra.md'
-import Nested from './demo/nested.md'
+import AccordionDemo from './demo/Accordion';
+import AccordionSource from './demo/Accordion.tsx?raw';
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import BorderlessDemo from './demo/Borderless';
+import BorderlessSource from './demo/Borderless.tsx?raw';
+import DeletableDemo from './demo/Deletable';
+import DeletableSource from './demo/Deletable.tsx?raw';
+import ExtraDemo from './demo/Extra';
+import ExtraSource from './demo/Extra.tsx?raw';
+import NestedDemo from './demo/Nested';
+import NestedSource from './demo/Nested.tsx?raw';
# Collapse
@@ -27,14 +33,62 @@ const { Panel } = Collapse;
-
-
-
+
+
+### Basic Collapse
+
+By default, any number of panels can be expanded at a time. The first panel is expanded in this example.
+
+
+
+
+
+
+### Accordion
+
+Only one panel can be expanded at a time.
+
+
+
+
+
+
+### Nested panel
+
+`Collapse` is nested inside the `Collapse`.
+
+
+
+
-
-
-
+
+
+### Borderless
+
+A borderless style of Collapse.
+
+
+
+
+
+
+### Deletable
+
+`Panel` can be deleted.
+
+
+
+
+
+
+### Extra Content
+
+Add extra elements in the panel header corner with the `extra` prop.
+
+
+
+
@@ -62,5 +116,4 @@ const { Panel } = Collapse;
| extra | extra element in the corner | ReactNode | - |
| deletable | whether the panel can be deleted | boolean | - |
| showArrow | display arrow icon | boolean | - |
-| onHeaderOnClick | callback when the header is clicked | (e: React.MouseEvent) => void | - |
-
+| onHeaderOnClick | callback when the header is clicked | (e: React.MouseEvent) => void | - |
\ No newline at end of file
diff --git a/packages/react/src/collapse/index.zh_CN.md b/packages/react/src/collapse/index.zh_CN.md
index ce1205cf..b46d5703 100644
--- a/packages/react/src/collapse/index.zh_CN.md
+++ b/packages/react/src/collapse/index.zh_CN.md
@@ -1,8 +1,15 @@
-import Accordion from './demo/accordion.md'
-import Basic from './demo/basic.md'
-import Borderless from './demo/borderless.md'
-import Deletable from './demo/deletable.md'
-import Nested from './demo/nested.md'
+import AccordionDemo from './demo/Accordion';
+import AccordionSource from './demo/Accordion.tsx?raw';
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import BorderlessDemo from './demo/Borderless';
+import BorderlessSource from './demo/Borderless.tsx?raw';
+import DeletableDemo from './demo/Deletable';
+import DeletableSource from './demo/Deletable.tsx?raw';
+import ExtraDemo from './demo/Extra';
+import ExtraSource from './demo/Extra.tsx?raw';
+import NestedDemo from './demo/Nested';
+import NestedSource from './demo/Nested.tsx?raw';
# Collapse
@@ -26,13 +33,62 @@ const { Panel } = Collapse;
-
-
-
+
+
+### 基本折叠
+
+默认情况下,可以同时展开任意数量的面板。此示例中第一个面板是展开的。
+
+
+
+
+
+
+### 手风琴
+
+同一时间只能展开一个面板。
+
+
+
+
+
+
+### 嵌套面板
+
+`Collapse` 可以嵌套在 `Collapse` 内部。
+
+
+
+
-
-
+
+
+### 无边框
+
+无边框样式的折叠面板。
+
+
+
+
+
+
+### 可删除
+
+面板可以被删除。
+
+
+
+
+
+
+### 额外内容
+
+使用 `extra` 属性在面板头部角落添加额外元素。
+
+
+
+
@@ -60,4 +116,4 @@ const { Panel } = Collapse;
| extra | 角落的额外元素 | ReactNode | - |
| deletable | 面板是否可删除 | boolean | - |
| showArrow | 显示箭头图标 | boolean | - |
-| onHeaderOnClick | 点击头部时的回调 | (e: React.MouseEvent) => void | - |
+| onHeaderOnClick | 点击头部时的回调 | (e: React.MouseEvent) => void | - |
\ No newline at end of file
diff --git a/packages/react/src/color-picker/demo/alpha.md b/packages/react/src/color-picker/demo/Alpha.tsx
similarity index 68%
rename from packages/react/src/color-picker/demo/alpha.md
rename to packages/react/src/color-picker/demo/Alpha.tsx
index 1e4946db..1add48e7 100644
--- a/packages/react/src/color-picker/demo/alpha.md
+++ b/packages/react/src/color-picker/demo/Alpha.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { ColorPicker } from '@tiny-design/react';
-### Alpha Channel
-
-Enable the alpha slider with `showAlpha`.
-
-```jsx live
-() => {
+export default function AlphaDemo() {
const [color, setColor] = React.useState('#6e41bf');
return (
@@ -14,7 +10,4 @@ Enable the alpha slider with `showAlpha`.
{color}
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/color-picker/demo/basic.md b/packages/react/src/color-picker/demo/Basic.tsx
similarity index 74%
rename from packages/react/src/color-picker/demo/basic.md
rename to packages/react/src/color-picker/demo/Basic.tsx
index 4ee0e0c2..0501c580 100644
--- a/packages/react/src/color-picker/demo/basic.md
+++ b/packages/react/src/color-picker/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { ColorPicker } from '@tiny-design/react';
-### Basic
-
-Click the swatch to open the color picker panel.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const [color, setColor] = React.useState('#6e41bf');
return (
@@ -18,7 +14,4 @@ Click the swatch to open the color picker panel.
{color}
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/color-picker/demo/Disabled.tsx b/packages/react/src/color-picker/demo/Disabled.tsx
new file mode 100644
index 00000000..fb5f64c3
--- /dev/null
+++ b/packages/react/src/color-picker/demo/Disabled.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { ColorPicker } from '@tiny-design/react';
+
+export default function DisabledDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/color-picker/demo/format.md b/packages/react/src/color-picker/demo/Format.tsx
similarity index 67%
rename from packages/react/src/color-picker/demo/format.md
rename to packages/react/src/color-picker/demo/Format.tsx
index 3af7496f..347bb1ec 100644
--- a/packages/react/src/color-picker/demo/format.md
+++ b/packages/react/src/color-picker/demo/Format.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { ColorPicker } from '@tiny-design/react';
-### Format
-
-Toggle between `hex`, `rgb`, and `hsb` output formats.
-
-```jsx live
-() => {
+export default function FormatDemo() {
const [color, setColor] = React.useState('#1890ff');
const [format, setFormat] = React.useState('hex');
@@ -17,11 +13,10 @@ Toggle between `hex`, `rgb`, and `hsb` output formats.
onChange={setColor}
onFormatChange={setFormat}
/>
- Format: {format}
+
+ Format: {format}
+ Value: {color}
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/color-picker/demo/Trigger.tsx b/packages/react/src/color-picker/demo/Trigger.tsx
new file mode 100644
index 00000000..dc95e725
--- /dev/null
+++ b/packages/react/src/color-picker/demo/Trigger.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { ColorPicker } from '@tiny-design/react';
+
+export default function TriggerDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/color-picker/demo/disabled.md b/packages/react/src/color-picker/demo/disabled.md
deleted file mode 100644
index ff04c8d7..00000000
--- a/packages/react/src/color-picker/demo/disabled.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Disabled
-
-A disabled color picker.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/color-picker/demo/trigger.md b/packages/react/src/color-picker/demo/trigger.md
deleted file mode 100644
index 200146b6..00000000
--- a/packages/react/src/color-picker/demo/trigger.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Trigger
-
-Open the panel on hover instead of click.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/color-picker/index.md b/packages/react/src/color-picker/index.md
index 496b2c2c..43c886d7 100644
--- a/packages/react/src/color-picker/index.md
+++ b/packages/react/src/color-picker/index.md
@@ -1,8 +1,13 @@
-import Alpha from './demo/alpha.md'
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Format from './demo/format.md'
-import Trigger from './demo/trigger.md'
+import AlphaDemo from './demo/Alpha';
+import AlphaSource from './demo/Alpha.tsx?raw';
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import FormatDemo from './demo/Format';
+import FormatSource from './demo/Format.tsx?raw';
+import TriggerDemo from './demo/Trigger';
+import TriggerSource from './demo/Trigger.tsx?raw';
# ColorPicker
@@ -22,13 +27,53 @@ import { ColorPicker } from 'tiny-design';
-
-
-
+
+
+### Basic
+
+Click the swatch to open the color picker panel.
+
+
+
+
+
+
+### Format
+
+Toggle between `hex`, `rgb`, and `hsb` output formats.
+
+
+
+
+
+
+### Alpha Channel
+
+Enable the alpha slider with `showAlpha`.
+
+
+
+
-
-
+
+
+### Disabled
+
+A disabled color picker.
+
+
+
+
+
+
+### Trigger
+
+Open the panel on hover instead of click.
+
+
+
+
@@ -43,7 +88,7 @@ import { ColorPicker } from 'tiny-design';
| onFormatChange | callback when format changes | (format: string) => void | |
| presets | preset color swatches | string[] | |
| showAlpha | show alpha slider | boolean | false |
-| disabled | disable the picker | boolean | false |
-| trigger | trigger mode | 'click' \| 'hover' | click |
+| disabled | disable the picker | boolean | false |
+| trigger | trigger mode | 'click' \| 'hover' | click |
| open | controlled panel visibility | boolean | |
-| onOpenChange | callback when visibility changes | (open: boolean) => void | |
+| onOpenChange | callback when visibility changes | (open: boolean) => void | |
\ No newline at end of file
diff --git a/packages/react/src/color-picker/index.zh_CN.md b/packages/react/src/color-picker/index.zh_CN.md
index 1258bd43..ad82784c 100644
--- a/packages/react/src/color-picker/index.zh_CN.md
+++ b/packages/react/src/color-picker/index.zh_CN.md
@@ -1,4 +1,13 @@
-import Basic from './demo/basic.md'
+import AlphaDemo from './demo/Alpha';
+import AlphaSource from './demo/Alpha.tsx?raw';
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import FormatDemo from './demo/Format';
+import FormatSource from './demo/Format.tsx?raw';
+import TriggerDemo from './demo/Trigger';
+import TriggerSource from './demo/Trigger.tsx?raw';
# ColorPicker 颜色选择器
@@ -18,7 +27,53 @@ import { ColorPicker } from 'tiny-design';
-
+
+
+### 基本用法
+
+点击色块打开颜色选择面板。
+
+
+
+
+
+
+### 格式
+
+在 `hex`、`rgb` 和 `hsb` 输出格式之间切换。
+
+
+
+
+
+
+### 透明度
+
+使用 `showAlpha` 启用透明度滑块。
+
+
+
+
+
+
+
+
+### 禁用
+
+禁用的颜色选择器。
+
+
+
+
+
+
+### 触发方式
+
+悬停时打开面板而不是点击。
+
+
+
+
@@ -34,7 +89,6 @@ import { ColorPicker } from 'tiny-design';
| presets | 预设颜色 | string[] | |
| showAlpha | 显示透明度滑块 | boolean | false |
| disabled | 禁用 | boolean | false |
-| size | 触发器尺寸 | 'sm' \| 'md' \| 'lg' | md |
| trigger | 触发方式 | 'click' \| 'hover' | click |
| open | 面板显示(受控) | boolean | |
-| onOpenChange | 面板显示变化回调 | (open: boolean) => void | |
+| onOpenChange | 面板显示变化回调 | (open: boolean) => void | |
\ No newline at end of file
diff --git a/packages/react/src/copy-to-clipboard/demo/Basic.tsx b/packages/react/src/copy-to-clipboard/demo/Basic.tsx
new file mode 100644
index 00000000..a1fed0b2
--- /dev/null
+++ b/packages/react/src/copy-to-clipboard/demo/Basic.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { CopyToClipboard, Input, Message } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+ Message.success('Copy successfully')}>
+ Click me to copy
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/copy-to-clipboard/demo/UseInput.tsx b/packages/react/src/copy-to-clipboard/demo/UseInput.tsx
new file mode 100644
index 00000000..59b8ea4c
--- /dev/null
+++ b/packages/react/src/copy-to-clipboard/demo/UseInput.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+import { CopyToClipboard, Input, Button, Message } from '@tiny-design/react';
+
+export default function UseInputDemo() {
+ const [text, setText] = React.useState('');
+
+ return (
+
)}
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/countdown/index.md b/packages/react/src/countdown/index.md
index 537e8a99..38266bea 100755
--- a/packages/react/src/countdown/index.md
+++ b/packages/react/src/countdown/index.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Millisecond from './demo/millisecond.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import MillisecondDemo from './demo/Millisecond';
+import MillisecondSource from './demo/Millisecond.tsx?raw';
# Countdown
@@ -19,10 +21,26 @@ import { Countdown } from 'tiny-design';
-
+
+
+### Basic
+
+A basic example.
+
+
+
+
-
+
+
+### Millisecond
+
+Allow to display millisecond
+
+
+
+
@@ -34,5 +52,4 @@ import { Countdown } from 'tiny-design';
| millisec | allow to get millisecond value | boolean | false |
| onFinish | callback when the countdown finished | () => void | - |
| style | style object of container object | | - |
-| className | className of container | string | - |
-
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/countdown/index.zh_CN.md b/packages/react/src/countdown/index.zh_CN.md
index 8104f9ba..f19c6cef 100644
--- a/packages/react/src/countdown/index.zh_CN.md
+++ b/packages/react/src/countdown/index.zh_CN.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Millisecond from './demo/millisecond.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import MillisecondDemo from './demo/Millisecond';
+import MillisecondSource from './demo/Millisecond.tsx?raw';
# Countdown
@@ -19,10 +21,26 @@ import { Countdown } from 'tiny-design';
-
+
+
+### 基本用法
+
+基本的例子。
+
+
+
+
-
+
+
+### 毫秒
+
+允许显示毫秒
+
+
+
+
@@ -34,4 +52,4 @@ import { Countdown } from 'tiny-design';
| millisec | 是否获取毫秒值 | boolean | false |
| onFinish | 倒计时结束时的回调 | () => void | - |
| style | 容器样式对象 | | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/date-picker/demo/Basic.tsx b/packages/react/src/date-picker/demo/Basic.tsx
new file mode 100644
index 00000000..e079437b
--- /dev/null
+++ b/packages/react/src/date-picker/demo/Basic.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { DatePicker } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ const [date, setDate] = React.useState(new Date());
+ return (
+ {
+ setDate(d);
+ console.log(str);
+ }}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/date-picker/demo/Disabled.tsx b/packages/react/src/date-picker/demo/Disabled.tsx
new file mode 100644
index 00000000..ad8495c5
--- /dev/null
+++ b/packages/react/src/date-picker/demo/Disabled.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { DatePicker } from '@tiny-design/react';
+
+export default function DisabledDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/date-picker/demo/DisabledDate.tsx b/packages/react/src/date-picker/demo/DisabledDate.tsx
new file mode 100644
index 00000000..280e2627
--- /dev/null
+++ b/packages/react/src/date-picker/demo/DisabledDate.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import { DatePicker } from '@tiny-design/react';
+
+export default function DisabledDateDemo() {
+ const disabledDate = (current) => {
+ const today = new Date();
+ today.setHours(0, 0, 0, 0);
+ return current < today;
+ };
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/date-picker/demo/ExtraFooter.tsx b/packages/react/src/date-picker/demo/ExtraFooter.tsx
new file mode 100644
index 00000000..7990f150
--- /dev/null
+++ b/packages/react/src/date-picker/demo/ExtraFooter.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import { DatePicker } from '@tiny-design/react';
+
+export default function ExtraFooterDemo() {
+ return (
+ (
+ Select a business day
+ )}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/date-picker/demo/picker.md b/packages/react/src/date-picker/demo/Picker.tsx
similarity index 65%
rename from packages/react/src/date-picker/demo/picker.md
rename to packages/react/src/date-picker/demo/Picker.tsx
index 569f6186..e0419587 100644
--- a/packages/react/src/date-picker/demo/picker.md
+++ b/packages/react/src/date-picker/demo/Picker.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { DatePicker, Space } from '@tiny-design/react';
-### Picker Type
-
-Use `picker` to switch between date, month, and year selection.
-
-```jsx live
-() => {
+export default function PickerDemo() {
return (
@@ -13,7 +9,4 @@ Use `picker` to switch between date, month, and year selection.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/date-picker/demo/size.md b/packages/react/src/date-picker/demo/Size.tsx
similarity index 64%
rename from packages/react/src/date-picker/demo/size.md
rename to packages/react/src/date-picker/demo/Size.tsx
index e2e555bb..02342fe1 100644
--- a/packages/react/src/date-picker/demo/size.md
+++ b/packages/react/src/date-picker/demo/Size.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { DatePicker, Space } from '@tiny-design/react';
-### Size
-
-Three sizes: `sm`, `md` (default), `lg`.
-
-```jsx live
-() => {
+export default function SizeDemo() {
return (
@@ -13,7 +9,4 @@ Three sizes: `sm`, `md` (default), `lg`.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/date-picker/demo/basic.md b/packages/react/src/date-picker/demo/basic.md
deleted file mode 100644
index 96c9d6d3..00000000
--- a/packages/react/src/date-picker/demo/basic.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### Basic
-
-A basic date picker with a "Today" shortcut.
-
-```jsx live
-() => {
- const [date, setDate] = React.useState(new Date());
- return (
- { setDate(d); console.log(str); }}
- />
- );
-}
-```
-
-
diff --git a/packages/react/src/date-picker/demo/disabled-date.md b/packages/react/src/date-picker/demo/disabled-date.md
deleted file mode 100644
index 8ff39f43..00000000
--- a/packages/react/src/date-picker/demo/disabled-date.md
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-### Disabled Date
-
-Use `disabledDate` to make specific dates unselectable. This example disables all past dates.
-
-```jsx live
-() => {
- const disabledDate = (current) => {
- const today = new Date();
- today.setHours(0, 0, 0, 0);
- return current < today;
- };
- return (
-
- );
-}
-```
-
-
diff --git a/packages/react/src/date-picker/demo/disabled.md b/packages/react/src/date-picker/demo/disabled.md
deleted file mode 100644
index f9735254..00000000
--- a/packages/react/src/date-picker/demo/disabled.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Disabled
-
-A disabled date picker.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/date-picker/demo/extra-footer.md b/packages/react/src/date-picker/demo/extra-footer.md
deleted file mode 100644
index 76888b19..00000000
--- a/packages/react/src/date-picker/demo/extra-footer.md
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-### Extra Footer
-
-Render extra content in the panel footer.
-
-```jsx live
-() => {
- return (
- Select a business day}
- />
- );
-}
-```
-
-
diff --git a/packages/react/src/date-picker/index.md b/packages/react/src/date-picker/index.md
index d6340801..be1e4823 100644
--- a/packages/react/src/date-picker/index.md
+++ b/packages/react/src/date-picker/index.md
@@ -1,9 +1,15 @@
-import Basic from './demo/basic.md'
-import Size from './demo/size.md'
-import Picker from './demo/picker.md'
-import DisabledDate from './demo/disabled-date.md'
-import Disabled from './demo/disabled.md'
-import ExtraFooter from './demo/extra-footer.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import PickerDemo from './demo/Picker';
+import PickerSource from './demo/Picker.tsx?raw';
+import DisabledDateDemo from './demo/DisabledDate';
+import DisabledDateSource from './demo/DisabledDate.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import ExtraFooterDemo from './demo/ExtraFooter';
+import ExtraFooterSource from './demo/ExtraFooter.tsx?raw';
# DatePicker
@@ -19,14 +25,62 @@ import { DatePicker } from 'tiny-design';
-
-
-
+
+
+### Basic
+
+A basic date picker with a "Today" shortcut.
+
+
+
+
+
+
+### Picker Type
+
+Use `picker` to switch between date, month, and year selection.
+
+
+
+
+
+
+### Disabled Date
+
+Use `disabledDate` to make specific dates unselectable. This example disables all past dates.
+
+
+
+
-
-
-
+
+
+### Size
+
+Three sizes: `sm`, `md` (default), `lg`.
+
+
+
+
+
+
+### Disabled
+
+A disabled date picker.
+
+
+
+
+
+
+### Extra Footer
+
+Render extra content in the panel footer.
+
+
+
+
@@ -52,4 +106,4 @@ import { DatePicker } from 'tiny-design';
| onOpenChange | Callback on popup open/close | (open: boolean) => void | - |
| onPanelChange | Callback on panel mode change | (date: Date, mode: PanelMode) => void | - |
| style | Style object of container | CSSProperties | - |
-| className | ClassName of container | string | - |
+| className | ClassName of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/date-picker/index.zh_CN.md b/packages/react/src/date-picker/index.zh_CN.md
index f3c1b61c..2a22cc5f 100644
--- a/packages/react/src/date-picker/index.zh_CN.md
+++ b/packages/react/src/date-picker/index.zh_CN.md
@@ -1,9 +1,15 @@
-import Basic from './demo/basic.md'
-import Size from './demo/size.md'
-import Picker from './demo/picker.md'
-import DisabledDate from './demo/disabled-date.md'
-import Disabled from './demo/disabled.md'
-import ExtraFooter from './demo/extra-footer.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import PickerDemo from './demo/Picker';
+import PickerSource from './demo/Picker.tsx?raw';
+import DisabledDateDemo from './demo/DisabledDate';
+import DisabledDateSource from './demo/DisabledDate.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import ExtraFooterDemo from './demo/ExtraFooter';
+import ExtraFooterSource from './demo/ExtraFooter.tsx?raw';
# DatePicker
@@ -19,14 +25,62 @@ import { DatePicker } from 'tiny-design';
-
-
-
+
+
+### 基本用法
+
+带有"今天"快捷选项的基本日期选择器。
+
+
+
+
+
+
+### 选择器类型
+
+使用 `picker` 在日期、月份和年份选择之间切换。
+
+
+
+
+
+
+### 禁用日期
+
+使用 `disabledDate` 使特定日期不可选择。此示例禁用所有过去的日期。
+
+
+
+
-
-
-
+
+
+### 尺寸
+
+三种尺寸:`sm`、`md`(默认)、`lg`。
+
+
+
+
+
+
+### 禁用
+
+禁用的日期选择器。
+
+
+
+
+
+
+### 额外页脚
+
+在面板页脚渲染额外内容。
+
+
+
+
@@ -52,4 +106,4 @@ import { DatePicker } from 'tiny-design';
| onOpenChange | 弹出层打开/关闭时的回调 | (open: boolean) => void | - |
| onPanelChange | 面板模式切换时的回调 | (date: Date, mode: PanelMode) => void | - |
| style | 容器的样式对象 | CSSProperties | - |
-| className | 容器的类名 | string | - |
+| className | 容器的类名 | string | - |
\ No newline at end of file
diff --git a/packages/react/src/descriptions/demo/Basic.tsx b/packages/react/src/descriptions/demo/Basic.tsx
new file mode 100644
index 00000000..9f0216c8
--- /dev/null
+++ b/packages/react/src/descriptions/demo/Basic.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Descriptions } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+ React
+ 0200004567
+ Sydney, Australia
+ Great
+ 456P+HW Camperdown, New South Wales
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/descriptions/demo/Border.tsx b/packages/react/src/descriptions/demo/Border.tsx
new file mode 100644
index 00000000..0db010c5
--- /dev/null
+++ b/packages/react/src/descriptions/demo/Border.tsx
@@ -0,0 +1,36 @@
+import React from 'react';
+import { Descriptions, Badge } from '@tiny-design/react';
+
+export default function BorderDemo() {
+ return (
+
+ Cloud Database
+ Prepaid
+ YES
+ 2018-04-24 18:00:00
+
+ 2019-04-24 18:00:00
+
+
+
+ Running
+
+ $80.00
+ $20.00
+ $60.00
+
+ Data disk type: MongoDB
+
+ Database version: 3.4
+
+ Package: dds.mongo.mid
+
+ Storage space: 10 GB
+
+ Replication factor: 3
+
+ Region: East China 1
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/descriptions/demo/size.md b/packages/react/src/descriptions/demo/Size.tsx
similarity index 91%
rename from packages/react/src/descriptions/demo/size.md
rename to packages/react/src/descriptions/demo/Size.tsx
index 6022441f..207cee92 100644
--- a/packages/react/src/descriptions/demo/size.md
+++ b/packages/react/src/descriptions/demo/Size.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Descriptions, Radio } from '@tiny-design/react';
-### Size
-
-Customised sizes to fit in a variety of containers.
-
-```jsx live
-() => {
+export default function SizeDemo() {
const [size, setSize] = React.useState('md');
return (
@@ -35,7 +31,7 @@ Customised sizes to fit in a variety of containers.
Replication factor: 3
- Region: East China 1
+ Region: East China 1
@@ -50,7 +46,4 @@ Customised sizes to fit in a variety of containers.
);
-};
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/descriptions/demo/Vertical.tsx b/packages/react/src/descriptions/demo/Vertical.tsx
new file mode 100644
index 00000000..49a236f0
--- /dev/null
+++ b/packages/react/src/descriptions/demo/Vertical.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Descriptions } from '@tiny-design/react';
+
+export default function VerticalDemo() {
+ return (
+
+ React
+ 0200004567
+ Sydney, Australia
+ Great
+ 456P+HW Camperdown, New South Wales
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/descriptions/demo/VerticalBorder.tsx b/packages/react/src/descriptions/demo/VerticalBorder.tsx
new file mode 100644
index 00000000..514ac302
--- /dev/null
+++ b/packages/react/src/descriptions/demo/VerticalBorder.tsx
@@ -0,0 +1,36 @@
+import React from 'react';
+import { Descriptions, Badge } from '@tiny-design/react';
+
+export default function VerticalBorderDemo() {
+ return (
+
+ Cloud Database
+ Prepaid
+ YES
+ 2018-04-24 18:00:00
+
+ 2019-04-24 18:00:00
+
+
+
+ Running
+
+ $80.00
+ $20.00
+ $60.00
+
+ Data disk type: MongoDB
+
+ Database version: 3.4
+
+ Package: dds.mongo.mid
+
+ Storage space: 10 GB
+
+ Replication factor: 3
+
+ Region: East China 1
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/descriptions/demo/basic.md b/packages/react/src/descriptions/demo/basic.md
deleted file mode 100644
index c0f5e254..00000000
--- a/packages/react/src/descriptions/demo/basic.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Basic
-
-A simple usage.
-
-```jsx live
-
- React
- 0200004567
- Sydney, Australia
- Great
- 456P+HW Camperdown, New South Wales
-
-```
-
-
diff --git a/packages/react/src/descriptions/demo/border.md b/packages/react/src/descriptions/demo/border.md
deleted file mode 100644
index 371ea2b9..00000000
--- a/packages/react/src/descriptions/demo/border.md
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-### Border
-
-Descriptions with border.
-
-```jsx live
-
- Cloud Database
- Prepaid
- YES
- 2018-04-24 18:00:00
-
- 2019-04-24 18:00:00
-
-
- Running
-
- $80.00
- $20.00
- $60.00
-
- Data disk type: MongoDB
-
- Database version: 3.4
-
- Package: dds.mongo.mid
-
- Storage space: 10 GB
-
- Replication factor: 3
-
- Region: East China 1
-
-
-```
-
-
diff --git a/packages/react/src/descriptions/demo/vertical-border.md b/packages/react/src/descriptions/demo/vertical-border.md
deleted file mode 100644
index c63f42be..00000000
--- a/packages/react/src/descriptions/demo/vertical-border.md
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-### Border
-
-Descriptions with border.
-
-```jsx live
-
- Cloud Database
- Prepaid
- YES
- 2018-04-24 18:00:00
-
- 2019-04-24 18:00:00
-
-
- Running
-
- $80.00
- $20.00
- $60.00
-
- Data disk type: MongoDB
-
- Database version: 3.4
-
- Package: dds.mongo.mid
-
- Storage space: 10 GB
-
- Replication factor: 3
-
- Region: East China 1
-
-
-```
-
-
diff --git a/packages/react/src/descriptions/demo/vertical.md b/packages/react/src/descriptions/demo/vertical.md
deleted file mode 100644
index 3ac18193..00000000
--- a/packages/react/src/descriptions/demo/vertical.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Vertical
-
-Vertical layout.
-
-```jsx live
-
- React
- 0200004567
- Sydney, Australia
- Great
- 456P+HW Camperdown, New South Wales
-
-```
-
-
diff --git a/packages/react/src/descriptions/index.md b/packages/react/src/descriptions/index.md
index 653a5af2..959935eb 100644
--- a/packages/react/src/descriptions/index.md
+++ b/packages/react/src/descriptions/index.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Border from './demo/border.md'
-import Size from './demo/size.md'
-import Vertical from './demo/vertical.md'
-import VerticalBorder from './demo/vertical-border.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import BorderDemo from './demo/Border';
+import BorderSource from './demo/Border.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import VerticalBorderDemo from './demo/VerticalBorder';
+import VerticalBorderSource from './demo/VerticalBorder.tsx?raw';
# Descriptions
@@ -20,11 +25,57 @@ import { Descriptions } from 'tiny-design';
## Examples
-
-
-
-
-
+
+
+
+
+### Basic
+
+A simple usage.
+
+
+
+
+
+
+### Border
+
+Descriptions with border.
+
+
+
+
+
+
+### Size
+
+Customised sizes to fit in a variety of containers.
+
+
+
+
+
+
+
+
+### Vertical
+
+Vertical layout.
+
+
+
+
+
+
+### Vertical Border
+
+Vertical layout with border.
+
+
+
+
+
+
## API
@@ -44,4 +95,4 @@ import { Descriptions } from 'tiny-design';
| Property | Description | Type | Default |
| ------------- | ------------------------------------- | ----------------- | --------- |
| label | description of the content | ReactNode | - |
-| span | the number of columns included | number | 1 |
+| span | the number of columns included | number | 1 |
\ No newline at end of file
diff --git a/packages/react/src/descriptions/index.zh_CN.md b/packages/react/src/descriptions/index.zh_CN.md
index 92728f77..2fe50c68 100644
--- a/packages/react/src/descriptions/index.zh_CN.md
+++ b/packages/react/src/descriptions/index.zh_CN.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Border from './demo/border.md'
-import Size from './demo/size.md'
-import Vertical from './demo/vertical.md'
-import VerticalBorder from './demo/vertical-border.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import BorderDemo from './demo/Border';
+import BorderSource from './demo/Border.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import VerticalBorderDemo from './demo/VerticalBorder';
+import VerticalBorderSource from './demo/VerticalBorder.tsx?raw';
# Descriptions
@@ -20,11 +25,57 @@ import { Descriptions } from 'tiny-design';
## 代码示例
-
-
-
-
-
+
+
+
+
+### 基本用法
+
+简单的用法。
+
+
+
+
+
+
+### 带边框
+
+带边框的描述列表。
+
+
+
+
+
+
+### 尺寸
+
+适应各种容器的尺寸。
+
+
+
+
+
+
+
+
+### 垂直布局
+
+垂直布局。
+
+
+
+
+
+
+### 垂直带边框
+
+垂直布局带边框。
+
+
+
+
+
+
## API
@@ -44,4 +95,4 @@ import { Descriptions } from 'tiny-design';
| 属性 | 说明 | 类型 | 默认值 |
| ------------- | ------------------------------------- | ----------------- | --------- |
| label | 内容的标签描述 | ReactNode | - |
-| span | 包含的列数 | number | 1 |
+| span | 包含的列数 | number | 1 |
\ No newline at end of file
diff --git a/packages/react/src/divider/demo/AlignTitle.tsx b/packages/react/src/divider/demo/AlignTitle.tsx
new file mode 100644
index 00000000..88cfab23
--- /dev/null
+++ b/packages/react/src/divider/demo/AlignTitle.tsx
@@ -0,0 +1,19 @@
+import React from 'react';
+import { Divider } from '@tiny-design/react';
+
+export default function AlignTitleDemo() {
+ return (
+ <>
+ Left Text
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti
+ licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+ Right Text
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti
+ licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/divider/demo/Horizontal.tsx b/packages/react/src/divider/demo/Horizontal.tsx
new file mode 100644
index 00000000..60ad3af8
--- /dev/null
+++ b/packages/react/src/divider/demo/Horizontal.tsx
@@ -0,0 +1,28 @@
+import React from 'react';
+import { Divider } from '@tiny-design/react';
+
+export default function HorizontalDemo() {
+ return (
+ <>
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti
+ licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti
+ licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+ With Text
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti
+ licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti
+ licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/divider/demo/Vertical.tsx b/packages/react/src/divider/demo/Vertical.tsx
new file mode 100644
index 00000000..fc22942d
--- /dev/null
+++ b/packages/react/src/divider/demo/Vertical.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Divider } from '@tiny-design/react';
+
+export default function VerticalDemo() {
+ return (
+ <>
+ Text
+
+ Link
+
+ Link
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/divider/demo/align-title.md b/packages/react/src/divider/demo/align-title.md
deleted file mode 100644
index b985071d..00000000
--- a/packages/react/src/divider/demo/align-title.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### Align Title
-
-Set orientation of divider to left or right, default is `center`.
-
-```jsx live
-<>
- Left Text
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
- Right Text
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
->
-```
-
-
diff --git a/packages/react/src/divider/demo/horizontal.md b/packages/react/src/divider/demo/horizontal.md
deleted file mode 100644
index 776ea4fa..00000000
--- a/packages/react/src/divider/demo/horizontal.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### Horizontal
-
-Divider default type is `horizontal`. Support inner text inside Divider.
-
-```jsx live
-<>
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
-
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
- With Text
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
-
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo.
->
-```
-
-
diff --git a/packages/react/src/divider/demo/vertical.md b/packages/react/src/divider/demo/vertical.md
deleted file mode 100644
index 09779fda..00000000
--- a/packages/react/src/divider/demo/vertical.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Vertical
-
-Use `type="vertical"` make it vertical.
-
-```jsx live
-<>
- Text
-
- Link
-
- Link
->
-```
-
-
diff --git a/packages/react/src/divider/index.md b/packages/react/src/divider/index.md
index 8921d5c7..99565b8e 100644
--- a/packages/react/src/divider/index.md
+++ b/packages/react/src/divider/index.md
@@ -1,6 +1,9 @@
-import AlignTitle from './demo/align-title.md'
-import Horizontal from './demo/horizontal.md'
-import Vertical from './demo/vertical.md'
+import AlignTitleDemo from './demo/AlignTitle';
+import AlignTitleSource from './demo/AlignTitle.tsx?raw';
+import HorizontalDemo from './demo/Horizontal';
+import HorizontalSource from './demo/Horizontal.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
# Divider
@@ -21,11 +24,35 @@ import { Divider } from 'tiny-design';
-
-
+
+
+### Horizontal
+
+Divider default type is `horizontal`. Support inner text inside Divider.
+
+
+
+
+
+
+### Vertical
+
+Use `type="vertical"` make it vertical.
+
+
+
+
-
+
+
+### Align Title
+
+Set orientation of divider to left or right, default is `center`.
+
+
+
+
@@ -37,4 +64,4 @@ import { Divider } from 'tiny-design';
| dashed | whether line is dashed | boolean | false |
| align | position of title inside divider | enum: `left` | `right` | `center` | `center` |
| style | style object of container object | CSSProperties | - |
-| className | className of container | string | - |
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/divider/index.zh_CN.md b/packages/react/src/divider/index.zh_CN.md
index cfe03958..5d8c3798 100644
--- a/packages/react/src/divider/index.zh_CN.md
+++ b/packages/react/src/divider/index.zh_CN.md
@@ -1,6 +1,9 @@
-import AlignTitle from './demo/align-title.md'
-import Horizontal from './demo/horizontal.md'
-import Vertical from './demo/vertical.md'
+import AlignTitleDemo from './demo/AlignTitle';
+import AlignTitleSource from './demo/AlignTitle.tsx?raw';
+import HorizontalDemo from './demo/Horizontal';
+import HorizontalSource from './demo/Horizontal.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
# Divider
@@ -21,11 +24,35 @@ import { Divider } from 'tiny-design';
-
-
+
+
+### 水平分割线
+
+分割线默认类型为 `horizontal`。支持在分割线内添加文字。
+
+
+
+
+
+
+### 垂直分割线
+
+使用 `type="vertical"` 使其垂直。
+
+
+
+
-
+
+
+### 对齐标题
+
+设置分割线标题的位置,默认为 `center`。
+
+
+
+
@@ -37,4 +64,4 @@ import { Divider } from 'tiny-design';
| dashed | 是否为虚线 | boolean | false |
| align | 分割线中标题的位置 | enum: `left` | `right` | `center` | `center` |
| style | 容器的样式对象 | CSSProperties | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/drawer/demo/basic.md b/packages/react/src/drawer/demo/Basic.tsx
similarity index 55%
rename from packages/react/src/drawer/demo/basic.md
rename to packages/react/src/drawer/demo/Basic.tsx
index 7422679e..1dc04760 100644
--- a/packages/react/src/drawer/demo/basic.md
+++ b/packages/react/src/drawer/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Drawer, Button } from '@tiny-design/react';
-### Basic
-
-Basic drawer.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const [visible, setVisible] = React.useState(false);
return (
@@ -17,14 +13,12 @@ Basic drawer.
header="Basic Drawer"
placement="right"
onClose={() => setVisible(false)}
- visible={visible}>
-
Some contents...
-
Some contents...
-
Some contents...
+ open={visible}
+ >
+
Some contents...
+
Some contents...
+
Some contents...
);
-};
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/drawer/demo/multi-level.md b/packages/react/src/drawer/demo/MultiLevel.tsx
similarity index 78%
rename from packages/react/src/drawer/demo/multi-level.md
rename to packages/react/src/drawer/demo/MultiLevel.tsx
index b452f11b..5423a8fc 100644
--- a/packages/react/src/drawer/demo/multi-level.md
+++ b/packages/react/src/drawer/demo/MultiLevel.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Drawer, Button } from '@tiny-design/react';
-### Multi-level drawer
-
-Open a new drawer on top of an existing drawer to handle multi branch tasks.
-
-```jsx live
-() => {
+export default function MultiLevelDemo() {
const [visible, setVisible] = React.useState(false);
const [childVisible, setChildVisible] = React.useState(false);
@@ -19,7 +15,8 @@ Open a new drawer on top of an existing drawer to handle multi branch tasks.
size={520}
closable={false}
onClose={() => setVisible(false)}
- visible={visible}>
+ open={visible}
+ >
setChildVisible(true)}>
Two-level drawer
@@ -28,7 +25,8 @@ Open a new drawer on top of an existing drawer to handle multi branch tasks.
size={320}
closable={false}
onClose={() => setChildVisible(false)}
- visible={childVisible}>
+ open={childVisible}
+ >
This is two-level drawer
- setVisible(false)}>
- Cancel
-
+ }}
+ >
+ setVisible(false)}>Cancel setVisible(false)} btnType="primary">
Submit
@@ -54,7 +50,4 @@ Open a new drawer on top of an existing drawer to handle multi branch tasks.
>
);
-};
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/drawer/demo/Placement.tsx b/packages/react/src/drawer/demo/Placement.tsx
new file mode 100644
index 00000000..b815a962
--- /dev/null
+++ b/packages/react/src/drawer/demo/Placement.tsx
@@ -0,0 +1,35 @@
+import React from 'react';
+import { Drawer, Button, Radio } from '@tiny-design/react';
+
+export default function PlacementDemo() {
+ const [visible, setVisible] = React.useState(false);
+ const [placement, setPlacement] = React.useState('left');
+
+ return (
+ <>
+ setPlacement(val)}>
+ Top
+ Bottom
+ Left
+ Right
+
+
+
+
+ setVisible(true)}>
+ Open
+
+
+ setVisible(false)}
+ open={visible}
+ >
+
Some contents...
+
Some contents...
+
Some contents...
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/drawer/demo/placement.md b/packages/react/src/drawer/demo/placement.md
deleted file mode 100644
index baf67643..00000000
--- a/packages/react/src/drawer/demo/placement.md
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-### Placement
-
-The Drawer can appear from any edge of the screen.
-
-```jsx live
-() => {
-const { Group } = Radio;
-
- const Wrapper = () => {
- const [visible, setVisible] = React.useState(false);
- const [placement, setPlacement] = React.useState('left');
-
- return(
- <>
- setPlacement(val)}>
- Top
- Bottom
- Left
- Right
-
-
-
-
- setVisible(true)}>
- Open
-
-
- setVisible(false)}
- visible={visible}>
-
Some contents...
-
Some contents...
-
Some contents...
-
- >
- );
- };
-
- return (
-
- );
-};
-```
-
-
diff --git a/packages/react/src/drawer/index.md b/packages/react/src/drawer/index.md
index 37b2ca76..6bc0e242 100644
--- a/packages/react/src/drawer/index.md
+++ b/packages/react/src/drawer/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Placement from './demo/placement.md'
-import Level from './demo/multi-level.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
+import MultiLevelDemo from './demo/MultiLevel';
+import MultiLevelSource from './demo/MultiLevel.tsx?raw';
# Drawer
@@ -24,11 +27,35 @@ import { Drawer } from 'tiny-design';
-
-
+
+
+### Basic
+
+Basic drawer.
+
+
+
+
+
+
+### Multi-level drawer
+
+Open a new drawer on top of an existing drawer to handle multi branch tasks.
+
+
+
+
-
+
+
+### Placement
+
+The Drawer can appear from any edge of the screen.
+
+
+
+
@@ -38,10 +65,10 @@ import { Drawer } from 'tiny-design';
| ----------------- | ----------------------------------------------------- | --------------------------------------------------------- | --------- |
| placement | The placement of the Drawer | enum: `top` | `bottom` | `left` | `right` | `right` |
| size | Drawer dialog width or height | number | string | 256 |
-| visible | Whether the Drawer dialog is visible or not | boolean | - |
-| header | Drawer header | ReactNode | - |
-| footer | Drawer footer | ReactNode | - |
-| closable | Display a close button | boolean | `true` |
-| unmountOnClose | Whether unmount child components when closing drawer | boolean | `true` |
+| open | Whether the Drawer dialog is visible or not | boolean | - |
+| header | Drawer header | ReactNode | - |
+| footer | Drawer footer | ReactNode | - |
+| closable | Display a close button | boolean | `true` |
+| unmountOnClose | Whether unmount child components when closing drawer | boolean | `true` |
| style | style object of container object | CSSProperties | - |
-| className | className of container | string | - |
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/drawer/index.zh_CN.md b/packages/react/src/drawer/index.zh_CN.md
index d03cdb6b..aa4c2e0c 100644
--- a/packages/react/src/drawer/index.zh_CN.md
+++ b/packages/react/src/drawer/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Placement from './demo/placement.md'
-import Level from './demo/multi-level.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
+import MultiLevelDemo from './demo/MultiLevel';
+import MultiLevelSource from './demo/MultiLevel.tsx?raw';
# Drawer
@@ -24,11 +27,35 @@ import { Drawer } from 'tiny-design';
-
-
+
+
+### 基本用法
+
+基本的抽屉。
+
+
+
+
+
+
+### 多层抽屉
+
+在现有抽屉上打开新抽屉以处理多分支任务。
+
+
+
+
-
+
+
+### 位置
+
+抽屉可以从屏幕的任何边缘出现。
+
+
+
+
@@ -38,10 +65,10 @@ import { Drawer } from 'tiny-design';
| ----------------- | --------------------------------------------- | --------------------------------------------------------- | --------- |
| placement | 抽屉的弹出位置 | enum: `top` | `bottom` | `left` | `right` | `right` |
| size | 抽屉的宽度或高度 | number | string | 256 |
-| visible | 抽屉是否可见 | boolean | - |
+| open | 抽屉是否可见 | boolean | - |
| header | 抽屉头部内容 | ReactNode | - |
| footer | 抽屉底部内容 | ReactNode | - |
| closable | 是否显示关闭按钮 | boolean | `true` |
| unmountOnClose | 关闭时是否卸载子组件 | boolean | `true` |
| style | 容器的样式对象 | CSSProperties | - |
-| className | 容器的类名 | string | - |
+| className | 容器的类名 | string | - |
\ No newline at end of file
diff --git a/packages/react/src/dropdown/demo/Arrow.tsx b/packages/react/src/dropdown/demo/Arrow.tsx
new file mode 100644
index 00000000..b1490613
--- /dev/null
+++ b/packages/react/src/dropdown/demo/Arrow.tsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import { Dropdown, Menu, Message, Button, Flex } from '@tiny-design/react';
+
+export default function ArrowDemo() {
+ const renderOverlay = () => (
+
+ );
+
+ return (
+ <>
+
+
+ bottomLeft
+
+
+ bottomCenter
+
+
+ bottomRight
+
+
+
+
+
+ topLeft
+
+
+ topCenter
+
+
+ topRight
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/dropdown/demo/Basic.tsx b/packages/react/src/dropdown/demo/Basic.tsx
new file mode 100644
index 00000000..f07a7643
--- /dev/null
+++ b/packages/react/src/dropdown/demo/Basic.tsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import { Dropdown, Menu, Message } from '@tiny-design/react';
+import { IconDown } from '@tiny-design/icons';
+
+export default function BasicDemo() {
+ return (
+ Message.info(`Click on item ${key}`)}>
+ 1st menu item
+ 2nd menu item
+ 3rd menu item
+
+ }
+ >
+ e.preventDefault()}>
+ Hover me
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/dropdown/demo/Cascade.tsx b/packages/react/src/dropdown/demo/Cascade.tsx
new file mode 100644
index 00000000..32f8d3d1
--- /dev/null
+++ b/packages/react/src/dropdown/demo/Cascade.tsx
@@ -0,0 +1,30 @@
+import React from 'react';
+import { Dropdown, Menu } from '@tiny-design/react';
+import { IconDown } from '@tiny-design/icons';
+
+export default function CascadeDemo() {
+ return (
+
+
+ 1st menu item
+ 2nd menu item
+
+
+ 3rd menu item
+ 4th menu item
+
+
+ 5th menu item
+ 6th menu item
+
+
+ }
+ >
+ e.preventDefault()}>
+ Cascade dropdowm
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/dropdown/demo/Close.tsx b/packages/react/src/dropdown/demo/Close.tsx
new file mode 100644
index 00000000..0d4e6859
--- /dev/null
+++ b/packages/react/src/dropdown/demo/Close.tsx
@@ -0,0 +1,39 @@
+import React from 'react';
+import { Dropdown, Menu } from '@tiny-design/react';
+import { IconDown } from '@tiny-design/icons';
+
+export default function CloseDemo() {
+ const [visible, setVisible] = React.useState(false);
+
+ const handleMenuClick = (key) => {
+ if (key === '2') {
+ setVisible(false);
+ }
+ };
+
+ const handleVisibleChange = (vis) => {
+ if (vis) {
+ setVisible(vis);
+ }
+ };
+
+ const renderOverlay = () => (
+
+ );
+
+ return (
+
+ e.preventDefault()}>
+ Hover me
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/dropdown/demo/Other.tsx b/packages/react/src/dropdown/demo/Other.tsx
new file mode 100644
index 00000000..472198d2
--- /dev/null
+++ b/packages/react/src/dropdown/demo/Other.tsx
@@ -0,0 +1,22 @@
+import React from 'react';
+import { Dropdown, Menu, Message } from '@tiny-design/react';
+import { IconDown } from '@tiny-design/icons';
+
+export default function OtherDemo() {
+ return (
+ Message.info(`Click on item ${key}`)}>
+ 1st menu item
+ 2nd menu item
+
+ 3rd menu item
+
+ }
+ >
+ e.preventDefault()}>
+ Hover me
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/dropdown/demo/Placement.tsx b/packages/react/src/dropdown/demo/Placement.tsx
new file mode 100644
index 00000000..3584ef46
--- /dev/null
+++ b/packages/react/src/dropdown/demo/Placement.tsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import { Dropdown, Menu, Message, Button, Flex } from '@tiny-design/react';
+
+export default function PlacementDemo() {
+ const renderOverlay = () => (
+
+ );
+
+ return (
+ <>
+
+
+ topLeft
+
+
+ topCenter
+
+
+ topRight
+
+
+
+
+
+ bottomLeft
+
+
+ bottomCenter
+
+
+ bottomRight
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/dropdown/demo/Trigger.tsx b/packages/react/src/dropdown/demo/Trigger.tsx
new file mode 100644
index 00000000..4b5e4348
--- /dev/null
+++ b/packages/react/src/dropdown/demo/Trigger.tsx
@@ -0,0 +1,22 @@
+import React from 'react';
+import { Dropdown, Menu, Message } from '@tiny-design/react';
+import { IconDown } from '@tiny-design/icons';
+
+export default function TriggerDemo() {
+ return (
+ Message.info(`Click on item ${key}`)}>
+ 1st menu item
+ 2nd menu item
+ 3rd menu item
+
+ }
+ >
+ e.preventDefault()}>
+ Click me
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/dropdown/demo/arrow.md b/packages/react/src/dropdown/demo/arrow.md
deleted file mode 100644
index bfc73c1d..00000000
--- a/packages/react/src/dropdown/demo/arrow.md
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-### Arrow
-
-Display an arrow.
-
-```jsx live
-class ArrowExample extends React.PureComponent {
- renderOverlay() {
- return (
-
- );
- }
-
- render() {
- return (
- <>
-
-
- bottomLeft
-
-
- bottomCenter
-
-
- bottomRight
-
-
-
-
-
- topLeft
-
-
- topCenter
-
-
- topRight
-
-
-
- );
- }
-}
-```
-
-
diff --git a/packages/react/src/dropdown/demo/basic.md b/packages/react/src/dropdown/demo/basic.md
deleted file mode 100644
index f1f885f5..00000000
--- a/packages/react/src/dropdown/demo/basic.md
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-### Basic
-
-A very simple dropdown.
-
-```jsx live
- Message.info(`Click on item ${key}`)}>
- 1st menu item
- 2nd menu item
- 3rd menu item
-
- )}>
- e.preventDefault()}>
- Hover me
-
-
-```
-
-
diff --git a/packages/react/src/dropdown/demo/cascade.md b/packages/react/src/dropdown/demo/cascade.md
deleted file mode 100644
index 833ab62c..00000000
--- a/packages/react/src/dropdown/demo/cascade.md
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-### Cascading menu
-
-The menu has multiple levels.
-
-```jsx live
-
-
- 1st menu item
- 2nd menu item
-
-
- 3rd menu item
- 4th menu item
-
-
- 5th menu item
- 6th menu item
-
-
- )}>
- e.preventDefault()}>
- Cascade dropdowm
-
-
-```
-
-
diff --git a/packages/react/src/dropdown/demo/close.md b/packages/react/src/dropdown/demo/close.md
deleted file mode 100644
index 5b0a4c19..00000000
--- a/packages/react/src/dropdown/demo/close.md
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-### Different approaches to hide the menu
-
-The default is to close the menu when clicking on menu items, but you can also control the close action.
-
-```jsx live
-class CloseExample extends React.PureComponent {
- constructor(props) {
- super(props);
- this.state = {
- visible: false,
- };
- this.handleMenuClick = this.handleMenuClick.bind(this);
- this.handleVisibleChange = this.handleVisibleChange.bind(this);
- }
-
- handleMenuClick(key) {
- if (key === '2') {
- this.setState({ visible: false });
- }
- };
-
- handleVisibleChange(visible) {
- if(visible) {
- this.setState({ visible });
- }
- };
-
- renderOverlay() {
- return (
-
- );
- }
-
- render() {
- return (
-
- e.preventDefault()}>
- Hover me
-
-
- );
- }
-}
-```
-
-
diff --git a/packages/react/src/dropdown/demo/other.md b/packages/react/src/dropdown/demo/other.md
deleted file mode 100644
index ab6cc1ea..00000000
--- a/packages/react/src/dropdown/demo/other.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-### Other elements
-
-Divider and disabled menu item.
-
-```jsx live
- Message.info(`Click on item ${key}`)}>
- 1st menu item
- 2nd menu item
-
- 3rd menu item
-
- )}>
- e.preventDefault()}>
- Hover me
-
-
-```
-
-
diff --git a/packages/react/src/dropdown/demo/placement.md b/packages/react/src/dropdown/demo/placement.md
deleted file mode 100644
index c2359c24..00000000
--- a/packages/react/src/dropdown/demo/placement.md
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-### Placement
-
-Support 6 placements.
-
-```jsx live
-class PlacementExample extends React.PureComponent {
- renderOverlay() {
- return (
-
- );
- }
-
- render() {
- return (
- <>
-
-
- topLeft
-
-
- topCenter
-
-
- topRight
-
-
-
-
-
- bottomLeft
-
-
- bottomCenter
-
-
- bottomRight
-
-
- >
- );
- }
-}
-```
-
-
diff --git a/packages/react/src/dropdown/demo/trigger.md b/packages/react/src/dropdown/demo/trigger.md
deleted file mode 100644
index 07fb6467..00000000
--- a/packages/react/src/dropdown/demo/trigger.md
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-### Trigger mode
-
-Open the menu by clicking.
-
-```jsx live
- Message.info(`Click on item ${key}`)}>
- 1st menu item
- 2nd menu item
- 3rd menu item
-
- )}>
- e.preventDefault()}>
- Click me
-
-
-```
-
-
diff --git a/packages/react/src/dropdown/index.md b/packages/react/src/dropdown/index.md
index 82eb5a5a..bd29b09b 100644
--- a/packages/react/src/dropdown/index.md
+++ b/packages/react/src/dropdown/index.md
@@ -1,10 +1,17 @@
-import Basic from './demo/basic.md'
-import Other from './demo/other.md'
-import Cascade from './demo/cascade.md'
-import Placement from './demo/placement.md'
-import Arrow from './demo/arrow.md'
-import Trigger from './demo/trigger.md'
-import Close from './demo/close.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import OtherDemo from './demo/Other';
+import OtherSource from './demo/Other.tsx?raw';
+import CascadeDemo from './demo/Cascade';
+import CascadeSource from './demo/Cascade.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
+import ArrowDemo from './demo/Arrow';
+import ArrowSource from './demo/Arrow.tsx?raw';
+import TriggerDemo from './demo/Trigger';
+import TriggerSource from './demo/Trigger.tsx?raw';
+import CloseDemo from './demo/Close';
+import CloseSource from './demo/Close.tsx?raw';
# Dropdown
@@ -24,15 +31,71 @@ import { Dropdown } from 'tiny-design';
-
-
-
-
+
+
+### Basic
+
+A very simple dropdown.
+
+
+
+
+
+
+### Other elements
+
+You can use other elements as the trigger.
+
+
+
+
+
+
+### Cascade
+
+Cascading menu.
+
+
+
+
+
+
+### Arrow
+
+Show arrow.
+
+
+
+
-
-
-
+
+
+### Placement
+
+Placement of popup menu.
+
+
+
+
+
+
+### Trigger mode
+
+Open the menu by clicking.
+
+
+
+
+
+
+### Close
+
+Close menu on click.
+
+
+
+
@@ -46,4 +109,4 @@ import { Dropdown } from 'tiny-design';
| overlay | dropdown menu | [Menu](../components/menu) | - |
| visible | whether the dropdown menu is visible | boolean | - |
| arrow | display the dropdown arrow | boolean | false |
-| onVisibleChange | allow to get millisecond value | (visible: boolean) => void | - |
+| onVisibleChange | allow to get millisecond value | (visible: boolean) => void | - |
\ No newline at end of file
diff --git a/packages/react/src/dropdown/index.zh_CN.md b/packages/react/src/dropdown/index.zh_CN.md
index 476c97c9..e2e3f985 100644
--- a/packages/react/src/dropdown/index.zh_CN.md
+++ b/packages/react/src/dropdown/index.zh_CN.md
@@ -1,10 +1,17 @@
-import Basic from './demo/basic.md'
-import Other from './demo/other.md'
-import Cascade from './demo/cascade.md'
-import Placement from './demo/placement.md'
-import Arrow from './demo/arrow.md'
-import Trigger from './demo/trigger.md'
-import Close from './demo/close.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import OtherDemo from './demo/Other';
+import OtherSource from './demo/Other.tsx?raw';
+import CascadeDemo from './demo/Cascade';
+import CascadeSource from './demo/Cascade.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
+import ArrowDemo from './demo/Arrow';
+import ArrowSource from './demo/Arrow.tsx?raw';
+import TriggerDemo from './demo/Trigger';
+import TriggerSource from './demo/Trigger.tsx?raw';
+import CloseDemo from './demo/Close';
+import CloseSource from './demo/Close.tsx?raw';
# Dropdown
@@ -24,15 +31,71 @@ import { Dropdown } from 'tiny-design';
-
-
-
-
+
+
+### 基本用法
+
+最简单的下拉菜单。
+
+
+
+
+
+
+### 其他元素
+
+可以使用其他元素作为触发器。
+
+
+
+
+
+
+### 级联菜单
+
+级联菜单。
+
+
+
+
+
+
+### 箭头
+
+显示箭头。
+
+
+
+
-
-
-
+
+
+### 位置
+
+弹出菜单位置。
+
+
+
+
+
+
+### 触发方式
+
+点击触发。
+
+
+
+
+
+
+### 关闭
+
+点击后关闭菜单。
+
+
+
+
@@ -46,4 +109,4 @@ import { Dropdown } from 'tiny-design';
| overlay | 下拉菜单 | [Menu](../components/menu) | - |
| visible | 下拉菜单是否可见 | boolean | - |
| arrow | 是否显示下拉箭头 | boolean | false |
-| onVisibleChange | 可见状态变化时的回调 | (visible: boolean) => void | - |
+| onVisibleChange | 可见状态变化时的回调 | (visible: boolean) => void | - |
\ No newline at end of file
diff --git a/packages/react/src/empty/demo/Basic.tsx b/packages/react/src/empty/demo/Basic.tsx
new file mode 100644
index 00000000..53cf9730
--- /dev/null
+++ b/packages/react/src/empty/demo/Basic.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Empty } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/empty/demo/Customised.tsx b/packages/react/src/empty/demo/Customised.tsx
new file mode 100644
index 00000000..90b17f8a
--- /dev/null
+++ b/packages/react/src/empty/demo/Customised.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Empty, Button, Link } from '@tiny-design/react';
+
+export default function CustomisedDemo() {
+ return (
+
+ Customize Description
+
+ }
+ >
+ Create Now
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/empty/demo/NoDesc.tsx b/packages/react/src/empty/demo/NoDesc.tsx
new file mode 100644
index 00000000..6e0a27a1
--- /dev/null
+++ b/packages/react/src/empty/demo/NoDesc.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Empty } from '@tiny-design/react';
+
+export default function NoDescDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/empty/demo/basic.md b/packages/react/src/empty/demo/basic.md
deleted file mode 100644
index 3a55b434..00000000
--- a/packages/react/src/empty/demo/basic.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Basic
-
-Simplest Usage.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/empty/demo/customised.md b/packages/react/src/empty/demo/customised.md
deleted file mode 100644
index a51fffcf..00000000
--- a/packages/react/src/empty/demo/customised.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-### Customised
-
-Customize image source, image size, description and extra content.
-
-```jsx live
-
- Customize Description
-
- }>
- Create Now
-
-```
-
-
diff --git a/packages/react/src/empty/demo/no-desc.md b/packages/react/src/empty/demo/no-desc.md
deleted file mode 100644
index 7dd10bce..00000000
--- a/packages/react/src/empty/demo/no-desc.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### No description
-
-Set `description={false}` to hide description.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/empty/index.md b/packages/react/src/empty/index.md
index 70f97549..d1335d1c 100644
--- a/packages/react/src/empty/index.md
+++ b/packages/react/src/empty/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Customised from './demo/customised.md'
-import NoDesc from './demo/no-desc.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomisedDemo from './demo/Customised';
+import CustomisedSource from './demo/Customised.tsx?raw';
+import NoDescDemo from './demo/NoDesc';
+import NoDescSource from './demo/NoDesc.tsx?raw';
# Empty
@@ -21,11 +24,35 @@ import { Empty } from 'tiny-design';
-
-
+
+
+### Basic
+
+Simplest Usage.
+
+
+
+
+
+
+### Customised
+
+Customize image source, image size, description and extra content.
+
+
+
+
-
+
+
+### No description
+
+Set `description={false}` to hide description.
+
+
+
+
@@ -36,4 +63,4 @@ import { Empty } from 'tiny-design';
| image | Customised image | string | ReactNode | - |
| imageStyle | style of image | CSSProperties | - |
| description | Customised description | boolean | string | React.ReactNode | - |
-| descStyle | style of description | CSSProperties | - |
+| descStyle | style of description | CSSProperties | - |
\ No newline at end of file
diff --git a/packages/react/src/empty/index.zh_CN.md b/packages/react/src/empty/index.zh_CN.md
index 0aa0748b..8917f802 100644
--- a/packages/react/src/empty/index.zh_CN.md
+++ b/packages/react/src/empty/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Customised from './demo/customised.md'
-import NoDesc from './demo/no-desc.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomisedDemo from './demo/Customised';
+import CustomisedSource from './demo/Customised.tsx?raw';
+import NoDescDemo from './demo/NoDesc';
+import NoDescSource from './demo/NoDesc.tsx?raw';
# Empty
@@ -21,11 +24,35 @@ import { Empty } from 'tiny-design';
-
-
+
+
+### 基本用法
+
+最简单的用法。
+
+
+
+
+
+
+### 自定义
+
+自定义图片、尺寸、描述和额外内容。
+
+
+
+
-
+
+
+### 无描述
+
+设置 `description={false}` 隐藏描述。
+
+
+
+
@@ -36,4 +63,4 @@ import { Empty } from 'tiny-design';
| image | 自定义图片 | string | ReactNode | - |
| imageStyle | 图片样式 | CSSProperties | - |
| description | 自定义描述内容 | boolean | string | React.ReactNode | - |
-| descStyle | 描述文本的样式 | CSSProperties | - |
+| descStyle | 描述文本的样式 | CSSProperties | - |
\ No newline at end of file
diff --git a/packages/react/src/flex/demo/align.md b/packages/react/src/flex/demo/Align.tsx
similarity index 83%
rename from packages/react/src/flex/demo/align.md
rename to packages/react/src/flex/demo/Align.tsx
index 0f4ac58a..44b99274 100644
--- a/packages/react/src/flex/demo/align.md
+++ b/packages/react/src/flex/demo/Align.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Flex, Segmented, Button } from '@tiny-design/react';
-### Alignment
-
-Set `justify` and `align` to control alignment of items.
-
-```jsx live
-() => {
+export default function AlignDemo() {
const justifyOptions = ['flex-start', 'center', 'flex-end', 'space-between', 'space-around', 'space-evenly'];
const alignOptions = ['flex-start', 'center', 'flex-end'];
@@ -22,9 +18,9 @@ Set `justify` and `align` to control alignment of items.
return (
Select justify:
- setJustify(val)} />
+ setJustify(val)} />
Select align:
- setAlign(val)} />
+ setAlign(val)} />
PrimaryPrimary
@@ -33,7 +29,4 @@ Set `justify` and `align` to control alignment of items.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/flex/demo/basic.md b/packages/react/src/flex/demo/Basic.tsx
similarity index 77%
rename from packages/react/src/flex/demo/basic.md
rename to packages/react/src/flex/demo/Basic.tsx
index e4b60be7..ba75a153 100644
--- a/packages/react/src/flex/demo/basic.md
+++ b/packages/react/src/flex/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Flex, Radio } from '@tiny-design/react';
-### Basic Layout
-
-Use `vertical` to control the direction. Default is horizontal.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const [vertical, setVertical] = React.useState(false);
const baseStyle = {
@@ -16,7 +12,7 @@ Use `vertical` to control the direction. Default is horizontal.
return (
- setVertical(val === 'vertical')}>
+ setVertical(val === 'vertical')}>
horizontalvertical
@@ -27,7 +23,4 @@ Use `vertical` to control the direction. Default is horizontal.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/flex/demo/gap.md b/packages/react/src/flex/demo/Gap.tsx
similarity index 73%
rename from packages/react/src/flex/demo/gap.md
rename to packages/react/src/flex/demo/Gap.tsx
index b1d3d493..dc98cf7b 100644
--- a/packages/react/src/flex/demo/gap.md
+++ b/packages/react/src/flex/demo/Gap.tsx
@@ -1,23 +1,19 @@
-
+import React from 'react';
+import { Flex, Radio, Slider, Button } from '@tiny-design/react';
-### Gap
-
-Preset sizes `sm` (8px), `md` (16px), `lg` (24px) or a custom number via slider.
-
-```jsx live
-() => {
+export default function GapDemo() {
const [gapSize, setGapSize] = React.useState('sm');
const [customGapSize, setCustomGapSize] = React.useState(0);
return (
- setGapSize(val)}>
+ setGapSize(val)}>
smallmediumlargecustom
- {gapSize === 'custom' && setCustomGapSize(val)} />}
+ {gapSize === 'custom' && setCustomGapSize(val)} />}
PrimaryDefault
@@ -26,7 +22,4 @@ Preset sizes `sm` (8px), `md` (16px), `lg` (24px) or a custom number via slider.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/flex/demo/Wrap.tsx b/packages/react/src/flex/demo/Wrap.tsx
new file mode 100644
index 00000000..678282a0
--- /dev/null
+++ b/packages/react/src/flex/demo/Wrap.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Flex, Button } from '@tiny-design/react';
+
+export default function WrapDemo() {
+ return (
+
+ {Array.from({ length: 24 }, (_, i) => (
+ Button
+ ))}
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/flex/demo/wrap.md b/packages/react/src/flex/demo/wrap.md
deleted file mode 100644
index f5894608..00000000
--- a/packages/react/src/flex/demo/wrap.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Wrap
-
-Flex items wrap automatically when `wrap` is set.
-
-```jsx live
-() => (
-
- {Array.from({ length: 24 }, (_, i) => (
- Button
- ))}
-
-)
-```
-
-
diff --git a/packages/react/src/flex/index.md b/packages/react/src/flex/index.md
index 9fd2a7e0..ca471bca 100644
--- a/packages/react/src/flex/index.md
+++ b/packages/react/src/flex/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Align from './demo/align.md'
-import Gap from './demo/gap.md'
-import Wrap from './demo/wrap.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import AlignDemo from './demo/Align';
+import AlignSource from './demo/Align.tsx?raw';
+import GapDemo from './demo/Gap';
+import GapSource from './demo/Gap.tsx?raw';
+import WrapDemo from './demo/Wrap';
+import WrapSource from './demo/Wrap.tsx?raw';
# Flex
@@ -19,10 +23,48 @@ import { Flex } from 'tiny-design';
## Examples
-
-
-
-
+
+
+
+
+### Basic Layout
+
+Use `vertical` to control the direction. Default is horizontal.
+
+
+
+
+
+
+### Alignment
+
+Set `justify` and `align` to control alignment of items.
+
+
+
+
+
+
+
+
+### Gap
+
+Preset sizes `sm` (8px), `md` (16px), `lg` (24px) or a custom number via slider.
+
+
+
+
+
+
+### Wrap
+
+Flex items wrap automatically when `wrap` is set.
+
+
+
+
+
+
## API
@@ -34,4 +76,4 @@ import { Flex } from 'tiny-design';
| align | CSS align-items | `string` | - |
| gap | Gap between items | `sm` | `md` | `lg` | `number` | `string` | - |
| flex | CSS flex shorthand | `string` | - |
-| component | Custom element type | `React.ElementType` | `div` |
+| component | Custom element type | `React.ElementType` | `div` |
\ No newline at end of file
diff --git a/packages/react/src/flex/index.zh_CN.md b/packages/react/src/flex/index.zh_CN.md
index 76023e0b..9fe413f5 100644
--- a/packages/react/src/flex/index.zh_CN.md
+++ b/packages/react/src/flex/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Align from './demo/align.md'
-import Gap from './demo/gap.md'
-import Wrap from './demo/wrap.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import AlignDemo from './demo/Align';
+import AlignSource from './demo/Align.tsx?raw';
+import GapDemo from './demo/Gap';
+import GapSource from './demo/Gap.tsx?raw';
+import WrapDemo from './demo/Wrap';
+import WrapSource from './demo/Wrap.tsx?raw';
# Flex
@@ -19,10 +23,48 @@ import { Flex } from 'tiny-design';
## 代码示例
-
-
-
-
+
+
+
+
+### 基本布局
+
+使用 `vertical` 控制方向。默认为水平方向。
+
+
+
+
+
+
+### 对齐方式
+
+设置 `justify` 和 `align` 控制元素对齐。
+
+
+
+
+
+
+
+
+### 间距
+
+预设尺寸 `sm` (8px)、`md` (16px)、`lg` (24px),或通过滑块自定义数值。
+
+
+
+
+
+
+### 换行
+
+设置 `wrap` 使元素自动换行。
+
+
+
+
+
+
## API
@@ -34,4 +76,4 @@ import { Flex } from 'tiny-design';
| align | CSS align-items 属性 | `string` | - |
| gap | 子元素间距 | `sm` | `md` | `lg` | `number` | `string` | - |
| flex | CSS flex 简写属性 | `string` | - |
-| component | 自定义元素类型 | `React.ElementType` | `div` |
+| component | 自定义元素类型 | `React.ElementType` | `div` |
\ No newline at end of file
diff --git a/packages/react/src/flip/demo/basic.md b/packages/react/src/flip/demo/Basic.tsx
old mode 100755
new mode 100644
similarity index 76%
rename from packages/react/src/flip/demo/basic.md
rename to packages/react/src/flip/demo/Basic.tsx
index b0dd6952..73fdcf22
--- a/packages/react/src/flip/demo/basic.md
+++ b/packages/react/src/flip/demo/Basic.tsx
@@ -1,21 +1,15 @@
-
+import React from 'react';
+import { Flip } from '@tiny-design/react';
-### Basic
-
-A basic flip
-
-> **The flip's width and height must be set**
-
-```jsx live
-() => {
+export default function BasicDemo() {
const { Item } = Flip;
-
+
const itemStyle = {
color: '#fff',
lineHeight: '200px',
fontSize: '18px',
};
-
+
return (
@@ -26,7 +20,4 @@ A basic flip
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/flip/demo/direction.md b/packages/react/src/flip/demo/Direction.tsx
old mode 100755
new mode 100644
similarity index 82%
rename from packages/react/src/flip/demo/direction.md
rename to packages/react/src/flip/demo/Direction.tsx
index 89f35147..33cecabe
--- a/packages/react/src/flip/demo/direction.md
+++ b/packages/react/src/flip/demo/Direction.tsx
@@ -1,22 +1,18 @@
-
+import React from 'react';
+import { Flip } from '@tiny-design/react';
-### Direction
-
-`direction` and `reverse` can make the flip different.
-
-```jsx live
-() => {
+export default function DirectionDemo() {
const { Item } = Flip;
-
+
const WIDTH = '240px';
const HEIGHT = '150px';
-
+
const itemStyle = {
color: '#fff',
lineHeight: HEIGHT,
fontSize: '18px',
};
-
+
return (
<>
Horizontal flip
@@ -28,9 +24,9 @@
I'm back
-
-
-
+
+
+
Flip from left to right
@@ -39,7 +35,7 @@
I'm back
-
+
Vertical flip
@@ -49,9 +45,9 @@
I'm back
-
-
-
+
+
+
Flip from bottom to top
@@ -59,10 +55,7 @@
I'm back
-
+
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/flip/index.md b/packages/react/src/flip/index.md
index c7b8de0d..1d876ca1 100755
--- a/packages/react/src/flip/index.md
+++ b/packages/react/src/flip/index.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Direction from './demo/direction.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DirectionDemo from './demo/Direction';
+import DirectionSource from './demo/Direction.tsx?raw';
# Flip
@@ -21,10 +23,26 @@ const { Item } = Flip;
-
-
-
-
+
+
+### Basic
+
+A basic flip
+
+> **The flip's width and height must be set**
+
+
+
+
+
+
+### Direction
+
+`direction` and `reverse` can make the flip different.
+
+
+
+
@@ -35,4 +53,4 @@ const { Item } = Flip;
| width | the container's width | number | string | |
| height | the container's height | number | string | |
| direction | flip direction | enum: `horizontal` | `vertical` | `horizontal` |
-| reverse | reverse direction | boolean | false |
+| reverse | reverse direction | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/flip/index.zh_CN.md b/packages/react/src/flip/index.zh_CN.md
index 42a67497..3309765f 100644
--- a/packages/react/src/flip/index.zh_CN.md
+++ b/packages/react/src/flip/index.zh_CN.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Direction from './demo/direction.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DirectionDemo from './demo/Direction';
+import DirectionSource from './demo/Direction.tsx?raw';
# Flip
@@ -21,10 +23,26 @@ const { Item } = Flip;
-
-
-
-
+
+
+### 基础用法
+
+基础翻转盒
+
+> **翻转盒的宽度和高度必须设置**
+
+
+
+
+
+
+### 方向
+
+通过 `direction` 和 `reverse` 可以控制翻转方向。
+
+
+
+
@@ -35,4 +53,4 @@ const { Item } = Flip;
| width | 容器宽度 | number | string | |
| height | 容器高度 | number | string | |
| direction | 翻转方向 | enum: `horizontal` | `vertical` | `horizontal` |
-| reverse | 反转方向 | boolean | false |
+| reverse | 反转方向 | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/form/demo/async-submit.md b/packages/react/src/form/demo/AsyncSubmit.tsx
similarity index 86%
rename from packages/react/src/form/demo/async-submit.md
rename to packages/react/src/form/demo/AsyncSubmit.tsx
index d368127e..f998a30d 100644
--- a/packages/react/src/form/demo/async-submit.md
+++ b/packages/react/src/form/demo/AsyncSubmit.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Form, Input, InputNumber, Button, Flex, Alert } from '@tiny-design/react';
-### Async Submission
-
-Simulate an async form submission with loading state. Note that the `required` rule correctly accepts `0` as a valid numeric value.
-
-```jsx live
-() => {
+export default function AsyncSubmitDemo() {
const [form] = Form.useForm({ username: '', age: 0 });
const [loading, setLoading] = React.useState(false);
const [result, setResult] = React.useState(null);
@@ -27,7 +23,8 @@ Simulate an async form submission with loading state. Note that the `required` r
rules={[
{ required: true, message: 'Username is required' },
{ min: 3, message: 'At least 3 characters' },
- ]}>
+ ]}
+ >
+ ]}
+ >
@@ -53,7 +51,4 @@ Simulate an async form submission with loading state. Note that the `required` r
)}
);
-};
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/Basic.tsx b/packages/react/src/form/demo/Basic.tsx
new file mode 100644
index 00000000..86f71954
--- /dev/null
+++ b/packages/react/src/form/demo/Basic.tsx
@@ -0,0 +1,37 @@
+import React from 'react';
+import { Form, Input, InputPassword, Checkbox, Button, Flex } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+
+
+
+
+
+
+ Remember Me
+
+
+
+ Submit
+ Reset
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/complex-layout.md b/packages/react/src/form/demo/ComplexLayout.tsx
similarity index 72%
rename from packages/react/src/form/demo/complex-layout.md
rename to packages/react/src/form/demo/ComplexLayout.tsx
index b145f0ca..8853e3b7 100644
--- a/packages/react/src/form/demo/complex-layout.md
+++ b/packages/react/src/form/demo/ComplexLayout.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Form, Input, Button } from '@tiny-design/react';
-### More complex layout
-
-Sometimes it could need to put two fields in a same line.
-
-```jsx live
-() => {
+export default function ComplexLayoutDemo() {
return (
@@ -14,23 +10,26 @@ Sometimes it could need to put two fields in a same line.
wrapperCol={24}
style={{ display: 'inline-block', width: 'calc(50% - 5px)' }}
name="firstName"
- rules={[{ required: true, message: 'Please input your first name' }]}>
-
+ rules={[{ required: true, message: 'Please input your first name' }]}
+ >
+
-
+
-
+ rules={[{ required: true, message: 'Please input your last name' }]}
+ >
+
>
+ rules={[{ required: true, message: 'Please input your email' }]}
+ >
@@ -38,7 +37,4 @@ Sometimes it could need to put two fields in a same line.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/Extra.tsx b/packages/react/src/form/demo/Extra.tsx
new file mode 100644
index 00000000..8e661612
--- /dev/null
+++ b/packages/react/src/form/demo/Extra.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Form, Input, InputPassword, Button } from '@tiny-design/react';
+
+export default function ExtraDemo() {
+ return (
+
+
+
+
+
+
+
+ Submit
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/layout.md b/packages/react/src/form/demo/Layout.tsx
similarity index 61%
rename from packages/react/src/form/demo/layout.md
rename to packages/react/src/form/demo/Layout.tsx
index dfce627d..de5a61ed 100644
--- a/packages/react/src/form/demo/layout.md
+++ b/packages/react/src/form/demo/Layout.tsx
@@ -1,34 +1,36 @@
-
+import React from 'react';
+import { Form, Input, InputPassword, Button, Radio } from '@tiny-design/react';
-### Form Layout
-
-There are three layouts for form: `horizontal`, `vertical` and `inline`.
-
-```jsx live
-() => {
+export default function LayoutDemo() {
const [type, setType] = React.useState('horizontal');
return (
<>
- setType(val)}>
+ setType(val)}>
HorizontalVerticalInline
-
-
-
-
+ rules={[{ required: true, message: 'Please input your username' }]}
+ >
+ rules={[{ required: true, message: 'Please input your password' }]}
+ >
@@ -37,7 +39,4 @@ There are three layouts for form: `horizontal`, `vertical` and `inline`.
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/method.md b/packages/react/src/form/demo/Method.tsx
similarity index 78%
rename from packages/react/src/form/demo/method.md
rename to packages/react/src/form/demo/Method.tsx
index 2f215abc..e03470e9 100644
--- a/packages/react/src/form/demo/method.md
+++ b/packages/react/src/form/demo/Method.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Form, Input, InputPassword, Button, Flex } from '@tiny-design/react';
-### Form method
-
-Call form method with `Form.useForm`.
-
-```jsx live
-() => {
+export default function MethodDemo() {
const [form] = Form.useForm({ username: '', password: '' });
const resetForm = () => {
@@ -13,21 +9,23 @@ Call form method with `Form.useForm`.
};
const fillForm = () => {
- form.setFieldValues({ username: 'React', password: 'React' })
+ form.setFieldValues({ username: 'React', password: 'React' });
};
return (
-
+ rules={[{ required: true, message: 'Please input your username' }]}
+ >
+ rules={[{ required: true, message: 'Please input your password' }]}
+ >
@@ -39,7 +37,4 @@ Call form method with `Form.useForm`.
);
-};
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/modal.md b/packages/react/src/form/demo/Modal.tsx
similarity index 58%
rename from packages/react/src/form/demo/modal.md
rename to packages/react/src/form/demo/Modal.tsx
index 151a8052..d3da512b 100644
--- a/packages/react/src/form/demo/modal.md
+++ b/packages/react/src/form/demo/Modal.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Form, Input, Button, Modal } from '@tiny-design/react';
-### Create in `Modal`
-
-Create a form in a `Modal`.
-
-```jsx live
-() => {
+export default function ModalDemo() {
const [visible, setVisible] = React.useState(false);
return (
@@ -15,31 +11,32 @@ Create a form in a `Modal`.
visible={visible}
header="Create a new form"
footer={null}
- onCancel={() => setVisible(false)}>
-
+ rules={[{ required: true }]}
+ >
+ name="desc"
+ >
Submit
-
+
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/OtherControls.tsx b/packages/react/src/form/demo/OtherControls.tsx
new file mode 100644
index 00000000..2badf97c
--- /dev/null
+++ b/packages/react/src/form/demo/OtherControls.tsx
@@ -0,0 +1,145 @@
+import React from 'react';
+import {
+ Form,
+ Input,
+ InputNumber,
+ Switch,
+ Checkbox,
+ Radio,
+ Slider,
+ Rate,
+ Select,
+ DatePicker,
+ TimePicker,
+ ColorPicker,
+ Textarea,
+ Button,
+} from '@tiny-design/react';
+
+export default function OtherControlsDemo() {
+ return (
+
+ A form
+
+
+
+
+
+
+
+
+
+ Radio 1
+ Radio 2
+ Radio 3
+
+
+
+
+ Check 1
+ Check 2
+ Check 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/validate-trigger.md b/packages/react/src/form/demo/ValidateTrigger.tsx
similarity index 81%
rename from packages/react/src/form/demo/validate-trigger.md
rename to packages/react/src/form/demo/ValidateTrigger.tsx
index a21fd49d..c599a13e 100644
--- a/packages/react/src/form/demo/validate-trigger.md
+++ b/packages/react/src/form/demo/ValidateTrigger.tsx
@@ -1,63 +1,65 @@
-
+import React from 'react';
+import { Form, Input, InputPassword, Button, Divider } from '@tiny-design/react';
-### Validation Trigger
-
-There are three different triggers for the form validation: `onChange`, `onBlur` and `onSubmit`.
-
-```jsx live
-() => {
+export default function ValidateTriggerDemo() {
return (
<>
onChange
-
+ rules={[{ required: true, message: 'Please input your username' }]}
+ >
+ rules={[{ required: true, message: 'Please input your password' }]}
+ >
Submit
-
+
onBlur
-
+ rules={[{ required: true, message: 'Please input your username' }]}
+ >
+ rules={[{ required: true, message: 'Please input your password' }]}
+ >
Submit
-
+
onSubmit
-
+ rules={[{ required: true, message: 'Please input your username' }]}
+ >
+ rules={[{ required: true, message: 'Please input your password' }]}
+ >
@@ -66,7 +68,4 @@ There are three different triggers for the form validation: `onChange`, `onBlur`
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/form/demo/basic.md b/packages/react/src/form/demo/basic.md
deleted file mode 100644
index da7e25db..00000000
--- a/packages/react/src/form/demo/basic.md
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-### Basic usage
-
-Basic Form data control.
-
-```jsx live
-
-
-
-
-
-
-
- Remember Me
-
-
-
- Submit
- Reset
-
-
-
-```
-
-
diff --git a/packages/react/src/form/demo/extra.md b/packages/react/src/form/demo/extra.md
deleted file mode 100644
index 37b756f0..00000000
--- a/packages/react/src/form/demo/extra.md
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-### Extra info
-
-Use `hrlper` and `notice` to provide more field info.
-
-```jsx live
-
-
-
-
-
-
-
- Submit
-
-
-```
-
-
diff --git a/packages/react/src/form/demo/other-controls.md b/packages/react/src/form/demo/other-controls.md
deleted file mode 100644
index 4e7c8779..00000000
--- a/packages/react/src/form/demo/other-controls.md
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-### Other Form Controls
-
-A versatile example.
-
-```jsx live
-
- A form
-
-
-
-
-
-
-
-
-
- Radio 1
- Radio 2
- Radio 3
-
-
-
-
- Check 1
- Check 2
- Check 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Submit
-
-
-```
-
-
diff --git a/packages/react/src/form/index.md b/packages/react/src/form/index.md
index 9d7f50ff..8cac5b54 100644
--- a/packages/react/src/form/index.md
+++ b/packages/react/src/form/index.md
@@ -1,12 +1,21 @@
-import Basic from './demo/basic.md'
-import Extra from './demo/extra.md'
-import Layout from './demo/layout.md'
-import Method from './demo/method.md'
-import ComplexLayout from './demo/complex-layout.md'
-import ValidateTrigger from './demo/validate-trigger.md'
-import Modal from './demo/modal.md'
-import AsyncSubmit from './demo/async-submit.md'
-import OtherControls from './demo/other-controls.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ExtraDemo from './demo/Extra';
+import ExtraSource from './demo/Extra.tsx?raw';
+import LayoutDemo from './demo/Layout';
+import LayoutSource from './demo/Layout.tsx?raw';
+import MethodDemo from './demo/Method';
+import MethodSource from './demo/Method.tsx?raw';
+import ComplexLayoutDemo from './demo/ComplexLayout';
+import ComplexLayoutSource from './demo/ComplexLayout.tsx?raw';
+import ValidateTriggerDemo from './demo/ValidateTrigger';
+import ValidateTriggerSource from './demo/ValidateTrigger.tsx?raw';
+import ModalDemo from './demo/Modal';
+import ModalSource from './demo/Modal.tsx?raw';
+import AsyncSubmitDemo from './demo/AsyncSubmit';
+import AsyncSubmitSource from './demo/AsyncSubmit.tsx?raw';
+import OtherControlsDemo from './demo/OtherControls';
+import OtherControlsSource from './demo/OtherControls.tsx?raw';
# Form
@@ -27,15 +36,90 @@ const { Item, useForm, FormInstance } = Form;
## Examples
-
-
-
-
-
-
-
-
-
+
+
+
+
+### Basic usage
+
+Basic Form data control.
+
+
+
+
+
+
+### Extra info
+
+Use `helper` and `notice` to provide more field info.
+
+
+
+
+
+
+### Form Layout
+
+There are three layouts for form: `horizontal`, `vertical` and `inline`.
+
+
+
+
+
+
+### Form method
+
+Call form method with `Form.useForm`.
+
+
+
+
+
+
+
+
+### More complex layout
+
+Sometimes it could need to put two fields in a same line.
+
+
+
+
+
+
+### Validation Trigger
+
+There are three different triggers for the form validation: `onChange`, `onBlur` and `onSubmit`.
+
+
+
+
+
+
+### Create in `Modal`
+
+Create a form in a `Modal`.
+
+
+
+
+
+
+### Async Submission
+
+Simulate an async form submission with loading state.
+
+
+
+
+
+
+
+### Other Form Controls
+
+A versatile example.
+
+
## API
@@ -99,4 +183,4 @@ Form field component for data bidirectional binding, validation and layout.
| pattern | regex pattern | RegExp |
| transform | transform value to the rule before validation | (value) => any |
| validator | customize validation rule | (value) => boolean | `Promise` |
-| whitespace | failed if only has whitespace | boolean |
+| whitespace | failed if only has whitespace | boolean |
\ No newline at end of file
diff --git a/packages/react/src/form/index.zh_CN.md b/packages/react/src/form/index.zh_CN.md
index 0da701ae..1e79e38d 100644
--- a/packages/react/src/form/index.zh_CN.md
+++ b/packages/react/src/form/index.zh_CN.md
@@ -1,12 +1,21 @@
-import Basic from './demo/basic.md'
-import Extra from './demo/extra.md'
-import Layout from './demo/layout.md'
-import Method from './demo/method.md'
-import ComplexLayout from './demo/complex-layout.md'
-import ValidateTrigger from './demo/validate-trigger.md'
-import Modal from './demo/modal.md'
-import AsyncSubmit from './demo/async-submit.md'
-import OtherControls from './demo/other-controls.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ExtraDemo from './demo/Extra';
+import ExtraSource from './demo/Extra.tsx?raw';
+import LayoutDemo from './demo/Layout';
+import LayoutSource from './demo/Layout.tsx?raw';
+import MethodDemo from './demo/Method';
+import MethodSource from './demo/Method.tsx?raw';
+import ComplexLayoutDemo from './demo/ComplexLayout';
+import ComplexLayoutSource from './demo/ComplexLayout.tsx?raw';
+import ValidateTriggerDemo from './demo/ValidateTrigger';
+import ValidateTriggerSource from './demo/ValidateTrigger.tsx?raw';
+import ModalDemo from './demo/Modal';
+import ModalSource from './demo/Modal.tsx?raw';
+import AsyncSubmitDemo from './demo/AsyncSubmit';
+import AsyncSubmitSource from './demo/AsyncSubmit.tsx?raw';
+import OtherControlsDemo from './demo/OtherControls';
+import OtherControlsSource from './demo/OtherControls.tsx?raw';
# Form
@@ -27,15 +36,90 @@ const { Item, useForm, FormInstance } = Form;
## 代码示例
-
-
-
-
-
-
-
-
-
+
+
+
+
+### 基本用法
+
+基础的表单数据控制。
+
+
+
+
+
+
+### 额外信息
+
+使用 `helper` 和 `notice` 提供更多字段信息。
+
+
+
+
+
+
+### 表单布局
+
+表单有三种布局方式:`horizontal`、`vertical` 和 `inline`。
+
+
+
+
+
+
+### 表单方法
+
+通过 `Form.useForm` 调用表单方法。
+
+
+
+
+
+
+
+
+### 复杂布局
+
+有时候需要将两个字段放在同一行。
+
+
+
+
+
+
+### 校验触发器
+
+表单校验有三种不同的触发时机:`onChange`、`onBlur` 和 `onSubmit`。
+
+
+
+
+
+
+### 在 Modal 中创建
+
+在 `Modal` 中创建表单。
+
+
+
+
+
+
+### 异步提交
+
+模拟带有加载状态的异步表单提交。
+
+
+
+
+
+
+
+### 其他表单控件
+
+一个多功能的示例。
+
+
## API
@@ -99,4 +183,4 @@ const { Item, useForm, FormInstance } = Form;
| pattern | 正则表达式 | RegExp |
| transform | 校验前对值进行转换 | (value) => any |
| validator | 自定义校验规则 | (value) => boolean | `Promise` |
-| whitespace | 仅包含空格时是否校验失败 | boolean |
+| whitespace | 仅包含空格时是否校验失败 | boolean |
\ No newline at end of file
diff --git a/packages/react/src/grid/demo/alignment.md b/packages/react/src/grid/demo/Alignment.tsx
similarity index 93%
rename from packages/react/src/grid/demo/alignment.md
rename to packages/react/src/grid/demo/Alignment.tsx
index c7499de7..efc14825 100644
--- a/packages/react/src/grid/demo/alignment.md
+++ b/packages/react/src/grid/demo/Alignment.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Row, Col, Divider } from '@tiny-design/react';
-### Alignment
-
-Child elements vertically aligned.
-
-```jsx live
-() => {
+export default function AlignmentDemo() {
const row = {
padding: '10px 0',
margin: '16px 0',
@@ -20,17 +16,17 @@ Child elements vertically aligned.
const box100 = {
height: 100,
lineHeight: '100px',
- };
+ };
const box50 = {
height: 50,
lineHeight: '50px',
- };
+ };
const box120 = {
height: 120,
lineHeight: '120px',
- };
+ };
const box80 = {
height: 80,
@@ -40,7 +36,7 @@ Child elements vertically aligned.
const lighterBox = {
backgroundColor: '#6E41BFD6',
};
-
+
const darkerBox = {
backgroundColor: '#6E41BFFA',
};
@@ -54,7 +50,7 @@ Child elements vertically aligned.
col-4
col-4
-
+
Align Center
col-4
@@ -62,7 +58,7 @@ Child elements vertically aligned.
col-4
col-4
-
+
Align Bottom
col-4
@@ -71,8 +67,5 @@ Child elements vertically aligned.
col-4
>
- )
-}
-```
-
-
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/grid/demo/basic.md b/packages/react/src/grid/demo/Basic.tsx
similarity index 91%
rename from packages/react/src/grid/demo/basic.md
rename to packages/react/src/grid/demo/Basic.tsx
index 2991cd89..5c57c08d 100644
--- a/packages/react/src/grid/demo/basic.md
+++ b/packages/react/src/grid/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Row, Col } from '@tiny-design/react';
-### Basic Grid
-
-Create basic grid layout using columns.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const row = {
margin: '16px 0',
};
@@ -19,7 +15,7 @@ Create basic grid layout using columns.
const lighterBox = {
backgroundColor: '#6E41BFD6',
};
-
+
const darkerBox = {
backgroundColor: '#6E41BFFA',
};
@@ -45,8 +41,5 @@ Create basic grid layout using columns.
col-6
>
- )
-}
-```
-
-
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/grid/demo/gutter.md b/packages/react/src/grid/demo/Gutter.tsx
similarity index 73%
rename from packages/react/src/grid/demo/gutter.md
rename to packages/react/src/grid/demo/Gutter.tsx
index 2d04fd18..30448d32 100644
--- a/packages/react/src/grid/demo/gutter.md
+++ b/packages/react/src/grid/demo/Gutter.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Row, Col, Slider } from '@tiny-design/react';
-### Gutter
-
-Use the `gutter` property of `Row` as grid spacing. It is recommended to set it to `8n` px. (`n` stands for natural number.)
-
-```jsx live
-() => {
+export default function GutterDemo() {
const box = {
padding: '20px 0',
color: '#fff',
@@ -15,21 +11,21 @@ Use the `gutter` property of `Row` as grid spacing. It is recommended to set it
const lighterBox = {
backgroundColor: '#6E41BFD6',
};
-
+
const darkerBox = {
backgroundColor: '#6E41BFFA',
};
-
+
const [gutter, setGutter] = React.useState(8);
return (
<>
@@ -49,8 +45,5 @@ Use the `gutter` property of `Row` as grid spacing. It is recommended to set it
col-6
>
- )
-}
-```
-
-
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/grid/demo/offset.md b/packages/react/src/grid/demo/Offset.tsx
similarity index 88%
rename from packages/react/src/grid/demo/offset.md
rename to packages/react/src/grid/demo/Offset.tsx
index e1cab0d2..f139681a 100644
--- a/packages/react/src/grid/demo/offset.md
+++ b/packages/react/src/grid/demo/Offset.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Row, Col } from '@tiny-design/react';
-### Column offset
-
-`Offset` can set the column to the right side.
-
-```jsx live
-() => {
+export default function OffsetDemo() {
const row = {
margin: '16px 0',
};
@@ -19,7 +15,7 @@
const lighterBox = {
backgroundColor: '#6E41BFD6',
};
-
+
const darkerBox = {
backgroundColor: '#6E41BFFA',
};
@@ -38,8 +34,5 @@
col-6 col-offset-6
>
- )
-}
-```
-
-
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/grid/demo/order.md b/packages/react/src/grid/demo/Order.tsx
similarity index 84%
rename from packages/react/src/grid/demo/order.md
rename to packages/react/src/grid/demo/Order.tsx
index 64cb440e..225044cb 100644
--- a/packages/react/src/grid/demo/order.md
+++ b/packages/react/src/grid/demo/Order.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Row, Col } from '@tiny-design/react';
-### Order
-
-Change the element sort by `order`.
-
-```jsx live
-() => {
+export default function OrderDemo() {
const box = {
padding: '20px 0',
color: '#fff',
@@ -15,7 +11,7 @@ Change the element sort by `order`.
const lighterBox = {
backgroundColor: '#6E41BFD6',
};
-
+
const darkerBox = {
backgroundColor: '#6E41BFFA',
};
@@ -29,8 +25,5 @@ Change the element sort by `order`.
4 col-order-4
>
- )
-}
-```
-
-
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/grid/demo/responsive.md b/packages/react/src/grid/demo/Responsive.tsx
similarity index 78%
rename from packages/react/src/grid/demo/responsive.md
rename to packages/react/src/grid/demo/Responsive.tsx
index 3486e041..1310d90e 100644
--- a/packages/react/src/grid/demo/responsive.md
+++ b/packages/react/src/grid/demo/Responsive.tsx
@@ -1,12 +1,8 @@
-
+import React from 'react';
+import { Row, Col } from '@tiny-design/react';
-### Responsive
-
-Columns respond to viewport width using `xs`, `sm`, `md`, `lg`, `xl`, `xxl` breakpoints. Resize the browser to see columns reflow.
-
-```jsx live
-() => {
- const style = (bg) => ({
+export default function ResponsiveDemo() {
+ const style = (bg: string) => ({
background: bg,
color: '#fff',
padding: '12px 0',
@@ -33,7 +29,4 @@ Columns respond to viewport width using `xs`, `sm`, `md`, `lg`, `xl`, `xxl` brea
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/grid/index.md b/packages/react/src/grid/index.md
index 06bf1276..43cf6cad 100644
--- a/packages/react/src/grid/index.md
+++ b/packages/react/src/grid/index.md
@@ -1,9 +1,15 @@
-import Basic from './demo/basic.md'
-import Gutter from './demo/gutter.md'
-import Offset from './demo/offset.md'
-import Order from './demo/order.md'
-import Alignment from './demo/alignment.md'
-import Responsive from './demo/responsive.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import GutterDemo from './demo/Gutter';
+import GutterSource from './demo/Gutter.tsx?raw';
+import OffsetDemo from './demo/Offset';
+import OffsetSource from './demo/Offset.tsx?raw';
+import OrderDemo from './demo/Order';
+import OrderSource from './demo/Order.tsx?raw';
+import AlignmentDemo from './demo/Alignment';
+import AlignmentSource from './demo/Alignment.tsx?raw';
+import ResponsiveDemo from './demo/Responsive';
+import ResponsiveSource from './demo/Responsive.tsx?raw';
# Grid
@@ -17,12 +23,66 @@ import { Row, Col } from 'tiny-design';
## Examples
-
-
-
-
-
-
+
+
+
+
+### Basic Grid
+
+Create basic grid layout using columns.
+
+
+
+
+
+
+### Gutter
+
+Use the `gutter` property of `Row` as grid spacing. It is recommended to set it to `8n` px. (`n` stands for natural number.)
+
+
+
+
+
+
+### Column offset
+
+`Offset` can set the column to the right side.
+
+
+
+
+
+
+
+
+### Order
+
+Change the element sort by `order`.
+
+
+
+
+
+
+### Alignment
+
+Child elements vertically aligned.
+
+
+
+
+
+
+### Responsive
+
+Columns respond to viewport width using `xs`, `sm`, `md`, `lg`, `xl`, `xxl` breakpoints. Resize the browser to see columns reflow.
+
+
+
+
+
+
## API
@@ -51,4 +111,4 @@ import { Row, Col } from 'tiny-design';
| xl | screen >= 1280px, or a config object | number | \{ span, offset, order \} | - |
| xxl | screen >= 1440px, or a config object | number | \{ span, offset, order \} | - |
| style | style object of container | CSSProperties | - |
-| className | className of container | string | - |
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/grid/index.zh_CN.md b/packages/react/src/grid/index.zh_CN.md
index 08ecb4b1..20441616 100644
--- a/packages/react/src/grid/index.zh_CN.md
+++ b/packages/react/src/grid/index.zh_CN.md
@@ -1,8 +1,15 @@
-import Basic from './demo/basic.md'
-import Gutter from './demo/gutter.md'
-import Offset from './demo/offset.md'
-import Order from './demo/order.md'
-import Alignment from './demo/alignment.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import GutterDemo from './demo/Gutter';
+import GutterSource from './demo/Gutter.tsx?raw';
+import OffsetDemo from './demo/Offset';
+import OffsetSource from './demo/Offset.tsx?raw';
+import OrderDemo from './demo/Order';
+import OrderSource from './demo/Order.tsx?raw';
+import AlignmentDemo from './demo/Alignment';
+import AlignmentSource from './demo/Alignment.tsx?raw';
+import ResponsiveDemo from './demo/Responsive';
+import ResponsiveSource from './demo/Responsive.tsx?raw';
# Grid
@@ -16,11 +23,66 @@ import { Row, Col } from 'tiny-design';
## 代码示例
-
-
-
-
-
+
+
+
+
+### 基本栅格
+
+使用列创建基本栅格布局。
+
+
+
+
+
+
+### 栅格间距
+
+使用 `Row` 的 `gutter` 属性设置栅格间距。建议设为 `8n` px。(`n` 为正整数。)
+
+
+
+
+
+
+### 栅格偏移
+
+使用 `offset` 可以将列向右移动。
+
+
+
+
+
+
+
+
+### 排序
+
+使用 `order` 改变元素的排列顺序。
+
+
+
+
+
+
+### 对齐
+
+子元素垂直对齐。
+
+
+
+
+
+
+### 响应式
+
+列使用 `xs`、`sm`、`md`、`lg`、`xl`、`xxl` 响应视口宽度。调整浏览器大小以查看列重新排列。
+
+
+
+
+
+
## API
@@ -49,4 +111,4 @@ import { Row, Col } from 'tiny-design';
| xl | 屏幕 >= 1280px 时的配置或对象 | number | \{ span, offset, order \} | - |
| xxl | 屏幕 >= 1440px 时的配置或对象 | number | \{ span, offset, order \} | - |
| style | 容器的样式对象 | CSSProperties | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/icon/demo/svg-basic.md b/packages/react/src/icon/demo/Basic.tsx
similarity index 57%
rename from packages/react/src/icon/demo/svg-basic.md
rename to packages/react/src/icon/demo/Basic.tsx
index d07fc2b1..ccbd84b1 100644
--- a/packages/react/src/icon/demo/svg-basic.md
+++ b/packages/react/src/icon/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { IconClose, IconPlus, IconSearch, IconHeart, IconStar } from '@tiny-design/icons';
-### Basic
-
-Import individual SVG icon components. Each icon is tree-shakeable.
-
-```jsx live
-() => {
+export default function BasicDemo() {
return (
@@ -15,7 +11,4 @@ Import individual SVG icon components. Each icon is tree-shakeable.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/icon/demo/svg-size-color.md b/packages/react/src/icon/demo/SizeAndColor.tsx
similarity index 69%
rename from packages/react/src/icon/demo/svg-size-color.md
rename to packages/react/src/icon/demo/SizeAndColor.tsx
index 206786cd..bdfd51bc 100644
--- a/packages/react/src/icon/demo/svg-size-color.md
+++ b/packages/react/src/icon/demo/SizeAndColor.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { IconHeart } from '@tiny-design/icons';
-### Size & Color
-
-Use `size` and `color` props to customize icons.
-
-```jsx live
-() => {
+export default function SizeAndColorDemo() {
return (
@@ -14,7 +10,4 @@ Use `size` and `color` props to customize icons.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/icon/demo/Spin.tsx b/packages/react/src/icon/demo/Spin.tsx
new file mode 100644
index 00000000..132e7401
--- /dev/null
+++ b/packages/react/src/icon/demo/Spin.tsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import { withSpin } from '@tiny-design/react';
+import {
+ IconLoader,
+ IconLoaderQuarter,
+ IconLoader3quarter,
+ IconLoaderCircle,
+ IconSync,
+} from '@tiny-design/icons';
+
+const SpinLoader = withSpin(IconLoader);
+const SpinLoaderQuarter = withSpin(IconLoaderQuarter);
+const SpinLoader3quarter = withSpin(IconLoader3quarter);
+const SpinLoaderCircle = withSpin(IconLoaderCircle);
+const SpinSync = withSpin(IconSync);
+
+export default function SpinDemo() {
+ return (
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/icon/demo/svg-spin.md b/packages/react/src/icon/demo/svg-spin.md
deleted file mode 100644
index 780514f4..00000000
--- a/packages/react/src/icon/demo/svg-spin.md
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-### Spin
-
-Use the `withSpin` HOC to create a spinning variant of any icon. Useful for loading indicators.
-
-```jsx live
-() => {
- const SpinLoader = withSpin(IconLoader);
- const SpinLoaderQuarter = withSpin(IconLoaderQuarter);
- const SpinLoader3quarter = withSpin(IconLoader3quarter);
- const SpinLoaderCircle = withSpin(IconLoaderCircle);
- const SpinSync = withSpin(IconSync);
- return (
-
-
-
-
-
-
-
- );
-}
-```
-
-
diff --git a/packages/react/src/icon/index.md b/packages/react/src/icon/index.md
index 8cb94ceb..f99cab2e 100644
--- a/packages/react/src/icon/index.md
+++ b/packages/react/src/icon/index.md
@@ -1,6 +1,9 @@
-import SvgBasic from './demo/svg-basic.md'
-import SvgSizeColor from './demo/svg-size-color.md'
-import SvgSpin from './demo/svg-spin.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeAndColorDemo from './demo/SizeAndColor';
+import SizeAndColorSource from './demo/SizeAndColor.tsx?raw';
+import SpinDemo from './demo/Spin';
+import SpinSource from './demo/Spin.tsx?raw';
import SvgIconList from './demo/svg-icons.tsx'
# Icon
@@ -22,11 +25,35 @@ import { IconClose, IconPlus } from '@tiny-design/icons';
-
-
+
+
+### Basic
+
+Import individual SVG icon components. Each icon is tree-shakeable.
+
+
+
+
+
+
+### Spin
+
+Use the `withSpin` HOC to create a spinning variant of any icon. Useful for loading indicators.
+
+
+
+
-
+
+
+### Size & Color
+
+Use `size` and `color` props to customize icons.
+
+
+
+
@@ -57,4 +84,4 @@ const SpinLoader = withSpin(IconLoader);
## List of icons
-
+
\ No newline at end of file
diff --git a/packages/react/src/icon/index.zh_CN.md b/packages/react/src/icon/index.zh_CN.md
index 8ebc95a7..90583ffb 100644
--- a/packages/react/src/icon/index.zh_CN.md
+++ b/packages/react/src/icon/index.zh_CN.md
@@ -1,6 +1,9 @@
-import SvgBasic from './demo/svg-basic.md'
-import SvgSizeColor from './demo/svg-size-color.md'
-import SvgSpin from './demo/svg-spin.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeAndColorDemo from './demo/SizeAndColor';
+import SizeAndColorSource from './demo/SizeAndColor.tsx?raw';
+import SpinDemo from './demo/Spin';
+import SpinSource from './demo/Spin.tsx?raw';
import SvgIconList from './demo/svg-icons.tsx'
# Icon
@@ -22,11 +25,35 @@ import { IconClose, IconPlus } from '@tiny-design/icons';
-
-
+
+
+### 基础用法
+
+引入独立的 SVG 图标组件。每个图标都可以被 tree-shake。
+
+
+
+
+
+
+### 旋转动画
+
+使用 `withSpin` 高阶组件为任意图标添加持续的旋转动画,常用于加载指示器。
+
+
+
+
-
+
+
+### 尺寸与颜色
+
+使用 `size` 和 `color` 属性自定义图标。
+
+
+
+
@@ -42,6 +69,19 @@ import { IconClose, IconPlus } from '@tiny-design/icons';
| style | 行内样式 | CSSProperties | - |
| ref | 转发 ref | Ref\ | - |
+### withSpin
+
+一个高阶组件,为任意图标添加持续的旋转动画。
+
+```jsx
+import { withSpin } from '@tiny-design/react';
+import { IconLoader } from '@tiny-design/icons';
+
+const SpinLoader = withSpin(IconLoader);
+
+
+```
+
## 图标列表
-
+
\ No newline at end of file
diff --git a/packages/react/src/image/demo/Basic.tsx b/packages/react/src/image/demo/Basic.tsx
new file mode 100644
index 00000000..3dc8b8be
--- /dev/null
+++ b/packages/react/src/image/demo/Basic.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Image } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/image/demo/Fallback.tsx b/packages/react/src/image/demo/Fallback.tsx
new file mode 100644
index 00000000..6aac5c73
--- /dev/null
+++ b/packages/react/src/image/demo/Fallback.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Image } from '@tiny-design/react';
+
+export default function FallbackDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/image/demo/Lazy.tsx b/packages/react/src/image/demo/Lazy.tsx
new file mode 100644
index 00000000..04beacb3
--- /dev/null
+++ b/packages/react/src/image/demo/Lazy.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Image } from '@tiny-design/react';
+
+export default function LazyDemo() {
+ return (
+
+
Scroll up to make images into the view area.
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/image/demo/Round.tsx b/packages/react/src/image/demo/Round.tsx
new file mode 100644
index 00000000..5f9792f1
--- /dev/null
+++ b/packages/react/src/image/demo/Round.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Image } from '@tiny-design/react';
+
+export default function RoundDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/image/demo/Size.tsx b/packages/react/src/image/demo/Size.tsx
new file mode 100644
index 00000000..6a7c0ac2
--- /dev/null
+++ b/packages/react/src/image/demo/Size.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Image } from '@tiny-design/react';
+
+export default function SizeDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/image/demo/basic.md b/packages/react/src/image/demo/basic.md
deleted file mode 100644
index 85b94284..00000000
--- a/packages/react/src/image/demo/basic.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Basic
-
-A basic usage displaying an image.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/image/demo/fallback.md b/packages/react/src/image/demo/fallback.md
deleted file mode 100644
index 24520217..00000000
--- a/packages/react/src/image/demo/fallback.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Fallback
-
-Providing a fallback image for when there is an error loading the src of the image.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/image/demo/lazy.md b/packages/react/src/image/demo/lazy.md
deleted file mode 100644
index fd49d526..00000000
--- a/packages/react/src/image/demo/lazy.md
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-### Lazy Load
-
-Set `lazy` and `placehoulder` properties to implement the lazy load.
-
-```jsx live
-
-
Scroll up to make images into the view area.
-
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/image/demo/round.md b/packages/react/src/image/demo/round.md
deleted file mode 100644
index 7d8b729c..00000000
--- a/packages/react/src/image/demo/round.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Rounded Image
-
-Display a rounded image.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/image/demo/size.md b/packages/react/src/image/demo/size.md
deleted file mode 100644
index 62a88831..00000000
--- a/packages/react/src/image/demo/size.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Size
-
-The size of the image can be adjusted using the `width` and `height` prop.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/image/index.md b/packages/react/src/image/index.md
index 689bb4b5..d9f43bdd 100644
--- a/packages/react/src/image/index.md
+++ b/packages/react/src/image/index.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Size from './demo/size.md'
-import Round from './demo/round.md'
-import Lazy from './demo/lazy.md'
-import Fallback from './demo/fallback.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import RoundDemo from './demo/Round';
+import RoundSource from './demo/Round.tsx?raw';
+import LazyDemo from './demo/Lazy';
+import LazySource from './demo/Lazy.tsx?raw';
+import FallbackDemo from './demo/Fallback';
+import FallbackSource from './demo/Fallback.tsx?raw';
# Image
@@ -22,13 +27,53 @@ import { Image } from 'tiny-design';
-
-
+
+
+### Basic
+
+A basic usage displaying an image.
+
+
+
+
+
+
+### Size
+
+The size of the image can be adjusted using the `width` and `height` prop.
+
+
+
+
-
-
-
+
+
+### Rounded Image
+
+Display a rounded image.
+
+
+
+
+
+
+### Lazy Load
+
+Set `lazy` and `placehoulder` properties to implement the lazy load.
+
+
+
+
+
+
+### Fallback
+
+Providing a fallback image for when there is an error loading the src of the image.
+
+
+
+
@@ -46,4 +91,4 @@ import { Image } from 'tiny-design';
| fallback | Image placeholder when an error loading | string | - |
| objectFit | Image fit mode | | - |
| style | Style object of container object | | - |
-| className | ClassName of container | string | - |
+| className | ClassName of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/image/index.zh_CN.md b/packages/react/src/image/index.zh_CN.md
index c7ff0073..17ceea78 100644
--- a/packages/react/src/image/index.zh_CN.md
+++ b/packages/react/src/image/index.zh_CN.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Size from './demo/size.md'
-import Round from './demo/round.md'
-import Lazy from './demo/lazy.md'
-import Fallback from './demo/fallback.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import RoundDemo from './demo/Round';
+import RoundSource from './demo/Round.tsx?raw';
+import LazyDemo from './demo/Lazy';
+import LazySource from './demo/Lazy.tsx?raw';
+import FallbackDemo from './demo/Fallback';
+import FallbackSource from './demo/Fallback.tsx?raw';
# Image
@@ -22,13 +27,53 @@ import { Image } from 'tiny-design';
-
-
+
+
+### 基本用法
+
+展示一张图片。
+
+
+
+
+
+
+### 尺寸
+
+可以通过 `width` 和 `height` 属性调整图片尺寸。
+
+
+
+
-
-
-
+
+
+### 圆角图片
+
+展示圆角图片。
+
+
+
+
+
+
+### 懒加载
+
+设置 `lazy` 和 `placeholder` 属性实现懒加载。
+
+
+
+
+
+
+### 加载失败
+
+图片加载失败时显示占位图。
+
+
+
+
@@ -46,4 +91,4 @@ import { Image } from 'tiny-design';
| fallback | 加载失败时的占位图片 | string | - |
| objectFit | 图片填充模式 | | - |
| style | 容器的样式对象 | | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/input-number/demo/Basic.tsx b/packages/react/src/input-number/demo/Basic.tsx
new file mode 100644
index 00000000..195d81f6
--- /dev/null
+++ b/packages/react/src/input-number/demo/Basic.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { InputNumber } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/input-number/demo/disabled.md b/packages/react/src/input-number/demo/Disabled.tsx
similarity index 66%
rename from packages/react/src/input-number/demo/disabled.md
rename to packages/react/src/input-number/demo/Disabled.tsx
index 52f45c4a..174afa30 100644
--- a/packages/react/src/input-number/demo/disabled.md
+++ b/packages/react/src/input-number/demo/Disabled.tsx
@@ -1,24 +1,17 @@
-
+import React from 'react';
+import { InputNumber, Button } from '@tiny-design/react';
-### Disabled
-
-Click the button to toggle between available and disabled states.
-
-```jsx live
-() => {
+export default function DisabledDemo() {
const [disabled, setDisabled] = React.useState(true);
return (
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/input-number/demo/precision.md b/packages/react/src/input-number/demo/Precision.tsx
similarity index 64%
rename from packages/react/src/input-number/demo/precision.md
rename to packages/react/src/input-number/demo/Precision.tsx
index 4f82a591..0013bec6 100644
--- a/packages/react/src/input-number/demo/precision.md
+++ b/packages/react/src/input-number/demo/Precision.tsx
@@ -1,18 +1,11 @@
-
+import React from 'react';
+import { InputNumber } from '@tiny-design/react';
-### Precision
-
-Set decimal precision with `precision`, and use `controls` to always show step buttons.
-
-```jsx live
-() => {
+export default function PrecisionDemo() {
return (
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/input-number/demo/Size.tsx b/packages/react/src/input-number/demo/Size.tsx
new file mode 100644
index 00000000..fb3ff7cd
--- /dev/null
+++ b/packages/react/src/input-number/demo/Size.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { InputNumber } from '@tiny-design/react';
+
+export default function SizeDemo() {
+ return (
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/input-number/demo/basic.md b/packages/react/src/input-number/demo/basic.md
deleted file mode 100644
index 23ae7a49..00000000
--- a/packages/react/src/input-number/demo/basic.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-### Basic
-
-A simple usage.
-
-```jsx live
-
-
-
-```
-
-
diff --git a/packages/react/src/input-number/demo/size.md b/packages/react/src/input-number/demo/size.md
deleted file mode 100644
index 2116d409..00000000
--- a/packages/react/src/input-number/demo/size.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Size
-
-Different sizes of input number components.
-
-```jsx live
-
-
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/input-number/index.md b/packages/react/src/input-number/index.md
index 31a130e5..fa6653d4 100755
--- a/packages/react/src/input-number/index.md
+++ b/packages/react/src/input-number/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Size from './demo/size.md'
-import Disabled from './demo/disabled.md'
-import Precision from './demo/precision.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import PrecisionDemo from './demo/Precision';
+import PrecisionSource from './demo/Precision.tsx?raw';
# Input Number
@@ -21,12 +25,44 @@ import { InputNumber } from 'tiny-design';
-
-
+
+
+### Basic
+
+A simple usage.
+
+
+
+
+
+
+### Disabled
+
+Click the button to toggle between available and disabled states.
+
+
+
+
-
-
+
+
+### Size
+
+Different sizes of input number components.
+
+
+
+
+
+
+### Precision
+
+Set decimal precision with `precision`, and use `controls` to always show step buttons.
+
+
+
+
@@ -44,5 +80,4 @@ import { InputNumber } from 'tiny-design';
| disabled | Disable the input | boolean | false |
| controls | Always display the controller | boolean | false |
| style | Style object of container object | | - |
-| className | ClassName of container | string | - |
-
+| className | ClassName of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/input-number/index.zh_CN.md b/packages/react/src/input-number/index.zh_CN.md
index 78a30cdd..e73d9361 100644
--- a/packages/react/src/input-number/index.zh_CN.md
+++ b/packages/react/src/input-number/index.zh_CN.md
@@ -1,6 +1,11 @@
-import Basic from './demo/basic.md'
-import Size from './demo/size.md'
-import Disabled from './demo/disabled.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import PrecisionDemo from './demo/Precision';
+import PrecisionSource from './demo/Precision.tsx?raw';
# Input Number
@@ -20,11 +25,44 @@ import { InputNumber } from 'tiny-design';
-
-
+
+
+### 基本用法
+
+最简单的用法。
+
+
+
+
+
+
+### 禁用状态
+
+点击按钮切换可用和禁用状态。
+
+
+
+
-
+
+
+### 尺寸
+
+不同尺寸的数字输入框。
+
+
+
+
+
+
+### 精度
+
+通过 `precision` 设置小数精度,使用 `controls` 始终显示步进按钮。
+
+
+
+
@@ -42,4 +80,4 @@ import { InputNumber } from 'tiny-design';
| disabled | 是否禁用输入框 | boolean | false |
| controls | 是否始终显示控制器 | boolean | false |
| style | 容器的样式对象 | | - |
-| className | 容器的类名 | string | - |
+| className | 容器的类名 | string | - |
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/AutoFocus.tsx b/packages/react/src/input-otp/demo/AutoFocus.tsx
new file mode 100644
index 00000000..2bdc770b
--- /dev/null
+++ b/packages/react/src/input-otp/demo/AutoFocus.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { InputOTP } from '@tiny-design/react';
+
+export default function AutoFocusDemo() {
+ return (
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/basic.md b/packages/react/src/input-otp/demo/Basic.tsx
similarity index 59%
rename from packages/react/src/input-otp/demo/basic.md
rename to packages/react/src/input-otp/demo/Basic.tsx
index c8a4bf56..13277096 100644
--- a/packages/react/src/input-otp/demo/basic.md
+++ b/packages/react/src/input-otp/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { InputOTP } from '@tiny-design/react';
-### Basic
-
-A basic OTP input.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const [value, setValue] = React.useState('');
return (
@@ -13,7 +9,4 @@ A basic OTP input.
Entered: {value}
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/Disabled.tsx b/packages/react/src/input-otp/demo/Disabled.tsx
new file mode 100644
index 00000000..29fc94fd
--- /dev/null
+++ b/packages/react/src/input-otp/demo/Disabled.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { InputOTP } from '@tiny-design/react';
+
+export default function DisabledDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/formatter.md b/packages/react/src/input-otp/demo/Formatter.tsx
similarity index 61%
rename from packages/react/src/input-otp/demo/formatter.md
rename to packages/react/src/input-otp/demo/Formatter.tsx
index f037fafe..e2ab0a9c 100644
--- a/packages/react/src/input-otp/demo/formatter.md
+++ b/packages/react/src/input-otp/demo/Formatter.tsx
@@ -1,15 +1,11 @@
-
+import React from 'react';
+import { InputOTP } from '@tiny-design/react';
-### Controlled & Formatter
-
-Use `value` for controlled mode and `formatter` to restrict input.
-
-```jsx live
-() => {
+export default function FormatterDemo() {
const [value, setValue] = React.useState('');
// Only allow digits
- const formatter = (val) => val.replace(/\D/g, '');
+ const formatter = (val: string) => val.replace(/\D/g, '');
return (
@@ -23,7 +19,4 @@ Use `value` for controlled mode and `formatter` to restrict input.
Only digits are allowed
);
-}
-```
-
-
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/length.md b/packages/react/src/input-otp/demo/Length.tsx
similarity index 79%
rename from packages/react/src/input-otp/demo/length.md
rename to packages/react/src/input-otp/demo/Length.tsx
index 4de32988..b5effc2d 100644
--- a/packages/react/src/input-otp/demo/length.md
+++ b/packages/react/src/input-otp/demo/Length.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { InputOTP } from '@tiny-design/react';
-### Length
-
-Set the number of OTP cells using the `length` prop.
-
-```jsx live
-() => {
+export default function LengthDemo() {
return (
@@ -22,7 +18,4 @@ Set the number of OTP cells using the `length` prop.
);
-}
-```
-
-
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/mask.md b/packages/react/src/input-otp/demo/Mask.tsx
similarity index 80%
rename from packages/react/src/input-otp/demo/mask.md
rename to packages/react/src/input-otp/demo/Mask.tsx
index 25137214..df55ff6b 100644
--- a/packages/react/src/input-otp/demo/mask.md
+++ b/packages/react/src/input-otp/demo/Mask.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { InputOTP } from '@tiny-design/react';
-### Mask
-
-Use `mask` to hide the input values (useful for PIN codes). You can also set a custom mask character.
-
-```jsx live
-() => {
+export default function MaskDemo() {
const [value, setValue] = React.useState('');
return (
@@ -24,7 +20,4 @@ Use `mask` to hide the input values (useful for PIN codes). You can also set a c
Value: {value}
);
-}
-```
-
-
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/separator.md b/packages/react/src/input-otp/demo/Separator.tsx
similarity index 82%
rename from packages/react/src/input-otp/demo/separator.md
rename to packages/react/src/input-otp/demo/Separator.tsx
index d0ff2cf0..8ff438a8 100644
--- a/packages/react/src/input-otp/demo/separator.md
+++ b/packages/react/src/input-otp/demo/Separator.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { InputOTP } from '@tiny-design/react';
-### Separator
-
-Customize the separator between cells using the `separator` prop.
-
-```jsx live
-() => {
+export default function SeparatorDemo() {
return (
@@ -25,7 +21,4 @@ Customize the separator between cells using the `separator` prop.
);
-}
-```
-
-
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/size.md b/packages/react/src/input-otp/demo/Size.tsx
similarity index 66%
rename from packages/react/src/input-otp/demo/size.md
rename to packages/react/src/input-otp/demo/Size.tsx
index b346c7f6..9ca3759d 100644
--- a/packages/react/src/input-otp/demo/size.md
+++ b/packages/react/src/input-otp/demo/Size.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { InputOTP } from '@tiny-design/react';
-### Size
-
-Three sizes are available: `sm`, `md` (default), and `lg`.
-
-```jsx live
-() => {
+export default function SizeDemo() {
return (
@@ -13,7 +9,4 @@ Three sizes are available: `sm`, `md` (default), and `lg`.
);
-}
-```
-
-
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/auto-focus.md b/packages/react/src/input-otp/demo/auto-focus.md
deleted file mode 100644
index c36fc61e..00000000
--- a/packages/react/src/input-otp/demo/auto-focus.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Auto Focus
-
-Use `autoFocus` to automatically focus the first cell when the component mounts.
-
-```jsx live
-() => {
- return (
-
-
-
- );
-}
-```
-
-
\ No newline at end of file
diff --git a/packages/react/src/input-otp/demo/disabled.md b/packages/react/src/input-otp/demo/disabled.md
deleted file mode 100644
index 28b98ecc..00000000
--- a/packages/react/src/input-otp/demo/disabled.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-### Disabled
-
-Disable the OTP input using the `disabled` prop.
-
-```jsx live
-() => {
- return ;
-}
-```
-
-
\ No newline at end of file
diff --git a/packages/react/src/input-otp/index.md b/packages/react/src/input-otp/index.md
index a6d0abc0..78d45699 100644
--- a/packages/react/src/input-otp/index.md
+++ b/packages/react/src/input-otp/index.md
@@ -1,11 +1,19 @@
-import Basic from './demo/basic.md'
-import Size from './demo/size.md'
-import Disabled from './demo/disabled.md'
-import Mask from './demo/mask.md'
-import Length from './demo/length.md'
-import Separator from './demo/separator.md'
-import Formatter from './demo/formatter.md'
-import AutoFocus from './demo/auto-focus.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import MaskDemo from './demo/Mask';
+import MaskSource from './demo/Mask.tsx?raw';
+import LengthDemo from './demo/Length';
+import LengthSource from './demo/Length.tsx?raw';
+import SeparatorDemo from './demo/Separator';
+import SeparatorSource from './demo/Separator.tsx?raw';
+import FormatterDemo from './demo/Formatter';
+import FormatterSource from './demo/Formatter.tsx?raw';
+import AutoFocusDemo from './demo/AutoFocus';
+import AutoFocusSource from './demo/AutoFocus.tsx?raw';
# Input OTP
@@ -25,16 +33,80 @@ import { InputOTP } from 'tiny-design';
-
-
-
-
+
+
+### Basic
+
+A basic OTP input.
+
+
+
+
+
+
+### Size
+
+Three sizes are available: `sm`, `md` (default), and `lg`.
+
+
+
+
+
+
+### Length
+
+Set the number of OTP cells using the `length` prop.
+
+
+
+
+
+
+### Mask
+
+Use `mask` to hide the input values (useful for PIN codes). You can also set a custom mask character.
+
+
+
+
-
-
-
-
+
+
+### Separator
+
+Customize the separator between cells using the `separator` prop.
+
+
+
+
+
+
+### Disabled
+
+Disable the OTP input using the `disabled` prop.
+
+
+
+
+
+
+### Controlled & Formatter
+
+Use `value` for controlled mode and `formatter` to restrict input.
+
+
+
+
+
+
+### Auto Focus
+
+Use `autoFocus` to automatically focus the first cell when the component mounts.
+
+
+
+
@@ -56,4 +128,4 @@ import { InputOTP } from 'tiny-design';
| autoComplete | HTML autocomplete attribute | string | `one-time-code` |
| onChange | Callback when the value changes | (value: string) => void | - |
| style | Style of container | CSSProperties | - |
-| className | ClassName of container | string | - |
+| className | ClassName of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/input-otp/index.zh_CN.md b/packages/react/src/input-otp/index.zh_CN.md
index d022a44b..ad9f93e1 100644
--- a/packages/react/src/input-otp/index.zh_CN.md
+++ b/packages/react/src/input-otp/index.zh_CN.md
@@ -1,11 +1,19 @@
-import Basic from './demo/basic.md'
-import Size from './demo/size.md'
-import Disabled from './demo/disabled.md'
-import Mask from './demo/mask.md'
-import Length from './demo/length.md'
-import Separator from './demo/separator.md'
-import Formatter from './demo/formatter.md'
-import AutoFocus from './demo/auto-focus.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import MaskDemo from './demo/Mask';
+import MaskSource from './demo/Mask.tsx?raw';
+import LengthDemo from './demo/Length';
+import LengthSource from './demo/Length.tsx?raw';
+import SeparatorDemo from './demo/Separator';
+import SeparatorSource from './demo/Separator.tsx?raw';
+import FormatterDemo from './demo/Formatter';
+import FormatterSource from './demo/Formatter.tsx?raw';
+import AutoFocusDemo from './demo/AutoFocus';
+import AutoFocusSource from './demo/AutoFocus.tsx?raw';
# Input OTP
@@ -25,16 +33,80 @@ import { InputOTP } from 'tiny-design';
-
-
-
-
+
+
+### 基本用法
+
+基本的 OTP 输入。
+
+
+
+
+
+
+### 尺寸
+
+提供三种尺寸:`sm`、`md`(默认)和 `lg`。
+
+
+
+
+
+
+### 长度
+
+使用 `length` 属性设置 OTP 单元格数量。
+
+
+
+
+
+
+### 遮罩
+
+使用 `mask` 隐藏输入值(适用于 PIN 码)。也可以设置自定义遮罩字符。
+
+
+
+
-
-
-
-
+
+
+### 分隔符
+
+使用 `separator` 属性自定义单元格之间的分隔符。
+
+
+
+
+
+
+### 禁用状态
+
+使用 `disabled` 属性禁用 OTP 输入。
+
+
+
+
+
+
+### 受控模式 & 格式化器
+
+使用 `value` 进行受控模式,使用 `formatter` 限制输入。
+
+
+
+
+
+
+### 自动聚焦
+
+使用 `autoFocus` 在组件挂载时自动聚焦第一个单元格。
+
+
+
+
@@ -56,5 +128,4 @@ import { InputOTP } from 'tiny-design';
| autoComplete | HTML autocomplete 属性 | string | `one-time-code` |
| onChange | 当值发生变化时触发的回调 | (value: string) => void | - |
| style | 容器样式 | CSSProperties | - |
-| className | 容器类名 | string | - |
-
+| className | 容器类名 | string | - |
\ No newline at end of file
diff --git a/packages/react/src/input-password/demo/Basic.tsx b/packages/react/src/input-password/demo/Basic.tsx
new file mode 100644
index 00000000..348ddb66
--- /dev/null
+++ b/packages/react/src/input-password/demo/Basic.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { InputPassword } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/input-password/demo/HideButton.tsx b/packages/react/src/input-password/demo/HideButton.tsx
new file mode 100644
index 00000000..52a1c7fe
--- /dev/null
+++ b/packages/react/src/input-password/demo/HideButton.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { InputPassword } from '@tiny-design/react';
+
+export default function HideButtonDemo() {
+ return (
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/input-password/demo/Strength.tsx b/packages/react/src/input-password/demo/Strength.tsx
new file mode 100644
index 00000000..296a4b7d
--- /dev/null
+++ b/packages/react/src/input-password/demo/Strength.tsx
@@ -0,0 +1,44 @@
+import React from 'react';
+import { InputPassword, StrengthIndicator } from '@tiny-design/react';
+
+export default function StrengthDemo() {
+ const [password, setPassword] = React.useState('');
+
+ const checkPwd = (str: string) => {
+ const { length } = str;
+ let lv = 0;
+ if (str.length > 0 && str.length < 6) {
+ return ++lv;
+ }
+ if (length > 8) {
+ lv++;
+ }
+ if (/[0-9]/.test(str)) {
+ lv++;
+ }
+ if (/[a-z]/.test(str)) {
+ lv++;
+ }
+ if (/[A-Z]/.test(str)) {
+ lv++;
+ }
+ if (/[.|-|_]/.test(str)) {
+ lv++;
+ }
+
+ return lv;
+ };
+
+ return (
+
+ setPassword(e.currentTarget.value)} />
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/input-password/demo/basic.md b/packages/react/src/input-password/demo/basic.md
deleted file mode 100755
index bd080a2e..00000000
--- a/packages/react/src/input-password/demo/basic.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-### Basic
-
-A simple usage.
-
-```jsx live
-
-
-
-```
-
-
diff --git a/packages/react/src/input-password/demo/hide-button.md b/packages/react/src/input-password/demo/hide-button.md
deleted file mode 100755
index aa1d2c8c..00000000
--- a/packages/react/src/input-password/demo/hide-button.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-### Hide Button
-
-The suffix button can be hidden.
-
-```jsx live
-
- );
-}
-```
-
-
diff --git a/packages/react/src/input/demo/size.md b/packages/react/src/input/demo/size.md
deleted file mode 100755
index b4abd573..00000000
--- a/packages/react/src/input/demo/size.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Three sizes of Input
-
-There are three sizes of an Input box: `lg`, `md` and `sm`.
-
-```jsx live
-
-
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/input/index.md b/packages/react/src/input/index.md
index 969485c5..a19b6dcb 100755
--- a/packages/react/src/input/index.md
+++ b/packages/react/src/input/index.md
@@ -1,9 +1,15 @@
-import Addon from './demo/addon.md'
-import AddonButton from './demo/addon-button.md'
-import Basic from './demo/basic.md'
-import Clearable from './demo/clearable.md'
-import PreSuffix from './demo/pre-suf-fix.md'
-import Size from './demo/size.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import AddonDemo from './demo/Addon';
+import AddonSource from './demo/Addon.tsx?raw';
+import AddonButtonDemo from './demo/AddonButton';
+import AddonButtonSource from './demo/AddonButton.tsx?raw';
+import PreSufFixDemo from './demo/PreSufFix';
+import PreSufFixSource from './demo/PreSufFix.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import ClearableDemo from './demo/Clearable';
+import ClearableSource from './demo/Clearable.tsx?raw';
# Input
@@ -25,14 +31,64 @@ const { Group, Addon } = Input;
-
-
-
+
+
+### Basic
+
+A simple usage.
+
+
+
+
+
+
+### Addon
+
+Using `Addon` example.
+
+
+
+
+
+
+### Addon with Button
+
+Add a button in `Addon` component to compose an input form, like search function.
+
+> Pass `noBorder` prop to `Addon` component.
+
+
+
+
-
-
-
+
+
+### Prefix & Suffix
+
+Add prefix or suffix icons inside input.
+
+
+
+
+
+
+### Three sizes of Input
+
+There are three sizes of an Input box: `lg`, `md` and `sm`.
+
+
+
+
+
+
+### With clear icon
+
+Allow to clear all content.
+
+
+
+
@@ -66,4 +122,4 @@ const { Group, Addon } = Input;
| Property | Description | Type | Default |
| --------- | ------------------------------ | --------- | ------- |
-| noBorder | remove border from addon | boolean | false |
+| noBorder | remove border from addon | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/input/index.zh_CN.md b/packages/react/src/input/index.zh_CN.md
index faa223b2..54a17086 100644
--- a/packages/react/src/input/index.zh_CN.md
+++ b/packages/react/src/input/index.zh_CN.md
@@ -1,9 +1,15 @@
-import Addon from './demo/addon.md'
-import AddonButton from './demo/addon-button.md'
-import Basic from './demo/basic.md'
-import Clearable from './demo/clearable.md'
-import PreSuffix from './demo/pre-suf-fix.md'
-import Size from './demo/size.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import AddonDemo from './demo/Addon';
+import AddonSource from './demo/Addon.tsx?raw';
+import AddonButtonDemo from './demo/AddonButton';
+import AddonButtonSource from './demo/AddonButton.tsx?raw';
+import PreSufFixDemo from './demo/PreSufFix';
+import PreSufFixSource from './demo/PreSufFix.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import ClearableDemo from './demo/Clearable';
+import ClearableSource from './demo/Clearable.tsx?raw';
# Input
@@ -25,14 +31,64 @@ const { Group, Addon } = Input;
-
-
-
+
+
+### 基本用法
+
+最简单的用法。
+
+
+
+
+
+
+### 添加附件
+
+使用 `Addon` 组件的示例。
+
+
+
+
+
+
+### 带按钮的附件
+
+在 `Addon` 组件中添加按钮来组合成输入表单,如搜索功能。
+
+> 传递 `noBorder` 属性给 `Addon` 组件。
+
+
+
+
-
-
-
+
+
+### 前缀和后缀
+
+在输入框内添加前缀或后缀图标。
+
+
+
+
+
+
+### 三种尺寸
+
+输入框有三种尺寸:`lg`、`md` 和 `sm`。
+
+
+
+
+
+
+### 带清除图标
+
+允许清除所有内容。
+
+
+
+
@@ -66,4 +122,4 @@ const { Group, Addon } = Input;
| 属性 | 说明 | 类型 | 默认值 |
| --------- | ------------------------------ | --------- | ------- |
-| noBorder | 移除附加组件的边框 | boolean | false |
+| noBorder | 移除附加组件的边框 | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/keyboard/demo/basic.md b/packages/react/src/keyboard/demo/Basic.tsx
similarity index 58%
rename from packages/react/src/keyboard/demo/basic.md
rename to packages/react/src/keyboard/demo/Basic.tsx
index f6026982..0be42a07 100644
--- a/packages/react/src/keyboard/demo/basic.md
+++ b/packages/react/src/keyboard/demo/Basic.tsx
@@ -1,17 +1,10 @@
-
+import React from 'react';
+import { Keyboard } from '@tiny-design/react';
-### Basic
-
-A simple usage.
-
-```jsx live
-() => {
+export default function BasicDemo() {
return (
Using command + option + i to open "Developer Tool".
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/keyboard/index.md b/packages/react/src/keyboard/index.md
index 41f8e7ea..0682ef1b 100644
--- a/packages/react/src/keyboard/index.md
+++ b/packages/react/src/keyboard/index.md
@@ -1,4 +1,5 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
# Keyboard
@@ -18,7 +19,15 @@ import { Keyboard } from 'tiny-design';
-
+
+
+### Basic
+
+A simple usage.
+
+
+
+
diff --git a/packages/react/src/keyboard/index.zh_CN.md b/packages/react/src/keyboard/index.zh_CN.md
index 9827e422..f60e0557 100644
--- a/packages/react/src/keyboard/index.zh_CN.md
+++ b/packages/react/src/keyboard/index.zh_CN.md
@@ -1,4 +1,5 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
# Keyboard
@@ -18,7 +19,15 @@ import { Keyboard } from 'tiny-design';
-
+
+
+### 基本用法
+
+简单的用法。
+
+
+
+
diff --git a/packages/react/src/layout/demo/basic.md b/packages/react/src/layout/demo/Basic.tsx
similarity index 93%
rename from packages/react/src/layout/demo/basic.md
rename to packages/react/src/layout/demo/Basic.tsx
index 48f8df39..30a9b98e 100644
--- a/packages/react/src/layout/demo/basic.md
+++ b/packages/react/src/layout/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Layout } from '@tiny-design/react';
-### Basic Structure
-
-Classic page layouts.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const layoutStyle = {
marginBottom: '50px',
};
@@ -31,7 +27,7 @@ Classic page layouts.
lineHeight: '120px',
textAlign: 'center',
};
-
+
const sidebarStyle = {
background: 'rgba(110, 65, 191, 0.84)',
color: '#fff',
@@ -48,7 +44,7 @@ Classic page layouts.
Content
-
+
Header
@@ -57,7 +53,7 @@ Classic page layouts.
-
+
Header
@@ -66,7 +62,7 @@ Classic page layouts.
-
+
Sidebar
@@ -75,9 +71,6 @@ Classic page layouts.
-
+
);
-};
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/layout/demo/sidebar.md b/packages/react/src/layout/demo/Sidebar.tsx
similarity index 83%
rename from packages/react/src/layout/demo/sidebar.md
rename to packages/react/src/layout/demo/Sidebar.tsx
index 2c954bd6..79369c19 100644
--- a/packages/react/src/layout/demo/sidebar.md
+++ b/packages/react/src/layout/demo/Sidebar.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Layout } from '@tiny-design/react';
-### Collapsible Sidebar
-
-Use `collapsible` to enable a built-in toggle trigger on the sidebar. Control the collapsed state with `collapsed` and `onCollapse`.
-
-```jsx live
-() => {
+export default function SidebarDemo() {
const { Sidebar, Header, Content } = Layout;
const [collapsed, setCollapsed] = React.useState(false);
@@ -51,7 +47,4 @@ Use `collapsible` to enable a built-in toggle trigger on the sidebar. Control th
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/layout/index.md b/packages/react/src/layout/index.md
index bb33e479..9ff70973 100644
--- a/packages/react/src/layout/index.md
+++ b/packages/react/src/layout/index.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Sidebar from './demo/sidebar.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SidebarDemo from './demo/Sidebar';
+import SidebarSource from './demo/Sidebar.tsx?raw';
# Layout
@@ -23,9 +25,30 @@ const { Header, Footer, Content, Sidebar } = Layout;
## Examples
-
-
+
+
+
+### Basic Structure
+
+Classic page layouts.
+
+
+
+
+
+
+
+
+### Collapsible Sidebar
+
+Use `collapsible` to enable a built-in toggle trigger on the sidebar. Control the collapsed state with `collapsed` and `onCollapse`.
+
+
+
+
+
+
## API
@@ -36,4 +59,4 @@ const { Header, Footer, Content, Sidebar } = Layout;
| Property | Description | Type | Default |
| --------- | ------------------------- | ----------------- | ------------ |
| className | container className. | string | - |
-| style | customise styles. | CSSProperties | - |
+| style | customise styles. | CSSProperties | - |
\ No newline at end of file
diff --git a/packages/react/src/layout/index.zh_CN.md b/packages/react/src/layout/index.zh_CN.md
index c50ae228..7827f319 100644
--- a/packages/react/src/layout/index.zh_CN.md
+++ b/packages/react/src/layout/index.zh_CN.md
@@ -1,4 +1,7 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SidebarDemo from './demo/Sidebar';
+import SidebarSource from './demo/Sidebar.tsx?raw';
# Layout
@@ -22,8 +25,30 @@ const { Header, Footer, Content, Sidebar } = Layout;
## 代码示例
-
+
+
+
+### 基本结构
+
+经典页面布局。
+
+
+
+
+
+
+
+
+### 可折叠侧边栏
+
+使用 `collapsible` 启用内置的切换触发器。通过 `collapsed` 和 `onCollapse` 控制折叠状态。
+
+
+
+
+
+
## API
@@ -34,4 +59,4 @@ const { Header, Footer, Content, Sidebar } = Layout;
| 属性 | 说明 | 类型 | 默认值 |
| --------- | ------------------------- | ----------------- | ------------ |
| className | 容器的 className | string | - |
-| style | 自定义样式 | CSSProperties | - |
+| style | 自定义样式 | CSSProperties | - |
\ No newline at end of file
diff --git a/packages/react/src/link/demo/Basic.tsx b/packages/react/src/link/demo/Basic.tsx
new file mode 100644
index 00000000..07a1a2da
--- /dev/null
+++ b/packages/react/src/link/demo/Basic.tsx
@@ -0,0 +1,8 @@
+import React from 'react';
+import { Link } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+ This is a link.
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/link/demo/Disabled.tsx b/packages/react/src/link/demo/Disabled.tsx
new file mode 100644
index 00000000..b58df845
--- /dev/null
+++ b/packages/react/src/link/demo/Disabled.tsx
@@ -0,0 +1,8 @@
+import React from 'react';
+import { Link } from '@tiny-design/react';
+
+export default function DisabledDemo() {
+ return (
+ This is a disabled link.
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/link/demo/External.tsx b/packages/react/src/link/demo/External.tsx
new file mode 100644
index 00000000..e0d38fc7
--- /dev/null
+++ b/packages/react/src/link/demo/External.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import { Link, Flex, VerticalSpace } from '@tiny-design/react';
+
+export default function ExternalDemo() {
+ return (
+
+ This link will open a new window.
+ This link will refresh the current window.
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/link/demo/Underline.tsx b/packages/react/src/link/demo/Underline.tsx
new file mode 100644
index 00000000..02f5b873
--- /dev/null
+++ b/packages/react/src/link/demo/Underline.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import { Link, Flex } from '@tiny-design/react';
+
+export default function UnderlineDemo() {
+ return (
+
+ This is a link with underline style.
+ This is a link without underline style.
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/link/demo/basic.md b/packages/react/src/link/demo/basic.md
deleted file mode 100644
index b08259d6..00000000
--- a/packages/react/src/link/demo/basic.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Basic
-
-A simple usage.
-
-```jsx live
-This is a link.
-```
-
-
diff --git a/packages/react/src/link/demo/disabled.md b/packages/react/src/link/demo/disabled.md
deleted file mode 100644
index 93f280f1..00000000
--- a/packages/react/src/link/demo/disabled.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Disabled
-
-Disabled state of link.
-
-```jsx live
-This is a disabled link.
-```
-
-
diff --git a/packages/react/src/link/demo/external.md b/packages/react/src/link/demo/external.md
deleted file mode 100644
index d029f431..00000000
--- a/packages/react/src/link/demo/external.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### External
-
-It will open a new window when clicking the link by default. Set `external={false}` to open the link in the current window.
-
-```jsx live
-<>
- This link will open a new window.
-
- This link will refresh the current window.
->
-```
-
-
diff --git a/packages/react/src/link/demo/underline.md b/packages/react/src/link/demo/underline.md
deleted file mode 100644
index 293d1856..00000000
--- a/packages/react/src/link/demo/underline.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Underline
-
-By default, there is an underline style when hovering a link, but it can be removed.
-
-```jsx live
-<>
- This is a link with underline style.
-
- This is a link without underline style.
->
-```
-
-
diff --git a/packages/react/src/link/index.md b/packages/react/src/link/index.md
index 323afac0..e295a911 100644
--- a/packages/react/src/link/index.md
+++ b/packages/react/src/link/index.md
@@ -1,14 +1,18 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Underline from './demo/underline.md'
-import External from './demo/external.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import UnderlineDemo from './demo/Underline';
+import UnderlineSource from './demo/Underline.tsx?raw';
+import ExternalDemo from './demo/External';
+import ExternalSource from './demo/External.tsx?raw';
# Link
## Scenario
Display a hyperlink. This component is styled to resemble a hyperlink and semantically renders an ``.
-
+
## Usage
```jsx
@@ -19,12 +23,44 @@ import { Link } from 'tiny-design';
-
-
+
+
+### Basic
+
+A simple usage.
+
+
+
+
+
+
+### Underline
+
+By default, there is an underline style when hovering a link, but it can be removed.
+
+
+
+
-
-
+
+
+### Disabled
+
+Disabled state of link.
+
+
+
+
+
+
+### External
+
+It will open a new window when clicking the link by default. Set `external={false}` to open the link in the current window.
+
+
+
+
@@ -38,4 +74,4 @@ import { Link } from 'tiny-design';
| underline | determine whether display a underline style when hovering on the label | boolean | true |
| external | determine whether open a new window or not after clicking | boolean | true |
| style | style object of container object | | - |
-| className | className of container | string | - |
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/link/index.zh_CN.md b/packages/react/src/link/index.zh_CN.md
index cf08dbee..69580fca 100644
--- a/packages/react/src/link/index.zh_CN.md
+++ b/packages/react/src/link/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Underline from './demo/underline.md'
-import External from './demo/external.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import UnderlineDemo from './demo/Underline';
+import UnderlineSource from './demo/Underline.tsx?raw';
+import ExternalDemo from './demo/External';
+import ExternalSource from './demo/External.tsx?raw';
# Link
@@ -19,12 +23,44 @@ import { Link } from 'tiny-design';
-
-
+
+
+### 基础用法
+
+简单用法。
+
+
+
+
+
+
+### 下划线
+
+默认情况下,鼠标悬停时会有下划线样式,可以设置为不显示。
+
+
+
+
-
-
+
+
+### 禁用
+
+禁用状态。
+
+
+
+
+
+
+### 外链
+
+默认点击会在新窗口打开。设置 `external={false}` 可以在当前窗口打开。
+
+
+
+
@@ -38,4 +74,4 @@ import { Link } from 'tiny-design';
| underline | 鼠标悬停时是否显示下划线样式 | boolean | true |
| external | 点击后是否在新窗口中打开 | boolean | true |
| style | 容器的样式对象 | | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/list/demo/actions.md b/packages/react/src/list/demo/Actions.tsx
similarity index 90%
rename from packages/react/src/list/demo/actions.md
rename to packages/react/src/list/demo/Actions.tsx
index 02bb41ff..d465c463 100644
--- a/packages/react/src/list/demo/actions.md
+++ b/packages/react/src/list/demo/Actions.tsx
@@ -1,11 +1,8 @@
-
+import React from 'react';
+import { List } from '@tiny-design/react';
+import { IconStarFill } from '@tiny-design/icons';
-### Rich Items
-
-List items with avatars, multiple actions, and a timestamp on the right.
-
-```jsx live
-() => {
+export default function ActionsDemo() {
const colors = ['#6e41bf', '#1890ff', '#52c41a', '#fa8c16'];
const data = [
{ name: 'Sophie Chen', role: 'Lead Designer', msg: 'Updated the dashboard wireframes and shared with the team for review.', time: '2 min ago' },
@@ -22,7 +19,7 @@ List items with avatars, multiple actions, and a timestamp on the right.
Reply,
- ★ Star,
+ Star,
]}
extra={{item.time}}
>
@@ -44,7 +41,4 @@ List items with avatars, multiple actions, and a timestamp on the right.
)}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/list/demo/basic.md b/packages/react/src/list/demo/Basic.tsx
similarity index 89%
rename from packages/react/src/list/demo/basic.md
rename to packages/react/src/list/demo/Basic.tsx
index 547d64e8..f1fe5100 100644
--- a/packages/react/src/list/demo/basic.md
+++ b/packages/react/src/list/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { List } from '@tiny-design/react';
-### Basic
-
-A simple bordered list with header, footer, and meta layout.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const data = [
{ name: 'React', desc: 'A JavaScript library for building user interfaces', url: 'https://react.dev' },
{ name: 'TypeScript', desc: 'Typed superset of JavaScript that compiles to plain JS', url: 'https://typescriptlang.org' },
@@ -29,7 +25,4 @@ A simple bordered list with header, footer, and meta layout.
)}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/list/demo/grid.md b/packages/react/src/list/demo/Grid.tsx
similarity index 90%
rename from packages/react/src/list/demo/grid.md
rename to packages/react/src/list/demo/Grid.tsx
index 389411d5..093001ae 100644
--- a/packages/react/src/list/demo/grid.md
+++ b/packages/react/src/list/demo/Grid.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { List } from '@tiny-design/react';
-### Grid
-
-Render items in a responsive card grid — great for showcasing products, projects, or team members.
-
-```jsx live
-() => {
+export default function GridDemo() {
const data = [
{ emoji: '🚀', title: 'Launch Week', desc: 'Ship new features and gather feedback from early adopters.', tag: 'In Progress', tagColor: '#6e41bf' },
{ emoji: '🎨', title: 'Design System', desc: 'Build a cohesive set of tokens, components, and patterns.', tag: 'Planning', tagColor: '#1890ff' },
@@ -21,7 +17,7 @@ Render items in a responsive card grid — great for showcasing products, projec
border: '1px solid #e9ecef',
background: '#fff',
height: '100%',
- boxSizing: 'border-box',
+ boxSizing: 'border-box' as const,
};
return (
@@ -44,7 +40,4 @@ Render items in a responsive card grid — great for showcasing products, projec
)}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/list/demo/loading.md b/packages/react/src/list/demo/Loading.tsx
similarity index 89%
rename from packages/react/src/list/demo/loading.md
rename to packages/react/src/list/demo/Loading.tsx
index 16ece832..99b809f9 100644
--- a/packages/react/src/list/demo/loading.md
+++ b/packages/react/src/list/demo/Loading.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { List, Switch } from '@tiny-design/react';
-### Loading
-
-Show a loading indicator while data is being fetched.
-
-```jsx live
-() => {
+export default function LoadingDemo() {
const [loading, setLoading] = React.useState(true);
const data = [
@@ -37,7 +33,4 @@ Show a loading indicator while data is being fetched.
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/list/demo/pagination.md b/packages/react/src/list/demo/Pagination.tsx
similarity index 70%
rename from packages/react/src/list/demo/pagination.md
rename to packages/react/src/list/demo/Pagination.tsx
index f57a2d29..9233fa9a 100644
--- a/packages/react/src/list/demo/pagination.md
+++ b/packages/react/src/list/demo/Pagination.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { List } from '@tiny-design/react';
-### Pagination
-
-Use `pagination` to add a pager to the list.
-
-```jsx live
-() => {
+export default function PaginationDemo() {
const data = Array.from({ length: 25 }, (_, i) => `Item ${i + 1}`);
return (
@@ -17,7 +13,4 @@ Use `pagination` to add a pager to the list.
renderItem={(item) => {item}}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/list/demo/sizes.md b/packages/react/src/list/demo/Sizes.tsx
similarity index 88%
rename from packages/react/src/list/demo/sizes.md
rename to packages/react/src/list/demo/Sizes.tsx
index 7fd480a2..b654298a 100644
--- a/packages/react/src/list/demo/sizes.md
+++ b/packages/react/src/list/demo/Sizes.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { List, Segmented } from '@tiny-design/react';
-### Sizes
-
-Toggle between `sm`, `md`, and `lg` to adjust item density.
-
-```jsx live
-() => {
+export default function SizesDemo() {
const [size, setSize] = React.useState('md');
const data = [
@@ -38,7 +34,4 @@ Toggle between `sm`, `md`, and `lg` to adjust item density.
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/list/demo/virtual.md b/packages/react/src/list/demo/Virtual.tsx
similarity index 66%
rename from packages/react/src/list/demo/virtual.md
rename to packages/react/src/list/demo/Virtual.tsx
index 92295210..fb519b3c 100644
--- a/packages/react/src/list/demo/virtual.md
+++ b/packages/react/src/list/demo/Virtual.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { List } from '@tiny-design/react';
-### Virtual Scroll
-
-Render large lists efficiently with virtual scrolling. Only visible items are rendered to the DOM. Set `itemHeight` to match the actual rendered height of each item for smooth scrolling.
-
-```jsx live
-() => {
+export default function VirtualDemo() {
const data = Array.from({ length: 10000 }, (_, i) => ({
id: i,
title: `Item ${i + 1}`,
@@ -30,7 +26,4 @@ Render large lists efficiently with virtual scrolling. Only visible items are re
)}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/list/index.md b/packages/react/src/list/index.md
index 09d6c6f6..0bcaaa64 100644
--- a/packages/react/src/list/index.md
+++ b/packages/react/src/list/index.md
@@ -1,10 +1,17 @@
-import Basic from './demo/basic.md'
-import Sizes from './demo/sizes.md'
-import Actions from './demo/actions.md'
-import Grid from './demo/grid.md'
-import Loading from './demo/loading.md'
-import Pagination from './demo/pagination.md'
-import Virtual from './demo/virtual.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ActionsDemo from './demo/Actions';
+import ActionsSource from './demo/Actions.tsx?raw';
+import GridDemo from './demo/Grid';
+import GridSource from './demo/Grid.tsx?raw';
+import SizesDemo from './demo/Sizes';
+import SizesSource from './demo/Sizes.tsx?raw';
+import LoadingDemo from './demo/Loading';
+import LoadingSource from './demo/Loading.tsx?raw';
+import PaginationDemo from './demo/Pagination';
+import PaginationSource from './demo/Pagination.tsx?raw';
+import VirtualDemo from './demo/Virtual';
+import VirtualSource from './demo/Virtual.tsx?raw';
# List
@@ -24,15 +31,71 @@ import { List } from 'tiny-design';
-
-
-
+
+
+### Basic
+
+A simple bordered list with header, footer, and meta layout.
+
+
+
+
+
+
+### Rich Items
+
+List items with avatars, multiple actions, and a timestamp on the right.
+
+
+
+
+
+
+### Grid
+
+Render items in a responsive card grid — great for showcasing products, projects, or team members.
+
+
+
+
-
-
-
-
+
+
+### Sizes
+
+Toggle between `sm`, `md`, and `lg` to adjust item density.
+
+
+
+
+
+
+### Loading
+
+Show a loading indicator while data is being fetched.
+
+
+
+
+
+
+### Pagination
+
+Use `pagination` to add a pager to the list.
+
+
+
+
+
+
+### Virtual Scroll
+
+Render large lists efficiently with virtual scrolling. Only visible items are rendered to the DOM. Set `itemHeight` to match the actual rendered height of each item for smooth scrolling.
+
+
+
+
@@ -69,4 +132,4 @@ import { List } from 'tiny-design';
| ----------- | ----------------- | --------- | ------- |
| avatar | avatar element | ReactNode | |
| title | item title | ReactNode | |
-| description | item description | ReactNode | |
+| description | item description | ReactNode | |
\ No newline at end of file
diff --git a/packages/react/src/list/index.zh_CN.md b/packages/react/src/list/index.zh_CN.md
index f83860ba..caf9696f 100644
--- a/packages/react/src/list/index.zh_CN.md
+++ b/packages/react/src/list/index.zh_CN.md
@@ -1,8 +1,17 @@
-import Basic from './demo/basic.md'
-import Sizes from './demo/sizes.md'
-import Actions from './demo/actions.md'
-import Grid from './demo/grid.md'
-import Loading from './demo/loading.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ActionsDemo from './demo/Actions';
+import ActionsSource from './demo/Actions.tsx?raw';
+import GridDemo from './demo/Grid';
+import GridSource from './demo/Grid.tsx?raw';
+import SizesDemo from './demo/Sizes';
+import SizesSource from './demo/Sizes.tsx?raw';
+import LoadingDemo from './demo/Loading';
+import LoadingSource from './demo/Loading.tsx?raw';
+import PaginationDemo from './demo/Pagination';
+import PaginationSource from './demo/Pagination.tsx?raw';
+import VirtualDemo from './demo/Virtual';
+import VirtualSource from './demo/Virtual.tsx?raw';
# List 列表
@@ -22,13 +31,71 @@ import { List } from 'tiny-design';
-
-
-
+
+
+### 基础列表
+
+简单的带边框列表,包含头部、底部和元数据布局。
+
+
+
+
+
+
+### 丰富列表项
+
+包含头像、多个操作和右侧时间戳的列表项。
+
+
+
+
+
+
+### 网格布局
+
+以响应式卡片网格渲染列表项,非常适合展示产品、项目或团队成员。
+
+
+
+
-
-
+
+
+### 尺寸
+
+在 `sm`、`md` 和 `lg` 之间切换以调整列表项密度。
+
+
+
+
+
+
+### 加载中
+
+在数据获取时显示加载指示器。
+
+
+
+
+
+
+### 分页
+
+使用 `pagination` 属性为列表添加分页器。
+
+
+
+
+
+
+### 虚拟滚动
+
+使用虚拟滚动高效渲染大型列表。只渲染可见的项目到 DOM 中。设置 `itemHeight` 以匹配每个项目的实际渲染高度,以实现平滑滚动。
+
+
+
+
@@ -48,6 +115,9 @@ import { List } from 'tiny-design';
| size | 列表尺寸 | 'sm' \| 'md' \| 'lg' | md |
| grid | 网格布局配置 | \{ gutter?: number, column?: number \} | |
| pagination | 分页配置 | false \| ListPaginationProps | |
+| virtual | 启用虚拟滚动 | boolean | false |
+| height | 容器高度(虚拟滚动时必需) | number | |
+| itemHeight | 每个列表项的高度(虚拟滚动模式) | number | |
### List.Item
@@ -62,4 +132,4 @@ import { List } from 'tiny-design';
| ----------- | -------- | --------- | ------- |
| avatar | 头像 | ReactNode | |
| title | 标题 | ReactNode | |
-| description | 描述 | ReactNode | |
+| description | 描述 | ReactNode | |
\ No newline at end of file
diff --git a/packages/react/src/loader/demo/Basic.tsx b/packages/react/src/loader/demo/Basic.tsx
new file mode 100644
index 00000000..45f11a22
--- /dev/null
+++ b/packages/react/src/loader/demo/Basic.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Loader } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/loader/demo/Blur.tsx b/packages/react/src/loader/demo/Blur.tsx
new file mode 100644
index 00000000..a9c7a658
--- /dev/null
+++ b/packages/react/src/loader/demo/Blur.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+import { Loader, Alert, Switch } from '@tiny-design/react';
+
+export default function BlurDemo() {
+ const [blurred, setBlurred] = React.useState(true);
+
+ return (
+ <>
+
+
+ Further details about the context of this alert.
+
+
+
+ Blurred state:
+ setBlurred(val)} />
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/loader/demo/container.md b/packages/react/src/loader/demo/Container.tsx
old mode 100755
new mode 100644
similarity index 69%
rename from packages/react/src/loader/demo/container.md
rename to packages/react/src/loader/demo/Container.tsx
index f80e9ce4..04243000
--- a/packages/react/src/loader/demo/container.md
+++ b/packages/react/src/loader/demo/Container.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Loader } from '@tiny-design/react';
-### Inside a container
-
-A Loader in a container.
-
-```jsx live
-() => {
+export default function ContainerDemo() {
const style = {
textAlign: 'center',
background: 'rgba(0, 0, 0, 0.05)',
@@ -14,13 +10,10 @@ A Loader in a container.
padding: '30px 50px',
margin: '20px 0',
};
-
+
return (
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/loader/demo/Indicator.tsx b/packages/react/src/loader/demo/Indicator.tsx
new file mode 100644
index 00000000..76e7d2d3
--- /dev/null
+++ b/packages/react/src/loader/demo/Indicator.tsx
@@ -0,0 +1,8 @@
+import React from 'react';
+import { Loader, withSpin } from '@tiny-design/react';
+import { IconSync } from '@tiny-design/icons';
+
+export default function IndicatorDemo() {
+ const SpinningSync = withSpin(IconSync);
+ return } />;
+}
\ No newline at end of file
diff --git a/packages/react/src/loader/demo/Size.tsx b/packages/react/src/loader/demo/Size.tsx
new file mode 100644
index 00000000..c27ccf87
--- /dev/null
+++ b/packages/react/src/loader/demo/Size.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Loader } from '@tiny-design/react';
+
+export default function SizeDemo() {
+ return (
+ <>
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/loader/demo/State.tsx b/packages/react/src/loader/demo/State.tsx
new file mode 100644
index 00000000..9ad10a9e
--- /dev/null
+++ b/packages/react/src/loader/demo/State.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+import { Loader, Alert, Switch } from '@tiny-design/react';
+
+export default function StateDemo() {
+ const [loading, setLoading] = React.useState(false);
+
+ return (
+ <>
+
+
+ Further details about the context of this alert.
+
+
+
+ Loading state:
+ setLoading(val)} />
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/loader/demo/Tips.tsx b/packages/react/src/loader/demo/Tips.tsx
new file mode 100644
index 00000000..1c1130f8
--- /dev/null
+++ b/packages/react/src/loader/demo/Tips.tsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import { Loader, Alert } from '@tiny-design/react';
+
+export default function TipsDemo() {
+ return (
+ <>
+
+
+ Further details about the context of this alert.
+
+
+
+
+
+
+ Further details about the context of this alert.
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/loader/demo/basic.md b/packages/react/src/loader/demo/basic.md
deleted file mode 100755
index 52c33393..00000000
--- a/packages/react/src/loader/demo/basic.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Basic
-
-A simple loading status.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/loader/demo/blur.md b/packages/react/src/loader/demo/blur.md
deleted file mode 100755
index 834b2b91..00000000
--- a/packages/react/src/loader/demo/blur.md
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-### Blur the container
-
-Use `blurred` to control the container overlay.
-
-```jsx live
-() => {
- const Wrapper = () => {
- const [blurred, setBlurred] = React.useState(true);
-
- return (
- <>
-
-
- Further details about the context of this alert.
-
-
-
- Blurred state:
- setBlurred(val)} />
-
- >
- );
- };
-
- return (
-
- );
-}
-```
-
-
diff --git a/packages/react/src/loader/demo/indicator.md b/packages/react/src/loader/demo/indicator.md
deleted file mode 100755
index ad336665..00000000
--- a/packages/react/src/loader/demo/indicator.md
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-### Custom spinning indicator
-
-Use custom loading indicator.
-
-```jsx live
-() => {
- const SpinningSync = withSpin(IconSync);
- return }/>;
-}
-```
-
-
diff --git a/packages/react/src/loader/demo/size.md b/packages/react/src/loader/demo/size.md
deleted file mode 100755
index 0d65d5d8..00000000
--- a/packages/react/src/loader/demo/size.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Size
-
-There are three different sizes of the loader.
-
-```jsx live
-<>
-
-
-
->
-```
-
-
diff --git a/packages/react/src/loader/demo/state.md b/packages/react/src/loader/demo/state.md
deleted file mode 100755
index 5193e7bd..00000000
--- a/packages/react/src/loader/demo/state.md
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-### Loading state
-
-Control the loading state.
-
-```jsx live
-() => {
- const Wrapper = () => {
- const [loading, setLoading] = React.useState(false);
-
- return (
- <>
-
-
- Further details about the context of this alert.
-
-
-
- Loading state:
- setLoading(val)} />
-
- >
- );
- };
-
- return (
-
- );
-}
-```
-
-
diff --git a/packages/react/src/loader/demo/tips.md b/packages/react/src/loader/demo/tips.md
deleted file mode 100755
index 3966e5da..00000000
--- a/packages/react/src/loader/demo/tips.md
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-### Customized description
-
-Customized description content.
-
-```jsx live
-<>
-
-
- Further details about the context of this alert.
-
-
-
-
-
-
- Further details about the context of this alert.
-
-
->
-```
-
-
diff --git a/packages/react/src/loader/index.md b/packages/react/src/loader/index.md
index 552fad70..e6fb9eae 100755
--- a/packages/react/src/loader/index.md
+++ b/packages/react/src/loader/index.md
@@ -1,10 +1,17 @@
-import Basic from './demo/basic.md'
-import Blur from './demo/blur.md'
-import Container from './demo/container.md'
-import Indicator from './demo/indicator.md'
-import Size from './demo/size.md'
-import State from './demo/state.md'
-import Tips from './demo/tips.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import BlurDemo from './demo/Blur';
+import BlurSource from './demo/Blur.tsx?raw';
+import ContainerDemo from './demo/Container';
+import ContainerSource from './demo/Container.tsx?raw';
+import IndicatorDemo from './demo/Indicator';
+import IndicatorSource from './demo/Indicator.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import StateDemo from './demo/State';
+import StateSource from './demo/State.tsx?raw';
+import TipsDemo from './demo/Tips';
+import TipsSource from './demo/Tips.tsx?raw';
# Loader
@@ -24,15 +31,71 @@ import { Loader } from 'tiny-design';
-
-
-
-
+
+
+### Basic
+
+A simple loading status.
+
+
+
+
+
+
+### Inside a container
+
+A Loader in a container.
+
+
+
+
+
+
+### Customized description
+
+Customized description content.
+
+
+
+
+
+
+### Custom spinning indicator
+
+Use custom loading indicator.
+
+
+
+
-
-
-
+
+
+### Size
+
+There are three different sizes of the loader.
+
+
+
+
+
+
+### Loading state
+
+Control the loading state.
+
+
+
+
+
+
+### Blur the container
+
+Use `blurred` to control the container overlay.
+
+
+
+
@@ -46,4 +109,3 @@ import { Loader } from 'tiny-design';
| tip | customize description content when Spin has children | string | - |
| vertical | vertical the content | boolean | false |
| blurred | determine whether blur the loading background | boolean | false |
-
diff --git a/packages/react/src/loader/index.zh_CN.md b/packages/react/src/loader/index.zh_CN.md
index 8fb0e353..5ae4e761 100644
--- a/packages/react/src/loader/index.zh_CN.md
+++ b/packages/react/src/loader/index.zh_CN.md
@@ -1,10 +1,17 @@
-import Basic from './demo/basic.md'
-import Blur from './demo/blur.md'
-import Container from './demo/container.md'
-import Indicator from './demo/indicator.md'
-import Size from './demo/size.md'
-import State from './demo/state.md'
-import Tips from './demo/tips.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import BlurDemo from './demo/Blur';
+import BlurSource from './demo/Blur.tsx?raw';
+import ContainerDemo from './demo/Container';
+import ContainerSource from './demo/Container.tsx?raw';
+import IndicatorDemo from './demo/Indicator';
+import IndicatorSource from './demo/Indicator.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import StateDemo from './demo/State';
+import StateSource from './demo/State.tsx?raw';
+import TipsDemo from './demo/Tips';
+import TipsSource from './demo/Tips.tsx?raw';
# Loader
@@ -24,15 +31,71 @@ import { Loader } from 'tiny-design';
-
-
-
-
+
+
+### 基本
+
+简单的加载状态。
+
+
+
+
+
+
+### 容器内
+
+容器内的加载器。
+
+
+
+
+
+
+### 自定义描述文字
+
+自定义描述内容。
+
+
+
+
+
+
+### 自定义指示符
+
+使用自定义的加载指示符。
+
+
+
+
-
-
-
+
+
+### 尺寸
+
+三种不同尺寸的加载器。
+
+
+
+
+
+
+### 加载状态
+
+控制加载状态。
+
+
+
+
+
+
+### 模糊容器
+
+使用 `blurred` 属性控制容器遮罩层。
+
+
+
+
diff --git a/packages/react/src/loading-bar/demo/Basic.tsx b/packages/react/src/loading-bar/demo/Basic.tsx
new file mode 100644
index 00000000..7a054777
--- /dev/null
+++ b/packages/react/src/loading-bar/demo/Basic.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Button, LoadingBar } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+ <>
+ LoadingBar.start()}>Start
+ LoadingBar.succeed()} btnType="success">Success
+ LoadingBar.fail()} btnType="danger">Fail
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/loading-bar/demo/basic.md b/packages/react/src/loading-bar/demo/basic.md
deleted file mode 100755
index 79a987df..00000000
--- a/packages/react/src/loading-bar/demo/basic.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-### Basic
-
-```jsx live
-<>
- LoadingBar.start()}>Start
- LoadingBar.succeed()} btnType="success">Success
- LoadingBar.fail()} btnType="danger">Fail
->
-```
-
-
diff --git a/packages/react/src/loading-bar/index.md b/packages/react/src/loading-bar/index.md
index a441415e..ca71b5e0 100755
--- a/packages/react/src/loading-bar/index.md
+++ b/packages/react/src/loading-bar/index.md
@@ -1,4 +1,5 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
# Loading Bar
@@ -22,7 +23,13 @@ LoadingBar.fail();
-
+
+
+### Basic
+
+
+
+
diff --git a/packages/react/src/loading-bar/index.zh_CN.md b/packages/react/src/loading-bar/index.zh_CN.md
index 9c4c5b62..0ec0d856 100644
--- a/packages/react/src/loading-bar/index.zh_CN.md
+++ b/packages/react/src/loading-bar/index.zh_CN.md
@@ -1,4 +1,5 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
# Loading Bar
@@ -22,7 +23,13 @@ LoadingBar.fail();
-
+
+
+### 基本用法
+
+
+
+
diff --git a/packages/react/src/menu/demo/Horizontal.tsx b/packages/react/src/menu/demo/Horizontal.tsx
new file mode 100644
index 00000000..505665fb
--- /dev/null
+++ b/packages/react/src/menu/demo/Horizontal.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Menu } from '@tiny-design/react';
+
+export default function HorizontalDemo() {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/menu/demo/Inline.tsx b/packages/react/src/menu/demo/Inline.tsx
new file mode 100644
index 00000000..2fe6a3ad
--- /dev/null
+++ b/packages/react/src/menu/demo/Inline.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Menu } from '@tiny-design/react';
+
+export default function InlineDemo() {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/menu/demo/Vertical.tsx b/packages/react/src/menu/demo/Vertical.tsx
new file mode 100644
index 00000000..8a2911f0
--- /dev/null
+++ b/packages/react/src/menu/demo/Vertical.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Menu } from '@tiny-design/react';
+
+export default function VerticalDemo() {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/menu/demo/horizontal.md b/packages/react/src/menu/demo/horizontal.md
deleted file mode 100644
index 9ea9361b..00000000
--- a/packages/react/src/menu/demo/horizontal.md
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-### Top Navigation
-
-Horizontal top navigation menu.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/menu/demo/inline.md b/packages/react/src/menu/demo/inline.md
deleted file mode 100644
index 9c2d6674..00000000
--- a/packages/react/src/menu/demo/inline.md
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-### Inline Navigation
-
-Inline navigation menu.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/menu/demo/vertical.md b/packages/react/src/menu/demo/vertical.md
deleted file mode 100644
index 99fddb3b..00000000
--- a/packages/react/src/menu/demo/vertical.md
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-### Vertical Navigation
-
-A vertical menu with inline submenus.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/menu/index.md b/packages/react/src/menu/index.md
index b3245d04..465efaaa 100644
--- a/packages/react/src/menu/index.md
+++ b/packages/react/src/menu/index.md
@@ -1,6 +1,9 @@
-import Horizontal from './demo/horizontal.md';
-import Vertical from './demo/vertical.md';
-import Inline from './demo/inline.md';
+import HorizontalDemo from './demo/Horizontal';
+import HorizontalSource from './demo/Horizontal.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import InlineDemo from './demo/Inline';
+import InlineSource from './demo/Inline.tsx?raw';
# Menu
@@ -20,9 +23,33 @@ const { Item, SubMenu, ItemGroup, Divider } = Menu;
## Examples
-
-
-
+
+
+### Top Navigation
+
+Horizontal top navigation menu.
+
+
+
+
+
+
+### Vertical Navigation
+
+A vertical menu with inline submenus.
+
+
+
+
+
+
+### Inline Navigation
+
+Inline navigation menu.
+
+
+
+
## API
diff --git a/packages/react/src/menu/index.zh_CN.md b/packages/react/src/menu/index.zh_CN.md
index d86f18dd..d0bbb791 100644
--- a/packages/react/src/menu/index.zh_CN.md
+++ b/packages/react/src/menu/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Horizontal from './demo/horizontal.md';
-import Vertical from './demo/vertical.md';
-import Inline from './demo/inline.md';
+import HorizontalDemo from './demo/Horizontal';
+import HorizontalSource from './demo/Horizontal.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import InlineDemo from './demo/Inline';
+import InlineSource from './demo/Inline.tsx?raw';
# Menu
@@ -20,9 +23,33 @@ const { Item, SubMenu, ItemGroup, Divider } = Menu;
## 代码示例
-
-
-
+
+
+### 顶部导航
+
+水平顶部导航菜单。
+
+
+
+
+
+
+### 垂直导航
+
+垂直菜单,内联子菜单。
+
+
+
+
+
+
+### 内联导航
+
+内联导航菜单。
+
+
+
+
## API
diff --git a/packages/react/src/message/demo/basic.md b/packages/react/src/message/demo/Basic.tsx
old mode 100755
new mode 100644
similarity index 58%
rename from packages/react/src/message/demo/basic.md
rename to packages/react/src/message/demo/Basic.tsx
index 22189d1c..0ebb86d1
--- a/packages/react/src/message/demo/basic.md
+++ b/packages/react/src/message/demo/Basic.tsx
@@ -1,19 +1,12 @@
-
+import React from 'react';
+import { Button, Message } from '@tiny-design/react';
-### Normal prompt
-
-Normal message for information.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const onClick = () => {
Message('Normal message for information.');
};
-
+
return (
Normal message
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/message/demo/duration.md b/packages/react/src/message/demo/Duration.tsx
old mode 100755
new mode 100644
similarity index 61%
rename from packages/react/src/message/demo/duration.md
rename to packages/react/src/message/demo/Duration.tsx
index 1fb6b13f..9f7c7371
--- a/packages/react/src/message/demo/duration.md
+++ b/packages/react/src/message/demo/Duration.tsx
@@ -1,19 +1,12 @@
-
+import React from 'react';
+import { Button, Message } from '@tiny-design/react';
-### Customize duration
-
-Customize message display duration from default `3s` to `10s`.
-
-```jsx live
-() => {
+export default function DurationDemo() {
const onClick = () => {
Message('This is a prompt message for success, and it will disappear in 10 seconds', 10000);
};
-
+
return (
Customized display duration
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/message/demo/extra.md b/packages/react/src/message/demo/Extra.tsx
old mode 100755
new mode 100644
similarity index 71%
rename from packages/react/src/message/demo/extra.md
rename to packages/react/src/message/demo/Extra.tsx
index 8a2acdb3..c14fc620
--- a/packages/react/src/message/demo/extra.md
+++ b/packages/react/src/message/demo/Extra.tsx
@@ -1,15 +1,11 @@
-
+import React from 'react';
+import { Button, Message } from '@tiny-design/react';
-### Extra action
-
-Add an extra content to allow more action.
-
-```jsx live
-() => {
+export default function ExtraDemo() {
const onClick = () => {
Message.loading('Deleting...', 3000, null, {
extra: (
- Message.success('Undo successful')}>
Undo
@@ -17,11 +13,8 @@ Add an extra content to allow more action.
)
});
};
-
+
return (
Delete
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/message/demo/type.md b/packages/react/src/message/demo/Type.tsx
old mode 100755
new mode 100644
similarity index 73%
rename from packages/react/src/message/demo/type.md
rename to packages/react/src/message/demo/Type.tsx
index bb3932ec..ea9c5163
--- a/packages/react/src/message/demo/type.md
+++ b/packages/react/src/message/demo/Type.tsx
@@ -1,15 +1,11 @@
-
+import React from 'react';
+import { Button, Flex, Message } from '@tiny-design/react';
-### Different types of message
-
-Messages of `info`, `success`, `warning`, `error` and `loading` types.
-
-```jsx live
-() => {
- const onClick = (type) => {
+export default function TypeDemo() {
+ const onClick = (type: string) => {
Message[type](`A ${type} type message.`);
};
-
+
return (
onClick('info')}>Info
@@ -19,7 +15,4 @@ Messages of `info`, `success`, `warning`, `error` and `loading` types.
onClick('loading')}>Loading
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/message/index.md b/packages/react/src/message/index.md
index 04eaa599..a1081101 100755
--- a/packages/react/src/message/index.md
+++ b/packages/react/src/message/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Duration from './demo/duration.md'
-import Extra from './demo/extra.md'
-import Type from './demo/type.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DurationDemo from './demo/Duration';
+import DurationSource from './demo/Duration.tsx?raw';
+import ExtraDemo from './demo/Extra';
+import ExtraSource from './demo/Extra.tsx?raw';
+import TypeDemo from './demo/Type';
+import TypeSource from './demo/Type.tsx?raw';
# Message
@@ -23,12 +27,44 @@ import { Message } from 'tiny-design';
-
-
+
+
+### Normal prompt
+
+Normal message for information.
+
+
+
+
+
+
+### Customize duration
+
+Customize message display duration from default `3s` to `10s`.
+
+
+
+
-
-
+
+
+### Different types of message
+
+Messages of `info`, `success`, `warning`, `error` and `loading` types.
+
+
+
+
+
+
+### Extra action
+
+Add an extra content to allow more action.
+
+
+
+
@@ -51,4 +87,4 @@ Message is called through static methods:
| content | content of the message | string | - |
| duration | time before auto-dismiss in seconds | number | 3 |
| icon | customised icon | ReactNode | - |
-| extra | extra content after the message | ReactNode | - |
+| extra | extra content after the message | ReactNode | - |
\ No newline at end of file
diff --git a/packages/react/src/message/index.zh_CN.md b/packages/react/src/message/index.zh_CN.md
index 74884ed4..3ea9b8a8 100644
--- a/packages/react/src/message/index.zh_CN.md
+++ b/packages/react/src/message/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Duration from './demo/duration.md'
-import Extra from './demo/extra.md'
-import Type from './demo/type.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DurationDemo from './demo/Duration';
+import DurationSource from './demo/Duration.tsx?raw';
+import ExtraDemo from './demo/Extra';
+import ExtraSource from './demo/Extra.tsx?raw';
+import TypeDemo from './demo/Type';
+import TypeSource from './demo/Type.tsx?raw';
# Message
@@ -23,12 +27,44 @@ import { Message } from 'tiny-design';
-
-
+
+
+### 正常消息
+
+用于显示提示信息。
+
+
+
+
+
+
+### 自定义时长
+
+自定义消息显示时长,从默认的 `3s` 改为 `10s`。
+
+
+
+
-
-
+
+
+### 不同类型
+
+包括 `info`、`success`、`warning`、`error` 和 `loading` 五种类型。
+
+
+
+
+
+
+### 额外操作
+
+在消息后面添加额外操作。
+
+
+
+
@@ -51,4 +87,4 @@ Message 通过静态方法调用:
| content | 消息内容 | string | - |
| duration | 自动关闭的延时,单位为秒 | number | 3 |
| icon | 自定义图标 | ReactNode | - |
-| extra | 消息后的附加内容 | ReactNode | - |
+| extra | 消息后的附加内容 | ReactNode | - |
\ No newline at end of file
diff --git a/packages/react/src/modal/demo/Animation.tsx b/packages/react/src/modal/demo/Animation.tsx
new file mode 100644
index 00000000..2968ebaa
--- /dev/null
+++ b/packages/react/src/modal/demo/Animation.tsx
@@ -0,0 +1,37 @@
+import React, { useState } from 'react';
+import { Modal, Button, Flex } from '@tiny-design/react';
+
+export default function AnimationDemo() {
+ const [visible1, setVisible1] = useState(false);
+ const [visible2, setVisible2] = useState(false);
+
+ return (
+
+ setVisible1(true)}>
+ Default Slide up and down
+
+ setVisible2(true)}>
+ Scale animation
+
+ {}}
+ onCancel={() => setVisible1(false)}>
+
Some contents...
+
Some contents...
+
Some contents...
+
+ {}}
+ onCancel={() => setVisible2(false)}>
+
Some contents...
+
Some contents...
+
Some contents...
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/modal/demo/Basic.tsx b/packages/react/src/modal/demo/Basic.tsx
new file mode 100644
index 00000000..a27d1073
--- /dev/null
+++ b/packages/react/src/modal/demo/Basic.tsx
@@ -0,0 +1,21 @@
+import React, { useState } from 'react';
+import { Modal, Button } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ const [visible, setVisible] = useState(false);
+
+ return (
+ <>
+ setVisible(true)}>Open Modal
+ {}}
+ onCancel={() => setVisible(false)}>
+
Some contents...
+
Some contents...
+
Some contents...
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/modal/demo/Context.tsx b/packages/react/src/modal/demo/Context.tsx
new file mode 100644
index 00000000..5943cdb6
--- /dev/null
+++ b/packages/react/src/modal/demo/Context.tsx
@@ -0,0 +1,41 @@
+import React from 'react';
+import { Modal, Button, Space } from '@tiny-design/react';
+
+function ConfirmModal() {
+ const { visible, close } = Modal.useModal('confirm');
+ return (
+
+
-
- );
- };
-
- const Toolbar = () => {
- const confirm = Modal.useModal('confirm');
- const settings = Modal.useModal('settings');
- return (
-
- Open Confirm
- Open Settings
-
- );
- };
-
- return (
-
-
-
-
-
- );
-}
-```
-
-
diff --git a/packages/react/src/modal/demo/customised-footer.md b/packages/react/src/modal/demo/customised-footer.md
deleted file mode 100755
index 33bdd68b..00000000
--- a/packages/react/src/modal/demo/customised-footer.md
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-### Customized Footer
-
-A more complex example which define a customized footer button bar, the dialog will change to loading state after clicking submit button, when the loading is over, the modal dialog will be closed.
-Set `footer={null}` if you don't need default footer buttons.
-
-
-```jsx live
-() => {
- const Wrapper = () => {
- const [visible, setVisible] = React.useState(false);
- const [loading, setLoading] = React.useState(false);
-
- const _handleConfirm = () => {
- setLoading(true);
- setTimeout(() => {
- setLoading(false);
- setVisible(false);
- }, 3000);
- };
-
- return (
- <>
- setVisible(true)}>Open Modal
- setVisible(false)}
- confirmText="Submit"
- cancelText="Reture"
- confirmLoading={loading}>
-
Some contents...
-
Some contents...
-
Some contents...
-
- >
- );
- };
-
- return ;
-}
-```
-
-
diff --git a/packages/react/src/modal/demo/position.md b/packages/react/src/modal/demo/position.md
deleted file mode 100755
index 4b97e0a2..00000000
--- a/packages/react/src/modal/demo/position.md
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-### To customize the position of modal
-
-Use `centered` or `top` or other styles to set position of modal dialog.
-
-```jsx live
-() => {
- const Wrapper = () => {
- const [visible1, setVisible1] = React.useState(false);
- const [visible2, setVisible2] = React.useState(false);
-
- return (
- <>
- setVisible1(true)}>
- Display a modal dialog at 20px to the top
-
-
-
- setVisible2(true)}>
- Vertically centered modal dialog
-
- {}}
- onCancel={() => setVisible1(false)}>
-
Some contents...
-
Some contents...
-
Some contents...
-
- {}}
- onCancel={() => setVisible2(false)}>
-
Some contents...
-
Some contents...
-
Some contents...
-
- >
- );
- };
-
- return ;
-}
-```
-
-
diff --git a/packages/react/src/modal/index.md b/packages/react/src/modal/index.md
index 05d51c24..37b393a0 100755
--- a/packages/react/src/modal/index.md
+++ b/packages/react/src/modal/index.md
@@ -1,8 +1,13 @@
-import Animation from './demo/animation.md'
-import Basic from './demo/basic.md'
-import Context from './demo/context.md'
-import CustomisedFooter from './demo/customised-footer.md'
-import Position from './demo/position.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomisedFooterDemo from './demo/CustomisedFooter';
+import CustomisedFooterSource from './demo/CustomisedFooter.tsx?raw';
+import PositionDemo from './demo/Position';
+import PositionSource from './demo/Position.tsx?raw';
+import AnimationDemo from './demo/Animation';
+import AnimationSource from './demo/Animation.tsx?raw';
+import ContextDemo from './demo/Context';
+import ContextSource from './demo/Context.tsx?raw';
# Modal
@@ -10,7 +15,7 @@ Modal dialogs.
## Scenario
-When requiring users to interact with the application, but without jumping to a new page and interrupting the user's workflow, you can use **Modal** to create a new floating layer over the current page to get user feedback or display information.
+When requiring users to interact with the application, but without jumping to a new page and interrupting the user's workflow, you can use **Modal** to create a new floating layer over the current page to get user feedback or display information.
## Usage
@@ -22,13 +27,54 @@ import { Modal } from 'tiny-design';
-
-
+
+
+### Basic
+
+Basic modal.
+
+
+
+
+
+
+### Customized Footer
+
+A more complex example which define a customized footer button bar, the dialog will change to loading state after clicking submit button, when the loading is over, the modal dialog will be closed.
+Set `footer={null}` if you don't need default footer buttons.
+
+
+
+
-
-
-
+
+
+### To customize the position of modal
+
+Use `centered` or `top` or other styles to set position of modal dialog.
+
+
+
+
+
+
+### Animation
+
+Use `animation` to set different popup animation.
+
+
+
+
+
+
+### Context
+
+Manage multiple modals by ID with `Modal.Provider` and `Modal.useModal`.
+
+
+
+
@@ -62,4 +108,4 @@ import { Modal } from 'tiny-design';
| footerStyle | inline style of the footer | CSSProperties | - |
| maskStyle | inline style of the mask | CSSProperties | - |
| style | style object of container | CSSProperties | - |
-| className | className of container | string | - |
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/modal/index.zh_CN.md b/packages/react/src/modal/index.zh_CN.md
index f2153e31..c1763aa1 100644
--- a/packages/react/src/modal/index.zh_CN.md
+++ b/packages/react/src/modal/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Animation from './demo/animation.md'
-import Basic from './demo/basic.md'
-import CustomisedFooter from './demo/customised-footer.md'
-import Position from './demo/position.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomisedFooterDemo from './demo/CustomisedFooter';
+import CustomisedFooterSource from './demo/CustomisedFooter.tsx?raw';
+import PositionDemo from './demo/Position';
+import PositionSource from './demo/Position.tsx?raw';
+import AnimationDemo from './demo/Animation';
+import AnimationSource from './demo/Animation.tsx?raw';
# Modal
@@ -21,12 +25,45 @@ import { Modal } from 'tiny-design';
-
-
+
+
+### 基本用法
+
+简单的模态对话框。
+
+
+
+
+
+
+### 自定义底部
+
+更复杂的例子,自定义底部按钮栏,点击提交按钮后对话框会进入加载状态,加载完成后自动关闭。
+如果不需要默认的底部按钮,可以设置 `footer={null}`。
+
+
+
+
-
-
+
+
+### 自定义位置
+
+使用 `centered` 或 `top` 等属性设置对话框位置。
+
+
+
+
+
+
+### 动画
+
+使用 `animation` 设置不同的弹出动画。
+
+
+
+
@@ -60,4 +97,4 @@ import { Modal } from 'tiny-design';
| footerStyle | 底部的内联样式 | CSSProperties | - |
| maskStyle | 遮罩层的内联样式 | CSSProperties | - |
| style | 容器的样式对象 | CSSProperties | - |
-| className | 容器的类名 | string | - |
+| className | 容器的类名 | string | - |
\ No newline at end of file
diff --git a/packages/react/src/native-select/demo/basic.md b/packages/react/src/native-select/demo/Basic.tsx
similarity index 64%
rename from packages/react/src/native-select/demo/basic.md
rename to packages/react/src/native-select/demo/Basic.tsx
index 95e4c48b..5db11098 100644
--- a/packages/react/src/native-select/demo/basic.md
+++ b/packages/react/src/native-select/demo/Basic.tsx
@@ -1,11 +1,9 @@
-
+import React from 'react';
+import { NativeSelect } from '@tiny-design/react';
-### Basic
-
-```jsx live
-() => {
+export default function BasicDemo() {
const { Option } = NativeSelect;
-
+
return (
@@ -13,7 +11,4 @@
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/native-select/demo/disabled.md b/packages/react/src/native-select/demo/Disabled.tsx
similarity index 66%
rename from packages/react/src/native-select/demo/disabled.md
rename to packages/react/src/native-select/demo/Disabled.tsx
index 433ca1b0..6085befb 100644
--- a/packages/react/src/native-select/demo/disabled.md
+++ b/packages/react/src/native-select/demo/Disabled.tsx
@@ -1,11 +1,9 @@
-
+import React from 'react';
+import { NativeSelect } from '@tiny-design/react';
-### Disabled
-
-```jsx live
-() => {
+export default function DisabledDemo() {
const { Option } = NativeSelect;
-
+
return (
@@ -13,7 +11,4 @@
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/native-select/demo/group.md b/packages/react/src/native-select/demo/Group.tsx
similarity index 75%
rename from packages/react/src/native-select/demo/group.md
rename to packages/react/src/native-select/demo/Group.tsx
index 4bd2044b..de1a57a8 100644
--- a/packages/react/src/native-select/demo/group.md
+++ b/packages/react/src/native-select/demo/Group.tsx
@@ -1,11 +1,9 @@
-
+import React from 'react';
+import { NativeSelect } from '@tiny-design/react';
-### Group
-
-```jsx live
-() => {
+export default function GroupDemo() {
const { Option, OptGroup } = NativeSelect;
-
+
return (
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/native-select/demo/size.md b/packages/react/src/native-select/demo/Size.tsx
similarity index 70%
rename from packages/react/src/native-select/demo/size.md
rename to packages/react/src/native-select/demo/Size.tsx
index 967d8ee0..a897ad51 100644
--- a/packages/react/src/native-select/demo/size.md
+++ b/packages/react/src/native-select/demo/Size.tsx
@@ -1,27 +1,23 @@
-
+import React from 'react';
+import { NativeSelect } from '@tiny-design/react';
-### Size
-
-Use `size` to set different size of select
-
-```jsx live
-() => {
+export default function SizeDemo() {
const { Option } = NativeSelect;
-
+
return (
-
+
-
-
+
+
-
+
@@ -29,7 +25,4 @@ Use `size` to set different size of select
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/native-select/index.md b/packages/react/src/native-select/index.md
index d3656f10..266efbdf 100644
--- a/packages/react/src/native-select/index.md
+++ b/packages/react/src/native-select/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Group from './demo/group.md'
-import Size from './demo/size.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
# Native Select
@@ -24,12 +28,38 @@ const { Group, Option } = NativeSelect;
-
-
+
+
+### Basic
+
+
+
+
+
+
+### Size
+
+Use `size` to set different size of select
+
+
+
+
-
-
+
+
+### Group
+
+
+
+
+
+
+### Disabled
+
+
+
+
@@ -41,4 +71,3 @@ const { Group, Option } = NativeSelect;
| disabled | disable to select | boolean | false |
| style | style object of container object | | - |
| className | className of container | string | - |
-
diff --git a/packages/react/src/native-select/index.zh_CN.md b/packages/react/src/native-select/index.zh_CN.md
index 9225d98e..9ac63f4d 100644
--- a/packages/react/src/native-select/index.zh_CN.md
+++ b/packages/react/src/native-select/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Group from './demo/group.md'
-import Size from './demo/size.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
# Native Select
@@ -24,12 +28,38 @@ const { Group, Option } = NativeSelect;
-
-
+
+
+### 基础用法
+
+
+
+
+
+
+### 尺寸
+
+使用 `size` 设置不同尺寸的选择器
+
+
+
+
-
-
+
+
+### 分组
+
+
+
+
+
+
+### 禁用
+
+
+
+
diff --git a/packages/react/src/notification/demo/basic.md b/packages/react/src/notification/demo/Basic.tsx
old mode 100755
new mode 100644
similarity index 75%
rename from packages/react/src/notification/demo/basic.md
rename to packages/react/src/notification/demo/Basic.tsx
index 25b9f38b..1613ea98
--- a/packages/react/src/notification/demo/basic.md
+++ b/packages/react/src/notification/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Button, Notification } from '@tiny-design/react';
-### Basic
-
-The simplest usage that close the notification box after 4.5s.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const btnOnClick = () => {
Notification.open({
title: 'Notification Title',
@@ -15,9 +11,6 @@ The simplest usage that close the notification box after 4.5s.
},
});
};
-
- return Open the notification box;
-}
-```
-
+ return Open the notification box;
+}
\ No newline at end of file
diff --git a/packages/react/src/notification/demo/duration.md b/packages/react/src/notification/demo/Duration.tsx
old mode 100755
new mode 100644
similarity index 66%
rename from packages/react/src/notification/demo/duration.md
rename to packages/react/src/notification/demo/Duration.tsx
index 9d6ad3de..aa015d6c
--- a/packages/react/src/notification/demo/duration.md
+++ b/packages/react/src/notification/demo/Duration.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Button, Notification } from '@tiny-design/react';
-### Control the close time
-
-If set the `duration` value to 0, the notification will never close automatically.
-
-```jsx live
-() => {
+export default function DurationDemo() {
const btnOnClick = () => {
Notification.open({
title: 'Notification Title',
@@ -13,11 +9,8 @@ If set the `duration` value to 0, the notification will never close automaticall
duration: 0,
});
};
-
+
return (
Open the notification box
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/notification/demo/icon.md b/packages/react/src/notification/demo/Icon.tsx
old mode 100755
new mode 100644
similarity index 54%
rename from packages/react/src/notification/demo/icon.md
rename to packages/react/src/notification/demo/Icon.tsx
index 0291bc42..bf0e5bb6
--- a/packages/react/src/notification/demo/icon.md
+++ b/packages/react/src/notification/demo/Icon.tsx
@@ -1,23 +1,17 @@
-
+import React from 'react';
+import { Button, Notification } from '@tiny-design/react';
+import { IconBroadcast } from '@tiny-design/icons';
-### Customized Icon
-
-The icon can be customized to any react node.
-
-```jsx live
-() => {
+export default function IconDemo() {
const btnOnClick = () => {
Notification.open({
title: 'Notification Title',
description: 'This is the content of the notification. This is the content of the notification.',
- icon:
+ icon: ,
});
};
-
+
return (
Notification with customised icon
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/notification/demo/placement.md b/packages/react/src/notification/demo/Placement.tsx
old mode 100755
new mode 100644
similarity index 76%
rename from packages/react/src/notification/demo/placement.md
rename to packages/react/src/notification/demo/Placement.tsx
index 838d50a9..ebf97763
--- a/packages/react/src/notification/demo/placement.md
+++ b/packages/react/src/notification/demo/Placement.tsx
@@ -1,19 +1,15 @@
-
+import React from 'react';
+import { Button, Notification, Flex } from '@tiny-design/react';
-### Placement
-
-A notification box can appear from the `topRight`, `bottomRight`, `bottomLeft` or `topLeft` of the viewport.
-
-```jsx live
-() => {
- const btnOnClick = (placement) => {
+export default function PlacementDemo() {
+ const btnOnClick = (placement: string) => {
Notification.open({
title: 'Notification Title',
description: 'This is the content of the notification. This is the content of the notification.',
placement,
});
};
-
+
return (
<>
@@ -27,7 +23,4 @@ A notification box can appear from the `topRight`, `bottomRight`, `bottomLeft` o
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/notification/demo/type.md b/packages/react/src/notification/demo/Type.tsx
old mode 100755
new mode 100644
similarity index 79%
rename from packages/react/src/notification/demo/type.md
rename to packages/react/src/notification/demo/Type.tsx
index 00bd0a67..29de0ce6
--- a/packages/react/src/notification/demo/type.md
+++ b/packages/react/src/notification/demo/Type.tsx
@@ -1,12 +1,8 @@
-
+import React from 'react';
+import { Button, Notification, Flex } from '@tiny-design/react';
-### Different types of notification
-
-A notification box with a icon at the left side.
-
-```jsx live
-() => {
- const btnOnClick = (type) => {
+export default function TypeDemo() {
+ const btnOnClick = (type: string) => {
Notification[type]({
title: 'Notification Title',
description: 'This is the content of the notification. This is the content of the notification.',
@@ -15,7 +11,7 @@ A notification box with a icon at the left side.
},
});
};
-
+
return (
btnOnClick('info')}>Info
@@ -24,7 +20,4 @@ A notification box with a icon at the left side.
btnOnClick('error')}>Error
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/notification/index.md b/packages/react/src/notification/index.md
index f6154022..489a6dba 100755
--- a/packages/react/src/notification/index.md
+++ b/packages/react/src/notification/index.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Duration from './demo/duration.md'
-import Icon from './demo/icon.md'
-import Placement from './demo/placement.md'
-import Type from './demo/type.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DurationDemo from './demo/Duration';
+import DurationSource from './demo/Duration.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
+import TypeDemo from './demo/Type';
+import TypeSource from './demo/Type.tsx?raw';
# Notification
@@ -28,13 +33,53 @@ import { Notification } from 'tiny-design';
-
-
-
+
+
+### Basic
+
+The simplest usage that close the notification box after 4.5s.
+
+
+
+
+
+
+### Control the close time
+
+If set the `duration` value to 0, the notification will never close automatically.
+
+
+
+
+
+
+### Customized Icon
+
+The icon can be customized to any react node.
+
+
+
+
-
-
+
+
+### Placement
+
+A notification box can appear from the `topRight`, `bottomRight`, `bottomLeft` or `topLeft` of the viewport.
+
+
+
+
+
+
+### Different types of notification
+
+A notification box with a icon at the left side.
+
+
+
+
@@ -61,4 +106,4 @@ Notification is called through static methods:
| icon | custom icon, or false to hide | ReactNode | boolean | - |
| onClick | click callback | (e: MouseEvent) => void | - |
| onClose | close callback | (e: MouseEvent) => void | - |
-| placement | position of the notification | enum: `top-right` | `top-left` | `bottom-right` | `bottom-left` | `top-right` |
+| placement | position of the notification | enum: `top-right` | `top-left` | `bottom-right` | `bottom-left` | `top-right` |
\ No newline at end of file
diff --git a/packages/react/src/notification/index.zh_CN.md b/packages/react/src/notification/index.zh_CN.md
index 93a95093..c08bdc5a 100644
--- a/packages/react/src/notification/index.zh_CN.md
+++ b/packages/react/src/notification/index.zh_CN.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Duration from './demo/duration.md'
-import Icon from './demo/icon.md'
-import Placement from './demo/placement.md'
-import Type from './demo/type.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DurationDemo from './demo/Duration';
+import DurationSource from './demo/Duration.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
+import TypeDemo from './demo/Type';
+import TypeSource from './demo/Type.tsx?raw';
# Notification
@@ -28,13 +33,53 @@ import { Notification } from 'tiny-design';
-
-
-
+
+
+### 基本用法
+
+最简单的用法,4.5 秒后自动关闭。
+
+
+
+
+
+
+### 控制关闭时间
+
+通过设置 `duration` 为 0 可以禁用自动关闭。
+
+
+
+
+
+
+### 自定义图标
+
+可以自定义图标为任意 React 节点。
+
+
+
+
-
-
+
+
+### 位置
+
+通知框可以从视口的 `topRight`、`bottomRight`、`bottomLeft` 或 `topLeft` 弹出。
+
+
+
+
+
+
+### 不同类型的通知
+
+左侧带图标的通知。
+
+
+
+
@@ -61,4 +106,4 @@ Notification 通过静态方法调用:
| icon | 自定义图标,设为 false 则隐藏 | ReactNode | boolean | - |
| onClick | 点击回调 | (e: MouseEvent) => void | - |
| onClose | 关闭回调 | (e: MouseEvent) => void | - |
-| placement | 通知弹出位置 | enum: `top-right` | `top-left` | `bottom-right` | `bottom-left` | `top-right` |
+| placement | 通知弹出位置 | enum: `top-right` | `top-left` | `bottom-right` | `bottom-left` | `top-right` |
\ No newline at end of file
diff --git a/packages/react/src/overlay/demo/Basic.tsx b/packages/react/src/overlay/demo/Basic.tsx
new file mode 100644
index 00000000..2c13759a
--- /dev/null
+++ b/packages/react/src/overlay/demo/Basic.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { Button, Overlay } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ const [isShow, setIsShow] = React.useState(false);
+
+ return (
+ <>
+ setIsShow(true)}>Show Overlay
+ setIsShow(false)}>
+
+ Click the overlay to close
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/overlay/demo/Blurred.tsx b/packages/react/src/overlay/demo/Blurred.tsx
new file mode 100644
index 00000000..ab22aa9e
--- /dev/null
+++ b/packages/react/src/overlay/demo/Blurred.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { Button, Overlay } from '@tiny-design/react';
+
+export default function BlurredDemo() {
+ const [isShow, setIsShow] = React.useState(false);
+
+ return (
+ <>
+ setIsShow(true)}>Blurred Overlay
+ setIsShow(false)}>
+
+ Blurred backdrop overlay
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/overlay/demo/CustomContent.tsx b/packages/react/src/overlay/demo/CustomContent.tsx
new file mode 100644
index 00000000..02bd823f
--- /dev/null
+++ b/packages/react/src/overlay/demo/CustomContent.tsx
@@ -0,0 +1,31 @@
+import React from 'react';
+import { Button, Overlay } from '@tiny-design/react';
+
+export default function CustomContentDemo() {
+ const [isShow, setIsShow] = React.useState(false);
+
+ return (
+ <>
+ setIsShow(true)}>Custom Content
+ setIsShow(false)}>
+
e.stopPropagation()}
+ >
+
Custom Panel
+
This content is rendered inside the overlay.
+ setIsShow(false)}>Close
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/overlay/demo/MaskTypes.tsx b/packages/react/src/overlay/demo/MaskTypes.tsx
new file mode 100644
index 00000000..3f2dce87
--- /dev/null
+++ b/packages/react/src/overlay/demo/MaskTypes.tsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import { Button, Overlay, Flex } from '@tiny-design/react';
+
+export default function MaskTypesDemo() {
+ const [visible, setVisible] = React.useState(false);
+ const [type, setType] = React.useState('default');
+
+ const open = (t) => {
+ setType(t);
+ setVisible(true);
+ };
+
+ return (
+ <>
+
+ open('default')}>Default
+ open('inverted')}>Inverted
+ open('none')}>None
+
+ setVisible(false)}>
+
+ Mask type: {type} (click to close)
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/overlay/demo/basic.md b/packages/react/src/overlay/demo/basic.md
deleted file mode 100644
index ed8847e0..00000000
--- a/packages/react/src/overlay/demo/basic.md
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-### Basic
-
-Basic overlay with a default mask.
-
-
-```jsx live
-() => {
- const Wrapper = () => {
- const [isShow, setIsShow] = React.useState(false);
-
- return (
- <>
- setIsShow(true)}>Show Overlay
- setIsShow(false)}>
-
- );
- };
-
- return (
-
- );
-}
-```
-
-
diff --git a/packages/react/src/progress/demo/square-linecaps.md b/packages/react/src/progress/demo/square-linecaps.md
deleted file mode 100644
index 9cf226ed..00000000
--- a/packages/react/src/progress/demo/square-linecaps.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-### Square linecaps
-
-By setting `strokeLinecap="square"`, you can change the linecaps from round to square.
-
-```jsx live
-() => {
- const { Bar, Circle } = Progress;
-
- return (
-
-
-
-
- );
-}
-```
-
-
diff --git a/packages/react/src/progress/index.md b/packages/react/src/progress/index.md
index 974bb1d6..1da39ab9 100644
--- a/packages/react/src/progress/index.md
+++ b/packages/react/src/progress/index.md
@@ -1,12 +1,21 @@
-import Active from './demo/active.md'
-import CustomText from './demo/custom-text.md'
-import Dynamic from './demo/dynamic.md'
-import InternalText from './demo/internal-text.md'
-import LinearGradient from './demo/linear-gradient.md'
-import ProgressBar from './demo/progress-bar.md'
-import ProgressCircle from './demo/progress-circle.md'
-import Reverse from './demo/reverse.md'
-import SquareLinecaps from './demo/square-linecaps.md'
+import ProgressBarDemo from './demo/ProgressBar';
+import ProgressBarSource from './demo/ProgressBar.tsx?raw';
+import ProgressCircleDemo from './demo/ProgressCircle';
+import ProgressCircleSource from './demo/ProgressCircle.tsx?raw';
+import InternalTextDemo from './demo/InternalText';
+import InternalTextSource from './demo/InternalText.tsx?raw';
+import ActiveDemo from './demo/Active';
+import ActiveSource from './demo/Active.tsx?raw';
+import LinearGradientDemo from './demo/LinearGradient';
+import LinearGradientSource from './demo/LinearGradient.tsx?raw';
+import DynamicDemo from './demo/Dynamic';
+import DynamicSource from './demo/Dynamic.tsx?raw';
+import CustomTextDemo from './demo/CustomText';
+import CustomTextSource from './demo/CustomText.tsx?raw';
+import ReverseDemo from './demo/Reverse';
+import ReverseSource from './demo/Reverse.tsx?raw';
+import SquareLinecapsDemo from './demo/SquareLinecaps';
+import SquareLinecapsSource from './demo/SquareLinecaps.tsx?raw';
# Progress
@@ -29,17 +38,93 @@ const { Bar, Circle } = Progress;
-
-
-
-
-
+
+
+### Progress bar
+
+A standard progress bar.
+
+
+
+
+
+
+### Progress circular
+
+A circular progress.
+
+
+
+
+
+
+### Internal Text
+
+Set `innerText` to display the text inside the bar.
+
+
+
+
+
+
+### Active Background Style
+
+Set `backgroundType` to display different bar backgrounds.
+
+
+
+
+
+
+### Custom linear gradient
+
+A package of `linear-gradient`. Pass a color array to set the `strokeColor`.
+
+> More linear gradient color presets, please visit [Awesome Gradient](https://wangdicoder.github.io/awesome-gradient/).
+
+
+
+
-
-
-
-
+
+
+### Dynamic progress
+
+Control the value.
+
+
+
+
+
+
+### Custom text format
+
+Set a custom text by setting the `format` prop.
+
+
+
+
+
+
+### Reverse direction
+
+Set `reverse` to control the direction.
+
+> This is only for **Circle** progress.
+
+
+
+
+
+
+### Square linecaps
+
+By setting `strokeLinecap="square"`, you can change the linecaps from round to square.
+
+
+
+
@@ -50,5 +135,4 @@ const { Bar, Circle } = Progress;
| size | selection size | enum: `sm` | `md` | `lg` | `md` |
| disabled | disable to select | boolean | false |
| style | style object of container object | CSSProperties | - |
-| className | className of container | string | - |
-
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/progress/index.zh_CN.md b/packages/react/src/progress/index.zh_CN.md
index 25f88853..f252e11e 100644
--- a/packages/react/src/progress/index.zh_CN.md
+++ b/packages/react/src/progress/index.zh_CN.md
@@ -1,12 +1,21 @@
-import Active from './demo/active.md'
-import CustomText from './demo/custom-text.md'
-import Dynamic from './demo/dynamic.md'
-import InternalText from './demo/internal-text.md'
-import LinearGradient from './demo/linear-gradient.md'
-import ProgressBar from './demo/progress-bar.md'
-import ProgressCircle from './demo/progress-circle.md'
-import Reverse from './demo/reverse.md'
-import SquareLinecaps from './demo/square-linecaps.md'
+import ProgressBarDemo from './demo/ProgressBar';
+import ProgressBarSource from './demo/ProgressBar.tsx?raw';
+import ProgressCircleDemo from './demo/ProgressCircle';
+import ProgressCircleSource from './demo/ProgressCircle.tsx?raw';
+import InternalTextDemo from './demo/InternalText';
+import InternalTextSource from './demo/InternalText.tsx?raw';
+import ActiveDemo from './demo/Active';
+import ActiveSource from './demo/Active.tsx?raw';
+import LinearGradientDemo from './demo/LinearGradient';
+import LinearGradientSource from './demo/LinearGradient.tsx?raw';
+import DynamicDemo from './demo/Dynamic';
+import DynamicSource from './demo/Dynamic.tsx?raw';
+import CustomTextDemo from './demo/CustomText';
+import CustomTextSource from './demo/CustomText.tsx?raw';
+import ReverseDemo from './demo/Reverse';
+import ReverseSource from './demo/Reverse.tsx?raw';
+import SquareLinecapsDemo from './demo/SquareLinecaps';
+import SquareLinecapsSource from './demo/SquareLinecaps.tsx?raw';
# Progress
@@ -30,17 +39,93 @@ const { Bar, Circle } = Progress;
-
-
-
-
-
+
+
+### 进度条
+
+标准的进度条。
+
+
+
+
+
+
+### 圆形进度
+
+圆形进度。
+
+
+
+
+
+
+### 内部文本
+
+设置 `innerText` 来在进度条内部显示文本。
+
+
+
+
+
+
+### 动态背景样式
+
+设置 `backgroundType` 来显示不同的进度条背景。
+
+
+
+
+
+
+### 自定义线性渐变
+
+使用 `linear-gradient`。传入颜色数组到 `strokeColor` 属性。
+
+> 更多渐变颜色预设,请访问 [Awesome Gradient](https://wangdicoder.github.io/awesome-gradient/)。
+
+
+
+
-
-
-
-
+
+
+### 动态进度
+
+控制进度值。
+
+
+
+
+
+
+### 自定义文本格式
+
+通过设置 `format` 属性来自定义文本。
+
+
+
+
+
+
+### 反向
+
+设置 `reverse` 来控制方向。
+
+> 仅适用于 **Circle** 圆形进度。
+
+
+
+
+
+
+### 方头端点
+
+通过设置 `strokeLinecap="square"`,可以将端点从圆头改为方头。
+
+
+
+
@@ -51,4 +136,4 @@ const { Bar, Circle } = Progress;
| size | 选择尺寸 | enum: `sm` | `md` | `lg` | `md` |
| disabled | 是否禁用选择 | boolean | false |
| style | 容器样式对象 | CSSProperties | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/radio/demo/Basic.tsx b/packages/react/src/radio/demo/Basic.tsx
new file mode 100644
index 00000000..a6301995
--- /dev/null
+++ b/packages/react/src/radio/demo/Basic.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Radio } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return I'm a radio;
+}
\ No newline at end of file
diff --git a/packages/react/src/radio/demo/Disabled.tsx b/packages/react/src/radio/demo/Disabled.tsx
new file mode 100644
index 00000000..b57769e9
--- /dev/null
+++ b/packages/react/src/radio/demo/Disabled.tsx
@@ -0,0 +1,31 @@
+import React from 'react';
+import { Radio, Button } from '@tiny-design/react';
+
+const { Group } = Radio;
+
+export default function DisabledDemo() {
+ const [value, setValue] = React.useState('a');
+ const [disabled, setDisabled] = React.useState(true);
+
+ return (
+ <>
+ setValue(val)}
+ disabled={disabled}
+ >
+ A
+ B
+
+ C
+
+ D
+
+
+
+ setDisabled(!disabled)}>
+ Toggle disabled
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/radio/demo/Group.tsx b/packages/react/src/radio/demo/Group.tsx
new file mode 100644
index 00000000..53ed21e1
--- /dev/null
+++ b/packages/react/src/radio/demo/Group.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Radio } from '@tiny-design/react';
+
+const { Group } = Radio;
+
+export default function GroupDemo() {
+ const [value, setValue] = React.useState('a');
+
+ return (
+ <>
+
Controlled
+ setValue(val)}
+ >
+ A
+ B
+ C
+ D
+
+
+
+
+
Uncontrolled
+
+ A
+ B
+ C
+ D
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/radio/demo/basic.md b/packages/react/src/radio/demo/basic.md
deleted file mode 100644
index 3d452205..00000000
--- a/packages/react/src/radio/demo/basic.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Basic
-
-The simplest use.
-
-```jsx live
-I'm a radio
-```
-
-
diff --git a/packages/react/src/radio/demo/disabled.md b/packages/react/src/radio/demo/disabled.md
deleted file mode 100644
index 1ccd8c6e..00000000
--- a/packages/react/src/radio/demo/disabled.md
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-### Disabled
-
-Disabled state of Radio.
-
-```jsx live
-() => {
- const { Group } = Radio;
-
- const Wrapper = () => {
- const [value, setValue] = React.useState('a');
- const [disabled, setDisabled] = React.useState(true);
-
- return(
- <>
- {
- setValue(val)
- }} disabled={disabled}>
- A
- B
- C
- D
-
-
-
- setDisabled(!disabled)}>Toggle disabled
- >
- );
- };
-
- return (
-
- );
-}
-```
-
-
diff --git a/packages/react/src/radio/demo/group.md b/packages/react/src/radio/demo/group.md
deleted file mode 100644
index f1ddc89b..00000000
--- a/packages/react/src/radio/demo/group.md
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-### Radio Group
-
-A group of radio components.
-
-```jsx live
-() => {
- const { Group } = Radio;
-
- const Wrapper = () => {
- const [value, setValue] = React.useState('a');
-
- return(
- <>
-
Controlled
- setValue(val)}>
- A
- B
- C
- D
-
-
-
-
-
Uncontrolled
-
- A
- B
- C
- D
-
- >
- );
- };
-
- return (
-
- );
-}
-```
-
-
diff --git a/packages/react/src/radio/index.md b/packages/react/src/radio/index.md
index 0ebf7f6c..fc10416a 100644
--- a/packages/react/src/radio/index.md
+++ b/packages/react/src/radio/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Group from './demo/group.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
# Radio
@@ -23,11 +26,35 @@ const { Group } = Radio;
-
-
+
+
+### Basic
+
+The simplest use.
+
+
+
+
+
+
+### Disabled
+
+Disabled state of Radio.
+
+
+
+
-
+
+
+### Radio Group
+
+A group of radio components.
+
+
+
+
@@ -54,4 +81,4 @@ const { Group } = Radio;
| defaultValue | initial selected value | string | number | - |
| value | controlled selected value | string | number | - |
| onChange | callback when selection changes | (value: string | number) => void | - |
-| disabled | whether disabled all radios | boolean | false |
+| disabled | whether disabled all radios | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/radio/index.zh_CN.md b/packages/react/src/radio/index.zh_CN.md
index 82a02fc4..2ed10eca 100644
--- a/packages/react/src/radio/index.zh_CN.md
+++ b/packages/react/src/radio/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Group from './demo/group.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import GroupDemo from './demo/Group';
+import GroupSource from './demo/Group.tsx?raw';
# Radio
@@ -23,11 +26,35 @@ const { Group } = Radio;
-
-
+
+
+### 基本用法
+
+最简单的用法。
+
+
+
+
+
+
+### 禁用状态
+
+Radio 的禁用状态。
+
+
+
+
-
+
+
+### 单选组合
+
+一组单选按钮。
+
+
+
+
@@ -54,4 +81,4 @@ const { Group } = Radio;
| defaultValue | 初始选中值 | string | number | - |
| value | 受控选中值 | string | number | - |
| onChange | 选择项变化时的回调 | (value: string | number) => void | - |
-| disabled | 是否禁用所有单选按钮 | boolean | false |
+| disabled | 是否禁用所有单选按钮 | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/rate/demo/Basic.tsx b/packages/react/src/rate/demo/Basic.tsx
new file mode 100644
index 00000000..c3fbd488
--- /dev/null
+++ b/packages/react/src/rate/demo/Basic.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Rate } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/rate/demo/Character.tsx b/packages/react/src/rate/demo/Character.tsx
new file mode 100644
index 00000000..0a7ea72f
--- /dev/null
+++ b/packages/react/src/rate/demo/Character.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { Rate } from '@tiny-design/react';
+
+export default function CharacterDemo() {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/rate/demo/Clearable.tsx b/packages/react/src/rate/demo/Clearable.tsx
new file mode 100644
index 00000000..a4a3b396
--- /dev/null
+++ b/packages/react/src/rate/demo/Clearable.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Rate, Flex } from '@tiny-design/react';
+
+export default function ClearableDemo() {
+ return (
+
+
+ clearable: true
+
+
+ clearable: false
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/rate/demo/Disabled.tsx b/packages/react/src/rate/demo/Disabled.tsx
new file mode 100644
index 00000000..dc9ec1a1
--- /dev/null
+++ b/packages/react/src/rate/demo/Disabled.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Rate } from '@tiny-design/react';
+
+export default function DisabledDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/rate/demo/Half.tsx b/packages/react/src/rate/demo/Half.tsx
new file mode 100644
index 00000000..5a8c18c3
--- /dev/null
+++ b/packages/react/src/rate/demo/Half.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Rate } from '@tiny-design/react';
+
+export default function HalfDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/rate/demo/basic.md b/packages/react/src/rate/demo/basic.md
deleted file mode 100755
index d717dca4..00000000
--- a/packages/react/src/rate/demo/basic.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Basic
-
-The simplest usage.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/rate/demo/character.md b/packages/react/src/rate/demo/character.md
deleted file mode 100755
index 117cbb55..00000000
--- a/packages/react/src/rate/demo/character.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### Other Character
-
-Replace the default star to other character like alphabet, digit, iconfont or even other language word.
-
-```jsx live
-<>
- } half color="#f30"/>
-
-
-
-
-
-
->
-```
-
-
diff --git a/packages/react/src/rate/demo/clearable.md b/packages/react/src/rate/demo/clearable.md
deleted file mode 100755
index 17a973d5..00000000
--- a/packages/react/src/rate/demo/clearable.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Clear star
-
-Support set allow to clear star when click again.
-
-```jsx live
-<>
- clearable: true
-
- clearable: false
->
-```
-
-
diff --git a/packages/react/src/rate/demo/disabled.md b/packages/react/src/rate/demo/disabled.md
deleted file mode 100755
index f0184619..00000000
--- a/packages/react/src/rate/demo/disabled.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Read only
-
-Read only, can't be interactive.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/rate/demo/half.md b/packages/react/src/rate/demo/half.md
deleted file mode 100755
index 26bf8615..00000000
--- a/packages/react/src/rate/demo/half.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Half star
-
-Support select half star.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/rate/index.md b/packages/react/src/rate/index.md
index 852ae4fb..7d88aeac 100755
--- a/packages/react/src/rate/index.md
+++ b/packages/react/src/rate/index.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Character from './demo/character.md'
-import Clearable from './demo/clearable.md'
-import Disabled from './demo/disabled.md'
-import Half from './demo/half.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CharacterDemo from './demo/Character';
+import CharacterSource from './demo/Character.tsx?raw';
+import ClearableDemo from './demo/Clearable';
+import ClearableSource from './demo/Clearable.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import HalfDemo from './demo/Half';
+import HalfSource from './demo/Half.tsx?raw';
# Rate
@@ -24,13 +29,53 @@ import { Rate } from 'tiny-design';
-
-
-
+
+
+### Basic
+
+The simplest usage.
+
+
+
+
+
+
+### Half star
+
+Support select half star.
+
+
+
+
+
+
+### Clear star
+
+Support set allow to clear star when click again.
+
+
+
+
-
-
+
+
+### Read only
+
+Read only, can't be interactive.
+
+
+
+
+
+
+### Other Character
+
+Replace the default star to other character like alphabet, digit, iconfont or even other language word.
+
+
+
+
diff --git a/packages/react/src/rate/index.zh_CN.md b/packages/react/src/rate/index.zh_CN.md
index d0c904ce..d1409a95 100644
--- a/packages/react/src/rate/index.zh_CN.md
+++ b/packages/react/src/rate/index.zh_CN.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Character from './demo/character.md'
-import Clearable from './demo/clearable.md'
-import Disabled from './demo/disabled.md'
-import Half from './demo/half.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CharacterDemo from './demo/Character';
+import CharacterSource from './demo/Character.tsx?raw';
+import ClearableDemo from './demo/Clearable';
+import ClearableSource from './demo/Clearable.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import HalfDemo from './demo/Half';
+import HalfSource from './demo/Half.tsx?raw';
# Rate
@@ -24,13 +29,53 @@ import { Rate } from 'tiny-design';
-
-
-
+
+
+### 基本用法
+
+最简单的用法。
+
+
+
+
+
+
+### 半星
+
+支持选择半星。
+
+
+
+
+
+
+### 清除星标
+
+支持设置允许再次点击清除星标。
+
+
+
+
-
-
+
+
+### 只读
+
+只读状态,不可交互。
+
+
+
+
+
+
+### 其他字符
+
+可以用其他字符如字母、数字、图标或其他语言的文字替换默认的五角星。
+
+
+
+
diff --git a/packages/react/src/result/demo/Error.tsx b/packages/react/src/result/demo/Error.tsx
new file mode 100644
index 00000000..4126d54a
--- /dev/null
+++ b/packages/react/src/result/demo/Error.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { Result, Button } from '@tiny-design/react';
+
+export default function ErrorDemo() {
+ return (
+
+ Go Console
+
+ ]}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/result/demo/Icon.tsx b/packages/react/src/result/demo/Icon.tsx
new file mode 100644
index 00000000..83208bfd
--- /dev/null
+++ b/packages/react/src/result/demo/Icon.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { Result, Button } from '@tiny-design/react';
+
+export default function IconDemo() {
+ return (
+ 🎉
}
+ extra={[
+
+ Go Console
+
+ ]}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/result/demo/Info.tsx b/packages/react/src/result/demo/Info.tsx
new file mode 100644
index 00000000..303ca382
--- /dev/null
+++ b/packages/react/src/result/demo/Info.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Result, Button } from '@tiny-design/react';
+
+export default function InfoDemo() {
+ return (
+
+ Go Console
+
+ ]}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/result/demo/Loading.tsx b/packages/react/src/result/demo/Loading.tsx
new file mode 100644
index 00000000..deb1deab
--- /dev/null
+++ b/packages/react/src/result/demo/Loading.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Result, Button } from '@tiny-design/react';
+
+export default function LoadingDemo() {
+ return (
+
+ Go Console
+
+ ]}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/result/demo/Success.tsx b/packages/react/src/result/demo/Success.tsx
new file mode 100644
index 00000000..a6b2083e
--- /dev/null
+++ b/packages/react/src/result/demo/Success.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Result, Button, Flex } from '@tiny-design/react';
+
+export default function SuccessDemo() {
+ return (
+
+
+ Go Console
+
+ Buy Again
+
+ }
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/result/demo/Warning.tsx b/packages/react/src/result/demo/Warning.tsx
new file mode 100644
index 00000000..4e35402e
--- /dev/null
+++ b/packages/react/src/result/demo/Warning.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Result, Button } from '@tiny-design/react';
+
+export default function WarningDemo() {
+ return (
+
+ Go Console
+
+ ]}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/result/demo/error.md b/packages/react/src/result/demo/error.md
deleted file mode 100644
index f03a619e..00000000
--- a/packages/react/src/result/demo/error.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-### Error
-
-A complicated error feedback.
-
-```jsx live
-
- Go Console
-
- ]}
-/>
-```
-
-
diff --git a/packages/react/src/result/demo/icon.md b/packages/react/src/result/demo/icon.md
deleted file mode 100644
index e9769c78..00000000
--- a/packages/react/src/result/demo/icon.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-### Customised icon.
-
-Pass `icon` attribute to set the icon.
-
-```jsx live
-}
- extra={[
-
- Go Console
-
- ]}
-/>
-```
-
-
diff --git a/packages/react/src/result/demo/info.md b/packages/react/src/result/demo/info.md
deleted file mode 100644
index 0a594c48..00000000
--- a/packages/react/src/result/demo/info.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### Info
-
-Show processing results.
-
-```jsx live
-
- Go Console
-
- ]}
-/>
-```
-
-
diff --git a/packages/react/src/result/demo/loading.md b/packages/react/src/result/demo/loading.md
deleted file mode 100644
index b9ec3e0d..00000000
--- a/packages/react/src/result/demo/loading.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### Loading
-
-The result is in a loading status.
-
-```jsx live
-
- Go Console
-
- ]}
-/>
-```
-
-
diff --git a/packages/react/src/result/demo/success.md b/packages/react/src/result/demo/success.md
deleted file mode 100644
index 554c20bb..00000000
--- a/packages/react/src/result/demo/success.md
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-### Success
-
-Show successful results.
-
-```jsx live
-
-
- Go Console
-
- Buy Again
-
- }
-/>
-```
-
-
diff --git a/packages/react/src/result/demo/warning.md b/packages/react/src/result/demo/warning.md
deleted file mode 100644
index f3b40506..00000000
--- a/packages/react/src/result/demo/warning.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-### Warning
-
-The result of the warning.
-
-```jsx live
-
- Go Console
-
- ]}
-/>
-```
-
-
diff --git a/packages/react/src/result/index.md b/packages/react/src/result/index.md
index 50a62753..1f2474ca 100644
--- a/packages/react/src/result/index.md
+++ b/packages/react/src/result/index.md
@@ -1,9 +1,15 @@
-import Success from './demo/success.md'
-import Loading from './demo/loading.md'
-import Error from './demo/error.md'
-import Warning from './demo/warning.md'
-import Info from './demo/info.md'
-import Icon from './demo/icon.md'
+import SuccessDemo from './demo/Success';
+import SuccessSource from './demo/Success.tsx?raw';
+import LoadingDemo from './demo/Loading';
+import LoadingSource from './demo/Loading.tsx?raw';
+import ErrorDemo from './demo/Error';
+import ErrorSource from './demo/Error.tsx?raw';
+import WarningDemo from './demo/Warning';
+import WarningSource from './demo/Warning.tsx?raw';
+import InfoDemo from './demo/Info';
+import InfoSource from './demo/Info.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
# Result
@@ -15,12 +21,66 @@ Use when important operations need to inform the user to process the results and
## Examples
-
-
-
-
-
-
+
+
+
+
+### Success
+
+Show successful results.
+
+
+
+
+
+
+### Loading
+
+The result is in a loading status.
+
+
+
+
+
+
+### Error
+
+A complicated error feedback.
+
+
+
+
+
+
+
+
+### Warning
+
+The result of the warning.
+
+
+
+
+
+
+### Info
+
+Show processing results.
+
+
+
+
+
+
+### Customised icon.
+
+Pass `icon` attribute to set the icon.
+
+
+
+
+
+
## API
@@ -32,4 +92,4 @@ Use when important operations need to inform the user to process the results and
| icon | customised icon | ReactNode | - |
| extra | operating area | ReactNode | - |
| style | style object of container object | CSSProperties | - |
-| className | className of container | string | - |
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/result/index.zh_CN.md b/packages/react/src/result/index.zh_CN.md
index bde54bd8..9b29e4ab 100644
--- a/packages/react/src/result/index.zh_CN.md
+++ b/packages/react/src/result/index.zh_CN.md
@@ -1,9 +1,15 @@
-import Success from './demo/success.md'
-import Loading from './demo/loading.md'
-import Error from './demo/error.md'
-import Warning from './demo/warning.md'
-import Info from './demo/info.md'
-import Icon from './demo/icon.md'
+import SuccessDemo from './demo/Success';
+import SuccessSource from './demo/Success.tsx?raw';
+import LoadingDemo from './demo/Loading';
+import LoadingSource from './demo/Loading.tsx?raw';
+import ErrorDemo from './demo/Error';
+import ErrorSource from './demo/Error.tsx?raw';
+import WarningDemo from './demo/Warning';
+import WarningSource from './demo/Warning.tsx?raw';
+import InfoDemo from './demo/Info';
+import InfoSource from './demo/Info.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
# Result
@@ -15,12 +21,66 @@ import Icon from './demo/icon.md'
## 代码示例
-
-
-
-
-
-
+
+
+
+
+### 成功
+
+显示处理成功的反馈结果。
+
+
+
+
+
+
+### 加载中
+
+结果显示加载状态。
+
+
+
+
+
+
+### 失败
+
+复杂的错误反馈。
+
+
+
+
+
+
+
+
+### 警告
+
+警告反馈结果。
+
+
+
+
+
+
+### 提示
+
+显示处理中的信息提示。
+
+
+
+
+
+
+### 自定义图标
+
+通过 `icon` 属性设置图标。
+
+
+
+
+
+
## API
@@ -32,4 +92,4 @@ import Icon from './demo/icon.md'
| icon | 自定义图标 | ReactNode | - |
| extra | 操作区域 | ReactNode | - |
| style | 容器的样式对象 | CSSProperties | - |
-| className | 容器的类名 | string | - |
+| className | 容器的类名 | string | - |
\ No newline at end of file
diff --git a/packages/react/src/scroll-indicator/demo/Basic.tsx b/packages/react/src/scroll-indicator/demo/Basic.tsx
new file mode 100644
index 00000000..f7eb8280
--- /dev/null
+++ b/packages/react/src/scroll-indicator/demo/Basic.tsx
@@ -0,0 +1,19 @@
+import React from 'react';
+import { ScrollIndicator } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+ <>
+
+
+
Scroll up to detect the change of the indicator on the top.
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Vitae justo eget magna fermentum iaculis eu non. Malesuada proin libero nunc consequat interdum varius sit amet mattis. A condimentum vitae sapien pellentesque habitant morbi tristique senectus. Erat nam at lectus urna duis convallis convallis tellus id. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Ornare arcu dui vivamus arcu. Convallis aenean et tortor at. Tempus iaculis urna id volutpat lacus. Rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Lectus sit amet est placerat in egestas erat imperdiet sed. Tristique sollicitudin nibh sit amet commodo nulla facilisi nullam. Non nisi est sit amet facilisis magna etiam tempor orci. Auctor neque vitae tempus quam pellentesque nec nam aliquam sem. Gravida arcu ac tortor dignissim. Mattis pellentesque id nibh tortor id aliquet lectus proin nibh. Etiam tempor orci eu lobortis elementum nibh tellus. Rhoncus dolor purus non enim praesent elementum facilisis leo vel. Varius sit amet mattis vulputate enim nulla aliquet porttitor lacus.
+
+
Nec tincidunt praesent semper feugiat nibh sed. Velit ut tortor pretium viverra suspendisse potenti nullam ac tortor. Magna eget est lorem ipsum dolor. Arcu risus quis varius quam quisque id diam vel quam. Massa id neque aliquam vestibulum. Libero id faucibus nisl tincidunt eget. Consectetur adipiscing elit ut aliquam purus sit. Pellentesque diam volutpat commodo sed egestas egestas. Interdum velit laoreet id donec ultrices tincidunt. Fringilla urna porttitor rhoncus dolor purus. Et ultrices neque ornare aenean. Vitae ultricies leo integer malesuada nunc. A diam sollicitudin tempor id eu nisl nunc mi ipsum. Neque viverra justo nec ultrices dui sapien eget mi. Dictum non consectetur a erat nam at lectus. Aenean sed adipiscing diam donec adipiscing tristique risus nec.
+
+
Mi quis hendrerit dolor magna eget est lorem. Dignissim enim sit amet venenatis urna cursus eget nunc scelerisque. Adipiscing diam donec adipiscing tristique risus. Viverra mauris in aliquam sem fringilla ut morbi tincidunt augue. Dui ut ornare lectus sit amet est. Nunc eget lorem dolor sed. Ac turpis egestas integer eget aliquet nibh praesent tristique. Mattis molestie a iaculis at erat pellentesque adipiscing. Est ullamcorper eget nulla facilisi etiam dignissim. Arcu ac tortor dignissim convallis. Orci ac auctor augue mauris. Commodo viverra maecenas accumsan lacus vel facilisis volutpat est. Amet commodo nulla facilisi nullam vehicula ipsum. Amet risus nullam eget felis eget. Et sollicitudin ac orci phasellus. Ultrices mi tempus imperdiet nulla. Tincidunt nunc pulvinar sapien et ligula ullamcorper. Diam vulputate ut pharetra sit. Suspendisse potenti nullam ac tortor vitae purus faucibus. Ultrices mi tempus imperdiet nulla malesuada pellentesque elit.
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/scroll-indicator/demo/target.md b/packages/react/src/scroll-indicator/demo/Target.tsx
similarity index 89%
rename from packages/react/src/scroll-indicator/demo/target.md
rename to packages/react/src/scroll-indicator/demo/Target.tsx
index 71f9723a..6ecdd92e 100644
--- a/packages/react/src/scroll-indicator/demo/target.md
+++ b/packages/react/src/scroll-indicator/demo/Target.tsx
@@ -1,17 +1,13 @@
-
+import React from 'react';
+import { ScrollIndicator } from '@tiny-design/react';
-### Container to scroll
-
-Set a target, which is listen to scroll event of target element (default is `window`).
-
-```jsx live
-() => {
- const targerRef = React.useRef(null);
+export default function TargetDemo() {
+ const targetRef = React.useRef(null);
return (
<>
- targerRef && targerRef.current}/>
-
+ targetRef && targetRef.current}/>
+
Scroll up to detect the change of the indicator.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Vitae justo eget magna fermentum iaculis eu non. Malesuada proin libero nunc consequat interdum varius sit amet mattis. A condimentum vitae sapien pellentesque habitant morbi tristique senectus. Erat nam at lectus urna duis convallis convallis tellus id. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Ornare arcu dui vivamus arcu. Convallis aenean et tortor at. Tempus iaculis urna id volutpat lacus. Rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Lectus sit amet est placerat in egestas erat imperdiet sed. Tristique sollicitudin nibh sit amet commodo nulla facilisi nullam. Non nisi est sit amet facilisis magna etiam tempor orci. Auctor neque vitae tempus quam pellentesque nec nam aliquam sem. Gravida arcu ac tortor dignissim. Mattis pellentesque id nibh tortor id aliquet lectus proin nibh. Etiam tempor orci eu lobortis elementum nibh tellus. Rhoncus dolor purus non enim praesent elementum facilisis leo vel. Varius sit amet mattis vulputate enim nulla aliquet porttitor lacus.
@@ -22,7 +18,4 @@ Set a target, which is listen to scroll event of target element (default is `win
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/scroll-indicator/demo/basic.md b/packages/react/src/scroll-indicator/demo/basic.md
deleted file mode 100644
index 12f5dd79..00000000
--- a/packages/react/src/scroll-indicator/demo/basic.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-### Basic
-
-A basic example.
-
-```jsx live
-<>
-
-
-
Scroll up to detect the change of the indicator on the top.
-
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Vitae justo eget magna fermentum iaculis eu non. Malesuada proin libero nunc consequat interdum varius sit amet mattis. A condimentum vitae sapien pellentesque habitant morbi tristique senectus. Erat nam at lectus urna duis convallis convallis tellus id. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Ornare arcu dui vivamus arcu. Convallis aenean et tortor at. Tempus iaculis urna id volutpat lacus. Rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Lectus sit amet est placerat in egestas erat imperdiet sed. Tristique sollicitudin nibh sit amet commodo nulla facilisi nullam. Non nisi est sit amet facilisis magna etiam tempor orci. Auctor neque vitae tempus quam pellentesque nec nam aliquam sem. Gravida arcu ac tortor dignissim. Mattis pellentesque id nibh tortor id aliquet lectus proin nibh. Etiam tempor orci eu lobortis elementum nibh tellus. Rhoncus dolor purus non enim praesent elementum facilisis leo vel. Varius sit amet mattis vulputate enim nulla aliquet porttitor lacus.
-
-
Nec tincidunt praesent semper feugiat nibh sed. Velit ut tortor pretium viverra suspendisse potenti nullam ac tortor. Magna eget est lorem ipsum dolor. Arcu risus quis varius quam quisque id diam vel quam. Massa id neque aliquam vestibulum. Libero id faucibus nisl tincidunt eget. Consectetur adipiscing elit ut aliquam purus sit. Pellentesque diam volutpat commodo sed egestas egestas. Interdum velit laoreet id donec ultrices tincidunt. Fringilla urna porttitor rhoncus dolor purus. Et ultrices neque ornare aenean. Vitae ultricies leo integer malesuada nunc. A diam sollicitudin tempor id eu nisl nunc mi ipsum. Neque viverra justo nec ultrices dui sapien eget mi. Dictum non consectetur a erat nam at lectus. Aenean sed adipiscing diam donec adipiscing tristique risus nec.
-
-
Mi quis hendrerit dolor magna eget est lorem. Dignissim enim sit amet venenatis urna cursus eget nunc scelerisque. Adipiscing diam donec adipiscing tristique risus. Viverra mauris in aliquam sem fringilla ut morbi tincidunt augue. Dui ut ornare lectus sit amet est. Nunc eget lorem dolor sed. Ac turpis egestas integer eget aliquet nibh praesent tristique. Mattis molestie a iaculis at erat pellentesque adipiscing. Est ullamcorper eget nulla facilisi etiam dignissim. Arcu ac tortor dignissim convallis. Orci ac auctor augue mauris. Commodo viverra maecenas accumsan lacus vel facilisis volutpat est. Amet commodo nulla facilisi nullam vehicula ipsum. Amet risus nullam eget felis eget. Et sollicitudin ac orci phasellus. Ultrices mi tempus imperdiet nulla. Tincidunt nunc pulvinar sapien et ligula ullamcorper. Diam vulputate ut pharetra sit. Suspendisse potenti nullam ac tortor vitae purus faucibus. Ultrices mi tempus imperdiet nulla malesuada pellentesque elit.
-
->
-```
-
-
diff --git a/packages/react/src/scroll-indicator/index.md b/packages/react/src/scroll-indicator/index.md
index c49b9ef2..623b23f4 100644
--- a/packages/react/src/scroll-indicator/index.md
+++ b/packages/react/src/scroll-indicator/index.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Target from './demo/target.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import TargetDemo from './demo/Target';
+import TargetSource from './demo/Target.tsx?raw';
# Scroll Indicator
@@ -17,8 +19,24 @@ import { ScrollIndicator } from 'tiny-design';
## Examples
-
-
+
+
+### Basic
+
+A basic example.
+
+
+
+
+
+
+### Container to scroll
+
+Set a target, which is listen to scroll event of target element (default is `window`).
+
+
+
+
## API
diff --git a/packages/react/src/scroll-indicator/index.zh_CN.md b/packages/react/src/scroll-indicator/index.zh_CN.md
index f7abcf03..c5d54bbc 100644
--- a/packages/react/src/scroll-indicator/index.zh_CN.md
+++ b/packages/react/src/scroll-indicator/index.zh_CN.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Target from './demo/target.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import TargetDemo from './demo/Target';
+import TargetSource from './demo/Target.tsx?raw';
# Scroll Indicator
@@ -17,8 +19,24 @@ import { ScrollIndicator } from 'tiny-design';
## 代码示例
-
-
+
+
+### 基本用法
+
+一个基础示例。
+
+
+
+
+
+
+### 容器滚动
+
+设置 target 属性,监听目标元素的滚动事件(默认为 `window`)。
+
+
+
+
## API
diff --git a/packages/react/src/segmented/demo/basic.md b/packages/react/src/segmented/demo/Basic.tsx
similarity index 79%
rename from packages/react/src/segmented/demo/basic.md
rename to packages/react/src/segmented/demo/Basic.tsx
index 086c33ea..812375b1 100644
--- a/packages/react/src/segmented/demo/basic.md
+++ b/packages/react/src/segmented/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Segmented } from '@tiny-design/react';
-### Basic
-
-Simplest usage of Segmented control.
-
-```jsx live
-() => {
+export default function BasicDemo() {
return (
@@ -20,7 +16,4 @@ Simplest usage of Segmented control.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/segmented/demo/disabled.md b/packages/react/src/segmented/demo/Disabled.tsx
similarity index 77%
rename from packages/react/src/segmented/demo/disabled.md
rename to packages/react/src/segmented/demo/Disabled.tsx
index 2266582a..8e897bf7 100644
--- a/packages/react/src/segmented/demo/disabled.md
+++ b/packages/react/src/segmented/demo/Disabled.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Segmented } from '@tiny-design/react';
-### Disabled
-
-Disable the entire control or individual options.
-
-```jsx live
-() => {
+export default function DisabledDemo() {
return (
@@ -18,7 +14,4 @@ Disable the entire control or individual options.
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/segmented/demo/icon.md b/packages/react/src/segmented/demo/Icon.tsx
similarity index 58%
rename from packages/react/src/segmented/demo/icon.md
rename to packages/react/src/segmented/demo/Icon.tsx
index ed004101..8604e3bb 100644
--- a/packages/react/src/segmented/demo/icon.md
+++ b/packages/react/src/segmented/demo/Icon.tsx
@@ -1,11 +1,8 @@
-
+import React from 'react';
+import { Segmented } from '@tiny-design/react';
+import { IconUser, IconStar, IconWifi } from '@tiny-design/icons';
-### With Icons
-
-Add icons to segmented options using the `icon` property.
-
-```jsx live
-() => {
+export default function IconDemo() {
return (
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/segmented/demo/size.md b/packages/react/src/segmented/demo/Size.tsx
similarity index 73%
rename from packages/react/src/segmented/demo/size.md
rename to packages/react/src/segmented/demo/Size.tsx
index 2f1aa5a1..ad2045c2 100644
--- a/packages/react/src/segmented/demo/size.md
+++ b/packages/react/src/segmented/demo/Size.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Segmented } from '@tiny-design/react';
-### Size
-
-Three sizes: `sm`, `md`, and `lg`.
-
-```jsx live
-() => {
+export default function SizeDemo() {
return (
@@ -13,7 +9,4 @@ Three sizes: `sm`, `md`, and `lg`.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/segmented/index.md b/packages/react/src/segmented/index.md
index 4fc07ebe..25437cf4 100644
--- a/packages/react/src/segmented/index.md
+++ b/packages/react/src/segmented/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import IconDemo from './demo/icon.md'
-import Size from './demo/size.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
# Segmented
@@ -21,12 +25,44 @@ import { Segmented } from 'tiny-design';
-
-
+
+
+### Basic
+
+Simplest usage of Segmented control.
+
+
+
+
+
+
+### With Icons
+
+Add icons to segmented options using the `icon` property.
+
+
+
+
-
-
+
+
+### Size
+
+Three sizes: `sm`, `md`, and `lg`.
+
+
+
+
+
+
+### Disabled
+
+Disable the entire control or individual options.
+
+
+
+
@@ -49,4 +85,4 @@ import { Segmented } from 'tiny-design';
| label | display text | ReactNode | |
| value | option value | string \| number | |
| disabled | disable this option | boolean | false |
-| icon | icon node | ReactNode | |
+| icon | icon node | ReactNode | |
\ No newline at end of file
diff --git a/packages/react/src/segmented/index.zh_CN.md b/packages/react/src/segmented/index.zh_CN.md
index 5498f793..d91a64b0 100644
--- a/packages/react/src/segmented/index.zh_CN.md
+++ b/packages/react/src/segmented/index.zh_CN.md
@@ -1,4 +1,11 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
# Segmented 分段控制器
@@ -18,7 +25,44 @@ import { Segmented } from 'tiny-design';
-
+
+
+### 基础用法
+
+最简单的使用方式。
+
+
+
+
+
+
+### 带图标
+
+使用 `icon` 属性为分段选项添加图标。
+
+
+
+
+
+
+
+
+### 尺寸
+
+三种尺寸: `sm`, `md`, `lg`。
+
+
+
+
+
+
+### 禁用
+
+禁用整个控件或单个选项。
+
+
+
+
@@ -41,4 +85,4 @@ import { Segmented } from 'tiny-design';
| label | 显示文本 | ReactNode | |
| value | 选项值 | string \| number | |
| disabled | 禁用此选项 | boolean | false |
-| icon | 图标 | ReactNode | |
+| icon | 图标 | ReactNode | |
\ No newline at end of file
diff --git a/packages/react/src/select/demo/basic.md b/packages/react/src/select/demo/Basic.tsx
similarity index 82%
rename from packages/react/src/select/demo/basic.md
rename to packages/react/src/select/demo/Basic.tsx
index a0292a77..732b7ab8 100644
--- a/packages/react/src/select/demo/basic.md
+++ b/packages/react/src/select/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Select } from '@tiny-design/react';
-### Basic
-
-Basic usage of Select.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const [value, setValue] = React.useState('');
return (
@@ -22,7 +18,4 @@ Basic usage of Select.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/select/demo/custom.md b/packages/react/src/select/demo/Custom.tsx
similarity index 82%
rename from packages/react/src/select/demo/custom.md
rename to packages/react/src/select/demo/Custom.tsx
index 4dffc745..cc51c3c0 100644
--- a/packages/react/src/select/demo/custom.md
+++ b/packages/react/src/select/demo/Custom.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Select } from '@tiny-design/react';
-### Custom Rendering & Loading
-
-Use the `options` prop for data-driven rendering, `optionRender` for custom option content, and `loading` for async states.
-
-```jsx live
-() => {
+export default function CustomDemo() {
const [loading, setLoading] = React.useState(false);
const [options, setOptions] = React.useState([
{ value: 'react', label: 'React' },
@@ -41,7 +37,4 @@ Use the `options` prop for data-driven rendering, `optionRender` for custom opti
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/select/demo/groups.md b/packages/react/src/select/demo/Groups.tsx
similarity index 87%
rename from packages/react/src/select/demo/groups.md
rename to packages/react/src/select/demo/Groups.tsx
index 54edb6ba..036c23c0 100644
--- a/packages/react/src/select/demo/groups.md
+++ b/packages/react/src/select/demo/Groups.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Select } from '@tiny-design/react';
-### Option Groups
-
-Use `OptGroup` to group options together.
-
-```jsx live
-() => {
+export default function GroupsDemo() {
const [value, setValue] = React.useState('');
return (
@@ -28,7 +24,4 @@ Use `OptGroup` to group options together.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/select/demo/multiple.md b/packages/react/src/select/demo/Multiple.tsx
similarity index 78%
rename from packages/react/src/select/demo/multiple.md
rename to packages/react/src/select/demo/Multiple.tsx
index b7222a4b..b1524728 100644
--- a/packages/react/src/select/demo/multiple.md
+++ b/packages/react/src/select/demo/Multiple.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Select } from '@tiny-design/react';
-### Multiple
-
-Multiple selection mode displays selected items as tags. Set `mode="multiple"` and optionally `showSearch` for filtering.
-
-```jsx live
-() => {
+export default function MultipleDemo() {
const [value, setValue] = React.useState(['apple', 'cherry']);
return (
@@ -26,7 +22,4 @@ Multiple selection mode displays selected items as tags. Set `mode="multiple"` a
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/select/demo/render.md b/packages/react/src/select/demo/Render.tsx
similarity index 63%
rename from packages/react/src/select/demo/render.md
rename to packages/react/src/select/demo/Render.tsx
index c4e339c6..79d30465 100644
--- a/packages/react/src/select/demo/render.md
+++ b/packages/react/src/select/demo/Render.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Select } from '@tiny-design/react';
-### Custom Rendering
-
-Use `optionRender` to customize dropdown items and `labelRender` to customize the selected label.
-
-```jsx live
-() => {
+export default function RenderDemo() {
const options = [
{ value: 'red', label: 'Red' },
{ value: 'green', label: 'Green' },
@@ -22,13 +18,15 @@ Use `optionRender` to customize dropdown items and `labelRender` to customize th
options={options}
optionRender={(option) => (
-
+
{option.label}
)}
@@ -37,7 +35,4 @@ Use `optionRender` to customize dropdown items and `labelRender` to customize th
)}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/select/demo/search.md b/packages/react/src/select/demo/Search.tsx
similarity index 83%
rename from packages/react/src/select/demo/search.md
rename to packages/react/src/select/demo/Search.tsx
index 20924d18..396a7d3f 100644
--- a/packages/react/src/select/demo/search.md
+++ b/packages/react/src/select/demo/Search.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Select } from '@tiny-design/react';
-### Search
-
-Select with search functionality. Set `showSearch` to enable filtering.
-
-```jsx live
-() => {
+export default function SearchDemo() {
const [value, setValue] = React.useState('');
return (
@@ -25,7 +21,4 @@ Select with search functionality. Set `showSearch` to enable filtering.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/select/demo/Sizes.tsx b/packages/react/src/select/demo/Sizes.tsx
new file mode 100644
index 00000000..f723fde4
--- /dev/null
+++ b/packages/react/src/select/demo/Sizes.tsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import { Select } from '@tiny-design/react';
+
+export default function SizesDemo() {
+ return (
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/select/demo/sizes.md b/packages/react/src/select/demo/sizes.md
deleted file mode 100644
index c3145eca..00000000
--- a/packages/react/src/select/demo/sizes.md
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-### Sizes
-
-Three sizes: `sm`, `md` (default), and `lg`.
-
-```jsx live
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/select/index.md b/packages/react/src/select/index.md
index 2f1c7711..d60c8b78 100644
--- a/packages/react/src/select/index.md
+++ b/packages/react/src/select/index.md
@@ -1,10 +1,17 @@
-import Basic from './demo/basic.md'
-import Search from './demo/search.md'
-import Multiple from './demo/multiple.md'
-import Render from './demo/render.md'
-import Sizes from './demo/sizes.md'
-import Groups from './demo/groups.md'
-import Custom from './demo/custom.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SearchDemo from './demo/Search';
+import SearchSource from './demo/Search.tsx?raw';
+import MultipleDemo from './demo/Multiple';
+import MultipleSource from './demo/Multiple.tsx?raw';
+import SizesDemo from './demo/Sizes';
+import SizesSource from './demo/Sizes.tsx?raw';
+import GroupsDemo from './demo/Groups';
+import GroupsSource from './demo/Groups.tsx?raw';
+import CustomDemo from './demo/Custom';
+import CustomSource from './demo/Custom.tsx?raw';
+import RenderDemo from './demo/Render';
+import RenderSource from './demo/Render.tsx?raw';
# Select
@@ -28,15 +35,71 @@ const { Option, OptGroup } = Select;
-
-
-
+
+
+### Basic
+
+Basic usage of Select.
+
+
+
+
+
+
+### Search
+
+Select with search functionality. Set `showSearch` to enable filtering.
+
+
+
+
+
+
+### Multiple
+
+Multiple selection mode displays selected items as tags. Set `mode="multiple"` and optionally `showSearch` for filtering.
+
+
+
+
-
-
-
-
+
+
+### Sizes
+
+Three sizes: `sm`, `md` (default), and `lg`.
+
+
+
+
+
+
+### Option Groups
+
+Use `OptGroup` to group options together.
+
+
+
+
+
+
+### Custom Rendering & Loading
+
+Use the `options` prop for data-driven rendering, `optionRender` for custom option content, and `loading` for async states.
+
+
+
+
+
+
+### Custom Rendering
+
+Use `optionRender` to customize dropdown items and `labelRender` to customize the selected label.
+
+
+
+
@@ -83,4 +146,4 @@ const { Option, OptGroup } = Select;
| Property | Description | Type | Default |
| -------- | ------------------- | ------ | ------- |
-| label | Group label | string | - |
+| label | Group label | string | - |
\ No newline at end of file
diff --git a/packages/react/src/select/index.zh_CN.md b/packages/react/src/select/index.zh_CN.md
index 68705c52..f1ded113 100644
--- a/packages/react/src/select/index.zh_CN.md
+++ b/packages/react/src/select/index.zh_CN.md
@@ -1,9 +1,17 @@
-import Basic from './demo/basic.md'
-import Search from './demo/search.md'
-import Multiple from './demo/multiple.md'
-import Sizes from './demo/sizes.md'
-import Groups from './demo/groups.md'
-import Custom from './demo/custom.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SearchDemo from './demo/Search';
+import SearchSource from './demo/Search.tsx?raw';
+import MultipleDemo from './demo/Multiple';
+import MultipleSource from './demo/Multiple.tsx?raw';
+import SizesDemo from './demo/Sizes';
+import SizesSource from './demo/Sizes.tsx?raw';
+import GroupsDemo from './demo/Groups';
+import GroupsSource from './demo/Groups.tsx?raw';
+import CustomDemo from './demo/Custom';
+import CustomSource from './demo/Custom.tsx?raw';
+import RenderDemo from './demo/Render';
+import RenderSource from './demo/Render.tsx?raw';
# Select
@@ -27,14 +35,71 @@ const { Option, OptGroup } = Select;
-
-
-
+
+
+### 基本用法
+
+Select 组件的基本用法。
+
+
+
+
+
+
+### 搜索
+
+带搜索功能的下拉框。设置 `showSearch` 启用过滤功能。
+
+
+
+
+
+
+### 多选
+
+多选模式会将已选项目展示为标签。设置 `mode="multiple"`,可配合 `showSearch` 进行过滤。
+
+
+
+
-
-
-
+
+
+### 尺寸
+
+三种尺寸:`sm`、`md`(默认)和 `lg`。
+
+
+
+
+
+
+### 分组
+
+使用 `OptGroup` 对选项进行分组。
+
+
+
+
+
+
+### 自定义渲染和加载
+
+使用 `options` 属性进行数据驱动渲染,`optionRender` 自定义选项内容,`loading` 显示加载状态。
+
+
+
+
+
+
+### 自定义渲染
+
+使用 `optionRender` 自定义下拉项,`labelRender` 自定义选中标签。
+
+
+
+
@@ -81,4 +146,4 @@ const { Option, OptGroup } = Select;
| 属性 | 说明 | 类型 | 默认值 |
| -------- | --------------- | ------ | ------- |
-| label | 分组标签 | string | - |
+| label | 分组标签 | string | - |
\ No newline at end of file
diff --git a/packages/react/src/skeleton/demo/Active.tsx b/packages/react/src/skeleton/demo/Active.tsx
new file mode 100644
index 00000000..2217e491
--- /dev/null
+++ b/packages/react/src/skeleton/demo/Active.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import { Skeleton } from '@tiny-design/react';
+
+export default function ActiveDemo() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/skeleton/demo/Basic.tsx b/packages/react/src/skeleton/demo/Basic.tsx
new file mode 100644
index 00000000..00b742db
--- /dev/null
+++ b/packages/react/src/skeleton/demo/Basic.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import { Skeleton } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/skeleton/demo/Combination.tsx b/packages/react/src/skeleton/demo/Combination.tsx
new file mode 100644
index 00000000..9db824c2
--- /dev/null
+++ b/packages/react/src/skeleton/demo/Combination.tsx
@@ -0,0 +1,25 @@
+import React from 'react';
+import { Skeleton, ConfigProvider, Row, Col } from '@tiny-design/react';
+
+export default function CombinationDemo() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/skeleton/demo/active.md b/packages/react/src/skeleton/demo/active.md
deleted file mode 100644
index f76717b5..00000000
--- a/packages/react/src/skeleton/demo/active.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### Active
-
-Set `active={true}` to activate the Shimmer effect.
-
-```jsx live
-<>
-
-
-
-
->
-```
-
-
diff --git a/packages/react/src/skeleton/demo/basic.md b/packages/react/src/skeleton/demo/basic.md
deleted file mode 100644
index 409f3931..00000000
--- a/packages/react/src/skeleton/demo/basic.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### Basic
-
-Simplest Skeleton usage.
-
-```jsx live
-<>
-
-
-
-
->
-```
-
-
diff --git a/packages/react/src/skeleton/demo/combination.md b/packages/react/src/skeleton/demo/combination.md
deleted file mode 100644
index 010e80f1..00000000
--- a/packages/react/src/skeleton/demo/combination.md
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-### Combination
-
-A complex example.
-
-> Consider using `` to set `active` prop in once.
-
-```jsx live
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/skeleton/index.md b/packages/react/src/skeleton/index.md
index 8666c104..b493e3e0 100644
--- a/packages/react/src/skeleton/index.md
+++ b/packages/react/src/skeleton/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Active from './demo/active.md'
-import Combination from './demo/combination.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ActiveDemo from './demo/Active';
+import ActiveSource from './demo/Active.tsx?raw';
+import CombinationDemo from './demo/Combination';
+import CombinationSource from './demo/Combination.tsx?raw';
# Skeleton
@@ -20,13 +23,39 @@ import { Skeleton } from 'tiny-design';
## Examples
-
-
-
+
+
+### Basic
+
+Simplest Skeleton usage.
+
+
+
+
+
+
+### Active
+
+Set `active={true}` to activate the Shimmer effect.
+
+
+
+
+
+
+### Combination
+
+A complex example.
+
+> Consider using `` to set `active` prop in once.
+
+
+
+
## API
| Property | Description | Type | Default |
| ----------------- | ------------------------------------------------- | ----------------------------- | --------- |
| active | turn on Shimmer effect. | boolean | false |
-| rounded | display a circle skeleton | boolean | false |
+| rounded | display a circle skeleton | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/skeleton/index.zh_CN.md b/packages/react/src/skeleton/index.zh_CN.md
index fd1345b5..e2ce9312 100644
--- a/packages/react/src/skeleton/index.zh_CN.md
+++ b/packages/react/src/skeleton/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Active from './demo/active.md'
-import Combination from './demo/combination.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ActiveDemo from './demo/Active';
+import ActiveSource from './demo/Active.tsx?raw';
+import CombinationDemo from './demo/Combination';
+import CombinationSource from './demo/Combination.tsx?raw';
# Skeleton
@@ -20,13 +23,39 @@ import { Skeleton } from 'tiny-design';
## 代码示例
-
-
-
+
+
+### 基础用法
+
+最简单的骨架屏用法。
+
+
+
+
+
+
+### 动画效果
+
+设置 `active={true}` 开启微光动画效果。
+
+
+
+
+
+
+### 组合使用
+
+一个复杂示例。
+
+> 可以使用 `` 一次性设置 `shimmer` 属性。
+
+
+
+
## API
| 属性 | 说明 | 类型 | 默认值 |
| ----------------- | ----------------------------------------- | ----------------------------- | --------- |
| active | 是否开启微光动画效果 | boolean | false |
-| rounded | 是否显示为圆形骨架屏 | boolean | false |
+| rounded | 是否显示为圆形骨架屏 | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/Basic.tsx b/packages/react/src/slider/demo/Basic.tsx
new file mode 100644
index 00000000..b2834d64
--- /dev/null
+++ b/packages/react/src/slider/demo/Basic.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Slider } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/CustomisedTooltip.tsx b/packages/react/src/slider/demo/CustomisedTooltip.tsx
new file mode 100644
index 00000000..58874ffd
--- /dev/null
+++ b/packages/react/src/slider/demo/CustomisedTooltip.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Slider } from '@tiny-design/react';
+
+export default function CustomisedTooltipDemo() {
+ return `${val}%`} />;
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/Disabled.tsx b/packages/react/src/slider/demo/Disabled.tsx
new file mode 100644
index 00000000..c26874aa
--- /dev/null
+++ b/packages/react/src/slider/demo/Disabled.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import { Slider, Flex } from '@tiny-design/react';
+
+export default function DisabledDemo() {
+ return (
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/Dots.tsx b/packages/react/src/slider/demo/Dots.tsx
new file mode 100644
index 00000000..8cf1e2f6
--- /dev/null
+++ b/packages/react/src/slider/demo/Dots.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Slider, Flex } from '@tiny-design/react';
+
+export default function DotsDemo() {
+ return (
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/Dual.tsx b/packages/react/src/slider/demo/Dual.tsx
new file mode 100644
index 00000000..82cc3229
--- /dev/null
+++ b/packages/react/src/slider/demo/Dual.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Slider } from '@tiny-design/react';
+
+export default function DualDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/marker.md b/packages/react/src/slider/demo/Marker.tsx
similarity index 67%
rename from packages/react/src/slider/demo/marker.md
rename to packages/react/src/slider/demo/Marker.tsx
index 069c1824..f6505758 100644
--- a/packages/react/src/slider/demo/marker.md
+++ b/packages/react/src/slider/demo/Marker.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Slider, Flex } from '@tiny-design/react';
-### Marker
-
-Display marker on the slider bar.
-
-```jsx live
-() => {
+export default function MarkerDemo() {
const marks = {
'-10': {
style: { color: '#1890ff' },
@@ -31,12 +27,9 @@ Display marker on the slider bar.
};
return (
- <>
-
-
- >
- )
-}
-```
-
-
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/TooltipVisible.tsx b/packages/react/src/slider/demo/TooltipVisible.tsx
new file mode 100644
index 00000000..b9d8c11a
--- /dev/null
+++ b/packages/react/src/slider/demo/TooltipVisible.tsx
@@ -0,0 +1,16 @@
+import React, { useState } from 'react';
+import { Slider, Flex, Switch } from '@tiny-design/react';
+
+export default function TooltipVisibleDemo() {
+ const [show, setShow] = useState(true);
+
+ return (
+
+
+
+ Tooltip visible:
+ setShow(checked)} />
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/Track.tsx b/packages/react/src/slider/demo/Track.tsx
new file mode 100644
index 00000000..c27280ab
--- /dev/null
+++ b/packages/react/src/slider/demo/Track.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Slider } from '@tiny-design/react';
+
+export default function TrackDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/vertical.md b/packages/react/src/slider/demo/Vertical.tsx
similarity index 79%
rename from packages/react/src/slider/demo/vertical.md
rename to packages/react/src/slider/demo/Vertical.tsx
index 61175e5d..f5819dd8 100644
--- a/packages/react/src/slider/demo/vertical.md
+++ b/packages/react/src/slider/demo/Vertical.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Slider, Flex } from '@tiny-design/react';
-### Vertical mode
-
-Use `direction` to create a vertical slider.
-
-```jsx live
-() => {
+export default function VerticalDemo() {
const style = {
display: 'inline-block',
height: 300,
@@ -23,7 +19,7 @@ Use `direction` to create a vertical slider.
};
return (
- <>
+
@@ -33,9 +29,6 @@ Use `direction` to create a vertical slider.
- >
+
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/slider/demo/basic.md b/packages/react/src/slider/demo/basic.md
deleted file mode 100644
index a3a5d88e..00000000
--- a/packages/react/src/slider/demo/basic.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Basic
-
-A basic example.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/slider/demo/customised-tooltip.md b/packages/react/src/slider/demo/customised-tooltip.md
deleted file mode 100644
index 7384da8b..00000000
--- a/packages/react/src/slider/demo/customised-tooltip.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Customise tooltip
-
-Use `tipFormatter` to format content of `Tooltip`.
-
-```jsx live
- `${val}%`}/>
-```
-
-
diff --git a/packages/react/src/slider/demo/disabled.md b/packages/react/src/slider/demo/disabled.md
deleted file mode 100644
index 0e6cd2d1..00000000
--- a/packages/react/src/slider/demo/disabled.md
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-### Disabled Slider
-
-Disabled Sliders.
-
-```jsx live
-<>
-
-
->
-```
-
-
diff --git a/packages/react/src/slider/demo/dots.md b/packages/react/src/slider/demo/dots.md
deleted file mode 100644
index e52b545e..00000000
--- a/packages/react/src/slider/demo/dots.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Dots
-
-Display dots on the slider bar.
-
-```jsx live
-<>
-
-
-
->
-```
-
-
diff --git a/packages/react/src/slider/demo/dual.md b/packages/react/src/slider/demo/dual.md
deleted file mode 100644
index 9832ee02..00000000
--- a/packages/react/src/slider/demo/dual.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Dual Slider
-
-Pass a number array to the value to display a dual slider.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/slider/demo/tooltip-visible.md b/packages/react/src/slider/demo/tooltip-visible.md
deleted file mode 100644
index 08d8b606..00000000
--- a/packages/react/src/slider/demo/tooltip-visible.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-### Control visible of ToolTip
-
-When `tooltipVisible` is true, `ToolTip` will always show even if dragging or hovering.
-
-```jsx live
-() => {
- const [show, setShow] = React.useState(true);
-
- return (
- <>
-
- Tooltip visible: setShow(checked)}/>
- >
- );
-}
-```
-
-
diff --git a/packages/react/src/slider/demo/track.md b/packages/react/src/slider/demo/track.md
deleted file mode 100644
index 696451b4..00000000
--- a/packages/react/src/slider/demo/track.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### No track
-
-Set `track={false}` to hide the track.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/slider/index.md b/packages/react/src/slider/index.md
index 89ed7114..900083ee 100644
--- a/packages/react/src/slider/index.md
+++ b/packages/react/src/slider/index.md
@@ -1,12 +1,21 @@
-import Basic from './demo/basic.md'
-import Dual from './demo/dual.md'
-import Vertical from './demo/vertical.md'
-import Dots from './demo/dots.md'
-import Marker from './demo/marker.md'
-import CustomisedTooltip from './demo/customised-tooltip.md'
-import Disabled from './demo/disabled.md'
-import TooltipVisible from './demo/tooltip-visible.md'
-import Track from './demo/track.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DualDemo from './demo/Dual';
+import DualSource from './demo/Dual.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import DotsDemo from './demo/Dots';
+import DotsSource from './demo/Dots.tsx?raw';
+import MarkerDemo from './demo/Marker';
+import MarkerSource from './demo/Marker.tsx?raw';
+import CustomisedTooltipDemo from './demo/CustomisedTooltip';
+import CustomisedTooltipSource from './demo/CustomisedTooltip.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import TooltipVisibleDemo from './demo/TooltipVisible';
+import TooltipVisibleSource from './demo/TooltipVisible.tsx?raw';
+import TrackDemo from './demo/Track';
+import TrackSource from './demo/Track.tsx?raw';
# Slider
@@ -26,17 +35,89 @@ import { Slider } from 'tiny-design';
-
-
-
-
-
+
+
+### Basic
+
+A basic example.
+
+
+
+
+
+
+### Dual Slider
+
+Pass a number array to the value to display a dual slider.
+
+
+
+
+
+
+### Dots
+
+Display dots on the slider bar.
+
+
+
+
+
+
+### Marker
+
+Display marker on the slider bar.
+
+
+
+
+
+
+### Disabled Slider
+
+Disabled Sliders.
+
+
+
+
-
-
-
-
+
+
+### Vertical mode
+
+Use `direction` to create a vertical slider.
+
+
+
+
+
+
+### Customise tooltip
+
+Use `tipFormatter` to format content of `Tooltip`.
+
+
+
+
+
+
+### Control visible of ToolTip
+
+When `tooltipVisible` is true, `ToolTip` will always show even if dragging or hovering.
+
+
+
+
+
+
+### No track
+
+Set `track={false}` to hide the track.
+
+
+
+
@@ -60,4 +141,4 @@ import { Slider } from 'tiny-design';
| onChange | callback function that is fired when the user changes the slider's value. | (value) => void | |
| onAfterChange | callback when `onmouseup` is fired. | (value) => void | |
| style | style object of container object. | CSSProperties | |
-| className | className of container. | string | |
+| className | className of container. | string | |
\ No newline at end of file
diff --git a/packages/react/src/slider/index.zh_CN.md b/packages/react/src/slider/index.zh_CN.md
index 6192b1d6..d7f1bb9f 100644
--- a/packages/react/src/slider/index.zh_CN.md
+++ b/packages/react/src/slider/index.zh_CN.md
@@ -1,12 +1,21 @@
-import Basic from './demo/basic.md'
-import Dual from './demo/dual.md'
-import Vertical from './demo/vertical.md'
-import Dots from './demo/dots.md'
-import Marker from './demo/marker.md'
-import CustomisedTooltip from './demo/customised-tooltip.md'
-import Disabled from './demo/disabled.md'
-import TooltipVisible from './demo/tooltip-visible.md'
-import Track from './demo/track.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DualDemo from './demo/Dual';
+import DualSource from './demo/Dual.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import DotsDemo from './demo/Dots';
+import DotsSource from './demo/Dots.tsx?raw';
+import MarkerDemo from './demo/Marker';
+import MarkerSource from './demo/Marker.tsx?raw';
+import CustomisedTooltipDemo from './demo/CustomisedTooltip';
+import CustomisedTooltipSource from './demo/CustomisedTooltip.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import TooltipVisibleDemo from './demo/TooltipVisible';
+import TooltipVisibleSource from './demo/TooltipVisible.tsx?raw';
+import TrackDemo from './demo/Track';
+import TrackSource from './demo/Track.tsx?raw';
# Slider
@@ -26,17 +35,89 @@ import { Slider } from 'tiny-design';
-
-
-
-
-
+
+
+### 基本用法
+
+一个基本的例子。
+
+
+
+
+
+
+### 双滑块
+
+传入一个数字数组来显示双滑块。
+
+
+
+
+
+
+### 点状
+
+在滑块上显示点。
+
+
+
+
+
+
+### 标记
+
+在滑块上显示标记。
+
+
+
+
+
+
+### 禁用滑块
+
+禁用滑块。
+
+
+
+
-
-
-
-
+
+
+### 垂直模式
+
+使用 `direction` 创建垂直滑块。
+
+
+
+
+
+
+### 自定义提示
+
+使用 `tipFormatter` 来格式化 `Tooltip` 的内容。
+
+
+
+
+
+
+### 控制 ToolTip 的显示
+
+当 `tooltipVisible` 为 true 时,即使拖动或悬停也会始终显示 ToolTip。
+
+
+
+
+
+
+### 不显示轨道
+
+设置 `track={false}` 隐藏轨道。
+
+
+
+
@@ -60,4 +141,4 @@ import { Slider } from 'tiny-design';
| onChange | 用户改变滑块值时触发的回调函数 | (value) => void | |
| onAfterChange | `onmouseup` 触发时的回调 | (value) => void | |
| style | 容器的样式对象 | CSSProperties | |
-| className | 容器的类名 | string | |
+| className | 容器的类名 | string | |
\ No newline at end of file
diff --git a/packages/react/src/space/demo/align.md b/packages/react/src/space/demo/Align.tsx
similarity index 73%
rename from packages/react/src/space/demo/align.md
rename to packages/react/src/space/demo/Align.tsx
index 410637fd..0b725215 100644
--- a/packages/react/src/space/demo/align.md
+++ b/packages/react/src/space/demo/Align.tsx
@@ -1,28 +1,24 @@
-
+import React, { useState } from 'react';
+import { Button, Space, Radio } from '@tiny-design/react';
-### Align
-
-Item align.
-
-```jsx live
-() => {
+export default function AlignDemo() {
const wrapperStyle = {
display: 'inline-block',
border: '1px solid #6E41BF',
padding: 4,
};
-
+
const boxStyle = {
display: 'inline-block',
padding: '16px 8px 32px',
background: 'rgba(150, 150, 150, 0.2)',
};
- const [align, setAlign] = React.useState('center');
+ const [align, setAlign] = useState('center');
return (
<>
- setAlign(val)}>
+ setAlign(val)}>
StartCenterEnd
@@ -39,7 +35,4 @@ Item align.
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/space/demo/Basic.tsx b/packages/react/src/space/demo/Basic.tsx
new file mode 100644
index 00000000..33a692ac
--- /dev/null
+++ b/packages/react/src/space/demo/Basic.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Button, Space, PopConfirm } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+ Space
+ Button
+ Another Button
+
+ Confirm
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/space/demo/size.md b/packages/react/src/space/demo/Size.tsx
similarity index 66%
rename from packages/react/src/space/demo/size.md
rename to packages/react/src/space/demo/Size.tsx
index 92f4de40..2db93bfc 100644
--- a/packages/react/src/space/demo/size.md
+++ b/packages/react/src/space/demo/Size.tsx
@@ -1,18 +1,14 @@
-
+import React, { useState } from 'react';
+import { Button, Space, Divider, Radio, Slider } from '@tiny-design/react';
-### Space Size
+export default function SizeDemo() {
+ const [size, setSize] = useState('sm');
+ const [numSize, setNumSize] = useState(10);
-`small`, `medium` and `large` preset sizes.
-
-```jsx live
-() => {
- const [size, setSize] = React.useState('sm');
- const [numSize, setNumSize] = React.useState(10);
-
return (
<>
Use Preset
- setSize(val)}>
+ setSize(val)}>
SmallMediumLarge
@@ -29,7 +25,7 @@
Use Number
- setNumSize(val)}/>
+ setNumSize(val)} />
PrimaryDefault
@@ -38,7 +34,4 @@
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/space/demo/Vertical.tsx b/packages/react/src/space/demo/Vertical.tsx
new file mode 100644
index 00000000..39cd1bc9
--- /dev/null
+++ b/packages/react/src/space/demo/Vertical.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Button, Space, PopConfirm } from '@tiny-design/react';
+
+export default function VerticalDemo() {
+ return (
+
+ Space
+ Button
+ Another Button
+
+ Confirm
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/space/demo/basic.md b/packages/react/src/space/demo/basic.md
deleted file mode 100644
index 8f58c169..00000000
--- a/packages/react/src/space/demo/basic.md
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-### Basic Usage
-
-Distribute components in a horizontal space.
-
-```jsx live
-
- Space
- Button
- Another Button
-
- Confirm
-
-
-```
-
-
diff --git a/packages/react/src/space/demo/vertical.md b/packages/react/src/space/demo/vertical.md
deleted file mode 100644
index 40a0184b..00000000
--- a/packages/react/src/space/demo/vertical.md
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-### Vertical Space
-
-Distribute components in a vertical space.
-
-```jsx live
-
- Space
- Button
- Another Button
-
- Confirm
-
-
-```
-
-
diff --git a/packages/react/src/space/index.md b/packages/react/src/space/index.md
index 92ec8db3..fba30a44 100644
--- a/packages/react/src/space/index.md
+++ b/packages/react/src/space/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Vertical from './demo/vertical.md'
-import Size from './demo/size.md'
-import Align from './demo/align.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import AlignDemo from './demo/Align';
+import AlignSource from './demo/Align.tsx?raw';
# Space
@@ -21,12 +25,44 @@ import { Space } from 'tiny-design';
-
-
+
+
+### Basic Usage
+
+Distribute components in a horizontal space.
+
+
+
+
+
+
+### Space Size
+
+`small`, `medium` and `large` preset sizes.
+
+
+
+
-
-
+
+
+### Vertical Space
+
+Distribute components in a vertical space.
+
+
+
+
+
+
+### Align
+
+Item align.
+
+
+
+
@@ -36,5 +72,4 @@ import { Space } from 'tiny-design';
| --------- | ----------------- | ------------------------------------------------------------- | ------------- |
| align | align items | enum: `start` | `end` | `center` | `baseline` | `center` |
| direction | space direction | enum: `horizontal` | `vertical` | `horizontal` |
-| size | space size | enum: `sm` | `md` | `lg` | `number` | `sm` |
-
+| size | space size | enum: `sm` | `md` | `lg` | `number` | `sm` |
\ No newline at end of file
diff --git a/packages/react/src/space/index.zh_CN.md b/packages/react/src/space/index.zh_CN.md
index b581bcd4..71c27170 100644
--- a/packages/react/src/space/index.zh_CN.md
+++ b/packages/react/src/space/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Vertical from './demo/vertical.md'
-import Size from './demo/size.md'
-import Align from './demo/align.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import AlignDemo from './demo/Align';
+import AlignSource from './demo/Align.tsx?raw';
# Space
@@ -19,10 +23,48 @@ import { Space } from 'tiny-design';
## 代码示例
-
-
-
-
+
+
+
+
+### 基础用法
+
+水平排列组件。
+
+
+
+
+
+
+### 间距大小
+
+预设三种间距大小。
+
+
+
+
+
+
+
+
+### 垂直方向
+
+垂直排列组件。
+
+
+
+
+
+
+### 对齐方式
+
+设置对齐方式。
+
+
+
+
+
+
## API
@@ -30,5 +72,4 @@ import { Space } from 'tiny-design';
| --------- | ----------------- | ------------------------------------------------------------- | ------------- |
| align | 对齐方式 | enum: `start` | `end` | `center` | `baseline` | `center` |
| direction | 间距方向 | enum: `horizontal` | `vertical` | `horizontal` |
-| size | 间距大小 | enum: `sm` | `md` | `lg` | `number` | `sm` |
-
+| size | 间距大小 | enum: `sm` | `md` | `lg` | `number` | `sm` |
\ No newline at end of file
diff --git a/packages/react/src/speed-dial/demo/basic.md b/packages/react/src/speed-dial/demo/Basic.tsx
similarity index 82%
rename from packages/react/src/speed-dial/demo/basic.md
rename to packages/react/src/speed-dial/demo/Basic.tsx
index a7363048..0291e2fd 100644
--- a/packages/react/src/speed-dial/demo/basic.md
+++ b/packages/react/src/speed-dial/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { SpeedDial, Message } from '@tiny-design/react';
-### Basic
-
-A basic SpeedDial that expands on hover.
-
-```jsx live
-() => {
+export default function BasicDemo() {
return (
@@ -18,7 +14,4 @@ A basic SpeedDial that expands on hover.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/speed-dial/demo/click.md b/packages/react/src/speed-dial/demo/Click.tsx
similarity index 79%
rename from packages/react/src/speed-dial/demo/click.md
rename to packages/react/src/speed-dial/demo/Click.tsx
index ca5ab0e3..ba47290a 100644
--- a/packages/react/src/speed-dial/demo/click.md
+++ b/packages/react/src/speed-dial/demo/Click.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { SpeedDial, Message } from '@tiny-design/react';
-### Click Trigger
-
-Use `trigger="click"` to open the SpeedDial on click instead of hover.
-
-```jsx live
-() => {
+export default function ClickDemo() {
return (
@@ -17,7 +13,4 @@ Use `trigger="click"` to open the SpeedDial on click instead of hover.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/speed-dial/demo/custom-icon.md b/packages/react/src/speed-dial/demo/CustomIcon.tsx
similarity index 69%
rename from packages/react/src/speed-dial/demo/custom-icon.md
rename to packages/react/src/speed-dial/demo/CustomIcon.tsx
index 9ae7579e..b2796acf 100644
--- a/packages/react/src/speed-dial/demo/custom-icon.md
+++ b/packages/react/src/speed-dial/demo/CustomIcon.tsx
@@ -1,11 +1,8 @@
-
+import React from 'react';
+import { SpeedDial } from '@tiny-design/react';
+import { IconPlus, IconClose, IconBookmark, IconStar, IconShare } from '@tiny-design/icons';
-### Custom Icon
-
-Customize the FAB icon and the open icon.
-
-```jsx live
-() => {
+export default function CustomIconDemo() {
return (
@@ -20,7 +17,4 @@ Customize the FAB icon and the open icon.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/speed-dial/demo/direction.md b/packages/react/src/speed-dial/demo/Direction.tsx
similarity index 85%
rename from packages/react/src/speed-dial/demo/direction.md
rename to packages/react/src/speed-dial/demo/Direction.tsx
index 2152b668..e4a094c6 100644
--- a/packages/react/src/speed-dial/demo/direction.md
+++ b/packages/react/src/speed-dial/demo/Direction.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { SpeedDial } from '@tiny-design/react';
-### Direction
-
-SpeedDial supports four directions: `up`, `down`, `left`, and `right`.
-
-```jsx live
-() => {
+export default function DirectionDemo() {
const actions = (
<>
@@ -32,7 +28,4 @@ SpeedDial supports four directions: `up`, `down`, `left`, and `right`.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/speed-dial/index.md b/packages/react/src/speed-dial/index.md
index b39ad58f..7f112b29 100644
--- a/packages/react/src/speed-dial/index.md
+++ b/packages/react/src/speed-dial/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Direction from './demo/direction.md'
-import Click from './demo/click.md'
-import CustomIcon from './demo/custom-icon.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DirectionDemo from './demo/Direction';
+import DirectionSource from './demo/Direction.tsx?raw';
+import ClickDemo from './demo/Click';
+import ClickSource from './demo/Click.tsx?raw';
+import CustomIconDemo from './demo/CustomIcon';
+import CustomIconSource from './demo/CustomIcon.tsx?raw';
# SpeedDial
@@ -21,12 +25,44 @@ import { SpeedDial } from 'tiny-design';
-
-
+
+
+### Basic
+
+A basic SpeedDial that expands on hover.
+
+
+
+
+
+
+### Click Trigger
+
+Use `trigger="click"` to open the SpeedDial on click instead of hover.
+
+
+
+
-
-
+
+
+### Direction
+
+SpeedDial supports four directions: `up`, `down`, `left`, and `right`.
+
+
+
+
+
+
+### Custom Icon
+
+Customize the FAB icon and the open icon.
+
+
+
+
@@ -52,4 +88,4 @@ import { SpeedDial } from 'tiny-design';
| icon | icon for the action button | ReactNode | - |
| tooltip | tooltip text | string | - |
| tooltipPlacement | tooltip position | enum: `left` | `right` | `top` | `bottom` | - |
-| disabled | whether the action is disabled | boolean | false |
+| disabled | whether the action is disabled | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/speed-dial/index.zh_CN.md b/packages/react/src/speed-dial/index.zh_CN.md
index 622631a3..f2a0ed40 100644
--- a/packages/react/src/speed-dial/index.zh_CN.md
+++ b/packages/react/src/speed-dial/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Direction from './demo/direction.md'
-import Click from './demo/click.md'
-import CustomIcon from './demo/custom-icon.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DirectionDemo from './demo/Direction';
+import DirectionSource from './demo/Direction.tsx?raw';
+import ClickDemo from './demo/Click';
+import ClickSource from './demo/Click.tsx?raw';
+import CustomIconDemo from './demo/CustomIcon';
+import CustomIconSource from './demo/CustomIcon.tsx?raw';
# SpeedDial
@@ -21,12 +25,44 @@ import { SpeedDial } from 'tiny-design';
-
-
+
+
+### 基础用法
+
+基础的 SpeedDial,hover 时展开。
+
+
+
+
+
+
+### 点击触发
+
+设置 `trigger="click"` 可以通过点击触发展开。
+
+
+
+
-
-
+
+
+### 方向
+
+支持四个展开方向:`up`、`down`、`left`、`right`。
+
+
+
+
+
+
+### 自定义图标
+
+可以自定义主按钮图标和展开后的图标。
+
+
+
+
@@ -52,4 +88,4 @@ import { SpeedDial } from 'tiny-design';
| icon | 操作按钮图标 | ReactNode | - |
| tooltip | 提示文字 | string | - |
| tooltipPlacement | 提示位置 | enum: `left` | `right` | `top` | `bottom` | - |
-| disabled | 是否禁用 | boolean | false |
+| disabled | 是否禁用 | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/split-button/demo/basic.md b/packages/react/src/split-button/demo/Basic.tsx
similarity index 56%
rename from packages/react/src/split-button/demo/basic.md
rename to packages/react/src/split-button/demo/Basic.tsx
index 1580de2d..720e5534 100644
--- a/packages/react/src/split-button/demo/basic.md
+++ b/packages/react/src/split-button/demo/Basic.tsx
@@ -1,36 +1,30 @@
-
+import React from 'react';
+import { SplitButton, Menu, Message, Flex } from '@tiny-design/react';
-### Basic
-
-A simple usage.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const menu = (
-
+ );
return (
- <>
+ Message.info('you clicked the button.')}
- overlay={menu}>
+ overlay={menu}
+ >
Click Me
Message.info('you clicked the button.')}
- overlay={menu}>
+ overlay={menu}
+ >
Click Me
- >
+
);
-}
-
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/split-button/demo/Disabled.tsx b/packages/react/src/split-button/demo/Disabled.tsx
new file mode 100644
index 00000000..a0e9d735
--- /dev/null
+++ b/packages/react/src/split-button/demo/Disabled.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { SplitButton, Menu, Message } from '@tiny-design/react';
+
+export default function DisabledDemo() {
+ return (
+ Message.info('you clicked the button.')}
+ overlay={(
+ Message.info(`you clicked the menu ${key}.`)}>
+ 1st menu item
+ 2nd menu item
+ 3rd menu item
+
+ )}
+ >
+ Click Me
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/split-button/demo/Placement.tsx b/packages/react/src/split-button/demo/Placement.tsx
new file mode 100644
index 00000000..f2be02aa
--- /dev/null
+++ b/packages/react/src/split-button/demo/Placement.tsx
@@ -0,0 +1,63 @@
+import React from 'react';
+import { SplitButton, Menu, Message, Flex, Box } from '@tiny-design/react';
+
+export default function PlacementDemo() {
+ const menu = (
+ Message.info(`you clicked the menu ${key}.`)}>
+ 1st menu item
+ 2nd menu item
+ 3rd menu item
+
+ );
+
+ return (
+ <>
+
+ Message.info('you clicked the button.')}
+ overlay={menu}
+ >
+ TopLeft
+
+ Message.info('you clicked the button.')}
+ overlay={menu}
+ >
+ Top
+
+ Message.info('you clicked the button.')}
+ overlay={menu}
+ >
+ TopRight
+
+
+
+ Message.info('you clicked the button.')}
+ overlay={menu}
+ >
+ BottomLeft
+
+ Message.info('you clicked the button.')}
+ overlay={menu}
+ >
+ Bottom
+
+ Message.info('you clicked the button.')}
+ overlay={menu}
+ >
+ BottomRight
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/split-button/demo/disabled.md b/packages/react/src/split-button/demo/disabled.md
deleted file mode 100644
index 47714fd2..00000000
--- a/packages/react/src/split-button/demo/disabled.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-### Disabled
-
-Disabled the button.
-
-```jsx live
- Message.info('you clicked the button.')}
- overlay={(
- Message.info(`you clicked the menu ${key}.`)}>
- 1st menu item
- 2nd menu item
- 3rd menu item
-
- )}>
- Click Me
-
-```
-
-
diff --git a/packages/react/src/split-button/demo/placement.md b/packages/react/src/split-button/demo/placement.md
deleted file mode 100644
index 8989b532..00000000
--- a/packages/react/src/split-button/demo/placement.md
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-### Placement
-
-Set the placement of the dropdown menu. The default placement is `bottom-end`.
-
-```jsx live
-() => {
- const menu = (
- Message.info(`you clicked the menu ${key}.`)}>
- 1st menu item
- 2nd menu item
- 3rd menu item
-
- );
-
- return (
- <>
- Message.info('you clicked the button.')}
- overlay={menu}>
- TopLeft
-
- Message.info('you clicked the button.')}
- overlay={menu}>
- Top
-
- Message.info('you clicked the button.')}
- overlay={menu}>
- TopRight
-
-
- Message.info('you clicked the button.')}
- overlay={menu}>
- bottomLeft
-
- Message.info('you clicked the button.')}
- overlay={menu}>
- bottom
-
- Message.info('you clicked the button.')}
- overlay={menu}>
- bottomRight
-
- >
- );
-}
-```
-
-
diff --git a/packages/react/src/split-button/index.md b/packages/react/src/split-button/index.md
index abe17501..bed02fa6 100644
--- a/packages/react/src/split-button/index.md
+++ b/packages/react/src/split-button/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Placement from './demo/placement.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
# Split Button
@@ -21,11 +24,35 @@ import { SplitButton } from 'tiny-design';
-
-
+
+
+### Basic
+
+A simple usage.
+
+
+
+
+
+
+### Disabled
+
+Disabled the button.
+
+
+
+
-
+
+
+### Placement
+
+Set the placement of the dropdown menu. The default placement is `bottom-end`.
+
+
+
+
diff --git a/packages/react/src/split-button/index.zh_CN.md b/packages/react/src/split-button/index.zh_CN.md
index e68c178e..a8e2ab8f 100644
--- a/packages/react/src/split-button/index.zh_CN.md
+++ b/packages/react/src/split-button/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Disabled from './demo/disabled.md'
-import Placement from './demo/placement.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
# Split Button
@@ -21,11 +24,35 @@ import { SplitButton } from 'tiny-design';
-
-
+
+
+### 基本用法
+
+简单的使用方式。
+
+
+
+
+
+
+### 禁用状态
+
+禁用该按钮。
+
+
+
+
-
+
+
+### 位置
+
+设置下拉菜单的弹出位置。默认位置是 `bottom-end`。
+
+
+
+
diff --git a/packages/react/src/split/demo/Horizontal.tsx b/packages/react/src/split/demo/Horizontal.tsx
new file mode 100644
index 00000000..741b9623
--- /dev/null
+++ b/packages/react/src/split/demo/Horizontal.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Split } from '@tiny-design/react';
+
+export default function HorizontalDemo() {
+ return (
+
+
+ Left
+
+
+ Right
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/split/demo/Multiple.tsx b/packages/react/src/split/demo/Multiple.tsx
new file mode 100644
index 00000000..dd7de475
--- /dev/null
+++ b/packages/react/src/split/demo/Multiple.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Split } from '@tiny-design/react';
+
+export default function MultipleDemo() {
+ return (
+
+
+ Left
+
+
+ Right
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/split/demo/Nest.tsx b/packages/react/src/split/demo/Nest.tsx
new file mode 100644
index 00000000..dda70e9b
--- /dev/null
+++ b/packages/react/src/split/demo/Nest.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Split } from '@tiny-design/react';
+
+export default function NestDemo() {
+ return (
+
+
+ Left
+
+
+
+ Top
+
+
+ Bottom
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/split/demo/Step.tsx b/packages/react/src/split/demo/Step.tsx
new file mode 100644
index 00000000..177a17a7
--- /dev/null
+++ b/packages/react/src/split/demo/Step.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Split } from '@tiny-design/react';
+
+export default function StepDemo() {
+ return (
+
+
+ Left
+
+
+ Right
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/split/demo/Vertical.tsx b/packages/react/src/split/demo/Vertical.tsx
new file mode 100644
index 00000000..710bf5a7
--- /dev/null
+++ b/packages/react/src/split/demo/Vertical.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Split } from '@tiny-design/react';
+
+export default function VerticalDemo() {
+ return (
+
+
+ Left
+
+
+ Right
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/split/demo/horizontal.md b/packages/react/src/split/demo/horizontal.md
deleted file mode 100644
index 8af329d4..00000000
--- a/packages/react/src/split/demo/horizontal.md
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-### Horizontal divider
-
-Left & Right.
-
-```jsx live
-
-
-
-```
-
-
diff --git a/packages/react/src/split/index.md b/packages/react/src/split/index.md
index aa323695..9cb2c84e 100644
--- a/packages/react/src/split/index.md
+++ b/packages/react/src/split/index.md
@@ -1,7 +1,13 @@
-import Horizontal from './demo/horizontal.md'
-import Vertical from './demo/vertical.md'
-import Nest from './demo/nest.md'
-import Step from './demo/step.md'
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import HorizontalDemo from './demo/Horizontal';
+import HorizontalSource from './demo/Horizontal.tsx?raw';
+import NestDemo from './demo/Nest';
+import NestSource from './demo/Nest.tsx?raw';
+import StepDemo from './demo/Step';
+import StepSource from './demo/Step.tsx?raw';
+import MultipleDemo from './demo/Multiple';
+import MultipleSource from './demo/Multiple.tsx?raw';
# Split
@@ -19,10 +25,57 @@ import { Split } from 'tiny-design';
## Examples
-
-
-
-
+
+
+
+
+### Vertical divider
+
+Top & Bottom.
+
+
+
+
+
+
+### Horizontal divider
+
+Left & Right.
+
+
+
+
+
+
+
+
+### Nest
+
+Can be used nested.
+
+
+
+
+
+
+### Step
+
+Allow moving by a certain distance.
+
+
+
+
+
+
+### Multiple
+
+Multiple divider.
+
+
+
+
+
+
## API
@@ -39,4 +92,4 @@ import { Split } from 'tiny-design';
| resizerSize | resizer size | number | 6 |
| onChange | callback when the size changed | (size: number) => void | - |
| onDragStarted | callback when the resizer starts dragging | () => void | - |
-| onDragFinished | callback when the resizer ends dragging | () => void | - |
+| onDragFinished | callback when the resizer ends dragging | () => void | - |
\ No newline at end of file
diff --git a/packages/react/src/split/index.zh_CN.md b/packages/react/src/split/index.zh_CN.md
index 330361b2..d86cd423 100644
--- a/packages/react/src/split/index.zh_CN.md
+++ b/packages/react/src/split/index.zh_CN.md
@@ -1,7 +1,13 @@
-import Horizontal from './demo/horizontal.md'
-import Vertical from './demo/vertical.md'
-import Nest from './demo/nest.md'
-import Step from './demo/step.md'
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import HorizontalDemo from './demo/Horizontal';
+import HorizontalSource from './demo/Horizontal.tsx?raw';
+import NestDemo from './demo/Nest';
+import NestSource from './demo/Nest.tsx?raw';
+import StepDemo from './demo/Step';
+import StepSource from './demo/Step.tsx?raw';
+import MultipleDemo from './demo/Multiple';
+import MultipleSource from './demo/Multiple.tsx?raw';
# Split
@@ -19,10 +25,57 @@ import { Split } from 'tiny-design';
## 代码示例
-
-
-
-
+
+
+
+
+### 垂直分割
+
+上 & 下。
+
+
+
+
+
+
+### 水平分割
+
+左 & 右。
+
+
+
+
+
+
+
+
+### 嵌套
+
+可以嵌套使用。
+
+
+
+
+
+
+### 步长
+
+允许按一定距离移动。
+
+
+
+
+
+
+### 多个面板
+
+多个分割面板。
+
+
+
+
+
+
## API
@@ -39,4 +92,4 @@ import { Split } from 'tiny-design';
| resizerSize | 调整器尺寸 | number | 6 |
| onChange | 尺寸变化时的回调 | (size: number) => void | - |
| onDragStarted | 调整器开始拖拽时的回调 | () => void | - |
-| onDragFinished | 调整器结束拖拽时的回调 | () => void | - |
+| onDragFinished | 调整器结束拖拽时的回调 | () => void | - |
\ No newline at end of file
diff --git a/packages/react/src/statistic/demo/basic.md b/packages/react/src/statistic/demo/Basic.tsx
similarity index 58%
rename from packages/react/src/statistic/demo/basic.md
rename to packages/react/src/statistic/demo/Basic.tsx
index 90c09371..93725133 100644
--- a/packages/react/src/statistic/demo/basic.md
+++ b/packages/react/src/statistic/demo/Basic.tsx
@@ -1,19 +1,12 @@
-
+import React from 'react';
+import { Statistic, Flex } from '@tiny-design/react';
-### Basic
-
-Display a statistic with title and formatted value.
-
-```jsx live
-() => {
+export default function BasicDemo() {
return (
-
+
-
+
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/statistic/demo/formatter.md b/packages/react/src/statistic/demo/Formatter.tsx
similarity index 70%
rename from packages/react/src/statistic/demo/formatter.md
rename to packages/react/src/statistic/demo/Formatter.tsx
index e972804f..4d236aca 100644
--- a/packages/react/src/statistic/demo/formatter.md
+++ b/packages/react/src/statistic/demo/Formatter.tsx
@@ -1,13 +1,9 @@
-
+import React from 'react';
+import { Statistic, Flex } from '@tiny-design/react';
-### Custom Formatter
-
-Use `formatter` to fully customize the value display.
-
-```jsx live
-() => {
+export default function FormatterDemo() {
return (
-
+ {val} / 10}
/>
-
+
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/statistic/demo/style.md b/packages/react/src/statistic/demo/Style.tsx
similarity index 67%
rename from packages/react/src/statistic/demo/style.md
rename to packages/react/src/statistic/demo/Style.tsx
index 8dc56ff0..84af3db7 100644
--- a/packages/react/src/statistic/demo/style.md
+++ b/packages/react/src/statistic/demo/Style.tsx
@@ -1,13 +1,9 @@
-
+import React from 'react';
+import { Statistic, Flex } from '@tiny-design/react';
-### Value Style
-
-Customize value appearance with `valueStyle` and `groupSeparator`.
-
-```jsx live
-() => {
+export default function StyleDemo() {
return (
-
+
-
+
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/statistic/index.md b/packages/react/src/statistic/index.md
index f8f9f171..aea1e8dc 100644
--- a/packages/react/src/statistic/index.md
+++ b/packages/react/src/statistic/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Formatter from './demo/formatter.md'
-import Style from './demo/style.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import FormatterDemo from './demo/Formatter';
+import FormatterSource from './demo/Formatter.tsx?raw';
+import StyleDemo from './demo/Style';
+import StyleSource from './demo/Style.tsx?raw';
# Statistic
@@ -20,11 +23,35 @@ import { Statistic } from 'tiny-design';
-
-
+
+
+### Basic
+
+Display a statistic with title and formatted value.
+
+
+
+
+
+
+### Custom Formatter
+
+Use `formatter` to fully customize the value display.
+
+
+
+
-
+
+
+### Value Style
+
+Customize value appearance with `valueStyle` and `groupSeparator`.
+
+
+
+
@@ -39,4 +66,4 @@ import { Statistic } from 'tiny-design';
| suffix | suffix node of value | ReactNode | |
| groupSeparator | thousands separator | string | , |
| valueStyle | custom style for value | CSSProperties | |
-| formatter | custom value formatter | (value: number \| string) => ReactNode | |
+| formatter | custom value formatter | (value: number \| string) => ReactNode | |
\ No newline at end of file
diff --git a/packages/react/src/statistic/index.zh_CN.md b/packages/react/src/statistic/index.zh_CN.md
index 85621b48..7901ccf5 100644
--- a/packages/react/src/statistic/index.zh_CN.md
+++ b/packages/react/src/statistic/index.zh_CN.md
@@ -1,4 +1,9 @@
-import Basic from './demo/basic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import FormatterDemo from './demo/Formatter';
+import FormatterSource from './demo/Formatter.tsx?raw';
+import StyleDemo from './demo/Style';
+import StyleSource from './demo/Style.tsx?raw';
# Statistic 统计数值
@@ -18,7 +23,35 @@ import { Statistic } from 'tiny-design';
-
+
+
+### 基本用法
+
+展示带标题和格式化数值的统计组件。
+
+
+
+
+
+
+### 自定义格式化
+
+使用 `formatter` 来自定义数值显示。
+
+
+
+
+
+
+
+
+### 数值样式
+
+通过 `valueStyle` 和 `groupSeparator` 自定义数值外观。
+
+
+
+
@@ -33,4 +66,4 @@ import { Statistic } from 'tiny-design';
| suffix | 数值后缀 | ReactNode | |
| groupSeparator | 千分位分隔符 | string | , |
| valueStyle | 数值样式 | CSSProperties | |
-| formatter | 自定义格式化函数 | (value: number \| string) => ReactNode | |
+| formatter | 自定义格式化函数 | (value: number \| string) => ReactNode | |
\ No newline at end of file
diff --git a/packages/react/src/steps/demo/Basic.tsx b/packages/react/src/steps/demo/Basic.tsx
new file mode 100644
index 00000000..697ed860
--- /dev/null
+++ b/packages/react/src/steps/demo/Basic.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Steps } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/steps/demo/Clickable.tsx b/packages/react/src/steps/demo/Clickable.tsx
new file mode 100644
index 00000000..f3fb5ec1
--- /dev/null
+++ b/packages/react/src/steps/demo/Clickable.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { Steps } from '@tiny-design/react';
+
+export default function ClickableDemo() {
+ const handleChange = (curr: number) => {
+ console.log(curr);
+ };
+
+ return (
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/steps/demo/Icon.tsx b/packages/react/src/steps/demo/Icon.tsx
new file mode 100644
index 00000000..817b6ceb
--- /dev/null
+++ b/packages/react/src/steps/demo/Icon.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Steps, withSpin } from '@tiny-design/react';
+import { IconUser, IconViewFile, IconSync, IconCheckCircle1 } from '@tiny-design/icons';
+
+const SpinningSync = withSpin(IconSync);
+
+export default function IconDemo() {
+ return (
+
+ } />
+ } />
+ } />
+ } />
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/steps/demo/Placement.tsx b/packages/react/src/steps/demo/Placement.tsx
new file mode 100644
index 00000000..b89e3c10
--- /dev/null
+++ b/packages/react/src/steps/demo/Placement.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Steps } from '@tiny-design/react';
+
+export default function PlacementDemo() {
+ return (
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/steps/demo/Switch.tsx b/packages/react/src/steps/demo/Switch.tsx
new file mode 100644
index 00000000..6ff3e89c
--- /dev/null
+++ b/packages/react/src/steps/demo/Switch.tsx
@@ -0,0 +1,30 @@
+import React, { useState } from 'react';
+import { Steps, Button } from '@tiny-design/react';
+
+export default function SwitchDemo() {
+ const [curr, setCurr] = useState(0);
+
+ const handleNext = () => {
+ let next = curr + 1;
+ if (next > 3) {
+ next = 0;
+ }
+ setCurr(next);
+ };
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ Next
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/steps/demo/Vertical.tsx b/packages/react/src/steps/demo/Vertical.tsx
new file mode 100644
index 00000000..897256af
--- /dev/null
+++ b/packages/react/src/steps/demo/Vertical.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Steps } from '@tiny-design/react';
+
+export default function VerticalDemo() {
+ return (
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/steps/demo/basic.md b/packages/react/src/steps/demo/basic.md
deleted file mode 100644
index 1b2fae24..00000000
--- a/packages/react/src/steps/demo/basic.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Basic
-
-The most basic step bar.
-
-```jsx live
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/steps/demo/clickable.md b/packages/react/src/steps/demo/clickable.md
deleted file mode 100644
index 87d66562..00000000
--- a/packages/react/src/steps/demo/clickable.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### Clickable
-
-Click to switch step.
-
-```jsx live
- console.log(curr)}>
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/steps/demo/icon.md b/packages/react/src/steps/demo/icon.md
deleted file mode 100644
index f7600d9a..00000000
--- a/packages/react/src/steps/demo/icon.md
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-### With Icon
-
-Use a customised icon for `Step`.
-
-```jsx live
-() => {
- const SpinningSync = withSpin(IconSync);
- return (
-
- } />
- }/>
- }/>
- }/>
-
- );
-}
-```
-
-
diff --git a/packages/react/src/steps/demo/placement.md b/packages/react/src/steps/demo/placement.md
deleted file mode 100644
index dc535ad9..00000000
--- a/packages/react/src/steps/demo/placement.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-### Label Placement
-
-Use `labelPlacement` to set the direction of title and description.
-
-> Only apply to `horizontal` Steps.
-
-```jsx live
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/steps/demo/switch.md b/packages/react/src/steps/demo/switch.md
deleted file mode 100644
index a704c890..00000000
--- a/packages/react/src/steps/demo/switch.md
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-### Switch Step
-
-Control the step.
-
-```jsx live
-() => {
- const [curr, setCurr] = React.useState(0);
- return (
- <>
-
-
-
-
-
-
-
- {
- let next = curr + 1;
- if(next > 3) {
- next = 0;
- }
- setCurr(next);
- }}>
- Next
-
- >
- );
-}
-```
-
-
diff --git a/packages/react/src/steps/demo/vertical.md b/packages/react/src/steps/demo/vertical.md
deleted file mode 100644
index c38d271b..00000000
--- a/packages/react/src/steps/demo/vertical.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Vertical
-
-A simple step bar in the vertical direction.
-
-```jsx live
-
-
-
-
-
-```
-
-
diff --git a/packages/react/src/steps/index.md b/packages/react/src/steps/index.md
index a943cfd3..5dbca4af 100644
--- a/packages/react/src/steps/index.md
+++ b/packages/react/src/steps/index.md
@@ -1,9 +1,15 @@
-import Basic from './demo/basic.md'
-import Icon from './demo/icon.md'
-import Placement from './demo/placement.md'
-import Vertical from './demo/vertical.md'
-import Switch from './demo/switch.md'
-import Clickable from './demo/clickable.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import SwitchDemo from './demo/Switch';
+import SwitchSource from './demo/Switch.tsx?raw';
+import ClickableDemo from './demo/Clickable';
+import ClickableSource from './demo/Clickable.tsx?raw';
# Steps
@@ -23,12 +29,68 @@ const { Step } = Steps;
## Examples
-
-
-
-
-
-
+
+
+
+
+### Basic
+
+The most basic step bar.
+
+
+
+
+
+
+### With Icon
+
+Use a customised icon for `Step`.
+
+
+
+
+
+
+### Switch Step
+
+Control the step.
+
+
+
+
+
+
+
+
+### Label Placement
+
+Use `labelPlacement` to set the direction of title and description.
+
+> Only apply to `horizontal` Steps.
+
+
+
+
+
+
+### Vertical
+
+A simple step bar in the vertical direction.
+
+
+
+
+
+
+### Clickable
+
+Click to switch step.
+
+
+
+
+
+
## API
@@ -55,4 +117,4 @@ A single step in the step bar.
| description | description of the step. | ReactNode | - |
| icon | customise the step's icon. | ReactNode | - |
| status | replace `Steps`'s status. | enum: `wait` | `process` | `finish` | `error` | - |
-| disabled | disable the click event. | boolean | - |
+| disabled | disable the click event. | boolean | - |
\ No newline at end of file
diff --git a/packages/react/src/steps/index.zh_CN.md b/packages/react/src/steps/index.zh_CN.md
index 7ce1fff9..5f1209b8 100644
--- a/packages/react/src/steps/index.zh_CN.md
+++ b/packages/react/src/steps/index.zh_CN.md
@@ -1,9 +1,15 @@
-import Basic from './demo/basic.md'
-import Icon from './demo/icon.md'
-import Placement from './demo/placement.md'
-import Vertical from './demo/vertical.md'
-import Switch from './demo/switch.md'
-import Clickable from './demo/clickable.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
+import VerticalDemo from './demo/Vertical';
+import VerticalSource from './demo/Vertical.tsx?raw';
+import SwitchDemo from './demo/Switch';
+import SwitchSource from './demo/Switch.tsx?raw';
+import ClickableDemo from './demo/Clickable';
+import ClickableSource from './demo/Clickable.tsx?raw';
# Steps
@@ -23,12 +29,68 @@ const { Step } = Steps;
## 代码示例
-
-
-
-
-
-
+
+
+
+
+### 基础
+
+最基础的步骤条。
+
+
+
+
+
+
+### 带图标
+
+使用自定义图标。
+
+
+
+
+
+
+### 切换步骤
+
+控制步骤。
+
+
+
+
+
+
+
+
+### 标签位置
+
+使用 `labelPlacement` 设置标题和描述的方向。
+
+> 仅适用于 `horizontal` 步骤条。
+
+
+
+
+
+
+### 垂直
+
+垂直方向的步骤条。
+
+
+
+
+
+
+### 可点击
+
+点击切换步骤。
+
+
+
+
+
+
## API
@@ -55,4 +117,4 @@ const { Step } = Steps;
| description | 步骤的描述 | ReactNode | - |
| icon | 自定义步骤图标 | ReactNode | - |
| status | 覆盖 `Steps` 的状态 | enum: `wait` | `process` | `finish` | `error` | - |
-| disabled | 禁用点击事件 | boolean | - |
+| disabled | 禁用点击事件 | boolean | - |
\ No newline at end of file
diff --git a/packages/react/src/sticky/demo/Basic.tsx b/packages/react/src/sticky/demo/Basic.tsx
new file mode 100644
index 00000000..c3d5f557
--- /dev/null
+++ b/packages/react/src/sticky/demo/Basic.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Sticky, Button } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+ <>
+
+ Affix top
+
+
+
+ Affix bottom
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/sticky/demo/Callback.tsx b/packages/react/src/sticky/demo/Callback.tsx
new file mode 100644
index 00000000..134a3006
--- /dev/null
+++ b/packages/react/src/sticky/demo/Callback.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { Sticky, Button } from '@tiny-design/react';
+
+export default function CallbackDemo() {
+ return (
+ console.log(affixed)}>
+ 100px to affix top
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/sticky/demo/Container.tsx b/packages/react/src/sticky/demo/Container.tsx
new file mode 100644
index 00000000..03a68bf4
--- /dev/null
+++ b/packages/react/src/sticky/demo/Container.tsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import { Sticky, Button } from '@tiny-design/react';
+
+export default function ContainerDemo() {
+ const containerStyle: React.CSSProperties = {
+ height: 130,
+ overflowY: 'scroll',
+ };
+
+ const bgStyle: React.CSSProperties = {
+ paddingTop: 60,
+ height: 500,
+ backgroundColor: '#dfdfdf',
+ };
+
+ const containerRef = React.useRef(null);
+
+ return (
+
+
+ containerRef.current}>
+ Fixed at the top of container
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/sticky/demo/basic.md b/packages/react/src/sticky/demo/basic.md
deleted file mode 100644
index 0c9484ae..00000000
--- a/packages/react/src/sticky/demo/basic.md
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-### Basic
-
-The simplest usage.
-
-```jsx live
-<>
-
-
- Affix top
-
-
-
-
-
- Affix bottom
-
-
->
-```
-
-
diff --git a/packages/react/src/sticky/demo/callback.md b/packages/react/src/sticky/demo/callback.md
deleted file mode 100644
index 85c43600..00000000
--- a/packages/react/src/sticky/demo/callback.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-### Callback
-
-Callback with affixed state.
-
-```jsx live
- console.log(affixed)}>
- 100px to affix top
-
-```
-
-
diff --git a/packages/react/src/sticky/demo/container.md b/packages/react/src/sticky/demo/container.md
deleted file mode 100644
index dd0dcd14..00000000
--- a/packages/react/src/sticky/demo/container.md
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-### Container to scroll.
-
-Set a target for `Sticky`, which is listen to scroll event of target element (default is `window`).
-
-```jsx live
-() => {
- const containerStyle = {
- height: 130,
- overflowY: 'scroll',
- };
-
- const bgStyle = {
- paddingTop: 60,
- height: 500,
- backgroundColor: '#dfdfdf',
- };
-
- const containerRef = React.useRef(null);
-
- return (
-
-
- containerRef.current}>
- Fixed at the top of container
-
-
-
- );
-}
-```
-
-
diff --git a/packages/react/src/sticky/index.md b/packages/react/src/sticky/index.md
index 26df99bf..8d4aeeee 100644
--- a/packages/react/src/sticky/index.md
+++ b/packages/react/src/sticky/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Container from './demo/container.md'
-import Callback from './demo/callback.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ContainerDemo from './demo/Container';
+import ContainerSource from './demo/Container.tsx?raw';
+import CallbackDemo from './demo/Callback';
+import CallbackSource from './demo/Callback.tsx?raw';
# Sticky
@@ -20,11 +23,35 @@ import { Sticky } from 'tiny-design';
-
-
+
+
+### Basic
+
+The simplest usage.
+
+
+
+
+
+
+### Container to scroll
+
+Set a target for `Sticky`, which is listen to scroll event of target element (default is `window`).
+
+
+
+
-
+
+
+### Callback
+
+Callback with affixed state.
+
+
+
+
@@ -37,4 +64,4 @@ import { Sticky } from 'tiny-design';
| container | specifies the scrollable area DOM node. | () => HTMLElement | () => window |
| onChange | callback for when sticky state is changed. | (stuck: boolean) => void | - |
-**Note: ** Children of `Sticky` must not have the property `position: absolute`.
+**Note: ** Children of `Sticky` must not have the property `position: absolute`.
\ No newline at end of file
diff --git a/packages/react/src/sticky/index.zh_CN.md b/packages/react/src/sticky/index.zh_CN.md
index 682577fe..a78ecbf5 100644
--- a/packages/react/src/sticky/index.zh_CN.md
+++ b/packages/react/src/sticky/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Container from './demo/container.md'
-import Callback from './demo/callback.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ContainerDemo from './demo/Container';
+import ContainerSource from './demo/Container.tsx?raw';
+import CallbackDemo from './demo/Callback';
+import CallbackSource from './demo/Callback.tsx?raw';
# Sticky
@@ -20,11 +23,35 @@ import { Sticky } from 'tiny-design';
-
-
+
+
+### 基础
+
+最简单的用法。
+
+
+
+
+
+
+### 滚动容器
+
+设置 `Sticky` 的目标元素,它将监听目标元素的滚动事件(默认为 `window`)。
+
+
+
+
-
+
+
+### 回调
+
+固定状态改变时的回调函数。
+
+
+
+
@@ -37,4 +64,4 @@ import { Sticky } from 'tiny-design';
| container | 指定可滚动区域的 DOM 节点 | () => HTMLElement | () => window |
| onChange | 固定状态改变时的回调 | (stuck: boolean) => void | - |
-**注意:** `Sticky` 的子元素不能设置 `position: absolute` 属性。
+**注意:** `Sticky` 的子元素不能设置 `position: absolute` 属性。
\ No newline at end of file
diff --git a/packages/react/src/strength-indicator/demo/Basic.tsx b/packages/react/src/strength-indicator/demo/Basic.tsx
new file mode 100644
index 00000000..c9bc5c40
--- /dev/null
+++ b/packages/react/src/strength-indicator/demo/Basic.tsx
@@ -0,0 +1,25 @@
+import React, { useState } from 'react';
+import { Button, StrengthIndicator } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ const [current, setCurrent] = useState(1);
+
+ const handleClick = () => {
+ setCurrent((prev) => {
+ if (prev < 3) {
+ return prev + 1;
+ }
+ return 0;
+ });
+ };
+
+ return (
+
+
+
+
+ Next
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/strength-indicator/demo/Label.tsx b/packages/react/src/strength-indicator/demo/Label.tsx
new file mode 100644
index 00000000..5b087caf
--- /dev/null
+++ b/packages/react/src/strength-indicator/demo/Label.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { StrengthIndicator } from '@tiny-design/react';
+
+export default function LabelDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/strength-indicator/demo/Password.tsx b/packages/react/src/strength-indicator/demo/Password.tsx
new file mode 100644
index 00000000..a6896977
--- /dev/null
+++ b/packages/react/src/strength-indicator/demo/Password.tsx
@@ -0,0 +1,47 @@
+import React, { useState } from 'react';
+import { InputPassword, StrengthIndicator } from '@tiny-design/react';
+
+export default function PasswordDemo() {
+ const [password, setPassword] = useState('');
+
+ const checkPwd = (str: string) => {
+ const { length } = str;
+ let lv = 0;
+ if (str.length > 0 && str.length < 6) {
+ return ++lv;
+ }
+ if (length > 8) {
+ lv++;
+ }
+ if (/[0-9]/.test(str)) {
+ lv++;
+ }
+ if (/[a-z]/.test(str)) {
+ lv++;
+ }
+ if (/[A-Z]/.test(str)) {
+ lv++;
+ }
+ if (/[.-_]/.test(str)) {
+ lv++;
+ }
+
+ return lv;
+ };
+
+ return (
+
+ setPassword(e.currentTarget.value)}
+ />
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/strength-indicator/demo/basic.md b/packages/react/src/strength-indicator/demo/basic.md
deleted file mode 100644
index 10359b39..00000000
--- a/packages/react/src/strength-indicator/demo/basic.md
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-### Basic
-
-A simple usage.
-
-```jsx live
-class BasicExample extends React.PureComponent{
-
- constructor() {
- super();
- this.state = {
- current: 1,
- };
- this.btnOnClick = this.btnOnClick.bind(this);
- }
-
- btnOnClick() {
- let { current } = this.state;
- if(current < 3) {
- current++;
- } else {
- current = 0;
- }
- this.setState({ current });
- };
-
- render(){
- return (
-
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/tag/demo/checkable.md b/packages/react/src/tag/demo/checkable.md
deleted file mode 100755
index ca78af06..00000000
--- a/packages/react/src/tag/demo/checkable.md
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-### Checkable
-
-`CheckableTag` works like Checkbox, click it to toggle checked state.
-
-> It also has controlled & uncontrolled mode.
-
-```jsx live
-() => {
- const { CheckableTag } = Tag;
-
- const onChange = (checked) => {
- console.log(checked)
- };
-
- return (
- <>
- Tag1
- Tag2
- Tag3
- >
- );
-}
-```
-
-
diff --git a/packages/react/src/tag/demo/color.md b/packages/react/src/tag/demo/color.md
deleted file mode 100755
index 74b70938..00000000
--- a/packages/react/src/tag/demo/color.md
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-### Colorful Tag
-
-We preset a series of colorful tag styles for use in different situations. You can also set it to a hex color string for custom color.
-
-```jsx live
-<>
- Presets:
-
- magenta
- red
- volcano
- orange
- gold
- lime
- green
- cyan
- blue
- geekblue
- purple
-
- );
- };
-
- return ;
-}
-```
-
-
diff --git a/packages/react/src/tag/index.md b/packages/react/src/tag/index.md
index 9d878613..590d905c 100755
--- a/packages/react/src/tag/index.md
+++ b/packages/react/src/tag/index.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Checkable from './demo/checkable.md'
-import Color from './demo/color.md'
-import Controlled from './demo/controlled.md'
-import Dynamic from './demo/dynamic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CheckableDemo from './demo/Checkable';
+import CheckableSource from './demo/Checkable.tsx?raw';
+import ColorDemo from './demo/Color';
+import ColorSource from './demo/Color.tsx?raw';
+import ControlledDemo from './demo/Controlled';
+import ControlledSource from './demo/Controlled.tsx?raw';
+import DynamicDemo from './demo/Dynamic';
+import DynamicSource from './demo/Dynamic.tsx?raw';
# Tag
@@ -26,13 +31,56 @@ const { CheckableTag } = Tag;
-
-
-
+
+
+### Basic
+
+```jsx live
+```
+
+
+
+
+
+
+### Add & Remove Dynamically
+
+Adding or removing a set of tags dynamically.
+
+
+
+
+
+
+### Checkable
+
+`CheckableTag` works like Checkbox, click it to toggle checked state.
+
+> It also has controlled & uncontrolled mode.
+
+
+
+
-
-
+
+
+### Colorful Tag
+
+We preset a series of colorful tag styles for use in different situations. You can also set it to a hex color string for custom color.
+
+
+
+
+
+
+### Controlled
+
+By using the `visible` prop, you can control the close state of Tag.
+
+
+
+
@@ -59,4 +107,4 @@ Preset colors: `magenta`, `red`, `volcano`, `orange`, `gold`, `lime`, `green`, `
| -------------- | --------------------------------- | ------------------------------------------- | ------- |
| defaultChecked | initial checked state | boolean | false |
| checked | controlled checked state | boolean | - |
-| onChange | callback when checked changes | (checked: boolean, e: MouseEvent) => void | - |
+| onChange | callback when checked changes | (checked: boolean, e: MouseEvent) => void | - |
\ No newline at end of file
diff --git a/packages/react/src/tag/index.zh_CN.md b/packages/react/src/tag/index.zh_CN.md
index 3feb45c5..67a082bb 100644
--- a/packages/react/src/tag/index.zh_CN.md
+++ b/packages/react/src/tag/index.zh_CN.md
@@ -1,8 +1,13 @@
-import Basic from './demo/basic.md'
-import Checkable from './demo/checkable.md'
-import Color from './demo/color.md'
-import Controlled from './demo/controlled.md'
-import Dynamic from './demo/dynamic.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CheckableDemo from './demo/Checkable';
+import CheckableSource from './demo/Checkable.tsx?raw';
+import ColorDemo from './demo/Color';
+import ColorSource from './demo/Color.tsx?raw';
+import ControlledDemo from './demo/Controlled';
+import ControlledSource from './demo/Controlled.tsx?raw';
+import DynamicDemo from './demo/Dynamic';
+import DynamicSource from './demo/Dynamic.tsx?raw';
# Tag
@@ -26,13 +31,56 @@ const { CheckableTag } = Tag;
-
-
-
+
+
+### 基础用法
+
+```jsx live
+```
+
+
+
+
+
+
+### 动态添加和删除
+
+动态添加和删除标签。
+
+
+
+
+
+
+### 可选择
+
+`CheckableTag` 类似于 Checkbox,点击可切换选中状态。
+
+> 同时支持受控和非受控模式。
+
+
+
+
-
-
+
+
+### 多彩标签
+
+我们提供了一系列预设的彩色标签样式,适用于不同场景。你也可以自定义十六进制颜色值。
+
+
+
+
+
+
+### 受控显示
+
+通过 `visible` 属性控制标签的显示与隐藏。
+
+
+
+
@@ -59,4 +107,4 @@ const { CheckableTag } = Tag;
| -------------- | --------------------------------- | ------------------------------------------- | ------- |
| defaultChecked | 初始选中状态 | boolean | false |
| checked | 受控的选中状态 | boolean | - |
-| onChange | 选中状态变化时的回调 | (checked: boolean, e: MouseEvent) => void | - |
+| onChange | 选中状态变化时的回调 | (checked: boolean, e: MouseEvent) => void | - |
\ No newline at end of file
diff --git a/packages/react/src/textarea/demo/Basic.tsx b/packages/react/src/textarea/demo/Basic.tsx
new file mode 100644
index 00000000..51f7f817
--- /dev/null
+++ b/packages/react/src/textarea/demo/Basic.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import { Textarea } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return ;
+}
\ No newline at end of file
diff --git a/packages/react/src/textarea/demo/Count.tsx b/packages/react/src/textarea/demo/Count.tsx
new file mode 100644
index 00000000..e8a91abb
--- /dev/null
+++ b/packages/react/src/textarea/demo/Count.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Textarea } from '@tiny-design/react';
+
+export default function CountDemo() {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/textarea/demo/basic.md b/packages/react/src/textarea/demo/basic.md
deleted file mode 100755
index 3d7d555a..00000000
--- a/packages/react/src/textarea/demo/basic.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Basic
-
-A simple textarea.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/textarea/demo/count.md b/packages/react/src/textarea/demo/count.md
deleted file mode 100755
index ba56e21b..00000000
--- a/packages/react/src/textarea/demo/count.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Limit & count
-
-Use `limit` to limit the word amount. Also you can use `counter` to customise limit node.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/textarea/index.md b/packages/react/src/textarea/index.md
index 2319a644..292c6d82 100755
--- a/packages/react/src/textarea/index.md
+++ b/packages/react/src/textarea/index.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Count from './demo/count.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CountDemo from './demo/Count';
+import CountSource from './demo/Count.tsx?raw';
# Textarea
@@ -19,10 +21,26 @@ import { Textarea } from 'tiny-design';
-
+
+
+### Basic
+
+A simple textarea.
+
+
+
+
-
+
+
+### Limit & count
+
+Use `limit` to limit the word amount. Also you can use `counter` to customise limit node.
+
+
+
+
@@ -38,5 +56,4 @@ import { Textarea } from 'tiny-design';
| counter | customise the count node | function: (count: number) => React.ReactNode | |
| disabled | disabled the component | boolean | |
| style | style object of container object | | |
-| className | className of container | string | |
-
+| className | className of container | string | |
\ No newline at end of file
diff --git a/packages/react/src/textarea/index.zh_CN.md b/packages/react/src/textarea/index.zh_CN.md
index 53b3530f..29f73bb5 100644
--- a/packages/react/src/textarea/index.zh_CN.md
+++ b/packages/react/src/textarea/index.zh_CN.md
@@ -1,5 +1,7 @@
-import Basic from './demo/basic.md'
-import Count from './demo/count.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CountDemo from './demo/Count';
+import CountSource from './demo/Count.tsx?raw';
# Textarea
@@ -19,10 +21,26 @@ import { Textarea } from 'tiny-design';
-
+
+
+### 基本用法
+
+简单的文本域。
+
+
+
+
-
+
+
+### 限制与计数
+
+使用 `limit` 限制字符数量。也可以使用 `counter` 自定义计数节点。
+
+
+
+
@@ -38,4 +56,4 @@ import { Textarea } from 'tiny-design';
| counter | 自定义计数节点 | function: (count: number) => React.ReactNode | |
| disabled | 是否禁用组件 | boolean | |
| style | 容器的样式对象 | | |
-| className | 容器的类名 | string | |
+| className | 容器的类名 | string | |
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/basic.md b/packages/react/src/time-picker/demo/Basic.tsx
similarity index 56%
rename from packages/react/src/time-picker/demo/basic.md
rename to packages/react/src/time-picker/demo/Basic.tsx
index 725a9b88..63984953 100644
--- a/packages/react/src/time-picker/demo/basic.md
+++ b/packages/react/src/time-picker/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { TimePicker } from '@tiny-design/react';
-### Basic
-
-A basic time picker.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const [time, setTime] = React.useState(new Date());
return (
setTime(t)}
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/controlled.md b/packages/react/src/time-picker/demo/Controlled.tsx
similarity index 70%
rename from packages/react/src/time-picker/demo/controlled.md
rename to packages/react/src/time-picker/demo/Controlled.tsx
index 5f1cab41..49355e28 100644
--- a/packages/react/src/time-picker/demo/controlled.md
+++ b/packages/react/src/time-picker/demo/Controlled.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { TimePicker, Space, Button } from '@tiny-design/react';
-### Controlled
-
-Fully controlled with `value` and `onChange`.
-
-```jsx live
-() => {
+export default function ControlledDemo() {
const [time, setTime] = React.useState(new Date(2024, 0, 1, 9, 0, 0));
return (
@@ -14,7 +10,4 @@ Fully controlled with `value` and `onChange`.
setTime(null)}>Clear
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/Disabled.tsx b/packages/react/src/time-picker/demo/Disabled.tsx
new file mode 100644
index 00000000..79ca6d40
--- /dev/null
+++ b/packages/react/src/time-picker/demo/Disabled.tsx
@@ -0,0 +1,8 @@
+import React from 'react';
+import { TimePicker } from '@tiny-design/react';
+
+export default function DisabledDemo() {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/disabled-time.md b/packages/react/src/time-picker/demo/DisabledTime.tsx
similarity index 53%
rename from packages/react/src/time-picker/demo/disabled-time.md
rename to packages/react/src/time-picker/demo/DisabledTime.tsx
index 8a389b79..d3b306b7 100644
--- a/packages/react/src/time-picker/demo/disabled-time.md
+++ b/packages/react/src/time-picker/demo/DisabledTime.tsx
@@ -1,14 +1,10 @@
-
+import React from 'react';
+import { TimePicker } from '@tiny-design/react';
-### Disabled Time Options
-
-Use `disabledTime` to make certain hours, minutes, or seconds unselectable.
-
-```jsx live
-() => {
+export default function DisabledTimeDemo() {
const disabledTime = () => ({
disabledHours: () => [0, 1, 2, 3, 4, 5, 22, 23],
- disabledMinutes: (hour) => hour === 12 ? [0, 30] : [],
+ disabledMinutes: (hour: number) => hour === 12 ? [0, 30] : [],
disabledSeconds: () => [],
});
return (
@@ -17,7 +13,4 @@ Use `disabledTime` to make certain hours, minutes, or seconds unselectable.
placeholder="Business hours only"
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/extra-footer.md b/packages/react/src/time-picker/demo/ExtraFooter.tsx
similarity index 61%
rename from packages/react/src/time-picker/demo/extra-footer.md
rename to packages/react/src/time-picker/demo/ExtraFooter.tsx
index df7342fa..ea56a20c 100644
--- a/packages/react/src/time-picker/demo/extra-footer.md
+++ b/packages/react/src/time-picker/demo/ExtraFooter.tsx
@@ -1,12 +1,8 @@
-
+import React from 'react';
+import { TimePicker, Button } from '@tiny-design/react';
-### Extra Footer
-
-Render extra content at the bottom of the dropdown panel.
-
-```jsx live
-() => {
- const [time, setTime] = React.useState(null);
+export default function ExtraFooterDemo() {
+ const [time, setTime] = React.useState(null);
return (
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/format.md b/packages/react/src/time-picker/demo/Format.tsx
similarity index 58%
rename from packages/react/src/time-picker/demo/format.md
rename to packages/react/src/time-picker/demo/Format.tsx
index 9a06b82f..25e27335 100644
--- a/packages/react/src/time-picker/demo/format.md
+++ b/packages/react/src/time-picker/demo/Format.tsx
@@ -1,18 +1,11 @@
-
+import React from 'react';
+import { TimePicker, Space } from '@tiny-design/react';
-### Format
-
-Use `format` to control what's displayed. Omitting seconds hides the seconds column.
-
-```jsx live
-() => {
+export default function FormatDemo() {
return (
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/hide-disabled.md b/packages/react/src/time-picker/demo/HideDisabled.tsx
similarity index 57%
rename from packages/react/src/time-picker/demo/hide-disabled.md
rename to packages/react/src/time-picker/demo/HideDisabled.tsx
index d8463cde..d9950144 100644
--- a/packages/react/src/time-picker/demo/hide-disabled.md
+++ b/packages/react/src/time-picker/demo/HideDisabled.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { TimePicker } from '@tiny-design/react';
-### Hide Disabled Options
-
-Combine `disabledTime` with `hideDisabledOptions` to remove unavailable times from the panel entirely.
-
-```jsx live
-() => {
+export default function HideDisabledDemo() {
const disabledTime = () => ({
disabledHours: () => [0, 1, 2, 3, 4, 5, 6, 20, 21, 22, 23],
});
@@ -16,7 +12,4 @@ Combine `disabledTime` with `hideDisabledOptions` to remove unavailable times fr
placeholder="7:00 - 19:00"
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/Loop.tsx b/packages/react/src/time-picker/demo/Loop.tsx
new file mode 100644
index 00000000..ac46e64d
--- /dev/null
+++ b/packages/react/src/time-picker/demo/Loop.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import { TimePicker } from '@tiny-design/react';
+
+export default function LoopDemo() {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/size.md b/packages/react/src/time-picker/demo/Size.tsx
similarity index 64%
rename from packages/react/src/time-picker/demo/size.md
rename to packages/react/src/time-picker/demo/Size.tsx
index ff6e1712..ac4b7399 100644
--- a/packages/react/src/time-picker/demo/size.md
+++ b/packages/react/src/time-picker/demo/Size.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { TimePicker, Space } from '@tiny-design/react';
-### Size
-
-Three sizes: `sm`, `md` (default), `lg`.
-
-```jsx live
-() => {
+export default function SizeDemo() {
return (
@@ -13,7 +9,4 @@ Three sizes: `sm`, `md` (default), `lg`.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/step.md b/packages/react/src/time-picker/demo/Step.tsx
similarity index 54%
rename from packages/react/src/time-picker/demo/step.md
rename to packages/react/src/time-picker/demo/Step.tsx
index 3abd1b37..2b4ca3b6 100644
--- a/packages/react/src/time-picker/demo/step.md
+++ b/packages/react/src/time-picker/demo/Step.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { TimePicker } from '@tiny-design/react';
-### Step Intervals
-
-Show time options at custom intervals.
-
-```jsx live
-() => {
+export default function StepDemo() {
return (
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/time-picker/demo/disabled.md b/packages/react/src/time-picker/demo/disabled.md
deleted file mode 100644
index fdbb53be..00000000
--- a/packages/react/src/time-picker/demo/disabled.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-### Disabled
-
-A disabled time picker.
-
-```jsx live
-
-```
-
-
diff --git a/packages/react/src/time-picker/demo/loop.md b/packages/react/src/time-picker/demo/loop.md
deleted file mode 100644
index bf84b218..00000000
--- a/packages/react/src/time-picker/demo/loop.md
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-### Infinite Scroll
-
-Enable circular scrolling so columns wrap around continuously.
-
-```jsx live
-() => {
- return (
-
- );
-}
-```
-
-
diff --git a/packages/react/src/time-picker/index.md b/packages/react/src/time-picker/index.md
index dd905c8b..498f20f5 100644
--- a/packages/react/src/time-picker/index.md
+++ b/packages/react/src/time-picker/index.md
@@ -1,13 +1,23 @@
-import Basic from './demo/basic.md'
-import Controlled from './demo/controlled.md'
-import Size from './demo/size.md'
-import Format from './demo/format.md'
-import Step from './demo/step.md'
-import Disabled from './demo/disabled.md'
-import DisabledTime from './demo/disabled-time.md'
-import HideDisabled from './demo/hide-disabled.md'
-import ExtraFooter from './demo/extra-footer.md'
-import Loop from './demo/loop.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ControlledDemo from './demo/Controlled';
+import ControlledSource from './demo/Controlled.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import FormatDemo from './demo/Format';
+import FormatSource from './demo/Format.tsx?raw';
+import StepDemo from './demo/Step';
+import StepSource from './demo/Step.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import DisabledTimeDemo from './demo/DisabledTime';
+import DisabledTimeSource from './demo/DisabledTime.tsx?raw';
+import HideDisabledDemo from './demo/HideDisabled';
+import HideDisabledSource from './demo/HideDisabled.tsx?raw';
+import ExtraFooterDemo from './demo/ExtraFooter';
+import ExtraFooterSource from './demo/ExtraFooter.tsx?raw';
+import LoopDemo from './demo/Loop';
+import LoopSource from './demo/Loop.tsx?raw';
# TimePicker
@@ -23,18 +33,98 @@ import { TimePicker } from 'tiny-design';
-
-
-
-
-
+
+
+### Basic
+
+A basic time picker.
+
+
+
+
+
+
+### Controlled
+
+Fully controlled with `value` and `onChange`.
+
+
+
+
+
+
+### Format
+
+Use `format` to control what's displayed. Omitting seconds hides the seconds column.
+
+
+
+
+
+
+### Disabled Time Options
+
+Use `disabledTime` to make certain hours, minutes, or seconds unselectable.
+
+
+
+
+
+
+### Extra Footer
+
+Render extra content at the bottom of the dropdown panel.
+
+
+
+
-
-
-
-
-
+
+
+### Size
+
+Three sizes: `sm`, `md` (default), `lg`.
+
+
+
+
+
+
+### Step Intervals
+
+Show time options at custom intervals.
+
+
+
+
+
+
+### Disabled
+
+A disabled time picker.
+
+
+
+
+
+
+### Hide Disabled Options
+
+Combine `disabledTime` with `hideDisabledOptions` to remove unavailable times from the panel entirely.
+
+
+
+
+
+
+### Infinite Scroll
+
+Enable circular scrolling so columns wrap around continuously.
+
+
+
+
@@ -74,4 +164,4 @@ interface DisabledTime {
disabledMinutes?: (hour: number) => number[];
disabledSeconds?: (hour: number, minute: number) => number[];
}
-```
+```
\ No newline at end of file
diff --git a/packages/react/src/time-picker/index.zh_CN.md b/packages/react/src/time-picker/index.zh_CN.md
index bbd4c14e..8a71bba4 100644
--- a/packages/react/src/time-picker/index.zh_CN.md
+++ b/packages/react/src/time-picker/index.zh_CN.md
@@ -1,13 +1,23 @@
-import Basic from './demo/basic.md'
-import Controlled from './demo/controlled.md'
-import Size from './demo/size.md'
-import Format from './demo/format.md'
-import Step from './demo/step.md'
-import Disabled from './demo/disabled.md'
-import DisabledTime from './demo/disabled-time.md'
-import HideDisabled from './demo/hide-disabled.md'
-import ExtraFooter from './demo/extra-footer.md'
-import Loop from './demo/loop.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ControlledDemo from './demo/Controlled';
+import ControlledSource from './demo/Controlled.tsx?raw';
+import SizeDemo from './demo/Size';
+import SizeSource from './demo/Size.tsx?raw';
+import FormatDemo from './demo/Format';
+import FormatSource from './demo/Format.tsx?raw';
+import StepDemo from './demo/Step';
+import StepSource from './demo/Step.tsx?raw';
+import DisabledDemo from './demo/Disabled';
+import DisabledSource from './demo/Disabled.tsx?raw';
+import DisabledTimeDemo from './demo/DisabledTime';
+import DisabledTimeSource from './demo/DisabledTime.tsx?raw';
+import HideDisabledDemo from './demo/HideDisabled';
+import HideDisabledSource from './demo/HideDisabled.tsx?raw';
+import ExtraFooterDemo from './demo/ExtraFooter';
+import ExtraFooterSource from './demo/ExtraFooter.tsx?raw';
+import LoopDemo from './demo/Loop';
+import LoopSource from './demo/Loop.tsx?raw';
# TimePicker
@@ -23,18 +33,98 @@ import { TimePicker } from 'tiny-design';
-
-
-
-
-
+
+
+### 基本使用
+
+基础时间选择器。
+
+
+
+
+
+
+### 受控模式
+
+通过 `value` 和 `onChange` 完全控制。
+
+
+
+
+
+
+### 时间格式
+
+使用 `format` 控制显示内容。省略秒则隐藏秒列。
+
+
+
+
+
+
+### 禁用时间
+
+使用 `disabledTime` 设置不可选的小时、分钟或秒。
+
+
+
+
+
+
+### 额外页脚
+
+在面板底部渲染额外内容。
+
+
+
+
-
-
-
-
-
+
+
+### 三种大小
+
+三种尺寸:`sm`、`md`(默认)、`lg`。
+
+
+
+
+
+
+### 步长间隔
+
+自定义时间选项的间隔。
+
+
+
+
+
+
+### 禁用
+
+禁用时间选择器。
+
+
+
+
+
+
+### 隐藏禁用选项
+
+结合 `disabledTime` 和 `hideDisabledOptions` 从面板中完全移除不可用的时间。
+
+
+
+
+
+
+### 无限循环滚动
+
+启用循环滚动,列可以无限循环。
+
+
+
+
@@ -74,4 +164,4 @@ interface DisabledTime {
disabledMinutes?: (hour: number) => number[];
disabledSeconds?: (hour: number, minute: number) => number[];
}
-```
+```
\ No newline at end of file
diff --git a/packages/react/src/timeline/demo/Basic.tsx b/packages/react/src/timeline/demo/Basic.tsx
new file mode 100644
index 00000000..eca3c239
--- /dev/null
+++ b/packages/react/src/timeline/demo/Basic.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import { Timeline } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+ Create a services site 2015-09-01
+ Solve initial network problems 2015-09-04
+ Technical testing 2015-09-12
+ Network problems being solved 2015-09-20
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/timeline/demo/Centered.tsx b/packages/react/src/timeline/demo/Centered.tsx
new file mode 100644
index 00000000..0d2fcc83
--- /dev/null
+++ b/packages/react/src/timeline/demo/Centered.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import { Timeline } from '@tiny-design/react';
+
+export default function CenteredDemo() {
+ return (
+
+ Create a services site 2015-09-01
+ Solve initial network problems 2015-09-04
+ Technical testing 2015-09-12
+ Network problems being solved 2015-09-20
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/timeline/demo/Color.tsx b/packages/react/src/timeline/demo/Color.tsx
new file mode 100644
index 00000000..d8d302c0
--- /dev/null
+++ b/packages/react/src/timeline/demo/Color.tsx
@@ -0,0 +1,19 @@
+import React from 'react';
+import { Timeline } from '@tiny-design/react';
+
+export default function ColorDemo() {
+ return (
+
+
+ Create a services site 2015-09-01
+
+
+ Solve initial network problems 2015-09-04
+
+
+ Technical testing 2015-09-12
+
+ Network problems being solved 2015-09-20
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/timeline/demo/Customised.tsx b/packages/react/src/timeline/demo/Customised.tsx
new file mode 100644
index 00000000..a6d86d15
--- /dev/null
+++ b/packages/react/src/timeline/demo/Customised.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Timeline } from '@tiny-design/react';
+import { IconAttention } from '@tiny-design/icons';
+
+export default function CustomisedDemo() {
+ return (
+
+ Create a services site 2015-09-01
+ }>
+ Solve initial network problems 2015-09-04
+
+ Technical testing 2015-09-12
+ Network problems being solved 2015-09-20
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/timeline/demo/basic.md b/packages/react/src/timeline/demo/basic.md
deleted file mode 100755
index 2a8b615d..00000000
--- a/packages/react/src/timeline/demo/basic.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### Basic
-
-Basic timeline.
-
-```jsx live
-
- Create a services site 2015-09-01
- Solve initial network problems 2015-09-04
- Technical testing 2015-09-12
- Network problems being solved 2015-09-20
-
-```
-
-
diff --git a/packages/react/src/timeline/demo/centered.md b/packages/react/src/timeline/demo/centered.md
deleted file mode 100755
index 0d8e992f..00000000
--- a/packages/react/src/timeline/demo/centered.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### Centered timeline
-
-Center the timeline bar.
-
-```jsx live
-
- Create a services site 2015-09-01
- Solve initial network problems 2015-09-04
- Technical testing 2015-09-12
- Network problems being solved 2015-09-20
-
-```
-
-
diff --git a/packages/react/src/timeline/demo/color.md b/packages/react/src/timeline/demo/color.md
deleted file mode 100755
index 94d20a0f..00000000
--- a/packages/react/src/timeline/demo/color.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-### Color
-
-Set the color of dots via `dotStyle`.
-
-```jsx live
-
- Create a services site 2015-09-01
- Solve initial network problems 2015-09-04
- Technical testing 2015-09-12
- Network problems being solved 2015-09-20
-
-```
-
-
diff --git a/packages/react/src/timeline/demo/customised.md b/packages/react/src/timeline/demo/customised.md
deleted file mode 100755
index cd00320e..00000000
--- a/packages/react/src/timeline/demo/customised.md
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-### Customise Dot
-
-Set a node as an icon or other custom element.
-
-```jsx live
-
- Create a services site 2015-09-01
- }>
- Solve initial network problems 2015-09-04
-
- Technical testing 2015-09-12
- Network problems being solved 2015-09-20
-
-```
-
-
diff --git a/packages/react/src/timeline/index.md b/packages/react/src/timeline/index.md
index a7300b20..9c707bcd 100755
--- a/packages/react/src/timeline/index.md
+++ b/packages/react/src/timeline/index.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Centered from './demo/centered.md'
-import Color from './demo/color.md'
-import Customised from './demo/customised.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CenteredDemo from './demo/Centered';
+import CenteredSource from './demo/Centered.tsx?raw';
+import ColorDemo from './demo/Color';
+import ColorSource from './demo/Color.tsx?raw';
+import CustomisedDemo from './demo/Customised';
+import CustomisedSource from './demo/Customised.tsx?raw';
# Timeline
@@ -25,12 +29,44 @@ const { Item } = Timeline;
-
-
+
+
+### Basic
+
+Basic timeline.
+
+
+
+
+
+
+### Customise Dot
+
+Set a node as an icon or other custom element.
+
+
+
+
-
-
+
+
+### Color
+
+Set the color of dots via `dotStyle`.
+
+
+
+
+
+
+### Centered timeline
+
+Center the timeline bar.
+
+
+
+
@@ -51,4 +87,4 @@ const { Item } = Timeline;
| dot | customize timeline dot | `string` | `ReactNode` | - |
| dotStyle | style object of dot object | | - |
| style | style object of container object | | - |
-| className | className of container | string | - |
+| className | className of container | string | - |
\ No newline at end of file
diff --git a/packages/react/src/timeline/index.zh_CN.md b/packages/react/src/timeline/index.zh_CN.md
index 507027ab..e551f7d8 100644
--- a/packages/react/src/timeline/index.zh_CN.md
+++ b/packages/react/src/timeline/index.zh_CN.md
@@ -1,7 +1,11 @@
-import Basic from './demo/basic.md'
-import Centered from './demo/centered.md'
-import Color from './demo/color.md'
-import Customised from './demo/customised.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CenteredDemo from './demo/Centered';
+import CenteredSource from './demo/Centered.tsx?raw';
+import ColorDemo from './demo/Color';
+import ColorSource from './demo/Color.tsx?raw';
+import CustomisedDemo from './demo/Customised';
+import CustomisedSource from './demo/Customised.tsx?raw';
# Timeline
@@ -25,12 +29,44 @@ const { Item } = Timeline;
-
-
+
+
+### 基础
+
+基础时间线。
+
+
+
+
+
+
+### 自定义圆点
+
+设置节点为图标或其他自定义元素。
+
+
+
+
-
-
+
+
+### 颜色
+
+通过 `dotStyle` 设置圆点颜色。
+
+
+
+
+
+
+### 居中
+
+时间线居中显示。
+
+
+
+
@@ -51,4 +87,4 @@ const { Item } = Timeline;
| dot | 自定义时间线圆点 | `string` | `ReactNode` | - |
| dotStyle | 圆点样式对象 | | - |
| style | 容器样式对象 | | - |
-| className | 容器的 className | string | - |
+| className | 容器的 className | string | - |
\ No newline at end of file
diff --git a/packages/react/src/tooltip/demo/Arrow.tsx b/packages/react/src/tooltip/demo/Arrow.tsx
new file mode 100644
index 00000000..1b695204
--- /dev/null
+++ b/packages/react/src/tooltip/demo/Arrow.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { Tooltip } from '@tiny-design/react';
+
+export default function ArrowDemo() {
+ return (
+
+ This tooltip doesn't have arrow.
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/tooltip/demo/Basic.tsx b/packages/react/src/tooltip/demo/Basic.tsx
new file mode 100644
index 00000000..55d09c5a
--- /dev/null
+++ b/packages/react/src/tooltip/demo/Basic.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import { Tooltip } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+ Tooltip will show on mouse enter.
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/tooltip/demo/placement.md b/packages/react/src/tooltip/demo/Placement.tsx
old mode 100755
new mode 100644
similarity index 93%
rename from packages/react/src/tooltip/demo/placement.md
rename to packages/react/src/tooltip/demo/Placement.tsx
index 701c1d63..5732a960
--- a/packages/react/src/tooltip/demo/placement.md
+++ b/packages/react/src/tooltip/demo/Placement.tsx
@@ -1,13 +1,7 @@
-
+import React from 'react';
+import { Tooltip, Button } from '@tiny-design/react';
-### Placement
-
-There are 12 placement options available.
-
-> The tooltip's arrow is always pointing to the center of the trigger.
-
-```jsx live
-() => {
+export default function PlacementDemo() {
const btnStyle = {
width: 120,
height: 40
@@ -102,7 +96,4 @@ There are 12 placement options available.
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/tooltip/demo/arrow.md b/packages/react/src/tooltip/demo/arrow.md
deleted file mode 100755
index c789086e..00000000
--- a/packages/react/src/tooltip/demo/arrow.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-### Disable Arrow
-
-Set `arrow={false}` to hide arrow.
-
-```jsx live
-
- This tooltip doesn't have arrow.
-
-```
-
-
diff --git a/packages/react/src/tooltip/demo/basic.md b/packages/react/src/tooltip/demo/basic.md
deleted file mode 100755
index a1ca2e9c..00000000
--- a/packages/react/src/tooltip/demo/basic.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-### Basic
-
-The simplest usage.
-
-```jsx live
-
- Tooltip will show on mouse enter.
-
-```
-
-
diff --git a/packages/react/src/tooltip/index.md b/packages/react/src/tooltip/index.md
index 0a6f475f..23bbbd0d 100644
--- a/packages/react/src/tooltip/index.md
+++ b/packages/react/src/tooltip/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Arrow from './demo/arrow.md'
-import Placement from './demo/placement.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ArrowDemo from './demo/Arrow';
+import ArrowSource from './demo/Arrow.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
# Tooltip
@@ -21,11 +24,37 @@ import { Tooltip } from 'tiny-design';
-
-
+
+
+### Basic
+
+The simplest usage.
+
+
+
+
+
+
+### Disable Arrow
+
+Set `arrow={false}` to hide arrow.
+
+
+
+
-
+
+
+### Placement
+
+There are 12 placement options available.
+
+> The tooltip's arrow is always pointing to the center of the trigger.
+
+
+
+
@@ -44,4 +73,4 @@ import { Tooltip } from 'tiny-design';
| offset | distance between tooltip and trigger | number | - |
| mouseEnterDelay | delay before showing on hover (seconds) | number | - |
| mouseLeaveDelay | delay before hiding on mouse leave (seconds) | number | - |
-| disabled | whether disabled | boolean | false |
+| disabled | whether disabled | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/tooltip/index.zh_CN.md b/packages/react/src/tooltip/index.zh_CN.md
index 1acaf4b7..7d1870ce 100644
--- a/packages/react/src/tooltip/index.zh_CN.md
+++ b/packages/react/src/tooltip/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Arrow from './demo/arrow.md'
-import Placement from './demo/placement.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import ArrowDemo from './demo/Arrow';
+import ArrowSource from './demo/Arrow.tsx?raw';
+import PlacementDemo from './demo/Placement';
+import PlacementSource from './demo/Placement.tsx?raw';
# Tooltip
@@ -21,11 +24,37 @@ import { Tooltip } from 'tiny-design';
-
-
+
+
+### 基本用法
+
+最简单的用法。
+
+
+
+
+
+
+### 隐藏箭头
+
+设置 `arrow={false}` 隐藏箭头。
+
+
+
+
-
+
+
+### 位置
+
+共有 12 种位置选择。
+
+> 气泡框的箭头始终指向触发元素的中心。
+
+
+
+
@@ -44,4 +73,4 @@ import { Tooltip } from 'tiny-design';
| offset | 提示框与触发元素之间的距离 | number | - |
| mouseEnterDelay | 鼠标悬停后延迟显示的时间(秒) | number | - |
| mouseLeaveDelay | 鼠标离开后延迟隐藏的时间(秒) | number | - |
-| disabled | 是否禁用 | boolean | false |
+| disabled | 是否禁用 | boolean | false |
\ No newline at end of file
diff --git a/packages/react/src/transfer/demo/basic.md b/packages/react/src/transfer/demo/Basic.tsx
similarity index 65%
rename from packages/react/src/transfer/demo/basic.md
rename to packages/react/src/transfer/demo/Basic.tsx
index 862dbd60..3eae4f50 100644
--- a/packages/react/src/transfer/demo/basic.md
+++ b/packages/react/src/transfer/demo/Basic.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Transfer } from '@tiny-design/react';
-### Basic
-
-The most basic usage of `Transfer` involves providing the source data and target keys arrays, plus the rendering and some callback functions.
-
-```jsx live
-() => {
+export default function BasicDemo() {
const data = [];
for (let i = 1; i <= 15; i++) {
data.push({
@@ -24,7 +20,4 @@ The most basic usage of `Transfer` involves providing the source data and target
}}
/>
);
-};
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/transfer/demo/custom.md b/packages/react/src/transfer/demo/Custom.tsx
similarity index 78%
rename from packages/react/src/transfer/demo/custom.md
rename to packages/react/src/transfer/demo/Custom.tsx
index 08d41d9e..fae49664 100644
--- a/packages/react/src/transfer/demo/custom.md
+++ b/packages/react/src/transfer/demo/Custom.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Transfer } from '@tiny-design/react';
-### Custom Rendering
-
-Use `renderItem` to customize each item's display.
-
-```jsx live
-() => {
+export default function CustomDemo() {
const data = Array.from({ length: 10 }, (_, i) => ({
key: `item-${i}`,
label: `Item ${i + 1}`,
@@ -26,7 +22,4 @@ Use `renderItem` to customize each item's display.
showSearch
/>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/transfer/demo/search.md b/packages/react/src/transfer/demo/Search.tsx
similarity index 78%
rename from packages/react/src/transfer/demo/search.md
rename to packages/react/src/transfer/demo/Search.tsx
index ffbba3c9..d00b6c68 100644
--- a/packages/react/src/transfer/demo/search.md
+++ b/packages/react/src/transfer/demo/Search.tsx
@@ -1,11 +1,7 @@
-
+import React from 'react';
+import { Transfer } from '@tiny-design/react';
-### Search
-
-Transfer with a search box.
-
-```jsx live
-() => {
+export default function SearchDemo() {
const data = [];
for (let i = 1; i <= 20; i++) {
data.push({
@@ -25,7 +21,4 @@ Transfer with a search box.
}}
/>
);
-};
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/transfer/index.md b/packages/react/src/transfer/index.md
index 44f10463..15fd3c38 100644
--- a/packages/react/src/transfer/index.md
+++ b/packages/react/src/transfer/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Custom from './demo/custom.md'
-import Search from './demo/search.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomDemo from './demo/Custom';
+import CustomSource from './demo/Custom.tsx?raw';
+import SearchDemo from './demo/Search';
+import SearchSource from './demo/Search.tsx?raw';
# Transfer
@@ -19,9 +22,39 @@ import { Transfer } from 'tiny-design';
## Examples
-
-
-
+
+
+
+
+### Basic
+
+The most basic usage of `Transfer` involves providing the source data and target keys arrays, plus the rendering and some callback functions.
+
+
+
+
+
+
+### Search
+
+Transfer with a search box.
+
+
+
+
+
+
+
+
+### Custom Rendering
+
+Use `renderItem` to customize each item's display.
+
+
+
+
+
+
## API
@@ -48,4 +81,4 @@ type TransferItem = {
label: string;
disabled: boolean;
};
-```
+```
\ No newline at end of file
diff --git a/packages/react/src/transfer/index.zh_CN.md b/packages/react/src/transfer/index.zh_CN.md
index f681481b..bb1113a5 100644
--- a/packages/react/src/transfer/index.zh_CN.md
+++ b/packages/react/src/transfer/index.zh_CN.md
@@ -1,5 +1,9 @@
-import Basic from './demo/basic.md'
-import Search from './demo/search.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import CustomDemo from './demo/Custom';
+import CustomSource from './demo/Custom.tsx?raw';
+import SearchDemo from './demo/Search';
+import SearchSource from './demo/Search.tsx?raw';
# Transfer
@@ -18,8 +22,39 @@ import { Transfer } from 'tiny-design';
## 代码示例
-
-
+
+
+
+
+### 基本用法
+
+最基本的使用方式,需要提供数据源、目标键数组、渲染函数和回调函数。
+
+
+
+
+
+
+### 搜索
+
+可搜索的穿梭框。
+
+
+
+
+
+
+
+
+### 自定义渲染
+
+使用 `renderItem` 自定义每个项目的显示。
+
+
+
+
+
+
## API
@@ -46,4 +81,4 @@ type TransferItem = {
label: string;
disabled: boolean;
};
-```
+```
\ No newline at end of file
diff --git a/packages/react/src/tree/demo/Basic.tsx b/packages/react/src/tree/demo/Basic.tsx
new file mode 100644
index 00000000..98c50633
--- /dev/null
+++ b/packages/react/src/tree/demo/Basic.tsx
@@ -0,0 +1,46 @@
+import React from 'react';
+import { Tree } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ const treeData = [
+ {
+ title: 'level one 1',
+ children: [{
+ title: 'level two 1-1',
+ children: [{
+ title: 'level three 1-1-1'
+ }]
+ }]
+ }, {
+ title: 'level one 2',
+ children: [{
+ title: 'level two 2-1',
+ children: [{
+ title: 'level three 2-1-1'
+ }]
+ }, {
+ title: 'level two 2-2',
+ children: [{
+ title: 'level three 2-2-1'
+ }]
+ }]
+ }, {
+ title: 'level one 3',
+ children: [{
+ title: 'level two 3-1',
+ children: [{
+ title: 'level three 3-1-1'
+ }]
+ }, {
+ title: 'level two 3-2',
+ children: [{
+ title: 'level three 3-2-1'
+ }]
+ }]
+ }
+ ];
+
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/tree/demo/Icon.tsx b/packages/react/src/tree/demo/Icon.tsx
new file mode 100644
index 00000000..a20e331c
--- /dev/null
+++ b/packages/react/src/tree/demo/Icon.tsx
@@ -0,0 +1,50 @@
+import React from 'react';
+import { Tree } from '@tiny-design/react';
+import { IconZoomout, IconZoomin } from '@tiny-design/icons';
+
+export default function IconDemo() {
+ const treeData = [
+ {
+ title: 'level one 1',
+ children: [{
+ title: 'level two 1-1',
+ children: [{
+ title: 'level three 1-1-1'
+ }]
+ }]
+ }, {
+ title: 'level one 2',
+ children: [{
+ title: 'level two 2-1',
+ children: [{
+ title: 'level three 2-1-1'
+ }]
+ }, {
+ title: 'level two 2-2',
+ children: [{
+ title: 'level three 2-2-1'
+ }]
+ }]
+ }, {
+ title: 'level one 3',
+ children: [{
+ title: 'level two 3-1',
+ children: [{
+ title: 'level three 3-1-1'
+ }]
+ }, {
+ title: 'level two 3-2',
+ children: [{
+ title: 'level three 3-2-1'
+ }]
+ }]
+ }
+ ];
+
+ return (
+ isExpanded ? : }
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/tree/demo/Selectable.tsx b/packages/react/src/tree/demo/Selectable.tsx
new file mode 100644
index 00000000..3ce43e7f
--- /dev/null
+++ b/packages/react/src/tree/demo/Selectable.tsx
@@ -0,0 +1,44 @@
+import React from 'react';
+import { Tree } from '@tiny-design/react';
+
+export default function SelectableDemo() {
+ const treeData = [
+ {
+ key: '1',
+ title: 'parent 1',
+ children: [
+ {
+ key: '2',
+ title: 'parent 1-0',
+ disabled: true,
+ children: [
+ {
+ key: '3',
+ title: 'child 1',
+ disableCheckbox: true,
+ },
+ {
+ key: '4',
+ title: 'child 2',
+ },
+ ],
+ },
+ {
+ key: '5',
+ title: 'parent 1-1',
+ children: [{ title: abc }],
+ },
+ ],
+ },
+ ];
+
+ return (
+ console.log(keys)}
+ />
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/tree/demo/basic.md b/packages/react/src/tree/demo/basic.md
deleted file mode 100644
index 8eebacdf..00000000
--- a/packages/react/src/tree/demo/basic.md
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-### Basic
-
-A basic usage.
-
-```jsx live
-class BasicExample extends React.PureComponent {
- constructor() {
- super();
- this.treeData = [
- {
- title: 'level one 1',
- children: [{
- title: 'level two 1-1',
- children: [{
- title: 'level three 1-1-1'
- }]
- }]
- }, {
- title: 'level one 2',
- children: [{
- title: 'level two 2-1',
- children: [{
- title: 'level three 2-1-1'
- }]
- }, {
- title: 'level two 2-2',
- children: [{
- title: 'level three 2-2-1'
- }]
- }]
- }, {
- title: 'level one 3',
- children: [{
- title: 'level two 3-1',
- children: [{
- title: 'level three 3-1-1'
- }]
- }, {
- title: 'level two 3-2',
- children: [{
- title: 'level three 3-2-1'
- }]
- }]
- }
- ]
- }
-
- render(){
- return (
-
- );
- }
-}
-```
-
-
diff --git a/packages/react/src/tree/demo/icon.md b/packages/react/src/tree/demo/icon.md
deleted file mode 100644
index 39f7e226..00000000
--- a/packages/react/src/tree/demo/icon.md
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-### Icon
-
-Customised icons.
-
-```jsx live
-class IconExample extends React.PureComponent {
- constructor() {
- super();
- this.treeData = [
- {
- title: 'level one 1',
- children: [{
- title: 'level two 1-1',
- children: [{
- title: 'level three 1-1-1'
- }]
- }]
- }, {
- title: 'level one 2',
- children: [{
- title: 'level two 2-1',
- children: [{
- title: 'level three 2-1-1'
- }]
- }, {
- title: 'level two 2-2',
- children: [{
- title: 'level three 2-2-1'
- }]
- }]
- }, {
- title: 'level one 3',
- children: [{
- title: 'level two 3-1',
- children: [{
- title: 'level three 3-1-1'
- }]
- }, {
- title: 'level two 3-2',
- children: [{
- title: 'level three 3-2-1'
- }]
- }]
- }
- ]
- }
-
- render(){
- return (
- isExpanded ? : }
- />
- );
- }
-}
-```
-
-
diff --git a/packages/react/src/tree/demo/selectable.md b/packages/react/src/tree/demo/selectable.md
deleted file mode 100644
index 2c53f7cf..00000000
--- a/packages/react/src/tree/demo/selectable.md
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-### Selectable
-
-Make nodes selectable.
-
-```jsx live
-class SelectableExample extends React.PureComponent {
- constructor() {
- super();
- this.treeData = [
- {
- key: '1',
- title: 'parent 1',
- children: [
- {
- key: '2',
- title: 'parent 1-0',
- disabled: true,
- children: [
- {
- key: '3',
- title: 'child 1',
- disableCheckbox: true,
- },
- {
- key: '4',
- title: 'child 2',
- },
- ],
- },
- {
- key: '5',
- title: 'parent 1-1',
- children: [{ title: abc }],
- },
- ],
- },
- ];
- }
-
- render(){
- return (
- console.log(keys)}
- />
- );
- }
-}
-```
-
-
diff --git a/packages/react/src/tree/index.md b/packages/react/src/tree/index.md
index 55801e69..852c39de 100644
--- a/packages/react/src/tree/index.md
+++ b/packages/react/src/tree/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Selectable from './demo/selectable.md'
-import Icon from './demo/icon.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SelectableDemo from './demo/Selectable';
+import SelectableSource from './demo/Selectable.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
# Tree
@@ -20,11 +23,35 @@ import { Tree } from 'tiny-design';
-
-
+
+
+### Basic
+
+A basic usage.
+
+
+
+
+
+
+### Selectable
+
+Make nodes selectable.
+
+
+
+
-
+
+
+### Icon
+
+Customised icons.
+
+
+
+
@@ -44,7 +71,7 @@ import { Tree } from 'tiny-design';
| defaultExpandAll | whether to expand all nodes by default | boolean | false |
| icon | custom icon render function | (isExpanded: boolean) => ReactNode | - |
| onCheck | callback when a node is checked | (checkedKeys: string[], e: ChangeEvent) => void | - |
-| onExpand | callback when a node is expanded/collapsed | (expandedKeys: string[], e: MouseEvent) => void | - |
+| onExpand | callback when a node is expanded/collapsed | (expandedKeys: string[], e: MouseEvent) => void | - |
| style | style object of container | CSSProperties | - |
| className | className of container | string | - |
@@ -57,4 +84,4 @@ import { Tree } from 'tiny-design';
| disableCheckbox | whether disable checkbox of the node | boolean | false |
| disabled | whether disabled the node | boolean | false |
| icon | custom icon render function | (isExpanded: boolean) => ReactNode | - |
-| children | child tree nodes | TreeData[] | - |
+| children | child tree nodes | TreeData[] | - |
\ No newline at end of file
diff --git a/packages/react/src/tree/index.zh_CN.md b/packages/react/src/tree/index.zh_CN.md
index f1b245e4..a62d6235 100644
--- a/packages/react/src/tree/index.zh_CN.md
+++ b/packages/react/src/tree/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Selectable from './demo/selectable.md'
-import Icon from './demo/icon.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import SelectableDemo from './demo/Selectable';
+import SelectableSource from './demo/Selectable.tsx?raw';
+import IconDemo from './demo/Icon';
+import IconSource from './demo/Icon.tsx?raw';
# Tree
@@ -20,11 +23,35 @@ import { Tree } from 'tiny-design';
-
-
+
+
+### 基础用法
+
+最简单的用法。
+
+
+
+
+
+
+### 可选择
+
+节点可选择。
+
+
+
+
-
+
+
+### 自定义图标
+
+自定义树节点展开/收起图标。
+
+
+
+
@@ -57,4 +84,4 @@ import { Tree } from 'tiny-design';
| disableCheckbox | 是否禁用节点的复选框 | boolean | false |
| disabled | 是否禁用该节点 | boolean | false |
| icon | 自定义图标渲染函数 | (isExpanded: boolean) => ReactNode | - |
-| children | 子树节点 | TreeData[] | - |
+| children | 子树节点 | TreeData[] | - |
\ No newline at end of file
diff --git a/packages/react/src/typography/demo/basic.md b/packages/react/src/typography/demo/Basic.tsx
similarity index 91%
rename from packages/react/src/typography/demo/basic.md
rename to packages/react/src/typography/demo/Basic.tsx
index 24030e48..36c64072 100644
--- a/packages/react/src/typography/demo/basic.md
+++ b/packages/react/src/typography/demo/Basic.tsx
@@ -1,17 +1,14 @@
-
+import React from 'react';
+import { Typography } from '@tiny-design/react';
-### Basic
+const { Heading, Paragraph, Text } = Typography;
-Display the document sample.
-
-```jsx live
-() => {
- const { Heading, Paragraph, Text } = Typography;
+export default function BasicDemo() {
return (
- <>
+ <>
Introduction
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cursus turpis massa tincidunt dui ut ornare lectus sit. Eu ultrices vitae auctor eu augue ut lectus arcu bibendum. Quis commodo odio aenean sed adipiscing diam donec adipiscing tristique. Massa enim nec dui nunc mattis enim. Aliquet risus feugiat in ante metus dictum at. Integer feugiat scelerisque varius morbi enim nunc faucibus a pellentesque.
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cursus turpis massa tincidunt dui ut ornare lectus sit. Eu ultrices vitae auctor eu augue ut lectus arcu bibendum. Quis commodo odio aenean sed adipiscing diam donec adipiscing tristique. Massa enim nec dui nunc mattis enim. Aliquet risus feugiat in ante metus dictum at. Integer feugiat scelerisque varius morbi enim nunc faucibus a pellentesque.
Metus aliquam eleifend mi in nulla posuere. Nisl tincidunt eget nullam non nisi est sit amet. Diam sit amet nisl suscipit. In ante metus dictum at tempor commodo. Amet luctus venenatis lectus magna. Velit egestas dui id ornare arcu. Enim ut tellus elementum sagittis. Vitae aliquet nec ullamcorper sit amet risus nullam. Nisl nunc mi ipsum faucibus vitae. Nunc mi ipsum faucibus vitae. Dictum at tempor commodo ullamcorper a lacus vestibulum.
@@ -43,7 +40,4 @@ Display the document sample.
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/typography/demo/heading.md b/packages/react/src/typography/demo/Heading.tsx
similarity index 65%
rename from packages/react/src/typography/demo/heading.md
rename to packages/react/src/typography/demo/Heading.tsx
index 112c2d6f..ac347813 100644
--- a/packages/react/src/typography/demo/heading.md
+++ b/packages/react/src/typography/demo/Heading.tsx
@@ -1,14 +1,11 @@
-
+import React from 'react';
+import { Typography } from '@tiny-design/react';
-### Heading
+const { Heading } = Typography;
-Display title in different levels.
-
-```jsx live
-() => {
- const { Heading } = Typography;
+export default function HeadingDemo() {
return (
- <>
+ <>
H1.HeadingH2.HeadingH3.Heading
@@ -17,7 +14,4 @@ Display title in different levels.
H6.Heading
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/typography/demo/text.md b/packages/react/src/typography/demo/Text.tsx
similarity index 55%
rename from packages/react/src/typography/demo/text.md
rename to packages/react/src/typography/demo/Text.tsx
index cf07e5dc..29437d60 100644
--- a/packages/react/src/typography/demo/text.md
+++ b/packages/react/src/typography/demo/Text.tsx
@@ -1,34 +1,28 @@
-
+import React from 'react';
+import { Typography } from '@tiny-design/react';
-### Text
+const { Text } = Typography;
-HTML contains several elements for defining text with a special meaning. `Text` component provides a wrapper for them.
-
-```jsx live
-() => {
- const { Text } = Typography;
+export default function TextDemo() {
return (
- <>
+ <>
I am a text
-
+ I am a text
-
+ I am a text
-
+ I am a text
-
+ I am a text
-
+ I am a text
-
+ I am a text
-
+ I am a Textsup
-
+ I am a Textsub
>
);
-}
-```
-
-
+}
\ No newline at end of file
diff --git a/packages/react/src/typography/index.md b/packages/react/src/typography/index.md
index 3a5cac19..74138bbe 100644
--- a/packages/react/src/typography/index.md
+++ b/packages/react/src/typography/index.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Heading from './demo/heading.md'
-import Text from './demo/text.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import HeadingDemo from './demo/Heading';
+import HeadingSource from './demo/Heading.tsx?raw';
+import TextDemo from './demo/Text';
+import TextSource from './demo/Text.tsx?raw';
# Typography
@@ -20,9 +23,37 @@ const { Heading, Paragraph, Text } = Typography;
## Examples
-
-
-
+
+
+
+
+### Basic
+
+Display the document sample.
+
+
+
+
+
+
+### Heading
+
+Display title in different levels.
+
+
+
+
+
+
+### Text
+
+HTML contains several elements for defining text with a special meaning. `Text` component provides a wrapper for them.
+
+
+
+
+
+
## API
diff --git a/packages/react/src/typography/index.zh_CN.md b/packages/react/src/typography/index.zh_CN.md
index 75c35e7e..3b364047 100644
--- a/packages/react/src/typography/index.zh_CN.md
+++ b/packages/react/src/typography/index.zh_CN.md
@@ -1,6 +1,9 @@
-import Basic from './demo/basic.md'
-import Heading from './demo/heading.md'
-import Text from './demo/text.md'
+import BasicDemo from './demo/Basic';
+import BasicSource from './demo/Basic.tsx?raw';
+import HeadingDemo from './demo/Heading';
+import HeadingSource from './demo/Heading.tsx?raw';
+import TextDemo from './demo/Text';
+import TextSource from './demo/Text.tsx?raw';
# Typography
@@ -20,9 +23,37 @@ const { Heading, Paragraph, Text } = Typography;
## 代码示例
-
-
-
+
+
+
+
+### 基本使用
+
+展示文档示例。
+
+
+
+
+
+
+### 标题
+
+展示不同级别的标题。
+
+
+
+
+
+
+### 文本
+
+HTML 包含多个用于定义具有特殊意义的文本的元素。`Text` 组件为它们提供了包装器。
+
+
+
+
+
+
## API
diff --git a/packages/react/src/upload/demo/Basic.tsx b/packages/react/src/upload/demo/Basic.tsx
new file mode 100644
index 00000000..0a08b6b8
--- /dev/null
+++ b/packages/react/src/upload/demo/Basic.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Upload, Button } from '@tiny-design/react';
+
+export default function BasicDemo() {
+ return (
+
+ Click to Upload
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/upload/demo/Drag.tsx b/packages/react/src/upload/demo/Drag.tsx
new file mode 100644
index 00000000..66156b3c
--- /dev/null
+++ b/packages/react/src/upload/demo/Drag.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Upload } from '@tiny-design/react';
+import { IconCloudUpload } from '@tiny-design/icons';
+
+export default function DragDemo() {
+ return (
+
+
+
+
+
Click or drag file to this area to upload
+
+ Support for a single or bulk upload. Strictly prohibit from uploading company data or other band files
+
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/upload/demo/UploadList.tsx b/packages/react/src/upload/demo/UploadList.tsx
new file mode 100644
index 00000000..760c3089
--- /dev/null
+++ b/packages/react/src/upload/demo/UploadList.tsx
@@ -0,0 +1,32 @@
+import React from 'react';
+import { Upload, Button } from '@tiny-design/react';
+
+export default function UploadListDemo() {
+ return (
+
+ Upload
+
+ );
+}
\ No newline at end of file
diff --git a/packages/react/src/upload/demo/basic.md b/packages/react/src/upload/demo/basic.md
deleted file mode 100644
index 5c4ca99e..00000000
--- a/packages/react/src/upload/demo/basic.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-### Basic
-
-A classic mode. File selection dialog pops up when upload button is clicked.
-
-```jsx live
-
- Click to Upload
-
-```
-
-
diff --git a/packages/react/src/upload/demo/drag.md b/packages/react/src/upload/demo/drag.md
deleted file mode 100644
index e2685ce1..00000000
--- a/packages/react/src/upload/demo/drag.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-### Drag and Drop
-
-You can drag files to a specific area, to upload. Alternatively, you can also upload by selecting.
-
-```jsx live
-
-
-
-
-
Click or drag file to this area to upload
-
- Support for a single or bulk upload. Strictly prohibit from uploading company data or other band files
-