@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,215 @@
1
+ # ShareSheet 分享面板
2
+
3
+ ### 介绍
4
+
5
+ 底部弹起的分享面板,用于展示各分享渠道对应的操作按钮,不含具体的分享逻辑。
6
+
7
+ ### 引入
8
+
9
+ ```tsx
10
+ import { ShareSheet } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ 分享面板通过 `ShareSheet.Option` 组件来定义分享选项。
18
+
19
+ ```tsx
20
+ import { ShareSheet } from "@fjyueke/bify-core"
21
+
22
+ function BasicShareSheet() {
23
+ const [open, setOpen] = useState(true)
24
+ return (
25
+ <ShareSheet open={open} onSelect={() => setOpen(false)} onClose={setOpen}>
26
+ <ShareSheet.Header title="立即分享给好友" />
27
+ <ShareSheet.Options>
28
+ <ShareSheet.Option icon="wechat" name="微信" />
29
+ <ShareSheet.Option icon="wechat-moments" name="朋友圈" />
30
+ <ShareSheet.Option icon="weibo" name="微博" />
31
+ <ShareSheet.Option icon="qq" name="QQ" />
32
+ </ShareSheet.Options>
33
+ <ShareSheet.Button type="cancel">取消</ShareSheet.Button>
34
+ </ShareSheet>
35
+ )
36
+ }
37
+ ```
38
+
39
+ ### 展示多行选项
40
+
41
+ 当分享选项的数量较多时,可以将 `options` 定义为数组嵌套的格式,每个子数组会作为一行选项展示。
42
+
43
+ ```tsx
44
+ import { ShareSheet } from "@fjyueke/bify-core"
45
+
46
+ function MultilineShareSheet() {
47
+ const [open, setOpen] = useState(true)
48
+ return (
49
+ <ShareSheet open={open} onSelect={() => setOpen(false)} onClose={setOpen}>
50
+ <ShareSheet.Header title="立即分享给好友" />
51
+ <ShareSheet.Options>
52
+ <ShareSheet.Option icon="wechat" name="微信" />
53
+ <ShareSheet.Option icon="wechat-moments" name="朋友圈" />
54
+ <ShareSheet.Option icon="weibo" name="微博" />
55
+ <ShareSheet.Option icon="qq" name="QQ" />
56
+ </ShareSheet.Options>
57
+ <ShareSheet.Options>
58
+ <ShareSheet.Option icon="link" name="复制链接" />
59
+ <ShareSheet.Option icon="poster" name="分享海报" />
60
+ <ShareSheet.Option icon="qrcode" name="二维码" />
61
+ <ShareSheet.Option icon="weapp-qrcode" name="小程序码" />
62
+ </ShareSheet.Options>
63
+ <ShareSheet.Button type="cancel">取消</ShareSheet.Button>
64
+ </ShareSheet>
65
+ )
66
+ }
67
+ ```
68
+
69
+ ### 自定义图标
70
+
71
+ 除了使用内置的几种图标外,可以直接在 `icon` 中传入 Image 组件来使用自定义的图标。
72
+
73
+ ```tsx
74
+ import { Image, ShareSheet } from "@fjyueke/bify-core"
75
+
76
+ function CustomShareSheet() {
77
+ const [open, setOpen] = useState(true)
78
+ return (
79
+ <ShareSheet open={open} onSelect={() => setOpen(false)} onClose={setOpen}>
80
+ <ShareSheet.Options>
81
+ <ShareSheet.Option
82
+ icon={<Image src="https://img.yzcdn.cn/vant/custom-icon-fire.png" />}
83
+ name="名称"
84
+ />
85
+ <ShareSheet.Option
86
+ icon={<Image src="https://img.yzcdn.cn/vant/custom-icon-light.png" />}
87
+ name="名称"
88
+ />
89
+ <ShareSheet.Option
90
+ icon={<Image src="https://img.yzcdn.cn/vant/custom-icon-water.png" />}
91
+ name="名称"
92
+ />
93
+ </ShareSheet.Options>
94
+ <ShareSheet.Button type="cancel">取消</ShareSheet.Button>
95
+ </ShareSheet>
96
+ )
97
+ }
98
+ ```
99
+
100
+ ### 展示描述信息
101
+
102
+ 通过 `description` 属性可以设置标题下方的描述文字, 在 `options` 内设置 `description` 属性可以添加分享选项描述。
103
+
104
+ ```tsx
105
+ import { ShareSheet } from "@fjyueke/bify-core"
106
+
107
+ function ShareSheetWithDescription() {
108
+ const [open, setOpen] = useState(true)
109
+ return (
110
+ <ShareSheet open={open} onSelect={() => setOpen(false)} onClose={setOpen}>
111
+ <ShareSheet.Header title="立即分享给好友">描述信息</ShareSheet.Header>
112
+ <ShareSheet.Options>
113
+ <ShareSheet.Option icon="wechat" name="微信" />
114
+ <ShareSheet.Option icon="weibo" name="微博" />
115
+ <ShareSheet.Option icon="link" name="复制链接" description="描述信息" />
116
+ <ShareSheet.Option icon="poster" name="分享海报" />
117
+ <ShareSheet.Option icon="qrcode" name="二维码" />
118
+ </ShareSheet.Options>
119
+ <ShareSheet.Button type="cancel">取消</ShareSheet.Button>
120
+ </ShareSheet>
121
+ )
122
+ }
123
+ ```
124
+
125
+ ## API
126
+
127
+ ### ShareSheet Props
128
+
129
+ | 参数 | 说明 | 类型 | 默认值 |
130
+ |-------------|------------|-----------------|---------|
131
+ | defaultOpen | 默认是否显示动作面板 | _boolean_ | `false` |
132
+ | open | 是否显示动作面板 | _boolean_ | `false` |
133
+ | className | 样式类名 | _string_ | - |
134
+ | style | 样式对象 | _CSSProperties_ | - |
135
+ | rounded | 是否为圆角 | _string_ | - |
136
+
137
+ ### ShareSheet.Backdrop Props
138
+
139
+ | 参数 | 说明 | 类型 | 默认值 |
140
+ | --- | --- | --- | --- |
141
+ | className | 样式类名 | _string_ | - |
142
+ | style | 样式对象 | _CSSProperties_ | - |
143
+ | duration | 动画时长,单位毫秒 | _number \| string_ | `300` |
144
+ | closeable | 点击是否可以关闭 | _boolean_ | `true` |
145
+
146
+ ### ShareSheet.Header Props
147
+
148
+ | 参数 | 说明 | 类型 | 默认值 |
149
+ |-----------|------|-----------------|-----|
150
+ | className | 样式类名 | _string_ | - |
151
+ | style | 样式对象 | _CSSProperties_ | - |
152
+ | title | 标题 | _string_ | - |
153
+ | children | 描述信息 | _string_ | - |
154
+
155
+ ### ShareSheet.Option Props
156
+
157
+ | 参数 | 说明 | 类型 | 默认值 |
158
+ | ----------- | --- | --- | --- |
159
+ | className | 分享选项类名 | _string_ | - |
160
+ | name | 分享渠道名称 | _string_ | - |
161
+ | value | 选项值 | _string_ | - |
162
+ | description | 分享选项描述 | _string_ | - |
163
+ | icon | 图标,可选值为 `wechat` `weibo` `qq` `link` `qrcode` `poster`<br/>`weapp-qrcode` `wechat-moments`,支持传入 Image 组件 | _string_ | - |
164
+ | openType | 微信开放能力,可选值为 `contact` `contactShare` `share`<br/>`getRealnameAuthInfo` `getAuthorize` `getPhoneNumber`<br/>`getUserInfo` `lifestyle` `launchApp` `openSetting` `feedback` | _string_ | - |
165
+
166
+ ### Events
167
+
168
+ | 事件名 | 说明 | 回调参数 |
169
+ |----------|-----------|---------------------------------|
170
+ | onSelect | 点击分享选项时触发 | _event: ShareSheet.OptionEvent_ |
171
+ | onCancel | 点击取消按钮时触发 | - |
172
+ | onClose | 关闭面板时触发 | - |
173
+
174
+ ## 主题定制
175
+
176
+ ### 样式变量
177
+
178
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
179
+
180
+ | 名称 | 默认值 | 描述 |
181
+ |--------------------------------------------|-----------------------------------------------------------|-----|
182
+ | --share-sheet-description-font-size | _var(--font-size-sm)_ | - |
183
+ | --share-sheet-options-padding | _var(--padding-md) 0 var(--padding-md) var(--padding-xs)_ | - |
184
+ | --share-sheet-option-icon-margin | _0 var(--padding-md)_ | - |
185
+ | --share-sheet-option-icon-size | _48px * $hd_ | - |
186
+ | --share-sheet-option-icon-width | _var(--share-sheet-option-icon-size)_ | - |
187
+ | --share-sheet-option-icon-height | _var(--share-sheet-option-icon-size)_ | - |
188
+ | --share-sheet-option-icon-font-size | _var(--share-sheet-option-icon-size)_ | - |
189
+ | --share-sheet-option-name-padding | _0 var(--padding-base)_ | - |
190
+ | --share-sheet-option-name-margin-top | _var(--padding-xs)_ | - |
191
+ | --share-sheet-option-name-color | _var(--gray-7)_ | - |
192
+ | --share-sheet-option-name-font-size | _var(--font-size-sm)_ | - |
193
+ | --share-sheet-option-name-line-height | _1.4_ | - |
194
+ | --share-sheet-option-description-padding | _0 var(--padding-base)_ | - |
195
+ | --share-sheet-option-description-color | _var(--gray-5)_ | - |
196
+ | --share-sheet-option-description-font-size | _var(--font-size-sm)_ | - |
197
+
198
+
199
+ ## 常见问题
200
+
201
+ ### 如何实现分享逻辑?
202
+
203
+ 在不同的 App 或浏览器中,存在各式各样的分享接口或分享方式,因此 ShareSheet 组件不提供具体的分享逻辑,需要开发者根据业务场景自行实现。
204
+
205
+ #### 微信内分享
206
+
207
+ 由于微信未提供分享相关的 API,需要引导用户点击右上角进行分享。
208
+
209
+ #### App 内分享
210
+
211
+ 可以通过 JSBridge 调用原生应用的 SDK 进行分享。
212
+
213
+ #### 分享海报或二维码
214
+
215
+ 可以通过 [Popup](/components/popup/) 组件以弹层的形式展示图片,然后引导用户保存图片进行分享。
@@ -0,0 +1,143 @@
1
+ import { Cell, Image, ShareSheet } from "@fjyueke/bify-core"
2
+ import { ArrowRight } from "@fjyueke/bify-icons"
3
+ import { useState } from "react"
4
+ import Block from "../../../components/block"
5
+ import Page from "../../../components/page"
6
+ import "./index.scss"
7
+
8
+ function BasicShareSheet() {
9
+ const [open, setOpen] = useState(false)
10
+ return (
11
+ <>
12
+ <Cell
13
+ clickable
14
+ title="显示分享面板"
15
+ isLink
16
+ onClick={() => setOpen(true)}
17
+ />
18
+ <ShareSheet
19
+ open={open}
20
+ onSelect={() => setOpen(false)}
21
+ onClose={setOpen}
22
+ onCancel={() => {
23
+ setOpen(false)
24
+ }}
25
+ >
26
+ <ShareSheet.Backdrop />
27
+ <ShareSheet.Header title="立即分享给好友" />
28
+ <ShareSheet.Options>
29
+ <ShareSheet.Option icon="wechat" name="微信" openType="share" />
30
+ <ShareSheet.Option icon="wechat-moments" name="朋友圈" />
31
+ <ShareSheet.Option icon="weibo" name="微博" />
32
+ <ShareSheet.Option icon="qq" name="QQ" />
33
+ </ShareSheet.Options>
34
+ <ShareSheet.Button type="cancel">取消</ShareSheet.Button>
35
+ </ShareSheet>
36
+ </>
37
+ )
38
+ }
39
+
40
+ function MultilineShareSheet() {
41
+ const [open, setOpen] = useState(false)
42
+ return (
43
+ <>
44
+ <Cell
45
+ clickable
46
+ title="显示分享面板"
47
+ isLink
48
+ onClick={() => setOpen(true)}
49
+ />
50
+ <ShareSheet open={open} onSelect={() => setOpen(false)} onClose={setOpen}>
51
+ <ShareSheet.Header title="立即分享给好友" />
52
+ <ShareSheet.Options>
53
+ <ShareSheet.Option icon="wechat" name="微信" />
54
+ <ShareSheet.Option icon="wechat-moments" name="朋友圈" />
55
+ <ShareSheet.Option icon="weibo" name="微博" />
56
+ <ShareSheet.Option icon="qq" name="QQ" />
57
+ </ShareSheet.Options>
58
+ <ShareSheet.Options>
59
+ <ShareSheet.Option icon="link" name="复制链接" />
60
+ <ShareSheet.Option icon="poster" name="分享海报" />
61
+ <ShareSheet.Option icon="qrcode" name="二维码" />
62
+ <ShareSheet.Option icon="weapp-qrcode" name="小程序码" />
63
+ </ShareSheet.Options>
64
+ <ShareSheet.Button type="cancel">取消</ShareSheet.Button>
65
+ </ShareSheet>
66
+ </>
67
+ )
68
+ }
69
+
70
+ function CustomShareSheet() {
71
+ const [open, setOpen] = useState(false)
72
+ return (
73
+ <>
74
+ <Cell
75
+ clickable
76
+ title="显示分享面板"
77
+ isLink
78
+ onClick={() => setOpen(true)}
79
+ />
80
+ <ShareSheet open={open} onSelect={() => setOpen(false)} onClose={setOpen}>
81
+ <ShareSheet.Options>
82
+ <ShareSheet.Option
83
+ icon={<Image src="https://img.yzcdn.cn/vant/custom-icon-fire.png" />}
84
+ name="名称"
85
+ />
86
+ <ShareSheet.Option
87
+ icon={<Image src="https://img.yzcdn.cn/vant/custom-icon-light.png" />}
88
+ name="名称"
89
+ />
90
+ <ShareSheet.Option
91
+ icon={<Image src="https://img.yzcdn.cn/vant/custom-icon-water.png" />}
92
+ name="名称"
93
+ />
94
+ </ShareSheet.Options>
95
+ <ShareSheet.Button type="cancel">取消</ShareSheet.Button>
96
+ </ShareSheet>
97
+ </>
98
+ )
99
+ }
100
+
101
+ function ShareSheetWithDescription() {
102
+ const [open, setOpen] = useState(false)
103
+ return (
104
+ <>
105
+ <Cell
106
+ clickable
107
+ title="显示分享面板"
108
+ isLink
109
+ onClick={() => setOpen(true)}
110
+ />
111
+ <ShareSheet open={open} onSelect={() => setOpen(false)} onClose={setOpen}>
112
+ <ShareSheet.Header title="立即分享给好友">描述信息</ShareSheet.Header>
113
+ <ShareSheet.Options>
114
+ <ShareSheet.Option icon="wechat" name="微信" />
115
+ <ShareSheet.Option icon="weibo" name="微博" />
116
+ <ShareSheet.Option icon="link" name="复制链接" description="描述信息" />
117
+ <ShareSheet.Option icon="poster" name="分享海报" />
118
+ <ShareSheet.Option icon="qrcode" name="二维码" />
119
+ </ShareSheet.Options>
120
+ <ShareSheet.Button type="cancel">取消</ShareSheet.Button>
121
+ </ShareSheet>
122
+ </>
123
+ )
124
+ }
125
+
126
+ export default function ShareSheetDemo() {
127
+ return (
128
+ <Page title="ShareSheet 分享面板" className="share-sheet-demo">
129
+ <Block variant="card" title="基础用法">
130
+ <BasicShareSheet />
131
+ </Block>
132
+ <Block variant="card" title="展示多行选项">
133
+ <MultilineShareSheet />
134
+ </Block>
135
+ <Block variant="card" title="自定义图标">
136
+ <CustomShareSheet />
137
+ </Block>
138
+ <Block variant="card" title="展示描述信息">
139
+ <ShareSheetWithDescription />
140
+ </Block>
141
+ </Page>
142
+ )
143
+ }
@@ -0,0 +1,28 @@
1
+ ## API
2
+
3
+ ### Sidebar Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | ------- | ---------------- | ------------------ | ------ |
7
+ | defaultValue | 默认导航项的索引 | _number \| string_ | `0` |
8
+ | value | 当前导航项的索引 | _number \| string_ | `0` |
9
+
10
+ ### Sidebar Events
11
+
12
+ | 事件名 | 说明 | 回调参数 |
13
+ | ------ | ---------------- | --------------- |
14
+ | onChange | 切换导航项时触发 | _value: any, tab: Sidebar.TabObject_ |
15
+
16
+ ### Sidebar.Tab Props
17
+
18
+ | 参数 | 说明 | 类型 | 默认值 |
19
+ | --- | --- | --- | --- |
20
+ | disabled | 是否禁用该项 | _boolean_ | `false` |
21
+ | children | 内容 | _ReactNode_ | - |
22
+ | badge | 图标上徽标的内容 | _boolean \| number \| string \| Badge \| ReactNode_ | - |
23
+
24
+ ### Sidebar.Tab Events
25
+
26
+ | 事件名 | 说明 | 回调参数 |
27
+ | ------ | ---------- | --------------- |
28
+ | onClick | 点击时触发 | _event: ITouchEvent_|
@@ -0,0 +1,122 @@
1
+ # Sidebar 侧边导航
2
+
3
+ ### 介绍
4
+
5
+ 垂直展示的导航栏,用于在不同的内容区域之间进行切换。
6
+
7
+ ### 引入
8
+
9
+ ```ts
10
+ import { Sidebar } from "@fjyueke/bify-core"
11
+ ```
12
+
13
+ ## 代码演示
14
+
15
+ ### 基础用法
16
+
17
+ ```tsx
18
+ <Sidebar>
19
+ <Sidebar.Tab>标签名</Sidebar.Tab>
20
+ <Sidebar.Tab>标签名</Sidebar.Tab>
21
+ <Sidebar.Tab>标签名</Sidebar.Tab>
22
+ </Sidebar>
23
+ ```
24
+
25
+ ### 徽标提示
26
+
27
+ 设置 `badge` 属性后,会在右上角展示相应的徽标。
28
+
29
+ ```tsx
30
+ <Sidebar>
31
+ <Sidebar.Tab badge>标签名</Sidebar.Tab>
32
+ <Sidebar.Tab badge="5">标签名</Sidebar.Tab>
33
+ <Sidebar.Tab badge={<Badge position="bottom-right" max={99} content={100} />}>标签名</Sidebar.Tab>
34
+ </Sidebar>
35
+ ```
36
+
37
+ ### 禁用选项
38
+
39
+ 通过 `disabled` 属性禁用选项。
40
+
41
+ ```tsx
42
+ <Sidebar>
43
+ <Sidebar.Tab>标签名</Sidebar.Tab>
44
+ <Sidebar.Tab disabled>标签名</Sidebar.Tab>
45
+ <Sidebar.Tab>标签名</Sidebar.Tab>
46
+ </Sidebar>
47
+ ```
48
+
49
+ ### 监听切换事件
50
+
51
+ 设置 `onChange` 方法来监听切换导航项时的事件。
52
+
53
+ ```tsx
54
+ import { Sidebar } from "@fjyueke/bify-core"
55
+
56
+ function EventSidebar() {
57
+ return (
58
+ <>
59
+ <Toast id="toast" />
60
+ <Sidebar onChange={(newValue, { children }: Sidebar.TabObject) => Toast.open(children)}>
61
+ <Sidebar.Tab>标签名 1</Sidebar.Tab>
62
+ <Sidebar.Tab>标签名 2</Sidebar.Tab>
63
+ <Sidebar.Tab>标签名 3</Sidebar.Tab>
64
+ </Sidebar>
65
+ </>
66
+ )
67
+ }
68
+ ```
69
+
70
+ ## API
71
+
72
+ ### Sidebar Props
73
+
74
+ | 参数 | 说明 | 类型 | 默认值 |
75
+ | ------- | ---------------- | ------------------ | ------ |
76
+ | defaultValue | 默认导航项的索引 | _number \| string_ | `0` |
77
+ | value | 当前导航项的索引 | _number \| string_ | `0` |
78
+
79
+ ### Sidebar Events
80
+
81
+ | 事件名 | 说明 | 回调参数 |
82
+ | ------ | ---------------- | --------------- |
83
+ | onChange | 切换导航项时触发 | _value: any, tab: Sidebar.TabObject_ |
84
+
85
+ ### Sidebar.Tab Props
86
+
87
+ | 参数 | 说明 | 类型 | 默认值 |
88
+ | --- | --- | --- | --- |
89
+ | disabled | 是否禁用该项 | _boolean_ | `false` |
90
+ | children | 内容 | _ReactNode_ | - |
91
+ | badge | 图标上徽标的内容 | _boolean \| number \| string \| Badge \| ReactNode_ | - |
92
+
93
+ ### Sidebar.Tab Events
94
+
95
+ | 事件名 | 说明 | 回调参数 |
96
+ | ------ | ---------- | --------------- |
97
+ | onClick | 点击时触发 | _event: ITouchEvent_|
98
+
99
+ ## 主题定制
100
+
101
+ ### 样式变量
102
+
103
+ 组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider](/components/config-provider/) 组件。
104
+
105
+ | 名称 | 默认值 | 描述 |
106
+ |----------------------------------------------|---------------------------------------|-----|
107
+ | --sidebar-width | _80px * $hd_ | - |
108
+ | --sidebar-disabled-color | _var(--gray-5)_ | - |
109
+ | --sidebar-tab-font-size | _var(--font-size-md)_ | - |
110
+ | --sidebar-tab-line-height | _var(--line-height-md)_ | - |
111
+ | --sidebar-tab-color | _var(--text-color)_ | - |
112
+ | --sidebar-tab-padding | _20px * $hd var(--padding-sm)_ | - |
113
+ | --sidebar-tab-background-color | _var(--background-color)_ | - |
114
+ | --sidebar-tab-active-background-color | _var(--active-color)_ | - |
115
+ | --sidebar-tab-active-font-weight | _var(--font-weight-bold)_ | - |
116
+ | --sidebar-tab-active-color | _var(--text-color)_ | - |
117
+ | --sidebar-tab-active-border-width | _4px * $hd_ | - |
118
+ | --sidebar-tab-active-border-height | _16px * $hd_ | - |
119
+ | --sidebar-tab-active-border-color | _var(--red)_ | - |
120
+ | --sidebar-tab-active-active-background-color | _var(--white)_ | - |
121
+ | --sidebar-tab-disabled-color | _var(--sidebar-disabled-color)_ | - |
122
+ | --sidebar-tab-disabled-background-color | _var(--sidebar-tab-background-color)_ | - |
@@ -0,0 +1,58 @@
1
+ import { Badge, Grid, Sidebar, Toast } from "@fjyueke/bify-core"
2
+ import Block from "../../../components/block"
3
+ import Page from "../../../components/page"
4
+ import "./index.scss"
5
+
6
+ function EventSidebar() {
7
+ return (
8
+ <>
9
+ <Toast id="toast" />
10
+ <Sidebar onChange={(_, { children }: Sidebar.TabObject) => Toast.open(children)}>
11
+ <Sidebar.Tab>标签名 1</Sidebar.Tab>
12
+ <Sidebar.Tab>标签名 2</Sidebar.Tab>
13
+ <Sidebar.Tab>标签名 3</Sidebar.Tab>
14
+ </Sidebar>
15
+ </>
16
+ )
17
+ }
18
+
19
+ export default function SidebarDemo() {
20
+ return (
21
+ <Page title="Sidebar 侧边导航" className="sidebar-demo">
22
+ <Grid columns={2} centered bordered={false}>
23
+ <Grid.Item>
24
+ <Block title="基础用法">
25
+ <Sidebar>
26
+ <Sidebar.Tab>标签名</Sidebar.Tab>
27
+ <Sidebar.Tab>标签名</Sidebar.Tab>
28
+ <Sidebar.Tab>标签名</Sidebar.Tab>
29
+ </Sidebar>
30
+ </Block>
31
+ </Grid.Item>
32
+ <Grid.Item>
33
+ <Block title="徽标提示">
34
+ <Sidebar>
35
+ <Sidebar.Tab badge>标签名</Sidebar.Tab>
36
+ <Sidebar.Tab badge="5">标签名</Sidebar.Tab>
37
+ <Sidebar.Tab badge={<Badge position="bottom-right" max={99} content={100} />}>标签名</Sidebar.Tab>
38
+ </Sidebar>
39
+ </Block>
40
+ </Grid.Item>
41
+ <Grid.Item>
42
+ <Block title="禁用选项">
43
+ <Sidebar>
44
+ <Sidebar.Tab>标签名</Sidebar.Tab>
45
+ <Sidebar.Tab disabled>标签名</Sidebar.Tab>
46
+ <Sidebar.Tab>标签名</Sidebar.Tab>
47
+ </Sidebar>
48
+ </Block>
49
+ </Grid.Item>
50
+ <Grid.Item>
51
+ <Block title="监听切换事件">
52
+ <EventSidebar />
53
+ </Block>
54
+ </Grid.Item>
55
+ </Grid>
56
+ </Page>
57
+ )
58
+ }
@@ -0,0 +1,19 @@
1
+ ## API
2
+
3
+ ### Signature Props
4
+
5
+ | 参数 | 说明 | 类型 | 默认值 |
6
+ | --------------- | ------------------ | -------- | ---------------- |
7
+ | type | 导出图片类型 | _string_ | `png` |
8
+ | penColor | 笔触颜色,默认黑色 | _string_ | `#000` |
9
+ | lineWidth | 线条宽度 | _number_ | `3` |
10
+ | backgroundColor | 背景颜色 | _string_ | - |
11
+ | canvasId | canvas id | _string_ | `taroify-canvas` |
12
+
13
+ ### Signature Events
14
+
15
+ | 事件名 | 说明 | 回调参数 |
16
+ | --------- | -------------- | -------- |
17
+ | onStart | 开始签名时触发 | - |
18
+ | onEnd | 结束签名时触发 | - |
19
+ | onSigning | 签名过程中触发 | - |