@tendaui/components 1.2.3 → 1.3.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 (406) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +176 -176
  3. package/_util/scroll.ts +9 -0
  4. package/alert/_example/base.tsx +13 -0
  5. package/alert/_example/collapse.tsx +15 -0
  6. package/badge/_example/base.tsx +10 -0
  7. package/badge/_example/count.tsx +29 -0
  8. package/badge/_example/custom-color.tsx +32 -0
  9. package/badge/_example/dot.tsx +26 -0
  10. package/badge/_example/max-count.tsx +26 -0
  11. package/badge/_example/offset.tsx +29 -0
  12. package/badge/_example/shape.tsx +32 -0
  13. package/badge/_example/show-zero.tsx +23 -0
  14. package/badge/_example/size.tsx +35 -0
  15. package/badge/_example/standalone.tsx +14 -0
  16. package/badge/_example/text-count.tsx +26 -0
  17. package/badge/_example/with-button.tsx +23 -0
  18. package/button/_example/block.tsx +18 -0
  19. package/button/_example/disabled.tsx +22 -0
  20. package/button/_example/ghost.tsx +24 -0
  21. package/button/_example/link.tsx +15 -0
  22. package/button/_example/loading.tsx +19 -0
  23. package/button/_example/shape.tsx +18 -0
  24. package/button/_example/size.tsx +18 -0
  25. package/button/_example/suffix.tsx +16 -0
  26. package/button/_example/theme.tsx +14 -0
  27. package/button/_example/variant-base.tsx +24 -0
  28. package/button/_example/variant-dashed.tsx +24 -0
  29. package/button/_example/variant-outline.tsx +24 -0
  30. package/button/_example/variant-text.tsx +24 -0
  31. package/checkbox/_example/base.tsx +8 -0
  32. package/checkbox/_example/controlled.tsx +11 -0
  33. package/checkbox/_example/group-disabled.tsx +13 -0
  34. package/checkbox/_example/group-with-check-all.tsx +22 -0
  35. package/checkbox/_example/group-with-max.tsx +17 -0
  36. package/checkbox/_example/group-with-options.tsx +18 -0
  37. package/checkbox/_example/group.tsx +17 -0
  38. package/checkbox/_example/states.tsx +19 -0
  39. package/color-picker/ColorPicker.tsx +16 -2
  40. package/color-picker/_example/base.tsx +12 -0
  41. package/color-picker/_example/borderless.tsx +17 -0
  42. package/color-picker/_example/clearable.tsx +12 -0
  43. package/color-picker/_example/disabled.tsx +17 -0
  44. package/color-picker/_example/formats.tsx +30 -0
  45. package/color-picker/_example/manual-input.tsx +39 -0
  46. package/color-picker/_example/recent-colors.tsx +19 -0
  47. package/color-picker/_example/swatch-colors.tsx +28 -0
  48. package/color-picker/_example/with-alpha.tsx +21 -0
  49. package/color-picker/components/panel/format/inputs.tsx +1 -1
  50. package/color-picker/components/panel/index.tsx +13 -0
  51. package/color-picker/components/trigger.tsx +64 -13
  52. package/color-picker/defaultProps.ts +4 -1
  53. package/color-picker/utils/color-picker/cmyk.ts +89 -89
  54. package/color-picker/utils/color-picker/color.ts +467 -467
  55. package/color-picker/utils/color-picker/constants.ts +187 -187
  56. package/color-picker/utils/color-picker/draggable.ts +99 -100
  57. package/color-picker/utils/color-picker/format.ts +90 -95
  58. package/color-picker/utils/color-picker/gradient.ts +237 -243
  59. package/color-picker/utils/color-picker/index.ts +7 -7
  60. package/color-picker/utils/color-picker/types.ts +33 -33
  61. package/config-provider/ConfigContext.tsx +1 -0
  62. package/config-provider/ConfigProvider.tsx +18 -1
  63. package/config-provider/type.ts +5 -0
  64. package/dialog/_example/base.tsx +27 -0
  65. package/dialog/_example/confirm-loading.tsx +32 -0
  66. package/dialog/_example/custom-buttons.tsx +24 -0
  67. package/dialog/_example/full-screen.tsx +26 -0
  68. package/dialog/_example/hide-buttons.tsx +39 -0
  69. package/dialog/_example/modeless.tsx +25 -0
  70. package/dialog/_example/placement.tsx +40 -0
  71. package/dialog/_example/plugin-example.tsx +69 -0
  72. package/dialog/_example/themes.tsx +41 -0
  73. package/dialog/hooks/useDialogPosition.ts +35 -35
  74. package/drawer/Drawer.tsx +17 -9
  75. package/drawer/_example/custom-header-footer.tsx +29 -0
  76. package/drawer/_example/default.tsx +20 -0
  77. package/drawer/_example/events.tsx +53 -0
  78. package/drawer/_example/no-footer.tsx +20 -0
  79. package/drawer/_example/no-overlay.tsx +20 -0
  80. package/drawer/_example/placement.tsx +43 -0
  81. package/drawer/_example/size-draggable.tsx +26 -0
  82. package/drawer/_example/size.tsx +40 -0
  83. package/drawer/defaultProps.ts +1 -1
  84. package/fireworks/Fireworks.tsx +1 -10
  85. package/fireworks/index.ts +0 -1
  86. package/fireworks/type.ts +0 -1
  87. package/form/_example/complex.tsx +76 -0
  88. package/form/_example/default.tsx +58 -0
  89. package/form/_example/disabled.tsx +26 -0
  90. package/form/_example/form-list.tsx +74 -0
  91. package/form/_example/inline-layout.tsx +20 -0
  92. package/form/_example/label-align.tsx +46 -0
  93. package/form/_example/methods.tsx +66 -0
  94. package/form/_example/validation.tsx +71 -0
  95. package/form/hooks/useFormItemStyle.tsx +19 -7
  96. package/form/index.ts +20 -2
  97. package/form/type.ts +519 -519
  98. package/global-config/default-config.ts +95 -95
  99. package/global-config/locale/ar_KW.ts +259 -270
  100. package/global-config/locale/en_US.ts +265 -280
  101. package/global-config/locale/it_IT.ts +264 -287
  102. package/global-config/locale/ja_JP.ts +264 -279
  103. package/global-config/locale/ko_KR.ts +264 -279
  104. package/global-config/locale/ru_RU.ts +277 -288
  105. package/global-config/locale/zh_CN.ts +265 -279
  106. package/global-config/locale/zh_TW.ts +265 -279
  107. package/global-config/mobile/default-config.ts +6 -6
  108. package/global-config/mobile/locale/ar_KW.ts +112 -113
  109. package/global-config/mobile/locale/en_US.ts +113 -114
  110. package/global-config/mobile/locale/it_IT.ts +113 -114
  111. package/global-config/mobile/locale/ja_JP.ts +100 -101
  112. package/global-config/mobile/locale/ko_KR.ts +100 -101
  113. package/global-config/mobile/locale/ru_RU.ts +112 -113
  114. package/global-config/mobile/locale/zh_CN.ts +100 -101
  115. package/global-config/mobile/locale/zh_TW.ts +100 -101
  116. package/global-config/t.ts +111 -111
  117. package/hooks/useDebounce.ts +27 -0
  118. package/hooks/useLastest.ts +6 -2
  119. package/hooks/useResizeObserve.ts +0 -1
  120. package/index.ts +1 -1
  121. package/input/Input.tsx +53 -10
  122. package/input/_example/auto-width.tsx +14 -0
  123. package/input/_example/borderless.tsx +17 -0
  124. package/input/_example/clearable.tsx +14 -0
  125. package/input/_example/default.tsx +10 -0
  126. package/input/_example/disabled-readonly.tsx +12 -0
  127. package/input/_example/events.tsx +42 -0
  128. package/input/_example/group.tsx +14 -0
  129. package/input/_example/label-suffix.tsx +12 -0
  130. package/input/_example/max-length.tsx +11 -0
  131. package/input/_example/password.tsx +14 -0
  132. package/input/_example/sizes.tsx +12 -0
  133. package/input/_example/status.tsx +13 -0
  134. package/input/_example/text-align.tsx +12 -0
  135. package/input/_example/with-icon.tsx +13 -0
  136. package/input/type.ts +3 -0
  137. package/input/useLengthLimit.ts +122 -0
  138. package/input-number/InputNumber.tsx +124 -124
  139. package/input-number/_example/align.tsx +23 -0
  140. package/input-number/_example/auto-width.tsx +8 -0
  141. package/input-number/_example/default.tsx +8 -0
  142. package/input-number/_example/events.tsx +45 -0
  143. package/input-number/_example/format.tsx +27 -0
  144. package/input-number/_example/large-number.tsx +17 -0
  145. package/input-number/_example/min-max.tsx +14 -0
  146. package/input-number/_example/sizes.tsx +35 -0
  147. package/input-number/_example/status.tsx +65 -0
  148. package/input-number/_example/step-and-decimal.tsx +14 -0
  149. package/input-number/_example/themes.tsx +21 -0
  150. package/input-number/_example/with-suffix.tsx +12 -0
  151. package/input-number/defaultProps.ts +17 -17
  152. package/input-number/index.ts +9 -9
  153. package/input-number/style/css.js +1 -1
  154. package/input-number/style/index.js +1 -1
  155. package/input-number/useInputNumber.tsx +270 -270
  156. package/ip-input/_example/controlled.tsx +26 -0
  157. package/ip-input/_example/default.tsx +12 -0
  158. package/ip-input/_example/full-featured.tsx +32 -0
  159. package/ip-input/_example/ipv6.tsx +23 -0
  160. package/ip-input/_example/keyboard-navigation.tsx +19 -0
  161. package/ip-input/_example/paste-demo.tsx +23 -0
  162. package/ip-input/_example/states.tsx +21 -0
  163. package/ip-input/_example/with-cidr.tsx +23 -0
  164. package/layout/_example/combine-left.tsx +54 -0
  165. package/layout/_example/combine-right.tsx +54 -0
  166. package/layout/_example/custom-aside-width.tsx +56 -0
  167. package/layout/_example/custom-height.tsx +45 -0
  168. package/layout/_example/double-sidebar.tsx +57 -0
  169. package/layout/_example/side-navigation-right.tsx +51 -0
  170. package/layout/_example/side-navigation.tsx +51 -0
  171. package/layout/_example/top-navigation.tsx +41 -0
  172. package/list/ListItem.tsx +36 -36
  173. package/list/ListItemMeta.tsx +40 -40
  174. package/list/_example/async-loading.tsx +46 -0
  175. package/list/_example/default.tsx +23 -0
  176. package/list/_example/header-footer.tsx +40 -0
  177. package/list/_example/multiline.tsx +24 -0
  178. package/list/_example/scroll-loading.tsx +69 -0
  179. package/list/_example/sizes.tsx +45 -0
  180. package/list/_example/split.tsx +36 -0
  181. package/list/_example/stripe.tsx +24 -0
  182. package/list/_example/virtual-scroll.tsx +51 -0
  183. package/list/_example/with-image.tsx +26 -0
  184. package/list/defaultProps.ts +11 -11
  185. package/list/hooks/useListVirtualScroll.ts +82 -82
  186. package/list/style/css.js +1 -1
  187. package/list/style/index.js +1 -1
  188. package/loading/_example/default.tsx +6 -0
  189. package/loading/_example/delay.tsx +53 -0
  190. package/loading/_example/fullscreen.tsx +29 -0
  191. package/loading/_example/inherit-color.tsx +24 -0
  192. package/loading/_example/no-overlay.tsx +15 -0
  193. package/loading/_example/sizes.tsx +25 -0
  194. package/loading/_example/with-text.tsx +12 -0
  195. package/loading/_example/wrapper.tsx +30 -0
  196. package/locale/LocalReceiver.ts +55 -55
  197. package/locale/ar_KW.ts +7 -7
  198. package/locale/en_US.ts +7 -7
  199. package/locale/it_IT.ts +6 -6
  200. package/locale/ja_JP.ts +6 -6
  201. package/locale/ko_KR.ts +6 -6
  202. package/locale/ru_RU.ts +6 -6
  203. package/locale/zh_CN.ts +5 -5
  204. package/locale/zh_TW.ts +7 -7
  205. package/notification/_example/default.tsx +31 -0
  206. package/notification/_example/long-content.tsx +37 -0
  207. package/notification/_example/stacking.tsx +40 -0
  208. package/notification/_example/types.tsx +78 -0
  209. package/notification/_example/usage-example.tsx +62 -0
  210. package/package.json +4 -3
  211. package/popup/Popup.tsx +17 -5
  212. package/popup/_example/controlled.tsx +32 -0
  213. package/popup/_example/custom-content.tsx +64 -0
  214. package/popup/_example/default.tsx +19 -0
  215. package/popup/_example/delay.tsx +35 -0
  216. package/popup/_example/disabled.tsx +17 -0
  217. package/popup/_example/no-arrow.tsx +17 -0
  218. package/popup/_example/placements.tsx +61 -0
  219. package/popup/_example/triggers.tsx +26 -0
  220. package/radio/_example/allow-uncheck.tsx +19 -0
  221. package/radio/_example/button-style.tsx +40 -0
  222. package/radio/_example/controlled.tsx +13 -0
  223. package/radio/_example/default.tsx +13 -0
  224. package/radio/_example/group-disabled.tsx +22 -0
  225. package/radio/_example/group-with-options.tsx +20 -0
  226. package/radio/_example/group.tsx +19 -0
  227. package/radio/_example/sizes.tsx +37 -0
  228. package/radio/_example/states.tsx +20 -0
  229. package/select/_example/collapsed.tsx +30 -0
  230. package/select/_example/creatable.tsx +36 -0
  231. package/select/_example/custom-content.tsx +26 -0
  232. package/select/_example/default.tsx +29 -0
  233. package/select/_example/disabled.tsx +20 -0
  234. package/select/_example/filterable.tsx +27 -0
  235. package/select/_example/group-options.tsx +44 -0
  236. package/select/_example/label-suffix.tsx +24 -0
  237. package/select/_example/loading.tsx +19 -0
  238. package/select/_example/multiple.tsx +31 -0
  239. package/select/_example/sizes.tsx +20 -0
  240. package/select/_example/status.tsx +27 -0
  241. package/select/type.ts +382 -382
  242. package/select-input/type.ts +280 -280
  243. package/slider/Slider.tsx +13 -5
  244. package/slider/SliderHandleButton.tsx +50 -50
  245. package/slider/_example/custom-label.tsx +19 -0
  246. package/slider/_example/default.tsx +14 -0
  247. package/slider/_example/disabled.tsx +17 -0
  248. package/slider/_example/marks.tsx +31 -0
  249. package/slider/_example/range.tsx +16 -0
  250. package/slider/_example/step.tsx +14 -0
  251. package/slider/_example/vertical.tsx +26 -0
  252. package/slider/_example/with-input-number.tsx +21 -0
  253. package/slider/defaultProps.ts +15 -15
  254. package/slider/style/css.js +1 -1
  255. package/slider/style/index.js +1 -1
  256. package/slider/type.ts +1 -1
  257. package/styles/_global.scss +40 -39
  258. package/styles/_vars.scss +374 -358
  259. package/styles/components/alert/_index.scss +175 -175
  260. package/styles/components/alert/_vars.scss +41 -39
  261. package/styles/components/badge/_index.scss +71 -70
  262. package/styles/components/badge/_vars.scss +26 -25
  263. package/styles/components/button/_index.scss +499 -499
  264. package/styles/components/button/_mixins.scss +40 -39
  265. package/styles/components/button/_vars.scss +121 -120
  266. package/styles/components/checkbox/_index.scss +158 -158
  267. package/styles/components/checkbox/_var.scss +59 -60
  268. package/styles/components/color-picker/_index.scss +586 -586
  269. package/styles/components/color-picker/_vars.scss +79 -84
  270. package/styles/components/dialog/_animate.scss +133 -135
  271. package/styles/components/dialog/_index.scss +310 -311
  272. package/styles/components/dialog/_vars.scss +60 -59
  273. package/styles/components/drawer/_index.scss +206 -205
  274. package/styles/components/drawer/_var.scss +55 -53
  275. package/styles/components/fireworks/_index.scss +86 -86
  276. package/styles/components/fireworks/_vars.scss +5 -4
  277. package/styles/components/form/_index.scss +175 -173
  278. package/styles/components/form/_mixins.scss +74 -76
  279. package/styles/components/form/_vars.scss +101 -100
  280. package/styles/components/input/_index.scss +350 -349
  281. package/styles/components/input/_mixins.scss +120 -116
  282. package/styles/components/input/_vars.scss +130 -134
  283. package/styles/components/input-number/_index.scss +342 -343
  284. package/styles/components/input-number/_vars.scss +56 -65
  285. package/styles/components/ip-input/_index.scss +277 -280
  286. package/styles/components/layout/_index.scss +47 -47
  287. package/styles/components/layout/_vars.scss +19 -18
  288. package/styles/components/layout/doc.scss +74 -74
  289. package/styles/components/list/_index.scss +172 -172
  290. package/styles/components/list/_vars.scss +42 -41
  291. package/styles/components/loading/_index.scss +113 -112
  292. package/styles/components/loading/_vars.scss +40 -39
  293. package/styles/components/notification/_index.scss +144 -143
  294. package/styles/components/notification/_mixins.scss +13 -12
  295. package/styles/components/notification/_vars.scss +60 -59
  296. package/styles/components/popup/_index.scss +78 -82
  297. package/styles/components/popup/_mixin.scss +149 -149
  298. package/styles/components/popup/{_var.scss → _vars.scss} +33 -31
  299. package/styles/components/radio/_index.scss +376 -376
  300. package/styles/components/radio/{_var.scss → _vars.scss} +89 -92
  301. package/styles/components/select/_index.scss +291 -290
  302. package/styles/components/select/_var.scss +64 -65
  303. package/styles/components/select-input/_index.scss +5 -5
  304. package/styles/components/select-input/_var.scss +4 -3
  305. package/styles/components/slider/_index.scss +241 -241
  306. package/styles/components/slider/_vars.scss +51 -50
  307. package/styles/components/switch/_index.scss +248 -164
  308. package/styles/components/switch/_vars.scss +63 -61
  309. package/styles/components/table/_index.scss +194 -193
  310. package/styles/components/table/_var.scss +52 -52
  311. package/styles/components/tabs/_index.scss +165 -165
  312. package/styles/components/tabs/_mixins.scss +11 -11
  313. package/styles/components/tabs/_vars.scss +72 -71
  314. package/styles/components/tag/_index.scss +317 -316
  315. package/styles/components/tag/_var.scss +86 -85
  316. package/styles/components/tag-input/_index.scss +164 -163
  317. package/styles/components/tag-input/_vars.scss +17 -16
  318. package/styles/components/tooltip/_index.scss +104 -0
  319. package/styles/components/tooltip/_vars.scss +23 -0
  320. package/styles/mixins/_focus.scss +8 -7
  321. package/styles/mixins/_layout.scss +32 -32
  322. package/styles/mixins/_reset.scss +11 -10
  323. package/styles/mixins/_scrollbar.scss +32 -31
  324. package/styles/mixins/_text.scss +50 -48
  325. package/styles/themes/_dark.scss +169 -191
  326. package/styles/themes/_font.scss +69 -69
  327. package/styles/themes/_index.scss +5 -5
  328. package/styles/themes/_light.scss +170 -190
  329. package/styles/themes/_radius.scss +9 -9
  330. package/styles/themes/_size.scss +68 -68
  331. package/styles/utilities/_animation.scss +58 -57
  332. package/styles/utilities/_tips.scss +10 -9
  333. package/switch/_example/async-change.tsx +25 -0
  334. package/switch/_example/before-change.tsx +22 -0
  335. package/switch/_example/controlled.tsx +14 -0
  336. package/switch/_example/custom-value.tsx +21 -0
  337. package/switch/_example/default.tsx +6 -0
  338. package/switch/_example/disabled.tsx +25 -0
  339. package/switch/_example/loading.tsx +17 -0
  340. package/switch/_example/sizes.tsx +21 -0
  341. package/switch/_example/with-label.tsx +21 -0
  342. package/tab/TabPanel.tsx +9 -6
  343. package/tab/_example/addable.tsx +45 -0
  344. package/tab/_example/card-theme.tsx +22 -0
  345. package/tab/_example/default.tsx +22 -0
  346. package/tab/_example/disabled.tsx +38 -0
  347. package/tab/_example/lazy.tsx +25 -0
  348. package/tab/_example/placement.tsx +36 -0
  349. package/tab/_example/removable.tsx +31 -0
  350. package/tab/_example/sizes.tsx +31 -0
  351. package/tab/_example/with-action.tsx +26 -0
  352. package/table/Cell.tsx +3 -6
  353. package/table/Ellipsis.tsx +73 -0
  354. package/table/_example/alignment.tsx +46 -0
  355. package/table/_example/auto-width.tsx +47 -0
  356. package/table/_example/bordered-stripe-hover.tsx +42 -0
  357. package/table/_example/bordered.tsx +42 -0
  358. package/table/_example/cell-click.tsx +52 -0
  359. package/table/_example/complex.tsx +82 -0
  360. package/table/_example/custom-cell.tsx +68 -0
  361. package/table/_example/custom-empty.tsx +37 -0
  362. package/table/_example/custom-row-class-name.tsx +57 -0
  363. package/table/_example/default.tsx +42 -0
  364. package/table/_example/ellipsis.tsx +56 -0
  365. package/table/_example/empty.tsx +28 -0
  366. package/table/_example/fixed-width.tsx +48 -0
  367. package/table/_example/hover.tsx +42 -0
  368. package/table/_example/row-click.tsx +52 -0
  369. package/table/_example/sizes.tsx +57 -0
  370. package/table/_example/stripe.tsx +42 -0
  371. package/table/_example/vertical-align.tsx +110 -0
  372. package/table/hooks/useTableClassName.ts +3 -3
  373. package/table/index.ts +2 -0
  374. package/table/type.ts +1 -0
  375. package/tag/Tag.tsx +1 -1
  376. package/tag/_example/closable.tsx +44 -0
  377. package/tag/_example/default.tsx +17 -0
  378. package/tag/_example/disabled.tsx +19 -0
  379. package/tag/_example/sizes.tsx +18 -0
  380. package/tag/_example/variants.tsx +37 -0
  381. package/tag-input/_example/collapsed.tsx +27 -0
  382. package/tag-input/_example/controlled-uncontrolled.tsx +26 -0
  383. package/tag-input/_example/default.tsx +15 -0
  384. package/tag-input/_example/disabled-readonly.tsx +21 -0
  385. package/tag-input/_example/events.tsx +64 -0
  386. package/tag-input/_example/excess-display.tsx +27 -0
  387. package/tag-input/_example/max-tags.tsx +22 -0
  388. package/tag-input/_example/sizes.tsx +21 -0
  389. package/tag-input/_example/status.tsx +37 -0
  390. package/tag-input/_example/with-label.tsx +23 -0
  391. package/tag-input/hooks/useTagList.tsx +1 -1
  392. package/tooltip/Tooltip.tsx +76 -0
  393. package/tooltip/_example/base.tsx +26 -0
  394. package/tooltip/_example/custom-content.tsx +47 -0
  395. package/tooltip/_example/placement.tsx +33 -0
  396. package/tooltip/_example/theme.tsx +34 -0
  397. package/tooltip/defaultProps.ts +14 -0
  398. package/tooltip/index.ts +7 -0
  399. package/tooltip/style/index.js +1 -0
  400. package/tooltip/type.ts +99 -0
  401. package/utils/input-number/large-number.ts +423 -423
  402. package/utils/input-number/number.ts +257 -257
  403. package/utils/log/index.ts +3 -3
  404. package/utils/log/log.ts +29 -30
  405. package/utils/log/types.ts +9 -12
  406. package/utils/style.ts +58 -58
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 TendaUI
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2024 TendaUI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,176 +1,176 @@
1
- # @tendaui/components
2
-
3
- TendaUI React 组件库的源代码包,包含所有 UI 组件的实现。
4
-
5
- ## 📦 安装
6
-
7
- 在 monorepo 的其他包中使用 `workspace` 协议安装:
8
-
9
- ```bash
10
- pnpm add @tendaui/components@workspace:*
11
- ```
12
-
13
- ## 🔗 在其他包中使用
14
-
15
- ### 1. 在 package.json 中添加依赖
16
-
17
- ```json
18
- {
19
- "dependencies": {
20
- "@tendaui/components": "workspace:*"
21
- }
22
- }
23
- ```
24
-
25
- ### 2. 在代码中导入使用
26
-
27
- #### 导入单个组件
28
-
29
- ```tsx
30
- import { Button } from "@tendaui/components";
31
- import "@tendaui/components/button/style";
32
-
33
- function App() {
34
- return <Button type="primary">点击我</Button>;
35
- }
36
- ```
37
-
38
- #### 导入多个组件
39
-
40
- ```tsx
41
- import { Button, Input, Form } from "@tendaui/components";
42
- import "@tendaui/components/styles/globals.css";
43
-
44
- function App() {
45
- return (
46
- <Form>
47
- <Input placeholder="请输入" />
48
- <Button type="primary">提交</Button>
49
- </Form>
50
- );
51
- }
52
- ```
53
-
54
- #### 按需导入组件
55
-
56
- ```tsx
57
- // 导入单个组件的所有导出
58
- import Button from "@tendaui/components/button";
59
- import "@tendaui/components/button/style";
60
-
61
- // 或者导入特定文件
62
- import { Button } from "@tendaui/components/button";
63
- ```
64
-
65
- #### 导入 Hooks
66
-
67
- ```tsx
68
- import { useConfig, useControlled } from "@tendaui/components/hooks";
69
- ```
70
-
71
- #### 导入工具函数
72
-
73
- ```tsx
74
- import { composeRefs, parseTNode } from "@tendaui/components/utils";
75
- ```
76
-
77
- ## 📝 TypeScript 支持
78
-
79
- 如果需要在 TypeScript 项目中使用,可以在 `tsconfig.json` 中添加路径映射:
80
-
81
- ```json
82
- {
83
- "compilerOptions": {
84
- "paths": {
85
- "@tendaui/components": ["../../packages/components"],
86
- "@tendaui/components/*": ["../../packages/components/*"]
87
- }
88
- }
89
- }
90
- ```
91
-
92
- ## 🎯 使用场景
93
-
94
- ### 场景 1: 在 `tendaui-react` 包中使用
95
-
96
- `tendaui-react` 包可以依赖 `@tendaui/components` 来构建最终发布的包:
97
-
98
- ```json
99
- {
100
- "name": "tendaui-react",
101
- "dependencies": {
102
- "@tendaui/components": "workspace:*"
103
- }
104
- }
105
- ```
106
-
107
- ### 场景 2: 在文档包中使用
108
-
109
- 在 Storybook 或其他文档工具中直接使用组件:
110
-
111
- ```tsx
112
- import { Button } from "@tendaui/components";
113
- import { Meta, Story } from "@storybook/react";
114
-
115
- export default {
116
- title: "Components/Button",
117
- component: Button
118
- } as Meta;
119
- ```
120
-
121
- ### 场景 3: 在测试中使用
122
-
123
- 在测试文件中导入组件进行测试:
124
-
125
- ```tsx
126
- import { render, screen } from "@testing-library/react";
127
- import { Button } from "@tendaui/components";
128
-
129
- test("renders button", () => {
130
- render(<Button>Test</Button>);
131
- expect(screen.getByText("Test")).toBeInTheDocument();
132
- });
133
- ```
134
-
135
- ## 📋 可用组件
136
-
137
- - `Alert` - 警告提示
138
- - `Badge` - 徽标
139
- - `Button` - 按钮
140
- - `Checkbox` - 复选框
141
- - `ConfigProvider` - 全局配置
142
- - `Dialog` - 对话框
143
- - `Form` - 表单
144
- - `Input` - 输入框
145
- - `Loading` - 加载中
146
- - `Notification` - 通知
147
- - `Popup` - 弹出层
148
- - `Select` - 选择器
149
- - `SelectInput` - 选择输入框
150
- - `Switch` - 开关
151
- - `Tag` - 标签
152
- - `TagInput` - 标签输入框
153
-
154
- ## 🔧 开发
155
-
156
- ### 本地开发
157
-
158
- 由于这是一个源代码包,修改组件代码后,使用它的包会自动看到更改(如果配置了正确的构建工具)。
159
-
160
- ### 构建
161
-
162
- 如果需要构建这个包,可以添加构建脚本:
163
-
164
- ```json
165
- {
166
- "scripts": {
167
- "build": "tsc --build"
168
- }
169
- }
170
- ```
171
-
172
- ## 📚 相关文档
173
-
174
- - [Monorepo 最佳实践](../../MONOREPO.md)
175
- - [发布指南](../../PUBLISH.md)
176
- - [Lerna 使用指南](../../LERNA.md)
1
+ # @tendaui/components
2
+
3
+ TendaUI React 组件库的源代码包,包含所有 UI 组件的实现。
4
+
5
+ ## 📦 安装
6
+
7
+ 在 monorepo 的其他包中使用 `workspace` 协议安装:
8
+
9
+ ```bash
10
+ pnpm add @tendaui/components@workspace:*
11
+ ```
12
+
13
+ ## 🔗 在其他包中使用
14
+
15
+ ### 1. 在 package.json 中添加依赖
16
+
17
+ ```json
18
+ {
19
+ "dependencies": {
20
+ "@tendaui/components": "workspace:*"
21
+ }
22
+ }
23
+ ```
24
+
25
+ ### 2. 在代码中导入使用
26
+
27
+ #### 导入单个组件
28
+
29
+ ```tsx
30
+ import { Button } from "@tendaui/components";
31
+ import "@tendaui/components/button/style";
32
+
33
+ function App() {
34
+ return <Button type="primary">点击我</Button>;
35
+ }
36
+ ```
37
+
38
+ #### 导入多个组件
39
+
40
+ ```tsx
41
+ import { Button, Input, Form } from "@tendaui/components";
42
+ import "@tendaui/components/styles/globals.css";
43
+
44
+ function App() {
45
+ return (
46
+ <Form>
47
+ <Input placeholder="请输入" />
48
+ <Button type="primary">提交</Button>
49
+ </Form>
50
+ );
51
+ }
52
+ ```
53
+
54
+ #### 按需导入组件
55
+
56
+ ```tsx
57
+ // 导入单个组件的所有导出
58
+ import Button from "@tendaui/components/button";
59
+ import "@tendaui/components/button/style";
60
+
61
+ // 或者导入特定文件
62
+ import { Button } from "@tendaui/components/button";
63
+ ```
64
+
65
+ #### 导入 Hooks
66
+
67
+ ```tsx
68
+ import { useConfig, useControlled } from "@tendaui/components/hooks";
69
+ ```
70
+
71
+ #### 导入工具函数
72
+
73
+ ```tsx
74
+ import { composeRefs, parseTNode } from "@tendaui/components/utils";
75
+ ```
76
+
77
+ ## 📝 TypeScript 支持
78
+
79
+ 如果需要在 TypeScript 项目中使用,可以在 `tsconfig.json` 中添加路径映射:
80
+
81
+ ```json
82
+ {
83
+ "compilerOptions": {
84
+ "paths": {
85
+ "@tendaui/components": ["../../packages/components"],
86
+ "@tendaui/components/*": ["../../packages/components/*"]
87
+ }
88
+ }
89
+ }
90
+ ```
91
+
92
+ ## 🎯 使用场景
93
+
94
+ ### 场景 1: 在 `tendaui-react` 包中使用
95
+
96
+ `tendaui-react` 包可以依赖 `@tendaui/components` 来构建最终发布的包:
97
+
98
+ ```json
99
+ {
100
+ "name": "tendaui-react",
101
+ "dependencies": {
102
+ "@tendaui/components": "workspace:*"
103
+ }
104
+ }
105
+ ```
106
+
107
+ ### 场景 2: 在文档包中使用
108
+
109
+ 在 Storybook 或其他文档工具中直接使用组件:
110
+
111
+ ```tsx
112
+ import { Button } from "@tendaui/components";
113
+ import { Meta, Story } from "@storybook/react";
114
+
115
+ export default {
116
+ title: "Components/Button",
117
+ component: Button
118
+ } as Meta;
119
+ ```
120
+
121
+ ### 场景 3: 在测试中使用
122
+
123
+ 在测试文件中导入组件进行测试:
124
+
125
+ ```tsx
126
+ import { render, screen } from "@testing-library/react";
127
+ import { Button } from "@tendaui/components";
128
+
129
+ test("renders button", () => {
130
+ render(<Button>Test</Button>);
131
+ expect(screen.getByText("Test")).toBeInTheDocument();
132
+ });
133
+ ```
134
+
135
+ ## 📋 可用组件
136
+
137
+ - `Alert` - 警告提示
138
+ - `Badge` - 徽标
139
+ - `Button` - 按钮
140
+ - `Checkbox` - 复选框
141
+ - `ConfigProvider` - 全局配置
142
+ - `Dialog` - 对话框
143
+ - `Form` - 表单
144
+ - `Input` - 输入框
145
+ - `Loading` - 加载中
146
+ - `Notification` - 通知
147
+ - `Popup` - 弹出层
148
+ - `Select` - 选择器
149
+ - `SelectInput` - 选择输入框
150
+ - `Switch` - 开关
151
+ - `Tag` - 标签
152
+ - `TagInput` - 标签输入框
153
+
154
+ ## 🔧 开发
155
+
156
+ ### 本地开发
157
+
158
+ 由于这是一个源代码包,修改组件代码后,使用它的包会自动看到更改(如果配置了正确的构建工具)。
159
+
160
+ ### 构建
161
+
162
+ 如果需要构建这个包,可以添加构建脚本:
163
+
164
+ ```json
165
+ {
166
+ "scripts": {
167
+ "build": "tsc --build"
168
+ }
169
+ }
170
+ ```
171
+
172
+ ## 📚 相关文档
173
+
174
+ - [Monorepo 最佳实践](../../MONOREPO.md)
175
+ - [发布指南](../../PUBLISH.md)
176
+ - [Lerna 使用指南](../../LERNA.md)
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 检查节点是否溢出
3
+ * @param node 目标节点
4
+ * @returns 是否溢出
5
+ */
6
+ export function isNodeOverflow(node: HTMLElement): boolean {
7
+ if (!node) return false;
8
+ return node.scrollWidth > node.clientWidth;
9
+ }
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { Alert } from "@tendaui/react";
3
+
4
+ export default function Base() {
5
+ return (
6
+ <div style={{ display: "flex", flexDirection: "column", gap: "12px" }}>
7
+ <Alert theme="success" message="这是一条成功的消息提示" />
8
+ <Alert theme="info" message="这是一条普通的消息提示" />
9
+ <Alert theme="warning" message="这是一条警示消息" />
10
+ <Alert theme="error" message="高危操作/出错信息提示" />
11
+ </div>
12
+ );
13
+ }
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import { Alert } from "@tendaui/react";
3
+
4
+ export default function Collapse() {
5
+ const message = [
6
+ "1.这是一条普通的消息提示描述,",
7
+ "2.这是一条普通的消息提示描述,",
8
+ "3.这是一条普通的消息提示描述,",
9
+ "4.这是一条普通的消息提示描述,",
10
+ "5.这是一条普通的消息提示描述,"
11
+ ];
12
+ return (
13
+ <Alert message={message} maxLine={2} closeBtn />
14
+ );
15
+ }
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { Badge, Button } from "@tendaui/react";
3
+
4
+ export default function Base() {
5
+ return (
6
+ <Badge count={2}>
7
+ <Button>按钮</Button>
8
+ </Badge>
9
+ );
10
+ }
@@ -0,0 +1,29 @@
1
+ import React from "react";
2
+ import { Badge } from "@tendaui/react";
3
+
4
+ const badgeBlockStyle: React.CSSProperties = {
5
+ width: "40px",
6
+ height: "40px",
7
+ background: "#EEEEEE",
8
+ border: "1px solid #DCDCDC",
9
+ borderRadius: "3px"
10
+ };
11
+
12
+ export default function Count() {
13
+ return (
14
+ <div style={{ display: "flex", gap: "24px", alignItems: "center" }}>
15
+ <Badge count={1}>
16
+ <div style={badgeBlockStyle}></div>
17
+ </Badge>
18
+ <Badge count={16}>
19
+ <div style={badgeBlockStyle}></div>
20
+ </Badge>
21
+ <Badge count={99}>
22
+ <div style={badgeBlockStyle}></div>
23
+ </Badge>
24
+ <Badge count={100}>
25
+ <div style={badgeBlockStyle}></div>
26
+ </Badge>
27
+ </div>
28
+ );
29
+ }
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import { Badge } from "@tendaui/react";
3
+
4
+ const badgeBlockStyle: React.CSSProperties = {
5
+ width: "40px",
6
+ height: "40px",
7
+ background: "#EEEEEE",
8
+ border: "1px solid #DCDCDC",
9
+ borderRadius: "3px"
10
+ };
11
+
12
+ export default function CustomColor() {
13
+ return (
14
+ <div style={{ display: "flex", gap: "24px", alignItems: "center" }}>
15
+ <Badge count={8} color="var(--td-success-color)">
16
+ <div style={badgeBlockStyle}></div>
17
+ </Badge>
18
+ <Badge count={8} color="var(--td-warning-color)">
19
+ <div style={badgeBlockStyle}></div>
20
+ </Badge>
21
+ <Badge count={8} color="var(--td-brand-color)">
22
+ <div style={badgeBlockStyle}></div>
23
+ </Badge>
24
+ <Badge count="new" color="#6366f1">
25
+ <div style={badgeBlockStyle}></div>
26
+ </Badge>
27
+ <Badge dot count={1} color="var(--td-success-color)">
28
+ <div style={badgeBlockStyle}></div>
29
+ </Badge>
30
+ </div>
31
+ );
32
+ }
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import { Badge, Button } from "@tendaui/react";
3
+
4
+ const badgeBlockStyle: React.CSSProperties = {
5
+ width: "40px",
6
+ height: "40px",
7
+ background: "#EEEEEE",
8
+ border: "1px solid #DCDCDC",
9
+ borderRadius: "3px"
10
+ };
11
+
12
+ export default function Dot() {
13
+ return (
14
+ <div style={{ display: "flex", gap: "24px", alignItems: "center" }}>
15
+ <Badge dot count={1}>
16
+ <div style={badgeBlockStyle}></div>
17
+ </Badge>
18
+ <Badge dot count={1}>
19
+ <Button>消息</Button>
20
+ </Badge>
21
+ <Badge dot>
22
+ <span style={{ fontSize: "16px" }}>通知</span>
23
+ </Badge>
24
+ </div>
25
+ );
26
+ }
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import { Badge } from "@tendaui/react";
3
+
4
+ const badgeBlockStyle: React.CSSProperties = {
5
+ width: "40px",
6
+ height: "40px",
7
+ background: "#EEEEEE",
8
+ border: "1px solid #DCDCDC",
9
+ borderRadius: "3px"
10
+ };
11
+
12
+ export default function MaxCount() {
13
+ return (
14
+ <div style={{ display: "flex", gap: "24px", alignItems: "center" }}>
15
+ <Badge count={100} maxCount={99}>
16
+ <div style={badgeBlockStyle}></div>
17
+ </Badge>
18
+ <Badge count={1000} maxCount={999}>
19
+ <div style={badgeBlockStyle}></div>
20
+ </Badge>
21
+ <Badge count={50} maxCount={20}>
22
+ <div style={badgeBlockStyle}></div>
23
+ </Badge>
24
+ </div>
25
+ );
26
+ }
@@ -0,0 +1,29 @@
1
+ import React from "react";
2
+ import { Badge } from "@tendaui/react";
3
+
4
+ const badgeBlockStyle: React.CSSProperties = {
5
+ width: "40px",
6
+ height: "40px",
7
+ background: "#EEEEEE",
8
+ border: "1px solid #DCDCDC",
9
+ borderRadius: "3px"
10
+ };
11
+
12
+ export default function Offset() {
13
+ return (
14
+ <div style={{ display: "flex", gap: "40px", alignItems: "center" }}>
15
+ <Badge count={8}>
16
+ <div style={badgeBlockStyle}></div>
17
+ </Badge>
18
+ <Badge count={8} offset={[-5, 5]}>
19
+ <div style={badgeBlockStyle}></div>
20
+ </Badge>
21
+ <Badge count={8} offset={[5, -5]}>
22
+ <div style={badgeBlockStyle}></div>
23
+ </Badge>
24
+ <Badge count={8} offset={[-10, 10]}>
25
+ <div style={badgeBlockStyle}></div>
26
+ </Badge>
27
+ </div>
28
+ );
29
+ }
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import { Badge } from "@tendaui/react";
3
+
4
+ const badgeBlockStyle: React.CSSProperties = {
5
+ width: "40px",
6
+ height: "40px",
7
+ background: "#EEEEEE",
8
+ border: "1px solid #DCDCDC",
9
+ borderRadius: "3px"
10
+ };
11
+
12
+ export default function Shape() {
13
+ return (
14
+ <div style={{ display: "flex", gap: "24px", alignItems: "center" }}>
15
+ <Badge count={8} shape="circle">
16
+ <div style={badgeBlockStyle}></div>
17
+ </Badge>
18
+ <Badge count={88} shape="circle">
19
+ <div style={badgeBlockStyle}></div>
20
+ </Badge>
21
+ <Badge count={8} shape="round">
22
+ <div style={badgeBlockStyle}></div>
23
+ </Badge>
24
+ <Badge count={88} shape="round">
25
+ <div style={badgeBlockStyle}></div>
26
+ </Badge>
27
+ <Badge count="new" shape="round">
28
+ <div style={badgeBlockStyle}></div>
29
+ </Badge>
30
+ </div>
31
+ );
32
+ }
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+ import { Badge } from "@tendaui/react";
3
+
4
+ const badgeBlockStyle: React.CSSProperties = {
5
+ width: "40px",
6
+ height: "40px",
7
+ background: "#EEEEEE",
8
+ border: "1px solid #DCDCDC",
9
+ borderRadius: "3px"
10
+ };
11
+
12
+ export default function ShowZero() {
13
+ return (
14
+ <div style={{ display: "flex", gap: "24px", alignItems: "center" }}>
15
+ <Badge count={0}>
16
+ <div style={badgeBlockStyle}></div>
17
+ </Badge>
18
+ <Badge count={0} showZero>
19
+ <div style={badgeBlockStyle}></div>
20
+ </Badge>
21
+ </div>
22
+ );
23
+ }