dsh-plugin-core 0.32.0 → 0.33.1

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 (634) hide show
  1. package/README.md +197 -64
  2. package/README.zh-CN.md +242 -0
  3. package/dist/adv/explorer/FileBrowser.d.ts +58 -0
  4. package/dist/adv/explorer/FileBrowser.d.ts.map +1 -0
  5. package/dist/adv/explorer/FileBrowser.js +632 -0
  6. package/dist/adv/explorer/FileBrowser.js.map +1 -0
  7. package/dist/adv/explorer/crumb-nav.d.ts +45 -0
  8. package/dist/adv/explorer/crumb-nav.d.ts.map +1 -0
  9. package/dist/adv/explorer/crumb-nav.js +78 -0
  10. package/dist/adv/explorer/crumb-nav.js.map +1 -0
  11. package/dist/adv/explorer/crumbs-menu.d.ts +37 -0
  12. package/dist/adv/explorer/crumbs-menu.d.ts.map +1 -0
  13. package/dist/adv/explorer/crumbs-menu.js +102 -0
  14. package/dist/adv/explorer/crumbs-menu.js.map +1 -0
  15. package/dist/adv/explorer/explorer-css.d.ts +2 -0
  16. package/dist/adv/explorer/explorer-css.d.ts.map +1 -0
  17. package/dist/adv/explorer/explorer-css.generated.d.ts +2 -0
  18. package/dist/adv/explorer/explorer-css.generated.d.ts.map +1 -0
  19. package/dist/adv/explorer/explorer-css.generated.js +4 -0
  20. package/dist/adv/explorer/explorer-css.generated.js.map +1 -0
  21. package/dist/adv/explorer/explorer-css.js +3 -0
  22. package/dist/adv/explorer/explorer-css.js.map +1 -0
  23. package/dist/adv/explorer/fs-face.d.ts +36 -0
  24. package/dist/adv/explorer/fs-face.d.ts.map +1 -0
  25. package/dist/adv/explorer/fs-face.js +74 -0
  26. package/dist/adv/explorer/fs-face.js.map +1 -0
  27. package/dist/adv/explorer/index.d.ts +6 -0
  28. package/dist/adv/explorer/index.d.ts.map +1 -0
  29. package/dist/adv/explorer/index.js +6 -0
  30. package/dist/adv/explorer/index.js.map +1 -0
  31. package/dist/adv/explorer/landing.d.ts +26 -0
  32. package/dist/adv/explorer/landing.d.ts.map +1 -0
  33. package/dist/adv/explorer/landing.js +43 -0
  34. package/dist/adv/explorer/landing.js.map +1 -0
  35. package/dist/adv/explorer/open.d.ts +137 -0
  36. package/dist/adv/explorer/open.d.ts.map +1 -0
  37. package/dist/adv/explorer/open.js +350 -0
  38. package/dist/adv/explorer/open.js.map +1 -0
  39. package/dist/adv/explorer/picker-placement.d.ts +69 -0
  40. package/dist/adv/explorer/picker-placement.d.ts.map +1 -0
  41. package/dist/adv/explorer/picker-placement.js +122 -0
  42. package/dist/adv/explorer/picker-placement.js.map +1 -0
  43. package/dist/adv/explorer/preview/BytesPreview.d.ts +12 -0
  44. package/dist/adv/explorer/preview/BytesPreview.d.ts.map +1 -0
  45. package/dist/adv/explorer/preview/BytesPreview.js +60 -0
  46. package/dist/adv/explorer/preview/BytesPreview.js.map +1 -0
  47. package/dist/adv/explorer/preview/HtmlPreview.d.ts +17 -0
  48. package/dist/adv/explorer/preview/HtmlPreview.d.ts.map +1 -0
  49. package/dist/adv/explorer/preview/HtmlPreview.js +113 -0
  50. package/dist/adv/explorer/preview/HtmlPreview.js.map +1 -0
  51. package/dist/adv/explorer/preview/OfficePreview.d.ts +12 -0
  52. package/dist/adv/explorer/preview/OfficePreview.d.ts.map +1 -0
  53. package/dist/adv/explorer/preview/OfficePreview.js +63 -0
  54. package/dist/adv/explorer/preview/OfficePreview.js.map +1 -0
  55. package/dist/adv/explorer/preview/TextPreview.d.ts +18 -0
  56. package/dist/adv/explorer/preview/TextPreview.d.ts.map +1 -0
  57. package/dist/adv/explorer/preview/TextPreview.js +122 -0
  58. package/dist/adv/explorer/preview/TextPreview.js.map +1 -0
  59. package/dist/adv/explorer/preview/index.d.ts +24 -0
  60. package/dist/adv/explorer/preview/index.d.ts.map +1 -0
  61. package/dist/adv/explorer/preview/index.js +58 -0
  62. package/dist/adv/explorer/preview/index.js.map +1 -0
  63. package/dist/adv/explorer/preview/md-labels.d.ts +3 -0
  64. package/dist/adv/explorer/preview/md-labels.d.ts.map +1 -0
  65. package/dist/adv/explorer/preview/md-labels.js +12 -0
  66. package/dist/adv/explorer/preview/md-labels.js.map +1 -0
  67. package/dist/adv/explorer/preview-title-bar.d.ts +26 -0
  68. package/dist/adv/explorer/preview-title-bar.d.ts.map +1 -0
  69. package/dist/adv/explorer/preview-title-bar.js +48 -0
  70. package/dist/adv/explorer/preview-title-bar.js.map +1 -0
  71. package/dist/adv/explorer/types.d.ts +259 -0
  72. package/dist/adv/explorer/types.d.ts.map +1 -0
  73. package/dist/adv/explorer/types.js +379 -0
  74. package/dist/adv/explorer/types.js.map +1 -0
  75. package/dist/adv/session/SessionViewModal.d.ts +37 -0
  76. package/dist/adv/session/SessionViewModal.d.ts.map +1 -0
  77. package/dist/adv/session/SessionViewModal.js +1133 -0
  78. package/dist/adv/session/SessionViewModal.js.map +1 -0
  79. package/dist/adv/session/changes.d.ts +73 -0
  80. package/dist/adv/session/changes.d.ts.map +1 -0
  81. package/dist/adv/session/changes.js +134 -0
  82. package/dist/adv/session/changes.js.map +1 -0
  83. package/dist/adv/session/faces.d.ts +244 -0
  84. package/dist/adv/session/faces.d.ts.map +1 -0
  85. package/dist/adv/session/faces.js +17 -0
  86. package/dist/adv/session/faces.js.map +1 -0
  87. package/dist/adv/session/index.d.ts +7 -0
  88. package/dist/adv/session/index.d.ts.map +1 -0
  89. package/dist/adv/session/index.js +27 -0
  90. package/dist/adv/session/index.js.map +1 -0
  91. package/dist/adv/session/mirror/AskCard.d.ts +35 -0
  92. package/dist/adv/session/mirror/AskCard.d.ts.map +1 -0
  93. package/dist/adv/session/mirror/AskCard.js +131 -0
  94. package/dist/adv/session/mirror/AskCard.js.map +1 -0
  95. package/dist/adv/session/mirror/BashRow.d.ts +14 -0
  96. package/dist/adv/session/mirror/BashRow.d.ts.map +1 -0
  97. package/dist/adv/session/mirror/BashRow.js +143 -0
  98. package/dist/adv/session/mirror/BashRow.js.map +1 -0
  99. package/dist/adv/session/mirror/ChangedFileDiff.d.ts +25 -0
  100. package/dist/adv/session/mirror/ChangedFileDiff.d.ts.map +1 -0
  101. package/dist/adv/session/mirror/ChangedFileDiff.js +178 -0
  102. package/dist/adv/session/mirror/ChangedFileDiff.js.map +1 -0
  103. package/dist/adv/session/mirror/ChangedFilesCard.d.ts +18 -0
  104. package/dist/adv/session/mirror/ChangedFilesCard.d.ts.map +1 -0
  105. package/dist/adv/session/mirror/ChangedFilesCard.js +165 -0
  106. package/dist/adv/session/mirror/ChangedFilesCard.js.map +1 -0
  107. package/dist/adv/session/mirror/ChatGroupSeat.d.ts +24 -0
  108. package/dist/adv/session/mirror/ChatGroupSeat.d.ts.map +1 -0
  109. package/dist/adv/session/mirror/ChatGroupSeat.js +135 -0
  110. package/dist/adv/session/mirror/ChatGroupSeat.js.map +1 -0
  111. package/dist/adv/session/mirror/ChatNodeSeat.d.ts +43 -0
  112. package/dist/adv/session/mirror/ChatNodeSeat.d.ts.map +1 -0
  113. package/dist/adv/session/mirror/ChatNodeSeat.js +133 -0
  114. package/dist/adv/session/mirror/ChatNodeSeat.js.map +1 -0
  115. package/dist/adv/session/mirror/ChatView.d.ts +47 -0
  116. package/dist/adv/session/mirror/ChatView.d.ts.map +1 -0
  117. package/dist/adv/session/mirror/ChatView.js +138 -0
  118. package/dist/adv/session/mirror/ChatView.js.map +1 -0
  119. package/dist/adv/session/mirror/CommandCard.d.ts +20 -0
  120. package/dist/adv/session/mirror/CommandCard.d.ts.map +1 -0
  121. package/dist/adv/session/mirror/CommandCard.js +69 -0
  122. package/dist/adv/session/mirror/CommandCard.js.map +1 -0
  123. package/dist/adv/session/mirror/ContextInjectionRow.d.ts +18 -0
  124. package/dist/adv/session/mirror/ContextInjectionRow.d.ts.map +1 -0
  125. package/dist/adv/session/mirror/ContextInjectionRow.js +50 -0
  126. package/dist/adv/session/mirror/ContextInjectionRow.js.map +1 -0
  127. package/dist/adv/session/mirror/Deliverables.d.ts +24 -0
  128. package/dist/adv/session/mirror/Deliverables.d.ts.map +1 -0
  129. package/dist/adv/session/mirror/Deliverables.js +175 -0
  130. package/dist/adv/session/mirror/Deliverables.js.map +1 -0
  131. package/dist/adv/session/mirror/GenericCommandCard.d.ts +136 -0
  132. package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -0
  133. package/dist/adv/session/mirror/GenericCommandCard.js +948 -0
  134. package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -0
  135. package/dist/adv/session/mirror/MessageIconActions.d.ts +16 -0
  136. package/dist/adv/session/mirror/MessageIconActions.d.ts.map +1 -0
  137. package/dist/adv/session/mirror/MessageIconActions.js +69 -0
  138. package/dist/adv/session/mirror/MessageIconActions.js.map +1 -0
  139. package/dist/adv/session/mirror/MessageItem.d.ts +93 -0
  140. package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -0
  141. package/dist/adv/session/mirror/MessageItem.js +194 -0
  142. package/dist/adv/session/mirror/MessageItem.js.map +1 -0
  143. package/dist/adv/session/mirror/ReasoningRow.d.ts +11 -0
  144. package/dist/adv/session/mirror/ReasoningRow.d.ts.map +1 -0
  145. package/dist/adv/session/mirror/ReasoningRow.js +111 -0
  146. package/dist/adv/session/mirror/ReasoningRow.js.map +1 -0
  147. package/dist/adv/session/mirror/RunningStatus.d.ts +12 -0
  148. package/dist/adv/session/mirror/RunningStatus.d.ts.map +1 -0
  149. package/dist/adv/session/mirror/RunningStatus.js +57 -0
  150. package/dist/adv/session/mirror/RunningStatus.js.map +1 -0
  151. package/dist/adv/session/mirror/StatDialog.d.ts +20 -0
  152. package/dist/adv/session/mirror/StatDialog.d.ts.map +1 -0
  153. package/dist/adv/session/mirror/StatDialog.js +49 -0
  154. package/dist/adv/session/mirror/StatDialog.js.map +1 -0
  155. package/dist/adv/session/mirror/ToolDetails.d.ts +65 -0
  156. package/dist/adv/session/mirror/ToolDetails.d.ts.map +1 -0
  157. package/dist/adv/session/mirror/ToolDetails.js +268 -0
  158. package/dist/adv/session/mirror/ToolDetails.js.map +1 -0
  159. package/dist/adv/session/mirror/TurnProcessNodeView.d.ts +10 -0
  160. package/dist/adv/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
  161. package/dist/adv/session/mirror/TurnProcessNodeView.js +57 -0
  162. package/dist/adv/session/mirror/TurnProcessNodeView.js.map +1 -0
  163. package/dist/adv/session/mirror/TurnTailNodeView.d.ts +57 -0
  164. package/dist/adv/session/mirror/TurnTailNodeView.d.ts.map +1 -0
  165. package/dist/adv/session/mirror/TurnTailNodeView.js +106 -0
  166. package/dist/adv/session/mirror/TurnTailNodeView.js.map +1 -0
  167. package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts +16 -0
  168. package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
  169. package/dist/adv/session/mirror/TurnTriggerNodeView.js +103 -0
  170. package/dist/adv/session/mirror/TurnTriggerNodeView.js.map +1 -0
  171. package/dist/adv/session/mirror/TurnUsagePanel.d.ts +21 -0
  172. package/dist/adv/session/mirror/TurnUsagePanel.d.ts.map +1 -0
  173. package/dist/adv/session/mirror/TurnUsagePanel.js +41 -0
  174. package/dist/adv/session/mirror/TurnUsagePanel.js.map +1 -0
  175. package/dist/adv/session/mirror/control-details.d.ts +9 -0
  176. package/dist/adv/session/mirror/control-details.d.ts.map +1 -0
  177. package/dist/adv/session/mirror/control-details.js +549 -0
  178. package/dist/adv/session/mirror/control-details.js.map +1 -0
  179. package/dist/adv/session/mirror/detail-i18n.d.ts +4 -0
  180. package/dist/adv/session/mirror/detail-i18n.d.ts.map +1 -0
  181. package/dist/adv/session/mirror/detail-i18n.js +153 -0
  182. package/dist/adv/session/mirror/detail-i18n.js.map +1 -0
  183. package/dist/adv/session/mirror/message-chrome.d.ts +39 -0
  184. package/dist/adv/session/mirror/message-chrome.d.ts.map +1 -0
  185. package/dist/adv/session/mirror/message-chrome.js +153 -0
  186. package/dist/adv/session/mirror/message-chrome.js.map +1 -0
  187. package/dist/adv/session/mirror/process-groups.d.ts +56 -0
  188. package/dist/adv/session/mirror/process-groups.d.ts.map +1 -0
  189. package/dist/adv/session/mirror/process-groups.js +204 -0
  190. package/dist/adv/session/mirror/process-groups.js.map +1 -0
  191. package/dist/adv/session/official-classes.d.ts +28 -0
  192. package/dist/adv/session/official-classes.d.ts.map +1 -0
  193. package/dist/adv/session/official-classes.js +152 -0
  194. package/dist/adv/session/official-classes.js.map +1 -0
  195. package/dist/adv/session/open-review.d.ts +13 -0
  196. package/dist/adv/session/open-review.d.ts.map +1 -0
  197. package/dist/adv/session/open-review.js +32 -0
  198. package/dist/adv/session/open-review.js.map +1 -0
  199. package/dist/adv/session/open-session-view.d.ts +19 -0
  200. package/dist/adv/session/open-session-view.d.ts.map +1 -0
  201. package/dist/adv/session/open-session-view.js +147 -0
  202. package/dist/adv/session/open-session-view.js.map +1 -0
  203. package/dist/adv/session/pending-inputs.d.ts +33 -0
  204. package/dist/adv/session/pending-inputs.d.ts.map +1 -0
  205. package/dist/adv/session/pending-inputs.js +130 -0
  206. package/dist/adv/session/pending-inputs.js.map +1 -0
  207. package/dist/adv/session/session-css.d.ts +2 -0
  208. package/dist/adv/session/session-css.d.ts.map +1 -0
  209. package/dist/adv/session/session-css.generated.d.ts +2 -0
  210. package/dist/adv/session/session-css.generated.d.ts.map +1 -0
  211. package/dist/adv/session/session-css.generated.js +4 -0
  212. package/dist/adv/session/session-css.generated.js.map +1 -0
  213. package/dist/adv/session/session-css.js +3 -0
  214. package/dist/adv/session/session-css.js.map +1 -0
  215. package/dist/adv/session/tail-follow.d.ts +29 -0
  216. package/dist/adv/session/tail-follow.d.ts.map +1 -0
  217. package/dist/adv/session/tail-follow.js +106 -0
  218. package/dist/adv/session/tail-follow.js.map +1 -0
  219. package/dist/ui/actions/Button.d.ts +102 -0
  220. package/dist/ui/actions/Button.d.ts.map +1 -0
  221. package/dist/ui/actions/Button.js +233 -0
  222. package/dist/ui/actions/Button.js.map +1 -0
  223. package/dist/ui/actions/button-css.generated.d.ts +2 -0
  224. package/dist/ui/actions/button-css.generated.d.ts.map +1 -0
  225. package/dist/ui/actions/button-css.generated.js +4 -0
  226. package/dist/ui/actions/button-css.generated.js.map +1 -0
  227. package/dist/ui/display/Card.d.ts +65 -0
  228. package/dist/ui/display/Card.d.ts.map +1 -0
  229. package/dist/ui/display/Card.js +109 -0
  230. package/dist/ui/display/Card.js.map +1 -0
  231. package/dist/ui/display/Chip.d.ts +28 -0
  232. package/dist/ui/display/Chip.d.ts.map +1 -0
  233. package/dist/ui/display/Chip.js +36 -0
  234. package/dist/ui/display/Chip.js.map +1 -0
  235. package/dist/ui/display/CodeViewer.d.ts +38 -0
  236. package/dist/ui/display/CodeViewer.d.ts.map +1 -0
  237. package/dist/ui/display/CodeViewer.js +107 -0
  238. package/dist/ui/display/CodeViewer.js.map +1 -0
  239. package/dist/ui/display/FieldHint.d.ts +18 -0
  240. package/dist/ui/display/FieldHint.d.ts.map +1 -0
  241. package/dist/ui/display/FieldHint.js +40 -0
  242. package/dist/ui/display/FieldHint.js.map +1 -0
  243. package/dist/ui/display/FlipText.d.ts +43 -0
  244. package/dist/ui/display/FlipText.d.ts.map +1 -0
  245. package/dist/ui/display/FlipText.js +59 -0
  246. package/dist/ui/display/FlipText.js.map +1 -0
  247. package/dist/ui/display/LiveText.d.ts +13 -0
  248. package/dist/ui/display/LiveText.d.ts.map +1 -0
  249. package/dist/ui/display/LiveText.js +19 -0
  250. package/dist/ui/display/LiveText.js.map +1 -0
  251. package/dist/ui/display/MarqueeText.d.ts +22 -0
  252. package/dist/ui/display/MarqueeText.d.ts.map +1 -0
  253. package/dist/ui/display/MarqueeText.js +52 -0
  254. package/dist/ui/display/MarqueeText.js.map +1 -0
  255. package/dist/ui/display/SectionHead.d.ts +35 -0
  256. package/dist/ui/display/SectionHead.d.ts.map +1 -0
  257. package/dist/ui/display/SectionHead.js +45 -0
  258. package/dist/ui/display/SectionHead.js.map +1 -0
  259. package/dist/ui/display/Surface.d.ts +43 -0
  260. package/dist/ui/display/Surface.d.ts.map +1 -0
  261. package/dist/ui/display/Surface.js +39 -0
  262. package/dist/ui/display/Surface.js.map +1 -0
  263. package/dist/ui/display/Table.d.ts +30 -0
  264. package/dist/ui/display/Table.d.ts.map +1 -0
  265. package/dist/ui/display/Table.js +96 -0
  266. package/dist/ui/display/Table.js.map +1 -0
  267. package/dist/ui/display/card-css.d.ts +2 -0
  268. package/dist/ui/display/card-css.d.ts.map +1 -0
  269. package/dist/ui/display/card-css.generated.d.ts +2 -0
  270. package/dist/ui/display/card-css.generated.d.ts.map +1 -0
  271. package/dist/ui/display/card-css.generated.js +4 -0
  272. package/dist/ui/display/card-css.generated.js.map +1 -0
  273. package/dist/ui/display/card-css.js +5 -0
  274. package/dist/ui/display/card-css.js.map +1 -0
  275. package/dist/ui/display/chip-css.d.ts +2 -0
  276. package/dist/ui/display/chip-css.d.ts.map +1 -0
  277. package/dist/ui/display/chip-css.generated.d.ts +2 -0
  278. package/dist/ui/display/chip-css.generated.d.ts.map +1 -0
  279. package/dist/ui/display/chip-css.generated.js +4 -0
  280. package/dist/ui/display/chip-css.generated.js.map +1 -0
  281. package/dist/ui/display/chip-css.js +12 -0
  282. package/dist/ui/display/chip-css.js.map +1 -0
  283. package/dist/ui/display/code-viewer-css.d.ts +2 -0
  284. package/dist/ui/display/code-viewer-css.d.ts.map +1 -0
  285. package/dist/ui/display/code-viewer-css.generated.d.ts +2 -0
  286. package/dist/ui/display/code-viewer-css.generated.d.ts.map +1 -0
  287. package/dist/ui/display/code-viewer-css.generated.js +4 -0
  288. package/dist/ui/display/code-viewer-css.generated.js.map +1 -0
  289. package/dist/ui/display/code-viewer-css.js +3 -0
  290. package/dist/ui/display/code-viewer-css.js.map +1 -0
  291. package/dist/ui/display/code-viewer-lang.d.ts +15 -0
  292. package/dist/ui/display/code-viewer-lang.d.ts.map +1 -0
  293. package/dist/ui/display/code-viewer-lang.js +190 -0
  294. package/dist/ui/display/code-viewer-lang.js.map +1 -0
  295. package/dist/ui/display/code-viewer-theme.d.ts +5 -0
  296. package/dist/ui/display/code-viewer-theme.d.ts.map +1 -0
  297. package/dist/ui/display/code-viewer-theme.js +138 -0
  298. package/dist/ui/display/code-viewer-theme.js.map +1 -0
  299. package/dist/ui/display/flip-css.d.ts +2 -0
  300. package/dist/ui/display/flip-css.d.ts.map +1 -0
  301. package/dist/ui/display/flip-css.generated.d.ts +2 -0
  302. package/dist/ui/display/flip-css.generated.d.ts.map +1 -0
  303. package/dist/ui/display/flip-css.generated.js +4 -0
  304. package/dist/ui/display/flip-css.generated.js.map +1 -0
  305. package/dist/ui/display/flip-css.js +4 -0
  306. package/dist/ui/display/flip-css.js.map +1 -0
  307. package/dist/ui/display/hint-css.generated.d.ts +2 -0
  308. package/dist/ui/display/hint-css.generated.d.ts.map +1 -0
  309. package/dist/ui/display/hint-css.generated.js +4 -0
  310. package/dist/ui/display/hint-css.generated.js.map +1 -0
  311. package/dist/ui/display/marquee-css.d.ts +2 -0
  312. package/dist/ui/display/marquee-css.d.ts.map +1 -0
  313. package/dist/ui/display/marquee-css.generated.d.ts +2 -0
  314. package/dist/ui/display/marquee-css.generated.d.ts.map +1 -0
  315. package/dist/ui/display/marquee-css.generated.js +4 -0
  316. package/dist/ui/display/marquee-css.generated.js.map +1 -0
  317. package/dist/ui/display/marquee-css.js +4 -0
  318. package/dist/ui/display/marquee-css.js.map +1 -0
  319. package/dist/ui/display/section-head-css.generated.d.ts +2 -0
  320. package/dist/ui/display/section-head-css.generated.d.ts.map +1 -0
  321. package/dist/ui/display/section-head-css.generated.js +4 -0
  322. package/dist/ui/display/section-head-css.generated.js.map +1 -0
  323. package/dist/ui/display/surface-css.d.ts +2 -0
  324. package/dist/ui/display/surface-css.d.ts.map +1 -0
  325. package/dist/ui/display/surface-css.generated.d.ts +2 -0
  326. package/dist/ui/display/surface-css.generated.d.ts.map +1 -0
  327. package/dist/ui/display/surface-css.generated.js +4 -0
  328. package/dist/ui/display/surface-css.generated.js.map +1 -0
  329. package/dist/ui/display/surface-css.js +7 -0
  330. package/dist/ui/display/surface-css.js.map +1 -0
  331. package/dist/ui/display/table-css.generated.d.ts +2 -0
  332. package/dist/ui/display/table-css.generated.d.ts.map +1 -0
  333. package/dist/ui/display/table-css.generated.js +4 -0
  334. package/dist/ui/display/table-css.generated.js.map +1 -0
  335. package/dist/ui/display/table-logic.d.ts +110 -0
  336. package/dist/ui/display/table-logic.d.ts.map +1 -0
  337. package/dist/ui/display/table-logic.js +81 -0
  338. package/dist/ui/display/table-logic.js.map +1 -0
  339. package/dist/ui/display/table-plain-css.generated.d.ts +2 -0
  340. package/dist/ui/display/table-plain-css.generated.d.ts.map +1 -0
  341. package/dist/ui/display/table-plain-css.generated.js +4 -0
  342. package/dist/ui/display/table-plain-css.generated.js.map +1 -0
  343. package/dist/ui/display/table-shared.d.ts +101 -0
  344. package/dist/ui/display/table-shared.d.ts.map +1 -0
  345. package/dist/ui/display/table-shared.js +229 -0
  346. package/dist/ui/display/table-shared.js.map +1 -0
  347. package/dist/ui/feedback/AlertModal.d.ts +41 -0
  348. package/dist/ui/feedback/AlertModal.d.ts.map +1 -0
  349. package/dist/ui/feedback/AlertModal.js +45 -0
  350. package/dist/ui/feedback/AlertModal.js.map +1 -0
  351. package/dist/ui/feedback/ConfirmModal.d.ts +50 -0
  352. package/dist/ui/feedback/ConfirmModal.d.ts.map +1 -0
  353. package/dist/ui/feedback/ConfirmModal.js +47 -0
  354. package/dist/ui/feedback/ConfirmModal.js.map +1 -0
  355. package/dist/ui/feedback/Loader.d.ts +49 -0
  356. package/dist/ui/feedback/Loader.d.ts.map +1 -0
  357. package/dist/ui/feedback/Loader.js +79 -0
  358. package/dist/ui/feedback/Loader.js.map +1 -0
  359. package/dist/ui/feedback/LoaderBar.d.ts +38 -0
  360. package/dist/ui/feedback/LoaderBar.d.ts.map +1 -0
  361. package/dist/ui/feedback/LoaderBar.js +79 -0
  362. package/dist/ui/feedback/LoaderBar.js.map +1 -0
  363. package/dist/ui/feedback/Loading.d.ts +69 -0
  364. package/dist/ui/feedback/Loading.d.ts.map +1 -0
  365. package/dist/ui/feedback/Loading.js +164 -0
  366. package/dist/ui/feedback/Loading.js.map +1 -0
  367. package/dist/ui/feedback/Modal.d.ts +73 -0
  368. package/dist/ui/feedback/Modal.d.ts.map +1 -0
  369. package/dist/ui/feedback/Modal.js +83 -0
  370. package/dist/ui/feedback/Modal.js.map +1 -0
  371. package/dist/ui/feedback/SideSheet.d.ts +70 -0
  372. package/dist/ui/feedback/SideSheet.d.ts.map +1 -0
  373. package/dist/ui/feedback/SideSheet.js +130 -0
  374. package/dist/ui/feedback/SideSheet.js.map +1 -0
  375. package/dist/ui/feedback/Toast.d.ts +45 -0
  376. package/dist/ui/feedback/Toast.d.ts.map +1 -0
  377. package/dist/ui/feedback/Toast.js +225 -0
  378. package/dist/ui/feedback/Toast.js.map +1 -0
  379. package/dist/ui/feedback/feedback-css.d.ts +2 -0
  380. package/dist/ui/feedback/feedback-css.d.ts.map +1 -0
  381. package/dist/ui/feedback/feedback-css.generated.d.ts +2 -0
  382. package/dist/ui/feedback/feedback-css.generated.d.ts.map +1 -0
  383. package/dist/ui/feedback/feedback-css.generated.js +4 -0
  384. package/dist/ui/feedback/feedback-css.generated.js.map +1 -0
  385. package/dist/ui/feedback/feedback-css.js +4 -0
  386. package/dist/ui/feedback/feedback-css.js.map +1 -0
  387. package/dist/ui/feedback/host-toast.d.ts +23 -0
  388. package/dist/ui/feedback/host-toast.d.ts.map +1 -0
  389. package/dist/ui/feedback/host-toast.js +34 -0
  390. package/dist/ui/feedback/host-toast.js.map +1 -0
  391. package/dist/ui/feedback/loader-bar-art.d.ts +6 -0
  392. package/dist/ui/feedback/loader-bar-art.d.ts.map +1 -0
  393. package/dist/ui/feedback/loader-bar-art.js +6 -0
  394. package/dist/ui/feedback/loader-bar-art.js.map +1 -0
  395. package/dist/ui/feedback/loader-bar-css.generated.d.ts +2 -0
  396. package/dist/ui/feedback/loader-bar-css.generated.d.ts.map +1 -0
  397. package/dist/ui/feedback/loader-bar-css.generated.js +4 -0
  398. package/dist/ui/feedback/loader-bar-css.generated.js.map +1 -0
  399. package/dist/ui/feedback/loader-css.generated.d.ts +2 -0
  400. package/dist/ui/feedback/loader-css.generated.d.ts.map +1 -0
  401. package/dist/ui/feedback/loader-css.generated.js +4 -0
  402. package/dist/ui/feedback/loader-css.generated.js.map +1 -0
  403. package/dist/ui/feedback/loading-css.generated.d.ts +2 -0
  404. package/dist/ui/feedback/loading-css.generated.d.ts.map +1 -0
  405. package/dist/ui/feedback/loading-css.generated.js +4 -0
  406. package/dist/ui/feedback/loading-css.generated.js.map +1 -0
  407. package/dist/ui/feedback/loading-host.d.ts +49 -0
  408. package/dist/ui/feedback/loading-host.d.ts.map +1 -0
  409. package/dist/ui/feedback/loading-host.js +57 -0
  410. package/dist/ui/feedback/loading-host.js.map +1 -0
  411. package/dist/ui/feedback/modal-host.d.ts +51 -0
  412. package/dist/ui/feedback/modal-host.d.ts.map +1 -0
  413. package/dist/ui/feedback/modal-host.js +170 -0
  414. package/dist/ui/feedback/modal-host.js.map +1 -0
  415. package/dist/ui/feedback/side-sheet-css.d.ts +2 -0
  416. package/dist/ui/feedback/side-sheet-css.d.ts.map +1 -0
  417. package/dist/ui/feedback/side-sheet-css.generated.d.ts +2 -0
  418. package/dist/ui/feedback/side-sheet-css.generated.d.ts.map +1 -0
  419. package/dist/ui/feedback/side-sheet-css.generated.js +4 -0
  420. package/dist/ui/feedback/side-sheet-css.generated.js.map +1 -0
  421. package/dist/ui/feedback/side-sheet-css.js +2 -0
  422. package/dist/ui/feedback/side-sheet-css.js.map +1 -0
  423. package/dist/ui/feedback/toast-host.d.ts +24 -0
  424. package/dist/ui/feedback/toast-host.d.ts.map +1 -0
  425. package/dist/ui/feedback/toast-host.js +20 -0
  426. package/dist/ui/feedback/toast-host.js.map +1 -0
  427. package/dist/ui/index.d.ts +44 -44
  428. package/dist/ui/index.d.ts.map +1 -1
  429. package/dist/ui/index.js +44 -44
  430. package/dist/ui/index.js.map +1 -1
  431. package/dist/ui/infra/chevron.d.ts +22 -0
  432. package/dist/ui/infra/chevron.d.ts.map +1 -0
  433. package/dist/ui/infra/chevron.js +33 -0
  434. package/dist/ui/infra/chevron.js.map +1 -0
  435. package/dist/ui/infra/controls-css.d.ts +16 -0
  436. package/dist/ui/infra/controls-css.d.ts.map +1 -0
  437. package/dist/ui/infra/controls-css.js +26 -0
  438. package/dist/ui/infra/controls-css.js.map +1 -0
  439. package/dist/ui/infra/css.d.ts +35 -0
  440. package/dist/ui/infra/css.d.ts.map +1 -0
  441. package/dist/ui/infra/css.js +52 -0
  442. package/dist/ui/infra/css.js.map +1 -0
  443. package/dist/ui/infra/host-data.d.ts +119 -0
  444. package/dist/ui/infra/host-data.d.ts.map +1 -0
  445. package/dist/ui/infra/host-data.js +122 -0
  446. package/dist/ui/infra/host-data.js.map +1 -0
  447. package/dist/ui/infra/locale.d.ts +4 -0
  448. package/dist/ui/infra/locale.d.ts.map +1 -0
  449. package/dist/ui/infra/locale.js +17 -0
  450. package/dist/ui/infra/locale.js.map +1 -0
  451. package/dist/ui/infra/overlay-css.d.ts +2 -0
  452. package/dist/ui/infra/overlay-css.d.ts.map +1 -0
  453. package/dist/ui/infra/overlay-css.generated.d.ts +2 -0
  454. package/dist/ui/infra/overlay-css.generated.d.ts.map +1 -0
  455. package/dist/ui/infra/overlay-css.generated.js +4 -0
  456. package/dist/ui/infra/overlay-css.generated.js.map +1 -0
  457. package/dist/ui/infra/overlay-css.js +2 -0
  458. package/dist/ui/infra/overlay-css.js.map +1 -0
  459. package/dist/ui/infra/overlay.d.ts +62 -0
  460. package/dist/ui/infra/overlay.d.ts.map +1 -0
  461. package/dist/ui/infra/overlay.js +94 -0
  462. package/dist/ui/infra/overlay.js.map +1 -0
  463. package/dist/ui/infra/panel-css.d.ts +2 -0
  464. package/dist/ui/infra/panel-css.d.ts.map +1 -0
  465. package/dist/ui/infra/panel-css.generated.d.ts +2 -0
  466. package/dist/ui/infra/panel-css.generated.d.ts.map +1 -0
  467. package/dist/ui/infra/panel-css.generated.js +4 -0
  468. package/dist/ui/infra/panel-css.generated.js.map +1 -0
  469. package/dist/ui/infra/panel-css.js +2 -0
  470. package/dist/ui/infra/panel-css.js.map +1 -0
  471. package/dist/ui/infra/panel.d.ts +41 -0
  472. package/dist/ui/infra/panel.d.ts.map +1 -0
  473. package/dist/ui/infra/panel.js +37 -0
  474. package/dist/ui/infra/panel.js.map +1 -0
  475. package/dist/ui/infra/side-panel-css.d.ts +2 -0
  476. package/dist/ui/infra/side-panel-css.d.ts.map +1 -0
  477. package/dist/ui/infra/side-panel-css.generated.d.ts +2 -0
  478. package/dist/ui/infra/side-panel-css.generated.d.ts.map +1 -0
  479. package/dist/ui/infra/side-panel-css.generated.js +4 -0
  480. package/dist/ui/infra/side-panel-css.generated.js.map +1 -0
  481. package/dist/ui/infra/side-panel-css.js +2 -0
  482. package/dist/ui/infra/side-panel-css.js.map +1 -0
  483. package/dist/ui/infra/thenable.d.ts +9 -0
  484. package/dist/ui/infra/thenable.d.ts.map +1 -0
  485. package/dist/ui/infra/thenable.js +15 -0
  486. package/dist/ui/infra/thenable.js.map +1 -0
  487. package/dist/ui/infra/ticker.d.ts +8 -0
  488. package/dist/ui/infra/ticker.d.ts.map +1 -0
  489. package/dist/ui/infra/ticker.js +49 -0
  490. package/dist/ui/infra/ticker.js.map +1 -0
  491. package/dist/ui/infra/tooltip.d.ts +29 -0
  492. package/dist/ui/infra/tooltip.d.ts.map +1 -0
  493. package/dist/ui/infra/tooltip.js +10 -0
  494. package/dist/ui/infra/tooltip.js.map +1 -0
  495. package/dist/ui/inputs/Checkbox.d.ts +24 -0
  496. package/dist/ui/inputs/Checkbox.d.ts.map +1 -0
  497. package/dist/ui/inputs/Checkbox.js +35 -0
  498. package/dist/ui/inputs/Checkbox.js.map +1 -0
  499. package/dist/ui/inputs/DateTimePicker.d.ts +45 -0
  500. package/dist/ui/inputs/DateTimePicker.d.ts.map +1 -0
  501. package/dist/ui/inputs/DateTimePicker.js +462 -0
  502. package/dist/ui/inputs/DateTimePicker.js.map +1 -0
  503. package/dist/ui/inputs/Field.d.ts +125 -0
  504. package/dist/ui/inputs/Field.d.ts.map +1 -0
  505. package/dist/ui/inputs/Field.js +175 -0
  506. package/dist/ui/inputs/Field.js.map +1 -0
  507. package/dist/ui/inputs/InputGroup.d.ts +91 -0
  508. package/dist/ui/inputs/InputGroup.d.ts.map +1 -0
  509. package/dist/ui/inputs/InputGroup.js +125 -0
  510. package/dist/ui/inputs/InputGroup.js.map +1 -0
  511. package/dist/ui/inputs/ModelPicker.d.ts +48 -0
  512. package/dist/ui/inputs/ModelPicker.d.ts.map +1 -0
  513. package/dist/ui/inputs/ModelPicker.js +101 -0
  514. package/dist/ui/inputs/ModelPicker.js.map +1 -0
  515. package/dist/ui/inputs/Picker.d.ts +56 -0
  516. package/dist/ui/inputs/Picker.d.ts.map +1 -0
  517. package/dist/ui/inputs/Picker.js +244 -0
  518. package/dist/ui/inputs/Picker.js.map +1 -0
  519. package/dist/ui/inputs/Segmented.d.ts +99 -0
  520. package/dist/ui/inputs/Segmented.d.ts.map +1 -0
  521. package/dist/ui/inputs/Segmented.js +135 -0
  522. package/dist/ui/inputs/Segmented.js.map +1 -0
  523. package/dist/ui/inputs/Textarea.d.ts +36 -0
  524. package/dist/ui/inputs/Textarea.d.ts.map +1 -0
  525. package/dist/ui/inputs/Textarea.js +35 -0
  526. package/dist/ui/inputs/Textarea.js.map +1 -0
  527. package/dist/ui/inputs/WorkspacePicker.d.ts +35 -0
  528. package/dist/ui/inputs/WorkspacePicker.d.ts.map +1 -0
  529. package/dist/ui/inputs/WorkspacePicker.js +39 -0
  530. package/dist/ui/inputs/WorkspacePicker.js.map +1 -0
  531. package/dist/ui/inputs/datetime-css.generated.d.ts +2 -0
  532. package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -0
  533. package/dist/ui/inputs/datetime-css.generated.js +4 -0
  534. package/dist/ui/inputs/datetime-css.generated.js.map +1 -0
  535. package/dist/ui/inputs/datetime-logic.d.ts +102 -0
  536. package/dist/ui/inputs/datetime-logic.d.ts.map +1 -0
  537. package/dist/ui/inputs/datetime-logic.js +200 -0
  538. package/dist/ui/inputs/datetime-logic.js.map +1 -0
  539. package/dist/ui/inputs/field-css.generated.d.ts +2 -0
  540. package/dist/ui/inputs/field-css.generated.d.ts.map +1 -0
  541. package/dist/ui/inputs/field-css.generated.js +4 -0
  542. package/dist/ui/inputs/field-css.generated.js.map +1 -0
  543. package/dist/ui/inputs/input-group-css.generated.d.ts +2 -0
  544. package/dist/ui/inputs/input-group-css.generated.d.ts.map +1 -0
  545. package/dist/ui/inputs/input-group-css.generated.js +4 -0
  546. package/dist/ui/inputs/input-group-css.generated.js.map +1 -0
  547. package/dist/ui/inputs/picker-css.d.ts +2 -0
  548. package/dist/ui/inputs/picker-css.d.ts.map +1 -0
  549. package/dist/ui/inputs/picker-css.generated.d.ts +2 -0
  550. package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -0
  551. package/dist/ui/inputs/picker-css.generated.js +4 -0
  552. package/dist/ui/inputs/picker-css.generated.js.map +1 -0
  553. package/dist/ui/inputs/picker-css.js +4 -0
  554. package/dist/ui/inputs/picker-css.js.map +1 -0
  555. package/dist/ui/inputs/picker-icons.d.ts +12 -0
  556. package/dist/ui/inputs/picker-icons.d.ts.map +1 -0
  557. package/dist/ui/inputs/picker-icons.js +29 -0
  558. package/dist/ui/inputs/picker-icons.js.map +1 -0
  559. package/dist/ui/inputs/picker-logic.d.ts +33 -0
  560. package/dist/ui/inputs/picker-logic.d.ts.map +1 -0
  561. package/dist/ui/inputs/picker-logic.js +68 -0
  562. package/dist/ui/inputs/picker-logic.js.map +1 -0
  563. package/dist/ui/inputs/segmented-css.generated.d.ts +2 -0
  564. package/dist/ui/inputs/segmented-css.generated.d.ts.map +1 -0
  565. package/dist/ui/inputs/segmented-css.generated.js +4 -0
  566. package/dist/ui/inputs/segmented-css.generated.js.map +1 -0
  567. package/dist/ui/layout/PanelDock.d.ts +132 -0
  568. package/dist/ui/layout/PanelDock.d.ts.map +1 -0
  569. package/dist/ui/layout/PanelDock.js +390 -0
  570. package/dist/ui/layout/PanelDock.js.map +1 -0
  571. package/dist/ui/layout/QuickToolbar.d.ts +54 -0
  572. package/dist/ui/layout/QuickToolbar.d.ts.map +1 -0
  573. package/dist/ui/layout/QuickToolbar.js +254 -0
  574. package/dist/ui/layout/QuickToolbar.js.map +1 -0
  575. package/dist/ui/layout/SplitGroup.d.ts +37 -0
  576. package/dist/ui/layout/SplitGroup.d.ts.map +1 -0
  577. package/dist/ui/layout/SplitGroup.js +36 -0
  578. package/dist/ui/layout/SplitGroup.js.map +1 -0
  579. package/dist/ui/layout/panel-dock-css.d.ts +2 -0
  580. package/dist/ui/layout/panel-dock-css.d.ts.map +1 -0
  581. package/dist/ui/layout/panel-dock-css.generated.d.ts +2 -0
  582. package/dist/ui/layout/panel-dock-css.generated.d.ts.map +1 -0
  583. package/dist/ui/layout/panel-dock-css.generated.js +4 -0
  584. package/dist/ui/layout/panel-dock-css.generated.js.map +1 -0
  585. package/dist/ui/layout/panel-dock-css.js +4 -0
  586. package/dist/ui/layout/panel-dock-css.js.map +1 -0
  587. package/dist/ui/layout/panel-dock-logic.d.ts +67 -0
  588. package/dist/ui/layout/panel-dock-logic.d.ts.map +1 -0
  589. package/dist/ui/layout/panel-dock-logic.js +110 -0
  590. package/dist/ui/layout/panel-dock-logic.js.map +1 -0
  591. package/dist/ui/layout/quick-toolbar-css.generated.d.ts +2 -0
  592. package/dist/ui/layout/quick-toolbar-css.generated.d.ts.map +1 -0
  593. package/dist/ui/layout/quick-toolbar-css.generated.js +4 -0
  594. package/dist/ui/layout/quick-toolbar-css.generated.js.map +1 -0
  595. package/dist/ui/layout/quick-toolbar-logic.d.ts +76 -0
  596. package/dist/ui/layout/quick-toolbar-logic.d.ts.map +1 -0
  597. package/dist/ui/layout/quick-toolbar-logic.js +40 -0
  598. package/dist/ui/layout/quick-toolbar-logic.js.map +1 -0
  599. package/dist/ui/layout/resizer.d.ts +29 -0
  600. package/dist/ui/layout/resizer.d.ts.map +1 -0
  601. package/dist/ui/layout/resizer.js +42 -0
  602. package/dist/ui/layout/resizer.js.map +1 -0
  603. package/dist/ui/layout/split-group-css.generated.d.ts +2 -0
  604. package/dist/ui/layout/split-group-css.generated.d.ts.map +1 -0
  605. package/dist/ui/layout/split-group-css.generated.js +4 -0
  606. package/dist/ui/layout/split-group-css.generated.js.map +1 -0
  607. package/dist/ui/navigation/Pagination.d.ts +59 -0
  608. package/dist/ui/navigation/Pagination.d.ts.map +1 -0
  609. package/dist/ui/navigation/Pagination.js +112 -0
  610. package/dist/ui/navigation/Pagination.js.map +1 -0
  611. package/dist/ui/navigation/pagination-css.generated.d.ts +2 -0
  612. package/dist/ui/navigation/pagination-css.generated.d.ts.map +1 -0
  613. package/dist/ui/navigation/pagination-css.generated.js +4 -0
  614. package/dist/ui/navigation/pagination-css.generated.js.map +1 -0
  615. package/dist/ui/navigation/pagination-logic.d.ts +36 -0
  616. package/dist/ui/navigation/pagination-logic.d.ts.map +1 -0
  617. package/dist/ui/navigation/pagination-logic.js +73 -0
  618. package/dist/ui/navigation/pagination-logic.js.map +1 -0
  619. package/dist/ui/official.js +2 -2
  620. package/dist/ui/official.js.map +1 -1
  621. package/dist/utils/i18n.d.ts +2 -2
  622. package/dist/utils/i18n.d.ts.map +1 -1
  623. package/dist/utils/i18n.js +1 -1
  624. package/dist/utils/i18n.js.map +1 -1
  625. package/docs/README.md +2 -1
  626. package/docs/design/architecture.md +9 -8
  627. package/docs/design/copywriting.md +23 -0
  628. package/docs/design/external/dsh-host.md +5 -5
  629. package/docs/design/structure.md +132 -128
  630. package/docs/design/style.md +5 -5
  631. package/docs/help/utils.doc.ts +3 -3
  632. package/docs/help/utils.md +3 -3
  633. package/docs/requirements.md +30 -290
  634. package/package.json +1 -1
