dishui 0.0.65 → 0.0.67

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 (507) 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/Accordion/index.d.ts +39 -0
  5. package/dist/components/Accordion/index.js +70 -0
  6. package/dist/components/Accordion/index.js.map +1 -0
  7. package/dist/components/Avatar/index.d.ts +48 -0
  8. package/dist/components/Avatar/index.js +71 -0
  9. package/dist/components/Avatar/index.js.map +1 -0
  10. package/dist/components/Badge/index.js +10 -15
  11. package/dist/components/Badge/index.js.map +1 -1
  12. package/dist/components/Button/index.js +62 -89
  13. package/dist/components/Button/index.js.map +1 -1
  14. package/dist/components/Card/index.d.ts +142 -0
  15. package/dist/components/Card/index.js +368 -69
  16. package/dist/components/Card/index.js.map +1 -1
  17. package/dist/components/Chart/Chart.js +25 -25
  18. package/dist/components/Chart/Chart.js.map +1 -1
  19. package/dist/components/Checkbox/index.js +57 -65
  20. package/dist/components/Checkbox/index.js.map +1 -1
  21. package/dist/components/ChoicePicker/index.d.ts +44 -0
  22. package/dist/components/ChoicePicker/index.js +81 -0
  23. package/dist/components/ChoicePicker/index.js.map +1 -0
  24. package/dist/components/Column/index.d.ts +28 -0
  25. package/dist/components/Column/index.js +30 -0
  26. package/dist/components/Column/index.js.map +1 -0
  27. package/dist/components/DateTimeInput/index.d.ts +44 -0
  28. package/dist/components/DateTimeInput/index.js +48 -0
  29. package/dist/components/DateTimeInput/index.js.map +1 -0
  30. package/dist/components/Demo/index.js +107 -107
  31. package/dist/components/Demo/index.js.map +1 -1
  32. package/dist/components/Divider/index.d.ts +20 -0
  33. package/dist/components/Divider/index.js +30 -0
  34. package/dist/components/Divider/index.js.map +1 -0
  35. package/dist/components/EmptyState/index.js +24 -24
  36. package/dist/components/EmptyState/index.js.map +1 -1
  37. package/dist/components/FileUploader/DropZone.js +134 -136
  38. package/dist/components/FileUploader/DropZone.js.map +1 -1
  39. package/dist/components/FileUploader/FileItem.js +159 -163
  40. package/dist/components/FileUploader/FileItem.js.map +1 -1
  41. package/dist/components/FileUploader/FileUploader.js +126 -127
  42. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  43. package/dist/components/FileUploader/UploadQueue.js +62 -62
  44. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  45. package/dist/components/FloatWindow/index.d.ts +28 -0
  46. package/dist/components/GridLayout/index.d.ts +42 -0
  47. package/dist/components/Icon/index.d.ts +26 -0
  48. package/dist/components/Icon/index.js +27 -0
  49. package/dist/components/Icon/index.js.map +1 -0
  50. package/dist/components/Image/index.d.ts +33 -0
  51. package/dist/components/Image/index.js +44 -0
  52. package/dist/components/Image/index.js.map +1 -0
  53. package/dist/components/Input/index.js +196 -197
  54. package/dist/components/Input/index.js.map +1 -1
  55. package/dist/components/Label/index.js +62 -74
  56. package/dist/components/Label/index.js.map +1 -1
  57. package/dist/components/Layout/index.js +134 -139
  58. package/dist/components/Layout/index.js.map +1 -1
  59. package/dist/components/List/index.js +45 -58
  60. package/dist/components/List/index.js.map +1 -1
  61. package/dist/components/Markdown/Markdown.js +106 -107
  62. package/dist/components/Markdown/Markdown.js.map +1 -1
  63. package/dist/components/Markdown/codeThemes.js +24 -33
  64. package/dist/components/Markdown/codeThemes.js.map +1 -1
  65. package/dist/components/Markdown/markdownComponents.js +203 -208
  66. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  67. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  68. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  69. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  70. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  71. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  72. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  73. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  74. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  75. package/dist/components/Modal/index.js +82 -82
  76. package/dist/components/Modal/index.js.map +1 -1
  77. package/dist/components/MultipleChoice/index.d.ts +44 -0
  78. package/dist/components/MultipleChoice/index.js +52 -0
  79. package/dist/components/MultipleChoice/index.js.map +1 -0
  80. package/dist/components/Notification/index.d.ts +17 -0
  81. package/dist/components/Page/index.d.ts +1 -1
  82. package/dist/components/Page/index.js +40 -71
  83. package/dist/components/Page/index.js.map +1 -1
  84. package/dist/components/PageHeader/index.js +28 -28
  85. package/dist/components/PageHeader/index.js.map +1 -1
  86. package/dist/components/ProtectedRoute/index.js +8 -9
  87. package/dist/components/ProtectedRoute/index.js.map +1 -1
  88. package/dist/components/Row/index.d.ts +28 -0
  89. package/dist/components/Row/index.js +30 -0
  90. package/dist/components/Row/index.js.map +1 -0
  91. package/dist/components/Select/index.js +251 -254
  92. package/dist/components/Select/index.js.map +1 -1
  93. package/dist/components/SidebarToggleButton/index.js +56 -59
  94. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  95. package/dist/components/Slider/index.d.ts +39 -0
  96. package/dist/components/Slider/index.js +52 -0
  97. package/dist/components/Slider/index.js.map +1 -0
  98. package/dist/components/Switch/index.d.ts +34 -0
  99. package/dist/components/Switch/index.js +55 -0
  100. package/dist/components/Switch/index.js.map +1 -0
  101. package/dist/components/Tab/index.d.ts +40 -0
  102. package/dist/components/Table/index.js +109 -121
  103. package/dist/components/Table/index.js.map +1 -1
  104. package/dist/components/Tabs/index.js +28 -38
  105. package/dist/components/Tabs/index.js.map +1 -1
  106. package/dist/components/Text/index.d.ts +43 -0
  107. package/dist/components/Text/index.js +55 -0
  108. package/dist/components/Text/index.js.map +1 -0
  109. package/dist/components/Tooltip/index.d.ts +23 -0
  110. package/dist/components/Tooltip/index.js +34 -0
  111. package/dist/components/Tooltip/index.js.map +1 -0
  112. package/dist/components/Tree/Tree.js +205 -205
  113. package/dist/components/Tree/Tree.js.map +1 -1
  114. package/dist/components/pro/ArticleContextMenu/index.js +86 -87
  115. package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
  116. package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
  117. package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
  118. package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
  119. package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
  120. package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
  121. package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
  122. package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
  123. package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
  124. package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
  125. package/dist/components/pro/Calendar/index.d.ts +7 -0
  126. package/dist/components/pro/Calendar/types.d.ts +151 -0
  127. package/dist/components/pro/Calendar/utils.d.ts +94 -0
  128. package/dist/components/pro/Chat/Chat.d.ts +6 -0
  129. package/dist/components/pro/Chat/index.d.ts +2 -0
  130. package/dist/components/pro/Chat/types.d.ts +84 -0
  131. package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -327
  132. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
  134. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  135. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
  136. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
  137. package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
  138. package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
  139. package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
  140. package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
  141. package/dist/components/pro/CodeEditor/langs/index.js +7 -15
  142. package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
  143. package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
  144. package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
  145. package/dist/components/pro/CodeEditor/langs/python.js +4 -40
  146. package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
  147. package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
  148. package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
  149. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
  150. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
  151. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
  152. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
  153. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
  154. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
  155. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
  156. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
  157. package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
  158. package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
  159. package/dist/components/pro/CodeEditor/themes.js +513 -483
  160. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  161. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  162. package/dist/components/pro/CodeEditor/utils.js +171 -175
  163. package/dist/components/pro/CodeEditor/utils.js.map +1 -1
  164. package/dist/components/pro/DataTable/DataTable.js +305 -306
  165. package/dist/components/pro/DataTable/DataTable.js.map +1 -1
  166. package/dist/components/pro/DataTable/Filters.js +299 -314
  167. package/dist/components/pro/DataTable/Filters.js.map +1 -1
  168. package/dist/components/pro/DataTable/PivotPanel.js +203 -204
  169. package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
  170. package/dist/components/pro/DataTable/PivotView.js +142 -144
  171. package/dist/components/pro/DataTable/PivotView.js.map +1 -1
  172. package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
  173. package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
  174. package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
  175. package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
  176. package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
  177. package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
  178. package/dist/components/pro/DataTable/components/TableBody.js +93 -94
  179. package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
  180. package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
  181. package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
  182. package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
  183. package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
  184. package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
  185. package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
  186. package/dist/components/pro/DataTable/extension.js +5 -5
  187. package/dist/components/pro/DataTable/extension.js.map +1 -1
  188. package/dist/components/pro/DataTable/pivotEngine.js +84 -92
  189. package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
  190. package/dist/components/pro/DataTable/pivotExtension.js +93 -93
  191. package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
  192. package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
  193. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  194. package/dist/components/pro/DataTable/tanstack-table.js +45 -62
  195. package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
  196. package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
  197. package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
  198. package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
  199. package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
  200. package/dist/components/pro/DataTable/utils.js +156 -168
  201. package/dist/components/pro/DataTable/utils.js.map +1 -1
  202. package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
  203. package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
  204. package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
  205. package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
  206. package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
  207. package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
  208. package/dist/components/pro/FileExplorer/FileIcon.js +189 -189
  209. package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
  210. package/dist/components/pro/FileExplorer/GridView.js +100 -100
  211. package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
  212. package/dist/components/pro/FileExplorer/ListView.js +209 -209
  213. package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
  214. package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
  215. package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
  216. package/dist/components/pro/Flow/Flow.js +920 -948
  217. package/dist/components/pro/Flow/Flow.js.map +1 -1
  218. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
  219. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  220. package/dist/components/pro/Flow/archify/build.js +85 -94
  221. package/dist/components/pro/Flow/archify/build.js.map +1 -1
  222. package/dist/components/pro/Flow/archify/convert.js +512 -519
  223. package/dist/components/pro/Flow/archify/convert.js.map +1 -1
  224. package/dist/components/pro/Flow/archify/palette.js +87 -104
  225. package/dist/components/pro/Flow/archify/palette.js.map +1 -1
  226. package/dist/components/pro/Flow/archify/presets.js +34 -37
  227. package/dist/components/pro/Flow/archify/presets.js.map +1 -1
  228. package/dist/components/pro/Flow/archify/spec.js +7 -7
  229. package/dist/components/pro/Flow/archify/spec.js.map +1 -1
  230. package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
  231. package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
  232. package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
  233. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  234. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
  235. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  236. package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
  237. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  238. package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
  239. package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
  240. package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
  241. package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
  242. package/dist/components/pro/Flow/constants.js +266 -278
  243. package/dist/components/pro/Flow/constants.js.map +1 -1
  244. package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
  245. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
  246. package/dist/components/pro/Flow/context/FlowContext.js +60 -61
  247. package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
  248. package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
  249. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  250. package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
  251. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  252. package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
  253. package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
  254. package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
  255. package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
  256. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
  257. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
  258. package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
  259. package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
  260. package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
  261. package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
  262. package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
  263. package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
  264. package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
  265. package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
  266. package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
  267. package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
  268. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
  269. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  270. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
  271. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
  272. package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -180
  273. package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
  274. package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
  275. package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
  276. package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
  277. package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
  278. package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
  279. package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
  280. package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
  281. package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
  282. package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
  283. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  284. package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
  285. package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
  286. package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
  287. package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
  288. package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
  289. package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
  290. package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
  291. package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
  292. package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
  293. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  294. package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
  295. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  296. package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
  297. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  298. package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
  299. package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
  300. package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -242
  301. package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
  302. package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
  303. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  304. package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
  305. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  306. package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
  307. package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
  308. package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
  309. package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
  310. package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
  311. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  312. package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
  313. package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
  314. package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
  315. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  316. package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
  317. package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
  318. package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
  319. package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
  320. package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
  321. package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
  322. package/dist/components/pro/Flow/nodes/shapes.js +556 -589
  323. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  324. package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
  325. package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
  326. package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
  327. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  328. package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
  329. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
  330. package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
  331. package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
  332. package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
  333. package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
  334. package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
  335. package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
  336. package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
  337. package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
  338. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
  339. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  340. package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
  341. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  342. package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
  343. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  344. package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -248
  345. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
  347. package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
  348. package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
  349. package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
  350. package/dist/components/pro/Flow/panels/ShapePalette.js +557 -572
  351. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  352. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
  353. package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
  354. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  355. package/dist/components/pro/Flow/types.js +26 -26
  356. package/dist/components/pro/Flow/types.js.map +1 -1
  357. package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
  358. package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
  359. package/dist/components/pro/Flow/utils/gradient.js +55 -55
  360. package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
  361. package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
  362. package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
  363. package/dist/components/pro/Flow/utils/themeColor.js +185 -195
  364. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
  365. package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
  366. package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
  367. package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
  368. package/dist/components/pro/Gantt/index.d.ts +6 -0
  369. package/dist/components/pro/Gantt/types.d.ts +478 -0
  370. package/dist/components/pro/Gantt/utils.d.ts +124 -0
  371. package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
  372. package/dist/components/pro/Resizable/index.d.ts +2 -0
  373. package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
  374. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  375. package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
  376. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  377. package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
  378. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  379. package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
  380. package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
  381. package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
  382. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  383. package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
  384. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  385. package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
  386. package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
  387. package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
  388. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  389. package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
  390. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  391. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
  392. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  393. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
  394. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  395. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
  396. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  397. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
  398. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
  399. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
  400. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  401. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
  402. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  403. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
  404. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  405. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
  406. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  407. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
  408. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
  409. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
  410. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  411. package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
  412. package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
  413. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
  414. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  415. package/dist/components/pro/RichTextEditor/types.js +75 -75
  416. package/dist/components/pro/RichTextEditor/types.js.map +1 -1
  417. package/dist/contexts/AppContext.d.ts +1 -1
  418. package/dist/contexts/AppContext.js +216 -221
  419. package/dist/contexts/AppContext.js.map +1 -1
  420. package/dist/data-table.js +15 -41
  421. package/dist/data-table.js.map +1 -1
  422. package/dist/dishui.css +1 -1
  423. package/dist/flow.js +27 -83
  424. package/dist/hooks/useClickOutside.js +18 -18
  425. package/dist/hooks/useClickOutside.js.map +1 -1
  426. package/dist/hooks/useContainerElement.js +9 -9
  427. package/dist/hooks/useContainerElement.js.map +1 -1
  428. package/dist/hooks/useControllableState.js +33 -35
  429. package/dist/hooks/useControllableState.js.map +1 -1
  430. package/dist/hooks/useCopyToClipboard.js +16 -16
  431. package/dist/hooks/useCopyToClipboard.js.map +1 -1
  432. package/dist/hooks/useDebounce.js +14 -14
  433. package/dist/hooks/useDebounce.js.map +1 -1
  434. package/dist/hooks/useDraggable.js +50 -50
  435. package/dist/hooks/useDraggable.js.map +1 -1
  436. package/dist/hooks/useTableColumns.js +39 -41
  437. package/dist/hooks/useTableColumns.js.map +1 -1
  438. package/dist/hooks/useTableData.js +67 -68
  439. package/dist/hooks/useTableData.js.map +1 -1
  440. package/dist/index-nostyled.d.ts +8 -0
  441. package/dist/index.d.ts +31 -3
  442. package/dist/index.js +106 -241
  443. package/dist/layouts/MainLayout.js +56 -56
  444. package/dist/layouts/MainLayout.js.map +1 -1
  445. package/dist/layouts/Navbar.js +214 -214
  446. package/dist/layouts/Navbar.js.map +1 -1
  447. package/dist/layouts/Sidebar.js +184 -186
  448. package/dist/layouts/Sidebar.js.map +1 -1
  449. package/dist/layouts/headbar/Headbar.js +25 -25
  450. package/dist/layouts/headbar/Headbar.js.map +1 -1
  451. package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
  452. package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
  453. package/dist/layouts/headbar/HeadbarSearch.js +120 -120
  454. package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
  455. package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
  456. package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
  457. package/dist/layouts/headbar/HeadbarTitle.js +26 -26
  458. package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
  459. package/dist/lite.js +9 -24
  460. package/dist/markdown.js +4 -9
  461. package/dist/pages/components/Calendar/index.d.ts +3 -0
  462. package/dist/pages/components/Calendar/index.en.d.ts +3 -0
  463. package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
  464. package/dist/pages/components/Chat/index.d.ts +3 -0
  465. package/dist/pages/components/Chat/index.en.d.ts +3 -0
  466. package/dist/pages/components/Chat/index.zh.d.ts +3 -0
  467. package/dist/pages/components/FloatWindow/index.d.ts +3 -0
  468. package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
  469. package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
  470. package/dist/pages/components/Gantt/index.d.ts +3 -0
  471. package/dist/pages/components/Gantt/index.en.d.ts +3 -0
  472. package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
  473. package/dist/pages/components/GridLayout/index.d.ts +3 -0
  474. package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
  475. package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
  476. package/dist/pages/components/Notification/index.d.ts +3 -0
  477. package/dist/pages/components/Notification/index.en.d.ts +3 -0
  478. package/dist/pages/components/Notification/index.zh.d.ts +3 -0
  479. package/dist/pages/components/Resizable/index.d.ts +3 -0
  480. package/dist/pages/components/Resizable/index.en.d.ts +3 -0
  481. package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
  482. package/dist/pages/components/Tab/index.d.ts +3 -0
  483. package/dist/pages/components/Tab/index.en.d.ts +3 -0
  484. package/dist/pages/components/Tab/index.zh.d.ts +3 -0
  485. package/dist/styles/themeStyles.js +87 -86
  486. package/dist/styles/themeStyles.js.map +1 -1
  487. package/dist/utils/cn.d.ts +13 -0
  488. package/dist/utils/cn.js +16 -0
  489. package/dist/utils/cn.js.map +1 -0
  490. package/dist/utils/i18n.js +700 -602
  491. package/dist/utils/i18n.js.map +1 -1
  492. package/dist/utils/menu.js +94 -94
  493. package/dist/utils/menu.js.map +1 -1
  494. package/dist/utils/rehype-code-meta.js +14 -14
  495. package/dist/utils/rehype-code-meta.js.map +1 -1
  496. package/dist/utils/remark-code-meta.js +9 -9
  497. package/dist/utils/remark-code-meta.js.map +1 -1
  498. package/dist/utils/routerBuilder.js +59 -60
  499. package/dist/utils/routerBuilder.js.map +1 -1
  500. package/dist/utils/selection.js +28 -29
  501. package/dist/utils/selection.js.map +1 -1
  502. package/dist/utils/themes.js +275 -255
  503. package/dist/utils/themes.js.map +1 -1
  504. package/package.json +19 -6
  505. package/dist/components/StatCard/index.d.ts +0 -24
  506. package/dist/components/StatCard/index.js +0 -90
  507. package/dist/components/StatCard/index.js.map +0 -1
