dishui 0.0.65 → 0.0.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +10 -11
  2. package/dist/chart.js +12 -46
  3. package/dist/code-editor.js +16 -43
  4. package/dist/components/Badge/index.js +10 -15
  5. package/dist/components/Badge/index.js.map +1 -1
  6. package/dist/components/Button/index.js +62 -89
  7. package/dist/components/Button/index.js.map +1 -1
  8. package/dist/components/Card/index.d.ts +76 -0
  9. package/dist/components/Card/index.js +178 -69
  10. package/dist/components/Card/index.js.map +1 -1
  11. package/dist/components/Chart/Chart.js +25 -25
  12. package/dist/components/Chart/Chart.js.map +1 -1
  13. package/dist/components/Checkbox/index.js +57 -65
  14. package/dist/components/Checkbox/index.js.map +1 -1
  15. package/dist/components/ChoicePicker/index.d.ts +44 -0
  16. package/dist/components/ChoicePicker/index.js +81 -0
  17. package/dist/components/ChoicePicker/index.js.map +1 -0
  18. package/dist/components/Column/index.d.ts +28 -0
  19. package/dist/components/Column/index.js +30 -0
  20. package/dist/components/Column/index.js.map +1 -0
  21. package/dist/components/DateTimeInput/index.d.ts +44 -0
  22. package/dist/components/DateTimeInput/index.js +48 -0
  23. package/dist/components/DateTimeInput/index.js.map +1 -0
  24. package/dist/components/Demo/index.js +107 -107
  25. package/dist/components/Demo/index.js.map +1 -1
  26. package/dist/components/Divider/index.d.ts +20 -0
  27. package/dist/components/Divider/index.js +30 -0
  28. package/dist/components/Divider/index.js.map +1 -0
  29. package/dist/components/EmptyState/index.js +24 -24
  30. package/dist/components/EmptyState/index.js.map +1 -1
  31. package/dist/components/FileUploader/DropZone.js +134 -136
  32. package/dist/components/FileUploader/DropZone.js.map +1 -1
  33. package/dist/components/FileUploader/FileItem.js +159 -163
  34. package/dist/components/FileUploader/FileItem.js.map +1 -1
  35. package/dist/components/FileUploader/FileUploader.js +126 -127
  36. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  37. package/dist/components/FileUploader/UploadQueue.js +62 -62
  38. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  39. package/dist/components/FloatWindow/index.d.ts +28 -0
  40. package/dist/components/GridLayout/index.d.ts +42 -0
  41. package/dist/components/Icon/index.d.ts +24 -0
  42. package/dist/components/Icon/index.js +26 -0
  43. package/dist/components/Icon/index.js.map +1 -0
  44. package/dist/components/Image/index.d.ts +33 -0
  45. package/dist/components/Image/index.js +44 -0
  46. package/dist/components/Image/index.js.map +1 -0
  47. package/dist/components/Input/index.js +196 -197
  48. package/dist/components/Input/index.js.map +1 -1
  49. package/dist/components/Label/index.js +62 -74
  50. package/dist/components/Label/index.js.map +1 -1
  51. package/dist/components/Layout/index.js +134 -139
  52. package/dist/components/Layout/index.js.map +1 -1
  53. package/dist/components/List/index.js +45 -58
  54. package/dist/components/List/index.js.map +1 -1
  55. package/dist/components/Markdown/Markdown.js +106 -107
  56. package/dist/components/Markdown/Markdown.js.map +1 -1
  57. package/dist/components/Markdown/codeThemes.js +24 -33
  58. package/dist/components/Markdown/codeThemes.js.map +1 -1
  59. package/dist/components/Markdown/markdownComponents.js +203 -208
  60. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  61. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  62. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  63. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  64. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  65. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  66. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  67. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  68. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  69. package/dist/components/Modal/index.js +82 -82
  70. package/dist/components/Modal/index.js.map +1 -1
  71. package/dist/components/MultipleChoice/index.d.ts +44 -0
  72. package/dist/components/MultipleChoice/index.js +52 -0
  73. package/dist/components/MultipleChoice/index.js.map +1 -0
  74. package/dist/components/Notification/index.d.ts +17 -0
  75. package/dist/components/Page/index.js +40 -71
  76. package/dist/components/Page/index.js.map +1 -1
  77. package/dist/components/PageHeader/index.js +28 -28
  78. package/dist/components/PageHeader/index.js.map +1 -1
  79. package/dist/components/ProtectedRoute/index.js +8 -9
  80. package/dist/components/ProtectedRoute/index.js.map +1 -1
  81. package/dist/components/Row/index.d.ts +28 -0
  82. package/dist/components/Row/index.js +30 -0
  83. package/dist/components/Row/index.js.map +1 -0
  84. package/dist/components/Select/index.js +251 -254
  85. package/dist/components/Select/index.js.map +1 -1
  86. package/dist/components/SidebarToggleButton/index.js +56 -59
  87. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  88. package/dist/components/Slider/index.d.ts +39 -0
  89. package/dist/components/Slider/index.js +52 -0
  90. package/dist/components/Slider/index.js.map +1 -0
  91. package/dist/components/StatCard/index.d.ts +29 -1
  92. package/dist/components/StatCard/index.js +189 -86
  93. package/dist/components/StatCard/index.js.map +1 -1
  94. package/dist/components/Switch/index.d.ts +34 -0
  95. package/dist/components/Switch/index.js +55 -0
  96. package/dist/components/Switch/index.js.map +1 -0
  97. package/dist/components/Tab/index.d.ts +40 -0
  98. package/dist/components/Table/index.js +109 -121
  99. package/dist/components/Table/index.js.map +1 -1
  100. package/dist/components/Tabs/index.js +28 -38
  101. package/dist/components/Tabs/index.js.map +1 -1
  102. package/dist/components/Text/index.d.ts +43 -0
  103. package/dist/components/Text/index.js +55 -0
  104. package/dist/components/Text/index.js.map +1 -0
  105. package/dist/components/Tooltip/index.d.ts +23 -0
  106. package/dist/components/Tooltip/index.js +34 -0
  107. package/dist/components/Tooltip/index.js.map +1 -0
  108. package/dist/components/Tree/Tree.js +205 -205
  109. package/dist/components/Tree/Tree.js.map +1 -1
  110. package/dist/components/pro/ArticleContextMenu/index.js +86 -87
  111. package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
  112. package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
  113. package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
  114. package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
  115. package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
  116. package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
  117. package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
  118. package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
  119. package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
  120. package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
  121. package/dist/components/pro/Calendar/index.d.ts +7 -0
  122. package/dist/components/pro/Calendar/types.d.ts +151 -0
  123. package/dist/components/pro/Calendar/utils.d.ts +94 -0
  124. package/dist/components/pro/Chat/Chat.d.ts +6 -0
  125. package/dist/components/pro/Chat/index.d.ts +2 -0
  126. package/dist/components/pro/Chat/types.d.ts +84 -0
  127. package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -327
  128. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  129. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
  130. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  131. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
  132. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
  134. package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
  135. package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
  136. package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
  137. package/dist/components/pro/CodeEditor/langs/index.js +7 -15
  138. package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
  139. package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
  140. package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
  141. package/dist/components/pro/CodeEditor/langs/python.js +4 -40
  142. package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
  143. package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
  144. package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
  145. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
  146. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
  147. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
  148. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
  149. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
  150. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
  151. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
  152. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
  153. package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
  154. package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
  155. package/dist/components/pro/CodeEditor/themes.js +513 -483
  156. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  157. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  158. package/dist/components/pro/CodeEditor/utils.js +171 -175
  159. package/dist/components/pro/CodeEditor/utils.js.map +1 -1
  160. package/dist/components/pro/DataTable/DataTable.js +305 -306
  161. package/dist/components/pro/DataTable/DataTable.js.map +1 -1
  162. package/dist/components/pro/DataTable/Filters.js +299 -314
  163. package/dist/components/pro/DataTable/Filters.js.map +1 -1
  164. package/dist/components/pro/DataTable/PivotPanel.js +203 -204
  165. package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
  166. package/dist/components/pro/DataTable/PivotView.js +142 -144
  167. package/dist/components/pro/DataTable/PivotView.js.map +1 -1
  168. package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
  169. package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
  170. package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
  171. package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
  172. package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
  173. package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
  174. package/dist/components/pro/DataTable/components/TableBody.js +93 -94
  175. package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
  176. package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
  177. package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
  178. package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
  179. package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
  180. package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
  181. package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
  182. package/dist/components/pro/DataTable/extension.js +5 -5
  183. package/dist/components/pro/DataTable/extension.js.map +1 -1
  184. package/dist/components/pro/DataTable/pivotEngine.js +84 -92
  185. package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
  186. package/dist/components/pro/DataTable/pivotExtension.js +93 -93
  187. package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
  188. package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
  189. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  190. package/dist/components/pro/DataTable/tanstack-table.js +45 -62
  191. package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
  192. package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
  193. package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
  194. package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
  195. package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
  196. package/dist/components/pro/DataTable/utils.js +156 -168
  197. package/dist/components/pro/DataTable/utils.js.map +1 -1
  198. package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
  199. package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
  200. package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
  201. package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
  202. package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
  203. package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
  204. package/dist/components/pro/FileExplorer/FileIcon.js +189 -189
  205. package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
  206. package/dist/components/pro/FileExplorer/GridView.js +100 -100
  207. package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
  208. package/dist/components/pro/FileExplorer/ListView.js +209 -209
  209. package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
  210. package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
  211. package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
  212. package/dist/components/pro/Flow/Flow.js +920 -948
  213. package/dist/components/pro/Flow/Flow.js.map +1 -1
  214. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
  215. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  216. package/dist/components/pro/Flow/archify/build.js +85 -94
  217. package/dist/components/pro/Flow/archify/build.js.map +1 -1
  218. package/dist/components/pro/Flow/archify/convert.js +512 -519
  219. package/dist/components/pro/Flow/archify/convert.js.map +1 -1
  220. package/dist/components/pro/Flow/archify/palette.js +87 -104
  221. package/dist/components/pro/Flow/archify/palette.js.map +1 -1
  222. package/dist/components/pro/Flow/archify/presets.js +34 -37
  223. package/dist/components/pro/Flow/archify/presets.js.map +1 -1
  224. package/dist/components/pro/Flow/archify/spec.js +7 -7
  225. package/dist/components/pro/Flow/archify/spec.js.map +1 -1
  226. package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
  227. package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
  228. package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
  229. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  230. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
  231. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  232. package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
  233. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  234. package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
  235. package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
  236. package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
  237. package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
  238. package/dist/components/pro/Flow/constants.js +266 -278
  239. package/dist/components/pro/Flow/constants.js.map +1 -1
  240. package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
  241. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
  242. package/dist/components/pro/Flow/context/FlowContext.js +60 -61
  243. package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
  244. package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
  245. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  246. package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
  247. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  248. package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
  249. package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
  250. package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
  251. package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
  252. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
  253. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
  254. package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
  255. package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
  256. package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
  257. package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
  258. package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
  259. package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
  260. package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
  261. package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
  262. package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
  263. package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
  264. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
  265. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  266. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
  267. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
  268. package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -180
  269. package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
  270. package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
  271. package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
  272. package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
  273. package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
  274. package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
  275. package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
  276. package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
  277. package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
  278. package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
  279. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  280. package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
  281. package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
  282. package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
  283. package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
  284. package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
  285. package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
  286. package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
  287. package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
  288. package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
  289. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  290. package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
  291. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  292. package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
  293. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  294. package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
  295. package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
  296. package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -242
  297. package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
  298. package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
  299. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  300. package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
  301. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  302. package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
  303. package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
  304. package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
  305. package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
  306. package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
  307. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  308. package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
  309. package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
  310. package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
  311. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  312. package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
  313. package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
  314. package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
  315. package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
  316. package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
  317. package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
  318. package/dist/components/pro/Flow/nodes/shapes.js +556 -589
  319. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  320. package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
  321. package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
  322. package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
  323. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  324. package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
  325. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
  326. package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
  327. package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
  328. package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
  329. package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
  330. package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
  331. package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
  332. package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
  333. package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
  334. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
  335. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  336. package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
  337. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  338. package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
  339. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  340. package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -248
  341. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  342. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
  343. package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
  344. package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
  345. package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/ShapePalette.js +557 -572
  347. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  348. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
  349. package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
  350. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  351. package/dist/components/pro/Flow/types.js +26 -26
  352. package/dist/components/pro/Flow/types.js.map +1 -1
  353. package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
  354. package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
  355. package/dist/components/pro/Flow/utils/gradient.js +55 -55
  356. package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
  357. package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
  358. package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
  359. package/dist/components/pro/Flow/utils/themeColor.js +185 -195
  360. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
  361. package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
  362. package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
  363. package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
  364. package/dist/components/pro/Gantt/index.d.ts +6 -0
  365. package/dist/components/pro/Gantt/types.d.ts +478 -0
  366. package/dist/components/pro/Gantt/utils.d.ts +124 -0
  367. package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
  368. package/dist/components/pro/Resizable/index.d.ts +2 -0
  369. package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
  370. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  371. package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
  372. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  373. package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
  374. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  375. package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
  376. package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
  377. package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
  378. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  379. package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
  380. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  381. package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
  382. package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
  383. package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
  384. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  385. package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
  386. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  387. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
  388. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  389. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
  390. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  391. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
  392. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  393. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
  394. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
  395. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
  396. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  397. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
  398. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  399. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
  400. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  401. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
  402. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  403. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
  404. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
  405. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
  406. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  407. package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
  408. package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
  409. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
  410. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  411. package/dist/components/pro/RichTextEditor/types.js +75 -75
  412. package/dist/components/pro/RichTextEditor/types.js.map +1 -1
  413. package/dist/contexts/AppContext.d.ts +1 -1
  414. package/dist/contexts/AppContext.js +216 -221
  415. package/dist/contexts/AppContext.js.map +1 -1
  416. package/dist/data-table.js +15 -41
  417. package/dist/data-table.js.map +1 -1
  418. package/dist/dishui.css +1 -1
  419. package/dist/flow.js +27 -83
  420. package/dist/hooks/useClickOutside.js +18 -18
  421. package/dist/hooks/useClickOutside.js.map +1 -1
  422. package/dist/hooks/useContainerElement.js +9 -9
  423. package/dist/hooks/useContainerElement.js.map +1 -1
  424. package/dist/hooks/useControllableState.js +33 -35
  425. package/dist/hooks/useControllableState.js.map +1 -1
  426. package/dist/hooks/useCopyToClipboard.js +16 -16
  427. package/dist/hooks/useCopyToClipboard.js.map +1 -1
  428. package/dist/hooks/useDebounce.js +14 -14
  429. package/dist/hooks/useDebounce.js.map +1 -1
  430. package/dist/hooks/useDraggable.js +50 -50
  431. package/dist/hooks/useDraggable.js.map +1 -1
  432. package/dist/hooks/useTableColumns.js +39 -41
  433. package/dist/hooks/useTableColumns.js.map +1 -1
  434. package/dist/hooks/useTableData.js +67 -68
  435. package/dist/hooks/useTableData.js.map +1 -1
  436. package/dist/index-nostyled.d.ts +8 -0
  437. package/dist/index.d.ts +27 -1
  438. package/dist/index.js +105 -241
  439. package/dist/layouts/MainLayout.js +56 -56
  440. package/dist/layouts/MainLayout.js.map +1 -1
  441. package/dist/layouts/Navbar.js +214 -214
  442. package/dist/layouts/Navbar.js.map +1 -1
  443. package/dist/layouts/Sidebar.js +184 -186
  444. package/dist/layouts/Sidebar.js.map +1 -1
  445. package/dist/layouts/headbar/Headbar.js +25 -25
  446. package/dist/layouts/headbar/Headbar.js.map +1 -1
  447. package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
  448. package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
  449. package/dist/layouts/headbar/HeadbarSearch.js +120 -120
  450. package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
  451. package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
  452. package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
  453. package/dist/layouts/headbar/HeadbarTitle.js +26 -26
  454. package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
  455. package/dist/lite.js +9 -24
  456. package/dist/markdown.js +4 -9
  457. package/dist/pages/components/Calendar/index.d.ts +3 -0
  458. package/dist/pages/components/Calendar/index.en.d.ts +3 -0
  459. package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
  460. package/dist/pages/components/Chat/index.d.ts +3 -0
  461. package/dist/pages/components/Chat/index.en.d.ts +3 -0
  462. package/dist/pages/components/Chat/index.zh.d.ts +3 -0
  463. package/dist/pages/components/FloatWindow/index.d.ts +3 -0
  464. package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
  465. package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
  466. package/dist/pages/components/Gantt/index.d.ts +3 -0
  467. package/dist/pages/components/Gantt/index.en.d.ts +3 -0
  468. package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
  469. package/dist/pages/components/GridLayout/index.d.ts +3 -0
  470. package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
  471. package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
  472. package/dist/pages/components/Notification/index.d.ts +3 -0
  473. package/dist/pages/components/Notification/index.en.d.ts +3 -0
  474. package/dist/pages/components/Notification/index.zh.d.ts +3 -0
  475. package/dist/pages/components/Resizable/index.d.ts +3 -0
  476. package/dist/pages/components/Resizable/index.en.d.ts +3 -0
  477. package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
  478. package/dist/pages/components/Tab/index.d.ts +3 -0
  479. package/dist/pages/components/Tab/index.en.d.ts +3 -0
  480. package/dist/pages/components/Tab/index.zh.d.ts +3 -0
  481. package/dist/styles/themeStyles.js +87 -86
  482. package/dist/styles/themeStyles.js.map +1 -1
  483. package/dist/utils/cn.d.ts +13 -0
  484. package/dist/utils/cn.js +16 -0
  485. package/dist/utils/cn.js.map +1 -0
  486. package/dist/utils/i18n.js +690 -602
  487. package/dist/utils/i18n.js.map +1 -1
  488. package/dist/utils/menu.js +94 -94
  489. package/dist/utils/menu.js.map +1 -1
  490. package/dist/utils/rehype-code-meta.js +14 -14
  491. package/dist/utils/rehype-code-meta.js.map +1 -1
  492. package/dist/utils/remark-code-meta.js +9 -9
  493. package/dist/utils/remark-code-meta.js.map +1 -1
  494. package/dist/utils/routerBuilder.js +59 -60
  495. package/dist/utils/routerBuilder.js.map +1 -1
  496. package/dist/utils/selection.js +28 -29
  497. package/dist/utils/selection.js.map +1 -1
  498. package/dist/utils/themes.js +275 -255
  499. package/dist/utils/themes.js.map +1 -1
  500. package/package.json +19 -6
@@ -0,0 +1,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;
@@ -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 * 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={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"}