@@ -0,0 +1,135 @@
1
+ import { createElement as h, useCallback, useLayoutEffect, useRef, useState, } from 'react';
2
+ import { getTooltipRenderer } from '../infra/tooltip.js';
3
+ import { useOverlayLocked } from '../infra/overlay.js';
4
+ import { ensureComponentStyles } from '../infra/css.js';
5
+ import { SEGMENTED_CSS } from '../infra/controls-css.js';
6
+ /**
7
+ * 角标 / 计数要不要显示,返回要显示的文本。
8
+ * 数字 ≤0 是「没东西可数」的老口径;字符串(`'1K'` / `'99+'`)由调用方决定,原样显示,空串不显示。
9
+ */
10
+ function countText(value) {
11
+ if (value === undefined)
12
+ return null;
13
+ if (typeof value === 'number')
14
+ return value > 0 ? String(value) : null;
15
+ return value === '' ? null : value;
16
+ }
17
+ /**
18
+ * 渲染一个分段控件(单选 / 多选同体)。
19
+ *
20
+ * @param props 见 {@link SegmentedProps}。
21
+ * @returns 分段控件元素。
22
+ */
23
+ export function Segmented(props) {
24
+ // 幂等:token 层 + 控件皮肤(首次渲染时挂上,之后是空转)
25
+ ensureComponentStyles('segmented', SEGMENTED_CSS);
26
+ ensureComponentStyles('segmented', SEGMENTED_CSS);
27
+ const size = props.size ?? 'lg';
28
+ const multiple = props.multiple === true;
29
+ // 外层浮层锁死 ⇒ 每一段都按自己的禁用态渲染(只做「或」,不写回 props)。
30
+ const locked = useOverlayLocked();
31
+ const value = props.value;
32
+ const onChange = props.onChange;
33
+ // 单选:选中底由一块共用「滑动块」承担,点选后从旧段滑到新段(多选每段各自着色,没有唯一滑块可滑)。
34
+ const sliding = !multiple && props.items.length > 1;
35
+ const rootRef = useRef(null);
36
+ const [thumb, setThumb] = useState(null);
37
+ // 量选中段的位置:容器 width 由内容决定,段宽又随文案 / 角标变,只能读一次布局。
38
+ const measure = useCallback(() => {
39
+ const sel = rootRef.current?.querySelector('.dshpc-seg__item[aria-pressed="true"]');
40
+ if (sel === undefined || sel === null) {
41
+ setThumb(null);
42
+ return;
43
+ }
44
+ const next = { left: sel.offsetLeft, top: sel.offsetTop, width: sel.offsetWidth, height: sel.offsetHeight };
45
+ // 尺寸没变就不 set,免得 ResizeObserver 与渲染互相打转。
46
+ setThumb((cur) => cur !== null && cur.left === next.left && cur.top === next.top && cur.width === next.width && cur.height === next.height
47
+ ? cur
48
+ : next);
49
+ }, []);
50
+ useLayoutEffect(() => {
51
+ if (!sliding) {
52
+ setThumb(null);
53
+ return;
54
+ }
55
+ measure();
56
+ const root = rootRef.current;
57
+ // 容器被布局改宽(block / 换行 / webfont 到位)时重测;首帧 thumb 是插入的新元素,不触发过渡。
58
+ if (root === null || typeof ResizeObserver === 'undefined')
59
+ return;
60
+ const ro = new ResizeObserver(measure);
61
+ ro.observe(root);
62
+ return () => ro.disconnect();
63
+ }, [sliding, measure, value, size, props.items, props.bordered, props.block]);
64
+ // 核心 Tooltip 渲染器(宿主启动注入官方 Tooltip;未注入则段级提示降级为无)。
65
+ const renderer = getTooltipRenderer();
66
+ // tone:内置色名走 CSS 类(底 / 字配对在 segmented.css,两主题各自成立);
67
+ // 自定义一对颜色只能内联写根节点那两条局部变量(内联恒胜,两主题同值)。
68
+ const tone = props.tone;
69
+ const toneClass = typeof tone === 'string' ? ` dshpc-seg--tone-${tone}` : '';
70
+ const toneStyle = tone !== undefined && typeof tone !== 'string'
71
+ ? { '--seg-thumb': tone.bg, '--seg-on': tone.fg }
72
+ : undefined;
73
+ return h('div', {
74
+ role: 'group',
75
+ 'aria-label': props.label,
76
+ id: props.id,
77
+ ref: rootRef,
78
+ // 结构一套、皮肤只在 controls-css 里;此处只拼「轴」类名,不写任何颜色 / 尺寸字面值。
79
+ className: `dshpc-seg dshpc-seg--${size}${sliding ? ' dshpc-seg--slide' : ''}${props.block === true ? ' dshpc-seg--block' : ''}${props.bordered === true ? ' dshpc-seg--bordered' : ''}${toneClass}${props.className !== undefined ? ` ${props.className}` : ''}`,
80
+ style: toneStyle === undefined ? props.style : { ...toneStyle, ...props.style },
81
+ }, [
82
+ sliding && thumb !== null
83
+ ? h('span', {
84
+ key: '__thumb__',
85
+ className: 'dshpc-seg__thumb',
86
+ 'aria-hidden': true,
87
+ style: {
88
+ left: `${String(thumb.left)}px`,
89
+ top: `${String(thumb.top)}px`,
90
+ width: `${String(thumb.width)}px`,
91
+ height: `${String(thumb.height)}px`,
92
+ },
93
+ })
94
+ : null,
95
+ ...props.items.map(item => {
96
+ const on = multiple ? value.includes(item.value) : value === item.value;
97
+ const disabled = item.disabled === true || props.disabled === true || locked;
98
+ const handle = () => {
99
+ if (disabled)
100
+ return;
101
+ if (multiple) {
102
+ const arr = value;
103
+ const next = arr.includes(item.value) ? arr.filter(v => v !== item.value) : [...arr, item.value];
104
+ onChange(next);
105
+ }
106
+ else {
107
+ ;
108
+ onChange(item.value);
109
+ }
110
+ };
111
+ const count = countText(item.count);
112
+ const badge = countText(item.badge);
113
+ // 图标 / 文字 / 计数三者都没有文字内容时,这一段只有图标 ⇒ 要正方形(CSS 归零左右内距)。
114
+ const hasLabel = item.label !== undefined && item.label !== null && item.label !== '';
115
+ const hasIcon = item.icon !== undefined && item.icon !== null;
116
+ const iconOnly = hasIcon && !hasLabel && count === null && badge === null;
117
+ const itemButton = h('button', {
118
+ key: item.value,
119
+ type: 'button',
120
+ className: `dshpc-seg__item${iconOnly ? ' dshpc-seg__item--icon-only' : ''}`,
121
+ // 选中态用 aria-pressed 表达 ⇒ 读屏可读,皮肤也只认这一个选择器
122
+ 'aria-pressed': on,
123
+ 'aria-label': item.ariaLabel ?? (iconOnly ? item.tooltip : undefined),
124
+ disabled,
125
+ onClick: handle,
126
+ }, hasIcon ? h('span', { className: 'dshpc-seg__icon' }, item.icon) : null, hasLabel ? item.label : null, count === null ? null : h('span', { className: 'dshpc-seg__count' }, count), badge === null ? null : h('span', { className: 'dshpc-seg__badge' }, badge));
127
+ // 段级悬停提示:走注入的官方 Tooltip(与 FieldHint 同一条路),不破坏分段布局。
128
+ if (item.tooltip !== undefined && renderer !== undefined) {
129
+ return renderer({ label: item.tooltip, side: 'top', children: itemButton });
130
+ }
131
+ return itemButton;
132
+ }),
133
+ ]);
134
+ }
135
+ //# sourceMappingURL=Segmented.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Segmented.js","sourceRoot":"","sources":["../../../src/ui/inputs/Segmented.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * 多行文本输入(P3 输入类家族唯一实现;皮肤见 controls-css.ts 的 `.dshpc-textarea`)。
3
+ *
4
+ * 以前提示词框是 `task-editor.tsx` 里手写的 `<textarea>` + 业务 CSS `.dshpc-ed-prompt`;
5
+ * 现上提为基础层件(U20 #6,2026-10-05),业务文件只 `import { Textarea }`。
6
+ */
7
+ import { createElement as h, type CSSProperties } from 'react';
8
+ export interface TextareaProps {
9
+ /** 当前值。 */
10
+ value: string;
11
+ /** 变更回调(原生 textarea value)。 */
12
+ onChange: (value: string) => void;
13
+ /** 占位。 */
14
+ placeholder?: string;
15
+ /** 校验不通过:描红盒。 */
16
+ error?: boolean;
17
+ /** 禁用。 */
18
+ disabled?: boolean;
19
+ /** 原生 id(用于 label 关联 / 锚点)。 */
20
+ id?: string;
21
+ /** 原生 rows(默认不传,靠 CSS min-height 撑开)。 */
22
+ rows?: number;
23
+ /** 拼写检查(默认关)。 */
24
+ spellCheck?: boolean;
25
+ /** 无障碍名。 */
26
+ 'aria-label'?: string;
27
+ /** 追加 class。 */
28
+ className?: string;
29
+ /** 追加样式(只允许补布局)。 */
30
+ style?: CSSProperties;
31
+ /** 问号提示文字:给了就在输入框后面挂标准 FieldHint。 */
32
+ hint?: string;
33
+ }
34
+ /** 多行文本输入。 */
35
+ export declare function Textarea(props: TextareaProps): ReturnType<typeof h>;
36
+ //# sourceMappingURL=Textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/Textarea.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AAM9D,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,UAAU;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU;IACV,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,cAAc;AACd,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAoBnE"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * 多行文本输入(P3 输入类家族唯一实现;皮肤见 controls-css.ts 的 `.dshpc-textarea`)。
3
+ *
4
+ * 以前提示词框是 `task-editor.tsx` 里手写的 `<textarea>` + 业务 CSS `.dshpc-ed-prompt`;
5
+ * 现上提为基础层件(U20 #6,2026-10-05),业务文件只 `import { Textarea }`。
6
+ */
7
+ import { createElement as h } from 'react';
8
+ import { FieldHint } from '../display/FieldHint.js';
9
+ import { useOverlayLocked } from '../infra/overlay.js';
10
+ import { ensureComponentStyles } from '../infra/css.js';
11
+ import { FIELD_CSS } from '../infra/controls-css.js';
12
+ /** 多行文本输入。 */
13
+ export function Textarea(props) {
14
+ ensureComponentStyles('field', FIELD_CSS);
15
+ const { value, onChange, placeholder, error, disabled, id, rows, spellCheck, className, style } = props;
16
+ // 锁定时按自己的禁用态渲染,只做「或」—— 不写回调用方的 disabled,解锁即还原。
17
+ const off = disabled === true || useOverlayLocked();
18
+ const box = h('textarea', {
19
+ id,
20
+ rows,
21
+ value,
22
+ placeholder,
23
+ disabled: off,
24
+ spellCheck: spellCheck === true,
25
+ 'aria-label': props['aria-label'],
26
+ className: `dshpc-textarea${error === true ? ' dshpc-textarea--error' : ''}${className !== undefined && className !== '' ? ` ${className}` : ''}`,
27
+ style,
28
+ onChange: (event) => { onChange(event.target.value); },
29
+ });
30
+ // 多行的问号放**右下角**(2026-10-20 用户:不要垂直居中,那样像贴在中间的空白上)
31
+ if (props.hint === undefined)
32
+ return box;
33
+ return h('span', { className: 'dshpc-fieldwrap dshpc-fieldwrap--block' }, box, h(FieldHint, { text: props.hint }));
34
+ }
35
+ //# sourceMappingURL=Textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../../src/ui/inputs/Textarea.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,IAAI,CAAC,EAAsB,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AA6BpD,cAAc;AACd,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IACzC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvG,+CAA+C;IAC/C,MAAM,GAAG,GAAG,QAAQ,KAAK,IAAI,IAAI,gBAAgB,EAAE,CAAA;IACnD,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE;QACxB,EAAE;QACF,IAAI;QACJ,KAAK;QACL,WAAW;QACX,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,UAAU,KAAK,IAAI;QAC/B,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;QACjC,SAAS,EAAE,iBAAiB,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACjJ,KAAK;QACL,QAAQ,EAAE,CAAC,KAAoC,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;KAC5E,CAAC,CAAA;IACX,kDAAkD;IAClD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IACxC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,wCAAwC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACpH,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { createElement as h, type ReactNode } from 'react';
2
+ import { type PickerSize } from './Picker.js';
3
+ import { type Translate } from '../../utils/i18n.js';
4
+ export interface WorkspacePickerProps {
5
+ value?: string | string[];
6
+ defaultValue?: string | string[];
7
+ mode?: 'single' | 'multiple';
8
+ max?: number;
9
+ onChange?: (value: string | string[]) => void;
10
+ /**
11
+ * 是否提供「所有工作区」默认项(**默认提供**;只在单选形态下出现):
12
+ * 选中即发 `''` —— 表示不筛,是否当「全部」由消费方自己处理。
13
+ */
14
+ allowDefault?: boolean;
15
+ /** 「所有工作区」的文案(默认取内置字典)。 */
16
+ defaultLabel?: string;
17
+ /** 允许「不选」。 */
18
+ clearable?: boolean;
19
+ /** 下拉内搜索框(默认关;要就传 true)。 */
20
+ searchable?: boolean;
21
+ disabled?: boolean;
22
+ size?: PickerSize;
23
+ placement?: 'down' | 'up';
24
+ className?: string;
25
+ /** 未选时的文字(默认「工作区」;想叫「选择工作区」就传它)。 */
26
+ placeholder?: string;
27
+ /** 触发器前置图标:不传 = 默认文件夹;传 `null` = 不显示;传元素 = 自定义。 */
28
+ icon?: ReactNode | null;
29
+ /** 问号提示文字(传了才显示)。 */
30
+ hint?: string;
31
+ translate?: Translate;
32
+ }
33
+ /** 选工作区(交互全管:单选 / 多选 / 上限 / 空态;数据自动来自宿主工作区快照)。 */
34
+ export declare function WorkspacePicker(props: WorkspacePickerProps): ReturnType<typeof h>;
35
+ //# sourceMappingURL=WorkspacePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspacePicker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/WorkspacePicker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAwB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhF,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIvD,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mDAAmD;IACnD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CA2BjF"}
@@ -0,0 +1,39 @@
1
+ // 领域选择器:WorkspacePicker(选工作区)。
2
+ // 通用交互由 ui 的 Picker 承担;工作区数据由本组件自己订(host-data.ts 的
3
+ // workspaceList,connectHost 喂官方 `workspaces` 服务快照)—— 消费方不再传数组
4
+ // (用户 2026-10-20 拍板)。FilePicker 已删(用户同日:文件选择框没有用)。
5
+ import { createElement as h, useSyncExternalStore } from 'react';
6
+ import { ensureControls } from '../infra/css.js';
7
+ import { Picker } from './Picker.js';
8
+ import { t } from '../../utils/i18n.js';
9
+ import { workspaceList } from '../infra/host-data.js';
10
+ import { folderIcon } from './picker-icons.js';
11
+ /** 选工作区(交互全管:单选 / 多选 / 上限 / 空态;数据自动来自宿主工作区快照)。 */
12
+ export function WorkspacePicker(props) {
13
+ ensureControls();
14
+ const tt = props.translate ?? t;
15
+ const items = useSyncExternalStore(workspaceList.subscribe, workspaceList.getSnapshot);
16
+ const options = items.map((w) => ({ value: w.workspaceId, label: w.title }));
17
+ // 「所有工作区」放最上面(单选才有意义);选中发 '' —— 空串表示不筛
18
+ const allOption = props.allowDefault !== false && props.mode !== 'multiple'
19
+ ? { value: '', label: props.defaultLabel ?? tt('workspaceAll') }
20
+ : undefined;
21
+ return h(Picker, {
22
+ options: allOption === undefined ? options : [allOption, ...options],
23
+ value: props.value,
24
+ defaultValue: props.defaultValue,
25
+ mode: props.mode,
26
+ max: props.max,
27
+ onChange: props.onChange,
28
+ clearable: props.clearable,
29
+ searchable: props.searchable,
30
+ hint: props.hint,
31
+ icon: props.icon === undefined ? folderIcon() : props.icon ?? undefined,
32
+ placeholder: props.placeholder ?? tt('explorerRoot'),
33
+ disabled: props.disabled,
34
+ size: props.size,
35
+ placement: props.placement,
36
+ className: props.className,
37
+ });
38
+ }
39
+ //# sourceMappingURL=WorkspacePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspacePicker.js","sourceRoot":"","sources":["../../../src/ui/inputs/WorkspacePicker.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,mDAAmD;AACnD,8DAA8D;AAC9D,mDAAmD;AACnD,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,oBAAoB,EAAkB,MAAM,OAAO,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,CAAC,EAAkB,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAgC9C,kDAAkD;AAClD,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,cAAc,EAAE,CAAA;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,KAAK,GAAG,oBAAoB,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IACtF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5E,uCAAuC;IACvC,MAAM,SAAS,GACb,KAAK,CAAC,YAAY,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QACvD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE;QAChE,CAAC,CAAC,SAAS,CAAA;IACf,OAAO,CAAC,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC;QACpE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS;QACvE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,cAAc,CAAC;QACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const DATETIME_CSS = "/* \u65E5\u671F\u65F6\u95F4\u9009\u62E9\u5668\uFF08DateTimePicker\uFF09\u3002\u7C7B\u540D dshpc-dt-*\uFF1B\u914D\u8272\u53EA\u5403 token\uFF0C\u660E\u6697\u968F token \u5207\u6362\u3002\n \u7ED3\u6784\uFF1A\u89E6\u53D1\u5668\uFF08range = \u4E00\u4E2A\u6574\u6761\uFF1A\u4E24\u4E2A\u65E5\u671F\u533A + \u6837\u5F0F\u753B\u7684\u7070\u9694\u6761\uFF1Bsingle = \u5355\u65E5\u671F\uFF09\u2192 \u6D6E\u5C42\n \uFF08\u4E24\u4E2A\u72EC\u7ACB\u7AEF\u6846 + \u4E24\u5757\u72EC\u7ACB\u65E5\u5386 + \u5E95\u90E8\u52A8\u4F5C\uFF09\u3002\n \u6D6E\u5C42\u884C\u4E3A\u4E0E Picker \u4E00\u81F4\uFF1Aportal \u5230 body\u3001\u8D34\u8FB9\u7FFB\u8F6C\u3001\u70B9\u5916\u5173\u95ED\u3001\u65E0\u906E\u7F69\u3002 */\n.dshpc-dt{position:relative;display:inline-block;font-size:13px;line-height:20px}\n.dshpc-dt__trigger{\n display:inline-flex;align-items:center;justify-content:space-between;gap:6px;\n max-width:100%;height:var(--dshpc-control-h-md);padding:0 8px;\n color:var(--dshpc-fg);background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);cursor:pointer;\n}\n.dshpc-dt__trigger--sm{height:var(--dshpc-control-h-sm);font-size:12px}\n.dshpc-dt__trigger--lg{height:var(--dshpc-control-h-lg)}\n.dshpc-dt__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}\n/* \u7126\u70B9\u4E0E\u57FA\u7840 Input \u5B8C\u5168\u540C\u6B3E\uFF08\u70B9\u51FB\u5373\u84DD\u63CF\u8FB9 + 1px \u5149\u73AF\uFF09\u3002 */\n.dshpc-dt__trigger:focus{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus)}\n.dshpc-dt__trigger-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;font-variant-numeric:tabular-nums}\n.dshpc-dt__trigger-label--empty{color:var(--dshpc-fg-dim)}\n.dshpc-dt__cal{flex:none;color:var(--dshpc-fg-3)}\n/* range \u89E6\u53D1\u5668\uFF1A\u4E00\u4E2A\u6574\u6761\u91CC\u4E24\u4E2A\u65E5\u671F\u533A + \u6837\u5F0F\u753B\u51FA\u6765\u7684\u7070\u9694\u6761\uFF08\u5DE6\u53F3\u4E24\u6761\u7AD6\u8FB9\uFF09\uFF0C\u70B9\u6574\u6761\u90FD\u5C55\u5F00\u3002 */\n/* \u7EC4\u6491\u6EE1\u89E6\u53D1\u5668\u5185\u5BB9\u9AD8\u5EA6\uFF0C\u9694\u6761\u624D\u80FD\u4E0A\u4E0B\u9876\u5230 border\u3002 */\n.dshpc-dt__pair-group{flex:1 1 auto;min-width:0;align-self:stretch;display:flex;align-items:center;gap:8px}\n/* \u4E24\u4E2A\u65E5\u671F\u533A\u5E73\u5206\uFF08flex:1 1 0\uFF09\uFF1A\u5F00\u59CB / \u7ED3\u675F\u6C38\u8FDC\u4E00\u6837\u5BBD\uFF0C\u4E0D\u968F\u5185\u5BB9\u504F\u8892\u3002 */\n.dshpc-dt__pair-date{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}\n.dshpc-dt__pair-date--empty{color:var(--dshpc-fg-dim)}\n/* \u9694\u6761\uFF1A\u4E0A\u4E0B\u9876\u5230\u89E6\u53D1\u5668 border\uFF08\u4E0E\u8FB9\u6846\u8FDE\u8D77\u6765\uFF09\uFF0C\u4E2D\u95F4\u9694\u51FA\u4E00\u5757\uFF1B\u5757\u91CC\u653E\u300C\u5230\u300D\u7684\u7B26\u53F7\uFF08-\uFF0C\u7528\u6237 2026-10-24 \u62CD\u677F\uFF09\u3002 */\n.dshpc-dt__pair-sep{\n flex:none;align-self:stretch;width:22px;margin:0;\n display:inline-flex;align-items:center;justify-content:center;\n background:var(--dshpc-surface-sunken);\n border-left:1px solid var(--dshpc-border);border-right:1px solid var(--dshpc-border);\n color:var(--dshpc-fg-3);font-size:12px;line-height:1;\n}\n/* \u9ED8\u8BA4\u5BBD\uFF1A**\u56FA\u5B9A**\uFF08\u9009\u4E2D\u524D\u540E\u4E0D\u53D8\uFF09\uFF0C\u6570\u503C\u5BF9\u7167\u53C2\u8003\u56FE\u5B9E\u6D4B\uFF082x \u5C4F\uFF0C\u6362\u7B97 CSS px\uFF09\u540E\n \u7EDF\u4E00 -6px\uFF08\u7528\u6237 2026-10-24\uFF1A\u5B9E\u6D4B\u503C\u7559\u5F97\u504F\u591A\uFF09\uFF1A\n \u5355\u503C day 128 / \u65F6\u00B7\u5206 153.2 / \u79D2 174.8\uFF1B\u533A\u95F4 day 269 / \u5206 341.4 / \u79D2 377.6\u3002\n ch = \u5B57\u4F53\u91CC \"0\" \u7684\u5BBD\uFF08\u65E5\u671F tabular-nums \u7B49\u5BBD\uFF09\u21D2 \u5199\u6210 Nch + \u5E38\u6570\uFF1B\u5E38\u6570\u540C\u65F6\u515C\u4F4F\n \u9ED8\u8BA4\u5360\u4F4D\u300C\u8BF7\u9009\u62E9\u65E5\u671F\u65F6\u95F4\u300D\uFF087 \u6C49\u5B57\uFF09\u4E0D\u7701\u7565\u3002\u8C03\u7528\u65B9\u8981\u53E6\u7ED9\u5BBD\uFF1AclassName \u4F20 width\u3002 */\n.dshpc-dt__trigger--w-day{width:calc(10ch + 56px)}\n.dshpc-dt__trigger--w-minute{width:calc(16ch + 38px)}\n.dshpc-dt__trigger--w-second{width:calc(19ch + 38px)}\n.dshpc-dt__trigger--wr-day{width:calc(20ch + 125px)}\n.dshpc-dt__trigger--wr-minute{width:calc(32ch + 111px)}\n.dshpc-dt__trigger--wr-second{width:calc(38ch + 104px)}\n\n/* \u5F39\u5C42\u8868\u9762\u79EF\u5F52 panel.css \u7684 menu \u6863\uFF082026-11-03\uFF09\uFF1A\u8FD9\u91CC\u53EA\u7559\u5C42\u5E8F\u4E0E\u5185\u8DDD\u3002 */\n.dshpc-dt__pop{\n z-index:var(--dshpc-z-popmenu);padding:10px;user-select:none;\n font-size:13px;line-height:20px;\n}\n/* \u4E24\u4E2A\u72EC\u7ACB\u7AEF\u6846\uFF08range\uFF09\uFF1A\u70B9\u54EA\u4E2A\u54EA\u4E2A\u6210\u4E3A\u5F53\u524D\u7F16\u8F91\u7AEF\uFF0C\u4E92\u4E0D\u8054\u52A8\u3001\u53EA\u662F\u6392\u5728\u4E00\u8D77\u3002 */\n.dshpc-dt__ends{display:flex;gap:6px;margin-bottom:8px}\n.dshpc-dt__end{\n flex:1 1 0;min-width:0;display:flex;align-items:center;gap:6px;padding:4px 8px;\n text-align:left;background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border-faint);border-radius:var(--dshpc-radius-sm);cursor:pointer;\n}\n.dshpc-dt__end--active{border-color:var(--dshpc-business);background:var(--dshpc-open-bg)}\n.dshpc-dt__end:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n.dshpc-dt__end-label{flex:none;font-size:11px;line-height:16px;color:var(--dshpc-fg-3);white-space:nowrap}\n.dshpc-dt__end-value{font-size:12px;line-height:18px;color:var(--dshpc-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}\n.dshpc-dt__end-value--empty{color:var(--dshpc-fg-dim)}\n\n.dshpc-dt__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}\n.dshpc-dt__nav-group{display:flex;gap:2px}\n.dshpc-dt__nav-btn{\n display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;\n color:var(--dshpc-fg-2);background:none;border:0;border-radius:var(--dshpc-radius-sm);cursor:pointer;\n}\n.dshpc-dt__nav-btn:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}\n.dshpc-dt__nav-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-1px}\n.dshpc-dt__caption{font-size:13px;font-weight:600;color:var(--dshpc-fg);white-space:nowrap}\n\n.dshpc-dt__grid{display:grid;grid-template-columns:repeat(7,30px);gap:2px}\n.dshpc-dt__wd{height:20px;font-size:11px;line-height:20px;color:var(--dshpc-fg-3);text-align:center}\n.dshpc-dt__cell{\n height:26px;padding:0;font-size:12px;font-variant-numeric:tabular-nums;\n color:var(--dshpc-fg);background:none;border:0;border-radius:var(--dshpc-radius-sm);cursor:pointer;\n}\n.dshpc-dt__cell:hover{background:var(--dshpc-surface-sunken)}\n.dshpc-dt__cell:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-1px}\n.dshpc-dt__cell--out{color:var(--dshpc-fg-dim)}\n.dshpc-dt__cell--today{color:var(--dshpc-business);font-weight:600}\n/* \u8D77 / \u6B62\u7AEF\uFF1A\u54C1\u724C\u84DD\u5B9E\u9762\u53CD\u767D\uFF08\u4E0E Segmented weekday \u9009\u4E2D\u540C\u53E3\u5F84\uFF09\u3002\n \u26A0\uFE0F \u5B57\u8272\u7528\u5E38\u91CF\u767D --dshpc-on-signal\uFF0C\u4E0D\u7528 --dshpc-fg-inverse\uFF1A\u540E\u8005\u8DDF\u5BBF\u4E3B label-primary-foreground\uFF0C\n \u6697\u8272\u4E3B\u9898\u4E0B\u662F\u8FD1\u9ED1 \u21D2 \u84DD\u5E95\u9ED1\u5B57\uFF08\u4E0E Segmented 2026-10-29 \u540C\u4E00\u4E8B\u6545\uFF09\u3002 */\n.dshpc-dt__cell--sel{background:var(--dshpc-business);color:var(--dshpc-on-signal);font-weight:600}\n.dshpc-dt__cell--sel:hover{background:var(--dshpc-business-hover)}\n\n/* \u4E24\u5757\u65E5\u5386\u9762\u677F\uFF08range\uFF1A\u5DE6\u5F00\u59CB\u3001\u53F3\u7ED3\u675F\uFF0C\u5404\u9009\u5404\u7684\uFF09\u3002 */\n.dshpc-dt__panels{display:flex;gap:14px;align-items:flex-start}\n.dshpc-dt__panel{display:flex;flex-direction:column;gap:6px}\n\n.dshpc-dt__time{display:flex;align-items:flex-end;justify-content:center;gap:4px;margin-top:2px;padding-top:8px;border-top:1px solid var(--dshpc-border-faint)}\n.dshpc-dt__unit{display:flex;flex-direction:column;align-items:center;gap:2px}\n.dshpc-dt__unit-label{font-size:10px;line-height:14px;color:var(--dshpc-fg-3)}\n.dshpc-dt__step-btn{\n display:inline-flex;align-items:center;justify-content:center;width:34px;height:14px;padding:0;\n color:var(--dshpc-fg-2);background:none;border:0;border-radius:var(--dshpc-radius-sm);cursor:pointer;\n}\n.dshpc-dt__step-btn:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}\n.dshpc-dt__step-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-1px}\n.dshpc-dt__step-val{\n width:34px;height:24px;padding:0;box-sizing:border-box;text-align:center;\n font-size:13px;font-variant-numeric:tabular-nums;color:var(--dshpc-fg);\n background:var(--dshpc-surface-sunken);border:1px solid var(--dshpc-border-faint);\n border-radius:var(--dshpc-radius-sm);outline:none;\n}\n.dshpc-dt__step-val:focus{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus)}\n.dshpc-dt__step-val:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}\n.dshpc-dt__sep{padding-bottom:5px;color:var(--dshpc-fg-3);font-size:12px}\n\n.dshpc-dt__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--dshpc-border-faint)}\n.dshpc-dt__foot-side{display:flex;align-items:center;gap:6px}\n.dshpc-dt__warn{font-size:11px;color:var(--dshpc-warning-label);white-space:nowrap}\n";
2
+ //# sourceMappingURL=datetime-css.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/datetime-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,47SAA4gO,CAAA"}
@@ -0,0 +1,4 @@
1
+ // ⚠️ 生成物,勿手改。真源 = src/ui/inputs/datetime.css
2
+ // 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
3
+ export const DATETIME_CSS = "/* 日期时间选择器(DateTimePicker)。类名 dshpc-dt-*;配色只吃 token,明暗随 token 切换。\n 结构:触发器(range = 一个整条:两个日期区 + 样式画的灰隔条;single = 单日期)→ 浮层\n (两个独立端框 + 两块独立日历 + 底部动作)。\n 浮层行为与 Picker 一致:portal 到 body、贴边翻转、点外关闭、无遮罩。 */\n.dshpc-dt{position:relative;display:inline-block;font-size:13px;line-height:20px}\n.dshpc-dt__trigger{\n display:inline-flex;align-items:center;justify-content:space-between;gap:6px;\n max-width:100%;height:var(--dshpc-control-h-md);padding:0 8px;\n color:var(--dshpc-fg);background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);cursor:pointer;\n}\n.dshpc-dt__trigger--sm{height:var(--dshpc-control-h-sm);font-size:12px}\n.dshpc-dt__trigger--lg{height:var(--dshpc-control-h-lg)}\n.dshpc-dt__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}\n/* 焦点与基础 Input 完全同款(点击即蓝描边 + 1px 光环)。 */\n.dshpc-dt__trigger:focus{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus)}\n.dshpc-dt__trigger-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;font-variant-numeric:tabular-nums}\n.dshpc-dt__trigger-label--empty{color:var(--dshpc-fg-dim)}\n.dshpc-dt__cal{flex:none;color:var(--dshpc-fg-3)}\n/* range 触发器:一个整条里两个日期区 + 样式画出来的灰隔条(左右两条竖边),点整条都展开。 */\n/* 组撑满触发器内容高度,隔条才能上下顶到 border。 */\n.dshpc-dt__pair-group{flex:1 1 auto;min-width:0;align-self:stretch;display:flex;align-items:center;gap:8px}\n/* 两个日期区平分(flex:1 1 0):开始 / 结束永远一样宽,不随内容偏袒。 */\n.dshpc-dt__pair-date{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}\n.dshpc-dt__pair-date--empty{color:var(--dshpc-fg-dim)}\n/* 隔条:上下顶到触发器 border(与边框连起来),中间隔出一块;块里放「到」的符号(-,用户 2026-10-24 拍板)。 */\n.dshpc-dt__pair-sep{\n flex:none;align-self:stretch;width:22px;margin:0;\n display:inline-flex;align-items:center;justify-content:center;\n background:var(--dshpc-surface-sunken);\n border-left:1px solid var(--dshpc-border);border-right:1px solid var(--dshpc-border);\n color:var(--dshpc-fg-3);font-size:12px;line-height:1;\n}\n/* 默认宽:**固定**(选中前后不变),数值对照参考图实测(2x 屏,换算 CSS px)后\n 统一 -6px(用户 2026-10-24:实测值留得偏多):\n 单值 day 128 / 时·分 153.2 / 秒 174.8;区间 day 269 / 分 341.4 / 秒 377.6。\n ch = 字体里 \"0\" 的宽(日期 tabular-nums 等宽)⇒ 写成 Nch + 常数;常数同时兜住\n 默认占位「请选择日期时间」(7 汉字)不省略。调用方要另给宽:className 传 width。 */\n.dshpc-dt__trigger--w-day{width:calc(10ch + 56px)}\n.dshpc-dt__trigger--w-minute{width:calc(16ch + 38px)}\n.dshpc-dt__trigger--w-second{width:calc(19ch + 38px)}\n.dshpc-dt__trigger--wr-day{width:calc(20ch + 125px)}\n.dshpc-dt__trigger--wr-minute{width:calc(32ch + 111px)}\n.dshpc-dt__trigger--wr-second{width:calc(38ch + 104px)}\n\n/* 弹层表面积归 panel.css 的 menu 档(2026-11-03):这里只留层序与内距。 */\n.dshpc-dt__pop{\n z-index:var(--dshpc-z-popmenu);padding:10px;user-select:none;\n font-size:13px;line-height:20px;\n}\n/* 两个独立端框(range):点哪个哪个成为当前编辑端,互不联动、只是排在一起。 */\n.dshpc-dt__ends{display:flex;gap:6px;margin-bottom:8px}\n.dshpc-dt__end{\n flex:1 1 0;min-width:0;display:flex;align-items:center;gap:6px;padding:4px 8px;\n text-align:left;background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border-faint);border-radius:var(--dshpc-radius-sm);cursor:pointer;\n}\n.dshpc-dt__end--active{border-color:var(--dshpc-business);background:var(--dshpc-open-bg)}\n.dshpc-dt__end:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n.dshpc-dt__end-label{flex:none;font-size:11px;line-height:16px;color:var(--dshpc-fg-3);white-space:nowrap}\n.dshpc-dt__end-value{font-size:12px;line-height:18px;color:var(--dshpc-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}\n.dshpc-dt__end-value--empty{color:var(--dshpc-fg-dim)}\n\n.dshpc-dt__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}\n.dshpc-dt__nav-group{display:flex;gap:2px}\n.dshpc-dt__nav-btn{\n display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;\n color:var(--dshpc-fg-2);background:none;border:0;border-radius:var(--dshpc-radius-sm);cursor:pointer;\n}\n.dshpc-dt__nav-btn:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}\n.dshpc-dt__nav-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-1px}\n.dshpc-dt__caption{font-size:13px;font-weight:600;color:var(--dshpc-fg);white-space:nowrap}\n\n.dshpc-dt__grid{display:grid;grid-template-columns:repeat(7,30px);gap:2px}\n.dshpc-dt__wd{height:20px;font-size:11px;line-height:20px;color:var(--dshpc-fg-3);text-align:center}\n.dshpc-dt__cell{\n height:26px;padding:0;font-size:12px;font-variant-numeric:tabular-nums;\n color:var(--dshpc-fg);background:none;border:0;border-radius:var(--dshpc-radius-sm);cursor:pointer;\n}\n.dshpc-dt__cell:hover{background:var(--dshpc-surface-sunken)}\n.dshpc-dt__cell:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-1px}\n.dshpc-dt__cell--out{color:var(--dshpc-fg-dim)}\n.dshpc-dt__cell--today{color:var(--dshpc-business);font-weight:600}\n/* 起 / 止端:品牌蓝实面反白(与 Segmented weekday 选中同口径)。\n ⚠️ 字色用常量白 --dshpc-on-signal,不用 --dshpc-fg-inverse:后者跟宿主 label-primary-foreground,\n 暗色主题下是近黑 ⇒ 蓝底黑字(与 Segmented 2026-10-29 同一事故)。 */\n.dshpc-dt__cell--sel{background:var(--dshpc-business);color:var(--dshpc-on-signal);font-weight:600}\n.dshpc-dt__cell--sel:hover{background:var(--dshpc-business-hover)}\n\n/* 两块日历面板(range:左开始、右结束,各选各的)。 */\n.dshpc-dt__panels{display:flex;gap:14px;align-items:flex-start}\n.dshpc-dt__panel{display:flex;flex-direction:column;gap:6px}\n\n.dshpc-dt__time{display:flex;align-items:flex-end;justify-content:center;gap:4px;margin-top:2px;padding-top:8px;border-top:1px solid var(--dshpc-border-faint)}\n.dshpc-dt__unit{display:flex;flex-direction:column;align-items:center;gap:2px}\n.dshpc-dt__unit-label{font-size:10px;line-height:14px;color:var(--dshpc-fg-3)}\n.dshpc-dt__step-btn{\n display:inline-flex;align-items:center;justify-content:center;width:34px;height:14px;padding:0;\n color:var(--dshpc-fg-2);background:none;border:0;border-radius:var(--dshpc-radius-sm);cursor:pointer;\n}\n.dshpc-dt__step-btn:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}\n.dshpc-dt__step-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-1px}\n.dshpc-dt__step-val{\n width:34px;height:24px;padding:0;box-sizing:border-box;text-align:center;\n font-size:13px;font-variant-numeric:tabular-nums;color:var(--dshpc-fg);\n background:var(--dshpc-surface-sunken);border:1px solid var(--dshpc-border-faint);\n border-radius:var(--dshpc-radius-sm);outline:none;\n}\n.dshpc-dt__step-val:focus{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus)}\n.dshpc-dt__step-val:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}\n.dshpc-dt__sep{padding-bottom:5px;color:var(--dshpc-fg-3);font-size:12px}\n\n.dshpc-dt__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--dshpc-border-faint)}\n.dshpc-dt__foot-side{display:flex;align-items:center;gap:6px}\n.dshpc-dt__warn{font-size:11px;color:var(--dshpc-warning-label);white-space:nowrap}\n";
4
+ //# sourceMappingURL=datetime-css.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime-css.generated.js","sourceRoot":"","sources":["../../../src/ui/inputs/datetime-css.generated.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qEAAqE;AACrE,MAAM,CAAC,MAAM,YAAY,GAAG,ygOAAygO,CAAA"}
@@ -0,0 +1,102 @@
1
+ /** 时间精度:day 只选日期;hour / minute / second 依次多一级时间选择。 */
2
+ export type DateTimePrecision = 'day' | 'hour' | 'minute' | 'second';
3
+ /** 本地时区的日期时间各部分(毫秒单独存:结束端补全需要 .999)。 */
4
+ export interface DateTimeParts {
5
+ year: number;
6
+ month: number;
7
+ day: number;
8
+ hour: number;
9
+ minute: number;
10
+ second: number;
11
+ ms: number;
12
+ }
13
+ /** 月历网格中的一格。 */
14
+ export interface DayCell {
15
+ /** `YYYY-MM-DD`(本地日历日,用于比对 / 回填)。 */
16
+ iso: string;
17
+ year: number;
18
+ month: number;
19
+ day: number;
20
+ /** 是否属于当前展示月(false = 前后月的补位格)。 */
21
+ inMonth: boolean;
22
+ /** 0 = 周一 … 6 = 周日(周一起排)。 */
23
+ weekday: number;
24
+ }
25
+ /** 时 / 分 / 秒三个步进列。 */
26
+ export type StepUnit = 'hour' | 'minute' | 'second';
27
+ /** 日历端选中的日期(可空:时间允许先于日期选,「确定」时才算账)。 */
28
+ export interface DayRef {
29
+ year: number;
30
+ month: number;
31
+ day: number;
32
+ }
33
+ /** 时间部分恒存在(默认零);没选日期时步进照样能调。 */
34
+ export interface TimeParts {
35
+ hour: number;
36
+ minute: number;
37
+ second: number;
38
+ ms: number;
39
+ }
40
+ /** 一端的草稿:日期(可空)+ 时间(恒存在)。 */
41
+ export interface EndDraft {
42
+ day: DayRef | null;
43
+ time: TimeParts;
44
+ }
45
+ /**
46
+ * 本地 ISO(`YYYY-MM-DDTHH:mm:ss.SSS`,无时区后缀)→ 各部分。
47
+ * 不存在的日期(2026-02-30 / 2026-13-01)经 Date 反向校验后返回 null。
48
+ */
49
+ export declare function parseDateTime(iso: string): DateTimeParts | null;
50
+ /**
51
+ * 各部分 → 本地 ISO。毫秒恒三位:数据库若只收「到秒」,`23:59:59.999` 被截成
52
+ * `23:59:59` 仍是当天最后一秒,语义不坏(优雅降级,调用方无需特殊处理)。
53
+ */
54
+ export declare function formatDateTimeIso(p: DateTimeParts): string;
55
+ /** 各部分 → 本地毫秒时间戳(仅用于比较,不涉及时区换算)。 */
56
+ export declare function partsToMs(p: DateTimeParts): number;
57
+ /** 本地毫秒时间戳 → 各部分。 */
58
+ export declare function msToParts(ms: number): DateTimeParts;
59
+ /** 当前时刻。 */
60
+ export declare function nowParts(): DateTimeParts;
61
+ /** 本地 ISO → 一端草稿(日期 / 时间分离);解析失败或空 ⇒ 日期为空、时间归零。 */
62
+ export declare function toEndDraft(iso: string | null | undefined): EndDraft;
63
+ /** 一端草稿 → 完整时刻;**没选日期 ⇒ null**(调用方据此不传数据)。 */
64
+ export declare function partsOf(e: EndDraft): DateTimeParts | null;
65
+ /**
66
+ * 「现在」按钮的时间部分:按精度截断(day ⇒ 全零;hour ⇒ H:00:00;
67
+ * minute ⇒ H:M:00;second ⇒ 完整当前时刻)。
68
+ */
69
+ export declare function nowTimeFor(precision: DateTimePrecision): TimeParts;
70
+ /**
71
+ * 起始端补全:未选的时间单位归零。
72
+ * day ⇒ `00:00:00.000`;hour ⇒ `H:00:00.000`;minute ⇒ `H:M:00.000`;second ⇒ ms 归零。
73
+ */
74
+ export declare function floorToPrecision(p: DateTimeParts, precision: DateTimePrecision): DateTimeParts;
75
+ /**
76
+ * 结束端补全:未选的时间单位拉到最大。
77
+ * day ⇒ `23:59:59.999`;hour ⇒ `H:59:59.999`;minute ⇒ `H:M:59.999`;
78
+ * second ⇒ 精确值不动(用户显式选到秒,不猜)。
79
+ */
80
+ export declare function ceilToPrecision(p: DateTimeParts, precision: DateTimePrecision): DateTimeParts;
81
+ /**
82
+ * 6×7 固定月历网格,周一起排;补位格给真实日期并标 `inMonth: false`。
83
+ * 42 格恒定 ⇒ 弹层高度不随月份跳动。
84
+ */
85
+ export declare function buildMonthCells(year: number, month: number): DayCell[];
86
+ /** 月历标题:zh `2026年10月`;en `October 2026`。 */
87
+ export declare function monthCaption(year: number, month: number, locale: 'zh' | 'en'): string;
88
+ /** 星期表头(周一起排)。 */
89
+ export declare function weekdayLabels(locale: 'zh' | 'en'): readonly string[];
90
+ /** 日月格的无障碍标题:zh `2026年11月3日`;en `Tue, 2026-11-03`。 */
91
+ export declare function dayCaption(cell: DayCell, locale: 'zh' | 'en'): string;
92
+ /** 步进 ±1 循环(23→0、59→0):免去用户点 60 次选分钟。 */
93
+ export declare function stepUnit(value: number, unit: StepUnit, delta: number): number;
94
+ /** 步进列的上限(hour 23 / minute 59 / second 59)。 */
95
+ export declare function stepMax(unit: StepUnit): number;
96
+ /** 把键入 / 滚轮得到的原始值收进合法范围(NaN 归 0)。 */
97
+ export declare function clampUnit(value: number, unit: StepUnit): number;
98
+ /** 时间段是否成立(起 ≤ 止;任一端解析失败 ⇒ 不成立)。 */
99
+ export declare function rangeIsValid(startIso: string, endIso: string): boolean;
100
+ /** 两个时刻是否同一本地日历日。 */
101
+ export declare function sameLocalDay(a: DateTimeParts, b: DateTimeParts): boolean;
102
+ //# sourceMappingURL=datetime-logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime-logic.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/datetime-logic.ts"],"names":[],"mappings":"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"}