@@ -0,0 +1,52 @@
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import t from "../Checkbox/index.js";
3
+ import { useCallback as n, useMemo as r, useState as i } from "react";
4
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
+ //#region src/components/MultipleChoice/index.tsx
6
+ var s = ({ options: s, value: c, defaultValue: l = [], onChange: u, orientation: d = "vertical", variant: f = "default", size: p = "sm", disabled: m = !1, maxSelected: h, label: g, name: _, className: v = "", style: y }) => {
7
+ let [b, x] = i(l), S = c !== void 0, C = r(() => new Set(S ? c : b), [
8
+ S,
9
+ c,
10
+ b
11
+ ]), w = n((e, t) => {
12
+ let n = Array.from(C), r = t ? [...n, e] : n.filter((t) => t !== e);
13
+ S || x(r), u?.(r);
14
+ }, [
15
+ C,
16
+ S,
17
+ u
18
+ ]), T = n((e, t) => {
19
+ t && h !== void 0 && C.size >= h || w(e, t);
20
+ }, [
21
+ w,
22
+ h,
23
+ C
24
+ ]);
25
+ return /* @__PURE__ */ o("div", {
26
+ className: e("w-full", v),
27
+ style: y,
28
+ children: [g !== void 0 && /* @__PURE__ */ a("div", {
29
+ className: "mb-1.5 text-sm font-medium text-base-content/80",
30
+ children: g
31
+ }), /* @__PURE__ */ a("div", {
32
+ className: e("gap-2", d === "horizontal" ? "flex flex-wrap items-center" : "flex flex-col"),
33
+ role: "group",
34
+ children: s.map((e) => {
35
+ let n = C.has(e.value), r = m || e.disabled;
36
+ return /* @__PURE__ */ a(t, {
37
+ label: e.label,
38
+ checked: n,
39
+ onChange: (t) => T(e.value, t),
40
+ variant: f === "default" ? "default" : f,
41
+ size: p,
42
+ disabled: r,
43
+ name: _
44
+ }, String(e.value));
45
+ })
46
+ })]
47
+ });
48
+ };
49
+ //#endregion
50
+ export { s as default };
51
+
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/MultipleChoice/index.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react';\nimport { cn } from '../../utils/cn';\nimport Checkbox from '../Checkbox';\n\nexport type MultipleChoiceOption = {\n /** Value submitted for this option. */\n value: string | number;\n /** Display label. */\n label: React.ReactNode;\n /** Disable this option only. */\n disabled?: boolean;\n};\n\nexport type MultipleChoiceVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'info'\n | 'success'\n | 'warning'\n | 'error';\n\nexport type MultipleChoiceProps = {\n /** Available options. */\n options: MultipleChoiceOption[];\n /** Controlled selected values. */\n value?: Array<string | number>;\n /** Uncontrolled initial selection. */\n defaultValue?: Array<string | number>;\n /** Change handler with the full selected-value array. */\n onChange?: (values: Array<string | number>) => void;\n /** Layout of the options. */\n orientation?: 'vertical' | 'horizontal';\n /** Color variant forwarded to each checkbox. */\n variant?: MultipleChoiceVariant;\n /** Size forwarded to each checkbox. */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n /** Disable the whole group. */\n disabled?: boolean;\n /** Limit the number of selectable options. */\n maxSelected?: number;\n /** Optional group label rendered above the options. */\n label?: React.ReactNode;\n /** Native name attribute for each checkbox. */\n name?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n /** Inline styles on the wrapper. */\n style?: React.CSSProperties;\n};\n\n/**\n * MultipleChoice —— A2UI 交互组件(v0.8):多选项组。\n * 基于 dishui Checkbox 的受控 / 非受控多选组,支持横竖排与最大选择数限制。\n */\nconst MultipleChoice: React.FC<MultipleChoiceProps> = ({\n options,\n value,\n defaultValue = [],\n onChange,\n orientation = 'vertical',\n variant = 'default',\n size = 'sm',\n disabled = false,\n maxSelected,\n label,\n name,\n className = '',\n style,\n}) => {\n const [internal, setInternal] = useState<Array<string | number>>(defaultValue);\n const isControlled = value !== undefined;\n const selected = useMemo(\n () => new Set<string | number>(isControlled ? (value as Array<string | number>) : internal),\n [isControlled, value, internal],\n );\n\n const toggle = useCallback(\n (optionValue: string | number, next: boolean) => {\n const base = Array.from(selected);\n const result = next ? [...base, optionValue] : base.filter((v) => v !== optionValue);\n if (!isControlled) setInternal(result);\n onChange?.(result);\n },\n [selected, isControlled, onChange],\n );\n\n const handleToggle = useCallback(\n (optionValue: string | number, next: boolean) => {\n // Enforce maxSelected only when turning a new option ON.\n if (next && maxSelected !== undefined && selected.size >= maxSelected) return;\n toggle(optionValue, next);\n },\n [toggle, maxSelected, selected],\n );\n\n return (\n <div className={cn('w-full', className)} style={style}>\n {label !== undefined && (\n <div className=\"mb-1.5 text-sm font-medium text-base-content/80\">{label}</div>\n )}\n <div\n className={cn(\n 'gap-2',\n orientation === 'horizontal' ? 'flex flex-wrap items-center' : 'flex flex-col',\n )}\n role=\"group\"\n >\n {options.map((option) => {\n const checked = selected.has(option.value);\n const optionDisabled = disabled || option.disabled;\n return (\n <Checkbox\n key={String(option.value)}\n label={option.label}\n checked={checked}\n onChange={(next) => handleToggle(option.value, next)}\n variant={variant === 'default' ? 'default' : variant}\n size={size}\n disabled={optionDisabled}\n name={name}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default MultipleChoice;\n"],"mappings":";;;;;AAwDA,IAAM,KAAiD,EACrD,YACA,UACA,kBAAe,CAAC,GAChB,aACA,iBAAc,YACd,aAAU,WACV,UAAO,MACP,cAAW,IACX,gBACA,UACA,SACA,eAAY,IACZ,eACI;CACJ,IAAM,CAAC,GAAU,KAAe,EAAiC,CAAY,GACvE,IAAe,MAAU,KAAA,GACzB,IAAW,QACT,IAAI,IAAqB,IAAgB,IAAmC,CAAQ,GAC1F;EAAC;EAAc;EAAO;CAAQ,CAChC,GAEM,IAAS,GACZ,GAA8B,MAAkB;EAC/C,IAAM,IAAO,MAAM,KAAK,CAAQ,GAC1B,IAAS,IAAO,CAAC,GAAG,GAAM,CAAW,IAAI,EAAK,QAAQ,MAAM,MAAM,CAAW;EAEnF,AADK,KAAc,EAAY,CAAM,GACrC,IAAW,CAAM;CACnB,GACA;EAAC;EAAU;EAAc;CAAQ,CACnC,GAEM,IAAe,GAClB,GAA8B,MAAkB;EAE3C,KAAQ,MAAgB,KAAA,KAAa,EAAS,QAAQ,KAC1D,EAAO,GAAa,CAAI;CAC1B,GACA;EAAC;EAAQ;EAAa;CAAQ,CAChC;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,EAAG,UAAU,CAAS;EAAU;EAAhD,UAAA,CACG,MAAU,KAAA,KACT,kBAAC,OAAD;GAAK,WAAU;GAAmD,UAAA;EAAW,CAAA,GAE/E,kBAAC,OAAD;GACE,WAAW,EACT,SACA,MAAgB,eAAe,gCAAgC,eACjE;GACA,MAAK;GAEJ,UAAA,EAAQ,KAAK,MAAW;IACvB,IAAM,IAAU,EAAS,IAAI,EAAO,KAAK,GACnC,IAAiB,KAAY,EAAO;IAC1C,OACE,kBAAC,GAAD;KAEE,OAAO,EAAO;KACL;KACT,WAAW,MAAS,EAAa,EAAO,OAAO,CAAI;KACnD,SAAS,MAAY,YAAY,YAAY;KACvC;KACN,UAAU;KACJ;IACP,GARM,OAAO,EAAO,KAAK,CAQzB;GAEL,CAAC;EACE,CAAA,CACF;;AAET"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ export type NotificationProps = {
3
+ children?: React.ReactNode;
4
+ title?: React.ReactNode;
5
+ /** Semantic tone (daisy `alert-*`). */
6
+ variant?: 'info' | 'success' | 'warning' | 'error' | 'neutral';
7
+ onClose?: () => void;
8
+ className?: string;
9
+ /**
10
+ * When set, the alert is wrapped in a daisy `toast` with placement classes,
11
+ * e.g. `toast-top toast-end` (default) or `toast-bottom toast-center`.
12
+ */
13
+ placement?: string | null;
14
+ closeLabel?: string;
15
+ };
16
+ declare const Notification: React.FC<NotificationProps>;
17
+ export default Notification;
@@ -4,7 +4,7 @@ import { PageHeaderProps } from '../PageHeader';
4
4
  * Page 布局脚手架
