dsh-plugin-core 0.32.0 → 0.33.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 (632) hide show
  1. package/dist/adv/explorer/FileBrowser.d.ts +58 -0
  2. package/dist/adv/explorer/FileBrowser.d.ts.map +1 -0
  3. package/dist/adv/explorer/FileBrowser.js +632 -0
  4. package/dist/adv/explorer/FileBrowser.js.map +1 -0
  5. package/dist/adv/explorer/crumb-nav.d.ts +45 -0
  6. package/dist/adv/explorer/crumb-nav.d.ts.map +1 -0
  7. package/dist/adv/explorer/crumb-nav.js +78 -0
  8. package/dist/adv/explorer/crumb-nav.js.map +1 -0
  9. package/dist/adv/explorer/crumbs-menu.d.ts +37 -0
  10. package/dist/adv/explorer/crumbs-menu.d.ts.map +1 -0
  11. package/dist/adv/explorer/crumbs-menu.js +102 -0
  12. package/dist/adv/explorer/crumbs-menu.js.map +1 -0
  13. package/dist/adv/explorer/explorer-css.d.ts +2 -0
  14. package/dist/adv/explorer/explorer-css.d.ts.map +1 -0
  15. package/dist/adv/explorer/explorer-css.generated.d.ts +2 -0
  16. package/dist/adv/explorer/explorer-css.generated.d.ts.map +1 -0
  17. package/dist/adv/explorer/explorer-css.generated.js +4 -0
  18. package/dist/adv/explorer/explorer-css.generated.js.map +1 -0
  19. package/dist/adv/explorer/explorer-css.js +3 -0
  20. package/dist/adv/explorer/explorer-css.js.map +1 -0
  21. package/dist/adv/explorer/fs-face.d.ts +36 -0
  22. package/dist/adv/explorer/fs-face.d.ts.map +1 -0
  23. package/dist/adv/explorer/fs-face.js +74 -0
  24. package/dist/adv/explorer/fs-face.js.map +1 -0
  25. package/dist/adv/explorer/index.d.ts +6 -0
  26. package/dist/adv/explorer/index.d.ts.map +1 -0
  27. package/dist/adv/explorer/index.js +6 -0
  28. package/dist/adv/explorer/index.js.map +1 -0
  29. package/dist/adv/explorer/landing.d.ts +26 -0
  30. package/dist/adv/explorer/landing.d.ts.map +1 -0
  31. package/dist/adv/explorer/landing.js +43 -0
  32. package/dist/adv/explorer/landing.js.map +1 -0
  33. package/dist/adv/explorer/open.d.ts +137 -0
  34. package/dist/adv/explorer/open.d.ts.map +1 -0
  35. package/dist/adv/explorer/open.js +350 -0
  36. package/dist/adv/explorer/open.js.map +1 -0
  37. package/dist/adv/explorer/picker-placement.d.ts +69 -0
  38. package/dist/adv/explorer/picker-placement.d.ts.map +1 -0
  39. package/dist/adv/explorer/picker-placement.js +122 -0
  40. package/dist/adv/explorer/picker-placement.js.map +1 -0
  41. package/dist/adv/explorer/preview/BytesPreview.d.ts +12 -0
  42. package/dist/adv/explorer/preview/BytesPreview.d.ts.map +1 -0
  43. package/dist/adv/explorer/preview/BytesPreview.js +60 -0
  44. package/dist/adv/explorer/preview/BytesPreview.js.map +1 -0
  45. package/dist/adv/explorer/preview/HtmlPreview.d.ts +17 -0
  46. package/dist/adv/explorer/preview/HtmlPreview.d.ts.map +1 -0
  47. package/dist/adv/explorer/preview/HtmlPreview.js +113 -0
  48. package/dist/adv/explorer/preview/HtmlPreview.js.map +1 -0
  49. package/dist/adv/explorer/preview/OfficePreview.d.ts +12 -0
  50. package/dist/adv/explorer/preview/OfficePreview.d.ts.map +1 -0
  51. package/dist/adv/explorer/preview/OfficePreview.js +63 -0
  52. package/dist/adv/explorer/preview/OfficePreview.js.map +1 -0
  53. package/dist/adv/explorer/preview/TextPreview.d.ts +18 -0
  54. package/dist/adv/explorer/preview/TextPreview.d.ts.map +1 -0
  55. package/dist/adv/explorer/preview/TextPreview.js +122 -0
  56. package/dist/adv/explorer/preview/TextPreview.js.map +1 -0
  57. package/dist/adv/explorer/preview/index.d.ts +24 -0
  58. package/dist/adv/explorer/preview/index.d.ts.map +1 -0
  59. package/dist/adv/explorer/preview/index.js +58 -0
  60. package/dist/adv/explorer/preview/index.js.map +1 -0
  61. package/dist/adv/explorer/preview/md-labels.d.ts +3 -0
  62. package/dist/adv/explorer/preview/md-labels.d.ts.map +1 -0
  63. package/dist/adv/explorer/preview/md-labels.js +12 -0
  64. package/dist/adv/explorer/preview/md-labels.js.map +1 -0
  65. package/dist/adv/explorer/preview-title-bar.d.ts +26 -0
  66. package/dist/adv/explorer/preview-title-bar.d.ts.map +1 -0
  67. package/dist/adv/explorer/preview-title-bar.js +48 -0
  68. package/dist/adv/explorer/preview-title-bar.js.map +1 -0
  69. package/dist/adv/explorer/types.d.ts +259 -0
  70. package/dist/adv/explorer/types.d.ts.map +1 -0
  71. package/dist/adv/explorer/types.js +379 -0
  72. package/dist/adv/explorer/types.js.map +1 -0
  73. package/dist/adv/session/SessionViewModal.d.ts +37 -0
  74. package/dist/adv/session/SessionViewModal.d.ts.map +1 -0
  75. package/dist/adv/session/SessionViewModal.js +1133 -0
  76. package/dist/adv/session/SessionViewModal.js.map +1 -0
  77. package/dist/adv/session/changes.d.ts +73 -0
  78. package/dist/adv/session/changes.d.ts.map +1 -0
  79. package/dist/adv/session/changes.js +134 -0
  80. package/dist/adv/session/changes.js.map +1 -0
  81. package/dist/adv/session/faces.d.ts +244 -0
  82. package/dist/adv/session/faces.d.ts.map +1 -0
  83. package/dist/adv/session/faces.js +17 -0
  84. package/dist/adv/session/faces.js.map +1 -0
  85. package/dist/adv/session/index.d.ts +7 -0
  86. package/dist/adv/session/index.d.ts.map +1 -0
  87. package/dist/adv/session/index.js +27 -0
  88. package/dist/adv/session/index.js.map +1 -0
  89. package/dist/adv/session/mirror/AskCard.d.ts +35 -0
  90. package/dist/adv/session/mirror/AskCard.d.ts.map +1 -0
  91. package/dist/adv/session/mirror/AskCard.js +131 -0
  92. package/dist/adv/session/mirror/AskCard.js.map +1 -0
  93. package/dist/adv/session/mirror/BashRow.d.ts +14 -0
  94. package/dist/adv/session/mirror/BashRow.d.ts.map +1 -0
  95. package/dist/adv/session/mirror/BashRow.js +143 -0
  96. package/dist/adv/session/mirror/BashRow.js.map +1 -0
  97. package/dist/adv/session/mirror/ChangedFileDiff.d.ts +25 -0
  98. package/dist/adv/session/mirror/ChangedFileDiff.d.ts.map +1 -0
  99. package/dist/adv/session/mirror/ChangedFileDiff.js +178 -0
  100. package/dist/adv/session/mirror/ChangedFileDiff.js.map +1 -0
  101. package/dist/adv/session/mirror/ChangedFilesCard.d.ts +18 -0
  102. package/dist/adv/session/mirror/ChangedFilesCard.d.ts.map +1 -0
  103. package/dist/adv/session/mirror/ChangedFilesCard.js +165 -0
  104. package/dist/adv/session/mirror/ChangedFilesCard.js.map +1 -0
  105. package/dist/adv/session/mirror/ChatGroupSeat.d.ts +24 -0
  106. package/dist/adv/session/mirror/ChatGroupSeat.d.ts.map +1 -0
  107. package/dist/adv/session/mirror/ChatGroupSeat.js +135 -0
  108. package/dist/adv/session/mirror/ChatGroupSeat.js.map +1 -0
  109. package/dist/adv/session/mirror/ChatNodeSeat.d.ts +43 -0
  110. package/dist/adv/session/mirror/ChatNodeSeat.d.ts.map +1 -0
  111. package/dist/adv/session/mirror/ChatNodeSeat.js +133 -0
  112. package/dist/adv/session/mirror/ChatNodeSeat.js.map +1 -0
  113. package/dist/adv/session/mirror/ChatView.d.ts +47 -0
  114. package/dist/adv/session/mirror/ChatView.d.ts.map +1 -0
  115. package/dist/adv/session/mirror/ChatView.js +138 -0
  116. package/dist/adv/session/mirror/ChatView.js.map +1 -0
  117. package/dist/adv/session/mirror/CommandCard.d.ts +20 -0
  118. package/dist/adv/session/mirror/CommandCard.d.ts.map +1 -0
  119. package/dist/adv/session/mirror/CommandCard.js +69 -0
  120. package/dist/adv/session/mirror/CommandCard.js.map +1 -0
  121. package/dist/adv/session/mirror/ContextInjectionRow.d.ts +18 -0
  122. package/dist/adv/session/mirror/ContextInjectionRow.d.ts.map +1 -0
  123. package/dist/adv/session/mirror/ContextInjectionRow.js +50 -0
  124. package/dist/adv/session/mirror/ContextInjectionRow.js.map +1 -0
  125. package/dist/adv/session/mirror/Deliverables.d.ts +24 -0
  126. package/dist/adv/session/mirror/Deliverables.d.ts.map +1 -0
  127. package/dist/adv/session/mirror/Deliverables.js +175 -0
  128. package/dist/adv/session/mirror/Deliverables.js.map +1 -0
  129. package/dist/adv/session/mirror/GenericCommandCard.d.ts +136 -0
  130. package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -0
  131. package/dist/adv/session/mirror/GenericCommandCard.js +948 -0
  132. package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -0
  133. package/dist/adv/session/mirror/MessageIconActions.d.ts +16 -0
  134. package/dist/adv/session/mirror/MessageIconActions.d.ts.map +1 -0
  135. package/dist/adv/session/mirror/MessageIconActions.js +69 -0
  136. package/dist/adv/session/mirror/MessageIconActions.js.map +1 -0
  137. package/dist/adv/session/mirror/MessageItem.d.ts +93 -0
  138. package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -0
  139. package/dist/adv/session/mirror/MessageItem.js +194 -0
  140. package/dist/adv/session/mirror/MessageItem.js.map +1 -0
  141. package/dist/adv/session/mirror/ReasoningRow.d.ts +11 -0
  142. package/dist/adv/session/mirror/ReasoningRow.d.ts.map +1 -0
  143. package/dist/adv/session/mirror/ReasoningRow.js +111 -0
  144. package/dist/adv/session/mirror/ReasoningRow.js.map +1 -0
  145. package/dist/adv/session/mirror/RunningStatus.d.ts +12 -0
  146. package/dist/adv/session/mirror/RunningStatus.d.ts.map +1 -0
  147. package/dist/adv/session/mirror/RunningStatus.js +57 -0
  148. package/dist/adv/session/mirror/RunningStatus.js.map +1 -0
  149. package/dist/adv/session/mirror/StatDialog.d.ts +20 -0
  150. package/dist/adv/session/mirror/StatDialog.d.ts.map +1 -0
  151. package/dist/adv/session/mirror/StatDialog.js +49 -0
  152. package/dist/adv/session/mirror/StatDialog.js.map +1 -0
  153. package/dist/adv/session/mirror/ToolDetails.d.ts +65 -0
  154. package/dist/adv/session/mirror/ToolDetails.d.ts.map +1 -0
  155. package/dist/adv/session/mirror/ToolDetails.js +268 -0
  156. package/dist/adv/session/mirror/ToolDetails.js.map +1 -0
  157. package/dist/adv/session/mirror/TurnProcessNodeView.d.ts +10 -0
  158. package/dist/adv/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
  159. package/dist/adv/session/mirror/TurnProcessNodeView.js +57 -0
  160. package/dist/adv/session/mirror/TurnProcessNodeView.js.map +1 -0
  161. package/dist/adv/session/mirror/TurnTailNodeView.d.ts +57 -0
  162. package/dist/adv/session/mirror/TurnTailNodeView.d.ts.map +1 -0
  163. package/dist/adv/session/mirror/TurnTailNodeView.js +106 -0
  164. package/dist/adv/session/mirror/TurnTailNodeView.js.map +1 -0
  165. package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts +16 -0
  166. package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
  167. package/dist/adv/session/mirror/TurnTriggerNodeView.js +103 -0
  168. package/dist/adv/session/mirror/TurnTriggerNodeView.js.map +1 -0
  169. package/dist/adv/session/mirror/TurnUsagePanel.d.ts +21 -0
  170. package/dist/adv/session/mirror/TurnUsagePanel.d.ts.map +1 -0
  171. package/dist/adv/session/mirror/TurnUsagePanel.js +41 -0
  172. package/dist/adv/session/mirror/TurnUsagePanel.js.map +1 -0
  173. package/dist/adv/session/mirror/control-details.d.ts +9 -0
  174. package/dist/adv/session/mirror/control-details.d.ts.map +1 -0
  175. package/dist/adv/session/mirror/control-details.js +549 -0
  176. package/dist/adv/session/mirror/control-details.js.map +1 -0
  177. package/dist/adv/session/mirror/detail-i18n.d.ts +4 -0
  178. package/dist/adv/session/mirror/detail-i18n.d.ts.map +1 -0
  179. package/dist/adv/session/mirror/detail-i18n.js +153 -0
  180. package/dist/adv/session/mirror/detail-i18n.js.map +1 -0
  181. package/dist/adv/session/mirror/message-chrome.d.ts +39 -0
  182. package/dist/adv/session/mirror/message-chrome.d.ts.map +1 -0
  183. package/dist/adv/session/mirror/message-chrome.js +153 -0
  184. package/dist/adv/session/mirror/message-chrome.js.map +1 -0
  185. package/dist/adv/session/mirror/process-groups.d.ts +56 -0
  186. package/dist/adv/session/mirror/process-groups.d.ts.map +1 -0
  187. package/dist/adv/session/mirror/process-groups.js +204 -0
  188. package/dist/adv/session/mirror/process-groups.js.map +1 -0
  189. package/dist/adv/session/official-classes.d.ts +28 -0
  190. package/dist/adv/session/official-classes.d.ts.map +1 -0
  191. package/dist/adv/session/official-classes.js +152 -0
  192. package/dist/adv/session/official-classes.js.map +1 -0
  193. package/dist/adv/session/open-review.d.ts +13 -0
  194. package/dist/adv/session/open-review.d.ts.map +1 -0
  195. package/dist/adv/session/open-review.js +32 -0
  196. package/dist/adv/session/open-review.js.map +1 -0
  197. package/dist/adv/session/open-session-view.d.ts +19 -0
  198. package/dist/adv/session/open-session-view.d.ts.map +1 -0
  199. package/dist/adv/session/open-session-view.js +147 -0
  200. package/dist/adv/session/open-session-view.js.map +1 -0
  201. package/dist/adv/session/pending-inputs.d.ts +33 -0
  202. package/dist/adv/session/pending-inputs.d.ts.map +1 -0
  203. package/dist/adv/session/pending-inputs.js +130 -0
  204. package/dist/adv/session/pending-inputs.js.map +1 -0
  205. package/dist/adv/session/session-css.d.ts +2 -0
  206. package/dist/adv/session/session-css.d.ts.map +1 -0
  207. package/dist/adv/session/session-css.generated.d.ts +2 -0
  208. package/dist/adv/session/session-css.generated.d.ts.map +1 -0
  209. package/dist/adv/session/session-css.generated.js +4 -0
  210. package/dist/adv/session/session-css.generated.js.map +1 -0
  211. package/dist/adv/session/session-css.js +3 -0
  212. package/dist/adv/session/session-css.js.map +1 -0
  213. package/dist/adv/session/tail-follow.d.ts +29 -0
  214. package/dist/adv/session/tail-follow.d.ts.map +1 -0
  215. package/dist/adv/session/tail-follow.js +106 -0
  216. package/dist/adv/session/tail-follow.js.map +1 -0
  217. package/dist/ui/actions/Button.d.ts +102 -0
  218. package/dist/ui/actions/Button.d.ts.map +1 -0
  219. package/dist/ui/actions/Button.js +233 -0
  220. package/dist/ui/actions/Button.js.map +1 -0
  221. package/dist/ui/actions/button-css.generated.d.ts +2 -0
  222. package/dist/ui/actions/button-css.generated.d.ts.map +1 -0
  223. package/dist/ui/actions/button-css.generated.js +4 -0
  224. package/dist/ui/actions/button-css.generated.js.map +1 -0
  225. package/dist/ui/display/Card.d.ts +65 -0
  226. package/dist/ui/display/Card.d.ts.map +1 -0
  227. package/dist/ui/display/Card.js +109 -0
  228. package/dist/ui/display/Card.js.map +1 -0
  229. package/dist/ui/display/Chip.d.ts +28 -0
  230. package/dist/ui/display/Chip.d.ts.map +1 -0
  231. package/dist/ui/display/Chip.js +36 -0
  232. package/dist/ui/display/Chip.js.map +1 -0
  233. package/dist/ui/display/CodeViewer.d.ts +38 -0
  234. package/dist/ui/display/CodeViewer.d.ts.map +1 -0
  235. package/dist/ui/display/CodeViewer.js +107 -0
  236. package/dist/ui/display/CodeViewer.js.map +1 -0
  237. package/dist/ui/display/FieldHint.d.ts +18 -0
  238. package/dist/ui/display/FieldHint.d.ts.map +1 -0
  239. package/dist/ui/display/FieldHint.js +40 -0
  240. package/dist/ui/display/FieldHint.js.map +1 -0
  241. package/dist/ui/display/FlipText.d.ts +43 -0
  242. package/dist/ui/display/FlipText.d.ts.map +1 -0
  243. package/dist/ui/display/FlipText.js +59 -0
  244. package/dist/ui/display/FlipText.js.map +1 -0
  245. package/dist/ui/display/LiveText.d.ts +13 -0
  246. package/dist/ui/display/LiveText.d.ts.map +1 -0
  247. package/dist/ui/display/LiveText.js +19 -0
  248. package/dist/ui/display/LiveText.js.map +1 -0
  249. package/dist/ui/display/MarqueeText.d.ts +22 -0
  250. package/dist/ui/display/MarqueeText.d.ts.map +1 -0
  251. package/dist/ui/display/MarqueeText.js +52 -0
  252. package/dist/ui/display/MarqueeText.js.map +1 -0
  253. package/dist/ui/display/SectionHead.d.ts +35 -0
  254. package/dist/ui/display/SectionHead.d.ts.map +1 -0
  255. package/dist/ui/display/SectionHead.js +45 -0
  256. package/dist/ui/display/SectionHead.js.map +1 -0
  257. package/dist/ui/display/Surface.d.ts +43 -0
  258. package/dist/ui/display/Surface.d.ts.map +1 -0
  259. package/dist/ui/display/Surface.js +39 -0
  260. package/dist/ui/display/Surface.js.map +1 -0
  261. package/dist/ui/display/Table.d.ts +30 -0
  262. package/dist/ui/display/Table.d.ts.map +1 -0
  263. package/dist/ui/display/Table.js +96 -0
  264. package/dist/ui/display/Table.js.map +1 -0
  265. package/dist/ui/display/card-css.d.ts +2 -0
  266. package/dist/ui/display/card-css.d.ts.map +1 -0
  267. package/dist/ui/display/card-css.generated.d.ts +2 -0
  268. package/dist/ui/display/card-css.generated.d.ts.map +1 -0
  269. package/dist/ui/display/card-css.generated.js +4 -0
  270. package/dist/ui/display/card-css.generated.js.map +1 -0
  271. package/dist/ui/display/card-css.js +5 -0
  272. package/dist/ui/display/card-css.js.map +1 -0
  273. package/dist/ui/display/chip-css.d.ts +2 -0
  274. package/dist/ui/display/chip-css.d.ts.map +1 -0
  275. package/dist/ui/display/chip-css.generated.d.ts +2 -0
  276. package/dist/ui/display/chip-css.generated.d.ts.map +1 -0
  277. package/dist/ui/display/chip-css.generated.js +4 -0
  278. package/dist/ui/display/chip-css.generated.js.map +1 -0
  279. package/dist/ui/display/chip-css.js +12 -0
  280. package/dist/ui/display/chip-css.js.map +1 -0
  281. package/dist/ui/display/code-viewer-css.d.ts +2 -0
  282. package/dist/ui/display/code-viewer-css.d.ts.map +1 -0
  283. package/dist/ui/display/code-viewer-css.generated.d.ts +2 -0
  284. package/dist/ui/display/code-viewer-css.generated.d.ts.map +1 -0
  285. package/dist/ui/display/code-viewer-css.generated.js +4 -0
  286. package/dist/ui/display/code-viewer-css.generated.js.map +1 -0
  287. package/dist/ui/display/code-viewer-css.js +3 -0
  288. package/dist/ui/display/code-viewer-css.js.map +1 -0
  289. package/dist/ui/display/code-viewer-lang.d.ts +15 -0
  290. package/dist/ui/display/code-viewer-lang.d.ts.map +1 -0
  291. package/dist/ui/display/code-viewer-lang.js +190 -0
  292. package/dist/ui/display/code-viewer-lang.js.map +1 -0
  293. package/dist/ui/display/code-viewer-theme.d.ts +5 -0
  294. package/dist/ui/display/code-viewer-theme.d.ts.map +1 -0
  295. package/dist/ui/display/code-viewer-theme.js +138 -0
  296. package/dist/ui/display/code-viewer-theme.js.map +1 -0
  297. package/dist/ui/display/flip-css.d.ts +2 -0
  298. package/dist/ui/display/flip-css.d.ts.map +1 -0
  299. package/dist/ui/display/flip-css.generated.d.ts +2 -0
  300. package/dist/ui/display/flip-css.generated.d.ts.map +1 -0
  301. package/dist/ui/display/flip-css.generated.js +4 -0
  302. package/dist/ui/display/flip-css.generated.js.map +1 -0
  303. package/dist/ui/display/flip-css.js +4 -0
  304. package/dist/ui/display/flip-css.js.map +1 -0
  305. package/dist/ui/display/hint-css.generated.d.ts +2 -0
  306. package/dist/ui/display/hint-css.generated.d.ts.map +1 -0
  307. package/dist/ui/display/hint-css.generated.js +4 -0
  308. package/dist/ui/display/hint-css.generated.js.map +1 -0
  309. package/dist/ui/display/marquee-css.d.ts +2 -0
  310. package/dist/ui/display/marquee-css.d.ts.map +1 -0
  311. package/dist/ui/display/marquee-css.generated.d.ts +2 -0
  312. package/dist/ui/display/marquee-css.generated.d.ts.map +1 -0
  313. package/dist/ui/display/marquee-css.generated.js +4 -0
  314. package/dist/ui/display/marquee-css.generated.js.map +1 -0
  315. package/dist/ui/display/marquee-css.js +4 -0
  316. package/dist/ui/display/marquee-css.js.map +1 -0
  317. package/dist/ui/display/section-head-css.generated.d.ts +2 -0
  318. package/dist/ui/display/section-head-css.generated.d.ts.map +1 -0
  319. package/dist/ui/display/section-head-css.generated.js +4 -0
  320. package/dist/ui/display/section-head-css.generated.js.map +1 -0
  321. package/dist/ui/display/surface-css.d.ts +2 -0
  322. package/dist/ui/display/surface-css.d.ts.map +1 -0
  323. package/dist/ui/display/surface-css.generated.d.ts +2 -0
  324. package/dist/ui/display/surface-css.generated.d.ts.map +1 -0
  325. package/dist/ui/display/surface-css.generated.js +4 -0
  326. package/dist/ui/display/surface-css.generated.js.map +1 -0
  327. package/dist/ui/display/surface-css.js +7 -0
  328. package/dist/ui/display/surface-css.js.map +1 -0
  329. package/dist/ui/display/table-css.generated.d.ts +2 -0
  330. package/dist/ui/display/table-css.generated.d.ts.map +1 -0
  331. package/dist/ui/display/table-css.generated.js +4 -0
  332. package/dist/ui/display/table-css.generated.js.map +1 -0
  333. package/dist/ui/display/table-logic.d.ts +110 -0
  334. package/dist/ui/display/table-logic.d.ts.map +1 -0
  335. package/dist/ui/display/table-logic.js +81 -0
  336. package/dist/ui/display/table-logic.js.map +1 -0
  337. package/dist/ui/display/table-plain-css.generated.d.ts +2 -0
  338. package/dist/ui/display/table-plain-css.generated.d.ts.map +1 -0
  339. package/dist/ui/display/table-plain-css.generated.js +4 -0
  340. package/dist/ui/display/table-plain-css.generated.js.map +1 -0
  341. package/dist/ui/display/table-shared.d.ts +101 -0
  342. package/dist/ui/display/table-shared.d.ts.map +1 -0
  343. package/dist/ui/display/table-shared.js +229 -0
  344. package/dist/ui/display/table-shared.js.map +1 -0
  345. package/dist/ui/feedback/AlertModal.d.ts +41 -0
  346. package/dist/ui/feedback/AlertModal.d.ts.map +1 -0
  347. package/dist/ui/feedback/AlertModal.js +45 -0
  348. package/dist/ui/feedback/AlertModal.js.map +1 -0
  349. package/dist/ui/feedback/ConfirmModal.d.ts +50 -0
  350. package/dist/ui/feedback/ConfirmModal.d.ts.map +1 -0
  351. package/dist/ui/feedback/ConfirmModal.js +47 -0
  352. package/dist/ui/feedback/ConfirmModal.js.map +1 -0
  353. package/dist/ui/feedback/Loader.d.ts +49 -0
  354. package/dist/ui/feedback/Loader.d.ts.map +1 -0
  355. package/dist/ui/feedback/Loader.js +79 -0
  356. package/dist/ui/feedback/Loader.js.map +1 -0
  357. package/dist/ui/feedback/LoaderBar.d.ts +38 -0
  358. package/dist/ui/feedback/LoaderBar.d.ts.map +1 -0
  359. package/dist/ui/feedback/LoaderBar.js +79 -0
  360. package/dist/ui/feedback/LoaderBar.js.map +1 -0
  361. package/dist/ui/feedback/Loading.d.ts +69 -0
  362. package/dist/ui/feedback/Loading.d.ts.map +1 -0
  363. package/dist/ui/feedback/Loading.js +164 -0
  364. package/dist/ui/feedback/Loading.js.map +1 -0
  365. package/dist/ui/feedback/Modal.d.ts +73 -0
  366. package/dist/ui/feedback/Modal.d.ts.map +1 -0
  367. package/dist/ui/feedback/Modal.js +83 -0
  368. package/dist/ui/feedback/Modal.js.map +1 -0
  369. package/dist/ui/feedback/SideSheet.d.ts +70 -0
  370. package/dist/ui/feedback/SideSheet.d.ts.map +1 -0
  371. package/dist/ui/feedback/SideSheet.js +130 -0
  372. package/dist/ui/feedback/SideSheet.js.map +1 -0
  373. package/dist/ui/feedback/Toast.d.ts +45 -0
  374. package/dist/ui/feedback/Toast.d.ts.map +1 -0
  375. package/dist/ui/feedback/Toast.js +225 -0
  376. package/dist/ui/feedback/Toast.js.map +1 -0
  377. package/dist/ui/feedback/feedback-css.d.ts +2 -0
  378. package/dist/ui/feedback/feedback-css.d.ts.map +1 -0
  379. package/dist/ui/feedback/feedback-css.generated.d.ts +2 -0
  380. package/dist/ui/feedback/feedback-css.generated.d.ts.map +1 -0
  381. package/dist/ui/feedback/feedback-css.generated.js +4 -0
  382. package/dist/ui/feedback/feedback-css.generated.js.map +1 -0
  383. package/dist/ui/feedback/feedback-css.js +4 -0
  384. package/dist/ui/feedback/feedback-css.js.map +1 -0
  385. package/dist/ui/feedback/host-toast.d.ts +23 -0
  386. package/dist/ui/feedback/host-toast.d.ts.map +1 -0
  387. package/dist/ui/feedback/host-toast.js +34 -0
  388. package/dist/ui/feedback/host-toast.js.map +1 -0
  389. package/dist/ui/feedback/loader-bar-art.d.ts +6 -0
  390. package/dist/ui/feedback/loader-bar-art.d.ts.map +1 -0
  391. package/dist/ui/feedback/loader-bar-art.js +6 -0
  392. package/dist/ui/feedback/loader-bar-art.js.map +1 -0
  393. package/dist/ui/feedback/loader-bar-css.generated.d.ts +2 -0
  394. package/dist/ui/feedback/loader-bar-css.generated.d.ts.map +1 -0
  395. package/dist/ui/feedback/loader-bar-css.generated.js +4 -0
  396. package/dist/ui/feedback/loader-bar-css.generated.js.map +1 -0
  397. package/dist/ui/feedback/loader-css.generated.d.ts +2 -0
  398. package/dist/ui/feedback/loader-css.generated.d.ts.map +1 -0
  399. package/dist/ui/feedback/loader-css.generated.js +4 -0
  400. package/dist/ui/feedback/loader-css.generated.js.map +1 -0
  401. package/dist/ui/feedback/loading-css.generated.d.ts +2 -0
  402. package/dist/ui/feedback/loading-css.generated.d.ts.map +1 -0
  403. package/dist/ui/feedback/loading-css.generated.js +4 -0
  404. package/dist/ui/feedback/loading-css.generated.js.map +1 -0
  405. package/dist/ui/feedback/loading-host.d.ts +49 -0
  406. package/dist/ui/feedback/loading-host.d.ts.map +1 -0
  407. package/dist/ui/feedback/loading-host.js +57 -0
  408. package/dist/ui/feedback/loading-host.js.map +1 -0
  409. package/dist/ui/feedback/modal-host.d.ts +51 -0
  410. package/dist/ui/feedback/modal-host.d.ts.map +1 -0
  411. package/dist/ui/feedback/modal-host.js +170 -0
  412. package/dist/ui/feedback/modal-host.js.map +1 -0
  413. package/dist/ui/feedback/side-sheet-css.d.ts +2 -0
  414. package/dist/ui/feedback/side-sheet-css.d.ts.map +1 -0
  415. package/dist/ui/feedback/side-sheet-css.generated.d.ts +2 -0
  416. package/dist/ui/feedback/side-sheet-css.generated.d.ts.map +1 -0
  417. package/dist/ui/feedback/side-sheet-css.generated.js +4 -0
  418. package/dist/ui/feedback/side-sheet-css.generated.js.map +1 -0
  419. package/dist/ui/feedback/side-sheet-css.js +2 -0
  420. package/dist/ui/feedback/side-sheet-css.js.map +1 -0
  421. package/dist/ui/feedback/toast-host.d.ts +24 -0
  422. package/dist/ui/feedback/toast-host.d.ts.map +1 -0
  423. package/dist/ui/feedback/toast-host.js +20 -0
  424. package/dist/ui/feedback/toast-host.js.map +1 -0
  425. package/dist/ui/index.d.ts +44 -44
  426. package/dist/ui/index.d.ts.map +1 -1
  427. package/dist/ui/index.js +44 -44
  428. package/dist/ui/index.js.map +1 -1
  429. package/dist/ui/infra/chevron.d.ts +22 -0
  430. package/dist/ui/infra/chevron.d.ts.map +1 -0
  431. package/dist/ui/infra/chevron.js +33 -0
  432. package/dist/ui/infra/chevron.js.map +1 -0
  433. package/dist/ui/infra/controls-css.d.ts +16 -0
  434. package/dist/ui/infra/controls-css.d.ts.map +1 -0
  435. package/dist/ui/infra/controls-css.js +26 -0
  436. package/dist/ui/infra/controls-css.js.map +1 -0
  437. package/dist/ui/infra/css.d.ts +35 -0
  438. package/dist/ui/infra/css.d.ts.map +1 -0
  439. package/dist/ui/infra/css.js +52 -0
  440. package/dist/ui/infra/css.js.map +1 -0
  441. package/dist/ui/infra/host-data.d.ts +119 -0
  442. package/dist/ui/infra/host-data.d.ts.map +1 -0
  443. package/dist/ui/infra/host-data.js +122 -0
  444. package/dist/ui/infra/host-data.js.map +1 -0
  445. package/dist/ui/infra/locale.d.ts +4 -0
  446. package/dist/ui/infra/locale.d.ts.map +1 -0
  447. package/dist/ui/infra/locale.js +17 -0
  448. package/dist/ui/infra/locale.js.map +1 -0
  449. package/dist/ui/infra/overlay-css.d.ts +2 -0
  450. package/dist/ui/infra/overlay-css.d.ts.map +1 -0
  451. package/dist/ui/infra/overlay-css.generated.d.ts +2 -0
  452. package/dist/ui/infra/overlay-css.generated.d.ts.map +1 -0
  453. package/dist/ui/infra/overlay-css.generated.js +4 -0
  454. package/dist/ui/infra/overlay-css.generated.js.map +1 -0
  455. package/dist/ui/infra/overlay-css.js +2 -0
  456. package/dist/ui/infra/overlay-css.js.map +1 -0
  457. package/dist/ui/infra/overlay.d.ts +62 -0
  458. package/dist/ui/infra/overlay.d.ts.map +1 -0
  459. package/dist/ui/infra/overlay.js +94 -0
  460. package/dist/ui/infra/overlay.js.map +1 -0
  461. package/dist/ui/infra/panel-css.d.ts +2 -0
  462. package/dist/ui/infra/panel-css.d.ts.map +1 -0
  463. package/dist/ui/infra/panel-css.generated.d.ts +2 -0
  464. package/dist/ui/infra/panel-css.generated.d.ts.map +1 -0
  465. package/dist/ui/infra/panel-css.generated.js +4 -0
  466. package/dist/ui/infra/panel-css.generated.js.map +1 -0
  467. package/dist/ui/infra/panel-css.js +2 -0
  468. package/dist/ui/infra/panel-css.js.map +1 -0
  469. package/dist/ui/infra/panel.d.ts +41 -0
  470. package/dist/ui/infra/panel.d.ts.map +1 -0
  471. package/dist/ui/infra/panel.js +37 -0
  472. package/dist/ui/infra/panel.js.map +1 -0
  473. package/dist/ui/infra/side-panel-css.d.ts +2 -0
  474. package/dist/ui/infra/side-panel-css.d.ts.map +1 -0
  475. package/dist/ui/infra/side-panel-css.generated.d.ts +2 -0
  476. package/dist/ui/infra/side-panel-css.generated.d.ts.map +1 -0
  477. package/dist/ui/infra/side-panel-css.generated.js +4 -0
  478. package/dist/ui/infra/side-panel-css.generated.js.map +1 -0
  479. package/dist/ui/infra/side-panel-css.js +2 -0
  480. package/dist/ui/infra/side-panel-css.js.map +1 -0
  481. package/dist/ui/infra/thenable.d.ts +9 -0
  482. package/dist/ui/infra/thenable.d.ts.map +1 -0
  483. package/dist/ui/infra/thenable.js +15 -0
  484. package/dist/ui/infra/thenable.js.map +1 -0
  485. package/dist/ui/infra/ticker.d.ts +8 -0
  486. package/dist/ui/infra/ticker.d.ts.map +1 -0
  487. package/dist/ui/infra/ticker.js +49 -0
  488. package/dist/ui/infra/ticker.js.map +1 -0
  489. package/dist/ui/infra/tooltip.d.ts +29 -0
  490. package/dist/ui/infra/tooltip.d.ts.map +1 -0
  491. package/dist/ui/infra/tooltip.js +10 -0
  492. package/dist/ui/infra/tooltip.js.map +1 -0
  493. package/dist/ui/inputs/Checkbox.d.ts +24 -0
  494. package/dist/ui/inputs/Checkbox.d.ts.map +1 -0
  495. package/dist/ui/inputs/Checkbox.js +35 -0
  496. package/dist/ui/inputs/Checkbox.js.map +1 -0
  497. package/dist/ui/inputs/DateTimePicker.d.ts +45 -0
  498. package/dist/ui/inputs/DateTimePicker.d.ts.map +1 -0
  499. package/dist/ui/inputs/DateTimePicker.js +462 -0
  500. package/dist/ui/inputs/DateTimePicker.js.map +1 -0
  501. package/dist/ui/inputs/Field.d.ts +125 -0
  502. package/dist/ui/inputs/Field.d.ts.map +1 -0
  503. package/dist/ui/inputs/Field.js +175 -0
  504. package/dist/ui/inputs/Field.js.map +1 -0
  505. package/dist/ui/inputs/InputGroup.d.ts +91 -0
  506. package/dist/ui/inputs/InputGroup.d.ts.map +1 -0
  507. package/dist/ui/inputs/InputGroup.js +125 -0
  508. package/dist/ui/inputs/InputGroup.js.map +1 -0
  509. package/dist/ui/inputs/ModelPicker.d.ts +48 -0
  510. package/dist/ui/inputs/ModelPicker.d.ts.map +1 -0
  511. package/dist/ui/inputs/ModelPicker.js +101 -0
  512. package/dist/ui/inputs/ModelPicker.js.map +1 -0
  513. package/dist/ui/inputs/Picker.d.ts +56 -0
  514. package/dist/ui/inputs/Picker.d.ts.map +1 -0
  515. package/dist/ui/inputs/Picker.js +244 -0
  516. package/dist/ui/inputs/Picker.js.map +1 -0
  517. package/dist/ui/inputs/Segmented.d.ts +99 -0
  518. package/dist/ui/inputs/Segmented.d.ts.map +1 -0
  519. package/dist/ui/inputs/Segmented.js +135 -0
  520. package/dist/ui/inputs/Segmented.js.map +1 -0
  521. package/dist/ui/inputs/Textarea.d.ts +36 -0
  522. package/dist/ui/inputs/Textarea.d.ts.map +1 -0
  523. package/dist/ui/inputs/Textarea.js +35 -0
  524. package/dist/ui/inputs/Textarea.js.map +1 -0
  525. package/dist/ui/inputs/WorkspacePicker.d.ts +35 -0
  526. package/dist/ui/inputs/WorkspacePicker.d.ts.map +1 -0
  527. package/dist/ui/inputs/WorkspacePicker.js +39 -0
  528. package/dist/ui/inputs/WorkspacePicker.js.map +1 -0
  529. package/dist/ui/inputs/datetime-css.generated.d.ts +2 -0
  530. package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -0
  531. package/dist/ui/inputs/datetime-css.generated.js +4 -0
  532. package/dist/ui/inputs/datetime-css.generated.js.map +1 -0
  533. package/dist/ui/inputs/datetime-logic.d.ts +102 -0
  534. package/dist/ui/inputs/datetime-logic.d.ts.map +1 -0
  535. package/dist/ui/inputs/datetime-logic.js +200 -0
  536. package/dist/ui/inputs/datetime-logic.js.map +1 -0
  537. package/dist/ui/inputs/field-css.generated.d.ts +2 -0
  538. package/dist/ui/inputs/field-css.generated.d.ts.map +1 -0
  539. package/dist/ui/inputs/field-css.generated.js +4 -0
  540. package/dist/ui/inputs/field-css.generated.js.map +1 -0
  541. package/dist/ui/inputs/input-group-css.generated.d.ts +2 -0
  542. package/dist/ui/inputs/input-group-css.generated.d.ts.map +1 -0
  543. package/dist/ui/inputs/input-group-css.generated.js +4 -0
  544. package/dist/ui/inputs/input-group-css.generated.js.map +1 -0
  545. package/dist/ui/inputs/picker-css.d.ts +2 -0
  546. package/dist/ui/inputs/picker-css.d.ts.map +1 -0
  547. package/dist/ui/inputs/picker-css.generated.d.ts +2 -0
  548. package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -0
  549. package/dist/ui/inputs/picker-css.generated.js +4 -0
  550. package/dist/ui/inputs/picker-css.generated.js.map +1 -0
  551. package/dist/ui/inputs/picker-css.js +4 -0
  552. package/dist/ui/inputs/picker-css.js.map +1 -0
  553. package/dist/ui/inputs/picker-icons.d.ts +12 -0
  554. package/dist/ui/inputs/picker-icons.d.ts.map +1 -0
  555. package/dist/ui/inputs/picker-icons.js +29 -0
  556. package/dist/ui/inputs/picker-icons.js.map +1 -0
  557. package/dist/ui/inputs/picker-logic.d.ts +33 -0
  558. package/dist/ui/inputs/picker-logic.d.ts.map +1 -0
  559. package/dist/ui/inputs/picker-logic.js +68 -0
  560. package/dist/ui/inputs/picker-logic.js.map +1 -0
  561. package/dist/ui/inputs/segmented-css.generated.d.ts +2 -0
  562. package/dist/ui/inputs/segmented-css.generated.d.ts.map +1 -0
  563. package/dist/ui/inputs/segmented-css.generated.js +4 -0
  564. package/dist/ui/inputs/segmented-css.generated.js.map +1 -0
  565. package/dist/ui/layout/PanelDock.d.ts +132 -0
  566. package/dist/ui/layout/PanelDock.d.ts.map +1 -0
  567. package/dist/ui/layout/PanelDock.js +390 -0
  568. package/dist/ui/layout/PanelDock.js.map +1 -0
  569. package/dist/ui/layout/QuickToolbar.d.ts +54 -0
  570. package/dist/ui/layout/QuickToolbar.d.ts.map +1 -0
  571. package/dist/ui/layout/QuickToolbar.js +254 -0
  572. package/dist/ui/layout/QuickToolbar.js.map +1 -0
  573. package/dist/ui/layout/SplitGroup.d.ts +37 -0
  574. package/dist/ui/layout/SplitGroup.d.ts.map +1 -0
  575. package/dist/ui/layout/SplitGroup.js +36 -0
  576. package/dist/ui/layout/SplitGroup.js.map +1 -0
  577. package/dist/ui/layout/panel-dock-css.d.ts +2 -0
  578. package/dist/ui/layout/panel-dock-css.d.ts.map +1 -0
  579. package/dist/ui/layout/panel-dock-css.generated.d.ts +2 -0
  580. package/dist/ui/layout/panel-dock-css.generated.d.ts.map +1 -0
  581. package/dist/ui/layout/panel-dock-css.generated.js +4 -0
  582. package/dist/ui/layout/panel-dock-css.generated.js.map +1 -0
  583. package/dist/ui/layout/panel-dock-css.js +4 -0
  584. package/dist/ui/layout/panel-dock-css.js.map +1 -0
  585. package/dist/ui/layout/panel-dock-logic.d.ts +67 -0
  586. package/dist/ui/layout/panel-dock-logic.d.ts.map +1 -0
  587. package/dist/ui/layout/panel-dock-logic.js +110 -0
  588. package/dist/ui/layout/panel-dock-logic.js.map +1 -0
  589. package/dist/ui/layout/quick-toolbar-css.generated.d.ts +2 -0
  590. package/dist/ui/layout/quick-toolbar-css.generated.d.ts.map +1 -0
  591. package/dist/ui/layout/quick-toolbar-css.generated.js +4 -0
  592. package/dist/ui/layout/quick-toolbar-css.generated.js.map +1 -0
  593. package/dist/ui/layout/quick-toolbar-logic.d.ts +76 -0
  594. package/dist/ui/layout/quick-toolbar-logic.d.ts.map +1 -0
  595. package/dist/ui/layout/quick-toolbar-logic.js +40 -0
  596. package/dist/ui/layout/quick-toolbar-logic.js.map +1 -0
  597. package/dist/ui/layout/resizer.d.ts +29 -0
  598. package/dist/ui/layout/resizer.d.ts.map +1 -0
  599. package/dist/ui/layout/resizer.js +42 -0
  600. package/dist/ui/layout/resizer.js.map +1 -0
  601. package/dist/ui/layout/split-group-css.generated.d.ts +2 -0
  602. package/dist/ui/layout/split-group-css.generated.d.ts.map +1 -0
  603. package/dist/ui/layout/split-group-css.generated.js +4 -0
  604. package/dist/ui/layout/split-group-css.generated.js.map +1 -0
  605. package/dist/ui/navigation/Pagination.d.ts +59 -0
  606. package/dist/ui/navigation/Pagination.d.ts.map +1 -0
  607. package/dist/ui/navigation/Pagination.js +112 -0
  608. package/dist/ui/navigation/Pagination.js.map +1 -0
  609. package/dist/ui/navigation/pagination-css.generated.d.ts +2 -0
  610. package/dist/ui/navigation/pagination-css.generated.d.ts.map +1 -0
  611. package/dist/ui/navigation/pagination-css.generated.js +4 -0
  612. package/dist/ui/navigation/pagination-css.generated.js.map +1 -0
  613. package/dist/ui/navigation/pagination-logic.d.ts +36 -0
  614. package/dist/ui/navigation/pagination-logic.d.ts.map +1 -0
  615. package/dist/ui/navigation/pagination-logic.js +73 -0
  616. package/dist/ui/navigation/pagination-logic.js.map +1 -0
  617. package/dist/ui/official.js +2 -2
  618. package/dist/ui/official.js.map +1 -1
  619. package/dist/utils/i18n.d.ts +2 -2
  620. package/dist/utils/i18n.d.ts.map +1 -1
  621. package/dist/utils/i18n.js +1 -1
  622. package/dist/utils/i18n.js.map +1 -1
  623. package/docs/README.md +1 -1
  624. package/docs/design/architecture.md +9 -8
  625. package/docs/design/copywriting.md +23 -0
  626. package/docs/design/external/dsh-host.md +5 -5
  627. package/docs/design/structure.md +132 -128
  628. package/docs/design/style.md +5 -5
  629. package/docs/help/utils.doc.ts +3 -3
  630. package/docs/help/utils.md +3 -3
  631. package/docs/requirements.md +30 -290
  632. package/package.json +1 -1
