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
@@ -1,72 +1,181 @@
1
+ import { cn as e } from "../../utils/cn.js";
1
2
  import "react";
2
- import { jsx as r } from "react/jsx-runtime";
3
- var x = ({ children: s, variant: a, bordered: o = !1, dash: e = !1, side: l = !1, imageFull: i = !1, compact: d = !1, hover: f = !0, glass: m = !0, size: n = "sm", className: c = "" }) => {
4
- const u = "card", C = m && !a ? "glass shadow-lg" : "", g = a ? `bg-${a} text-${a}-content shadow-md` : "", v = o ? "card-bordered" : "", h = e ? "card-dash" : "", w = l ? "card-side" : "", b = i ? "image-full" : "", j = d ? "card-compact" : "", p = f ? "hover:shadow-xl transition-shadow duration-300" : "", y = n ? `card-${n}` : "";
5
- c.includes("w-") || c.match(/max-w-|min-w-/);
6
- const B = [
7
- u,
8
- "",
9
- C,
10
- g,
11
- v,
12
- h,
13
- w,
14
- b,
15
- j,
16
- p,
17
- y,
18
- c
19
- ].filter(Boolean).join(" ");
20
- return /* @__PURE__ */ r("div", {
21
- className: B,
22
- children: s
23
- });
24
- }, $ = ({ children: s, className: a = "" }) => {
25
- const o = ["card-title", a].filter(Boolean).join(" ");
26
- return /* @__PURE__ */ r("h2", {
27
- className: o,
28
- children: s
29
- });
30
- }, F = ({ children: s, className: a = "" }) => {
31
- const o = ["card-body", a].filter(Boolean).join(" ");
32
- return /* @__PURE__ */ r("div", {
33
- className: o,
34
- children: s
35
- });
36
- }, S = ({ children: s, className: a = "", justify: o = "end" }) => {
37
- const e = [
38
- "card-actions",
39
- o ? `justify-${o}` : "",
40
- a
41
- ].filter(Boolean).join(" ");
42
- return /* @__PURE__ */ r("div", {
43
- className: e,
44
- children: s
45
- });
46
- }, A = {
47
- cover: "[&>img]:object-cover",
48
- contain: "[&>img]:object-contain",
49
- fill: "[&>img]:object-fill"
50
- }, N = (s) => typeof s == "number" ? `${s}px` : s, T = ({ children: s, className: a = "", fit: o = "cover", fill: e = !1, height: l }) => {
51
- const i = [
52
- "figure",
53
- A[o],
54
- e ? "w-full h-full [&>img]:h-full [&>img]:w-full" : "",
55
- l !== void 0 ? "w-full [&>img]:h-full [&>img]:w-full" : "",
56
- a
57
- ].filter(Boolean).join(" ");
58
- return /* @__PURE__ */ r("figure", {
59
- className: i,
60
- style: l !== void 0 ? { height: N(l) } : void 0,
61
- children: s
62
- });
63
- }, t = x;
64
- t.Title = $;
65
- t.Body = F;
66
- t.Actions = S;
67
- t.Figure = T;
68
- export {
69
- t as default
70
- };
3
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
+ //#region src/components/Card/index.tsx
5
+ var r = ({ children: n, variant: r, bordered: i = !1, dash: a = !1, side: o = !1, imageFull: s = !1, compact: c = !1, hover: l = !0, glass: u = !0, size: d = "sm", className: f = "" }) => {
6
+ let p = u && !r ? "glass shadow-lg" : "", m = r ? `bg-${r} text-${r}-content shadow-md` : "", h = i ? "card-bordered" : "", g = a ? "card-dash" : "", _ = o ? "card-side" : "", v = s ? "image-full" : "", y = c ? "card-compact" : "", b = l ? "hover:shadow-xl transition-shadow duration-300" : "", x = d ? `card-${d}` : "";
7
+ f.includes("w-") || f.match(/max-w-|min-w-/);
8
+ let S = e("card", "", p, m, h, g, _, v, y, b, x, f);
9
+ return /* @__PURE__ */ t("div", {
10
+ className: S,
11
+ children: n
12
+ });
13
+ }, i = ({ children: n, className: r = "" }) => {
14
+ let i = e("card-title", r);
15
+ return /* @__PURE__ */ t("h2", {
16
+ className: i,
17
+ children: n
18
+ });
19
+ }, a = ({ children: n, className: r = "" }) => {
20
+ let i = e("card-body", r);
21
+ return /* @__PURE__ */ t("div", {
22
+ className: i,
23
+ children: n
24
+ });
25
+ }, o = ({ children: n, className: r = "", justify: i = "end" }) => {
26
+ let a = e("card-actions", i && `justify-${i}`, r);
27
+ return /* @__PURE__ */ t("div", {
28
+ className: a,
29
+ children: n
30
+ });
31
+ }, s = {
32
+ cover: "[&>img]:object-cover",
33
+ contain: "[&>img]:object-contain",
34
+ fill: "[&>img]:object-fill"
35
+ }, c = (e) => typeof e == "number" ? `${e}px` : e, l = ({ children: n, className: r = "", fit: i = "cover", fill: a = !1, height: o }) => {
36
+ let l = e("figure", s[i], a && "w-full h-full [&>img]:h-full [&>img]:w-full", o !== void 0 && "w-full [&>img]:h-full [&>img]:w-full", r);
37
+ return /* @__PURE__ */ t("figure", {
38
+ className: l,
39
+ style: o === void 0 ? void 0 : { height: c(o) },
40
+ children: n
41
+ });
42
+ }, u = ({ variant: t, bordered: n = !1, glass: r = !0, className: i = "" }) => {
43
+ let a = r && !t ? "glass shadow-lg" : "", o = t ? `bg-${t} text-${t}-content shadow-md` : "";
44
+ return e("card", a, o, n && "card-bordered", i);
45
+ }, d = ({ className: r }) => /* @__PURE__ */ n("svg", {
46
+ xmlns: "http://www.w3.org/2000/svg",
47
+ className: e("h-4 w-4", r),
48
+ fill: "none",
49
+ viewBox: "0 0 24 24",
50
+ stroke: "currentColor",
51
+ strokeWidth: 2,
52
+ children: [/* @__PURE__ */ t("circle", {
53
+ cx: "12",
54
+ cy: "12",
55
+ r: "9"
56
+ }), /* @__PURE__ */ t("path", {
57
+ strokeLinecap: "round",
58
+ d: "M12 7v5l3 2"
59
+ })]
60
+ }), f = ({ icon: r, title: i, description: a, layout: o = "vertical", iconShape: s, children: c, variant: l, bordered: d, glass: f = !0, className: p = "", onClick: m }) => {
61
+ let h = r && /* @__PURE__ */ t("span", {
62
+ className: e("flex shrink-0 items-center justify-center bg-primary/10 text-primary", o === "vertical" ? "size-16" : "size-12", (s ?? (o === "vertical" ? "circle" : "square")) === "circle" ? "rounded-full" : "rounded-xl"),
63
+ children: r
64
+ });
65
+ return /* @__PURE__ */ t("div", {
66
+ className: u({
67
+ variant: l,
68
+ bordered: d,
69
+ glass: f,
70
+ className: p
71
+ }),
72
+ onClick: m,
73
+ children: o === "horizontal" ? /* @__PURE__ */ n("div", {
74
+ className: "card-body flex-row items-center gap-4",
75
+ children: [h, /* @__PURE__ */ n("div", {
76
+ className: "min-w-0 flex-1",
77
+ children: [
78
+ /* @__PURE__ */ t("h3", {
79
+ className: "font-semibold text-base-content",
80
+ children: i
81
+ }),
82
+ a && /* @__PURE__ */ t("p", {
83
+ className: "mt-0.5 text-sm text-base-content/70",
84
+ children: a
85
+ }),
86
+ c
87
+ ]
88
+ })]
89
+ }) : /* @__PURE__ */ n("div", {
90
+ className: "card-body items-center gap-3 text-center",
91
+ children: [
92
+ h,
93
+ /* @__PURE__ */ t("h3", {
94
+ className: "text-lg font-bold text-base-content",
95
+ children: i
96
+ }),
97
+ a && /* @__PURE__ */ t("p", {
98
+ className: "text-sm leading-relaxed text-base-content/70",
99
+ children: a
100
+ }),
101
+ c
102
+ ]
103
+ })
104
+ });
105
+ }, p = ({ children: r, author: i, avatar: a, date: o, quoteMark: s = !0, divider: c = !0, variant: l, bordered: f, glass: p = !0, className: m = "", onClick: h }) => /* @__PURE__ */ n("div", {
106
+ className: e(u({
107
+ variant: l,
108
+ bordered: f,
109
+ glass: p,
110
+ className: m
111
+ }), "relative overflow-hidden"),
112
+ onClick: h,
113
+ children: [s && /* @__PURE__ */ t("span", {
114
+ "aria-hidden": "true",
115
+ className: "pointer-events-none absolute right-5 top-2 select-none font-serif text-6xl leading-none text-primary/25",
116
+ children: "”"
117
+ }), /* @__PURE__ */ n("div", {
118
+ className: "card-body gap-0 p-6",
119
+ children: [/* @__PURE__ */ t("div", {
120
+ className: "relative z-10 text-lg text-base-content",
121
+ children: r
122
+ }), /* @__PURE__ */ n("div", {
123
+ className: e("mt-4 flex items-center justify-between gap-3", c && "border-t border-base-300 pt-3.5"),
124
+ children: [/* @__PURE__ */ n("div", {
125
+ className: "flex min-w-0 items-center gap-2.5",
126
+ children: [a && /* @__PURE__ */ t("span", {
127
+ className: "size-8 shrink-0 overflow-hidden rounded-full",
128
+ children: a
129
+ }), i && /* @__PURE__ */ t("span", {
130
+ className: "truncate text-sm font-medium text-primary",
131
+ children: i
132
+ })]
133
+ }), o && /* @__PURE__ */ n("span", {
134
+ className: "flex shrink-0 items-center gap-1.5 text-sm text-base-content/55",
135
+ children: [/* @__PURE__ */ t(d, {}), o]
136
+ })]
137
+ })]
138
+ })]
139
+ }), m = ({ title: e, badge: r, children: i, footerLeft: a, footerRight: o, variant: s, bordered: c, glass: l = !0, className: d = "", onClick: f }) => /* @__PURE__ */ t("div", {
140
+ className: u({
141
+ variant: s,
142
+ bordered: c,
143
+ glass: l,
144
+ className: d
145
+ }),
146
+ onClick: f,
147
+ children: /* @__PURE__ */ n("div", {
148
+ className: "card-body gap-2.5 p-6",
149
+ children: [
150
+ /* @__PURE__ */ n("div", {
151
+ className: "flex items-center justify-between gap-3",
152
+ children: [/* @__PURE__ */ t("h3", {
153
+ className: "min-w-0 flex-1 truncate text-lg font-bold text-base-content",
154
+ children: e
155
+ }), r && /* @__PURE__ */ t("span", {
156
+ className: "shrink-0",
157
+ children: r
158
+ })]
159
+ }),
160
+ i && /* @__PURE__ */ t("div", {
161
+ className: "text-sm text-base-content/75",
162
+ children: i
163
+ }),
164
+ (a || o) && /* @__PURE__ */ n("div", {
165
+ className: "mt-1.5 flex items-center justify-between gap-3 text-sm text-base-content/55",
166
+ children: [/* @__PURE__ */ t("span", {
167
+ className: "min-w-0 truncate",
168
+ children: a
169
+ }), /* @__PURE__ */ t("span", {
170
+ className: "shrink-0",
171
+ children: o
172
+ })]
173
+ })
174
+ ]
175
+ })
176
+ }), h = r;
177
+ h.Title = i, h.Body = a, h.Actions = o, h.Figure = l, h.Feature = f, h.Quote = p, h.Meta = m;
178
+ //#endregion
179
+ export { h as default };
71
180
 