5
5
  * ----------------------------------------------------------------------------
6
6
  * 为管理后台等页面提供统一的「页头 + 主体 + 左右侧栏」骨架,配合 PageHeader、
7
- * StatCard 等组件使用。所有区域都是可选的,可按需组合。
7
+ * Card.Info 等组件使用。所有区域都是可选的,可按需组合。
8
8
  *
9
9
  * 典型结构:
10
10
  * <Page fullHeight>
@@ -1,74 +1,43 @@
1
- import n from "../PageHeader/index.js";
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import t from "../PageHeader/index.js";
2
3
  import "react";
3
- import { jsx as d } from "react/jsx-runtime";
4
- var t = (e) => typeof e == "number" ? `${e}px` : e, h = ({ fullHeight: e = !1, className: a = "", children: i, ...l }) => /* @__PURE__ */ d("div", {
5
- className: [
6
- "dishui-page flex w-full flex-col",
7
- e ? "h-full min-h-0" : "",
8
- a
9
- ].filter(Boolean).join(" "),
10
- ...l,
11
- children: i
12
- }), u = (e) => /* @__PURE__ */ d(n, { ...e }), g = ({ gap: e = 16, scroll: a = !1, className: i = "", style: l, children: o, ...r }) => /* @__PURE__ */ d("div", {
13
- className: [
14
- "dishui-page-body flex w-full flex-col md:flex-row",
15
- a ? "min-h-0 flex-1" : "",
16
- i
17
- ].filter(Boolean).join(" "),
18
- style: {
19
- gap: t(e),
20
- ...l
21
- },
22
- ...r,
23
- children: o
24
- }), p = ({ width: e = 260, bordered: a = !0, scroll: i = !0, hideOnMobile: l = !1, className: o = "", style: r, children: m, ...f }) => /* @__PURE__ */ d("aside", {
25
- className: [
26
- "dishui-page-left w-full shrink-0 md:w-(--dishui-aside-w)",
27
- a ? "md:border-r md:border-base-300 md:pr-4" : "",
28
- i ? "md:min-h-0 md:overflow-y-auto" : "",
29
- l ? "hidden md:block" : "",
30
- o
31
- ].filter(Boolean).join(" "),
32
- style: {
33
- "--dishui-aside-w": t(e),
34
- ...r
35
- },
36
- ...f,
37
- children: m
38
- }), w = ({ width: e = 320, bordered: a = !0, scroll: i = !0, hideOnMobile: l = !1, className: o = "", style: r, children: m, ...f }) => /* @__PURE__ */ d("aside", {
39
- className: [
40
- "dishui-page-right w-full shrink-0 md:w-(--dishui-aside-w)",
41
- a ? "md:border-l md:border-base-300 md:pl-4" : "",
42
- i ? "md:min-h-0 md:overflow-y-auto" : "",
43
- l ? "hidden md:block" : "",
44
- o
45
- ].filter(Boolean).join(" "),
46
- style: {
47
- "--dishui-aside-w": t(e),
48
- ...r
49
- },
50
- ...f,
51
- children: m
52
- }), v = ({ scroll: e = !1, className: a = "", children: i, ...l }) => /* @__PURE__ */ d("main", {
53
- className: [
54
- "dishui-page-main min-w-0 flex-1",
55
- e ? "min-h-0 overflow-y-auto" : "",
56
- a
57
- ].filter(Boolean).join(" "),
58
- ...l,
59
- children: i
60
- }), s = h;
61
- s.Header = u;
62
- s.Body = g;
63
- s.Left = p;
64
- s.Right = w;
65
- s.Main = v;
66
- export {
67
- g as PageBody,
68
- p as PageLeft,
69
- v as PageMain,
70
- w as PageRight,
71
- s as default
72
- };
4
+ import { jsx as n } from "react/jsx-runtime";
5
+ //#region src/components/Page/index.tsx
6
+ var r = (e) => typeof e == "number" ? `${e}px` : e, i = ({ fullHeight: t = !1, className: r = "", children: i, ...a }) => /* @__PURE__ */ n("div", {
7
+ className: e("dishui-page flex w-full flex-col", t && "h-full min-h-0", r),
8
+ ...a,
9
+ children: i
10
+ }), a = (e) => /* @__PURE__ */ n(t, { ...e }), o = ({ gap: t = 16, scroll: i = !1, className: a = "", style: o, children: s, ...c }) => /* @__PURE__ */ n("div", {
11
+ className: e("dishui-page-body flex w-full flex-col md:flex-row", i && "min-h-0 flex-1", a),
12
+ style: {
13
+ gap: r(t),
14
+ ...o
15
+ },
16
+ ...c,
17
+ children: s
18
+ }), s = ({ width: t = 260, bordered: i = !0, scroll: a = !0, hideOnMobile: o = !1, className: s = "", style: c, children: l, ...u }) => /* @__PURE__ */ n("aside", {
19
+ className: e("dishui-page-left w-full shrink-0 md:w-(--dishui-aside-w)", i && "md:border-r md:border-base-300 md:pr-4", a && "md:min-h-0 md:overflow-y-auto", o && "hidden md:block", s),
20
+ style: {
21
+ "--dishui-aside-w": r(t),
22
+ ...c
23
+ },
24
+ ...u,
25
+ children: l
26
+ }), c = ({ width: t = 320, bordered: i = !0, scroll: a = !0, hideOnMobile: o = !1, className: s = "", style: c, children: l, ...u }) => /* @__PURE__ */ n("aside", {
27
+ className: e("dishui-page-right w-full shrink-0 md:w-(--dishui-aside-w)", i && "md:border-l md:border-base-300 md:pl-4", a && "md:min-h-0 md:overflow-y-auto", o && "hidden md:block", s),
28
+ style: {
29
+ "--dishui-aside-w": r(t),
30
+ ...c
31
+ },
32
+ ...u,
33
+ children: l
34
+ }), l = ({ scroll: t = !1, className: r = "", children: i, ...a }) => /* @__PURE__ */ n("main", {
35
+ className: e("dishui-page-main min-w-0 flex-1", t && "min-h-0 overflow-y-auto", r),
36
+ ...a,
37
+ children: i
38
+ }), u = i;
39
+ u.Header = a, u.Body = o, u.Left = s, u.Right = c, u.Main = l;
40
+ //#endregion
41
+ export { o as PageBody, s as PageLeft, l as PageMain, c as PageRight, u as default };
73
42
 