@@ -0,0 +1,130 @@
1
+ /**
2
+ * 侧边抽屉(SideSheet)—— 从屏幕左/右缘滑入的**覆盖式**浮层。
3
+ *
4
+ * 与 PanelDock 的关系(用户 2026-11-02 定):**皮肤一模一样**(同一份 side-panel.css:
5
+ * 头部、拖拽条、关闭钮、背景阴影、入场动画),宽度也能拖;差别只有两点:
6
+ * · PanelDock 是布局成员(sticky 占宽、挤窄主区,调用方必须给挂载点);
7
+ * · SideSheet 是浮层(absolute 贴边、盖住页面,自铺遮罩,不需要挂载点);
8
+ * · SideSheet **没有收起**(没有耳朵、没有收起钮)—— 关就是关。
9
+ *
10
+ * 开关行为与 Modal 一致:渲染即显示(`{open && <SideSheet … />}`)、点遮罩 / Esc / ✕ 都能关,
11
+ * 三者都可关掉;遮罩与 Esc 判定走 overlay.ts 的公共件。
12
+ */
13
+ import { createElement as h, useEffect, useRef, useState } from 'react';
14
+ import { t } from '../../utils/i18n.js';
15
+ import { ensureComponentStyles } from '../infra/css.js';
16
+ import { SIDE_PANEL_CSS } from '../infra/side-panel-css.js';
17
+ import { SIDE_SHEET_CSS } from './side-sheet-css.js';
18
+ import { OverlayLockCatcher, OverlayLockedProvider, OverlayMask, useEscapeClose, useLockGuards } from '../infra/overlay.js';
19
+ import { startResizeLayoutWidth } from '../layout/resizer.js';
20
+ import { FlipText } from '../display/FlipText.js';
21
+ export function SideSheet(props) {
22
+ ensureComponentStyles('side-panel', SIDE_PANEL_CSS);
23
+ ensureComponentStyles('side-sheet', SIDE_SHEET_CSS);
24
+ const tt = props.translate ?? t;
25
+ const side = props.side ?? 'left';
26
+ // busy / locked 都是否决项:三条关闭路径一起封死(✕ 见下面 showClose)。
27
+ const busy = props.busy === true;
28
+ const locked = props.locked === true;
29
+ const denyClose = busy || locked;
30
+ const closeOnMask = !denyClose && props.closeOnMask !== false;
31
+ useEscapeClose(!denyClose && props.escClose !== false, denyClose ? undefined : props.onClose);
32
+ useLockGuards(locked);
33
+ // 空串等同于没给:抽屉常驻渲染时,传 "" 就能把上一轮的提示清干净、不留占位。
34
+ const notice = props.notice === '' ? undefined : props.notice;
35
+ const [width, setWidth] = useState(props.width ?? 460);
36
+ const panelRef = useRef(null);
37
+ // 收起动效(用户 2026-11-02):open=false 时先播完 dshpc-side-out 再真正卸载;
38
+ // 中途又被打开就撤销,不留残影。
39
+ const leaving = props.open === false;
40
+ // 挂载时就是关着的 ⇒ 直接不渲染(否则开页面会闪一下抽屉)。
41
+ const [unmounted, setUnmounted] = useState(leaving);
42
+ useEffect(() => {
43
+ if (!leaving)
44
+ setUnmounted(false);
45
+ }, [leaving]);
46
+ if (unmounted)
47
+ return null;
48
+ const showClose = props.closable !== false && props.onClose !== undefined && !denyClose;
49
+ const hasHeader = props.header !== null;
50
+ const beginResize = (event) => {
51
+ const element = panelRef.current;
52
+ if (element === null || typeof window === 'undefined')
53
+ return;
54
+ const startX = event.clientX;
55
+ const startWidth = element.getBoundingClientRect().width;
56
+ const min = props.minWidth ?? 320;
57
+ const businessMax = props.maxWidth ?? Number.POSITIVE_INFINITY;
58
+ element.classList.add('dshpc-side-surface--resizing');
59
+ startResizeLayoutWidth({
60
+ startEvent: event,
61
+ rafThrottle: true,
62
+ compute: (clientX) => {
63
+ // 上限 = 遮罩盒宽度(已按右侧分栏让位),再夹业务上限。
64
+ const box = element.parentElement?.getBoundingClientRect().width ?? window.innerWidth;
65
+ const max = Math.max(min, Math.min(box, businessMax));
66
+ // 左侧抽屉往右拖变宽,右侧抽屉反过来。
67
+ const raw = side === 'left' ? startWidth + (clientX - startX) : startWidth + (startX - clientX);
68
+ return Math.round(Math.min(Math.max(raw, min), max));
69
+ },
70
+ onMove: (next) => {
71
+ element.style.width = `${next}px`;
72
+ },
73
+ onCommit: (next) => {
74
+ element.classList.remove('dshpc-side-surface--resizing');
75
+ setWidth(next);
76
+ },
77
+ });
78
+ };
79
+ const closeButton = (floating) => !showClose
80
+ ? null
81
+ : h('button', {
82
+ type: 'button',
83
+ className: `dshpc-dock__close ${floating ? 'dshpc-dock__close--floating' : 'dshpc-dock__close--abs'}`,
84
+ 'aria-label': tt('dockClose'),
85
+ onClick: () => props.onClose?.(),
86
+ }, props.closeIcon ?? '✕');
87
+ const renderHeader = () => {
88
+ if (props.header === null)
89
+ return null;
90
+ if (props.header !== undefined) {
91
+ return h('div', { className: 'dshpc-dock__head dshpc-dock__head--custom' }, props.header);
92
+ }
93
+ return h('div', { className: 'dshpc-dock__head' }, props.icon === undefined ? null : h('div', { className: 'dshpc-dock__lead' }, props.icon), h('div', { className: 'dshpc-dock__title' }, props.title), props.extra === undefined ? null : h('div', { className: 'dshpc-dock__extra' }, props.extra));
94
+ };
95
+ return h(OverlayMask, {
96
+ kind: 'side',
97
+ closeOnMask,
98
+ onClose: denyClose ? undefined : props.onClose,
99
+ attrs: locked ? { 'data-dshpc-locked': '' } : undefined,
100
+ }, h(OverlayLockedProvider, { value: locked }, h('section', {
101
+ ref: (element) => {
102
+ panelRef.current = element;
103
+ },
104
+ className: `dshpc-side-surface dshpc-sheet dshpc-sheet--${side}${leaving ? ' dshpc-sheet--leaving' : ''}${locked ? ' dshpc-locked' : ''}`,
105
+ style: { width: `${width}px` },
106
+ // 收起动画结束才卸载;入场动画结束(leaving=false)在这里不算数。
107
+ onAnimationEnd: () => {
108
+ if (leaving)
109
+ setUnmounted(true);
110
+ },
111
+ 'aria-label': typeof props.title === 'string' ? props.title : undefined,
112
+ // 面板上的点击不能再冒到遮罩(否则点正文就把自己关了)。
113
+ onClick: (e) => e.stopPropagation(),
114
+ }, props.resizable === false
115
+ ? null
116
+ : h('div', {
117
+ className: 'dshpc-dock__resizer',
118
+ role: 'separator',
119
+ 'aria-orientation': 'vertical',
120
+ 'aria-label': tt('dockResize'),
121
+ onPointerDown: (event) => {
122
+ beginResize(event);
123
+ },
124
+ }), renderHeader(), closeButton(!hasHeader), h('div', { className: 'dshpc-dock__body dshpc-sheet__body' }, props.children ?? null), props.footer === undefined && notice === undefined
125
+ ? null
126
+ : h('div', { className: 'dshpc-sheet__foot' }, notice === undefined ? null : h(FlipText, { text: notice, className: 'dshpc-sheet__notice', sweep: true }), props.footer),
127
+ // 与 Modal 同一套:透明点击层兜住自绘元素,变灰归各控件自己的 :disabled。
128
+ locked ? h(OverlayLockCatcher) : null)));
129
+ }
130
+ //# sourceMappingURL=SideSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideSheet.js","sourceRoot":"","sources":["../../../src/ui/feedback/SideSheet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type ButtonVariant } from '../actions/Button.js';
2
+ export type ToastVariant = 'info' | 'success' | 'error' | 'warning';
3
+ export type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
4
+ export interface ToastOptions {
5
+ variant?: ToastVariant;
6
+ /** 停留时长(毫秒),默认 2600。 */
7
+ durationMs?: number;
8
+ /** 整条自定义颜色(背景色)。传了就走 unstyled 自定义卡,覆盖默认语义色。 */
9
+ color?: string;
10
+ /** toast 消失(自动或手动关闭)后触发。 */
11
+ onDismiss?: () => void;
12
+ /** 出现位置(作用于全局唯一 Toaster),默认 'bottom-center'。 */
13
+ position?: ToastPosition;
14
+ }
15
+ /** 封装好的提示:右侧动作按钮(用我们自己的 Button 样式)。 */
16
+ export interface ToastAction {
17
+ text: string;
18
+ /** 按钮样式(我们的 ButtonVariant),默认 'info'(实心无边框)。 */
19
+ variant?: ButtonVariant;
20
+ onClick: () => void;
21
+ }
22
+ export interface NotifyOptions {
23
+ variant?: ToastVariant;
24
+ /** 次要说明文字(标题下方)。 */
25
+ description?: string;
26
+ durationMs?: number;
27
+ position?: ToastPosition;
28
+ /** 右侧 1–2 个动作按钮;传了就走我们封装的卡片样式并渲染按钮。 */
29
+ actions?: ToastAction[];
30
+ }
31
+ /**
32
+ * 官方 Sonner 原生提示(**命令式**)。用于「官方的」对比 demo 与需要 Sonner 原味的场景。
33
+ * 变体:info(中性卡)/ success(绿)/ error(红)/ warning(黄,richColors)。
34
+ * 无 `document` 时静默跳过(Node 单测 / SSR 不炸)。
35
+ */
36
+ export declare function showToast(message: string, opts?: ToastOptions): void;
37
+ /**
38
+ * 我们封装好的提示(**推荐项目内使用**):统一卡片样式(灰/绿/红/黄,跟随明暗皮肤),
39
+ * 右侧可挂 1–2 个**我们自己的 Button** 动作按钮,点击后自动关闭并调用你的事件。
40
+ *
41
+ * 底层仍是 Sonner(动画 / 定位 / 堆叠),但视觉与交互是我们定制的。
42
+ * 无 `document` 时静默跳过。
43
+ */
44
+ export declare function notify(message: string, opts?: NotifyOptions): void;
45
+ //# sourceMappingURL=Toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/Toast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGjE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAEnE,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAA;AAElB,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,aAAa,CAAA;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,uCAAuC;IACvC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CACxB;AAqMD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAapE;AAwBD;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAalE"}
@@ -0,0 +1,225 @@
1
+ import { createElement as h } from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+ import { Toaster, toast } from 'sonner';
4
+ import { Button } from '../actions/Button.js';
5
+ import { claimToastHost } from './toast-host.js';
6
+ const DEFAULT_MS = 2600;
7
+ const ROOT_ID = 'dshpc-toast-root';
8
+ // 宿主暗色判据是 body[data-ds-dark-theme](不是 prefers-color-scheme),
9
+ // Sonner 的 theme 必须显式传,故从这里读并监听变化。
10
+ function currentTheme() {
11
+ return document.body.hasAttribute('data-ds-dark-theme') ? 'dark' : 'light';
12
+ }
13
+ // ── 跨副本共享宿主 ──
14
+ // core 被打进每个插件 bundle,本模块的 root / position 等状态各副本一份;同页多插件
15
+ // 会各挂一个同 id 容器 + 一个 Toaster,叠在同一屏位。sonner 的 toast() / toast.custom()
16
+ // 是模块级 store(B 副本调自己 bundle 的 sonner,事件只进 B 的 store),所以只能共享
17
+ // 「命令式入口」、不能共享 React root:由先到场的副本建宿主,其余副本交给它渲染。
18
+ let sharedHost = null;
19
+ function toasterHost() {
20
+ if (sharedHost !== null)
21
+ return sharedHost;
22
+ if (typeof document === 'undefined' || typeof MutationObserver === 'undefined')
23
+ return null;
24
+ sharedHost = claimToastHost(createToasterHost);
25
+ return sharedHost;
26
+ }
27
+ function createToasterHost() {
28
+ let root = null;
29
+ let themeObserver = null;
30
+ let position = 'bottom-center';
31
+ function renderToaster() {
32
+ if (root === null)
33
+ return;
34
+ root.render(h(Toaster, {
35
+ theme: currentTheme(),
36
+ position,
37
+ // richColors:success=绿整条 / error=红整条 / warning=黄整条(Sonner 自带);
38
+ // 不开 closeButton:在宿主里吃不到 Sonner 的 CSS 变量,会渲染成白底方块叉(真机踩过)。
39
+ richColors: true,
40
+ }));
41
+ }
42
+ // 全局唯一 Toaster:命令式 toast() 需要一个挂着的 Toaster 才能渲染。
43
+ function ensureToaster() {
44
+ if (root !== null)
45
+ return;
46
+ // 双闸:容器可能已被他人建过(重复 DOM id 会破坏 getElementById 语义)。
47
+ let container = document.getElementById(ROOT_ID);
48
+ if (container === null) {
49
+ container = document.createElement('div');
50
+ container.id = ROOT_ID;
51
+ document.body.appendChild(container);
52
+ }
53
+ root = createRoot(container);
54
+ renderToaster();
55
+ themeObserver = new MutationObserver(() => renderToaster());
56
+ themeObserver.observe(document.body, {
57
+ attributes: true,
58
+ attributeFilter: ['data-ds-dark-theme'],
59
+ });
60
+ }
61
+ function showNative(payload) {
62
+ const duration = payload.durationMs;
63
+ const onDismiss = payload.onDismiss;
64
+ if (payload.color !== undefined) {
65
+ toast(payload.message, {
66
+ duration,
67
+ unstyled: true,
68
+ onDismiss,
69
+ className: 'dshpc-toast-custom',
70
+ style: {
71
+ background: payload.color,
72
+ color: '#fff',
73
+ minWidth: '320px',
74
+ minHeight: '48px',
75
+ padding: '12px 16px',
76
+ borderRadius: '8px',
77
+ boxShadow: '0 6px 16px rgba(0, 0, 0, 0.18)',
78
+ fontSize: '14px',
79
+ lineHeight: '20px',
80
+ boxSizing: 'border-box',
81
+ display: 'flex',
82
+ alignItems: 'center',
83
+ },
84
+ });
85
+ return;
86
+ }
87
+ const variant = payload.variant;
88
+ if (variant === 'success') {
89
+ toast.success(payload.message, { duration, onDismiss });
90
+ }
91
+ else if (variant === 'error') {
92
+ toast.error(payload.message, { duration, onDismiss });
93
+ }
94
+ else if (variant === 'warning') {
95
+ toast.warning(payload.message, { duration, onDismiss });
96
+ }
97
+ else {
98
+ toast(payload.message, { duration, onDismiss });
99
+ }
100
+ }
101
+ function showCard(payload) {
102
+ const palette = notifyPalette(payload.variant, currentTheme());
103
+ const duration = payload.durationMs;
104
+ const actions = payload.actions;
105
+ const id = toast.custom(() => h('div', {
106
+ style: {
107
+ display: 'flex',
108
+ alignItems: 'center',
109
+ gap: '12px',
110
+ minWidth: '320px',
111
+ minHeight: '48px',
112
+ padding: '12px 16px',
113
+ borderRadius: '10px',
114
+ boxShadow: '0 6px 16px rgba(0, 0, 0, 0.18)',
115
+ background: palette.bg,
116
+ color: palette.fg,
117
+ boxSizing: 'border-box',
118
+ fontSize: '14px',
119
+ lineHeight: '20px',
120
+ },
121
+ }, h('span', {
122
+ style: {
123
+ flexShrink: 0,
124
+ width: '20px',
125
+ height: '20px',
126
+ borderRadius: '50%',
127
+ background: 'rgba(255, 255, 255, 0.25)',
128
+ display: 'inline-flex',
129
+ alignItems: 'center',
130
+ justifyContent: 'center',
131
+ fontSize: '13px',
132
+ fontWeight: 700,
133
+ },
134
+ }, palette.glyph), h('div', { style: { flex: 1, minWidth: 0 } }, h('div', { style: { fontWeight: 600 } }, payload.message), payload.description !== undefined
135
+ ? h('div', { style: { opacity: 0.9, fontSize: '13px', marginTop: '2px', whiteSpace: 'pre-line' } }, payload.description)
136
+ : null), actions !== undefined && actions.length > 0
137
+ ? h('div', { style: { display: 'flex', gap: '8px', flexShrink: 0 } }, ...actions.slice(0, 2).map((a) => h(Button, {
138
+ variant: a.variant ?? 'info',
139
+ size: 'md',
140
+ onClick: () => {
141
+ a.onClick();
142
+ toast.dismiss(id);
143
+ },
144
+ }, a.text)))
145
+ : null), { duration, unstyled: true });
146
+ }
147
+ return {
148
+ show(payload) {
149
+ ensureToaster();
150
+ renderToaster(); // 应用最新 position / theme(root 已存在时也要重渲染)
151
+ if (payload.style === 'card')
152
+ showCard(payload);
153
+ else
154
+ showNative(payload);
155
+ },
156
+ setPosition(next) {
157
+ position = next;
158
+ renderToaster();
159
+ },
160
+ };
161
+ }
162
+ /**
163
+ * 官方 Sonner 原生提示(**命令式**)。用于「官方的」对比 demo 与需要 Sonner 原味的场景。
164
+ * 变体:info(中性卡)/ success(绿)/ error(红)/ warning(黄,richColors)。
165
+ * 无 `document` 时静默跳过(Node 单测 / SSR 不炸)。
166
+ */
167
+ export function showToast(message, opts) {
168
+ if (typeof document === 'undefined')
169
+ return;
170
+ const host = toasterHost();
171
+ if (host === null)
172
+ return;
173
+ if (opts?.position !== undefined)
174
+ host.setPosition(opts.position);
175
+ host.show({
176
+ message,
177
+ variant: opts?.variant ?? 'info',
178
+ style: 'native',
179
+ durationMs: opts?.durationMs ?? DEFAULT_MS,
180
+ color: opts?.color,
181
+ onDismiss: opts?.onDismiss,
182
+ });
183
+ }
184
+ // 我们封装卡片的配色:info 走灰(不是纯黑,随明暗切换);其余用整条语义色。
185
+ function notifyPalette(variant, theme) {
186
+ switch (variant) {
187
+ case 'success':
188
+ return { bg: '#16a34a', fg: '#ffffff', glyph: '✓' };
189
+ // error / warning 用哑光降饱和档:实心卡上加透明度会透出底层内容、伤可读性,
190
+ // 故改为压暗一档的色相(设计师口径:冷静的严重度,而非警报荧光)。
191
+ case 'error':
192
+ return { bg: '#c0392b', fg: '#ffffff', glyph: '✕' };
193
+ case 'warning':
194
+ return { bg: '#e0922f', fg: '#1f2937', glyph: '!' };
195
+ default:
196
+ return theme === 'dark'
197
+ ? { bg: '#3f3f46', fg: '#fafafa', glyph: 'i' }
198
+ : { bg: '#f4f4f5', fg: '#18181b', glyph: 'i' };
199
+ }
200
+ }
201
+ /**
202
+ * 我们封装好的提示(**推荐项目内使用**):统一卡片样式(灰/绿/红/黄,跟随明暗皮肤),
203
+ * 右侧可挂 1–2 个**我们自己的 Button** 动作按钮,点击后自动关闭并调用你的事件。
204
+ *
205
+ * 底层仍是 Sonner(动画 / 定位 / 堆叠),但视觉与交互是我们定制的。
206
+ * 无 `document` 时静默跳过。
207
+ */
208
+ export function notify(message, opts) {
209
+ if (typeof document === 'undefined')
210
+ return;
211
+ const host = toasterHost();
212
+ if (host === null)
213
+ return;
214
+ if (opts?.position !== undefined)
215
+ host.setPosition(opts.position);
216
+ host.show({
217
+ message,
218
+ variant: opts?.variant ?? 'info',
219
+ style: 'card',
220
+ description: opts?.description,
221
+ durationMs: opts?.durationMs ?? DEFAULT_MS,
222
+ actions: opts?.actions,
223
+ });
224
+ }
225
+ //# sourceMappingURL=Toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../src/ui/feedback/Toast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { FEEDBACK_CSS } from './feedback-css.generated.js';
2
+ //# sourceMappingURL=feedback-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-css.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/feedback-css.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const FEEDBACK_CSS = "/* \u906E\u7F69\u4E0E\u5934\u90E8\u5728 overlay.css\uFF0C\u8868\u9762\uFF08\u5E95\u8272/\u63CF\u8FB9/\u5706\u89D2/\u9634\u5F71\uFF09\u5728 panel.css \u7684 --modal \u6863\uFF0C\n \u8FD9\u91CC\u53EA\u5269**\u5BB6\u65CF\u5E03\u5C40\u4E0E\u5C3A\u5BF8**\u3002\u4E09\u8005\u5404\u7BA1\u4E00\u6BB5\uFF0C\u522B\u518D\u628A\u76AE\u80A4\u6284\u56DE\u6765\u3002 */\n.dshpc-modal{\n display:flex;flex-direction:column;box-sizing:border-box;\n}\n/* body = \u552F\u4E00\u6EDA\u52A8\u5BB9\u5668\uFF1A\u5185\u8DDD\u4E0E\u6EDA\u52A8\u90FD\u5F52\u5B83\uFF08\u6EDA\u52A8\u6761\u8D34\u9762\u677F\u53F3\u7F18\uFF0C\u4E0D\u88AB\u5185\u8DDD\u6324\u8FDB\u6765\uFF09\uFF1B\n \u5185\u5BB9\u6309\u6D41\u6392\uFF0C\u4E0D\u8BBE height:100%\u3001\u4E0D\u81EA\u5DF1\u5F00\u6EDA\u52A8\u6761\u3002\n \u900F\u660E\u53F3\u8FB9\u6846 = \u8BA9\u6EDA\u52A8\u6761\u4E0E\u9762\u677F\u53F3\u7F18\u9694 1px\uFF08\u53E3\u5F84\u89C1 style.md \u00A7\u6EDA\u52A8\u6761\u8BA9\u4F4D\uFF09\u3002 */\n.dshpc-modal__body{flex:1 1 auto;min-height:0;overflow:auto;padding:17px 18px;border-right:1px solid transparent}\n/* \u5E95\u680F\u4E0E\u5934\u90E8\u540C\u4E00\u53E3\u5F84\uFF082026-11-02 \u7528\u6237\uFF09\uFF1A\u4E0A\u4E0B\u5185\u8DDD\u76F8\u7B49\u3001\u5185\u5BB9\u5782\u76F4\u5C45\u4E2D\u3001\u9ED8\u8BA4\u5E26\u4E00\u6761\u5206\u9694\u7EBF\u3002\n \u7EBF\u53EF\u7531\u6D88\u8D39\u65B9\u5173\u6389\uFF08Modal \u7684 footerDivider=false\uFF09\u2014\u2014 \u786E\u8BA4\u6846\u5BB6\u65CF\u672C\u6765\u5C31\u6CA1\u6709\u7EBF\uFF08\u4E0E\u5934\u90E8\u4E00\u81F4\uFF09\u3002 */\n.dshpc-modal .dshpc-modal__foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:18px;border-top:1px solid var(--dshpc-border)}\n.dshpc-modal .dshpc-modal__foot--bare{border-top:none}\n/* \u5E95\u680F\u5DE6\u4FA7\u7684\u8FC7\u7A0B\u63D0\u793A\uFF1A\u5403\u6389\u6309\u94AE\u4E4B\u5916\u7684\u5269\u4F59\u5BBD\uFF0C\u8D85\u957F\u4EA4\u7ED9 FlipText \u7701\u7565 / hover \u8DD1\u9A6C\u706F\u3002 */\n.dshpc-modal .dshpc-modal__notice{flex:1 1 auto;min-width:0;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);color:var(--dshpc-fg-3)}\n/* \u81EA\u7ED8 toast \u7684\u6837\u5F0F\u5728 2026-11-03 \u5220\u9664\uFF1AToast \u65E9\u5DF2\u6539\u8D70\u5BBF\u4E3B toast()\uFF08Toast.ts \u7684 showNative\uFF09\uFF0C\n .dshpc-toast* \u8FD9\u51E0\u4E2A\u7C7B\u6CA1\u6709\u4EFB\u4F55\u6D88\u8D39\u8005\uFF0C\u7559\u7740\u53EA\u662F\u6B7B\u6837\u5F0F\uFF08\u8FD8\u5E26\u7740\u88F8 z-index \u4E0E\u88F8\u9634\u5F71\uFF09\u3002 */\n.dshpc-error__retry{\n margin-top:8px;color:var(--dshpc-link);cursor:pointer;background:none;border:none;padding:0;\n}\n/* \u539F\u751F\u5F39\u7A97\u6F14\u793A\uFF1A\u7ECF\u5BBF\u4E3B Modal \u7684 contentClassName \u6CE8\u5165\uFF0C\u8BC1\u660E\u5BBF\u4E3B\u5185\u5BB9\u533A\u5C3A\u5BF8\u53EF\u7ECF\u7C7B\u540D\u81EA\u5B9A\u4E49\u3002 */\n.dshpc-native-demo-content{max-width:520px}\n/* \u5934\u90E8\u4FE1\u53F7\u56FE\u6807\uFF08AlertModal \u6309 severity \u6CE8\u5165\uFF09\uFF1A\u81EA\u542B\u914D\u8272\uFF0C\u8272\u503C\u5728 tokens.css \u7684 --dshpc-sev-*\u3002 */\n.dshpc-alert-sev{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:12px;color:var(--dshpc-on-signal);flex:none}\n.dshpc-alert-sev--info{background:var(--dshpc-sev-info)}\n.dshpc-alert-sev--success{background:var(--dshpc-sev-success)}\n.dshpc-alert-sev--warning{background:var(--dshpc-sev-warning)}\n.dshpc-alert-sev--error{background:var(--dshpc-sev-error)}\n/* \u5C0F\u786E\u8BA4\u6846\u5BB6\u65CF\uFF08sm\uFF09\uFF1A\u4E25\u683C\u6284\u5144\u5F1F\u9879\u76EE renderConfirm \u7684 dialogStyle\uFF08task-list.tsx:456\uFF09\u2014\u2014\n 360px \u5BBD / 18px \u5185\u8DDD / \u5934\u90E8\u65E0\u5206\u9694\u7EBF / \u8BF4\u660E\u6587\u5B57 fg-2 / \u5E95\u90E8\u6309\u94AE\u53F3\u5BF9\u9F50\u3002 */\n.dshpc-modal--sm{padding:18px}\n.dshpc-modal--sm .dshpc-overlay-head{padding:0 0 8px;border-bottom:none}\n.dshpc-modal--sm .dshpc-modal__body{padding:0 0 14px;overflow:visible;font-size:var(--dshpc-font-sm);color:var(--dshpc-fg-2);line-height:var(--dshpc-line-sm)}\n.dshpc-modal--sm .dshpc-modal__foot{padding:0;border-top:none}\n/* \u9501\u5B9A\u6001\uFF08locked\uFF09\uFF1A\u53EA\u7ED9\u900F\u660E\u70B9\u51FB\u5C42\u505A\u5B9A\u4F4D\u951A\u70B9\uFF0C**\u4E0D\u538B\u4EFB\u4F55\u906E\u7F69** \u2014\u2014 \u76D6\u7070\u4F1A\u8BA9\u4EBA\u4EE5\u4E3A\u754C\u9762\u574F\u4E86\uFF1B\n \u53D8\u7070\u662F\u5404\u63A7\u4EF6\u81EA\u5DF1 :disabled \u7684\u4E8B\uFF08Button / Input / Picker \u2026 \u672C\u6765\u5C31\u6709\u90A3\u5957\u6837\u5F0F\uFF09\u3002 */\n.dshpc-modal--locked{position:relative}\n";
2
+ //# sourceMappingURL=feedback-css.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/feedback-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,shJAA45E,CAAA"}
@@ -0,0 +1,4 @@
1
+ // ⚠️ 生成物,勿手改。真源 = src/ui/feedback/feedback.css
2
+ // 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
3
+ export const FEEDBACK_CSS = "/* 遮罩与头部在 overlay.css,表面(底色/描边/圆角/阴影)在 panel.css 的 --modal 档,\n 这里只剩**家族布局与尺寸**。三者各管一段,别再把皮肤抄回来。 */\n.dshpc-modal{\n display:flex;flex-direction:column;box-sizing:border-box;\n}\n/* body = 唯一滚动容器:内距与滚动都归它(滚动条贴面板右缘,不被内距挤进来);\n 内容按流排,不设 height:100%、不自己开滚动条。\n 透明右边框 = 让滚动条与面板右缘隔 1px(口径见 style.md §滚动条让位)。 */\n.dshpc-modal__body{flex:1 1 auto;min-height:0;overflow:auto;padding:17px 18px;border-right:1px solid transparent}\n/* 底栏与头部同一口径(2026-11-02 用户):上下内距相等、内容垂直居中、默认带一条分隔线。\n 线可由消费方关掉(Modal 的 footerDivider=false)—— 确认框家族本来就没有线(与头部一致)。 */\n.dshpc-modal .dshpc-modal__foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:18px;border-top:1px solid var(--dshpc-border)}\n.dshpc-modal .dshpc-modal__foot--bare{border-top:none}\n/* 底栏左侧的过程提示:吃掉按钮之外的剩余宽,超长交给 FlipText 省略 / hover 跑马灯。 */\n.dshpc-modal .dshpc-modal__notice{flex:1 1 auto;min-width:0;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);color:var(--dshpc-fg-3)}\n/* 自绘 toast 的样式在 2026-11-03 删除:Toast 早已改走宿主 toast()(Toast.ts 的 showNative),\n .dshpc-toast* 这几个类没有任何消费者,留着只是死样式(还带着裸 z-index 与裸阴影)。 */\n.dshpc-error__retry{\n margin-top:8px;color:var(--dshpc-link);cursor:pointer;background:none;border:none;padding:0;\n}\n/* 原生弹窗演示:经宿主 Modal 的 contentClassName 注入,证明宿主内容区尺寸可经类名自定义。 */\n.dshpc-native-demo-content{max-width:520px}\n/* 头部信号图标(AlertModal 按 severity 注入):自含配色,色值在 tokens.css 的 --dshpc-sev-*。 */\n.dshpc-alert-sev{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:12px;color:var(--dshpc-on-signal);flex:none}\n.dshpc-alert-sev--info{background:var(--dshpc-sev-info)}\n.dshpc-alert-sev--success{background:var(--dshpc-sev-success)}\n.dshpc-alert-sev--warning{background:var(--dshpc-sev-warning)}\n.dshpc-alert-sev--error{background:var(--dshpc-sev-error)}\n/* 小确认框家族(sm):严格抄兄弟项目 renderConfirm 的 dialogStyle(task-list.tsx:456)——\n 360px 宽 / 18px 内距 / 头部无分隔线 / 说明文字 fg-2 / 底部按钮右对齐。 */\n.dshpc-modal--sm{padding:18px}\n.dshpc-modal--sm .dshpc-overlay-head{padding:0 0 8px;border-bottom:none}\n.dshpc-modal--sm .dshpc-modal__body{padding:0 0 14px;overflow:visible;font-size:var(--dshpc-font-sm);color:var(--dshpc-fg-2);line-height:var(--dshpc-line-sm)}\n.dshpc-modal--sm .dshpc-modal__foot{padding:0;border-top:none}\n/* 锁定态(locked):只给透明点击层做定位锚点,**不压任何遮罩** —— 盖灰会让人以为界面坏了;\n 变灰是各控件自己 :disabled 的事(Button / Input / Picker … 本来就有那套样式)。 */\n.dshpc-modal--locked{position:relative}\n";
4
+ //# sourceMappingURL=feedback-css.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-css.generated.js","sourceRoot":"","sources":["../../../src/ui/feedback/feedback-css.generated.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,qEAAqE;AACrE,MAAM,CAAC,MAAM,YAAY,GAAG,y5EAAy5E,CAAA"}
@@ -0,0 +1,4 @@
1
+ // 反馈件(Modal / toast / 空态 / 错误边界)样式。
2
+ // 类名与 token 变量统一 dshpc 前缀。
3
+ export { FEEDBACK_CSS } from './feedback-css.generated.js';
4
+ //# sourceMappingURL=feedback-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-css.js","sourceRoot":"","sources":["../../../src/ui/feedback/feedback-css.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,23 @@
1
+ export interface HostToastAction {
2
+ text: string;
3
+ onClick: () => void;
4
+ }
5
+ export interface HostToastOptions {
6
+ /** 仅宿主原生支持 'success' 一个语义色;不传则是默认中性条。 */
7
+ tone?: 'success';
8
+ /** 停留时长(毫秒),默认 3000。 */
9
+ holdMs?: number;
10
+ /** 右侧动作(宿主原生渲染为蓝色可点文字)。 */
11
+ actions?: HostToastAction[];
12
+ /** 淡出完成后触发。 */
13
+ onDismiss?: () => void;
14
+ }
15
+ /**
16
+ * 宿主原生 Toast(直接包 `@deepseek-ai/dsh-client-ui-primitives` 的 `Toast`)。
17
+ *
18
+ * 放在独立子路径 `dsh-plugin-core/ui/host` 导出,**不**经 `dsh-plugin-core/ui` 入口,
19
+ * 避免 `ui` 入口静态 import 官方平台模块导致 Node 单测崩(旧坑)。
20
+ * 仅用于「宿主原生」对比 demo;项目内通常请用 `notify`。
21
+ */
22
+ export declare function showHostToast(message: string, opts?: HostToastOptions): void;
23
+ //# sourceMappingURL=host-toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-toast.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/host-toast.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2BAA2B;IAC3B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,eAAe;IACf,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAwB5E"}
@@ -0,0 +1,34 @@
1
+ import { createElement as h } from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+ import { Official } from '../official.js';
4
+ /**
5
+ * 宿主原生 Toast(直接包 `@deepseek-ai/dsh-client-ui-primitives` 的 `Toast`)。
6
+ *
7
+ * 放在独立子路径 `dsh-plugin-core/ui/host` 导出,**不**经 `dsh-plugin-core/ui` 入口,
8
+ * 避免 `ui` 入口静态 import 官方平台模块导致 Node 单测崩(旧坑)。
9
+ * 仅用于「宿主原生」对比 demo;项目内通常请用 `notify`。
10
+ */
11
+ export function showHostToast(message, opts) {
12
+ if (typeof document === 'undefined')
13
+ return;
14
+ const container = document.createElement('div');
15
+ document.body.appendChild(container);
16
+ const root = createRoot(container);
17
+ const close = () => {
18
+ root.unmount();
19
+ container.remove();
20
+ };
21
+ root.render(h(Official.Toast, {
22
+ text: message,
23
+ tone: opts?.tone,
24
+ holdMs: opts?.holdMs ?? 3000,
25
+ actions: opts?.actions !== undefined
26
+ ? opts.actions.map((a) => ({ label: a.text, onClick: a.onClick }))
27
+ : undefined,
28
+ onDone: () => {
29
+ close();
30
+ opts?.onDismiss?.();
31
+ },
32
+ }));
33
+ }
34
+ //# sourceMappingURL=host-toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-toast.js","sourceRoot":"","sources":["../../../src/ui/feedback/host-toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAkBzC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAuB;IACpE,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC/C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IACpC,MAAM,IAAI,GAAS,UAAU,CAAC,SAAS,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,SAAS,CAAC,MAAM,EAAE,CAAA;IACpB,CAAC,CAAA;IACD,IAAI,CAAC,MAAM,CACT,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;QAChB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;QAC5B,OAAO,EACL,IAAI,EAAE,OAAO,KAAK,SAAS;YACzB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,SAAS;QACf,MAAM,EAAE,GAAG,EAAE;YACX,KAAK,EAAE,CAAA;YACP,IAAI,EAAE,SAAS,EAAE,EAAE,CAAA;QACrB,CAAC;KACF,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface LogoPath {
2
+ d: string;
3
+ fill: string;
4
+ }
5
+ export declare const BAR_PATHS: readonly LogoPath[];
6
+ //# sourceMappingURL=loader-bar-art.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-bar-art.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/loader-bar-art.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAIxC,CAAA"}
@@ -0,0 +1,6 @@
1
+ export const BAR_PATHS = [
2
+ { d: "M0 384m128 0l768 0q128 0 128 128l0 0q0 128-128 128l-768 0q-128 0-128-128l0 0q0-128 128-128Z", fill: "#455A64" },
3
+ { d: "M128 426.666667h554.666667v170.666666H128a85.333333 85.333333 0 0 1-85.333333-85.333333 85.333333 85.333333 0 0 1 85.333333-85.333333z", fill: "#2196F3" },
4
+ { d: "M256 426.666667l-42.666667 170.666666h42.666667l42.666667-170.666666h-42.666667zM170.666667 426.666667l-42.666667 170.666666h42.666667l42.666666-170.666666H170.666667zM53.76 553.173333a83.84 83.84 0 0 0 34.133333 33.706667L128 426.666667a85.333333 85.333333 0 0 0-46.08 13.653333zM341.333333 426.666667l-42.666666 170.666666h42.666666l42.666667-170.666666h-42.666667zM640 597.333333h42.666667v-170.666666l-42.666667 170.666666zM426.666667 426.666667l-42.666667 170.666666h42.666667l42.666666-170.666666h-42.666666zM597.333333 426.666667l-42.666666 170.666666h42.666666l42.666667-170.666666h-42.666667zM512 426.666667l-42.666667 170.666666h42.666667l42.666667-170.666666h-42.666667z", fill: "#42A5F5" },
5
+ ];
6
+ //# sourceMappingURL=loader-bar-art.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-bar-art.js","sourceRoot":"","sources":["../../../src/ui/feedback/loader-bar-art.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C,EAAE,CAAC,EAAE,6FAA6F,EAAE,IAAI,EAAE,SAAS,EAAE;IACrH,EAAE,CAAC,EAAE,wIAAwI,EAAE,IAAI,EAAE,SAAS,EAAE;IAChK,EAAE,CAAC,EAAE,2qBAA2qB,EAAE,IAAI,EAAE,SAAS,EAAE;CACpsB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const LOADER_BAR_CSS = "/* \u2500\u2500 LoaderBar\uFF1A\u80F6\u56CA\u4E0D\u5B9A\u8FDB\u5EA6 loading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u6E90\u56FE\u5F62\u662F\u300C\u8F68\u9053 + \u84DD\u8272\u6BB5 + \u659C\u7EB9\u300D\u7684\u80F6\u56CA\u6761\u3002\u4E0E Loader \u540C\u65CF\uFF08Loader \u5BB6\u65CF\uFF1A\n Loader \u901A\u7528\u56FE\u6807 / LoaderBar \u80F6\u56CA\u4E0D\u5B9A\u8FDB\u5EA6\uFF09\uFF0C\u540C\u6837\u53EA\u753B\u56FE\u5F62\uFF1A\u4E0D\u5E26\u80CC\u666F\u3001\u4E0D\u5E26\u5B9A\u4F4D\u3002\n\n \u52A8\u7684\u662F**\u659C\u7EB9**\uFF0C\u4E0D\u662F\u84DD\u8272\u6BB5\uFF1A\u84DD\u8272\u90A3\u534A\u622A\u56FA\u5B9A\u4E0D\u52A8\uFF0C\u53EA\u6709\u5B83\u4E0A\u9762\u7684\u4E00\u9053\u9053\u7EC6\u659C\u6761\n \u5728\u8D70\uFF0C\u770B\u7740\u50CF\u6761\u7EB9\u5728\u6D41\u52A8 / \u8F6C\u3002\u8FD9\u7B26\u5408\u6E90\u56FE\u610F\u56FE \u2014\u2014 \u659C\u7EB9\u672C\u6765\u5C31\u662F\u8868\u793A\u300C\u8FDB\u884C\u4E2D\u300D\u3002\n\n \u5C3A\u5BF8\u6863\u6309**\u9AD8\u5EA6**\u7ED9\uFF08\u5BBD\u56FA\u5B9A 4:1\uFF09\uFF0C\u56E0\u4E3A\u56FE\u5F62\u672C\u8EAB\u662F\u6A2A\u6761\uFF0C\u65B9\u5F62\u5C3A\u5BF8\u8F74\u6CA1\u610F\u4E49\u3002 */\n\n.dshpc-loader-bar { display: inline-block; flex: none; vertical-align: middle; line-height: 0; }\n\n.dshpc-loader-bar--xs { width: 48px; height: 12px; }\n.dshpc-loader-bar--sm { width: 64px; height: 16px; }\n.dshpc-loader-bar--md { width: 96px; height: 24px; }\n.dshpc-loader-bar--lg { width: 128px; height: 32px; }\n.dshpc-loader-bar--xl { width: 192px; height: 48px; }\n\n/* \u659C\u7EB9\u5355\u5411\u5FAA\u73AF\u5E73\u79FB\u300285.333 \u662F\u4E00\u4E2A\u6761\u7EB9\u5468\u671F\uFF08\u6E90\u56FE\u76F8\u90BB\u659C\u7EBF\u7684\u95F4\u8DDD\uFF0C\u7528\u6237\u5355\u4F4D\uFF09\uFF1A\n \u5E73\u79FB\u6574\u6574\u4E00\u4E2A\u5468\u671F\u540E\u4E0E\u539F\u56FE\u91CD\u5408 \u21D2 \u5FAA\u73AF\u5904\u770B\u4E0D\u51FA\u63A5\u7F1D\u3002\n \u26A0\uFE0F \u8FD9\u4E2A\u6570\u5B57\u5FC5\u987B\u4E0E LoaderBar.ts \u91CC\u7684 STRIPE_PERIOD \u4E00\u81F4\uFF08\u7EC4\u4EF6\u9760\u5B83\u590D\u5236\u4E00\u4EFD\u5DE6\u4FA7\u8865\u56FE\uFF09\u3002\n \u5916\u5C42 <g clip-path> \u9759\u6B62\u3001\u53EA\u52A8\u8FD9\u4E00\u5C42 \u2014\u2014 \u82E5\u628A clip \u4E0E transform \u653E\u540C\u4E00\u5C42\uFF0C\n \u88C1\u526A\u6846\u4F1A\u8DDF\u7740\u4E00\u8D77\u79FB\uFF0C\u7B49\u4E8E\u6CA1\u88C1\uFF0C\u6761\u7EB9\u4F1A\u9732\u5230\u84DD\u8272\u6BB5\u5916\u9762\u3002 */\n.dshpc-loader-bar__stripe { animation: dshpc-loader-bar-flow .55s linear infinite; }\n@keyframes dshpc-loader-bar-flow {\n from { transform: translateX(0) }\n to { transform: translateX(85.333px) }\n}\n\n/* animated={false}\uFF1A\u6761\u7EB9\u505C\u5728\u539F\u4F4D\u3002 */\n.dshpc-loader-bar--still .dshpc-loader-bar__stripe { animation: none; }\n\n@media (prefers-reduced-motion: reduce) {\n .dshpc-loader-bar__stripe { animation: none; }\n}\n";
2
+ //# sourceMappingURL=loader-bar-css.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-bar-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/loader-bar-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,++FAA4zC,CAAA"}
@@ -0,0 +1,4 @@
1
+ // ⚠️ 生成物,勿手改。真源 = src/ui/feedback/loader-bar.css
2
+ // 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
3
+ export const LOADER_BAR_CSS = "/* ── LoaderBar:胶囊不定进度 loading ───────────────────────────────────────\n 源图形是「轨道 + 蓝色段 + 斜纹」的胶囊条。与 Loader 同族(Loader 家族:\n Loader 通用图标 / LoaderBar 胶囊不定进度),同样只画图形:不带背景、不带定位。\n\n 动的是**斜纹**,不是蓝色段:蓝色那半截固定不动,只有它上面的一道道细斜条\n 在走,看着像条纹在流动 / 转。这符合源图意图 —— 斜纹本来就是表示「进行中」。\n\n 尺寸档按**高度**给(宽固定 4:1),因为图形本身是横条,方形尺寸轴没意义。 */\n\n.dshpc-loader-bar { display: inline-block; flex: none; vertical-align: middle; line-height: 0; }\n\n.dshpc-loader-bar--xs { width: 48px; height: 12px; }\n.dshpc-loader-bar--sm { width: 64px; height: 16px; }\n.dshpc-loader-bar--md { width: 96px; height: 24px; }\n.dshpc-loader-bar--lg { width: 128px; height: 32px; }\n.dshpc-loader-bar--xl { width: 192px; height: 48px; }\n\n/* 斜纹单向循环平移。85.333 是一个条纹周期(源图相邻斜线的间距,用户单位):\n 平移整整一个周期后与原图重合 ⇒ 循环处看不出接缝。\n ⚠️ 这个数字必须与 LoaderBar.ts 里的 STRIPE_PERIOD 一致(组件靠它复制一份左侧补图)。\n 外层 <g clip-path> 静止、只动这一层 —— 若把 clip 与 transform 放同一层,\n 裁剪框会跟着一起移,等于没裁,条纹会露到蓝色段外面。 */\n.dshpc-loader-bar__stripe { animation: dshpc-loader-bar-flow .55s linear infinite; }\n@keyframes dshpc-loader-bar-flow {\n from { transform: translateX(0) }\n to { transform: translateX(85.333px) }\n}\n\n/* animated={false}:条纹停在原位。 */\n.dshpc-loader-bar--still .dshpc-loader-bar__stripe { animation: none; }\n\n@media (prefers-reduced-motion: reduce) {\n .dshpc-loader-bar__stripe { animation: none; }\n}\n";
4
+ //# sourceMappingURL=loader-bar-css.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-bar-css.generated.js","sourceRoot":"","sources":["../../../src/ui/feedback/loader-bar-css.generated.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,yzCAAyzC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const LOADER_CSS = "/* \u2500\u2500 Loader\uFF1A\u7EDF\u4E00\u7684\u52A0\u8F7D\u52A8\u753B\u56FE\u6807\uFF08\u65E0\u80CC\u666F / \u65E0\u5B9A\u4F4D / \u989C\u8272\u8DDF\u968F currentColor\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u5F62\u6001 \u00D7 \u5C3A\u5BF8\u4E24\u8F74\u6B63\u4EA4\uFF1A\u5F62\u6001\u7BA1\u51E0\u4F55\u4E0E\u52A8\u753B\uFF1B\u5C3A\u5BF8\u6863\u53EA\u6539 width / height\uFF0C\u51E0\u4F55\u6309\n viewBox=\"0 0 24 24\" \u7B49\u6BD4\u7F29\u653E \u2014\u2014 \u4E00\u5957\u51E0\u4F55\u5403\u4E94\u6863\uFF0C12px \u65F6\u63CF\u8FB9\u5373 1.5px\u300148px \u65F6 6px\uFF0C\n \u89C6\u89C9\u91CD\u91CF\u4E00\u81F4\uFF0C\u4E0D\u7528\u9010\u4E2A\u5C3A\u5BF8\u6362\u7B97 calc\u3002\n\n \u8FB9\u754C\uFF1A\u672C\u63A7\u4EF6**\u53EA\u7BA1\u56FE\u6807\u672C\u8EAB**\u3002\u80CC\u666F / \u5706\u89D2 / \u5185\u8DDD / \u9634\u5F71 / \u5B9A\u4F4D\uFF08fixed\u3001\u5C45\u4E2D\u3001\u6F02\u6D6E\uFF09\n \u4E00\u5F8B\u5F52\u8C03\u7528\u65B9 \u2014\u2014 \u5957 Chip\u3001\u5957 Card\uFF0C\u6216\u81EA\u5DF1\u5305\u4E00\u4E2A div\u3002 */\n\n.dshpc-loader { display: inline-block; flex: none; vertical-align: middle; line-height: 0; color: inherit; }\n\n.dshpc-loader--xs { width: 12px; height: 12px; }\n.dshpc-loader--sm { width: 16px; height: 16px; }\n.dshpc-loader--md { width: 24px; height: 24px; }\n.dshpc-loader--lg { width: 32px; height: 32px; }\n.dshpc-loader--xl { width: 48px; height: 48px; }\n\n/* \u5F62\u6001\u4E00 ring\uFF1A\u5F00\u53E3\u5F27\u6574\u4F53\u65CB\u8F6C\u3002\u5FC5\u987B\u8D70 SVG \u77E2\u91CF\u5F27 \u2014\u2014 \u6B21\u50CF\u7D20\u8FB9\u6846\u753B\u5706\u5728 12px \u4E0B\u4F1A\u88AB\n \u6297\u952F\u9F7F\u62C9\u6BDB\u3001\u770B\u7740\u50CF\u5706\u89D2\u65B9\uFF082026-10-20 \u771F\u673A\u5B9E\u6D4B\uFF0C\u66FE\u88AB\u8BEF\u5224\u6210 border-radius \u88AB\u8986\u76D6\uFF09\u3002 */\n.dshpc-loader--ring { animation: dshpc-loader-rotate .8s linear infinite; }\n@keyframes dshpc-loader-rotate { to { transform: rotate(360deg) } }\n\n/* \u5F62\u6001\u4E8C blocks\uFF1A\u4E09\u4E2A\u65B9\u5757\u4F9D\u6B21\u8109\u52A8\u653E\u5927\u3002\n transform-box: fill-box \u662F SVG \u5B50\u5143\u7D20\u505A CSS transform \u7684\u5FC5\u8981\u6761\u4EF6 \u2014\u2014 \u5426\u5219 origin\n \u843D\u5728 viewBox \u539F\u70B9\uFF0C\u8282\u70B9\u4F1A\u7ED5\u7740\u5DE6\u4E0A\u89D2\u98DE\u51FA\u53BB\u3002 */\n.dshpc-loader__node { transform-box: fill-box; transform-origin: center; }\n.dshpc-loader--blocks .dshpc-loader__node { animation: dshpc-loader-blink 1.2s ease-in-out infinite; }\n.dshpc-loader__node:nth-child(2) { animation-delay: .15s; }\n.dshpc-loader__node:nth-child(3) { animation-delay: .3s; }\n@keyframes dshpc-loader-blink {\n 0%, 80%, 100% { opacity: .25; transform: scale(.8) }\n 40% { opacity: 1; transform: scale(1) }\n}\n\n/* \u964D\u4F4E\u52A8\u6548\uFF1A\u505C\u5728\u300C\u5168\u90E8\u53EF\u89C1\u3001\u5B9E\u4F53\u5927\u5C0F\u300D\uFF0C\u800C\u4E0D\u662F\u505C\u5728\u52A8\u753B\u4E2D\u9014\u7684\u534A\u900F\u660E\u5C0F\u70B9\u3002 */\n@media (prefers-reduced-motion: reduce) {\n .dshpc-loader--ring { animation: none; }\n .dshpc-loader__node { animation: none; opacity: 1; transform: none; }\n}\n";
2
+ //# sourceMappingURL=loader-css.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/loader-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,slGAA2rD,CAAA"}