72
181
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Card/index.tsx"],"sourcesContent":["import React from 'react';\n\nexport type CardProps = {\n children: React.ReactNode;\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n bordered?: boolean;\n dash?: boolean;\n side?: boolean;\n imageFull?: boolean;\n compact?: boolean;\n hover?: boolean;\n glass?: boolean; // 毛玻璃效果\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n};\n\nconst Card = ({\n children,\n variant,\n bordered = false,\n dash = false,\n side = false,\n imageFull = false,\n compact = false,\n hover = true, // 默认启用 hover 效果\n glass = true, // 默认启用毛玻璃效果\n size = 'sm',\n className = '',\n}: CardProps) => {\n const baseClass = 'card';\n\n // 默认样式:如果没有指定 variant,则应用毛玻璃效果和阴影\n // 同时添加边界样式 (border + shadow)\n const defaultStyles = glass && !variant ? 'glass shadow-lg' : '';\n\n // 如果指定了 variant,使用该 variant 的背景色,并添加阴影\n const variantClass = variant ? `bg-${variant} text-${variant}-content shadow-md` : '';\n\n const borderedClass = bordered ? 'card-bordered' : '';\n const dashClass = dash ? 'card-dash' : '';\n const sideClass = side ? 'card-side' : '';\n const imageFullClass = imageFull ? 'image-full' : '';\n const compactClass = compact ? 'card-compact' : '';\n const hoverClass = hover ? 'hover:shadow-xl transition-shadow duration-300' : '';\n const sizeClass = size ? `card-${size}` : '';\n\n // 宽度策略:\n // 1. 如果用户指定了 w-/max-w-/min-w-,则完全使用用户的设置\n // 2. 否则不设置固定宽度,让 Card 自然适应父容器(Grid 中自动填充,Flex 中根据内容)\n const hasWidthClass = className.includes('w-') || className.match(/max-w-|min-w-/);\n const widthClass = ''; // 不设置默认宽度,让布局决定\n\n const cardClasses = [\n baseClass,\n widthClass,\n defaultStyles,\n variantClass,\n borderedClass,\n dashClass,\n sideClass,\n imageFullClass,\n compactClass,\n hoverClass,\n sizeClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div className={cardClasses}>\n {children}\n </div>\n );\n};\n\n// Card.Title 组件\nexport type CardTitleProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst CardTitle = ({\n children,\n className = '',\n}: CardTitleProps) => {\n const titleClasses = [\n 'card-title',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <h2 className={titleClasses}>\n {children}\n </h2>\n );\n};\n\n// Card.Body 组件\nexport type CardBodyProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst CardBody = ({\n children,\n className = '',\n}: CardBodyProps) => {\n const bodyClasses = [\n 'card-body',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div className={bodyClasses}>\n {children}\n </div>\n );\n};\n\n// Card.Actions 组件\nexport type CardActionsProps = {\n children: React.ReactNode;\n className?: string;\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n};\n\nconst CardActions = ({\n children,\n className = '',\n justify = 'end',\n}: CardActionsProps) => {\n const actionsClasses = [\n 'card-actions',\n justify ? `justify-${justify}` : '',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div className={actionsClasses}>\n {children}\n </div>\n );\n};\n\n// Card.Figure 组件\nexport type CardFigureProps = {\n children: React.ReactNode;\n className?: string;\n /**\n * 图片填充方式(作用于内部 <img>):\n * - `cover` 等比裁切填满(默认,“撑满”)\n * - `contain` 等比完整展示,可能留白\n * - `fill` 拉伸填满(不保持比例)\n */\n fit?: 'cover' | 'contain' | 'fill';\n /** 图片撑满整个 figure(w/h 100%)。card-side 时建议开启。 */\n fill?: boolean;\n /** 指定 figure 高度(数字按 px,支持 \"16rem\"/\"50%\" 等);内部图片自动填满该高度 */\n height?: number | string;\n};\n\nconst FIT_CLASS: Record<NonNullable<CardFigureProps['fit']>, string> = {\n cover: '[&>img]:object-cover',\n contain: '[&>img]:object-contain',\n fill: '[&>img]:object-fill',\n};\n\nconst toCssSize = (value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst CardFigure = ({\n children,\n className = '',\n fit = 'cover',\n fill = false,\n height,\n}: CardFigureProps) => {\n const figureClasses = [\n 'figure',\n FIT_CLASS[fit],\n // 撑满:figure 与内部 img 都占满可用空间\n fill ? 'w-full h-full [&>img]:h-full [&>img]:w-full' : '',\n // 指定高度:figure 定高,内部图片自动填满\n height !== undefined ? 'w-full [&>img]:h-full [&>img]:w-full' : '',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <figure className={figureClasses} style={height !== undefined ? { height: toCssSize(height) } : undefined}>\n {children}\n </figure>\n );\n};\n\n// 扩展Card组件,添加子组件\ninterface CardCompound extends React.FC<CardProps> {\n Title: React.FC<CardTitleProps>;\n Body: React.FC<CardBodyProps>;\n Actions: React.FC<CardActionsProps>;\n Figure: React.FC<CardFigureProps>;\n}\n\nconst CardWithCompounds = Card as CardCompound;\nCardWithCompounds.Title = CardTitle;\nCardWithCompounds.Body = CardBody;\nCardWithCompounds.Actions = CardActions;\nCardWithCompounds.Figure = CardFigure;\n\nexport default CardWithCompounds; "],"mappings":";;AAgBA,IAAM,IAAA,CAAQ,EACZ,UAAA,GACA,SAAA,GACA,UAAA,IAAW,IACX,MAAA,IAAO,IACP,MAAA,IAAO,IACP,WAAA,IAAY,IACZ,SAAA,IAAU,IACV,OAAA,IAAQ,IACR,OAAA,IAAQ,IACR,MAAA,IAAO,MACP,WAAA,IAAY,GAAA,MACG;AACf,QAAM,IAAY,QAIZ,IAAgB,KAAS,CAAC,IAAU,oBAAoB,IAGxD,IAAe,IAAU,MAAM,CAAA,SAAgB,CAAA,uBAA8B,IAE7E,IAAgB,IAAW,kBAAkB,IAC7C,IAAY,IAAO,cAAc,IACjC,IAAY,IAAO,cAAc,IACjC,IAAiB,IAAY,eAAe,IAC5C,IAAe,IAAU,iBAAiB,IAC1C,IAAa,IAAQ,mDAAmD,IACxE,IAAY,IAAO,QAAQ,CAAA,KAAS;AAKpB,EAAA,EAAU,SAAS,IAAI,KAAK,EAAU,MAAM,eAAe;AAGjF,QAAM,IAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW;AAAA,IACb,UAAA;AAAA,EACE,CAAA;AAET,GAQM,IAAA,CAAa,EACjB,UAAA,GACA,WAAA,IAAY,GAAA,MACQ;AACpB,QAAM,IAAe,CACnB,cACA,CACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,MAAD;AAAA,IAAI,WAAW;AAAA,IACZ,UAAA;AAAA,EACC,CAAA;AAER,GAQM,IAAA,CAAY,EAChB,UAAA,GACA,WAAA,IAAY,GAAA,MACO;AACnB,QAAM,IAAc,CAClB,aACA,CACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW;AAAA,IACb,UAAA;AAAA,EACE,CAAA;AAET,GASM,IAAA,CAAe,EACnB,UAAA,GACA,WAAA,IAAY,IACZ,SAAA,IAAU,MAAA,MACY;AACtB,QAAM,IAAiB;AAAA,IACrB;AAAA,IACA,IAAU,WAAW,CAAA,KAAY;AAAA,IACjC;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW;AAAA,IACb,UAAA;AAAA,EACE,CAAA;AAET,GAmBM,IAAiE;AAAA,EACrE,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AACR,GAEM,IAAA,CAAa,MACjB,OAAO,KAAU,WAAW,GAAG,CAAA,OAAY,GAEvC,IAAA,CAAc,EAClB,UAAA,GACA,WAAA,IAAY,IACZ,KAAA,IAAM,SACN,MAAA,IAAO,IACP,QAAA,EAAA,MACqB;AACrB,QAAM,IAAgB;AAAA,IACpB;AAAA,IACA,EAAU,CAAA;AAAA,IAEV,IAAO,gDAAgD;AAAA,IAEvD,MAAW,SAAY,yCAAyC;AAAA,IAChE;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,UAAD;AAAA,IAAQ,WAAW;AAAA,IAAe,OAAO,MAAW,SAAY,EAAE,QAAQ,EAAU,CAAM,EAAE,IAAI;AAAA,IAC7F,UAAA;AAAA,EACK,CAAA;AAEZ,GAUM,IAAoB;AAC1B,EAAkB,QAAQ;AAC1B,EAAkB,OAAO;AACzB,EAAkB,UAAU;AAC5B,EAAkB,SAAS"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Card/index.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type CardProps = {\n children: React.ReactNode;\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n bordered?: boolean;\n dash?: boolean;\n side?: boolean;\n imageFull?: boolean;\n compact?: boolean;\n hover?: boolean;\n glass?: boolean; // 毛玻璃效果\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n};\n\nconst Card = ({\n children,\n variant,\n bordered = false,\n dash = false,\n side = false,\n imageFull = false,\n compact = false,\n hover = true, // 默认启用 hover 效果\n glass = true, // 默认启用毛玻璃效果\n size = 'sm',\n className = '',\n}: CardProps) => {\n const baseClass = 'card';\n\n // 默认样式:如果没有指定 variant,则应用毛玻璃效果和阴影\n // 同时添加边界样式 (border + shadow)\n const defaultStyles = glass && !variant ? 'glass shadow-lg' : '';\n\n // 如果指定了 variant,使用该 variant 的背景色,并添加阴影\n const variantClass = variant ? `bg-${variant} text-${variant}-content shadow-md` : '';\n\n const borderedClass = bordered ? 'card-bordered' : '';\n const dashClass = dash ? 'card-dash' : '';\n const sideClass = side ? 'card-side' : '';\n const imageFullClass = imageFull ? 'image-full' : '';\n const compactClass = compact ? 'card-compact' : '';\n const hoverClass = hover ? 'hover:shadow-xl transition-shadow duration-300' : '';\n const sizeClass = size ? `card-${size}` : '';\n\n // 宽度策略:\n // 1. 如果用户指定了 w-/max-w-/min-w-,则完全使用用户的设置\n // 2. 否则不设置固定宽度,让 Card 自然适应父容器(Grid 中自动填充,Flex 中根据内容)\n const hasWidthClass = className.includes('w-') || className.match(/max-w-|min-w-/);\n const widthClass = ''; // 不设置默认宽度,让布局决定\n\n const cardClasses = cn(\n baseClass,\n widthClass,\n defaultStyles,\n variantClass,\n borderedClass,\n dashClass,\n sideClass,\n imageFullClass,\n compactClass,\n hoverClass,\n sizeClass,\n className\n );\n\n return (\n <div className={cardClasses}>\n {children}\n </div>\n );\n};\n\n// Card.Title 组件\nexport type CardTitleProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst CardTitle = ({\n children,\n className = '',\n}: CardTitleProps) => {\n const titleClasses = cn('card-title', className);\n\n return (\n <h2 className={titleClasses}>\n {children}\n </h2>\n );\n};\n\n// Card.Body 组件\nexport type CardBodyProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst CardBody = ({\n children,\n className = '',\n}: CardBodyProps) => {\n const bodyClasses = cn('card-body', className);\n\n return (\n <div className={bodyClasses}>\n {children}\n </div>\n );\n};\n\n// Card.Actions 组件\nexport type CardActionsProps = {\n children: React.ReactNode;\n className?: string;\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n};\n\nconst CardActions = ({\n children,\n className = '',\n justify = 'end',\n}: CardActionsProps) => {\n const actionsClasses = cn(\n 'card-actions',\n justify && `justify-${justify}`,\n className\n );\n\n return (\n <div className={actionsClasses}>\n {children}\n </div>\n );\n};\n\n// Card.Figure 组件\nexport type CardFigureProps = {\n children: React.ReactNode;\n className?: string;\n /**\n * 图片填充方式(作用于内部 <img>):\n * - `cover` 等比裁切填满(默认,“撑满”)\n * - `contain` 等比完整展示,可能留白\n * - `fill` 拉伸填满(不保持比例)\n */\n fit?: 'cover' | 'contain' | 'fill';\n /** 图片撑满整个 figure(w/h 100%)。card-side 时建议开启。 */\n fill?: boolean;\n /** 指定 figure 高度(数字按 px,支持 \"16rem\"/\"50%\" 等);内部图片自动填满该高度 */\n height?: number | string;\n};\n\nconst FIT_CLASS: Record<NonNullable<CardFigureProps['fit']>, string> = {\n cover: '[&>img]:object-cover',\n contain: '[&>img]:object-contain',\n fill: '[&>img]:object-fill',\n};\n\nconst toCssSize = (value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst CardFigure = ({\n children,\n className = '',\n fit = 'cover',\n fill = false,\n height,\n}: CardFigureProps) => {\n const figureClasses = cn(\n 'figure',\n FIT_CLASS[fit],\n // 撑满:figure 与内部 img 都占满可用空间\n fill && 'w-full h-full [&>img]:h-full [&>img]:w-full',\n // 指定高度:figure 定高,内部图片自动填满\n height !== undefined && 'w-full [&>img]:h-full [&>img]:w-full',\n className\n );\n\n return (\n <figure className={figureClasses} style={height !== undefined ? { height: toCssSize(height) } : undefined}>\n {children}\n </figure>\n );\n};\n\n// ─── 内部工具:复用基础 Card 的类名拼装逻辑 ──────────────────\n\ninterface CardClassOptions {\n variant?: CardProps['variant'];\n bordered?: boolean;\n glass?: boolean;\n className?: string;\n}\n\nconst buildCardClasses = ({ variant, bordered = false, glass = true, className = '' }: CardClassOptions) => {\n const defaultStyles = glass && !variant ? 'glass shadow-lg' : '';\n const variantClass = variant ? `bg-${variant} text-${variant}-content shadow-md` : '';\n return cn('card', defaultStyles, variantClass, bordered && 'card-bordered', className);\n};\n\nconst ClockGlyph: React.FC<{ className?: string }> = ({ className }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={cn('h-4 w-4', className)} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path strokeLinecap=\"round\" d=\"M12 7v5l3 2\" />\n </svg>\n);\n\n// ─── Card.Feature:特性卡(图标 + 标题 + 描述) ───────────────\n\nexport type CardFeatureProps = {\n /** Icon node (usually a lucide / inline svg), rendered inside a tinted container. */\n icon?: React.ReactNode;\n /** Feature title. */\n title: React.ReactNode;\n /** Feature description rendered under the title. */\n description?: React.ReactNode;\n /** `vertical` centers everything with the icon on top; `horizontal` puts the icon at the left. */\n layout?: 'vertical' | 'horizontal';\n /** Icon container shape. Defaults to `circle` (vertical) / `square` (horizontal). */\n iconShape?: 'circle' | 'square';\n /** Extra content rendered under the description. */\n children?: React.ReactNode;\n /** Color variant (daisyUI). */\n variant?: CardProps['variant'];\n /** Show a border. */\n bordered?: boolean;\n /** Disable the default glass background. */\n glass?: boolean;\n /** Extra class names on the card. */\n className?: string;\n /** Click handler. */\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CardFeature: React.FC<CardFeatureProps> = ({\n icon,\n title,\n description,\n layout = 'vertical',\n iconShape,\n children,\n variant,\n bordered,\n glass = true,\n className = '',\n onClick,\n}) => {\n const shape = iconShape ?? (layout === 'vertical' ? 'circle' : 'square');\n const iconBox = icon && (\n <span\n className={cn(\n 'flex shrink-0 items-center justify-center bg-primary/10 text-primary',\n layout === 'vertical' ? 'size-16' : 'size-12',\n shape === 'circle' ? 'rounded-full' : 'rounded-xl',\n )}\n >\n {icon}\n </span>\n );\n\n return (\n <div\n className={buildCardClasses({ variant, bordered, glass, className })}\n onClick={onClick}\n >\n {layout === 'horizontal' ? (\n <div className=\"card-body flex-row items-center gap-4\">\n {iconBox}\n <div className=\"min-w-0 flex-1\">\n <h3 className=\"font-semibold text-base-content\">{title}</h3>\n {description && (\n <p className=\"mt-0.5 text-sm text-base-content/70\">{description}</p>\n )}\n {children}\n </div>\n </div>\n ) : (\n <div className=\"card-body items-center gap-3 text-center\">\n {iconBox}\n <h3 className=\"text-lg font-bold text-base-content\">{title}</h3>\n {description && (\n <p className=\"text-sm leading-relaxed text-base-content/70\">{description}</p>\n )}\n {children}\n </div>\n )}\n </div>\n );\n};\n\n// ─── Card.Quote:引用卡(引用文本 + 作者 / 日期 + 装饰引号) ──\n\nexport type CardQuoteProps = {\n /** The quoted text. */\n children: React.ReactNode;\n /** Author name (rendered in primary color). */\n author?: React.ReactNode;\n /** Avatar node (e.g. an `<img>` or initial circle) shown before the author. */\n avatar?: React.ReactNode;\n /** Date string/node rendered at the right side of the footer. */\n date?: React.ReactNode;\n /** Hide the decorative quote glyph in the top-right corner. */\n quoteMark?: boolean;\n /** Hide the divider between quote and footer. */\n divider?: boolean;\n /** Color variant (daisyUI). */\n variant?: CardProps['variant'];\n /** Show a border. */\n bordered?: boolean;\n /** Disable the default glass background. */\n glass?: boolean;\n /** Extra class names on the card. */\n className?: string;\n /** Click handler. */\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CardQuote: React.FC<CardQuoteProps> = ({\n children,\n author,\n avatar,\n date,\n quoteMark = true,\n divider = true,\n variant,\n bordered,\n glass = true,\n className = '',\n onClick,\n}) => (\n <div\n className={cn(\n buildCardClasses({ variant, bordered, glass, className }),\n 'relative overflow-hidden',\n )}\n onClick={onClick}\n >\n {quoteMark && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-5 top-2 select-none font-serif text-6xl leading-none text-primary/25\"\n >\n ”\n </span>\n )}\n <div className=\"card-body gap-0 p-6\">\n <div className=\"relative z-10 text-lg text-base-content\">{children}</div>\n <div\n className={cn(\n 'mt-4 flex items-center justify-between gap-3',\n divider && 'border-t border-base-300 pt-3.5',\n )}\n >\n <div className=\"flex min-w-0 items-center gap-2.5\">\n {avatar && <span className=\"size-8 shrink-0 overflow-hidden rounded-full\">{avatar}</span>}\n {author && (\n <span className=\"truncate text-sm font-medium text-primary\">{author}</span>\n )}\n </div>\n {date && (\n <span className=\"flex shrink-0 items-center gap-1.5 text-sm text-base-content/55\">\n <ClockGlyph />\n {date}\n </span>\n )}\n </div>\n </div>\n </div>\n);\n\n// ─── Card.Meta:元信息卡(标题 + 徽章 + 描述 + 左右页脚) ────\n\nexport type CardMetaProps = {\n /** Card title (top-left). */\n title: React.ReactNode;\n /** Badge / tag node (top-right, e.g. a visibility badge). */\n badge?: React.ReactNode;\n /** Body content under the title row. */\n children?: React.ReactNode;\n /** Footer left slot (e.g. `@author`). */\n footerLeft?: React.ReactNode;\n /** Footer right slot (e.g. a date). */\n footerRight?: React.ReactNode;\n /** Color variant (daisyUI). */\n variant?: CardProps['variant'];\n /** Show a border. */\n bordered?: boolean;\n /** Disable the default glass background. */\n glass?: boolean;\n /** Extra class names on the card. */\n className?: string;\n /** Click handler. */\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst CardMeta: React.FC<CardMetaProps> = ({\n title,\n badge,\n children,\n footerLeft,\n footerRight,\n variant,\n bordered,\n glass = true,\n className = '',\n onClick,\n}) => (\n <div\n className={buildCardClasses({ variant, bordered, glass, className })}\n onClick={onClick}\n >\n <div className=\"card-body gap-2.5 p-6\">\n <div className=\"flex items-center justify-between gap-3\">\n <h3 className=\"min-w-0 flex-1 truncate text-lg font-bold text-base-content\">{title}</h3>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </div>\n {children && <div className=\"text-sm text-base-content/75\">{children}</div>}\n {(footerLeft || footerRight) && (\n <div className=\"mt-1.5 flex items-center justify-between gap-3 text-sm text-base-content/55\">\n <span className=\"min-w-0 truncate\">{footerLeft}</span>\n <span className=\"shrink-0\">{footerRight}</span>\n </div>\n )}\n </div>\n </div>\n);\n\n// 扩展Card组件,添加子组件\ninterface CardCompound extends React.FC<CardProps> {\n Title: React.FC<CardTitleProps>;\n Body: React.FC<CardBodyProps>;\n Actions: React.FC<CardActionsProps>;\n Figure: React.FC<CardFigureProps>;\n /** 特性卡:图标 + 标题 + 描述(垂直居中 / 横向两种布局) */\n Feature: React.FC<CardFeatureProps>;\n /** 引用卡:引用文本 + 作者头像 / 日期 + 装饰引号 */\n Quote: React.FC<CardQuoteProps>;\n /** 元信息卡:标题 + 徽章 + 描述 + 左右页脚 */\n Meta: React.FC<CardMetaProps>;\n}\n\nconst CardWithCompounds = Card as CardCompound;\nCardWithCompounds.Title = CardTitle;\nCardWithCompounds.Body = CardBody;\nCardWithCompounds.Actions = CardActions;\nCardWithCompounds.Figure = CardFigure;\nCardWithCompounds.Feature = CardFeature;\nCardWithCompounds.Quote = CardQuote;\nCardWithCompounds.Meta = CardMeta;\n\nexport default CardWithCompounds; "],"mappings":"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"}
@@ -1,29 +1,29 @@
1
- import n from "react";
1
+ import e from "react";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
- import { Chart as m } from "@tanstack/react-charts/tooltip";
4
- var v = n.forwardRef(function({ height: e = 360, className: a = "", style: o, empty: l = !1, emptyContent: i = "No chart data", definition: s, ...r }, d) {
5
- const f = typeof e == "number" ? Math.max(1, e - 26) : void 0;
6
- return /* @__PURE__ */ t("div", {
7
- ref: d,
8
- className: `relative w-full overflow-hidden rounded-xl border border-base-300 bg-base-100 p-3 ${a}`,
9
- style: {
10
- height: e,
11
- ...o
12
- },
13
- ...r,
14
- children: l ? /* @__PURE__ */ t("div", {
15
- className: "flex h-full items-center justify-center p-6 text-sm text-base-content/50",
16
- children: i
17
- }) : /* @__PURE__ */ t(m, {
18
- definition: s,
19
- ariaLabel: r["aria-label"] || "Chart",
20
- height: f,
21
- style: typeof e == "string" ? { height: "100%" } : void 0
22
- })
23
- });
3
+ import { Chart as n } from "@tanstack/react-charts/tooltip";
4
+ //#region src/components/Chart/Chart.tsx
5
+ var r = e.forwardRef(function({ height: e = 360, className: r = "", style: i, empty: a = !1, emptyContent: o = "No chart data", definition: s, ...c }, l) {
6
+ let u = typeof e == "number" ? Math.max(1, e - 26) : void 0;
7
+ return /* @__PURE__ */ t("div", {
8
+ ref: l,
9
+ className: `relative w-full overflow-hidden rounded-xl border border-base-300 bg-base-100 p-3 ${r}`,
10
+ style: {
11
+ height: e,
12
+ ...i
13
+ },
14
+ ...c,
15
+ children: a ? /* @__PURE__ */ t("div", {
16
+ className: "flex h-full items-center justify-center p-6 text-sm text-base-content/50",
17
+ children: o
18
+ }) : /* @__PURE__ */ t(n, {
19
+ definition: s,
20
+ ariaLabel: c["aria-label"] || "Chart",
21
+ height: u,
22
+ style: typeof e == "string" ? { height: "100%" } : void 0
23
+ })
24
+ });
24
25
  });
25
- export {
26
- v as default
27
- };
26
+ //#endregion
27
+ export { r as default };
28
28
 
29
29
  //# sourceMappingURL=Chart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","names":[],"sources":["../../../src/components/Chart/Chart.tsx"],"sourcesContent":["import React from 'react';\nimport { Chart as TanStackChart } from '@tanstack/react-charts/tooltip';\nimport type { DomChartDefinition } from '@tanstack/charts';\n\nexport interface ChartProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** TanStack Charts declarative chart definition. */\n definition: DomChartDefinition<any, any, any>;\n\n /** Wrapper height. TanStack Charts fills the available space. */\n height?: number | string;\n /** Additional wrapper class name. */\n className?: string;\n /** Additional wrapper style. */\n style?: React.CSSProperties;\n /** Optional empty state controlled by the caller. */\n empty?: boolean;\n emptyContent?: React.ReactNode;\n}\n\nconst Chart = React.forwardRef<HTMLDivElement, ChartProps>(function Chart({\n height = 360,\n className = '',\n style,\n empty = false,\n emptyContent = 'No chart data',\n definition,\n ...wrapperProps\n}, ref) {\n const numericChartHeight = typeof height === 'number' ? Math.max(1, height - 26) : undefined;\n\n return (\n <div\n ref={ref}\n className={`relative w-full overflow-hidden rounded-xl border border-base-300 bg-base-100 p-3 ${className}`}\n style={{ height, ...style }}\n {...wrapperProps}\n >\n {empty ? (\n <div className=\"flex h-full items-center justify-center p-6 text-sm text-base-content/50\">\n {emptyContent}\n </div>\n ) : (\n <TanStackChart\n definition={definition}\n ariaLabel={wrapperProps['aria-label'] || 'Chart'}\n height={numericChartHeight}\n style={typeof height === 'string' ? { height: '100%' } : undefined}\n />\n )}\n </div>\n );\n});\n\nexport default Chart;\n"],"mappings":";;;AAmBA,IAAM,IAAQ,EAAM,WAAuC,SAAe,EACxE,QAAA,IAAS,KACT,WAAA,IAAY,IACZ,OAAA,GACA,OAAA,IAAQ,IACR,cAAA,IAAe,iBACf,YAAA,GACA,GAAG,EAAA,GACF,GAAK;AACN,QAAM,IAAqB,OAAO,KAAW,WAAW,KAAK,IAAI,GAAG,IAAS,EAAE,IAAI;AAEnF,SACE,gBAAA,EAAC,OAAD;AAAA,IACO,KAAA;AAAA,IACL,WAAW,qFAAqF,CAAA;AAAA,IAChG,OAAO;AAAA,MAAE,QAAA;AAAA,MAAQ,GAAG;AAAA,IAAM;AAAA,IAC1B,GAAI;AAAA,IAEH,UAAA,IACC,gBAAA,EAAC,OAAD;AAAA,MAAK,WAAU;AAAA,MACZ,UAAA;AAAA,IACE,CAAA,IAEL,gBAAA,EAAC,GAAD;AAAA,MACc,YAAA;AAAA,MACZ,WAAW,EAAa,YAAA,KAAiB;AAAA,MACzC,QAAQ;AAAA,MACR,OAAO,OAAO,KAAW,WAAW,EAAE,QAAQ,OAAO,IAAI;AAAA,IAC1D,CAAA;AAAA,EAEA,CAAA;AAET,CAAC"}
1
+ {"version":3,"file":"Chart.js","names":[],"sources":["../../../src/components/Chart/Chart.tsx"],"sourcesContent":["import React from 'react';\nimport { Chart as TanStackChart } from '@tanstack/react-charts/tooltip';\nimport type { DomChartDefinition } from '@tanstack/charts';\n\nexport interface ChartProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** TanStack Charts declarative chart definition. */\n definition: DomChartDefinition<any, any, any>;\n\n /** Wrapper height. TanStack Charts fills the available space. */\n height?: number | string;\n /** Additional wrapper class name. */\n className?: string;\n /** Additional wrapper style. */\n style?: React.CSSProperties;\n /** Optional empty state controlled by the caller. */\n empty?: boolean;\n emptyContent?: React.ReactNode;\n}\n\nconst Chart = React.forwardRef<HTMLDivElement, ChartProps>(function Chart({\n height = 360,\n className = '',\n style,\n empty = false,\n emptyContent = 'No chart data',\n definition,\n ...wrapperProps\n}, ref) {\n const numericChartHeight = typeof height === 'number' ? Math.max(1, height - 26) : undefined;\n\n return (\n <div\n ref={ref}\n className={`relative w-full overflow-hidden rounded-xl border border-base-300 bg-base-100 p-3 ${className}`}\n style={{ height, ...style }}\n {...wrapperProps}\n >\n {empty ? (\n <div className=\"flex h-full items-center justify-center p-6 text-sm text-base-content/50\">\n {emptyContent}\n </div>\n ) : (\n <TanStackChart\n definition={definition}\n ariaLabel={wrapperProps['aria-label'] || 'Chart'}\n height={numericChartHeight}\n style={typeof height === 'string' ? { height: '100%' } : undefined}\n />\n )}\n </div>\n );\n});\n\nexport default Chart;\n"],"mappings":";;;;AAmBA,IAAM,IAAQ,EAAM,WAAuC,SAAe,EACxE,YAAS,KACT,eAAY,IACZ,UACA,WAAQ,IACR,kBAAe,iBACf,eACA,GAAG,KACF,GAAK;CACN,IAAM,IAAqB,OAAO,KAAW,WAAW,KAAK,IAAI,GAAG,IAAS,EAAE,IAAI,KAAA;CAEnF,OACE,kBAAC,OAAD;EACO;EACL,WAAW,qFAAqF;EAChG,OAAO;GAAE;GAAQ,GAAG;EAAM;EAC1B,GAAI;EAEH,UAAA,IACC,kBAAC,OAAD;GAAK,WAAU;GACZ,UAAA;EACE,CAAA,IAEL,kBAAC,GAAD;GACc;GACZ,WAAW,EAAa,iBAAiB;GACzC,QAAQ;GACR,OAAO,OAAO,KAAW,WAAW,EAAE,QAAQ,OAAO,IAAI,KAAA;EAC1D,CAAA;CAEA,CAAA;AAET,CAAC"}
@@ -1,68 +1,60 @@
1
- import { useCallback as y, useEffect as v, useRef as S } from "react";
2
- import { jsx as s, jsxs as j } from "react/jsx-runtime";
3
- var w = {
4
- default: "",
5
- primary: "checkbox-primary",
6
- secondary: "checkbox-secondary",
7
- accent: "checkbox-accent",
8
- info: "checkbox-info",
9
- success: "checkbox-success",
10
- warning: "checkbox-warning",
11
- error: "checkbox-error"
12
- }, A = {
13
- xs: "checkbox-xs",
14
- sm: "checkbox-sm",
15
- md: "checkbox-md",
16
- lg: "checkbox-lg"
17
- }, E = ({ checked: h, defaultChecked: x, onChange: n, label: e, labelPosition: t = "right", variant: f = "default", size: u = "sm", disabled: a = !1, indeterminate: c = !1, name: k, value: p, className: r = "", style: d, id: m }) => {
18
- const o = S(null);
19
- v(() => {
20
- o.current && (o.current.indeterminate = c);
21
- }, [c]);
22
- const b = y((l) => {
23
- n?.(l.target.checked, l);
24
- }, [n]), g = [
25
- "checkbox",
26
- w[f],
27
- A[u],
28
- r && !e ? r : ""
29
- ].filter(Boolean).join(" "), i = /* @__PURE__ */ s("input", {
30
- ref: o,
31
- id: m,
32
- type: "checkbox",
33
- className: g,
34
- checked: h,
35
- defaultChecked: x,
36
- onChange: b,
37
- disabled: a,
38
- name: k,
39
- value: p,
40
- "aria-checked": c ? "mixed" : void 0
41
- });
42
- if (e == null || e === "") return i;
43
- const C = [
44
- "label cursor-pointer inline-flex items-center gap-2 w-fit",
45
- a ? "opacity-50 cursor-not-allowed" : "",
46
- r
47
- ].filter(Boolean).join(" ");
48
- return /* @__PURE__ */ j("label", {
49
- className: C,
50
- style: d,
51
- children: [
52
- t === "left" && /* @__PURE__ */ s("span", {
53
- className: "label-text",
54
- children: e
55
- }),
56
- i,
57
- t === "right" && /* @__PURE__ */ s("span", {
58
- className: "label-text",
59
- children: e
60
- })
61
- ]
62
- });
63
- };
64
- export {
65
- E as default
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import { useCallback as t, useEffect as n, useRef as r } from "react";
3
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
+ //#region src/components/Checkbox/index.tsx
5
+ var o = {
6
+ default: "",
7
+ primary: "checkbox-primary",
8
+ secondary: "checkbox-secondary",
9
+ accent: "checkbox-accent",
10
+ info: "checkbox-info",
11
+ success: "checkbox-success",
12
+ warning: "checkbox-warning",
13
+ error: "checkbox-error"
14
+ }, s = {
15
+ xs: "checkbox-xs",
16
+ sm: "checkbox-sm",
17
+ md: "checkbox-md",
18
+ lg: "checkbox-lg"
19
+ }, c = ({ checked: c, defaultChecked: l, onChange: u, label: d, labelPosition: f = "right", variant: p = "default", size: m = "sm", disabled: h = !1, indeterminate: g = !1, name: _, value: v, className: y = "", style: b, id: x }) => {
20
+ let S = r(null);
21
+ n(() => {
22
+ S.current && (S.current.indeterminate = g);
23
+ }, [g]);
24
+ let C = t((e) => {
25
+ u?.(e.target.checked, e);
26
+ }, [u]), w = e("checkbox", o[p], s[m], y && !d ? y : ""), T = /* @__PURE__ */ i("input", {
27
+ ref: S,
28
+ id: x,
29
+ type: "checkbox",
30
+ className: w,
31
+ checked: c,
32
+ defaultChecked: l,
33
+ onChange: C,
34
+ disabled: h,
35
+ name: _,
36
+ value: v,
37
+ "aria-checked": g ? "mixed" : void 0
38
+ });
39
+ if (d == null || d === "") return T;
40
+ let E = e("label cursor-pointer inline-flex items-center gap-2 w-fit", h && "opacity-50 cursor-not-allowed", y);
41
+ return /* @__PURE__ */ a("label", {
42
+ className: E,
43
+ style: b,
44
+ children: [
45
+ f === "left" && /* @__PURE__ */ i("span", {
46
+ className: "label-text",
47
+ children: d
48
+ }),
49
+ T,
50
+ f === "right" && /* @__PURE__ */ i("span", {
51
+ className: "label-text",
52
+ children: d
53
+ })
54
+ ]
55
+ });
66
56
  };
57
+ //#endregion
58
+ export { c as default };
67
59
 
68
60
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { useRef, useEffect, useCallback } from 'react';\n\nexport type CheckboxProps = {\n /** Controlled checked state. */\n checked?: boolean;\n /** Uncontrolled initial checked state. */\n defaultChecked?: boolean;\n /** Change handler; receives the new checked value. */\n onChange?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;\n /** Optional label rendered next to the box. */\n label?: React.ReactNode;\n /** Label position relative to the box. */\n labelPosition?: 'right' | 'left';\n /** Color variant (daisyUI). */\n variant?: 'default' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n /** Size. */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n /** Disabled state. */\n disabled?: boolean;\n /** Indeterminate (partial) state; overrides the visual check mark. */\n indeterminate?: boolean;\n /** Native name attribute (useful in forms). */\n name?: string;\n /** Native value attribute. */\n value?: string;\n /** Extra class names applied to the wrapping label element. */\n className?: string;\n /** Inline styles applied to the wrapping label element. */\n style?: React.CSSProperties;\n /** id forwarded to the input. */\n id?: string;\n};\n\nconst VARIANT_CLASS: Record<NonNullable<CheckboxProps['variant']>, string> = {\n default: '',\n primary: 'checkbox-primary',\n secondary: 'checkbox-secondary',\n accent: 'checkbox-accent',\n info: 'checkbox-info',\n success: 'checkbox-success',\n warning: 'checkbox-warning',\n error: 'checkbox-error',\n};\n\nconst SIZE_CLASS: Record<NonNullable<CheckboxProps['size']>, string> = {\n xs: 'checkbox-xs',\n sm: 'checkbox-sm',\n md: 'checkbox-md',\n lg: 'checkbox-lg',\n};\n\nconst Checkbox: React.FC<CheckboxProps> = ({\n checked,\n defaultChecked,\n onChange,\n label,\n labelPosition = 'right',\n variant = 'default',\n size = 'sm',\n disabled = false,\n indeterminate = false,\n name,\n value,\n className = '',\n style,\n id,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // The `indeterminate` visual state can only be set imperatively on the DOM node.\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.checked, e);\n },\n [onChange],\n );\n\n const inputClasses = [\n 'checkbox',\n VARIANT_CLASS[variant],\n SIZE_CLASS[size],\n // If there is no label, allow className to style the input directly.\n className && !label ? className : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const input = (\n <input\n ref={inputRef}\n id={id}\n type=\"checkbox\"\n className={inputClasses}\n checked={checked}\n defaultChecked={defaultChecked}\n onChange={handleChange}\n disabled={disabled}\n name={name}\n value={value}\n aria-checked={indeterminate ? 'mixed' : undefined}\n />\n );\n\n // No label → return the bare input.\n if (label === undefined || label === null || label === '') {\n return input;\n }\n\n const labelClasses = [\n 'label cursor-pointer inline-flex items-center gap-2 w-fit',\n disabled ? 'opacity-50 cursor-not-allowed' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <label className={labelClasses} style={style}>\n {labelPosition === 'left' && <span className=\"label-text\">{label}</span>}\n {input}\n {labelPosition === 'right' && <span className=\"label-text\">{label}</span>}\n </label>\n );\n};\n\nexport default Checkbox;\n"],"mappings":";;AAiCA,IAAM,IAAuE;AAAA,EAC3E,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT,GAEM,IAAiE;AAAA,EACrE,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEM,IAAA,CAAqC,EACzC,SAAA,GACA,gBAAA,GACA,UAAA,GACA,OAAA,GACA,eAAA,IAAgB,SAChB,SAAA,IAAU,WACV,MAAA,IAAO,MACP,UAAA,IAAW,IACX,eAAA,IAAgB,IAChB,MAAA,GACA,OAAA,GACA,WAAA,IAAY,IACZ,OAAA,GACA,IAAA,EAAA,MACI;AACJ,QAAM,IAAW,EAAyB,IAAI;AAG9C,EAAA,EAAA,MAAgB;AACd,IAAI,EAAS,YACX,EAAS,QAAQ,gBAAgB;AAAA,EAErC,GAAG,CAAC,CAAa,CAAC;AAElB,QAAM,IAAe,EAAA,CAClB,MAA2C;AAC1C,IAAA,IAAW,EAAE,OAAO,SAAS,CAAC;AAAA,EAChC,GACA,CAAC,CAAQ,CACX,GAEM,IAAe;AAAA,IACnB;AAAA,IACA,EAAc,CAAA;AAAA,IACd,EAAW,CAAA;AAAA,IAEX,KAAa,CAAC,IAAQ,IAAY;AAAA,EACpC,EACG,OAAO,OAAO,EACd,KAAK,GAAG,GAEL,IACJ,gBAAA,EAAC,SAAD;AAAA,IACE,KAAK;AAAA,IACD,IAAA;AAAA,IACJ,MAAK;AAAA,IACL,WAAW;AAAA,IACF,SAAA;AAAA,IACO,gBAAA;AAAA,IAChB,UAAU;AAAA,IACA,UAAA;AAAA,IACJ,MAAA;AAAA,IACC,OAAA;AAAA,IACP,gBAAc,IAAgB,UAAU;AAAA,EACzC,CAAA;AAIH,MAA2B,KAAU,QAAQ,MAAU,GACrD,QAAO;AAGT,QAAM,IAAe;AAAA,IACnB;AAAA,IACA,IAAW,kCAAkC;AAAA,IAC7C;AAAA,EACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAA,EAAC,SAAD;AAAA,IAAO,WAAW;AAAA,IAAqB,OAAA;AAAA,IAAvC,UAAA;AAAA,MACG,MAAkB,UAAU,gBAAA,EAAC,QAAD;AAAA,QAAM,WAAU;AAAA,QAAc,UAAA;AAAA,MAAY,CAAA;AAAA,MACtE;AAAA,MACA,MAAkB,WAAW,gBAAA,EAAC,QAAD;AAAA,QAAM,WAAU;AAAA,QAAc,UAAA;AAAA,MAAY,CAAA;AAAA,IACnE;AAAA;AAEX"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { useRef, useEffect, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type CheckboxProps = {\n /** Controlled checked state. */\n checked?: boolean;\n /** Uncontrolled initial checked state. */\n defaultChecked?: boolean;\n /** Change handler; receives the new checked value. */\n onChange?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;\n /** Optional label rendered next to the box. */\n label?: React.ReactNode;\n /** Label position relative to the box. */\n labelPosition?: 'right' | 'left';\n /** Color variant (daisyUI). */\n variant?: 'default' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n /** Size. */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n /** Disabled state. */\n disabled?: boolean;\n /** Indeterminate (partial) state; overrides the visual check mark. */\n indeterminate?: boolean;\n /** Native name attribute (useful in forms). */\n name?: string;\n /** Native value attribute. */\n value?: string;\n /** Extra class names applied to the wrapping label element. */\n className?: string;\n /** Inline styles applied to the wrapping label element. */\n style?: React.CSSProperties;\n /** id forwarded to the input. */\n id?: string;\n};\n\nconst VARIANT_CLASS: Record<NonNullable<CheckboxProps['variant']>, string> = {\n default: '',\n primary: 'checkbox-primary',\n secondary: 'checkbox-secondary',\n accent: 'checkbox-accent',\n info: 'checkbox-info',\n success: 'checkbox-success',\n warning: 'checkbox-warning',\n error: 'checkbox-error',\n};\n\nconst SIZE_CLASS: Record<NonNullable<CheckboxProps['size']>, string> = {\n xs: 'checkbox-xs',\n sm: 'checkbox-sm',\n md: 'checkbox-md',\n lg: 'checkbox-lg',\n};\n\nconst Checkbox: React.FC<CheckboxProps> = ({\n checked,\n defaultChecked,\n onChange,\n label,\n labelPosition = 'right',\n variant = 'default',\n size = 'sm',\n disabled = false,\n indeterminate = false,\n name,\n value,\n className = '',\n style,\n id,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // The `indeterminate` visual state can only be set imperatively on the DOM node.\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.checked, e);\n },\n [onChange],\n );\n\n const inputClasses = cn(\n 'checkbox',\n VARIANT_CLASS[variant],\n SIZE_CLASS[size],\n // If there is no label, allow className to style the input directly.\n className && !label ? className : '',\n );\n\n const input = (\n <input\n ref={inputRef}\n id={id}\n type=\"checkbox\"\n className={inputClasses}\n checked={checked}\n defaultChecked={defaultChecked}\n onChange={handleChange}\n disabled={disabled}\n name={name}\n value={value}\n aria-checked={indeterminate ? 'mixed' : undefined}\n />\n );\n\n // No label → return the bare input.\n if (label === undefined || label === null || label === '') {\n return input;\n }\n\n const labelClasses = cn(\n 'label cursor-pointer inline-flex items-center gap-2 w-fit',\n disabled && 'opacity-50 cursor-not-allowed',\n className,\n );\n\n return (\n <label className={labelClasses} style={style}>\n {labelPosition === 'left' && <span className=\"label-text\">{label}</span>}\n {input}\n {labelPosition === 'right' && <span className=\"label-text\">{label}</span>}\n </label>\n );\n};\n\nexport default Checkbox;\n"],"mappings":";;;;AAkCA,IAAM,IAAuE;CAC3E,SAAS;CACT,SAAS;CACT,WAAW;CACX,QAAQ;CACR,MAAM;CACN,SAAS;CACT,SAAS;CACT,OAAO;AACT,GAEM,IAAiE;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN,GAEM,KAAqC,EACzC,YACA,mBACA,aACA,UACA,mBAAgB,SAChB,aAAU,WACV,UAAO,MACP,cAAW,IACX,mBAAgB,IAChB,SACA,UACA,eAAY,IACZ,UACA,YACI;CACJ,IAAM,IAAW,EAAyB,IAAI;CAG9C,QAAgB;EACd,AAAI,EAAS,YACX,EAAS,QAAQ,gBAAgB;CAErC,GAAG,CAAC,CAAa,CAAC;CAElB,IAAM,IAAe,GAClB,MAA2C;EAC1C,IAAW,EAAE,OAAO,SAAS,CAAC;CAChC,GACA,CAAC,CAAQ,CACX,GAEM,IAAe,EACnB,YACA,EAAc,IACd,EAAW,IAEX,KAAa,CAAC,IAAQ,IAAY,EACpC,GAEM,IACJ,kBAAC,SAAD;EACE,KAAK;EACD;EACJ,MAAK;EACL,WAAW;EACF;EACO;EAChB,UAAU;EACA;EACJ;EACC;EACP,gBAAc,IAAgB,UAAU,KAAA;CACzC,CAAA;CAIH,IAAI,KAAiC,QAAQ,MAAU,IACrD,OAAO;CAGT,IAAM,IAAe,EACnB,6DACA,KAAY,iCACZ,CACF;CAEA,OACE,kBAAC,SAAD;EAAO,WAAW;EAAqB;EAAvC,UAAA;GACG,MAAkB,UAAU,kBAAC,QAAD;IAAM,WAAU;IAAc,UAAA;GAAY,CAAA;GACtE;GACA,MAAkB,WAAW,kBAAC,QAAD;IAAM,WAAU;IAAc,UAAA;GAAY,CAAA;EACnE;;AAEX"}
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ export type ChoicePickerOption = {
3
+ /** Value submitted for this option. */
4
+ value: string | number;
5
+ /** Display label. */
6
+ label: React.ReactNode;
7
+ /** Disable this option only. */
8
+ disabled?: boolean;
9
+ };
10
+ export type ChoicePickerVariant = 'default' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';
11
+ export type ChoicePickerProps = {
12
+ /** Available options. */
13
+ options: ChoicePickerOption[];
14
+ /** Controlled selected value. */
15
+ value?: string | number;
16
+ /** Uncontrolled initial value. */
17
+ defaultValue?: string | number;
18
+ /** Change handler with the selected value. */
19
+ onChange?: (value: string | number) => void;
20
+ /** `list` renders radio rows; `chip` renders a button group. */
21
+ appearance?: 'list' | 'chip';
22
+ /** Layout of list rows or chip wrapping. */
23
+ orientation?: 'vertical' | 'horizontal';
24
+ /** Color variant. */
25
+ variant?: ChoicePickerVariant;
26
+ /** Size (daisyUI). */
27
+ size?: 'xs' | 'sm' | 'md' | 'lg';
28
+ /** Disable the whole group. */
29
+ disabled?: boolean;
30
+ /** Optional group label rendered above the options. */
31
+ label?: React.ReactNode;
32
+ /** Native name attribute for the radios. */
33
+ name?: string;
34
+ /** Extra class names on the wrapper. */
35
+ className?: string;
36
+ /** Inline styles on the wrapper. */
37
+ style?: React.CSSProperties;
38
+ };
39
+ /**
40
+ * ChoicePicker —— A2UI 交互组件(v0.9):单选项组。
41
+ * `list` 外观为 radio 行(daisyUI radio),`chip` 外观为按钮组(daisyUI btn)。
42
+ */
43
+ declare const ChoicePicker: React.FC<ChoicePickerProps>;
44
+ export default ChoicePicker;