@fjyueke/bify-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.js +248 -0
  5. package/metaData/components/action-sheet/api.md +74 -0
  6. package/metaData/components/action-sheet/doc.md +243 -0
  7. package/metaData/components/action-sheet/example/index.tsx +116 -0
  8. package/metaData/components/area-picker/api.md +25 -0
  9. package/metaData/components/area-picker/doc.md +132 -0
  10. package/metaData/components/area-picker/example/index.tsx +60 -0
  11. package/metaData/components/avatar/api.md +19 -0
  12. package/metaData/components/avatar/doc.md +170 -0
  13. package/metaData/components/avatar/example/index.tsx +76 -0
  14. package/metaData/components/back-top/api.md +21 -0
  15. package/metaData/components/back-top/doc.md +142 -0
  16. package/metaData/components/back-top/example/index.tsx +96 -0
  17. package/metaData/components/backdrop/api.md +20 -0
  18. package/metaData/components/backdrop/doc.md +98 -0
  19. package/metaData/components/backdrop/example/index.tsx +33 -0
  20. package/metaData/components/badge/api.md +10 -0
  21. package/metaData/components/badge/doc.md +169 -0
  22. package/metaData/components/badge/example/index.tsx +81 -0
  23. package/metaData/components/button/api.md +31 -0
  24. package/metaData/components/button/doc.md +235 -0
  25. package/metaData/components/button/example/index.tsx +235 -0
  26. package/metaData/components/calendar/api.md +62 -0
  27. package/metaData/components/calendar/doc.md +516 -0
  28. package/metaData/components/calendar/example/index.tsx +501 -0
  29. package/metaData/components/cascader/api.md +55 -0
  30. package/metaData/components/cascader/doc.md +358 -0
  31. package/metaData/components/cascader/example/index.tsx +159 -0
  32. package/metaData/components/cell/api.md +37 -0
  33. package/metaData/components/cell/doc.md +158 -0
  34. package/metaData/components/cell/example/index.tsx +44 -0
  35. package/metaData/components/checkbox/api.md +35 -0
  36. package/metaData/components/checkbox/doc.md +203 -0
  37. package/metaData/components/checkbox/example/index.tsx +94 -0
  38. package/metaData/components/circle/api.md +17 -0
  39. package/metaData/components/circle/doc.md +123 -0
  40. package/metaData/components/circle/example/index.tsx +81 -0
  41. package/metaData/components/collapse/api.md +31 -0
  42. package/metaData/components/collapse/doc.md +142 -0
  43. package/metaData/components/collapse/example/index.tsx +81 -0
  44. package/metaData/components/config-provider/api.md +7 -0
  45. package/metaData/components/config-provider/doc.md +193 -0
  46. package/metaData/components/config-provider/example/index.tsx +54 -0
  47. package/metaData/components/countdown/api.md +46 -0
  48. package/metaData/components/countdown/doc.md +167 -0
  49. package/metaData/components/countdown/example/index.tsx +70 -0
  50. package/metaData/components/datetime-picker/api.md +25 -0
  51. package/metaData/components/datetime-picker/doc.md +317 -0
  52. package/metaData/components/datetime-picker/example/index.tsx +265 -0
  53. package/metaData/components/dialog/api.md +66 -0
  54. package/metaData/components/dialog/doc.md +292 -0
  55. package/metaData/components/dialog/example/index.tsx +138 -0
  56. package/metaData/components/divider/api.md +15 -0
  57. package/metaData/components/divider/doc.md +108 -0
  58. package/metaData/components/divider/example/index.tsx +45 -0
  59. package/metaData/components/dropdown-menu/api.md +37 -0
  60. package/metaData/components/dropdown-menu/doc.md +279 -0
  61. package/metaData/components/dropdown-menu/example/index.tsx +182 -0
  62. package/metaData/components/empty/api.md +20 -0
  63. package/metaData/components/empty/doc.md +126 -0
  64. package/metaData/components/empty/example/index.tsx +66 -0
  65. package/metaData/components/field/api.md +10 -0
  66. package/metaData/components/field/doc.md +274 -0
  67. package/metaData/components/field/example/index.tsx +203 -0
  68. package/metaData/components/fixed-nav/api.md +21 -0
  69. package/metaData/components/fixed-nav/doc.md +196 -0
  70. package/metaData/components/fixed-nav/example/index.tsx +80 -0
  71. package/metaData/components/fixed-view/api.md +10 -0
  72. package/metaData/components/fixed-view/doc.md +25 -0
  73. package/metaData/components/fixed-view/example/index.tsx +12 -0
  74. package/metaData/components/flex/api.md +18 -0
  75. package/metaData/components/flex/doc.md +103 -0
  76. package/metaData/components/flex/example/index.tsx +58 -0
  77. package/metaData/components/floating-bubble/api.md +18 -0
  78. package/metaData/components/floating-bubble/doc.md +94 -0
  79. package/metaData/components/floating-bubble/example/index.tsx +55 -0
  80. package/metaData/components/floating-panel/api.md +19 -0
  81. package/metaData/components/floating-panel/doc.md +174 -0
  82. package/metaData/components/floating-panel/example/index.tsx +131 -0
  83. package/metaData/components/form/api.md +124 -0
  84. package/metaData/components/form/doc.md +759 -0
  85. package/metaData/components/form/example/index.tsx +222 -0
  86. package/metaData/components/grid/api.md +28 -0
  87. package/metaData/components/grid/doc.md +167 -0
  88. package/metaData/components/grid/example/index.tsx +80 -0
  89. package/metaData/components/image/api.md +42 -0
  90. package/metaData/components/image/doc.md +117 -0
  91. package/metaData/components/image/example/index.tsx +76 -0
  92. package/metaData/components/index-list/api.md +39 -0
  93. package/metaData/components/index-list/doc.md +176 -0
  94. package/metaData/components/index-list/example/index.tsx +110 -0
  95. package/metaData/components/list/api.md +30 -0
  96. package/metaData/components/list/doc.md +317 -0
  97. package/metaData/components/list/example/index.tsx +218 -0
  98. package/metaData/components/loading/api.md +10 -0
  99. package/metaData/components/loading/doc.md +113 -0
  100. package/metaData/components/loading/example/index.tsx +47 -0
  101. package/metaData/components/navbar/api.md +26 -0
  102. package/metaData/components/navbar/doc.md +85 -0
  103. package/metaData/components/navbar/example/index.tsx +28 -0
  104. package/metaData/components/notice-bar/api.md +28 -0
  105. package/metaData/components/notice-bar/doc.md +154 -0
  106. package/metaData/components/notice-bar/example/index.tsx +107 -0
  107. package/metaData/components/notify/api.md +28 -0
  108. package/metaData/components/notify/doc.md +140 -0
  109. package/metaData/components/notify/example/index.tsx +89 -0
  110. package/metaData/components/number-keyboard/api.md +21 -0
  111. package/metaData/components/number-keyboard/doc.md +247 -0
  112. package/metaData/components/number-keyboard/example/index.tsx +201 -0
  113. package/metaData/components/pagination/api.md +18 -0
  114. package/metaData/components/pagination/doc.md +113 -0
  115. package/metaData/components/pagination/example/index.tsx +73 -0
  116. package/metaData/components/password-input/api.md +25 -0
  117. package/metaData/components/password-input/doc.md +126 -0
  118. package/metaData/components/password-input/example/index.tsx +124 -0
  119. package/metaData/components/picker/api.md +61 -0
  120. package/metaData/components/picker/doc.md +336 -0
  121. package/metaData/components/picker/example/index.tsx +232 -0
  122. package/metaData/components/popup/api.md +48 -0
  123. package/metaData/components/popup/doc.md +150 -0
  124. package/metaData/components/popup/example/index.tsx +214 -0
  125. package/metaData/components/progress/api.md +11 -0
  126. package/metaData/components/progress/doc.md +105 -0
  127. package/metaData/components/progress/example/index.tsx +58 -0
  128. package/metaData/components/pull-refresh/api.md +18 -0
  129. package/metaData/components/pull-refresh/doc.md +198 -0
  130. package/metaData/components/pull-refresh/example/index.tsx +153 -0
  131. package/metaData/components/radio/api.md +26 -0
  132. package/metaData/components/radio/doc.md +201 -0
  133. package/metaData/components/radio/example/index.tsx +103 -0
  134. package/metaData/components/rate/api.md +23 -0
  135. package/metaData/components/rate/doc.md +122 -0
  136. package/metaData/components/rate/example/index.tsx +36 -0
  137. package/metaData/components/rolling-text/api.md +23 -0
  138. package/metaData/components/rolling-text/doc.md +153 -0
  139. package/metaData/components/rolling-text/example/index.tsx +150 -0
  140. package/metaData/components/safe-area/api.md +8 -0
  141. package/metaData/components/safe-area/doc.md +30 -0
  142. package/metaData/components/safe-area/example/index.tsx +16 -0
  143. package/metaData/components/search/api.md +35 -0
  144. package/metaData/components/search/doc.md +185 -0
  145. package/metaData/components/search/example/index.tsx +101 -0
  146. package/metaData/components/share-sheet/api.md +48 -0
  147. package/metaData/components/share-sheet/doc.md +215 -0
  148. package/metaData/components/share-sheet/example/index.tsx +143 -0
  149. package/metaData/components/sidebar/api.md +28 -0
  150. package/metaData/components/sidebar/doc.md +122 -0
  151. package/metaData/components/sidebar/example/index.tsx +58 -0
  152. package/metaData/components/signature/api.md +19 -0
  153. package/metaData/components/signature/doc.md +115 -0
  154. package/metaData/components/signature/example/index.tsx +56 -0
  155. package/metaData/components/skeleton/api.md +45 -0
  156. package/metaData/components/skeleton/doc.md +131 -0
  157. package/metaData/components/skeleton/example/index.tsx +80 -0
  158. package/metaData/components/slider/api.md +28 -0
  159. package/metaData/components/slider/doc.md +151 -0
  160. package/metaData/components/slider/example/index.tsx +54 -0
  161. package/metaData/components/space/api.md +12 -0
  162. package/metaData/components/space/doc.md +125 -0
  163. package/metaData/components/space/example/index.tsx +75 -0
  164. package/metaData/components/stepper/api.md +37 -0
  165. package/metaData/components/stepper/doc.md +152 -0
  166. package/metaData/components/stepper/example/index.tsx +45 -0
  167. package/metaData/components/steps/api.md +9 -0
  168. package/metaData/components/steps/doc.md +143 -0
  169. package/metaData/components/steps/example/index.tsx +93 -0
  170. package/metaData/components/sticky/api.md +16 -0
  171. package/metaData/components/sticky/doc.md +87 -0
  172. package/metaData/components/sticky/example/index.tsx +62 -0
  173. package/metaData/components/swipe-cell/api.md +19 -0
  174. package/metaData/components/swipe-cell/doc.md +105 -0
  175. package/metaData/components/swipe-cell/example/index.tsx +62 -0
  176. package/metaData/components/swiper/api.md +22 -0
  177. package/metaData/components/swiper/doc.md +228 -0
  178. package/metaData/components/swiper/example/index.tsx +118 -0
  179. package/metaData/components/switch/api.md +17 -0
  180. package/metaData/components/switch/doc.md +110 -0
  181. package/metaData/components/switch/example/index.tsx +57 -0
  182. package/metaData/components/tabbar/api.md +27 -0
  183. package/metaData/components/tabbar/doc.md +160 -0
  184. package/metaData/components/tabbar/example/index.tsx +99 -0
  185. package/metaData/components/tabs/api.md +36 -0
  186. package/metaData/components/tabs/doc.md +307 -0
  187. package/metaData/components/tabs/example/index.tsx +231 -0
  188. package/metaData/components/tag/api.md +17 -0
  189. package/metaData/components/tag/doc.md +162 -0
  190. package/metaData/components/tag/example/index.tsx +84 -0
  191. package/metaData/components/text-ellipsis/api.md +26 -0
  192. package/metaData/components/text-ellipsis/doc.md +135 -0
  193. package/metaData/components/text-ellipsis/example/index.tsx +44 -0
  194. package/metaData/components/timeline/api.md +20 -0
  195. package/metaData/components/timeline/doc.md +210 -0
  196. package/metaData/components/timeline/example/index.tsx +145 -0
  197. package/metaData/components/toast/api.md +39 -0
  198. package/metaData/components/toast/doc.md +256 -0
  199. package/metaData/components/toast/example/index.tsx +136 -0
  200. package/metaData/components/tree-select/api.md +19 -0
  201. package/metaData/components/tree-select/doc.md +185 -0
  202. package/metaData/components/tree-select/example/index.tsx +112 -0
  203. package/metaData/components/uploader/api.md +32 -0
  204. package/metaData/components/uploader/doc.md +340 -0
  205. package/metaData/components/uploader/example/index.tsx +222 -0
  206. package/metaData/components/watermark/api.md +18 -0
  207. package/metaData/components/watermark/doc.md +97 -0
  208. package/metaData/components/watermark/example/index.tsx +62 -0
  209. package/metaData/components-index.json +274 -0
  210. package/package.json +56 -0