74
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Page/index.tsx"],"sourcesContent":["import React from 'react';\nimport PageHeader, { PageHeaderProps } from '../PageHeader';\n\n/**\n * Page 布局脚手架\n * ----------------------------------------------------------------------------\n * 为管理后台等页面提供统一的「页头 + 主体 + 左右侧栏」骨架,配合 PageHeader、\n * StatCard 等组件使用。所有区域都是可选的,可按需组合。\n *\n * 典型结构:\n * <Page fullHeight>\n * <Page.Header title=\"用户管理\" actions={<Button>新建</Button>} />\n * <Page.Body scroll>\n * <Page.Left width={240}>筛选器</Page.Left>\n * <Page.Main scroll>主内容</Page.Main>\n * <Page.Right width={320}>详情</Page.Right>\n * </Page.Body>\n * </Page>\n */\n\nexport type PageProps = React.HTMLAttributes<HTMLDivElement> & {\n /** 是否占满父容器高度并启用内部滚动(主体区滚动,页头固定) */\n fullHeight?: boolean;\n};\n\nexport type PageBodyProps = React.HTMLAttributes<HTMLDivElement> & {\n /** 主体内的间距(left/main/right 之间),数字按 px 处理,默认 16 */\n gap?: number | string;\n /** 是否让主体区在剩余空间内滚动(配合 Page fullHeight 使用) */\n scroll?: boolean;\n};\n\nexport type PageAsideProps = React.HTMLAttributes<HTMLDivElement> & {\n /** 侧栏宽度,数字按 px 处理,默认 260 */\n width?: number | string;\n /** 是否显示分隔边框 */\n bordered?: boolean;\n /** 侧栏内部纵向滚动自适应 */\n scroll?: boolean;\n /** 小屏(<768px)下是否隐藏(侧栏通常在移动端折叠) */\n hideOnMobile?: boolean;\n};\n\nexport type PageMainProps = React.HTMLAttributes<HTMLDivElement> & {\n /** 主内容区是否在剩余空间内纵向滚动 */\n scroll?: boolean;\n};\n\nconst toCssSize = (value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst Page = ({ fullHeight = false, className = '', children, ...rest }: PageProps) => (\n <div\n className={[\n 'dishui-page flex w-full flex-col',\n fullHeight ? 'h-full min-h-0' : '',\n className,\n ].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </div>\n);\n\n/** 页头:直接复用 PageHeader,作为 Page.Header 使用 */\nconst PageHeaderSlot = (props: PageHeaderProps) => <PageHeader {...props} />;\n\nconst PageBody = ({ gap = 16, scroll = false, className = '', style, children, ...rest }: PageBodyProps) => (\n <div\n className={[\n 'dishui-page-body flex w-full flex-col md:flex-row',\n scroll ? 'min-h-0 flex-1' : '',\n className,\n ].filter(Boolean).join(' ')}\n style={{ gap: toCssSize(gap), ...style }}\n {...rest}\n >\n {children}\n </div>\n);\n\nconst PageLeft = ({\n width = 260,\n bordered = true,\n scroll = true,\n hideOnMobile = false,\n className = '',\n style,\n children,\n ...rest\n}: PageAsideProps) => (\n <aside\n className={[\n 'dishui-page-left w-full shrink-0 md:w-(--dishui-aside-w)',\n bordered ? 'md:border-r md:border-base-300 md:pr-4' : '',\n scroll ? 'md:min-h-0 md:overflow-y-auto' : '',\n hideOnMobile ? 'hidden md:block' : '',\n className,\n ].filter(Boolean).join(' ')}\n style={{ ['--dishui-aside-w' as string]: toCssSize(width), ...style }}\n {...rest}\n >\n {children}\n </aside>\n);\n\nconst PageRight = ({\n width = 320,\n bordered = true,\n scroll = true,\n hideOnMobile = false,\n className = '',\n style,\n children,\n ...rest\n}: PageAsideProps) => (\n <aside\n className={[\n 'dishui-page-right w-full shrink-0 md:w-(--dishui-aside-w)',\n bordered ? 'md:border-l md:border-base-300 md:pl-4' : '',\n scroll ? 'md:min-h-0 md:overflow-y-auto' : '',\n hideOnMobile ? 'hidden md:block' : '',\n className,\n ].filter(Boolean).join(' ')}\n style={{ ['--dishui-aside-w' as string]: toCssSize(width), ...style }}\n {...rest}\n >\n {children}\n </aside>\n);\n\nconst PageMain = ({ scroll = false, className = '', children, ...rest }: PageMainProps) => (\n <main\n className={[\n 'dishui-page-main min-w-0 flex-1',\n scroll ? 'min-h-0 overflow-y-auto' : '',\n className,\n ].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </main>\n);\n\ninterface PageCompound extends React.FC<PageProps> {\n Header: typeof PageHeaderSlot;\n Body: typeof PageBody;\n Left: typeof PageLeft;\n Right: typeof PageRight;\n Main: typeof PageMain;\n}\n\nconst PageWithCompounds = Page as PageCompound;\nPageWithCompounds.Header = PageHeaderSlot;\nPageWithCompounds.Body = PageBody;\nPageWithCompounds.Left = PageLeft;\nPageWithCompounds.Right = PageRight;\nPageWithCompounds.Main = PageMain;\n\nexport { PageBody, PageLeft, PageRight, PageMain };\nexport default PageWithCompounds;\n"],"mappings":";;;AAgDA,IAAM,IAAA,CAAa,MACf,OAAO,KAAU,WAAW,GAAG,CAAA,OAAY,GAEzC,IAAA,CAAQ,EAAE,YAAA,IAAa,IAAO,WAAA,IAAY,IAAI,UAAA,GAAU,GAAG,EAAA,MAC7D,gBAAA,EAAC,OAAD;AAAA,EACI,WAAW;AAAA,IACP;AAAA,IACA,IAAa,mBAAmB;AAAA,IAChC;AAAA,EACJ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC1B,GAAI;AAAA,EAEH,UAAA;AACA,CAAA,GAIH,IAAA,CAAkB,MAA2B,gBAAA,EAAC,GAAD,EAAY,GAAI,EAAQ,CAAA,GAErE,IAAA,CAAY,EAAE,KAAA,IAAM,IAAI,QAAA,IAAS,IAAO,WAAA,IAAY,IAAI,OAAA,GAAO,UAAA,GAAU,GAAG,EAAA,MAC9E,gBAAA,EAAC,OAAD;AAAA,EACI,WAAW;AAAA,IACP;AAAA,IACA,IAAS,mBAAmB;AAAA,IAC5B;AAAA,EACJ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC1B,OAAO;AAAA,IAAE,KAAK,EAAU,CAAG;AAAA,IAAG,GAAG;AAAA,EAAM;AAAA,EACvC,GAAI;AAAA,EAEH,UAAA;AACA,CAAA,GAGH,IAAA,CAAY,EACd,OAAA,IAAQ,KACR,UAAA,IAAW,IACX,QAAA,IAAS,IACT,cAAA,IAAe,IACf,WAAA,IAAY,IACZ,OAAA,GACA,UAAA,GACA,GAAG,EAAA,MAEH,gBAAA,EAAC,SAAD;AAAA,EACI,WAAW;AAAA,IACP;AAAA,IACA,IAAW,2CAA2C;AAAA,IACtD,IAAS,kCAAkC;AAAA,IAC3C,IAAe,oBAAoB;AAAA,IACnC;AAAA,EACJ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC1B,OAAO;AAAA,IAAG,oBAA+B,EAAU,CAAK;AAAA,IAAG,GAAG;AAAA,EAAM;AAAA,EACpE,GAAI;AAAA,EAEH,UAAA;AACE,CAAA,GAGL,IAAA,CAAa,EACf,OAAA,IAAQ,KACR,UAAA,IAAW,IACX,QAAA,IAAS,IACT,cAAA,IAAe,IACf,WAAA,IAAY,IACZ,OAAA,GACA,UAAA,GACA,GAAG,EAAA,MAEH,gBAAA,EAAC,SAAD;AAAA,EACI,WAAW;AAAA,IACP;AAAA,IACA,IAAW,2CAA2C;AAAA,IACtD,IAAS,kCAAkC;AAAA,IAC3C,IAAe,oBAAoB;AAAA,IACnC;AAAA,EACJ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC1B,OAAO;AAAA,IAAG,oBAA+B,EAAU,CAAK;AAAA,IAAG,GAAG;AAAA,EAAM;AAAA,EACpE,GAAI;AAAA,EAEH,UAAA;AACE,CAAA,GAGL,IAAA,CAAY,EAAE,QAAA,IAAS,IAAO,WAAA,IAAY,IAAI,UAAA,GAAU,GAAG,EAAA,MAC7D,gBAAA,EAAC,QAAD;AAAA,EACI,WAAW;AAAA,IACP;AAAA,IACA,IAAS,4BAA4B;AAAA,IACrC;AAAA,EACJ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC1B,GAAI;AAAA,EAEH,UAAA;AACC,CAAA,GAWJ,IAAoB;AAC1B,EAAkB,SAAS;AAC3B,EAAkB,OAAO;AACzB,EAAkB,OAAO;AACzB,EAAkB,QAAQ;AAC1B,EAAkB,OAAO"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Page/index.tsx"],"sourcesContent":["import React from 'react';\nimport PageHeader, { PageHeaderProps } from '../PageHeader';\nimport { cn } from '../../utils/cn';\n\n/**\n * Page 布局脚手架\n * ----------------------------------------------------------------------------\n * 为管理后台等页面提供统一的「页头 + 主体 + 左右侧栏」骨架,配合 PageHeader、\n * Card.Info 等组件使用。所有区域都是可选的,可按需组合。\n *\n * 典型结构:\n * <Page fullHeight>\n * <Page.Header title=\"用户管理\" actions={<Button>新建</Button>} />\n * <Page.Body scroll>\n * <Page.Left width={240}>筛选器</Page.Left>\n * <Page.Main scroll>主内容</Page.Main>\n * <Page.Right width={320}>详情</Page.Right>\n * </Page.Body>\n * </Page>\n */\n\nexport type PageProps = React.HTMLAttributes<HTMLDivElement> & {\n /** 是否占满父容器高度并启用内部滚动(主体区滚动,页头固定) */\n fullHeight?: boolean;\n};\n\nexport type PageBodyProps = React.HTMLAttributes<HTMLDivElement> & {\n /** 主体内的间距(left/main/right 之间),数字按 px 处理,默认 16 */\n gap?: number | string;\n /** 是否让主体区在剩余空间内滚动(配合 Page fullHeight 使用) */\n scroll?: boolean;\n};\n\nexport type PageAsideProps = React.HTMLAttributes<HTMLDivElement> & {\n /** 侧栏宽度,数字按 px 处理,默认 260 */\n width?: number | string;\n /** 是否显示分隔边框 */\n bordered?: boolean;\n /** 侧栏内部纵向滚动自适应 */\n scroll?: boolean;\n /** 小屏(<768px)下是否隐藏(侧栏通常在移动端折叠) */\n hideOnMobile?: boolean;\n};\n\nexport type PageMainProps = React.HTMLAttributes<HTMLDivElement> & {\n /** 主内容区是否在剩余空间内纵向滚动 */\n scroll?: boolean;\n};\n\nconst toCssSize = (value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst Page = ({ fullHeight = false, className = '', children, ...rest }: PageProps) => (\n <div\n className={cn(\n 'dishui-page flex w-full flex-col',\n fullHeight && 'h-full min-h-0',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n\n/** 页头:直接复用 PageHeader,作为 Page.Header 使用 */\nconst PageHeaderSlot = (props: PageHeaderProps) => <PageHeader {...props} />;\n\nconst PageBody = ({ gap = 16, scroll = false, className = '', style, children, ...rest }: PageBodyProps) => (\n <div\n className={cn(\n 'dishui-page-body flex w-full flex-col md:flex-row',\n scroll && 'min-h-0 flex-1',\n className,\n )}\n style={{ gap: toCssSize(gap), ...style }}\n {...rest}\n >\n {children}\n </div>\n);\n\nconst PageLeft = ({\n width = 260,\n bordered = true,\n scroll = true,\n hideOnMobile = false,\n className = '',\n style,\n children,\n ...rest\n}: PageAsideProps) => (\n <aside\n className={cn(\n 'dishui-page-left w-full shrink-0 md:w-(--dishui-aside-w)',\n bordered && 'md:border-r md:border-base-300 md:pr-4',\n scroll && 'md:min-h-0 md:overflow-y-auto',\n hideOnMobile && 'hidden md:block',\n className,\n )}\n style={{ ['--dishui-aside-w' as string]: toCssSize(width), ...style }}\n {...rest}\n >\n {children}\n </aside>\n);\n\nconst PageRight = ({\n width = 320,\n bordered = true,\n scroll = true,\n hideOnMobile = false,\n className = '',\n style,\n children,\n ...rest\n}: PageAsideProps) => (\n <aside\n className={cn(\n 'dishui-page-right w-full shrink-0 md:w-(--dishui-aside-w)',\n bordered && 'md:border-l md:border-base-300 md:pl-4',\n scroll && 'md:min-h-0 md:overflow-y-auto',\n hideOnMobile && 'hidden md:block',\n className,\n )}\n style={{ ['--dishui-aside-w' as string]: toCssSize(width), ...style }}\n {...rest}\n >\n {children}\n </aside>\n);\n\nconst PageMain = ({ scroll = false, className = '', children, ...rest }: PageMainProps) => (\n <main\n className={cn(\n 'dishui-page-main min-w-0 flex-1',\n scroll && 'min-h-0 overflow-y-auto',\n className,\n )}\n {...rest}\n >\n {children}\n </main>\n);\n\ninterface PageCompound extends React.FC<PageProps> {\n Header: typeof PageHeaderSlot;\n Body: typeof PageBody;\n Left: typeof PageLeft;\n Right: typeof PageRight;\n Main: typeof PageMain;\n}\n\nconst PageWithCompounds = Page as PageCompound;\nPageWithCompounds.Header = PageHeaderSlot;\nPageWithCompounds.Body = PageBody;\nPageWithCompounds.Left = PageLeft;\nPageWithCompounds.Right = PageRight;\nPageWithCompounds.Main = PageMain;\n\nexport { PageBody, PageLeft, PageRight, PageMain };\nexport default PageWithCompounds;\n"],"mappings":";;;;;AAiDA,IAAM,KAAa,MACf,OAAO,KAAU,WAAW,GAAG,EAAM,MAAM,GAEzC,KAAQ,EAAE,gBAAa,IAAO,eAAY,IAAI,aAAU,GAAG,QAC7D,kBAAC,OAAD;CACI,WAAW,EACP,oCACA,KAAc,kBACd,CACJ;CACA,GAAI;CAEH;AACA,CAAA,GAIH,KAAkB,MAA2B,kBAAC,GAAD,EAAY,GAAI,EAAQ,CAAA,GAErE,KAAY,EAAE,SAAM,IAAI,YAAS,IAAO,eAAY,IAAI,UAAO,aAAU,GAAG,QAC9E,kBAAC,OAAD;CACI,WAAW,EACP,qDACA,KAAU,kBACV,CACJ;CACA,OAAO;EAAE,KAAK,EAAU,CAAG;EAAG,GAAG;CAAM;CACvC,GAAI;CAEH;AACA,CAAA,GAGH,KAAY,EACd,WAAQ,KACR,cAAW,IACX,YAAS,IACT,kBAAe,IACf,eAAY,IACZ,UACA,aACA,GAAG,QAEH,kBAAC,SAAD;CACI,WAAW,EACP,4DACA,KAAY,0CACZ,KAAU,iCACV,KAAgB,mBAChB,CACJ;CACA,OAAO;EAAG,oBAA+B,EAAU,CAAK;EAAG,GAAG;CAAM;CACpE,GAAI;CAEH;AACE,CAAA,GAGL,KAAa,EACf,WAAQ,KACR,cAAW,IACX,YAAS,IACT,kBAAe,IACf,eAAY,IACZ,UACA,aACA,GAAG,QAEH,kBAAC,SAAD;CACI,WAAW,EACP,6DACA,KAAY,0CACZ,KAAU,iCACV,KAAgB,mBAChB,CACJ;CACA,OAAO;EAAG,oBAA+B,EAAU,CAAK;EAAG,GAAG;CAAM;CACpE,GAAI;CAEH;AACE,CAAA,GAGL,KAAY,EAAE,YAAS,IAAO,eAAY,IAAI,aAAU,GAAG,QAC7D,kBAAC,QAAD;CACI,WAAW,EACP,mCACA,KAAU,2BACV,CACJ;CACA,GAAI;CAEH;AACC,CAAA,GAWJ,IAAoB;AAC1B,EAAkB,SAAS,GAC3B,EAAkB,OAAO,GACzB,EAAkB,OAAO,GACzB,EAAkB,QAAQ,GAC1B,EAAkB,OAAO"}
@@ -1,32 +1,32 @@
1
1
  import "react";
2
- import { jsx as e, jsxs as s } from "react/jsx-runtime";
3
- var f = ({ title: i, description: a, icon: r, actions: l, compact: t = !0, className: n = "" }) => {
4
- const m = t ? "text-lg" : "text-2xl", c = t ? "[&>svg]:h-5 [&>svg]:w-5" : "[&>svg]:h-6 [&>svg]:w-6";
5
- return /* @__PURE__ */ s("div", {
6
- className: `flex flex-wrap items-start justify-between gap-3 ${t ? "mb-5" : "mb-8"} ${n}`.trim(),
7
- children: [/* @__PURE__ */ s("div", {
8
- className: "min-w-0",
9
- children: [/* @__PURE__ */ s("div", {
10
- className: "flex items-center gap-2.5",
11
- children: [r && /* @__PURE__ */ e("span", {
12
- className: `shrink-0 text-primary ${c}`,
13
- children: r
14
- }), /* @__PURE__ */ e("h1", {
15
- className: `truncate font-bold text-base-content ${m}`,
16
- children: i
17
- })]
18
- }), a && /* @__PURE__ */ e("p", {
19
- className: "mt-0.5 text-xs text-base-content/60",
20
- children: a
21
- })]
22
- }), l && /* @__PURE__ */ e("div", {
23
- className: "flex shrink-0 items-center gap-2",
24
- children: l
25
- })]
26
- });
27
- };
28
- export {
29
- f as default
2
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
3
+ //#region src/components/PageHeader/index.tsx
4
+ var n = ({ title: n, description: r, icon: i, actions: a, compact: o = !0, className: s = "" }) => {
5
+ let c = o ? "text-lg" : "text-2xl", l = o ? "[&>svg]:h-5 [&>svg]:w-5" : "[&>svg]:h-6 [&>svg]:w-6";
6
+ return /* @__PURE__ */ t("div", {
7
+ className: `flex flex-wrap items-start justify-between gap-3 ${o ? "mb-5" : "mb-8"} ${s}`.trim(),
8
+ children: [/* @__PURE__ */ t("div", {
9
+ className: "min-w-0",
10
+ children: [/* @__PURE__ */ t("div", {
11
+ className: "flex items-center gap-2.5",
12
+ children: [i && /* @__PURE__ */ e("span", {
13
+ className: `shrink-0 text-primary ${l}`,
14
+ children: i
15
+ }), /* @__PURE__ */ e("h1", {
16
+ className: `truncate font-bold text-base-content ${c}`,
17
+ children: n
18
+ })]
19
+ }), r && /* @__PURE__ */ e("p", {
20
+ className: "mt-0.5 text-xs text-base-content/60",
21
+ children: r
22
+ })]
23
+ }), a && /* @__PURE__ */ e("div", {
24
+ className: "flex shrink-0 items-center gap-2",
25
+ children: a
26
+ })]
27
+ });
30
28
  };
29
+ //#endregion
30
+ export { n as default };
31
31
 
32
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/PageHeader/index.tsx"],"sourcesContent":["import React from 'react';\n\nexport type PageHeaderProps = {\n /** 页面标题 */\n title: React.ReactNode;\n /** 标题下方的描述文字 */\n description?: React.ReactNode;\n /** 标题左侧的图标(通常为 lucide 图标) */\n icon?: React.ReactNode;\n /** 右侧操作区(按钮组等) */\n actions?: React.ReactNode;\n /** 紧凑模式:标题与间距更小 */\n compact?: boolean;\n className?: string;\n};\n\n/**\n * 页面头部:统一管理后台等页面的标题 / 描述 / 操作区排版。\n * 相比页面内手写的 `text-3xl` 标题,默认字号更精致(text-lg)。\n */\nconst PageHeader = ({\n title,\n description,\n icon,\n actions,\n compact = true,\n className = '',\n}: PageHeaderProps) => {\n const titleSize = compact ? 'text-lg' : 'text-2xl';\n const iconSize = compact ? '[&>svg]:h-5 [&>svg]:w-5' : '[&>svg]:h-6 [&>svg]:w-6';\n const spacing = compact ? 'mb-5' : 'mb-8';\n\n return (\n <div className={`flex flex-wrap items-start justify-between gap-3 ${spacing} ${className}`.trim()}>\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2.5\">\n {icon && (\n <span className={`shrink-0 text-primary ${iconSize}`}>{icon}</span>\n )}\n <h1 className={`truncate font-bold text-base-content ${titleSize}`}>{title}</h1>\n </div>\n {description && (\n <p className=\"mt-0.5 text-xs text-base-content/60\">{description}</p>\n )}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n </div>\n );\n};\n\nexport default PageHeader;\n"],"mappings":";;AAoBA,IAAM,IAAA,CAAc,EAChB,OAAA,GACA,aAAA,GACA,MAAA,GACA,SAAA,GACA,SAAA,IAAU,IACV,WAAA,IAAY,GAAA,MACO;AACnB,QAAM,IAAY,IAAU,YAAY,YAClC,IAAW,IAAU,4BAA4B;AAGvD,SACI,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,oDAHJ,IAAU,SAAS,MAAA,IAGgD,CAAA,GAAY,KAAK;AAAA,IAAhG,UAAA,CACI,gBAAA,EAAC,OAAD;AAAA,MAAK,WAAU;AAAA,MAAf,UAAA,CACI,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,QAAf,UAAA,CACK,KACG,gBAAA,EAAC,QAAD;AAAA,UAAM,WAAW,yBAAyB,CAAA;AAAA,UAAa,UAAA;AAAA,QAAW,CAAA,GAEtE,gBAAA,EAAC,MAAD;AAAA,UAAI,WAAW,wCAAwC,CAAA;AAAA,UAAc,UAAA;AAAA,QAAU,CAAA,CAC9E;AAAA,MACJ,CAAA,GAAA,KACG,gBAAA,EAAC,KAAD;AAAA,QAAG,WAAU;AAAA,QAAuC,UAAA;AAAA,MAAe,CAAA,CAEtE;AAAA,IACJ,CAAA,GAAA,KAAW,gBAAA,EAAC,OAAD;AAAA,MAAK,WAAU;AAAA,MAAoC,UAAA;AAAA,IAAa,CAAA,CAC3E;AAAA;AAEb"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/PageHeader/index.tsx"],"sourcesContent":["import React from 'react';\n\nexport type PageHeaderProps = {\n /** 页面标题 */\n title: React.ReactNode;\n /** 标题下方的描述文字 */\n description?: React.ReactNode;\n /** 标题左侧的图标(通常为 lucide 图标) */\n icon?: React.ReactNode;\n /** 右侧操作区(按钮组等) */\n actions?: React.ReactNode;\n /** 紧凑模式:标题与间距更小 */\n compact?: boolean;\n className?: string;\n};\n\n/**\n * 页面头部:统一管理后台等页面的标题 / 描述 / 操作区排版。\n * 相比页面内手写的 `text-3xl` 标题,默认字号更精致(text-lg)。\n */\nconst PageHeader = ({\n title,\n description,\n icon,\n actions,\n compact = true,\n className = '',\n}: PageHeaderProps) => {\n const titleSize = compact ? 'text-lg' : 'text-2xl';\n const iconSize = compact ? '[&>svg]:h-5 [&>svg]:w-5' : '[&>svg]:h-6 [&>svg]:w-6';\n const spacing = compact ? 'mb-5' : 'mb-8';\n\n return (\n <div className={`flex flex-wrap items-start justify-between gap-3 ${spacing} ${className}`.trim()}>\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2.5\">\n {icon && (\n <span className={`shrink-0 text-primary ${iconSize}`}>{icon}</span>\n )}\n <h1 className={`truncate font-bold text-base-content ${titleSize}`}>{title}</h1>\n </div>\n {description && (\n <p className=\"mt-0.5 text-xs text-base-content/60\">{description}</p>\n )}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n </div>\n );\n};\n\nexport default PageHeader;\n"],"mappings":";;;AAoBA,IAAM,KAAc,EAChB,UACA,gBACA,SACA,YACA,aAAU,IACV,eAAY,SACO;CACnB,IAAM,IAAY,IAAU,YAAY,YAClC,IAAW,IAAU,4BAA4B;CAGvD,OACI,kBAAC,OAAD;EAAK,WAAW,oDAHJ,IAAU,SAAS,OAG6C,GAAG,IAAY,KAAK;EAAhG,UAAA,CACI,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACI,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACK,KACG,kBAAC,QAAD;KAAM,WAAW,yBAAyB;KAAa,UAAA;IAAW,CAAA,GAEtE,kBAAC,MAAD;KAAI,WAAW,wCAAwC;KAAc,UAAA;IAAU,CAAA,CAC9E;GACJ,CAAA,GAAA,KACG,kBAAC,KAAD;IAAG,WAAU;IAAuC,UAAA;GAAe,CAAA,CAEtE;EACJ,CAAA,GAAA,KAAW,kBAAC,OAAD;GAAK,WAAU;GAAoC,UAAA;EAAa,CAAA,CAC3E;;AAEb"}
@@ -1,13 +1,12 @@
1
- import { useAuth as m } from "../../contexts/AppContext.js";
1
+ import { useAuth as e } from "../../contexts/AppContext.js";
2
2
  import "react";
3
- import { Fragment as t, jsx as i } from "react/jsx-runtime";
4
- var c = ({ children: o, requiredRoles: n = [], requireAny: r = !1, fallbackPath: f = "/login", fallback: e }) => {
5
- const { isAuthenticated: u, hasRole: d, hasAnyRole: h } = m();
6
- return u ? n.length > 0 && !(r ? h(n) : n.every((w) => d(w))) ? e ? /* @__PURE__ */ i(t, { children: e }) : (typeof window < "u" && (window.location.href = "/unauthorized"), null) : /* @__PURE__ */ i(t, { children: o }) : e ? /* @__PURE__ */ i(t, { children: e }) : (typeof window < "u" && (window.location.href = f), null);
7
- };
8
- export {
9
- c as ProtectedRoute,
10
- c as default
3
+ import { Fragment as t, jsx as n } from "react/jsx-runtime";
4
+ //#region src/components/ProtectedRoute/index.tsx
5
+ var r = ({ children: r, requiredRoles: i = [], requireAny: a = !1, fallbackPath: o = "/login", fallback: s }) => {
6
+ let { isAuthenticated: c, hasRole: l, hasAnyRole: u } = e();
7
+ return c ? i.length > 0 && !(a ? u(i) : i.every((e) => l(e))) ? s ? /* @__PURE__ */ n(t, { children: s }) : (typeof window < "u" && (window.location.href = "/unauthorized"), null) : /* @__PURE__ */ n(t, { children: r }) : s ? /* @__PURE__ */ n(t, { children: s }) : (typeof window < "u" && (window.location.href = o), null);
11
8
  };
9
+ //#endregion
10
+ export { r as ProtectedRoute, r as default };
12
11
 
13
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/ProtectedRoute/index.tsx"],"sourcesContent":["import React from 'react';\nimport { useAuth } from '../../contexts/AppContext';\n\nexport type ProtectedRouteProps = {\n children: React.ReactNode;\n requiredRoles?: string[];\n requireAny?: boolean; // 如果为 true,只需要满足任一角色;如果为 false,需要满足所有角色\n fallbackPath?: string;\n fallback?: React.ReactNode;\n};\n\n/**\n * ProtectedRoute 组件\n * \n * 用于保护需要认证或特定角色才能访问的路由\n * \n * @example\n * ```tsx\n * // 基本用法 - 只需要认证\n * <ProtectedRoute>\n * <AdminPanel />\n * </ProtectedRoute>\n * \n * // 需要特定角色\n * <ProtectedRoute requiredRoles={['admin']}>\n * <AdminPanel />\n * </ProtectedRoute>\n * \n * // 需要任一角色\n * <ProtectedRoute requiredRoles={['admin', 'moderator']} requireAny>\n * <ModeratorPanel />\n * </ProtectedRoute>\n * \n * // 自定义回退路径\n * <ProtectedRoute fallbackPath=\"/unauthorized\">\n * <SecretPage />\n * </ProtectedRoute>\n * \n * // 自定义回退组件\n * <ProtectedRoute fallback={<UnauthorizedMessage />}>\n * <SecretPage />\n * </ProtectedRoute>\n * ```\n */\nexport const ProtectedRoute: React.FC<ProtectedRouteProps> = ({\n children,\n requiredRoles = [],\n requireAny = false,\n fallbackPath = '/login',\n fallback,\n}) => {\n const { isAuthenticated, hasRole, hasAnyRole } = useAuth();\n\n // 检查是否已认证\n if (!isAuthenticated) {\n if (fallback) {\n return <>{fallback}</>;\n }\n // 使用 window.location 进行重定向,避免类型问题\n if (typeof window !== 'undefined') {\n window.location.href = fallbackPath;\n }\n return null;\n }\n\n // 如果需要特定角色\n if (requiredRoles.length > 0) {\n const hasRequiredRoles = requireAny \n ? hasAnyRole(requiredRoles)\n : requiredRoles.every(role => hasRole(role));\n\n if (!hasRequiredRoles) {\n if (fallback) {\n return <>{fallback}</>;\n }\n // 使用 window.location 进行重定向\n if (typeof window !== 'undefined') {\n window.location.href = '/unauthorized';\n }\n return null;\n }\n }\n\n return <>{children}</>;\n};\n\nexport default ProtectedRoute;\n\n"],"mappings":";;;AA4CA,IAAa,IAAA,CAAiD,EAC5D,UAAA,GACA,eAAA,IAAgB,CAAC,GACjB,YAAA,IAAa,IACb,cAAA,IAAe,UACf,UAAA,EAAA,MACI;AACJ,QAAM,EAAE,iBAAA,GAAiB,SAAA,GAAS,YAAA,EAAA,IAAe,EAAQ;AAGzD,SAAK,IAYD,EAAc,SAAS,KAKrB,EAJqB,IACrB,EAAW,CAAa,IACxB,EAAc,MAAA,CAAM,MAAQ,EAAQ,CAAI,CAAC,KAGvC,IACK,gBAAA,EAAA,GAAA,EAAA,UAAG,EAAW,CAAA,KAGnB,OAAO,SAAW,QACpB,OAAO,SAAS,OAAO,kBAElB,QAIJ,gBAAA,EAAA,GAAA,EAAG,UAAA,EAAW,CAAA,IA5Bf,IACK,gBAAA,EAAA,GAAA,EAAA,UAAG,EAAW,CAAA,KAGnB,OAAO,SAAW,QACpB,OAAO,SAAS,OAAO,IAElB;AAsBX"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/ProtectedRoute/index.tsx"],"sourcesContent":["import React from 'react';\nimport { useAuth } from '../../contexts/AppContext';\n\nexport type ProtectedRouteProps = {\n children: React.ReactNode;\n requiredRoles?: string[];\n requireAny?: boolean; // 如果为 true,只需要满足任一角色;如果为 false,需要满足所有角色\n fallbackPath?: string;\n fallback?: React.ReactNode;\n};\n\n/**\n * ProtectedRoute 组件\n * \n * 用于保护需要认证或特定角色才能访问的路由\n * \n * @example\n * ```tsx\n * // 基本用法 - 只需要认证\n * <ProtectedRoute>\n * <AdminPanel />\n * </ProtectedRoute>\n * \n * // 需要特定角色\n * <ProtectedRoute requiredRoles={['admin']}>\n * <AdminPanel />\n * </ProtectedRoute>\n * \n * // 需要任一角色\n * <ProtectedRoute requiredRoles={['admin', 'moderator']} requireAny>\n * <ModeratorPanel />\n * </ProtectedRoute>\n * \n * // 自定义回退路径\n * <ProtectedRoute fallbackPath=\"/unauthorized\">\n * <SecretPage />\n * </ProtectedRoute>\n * \n * // 自定义回退组件\n * <ProtectedRoute fallback={<UnauthorizedMessage />}>\n * <SecretPage />\n * </ProtectedRoute>\n * ```\n */\nexport const ProtectedRoute: React.FC<ProtectedRouteProps> = ({\n children,\n requiredRoles = [],\n requireAny = false,\n fallbackPath = '/login',\n fallback,\n}) => {\n const { isAuthenticated, hasRole, hasAnyRole } = useAuth();\n\n // 检查是否已认证\n if (!isAuthenticated) {\n if (fallback) {\n return <>{fallback}</>;\n }\n // 使用 window.location 进行重定向,避免类型问题\n if (typeof window !== 'undefined') {\n window.location.href = fallbackPath;\n }\n return null;\n }\n\n // 如果需要特定角色\n if (requiredRoles.length > 0) {\n const hasRequiredRoles = requireAny \n ? hasAnyRole(requiredRoles)\n : requiredRoles.every(role => hasRole(role));\n\n if (!hasRequiredRoles) {\n if (fallback) {\n return <>{fallback}</>;\n }\n // 使用 window.location 进行重定向\n if (typeof window !== 'undefined') {\n window.location.href = '/unauthorized';\n }\n return null;\n }\n }\n\n return <>{children}</>;\n};\n\nexport default ProtectedRoute;\n\n"],"mappings":";;;;AA4CA,IAAa,KAAiD,EAC5D,aACA,mBAAgB,CAAC,GACjB,gBAAa,IACb,kBAAe,UACf,kBACI;CACJ,IAAM,EAAE,oBAAiB,YAAS,kBAAe,EAAQ;CAgCzD,OA7BK,IAYD,EAAc,SAAS,KAKrB,EAJqB,IACrB,EAAW,CAAa,IACxB,EAAc,OAAM,MAAQ,EAAQ,CAAI,CAAC,KAGvC,IACK,kBAAA,GAAA,EAAA,UAAG,EAAW,CAAA,KAGnB,OAAO,SAAW,QACpB,OAAO,SAAS,OAAO,kBAElB,QAIJ,kBAAA,GAAA,EAAG,YAAW,CAAA,IA5Bf,IACK,kBAAA,GAAA,EAAA,UAAG,EAAW,CAAA,KAGnB,OAAO,SAAW,QACpB,OAAO,SAAS,OAAO,IAElB;AAsBX"}
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ export type RowAlign = 'start' | 'center' | 'end' | 'baseline' | 'stretch';
3
+ export type RowJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
4
+ export type RowProps = {
5
+ children?: React.ReactNode;
6
+ /** Gap between children; number is treated as px. */
7
+ gap?: number | string;
8
+ /** Cross-axis alignment. */
9
+ align?: RowAlign;
10
+ /** Main-axis distribution. */
11
+ justify?: RowJustify;
12
+ /** Allow children to wrap onto the next line. */
13
+ wrap?: boolean;
14
+ /** Reverse the visual order of children. */
15
+ reverse?: boolean;
16
+ /** Extra class names on the container. */
17
+ className?: string;
18
+ /** Inline styles on the container. */
19
+ style?: React.CSSProperties;
20
+ /** Click handler on the container. */
21
+ onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
22
+ };
23
+ /**
24
+ * Row —— A2UI 布局组件:水平排列子元素。
25
+ * 等价于 `display: flex; flex-direction: row` 的语义化封装。
26
+ */
27
+ declare const Row: React.FC<RowProps>;
28
+ export default Row;
@@ -0,0 +1,30 @@
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import "react";
3
+ import { jsx as t } from "react/jsx-runtime";
4
+ //#region src/components/Row/index.tsx
5
+ var n = {
6
+ start: "items-start",
7
+ center: "items-center",
8
+ end: "items-end",
9
+ baseline: "items-baseline",
10
+ stretch: "items-stretch"
11
+ }, r = {
12
+ start: "justify-start",
13
+ center: "justify-center",
14
+ end: "justify-end",
15
+ between: "justify-between",
16
+ around: "justify-around",
17
+ evenly: "justify-evenly"
18
+ }, i = (e) => typeof e == "number" ? `${e}px` : e, a = ({ children: a, gap: o, align: s = "center", justify: c = "start", wrap: l = !1, reverse: u = !1, className: d = "", style: f, onClick: p }) => /* @__PURE__ */ t("div", {
19
+ className: e("flex", u ? "flex-row-reverse" : "flex-row", n[s], r[c], l && "flex-wrap", d),
20
+ style: {
21
+ gap: i(o),
22
+ ...f
23
+ },
24
+ onClick: p,
25
+ children: a
26
+ });
27
+ //#endregion
28
+ export { a as default };
29
+
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Row/index.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type RowAlign = 'start' | 'center' | 'end' | 'baseline' | 'stretch';\nexport type RowJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\nexport type RowProps = {\n children?: React.ReactNode;\n /** Gap between children; number is treated as px. */\n gap?: number | string;\n /** Cross-axis alignment. */\n align?: RowAlign;\n /** Main-axis distribution. */\n justify?: RowJustify;\n /** Allow children to wrap onto the next line. */\n wrap?: boolean;\n /** Reverse the visual order of children. */\n reverse?: boolean;\n /** Extra class names on the container. */\n className?: string;\n /** Inline styles on the container. */\n style?: React.CSSProperties;\n /** Click handler on the container. */\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n};\n\nconst ALIGN_CLASS: Record<RowAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n};\n\nconst JUSTIFY_CLASS: Record<RowJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n};\n\nconst size = (v: number | string | undefined): string | undefined =>\n typeof v === 'number' ? `${v}px` : v;\n\n/**\n * Row —— A2UI 布局组件:水平排列子元素。\n * 等价于 `display: flex; flex-direction: row` 的语义化封装。\n */\nconst Row: React.FC<RowProps> = ({\n children,\n gap,\n align = 'center',\n justify = 'start',\n wrap = false,\n reverse = false,\n className = '',\n style,\n onClick,\n}) => (\n <div\n className={cn(\n 'flex',\n reverse ? 'flex-row-reverse' : 'flex-row',\n ALIGN_CLASS[align],\n JUSTIFY_CLASS[justify],\n wrap && 'flex-wrap',\n className,\n )}\n style={{ gap: size(gap), ...style }}\n onClick={onClick}\n >\n {children}\n </div>\n);\n\nexport default Row;\n"],"mappings":";;;;AA0BA,IAAM,IAAwC;CAC5C,OAAO;CACP,QAAQ;CACR,KAAK;CACL,UAAU;CACV,SAAS;AACX,GAEM,IAA4C;CAChD,OAAO;CACP,QAAQ;CACR,KAAK;CACL,SAAS;CACT,QAAQ;CACR,QAAQ;AACV,GAEM,KAAQ,MACZ,OAAO,KAAM,WAAW,GAAG,EAAE,MAAM,GAM/B,KAA2B,EAC/B,aACA,QACA,WAAQ,UACR,aAAU,SACV,UAAO,IACP,aAAU,IACV,eAAY,IACZ,UACA,iBAEA,kBAAC,OAAD;CACE,WAAW,EACT,QACA,IAAU,qBAAqB,YAC/B,EAAY,IACZ,EAAc,IACd,KAAQ,aACR,CACF;CACA,OAAO;EAAE,KAAK,EAAK,CAAG;EAAG,GAAG;CAAM;CACzB;CAER;AACE,CAAA"}