react-public-components 1.2.7 → 1.2.9

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 (212) hide show
  1. package/README.md +181 -109
  2. package/dist/AnnouncementBar/index.cjs +3 -3
  3. package/dist/AnnouncementBar/index.js +2 -2
  4. package/dist/AudioPlayer/index.cjs +3 -3
  5. package/dist/AudioPlayer/index.js +2 -2
  6. package/dist/CeilingBox/index.cjs +2 -2
  7. package/dist/CeilingBox/index.js +1 -1
  8. package/dist/CodeSnippet/index.cjs +3 -3
  9. package/dist/CodeSnippet/index.js +2 -2
  10. package/dist/CollapseBox/index.cjs +3 -3
  11. package/dist/CollapseBox/index.js +2 -2
  12. package/dist/ColorPicker/index.cjs +5 -5
  13. package/dist/ColorPicker/index.js +2 -2
  14. package/dist/ContextMenu/index.cjs +3 -3
  15. package/dist/ContextMenu/index.js +2 -2
  16. package/dist/CopyButton/index.cjs +3 -3
  17. package/dist/CopyButton/index.js +2 -2
  18. package/dist/CronPicker/index.cjs +4 -4
  19. package/dist/CronPicker/index.js +3 -3
  20. package/dist/DebounceSelect/index.cjs +3 -3
  21. package/dist/DebounceSelect/index.js +2 -2
  22. package/dist/DisabledBox/index.cjs +3 -3
  23. package/dist/DisabledBox/index.js +2 -2
  24. package/dist/DragSortList/index.cjs +3 -3
  25. package/dist/DragSortList/index.js +2 -2
  26. package/dist/FilePreviewer/index.cjs +4 -4
  27. package/dist/FilePreviewer/index.js +2 -2
  28. package/dist/Fullscreen/index.cjs +3 -3
  29. package/dist/Fullscreen/index.js +2 -2
  30. package/dist/GuidedTour/index.cjs +3 -3
  31. package/dist/GuidedTour/index.js +2 -2
  32. package/dist/ImageCropper/index.cjs +3 -3
  33. package/dist/ImageCropper/index.js +2 -2
  34. package/dist/InfiniteScrollList/index.cjs +3 -3
  35. package/dist/InfiniteScrollList/index.js +2 -2
  36. package/dist/JsonEditor/index.cjs +4 -4
  37. package/dist/JsonEditor/index.js +3 -3
  38. package/dist/KeyValEditor/index.cjs +3 -3
  39. package/dist/KeyValEditor/index.js +2 -2
  40. package/dist/LazyLoadBox/index.cjs +3 -3
  41. package/dist/LazyLoadBox/index.js +1 -1
  42. package/dist/MiniSparkline/index.cjs +2 -2
  43. package/dist/MiniSparkline/index.js +1 -1
  44. package/dist/PasswordStrength/index.cjs +4 -4
  45. package/dist/PasswordStrength/index.js +2 -2
  46. package/dist/PdfViewer/index.cjs +3 -3
  47. package/dist/PdfViewer/index.js +2 -2
  48. package/dist/PeriodSelect/index.cjs +4 -4
  49. package/dist/PeriodSelect/index.js +1 -1
  50. package/dist/QrCodeCard/index.cjs +3 -3
  51. package/dist/QrCodeCard/index.js +2 -2
  52. package/dist/SensitiveMask/index.cjs +5 -5
  53. package/dist/SensitiveMask/index.js +3 -3
  54. package/dist/Splitter/index.cjs +3 -3
  55. package/dist/Splitter/index.js +2 -2
  56. package/dist/TagInput/index.cjs +3 -3
  57. package/dist/TagInput/index.js +2 -2
  58. package/dist/TextEllipsis/index.cjs +4 -4
  59. package/dist/TextEllipsis/index.js +3 -3
  60. package/dist/TreeTransfer/index.cjs +3 -3
  61. package/dist/TreeTransfer/index.js +2 -2
  62. package/dist/VideoPlayer/index.cjs +3 -3
  63. package/dist/VideoPlayer/index.js +2 -2
  64. package/dist/{chunk-56VELHCH.js → chunk-2SEHUMQH.js} +3 -3
  65. package/dist/{chunk-56VELHCH.js.map → chunk-2SEHUMQH.js.map} +1 -1
  66. package/dist/{chunk-2INP6NM4.js → chunk-3WLGM74R.js} +3 -3
  67. package/dist/{chunk-2INP6NM4.js.map → chunk-3WLGM74R.js.map} +1 -1
  68. package/dist/{chunk-2IDVNTKR.js → chunk-537T6BR3.js} +32 -8
  69. package/dist/chunk-537T6BR3.js.map +1 -0
  70. package/dist/{chunk-XUAHWX6B.js → chunk-5QEXX32M.js} +3 -3
  71. package/dist/{chunk-XUAHWX6B.js.map → chunk-5QEXX32M.js.map} +1 -1
  72. package/dist/{chunk-ETFLLRTO.js → chunk-5XTIASJH.js} +3 -3
  73. package/dist/{chunk-ETFLLRTO.js.map → chunk-5XTIASJH.js.map} +1 -1
  74. package/dist/{chunk-TNZ2OLGW.cjs → chunk-6KODABJW.cjs} +4 -4
  75. package/dist/{chunk-TNZ2OLGW.cjs.map → chunk-6KODABJW.cjs.map} +1 -1
  76. package/dist/{chunk-ZWKUHYTV.cjs → chunk-6WCWYSFU.cjs} +6 -6
  77. package/dist/{chunk-ZWKUHYTV.cjs.map → chunk-6WCWYSFU.cjs.map} +1 -1
  78. package/dist/{chunk-Y54KVULF.js → chunk-7FGE7NRH.js} +11 -4
  79. package/dist/chunk-7FGE7NRH.js.map +1 -0
  80. package/dist/{chunk-VJOO2DG3.cjs → chunk-7NXCDDBT.cjs} +8 -8
  81. package/dist/{chunk-VJOO2DG3.cjs.map → chunk-7NXCDDBT.cjs.map} +1 -1
  82. package/dist/{chunk-VYPIRVL4.js → chunk-7W7PCWMM.js} +2 -2
  83. package/dist/chunk-7W7PCWMM.js.map +1 -0
  84. package/dist/{chunk-NNS4YN3C.js → chunk-B3FMPSBM.js} +10 -4
  85. package/dist/chunk-B3FMPSBM.js.map +1 -0
  86. package/dist/{chunk-TUEVILTA.cjs → chunk-BKHKPZ6O.cjs} +5 -5
  87. package/dist/{chunk-TUEVILTA.cjs.map → chunk-BKHKPZ6O.cjs.map} +1 -1
  88. package/dist/{chunk-AXPVN2OO.js → chunk-BXLUH6FE.js} +3 -3
  89. package/dist/{chunk-AXPVN2OO.js.map → chunk-BXLUH6FE.js.map} +1 -1
  90. package/dist/{chunk-PYCSRJSF.cjs → chunk-CWG7A5DS.cjs} +7 -7
  91. package/dist/{chunk-PYCSRJSF.cjs.map → chunk-CWG7A5DS.cjs.map} +1 -1
  92. package/dist/{chunk-YP4XTMK3.cjs → chunk-DTJEY3BC.cjs} +4 -4
  93. package/dist/{chunk-YP4XTMK3.cjs.map → chunk-DTJEY3BC.cjs.map} +1 -1
  94. package/dist/{chunk-2EIAWXFA.cjs → chunk-DWG4FUDX.cjs} +5 -5
  95. package/dist/{chunk-2EIAWXFA.cjs.map → chunk-DWG4FUDX.cjs.map} +1 -1
  96. package/dist/{chunk-IF4XAUV3.js → chunk-E6EJLQL7.js} +3 -3
  97. package/dist/{chunk-IF4XAUV3.js.map → chunk-E6EJLQL7.js.map} +1 -1
  98. package/dist/{chunk-RFTYEXKU.js → chunk-EMQHYD3G.js} +6 -14
  99. package/dist/chunk-EMQHYD3G.js.map +1 -0
  100. package/dist/{chunk-O4EABET3.js → chunk-ERPKXNWM.js} +10 -4
  101. package/dist/chunk-ERPKXNWM.js.map +1 -0
  102. package/dist/{chunk-QRZ2GVVJ.js → chunk-FJ33L5D7.js} +3 -3
  103. package/dist/{chunk-QRZ2GVVJ.js.map → chunk-FJ33L5D7.js.map} +1 -1
  104. package/dist/{chunk-4KMVABTM.js → chunk-FQHPCK3S.js} +4 -6
  105. package/dist/chunk-FQHPCK3S.js.map +1 -0
  106. package/dist/{chunk-OLLVIQPL.js → chunk-FT2XGH4D.js} +3 -3
  107. package/dist/{chunk-OLLVIQPL.js.map → chunk-FT2XGH4D.js.map} +1 -1
  108. package/dist/{chunk-EMT4NUI5.js → chunk-G76ELHWZ.js} +3 -3
  109. package/dist/{chunk-EMT4NUI5.js.map → chunk-G76ELHWZ.js.map} +1 -1
  110. package/dist/{chunk-QU33CY3M.cjs → chunk-IHUBENM6.cjs} +6 -14
  111. package/dist/chunk-IHUBENM6.cjs.map +1 -0
  112. package/dist/{chunk-M4FZJALR.js → chunk-J3C46E6G.js} +4 -4
  113. package/dist/{chunk-M4FZJALR.js.map → chunk-J3C46E6G.js.map} +1 -1
  114. package/dist/{chunk-UIU6VCEQ.cjs → chunk-JLW5ISIR.cjs} +6 -3
  115. package/dist/chunk-JLW5ISIR.cjs.map +1 -0
  116. package/dist/{chunk-UAUP5TJK.cjs → chunk-K4LVWWEE.cjs} +5 -5
  117. package/dist/{chunk-UAUP5TJK.cjs.map → chunk-K4LVWWEE.cjs.map} +1 -1
  118. package/dist/{chunk-P5CS7V4W.js → chunk-KJ537QZS.js} +3 -3
  119. package/dist/{chunk-P5CS7V4W.js.map → chunk-KJ537QZS.js.map} +1 -1
  120. package/dist/{chunk-U2EBNBGK.cjs → chunk-KSXCVQU3.cjs} +4 -4
  121. package/dist/{chunk-U2EBNBGK.cjs.map → chunk-KSXCVQU3.cjs.map} +1 -1
  122. package/dist/{chunk-LFGBZXQH.cjs → chunk-KWL5465Y.cjs} +4 -4
  123. package/dist/{chunk-LFGBZXQH.cjs.map → chunk-KWL5465Y.cjs.map} +1 -1
  124. package/dist/{chunk-TUDLE3RT.cjs → chunk-KYM35LPD.cjs} +13 -15
  125. package/dist/chunk-KYM35LPD.cjs.map +1 -0
  126. package/dist/{chunk-RN5WU7KA.cjs → chunk-L76JMQUH.cjs} +7 -7
  127. package/dist/{chunk-RN5WU7KA.cjs.map → chunk-L76JMQUH.cjs.map} +1 -1
  128. package/dist/{chunk-AHTRLNYK.cjs → chunk-LPDHDZTA.cjs} +5 -5
  129. package/dist/{chunk-AHTRLNYK.cjs.map → chunk-LPDHDZTA.cjs.map} +1 -1
  130. package/dist/{chunk-JHVPDKBM.cjs → chunk-LRUSUUPJ.cjs} +6 -6
  131. package/dist/{chunk-JHVPDKBM.cjs.map → chunk-LRUSUUPJ.cjs.map} +1 -1
  132. package/dist/{chunk-MQJBUHDB.js → chunk-MWVME3UR.js} +3 -3
  133. package/dist/{chunk-MQJBUHDB.js.map → chunk-MWVME3UR.js.map} +1 -1
  134. package/dist/{chunk-OONBZRPV.cjs → chunk-N4UF72SJ.cjs} +4 -4
  135. package/dist/{chunk-OONBZRPV.cjs.map → chunk-N4UF72SJ.cjs.map} +1 -1
  136. package/dist/{chunk-EKDJPOA3.cjs → chunk-NKLHMUGB.cjs} +5 -5
  137. package/dist/{chunk-EKDJPOA3.cjs.map → chunk-NKLHMUGB.cjs.map} +1 -1
  138. package/dist/{chunk-M3GQ7RCV.cjs → chunk-NZNNDZW4.cjs} +4 -4
  139. package/dist/{chunk-M3GQ7RCV.cjs.map → chunk-NZNNDZW4.cjs.map} +1 -1
  140. package/dist/{chunk-UZB7GOEI.cjs → chunk-OLIPC6HC.cjs} +4 -4
  141. package/dist/{chunk-UZB7GOEI.cjs.map → chunk-OLIPC6HC.cjs.map} +1 -1
  142. package/dist/{chunk-PTFKE67K.js → chunk-OOH3YSNC.js} +3 -3
  143. package/dist/{chunk-PTFKE67K.js.map → chunk-OOH3YSNC.js.map} +1 -1
  144. package/dist/{chunk-Q7OVUH5K.js → chunk-OXBOWSLR.js} +3 -3
  145. package/dist/{chunk-Q7OVUH5K.js.map → chunk-OXBOWSLR.js.map} +1 -1
  146. package/dist/{chunk-EDNBPLUS.js → chunk-P7P3UVGN.js} +3 -3
  147. package/dist/{chunk-EDNBPLUS.js.map → chunk-P7P3UVGN.js.map} +1 -1
  148. package/dist/{chunk-ANTFNDH4.js → chunk-Q2M3ZE7E.js} +3 -3
  149. package/dist/{chunk-ANTFNDH4.js.map → chunk-Q2M3ZE7E.js.map} +1 -1
  150. package/dist/{chunk-W5JA3YTT.js → chunk-Q3Z6OWKR.js} +3 -3
  151. package/dist/{chunk-W5JA3YTT.js.map → chunk-Q3Z6OWKR.js.map} +1 -1
  152. package/dist/{chunk-R4V3EJVP.cjs → chunk-QMLDK2DL.cjs} +32 -8
  153. package/dist/chunk-QMLDK2DL.cjs.map +1 -0
  154. package/dist/{chunk-PUMVD7CP.js → chunk-QVTQQB6M.js} +3 -3
  155. package/dist/{chunk-PUMVD7CP.js.map → chunk-QVTQQB6M.js.map} +1 -1
  156. package/dist/{chunk-ZCBT56AG.js → chunk-RBX6VEKI.js} +3 -3
  157. package/dist/{chunk-ZCBT56AG.js.map → chunk-RBX6VEKI.js.map} +1 -1
  158. package/dist/{chunk-4TMBGQQE.cjs → chunk-S35SIDXQ.cjs} +5 -5
  159. package/dist/{chunk-4TMBGQQE.cjs.map → chunk-S35SIDXQ.cjs.map} +1 -1
  160. package/dist/{chunk-CURWX7OY.js → chunk-SCVOSNWF.js} +3 -3
  161. package/dist/{chunk-CURWX7OY.js.map → chunk-SCVOSNWF.js.map} +1 -1
  162. package/dist/{chunk-ZXMFWVE4.cjs → chunk-SG7Z432O.cjs} +11 -5
  163. package/dist/chunk-SG7Z432O.cjs.map +1 -0
  164. package/dist/{chunk-FZH5FL7X.cjs → chunk-THZFDBJM.cjs} +12 -5
  165. package/dist/chunk-THZFDBJM.cjs.map +1 -0
  166. package/dist/{chunk-HKALWFWZ.cjs → chunk-TWL3QEFV.cjs} +5 -5
  167. package/dist/{chunk-HKALWFWZ.cjs.map → chunk-TWL3QEFV.cjs.map} +1 -1
  168. package/dist/{chunk-XLOGMDAQ.js → chunk-U4VZGKQV.js} +3 -3
  169. package/dist/{chunk-XLOGMDAQ.js.map → chunk-U4VZGKQV.js.map} +1 -1
  170. package/dist/{chunk-EJYTTSW6.js → chunk-VAU4USHW.js} +3 -3
  171. package/dist/{chunk-EJYTTSW6.js.map → chunk-VAU4USHW.js.map} +1 -1
  172. package/dist/{chunk-HSYTBMLN.cjs → chunk-VVKYGA2T.cjs} +9 -3
  173. package/dist/chunk-VVKYGA2T.cjs.map +1 -0
  174. package/dist/{chunk-JNA5AQ2K.js → chunk-VY4XERM4.js} +3 -3
  175. package/dist/{chunk-JNA5AQ2K.js.map → chunk-VY4XERM4.js.map} +1 -1
  176. package/dist/{chunk-V55FEQYU.cjs → chunk-W52O3Y2I.cjs} +2 -2
  177. package/dist/chunk-W52O3Y2I.cjs.map +1 -0
  178. package/dist/{chunk-7ZBA4NHH.cjs → chunk-W7LZVHTA.cjs} +4 -4
  179. package/dist/{chunk-7ZBA4NHH.cjs.map → chunk-W7LZVHTA.cjs.map} +1 -1
  180. package/dist/{chunk-5Q7THN6M.js → chunk-WLAHW5RF.js} +6 -3
  181. package/dist/chunk-WLAHW5RF.js.map +1 -0
  182. package/dist/{chunk-IPS7PC3M.cjs → chunk-X5X4YABT.cjs} +13 -13
  183. package/dist/{chunk-IPS7PC3M.cjs.map → chunk-X5X4YABT.cjs.map} +1 -1
  184. package/dist/{chunk-WKF4C6TJ.js → chunk-XLPOXPOV.js} +3 -3
  185. package/dist/{chunk-WKF4C6TJ.js.map → chunk-XLPOXPOV.js.map} +1 -1
  186. package/dist/{chunk-QP3RKA4J.cjs → chunk-XM6J7F5X.cjs} +4 -4
  187. package/dist/{chunk-QP3RKA4J.cjs.map → chunk-XM6J7F5X.cjs.map} +1 -1
  188. package/dist/{chunk-ED3ZG2VX.cjs → chunk-ZR56U55S.cjs} +5 -5
  189. package/dist/{chunk-ED3ZG2VX.cjs.map → chunk-ZR56U55S.cjs.map} +1 -1
  190. package/dist/{chunk-77ANKL4K.cjs → chunk-ZRNAJCZI.cjs} +8 -8
  191. package/dist/{chunk-77ANKL4K.cjs.map → chunk-ZRNAJCZI.cjs.map} +1 -1
  192. package/dist/index.cjs +73 -73
  193. package/dist/index.js +32 -32
  194. package/dist/src/icons.d.ts +6 -6
  195. package/dist/src/index.d.ts +2 -2
  196. package/package.json +1 -1
  197. package/dist/chunk-2IDVNTKR.js.map +0 -1
  198. package/dist/chunk-4KMVABTM.js.map +0 -1
  199. package/dist/chunk-5Q7THN6M.js.map +0 -1
  200. package/dist/chunk-FZH5FL7X.cjs.map +0 -1
  201. package/dist/chunk-HSYTBMLN.cjs.map +0 -1
  202. package/dist/chunk-NNS4YN3C.js.map +0 -1
  203. package/dist/chunk-O4EABET3.js.map +0 -1
  204. package/dist/chunk-QU33CY3M.cjs.map +0 -1
  205. package/dist/chunk-R4V3EJVP.cjs.map +0 -1
  206. package/dist/chunk-RFTYEXKU.js.map +0 -1
  207. package/dist/chunk-TUDLE3RT.cjs.map +0 -1
  208. package/dist/chunk-UIU6VCEQ.cjs.map +0 -1
  209. package/dist/chunk-V55FEQYU.cjs.map +0 -1
  210. package/dist/chunk-VYPIRVL4.js.map +0 -1
  211. package/dist/chunk-Y54KVULF.js.map +0 -1
  212. package/dist/chunk-ZXMFWVE4.cjs.map +0 -1