@@ -0,0 +1,307 @@
1
+ # Tabs 标签页
2
+
3
+ ### 介绍
4
+
5
+ 选项卡组件,用于在不同的内容区域之间进行切换。
6
+
7
+ ### 引入
8
+
9
+ ```ts
10
+ import { Tabs } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 通过 `value` 绑定当前激活标签对应的索引值,默认情况下启用第一个标签。
18
+
19
+ ```tsx
20
+ import { Tabs } from "@fjyueke/bify-core"
21
+
22
+ function BasicTabs() {
23
+ const [value, setValue] = useState(0)
24
+ return (
25
+ <Tabs value={value} onChange={setValue}>
26
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
27
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
28
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
29
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
30
+ </Tabs>
31
+ )
32
+ }
33
+ ```
34
+
35
+ ### 徽标用法
36
+
37
+ ```tsx
38
+ import { Tabs } from "@fjyueke/bify-core"
39
+
40
+ function BadgeTabs() {
41
+ return (
42
+ <Tabs>
43
+ <Tabs.TabPanel title="标签 1" dot>
44
+ 内容 1
45
+ </Tabs.TabPanel>
46
+ <Tabs.TabPanel title="标签 2" badge={8}>
47
+ 内容 2
48
+ </Tabs.TabPanel>
49
+ <Tabs.TabPanel title="标签 3" badge="Hot">
50
+ 内容 3
51
+ </Tabs.TabPanel>
52
+ <Tabs.TabPanel title="标签 4" badge={<Success className="badge-icon" />}>
53
+ 内容 4
54
+ </Tabs.TabPanel>
55
+ </Tabs>
56
+ )
57
+ }
58
+ ```
59
+
60
+ ```scss
61
+ .badge-icon {
62
+ display: block;
63
+ margin-left: 0;
64
+ font-size: 10px * $hd;
65
+ line-height: 16px * $hd;
66
+ margin-right: 0;
67
+ }
68
+ ```
69
+
70
+ ### 通过标识匹配
71
+
72
+ 在 `Tabs.TabPanel` 标签指定 `value` 属性的情况下,`Tabs.defaultValue` 的值为当前标签的 `value`。
73
+
74
+ ```tsx
75
+ <Tabs defaultValue="a">
76
+ <Tabs.TabPanel value="a" title="标签 1">
77
+ 内容 1
78
+ </Tabs.TabPanel>
79
+ <Tabs.TabPanel value="b" title="标签 2">
80
+ 内容 2
81
+ </Tabs.TabPanel>
82
+ <Tabs.TabPanel value="c" title="标签 3">
83
+ 内容 3
84
+ </Tabs.TabPanel>
85
+ <Tabs.TabPanel value="d" title="标签 4">
86
+ 内容 4
87
+ </Tabs.TabPanel>
88
+ </Tabs>
89
+ ```
90
+
91
+ ### 标签栏滚动
92
+
93
+ 标签数量超过 5 个时,标签栏可以在水平方向上滚动,切换时会自动将当前标签居中。
94
+
95
+ ```tsx
96
+ <Tabs>
97
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
98
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
99
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
100
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
101
+ <Tabs.TabPanel title="标签 5">内容 5</Tabs.TabPanel>
102
+ <Tabs.TabPanel title="标签 6">内容 6</Tabs.TabPanel>
103
+ <Tabs.TabPanel title="标签 7">内容 7</Tabs.TabPanel>
104
+ </Tabs>
105
+ ```
106
+
107
+ ### 禁用标签
108
+
109
+ 设置 `disabled` 属性即可禁用标签,如果需要监听禁用标签的点击事件,可以在 `Tabs` 上监听`onClick` 事件。
110
+
111
+ ```tsx
112
+ <Tabs>
113
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
114
+ <Tabs.TabPanel title="标签 2" disabled>
115
+ 内容 2
116
+ </Tabs.TabPanel>
117
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
118
+ </Tabs>
119
+ ```
120
+
121
+ ### 样式风格
122
+
123
+ `Tabs` 支持两种样式风格:`line` 和`card`,默认为 `line` 样式,可以通过 `theme` 属性切换样式风格。
124
+
125
+ ```tsx
126
+ <Tabs theme="card">
127
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
128
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
129
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
130
+ </Tabs>
131
+ ```
132
+
133
+ ### 点击事件
134
+
135
+ 可以在 `Tabs` 上绑定 `onTabClick` 事件,事件传参为标签对应的标识符和标题。
136
+
137
+ ```tsx
138
+ import { Tabs, Toast } from "@fjyueke/bify-core"
139
+
140
+ function TabsWithTabClick() {
141
+ return (
142
+ <>
143
+ <Toast id="toast" />
144
+ <Tabs onTabClick={({ title }) => Toast.open(title)}>
145
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
146
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
147
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
148
+ </Tabs>
149
+ <Toast id="toast" />
150
+ </>
151
+ )
152
+ }
153
+ ```
154
+
155
+ ### 粘性布局
156
+
157
+ 通过 `sticky` 属性可以开启粘性布局,粘性布局下,标签页滚动到顶部时会自动吸顶。
158
+
159
+ ```tsx
160
+ <Tabs sticky>
161
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
162
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
163
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
164
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
165
+ </Tabs>
166
+ ```
167
+
168
+ ### 自定义标签
169
+
170
+ 通过 `title` 插槽可以自定义标签内容。
171
+
172
+ ```tsx
173
+ import { Tabs } from "@fjyueke/bify-core"
174
+ import { MoreOutlined } from "@fjyueke/bify-icons"
175
+
176
+ function TabsWithCustomTitle() {
177
+ return (
178
+ <Tabs>
179
+ <Tabs.TabPanel
180
+ title={
181
+ <>
182
+ <MoreOutlined /> 标签 1
183
+ </>
184
+ }
185
+ >
186
+ 内容 1
187
+ </Tabs.TabPanel>
188
+ <Tabs.TabPanel
189
+ title={
190
+ <>
191
+ <MoreOutlined /> 标签 2
192
+ </>
193
+ }
194
+ >
195
+ 内容 2
196
+ </Tabs.TabPanel>
197
+ <Tabs.TabPanel
198
+ title={
199
+ <>
200
+ <MoreOutlined /> 标签 3
201
+ </>
202
+ }
203
+ >
204
+ 内容 3
205
+ </Tabs.TabPanel>
206
+ </Tabs>
207
+ )
208
+ }
209
+ ```
210
+
211
+ ```scss
212
+ .taroify-icon {
213
+ margin-right: 5px * 2;
214
+ vertical-align: -2px * 2;
215
+ }
216
+ ```
217
+
218
+ ### 切换动画
219
+
220
+ 通过 `animated` 属性可以开启切换标签内容时的转场动画。
221
+
222
+ ```tsx
223
+ <Tabs animated>
224
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
225
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
226
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
227
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
228
+ </Tabs>
229
+ ```
230
+
231
+ ### 滑动切换
232
+
233
+ 通过 `swipeable` 属性可以开启滑动切换标签页。
234
+
235
+ ```tsx
236
+ <Tabs animated swipeable>
237
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
238
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
239
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
240
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
241
+ </Tabs>
242
+ ```
243
+
244
+ ## API
245
+
246
+ ### Tabs Props
247
+
248
+ | 参数 | 说明 | 类型 | 默认值 |
249
+ | ----------------------------------- | -------------------------------------------------------------- | --------------------------------------------------- | ------- |
250
+ | defaultValue | 绑定默认选中标签的标识符 | _number \| string_ | `0` |
251
+ | value | 绑定当前选中标签的标识符 | _number \| string_ | `0` |
252
+ | theme | 样式风格类型,可选值为 `card` | _string_ | `line` |
253
+ | duration | 动画时间,单位毫秒 | _number \| string_ | `300` |
254
+ | animated | 是否开启切换标签内容时的转场动画 | _boolean_ | `false` |
255
+ | bordered | 是否显示标签栏外边框,仅在 `type="line"` 时有效 | _boolean_ | `false` |
256
+ | ellipsis | 是否省略过长的标题文字 | _boolean_ | `true` |
257
+ | sticky | 是否使用粘性定位布局 | _boolean \| { offsetTop }_ | `false` |
258
+ | shrink | 是否使用收缩布局 | _booleans_ | `false` |
259
+ | swipeable | 是否开启手势左右滑动切换 | _boolean_ | `false` |
260
+ | swipeThreshold <br>`v0.1.0-alpha.8` | 滚动阈值,标签数量超过阈值且总宽度超过标签栏宽度时开始横向滚动 | _number_ | `5` |
261
+ | lazyRender | 是否延迟渲染未展示的选项卡 | _boolean_ | `false` |
262
+ | dot <br>`v0.1.1-alpha.11` | 是否展示为小红点 | _boolean_ | `false` |
263
+ | badge <br>`v0.1.1-alpha.11` | 图标上徽标的内容 | _boolean \| number \| string \| Badge \| ReactNode_ | - |
264
+
265
+ ### Tabs.Pane Props
266
+
267
+ | 参数 | 说明 | 类型 | 默认值 |
268
+ | -------- | -------------------- | ------------------ | ------------ |
269
+ | value | 标签值,作为匹配的值 | _number \| string_ | 标签的索引值 |
270
+ | title | 标题 | _ReactNode_ | - |
271
+ | disabled | 是否禁用标签 | _boolean_ | `false` |
272
+ | children | 标签面板内容 | _ReactNode_ | - |
273
+
274
+ ### Tabs Events
275
+
276
+ | 事件名 | 说明 | 回调参数 |
277
+ | ---------- | ------------------------ | ----------------------------------- |
278
+ | onTabClick | 点击标签时触发 | _event : Tabs.TabEvent_ |
279
+ | onChange | 当前激活的标签改变时触发 | _value: any, event : Tabs.TabEvent_ |
280
+
281
+ ## 主题定制
282
+
283
+ ### 样式变量
284
+
285
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
286
+
287
+ | 名称 | 默认值 | 描述 |
288
+ | ---------------------------- | ----------------------------------------------- | ---- |
289
+ | --tabs-active-color | _var(--danger-color)_ | - |
290
+ | --tabs-wrap-height | _44px \* $hd_ | - |
291
+ | --tabs-card-height | _30px \* $hd_ | - |
292
+ | --tabs-card-margin | _0 var(--padding-md)_ | - |
293
+ | --tabs-card-border-width | _var(--border-width-base, $border-width-base))_ | - |
294
+ | --tabs-card-border-color | _var(--tabs-active-color)_ | - |
295
+ | --tabs-card-border-radius | _var(--border-radius-sm)_ | - |
296
+ | --tabs-nav-background-color | _var(--white)_ | - |
297
+ | --tabs-line-width | _40px \* $hd_ | - |
298
+ | --tabs-line-height | _3px \* $hd_ | - |
299
+ | --tabs-line-border-radius | _var(--tabs-line-height)_ | - |
300
+ | --tabs-line-background-color | _var(--tabs-active-color)_ | - |
301
+ | --tab-color | _var(--gray-7)_ | - |
302
+ | --tab-padding | _0 var(--padding-base)_ | - |
303
+ | --tab-font-size | _var(--font-size-md)_ | - |
304
+ | --tab-line-height | _var(--line-height-md)_ | - |
305
+ | --tab-active-color | _var(--text-color)_ | - |
306
+ | --tab-active-font-weight | _var(--font-weight-bold)_ | - |
307
+ | --tab-disabled-color | _var(--gray-5)_ | - |
@@ -0,0 +1,231 @@
1
+ import { Tabs, Toast } from "@fjyueke/bify-core"
2
+ import { MoreOutlined, Success } from "@fjyueke/bify-icons"
3
+ import Block from "../../../components/block"
4
+ import CustomWrapper from "../../../components/custom-wrapper"
5
+ import Page from "../../../components/page"
6
+ import "./index.scss"
7
+
8
+ function BasicTabs() {
9
+ return (
10
+ <Tabs>
11
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
12
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
13
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
14
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
15
+ </Tabs>
16
+ )
17
+ }
18
+
19
+ function BadgeTabs() {
20
+ return (
21
+ <Tabs>
22
+ <Tabs.TabPanel title="标签 1" dot>内容 1</Tabs.TabPanel>
23
+ <Tabs.TabPanel title="标签 2" badge={8}>内容 2</Tabs.TabPanel>
24
+ <Tabs.TabPanel title="标签 3" badge="Hot">内容 3</Tabs.TabPanel>
25
+ <Tabs.TabPanel title="标签 4" badge={<Success className="badge-icon" />}>内容 4</Tabs.TabPanel>
26
+ </Tabs>
27
+ )
28
+ }
29
+
30
+ function KeyedTabs() {
31
+ return (
32
+ <Tabs defaultValue="a">
33
+ <Tabs.TabPanel value="a" title="标签 1">
34
+ 内容 1
35
+ </Tabs.TabPanel>
36
+ <Tabs.TabPanel value="b" title="标签 2">
37
+ 内容 2
38
+ </Tabs.TabPanel>
39
+ <Tabs.TabPanel value="c" title="标签 3">
40
+ 内容 3
41
+ </Tabs.TabPanel>
42
+ <Tabs.TabPanel value="d" title="标签 4">
43
+ 内容 4
44
+ </Tabs.TabPanel>
45
+ </Tabs>
46
+ )
47
+ }
48
+
49
+ function ScrollTabs() {
50
+ return (
51
+ <Tabs>
52
+ <Tabs.TabPanel title="标签 1内容 1内容 1内容 1内容 1内容 1">内容 1</Tabs.TabPanel>
53
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
54
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
55
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
56
+ <Tabs.TabPanel title="标签 5">内容 5</Tabs.TabPanel>
57
+ <Tabs.TabPanel title="标签 6">内容 6</Tabs.TabPanel>
58
+ <Tabs.TabPanel title="标签 7">内容 7</Tabs.TabPanel>
59
+ </Tabs>
60
+ )
61
+ }
62
+
63
+ function DisableTabs() {
64
+ return (
65
+ <Tabs>
66
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
67
+ <Tabs.TabPanel title="标签 2" disabled>
68
+ 内容 2
69
+ </Tabs.TabPanel>
70
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
71
+ </Tabs>
72
+ )
73
+ }
74
+
75
+ function CardTabs() {
76
+ return (
77
+ <Tabs theme="card">
78
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
79
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
80
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
81
+ </Tabs>
82
+ )
83
+ }
84
+
85
+ function TabsWithTabClick() {
86
+ return (
87
+ <>
88
+ <Toast id="toast" />
89
+ <Tabs onTabClick={({ title }) => Toast.open(title)}>
90
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
91
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
92
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
93
+ </Tabs>
94
+ <Toast id="toast" />
95
+ </>
96
+ )
97
+ }
98
+
99
+ function StickyTabs() {
100
+ return (
101
+ <Tabs sticky>
102
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
103
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
104
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
105
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
106
+ </Tabs>
107
+ )
108
+ }
109
+
110
+ function ShrinkTabs() {
111
+ return (
112
+ <>
113
+ <Tabs shrink>
114
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
115
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
116
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
117
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
118
+ </Tabs>
119
+ <Tabs shrink theme="card">
120
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
121
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
122
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
123
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
124
+ </Tabs>
125
+ </>
126
+ )
127
+ }
128
+
129
+ function TabsWithCustomTitle() {
130
+ return (
131
+ <Tabs>
132
+ <Tabs.TabPanel
133
+ title={
134
+ <>
135
+ <MoreOutlined /> 标签 1
136
+ </>
137
+ }
138
+ >
139
+ 内容 1
140
+ </Tabs.TabPanel>
141
+ <Tabs.TabPanel
142
+ title={
143
+ <>
144
+ <MoreOutlined /> 标签 2
145
+ </>
146
+ }
147
+ >
148
+ 内容 2
149
+ </Tabs.TabPanel>
150
+ <Tabs.TabPanel
151
+ title={
152
+ <>
153
+ <MoreOutlined /> 标签 3
154
+ </>
155
+ }
156
+ >
157
+ 内容 3
158
+ </Tabs.TabPanel>
159
+ </Tabs>
160
+ )
161
+ }
162
+
163
+ function AnimatedTabs() {
164
+ return (
165
+ <Tabs animated>
166
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
167
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
168
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
169
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
170
+ </Tabs>
171
+ )
172
+ }
173
+
174
+ function SwipeableTabs() {
175
+ return (
176
+ <Tabs animated swipeable>
177
+ <Tabs.TabPanel title="标签 1">内容 1</Tabs.TabPanel>
178
+ <Tabs.TabPanel title="标签 2">内容 2</Tabs.TabPanel>
179
+ <Tabs.TabPanel title="标签 3">内容 3</Tabs.TabPanel>
180
+ <Tabs.TabPanel title="标签 4">内容 4</Tabs.TabPanel>
181
+ </Tabs>
182
+ )
183
+ }
184
+
185
+ export default function TabsDemo() {
186
+ return (
187
+ <Page title="Tabs 标签页" className="tabs-demo">
188
+ <Block title="基础用法">
189
+ <BasicTabs />
190
+ </Block>
191
+ <Block title="徽标用法">
192
+ <BadgeTabs />
193
+ </Block>
194
+ <Block title="通过标识匹配">
195
+ <KeyedTabs />
196
+ </Block>
197
+ <Block title="标签栏滚动">
198
+ <ScrollTabs />
199
+ </Block>
200
+ <Block title="禁用标签">
201
+ <DisableTabs />
202
+ </Block>
203
+
204
+ <Block title="样式风格">
205
+ <CardTabs />
206
+ </Block>
207
+ <Block title="点击事件">
208
+ <TabsWithTabClick />
209
+ </Block>
210
+ <Block title="收缩布局">
211
+ <ShrinkTabs />
212
+ </Block>
213
+ <Block title="粘性布局">
214
+ <StickyTabs />
215
+ </Block>
216
+ <Block title="自定义标签">
217
+ <TabsWithCustomTitle />
218
+ </Block>
219
+ <Block title="切换动画">
220
+ <CustomWrapper>
221
+ <AnimatedTabs />
222
+ </CustomWrapper>
223
+ </Block>
224
+ <Block title="滑动切换">
225
+ <CustomWrapper>
226
+ <SwipeableTabs />
227
+ </CustomWrapper>
228
+ </Block>
229
+ </Page>
230
+ )
231
+ }
@@ -0,0 +1,17 @@
1
+ ## API
2
+
3
+ ### Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --------- | ------------------------------------------------------------ | --------- | --------- |
7
+ | size | 大小,可选值为 `large` `medium` | _string_ | - |
8
+ | color | 类型,可选值为 `primary` `info` `success` `danger` `warning` | _string_ | `default` |
9
+ | shape | 形状,可选值为 `rounded` `roundedRight` `roundedLeft` | _string_ | `square` |
10
+ | closeable | 是否为可关闭标签 | _boolean_ | `false` |
11
+
12
+ ### Events
13
+
14
+ | 事件名 | 说明 | 回调参数 |
15
+ | ------- | -------------- | -------------------- |
16
+ | onClick | 点击时触发 | _event: ITouchEvent_ |
17
+ | onClose | 关闭标签时触发 | _event: ITouchEvent_ |