@zerodep-dev/vue-tsx-pro-ui 0.0.0-stage → 0.1.0

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 (1109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -2
  3. package/dist/base/Badge.d.ts +28 -0
  4. package/dist/base/Badge.js +72 -0
  5. package/dist/base/Badge.js.map +1 -0
  6. package/dist/base/Blockquote.d.ts +13 -0
  7. package/dist/base/Blockquote.js +26 -0
  8. package/dist/base/Blockquote.js.map +1 -0
  9. package/dist/base/Button.d.ts +18 -0
  10. package/dist/base/Button.js +86 -0
  11. package/dist/base/Button.js.map +1 -0
  12. package/dist/base/ButtonBase.d.ts +21 -0
  13. package/dist/base/ButtonBase.js +51 -0
  14. package/dist/base/ButtonBase.js.map +1 -0
  15. package/dist/base/ButtonGroup.d.ts +24 -0
  16. package/dist/base/ButtonGroup.js +52 -0
  17. package/dist/base/ButtonGroup.js.map +1 -0
  18. package/dist/base/CloseButton.d.ts +15 -0
  19. package/dist/base/CloseButton.js +38 -0
  20. package/dist/base/CloseButton.js.map +1 -0
  21. package/dist/base/Code.d.ts +13 -0
  22. package/dist/base/Code.js +27 -0
  23. package/dist/base/Code.js.map +1 -0
  24. package/dist/base/CodeBlock.d.ts +89 -0
  25. package/dist/base/CodeBlock.js +265 -0
  26. package/dist/base/CodeBlock.js.map +1 -0
  27. package/dist/base/CopyButton.d.ts +40 -0
  28. package/dist/base/CopyButton.js +113 -0
  29. package/dist/base/CopyButton.js.map +1 -0
  30. package/dist/base/Heading.d.ts +49 -0
  31. package/dist/base/Heading.js +122 -0
  32. package/dist/base/Heading.js.map +1 -0
  33. package/dist/base/Icon.d.ts +48 -0
  34. package/dist/base/Icon.js +110 -0
  35. package/dist/base/Icon.js.map +1 -0
  36. package/dist/base/IconButton.d.ts +34 -0
  37. package/dist/base/IconButton.js +81 -0
  38. package/dist/base/IconButton.js.map +1 -0
  39. package/dist/base/IconLinkButton.d.ts +34 -0
  40. package/dist/base/IconLinkButton.js +81 -0
  41. package/dist/base/IconLinkButton.js.map +1 -0
  42. package/dist/base/Indicator.d.ts +126 -0
  43. package/dist/base/Indicator.js +158 -0
  44. package/dist/base/Indicator.js.map +1 -0
  45. package/dist/base/Kbd.d.ts +13 -0
  46. package/dist/base/Kbd.js +34 -0
  47. package/dist/base/Kbd.js.map +1 -0
  48. package/dist/base/Link.d.ts +61 -0
  49. package/dist/base/Link.js +114 -0
  50. package/dist/base/Link.js.map +1 -0
  51. package/dist/base/LinkButton.d.ts +18 -0
  52. package/dist/base/LinkButton.js +109 -0
  53. package/dist/base/LinkButton.js.map +1 -0
  54. package/dist/base/List.d.ts +61 -0
  55. package/dist/base/List.js +116 -0
  56. package/dist/base/List.js.map +1 -0
  57. package/dist/base/Mark.d.ts +13 -0
  58. package/dist/base/Mark.js +23 -0
  59. package/dist/base/Mark.js.map +1 -0
  60. package/dist/base/Spinner.d.ts +20 -0
  61. package/dist/base/Spinner.js +59 -0
  62. package/dist/base/Spinner.js.map +1 -0
  63. package/dist/base/StatusDot.d.ts +48 -0
  64. package/dist/base/StatusDot.js +62 -0
  65. package/dist/base/StatusDot.js.map +1 -0
  66. package/dist/base/Tag.d.ts +29 -0
  67. package/dist/base/Tag.js +92 -0
  68. package/dist/base/Tag.js.map +1 -0
  69. package/dist/base/Text.d.ts +57 -0
  70. package/dist/base/Text.js +74 -0
  71. package/dist/base/Text.js.map +1 -0
  72. package/dist/base/VisuallyHidden.d.ts +13 -0
  73. package/dist/base/VisuallyHidden.js +28 -0
  74. package/dist/base/VisuallyHidden.js.map +1 -0
  75. package/dist/base/badge-styles.d.ts +57 -0
  76. package/dist/base/badge-styles.js +329 -0
  77. package/dist/base/badge-styles.js.map +1 -0
  78. package/dist/base/button-core.d.ts +191 -0
  79. package/dist/base/button-core.js +660 -0
  80. package/dist/base/button-core.js.map +1 -0
  81. package/dist/charts/AreaChart.d.ts +18 -0
  82. package/dist/charts/AreaChart.js +90 -0
  83. package/dist/charts/AreaChart.js.map +1 -0
  84. package/dist/charts/BarChart.d.ts +19 -0
  85. package/dist/charts/BarChart.js +88 -0
  86. package/dist/charts/BarChart.js.map +1 -0
  87. package/dist/charts/ChordChart.d.ts +48 -0
  88. package/dist/charts/ChordChart.js +149 -0
  89. package/dist/charts/ChordChart.js.map +1 -0
  90. package/dist/charts/ComboChart.d.ts +30 -0
  91. package/dist/charts/ComboChart.js +157 -0
  92. package/dist/charts/ComboChart.js.map +1 -0
  93. package/dist/charts/DonutChart.d.ts +65 -0
  94. package/dist/charts/DonutChart.js +162 -0
  95. package/dist/charts/DonutChart.js.map +1 -0
  96. package/dist/charts/FunnelChart.d.ts +69 -0
  97. package/dist/charts/FunnelChart.js +181 -0
  98. package/dist/charts/FunnelChart.js.map +1 -0
  99. package/dist/charts/GraphChart.d.ts +135 -0
  100. package/dist/charts/GraphChart.js +274 -0
  101. package/dist/charts/GraphChart.js.map +1 -0
  102. package/dist/charts/LineChart.d.ts +50 -0
  103. package/dist/charts/LineChart.js +94 -0
  104. package/dist/charts/LineChart.js.map +1 -0
  105. package/dist/charts/MapChart.d.ts +167 -0
  106. package/dist/charts/MapChart.js +627 -0
  107. package/dist/charts/MapChart.js.map +1 -0
  108. package/dist/charts/RadarChart.d.ts +60 -0
  109. package/dist/charts/RadarChart.js +224 -0
  110. package/dist/charts/RadarChart.js.map +1 -0
  111. package/dist/charts/SankeyChart.d.ts +57 -0
  112. package/dist/charts/SankeyChart.js +150 -0
  113. package/dist/charts/SankeyChart.js.map +1 -0
  114. package/dist/charts/ScatterChart.d.ts +18 -0
  115. package/dist/charts/ScatterChart.js +82 -0
  116. package/dist/charts/ScatterChart.js.map +1 -0
  117. package/dist/charts/TimelineChart.d.ts +71 -0
  118. package/dist/charts/TimelineChart.js +267 -0
  119. package/dist/charts/TimelineChart.js.map +1 -0
  120. package/dist/charts/TreemapChart.d.ts +40 -0
  121. package/dist/charts/TreemapChart.js +155 -0
  122. package/dist/charts/TreemapChart.js.map +1 -0
  123. package/dist/charts/WaterfallChart.d.ts +61 -0
  124. package/dist/charts/WaterfallChart.js +167 -0
  125. package/dist/charts/WaterfallChart.js.map +1 -0
  126. package/dist/charts/XYChart.d.ts +206 -0
  127. package/dist/charts/XYChart.js +520 -0
  128. package/dist/charts/XYChart.js.map +1 -0
  129. package/dist/charts/axis-ticks.d.ts +23 -0
  130. package/dist/charts/axis-ticks.js +59 -0
  131. package/dist/charts/axis-ticks.js.map +1 -0
  132. package/dist/charts/export.d.ts +17 -0
  133. package/dist/charts/export.js +65 -0
  134. package/dist/charts/export.js.map +1 -0
  135. package/dist/charts/flow.d.ts +53 -0
  136. package/dist/charts/flow.js +29 -0
  137. package/dist/charts/flow.js.map +1 -0
  138. package/dist/charts/frame.d.ts +147 -0
  139. package/dist/charts/frame.js +358 -0
  140. package/dist/charts/frame.js.map +1 -0
  141. package/dist/charts/index.d.ts +30 -0
  142. package/dist/charts/index.js +24 -0
  143. package/dist/charts/label-layout.d.ts +59 -0
  144. package/dist/charts/label-layout.js +64 -0
  145. package/dist/charts/label-layout.js.map +1 -0
  146. package/dist/charts/series.d.ts +36 -0
  147. package/dist/charts/series.js +60 -0
  148. package/dist/charts/series.js.map +1 -0
  149. package/dist/charts/single.d.ts +41 -0
  150. package/dist/charts/single.js +65 -0
  151. package/dist/charts/single.js.map +1 -0
  152. package/dist/config/Provider.d.ts +52 -0
  153. package/dist/config/Provider.js +111 -0
  154. package/dist/config/Provider.js.map +1 -0
  155. package/dist/config/context.d.ts +90 -0
  156. package/dist/config/context.js +58 -0
  157. package/dist/config/context.js.map +1 -0
  158. package/dist/config/createUi.d.ts +52 -0
  159. package/dist/config/createUi.js +96 -0
  160. package/dist/config/createUi.js.map +1 -0
  161. package/dist/config/defaults.d.ts +71 -0
  162. package/dist/config/defaults.js +45 -0
  163. package/dist/config/defaults.js.map +1 -0
  164. package/dist/config/lang/en-US.d.ts +3 -0
  165. package/dist/config/lang/en-US.js +386 -0
  166. package/dist/config/lang/en-US.js.map +1 -0
  167. package/dist/config/lang/format.d.ts +50 -0
  168. package/dist/config/lang/format.js +113 -0
  169. package/dist/config/lang/format.js.map +1 -0
  170. package/dist/config/lang/lang.d.ts +653 -0
  171. package/dist/config/lang/lang.js +22 -0
  172. package/dist/config/lang/lang.js.map +1 -0
  173. package/dist/config/lang/messages.d.ts +12 -0
  174. package/dist/config/lang/messages.js +36 -0
  175. package/dist/config/lang/messages.js.map +1 -0
  176. package/dist/config/lang/zh-CN.d.ts +3 -0
  177. package/dist/config/lang/zh-CN.js +386 -0
  178. package/dist/config/lang/zh-CN.js.map +1 -0
  179. package/dist/config/pinyin.d.ts +3 -0
  180. package/dist/config/pinyin.js +26 -0
  181. package/dist/config/pinyin.js.map +1 -0
  182. package/dist/config/query-state.d.ts +61 -0
  183. package/dist/config/query-state.js +113 -0
  184. package/dist/config/query-state.js.map +1 -0
  185. package/dist/config/shiki.d.ts +13 -0
  186. package/dist/config/shiki.js +97 -0
  187. package/dist/config/shiki.js.map +1 -0
  188. package/dist/config/styles.d.ts +108 -0
  189. package/dist/config/styles.js +59 -0
  190. package/dist/config/styles.js.map +1 -0
  191. package/dist/config/theme/boot.d.ts +97 -0
  192. package/dist/config/theme/boot.js +90 -0
  193. package/dist/config/theme/boot.js.map +1 -0
  194. package/dist/config/theme/builtin.d.ts +21 -0
  195. package/dist/config/theme/builtin.js +58 -0
  196. package/dist/config/theme/builtin.js.map +1 -0
  197. package/dist/config/theme/coffee.d.ts +84 -0
  198. package/dist/config/theme/coffee.js +102 -0
  199. package/dist/config/theme/coffee.js.map +1 -0
  200. package/dist/config/theme/cyberpunk.d.ts +110 -0
  201. package/dist/config/theme/cyberpunk.js +125 -0
  202. package/dist/config/theme/cyberpunk.js.map +1 -0
  203. package/dist/config/theme/dark.d.ts +90 -0
  204. package/dist/config/theme/dark.js +106 -0
  205. package/dist/config/theme/dark.js.map +1 -0
  206. package/dist/config/theme/festive.d.ts +93 -0
  207. package/dist/config/theme/festive.js +110 -0
  208. package/dist/config/theme/festive.js.map +1 -0
  209. package/dist/config/theme/forest.d.ts +93 -0
  210. package/dist/config/theme/forest.js +109 -0
  211. package/dist/config/theme/forest.js.map +1 -0
  212. package/dist/config/theme/high-contrast.d.ts +103 -0
  213. package/dist/config/theme/high-contrast.js +119 -0
  214. package/dist/config/theme/high-contrast.js.map +1 -0
  215. package/dist/config/theme/lemon.d.ts +103 -0
  216. package/dist/config/theme/lemon.js +119 -0
  217. package/dist/config/theme/lemon.js.map +1 -0
  218. package/dist/config/theme/light.d.ts +107 -0
  219. package/dist/config/theme/light.js +122 -0
  220. package/dist/config/theme/light.js.map +1 -0
  221. package/dist/config/theme/midnight.d.ts +86 -0
  222. package/dist/config/theme/midnight.js +103 -0
  223. package/dist/config/theme/midnight.js.map +1 -0
  224. package/dist/config/theme/ocean.d.ts +103 -0
  225. package/dist/config/theme/ocean.js +119 -0
  226. package/dist/config/theme/ocean.js.map +1 -0
  227. package/dist/config/theme/paper.d.ts +101 -0
  228. package/dist/config/theme/paper.js +117 -0
  229. package/dist/config/theme/paper.js.map +1 -0
  230. package/dist/config/theme/preference.d.ts +34 -0
  231. package/dist/config/theme/preference.js +67 -0
  232. package/dist/config/theme/preference.js.map +1 -0
  233. package/dist/config/theme/sakura.d.ts +103 -0
  234. package/dist/config/theme/sakura.js +119 -0
  235. package/dist/config/theme/sakura.js.map +1 -0
  236. package/dist/config/theme/theme.d.ts +59 -0
  237. package/dist/config/theme/theme.js +68 -0
  238. package/dist/config/theme/theme.js.map +1 -0
  239. package/dist/config/theme/token-names.d.ts +1897 -0
  240. package/dist/config/theme/tokens.d.ts +833 -0
  241. package/dist/config/theme/tokens.js +480 -0
  242. package/dist/config/theme/tokens.js.map +1 -0
  243. package/dist/config/vue-router.d.ts +67 -0
  244. package/dist/config/vue-router.js +143 -0
  245. package/dist/config/vue-router.js.map +1 -0
  246. package/dist/date/Calendar.d.ts +36 -0
  247. package/dist/date/Calendar.js +83 -0
  248. package/dist/date/Calendar.js.map +1 -0
  249. package/dist/date/CalendarBoard.d.ts +79 -0
  250. package/dist/date/CalendarBoard.js +403 -0
  251. package/dist/date/CalendarBoard.js.map +1 -0
  252. package/dist/date/CalendarView.d.ts +86 -0
  253. package/dist/date/CalendarView.js +427 -0
  254. package/dist/date/CalendarView.js.map +1 -0
  255. package/dist/date/Countdown.d.ts +45 -0
  256. package/dist/date/Countdown.js +75 -0
  257. package/dist/date/Countdown.js.map +1 -0
  258. package/dist/date/DateField.d.ts +34 -0
  259. package/dist/date/DateField.js +124 -0
  260. package/dist/date/DateField.js.map +1 -0
  261. package/dist/date/DatePicker.d.ts +41 -0
  262. package/dist/date/DatePicker.js +272 -0
  263. package/dist/date/DatePicker.js.map +1 -0
  264. package/dist/date/DateRangePicker.d.ts +71 -0
  265. package/dist/date/DateRangePicker.js +411 -0
  266. package/dist/date/DateRangePicker.js.map +1 -0
  267. package/dist/date/DateSegmentGroup.d.ts +38 -0
  268. package/dist/date/DateSegmentGroup.js +176 -0
  269. package/dist/date/DateSegmentGroup.js.map +1 -0
  270. package/dist/date/DateTime.d.ts +21 -0
  271. package/dist/date/DateTime.js +39 -0
  272. package/dist/date/DateTime.js.map +1 -0
  273. package/dist/date/QuarterCalendar.d.ts +22 -0
  274. package/dist/date/QuarterCalendar.js +231 -0
  275. package/dist/date/QuarterCalendar.js.map +1 -0
  276. package/dist/date/RangeCalendar.d.ts +24 -0
  277. package/dist/date/RangeCalendar.js +89 -0
  278. package/dist/date/RangeCalendar.js.map +1 -0
  279. package/dist/date/RelativeTime.d.ts +16 -0
  280. package/dist/date/RelativeTime.js +61 -0
  281. package/dist/date/RelativeTime.js.map +1 -0
  282. package/dist/date/SegmentedField.d.ts +60 -0
  283. package/dist/date/SegmentedField.js +175 -0
  284. package/dist/date/SegmentedField.js.map +1 -0
  285. package/dist/date/TimeField.d.ts +36 -0
  286. package/dist/date/TimeField.js +56 -0
  287. package/dist/date/TimeField.js.map +1 -0
  288. package/dist/date/TimePicker.d.ts +25 -0
  289. package/dist/date/TimePicker.js +206 -0
  290. package/dist/date/TimePicker.js.map +1 -0
  291. package/dist/date/calendar-state.d.ts +119 -0
  292. package/dist/date/calendar-state.js +267 -0
  293. package/dist/date/calendar-state.js.map +1 -0
  294. package/dist/date/clock.d.ts +11 -0
  295. package/dist/date/clock.js +37 -0
  296. package/dist/date/clock.js.map +1 -0
  297. package/dist/date/date-locale.d.ts +67 -0
  298. package/dist/date/date-locale.js +89 -0
  299. package/dist/date/date-locale.js.map +1 -0
  300. package/dist/date/date-segments.d.ts +132 -0
  301. package/dist/date/date-segments.js +410 -0
  302. package/dist/date/date-segments.js.map +1 -0
  303. package/dist/date/picker-popover.d.ts +88 -0
  304. package/dist/date/picker-popover.js +126 -0
  305. package/dist/date/picker-popover.js.map +1 -0
  306. package/dist/diagram/Diagram.d.ts +223 -0
  307. package/dist/diagram/Diagram.js +1121 -0
  308. package/dist/diagram/Diagram.js.map +1 -0
  309. package/dist/diagram/DiagramControls.d.ts +35 -0
  310. package/dist/diagram/DiagramControls.js +114 -0
  311. package/dist/diagram/DiagramControls.js.map +1 -0
  312. package/dist/diagram/DiagramLanes.d.ts +49 -0
  313. package/dist/diagram/DiagramLanes.js +92 -0
  314. package/dist/diagram/DiagramLanes.js.map +1 -0
  315. package/dist/diagram/DiagramMinimap.d.ts +39 -0
  316. package/dist/diagram/DiagramMinimap.js +133 -0
  317. package/dist/diagram/DiagramMinimap.js.map +1 -0
  318. package/dist/diagram/DiagramNode.d.ts +65 -0
  319. package/dist/diagram/DiagramNode.js +142 -0
  320. package/dist/diagram/DiagramNode.js.map +1 -0
  321. package/dist/diagram/controller.d.ts +68 -0
  322. package/dist/diagram/controller.js +117 -0
  323. package/dist/diagram/controller.js.map +1 -0
  324. package/dist/diagram/export.d.ts +14 -0
  325. package/dist/diagram/export.js +115 -0
  326. package/dist/diagram/export.js.map +1 -0
  327. package/dist/diagram/geometry.d.ts +65 -0
  328. package/dist/diagram/geometry.js +219 -0
  329. package/dist/diagram/geometry.js.map +1 -0
  330. package/dist/diagram/index.d.ts +19 -0
  331. package/dist/diagram/index.js +11 -0
  332. package/dist/diagram/messages.d.ts +28 -0
  333. package/dist/diagram/messages.js +30 -0
  334. package/dist/diagram/messages.js.map +1 -0
  335. package/dist/diagram/route.d.ts +81 -0
  336. package/dist/diagram/route.js +327 -0
  337. package/dist/diagram/route.js.map +1 -0
  338. package/dist/display/Accordion.d.ts +71 -0
  339. package/dist/display/Accordion.js +219 -0
  340. package/dist/display/Accordion.js.map +1 -0
  341. package/dist/display/AnimatedNumber.d.ts +44 -0
  342. package/dist/display/AnimatedNumber.js +97 -0
  343. package/dist/display/AnimatedNumber.js.map +1 -0
  344. package/dist/display/Avatar.d.ts +74 -0
  345. package/dist/display/Avatar.js +158 -0
  346. package/dist/display/Avatar.js.map +1 -0
  347. package/dist/display/AvatarGroup.d.ts +29 -0
  348. package/dist/display/AvatarGroup.js +67 -0
  349. package/dist/display/AvatarGroup.js.map +1 -0
  350. package/dist/display/Card.d.ts +219 -0
  351. package/dist/display/Card.js +319 -0
  352. package/dist/display/Card.js.map +1 -0
  353. package/dist/display/Checklist.d.ts +93 -0
  354. package/dist/display/Checklist.js +260 -0
  355. package/dist/display/Checklist.js.map +1 -0
  356. package/dist/display/Collapse.d.ts +24 -0
  357. package/dist/display/Collapse.js +65 -0
  358. package/dist/display/Collapse.js.map +1 -0
  359. package/dist/display/Collapsible.d.ts +12 -0
  360. package/dist/display/Collapsible.js +41 -0
  361. package/dist/display/Collapsible.js.map +1 -0
  362. package/dist/display/Descriptions.d.ts +88 -0
  363. package/dist/display/Descriptions.js +185 -0
  364. package/dist/display/Descriptions.js.map +1 -0
  365. package/dist/display/Ellipsis.d.ts +29 -0
  366. package/dist/display/Ellipsis.js +111 -0
  367. package/dist/display/Ellipsis.js.map +1 -0
  368. package/dist/display/FieldCompare.d.ts +58 -0
  369. package/dist/display/FieldCompare.js +205 -0
  370. package/dist/display/FieldCompare.js.map +1 -0
  371. package/dist/display/Gauge.d.ts +60 -0
  372. package/dist/display/Gauge.js +215 -0
  373. package/dist/display/Gauge.js.map +1 -0
  374. package/dist/display/Image.d.ts +87 -0
  375. package/dist/display/Image.js +212 -0
  376. package/dist/display/Image.js.map +1 -0
  377. package/dist/display/ItemList.d.ts +69 -0
  378. package/dist/display/ItemList.js +147 -0
  379. package/dist/display/ItemList.js.map +1 -0
  380. package/dist/display/Marquee.d.ts +59 -0
  381. package/dist/display/Marquee.js +155 -0
  382. package/dist/display/Marquee.js.map +1 -0
  383. package/dist/display/ProportionBar.d.ts +55 -0
  384. package/dist/display/ProportionBar.js +99 -0
  385. package/dist/display/ProportionBar.js.map +1 -0
  386. package/dist/display/Sortable.d.ts +43 -0
  387. package/dist/display/Sortable.js +163 -0
  388. package/dist/display/Sortable.js.map +1 -0
  389. package/dist/display/Sparkline.d.ts +48 -0
  390. package/dist/display/Sparkline.js +130 -0
  391. package/dist/display/Sparkline.js.map +1 -0
  392. package/dist/display/Stat.d.ts +105 -0
  393. package/dist/display/Stat.js +268 -0
  394. package/dist/display/Stat.js.map +1 -0
  395. package/dist/display/Timeline.d.ts +106 -0
  396. package/dist/display/Timeline.js +257 -0
  397. package/dist/display/Timeline.js.map +1 -0
  398. package/dist/display/Tree.d.ts +132 -0
  399. package/dist/display/Tree.js +645 -0
  400. package/dist/display/Tree.js.map +1 -0
  401. package/dist/display/VirtualList.d.ts +80 -0
  402. package/dist/display/VirtualList.js +166 -0
  403. package/dist/display/VirtualList.js.map +1 -0
  404. package/dist/display/Watermark.d.ts +39 -0
  405. package/dist/display/Watermark.js +130 -0
  406. package/dist/display/Watermark.js.map +1 -0
  407. package/dist/docs-kit/CodeGroup.d.ts +29 -0
  408. package/dist/docs-kit/CodeGroup.js +81 -0
  409. package/dist/docs-kit/CodeGroup.js.map +1 -0
  410. package/dist/docs-kit/CodePreview.d.ts +60 -0
  411. package/dist/docs-kit/CodePreview.js +183 -0
  412. package/dist/docs-kit/CodePreview.js.map +1 -0
  413. package/dist/docs-kit/ColorSwatch.d.ts +28 -0
  414. package/dist/docs-kit/ColorSwatch.js +85 -0
  415. package/dist/docs-kit/ColorSwatch.js.map +1 -0
  416. package/dist/docs-kit/PropsTable.d.ts +73 -0
  417. package/dist/docs-kit/PropsTable.js +122 -0
  418. package/dist/docs-kit/PropsTable.js.map +1 -0
  419. package/dist/docs-kit/index.d.ts +13 -0
  420. package/dist/docs-kit/index.js +6 -0
  421. package/dist/docs-kit/messages.d.ts +25 -0
  422. package/dist/docs-kit/messages.js +30 -0
  423. package/dist/docs-kit/messages.js.map +1 -0
  424. package/dist/feedback/Alert.d.ts +83 -0
  425. package/dist/feedback/Alert.js +179 -0
  426. package/dist/feedback/Alert.js.map +1 -0
  427. package/dist/feedback/Banner.d.ts +60 -0
  428. package/dist/feedback/Banner.js +122 -0
  429. package/dist/feedback/Banner.js.map +1 -0
  430. package/dist/feedback/Empty.d.ts +38 -0
  431. package/dist/feedback/Empty.js +114 -0
  432. package/dist/feedback/Empty.js.map +1 -0
  433. package/dist/feedback/LoadingBar.d.ts +45 -0
  434. package/dist/feedback/LoadingBar.js +124 -0
  435. package/dist/feedback/LoadingBar.js.map +1 -0
  436. package/dist/feedback/LoadingOverlay.d.ts +29 -0
  437. package/dist/feedback/LoadingOverlay.js +70 -0
  438. package/dist/feedback/LoadingOverlay.js.map +1 -0
  439. package/dist/feedback/Progress.d.ts +215 -0
  440. package/dist/feedback/Progress.js +437 -0
  441. package/dist/feedback/Progress.js.map +1 -0
  442. package/dist/feedback/Result.d.ts +69 -0
  443. package/dist/feedback/Result.js +165 -0
  444. package/dist/feedback/Result.js.map +1 -0
  445. package/dist/feedback/Skeleton.d.ts +50 -0
  446. package/dist/feedback/Skeleton.js +100 -0
  447. package/dist/feedback/Skeleton.js.map +1 -0
  448. package/dist/feedback/SkeletonText.d.ts +25 -0
  449. package/dist/feedback/SkeletonText.js +40 -0
  450. package/dist/feedback/SkeletonText.js.map +1 -0
  451. package/dist/feedback/Toast.d.ts +204 -0
  452. package/dist/feedback/Toast.js +572 -0
  453. package/dist/feedback/Toast.js.map +1 -0
  454. package/dist/form/Field.d.ts +158 -0
  455. package/dist/form/Field.js +327 -0
  456. package/dist/form/Field.js.map +1 -0
  457. package/dist/form/Form.d.ts +14 -0
  458. package/dist/form/Form.js +66 -0
  459. package/dist/form/Form.js.map +1 -0
  460. package/dist/form/FormErrorSummary.d.ts +23 -0
  461. package/dist/form/FormErrorSummary.js +102 -0
  462. package/dist/form/FormErrorSummary.js.map +1 -0
  463. package/dist/form/FormSection.d.ts +66 -0
  464. package/dist/form/FormSection.js +227 -0
  465. package/dist/form/FormSection.js.map +1 -0
  466. package/dist/form/FormValue.d.ts +17 -0
  467. package/dist/form/FormValue.js +40 -0
  468. package/dist/form/FormValue.js.map +1 -0
  469. package/dist/form/field-layout.d.ts +34 -0
  470. package/dist/form/field-layout.js +39 -0
  471. package/dist/form/field-layout.js.map +1 -0
  472. package/dist/form/form-constraints.d.ts +38 -0
  473. package/dist/form/form-constraints.js +131 -0
  474. package/dist/form/form-constraints.js.map +1 -0
  475. package/dist/form/leave-confirmation.d.ts +9 -0
  476. package/dist/form/leave-confirmation.js +31 -0
  477. package/dist/form/leave-confirmation.js.map +1 -0
  478. package/dist/form/schemas.d.ts +52 -0
  479. package/dist/form/schemas.js +97 -0
  480. package/dist/form/schemas.js.map +1 -0
  481. package/dist/form/useForm.d.ts +192 -0
  482. package/dist/form/useForm.js +394 -0
  483. package/dist/form/useForm.js.map +1 -0
  484. package/dist/index.d.ts +282 -0
  485. package/dist/index.js +282 -0
  486. package/dist/input/Autocomplete.d.ts +14 -0
  487. package/dist/input/Autocomplete.js +35 -0
  488. package/dist/input/Autocomplete.js.map +1 -0
  489. package/dist/input/Cascader.d.ts +86 -0
  490. package/dist/input/Cascader.js +593 -0
  491. package/dist/input/Cascader.js.map +1 -0
  492. package/dist/input/CharacterCount.d.ts +21 -0
  493. package/dist/input/CharacterCount.js +47 -0
  494. package/dist/input/CharacterCount.js.map +1 -0
  495. package/dist/input/Checkbox.d.ts +93 -0
  496. package/dist/input/Checkbox.js +250 -0
  497. package/dist/input/Checkbox.js.map +1 -0
  498. package/dist/input/ColorField.d.ts +37 -0
  499. package/dist/input/ColorField.js +143 -0
  500. package/dist/input/ColorField.js.map +1 -0
  501. package/dist/input/Combobox.d.ts +75 -0
  502. package/dist/input/Combobox.js +321 -0
  503. package/dist/input/Combobox.js.map +1 -0
  504. package/dist/input/ConditionBuilder.d.ts +55 -0
  505. package/dist/input/ConditionBuilder.js +471 -0
  506. package/dist/input/ConditionBuilder.js.map +1 -0
  507. package/dist/input/ControlGroup.d.ts +26 -0
  508. package/dist/input/ControlGroup.js +50 -0
  509. package/dist/input/ControlGroup.js.map +1 -0
  510. package/dist/input/FileDrop.d.ts +49 -0
  511. package/dist/input/FileDrop.js +201 -0
  512. package/dist/input/FileDrop.js.map +1 -0
  513. package/dist/input/ListPopover.d.ts +39 -0
  514. package/dist/input/ListPopover.js +81 -0
  515. package/dist/input/ListPopover.js.map +1 -0
  516. package/dist/input/Listbox.d.ts +91 -0
  517. package/dist/input/Listbox.js +408 -0
  518. package/dist/input/Listbox.js.map +1 -0
  519. package/dist/input/Mentions.d.ts +74 -0
  520. package/dist/input/Mentions.js +287 -0
  521. package/dist/input/Mentions.js.map +1 -0
  522. package/dist/input/NumberField.d.ts +64 -0
  523. package/dist/input/NumberField.js +288 -0
  524. package/dist/input/NumberField.js.map +1 -0
  525. package/dist/input/NumberRangeField.d.ts +58 -0
  526. package/dist/input/NumberRangeField.js +157 -0
  527. package/dist/input/NumberRangeField.js.map +1 -0
  528. package/dist/input/OtpField.d.ts +58 -0
  529. package/dist/input/OtpField.js +200 -0
  530. package/dist/input/OtpField.js.map +1 -0
  531. package/dist/input/PeoplePicker.d.ts +42 -0
  532. package/dist/input/PeoplePicker.js +185 -0
  533. package/dist/input/PeoplePicker.js.map +1 -0
  534. package/dist/input/PeoplePickerPanel.d.ts +42 -0
  535. package/dist/input/PeoplePickerPanel.js +357 -0
  536. package/dist/input/PeoplePickerPanel.js.map +1 -0
  537. package/dist/input/Radio.d.ts +90 -0
  538. package/dist/input/Radio.js +211 -0
  539. package/dist/input/Radio.js.map +1 -0
  540. package/dist/input/Rating.d.ts +62 -0
  541. package/dist/input/Rating.js +225 -0
  542. package/dist/input/Rating.js.map +1 -0
  543. package/dist/input/Select.d.ts +97 -0
  544. package/dist/input/Select.js +455 -0
  545. package/dist/input/Select.js.map +1 -0
  546. package/dist/input/SelectedTags.d.ts +28 -0
  547. package/dist/input/SelectedTags.js +81 -0
  548. package/dist/input/SelectedTags.js.map +1 -0
  549. package/dist/input/Slider.d.ts +99 -0
  550. package/dist/input/Slider.js +343 -0
  551. package/dist/input/Slider.js.map +1 -0
  552. package/dist/input/Switch.d.ts +63 -0
  553. package/dist/input/Switch.js +198 -0
  554. package/dist/input/Switch.js.map +1 -0
  555. package/dist/input/TagsInput.d.ts +70 -0
  556. package/dist/input/TagsInput.js +314 -0
  557. package/dist/input/TagsInput.js.map +1 -0
  558. package/dist/input/TextField.d.ts +51 -0
  559. package/dist/input/TextField.js +185 -0
  560. package/dist/input/TextField.js.map +1 -0
  561. package/dist/input/Textarea.d.ts +50 -0
  562. package/dist/input/Textarea.js +146 -0
  563. package/dist/input/Textarea.js.map +1 -0
  564. package/dist/input/ToggleGroup.d.ts +82 -0
  565. package/dist/input/ToggleGroup.js +211 -0
  566. package/dist/input/ToggleGroup.js.map +1 -0
  567. package/dist/input/Transfer.d.ts +67 -0
  568. package/dist/input/Transfer.js +407 -0
  569. package/dist/input/Transfer.js.map +1 -0
  570. package/dist/input/TreeSelect.d.ts +94 -0
  571. package/dist/input/TreeSelect.js +412 -0
  572. package/dist/input/TreeSelect.js.map +1 -0
  573. package/dist/input/Upload.d.ts +143 -0
  574. package/dist/input/Upload.js +597 -0
  575. package/dist/input/Upload.js.map +1 -0
  576. package/dist/input/choice-styles.d.ts +117 -0
  577. package/dist/input/choice-styles.js +176 -0
  578. package/dist/input/choice-styles.js.map +1 -0
  579. package/dist/input/condition.d.ts +153 -0
  580. package/dist/input/condition.js +169 -0
  581. package/dist/input/condition.js.map +1 -0
  582. package/dist/input/control.d.ts +160 -0
  583. package/dist/input/control.js +236 -0
  584. package/dist/input/control.js.map +1 -0
  585. package/dist/input/list-state.d.ts +118 -0
  586. package/dist/input/list-state.js +186 -0
  587. package/dist/input/list-state.js.map +1 -0
  588. package/dist/input/people.d.ts +65 -0
  589. package/dist/input/people.js +47 -0
  590. package/dist/input/people.js.map +1 -0
  591. package/dist/input/remote-items.d.ts +20 -0
  592. package/dist/input/remote-items.js +36 -0
  593. package/dist/input/remote-items.js.map +1 -0
  594. package/dist/input/text-format.d.ts +46 -0
  595. package/dist/input/text-format.js +64 -0
  596. package/dist/input/text-format.js.map +1 -0
  597. package/dist/layout/Affix.d.ts +32 -0
  598. package/dist/layout/Affix.js +81 -0
  599. package/dist/layout/Affix.js.map +1 -0
  600. package/dist/layout/AsideLayout.d.ts +45 -0
  601. package/dist/layout/AsideLayout.js +69 -0
  602. package/dist/layout/AsideLayout.js.map +1 -0
  603. package/dist/layout/BackTop.d.ts +16 -0
  604. package/dist/layout/BackTop.js +83 -0
  605. package/dist/layout/BackTop.js.map +1 -0
  606. package/dist/layout/Container.d.ts +60 -0
  607. package/dist/layout/Container.js +62 -0
  608. package/dist/layout/Container.js.map +1 -0
  609. package/dist/layout/Flex.d.ts +116 -0
  610. package/dist/layout/Flex.js +109 -0
  611. package/dist/layout/Flex.js.map +1 -0
  612. package/dist/layout/Grid.d.ts +139 -0
  613. package/dist/layout/Grid.js +168 -0
  614. package/dist/layout/Grid.js.map +1 -0
  615. package/dist/layout/PageScrollbar.d.ts +20 -0
  616. package/dist/layout/PageScrollbar.js +49 -0
  617. package/dist/layout/PageScrollbar.js.map +1 -0
  618. package/dist/layout/Prose.d.ts +19 -0
  619. package/dist/layout/Prose.js +37 -0
  620. package/dist/layout/Prose.js.map +1 -0
  621. package/dist/layout/ResizeHandle.d.ts +28 -0
  622. package/dist/layout/ResizeHandle.js +94 -0
  623. package/dist/layout/ResizeHandle.js.map +1 -0
  624. package/dist/layout/ScrollArea.d.ts +99 -0
  625. package/dist/layout/ScrollArea.js +344 -0
  626. package/dist/layout/ScrollArea.js.map +1 -0
  627. package/dist/layout/Separator.d.ts +47 -0
  628. package/dist/layout/Separator.js +96 -0
  629. package/dist/layout/Separator.js.map +1 -0
  630. package/dist/layout/Splitter.d.ts +75 -0
  631. package/dist/layout/Splitter.js +236 -0
  632. package/dist/layout/Splitter.js.map +1 -0
  633. package/dist/layout/ViewportFill.d.ts +26 -0
  634. package/dist/layout/ViewportFill.js +59 -0
  635. package/dist/layout/ViewportFill.js.map +1 -0
  636. package/dist/navigation/Breadcrumbs.d.ts +59 -0
  637. package/dist/navigation/Breadcrumbs.js +150 -0
  638. package/dist/navigation/Breadcrumbs.js.map +1 -0
  639. package/dist/navigation/NavBar.d.ts +35 -0
  640. package/dist/navigation/NavBar.js +182 -0
  641. package/dist/navigation/NavBar.js.map +1 -0
  642. package/dist/navigation/NavList.d.ts +112 -0
  643. package/dist/navigation/NavList.js +375 -0
  644. package/dist/navigation/NavList.js.map +1 -0
  645. package/dist/navigation/PageJump.d.ts +27 -0
  646. package/dist/navigation/PageJump.js +77 -0
  647. package/dist/navigation/PageJump.js.map +1 -0
  648. package/dist/navigation/PageSizeSelect.d.ts +19 -0
  649. package/dist/navigation/PageSizeSelect.js +65 -0
  650. package/dist/navigation/PageSizeSelect.js.map +1 -0
  651. package/dist/navigation/Pager.d.ts +30 -0
  652. package/dist/navigation/Pager.js +111 -0
  653. package/dist/navigation/Pager.js.map +1 -0
  654. package/dist/navigation/Pagination.d.ts +51 -0
  655. package/dist/navigation/Pagination.js +157 -0
  656. package/dist/navigation/Pagination.js.map +1 -0
  657. package/dist/navigation/PaginationBar.d.ts +54 -0
  658. package/dist/navigation/PaginationBar.js +125 -0
  659. package/dist/navigation/PaginationBar.js.map +1 -0
  660. package/dist/navigation/SkipLink.d.ts +16 -0
  661. package/dist/navigation/SkipLink.js +58 -0
  662. package/dist/navigation/SkipLink.js.map +1 -0
  663. package/dist/navigation/Steps.d.ts +93 -0
  664. package/dist/navigation/Steps.js +198 -0
  665. package/dist/navigation/Steps.js.map +1 -0
  666. package/dist/navigation/TableOfContents.d.ts +32 -0
  667. package/dist/navigation/TableOfContents.js +119 -0
  668. package/dist/navigation/TableOfContents.js.map +1 -0
  669. package/dist/navigation/Tabs.d.ts +208 -0
  670. package/dist/navigation/Tabs.js +626 -0
  671. package/dist/navigation/Tabs.js.map +1 -0
  672. package/dist/navigation/Toolbar.d.ts +39 -0
  673. package/dist/navigation/Toolbar.js +67 -0
  674. package/dist/navigation/Toolbar.js.map +1 -0
  675. package/dist/overlay/AlertDialog.d.ts +43 -0
  676. package/dist/overlay/AlertDialog.js +106 -0
  677. package/dist/overlay/AlertDialog.js.map +1 -0
  678. package/dist/overlay/CommandPalette.d.ts +64 -0
  679. package/dist/overlay/CommandPalette.js +250 -0
  680. package/dist/overlay/CommandPalette.js.map +1 -0
  681. package/dist/overlay/ContextMenu.d.ts +21 -0
  682. package/dist/overlay/ContextMenu.js +76 -0
  683. package/dist/overlay/ContextMenu.js.map +1 -0
  684. package/dist/overlay/Dialog.d.ts +70 -0
  685. package/dist/overlay/Dialog.js +91 -0
  686. package/dist/overlay/Dialog.js.map +1 -0
  687. package/dist/overlay/Drawer.d.ts +186 -0
  688. package/dist/overlay/Drawer.js +214 -0
  689. package/dist/overlay/Drawer.js.map +1 -0
  690. package/dist/overlay/HoverCard.d.ts +48 -0
  691. package/dist/overlay/HoverCard.js +86 -0
  692. package/dist/overlay/HoverCard.js.map +1 -0
  693. package/dist/overlay/Lightbox.d.ts +57 -0
  694. package/dist/overlay/Lightbox.js +374 -0
  695. package/dist/overlay/Lightbox.js.map +1 -0
  696. package/dist/overlay/Menu.d.ts +218 -0
  697. package/dist/overlay/Menu.js +816 -0
  698. package/dist/overlay/Menu.js.map +1 -0
  699. package/dist/overlay/ModalCore.d.ts +132 -0
  700. package/dist/overlay/ModalCore.js +274 -0
  701. package/dist/overlay/ModalCore.js.map +1 -0
  702. package/dist/overlay/Popconfirm.d.ts +49 -0
  703. package/dist/overlay/Popconfirm.js +167 -0
  704. package/dist/overlay/Popconfirm.js.map +1 -0
  705. package/dist/overlay/Popover.d.ts +40 -0
  706. package/dist/overlay/Popover.js +96 -0
  707. package/dist/overlay/Popover.js.map +1 -0
  708. package/dist/overlay/Tooltip.d.ts +47 -0
  709. package/dist/overlay/Tooltip.js +86 -0
  710. package/dist/overlay/Tooltip.js.map +1 -0
  711. package/dist/overlay/Tour.d.ts +74 -0
  712. package/dist/overlay/Tour.js +309 -0
  713. package/dist/overlay/Tour.js.map +1 -0
  714. package/dist/overlay/detached.d.ts +40 -0
  715. package/dist/overlay/detached.js +109 -0
  716. package/dist/overlay/detached.js.map +1 -0
  717. package/dist/patterns/ActionBar.d.ts +29 -0
  718. package/dist/patterns/ActionBar.js +75 -0
  719. package/dist/patterns/ActionBar.js.map +1 -0
  720. package/dist/patterns/AppShell.d.ts +168 -0
  721. package/dist/patterns/AppShell.js +620 -0
  722. package/dist/patterns/AppShell.js.map +1 -0
  723. package/dist/patterns/CommentThread.d.ts +128 -0
  724. package/dist/patterns/CommentThread.js +386 -0
  725. package/dist/patterns/CommentThread.js.map +1 -0
  726. package/dist/patterns/DataImport.d.ts +72 -0
  727. package/dist/patterns/DataImport.js +486 -0
  728. package/dist/patterns/DataImport.js.map +1 -0
  729. package/dist/patterns/DeadlineBadge.d.ts +21 -0
  730. package/dist/patterns/DeadlineBadge.js +76 -0
  731. package/dist/patterns/DeadlineBadge.js.map +1 -0
  732. package/dist/patterns/FilterBar.d.ts +66 -0
  733. package/dist/patterns/FilterBar.js +254 -0
  734. package/dist/patterns/FilterBar.js.map +1 -0
  735. package/dist/patterns/KanbanBoard.d.ts +79 -0
  736. package/dist/patterns/KanbanBoard.js +294 -0
  737. package/dist/patterns/KanbanBoard.js.map +1 -0
  738. package/dist/patterns/NotificationCenter.d.ts +110 -0
  739. package/dist/patterns/NotificationCenter.js +342 -0
  740. package/dist/patterns/NotificationCenter.js.map +1 -0
  741. package/dist/patterns/PageTabs.d.ts +30 -0
  742. package/dist/patterns/PageTabs.js +97 -0
  743. package/dist/patterns/PageTabs.js.map +1 -0
  744. package/dist/patterns/QueryTable.d.ts +64 -0
  745. package/dist/patterns/QueryTable.js +276 -0
  746. package/dist/patterns/QueryTable.js.map +1 -0
  747. package/dist/patterns/StepsForm.d.ts +49 -0
  748. package/dist/patterns/StepsForm.js +130 -0
  749. package/dist/patterns/StepsForm.js.map +1 -0
  750. package/dist/patterns/ThemeSwitcher.d.ts +20 -0
  751. package/dist/patterns/ThemeSwitcher.js +102 -0
  752. package/dist/patterns/ThemeSwitcher.js.map +1 -0
  753. package/dist/patterns/form-dialog.d.ts +62 -0
  754. package/dist/patterns/form-dialog.js +143 -0
  755. package/dist/patterns/form-dialog.js.map +1 -0
  756. package/dist/patterns/index.d.ts +24 -0
  757. package/dist/patterns/index.js +15 -0
  758. package/dist/patterns/messages.d.ts +172 -0
  759. package/dist/patterns/messages.js +184 -0
  760. package/dist/patterns/messages.js.map +1 -0
  761. package/dist/table/ColumnHeaderActions.d.ts +71 -0
  762. package/dist/table/ColumnHeaderActions.js +247 -0
  763. package/dist/table/ColumnHeaderActions.js.map +1 -0
  764. package/dist/table/ColumnResizer.d.ts +12 -0
  765. package/dist/table/ColumnResizer.js +32 -0
  766. package/dist/table/ColumnResizer.js.map +1 -0
  767. package/dist/table/ColumnSettings.d.ts +34 -0
  768. package/dist/table/ColumnSettings.js +136 -0
  769. package/dist/table/ColumnSettings.js.map +1 -0
  770. package/dist/table/ColumnTable.d.ts +51 -0
  771. package/dist/table/ColumnTable.js +140 -0
  772. package/dist/table/ColumnTable.js.map +1 -0
  773. package/dist/table/DataTable.d.ts +44 -0
  774. package/dist/table/DataTable.js +453 -0
  775. package/dist/table/DataTable.js.map +1 -0
  776. package/dist/table/DataTableView.d.ts +328 -0
  777. package/dist/table/DataTableView.js +963 -0
  778. package/dist/table/DataTableView.js.map +1 -0
  779. package/dist/table/PivotTable.d.ts +66 -0
  780. package/dist/table/PivotTable.js +122 -0
  781. package/dist/table/PivotTable.js.map +1 -0
  782. package/dist/table/SelectionBar.d.ts +29 -0
  783. package/dist/table/SelectionBar.js +86 -0
  784. package/dist/table/SelectionBar.js.map +1 -0
  785. package/dist/table/Table.d.ts +169 -0
  786. package/dist/table/Table.js +304 -0
  787. package/dist/table/Table.js.map +1 -0
  788. package/dist/table/TreeDataTable.d.ts +36 -0
  789. package/dist/table/TreeDataTable.js +168 -0
  790. package/dist/table/TreeDataTable.js.map +1 -0
  791. package/dist/table/column-display.d.ts +20 -0
  792. package/dist/table/column-display.js +43 -0
  793. package/dist/table/column-display.js.map +1 -0
  794. package/dist/table/columns.d.ts +244 -0
  795. package/dist/table/columns.js +271 -0
  796. package/dist/table/columns.js.map +1 -0
  797. package/dist/table/csv.d.ts +24 -0
  798. package/dist/table/csv.js +35 -0
  799. package/dist/table/csv.js.map +1 -0
  800. package/dist/table/pivot.d.ts +66 -0
  801. package/dist/table/pivot.js +85 -0
  802. package/dist/table/pivot.js.map +1 -0
  803. package/dist/table/sheet.d.ts +44 -0
  804. package/dist/table/sheet.js +78 -0
  805. package/dist/table/sheet.js.map +1 -0
  806. package/dist/table/table-styles.d.ts +136 -0
  807. package/dist/table/table-styles.js +403 -0
  808. package/dist/table/table-styles.js.map +1 -0
  809. package/dist/table/use-table-query.d.ts +89 -0
  810. package/dist/table/use-table-query.js +194 -0
  811. package/dist/table/use-table-query.js.map +1 -0
  812. package/dist/theme-customize/ThemeCustomizer.d.ts +63 -0
  813. package/dist/theme-customize/ThemeCustomizer.js +361 -0
  814. package/dist/theme-customize/ThemeCustomizer.js.map +1 -0
  815. package/dist/theme-customize/ThemeThumbnail.d.ts +20 -0
  816. package/dist/theme-customize/ThemeThumbnail.js +82 -0
  817. package/dist/theme-customize/ThemeThumbnail.js.map +1 -0
  818. package/dist/theme-customize/contrast.d.ts +27 -0
  819. package/dist/theme-customize/contrast.js +251 -0
  820. package/dist/theme-customize/contrast.js.map +1 -0
  821. package/dist/theme-customize/customize.d.ts +65 -0
  822. package/dist/theme-customize/customize.js +105 -0
  823. package/dist/theme-customize/customize.js.map +1 -0
  824. package/dist/theme-customize/design-tokens.d.ts +31 -0
  825. package/dist/theme-customize/design-tokens.js +183 -0
  826. package/dist/theme-customize/design-tokens.js.map +1 -0
  827. package/dist/theme-customize/index.d.ts +20 -0
  828. package/dist/theme-customize/index.js +9 -0
  829. package/dist/theme-customize/messages.d.ts +74 -0
  830. package/dist/theme-customize/messages.js +142 -0
  831. package/dist/theme-customize/messages.js.map +1 -0
  832. package/dist/theme-customize/palette.d.ts +898 -0
  833. package/dist/theme-customize/palette.js +111 -0
  834. package/dist/theme-customize/palette.js.map +1 -0
  835. package/dist/theme-customize/token-catalog.d.ts +20 -0
  836. package/dist/theme-customize/token-catalog.js +836 -0
  837. package/dist/theme-customize/token-catalog.js.map +1 -0
  838. package/dist/three/background/AuroraBackground.d.ts +30 -0
  839. package/dist/three/background/AuroraBackground.js +80 -0
  840. package/dist/three/background/AuroraBackground.js.map +1 -0
  841. package/dist/three/background/MeshGradient.d.ts +28 -0
  842. package/dist/three/background/MeshGradient.js +76 -0
  843. package/dist/three/background/MeshGradient.js.map +1 -0
  844. package/dist/three/background/ShaderBackground.d.ts +25 -0
  845. package/dist/three/background/ShaderBackground.js +107 -0
  846. package/dist/three/background/ShaderBackground.js.map +1 -0
  847. package/dist/three/core/EffectSurface.d.ts +41 -0
  848. package/dist/three/core/EffectSurface.js +62 -0
  849. package/dist/three/core/EffectSurface.js.map +1 -0
  850. package/dist/three/core/ThreeCanvas.d.ts +39 -0
  851. package/dist/three/core/ThreeCanvas.js +77 -0
  852. package/dist/three/core/ThreeCanvas.js.map +1 -0
  853. package/dist/three/core/dispose.d.ts +9 -0
  854. package/dist/three/core/dispose.js +26 -0
  855. package/dist/three/core/dispose.js.map +1 -0
  856. package/dist/three/core/orbit.d.ts +31 -0
  857. package/dist/three/core/orbit.js +83 -0
  858. package/dist/three/core/orbit.js.map +1 -0
  859. package/dist/three/core/quality.d.ts +59 -0
  860. package/dist/three/core/quality.js +80 -0
  861. package/dist/three/core/quality.js.map +1 -0
  862. package/dist/three/core/renderer.d.ts +110 -0
  863. package/dist/three/core/renderer.js +303 -0
  864. package/dist/three/core/renderer.js.map +1 -0
  865. package/dist/three/core/shaders.d.ts +19 -0
  866. package/dist/three/core/shaders.js +100 -0
  867. package/dist/three/core/shaders.js.map +1 -0
  868. package/dist/three/core/theme-colors.d.ts +30 -0
  869. package/dist/three/core/theme-colors.js +113 -0
  870. package/dist/three/core/theme-colors.js.map +1 -0
  871. package/dist/three/effects/Confetti.d.ts +62 -0
  872. package/dist/three/effects/Confetti.js +242 -0
  873. package/dist/three/effects/Confetti.js.map +1 -0
  874. package/dist/three/effects/ParticleField.d.ts +39 -0
  875. package/dist/three/effects/ParticleField.js +266 -0
  876. package/dist/three/effects/ParticleField.js.map +1 -0
  877. package/dist/three/effects/WaveGrid.d.ts +37 -0
  878. package/dist/three/effects/WaveGrid.js +130 -0
  879. package/dist/three/effects/WaveGrid.js.map +1 -0
  880. package/dist/three/globe/Globe.d.ts +70 -0
  881. package/dist/three/globe/Globe.js +337 -0
  882. package/dist/three/globe/Globe.js.map +1 -0
  883. package/dist/three/globe/land.d.ts +9 -0
  884. package/dist/three/globe/land.js +14 -0
  885. package/dist/three/globe/land.js.map +1 -0
  886. package/dist/three/index.d.ts +24 -0
  887. package/dist/three/index.js +18 -0
  888. package/dist/three/model/ModelViewer.d.ts +63 -0
  889. package/dist/three/model/ModelViewer.js +193 -0
  890. package/dist/three/model/ModelViewer.js.map +1 -0
  891. package/dist/utils/data/collation.d.ts +36 -0
  892. package/dist/utils/data/collation.js +69 -0
  893. package/dist/utils/data/collation.js.map +1 -0
  894. package/dist/utils/data/color.d.ts +32 -0
  895. package/dist/utils/data/color.js +90 -0
  896. package/dist/utils/data/color.js.map +1 -0
  897. package/dist/utils/data/date.d.ts +186 -0
  898. package/dist/utils/data/date.js +409 -0
  899. package/dist/utils/data/date.js.map +1 -0
  900. package/dist/utils/data/diff.d.ts +21 -0
  901. package/dist/utils/data/diff.js +43 -0
  902. package/dist/utils/data/diff.js.map +1 -0
  903. package/dist/utils/data/equality.d.ts +5 -0
  904. package/dist/utils/data/equality.js +24 -0
  905. package/dist/utils/data/equality.js.map +1 -0
  906. package/dist/utils/data/history.d.ts +59 -0
  907. package/dist/utils/data/history.js +132 -0
  908. package/dist/utils/data/history.js.map +1 -0
  909. package/dist/utils/data/intl-cache.d.ts +8 -0
  910. package/dist/utils/data/intl-cache.js +19 -0
  911. package/dist/utils/data/intl-cache.js.map +1 -0
  912. package/dist/utils/data/number-parse.d.ts +7 -0
  913. package/dist/utils/data/number-parse.js +45 -0
  914. package/dist/utils/data/number-parse.js.map +1 -0
  915. package/dist/utils/data/number.d.ts +10 -0
  916. package/dist/utils/data/number.js +28 -0
  917. package/dist/utils/data/number.js.map +1 -0
  918. package/dist/utils/data/numeric.d.ts +55 -0
  919. package/dist/utils/data/numeric.js +133 -0
  920. package/dist/utils/data/numeric.js.map +1 -0
  921. package/dist/utils/data/pagination.d.ts +21 -0
  922. package/dist/utils/data/pagination.js +22 -0
  923. package/dist/utils/data/pagination.js.map +1 -0
  924. package/dist/utils/data/selection.d.ts +41 -0
  925. package/dist/utils/data/selection.js +21 -0
  926. package/dist/utils/data/selection.js.map +1 -0
  927. package/dist/utils/data/status.d.ts +43 -0
  928. package/dist/utils/data/status.js +27 -0
  929. package/dist/utils/data/status.js.map +1 -0
  930. package/dist/utils/data/text.d.ts +12 -0
  931. package/dist/utils/data/text.js +30 -0
  932. package/dist/utils/data/text.js.map +1 -0
  933. package/dist/utils/data/tree.d.ts +140 -0
  934. package/dist/utils/data/tree.js +273 -0
  935. package/dist/utils/data/tree.js.map +1 -0
  936. package/dist/utils/data/workdays.d.ts +67 -0
  937. package/dist/utils/data/workdays.js +67 -0
  938. package/dist/utils/data/workdays.js.map +1 -0
  939. package/dist/utils/dom/announcer.d.ts +11 -0
  940. package/dist/utils/dom/announcer.js +53 -0
  941. package/dist/utils/dom/announcer.js.map +1 -0
  942. package/dist/utils/dom/caret.d.ts +14 -0
  943. package/dist/utils/dom/caret.js +72 -0
  944. package/dist/utils/dom/caret.js.map +1 -0
  945. package/dist/utils/dom/clipboard.d.ts +16 -0
  946. package/dist/utils/dom/clipboard.js +66 -0
  947. package/dist/utils/dom/clipboard.js.map +1 -0
  948. package/dist/utils/dom/direction.d.ts +12 -0
  949. package/dist/utils/dom/direction.js +20 -0
  950. package/dist/utils/dom/direction.js.map +1 -0
  951. package/dist/utils/dom/download.d.ts +7 -0
  952. package/dist/utils/dom/download.js +19 -0
  953. package/dist/utils/dom/download.js.map +1 -0
  954. package/dist/utils/dom/element.d.ts +3 -0
  955. package/dist/utils/dom/element.js +12 -0
  956. package/dist/utils/dom/element.js.map +1 -0
  957. package/dist/utils/dom/event-listener.d.ts +8 -0
  958. package/dist/utils/dom/event-listener.js +35 -0
  959. package/dist/utils/dom/event-listener.js.map +1 -0
  960. package/dist/utils/dom/floating.d.ts +149 -0
  961. package/dist/utils/dom/floating.js +262 -0
  962. package/dist/utils/dom/floating.js.map +1 -0
  963. package/dist/utils/dom/focus.d.ts +28 -0
  964. package/dist/utils/dom/focus.js +105 -0
  965. package/dist/utils/dom/focus.js.map +1 -0
  966. package/dist/utils/dom/fullscreen.d.ts +11 -0
  967. package/dist/utils/dom/fullscreen.js +43 -0
  968. package/dist/utils/dom/fullscreen.js.map +1 -0
  969. package/dist/utils/dom/hotkeys.d.ts +43 -0
  970. package/dist/utils/dom/hotkeys.js +174 -0
  971. package/dist/utils/dom/hotkeys.js.map +1 -0
  972. package/dist/utils/dom/hover-intent.d.ts +47 -0
  973. package/dist/utils/dom/hover-intent.js +72 -0
  974. package/dist/utils/dom/hover-intent.js.map +1 -0
  975. package/dist/utils/dom/hover-layer.d.ts +36 -0
  976. package/dist/utils/dom/hover-layer.js +74 -0
  977. package/dist/utils/dom/hover-layer.js.map +1 -0
  978. package/dist/utils/dom/intersection.d.ts +13 -0
  979. package/dist/utils/dom/intersection.js +36 -0
  980. package/dist/utils/dom/intersection.js.map +1 -0
  981. package/dist/utils/dom/layout-batch.d.ts +14 -0
  982. package/dist/utils/dom/layout-batch.js +26 -0
  983. package/dist/utils/dom/layout-batch.js.map +1 -0
  984. package/dist/utils/dom/link.d.ts +18 -0
  985. package/dist/utils/dom/link.js +44 -0
  986. package/dist/utils/dom/link.js.map +1 -0
  987. package/dist/utils/dom/media-query.d.ts +18 -0
  988. package/dist/utils/dom/media-query.js +36 -0
  989. package/dist/utils/dom/media-query.js.map +1 -0
  990. package/dist/utils/dom/move.d.ts +47 -0
  991. package/dist/utils/dom/move.js +69 -0
  992. package/dist/utils/dom/move.js.map +1 -0
  993. package/dist/utils/dom/open-change.d.ts +51 -0
  994. package/dist/utils/dom/open-change.js +21 -0
  995. package/dist/utils/dom/open-change.js.map +1 -0
  996. package/dist/utils/dom/overflow.d.ts +29 -0
  997. package/dist/utils/dom/overflow.js +108 -0
  998. package/dist/utils/dom/overflow.js.map +1 -0
  999. package/dist/utils/dom/overlay.d.ts +35 -0
  1000. package/dist/utils/dom/overlay.js +104 -0
  1001. package/dist/utils/dom/overlay.js.map +1 -0
  1002. package/dist/utils/dom/page-visibility.d.ts +10 -0
  1003. package/dist/utils/dom/page-visibility.js +22 -0
  1004. package/dist/utils/dom/page-visibility.js.map +1 -0
  1005. package/dist/utils/dom/pan-zoom.d.ts +109 -0
  1006. package/dist/utils/dom/pan-zoom.js +257 -0
  1007. package/dist/utils/dom/pan-zoom.js.map +1 -0
  1008. package/dist/utils/dom/rasterize.d.ts +18 -0
  1009. package/dist/utils/dom/rasterize.js +41 -0
  1010. package/dist/utils/dom/rasterize.js.map +1 -0
  1011. package/dist/utils/dom/resize.d.ts +4 -0
  1012. package/dist/utils/dom/resize.js +65 -0
  1013. package/dist/utils/dom/resize.js.map +1 -0
  1014. package/dist/utils/dom/ripple.d.ts +40 -0
  1015. package/dist/utils/dom/ripple.js +96 -0
  1016. package/dist/utils/dom/ripple.js.map +1 -0
  1017. package/dist/utils/dom/roving-focus.d.ts +44 -0
  1018. package/dist/utils/dom/roving-focus.js +184 -0
  1019. package/dist/utils/dom/roving-focus.js.map +1 -0
  1020. package/dist/utils/dom/scroll-spy.d.ts +30 -0
  1021. package/dist/utils/dom/scroll-spy.js +55 -0
  1022. package/dist/utils/dom/scroll-spy.js.map +1 -0
  1023. package/dist/utils/dom/sortable.d.ts +82 -0
  1024. package/dist/utils/dom/sortable.js +437 -0
  1025. package/dist/utils/dom/sortable.js.map +1 -0
  1026. package/dist/utils/dom/storage.d.ts +21 -0
  1027. package/dist/utils/dom/storage.js +66 -0
  1028. package/dist/utils/dom/storage.js.map +1 -0
  1029. package/dist/utils/dom/typeahead.d.ts +15 -0
  1030. package/dist/utils/dom/typeahead.js +26 -0
  1031. package/dist/utils/dom/typeahead.js.map +1 -0
  1032. package/dist/utils/motion/active-indicator.d.ts +24 -0
  1033. package/dist/utils/motion/active-indicator.js +58 -0
  1034. package/dist/utils/motion/active-indicator.js.map +1 -0
  1035. package/dist/utils/motion/animation.d.ts +58 -0
  1036. package/dist/utils/motion/animation.js +83 -0
  1037. package/dist/utils/motion/animation.js.map +1 -0
  1038. package/dist/utils/motion/delayed-loading.d.ts +18 -0
  1039. package/dist/utils/motion/delayed-loading.js +38 -0
  1040. package/dist/utils/motion/delayed-loading.js.map +1 -0
  1041. package/dist/utils/motion/layout.d.ts +17 -0
  1042. package/dist/utils/motion/layout.js +43 -0
  1043. package/dist/utils/motion/layout.js.map +1 -0
  1044. package/dist/utils/motion/pointer.d.ts +14 -0
  1045. package/dist/utils/motion/pointer.js +72 -0
  1046. package/dist/utils/motion/pointer.js.map +1 -0
  1047. package/dist/utils/motion/presence.d.ts +57 -0
  1048. package/dist/utils/motion/presence.js +100 -0
  1049. package/dist/utils/motion/presence.js.map +1 -0
  1050. package/dist/utils/motion/reveal.d.ts +9 -0
  1051. package/dist/utils/motion/reveal.js +68 -0
  1052. package/dist/utils/motion/reveal.js.map +1 -0
  1053. package/dist/utils/motion/tween.d.ts +34 -0
  1054. package/dist/utils/motion/tween.js +50 -0
  1055. package/dist/utils/motion/tween.js.map +1 -0
  1056. package/dist/utils/props.d.ts +84 -0
  1057. package/dist/utils/props.js +189 -0
  1058. package/dist/utils/props.js.map +1 -0
  1059. package/dist/utils/request/http.d.ts +101 -0
  1060. package/dist/utils/request/http.js +154 -0
  1061. package/dist/utils/request/http.js.map +1 -0
  1062. package/dist/utils/request/use-request.d.ts +37 -0
  1063. package/dist/utils/request/use-request.js +90 -0
  1064. package/dist/utils/request/use-request.js.map +1 -0
  1065. package/dist/utils/request/wire.d.ts +48 -0
  1066. package/dist/utils/request/wire.js +208 -0
  1067. package/dist/utils/request/wire.js.map +1 -0
  1068. package/dist/utils/style/attached.d.ts +25 -0
  1069. package/dist/utils/style/attached.js +82 -0
  1070. package/dist/utils/style/attached.js.map +1 -0
  1071. package/dist/utils/style/item-styles.d.ts +18 -0
  1072. package/dist/utils/style/item-styles.js +79 -0
  1073. package/dist/utils/style/item-styles.js.map +1 -0
  1074. package/dist/utils/style/markers.d.ts +6 -0
  1075. package/dist/utils/style/markers.js +11 -0
  1076. package/dist/utils/style/markers.js.map +1 -0
  1077. package/dist/utils/style/shimmer.d.ts +20 -0
  1078. package/dist/utils/style/shimmer.js +58 -0
  1079. package/dist/utils/style/shimmer.js.map +1 -0
  1080. package/dist/utils/style/styles.d.ts +118 -0
  1081. package/dist/utils/style/styles.js +114 -0
  1082. package/dist/utils/style/styles.js.map +1 -0
  1083. package/dist/utils/style/swatch-styles.d.ts +10 -0
  1084. package/dist/utils/style/swatch-styles.js +19 -0
  1085. package/dist/utils/style/swatch-styles.js.map +1 -0
  1086. package/dist/utils/style/tone-styles.d.ts +58 -0
  1087. package/dist/utils/style/tone-styles.js +180 -0
  1088. package/dist/utils/style/tone-styles.js.map +1 -0
  1089. package/dist/utils/style/transitions.d.ts +43 -0
  1090. package/dist/utils/style/transitions.js +118 -0
  1091. package/dist/utils/style/transitions.js.map +1 -0
  1092. package/dist/utils/style/typography.d.ts +155 -0
  1093. package/dist/utils/style/typography.js +80 -0
  1094. package/dist/utils/style/typography.js.map +1 -0
  1095. package/dist/utils/style/vars.d.ts +18 -0
  1096. package/dist/utils/style/vars.js +21 -0
  1097. package/dist/utils/style/vars.js.map +1 -0
  1098. package/dist/utils/virtual/use-virtualizer.d.ts +43 -0
  1099. package/dist/utils/virtual/use-virtualizer.js +94 -0
  1100. package/dist/utils/virtual/use-virtualizer.js.map +1 -0
  1101. package/dist/utils/virtual/virtualizer.d.ts +145 -0
  1102. package/dist/utils/virtual/virtualizer.js +316 -0
  1103. package/dist/utils/virtual/virtualizer.js.map +1 -0
  1104. package/dist/xlsx/index.d.ts +7 -0
  1105. package/dist/xlsx/index.js +1 -0
  1106. package/dist/xlsx/workbook.d.ts +33 -0
  1107. package/dist/xlsx/workbook.js +195 -0
  1108. package/dist/xlsx/workbook.js.map +1 -0
  1109. package/package.json +205 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTableView.js","names":["_isVNode","_vtp_readonlyProp","_vue_computed","_createVNode","_mergeProps","mergeProps","_vtp_restProps","_vue_shallowRef","_vue_ref","_Fragment"],"sources":["../../src/table/DataTableView.tsx"],"sourcesContent":["/**\n * 表格的渲染层:DataTable、TreeDataTable 共用(同 Listbox 与 ListboxView 的分工)。只管画,状态(排序、选择、展开、列宽)由外层决定。\n *\n * - 结构:原生 table(读屏按表格念:第几行第几列、列标题)+ table-layout: fixed + colgroup 定列宽,\n * 外层是 ScrollArea(两个方向滚动,内容超出时视口可聚焦,键盘也能滚)。\n * - 虚拟滚动(useVirtualizer):只渲染看得见的行,上下各一行占位撑出滚动高度(各列仍在同一张表里对齐);\n * 行带 aria-rowindex,表格带 aria-rowcount,读屏知道总行数与当前位置。\n * - 分组表头(columnGroups):相邻的几列上方共用一个标题,表头两行(th scope=\"colgroup\"),没分组的列跨两行。\n * - 吸顶表头、固定列:position: sticky,固定列的偏移按列宽累加(逻辑方向,从右到左排版自动换边);\n * 固定列的单元格继承行的底色,盖住滚过去的内容。\n * - 排序:可排序的列标题是按钮,th 带 aria-sort(多列排序时只在第一排序列上,其余列的次序写给读屏);\n * 勾选列用 Checkbox(表头的全选有部分选中状态)。\n * - 表头筛选(列定义的 filter)与列菜单(columnMenu):列标题结尾的小按钮(ColumnHeaderActions),状态在外层。\n * - 单元格导航(cellNavigation):表格是 role=\"grid\",方向键在格之间走(gridFocus),只有一格能 Tab 进入;\n * 可编辑的格按 Enter / F2、双击或直接打字开始编辑,编辑器由外层给(renderEditor),校验错误标在格上(rowErrors)。\n * - 列宽:表头结束边的 ColumnResizer(拖动或 ← / →)调整;固定列偏移与最小宽度的计算在 columns.ts。\n * - 详情行(renderDetail):多一列展开按钮(aria-expanded、aria-controls),展开的行下面多一行跨全部列的详情,\n * 内容让过勾选列与展开列、和第一个数据列对齐;\n * 详情在虚拟滚动里也算一行(测量真实高度),内容贴着视口的起始边,横向滚动时不跟着滚走。\n * - 加载:没有数据时显示骨架行;已有数据(刷新中)时表头下方显示一条进度条;表格带 aria-busy。没有数据时显示 Empty。\n */\nimport { ArrowDown, ArrowUp, ArrowUpDown, ChevronRight } from '@lucide/icons';\nimport { _component } from '@zerodep-dev/vue-tsx-pro-tsx';\nimport * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';\nimport { useId, watch, type VNodeChild } from 'vue';\nimport { ButtonBase, type ButtonBaseProps } from '../base/ButtonBase';\nimport { Icon, type IconProps } from '../base/Icon';\nimport { IconButton, type IconButtonProps } from '../base/IconButton';\nimport { VisuallyHidden, visuallyHiddenStyles } from '../base/VisuallyHidden';\nimport { clamp } from '../utils/data/number';\nimport { useDelayedLoading } from '../utils/motion/delayed-loading';\nimport { useLang } from '../config/context';\nimport { useRecipe } from '../config/styles';\nimport { Empty, type EmptyProps } from '../feedback/Empty';\nimport { Progress, type ProgressProps } from '../feedback/Progress';\nimport { Skeleton, type SkeletonProps, type SkeletonShapeProps } from '../feedback/Skeleton';\nimport { SHIMMER_STAGGER } from '../utils/style/shimmer';\nimport { Checkbox, type CheckboxProps } from '../input/Checkbox';\nimport { Radio, RadioGroupContext, type RadioProps } from '../input/Radio';\nimport { ScrollArea, type ScrollAreaProps } from '../layout/ScrollArea';\nimport { mergeAttrs, mergePartProps, mergeProps, type PartProps } from '../utils/props';\nimport { disclosureStyles } from '../utils/style/transitions';\nimport type { SelectionModes } from '../utils/data/selection';\nimport { plainText } from '../utils/data/text';\nimport { gridFocus } from '../utils/dom/roving-focus';\nimport { useVirtualizer } from '../utils/virtual/use-virtualizer';\nimport type { VirtualScrollOptions, VisibleRange } from '../utils/virtual/virtualizer';\nimport {\n ColumnFilterButton,\n ColumnMenuButton,\n type ColumnMenuActions,\n} from './ColumnHeaderActions';\nimport { ColumnResizer, type ColumnResizerProps } from './ColumnResizer';\nimport { useColumnDisplay } from './column-display';\nimport {\n columnFilter,\n columnType,\n isCellEditable,\n columnValue,\n headerLayout,\n sameStickyOffsets,\n stickyOffsets,\n sortList,\n sumColumn,\n tableMinWidth,\n type ColumnFilterOption,\n type ColumnTypes,\n type DataTableColumnGroup,\n type SortState,\n type StickyOffsets,\n type DataTableColumn,\n} from './columns';\nimport {\n dataTableRecipe,\n dataTableStateStyles,\n type DataTableDensities,\n type DataTableOptions,\n type DataTableVariants,\n} from './table-styles';\n\n/** 要渲染的一行:DataTable 是平铺的行,TreeDataTable 是展开后的树(带层级) */\nexport interface DataTableRowModel<T> {\n /** 行的 key(选择、展开、测量都按它) */\n key: string;\n /** 这一行的数据 */\n data: T;\n /** 层级(TreeDataTable),从 0 开始 */\n depth: number;\n}\n\n/** 行、单元格的部件属性:可以按行(与列)计算 */\ntype RowPartProps<T> = PartProps<'tr'> | ((row: T, index: number) => PartProps<'tr'>);\ntype CellPartProps<T> = PartProps<'td'> | ((row: T, column: DataTableColumn<T>) => PartProps<'td'>);\n\n/** DataTableView 的属性;未声明的属性落到 table 上(aria-label 或 aria-labelledby 是表格的名称) */\nexport interface DataTableViewProps<T> extends PartProps<'table', 'role'>, DataTableOptions {\n /** 要渲染的行(已排序、已按展开状态展开) */\n rows: readonly DataTableRowModel<T>[];\n /** 列 */\n columns: readonly DataTableColumn<T>[];\n /** 当前排序:一列,或多列(前面的优先) */\n sort?: SortState | readonly SortState[] | null;\n /** 点了可排序的列标题(多列排序时按住 Shift 是追加) */\n onSortClick?: (key: string, event: MouseEvent) => void;\n /** 表头筛选:各列选中的值(列定义写了 filter 的列,列标题上有筛选按钮) */\n filters?: Readonly<Record<string, readonly string[]>>;\n /** 改了一列的筛选 */\n onFilterChange?: (key: string, values: string[]) => void;\n /** 表头筛选的选项(列出出现过的值时要看全部行,由外层给) */\n filterOptionsOf?: (column: DataTableColumn<T>) => readonly ColumnFilterOption[];\n /** 列菜单:列标题结尾多一个 ⋮,排序、固定、移动、隐藏,选了交给 onColumnAction */\n columnMenu?: boolean;\n /** 选了列菜单里的一项;width 是这一列现在的宽度(固定没写宽度的列时,外层把它记成列宽) */\n onColumnAction?: (key: string, action: keyof ColumnMenuActions, width: number) => void;\n /** 单元格导航:表格是 role=\"grid\",方向键在格之间走,只有一格能 Tab 进入;有可编辑的列时默认开 */\n cellNavigation?: boolean;\n /** 正在编辑的格 */\n editing?: CellPosition | null;\n /** 正在编辑的格里放的编辑器 */\n renderEditor?: (row: T, column: DataTableColumn<T>) => VNodeChild;\n /** 各行的校验错误:列的 key → 原因(行校验,如“结束日期早于开始日期”),标在格上 */\n rowErrors?: (row: T) => Readonly<Record<string, string>> | null | undefined;\n /** 在可编辑的格上按 Enter / F2、双击,或直接打字(text 是打的字,替换原值):开始编辑 */\n onEditStart?: (cell: CellPosition, text?: string) => void;\n /** 编辑中的按键(Enter 提交、Tab 提交并到下一格、Esc 放弃),由外层处理 */\n onEditKeydown?: (event: KeyboardEvent, cell: CellPosition) => void;\n /** 选择方式;不写时没有勾选列。多选时表头有全选 */\n selectionMode?: keyof SelectionModes;\n /** 已选行的 key */\n selectedKeys?: readonly string[];\n /** 部分勾选的行的 key(树形表格的父行:子孙只勾了一部分):勾选框显示横线,读屏念“部分选中” */\n partialKeys?: readonly string[];\n /** 勾选或取消一行 */\n onToggleRow?: (key: string) => void;\n /** 表头的全选:全部选中时取消全部,否则全选 */\n onToggleAll?: () => void;\n /** 各列当前的宽度(px):拖动调整过的、或列定义里写的 */\n widths: Readonly<Record<string, number | undefined>>;\n /** 拖动或用键盘调整了某列的宽度 */\n onResize?: (key: string, width: number) => void;\n /** 列宽可以调整(列定义里的 resizable 优先) */\n resizable?: boolean;\n /** 加载中 */\n loading?: boolean;\n /** 没有数据时显示的内容;默认是 Empty(文案取语言包) */\n empty?: VNodeChild;\n /** 第一个数据列的单元格内容前面加的东西(TreeDataTable 的缩进与展开按钮) */\n leading?: (row: DataTableRowModel<T>, index: number) => VNodeChild;\n /** 行的估计高度(px);不写时按密度估计,渲染后以实际高度为准 */\n estimateRowHeight?: number;\n /** 行的色调:导入校验的错误行、即将超期的行整行着浅色底(不透明,固定列也盖得住) */\n rowTone?: (row: T) => RowTone | undefined;\n /** 主从视图里正在看的那一行的 key:整行高亮、起始边一条竖线,带 aria-current */\n activeKey?: string | null;\n /**\n * 点了一行(点在按钮、链接、输入框上的除外):主从视图里打开这一行的详情。\n * 只是鼠标的捷径:行里还要有键盘能到的入口(如名称做成按钮或链接)\n */\n onRowClick?: (row: T, key: string) => void;\n /** 这一行能不能勾选:不能的勾选框不可用,全选也跳过它 */\n isRowSelectable?: (row: T) => boolean;\n /** 隐藏的列的 key:列显示设置(用 Menu 的 MenuCheckboxItem 组合)写回这里 */\n hiddenColumns?: readonly string[];\n /** 合计行第一列的文字(第一列自己没写 summary 时),默认取语言包(合计) */\n summaryLabel?: VNodeChild;\n /** 分组表头:相邻的几列上方共用一个标题,表头变成两行;没分组的列跨两行 */\n columnGroups?: readonly DataTableColumnGroup[];\n /** 行的详情:写了它时多一列展开按钮,展开的行下面多一行跨全部列的详情 */\n renderDetail?: (row: T) => VNodeChild;\n /** 这一行有没有详情:没有的不显示展开按钮;默认都有 */\n hasDetail?: (row: T) => boolean;\n /** 展开了详情的行的 key */\n expandedRows?: readonly string[];\n /** 点了一行的展开按钮 */\n onToggleDetail?: (key: string) => void;\n /** 可见行范围变化(不含 overscan):接近末尾时加载更多 */\n onRangeChange?: (range: VisibleRange) => void;\n /** 挂载后拿到滚动到某一行的方法:`handle={(api) => (table = api)}` */\n handle?: (api: DataTableHandle) => void;\n /**\n * 放在竖排的弹性容器(ViewportFill、Flex direction=\"column\")里:按行数自己的高度,最多占到剩下的高度,\n * 再多在表格里滚动;分页紧跟在表格下面。不写时最高 32em\n */\n flexible?: boolean;\n /** 外层滚动区域(决定表格的高度)的部件属性;高度用 sx 给,默认最高 32em */\n propsRoot?: Partial<ScrollAreaProps>;\n /** 每一行(tr)的部件属性,可以按行计算 */\n propsRow?: RowPartProps<T>;\n /** 每个单元格(td)的部件属性,可以按行与列计算 */\n propsCell?: CellPartProps<T>;\n /** 每个列标题(th)的部件属性,可以按列计算 */\n propsHeaderCell?: PartProps<'th'> | ((column: DataTableColumn<T>) => PartProps<'th'>);\n /** 空状态的部件属性 */\n propsEmpty?: Partial<EmptyProps>;\n /** 加载中占位的部件属性 */\n propsSkeleton?: SkeletonShapeProps;\n /** 分组标题(th,跨组里的几列)的部件属性,可以按组计算 */\n propsGroupHeaderCell?: PartProps<'th'> | ((group: DataTableColumnGroup) => PartProps<'th'>);\n /** 可排序列标题里的排序按钮的部件属性 */\n propsSortButton?: Partial<ButtonBaseProps>;\n /** 列宽调整手柄的部件属性 */\n propsResizer?: Partial<ColumnResizerProps>;\n /** 可排序列标题里的文字(排序按钮里、图标前)的部件属性 */\n propsSortLabel?: PartProps<'span'>;\n /** 表头(thead,吸顶)的部件属性 */\n propsHead?: PartProps<'thead'>;\n /** 表头的行(tr)的部件属性;分组表头的两行都用它 */\n propsHeadRow?: PartProps<'tr', 'aria-rowindex'>;\n /** 表头勾选列(th,多选时里面是全选框)的部件属性 */\n propsSelectHeaderCell?: PartProps<'th', 'scope'>;\n /** 每行勾选列(td)的部件属性 */\n propsSelectCell?: PartProps<'td'>;\n /** 表头的全选框(多选时)的部件属性;勾选状态、不可用与切换由组件管理 */\n propsSelectAll?: Omit<Partial<CheckboxProps>, SelectCheckboxManaged | 'disabled'>;\n /** 每一行的勾选框(多选时)的部件属性;勾选状态、切换与名称(选择第 N 行,每行不同)由组件管理 */\n propsSelectCheckbox?: Omit<Partial<CheckboxProps>, SelectCheckboxManaged | 'aria-label'>;\n /** 每一行的单选框(单选时)的部件属性;选中状态、切换与名称由组件管理 */\n propsSelectRadio?: Omit<Partial<RadioProps>, 'value' | 'disabled' | 'aria-label'>;\n /** 第一个数据列里 leading 与内容的外层(有 leading 时才有)的部件属性 */\n propsLeading?: PartProps<'div'>;\n /** 第一个数据列里内容的包装(有 leading 时才有)的部件属性 */\n propsContent?: PartProps<'div'>;\n /** 刷新中表头下方的进度条的部件属性 */\n propsProgress?: Partial<ProgressProps>;\n /** 空状态所在的单元格(td,跨全部列)的部件属性 */\n propsEmptyCell?: PartProps<'td', 'colspan'>;\n /** 详情列的列标题(th,文字只给读屏)的部件属性 */\n propsDetailHeaderCell?: PartProps<'th', 'scope'>;\n /** 每行展开按钮所在单元格(td)的部件属性 */\n propsDetailToggleCell?: PartProps<'td'>;\n /** 展开按钮的部件属性;展开状态、关联的详情与点击由组件管理 */\n propsDetailToggle?: Omit<Partial<IconButtonProps>, 'aria-expanded' | 'aria-controls' | 'onClick'>;\n /** 详情行(tr)的部件属性 */\n propsDetailRow?: PartProps<'tr', 'aria-rowindex'>;\n /** 详情所在的单元格(td,跨全部列)的部件属性 */\n propsDetailCell?: PartProps<'td', 'colspan'>;\n /** 表尾(tfoot,合计行,吸底)的部件属性 */\n propsFoot?: PartProps<'tfoot'>;\n /** 合计行每个单元格的部件属性,可以按列计算 */\n propsSummaryCell?: PartProps<'td'> | ((column: DataTableColumn<T>) => PartProps<'td'>);\n}\n\n/** 一格的位置:行的 key 与列的 key */\nexport interface CellPosition {\n /** 行的 key */\n row: string;\n /** 列的 key */\n column: string;\n}\n\n/** DataTable、TreeDataTable 的 handle 拿到的方法 */\nexport interface DataTableHandle {\n /**\n * 滚动到 key 这一行:还没渲染(虚拟滚动)的行也行,停在吸顶表头之下、吸底合计行之上;\n * align 默认 auto(已经完整可见就不动)。树形表格里只能滚到已展开的行。找不到这一行时返回 false\n */\n scrollToRow: (key: string, options?: VirtualScrollOptions) => boolean;\n}\n\n/** 行的色调:整行浅色底 */\nexport type RowTone = 'info' | 'success' | 'warning' | 'danger';\n\n/** 勾选列里的勾选框由表格管理的属性 */\ntype SelectCheckboxManaged = 'checked' | 'indeterminate' | 'onChange';\n\n/** 勾选列的宽度(px) */\nconst SELECT_WIDTH = 44;\n/** 详情列(展开按钮)的宽度(px) */\nconst DETAIL_WIDTH = 40;\n/** 详情行的估计高度(px),渲染后以实际高度为准 */\nconst DETAIL_HEIGHT = 160;\n/** 加载中至少、至多显示几行骨架:在这之间按表体到窗口底边的高度铺满 */\nconst SKELETON_ROWS = { min: 6, max: 50 };\n/** 各密度下行高的估计(px) */\nconst ROW_HEIGHT: Record<keyof DataTableDensities, number> = {\n compact: 36,\n standard: 44,\n comfortable: 52,\n};\n\n/** DataTable、TreeDataTable 的样式:行的色调(不透明的浅色底,悬停加深) */\nexport const dataTableRowToneStyles = css.create({\n info: { backgroundColor: { default: '_infoSoft', ':hover': '_infoSoftHover' } },\n success: { backgroundColor: { default: '_successSoft', ':hover': '_successSoftHover' } },\n warning: { backgroundColor: { default: '_warningSoft', ':hover': '_warningSoftHover' } },\n danger: { backgroundColor: { default: '_dangerSoft', ':hover': '_dangerSoftHover' } },\n});\n\n// 列宽、偏移、占位高度是任意值,用动态样式;单独一个 create,见 COMPONENTS.md §4\n/** DataTable、TreeDataTable 的样式:width、minWidth、height、start、end、percent */\nexport const dataTableDynamicStyles = css.create({\n width: (px: number) => ({ width: px }),\n minWidth: (px: number) => ({ minWidth: px }),\n height: (px: number) => ({ height: px }),\n start: (px: number) => ({ insetInlineStart: px }),\n end: (px: number) => ({ insetInlineEnd: px }),\n // 详情内容让过勾选列与展开列,和第一个数据列对齐\n indent: (px: number) => ({ marginInlineStart: px, maxWidth: `calc(100cqi - ${px}px)` }),\n percent: (value: string) => ({ width: value }),\n});\n\n/** 固定列单元格的样式:position: sticky 加上按列宽累加的偏移;挨着滚动列的那一列加一条竖线 */\nfunction stickyCellSx(column: DataTableColumn<never>, offsets: StickyOffsets) {\n if (column.sticky === 'start')\n return [\n dataTableStateStyles.sticky,\n dataTableDynamicStyles.start(offsets.start.get(column.key)!),\n offsets.startEdge === column.key && dataTableStateStyles.stickyStartEdge,\n ];\n if (column.sticky === 'end')\n return [\n dataTableStateStyles.sticky,\n dataTableDynamicStyles.end(offsets.end.get(column.key)!),\n offsets.endEdge === column.key && dataTableStateStyles.stickyEndEdge,\n ];\n return null;\n}\n\n/** 勾选列、详情列在有起始边固定列时也固定,偏移是它前面的列宽 */\nfunction leadingStickySx(sticky: boolean, offset: number) {\n return sticky && [dataTableStateStyles.sticky, dataTableDynamicStyles.start(offset)];\n}\n\n/** 分组标题的固定:组里的列都固定在同一侧时跟着固定,偏移取最靠外的一列;含挨着滚动列的那一列时也画竖线 */\nfunction groupStickySx(columns: readonly DataTableColumn<never>[], offsets: StickyOffsets) {\n const side = columns[0]?.sticky;\n if (!side || columns.some((column) => column.sticky !== side)) return null;\n const [outer, inner] =\n side === 'start' ? [columns[0]!, columns.at(-1)!] : [columns.at(-1)!, columns[0]!];\n return side === 'start'\n ? [\n dataTableStateStyles.sticky,\n dataTableDynamicStyles.start(offsets.start.get(outer.key)!),\n offsets.startEdge === inner.key && dataTableStateStyles.stickyStartEdge,\n ]\n : [\n dataTableStateStyles.sticky,\n dataTableDynamicStyles.end(offsets.end.get(outer.key)!),\n offsets.endEdge === inner.key && dataTableStateStyles.stickyEndEdge,\n ];\n}\n\n/** DataTableRow 的属性:一行要用到的全部数据;除了 row、index、selected,同一张表里各行都相同 */\nexport interface DataTableRowProps<T> {\n /** 这一行 */\n row: DataTableRowModel<T>;\n /** 在全部行里的序号 */\n index: number;\n /** 是否已选 */\n selected: boolean;\n /** 部分勾选(树形表格的父行) */\n partial?: boolean;\n /** 能不能勾选,默认 true */\n selectable?: boolean;\n /** 整行的色调 */\n tone?: RowTone;\n /** 主从视图里正在看的一行 */\n active?: boolean;\n /** 点了这一行 */\n onRowClick?: (row: T, key: string) => void;\n /** 选择方式;不写时没有勾选列 */\n selectionMode?: keyof SelectionModes;\n /** 列 */\n columns: readonly DataTableColumn<T>[];\n /** 密度 */\n density: keyof DataTableDensities;\n /** 样式 */\n variant: keyof DataTableVariants;\n /** 斑马纹 */\n striped: boolean;\n /** 固定列的偏移 */\n offsets: StickyOffsets;\n /** 表头有几行(分组表头是两行):行的 aria-rowindex 从表头之后算起,默认 1 */\n headerRows?: number;\n /** 在表体里的位置(展开的详情也算一行):测量与 aria-rowindex 用它;默认等于 index */\n position?: number;\n /** 表格有详情列 */\n detailColumn?: boolean;\n /** 这一行有详情(显示展开按钮),默认 true */\n expandable?: boolean;\n /** 详情已展开 */\n expanded?: boolean;\n /** 详情单元格的 id(展开按钮的 aria-controls) */\n detailId?: string;\n /** 详情列单元格的部件属性 */\n propsDetailToggleCell?: PartProps<'td'>;\n /** 展开按钮的部件属性 */\n propsDetailToggle?: DataTableViewProps<T>['propsDetailToggle'];\n /** 点了展开按钮 */\n onToggleDetail?: (key: string) => void;\n /** 第一个数据列前面加的东西(TreeDataTable 的缩进与展开按钮) */\n leading?: (row: DataTableRowModel<T>, index: number) => VNodeChild;\n /** 行的部件属性 */\n propsRow?: RowPartProps<T>;\n /** 单元格的部件属性 */\n propsCell?: CellPartProps<T>;\n /** 勾选列单元格的部件属性 */\n propsSelectCell?: PartProps<'td'>;\n /** 勾选框的部件属性 */\n propsSelectCheckbox?: DataTableViewProps<T>['propsSelectCheckbox'];\n /** 单选框的部件属性 */\n propsSelectRadio?: DataTableViewProps<T>['propsSelectRadio'];\n /** leading 与内容外层的部件属性 */\n propsLeading?: PartProps<'div'>;\n /** 内容包装的部件属性 */\n propsContent?: PartProps<'div'>;\n /** 测量行高(虚拟滚动) */\n measure: (element: unknown) => void;\n /** 勾选或取消这一行 */\n onToggle?: (key: string) => void;\n /** 单元格导航:数据格可以聚焦,可编辑的格响应 Enter / F2、双击、打字 */\n cellNavigation?: boolean;\n /** 这一行正在编辑的列 */\n editingColumn?: string;\n /** 正在编辑的格里放的编辑器 */\n renderEditor?: DataTableViewProps<T>['renderEditor'];\n /** 这一行的校验错误 */\n rowErrors?: DataTableViewProps<T>['rowErrors'];\n /** 开始编辑一格 */\n onEditStart?: DataTableViewProps<T>['onEditStart'];\n /** 编辑中的按键 */\n onEditKeydown?: DataTableViewProps<T>['onEditKeydown'];\n}\n\n/**\n * 表格的一行:单独成组件,props 没变的行在表格重新渲染时直接跳过——\n * 滚动只挂载新进入视口的行,勾选一行只更新这一行(原来每次都重建全部可见行与其中的勾选框)\n */\nexport const DataTableRow = _component(\n <T,>({\n row,\n index,\n selected,\n partial = false,\n selectable = true,\n tone,\n active = false,\n onRowClick,\n selectionMode,\n columns,\n density,\n variant,\n striped,\n offsets,\n headerRows = 1,\n position = index,\n detailColumn = false,\n expandable = true,\n expanded = false,\n detailId,\n propsDetailToggleCell,\n propsDetailToggle,\n onToggleDetail,\n leading,\n propsRow,\n propsCell,\n propsSelectCell,\n propsSelectCheckbox,\n propsSelectRadio,\n propsLeading,\n propsContent,\n measure,\n onToggle,\n cellNavigation = false,\n editingColumn,\n renderEditor,\n rowErrors,\n onEditStart,\n onEditKeydown,\n }: DataTableRowProps<T>) => {\n const lang = useLang();\n const recipe = useRecipe(dataTableRecipe);\n // 各部件层按档位组合缓存:同一种行(奇偶、密度、样式)的各格拿到的是同一个对象\n const s = _derived(recipe({ density, variant, striped: striped && index % 2 === 1 }));\n\n /** 数据格的按键:编辑中交给外层;可编辑的格按 Enter / F2 开始编辑,打一个字直接替换 */\n function onCellKeydown(event: KeyboardEvent, column: DataTableColumn<T>) {\n const cell = { row: row.key, column: column.key };\n if (editingColumn === column.key) return onEditKeydown?.(event, cell);\n if (event.target !== event.currentTarget || !isCellEditable(column, row.data)) return;\n if (event.key === 'Enter' || event.key === 'F2') {\n event.preventDefault();\n onEditStart?.(cell);\n } else if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n onEditStart?.(cell, event.key);\n }\n }\n return () => (\n <tr\n {...mergeAttrs<'tr'>(\n {\n ...s.row,\n sx: [\n s.row.sx,\n tone && dataTableRowToneStyles[tone],\n selected && dataTableStateStyles.selected,\n active && dataTableStateStyles.active,\n onRowClick && dataTableStateStyles.clickable,\n ],\n },\n typeof propsRow === 'function' ? propsRow(row.data, index) : propsRow,\n {\n ref: measure,\n 'aria-rowindex': position + headerRows + 1,\n 'aria-selected': selectionMode != null ? selected : undefined,\n 'aria-current': active ? 'true' : undefined,\n onClick: onRowClick\n ? (event: MouseEvent) => {\n // 点在行里的控件上:交给控件自己\n if (\n (event.target as Element).closest('a, button, input, select, textarea, label')\n )\n return;\n onRowClick(row.data, row.key);\n }\n : undefined,\n },\n )}\n data-index={position}\n data-key={row.key}\n data-state={selected ? 'selected' : undefined}\n data-tone={tone}\n >\n {selectionMode && (\n <td\n {...mergeAttrs<'td'>(\n {\n ...s.selectCell,\n sx: [\n s.cell.sx,\n s.selectCell.sx,\n offsets.start.size > 0 && dataTableStateStyles.stickySelect,\n active && dataTableStateStyles.activeEdge,\n ],\n },\n propsSelectCell,\n )}\n >\n {selectionMode === 'single' ? (\n // 单选:同一个 name 的原生单选框,选中由 DataTableView 提供的 RadioGroupContext 决定\n <Radio\n {...mergePartProps<Partial<RadioProps>>(s.selectRadio, propsSelectRadio, {\n disabled: !selectable,\n 'aria-label': lang.tableSelectRow(index + 1),\n })}\n value={row.key}\n />\n ) : (\n <Checkbox\n {...mergePartProps<CheckboxProps>(\n // 名称每行不同(选择第 N 行):类型里不让使用方覆盖\n { ...s.selectCheckbox, 'aria-label': lang.tableSelectRow(index + 1) },\n propsSelectCheckbox,\n {\n _checked: selected,\n indeterminate: partial,\n disabled: !selectable,\n onChange: () => onToggle?.(row.key),\n },\n )}\n />\n )}\n </td>\n )}\n {detailColumn && (\n <td\n {...mergeAttrs<'td'>(\n {\n ...s.detailToggleCell,\n sx: [\n s.cell.sx,\n s.detailToggleCell.sx,\n leadingStickySx(offsets.start.size > 0, selectionMode ? SELECT_WIDTH : 0),\n active && !selectionMode && dataTableStateStyles.activeEdge,\n ],\n },\n propsDetailToggleCell,\n )}\n >\n {expandable && (\n <IconButton\n {...mergePartProps<IconButtonProps>(\n {\n ...s.detailToggle,\n icon: ChevronRight,\n size: 'sm',\n radius: 'full',\n 'aria-label': lang.tableRowDetails(rowLabel(columns, row)),\n },\n propsDetailToggle,\n {\n 'aria-expanded': expanded,\n 'aria-controls': expanded ? detailId : undefined,\n // 箭头的转向跟着展开状态:使用方的 propsIcon 合并进来,而不是整个替换掉\n propsIcon: mergeProps<IconProps>(\n { flipInRtl: true, sx: disclosureStyles.icon },\n propsDetailToggle?.propsIcon,\n expanded ? { sx: dataTableStateStyles.chevronOpen } : undefined,\n ),\n onClick: () => onToggleDetail?.(row.key),\n },\n )}\n />\n )}\n </td>\n )}\n {columns.map((column, position) => {\n const editing = editingColumn === column.key;\n const value = editing\n ? renderEditor?.(row.data, column)\n : column.cell\n ? column.cell(row.data, index)\n : String(columnValue(column, row.data) ?? '');\n const error = cellNavigation ? rowErrors?.(row.data)?.[column.key] : undefined;\n const editable = cellNavigation && isCellEditable(column, row.data);\n return (\n <td\n key={column.key}\n {...mergeAttrs<'td'>(\n {\n ...s.cell,\n sx: [\n s.cell.sx,\n dataTableStateStyles[column.align ?? 'start'],\n column.wrap && dataTableStateStyles.wrap,\n stickyCellSx(column, offsets),\n active &&\n position === 0 &&\n !selectionMode &&\n !detailColumn &&\n dataTableStateStyles.activeEdge,\n cellNavigation && dataTableStateStyles.gridCell,\n editing && dataTableStateStyles.editingCell,\n !!error && dataTableStateStyles.invalidCell,\n ],\n },\n typeof propsCell === 'function' ? propsCell(row.data, column) : propsCell,\n cellNavigation\n ? ({\n 'data-column': column.key,\n 'aria-invalid': error ? 'true' : undefined,\n // 错误原因:悬停看,读屏随格一起念(aria-description)\n title: error,\n 'aria-description': error,\n onKeydown: (event: KeyboardEvent) => onCellKeydown(event, column),\n onDblclick: editable\n ? () => onEditStart?.({ row: row.key, column: column.key })\n : undefined,\n } as PartProps<'td'>)\n : {},\n )}\n >\n {position === 0 && leading ? (\n <div {...mergeAttrs<'div'>(s.leading, propsLeading)}>\n {leading(row, index)}\n <div {...mergeAttrs<'div'>(s.content, propsContent)}>{value}</div>\n </div>\n ) : (\n value\n )}\n </td>\n );\n })}\n </tr>\n );\n },\n);\n\n/** 行的名称(展开按钮用):第一列的文字,没有时用行的 key */\nexport function rowLabel<T>(\n columns: readonly DataTableColumn<T>[],\n row: DataTableRowModel<T>,\n): string {\n const first = columns[0] ? columnValue(columns[0], row.data) : undefined;\n return first != null && first !== '' ? String(first) : row.key;\n}\n\n/** DataTableDetailRow 的属性 */\nexport interface DataTableDetailRowProps<T> {\n /** 详情所属的行 */\n row: DataTableRowModel<T>;\n /** 在表体里的位置(测量与 aria-rowindex) */\n position: number;\n /** 表头有几行 */\n headerRows: number;\n /** 跨几列(全部列,含勾选列与详情列) */\n span: number;\n /** 勾选列与展开列的宽度(px):内容让过它们,和第一个数据列对齐 */\n indent: number;\n /** 详情单元格的 id(展开按钮的 aria-controls 指向它) */\n id: string;\n /** 详情的内容 */\n renderDetail: (row: T) => VNodeChild;\n /** 详情行的部件属性 */\n propsDetailRow?: PartProps<'tr', 'aria-rowindex'>;\n /** 详情单元格的部件属性 */\n propsDetailCell?: PartProps<'td', 'colspan'>;\n /** 测量行高(虚拟滚动) */\n measure: (element: unknown) => void;\n}\n\n/** 展开的详情:一行一个跨全部列的单元格;单独成组件,滚动时没变的详情不必重渲 */\nexport const DataTableDetailRow = _component(\n <T,>({\n row,\n position,\n headerRows,\n span,\n indent,\n id,\n renderDetail,\n propsDetailRow,\n propsDetailCell,\n measure,\n }: DataTableDetailRowProps<T>) => {\n const recipe = useRecipe(dataTableRecipe);\n // 不选档位:详情的格不要按密度的上下内边距(内边距在内容上),行的底色也用不到\n const s = _derived(recipe());\n return () => (\n <tr\n {...mergeAttrs<'tr'>(s.detailRow, propsDetailRow, {\n ref: measure,\n 'aria-rowindex': position + headerRows + 1,\n })}\n data-index={position}\n data-detail=\"\"\n >\n <td\n {...mergeAttrs<'td'>(\n { ...s.detailCell, sx: [s.cell.sx, s.detailCell.sx] },\n propsDetailCell,\n { id, colspan: span },\n )}\n >\n <div\n {...mergeAttrs<'div'>({\n ...s.detailContent,\n sx: [s.detailContent.sx, dataTableDynamicStyles.indent(indent)],\n })}\n >\n {renderDetail(row.data)}\n </div>\n </td>\n </tr>\n );\n },\n);\n\n/** 表体里的一行:数据行,或某一行展开的详情 */\ninterface BodyEntry<T> {\n /** 所属的数据行 */\n row: DataTableRowModel<T>;\n /** 数据行在 rows 里的序号 */\n index: number;\n /** 是这一行的详情 */\n detail: boolean;\n}\n\n/** 表格的渲染层:虚拟滚动的行、吸顶表头、固定列、排序、勾选、列宽调整、加载与空状态 */\nexport const DataTableView = _component(\n <T,>({\n rows,\n columns,\n sort,\n onSortClick,\n filters,\n onFilterChange,\n filterOptionsOf,\n columnMenu = false,\n onColumnAction,\n cellNavigation = false,\n editing,\n renderEditor,\n rowErrors,\n onEditStart,\n onEditKeydown,\n selectionMode,\n selectedKeys = [],\n partialKeys,\n onToggleRow,\n onToggleAll,\n widths,\n onResize,\n resizable = false,\n loading = false,\n empty,\n leading,\n density = 'standard',\n variant = 'surface',\n striped = false,\n estimateRowHeight,\n onRangeChange,\n handle,\n rowTone,\n activeKey,\n onRowClick,\n isRowSelectable,\n hiddenColumns,\n summaryLabel,\n columnGroups,\n renderDetail,\n hasDetail,\n expandedRows,\n onToggleDetail,\n flexible = false,\n propsRoot,\n propsRow,\n propsCell,\n propsHeaderCell,\n propsGroupHeaderCell,\n propsEmpty,\n propsSkeleton,\n propsSortButton,\n propsResizer,\n propsSortLabel,\n propsHead,\n propsHeadRow,\n propsSelectHeaderCell,\n propsSelectCell,\n propsSelectAll,\n propsSelectCheckbox,\n propsSelectRadio,\n propsLeading,\n propsContent,\n propsProgress,\n propsEmptyCell,\n propsFoot,\n propsSummaryCell,\n propsDetailHeaderCell,\n propsDetailToggleCell,\n propsDetailToggle,\n propsDetailRow,\n propsDetailCell,\n ...rest\n }: DataTableViewProps<T>) => {\n const lang = useLang();\n const columnDisplay = useColumnDisplay<T>();\n const recipe = useRecipe(dataTableRecipe);\n // 表头、表尾、骨架、空状态的部件层:只随密度、样式与主题定制变(行各自按奇偶取,见 DataTableRow)\n const s = _derived(recipe({ density, variant }));\n // 骨架、进度条防闪烁;aria-busy 与空状态按真实的 loading\n const indicator = useDelayedLoading(() => loading);\n const selectedSet = _derived.by(() => new Set(selectedKeys));\n const partialSet = _derived.by(() => new Set(partialKeys));\n // 单选:各行的 Radio 接入这一组(同一个 name,方向键在可见的行之间移动),选中即写回\n const radioName = useId();\n RadioGroupContext.provide({\n get value() {\n return selectedKeys[0] ?? null;\n },\n name: radioName,\n disabled: false,\n readonly: false,\n required: false,\n invalid: false,\n size: undefined,\n tone: 'accent',\n select: (key) => onToggleRow?.(key),\n });\n // 遍历全部行:放在派生里,滚动时的重新渲染不必再算一遍;全选只看能勾选的行\n const selectableRows = _derived(\n isRowSelectable ? rows.filter((row) => isRowSelectable(row.data)) : rows,\n );\n const allSelected = _derived(\n selectableRows.length > 0 && selectableRows.every((row) => selectedSet.has(row.key)),\n );\n const someSelected = _derived(\n !allSelected && selectableRows.some((row) => selectedSet.has(row.key)),\n );\n const hidden = _derived.by(() => new Set(hiddenColumns ?? []));\n const visibleColumns = _derived(\n hidden.size > 0 ? columns.filter((column) => !hidden.has(column.key)) : columns,\n );\n let viewport = _state.raw<HTMLElement | null>(null);\n let body = _state.raw<HTMLElement | null>(null);\n // 单元格导航:表体里的数据格之间用方向键走(虚拟滚动下聚焦的格滚进视口,后面的行随之渲染出来)\n _effect(() =>\n body && cellNavigation\n ? gridFocus(body, { rows: 'tr[data-key]', cells: 'td[data-column]' })\n : undefined,\n );\n let head = _state.raw<HTMLElement | null>(null);\n let foot = _state.raw<HTMLElement | null>(null);\n // 骨架铺满表体到窗口底边(第一次加载时表格还没有高度,只放几行显得没铺开);\n // 行高量已经画出来的第一行骨架,估计值与实际差几 px,几十行下来就差出一截\n let skeletonRows = _state(SKELETON_ROWS.min);\n _effect(() => {\n if (!indicator.value || !body || rows.length > 0) return;\n const drawn = (body.firstElementChild as HTMLElement | null)?.offsetHeight;\n const rowHeight = drawn || (estimateRowHeight ?? ROW_HEIGHT[density]);\n const space = window.innerHeight - body.getBoundingClientRect().top;\n skeletonRows = clamp(Math.ceil(space / rowHeight), SKELETON_ROWS.min, SKELETON_ROWS.max);\n });\n\n const detailIdPrefix = useId();\n const detailId = (index: number) => `${detailIdPrefix}-detail-${index}`;\n const expandedSet = _derived.by(() => new Set(expandedRows ?? []));\n /** 表体里的各行:展开了详情的行后面跟它的详情;没有展开的详情时为 null,直接用 rows */\n const entries = _derived.by((): BodyEntry<T>[] | null => {\n if (!renderDetail || expandedSet.size === 0) return null;\n const list: BodyEntry<T>[] = [];\n rows.forEach((row, index) => {\n list.push({ row, index, detail: false });\n // 展开记录里可能留着已经没有详情的行(数据变了):只给还有详情的行出详情\n if (expandedSet.has(row.key) && (hasDetail?.(row.data) ?? true)) {\n list.push({ row, index, detail: true });\n }\n });\n return list;\n });\n const entryAt = (position: number): BodyEntry<T> =>\n entries ? entries[position]! : { row: rows[position]!, index: position, detail: false };\n\n const virtual = useVirtualizer(() => {\n const current = rows;\n const list = entries;\n // 先读出来:估计行高对每一行都要调用一次(几万行),每次都经过 props 的响应式读取很慢\n const rowHeight = estimateRowHeight ?? ROW_HEIGHT[density];\n return {\n count: list?.length ?? current.length,\n scrollElement: viewport,\n list: body,\n estimateSize: (position: number) => (list?.[position]?.detail ? DETAIL_HEIGHT : rowHeight),\n // 详情的 key 是行的 key 加一个不会出现在 key 里的分隔:与数据行的 key 不会重复\n getItemKey: (position: number) => {\n if (!list) return current[position]!.key;\n const entry = list[position]!;\n return entry.detail ? `${entry.row.key}\\u0000detail` : entry.row.key;\n },\n overscan: 8,\n onRangeChange,\n // 表头吸顶、合计行吸底:滚动到某一行时停在它们之间,不被挡住\n scrollPaddingStart: () => head?.offsetHeight ?? 0,\n scrollPaddingEnd: () => foot?.offsetHeight ?? 0,\n };\n });\n\n // 挂载之后才交出 handle:使用方在回调里立即滚动(打开页面就定位到某一行)也能生效\n const api: DataTableHandle = {\n scrollToRow(key, options) {\n const position = entries\n ? entries.findIndex((entry) => !entry.detail && entry.row.key === key)\n : rows.findIndex((row) => row.key === key);\n if (position < 0) return false;\n virtual.scrollToIndex(position, options);\n return true;\n },\n };\n watch(\n () => viewport,\n (element) => {\n if (element) handle?.(api);\n },\n { flush: 'post' },\n );\n\n // 每列的值类型(没写 type 时看第一个非空值)拼成字符串:类型没变时 shown 保持同一个引用,行组件不必重渲\n const types = _derived(\n visibleColumns\n .map((column) =>\n columnType(\n column,\n (function* () {\n for (const row of rows) yield row.data;\n })(),\n ),\n )\n .join('|'),\n );\n /** 补上默认对齐与格式化的列:没写 align、cell 的列按值类型来 */\n const shown = _derived.by(() =>\n columnDisplay.columns(visibleColumns, types.split('|') as (keyof ColumnTypes)[]),\n );\n const hasSummary = _derived(visibleColumns.some((column) => column.summary != null));\n // 有可见的分组时表头两行:第一行是分组标题与没分组的列(跨两行),第二行是组里的列\n const layout = _derived.by(() =>\n columnGroups?.length ? headerLayout(shown, columnGroups) : null,\n );\n const headerRows = _derived(layout?.some((cell) => cell.kind === 'group') ? 2 : 1);\n\n // 合计只随数据与列变:放在派生值里,滚动时(虚拟列表每换一次可见范围都重新渲染)不再逐行重算\n const rowData = _derived.by(() => rows.map((row) => row.data));\n const sums = _derived.by(() =>\n hasSummary\n ? shown.map((column) => (column.summary === 'sum' ? sumColumn(column, rowData) : null))\n : [],\n );\n\n /** 合计行里一列的内容 */\n function summaryOf(column: DataTableColumn<T>, position: number): VNodeChild {\n if (column.summary === 'sum') {\n const type = (types.split('|')[position] ?? 'number') as keyof ColumnTypes;\n const total = sums[position];\n return total == null\n ? (column.empty ?? lang.emptyValue)\n : columnDisplay.value(column, type, total);\n }\n if (column.summary) return column.summary(rowData);\n return position === 0 ? (summaryLabel ?? lang.tableSummary) : null;\n }\n\n /** 列的宽度:调整过的、列定义里的,或者没有(与其他没写宽度的列平分) */\n const widthOf = (column: DataTableColumn<T>) => widths[column.key] ?? column.width;\n\n const leadingWidth = () =>\n (selectionMode ? SELECT_WIDTH : 0) + (renderDetail ? DETAIL_WIDTH : 0);\n const bodyRowCount = () => entries?.length ?? rows.length;\n // 偏移没变时沿用上一次的对象:它交给每一行,调整非固定列的宽度(每次指针移动)时各行不必重渲染\n let lastOffsets: StickyOffsets | undefined;\n const offsets = _derived.by(() => {\n const next = stickyOffsets(shown, widthOf, leadingWidth());\n if (lastOffsets && sameStickyOffsets(lastOffsets, next)) return lastOffsets;\n return (lastOffsets = next);\n });\n const minWidth = () => tableMinWidth(shown, widthOf, leadingWidth());\n\n const sorts = _derived(sortList(sort));\n\n /** 列标题结尾的筛选按钮与列菜单 */\n function renderHeaderActions(\n column: DataTableColumn<T>,\n label: string,\n cell: () => HTMLElement | null,\n ) {\n const filter = columnFilter(column);\n if (!filter && !columnMenu) return null;\n const position = shown.findIndex((item) => item.key === column.key);\n const neighbour = (step: 1 | -1) => shown[position + step];\n return (\n <>\n {filter && (\n <ColumnFilterButton\n label={label}\n options={filter.options === 'text' ? 'text' : (filterOptionsOf?.(column) ?? [])}\n values={filters?.[column.key] ?? []}\n onChange={(values) => onFilterChange?.(column.key, values)}\n />\n )}\n {columnMenu && (\n <ColumnMenuButton\n label={label}\n sortable={!!column.sortable}\n sorted={sorts.find((item) => item.key === column.key)?.direction}\n pinned={column.sticky}\n // 固定列与不固定的列各自一段,只在段内移动\n canMove={{\n backward: neighbour(-1)?.sticky === column.sticky,\n forward: neighbour(1)?.sticky === column.sticky,\n }}\n canHide={shown.length > 1}\n onAction={(action) => onColumnAction?.(column.key, action, cell()?.offsetWidth ?? 0)}\n />\n )}\n </>\n );\n }\n\n /** 一个列标题;rowspan 是没分组的列在两行表头里跨两行,divider 是与分组相邻的竖线 */\n function renderHeaderCell(column: DataTableColumn<T>, rowspan = 1, divider = false) {\n const own = typeof propsHeaderCell === 'function' ? propsHeaderCell(column) : propsHeaderCell;\n const priority = sorts.findIndex((item) => item.key === column.key);\n const sorted = priority >= 0 ? sorts[priority]!.direction : undefined;\n const label = plainText(column.header) ?? column.key;\n const canResize = column.resizable ?? resizable;\n let cell: HTMLElement | null = null;\n const actions = renderHeaderActions(column, label, () => cell);\n const sortButton = column.sortable && (\n <ButtonBase\n {...mergePartProps<ButtonBaseProps>(s.sortButton, propsSortButton, {\n onClick: (event: MouseEvent) => onSortClick?.(column.key, event),\n })}\n >\n <span {...mergeAttrs<'span'>(s.sortLabel, propsSortLabel)}>{column.header}</span>\n <Icon\n {...mergePartProps<IconProps>({\n ...s.sortIcon,\n icon:\n sorted === 'ascending'\n ? ArrowUp\n : sorted === 'descending'\n ? ArrowDown\n : ArrowUpDown,\n sx: [s.sortIcon.sx, sorted && dataTableStateStyles.sortActive],\n })}\n />\n {sorts.length > 1 && priority >= 0 && (\n <>\n <span {...mergeAttrs<'span'>(s.sortPriority)} aria-hidden=\"true\">\n {priority + 1}\n </span>\n {/* aria-sort 只放在第一排序列上(ARIA 的要求),其余列的次序与方向写给读屏 */}\n {priority > 0 && (\n <VisuallyHidden>\n {lang.tableSortPriority(\n priority + 1,\n sorted === 'ascending' ? lang.tableSortAscending : lang.tableSortDescending,\n )}\n </VisuallyHidden>\n )}\n </>\n )}\n </ButtonBase>\n );\n const content = sortButton || column.header;\n return (\n <th\n key={column.key}\n {...mergeAttrs<'th'>(\n {\n ...s.headerCell,\n sx: [\n s.headerCell.sx,\n dataTableStateStyles[column.align ?? 'start'],\n stickyCellSx(column, offsets),\n divider && dataTableStateStyles.groupDivider,\n ],\n },\n own,\n {\n ref: (element: unknown) => (cell = element as HTMLElement | null),\n scope: 'col',\n rowspan: rowspan > 1 ? rowspan : undefined,\n 'aria-sort': column.sortable ? (priority === 0 ? sorted : 'none') : undefined,\n },\n )}\n data-sticky={column.sticky}\n >\n {actions ? (\n <div {...mergeAttrs<'div'>(s.headerContent)}>\n <span\n {...mergeAttrs<'span'>({\n ...s.headerMain,\n sx: [\n s.headerMain.sx,\n column.align === 'end' && dataTableStateStyles.headerMainEnd,\n ],\n })}\n >\n {content}\n </span>\n {actions}\n </div>\n ) : (\n content\n )}\n {canResize && (\n <ColumnResizer\n {...mergePartProps<ColumnResizerProps>(\n {\n label,\n width: widthOf(column),\n minWidth: column.minWidth,\n onWidthChange: (width: number) => onResize?.(column.key, width),\n },\n propsResizer,\n )}\n />\n )}\n </th>\n );\n }\n\n /** 一个分组标题:跨组里的几列 */\n function renderGroupCell(\n group: DataTableColumnGroup,\n members: DataTableColumn<T>[],\n key: string,\n divider: boolean,\n ) {\n return (\n <th\n key={key}\n {...mergeAttrs<'th'>(\n {\n ...s.groupHeaderCell,\n sx: [\n s.headerCell.sx,\n s.groupHeaderCell.sx,\n groupStickySx(members, offsets),\n divider && dataTableStateStyles.groupDivider,\n ],\n },\n typeof propsGroupHeaderCell === 'function'\n ? propsGroupHeaderCell(group)\n : propsGroupHeaderCell,\n { scope: 'colgroup', colspan: members.length },\n )}\n >\n {group.header}\n </th>\n );\n }\n\n /** 表头的列标题:一行;有分组时两行 */\n function renderHeaderRows(selectHeader: VNodeChild, detailHeader: VNodeChild) {\n const cells = layout;\n if (!cells || headerRows === 1)\n return (\n <tr {...mergeAttrs<'tr'>(s.headRow, propsHeadRow, { 'aria-rowindex': 1 })}>\n {selectHeader}\n {detailHeader}\n {shown.map((column) => renderHeaderCell(column))}\n </tr>\n );\n const nextToGroup = (position: number) =>\n position > 0 &&\n (cells[position]!.kind === 'group' || cells[position - 1]!.kind === 'group');\n return [\n <tr key=\"groups\" {...mergeAttrs<'tr'>(s.headRow, propsHeadRow, { 'aria-rowindex': 1 })}>\n {selectHeader}\n {detailHeader}\n {cells.map((cell, position) =>\n cell.kind === 'group'\n ? renderGroupCell(\n cell.group,\n cell.columns,\n `${cell.group.key}-${position}`,\n nextToGroup(position),\n )\n : renderHeaderCell(cell.column, 2, nextToGroup(position)),\n )}\n </tr>,\n <tr key=\"columns\" {...mergeAttrs<'tr'>(s.headRow, propsHeadRow, { 'aria-rowindex': 2 })}>\n {cells.flatMap((cell, position) =>\n cell.kind === 'group'\n ? cell.columns.map((column, index) =>\n renderHeaderCell(column, 1, index === 0 && position > 0),\n )\n : [],\n )}\n </tr>,\n ];\n }\n\n return () => {\n const span = shown.length + (selectionMode ? 1 : 0) + (renderDetail ? 1 : 0);\n const items = virtual.items;\n const top = items[0]?.start ?? 0;\n const bottom = items.length ? virtual.total - items.at(-1)!.end : 0;\n return (\n <ScrollArea\n {...mergePartProps<ScrollAreaProps>(\n {\n ...s.root,\n axis: 'both',\n sx: [s.root.sx, flexible && dataTableStateStyles.flexible],\n },\n propsRoot,\n { propsViewport: { ref: _toRef(viewport) } },\n )}\n >\n <table\n {...mergeAttrs<'table'>(\n { ...s.table, sx: [s.table.sx, dataTableDynamicStyles.minWidth(minWidth())] },\n rest,\n {\n // 合计行只在有数据时渲染(见 tfoot),没渲染时不算进总行数\n 'aria-rowcount':\n bodyRowCount() + headerRows + (hasSummary && rows.length > 0 ? 1 : 0),\n 'aria-busy': loading || undefined,\n // 单元格导航:读屏按网格念,方向键在格之间走\n role: cellNavigation ? 'grid' : undefined,\n },\n )}\n >\n <colgroup>\n {selectionMode && <col {...css.attrs(dataTableDynamicStyles.width(SELECT_WIDTH))} />}\n {renderDetail && <col {...css.attrs(dataTableDynamicStyles.width(DETAIL_WIDTH))} />}\n {shown.map((column) => {\n const width = widthOf(column);\n return (\n <col\n key={column.key}\n {...(width != null ? css.attrs(dataTableDynamicStyles.width(width)) : {})}\n />\n );\n })}\n </colgroup>\n <thead {...mergeAttrs<'thead'>(s.head, propsHead, { ref: _toRef(head) })}>\n {renderHeaderRows(\n selectionMode && (\n <th\n {...mergeAttrs<'th'>(\n {\n ...s.selectHeaderCell,\n sx: [\n s.headerCell.sx,\n s.selectHeaderCell.sx,\n offsets.start.size > 0 && dataTableStateStyles.stickySelect,\n ],\n },\n propsSelectHeaderCell,\n { scope: 'col', rowspan: headerRows > 1 ? headerRows : undefined },\n )}\n >\n {selectionMode === 'single' && (\n // 单选没有全选:这一列的标题只给读屏\n <VisuallyHidden>{lang.tableSelectColumn}</VisuallyHidden>\n )}\n {selectionMode === 'multiple' && (\n <Checkbox\n {...mergePartProps<CheckboxProps>(\n { ...s.selectAll, 'aria-label': lang.tableSelectAll },\n propsSelectAll,\n {\n _checked: allSelected,\n indeterminate: someSelected,\n disabled: selectableRows.length === 0,\n onChange: () => onToggleAll?.(),\n },\n )}\n />\n )}\n </th>\n ),\n renderDetail && (\n <th\n {...mergeAttrs<'th'>(\n {\n ...s.detailHeaderCell,\n sx: [\n s.headerCell.sx,\n s.detailHeaderCell.sx,\n leadingStickySx(offsets.start.size > 0, selectionMode ? SELECT_WIDTH : 0),\n ],\n },\n propsDetailHeaderCell,\n { scope: 'col', rowspan: headerRows > 1 ? headerRows : undefined },\n )}\n >\n <span {...css.attrs(visuallyHiddenStyles.hidden)}>{lang.tableDetails}</span>\n </th>\n ),\n )}\n {indicator.value && rows.length > 0 && (\n <tr aria-hidden=\"true\">\n <td colspan={span} {...mergeAttrs<'td'>(s.progressCell)}>\n <div {...mergeAttrs<'div'>(s.progress)}>\n <Progress\n {...mergePartProps<ProgressProps>(\n { size: 'xs', 'aria-label': lang.loading },\n propsProgress,\n )}\n />\n </div>\n </td>\n </tr>\n )}\n </thead>\n <tbody {...mergeAttrs<'tbody'>(s.body)} ref={_toRef(body)}>\n {rows.length === 0 &&\n indicator.value &&\n Array.from({ length: skeletonRows }, (_, index) => (\n <tr key={`skeleton-${index}`} aria-hidden=\"true\" {...mergeAttrs<'tr'>(s.row)}>\n {selectionMode && <td {...mergeAttrs<'td'>(s.cell)} />}\n {renderDetail && <td {...mergeAttrs<'td'>(s.cell)} />}\n {shown.map((column, position) => (\n <td key={column.key} {...mergeAttrs<'td'>(s.cell)}>\n <Skeleton\n {...mergePartProps<SkeletonProps>(\n {\n ...s.skeleton,\n sx: [\n s.skeleton.sx,\n dataTableDynamicStyles.percent(\n `${90 - ((index + position) % 4) * 15}%`,\n ),\n ],\n // 同一行的单元格一起扫,行与行依次错开:一道波从上往下推过表格\n delay: index * SHIMMER_STAGGER,\n },\n propsSkeleton,\n )}\n />\n </td>\n ))}\n </tr>\n ))}\n {rows.length === 0 && !loading && (\n <tr>\n <td\n {...mergeAttrs<'td'>(\n { ...s.emptyCell, sx: [s.cell.sx, s.emptyCell.sx] },\n propsEmptyCell,\n { colspan: span },\n )}\n >\n {empty ?? (\n <Empty\n {...mergePartProps<EmptyProps>(\n { size: 'sm', title: lang.tableEmpty },\n propsEmpty,\n )}\n />\n )}\n </td>\n </tr>\n )}\n {top > 0 && (\n <tr aria-hidden=\"true\">\n <td\n colspan={span}\n {...mergeAttrs<'td'>({\n ...s.spacer,\n sx: [s.spacer.sx, dataTableDynamicStyles.height(top)],\n })}\n />\n </tr>\n )}\n {items.map((item) => {\n const { row, index, detail } = entryAt(item.index);\n if (detail && renderDetail)\n return (\n <DataTableDetailRow\n key={item.key as string}\n row={row}\n position={item.index}\n headerRows={headerRows}\n span={span}\n indent={leadingWidth()}\n id={detailId(index)}\n renderDetail={renderDetail}\n propsDetailRow={propsDetailRow}\n propsDetailCell={propsDetailCell}\n measure={virtual.measure}\n />\n );\n return (\n <DataTableRow\n key={row.key}\n row={row}\n index={index}\n position={item.index}\n detailColumn={renderDetail != null}\n expandable={hasDetail ? hasDetail(row.data) : true}\n expanded={expandedSet.has(row.key)}\n detailId={detailId(index)}\n propsDetailToggleCell={propsDetailToggleCell}\n propsDetailToggle={propsDetailToggle}\n onToggleDetail={onToggleDetail}\n selected={selectionMode != null && selectedSet.has(row.key)}\n partial={partialSet.has(row.key)}\n selectable={isRowSelectable ? isRowSelectable(row.data) : true}\n tone={rowTone?.(row.data)}\n active={activeKey != null && activeKey === row.key}\n onRowClick={onRowClick}\n selectionMode={selectionMode}\n columns={shown}\n density={density}\n variant={variant}\n striped={striped}\n offsets={offsets}\n headerRows={headerRows}\n leading={leading}\n propsRow={propsRow}\n propsCell={propsCell}\n propsSelectCell={propsSelectCell}\n propsSelectCheckbox={propsSelectCheckbox}\n propsSelectRadio={propsSelectRadio}\n propsLeading={propsLeading}\n propsContent={propsContent}\n measure={virtual.measure}\n onToggle={onToggleRow}\n cellNavigation={cellNavigation}\n editingColumn={editing?.row === row.key ? editing.column : undefined}\n renderEditor={renderEditor}\n rowErrors={rowErrors}\n onEditStart={onEditStart}\n onEditKeydown={onEditKeydown}\n />\n );\n })}\n {bottom > 0 && (\n <tr aria-hidden=\"true\">\n <td\n colspan={span}\n {...mergeAttrs<'td'>({\n ...s.spacer,\n sx: [s.spacer.sx, dataTableDynamicStyles.height(bottom)],\n })}\n />\n </tr>\n )}\n </tbody>\n {hasSummary && rows.length > 0 && (\n <tfoot {...mergeAttrs<'tfoot'>(s.foot, propsFoot, { ref: _toRef(foot) })}>\n <tr aria-rowindex={bodyRowCount() + headerRows + 1}>\n {selectionMode && (\n <td\n {...mergeAttrs<'td'>({\n ...s.summaryCell,\n sx: [\n s.cell.sx,\n s.summaryCell.sx,\n offsets.start.size > 0 && dataTableStateStyles.stickySelect,\n ],\n })}\n />\n )}\n {renderDetail && (\n <td\n {...mergeAttrs<'td'>({\n ...s.summaryCell,\n sx: [\n s.cell.sx,\n s.summaryCell.sx,\n leadingStickySx(offsets.start.size > 0, selectionMode ? SELECT_WIDTH : 0),\n ],\n })}\n />\n )}\n {shown.map((column, position) => (\n <td\n key={column.key}\n {...mergeAttrs<'td'>(\n {\n ...s.summaryCell,\n sx: [\n s.cell.sx,\n s.summaryCell.sx,\n dataTableStateStyles[column.align ?? 'start'],\n stickyCellSx(column, offsets),\n ],\n },\n typeof propsSummaryCell === 'function'\n ? propsSummaryCell(column)\n : propsSummaryCell,\n )}\n >\n {summaryOf(column, position)}\n </td>\n ))}\n </tr>\n </tfoot>\n )}\n </table>\n </ScrollArea>\n );\n };\n },\n { name: 'DataTableView' },\n);\n"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';
2
+ import type { VNodeChild } from 'vue';
3
+ import { type NumericFormat } from '../config/lang/format';
4
+ import type { SortValue } from '../utils/data/collation';
5
+ import { type ColumnTableProps } from './ColumnTable';
6
+ import { type ColumnTypes } from './columns';
7
+ import { type PivotAggregates } from './pivot';
8
+ /** 一个维度(行或列):取哪个字段、表头、显示与顺序 */
9
+ export interface PivotDimension<T> {
10
+ /** 字段名;写了 value 时只作标识 */
11
+ key: string;
12
+ /** 表头(行维度是这一列的表头;列维度显示在左上角的说明里) */
13
+ header: VNodeChild;
14
+ /** 取值;不写时取 row[key] */
15
+ value?: (row: T) => SortValue;
16
+ /** 显示的文字;不写时是值本身 */
17
+ format?: (value: string) => string;
18
+ /** 顺序:按这个排,没列出的排在后面;不写时按值排序 */
19
+ order?: readonly string[];
20
+ }
21
+ /** 聚合的数值 */
22
+ export interface PivotValue<T> {
23
+ /** 字段名;写了 value 时只作标识 */
24
+ key: string;
25
+ /** 名称:读屏的说明、合计的含义 */
26
+ header: VNodeChild;
27
+ /** 取值;不写时取 row[key] */
28
+ value?: (row: T) => SortValue;
29
+ /** 值的类型(同表格的列),默认 number */
30
+ type?: keyof ColumnTypes;
31
+ /** 数字的格式(同表格的列) */
32
+ format?: NumericFormat;
33
+ }
34
+ /** 透视表的一行(交给 ColumnTable 的部件属性):行维度的值 */
35
+ export interface PivotRow {
36
+ /** 各级维度值连起来的标识 */
37
+ key: string;
38
+ /** 各级行维度的值 */
39
+ dimensions: string[];
40
+ }
41
+ /** 未声明的属性落到 table 上;外观(density、variant、striped)同 Table */
42
+ export interface PivotTableProps<T> extends Omit<ColumnTableProps<PivotRow>, 'rows' | 'columns' | 'getKey' | 'mergeRepeated'> {
43
+ /** 明细 */
44
+ data: readonly T[];
45
+ /** 行维度,可以多级(相同的上级合并成一格) */
46
+ rows: readonly PivotDimension<T>[];
47
+ /** 列维度;不写时只有一列(按行汇总) */
48
+ columns?: PivotDimension<T>;
49
+ /** 聚合的数值;count 时可以不写 */
50
+ value?: PivotValue<T>;
51
+ /** 聚合方式,默认 sum */
52
+ aggregate?: keyof PivotAggregates;
53
+ /** 合计行与合计列,默认 true */
54
+ totals?: boolean;
55
+ /** 按数值给格子着色(热力图);合计不着色 */
56
+ heatmap?: boolean;
57
+ /** 没有明细的格子显示的内容,默认 — */
58
+ empty?: VNodeChild;
59
+ }
60
+ /** PivotTable 的样式:heat(按比例的底色) */
61
+ export declare const pivotTableStyles: Readonly<{
62
+ readonly heat: (percent: number) => Readonly<[css.CompiledStyles, css.InlineStyles]>;
63
+ readonly total: css.CompiledStyles;
64
+ }>;
65
+ /** 透视表:行维度 × 列维度的聚合,可以着色成热力图 */
66
+ export declare const PivotTable: <T>(props: PivotTableProps<T>) => import("@zerodep-dev/vue-tsx-pro-tsx").TsxNode;
@@ -0,0 +1,122 @@
1
+ import { toNumber } from "../utils/data/numeric.js";
2
+ import { t } from "../config/theme/tokens.js";
3
+ import { useLang } from "../config/context.js";
4
+ import { useFormat } from "../config/lang/format.js";
5
+ import { formatCell } from "./columns.js";
6
+ import { ColumnTable } from "./ColumnTable.js";
7
+ import { pivot } from "./pivot.js";
8
+ import { computed, createVNode, mergeProps } from "vue";
9
+ import { _component, readonlyProp, restProps } from "@zerodep-dev/vue-tsx-pro-tsx";
10
+ import * as css from "@zerodep-dev/vue-tsx-pro-tsx/styles";
11
+ //#region src/table/PivotTable.tsx
12
+ /** 一个维度(行或列):取哪个字段、表头、显示与顺序 */
13
+ /** 聚合的数值 */
14
+ /** 透视表的一行(交给 ColumnTable 的部件属性):行维度的值 */
15
+ /** 未声明的属性落到 table 上;外观(density、variant、striped)同 Table */
16
+ /** PivotTable 的样式:heat(按比例的底色) */
17
+ var pivotTableStyles = css.create({
18
+ heat: (percent) => ({ backgroundColor: `color-mix(in srgb, ${t.colors.accent} ${percent}%, transparent)` }),
19
+ total: { fontWeight: "_semibold" }
20
+ });
21
+ var fieldOf = (dimension) => (row) => dimension.value ? dimension.value(row) : row[dimension.key] ?? null;
22
+ /** 透视表:行维度 × 列维度的聚合,可以着色成热力图 */
23
+ var PivotTable = /*#__PURE__*/ _component((_props, _ctx) => {
24
+ const _cache = [];
25
+ const data = readonlyProp(_props, "data");
26
+ const rows = readonlyProp(_props, "rows");
27
+ const columns = readonlyProp(_props, "columns");
28
+ const value = readonlyProp(_props, "value");
29
+ const aggregate = readonlyProp(_props, "aggregate", "sum");
30
+ const totals = readonlyProp(_props, "totals", true);
31
+ const heatmap = readonlyProp(_props, "heatmap", false);
32
+ const empty = readonlyProp(_props, "empty");
33
+ const propsCell = readonlyProp(_props, "propsCell");
34
+ const rest = restProps(_props, _ctx, true);
35
+ const lang = useLang();
36
+ const format = useFormat();
37
+ const result = computed(() => pivot(data.value, {
38
+ rows: rows.value.map(fieldOf),
39
+ columns: columns.value && fieldOf(columns.value),
40
+ value: value.value && fieldOf(value.value),
41
+ aggregate: aggregate.value,
42
+ rowOrder: rows.value.map((dimension) => dimension.order),
43
+ columnOrder: columns.value?.order,
44
+ compare: (a, b) => a.localeCompare(b, lang.code, { numeric: true })
45
+ }));
46
+ const type = () => aggregate.value === "count" ? "number" : value.value?.type ?? "number";
47
+ const show = (number) => number == null ? empty.value ?? lang.emptyValue : formatCell(number, type(), format, aggregate.value === "count" ? void 0 : value.value?.format);
48
+ return () => {
49
+ const { rowKeys, columnKeys, cell, rowTotal, columnTotal, grandTotal, extent } = result.value;
50
+ const tableRows = rowKeys.map((dimensions) => ({
51
+ key: dimensions.join("\0"),
52
+ dimensions
53
+ }));
54
+ const heat = (number) => {
55
+ if (!heatmap.value || number == null || !extent) return void 0;
56
+ const [low, high] = extent;
57
+ const ratio = high === low ? 1 : (toNumber(number) - low) / (high - low);
58
+ return pivotTableStyles.heat(Math.round(6 + ratio * 39));
59
+ };
60
+ const tableColumns = [
61
+ ...rows.value.map((dimension, level) => ({
62
+ key: `row:${level}`,
63
+ header: dimension.header,
64
+ value: (row) => row.dimensions[level] ?? "",
65
+ cell: (row) => {
66
+ const raw = row.dimensions[level] ?? "";
67
+ return dimension.format ? dimension.format(raw) : raw || lang.emptyValue;
68
+ }
69
+ })),
70
+ ...columnKeys.map((column) => ({
71
+ key: `column:${column}`,
72
+ header: columns.value ? columns.value.format ? columns.value.format(column) : column || lang.emptyValue : value.value?.header ?? lang.tableSummary,
73
+ align: "end",
74
+ value: (row) => {
75
+ const number = cell(row.dimensions, column);
76
+ return number == null ? null : toNumber(number);
77
+ },
78
+ cell: (row) => show(cell(row.dimensions, column)),
79
+ summary: totals.value ? () => show(columnTotal(column)) : void 0
80
+ })),
81
+ ...totals.value && columns.value ? [{
82
+ key: "total",
83
+ header: lang.tableSummary,
84
+ align: "end",
85
+ cell: (row) => show(rowTotal(row.dimensions)),
86
+ summary: () => show(grandTotal)
87
+ }] : []
88
+ ];
89
+ return createVNode(ColumnTable, mergeProps(rest, {
90
+ "rows": tableRows,
91
+ "columns": tableColumns,
92
+ "getKey": _cache[0] || (_cache[0] = (row) => row.key),
93
+ "mergeRepeated": rows.value.slice(0, -1).map((_dimension, level) => `row:${level}`),
94
+ "propsCell": (row, column) => {
95
+ const own = typeof propsCell.value === "function" ? propsCell.value(row, column) : propsCell.value;
96
+ const columnKey = column.key.startsWith("column:") ? column.key.slice(7) : void 0;
97
+ const sx = columnKey !== void 0 ? heat(cell(row.dimensions, columnKey)) : column.key === "total" ? pivotTableStyles.total : void 0;
98
+ return {
99
+ ...own,
100
+ sx: [sx, own?.sx]
101
+ };
102
+ }
103
+ }), null);
104
+ };
105
+ }, {
106
+ name: "PivotTable",
107
+ props: [
108
+ "data",
109
+ "rows",
110
+ "columns",
111
+ "value",
112
+ "aggregate",
113
+ "totals",
114
+ "heatmap",
115
+ "empty",
116
+ "propsCell"
117
+ ]
118
+ });
119
+ //#endregion
120
+ export { PivotTable, pivotTableStyles };
121
+
122
+ //# sourceMappingURL=PivotTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PivotTable.js","names":["_vtp_readonlyProp","_vtp_restProps","_vue_computed","_createVNode","_mergeProps"],"sources":["../../src/table/PivotTable.tsx"],"sourcesContent":["/**\n * 透视表:明细按行维度(可以多级,相同的格合并)与列维度交叉汇总,每格是一个聚合值,带合计行与合计列;\n * heatmap 时按数值给格子着色(热力图:一眼看出哪里多、哪里少)。建在 pivot 与 ColumnTable 上。\n *\n * <PivotTable\n * data={records}\n * rows={[{ key: 'region', header: '区域' }, { key: 'supplier', header: '供应商' }]}\n * columns={{ key: 'quarter', header: '季度', order: ['Q1', 'Q2', 'Q3', 'Q4'] }}\n * value={{ key: 'amount', header: '销售额', type: 'currency' }}\n * heatmap\n * aria-label=\"各区域、门店的季度销售额\"\n * />\n *\n * 数值的格式同表格的列(type、format);aggregate 是 sum(默认)、count、avg、min、max。\n * 热力图的颜色是强调色按比例混进底色(最深不超过 45%,文字照常够对比),读屏照常读数字。\n */\nimport { _component } from '@zerodep-dev/vue-tsx-pro-tsx';\nimport * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';\nimport type { VNodeChild } from 'vue';\nimport { useLang } from '../config/context';\nimport { useFormat, type NumericFormat } from '../config/lang/format';\nimport { t } from '../config/theme/tokens';\nimport type { SortValue } from '../utils/data/collation';\nimport { toNumber, type NumericValue } from '../utils/data/numeric';\nimport type { PartProps } from '../utils/props';\nimport { ColumnTable, type ColumnTableProps } from './ColumnTable';\nimport { formatCell, type ColumnTypes, type DataTableColumn } from './columns';\nimport { pivot, type PivotAggregates } from './pivot';\n\n/** 一个维度(行或列):取哪个字段、表头、显示与顺序 */\nexport interface PivotDimension<T> {\n /** 字段名;写了 value 时只作标识 */\n key: string;\n /** 表头(行维度是这一列的表头;列维度显示在左上角的说明里) */\n header: VNodeChild;\n /** 取值;不写时取 row[key] */\n value?: (row: T) => SortValue;\n /** 显示的文字;不写时是值本身 */\n format?: (value: string) => string;\n /** 顺序:按这个排,没列出的排在后面;不写时按值排序 */\n order?: readonly string[];\n}\n\n/** 聚合的数值 */\nexport interface PivotValue<T> {\n /** 字段名;写了 value 时只作标识 */\n key: string;\n /** 名称:读屏的说明、合计的含义 */\n header: VNodeChild;\n /** 取值;不写时取 row[key] */\n value?: (row: T) => SortValue;\n /** 值的类型(同表格的列),默认 number */\n type?: keyof ColumnTypes;\n /** 数字的格式(同表格的列) */\n format?: NumericFormat;\n}\n\n/** 透视表的一行(交给 ColumnTable 的部件属性):行维度的值 */\nexport interface PivotRow {\n /** 各级维度值连起来的标识 */\n key: string;\n /** 各级行维度的值 */\n dimensions: string[];\n}\n\n/** 未声明的属性落到 table 上;外观(density、variant、striped)同 Table */\nexport interface PivotTableProps<T> extends Omit<\n ColumnTableProps<PivotRow>,\n 'rows' | 'columns' | 'getKey' | 'mergeRepeated'\n> {\n /** 明细 */\n data: readonly T[];\n /** 行维度,可以多级(相同的上级合并成一格) */\n rows: readonly PivotDimension<T>[];\n /** 列维度;不写时只有一列(按行汇总) */\n columns?: PivotDimension<T>;\n /** 聚合的数值;count 时可以不写 */\n value?: PivotValue<T>;\n /** 聚合方式,默认 sum */\n aggregate?: keyof PivotAggregates;\n /** 合计行与合计列,默认 true */\n totals?: boolean;\n /** 按数值给格子着色(热力图);合计不着色 */\n heatmap?: boolean;\n /** 没有明细的格子显示的内容,默认 — */\n empty?: VNodeChild;\n}\n\n/** PivotTable 的样式:heat(按比例的底色) */\nexport const pivotTableStyles = css.create({\n heat: (percent: number) => ({\n backgroundColor: `color-mix(in srgb, ${t.colors.accent} ${percent}%, transparent)`,\n }),\n total: { fontWeight: '_semibold' },\n});\n\nconst fieldOf =\n <T,>(dimension: { key: string; value?: (row: T) => SortValue }) =>\n (row: T) =>\n dimension.value\n ? dimension.value(row)\n : ((row as Record<string, SortValue>)[dimension.key] ?? null);\n\n/** 热力图最深的混色比例:再深时文字的对比度不够 */\nconst MAX_HEAT = 45;\n\n/** 透视表:行维度 × 列维度的聚合,可以着色成热力图 */\nexport const PivotTable = _component(\n <T,>({\n data,\n rows,\n columns,\n value,\n aggregate = 'sum',\n totals = true,\n heatmap = false,\n empty,\n propsCell,\n ...rest\n }: PivotTableProps<T>) => {\n const lang = useLang();\n const format = useFormat();\n const result = _derived(\n pivot(data, {\n rows: rows.map(fieldOf),\n columns: columns && fieldOf(columns),\n value: value && fieldOf(value),\n aggregate,\n rowOrder: rows.map((dimension) => dimension.order),\n columnOrder: columns?.order,\n // 维度值按当前语言排序(中文按拼音),数字按大小\n compare: (a, b) => a.localeCompare(b, lang.code, { numeric: true }),\n }),\n );\n const type = (): keyof ColumnTypes =>\n aggregate === 'count' ? 'number' : (value?.type ?? 'number');\n const show = (number: NumericValue | null): VNodeChild =>\n number == null\n ? (empty ?? lang.emptyValue)\n : formatCell(number, type(), format, aggregate === 'count' ? undefined : value?.format);\n\n return () => {\n const { rowKeys, columnKeys, cell, rowTotal, columnTotal, grandTotal, extent } = result;\n const tableRows: PivotRow[] = rowKeys.map((dimensions) => ({\n key: dimensions.join('\\u0000'),\n dimensions,\n }));\n const heat = (number: NumericValue | null) => {\n if (!heatmap || number == null || !extent) return undefined;\n const [low, high] = extent;\n const ratio = high === low ? 1 : (toNumber(number) - low) / (high - low);\n return pivotTableStyles.heat(Math.round(6 + ratio * (MAX_HEAT - 6)));\n };\n const tableColumns: DataTableColumn<PivotRow>[] = [\n ...rows.map((dimension, level): DataTableColumn<PivotRow> => ({\n key: `row:${level}`,\n header: dimension.header,\n value: (row) => row.dimensions[level] ?? '',\n cell: (row) => {\n const raw = row.dimensions[level] ?? '';\n return dimension.format ? dimension.format(raw) : raw || lang.emptyValue;\n },\n })),\n ...columnKeys.map((column): DataTableColumn<PivotRow> => ({\n key: `column:${column}`,\n header: columns\n ? columns.format\n ? columns.format(column)\n : column || lang.emptyValue\n : (value?.header ?? lang.tableSummary),\n align: 'end',\n value: (row) => {\n const number = cell(row.dimensions, column);\n return number == null ? null : toNumber(number);\n },\n cell: (row) => show(cell(row.dimensions, column)),\n summary: totals ? () => show(columnTotal(column)) : undefined,\n })),\n ...(totals && columns\n ? [\n {\n key: 'total',\n header: lang.tableSummary,\n align: 'end' as const,\n cell: (row: PivotRow) => show(rowTotal(row.dimensions)),\n summary: () => show(grandTotal),\n },\n ]\n : []),\n ];\n return (\n <ColumnTable\n {...rest}\n rows={tableRows}\n columns={tableColumns}\n getKey={(row) => row.key}\n mergeRepeated={rows.slice(0, -1).map((_dimension, level) => `row:${level}`)}\n propsCell={(row, column) => {\n const own = typeof propsCell === 'function' ? propsCell(row, column) : propsCell;\n const columnKey = column.key.startsWith('column:') ? column.key.slice(7) : undefined;\n const sx =\n columnKey !== undefined\n ? heat(cell(row.dimensions, columnKey))\n : column.key === 'total'\n ? pivotTableStyles.total\n : undefined;\n return { ...own, sx: [sx, own?.sx] } as PartProps<\n 'td',\n 'align' | 'rowspan' | 'colspan'\n >;\n }}\n />\n );\n };\n },\n);\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';
2
+ import { type VNodeChild } from 'vue';
3
+ import { type ButtonProps } from '../base/Button';
4
+ import { type PartProps } from '../utils/props';
5
+ /** 未声明的属性落到外层 div 上 */
6
+ export interface SelectionBarProps extends PartProps<'div'> {
7
+ /** 已选几项;0 时不显示 */
8
+ count: number;
9
+ /** 点“取消选择”:清空选择由使用方做 */
10
+ onClear?: () => void;
11
+ /** 已选数目的文字,默认取语言包(已选 N 项):跨页全选时写“已选全部 1,286 项” */
12
+ label?: VNodeChild;
13
+ /** 已选数目的部件属性 */
14
+ propsCount?: PartProps<'span'>;
15
+ /** 取消选择按钮的部件属性 */
16
+ propsClear?: Partial<ButtonProps>;
17
+ /** 批量操作区的部件属性 */
18
+ propsActions?: PartProps<'div'>;
19
+ /** 批量操作的按钮 */
20
+ children?: VNodeChild;
21
+ }
22
+ /** SelectionBar 的样式:root、count、actions */
23
+ export declare const selectionBarStyles: Readonly<{
24
+ actions: css.CompiledStyles;
25
+ count: css.CompiledStyles;
26
+ root: css.CompiledStyles;
27
+ }>;
28
+ /** 批量操作栏:已选几项、取消选择、批量操作;没有选择时淡出 */
29
+ export declare const SelectionBar: import("@zerodep-dev/vue-tsx-pro-tsx").TsxComponent<SelectionBarProps>;
@@ -0,0 +1,86 @@
1
+ import { useLang } from "../config/context.js";
2
+ import { mergeAttrs, mergePartProps } from "../utils/props.js";
3
+ import { presenceStyles } from "../utils/style/transitions.js";
4
+ import { Button } from "../base/Button.js";
5
+ import { announce } from "../utils/dom/announcer.js";
6
+ import { usePresence } from "../utils/motion/presence.js";
7
+ import { createVNode, mergeProps, watch } from "vue";
8
+ import { _component, childrenProp, readonlyProp, restProps, untrack } from "@zerodep-dev/vue-tsx-pro-tsx";
9
+ import * as css from "@zerodep-dev/vue-tsx-pro-tsx/styles";
10
+ //#region src/table/SelectionBar.tsx
11
+ /** 未声明的属性落到外层 div 上 */
12
+ /** SelectionBar 的样式:root、count、actions */
13
+ var selectionBarStyles = css.create({
14
+ root: {
15
+ display: "flex",
16
+ alignItems: "center",
17
+ flexWrap: "wrap",
18
+ gap: "_md",
19
+ minHeight: "_control",
20
+ paddingBlock: "_xs",
21
+ paddingInline: "_md",
22
+ borderRadius: "_md",
23
+ backgroundColor: "_accentSoft",
24
+ color: "_text",
25
+ fontSize: "_sm"
26
+ },
27
+ count: {
28
+ fontWeight: "_semibold",
29
+ color: "_accentText",
30
+ fontVariantNumeric: "tabular-nums"
31
+ },
32
+ actions: {
33
+ display: "flex",
34
+ alignItems: "center",
35
+ flexWrap: "wrap",
36
+ gap: "_sm",
37
+ marginInlineStart: "auto"
38
+ }
39
+ });
40
+ /** 批量操作栏:已选几项、取消选择、批量操作;没有选择时淡出 */
41
+ var SelectionBar = /*#__PURE__*/ _component((_props, _ctx) => {
42
+ const count = readonlyProp(_props, "count");
43
+ const onClear = readonlyProp(_props, "onClear");
44
+ const label = readonlyProp(_props, "label");
45
+ const propsCount = readonlyProp(_props, "propsCount");
46
+ const propsClear = readonlyProp(_props, "propsClear");
47
+ const propsActions = readonlyProp(_props, "propsActions");
48
+ const children = childrenProp(_props);
49
+ const rest = restProps(_props, _ctx, false);
50
+ const lang = useLang();
51
+ watch(() => [count.value, label.value], ([next, text]) => announce(typeof text === "string" ? text : lang.tableSelectedCount(next)));
52
+ const presence = usePresence(() => count.value > 0);
53
+ let shownCount = untrack(() => count.value);
54
+ return () => {
55
+ if (count.value > 0) shownCount = count.value;
56
+ return presence.mounted && createVNode("div", mergeProps(mergeAttrs({ sx: [
57
+ selectionBarStyles.root,
58
+ presenceStyles.fade,
59
+ presence.state === "closed" && presenceStyles.leaving
60
+ ] }, rest, { ref: presence.ref }), { "data-state": presence.state }), [
61
+ createVNode("span", mergeAttrs({ sx: selectionBarStyles.count }, propsCount.value), [label.value ?? lang.tableSelectedCount(shownCount)]),
62
+ createVNode(Button, mergeProps(mergePartProps({
63
+ variant: "link",
64
+ size: "sm"
65
+ }, propsClear.value, { onClick: () => onClear.value?.() }), { "key": "__site0" }), {
66
+ default: () => [lang.tableClearSelection],
67
+ $stable: true
68
+ }),
69
+ createVNode("div", mergeAttrs({ sx: selectionBarStyles.actions }, propsActions.value), [children.value])
70
+ ]);
71
+ };
72
+ }, {
73
+ name: "SelectionBar",
74
+ props: [
75
+ "count",
76
+ "onClear",
77
+ "label",
78
+ "propsCount",
79
+ "propsClear",
80
+ "propsActions"
81
+ ]
82
+ });
83
+ //#endregion
84
+ export { SelectionBar, selectionBarStyles };
85
+
86
+ //# sourceMappingURL=SelectionBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionBar.js","names":["_vtp_readonlyProp","_vtp_childrenProp","_vtp_restProps","_vtp_untrack","_createVNode","_mergeProps"],"sources":["../../src/table/SelectionBar.tsx"],"sourcesContent":["/**\n * 批量操作栏(div):表格勾选了行之后出现在表格上方,“已选 N 项 · 取消选择”,结束边是批量操作。\n *\n * <SelectionBar count={selected.length} onClear={() => (selected = [])}>\n * <Button size=\"sm\" variant=\"outline\" tone=\"neutral\">批量导出</Button>\n * <Button size=\"sm\" tone=\"danger\" variant=\"soft\">批量删除</Button>\n * </SelectionBar>\n *\n * count 为 0 时不显示(淡出);已选的数目在读屏的播报区里,勾选变化时念出来。\n * 部件:Root(div)、Count(span)、Clear(Button)、Actions(div)。数目变化经共用的播报区(announce)念出。\n */\nimport { _component } from '@zerodep-dev/vue-tsx-pro-tsx';\nimport * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';\nimport { watch, type VNodeChild } from 'vue';\nimport { Button, type ButtonProps } from '../base/Button';\nimport { useLang } from '../config/context';\nimport { announce } from '../utils/dom/announcer';\nimport { usePresence } from '../utils/motion/presence';\nimport { mergeAttrs, mergePartProps, type PartProps } from '../utils/props';\nimport { presenceStyles } from '../utils/style/transitions';\n\n/** 未声明的属性落到外层 div 上 */\nexport interface SelectionBarProps extends PartProps<'div'> {\n /** 已选几项;0 时不显示 */\n count: number;\n /** 点“取消选择”:清空选择由使用方做 */\n onClear?: () => void;\n /** 已选数目的文字,默认取语言包(已选 N 项):跨页全选时写“已选全部 1,286 项” */\n label?: VNodeChild;\n /** 已选数目的部件属性 */\n propsCount?: PartProps<'span'>;\n /** 取消选择按钮的部件属性 */\n propsClear?: Partial<ButtonProps>;\n /** 批量操作区的部件属性 */\n propsActions?: PartProps<'div'>;\n /** 批量操作的按钮 */\n children?: VNodeChild;\n}\n\n/** SelectionBar 的样式:root、count、actions */\nexport const selectionBarStyles = css.create({\n root: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '_md',\n minHeight: '_control',\n paddingBlock: '_xs',\n paddingInline: '_md',\n borderRadius: '_md',\n backgroundColor: '_accentSoft',\n color: '_text',\n fontSize: '_sm',\n },\n count: { fontWeight: '_semibold', color: '_accentText', fontVariantNumeric: 'tabular-nums' },\n actions: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '_sm',\n marginInlineStart: 'auto',\n },\n});\n\n/** 批量操作栏:已选几项、取消选择、批量操作;没有选择时淡出 */\nexport const SelectionBar = _component(\n ({\n count,\n onClear,\n label,\n propsCount,\n propsClear,\n propsActions,\n children,\n ...rest\n }: SelectionBarProps) => {\n const lang = useLang();\n // 数目变了给读屏播报:栏是随第一次选择一起出现的,挂在它里面的 aria-live 区域第一句念不出来\n // 给了文字的 label(“已选全部 1,286 项”)就念它\n watch(\n () => [count, label] as const,\n ([next, text]) => announce(typeof text === 'string' ? text : lang.tableSelectedCount(next)),\n );\n // 数目变成 0 后等淡出结束再卸载;淡出时仍显示最后的数目,不闪成“已选 0 项”\n const presence = usePresence(() => count > 0);\n let shownCount = _untrack(count);\n return () => {\n if (count > 0) shownCount = count;\n return (\n presence.mounted && (\n <div\n {...mergeAttrs<'div'>(\n {\n sx: [\n selectionBarStyles.root,\n presenceStyles.fade,\n presence.state === 'closed' && presenceStyles.leaving,\n ],\n },\n rest,\n { ref: presence.ref },\n )}\n data-state={presence.state}\n >\n <span {...mergeAttrs<'span'>({ sx: selectionBarStyles.count }, propsCount)}>\n {label ?? lang.tableSelectedCount(shownCount)}\n </span>\n <Button\n {...mergePartProps<ButtonProps>({ variant: 'link', size: 'sm' }, propsClear, {\n onClick: () => onClear?.(),\n })}\n >\n {lang.tableClearSelection}\n </Button>\n <div {...mergeAttrs<'div'>({ sx: selectionBarStyles.actions }, propsActions)}>\n {children}\n </div>\n </div>\n )\n );\n };\n },\n);\n"],"mappings":";;;;;;;;;;;;AAwCA,IAAa,qBAAqB,IAAI,OAAO;CAC3C,MAAM;EACJ,SAAS;EACT,YAAY;EACZ,UAAU;EACV,KAAK;EACL,WAAW;EACX,cAAc;EACd,eAAe;EACf,cAAc;EACd,iBAAiB;EACjB,OAAO;EACP,UAAU;CACZ;CACA,OAAO;EAAE,YAAY;EAAa,OAAO;EAAe,oBAAoB;CAAe;CAC3F,SAAS;EACP,SAAS;EACT,YAAY;EACZ,UAAU;EACV,KAAK;EACL,mBAAmB;CACrB;AACF,CAAC;;AAGD,IAAa,eAAe,0BAC1B,QAAA,SASyB;CAAA,MAAA,QAAAA,aAAA,QAAA,OAAA;CAAA,MAAA,UAAAA,aAAA,QAAA,SAAA;CAAA,MAAA,QAAAA,aAAA,QAAA,OAAA;CAAA,MAAA,aAAAA,aAAA,QAAA,YAAA;CAAA,MAAA,aAAAA,aAAA,QAAA,YAAA;CAAA,MAAA,eAAAA,aAAA,QAAA,cAAA;CAAA,MAAA,WAAAC,aAAA,MAAA;CAAA,MADpB,OAAIC,UAAA,QAAA,MAAA,KAAA;CAEP,MAAM,OAAO,QAAQ;CAGrB,YACQ,CAAA,MAAA,OAAA,MAAA,KAAA,IACL,CAAC,MAAM,UAAU,SAAS,OAAO,SAAS,WAAW,OAAO,KAAK,mBAAmB,IAAI,CAAC,CAC5F;CAEA,MAAM,WAAW,kBAAkB,MAAA,QAAQ,CAAC;CAC5C,IAAI,aAAUC,cAAA,MAAA,KAAA;CACd,aAAa;EACX,IAAI,MAAA,QAAQ,GAAG,aAAU,MAAA;EACzB,OACE,SAAS,WAAOC,YAAA,OAAAC,WAER,WACF,EACE,IAAI;GACF,mBAAmB;GACnB,eAAe;GACf,SAAS,UAAU,YAAY,eAAe;EAAO,EAEzD,GACA,MACA,EAAE,KAAK,SAAS,IAAI,CACtB,GAAC,EAAA,cACW,SAAS,MAAK,CAAA,GAAA;GAAAD,YAAA,QAEhB,WAAmB,EAAE,IAAI,mBAAmB,MAAM,GAAC,WAAA,KAAY,GAAC,CACvE,MAAA,SAAS,KAAK,mBAAmB,UAAU,CAAC,CAAA;GAAAA,YAAA,QAAAC,WAGzC,eAA4B;IAAE,SAAS;IAAQ,MAAM;GAAK,GAAC,WAAA,OAAc,EAC3E,eAAe,QAAA,QAAU,EAC3B,CAAC,GAAC,EAAA,OAAA,UAAA,CAAA,GAAA;IAAA,eAAA,CAED,KAAK,mBAAmB;IAAA,SAAA;GAAA,CAAA;GAAAD,YAAA,OAElB,WAAkB,EAAE,IAAI,mBAAmB,QAAQ,GAAC,aAAA,KAAc,GAAC,CAAA,SAAA,KAAA,CAAA;EAAA,CAAA;CAMpF;AACF,GAAC;CAAA,MAAA;CAAA,OAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;CAAA;AAAA,CACH"}