package/README.md CHANGED
@@ -3,13 +3,13 @@
3
3
  [![npm version](https://img.shields.io/npm/v/react-public-components.svg)](https://www.npmjs.com/package/react-public-components)
4
4
  [![license](https://img.shields.io/npm/l/react-public-components.svg)](https://github.com/xhua007/react-public-components)
5
5
 
6
- 📦 **企业级现代 React 通用核心组件库**。零沉重 UI 库绑定,开箱即用,提供 61 款真正高频、极客质感的中后台与现代 Web 应用组件。
6
+ 📦 **企业级现代 React 通用核心组件库**。零沉重 UI 库绑定,开箱即用,提供 63 款真正高频、极客质感的中后台与现代 Web 应用组件。
7
7
 
8
8
  ---
9
9
 
10
10
  ## 🌟 特性亮点
11
11
 
12
- - 💎 **精炼通用**:涵盖中后台与 SaaS 产品的通用、布局导航、数据录入、数据展示、反馈 5 大类别共 61 款高频组件。
12
+ - 💎 **精炼通用**:涵盖中后台与 SaaS 产品的通用、布局导航、数据录入、数据展示、反馈 5 大类别共 63 款高频组件。
13
13
  - ⚡ **轻量零依赖**:不强制依赖 Ant Design 等庞大第三方 UI 库,体积小巧,按需引入。
14
14
  - 🛡️ **工业级防御**:核心安全组件(如 `Watermark`)采用原生 DOM 脱离 VDOM 注入防篡改架构,支持毫秒自愈与防审查元素删除。
15
15
  - 🎨 **极客质感**:现代设计语言,自带平滑微动效、毛玻璃(Glassmorphism)、硬件加速流光与暗色模式适配。
@@ -17,117 +17,184 @@
17
17
 
18
18
  ---
19
19
 
20
- ## 快速安装
20
+ ## 🚀 快速上手与使用说明
21
+
22
+ ### 1. 安装组件库
21
23
 
22
24
  ```bash
25
+ # 使用 npm
23
26
  npm install react-public-components
24
- # 或使用 pnpm
27
+
28
+ # 或使用 pnpm (推荐)
25
29
  pnpm add react-public-components
30
+
26
31
  # 或使用 yarn
27
32
  yarn add react-public-components
28
33
  ```
29
34
 
30
- 在项目入口文件中引入全局样式:
35
+ ### 2. 引入基础样式 (重要)
36
+
37
+ 本组件库采用轻量、零运行时损耗的代码与样式抽离方案(CSS Extraction),组件 JS 产物仅包含纯逻辑与类名,**全局样式只需在项目根入口引入一次**即可全应用生效。
38
+
39
+ 请在项目的根入口文件(如 `main.tsx`、`index.tsx` 或 `App.tsx`)顶部引入:
31
40
 
32
41
  ```tsx
42
+ // main.tsx 或 index.tsx
43
+ import React from 'react';
44
+ import ReactDOM from 'react-dom/client';
45
+ import App from './App';
46
+
47
+ // 👈 仅需在此全局引入一次,所有业务页面和子组件即可拥有完整视觉与动效
33
48
  import 'react-public-components/styles.css';
49
+
50
+ ReactDOM.createRoot(document.getElementById('root')!).render(<App />);
51
+ ```
52
+
53
+ > [!NOTE]
54
+ > **为什么需要引入 `styles.css`?**
55
+ >
56
+ > - **零运行时开销**:不使用重型的 CSS-in-JS 运行时计算,完全由浏览器底层 CSS 引擎解析,首屏性能更优;
57
+ > - **强缓存与轻量**:CSS 独立打包,可被浏览器单独强缓存,避免 JS 产物体积膨胀;
58
+ > - **全项目单次引入**:不需要在每个业务组件中重复引入样式,根入口引入一次后,全站所有组件随处直接可用。
59
+
60
+ ### 3. 在业务组件中使用
61
+
62
+ 在项目入口引入 `styles.css` 后,所有业务模块直接引入组件即可使用,代码极简干净:
63
+
64
+ ```tsx
65
+ import React, { useState } from 'react';
66
+ import { PeriodSelect, LazyLoadBox, CopyButton } from 'react-public-components';
67
+
68
+ export default function MyDashboard() {
69
+ const [period, setPeriod] = useState('week');
70
+
71
+ return (
72
+ <div style={{ padding: 24 }}>
73
+ {/* 周期切换器 */}
74
+ <PeriodSelect value={period} onChange={(val) => setPeriod(val)} />
75
+
76
+ {/* 视口懒加载容器(距离滚动条 200px 提前加载) */}
77
+ <LazyLoadBox offset={200} height={200} style={{ marginTop: 20 }}>
78
+ <div>📊 视口按需加载的业务看板内容...</div>
79
+ </LazyLoadBox>
80
+
81
+ {/* 复制按钮 */}
82
+ <CopyButton text="https://github.com/xhua007/react-public-components" />
83
+ </div>
84
+ );
85
+ }
86
+ ```
87
+
88
+ ### 4. 按需引入与 Tree-Shaking
89
+
90
+ 组件库原生支持标准的 ESM 规范。使用现代打包工具(如 Vite、Webpack 5、Rollup)构建时,会自动对未使用的组件进行 Tree-Shaking 剪枝,最终生产构建仅打包实际 import 到的组件代码。
91
+
92
+ ```tsx
93
+ // 推荐写法:打包工具会自动 Tree-Shake 摇掉未使用的组件
94
+ import { PeriodSelect, Watermark } from 'react-public-components';
95
+ import type { PeriodSelectProps } from 'react-public-components';
34
96
  ```
35
97
 
36
98
  ---
37
99
 
38
- ## 🧩 组件全览(61 款核心高频组件)
100
+ ## 🧩 组件全览(63 款核心高频组件)
39
101
 
40
102
  ### 1. 通用 General (8 款)
41
- | 组件名 | 中文名称 | 特性与场景说明 |
42
- | :--- | :--- | :--- |
43
- | **`CodeSnippet`** | 代码预览块 | 极客代码展示块,支持暗色主题、一键复制与多行展开收起。 |
44
- | **`Watermark`** | 安全水印 | DOM 防篡改盲水印,脱离 VDOM 具备毫秒级自愈与防审查元素删除能力。 |
45
- | **`QrCodeCard`** | 二维码卡片 | 优雅企业级二维码展示卡片,支持 Logo 嵌入、状态覆盖(加载/过期刷新)与一键下载。 |
46
- | **`GuidedTour`** | 新手引导 | 新手引导步进器,带智能镂空高亮遮罩、步骤弹窗与状态持久化。 |
47
- | **`FilePreviewer`** | 文件预览 | 多格式文件与媒体统一弹窗预览器,支持图片、音视频、PDF、代码与一键下载。 |
48
- | **`Fullscreen`** | 全屏容器 | 支持局部元素原生全屏与网页内最大化置顶切换,支持快捷悬浮按钮与 Render Props。 |
49
- | **`CopyButton`** | 复制按钮 | 增强型剪贴板复制组件,支持 Tooltip 状态反馈、输入框后缀吸附与异步文本。 |
50
- | **`ContextMenu`** | 右键快捷菜单 | 自定义右键上下文菜单,支持多级嵌套、分割线、禁用态与快捷键提示。 |
103
+
104
+ | 组件名 | 中文名称 | 特性与场景说明 |
105
+ | :------------------ | :----------- | :------------------------------------------------------------------------------ |
106
+ | **`CodeSnippet`** | 代码预览块 | 极客代码展示块,支持暗色主题、一键复制与多行展开收起。 |
107
+ | **`Watermark`** | 安全水印 | DOM 防篡改盲水印,脱离 VDOM 具备毫秒级自愈与防审查元素删除能力。 |
108
+ | **`QrCodeCard`** | 二维码卡片 | 优雅企业级二维码展示卡片,支持 Logo 嵌入、状态覆盖(加载/过期刷新)与一键下载。 |
109
+ | **`GuidedTour`** | 新手引导 | 新手引导步进器,带智能镂空高亮遮罩、步骤弹窗与状态持久化。 |
110
+ | **`FilePreviewer`** | 文件预览 | 多格式文件与媒体统一弹窗预览器,支持图片、音视频、PDF、代码与一键下载。 |
111
+ | **`Fullscreen`** | 全屏容器 | 支持局部元素原生全屏与网页内最大化置顶切换,支持快捷悬浮按钮与 Render Props。 |
112
+ | **`CopyButton`** | 复制按钮 | 增强型剪贴板复制组件,支持 Tooltip 状态反馈、输入框后缀吸附与异步文本。 |
113
+ | **`ContextMenu`** | 右键快捷菜单 | 自定义右键上下文菜单,支持多级嵌套、分割线、禁用态与快捷键提示。 |
51
114
 
52
115
  ---
53
116
 
54
117
  ### 2. 布局与导航 Layout & Nav (10 款)
55
- | 组件名 | 中文名称 | 特性与场景说明 |
56
- | :--- | :--- | :--- |
57
- | **`LazyLoadBox`** | 视口懒加载容器 | 视口距离感知与按需加载容器,彻底拦截非可视模块接口调用,支持预加载距离与防塌陷占位。 |
58
- | **`CascadeDrawer`** | 级联下钻抽屉 | 多层级无限下钻抽屉容器,带顶部面包屑返回导航与平滑推拉动效。 |
59
- | **`KanbanBoard`** | 任务看板 | 轻量任务看板与泳道管理,基于原生 HTML5 Drag & Drop 跨列平滑拖拽。 |
60
- | **`DragSortList`** | 拖拽排序列表 | 纯原生轻量拖拽重排序列表,支持平滑占位与阴影反馈。 |
61
- | **`CeilingBox`** | 吸顶容器 | 智能吸顶/吸底容器组件,支持自动占位防页面塌陷、毛玻璃滤镜与 Render Props 状态感知。 |
62
- | **`Marquee`** | 无缝跑马灯 | 基于硬件加速的无缝平滑滚动 Logo 墙与广播通知条,支持悬停暂停与边缘渐变。 |
63
- | **`ScrollTracker`** | 滚动与吸顶 | 阅读进度条(ScrollTracker)与智能吸顶容器(StickyHeader,带毛玻璃与阴影)。 |
64
- | **`InfiniteScrollList`** | 无限滚动列表 | 触底自动触发异步加载的无限滚动列表容器,内置加载骨架与到底提示。 |
65
- | **`CollapseBox`** | 折叠容器 | 支持水平与垂直方向折叠的弹性容器组件,支持自定义按钮位置与默认尺寸。 |
66
- | **`Splitter`** | 分隔面板 | 支持多面板拖拽调整尺寸、折叠与双击重置的可定制分隔面板组件。 |
67
- | **`Masonry`** | 瀑布流 | 基于列优先的高性能响应式瀑布流布局组件,遵循 AntD 规范。 |
118
+
119
+ | 组件名 | 中文名称 | 特性与场景说明 |
120
+ | :----------------------- | :------------- | :----------------------------------------------------------------------------------- |
121
+ | **`LazyLoadBox`** | 视口懒加载容器 | 视口距离感知与按需加载容器,彻底拦截非可视模块接口调用,支持预加载距离与防塌陷占位。 |
122
+ | **`CascadeDrawer`** | 级联下钻抽屉 | 多层级无限下钻抽屉容器,带顶部面包屑返回导航与平滑推拉动效。 |
123
+ | **`KanbanBoard`** | 任务看板 | 轻量任务看板与泳道管理,基于原生 HTML5 Drag & Drop 跨列平滑拖拽。 |
124
+ | **`DragSortList`** | 拖拽排序列表 | 纯原生轻量拖拽重排序列表,支持平滑占位与阴影反馈。 |
125
+ | **`CeilingBox`** | 吸顶容器 | 智能吸顶/吸底容器组件,支持自动占位防页面塌陷、毛玻璃滤镜与 Render Props 状态感知。 |
126
+ | **`Marquee`** | 无缝跑马灯 | 基于硬件加速的无缝平滑滚动 Logo 墙与广播通知条,支持悬停暂停与边缘渐变。 |
127
+ | **`ScrollTracker`** | 滚动与吸顶 | 阅读进度条(ScrollTracker)与智能吸顶容器(StickyHeader,带毛玻璃与阴影)。 |
128
+ | **`InfiniteScrollList`** | 无限滚动列表 | 触底自动触发异步加载的无限滚动列表容器,内置加载骨架与到底提示。 |
129
+ | **`CollapseBox`** | 折叠容器 | 支持水平与垂直方向折叠的弹性容器组件,支持自定义按钮位置与默认尺寸。 |
130
+ | **`Splitter`** | 分隔面板 | 支持多面板拖拽调整尺寸、折叠与双击重置的可定制分隔面板组件。 |
131
+ | **`Masonry`** | 瀑布流 | 基于列优先的高性能响应式瀑布流布局组件,遵循 AntD 规范。 |
68
132
 
69
133
  ---
70
134
 
71
135
  ### 3. 数据录入 Data Entry (16 款)
72
- | 组件名 | 中文名称 | 特性与场景说明 |
73
- | :--- | :--- | :--- |
74
- | **`PeriodSelect`** | 周期/粒度切换器 | 紧凑型时间周期与维度单选切换器,精准还原高亮竖线分隔与多尺寸支持。 |
75
- | **`DualRangeSlider`** | 双滑块区间选择器 | 双向双滑块区间选择器,支持数值/价格跨度筛选与防交叉穿透。 |
76
- | **`FilterChips`** | 已选筛选胶囊栏 | 多维已选筛选项胶囊汇总栏,支持单项删除与一键清空全部。 |
77
- | **`FileDropZone`** | 拖拽上传容器 | 现代极客拖拽上传虚线容器,支持流光呼吸高亮与剪贴板截图粘贴。 |
78
- | **`TreeTransfer`** | 树形穿梭框 | 树形层级穿梭框,左侧目录树级联勾选与右侧平铺已选列表。 |
79
- | **`NumberStepper`** | 平滑数字步进器 | 长按连续加减数字步进器,支持步长控制与上下限保护。 |
80
- | **`KeyValEditor`** | 键值对编辑器 | 动态增删 API Headers 与环境变量配置项,支持密码掩码与单行禁用。 |
81
- | **`QuickDateRange`** | 快捷日期筛选 | 今日/近7天/本月等预设日期胶囊标签与自定义日期范围双向联动。 |
82
- | **`TreeFilterPanel`** | 树形平铺筛选 | 多级分类平铺联动筛选器,支持多选、快捷全部、分类汇总与一键清空。 |
83
- | **`NumericRangeInput`** | 数值区间输入 | 价格与数值区间范围输入框,自带双向联动校验与快捷区间预设标签。 |
84
- | **`CronPicker`** | Cron 选择器 | 定时任务 Cron 表达式可视化生成器,支持按天/周/月多周期配置与中文人话翻译。 |
85
- | **`TagInput`** | 标签输入器 | 自由标签输入组件,支持回车/逗号打标签、退格删除、双击编辑与正则校验。 |
86
- | **`PasswordStrength`** | 密码强度检测 | 多维度密码复杂度实时评分与 4 段彩色进度条可视化指示器。 |
87
- | **`ImageCropper`** | 图片裁剪 | 轻量原生 Canvas 图片裁剪器,支持拖拽、滚轮缩放、90° 旋转、圆形头像裁剪与 Modal 弹窗。 |
88
- | **`DebounceSelect`** | 防抖下拉框 | 防抖异步搜索选择器,内置时序竞态保护、单选/多选 Tags 模式与加载态。 |
89
- | **`ColorPicker`** | 颜色选择器 | 支持 HEX、HSB、RGB 及渐变色模式的高级颜色选择与调色板组件。 |
136
+
137
+ | 组件名 | 中文名称 | 特性与场景说明 |
138
+ | :---------------------- | :--------------- | :------------------------------------------------------------------------------------ |
139
+ | **`PeriodSelect`** | 周期/粒度切换器 | 紧凑型时间周期与维度单选切换器,精准还原高亮竖线分隔与多尺寸支持。 |
140
+ | **`DualRangeSlider`** | 双滑块区间选择器 | 双向双滑块区间选择器,支持数值/价格跨度筛选与防交叉穿透。 |
141
+ | **`FilterChips`** | 已选筛选胶囊栏 | 多维已选筛选项胶囊汇总栏,支持单项删除与一键清空全部。 |
142
+ | **`FileDropZone`** | 拖拽上传容器 | 现代极客拖拽上传虚线容器,支持流光呼吸高亮与剪贴板截图粘贴。 |
143
+ | **`TreeTransfer`** | 树形穿梭框 | 树形层级穿梭框,左侧目录树级联勾选与右侧平铺已选列表。 |
144
+ | **`NumberStepper`** | 平滑数字步进器 | 长按连续加减数字步进器,支持步长控制与上下限保护。 |
145
+ | **`KeyValEditor`** | 键值对编辑器 | 动态增删 API Headers 与环境变量配置项,支持密码掩码与单行禁用。 |
146
+ | **`QuickDateRange`** | 快捷日期筛选 | 今日/近7天/本月等预设日期胶囊标签与自定义日期范围双向联动。 |
147
+ | **`TreeFilterPanel`** | 树形平铺筛选 | 多级分类平铺联动筛选器,支持多选、快捷全部、分类汇总与一键清空。 |
148
+ | **`NumericRangeInput`** | 数值区间输入 | 价格与数值区间范围输入框,自带双向联动校验与快捷区间预设标签。 |
149
+ | **`CronPicker`** | Cron 选择器 | 定时任务 Cron 表达式可视化生成器,支持按天/周/月多周期配置与中文人话翻译。 |
150
+ | **`TagInput`** | 标签输入器 | 自由标签输入组件,支持回车/逗号打标签、退格删除、双击编辑与正则校验。 |
151
+ | **`PasswordStrength`** | 密码强度检测 | 多维度密码复杂度实时评分与 4 段彩色进度条可视化指示器。 |
152
+ | **`ImageCropper`** | 图片裁剪 | 轻量原生 Canvas 图片裁剪器,支持拖拽、滚轮缩放、90° 旋转、圆形头像裁剪与 Modal 弹窗。 |
153
+ | **`DebounceSelect`** | 防抖下拉框 | 防抖异步搜索选择器,内置时序竞态保护、单选/多选 Tags 模式与加载态。 |
154
+ | **`ColorPicker`** | 颜色选择器 | 支持 HEX、HSB、RGB 及渐变色模式的高级颜色选择与调色板组件。 |
90
155
 
91
156
  ---
92
157
 
93
158
  ### 4. 数据展示 Display (26 款)
94
- | 组件名 | 中文名称 | 特性与场景说明 |
95
- | :--- | :--- | :--- |
96
- | **`JsonDiffViewer`** | JSON 差异比对器 | JSON 结构体增删改差异彩色高亮探查,支持新旧值对照。 |
97
- | **`JsonTree`** | JSON 树状探查器 | 树状无限折叠展开的 JSON 探查器,支持数据类型高亮与路径探查。 |
98
- | **`MiniSparkline`** | 单行微趋势折线图 | 指标卡与表格专用的极简微折线走势图,纯 SVG 贝塞尔曲线平滑绘制。 |
99
- | **`SegmentedProgress`** | 分段多色进度条 | 单条轨道并列展示多色分段比例,支持存储空间占比与图例。 |
100
- | **`TrendIndicator`** | KPI 趋势升降胶囊 | 微型 KPI 指标变动升降胶囊,自动根据正负值判断涨跌并支持红绿反转。 |
101
- | **`PhotoViewer`** | 相册画廊查看器 | 全功能多图画廊查看器,支持左右键盘按键切图与缩略图底栏联动。 |
102
- | **`StatusTimeline`** | 审批流时间轴 | 高级审批流与动态耗时时间轴,包含节点状态徽标、经办人与流转耗时。 |
103
- | **`GradientText`** | 流光渐变文字 | 现代 SaaS 霓虹横向流光渐变文字,支持背景平滑滚动动画。 |
104
- | **`VideoPlayer`** | 视频播放器 | 轻量现代化视频播放器,暗黑毛玻璃控制条、快进快退 10s、0.75x~2.0x 倍速与画中画。 |
105
- | **`PdfViewer`** | PDF 在线阅读器 | 轻量 Web PDF 阅读器,支持缩放 Zoom90° 顺时针旋转与一键下载。 |
106
- | **`BadgeRibbon`** | 斜角丝带角标 | 卡片左上/右上 45° 倾斜缎带徽章,支持 HOT/PRO 推荐与渐变色。 |
107
- | **`ShimmerSkeleton`** | 流光骨架屏 | 高质感渐变流光掠过骨架屏,支持卡片、列表、头像与多行文本。 |
108
- | **`FlipCard`** | 3D 翻转卡片 | 3D 正反面翻转卡片,鼠标悬停或点击触发 180° 平滑翻转展示详情。 |
109
- | **`VirtualList`** | 虚拟列表 | 零依赖轻量虚拟滚动列表,万级海量数据 60FPS 极速渲染不卡顿。 |
110
- | **`MetricCard`** | KPI 指标卡 | Dashboard 看板指标卡片,集成 CountUp 数字跳动、环比升降趋势与微折线 Sparkline。 |
111
- | **`ActivityLog`** | 操作审计日志 | 中后台业务操作与审批流动态时间轴,支持操作人头像、相对时间与变动详情折叠。 |
112
- | **`AudioPlayer`** | 音频播放条 | 轻量客服录音与语音回放条,支持 Seek 拖拽、倍速切换与一键下载。 |
113
- | **`TiltCard`** | 3D 倾斜卡片 | 鼠标悬停 3D 景深物理倾斜与流光高光跟随卡片。 |
114
- | **`SpotlightCard`** | 聚光灯卡片 | 鼠标光晕聚光灯实时追踪跟随卡片,具备前沿极客科技感与暗色模式。 |
115
- | **`SensitiveMask`** | 敏感脱敏 | 手机号/身份证/银行卡/邮箱等敏感数据脱敏展示,支持点击眼睛解密与复制。 |
116
- | **`DiffViewer`** | 差异比对 | 轻量文本与代码行级差异比对器,支持分栏 Split 与行内 Unified 模式。 |
117
- | **`JsonEditor`** | JSON 查看与编辑 | 轻量免外部依赖的 JSON 语法高亮查看与编辑器,支持格式化、单行压缩与错误定位。 |
118
- | **`CountUp`** | 数字滚动 | 基于高质量缓动算法的平滑数字跳动动画组件,支持前缀后缀与命令式 Ref 控制。 |
119
- | **`TextEllipsis`** | 文本省略 | 支持单行/多行文本截断、展开/收起切换、溢出智能 Tooltip 与一键复制。 |
120
- | **`BorderBeam`** | 边框流光 | 为卡片或容器边框添加流动高亮与自定义渐变动画的特效组件。 |
121
- | **`DisabledBox`** | 禁用遮罩 | 为子级元素或复杂区域提供统一的禁用态透明遮罩与防交互保护。 |
159
+
160
+ | 组件名 | 中文名称 | 特性与场景说明 |
161
+ | :---------------------- | :--------------- | :------------------------------------------------------------------------------ |
162
+ | **`JsonDiffViewer`** | JSON 差异比对器 | JSON 结构体增删改差异彩色高亮探查,支持新旧值对照。 |
163
+ | **`JsonTree`** | JSON 树状探查器 | 树状无限折叠展开的 JSON 探查器,支持数据类型高亮与路径探查。 |
164
+ | **`MiniSparkline`** | 单行微趋势折线图 | 指标卡与表格专用的极简微折线走势图,纯 SVG 贝塞尔曲线平滑绘制。 |
165
+ | **`SegmentedProgress`** | 分段多色进度条 | 单条轨道并列展示多色分段比例,支持存储空间占比与图例。 |
166
+ | **`TrendIndicator`** | KPI 趋势升降胶囊 | 微型 KPI 指标变动升降胶囊,自动根据正负值判断涨跌并支持红绿反转。 |
167
+ | **`PhotoViewer`** | 相册画廊查看器 | 全功能多图画廊查看器,支持左右键盘按键切图与缩略图底栏联动。 |
168
+ | **`StatusTimeline`** | 审批流时间轴 | 高级审批流与动态耗时时间轴,包含节点状态徽标、经办人与流转耗时。 |
169
+ | **`GradientText`** | 流光渐变文字 | 现代 SaaS 霓虹横向流光渐变文字,支持背景平滑滚动动画。 |
170
+ | **`VideoPlayer`** | 视频播放器 | 轻量现代化视频播放器,暗黑毛玻璃控制条、快进快退 10s0.75x~2.0x 倍速与画中画。 |
171
+ | **`PdfViewer`** | PDF 在线阅读器 | 轻量 Web PDF 阅读器,支持缩放 Zoom、90° 顺时针旋转与一键下载。 |
172
+ | **`BadgeRibbon`** | 斜角丝带角标 | 卡片左上/右上 45° 倾斜缎带徽章,支持 HOT/PRO 推荐与渐变色。 |
173
+ | **`ShimmerSkeleton`** | 流光骨架屏 | 高质感渐变流光掠过骨架屏,支持卡片、列表、头像与多行文本。 |
174
+ | **`FlipCard`** | 3D 翻转卡片 | 3D 正反面翻转卡片,鼠标悬停或点击触发 180° 平滑翻转展示详情。 |
175
+ | **`VirtualList`** | 虚拟列表 | 零依赖轻量虚拟滚动列表,万级海量数据 60FPS 极速渲染不卡顿。 |
176
+ | **`MetricCard`** | KPI 指标卡 | Dashboard 看板指标卡片,集成 CountUp 数字跳动、环比升降趋势与微折线 Sparkline。 |
177
+ | **`ActivityLog`** | 操作审计日志 | 中后台业务操作与审批流动态时间轴,支持操作人头像、相对时间与变动详情折叠。 |
178
+ | **`AudioPlayer`** | 音频播放条 | 轻量客服录音与语音回放条,支持 Seek 拖拽、倍速切换与一键下载。 |
179
+ | **`TiltCard`** | 3D 倾斜卡片 | 鼠标悬停 3D 景深物理倾斜与流光高光跟随卡片。 |
180
+ | **`SpotlightCard`** | 聚光灯卡片 | 鼠标光晕聚光灯实时追踪跟随卡片,具备前沿极客科技感与暗色模式。 |
181
+ | **`SensitiveMask`** | 敏感脱敏 | 手机号/身份证/银行卡/邮箱等敏感数据脱敏展示,支持点击眼睛解密与复制。 |
182
+ | **`DiffViewer`** | 差异比对 | 轻量文本与代码行级差异比对器,支持分栏 Split 与行内 Unified 模式。 |
183
+ | **`JsonEditor`** | JSON 查看与编辑 | 轻量免外部依赖的 JSON 语法高亮查看与编辑器,支持格式化、单行压缩与错误定位。 |
184
+ | **`CountUp`** | 数字滚动 | 基于高质量缓动算法的平滑数字跳动动画组件,支持前缀后缀与命令式 Ref 控制。 |
185
+ | **`TextEllipsis`** | 文本省略 | 支持单行/多行文本截断、展开/收起切换、溢出智能 Tooltip 与一键复制。 |
186
+ | **`BorderBeam`** | 边框流光 | 为卡片或容器边框添加流动高亮与自定义渐变动画的特效组件。 |
187
+ | **`DisabledBox`** | 禁用遮罩 | 为子级元素或复杂区域提供统一的禁用态透明遮罩与防交互保护。 |
122
188
 
123
189
  ---
124
190
 
125
191
  ### 5. 反馈 Feedback (3 款)
126
- | 组件名 | 中文名称 | 特性与场景说明 |
127
- | :--- | :--- | :--- |
128
- | **`AnnouncementBar`** | 广播通知横幅 | 页面顶部吸顶渐变广播横幅,支持可配置关闭与持久化记忆。 |
129
- | **`HoverCard`** | 悬浮资料卡 | Twitter / GitHub 风格悬浮信息卡片,防误触延迟与视口防溢出。 |
130
- | **`EnvBadge`** | 环境防误触角标 | 醒目的环境状态标识胶囊,点击查看构建版本详情并支持多环境跳转。 |
192
+
193
+ | 组件名 | 中文名称 | 特性与场景说明 |
194
+ | :-------------------- | :------------- | :------------------------------------------------------------- |
195
+ | **`AnnouncementBar`** | 广播通知横幅 | 页面顶部吸顶渐变广播横幅,支持可配置关闭与持久化记忆。 |
196
+ | **`HoverCard`** | 悬浮资料卡 | Twitter / GitHub 风格悬浮信息卡片,防误触延迟与视口防溢出。 |
197
+ | **`EnvBadge`** | 环境防误触角标 | 醒目的环境状态标识胶囊,点击查看构建版本详情并支持多环境跳转。 |
131
198
 
132
199
  ---
133
200
 
@@ -139,18 +206,18 @@ import 'react-public-components/styles.css';
139
206
  import { Watermark } from 'react-public-components';
140
207
 
141
208
  export default function App() {
142
- return (
143
- <Watermark
144
- content={['内部机密 严禁外传', 'alex.chen 2026-08-18']}
145
- color="rgba(0, 0, 0, 0.10)"
146
- antiTamper
147
- >
148
- <div style={{ padding: 32, height: 400 }}>
149
- <h2>核心财务分析报告</h2>
150
- <p>即便在控制台尝试删除 DOM 或在 Styles 面板取消勾选属性,水印也会毫秒自愈复原。</p>
151
- </div>
152
- </Watermark>
153
- );
209
+ return (
210
+ <Watermark
211
+ content={['内部机密 严禁外传', 'alex.chen 2026-08-18']}
212
+ color="rgba(0, 0, 0, 0.10)"
213
+ antiTamper
214
+ >
215
+ <div style={{ padding: 32, height: 400 }}>
216
+ <h2>核心财务分析报告</h2>
217
+ <p>即便在控制台尝试删除 DOM 或在 Styles 面板取消勾选属性,水印也会毫秒自愈复原。</p>
218
+ </div>
219
+ </Watermark>
220
+ );
154
221
  }
155
222
  ```
156
223
 
@@ -160,16 +227,16 @@ export default function App() {
160
227
  import { Splitter } from 'react-public-components';
161
228
 
162
229
  export default function App() {
163
- return (
164
- <Splitter style={{ height: 400 }}>
165
- <Splitter.Panel defaultSize="30%" min="15%" collapsible>
166
- <div style={{ padding: 16 }}>左侧导航树</div>
167
- </Splitter.Panel>
168
- <Splitter.Panel>
169
- <div style={{ padding: 16 }}>主体工作区内容</div>
170
- </Splitter.Panel>
171
- </Splitter>
172
- );
230
+ return (
231
+ <Splitter style={{ height: 400 }}>
232
+ <Splitter.Panel defaultSize="30%" min="15%" collapsible>
233
+ <div style={{ padding: 16 }}>左侧导航树</div>
234
+ </Splitter.Panel>
235
+ <Splitter.Panel>
236
+ <div style={{ padding: 16 }}>主体工作区内容</div>
237
+ </Splitter.Panel>
238
+ </Splitter>
239
+ );
173
240
  }
174
241
  ```
175
242
 
@@ -179,13 +246,13 @@ export default function App() {
179
246
  import { CodeSnippet } from 'react-public-components';
180
247
 
181
248
  export default function App() {
182
- return (
183
- <CodeSnippet
184
- language="typescript"
185
- code={`const greeting: string = "Hello, react-public-components!";\nconsole.log(greeting);`}
186
- showLineNumbers
187
- />
188
- );
249
+ return (
250
+ <CodeSnippet
251
+ language="typescript"
252
+ code={`const greeting: string = "Hello, react-public-components!";\nconsole.log(greeting);`}
253
+ showLineNumbers
254
+ />
255
+ );
189
256
  }
190
257
  ```
191
258
 
@@ -212,6 +279,7 @@ npm run dev
212
279
  本项目已配置 `"prepublishOnly": "npm run build"` 自动化钩子,每次执行 `npm publish` 时会自动先执行全量类型与产物打包构建。
213
280
 
214
281
  ### 1. 前置准备与环境检查
282
+
215
283
  ```bash
216
284
  # 检查当前 npm 源是否为官方镜像源(若不是需切换)
217
285
  npm config get registry
@@ -223,6 +291,7 @@ npm login --auth-type=web
223
291
  ```
224
292
 
225
293
  ### 2. 更新版本号 (遵循 SemVer 规范)
294
+
226
295
  ```bash
227
296
  # 小修复与优化(Patch):1.2.0 -> 1.2.1
228
297
  npm version patch
@@ -235,6 +304,7 @@ npm version major
235
304
  ```
236
305
 
237
306
  ### 3. 构建与本地验证
307
+
238
308
  ```bash
239
309
  # 验证组件库核心打包(生成 dist/ 产物)
240
310
  npm run build
@@ -244,6 +314,7 @@ npm run build:demo
244
314
  ```
245
315
 
246
316
  ### 4. 提交代码与推送到 GitHub
317
+
247
318
  ```bash
248
319
  git add .
249
320
  git commit -m "chore(release): bump version to x.x.x"
@@ -251,6 +322,7 @@ git push
251
322
  ```
252
323
 
253
324
  ### 5. 正式发布到 npm
325
+
254
326
  ```bash
255
327
  # 执行发布(自动触发 prepublishOnly 构建)
256
328
  npm publish --access public
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkZXMFWVE4_cjs = require('../chunk-ZXMFWVE4.cjs');
4
- require('../chunk-R4V3EJVP.cjs');
3
+ var chunkSG7Z432O_cjs = require('../chunk-SG7Z432O.cjs');
4
+ require('../chunk-QMLDK2DL.cjs');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkZXMFWVE4_cjs.AnnouncementBar_default;
8
+ module.exports = chunkSG7Z432O_cjs.AnnouncementBar_default;
9
9
  //# sourceMappingURL=index.cjs.map
10
10
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- export { AnnouncementBar_default as default } from '../chunk-O4EABET3.js';
2
- import '../chunk-2IDVNTKR.js';
1
+ export { AnnouncementBar_default as default } from '../chunk-ERPKXNWM.js';
2
+ import '../chunk-537T6BR3.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunk4TMBGQQE_cjs = require('../chunk-4TMBGQQE.cjs');
4
- require('../chunk-R4V3EJVP.cjs');
3
+ var chunkS35SIDXQ_cjs = require('../chunk-S35SIDXQ.cjs');
4
+ require('../chunk-QMLDK2DL.cjs');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunk4TMBGQQE_cjs.AudioPlayer_default;
8
+ module.exports = chunkS35SIDXQ_cjs.AudioPlayer_default;
9
9
  //# sourceMappingURL=index.cjs.map
10
10
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- export { AudioPlayer_default as default } from '../chunk-PTFKE67K.js';
2
- import '../chunk-2IDVNTKR.js';
1
+ export { AudioPlayer_default as default } from '../chunk-OOH3YSNC.js';
2
+ import '../chunk-537T6BR3.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkUIU6VCEQ_cjs = require('../chunk-UIU6VCEQ.cjs');
3
+ var chunkJLW5ISIR_cjs = require('../chunk-JLW5ISIR.cjs');
4
4
 
5
5
 
6
6
 
7
- module.exports = chunkUIU6VCEQ_cjs.CeilingBox_default;
7
+ module.exports = chunkJLW5ISIR_cjs.CeilingBox_default;
8
8
  //# sourceMappingURL=index.cjs.map
9
9
  //# sourceMappingURL=index.cjs.map
@@ -1,3 +1,3 @@
1
- export { CeilingBox_default as default } from '../chunk-5Q7THN6M.js';
1
+ export { CeilingBox_default as default } from '../chunk-WLAHW5RF.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkTUDLE3RT_cjs = require('../chunk-TUDLE3RT.cjs');
4
- require('../chunk-R4V3EJVP.cjs');
3
+ var chunkKYM35LPD_cjs = require('../chunk-KYM35LPD.cjs');
4
+ require('../chunk-QMLDK2DL.cjs');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkTUDLE3RT_cjs.CodeSnippet_default;
8
+ module.exports = chunkKYM35LPD_cjs.CodeSnippet_default;
9
9
  //# sourceMappingURL=index.cjs.map
10
10
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- export { CodeSnippet_default as default } from '../chunk-4KMVABTM.js';
2
- import '../chunk-2IDVNTKR.js';
1
+ export { CodeSnippet_default as default } from '../chunk-FQHPCK3S.js';
2
+ import '../chunk-537T6BR3.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkRN5WU7KA_cjs = require('../chunk-RN5WU7KA.cjs');
4
- require('../chunk-R4V3EJVP.cjs');
3
+ var chunkL76JMQUH_cjs = require('../chunk-L76JMQUH.cjs');
4
+ require('../chunk-QMLDK2DL.cjs');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkRN5WU7KA_cjs.CollapseBox_default;
8
+ module.exports = chunkL76JMQUH_cjs.CollapseBox_default;
9
9
  //# sourceMappingURL=index.cjs.map
10
10
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- export { CollapseBox_default as default } from '../chunk-XLOGMDAQ.js';
2
- import '../chunk-2IDVNTKR.js';
1
+ export { CollapseBox_default as default } from '../chunk-U4VZGKQV.js';
2
+ import '../chunk-537T6BR3.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -2,22 +2,22 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var chunkEKDJPOA3_cjs = require('../chunk-EKDJPOA3.cjs');
6
- require('../chunk-R4V3EJVP.cjs');
5
+ var chunkNKLHMUGB_cjs = require('../chunk-NKLHMUGB.cjs');
6
+ require('../chunk-QMLDK2DL.cjs');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "Color", {
11
11
  enumerable: true,
12
- get: function () { return chunkEKDJPOA3_cjs.Color; }
12
+ get: function () { return chunkNKLHMUGB_cjs.Color; }
13
13
  });
14
14
  Object.defineProperty(exports, "default", {
15
15
  enumerable: true,
16
- get: function () { return chunkEKDJPOA3_cjs.ColorPicker_default; }
16
+ get: function () { return chunkNKLHMUGB_cjs.ColorPicker_default; }
17
17
  });
18
18
  Object.defineProperty(exports, "generateColor", {
19
19
  enumerable: true,
20
- get: function () { return chunkEKDJPOA3_cjs.generateColor; }
20
+ get: function () { return chunkNKLHMUGB_cjs.generateColor; }
21
21
  });
22
22
  //# sourceMappingURL=index.cjs.map
23
23
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- export { Color, ColorPicker_default as default, generateColor } from '../chunk-EDNBPLUS.js';
2
- import '../chunk-2IDVNTKR.js';
1
+ export { Color, ColorPicker_default as default, generateColor } from '../chunk-P7P3UVGN.js';
2
+ import '../chunk-537T6BR3.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkU2EBNBGK_cjs = require('../chunk-U2EBNBGK.cjs');
4
- require('../chunk-R4V3EJVP.cjs');
3
+ var chunkKSXCVQU3_cjs = require('../chunk-KSXCVQU3.cjs');
4
+ require('../chunk-QMLDK2DL.cjs');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkU2EBNBGK_cjs.ContextMenu_default;
8
+ module.exports = chunkKSXCVQU3_cjs.ContextMenu_default;
9
9
  //# sourceMappingURL=index.cjs.map
10
10
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- export { ContextMenu_default as default } from '../chunk-CURWX7OY.js';
2
- import '../chunk-2IDVNTKR.js';
1
+ export { ContextMenu_default as default } from '../chunk-SCVOSNWF.js';
2
+ import '../chunk-537T6BR3.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkUAUP5TJK_cjs = require('../chunk-UAUP5TJK.cjs');
4
- require('../chunk-R4V3EJVP.cjs');
3
+ var chunkK4LVWWEE_cjs = require('../chunk-K4LVWWEE.cjs');
4
+ require('../chunk-QMLDK2DL.cjs');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkUAUP5TJK_cjs.CopyButton_default;
8
+ module.exports = chunkK4LVWWEE_cjs.CopyButton_default;
9
9
  //# sourceMappingURL=index.cjs.map
10
10
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- export { CopyButton_default as default } from '../chunk-P5CS7V4W.js';
2
- import '../chunk-2IDVNTKR.js';
1
+ export { CopyButton_default as default } from '../chunk-KJ537QZS.js';
2
+ import '../chunk-537T6BR3.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkM3GQ7RCV_cjs = require('../chunk-M3GQ7RCV.cjs');
4
- require('../chunk-UAUP5TJK.cjs');
5
- require('../chunk-R4V3EJVP.cjs');
3
+ var chunkNZNNDZW4_cjs = require('../chunk-NZNNDZW4.cjs');
4
+ require('../chunk-K4LVWWEE.cjs');
5
+ require('../chunk-QMLDK2DL.cjs');
6
6
 
7
7
 
8
8
 
9
- module.exports = chunkM3GQ7RCV_cjs.CronPicker_default;
9
+ module.exports = chunkNZNNDZW4_cjs.CronPicker_default;
10
10
  //# sourceMappingURL=index.cjs.map
11
11
  //# sourceMappingURL=index.cjs.map