dishui 0.0.65 → 0.0.66

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 (500) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +10 -11
  2. package/dist/chart.js +12 -46
  3. package/dist/code-editor.js +16 -43
  4. package/dist/components/Badge/index.js +10 -15
  5. package/dist/components/Badge/index.js.map +1 -1
  6. package/dist/components/Button/index.js +62 -89
  7. package/dist/components/Button/index.js.map +1 -1
  8. package/dist/components/Card/index.d.ts +76 -0
  9. package/dist/components/Card/index.js +178 -69
  10. package/dist/components/Card/index.js.map +1 -1
  11. package/dist/components/Chart/Chart.js +25 -25
  12. package/dist/components/Chart/Chart.js.map +1 -1
  13. package/dist/components/Checkbox/index.js +57 -65
  14. package/dist/components/Checkbox/index.js.map +1 -1
  15. package/dist/components/ChoicePicker/index.d.ts +44 -0
  16. package/dist/components/ChoicePicker/index.js +81 -0
  17. package/dist/components/ChoicePicker/index.js.map +1 -0
  18. package/dist/components/Column/index.d.ts +28 -0
  19. package/dist/components/Column/index.js +30 -0
  20. package/dist/components/Column/index.js.map +1 -0
  21. package/dist/components/DateTimeInput/index.d.ts +44 -0
  22. package/dist/components/DateTimeInput/index.js +48 -0
  23. package/dist/components/DateTimeInput/index.js.map +1 -0
  24. package/dist/components/Demo/index.js +107 -107
  25. package/dist/components/Demo/index.js.map +1 -1
  26. package/dist/components/Divider/index.d.ts +20 -0
  27. package/dist/components/Divider/index.js +30 -0
  28. package/dist/components/Divider/index.js.map +1 -0
  29. package/dist/components/EmptyState/index.js +24 -24
  30. package/dist/components/EmptyState/index.js.map +1 -1
  31. package/dist/components/FileUploader/DropZone.js +134 -136
  32. package/dist/components/FileUploader/DropZone.js.map +1 -1
  33. package/dist/components/FileUploader/FileItem.js +159 -163
  34. package/dist/components/FileUploader/FileItem.js.map +1 -1
  35. package/dist/components/FileUploader/FileUploader.js +126 -127
  36. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  37. package/dist/components/FileUploader/UploadQueue.js +62 -62
  38. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  39. package/dist/components/FloatWindow/index.d.ts +28 -0
  40. package/dist/components/GridLayout/index.d.ts +42 -0
  41. package/dist/components/Icon/index.d.ts +24 -0
  42. package/dist/components/Icon/index.js +26 -0
  43. package/dist/components/Icon/index.js.map +1 -0
  44. package/dist/components/Image/index.d.ts +33 -0
  45. package/dist/components/Image/index.js +44 -0
  46. package/dist/components/Image/index.js.map +1 -0
  47. package/dist/components/Input/index.js +196 -197
  48. package/dist/components/Input/index.js.map +1 -1
  49. package/dist/components/Label/index.js +62 -74
  50. package/dist/components/Label/index.js.map +1 -1
  51. package/dist/components/Layout/index.js +134 -139
  52. package/dist/components/Layout/index.js.map +1 -1
  53. package/dist/components/List/index.js +45 -58
  54. package/dist/components/List/index.js.map +1 -1
  55. package/dist/components/Markdown/Markdown.js +106 -107
  56. package/dist/components/Markdown/Markdown.js.map +1 -1
  57. package/dist/components/Markdown/codeThemes.js +24 -33
  58. package/dist/components/Markdown/codeThemes.js.map +1 -1
  59. package/dist/components/Markdown/markdownComponents.js +203 -208
  60. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  61. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  62. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  63. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  64. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  65. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  66. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  67. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  68. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  69. package/dist/components/Modal/index.js +82 -82
  70. package/dist/components/Modal/index.js.map +1 -1
  71. package/dist/components/MultipleChoice/index.d.ts +44 -0
  72. package/dist/components/MultipleChoice/index.js +52 -0
  73. package/dist/components/MultipleChoice/index.js.map +1 -0
  74. package/dist/components/Notification/index.d.ts +17 -0
  75. package/dist/components/Page/index.js +40 -71
  76. package/dist/components/Page/index.js.map +1 -1
  77. package/dist/components/PageHeader/index.js +28 -28
  78. package/dist/components/PageHeader/index.js.map +1 -1
  79. package/dist/components/ProtectedRoute/index.js +8 -9
  80. package/dist/components/ProtectedRoute/index.js.map +1 -1
  81. package/dist/components/Row/index.d.ts +28 -0
  82. package/dist/components/Row/index.js +30 -0
  83. package/dist/components/Row/index.js.map +1 -0
  84. package/dist/components/Select/index.js +251 -254
  85. package/dist/components/Select/index.js.map +1 -1
  86. package/dist/components/SidebarToggleButton/index.js +56 -59
  87. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  88. package/dist/components/Slider/index.d.ts +39 -0
  89. package/dist/components/Slider/index.js +52 -0
  90. package/dist/components/Slider/index.js.map +1 -0
  91. package/dist/components/StatCard/index.d.ts +29 -1
  92. package/dist/components/StatCard/index.js +189 -86
  93. package/dist/components/StatCard/index.js.map +1 -1
  94. package/dist/components/Switch/index.d.ts +34 -0
  95. package/dist/components/Switch/index.js +55 -0
  96. package/dist/components/Switch/index.js.map +1 -0
  97. package/dist/components/Tab/index.d.ts +40 -0
  98. package/dist/components/Table/index.js +109 -121
  99. package/dist/components/Table/index.js.map +1 -1
  100. package/dist/components/Tabs/index.js +28 -38
  101. package/dist/components/Tabs/index.js.map +1 -1
  102. package/dist/components/Text/index.d.ts +43 -0
  103. package/dist/components/Text/index.js +55 -0
  104. package/dist/components/Text/index.js.map +1 -0
  105. package/dist/components/Tooltip/index.d.ts +23 -0
  106. package/dist/components/Tooltip/index.js +34 -0
  107. package/dist/components/Tooltip/index.js.map +1 -0
  108. package/dist/components/Tree/Tree.js +205 -205
  109. package/dist/components/Tree/Tree.js.map +1 -1
  110. package/dist/components/pro/ArticleContextMenu/index.js +86 -87
  111. package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
  112. package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
  113. package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
  114. package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
  115. package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
  116. package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
  117. package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
  118. package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
  119. package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
  120. package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
  121. package/dist/components/pro/Calendar/index.d.ts +7 -0
  122. package/dist/components/pro/Calendar/types.d.ts +151 -0
  123. package/dist/components/pro/Calendar/utils.d.ts +94 -0
  124. package/dist/components/pro/Chat/Chat.d.ts +6 -0
  125. package/dist/components/pro/Chat/index.d.ts +2 -0
  126. package/dist/components/pro/Chat/types.d.ts +84 -0
  127. package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -327
  128. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  129. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
  130. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  131. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
  132. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
  134. package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
  135. package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
  136. package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
  137. package/dist/components/pro/CodeEditor/langs/index.js +7 -15
  138. package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
  139. package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
  140. package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
  141. package/dist/components/pro/CodeEditor/langs/python.js +4 -40
  142. package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
  143. package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
  144. package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
  145. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
  146. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
  147. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
  148. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
  149. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
  150. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
  151. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
  152. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
  153. package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
  154. package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
  155. package/dist/components/pro/CodeEditor/themes.js +513 -483
  156. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  157. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  158. package/dist/components/pro/CodeEditor/utils.js +171 -175
  159. package/dist/components/pro/CodeEditor/utils.js.map +1 -1
  160. package/dist/components/pro/DataTable/DataTable.js +305 -306
  161. package/dist/components/pro/DataTable/DataTable.js.map +1 -1
  162. package/dist/components/pro/DataTable/Filters.js +299 -314
  163. package/dist/components/pro/DataTable/Filters.js.map +1 -1
  164. package/dist/components/pro/DataTable/PivotPanel.js +203 -204
  165. package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
  166. package/dist/components/pro/DataTable/PivotView.js +142 -144
  167. package/dist/components/pro/DataTable/PivotView.js.map +1 -1
  168. package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
  169. package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
  170. package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
  171. package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
  172. package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
  173. package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
  174. package/dist/components/pro/DataTable/components/TableBody.js +93 -94
  175. package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
  176. package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
  177. package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
  178. package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
  179. package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
  180. package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
  181. package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
  182. package/dist/components/pro/DataTable/extension.js +5 -5
  183. package/dist/components/pro/DataTable/extension.js.map +1 -1
  184. package/dist/components/pro/DataTable/pivotEngine.js +84 -92
  185. package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
  186. package/dist/components/pro/DataTable/pivotExtension.js +93 -93
  187. package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
  188. package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
  189. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  190. package/dist/components/pro/DataTable/tanstack-table.js +45 -62
  191. package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
  192. package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
  193. package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
  194. package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
  195. package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
  196. package/dist/components/pro/DataTable/utils.js +156 -168
  197. package/dist/components/pro/DataTable/utils.js.map +1 -1
  198. package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
  199. package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
  200. package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
  201. package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
  202. package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
  203. package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
  204. package/dist/components/pro/FileExplorer/FileIcon.js +189 -189
  205. package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
  206. package/dist/components/pro/FileExplorer/GridView.js +100 -100
  207. package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
  208. package/dist/components/pro/FileExplorer/ListView.js +209 -209
  209. package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
  210. package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
  211. package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
  212. package/dist/components/pro/Flow/Flow.js +920 -948
  213. package/dist/components/pro/Flow/Flow.js.map +1 -1
  214. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
  215. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  216. package/dist/components/pro/Flow/archify/build.js +85 -94
  217. package/dist/components/pro/Flow/archify/build.js.map +1 -1
  218. package/dist/components/pro/Flow/archify/convert.js +512 -519
  219. package/dist/components/pro/Flow/archify/convert.js.map +1 -1
  220. package/dist/components/pro/Flow/archify/palette.js +87 -104
  221. package/dist/components/pro/Flow/archify/palette.js.map +1 -1
  222. package/dist/components/pro/Flow/archify/presets.js +34 -37
  223. package/dist/components/pro/Flow/archify/presets.js.map +1 -1
  224. package/dist/components/pro/Flow/archify/spec.js +7 -7
  225. package/dist/components/pro/Flow/archify/spec.js.map +1 -1
  226. package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
  227. package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
  228. package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
  229. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  230. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
  231. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  232. package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
  233. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  234. package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
  235. package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
  236. package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
  237. package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
  238. package/dist/components/pro/Flow/constants.js +266 -278
  239. package/dist/components/pro/Flow/constants.js.map +1 -1
  240. package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
  241. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
  242. package/dist/components/pro/Flow/context/FlowContext.js +60 -61
  243. package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
  244. package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
  245. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  246. package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
  247. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  248. package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
  249. package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
  250. package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
  251. package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
  252. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
  253. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
  254. package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
  255. package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
  256. package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
  257. package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
  258. package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
  259. package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
  260. package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
  261. package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
  262. package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
  263. package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
  264. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
  265. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  266. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
  267. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
  268. package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -180
  269. package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
  270. package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
  271. package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
  272. package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
  273. package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
  274. package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
  275. package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
  276. package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
  277. package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
  278. package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
  279. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  280. package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
  281. package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
  282. package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
  283. package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
  284. package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
  285. package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
  286. package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
  287. package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
  288. package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
  289. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  290. package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
  291. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  292. package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
  293. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  294. package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
  295. package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
  296. package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -242
  297. package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
  298. package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
  299. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  300. package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
  301. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  302. package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
  303. package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
  304. package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
  305. package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
  306. package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
  307. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  308. package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
  309. package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
  310. package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
  311. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  312. package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
  313. package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
  314. package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
  315. package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
  316. package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
  317. package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
  318. package/dist/components/pro/Flow/nodes/shapes.js +556 -589
  319. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  320. package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
  321. package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
  322. package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
  323. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  324. package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
  325. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
  326. package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
  327. package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
  328. package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
  329. package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
  330. package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
  331. package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
  332. package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
  333. package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
  334. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
  335. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  336. package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
  337. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  338. package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
  339. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  340. package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -248
  341. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  342. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
  343. package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
  344. package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
  345. package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/ShapePalette.js +557 -572
  347. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  348. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
  349. package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
  350. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  351. package/dist/components/pro/Flow/types.js +26 -26
  352. package/dist/components/pro/Flow/types.js.map +1 -1
  353. package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
  354. package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
  355. package/dist/components/pro/Flow/utils/gradient.js +55 -55
  356. package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
  357. package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
  358. package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
  359. package/dist/components/pro/Flow/utils/themeColor.js +185 -195
  360. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
  361. package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
  362. package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
  363. package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
  364. package/dist/components/pro/Gantt/index.d.ts +6 -0
  365. package/dist/components/pro/Gantt/types.d.ts +478 -0
  366. package/dist/components/pro/Gantt/utils.d.ts +124 -0
  367. package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
  368. package/dist/components/pro/Resizable/index.d.ts +2 -0
  369. package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
  370. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  371. package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
  372. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  373. package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
  374. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  375. package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
  376. package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
  377. package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
  378. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  379. package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
  380. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  381. package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
  382. package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
  383. package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
  384. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  385. package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
  386. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  387. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
  388. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  389. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
  390. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  391. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
  392. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  393. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
  394. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
  395. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
  396. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  397. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
  398. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  399. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
  400. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  401. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
  402. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  403. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
  404. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
  405. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
  406. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  407. package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
  408. package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
  409. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
  410. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  411. package/dist/components/pro/RichTextEditor/types.js +75 -75
  412. package/dist/components/pro/RichTextEditor/types.js.map +1 -1
  413. package/dist/contexts/AppContext.d.ts +1 -1
  414. package/dist/contexts/AppContext.js +216 -221
  415. package/dist/contexts/AppContext.js.map +1 -1
  416. package/dist/data-table.js +15 -41
  417. package/dist/data-table.js.map +1 -1
  418. package/dist/dishui.css +1 -1
  419. package/dist/flow.js +27 -83
  420. package/dist/hooks/useClickOutside.js +18 -18
  421. package/dist/hooks/useClickOutside.js.map +1 -1
  422. package/dist/hooks/useContainerElement.js +9 -9
  423. package/dist/hooks/useContainerElement.js.map +1 -1
  424. package/dist/hooks/useControllableState.js +33 -35
  425. package/dist/hooks/useControllableState.js.map +1 -1
  426. package/dist/hooks/useCopyToClipboard.js +16 -16
  427. package/dist/hooks/useCopyToClipboard.js.map +1 -1
  428. package/dist/hooks/useDebounce.js +14 -14
  429. package/dist/hooks/useDebounce.js.map +1 -1
  430. package/dist/hooks/useDraggable.js +50 -50
  431. package/dist/hooks/useDraggable.js.map +1 -1
  432. package/dist/hooks/useTableColumns.js +39 -41
  433. package/dist/hooks/useTableColumns.js.map +1 -1
  434. package/dist/hooks/useTableData.js +67 -68
  435. package/dist/hooks/useTableData.js.map +1 -1
  436. package/dist/index-nostyled.d.ts +8 -0
  437. package/dist/index.d.ts +27 -1
  438. package/dist/index.js +105 -241
  439. package/dist/layouts/MainLayout.js +56 -56
  440. package/dist/layouts/MainLayout.js.map +1 -1
  441. package/dist/layouts/Navbar.js +214 -214
  442. package/dist/layouts/Navbar.js.map +1 -1
  443. package/dist/layouts/Sidebar.js +184 -186
  444. package/dist/layouts/Sidebar.js.map +1 -1
  445. package/dist/layouts/headbar/Headbar.js +25 -25
  446. package/dist/layouts/headbar/Headbar.js.map +1 -1
  447. package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
  448. package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
  449. package/dist/layouts/headbar/HeadbarSearch.js +120 -120
  450. package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
  451. package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
  452. package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
  453. package/dist/layouts/headbar/HeadbarTitle.js +26 -26
  454. package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
  455. package/dist/lite.js +9 -24
  456. package/dist/markdown.js +4 -9
  457. package/dist/pages/components/Calendar/index.d.ts +3 -0
  458. package/dist/pages/components/Calendar/index.en.d.ts +3 -0
  459. package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
  460. package/dist/pages/components/Chat/index.d.ts +3 -0
  461. package/dist/pages/components/Chat/index.en.d.ts +3 -0
  462. package/dist/pages/components/Chat/index.zh.d.ts +3 -0
  463. package/dist/pages/components/FloatWindow/index.d.ts +3 -0
  464. package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
  465. package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
  466. package/dist/pages/components/Gantt/index.d.ts +3 -0
  467. package/dist/pages/components/Gantt/index.en.d.ts +3 -0
  468. package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
  469. package/dist/pages/components/GridLayout/index.d.ts +3 -0
  470. package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
  471. package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
  472. package/dist/pages/components/Notification/index.d.ts +3 -0
  473. package/dist/pages/components/Notification/index.en.d.ts +3 -0
  474. package/dist/pages/components/Notification/index.zh.d.ts +3 -0
  475. package/dist/pages/components/Resizable/index.d.ts +3 -0
  476. package/dist/pages/components/Resizable/index.en.d.ts +3 -0
  477. package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
  478. package/dist/pages/components/Tab/index.d.ts +3 -0
  479. package/dist/pages/components/Tab/index.en.d.ts +3 -0
  480. package/dist/pages/components/Tab/index.zh.d.ts +3 -0
  481. package/dist/styles/themeStyles.js +87 -86
  482. package/dist/styles/themeStyles.js.map +1 -1
  483. package/dist/utils/cn.d.ts +13 -0
  484. package/dist/utils/cn.js +16 -0
  485. package/dist/utils/cn.js.map +1 -0
  486. package/dist/utils/i18n.js +690 -602
  487. package/dist/utils/i18n.js.map +1 -1
  488. package/dist/utils/menu.js +94 -94
  489. package/dist/utils/menu.js.map +1 -1
  490. package/dist/utils/rehype-code-meta.js +14 -14
  491. package/dist/utils/rehype-code-meta.js.map +1 -1
  492. package/dist/utils/remark-code-meta.js +9 -9
  493. package/dist/utils/remark-code-meta.js.map +1 -1
  494. package/dist/utils/routerBuilder.js +59 -60
  495. package/dist/utils/routerBuilder.js.map +1 -1
  496. package/dist/utils/selection.js +28 -29
  497. package/dist/utils/selection.js.map +1 -1
  498. package/dist/utils/themes.js +275 -255
  499. package/dist/utils/themes.js.map +1 -1
  500. package/package.json +19 -6
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ export type ImageFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none';
3
+ export type ImageRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';
4
+ export type ImageProps = {
5
+ /** Image source URL. */
6
+ src: string;
7
+ /** Alternative text (accessibility). */
8
+ alt?: string;
9
+ /** Object-fit mode. */
10
+ fit?: ImageFit;
11
+ /** Width; number is treated as px. */
12
+ width?: number | string;
13
+ /** Height; number is treated as px. */
14
+ height?: number | string;
15
+ /** Corner radius preset. */
16
+ radius?: ImageRadius;
17
+ /** Shown when the image fails to load (node or replacement URL). */
18
+ fallback?: React.ReactNode;
19
+ /** Native lazy loading. */
20
+ lazy?: boolean;
21
+ /** Extra class names on the img element. */
22
+ className?: string;
23
+ /** Inline styles on the img element. */
24
+ style?: React.CSSProperties;
25
+ /** Click handler. */
26
+ onClick?: (e: React.MouseEvent<HTMLImageElement>) => void;
27
+ };
28
+ /**
29
+ * Image —— A2UI 展示组件:图片。
30
+ * 支持自适应填充模式、圆角、懒加载与加载失败时的 fallback。
31
+ */
32
+ declare const Image: React.FC<ImageProps>;
33
+ export default Image;
@@ -0,0 +1,44 @@
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import { useState as t } from "react";
3
+ import { Fragment as n, jsx as r } from "react/jsx-runtime";
4
+ //#region src/components/Image/index.tsx
5
+ var i = {
6
+ cover: "object-cover",
7
+ contain: "object-contain",
8
+ fill: "object-fill",
9
+ "scale-down": "object-scale-down",
10
+ none: "object-none"
11
+ }, a = {
12
+ none: "",
13
+ sm: "rounded-sm",
14
+ md: "rounded-md",
15
+ lg: "rounded-lg",
16
+ full: "rounded-full"
17
+ }, o = (e) => typeof e == "number" ? `${e}px` : e, s = ({ src: s, alt: c = "", fit: l = "cover", width: u, height: d, radius: f = "md", fallback: p, lazy: m = !0, className: h = "", style: g, onClick: _ }) => {
18
+ let [v, y] = t(!1), b = e("max-w-full", i[l], a[f], h);
19
+ return v ? p === void 0 ? /* @__PURE__ */ r("span", {
20
+ className: e("inline-flex items-center justify-center bg-base-200 text-base-content/40 text-xs select-none", a[f], h),
21
+ style: {
22
+ width: o(u) ?? "100%",
23
+ height: o(d) ?? "96px",
24
+ ...g
25
+ },
26
+ children: "Image"
27
+ }) : /* @__PURE__ */ r(n, { children: p }) : /* @__PURE__ */ r("img", {
28
+ src: s,
29
+ alt: c,
30
+ loading: m ? "lazy" : "eager",
31
+ onError: () => y(!0),
32
+ className: b,
33
+ style: {
34
+ width: o(u),
35
+ height: o(d),
36
+ ...g
37
+ },
38
+ onClick: _
39
+ });
40
+ };
41
+ //#endregion
42
+ export { s as default };
43
+
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Image/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type ImageFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none';\nexport type ImageRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n\nexport type ImageProps = {\n /** Image source URL. */\n src: string;\n /** Alternative text (accessibility). */\n alt?: string;\n /** Object-fit mode. */\n fit?: ImageFit;\n /** Width; number is treated as px. */\n width?: number | string;\n /** Height; number is treated as px. */\n height?: number | string;\n /** Corner radius preset. */\n radius?: ImageRadius;\n /** Shown when the image fails to load (node or replacement URL). */\n fallback?: React.ReactNode;\n /** Native lazy loading. */\n lazy?: boolean;\n /** Extra class names on the img element. */\n className?: string;\n /** Inline styles on the img element. */\n style?: React.CSSProperties;\n /** Click handler. */\n onClick?: (e: React.MouseEvent<HTMLImageElement>) => void;\n};\n\nconst FIT_CLASS: Record<ImageFit, string> = {\n cover: 'object-cover',\n contain: 'object-contain',\n fill: 'object-fill',\n 'scale-down': 'object-scale-down',\n none: 'object-none',\n};\n\nconst RADIUS_CLASS: Record<ImageRadius, string> = {\n none: '',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n};\n\nconst size = (v: number | string | undefined): string | undefined =>\n typeof v === 'number' ? `${v}px` : v;\n\n/**\n * Image —— A2UI 展示组件:图片。\n * 支持自适应填充模式、圆角、懒加载与加载失败时的 fallback。\n */\nconst Image: React.FC<ImageProps> = ({\n src,\n alt = '',\n fit = 'cover',\n width,\n height,\n radius = 'md',\n fallback,\n lazy = true,\n className = '',\n style,\n onClick,\n}) => {\n const [failed, setFailed] = useState(false);\n\n const classes = cn('max-w-full', FIT_CLASS[fit], RADIUS_CLASS[radius], className);\n\n if (failed) {\n if (fallback !== undefined) {\n return <>{fallback}</>;\n }\n return (\n <span\n className={cn(\n 'inline-flex items-center justify-center bg-base-200 text-base-content/40 text-xs select-none',\n RADIUS_CLASS[radius],\n className,\n )}\n style={{ width: size(width) ?? '100%', height: size(height) ?? '96px', ...style }}\n >\n Image\n </span>\n );\n }\n\n return (\n <img\n src={src}\n alt={alt}\n loading={lazy ? 'lazy' : 'eager'}\n onError={() => setFailed(true)}\n className={classes}\n style={{ width: size(width), height: size(height), ...style }}\n onClick={onClick}\n />\n );\n};\n\nexport default Image;\n"],"mappings":";;;;AA+BA,IAAM,IAAsC;CAC1C,OAAO;CACP,SAAS;CACT,MAAM;CACN,cAAc;CACd,MAAM;AACR,GAEM,IAA4C;CAChD,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR,GAEM,KAAQ,MACZ,OAAO,KAAM,WAAW,GAAG,EAAE,MAAM,GAM/B,KAA+B,EACnC,QACA,SAAM,IACN,SAAM,SACN,UACA,WACA,YAAS,MACT,aACA,UAAO,IACP,eAAY,IACZ,UACA,iBACI;CACJ,IAAM,CAAC,GAAQ,KAAa,EAAS,EAAK,GAEpC,IAAU,EAAG,cAAc,EAAU,IAAM,EAAa,IAAS,CAAS;CAoBhF,OAlBI,IACE,MAAa,KAAA,IAIf,kBAAC,QAAD;EACE,WAAW,EACT,gGACA,EAAa,IACb,CACF;EACA,OAAO;GAAE,OAAO,EAAK,CAAK,KAAK;GAAQ,QAAQ,EAAK,CAAM,KAAK;GAAQ,GAAG;EAAM;EACjF,UAAA;CAEK,CAAA,IAZC,kBAAA,GAAA,EAAA,UAAG,EAAW,CAAA,IAiBvB,kBAAC,OAAD;EACO;EACA;EACL,SAAS,IAAO,SAAS;EACzB,eAAe,EAAU,EAAI;EAC7B,WAAW;EACX,OAAO;GAAE,OAAO,EAAK,CAAK;GAAG,QAAQ,EAAK,CAAM;GAAG,GAAG;EAAM;EACnD;CACV,CAAA;AAEL"}
@@ -1,200 +1,199 @@
1
- import { useRef as Y, useState as f } from "react";
2
- import { jsx as s, jsxs as t } from "react/jsx-runtime";
3
- var S = ({ placeholder: x, value: d, onChange: A, type: n = "text", variant: B, size: L = "sm", disabled: N = !1, required: $ = !1, label: h, labelPosition: J = "inline", leftSection: p, rightSection: u, pattern: v, className: M = "", validator: e = !1, validatorHint: r, validationRules: T = [] }) => {
4
- const [g, K] = f(!1), [W, P] = f(""), [a, O] = f(null), [o, j] = f(!1), [F, Q] = f([]), c = Y(null), b = n === "password" && g ? "text" : n, C = (i) => {
5
- const l = i.target.value;
6
- if (n === "password" && l.length > (d || "").length) {
7
- const m = l.slice((d || "").length);
8
- P(m), setTimeout(() => {
9
- P("");
10
- }, 1e3);
11
- }
12
- e && c.current && U(l), A && A(i);
13
- }, U = (i) => {
14
- if (!c.current) return;
15
- const l = c.current.checkValidity(), m = [];
16
- T.length > 0 && T.forEach((G) => {
17
- G.pattern.test(i) || m.push(G.message);
18
- }), Q(m), O(l && m.length === 0);
19
- }, D = () => {
20
- K(!g);
21
- }, y = () => {
22
- e && !a && j(!0);
23
- }, k = () => {
24
- j(!1);
25
- };
26
- let w = "";
27
- e && a !== null && (w = a ? "input-success" : "input-error");
28
- const V = "input", I = B && !w ? `input-${B}` : "", z = L ? `input-${L}` : "", E = e ? "validator" : "", X = n === "password" && /* @__PURE__ */ s("span", {
29
- className: "cursor-pointer opacity-70 hover:opacity-100",
30
- onClick: D,
31
- children: g ? /* @__PURE__ */ t("svg", {
32
- xmlns: "http://www.w3.org/2000/svg",
33
- className: "h-5 w-5",
34
- viewBox: "0 0 24 24",
35
- fill: "none",
36
- stroke: "currentColor",
37
- strokeWidth: "2",
38
- children: [
39
- /* @__PURE__ */ s("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94" }),
40
- /* @__PURE__ */ s("path", { d: "M14.12 14.12a3 3 0 1 1-4.24-4.24" }),
41
- /* @__PURE__ */ s("path", { d: "M1 1l22 22" }),
42
- /* @__PURE__ */ s("path", { d: "M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19" })
43
- ]
44
- }) : /* @__PURE__ */ t("svg", {
45
- xmlns: "http://www.w3.org/2000/svg",
46
- className: "h-5 w-5",
47
- viewBox: "0 0 24 24",
48
- fill: "none",
49
- stroke: "currentColor",
50
- strokeWidth: "2",
51
- children: [/* @__PURE__ */ s("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), /* @__PURE__ */ s("circle", {
52
- cx: "12",
53
- cy: "12",
54
- r: "3"
55
- })]
56
- })
57
- }), R = /* @__PURE__ */ s("div", {
58
- className: "validation-tooltip",
59
- children: F.length > 0 ? /* @__PURE__ */ s("ul", {
60
- className: "text-xs list-disc pl-4 py-1",
61
- children: F.map((i, l) => /* @__PURE__ */ s("li", { children: i }, l))
62
- }) : r ? /* @__PURE__ */ s("p", {
63
- className: "text-xs py-1",
64
- children: r
65
- }) : null
66
- });
67
- return h || p || u || n === "password" ? h && J === "top" ? /* @__PURE__ */ t("div", {
68
- className: `relative w-full ${M}`,
69
- onMouseEnter: y,
70
- onMouseLeave: k,
71
- children: [
72
- /* @__PURE__ */ s("span", {
73
- className: "text-sm font-medium mb-1 block",
74
- children: h
75
- }),
76
- /* @__PURE__ */ t("label", {
77
- className: `${V} ${I} ${z} ${E} ${w} w-full flex items-center gap-2`,
78
- children: [
79
- p && /* @__PURE__ */ s("span", { children: p }),
80
- /* @__PURE__ */ s("input", {
81
- ref: c,
82
- type: b,
83
- placeholder: x,
84
- value: d,
85
- onChange: C,
86
- disabled: N,
87
- required: $,
88
- className: "grow",
89
- pattern: v
90
- }),
91
- n === "password" ? /* @__PURE__ */ s("span", {
92
- className: "cursor-pointer opacity-70 hover:opacity-100",
93
- onClick: D,
94
- children: g ? /* @__PURE__ */ t("svg", {
95
- xmlns: "http://www.w3.org/2000/svg",
96
- className: "h-5 w-5",
97
- viewBox: "0 0 24 24",
98
- fill: "none",
99
- stroke: "currentColor",
100
- strokeWidth: "2",
101
- children: [
102
- /* @__PURE__ */ s("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94" }),
103
- /* @__PURE__ */ s("path", { d: "M14.12 14.12a3 3 0 1 1-4.24-4.24" }),
104
- /* @__PURE__ */ s("path", { d: "M1 1l22 22" }),
105
- /* @__PURE__ */ s("path", { d: "M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19" })
106
- ]
107
- }) : /* @__PURE__ */ t("svg", {
108
- xmlns: "http://www.w3.org/2000/svg",
109
- className: "h-5 w-5",
110
- viewBox: "0 0 24 24",
111
- fill: "none",
112
- stroke: "currentColor",
113
- strokeWidth: "2",
114
- children: [/* @__PURE__ */ s("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), /* @__PURE__ */ s("circle", {
115
- cx: "12",
116
- cy: "12",
117
- r: "3"
118
- })]
119
- })
120
- }) : u ? /* @__PURE__ */ s("span", { children: u }) : null
121
- ]
122
- }),
123
- e && r && !o && /* @__PURE__ */ s("p", {
124
- className: "validator-hint text-xs mt-1 opacity-70",
125
- children: r
126
- }),
127
- o && e && !a && /* @__PURE__ */ s("div", {
128
- className: "absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",
129
- children: R
130
- })
131
- ]
132
- }) : /* @__PURE__ */ t("div", {
133
- className: `relative w-full ${M}`,
134
- onMouseEnter: y,
135
- onMouseLeave: k,
136
- children: [
137
- /* @__PURE__ */ t("label", {
138
- className: `${V} ${I} ${z} ${E} ${w} w-full flex items-center gap-2`,
139
- children: [
140
- p && /* @__PURE__ */ s("span", { children: p }),
141
- h && /* @__PURE__ */ s("span", { children: h }),
142
- /* @__PURE__ */ s("input", {
143
- ref: c,
144
- type: b,
145
- placeholder: x,
146
- value: d,
147
- onChange: C,
148
- disabled: N,
149
- required: $,
150
- className: "grow",
151
- pattern: v
152
- }),
153
- n === "password" && W && /* @__PURE__ */ s("span", {
154
- className: "password-recent absolute right-10 font-mono",
155
- children: W
156
- }),
157
- n === "password" ? /* @__PURE__ */ s("span", { children: X }) : u ? /* @__PURE__ */ s("span", { children: u }) : null
158
- ]
159
- }),
160
- e && r && !o && /* @__PURE__ */ s("p", {
161
- className: "validator-hint text-xs mt-1 opacity-70",
162
- children: r
163
- }),
164
- o && e && !a && /* @__PURE__ */ s("div", {
165
- className: "absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",
166
- children: R
167
- })
168
- ]
169
- }) : /* @__PURE__ */ t("div", {
170
- className: `relative w-full ${M}`,
171
- onMouseEnter: y,
172
- onMouseLeave: k,
173
- children: [
174
- /* @__PURE__ */ s("input", {
175
- ref: c,
176
- type: b,
177
- placeholder: x,
178
- value: d,
179
- onChange: C,
180
- disabled: N,
181
- required: $,
182
- className: `${V} ${I} ${z} ${E} ${w} w-full`,
183
- pattern: v
184
- }),
185
- e && r && !o && /* @__PURE__ */ s("p", {
186
- className: "validator-hint text-xs mt-1 opacity-70",
187
- children: r
188
- }),
189
- o && e && !a && /* @__PURE__ */ s("div", {
190
- className: "absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",
191
- children: R
192
- })
193
- ]
194
- });
195
- };
196
- export {
197
- S as default
1
+ import { useRef as e, useState as t } from "react";
2
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ //#region src/components/Input/index.tsx
4
+ var i = ({ placeholder: i, value: a, onChange: o, type: s = "text", variant: c, size: l = "sm", disabled: u = !1, required: d = !1, label: f, labelPosition: p = "inline", leftSection: m, rightSection: h, pattern: g, className: _ = "", validator: v = !1, validatorHint: y, validationRules: b = [] }) => {
5
+ let [x, S] = t(!1), [C, w] = t(""), [T, E] = t(null), [D, O] = t(!1), [k, A] = t([]), j = e(null), M = s === "password" && x ? "text" : s, N = (e) => {
6
+ let t = e.target.value;
7
+ if (s === "password" && t.length > (a || "").length) {
8
+ let e = t.slice((a || "").length);
9
+ w(e), setTimeout(() => {
10
+ w("");
11
+ }, 1e3);
12
+ }
13
+ v && j.current && P(t), o && o(e);
14
+ }, P = (e) => {
15
+ if (!j.current) return;
16
+ let t = j.current.checkValidity(), n = [];
17
+ b.length > 0 && b.forEach((t) => {
18
+ t.pattern.test(e) || n.push(t.message);
19
+ }), A(n), E(t && n.length === 0);
20
+ }, F = () => {
21
+ S(!x);
22
+ }, I = () => {
23
+ v && !T && O(!0);
24
+ }, L = () => {
25
+ O(!1);
26
+ }, R = "";
27
+ v && T !== null && (R = T ? "input-success" : "input-error");
28
+ let z = "input", B = c && !R ? `input-${c}` : "", V = l ? `input-${l}` : "", H = v ? "validator" : "", U = s === "password" && /* @__PURE__ */ n("span", {
29
+ className: "cursor-pointer opacity-70 hover:opacity-100",
30
+ onClick: F,
31
+ children: x ? /* @__PURE__ */ r("svg", {
32
+ xmlns: "http://www.w3.org/2000/svg",
33
+ className: "h-5 w-5",
34
+ viewBox: "0 0 24 24",
35
+ fill: "none",
36
+ stroke: "currentColor",
37
+ strokeWidth: "2",
38
+ children: [
39
+ /* @__PURE__ */ n("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94" }),
40
+ /* @__PURE__ */ n("path", { d: "M14.12 14.12a3 3 0 1 1-4.24-4.24" }),
41
+ /* @__PURE__ */ n("path", { d: "M1 1l22 22" }),
42
+ /* @__PURE__ */ n("path", { d: "M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19" })
43
+ ]
44
+ }) : /* @__PURE__ */ r("svg", {
45
+ xmlns: "http://www.w3.org/2000/svg",
46
+ className: "h-5 w-5",
47
+ viewBox: "0 0 24 24",
48
+ fill: "none",
49
+ stroke: "currentColor",
50
+ strokeWidth: "2",
51
+ children: [/* @__PURE__ */ n("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), /* @__PURE__ */ n("circle", {
52
+ cx: "12",
53
+ cy: "12",
54
+ r: "3"
55
+ })]
56
+ })
57
+ }), W = /* @__PURE__ */ n("div", {
58
+ className: "validation-tooltip",
59
+ children: k.length > 0 ? /* @__PURE__ */ n("ul", {
60
+ className: "text-xs list-disc pl-4 py-1",
61
+ children: k.map((e, t) => /* @__PURE__ */ n("li", { children: e }, t))
62
+ }) : y ? /* @__PURE__ */ n("p", {
63
+ className: "text-xs py-1",
64
+ children: y
65
+ }) : null
66
+ });
67
+ return f || m || h || s === "password" ? f && p === "top" ? /* @__PURE__ */ r("div", {
68
+ className: `relative w-full ${_}`,
69
+ onMouseEnter: I,
70
+ onMouseLeave: L,
71
+ children: [
72
+ /* @__PURE__ */ n("span", {
73
+ className: "text-sm font-medium mb-1 block",
74
+ children: f
75
+ }),
76
+ /* @__PURE__ */ r("label", {
77
+ className: `${z} ${B} ${V} ${H} ${R} w-full flex items-center gap-2`,
78
+ children: [
79
+ m && /* @__PURE__ */ n("span", { children: m }),
80
+ /* @__PURE__ */ n("input", {
81
+ ref: j,
82
+ type: M,
83
+ placeholder: i,
84
+ value: a,
85
+ onChange: N,
86
+ disabled: u,
87
+ required: d,
88
+ className: "grow",
89
+ pattern: g
90
+ }),
91
+ s === "password" ? /* @__PURE__ */ n("span", {
92
+ className: "cursor-pointer opacity-70 hover:opacity-100",
93
+ onClick: F,
94
+ children: x ? /* @__PURE__ */ r("svg", {
95
+ xmlns: "http://www.w3.org/2000/svg",
96
+ className: "h-5 w-5",
97
+ viewBox: "0 0 24 24",
98
+ fill: "none",
99
+ stroke: "currentColor",
100
+ strokeWidth: "2",
101
+ children: [
102
+ /* @__PURE__ */ n("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94" }),
103
+ /* @__PURE__ */ n("path", { d: "M14.12 14.12a3 3 0 1 1-4.24-4.24" }),
104
+ /* @__PURE__ */ n("path", { d: "M1 1l22 22" }),
105
+ /* @__PURE__ */ n("path", { d: "M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19" })
106
+ ]
107
+ }) : /* @__PURE__ */ r("svg", {
108
+ xmlns: "http://www.w3.org/2000/svg",
109
+ className: "h-5 w-5",
110
+ viewBox: "0 0 24 24",
111
+ fill: "none",
112
+ stroke: "currentColor",
113
+ strokeWidth: "2",
114
+ children: [/* @__PURE__ */ n("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), /* @__PURE__ */ n("circle", {
115
+ cx: "12",
116
+ cy: "12",
117
+ r: "3"
118
+ })]
119
+ })
120
+ }) : h ? /* @__PURE__ */ n("span", { children: h }) : null
121
+ ]
122
+ }),
123
+ v && y && !D && /* @__PURE__ */ n("p", {
124
+ className: "validator-hint text-xs mt-1 opacity-70",
125
+ children: y
126
+ }),
127
+ D && v && !T && /* @__PURE__ */ n("div", {
128
+ className: "absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",
129
+ children: W
130
+ })
131
+ ]
132
+ }) : /* @__PURE__ */ r("div", {
133
+ className: `relative w-full ${_}`,
134
+ onMouseEnter: I,
135
+ onMouseLeave: L,
136
+ children: [
137
+ /* @__PURE__ */ r("label", {
138
+ className: `${z} ${B} ${V} ${H} ${R} w-full flex items-center gap-2`,
139
+ children: [
140
+ m && /* @__PURE__ */ n("span", { children: m }),
141
+ f && /* @__PURE__ */ n("span", { children: f }),
142
+ /* @__PURE__ */ n("input", {
143
+ ref: j,
144
+ type: M,
145
+ placeholder: i,
146
+ value: a,
147
+ onChange: N,
148
+ disabled: u,
149
+ required: d,
150
+ className: "grow",
151
+ pattern: g
152
+ }),
153
+ s === "password" && C && /* @__PURE__ */ n("span", {
154
+ className: "password-recent absolute right-10 font-mono",
155
+ children: C
156
+ }),
157
+ s === "password" ? /* @__PURE__ */ n("span", { children: U }) : h ? /* @__PURE__ */ n("span", { children: h }) : null
158
+ ]
159
+ }),
160
+ v && y && !D && /* @__PURE__ */ n("p", {
161
+ className: "validator-hint text-xs mt-1 opacity-70",
162
+ children: y
163
+ }),
164
+ D && v && !T && /* @__PURE__ */ n("div", {
165
+ className: "absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",
166
+ children: W
167
+ })
168
+ ]
169
+ }) : /* @__PURE__ */ r("div", {
170
+ className: `relative w-full ${_}`,
171
+ onMouseEnter: I,
172
+ onMouseLeave: L,
173
+ children: [
174
+ /* @__PURE__ */ n("input", {
175
+ ref: j,
176
+ type: M,
177
+ placeholder: i,
178
+ value: a,
179
+ onChange: N,
180
+ disabled: u,
181
+ required: d,
182
+ className: `${z} ${B} ${V} ${H} ${R} w-full`,
183
+ pattern: g
184
+ }),
185
+ v && y && !D && /* @__PURE__ */ n("p", {
186
+ className: "validator-hint text-xs mt-1 opacity-70",
187
+ children: y
188
+ }),
189
+ D && v && !T && /* @__PURE__ */ n("div", {
190
+ className: "absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",
191
+ children: W
192
+ })
193
+ ]
194
+ });
198
195
  };
196
+ //#endregion
197
+ export { i as default };
199
198
 
200
199
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Input/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\n\nexport type InputProps = {\n placeholder?: string;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n type?: string;\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'ghost';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n disabled?: boolean;\n required?: boolean;\n label?: string;\n labelPosition?: 'inline' | 'top';\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n pattern?: string;\n className?: string;\n validator?: boolean;\n validatorHint?: string;\n validationRules?: {\n pattern: RegExp;\n message: string;\n }[];\n};\n\nconst Input = ({\n placeholder,\n value,\n onChange,\n type = 'text',\n variant,\n size = 'sm',\n disabled = false,\n required = false,\n label,\n labelPosition = 'inline',\n leftSection,\n rightSection,\n pattern,\n className = '',\n validator = false,\n validatorHint,\n validationRules = [],\n}: InputProps) => {\n // 密码显示/隐藏状态\n const [showPassword, setShowPassword] = useState(false);\n // 追踪最近输入的字符\n const [recentInput, setRecentInput] = useState('');\n // 表单验证状态\n const [isValid, setIsValid] = useState<boolean | null>(null);\n // 显示验证提示\n const [showValidationHint, setShowValidationHint] = useState(false);\n // 验证失败的规则消息\n const [failedRules, setFailedRules] = useState<string[]>([]);\n \n // 输入框引用,用于焦点和验证\n const inputRef = useRef<HTMLInputElement>(null);\n \n // 确定实际使用的输入类型\n const actualType = type === 'password' && showPassword ? 'text' : type;\n \n // 处理输入变化,包括密码字符延迟遮罩和验证\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n \n // 处理密码输入的特殊效果\n if (type === 'password' && newValue.length > (value || '').length) {\n // 获取新输入的字符\n const newChar = newValue.slice((value || '').length);\n setRecentInput(newChar);\n \n // 设置定时器延迟清除最近输入的字符\n setTimeout(() => {\n setRecentInput('');\n }, 1000); // 1秒后隐藏\n }\n \n // 验证输入\n if (validator && inputRef.current) {\n validateInput(newValue);\n }\n \n // 调用原始的onChange处理函数\n if (onChange) {\n onChange(e);\n }\n };\n \n // 验证输入值\n const validateInput = (inputValue: string) => {\n if (!inputRef.current) return;\n \n // 使用HTML5自带的验证\n const isNativeValid = inputRef.current.checkValidity();\n \n // 检查自定义验证规则\n const failedMessages: string[] = [];\n \n if (validationRules.length > 0) {\n validationRules.forEach(rule => {\n if (!rule.pattern.test(inputValue)) {\n failedMessages.push(rule.message);\n }\n });\n }\n \n setFailedRules(failedMessages);\n setIsValid(isNativeValid && failedMessages.length === 0);\n };\n \n // 切换密码显示/隐藏\n const togglePasswordVisibility = () => {\n setShowPassword(!showPassword);\n };\n \n // 鼠标悬停事件处理\n const handleMouseEnter = () => {\n if (validator && !isValid) {\n setShowValidationHint(true);\n }\n };\n \n const handleMouseLeave = () => {\n setShowValidationHint(false);\n };\n \n // 验证状态相关的类名\n let validationStateClass = '';\n if (validator && isValid !== null) {\n validationStateClass = isValid ? 'input-success' : 'input-error';\n }\n \n const baseClass = 'input';\n const variantClass = variant && !validationStateClass ? `input-${variant}` : '';\n const sizeClass = size ? `input-${size}` : '';\n const validatorClass = validator ? 'validator' : '';\n \n\n // 密码可见性切换按钮\n const passwordToggle = type === 'password' && (\n <span \n className=\"cursor-pointer opacity-70 hover:opacity-100\"\n onClick={togglePasswordVisibility}\n >\n {showPassword ? (\n // 眼睛关闭图标\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94\" />\n <path d=\"M14.12 14.12a3 3 0 1 1-4.24-4.24\" />\n <path d=\"M1 1l22 22\" />\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19\" />\n </svg>\n ) : (\n // 眼睛打开图标\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </span>\n );\n \n // 构建验证提示悬浮框\n const validationTooltip = (\n <div className=\"validation-tooltip\">\n {failedRules.length > 0 ? (\n <ul className=\"text-xs list-disc pl-4 py-1\">\n {failedRules.map((rule, index) => (\n <li key={index}>{rule}</li>\n ))}\n </ul>\n ) : validatorHint ? (\n <p className=\"text-xs py-1\">{validatorHint}</p>\n ) : null}\n </div>\n );\n\n // 如果有label,则使用label作为容器\n if (label || leftSection || rightSection || type === 'password') {\n // labelPosition === 'top': label above the input field\n if (label && labelPosition === 'top') {\n return (\n <div className={`relative w-full ${className}`} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <span className=\"text-sm font-medium mb-1 block\">{label}</span>\n <label className={`${baseClass} ${variantClass} ${sizeClass} ${validatorClass} ${validationStateClass} w-full flex items-center gap-2`}>\n {leftSection && <span>{leftSection}</span>}\n <input\n ref={inputRef}\n type={actualType}\n placeholder={placeholder}\n value={value}\n onChange={handleInputChange}\n disabled={disabled}\n required={required}\n className=\"grow\"\n pattern={pattern}\n />\n {type === 'password' ? (\n <span className=\"cursor-pointer opacity-70 hover:opacity-100\" onClick={togglePasswordVisibility}>\n {showPassword ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94\" />\n <path d=\"M14.12 14.12a3 3 0 1 1-4.24-4.24\" />\n <path d=\"M1 1l22 22\" />\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19\" />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </span>\n ) : rightSection ? (\n <span>{rightSection}</span>\n ) : null}\n </label>\n {validator && validatorHint && !showValidationHint && (\n <p className=\"validator-hint text-xs mt-1 opacity-70\">{validatorHint}</p>\n )}\n {showValidationHint && validator && !isValid && (\n <div className=\"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1\">\n {validationTooltip}\n </div>\n )}\n </div>\n );\n }\n\n // Default: inline label\n return (\n <div className={`relative w-full ${className}`} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <label className={`${baseClass} ${variantClass} ${sizeClass} ${validatorClass} ${validationStateClass} w-full flex items-center gap-2`}>\n {leftSection && <span>{leftSection}</span>}\n {label && <span>{label}</span>}\n <input\n ref={inputRef}\n type={actualType}\n placeholder={placeholder}\n value={value}\n onChange={handleInputChange}\n disabled={disabled}\n required={required}\n className=\"grow\"\n pattern={pattern}\n />\n {/* 显示最近输入的字符,仅针对密码字段 */}\n {type === 'password' && recentInput && (\n <span className=\"password-recent absolute right-10 font-mono\">\n {recentInput}\n </span>\n )}\n {/* 加入密码切换按钮或其他右侧元素 */}\n {type === 'password' ? (\n <span>{passwordToggle}</span>\n ) : rightSection ? (\n <span>{rightSection}</span>\n ) : null}\n </label>\n {validator && validatorHint && !showValidationHint && (\n <p className=\"validator-hint text-xs mt-1 opacity-70\">{validatorHint}</p>\n )}\n {showValidationHint && validator && !isValid && (\n <div className=\"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1\">\n {validationTooltip}\n </div>\n )}\n </div>\n );\n }\n\n // 如果没有label,则直接返回input\n return (\n <div className={`relative w-full ${className}`} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <input\n ref={inputRef}\n type={actualType}\n placeholder={placeholder}\n value={value}\n onChange={handleInputChange}\n disabled={disabled}\n required={required}\n className={`${baseClass} ${variantClass} ${sizeClass} ${validatorClass} ${validationStateClass} w-full`}\n pattern={pattern}\n />\n {validator && validatorHint && !showValidationHint && (\n <p className=\"validator-hint text-xs mt-1 opacity-70\">{validatorHint}</p>\n )}\n {showValidationHint && validator && !isValid && (\n <div className=\"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1\">\n {validationTooltip}\n </div>\n )}\n </div>\n );\n};\n\nexport default Input; "],"mappings":";;AAyBA,IAAM,IAAA,CAAS,EACb,aAAA,GACA,OAAA,GACA,UAAA,GACA,MAAA,IAAO,QACP,SAAA,GACA,MAAA,IAAO,MACP,UAAA,IAAW,IACX,UAAA,IAAW,IACX,OAAA,GACA,eAAA,IAAgB,UAChB,aAAA,GACA,cAAA,GACA,SAAA,GACA,WAAA,IAAY,IACZ,WAAA,IAAY,IACZ,eAAA,GACA,iBAAA,IAAkB,CAAC,EAAA,MACH;AAEhB,QAAM,CAAC,GAAc,CAAA,IAAmB,EAAS,EAAK,GAEhD,CAAC,GAAa,CAAA,IAAkB,EAAS,EAAE,GAE3C,CAAC,GAAS,CAAA,IAAc,EAAyB,IAAI,GAErD,CAAC,GAAoB,CAAA,IAAyB,EAAS,EAAK,GAE5D,CAAC,GAAa,CAAA,IAAkB,EAAmB,CAAC,CAAC,GAGrD,IAAW,EAAyB,IAAI,GAGxC,IAAa,MAAS,cAAc,IAAe,SAAS,GAG5D,IAAA,CAAqB,MAA2C;AACpE,UAAM,IAAW,EAAE,OAAO;AAG1B,QAAI,MAAS,cAAc,EAAS,UAAU,KAAS,IAAI,QAAQ;AAEjE,YAAM,IAAU,EAAS,OAAO,KAAS,IAAI,MAAM;AACnD,MAAA,EAAe,CAAO,GAGtB,WAAA,MAAiB;AACf,QAAA,EAAe,EAAE;AAAA,MACnB,GAAG,GAAI;AAAA,IACT;AAGA,IAAI,KAAa,EAAS,WACxB,EAAc,CAAQ,GAIpB,KACF,EAAS,CAAC;AAAA,EAEd,GAGM,IAAA,CAAiB,MAAuB;AAC5C,QAAI,CAAC,EAAS,QAAS;AAGvB,UAAM,IAAgB,EAAS,QAAQ,cAAc,GAG/C,IAA2B,CAAC;AAElC,IAAI,EAAgB,SAAS,KAC3B,EAAgB,QAAA,CAAQ,MAAQ;AAC9B,MAAK,EAAK,QAAQ,KAAK,CAAU,KAC/B,EAAe,KAAK,EAAK,OAAO;AAAA,IAEpC,CAAC,GAGH,EAAe,CAAc,GAC7B,EAAW,KAAiB,EAAe,WAAW,CAAC;AAAA,EACzD,GAGM,IAAA,MAAiC;AACrC,IAAA,EAAgB,CAAC,CAAY;AAAA,EAC/B,GAGM,IAAA,MAAyB;AAC7B,IAAI,KAAa,CAAC,KAChB,EAAsB,EAAI;AAAA,EAE9B,GAEM,IAAA,MAAyB;AAC7B,IAAA,EAAsB,EAAK;AAAA,EAC7B;AAGA,MAAI,IAAuB;AAC3B,EAAI,KAAa,MAAY,SAC3B,IAAuB,IAAU,kBAAkB;AAGrD,QAAM,IAAY,SACZ,IAAe,KAAW,CAAC,IAAuB,SAAS,CAAA,KAAY,IACvE,IAAY,IAAO,SAAS,CAAA,KAAS,IACrC,IAAiB,IAAY,cAAc,IAI3C,IAAiB,MAAS,cAC9B,gBAAA,EAAC,QAAD;AAAA,IACE,WAAU;AAAA,IACV,SAAS;AAAA,IAER,UAAA,IAEC,gBAAA,EAAC,OAAD;AAAA,MAAK,OAAM;AAAA,MAA6B,WAAU;AAAA,MAAU,SAAQ;AAAA,MAAY,MAAK;AAAA,MAAO,QAAO;AAAA,MAAe,aAAY;AAAA,MAA9H,UAAA;AAAA,QACE,gBAAA,EAAC,QAAD,EAAM,GAAE,kFAAmF,CAAA;AAAA,QAC3F,gBAAA,EAAC,QAAD,EAAM,GAAE,mCAAoC,CAAA;AAAA,QAC5C,gBAAA,EAAC,QAAD,EAAM,GAAE,aAAc,CAAA;AAAA,QACtB,gBAAA,EAAC,QAAD,EAAM,GAAE,yEAA0E,CAAA;AAAA,MAC/E;AAAA,IAGL,CAAA,IAAA,gBAAA,EAAC,OAAD;AAAA,MAAK,OAAM;AAAA,MAA6B,WAAU;AAAA,MAAU,SAAQ;AAAA,MAAY,MAAK;AAAA,MAAO,QAAO;AAAA,MAAe,aAAY;AAAA,MAA9H,UAAA,CACE,gBAAA,EAAC,QAAD,EAAM,GAAE,+CAAgD,CAAA,GACxD,gBAAA,EAAC,UAAD;AAAA,QAAQ,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,MAAK,CAAA,CAC5B;AAAA;EAEH,CAAA,GAIF,IACJ,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAU;AAAA,IACZ,UAAA,EAAY,SAAS,IACpB,gBAAA,EAAC,MAAD;AAAA,MAAI,WAAU;AAAA,MACX,UAAA,EAAY,IAAA,CAAK,GAAM,MACtB,gBAAA,EAAC,MAAD,EAAA,UAAiB,EAAS,GAAjB,CAAiB,CAC3B;AAAA,IACC,CAAA,IACF,IACF,gBAAA,EAAC,KAAD;AAAA,MAAG,WAAU;AAAA,MAAgB,UAAA;AAAA,IAAiB,CAAA,IAC5C;AAAA,EACD,CAAA;AAIP,SAAI,KAAS,KAAe,KAAgB,MAAS,aAE/C,KAAS,MAAkB,QAE3B,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,mBAAmB,CAAA;AAAA,IAAa,cAAc;AAAA,IAAkB,cAAc;AAAA,IAA9F,UAAA;AAAA,MACE,gBAAA,EAAC,QAAD;AAAA,QAAM,WAAU;AAAA,QAAkC,UAAA;AAAA,MAAY,CAAA;AAAA,MAC9D,gBAAA,EAAC,SAAD;AAAA,QAAO,WAAW,GAAG,CAAA,IAAa,CAAA,IAAgB,CAAA,IAAa,CAAA,IAAkB,CAAA;AAAA,QAAjF,UAAA;AAAA,UACG,KAAe,gBAAA,EAAC,QAAD,EAAA,UAAO,EAAkB,CAAA;AAAA,UACzC,gBAAA,EAAC,SAAD;AAAA,YACE,KAAK;AAAA,YACL,MAAM;AAAA,YACO,aAAA;AAAA,YACN,OAAA;AAAA,YACP,UAAU;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACV,WAAU;AAAA,YACD,SAAA;AAAA,UACV,CAAA;AAAA,UACA,MAAS,aACR,gBAAA,EAAC,QAAD;AAAA,YAAM,WAAU;AAAA,YAA8C,SAAS;AAAA,YACpE,UAAA,IACC,gBAAA,EAAC,OAAD;AAAA,cAAK,OAAM;AAAA,cAA6B,WAAU;AAAA,cAAU,SAAQ;AAAA,cAAY,MAAK;AAAA,cAAO,QAAO;AAAA,cAAe,aAAY;AAAA,cAA9H,UAAA;AAAA,gBACE,gBAAA,EAAC,QAAD,EAAM,GAAE,kFAAmF,CAAA;AAAA,gBAC3F,gBAAA,EAAC,QAAD,EAAM,GAAE,mCAAoC,CAAA;AAAA,gBAC5C,gBAAA,EAAC,QAAD,EAAM,GAAE,aAAc,CAAA;AAAA,gBACtB,gBAAA,EAAC,QAAD,EAAM,GAAE,yEAA0E,CAAA;AAAA,cAC/E;AAAA,YAEL,CAAA,IAAA,gBAAA,EAAC,OAAD;AAAA,cAAK,OAAM;AAAA,cAA6B,WAAU;AAAA,cAAU,SAAQ;AAAA,cAAY,MAAK;AAAA,cAAO,QAAO;AAAA,cAAe,aAAY;AAAA,cAA9H,UAAA,CACE,gBAAA,EAAC,QAAD,EAAM,GAAE,+CAAgD,CAAA,GACxD,gBAAA,EAAC,UAAD;AAAA,gBAAQ,IAAG;AAAA,gBAAK,IAAG;AAAA,gBAAK,GAAE;AAAA,cAAK,CAAA,CAC5B;AAAA;UAEH,CAAA,IACJ,IACF,gBAAA,EAAC,QAAD,EAAA,UAAO,EAAmB,CAAA,IACxB;AAAA,QACC;AAAA;MACN,KAAa,KAAiB,CAAC,KAC9B,gBAAA,EAAC,KAAD;AAAA,QAAG,WAAU;AAAA,QAA0C,UAAA;AAAA,MAAiB,CAAA;AAAA,MAEzE,KAAsB,KAAa,CAAC,KACnC,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,QACZ,UAAA;AAAA,MACE,CAAA;AAAA,IAEJ;AAAA,OAMP,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,mBAAmB,CAAA;AAAA,IAAa,cAAc;AAAA,IAAkB,cAAc;AAAA,IAA9F,UAAA;AAAA,MACE,gBAAA,EAAC,SAAD;AAAA,QAAO,WAAW,GAAG,CAAA,IAAa,CAAA,IAAgB,CAAA,IAAa,CAAA,IAAkB,CAAA;AAAA,QAAjF,UAAA;AAAA,UACG,KAAe,gBAAA,EAAC,QAAD,EAAA,UAAO,EAAkB,CAAA;AAAA,UACxC,KAAS,gBAAA,EAAC,QAAD,EAAA,UAAO,EAAY,CAAA;AAAA,UAC7B,gBAAA,EAAC,SAAD;AAAA,YACE,KAAK;AAAA,YACL,MAAM;AAAA,YACO,aAAA;AAAA,YACN,OAAA;AAAA,YACP,UAAU;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACV,WAAU;AAAA,YACD,SAAA;AAAA,UACV,CAAA;AAAA,UAEA,MAAS,cAAc,KACtB,gBAAA,EAAC,QAAD;AAAA,YAAM,WAAU;AAAA,YACb,UAAA;AAAA,UACG,CAAA;AAAA,UAGP,MAAS,aACR,gBAAA,EAAC,QAAD,EAAA,UAAO,EAAqB,CAAA,IAC1B,IACF,gBAAA,EAAC,QAAD,EAAA,UAAO,EAAmB,CAAA,IACxB;AAAA,QACC;AAAA;MACN,KAAa,KAAiB,CAAC,KAC9B,gBAAA,EAAC,KAAD;AAAA,QAAG,WAAU;AAAA,QAA0C,UAAA;AAAA,MAAiB,CAAA;AAAA,MAEzE,KAAsB,KAAa,CAAC,KACnC,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,QACZ,UAAA;AAAA,MACE,CAAA;AAAA,IAEJ;AAAA,OAMP,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,mBAAmB,CAAA;AAAA,IAAa,cAAc;AAAA,IAAkB,cAAc;AAAA,IAA9F,UAAA;AAAA,MACE,gBAAA,EAAC,SAAD;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACO,aAAA;AAAA,QACN,OAAA;AAAA,QACP,UAAU;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACV,WAAW,GAAG,CAAA,IAAa,CAAA,IAAgB,CAAA,IAAa,CAAA,IAAkB,CAAA;AAAA,QACjE,SAAA;AAAA,MACV,CAAA;AAAA,MACA,KAAa,KAAiB,CAAC,KAC9B,gBAAA,EAAC,KAAD;AAAA,QAAG,WAAU;AAAA,QAA0C,UAAA;AAAA,MAAiB,CAAA;AAAA,MAEzE,KAAsB,KAAa,CAAC,KACnC,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,QACZ,UAAA;AAAA,MACE,CAAA;AAAA,IAEJ;AAAA;AAET"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Input/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\n\nexport type InputProps = {\n placeholder?: string;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n type?: string;\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'ghost';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n disabled?: boolean;\n required?: boolean;\n label?: string;\n labelPosition?: 'inline' | 'top';\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n pattern?: string;\n className?: string;\n validator?: boolean;\n validatorHint?: string;\n validationRules?: {\n pattern: RegExp;\n message: string;\n }[];\n};\n\nconst Input = ({\n placeholder,\n value,\n onChange,\n type = 'text',\n variant,\n size = 'sm',\n disabled = false,\n required = false,\n label,\n labelPosition = 'inline',\n leftSection,\n rightSection,\n pattern,\n className = '',\n validator = false,\n validatorHint,\n validationRules = [],\n}: InputProps) => {\n // 密码显示/隐藏状态\n const [showPassword, setShowPassword] = useState(false);\n // 追踪最近输入的字符\n const [recentInput, setRecentInput] = useState('');\n // 表单验证状态\n const [isValid, setIsValid] = useState<boolean | null>(null);\n // 显示验证提示\n const [showValidationHint, setShowValidationHint] = useState(false);\n // 验证失败的规则消息\n const [failedRules, setFailedRules] = useState<string[]>([]);\n \n // 输入框引用,用于焦点和验证\n const inputRef = useRef<HTMLInputElement>(null);\n \n // 确定实际使用的输入类型\n const actualType = type === 'password' && showPassword ? 'text' : type;\n \n // 处理输入变化,包括密码字符延迟遮罩和验证\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n \n // 处理密码输入的特殊效果\n if (type === 'password' && newValue.length > (value || '').length) {\n // 获取新输入的字符\n const newChar = newValue.slice((value || '').length);\n setRecentInput(newChar);\n \n // 设置定时器延迟清除最近输入的字符\n setTimeout(() => {\n setRecentInput('');\n }, 1000); // 1秒后隐藏\n }\n \n // 验证输入\n if (validator && inputRef.current) {\n validateInput(newValue);\n }\n \n // 调用原始的onChange处理函数\n if (onChange) {\n onChange(e);\n }\n };\n \n // 验证输入值\n const validateInput = (inputValue: string) => {\n if (!inputRef.current) return;\n \n // 使用HTML5自带的验证\n const isNativeValid = inputRef.current.checkValidity();\n \n // 检查自定义验证规则\n const failedMessages: string[] = [];\n \n if (validationRules.length > 0) {\n validationRules.forEach(rule => {\n if (!rule.pattern.test(inputValue)) {\n failedMessages.push(rule.message);\n }\n });\n }\n \n setFailedRules(failedMessages);\n setIsValid(isNativeValid && failedMessages.length === 0);\n };\n \n // 切换密码显示/隐藏\n const togglePasswordVisibility = () => {\n setShowPassword(!showPassword);\n };\n \n // 鼠标悬停事件处理\n const handleMouseEnter = () => {\n if (validator && !isValid) {\n setShowValidationHint(true);\n }\n };\n \n const handleMouseLeave = () => {\n setShowValidationHint(false);\n };\n \n // 验证状态相关的类名\n let validationStateClass = '';\n if (validator && isValid !== null) {\n validationStateClass = isValid ? 'input-success' : 'input-error';\n }\n \n const baseClass = 'input';\n const variantClass = variant && !validationStateClass ? `input-${variant}` : '';\n const sizeClass = size ? `input-${size}` : '';\n const validatorClass = validator ? 'validator' : '';\n \n\n // 密码可见性切换按钮\n const passwordToggle = type === 'password' && (\n <span \n className=\"cursor-pointer opacity-70 hover:opacity-100\"\n onClick={togglePasswordVisibility}\n >\n {showPassword ? (\n // 眼睛关闭图标\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94\" />\n <path d=\"M14.12 14.12a3 3 0 1 1-4.24-4.24\" />\n <path d=\"M1 1l22 22\" />\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19\" />\n </svg>\n ) : (\n // 眼睛打开图标\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </span>\n );\n \n // 构建验证提示悬浮框\n const validationTooltip = (\n <div className=\"validation-tooltip\">\n {failedRules.length > 0 ? (\n <ul className=\"text-xs list-disc pl-4 py-1\">\n {failedRules.map((rule, index) => (\n <li key={index}>{rule}</li>\n ))}\n </ul>\n ) : validatorHint ? (\n <p className=\"text-xs py-1\">{validatorHint}</p>\n ) : null}\n </div>\n );\n\n // 如果有label,则使用label作为容器\n if (label || leftSection || rightSection || type === 'password') {\n // labelPosition === 'top': label above the input field\n if (label && labelPosition === 'top') {\n return (\n <div className={`relative w-full ${className}`} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <span className=\"text-sm font-medium mb-1 block\">{label}</span>\n <label className={`${baseClass} ${variantClass} ${sizeClass} ${validatorClass} ${validationStateClass} w-full flex items-center gap-2`}>\n {leftSection && <span>{leftSection}</span>}\n <input\n ref={inputRef}\n type={actualType}\n placeholder={placeholder}\n value={value}\n onChange={handleInputChange}\n disabled={disabled}\n required={required}\n className=\"grow\"\n pattern={pattern}\n />\n {type === 'password' ? (\n <span className=\"cursor-pointer opacity-70 hover:opacity-100\" onClick={togglePasswordVisibility}>\n {showPassword ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94\" />\n <path d=\"M14.12 14.12a3 3 0 1 1-4.24-4.24\" />\n <path d=\"M1 1l22 22\" />\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19\" />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </span>\n ) : rightSection ? (\n <span>{rightSection}</span>\n ) : null}\n </label>\n {validator && validatorHint && !showValidationHint && (\n <p className=\"validator-hint text-xs mt-1 opacity-70\">{validatorHint}</p>\n )}\n {showValidationHint && validator && !isValid && (\n <div className=\"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1\">\n {validationTooltip}\n </div>\n )}\n </div>\n );\n }\n\n // Default: inline label\n return (\n <div className={`relative w-full ${className}`} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <label className={`${baseClass} ${variantClass} ${sizeClass} ${validatorClass} ${validationStateClass} w-full flex items-center gap-2`}>\n {leftSection && <span>{leftSection}</span>}\n {label && <span>{label}</span>}\n <input\n ref={inputRef}\n type={actualType}\n placeholder={placeholder}\n value={value}\n onChange={handleInputChange}\n disabled={disabled}\n required={required}\n className=\"grow\"\n pattern={pattern}\n />\n {/* 显示最近输入的字符,仅针对密码字段 */}\n {type === 'password' && recentInput && (\n <span className=\"password-recent absolute right-10 font-mono\">\n {recentInput}\n </span>\n )}\n {/* 加入密码切换按钮或其他右侧元素 */}\n {type === 'password' ? (\n <span>{passwordToggle}</span>\n ) : rightSection ? (\n <span>{rightSection}</span>\n ) : null}\n </label>\n {validator && validatorHint && !showValidationHint && (\n <p className=\"validator-hint text-xs mt-1 opacity-70\">{validatorHint}</p>\n )}\n {showValidationHint && validator && !isValid && (\n <div className=\"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1\">\n {validationTooltip}\n </div>\n )}\n </div>\n );\n }\n\n // 如果没有label,则直接返回input\n return (\n <div className={`relative w-full ${className}`} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <input\n ref={inputRef}\n type={actualType}\n placeholder={placeholder}\n value={value}\n onChange={handleInputChange}\n disabled={disabled}\n required={required}\n className={`${baseClass} ${variantClass} ${sizeClass} ${validatorClass} ${validationStateClass} w-full`}\n pattern={pattern}\n />\n {validator && validatorHint && !showValidationHint && (\n <p className=\"validator-hint text-xs mt-1 opacity-70\">{validatorHint}</p>\n )}\n {showValidationHint && validator && !isValid && (\n <div className=\"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1\">\n {validationTooltip}\n </div>\n )}\n </div>\n );\n};\n\nexport default Input; "],"mappings":"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"}