@orbit-work/ui 0.1.1 → 0.1.2

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 (794) hide show
  1. package/README.md +59 -57
  2. package/dist/about-window.cjs +271 -1
  3. package/dist/about-window.cjs.map +1 -0
  4. package/dist/about-window.d.cts +20 -2
  5. package/dist/about-window.d.ts +20 -2
  6. package/dist/about-window.js +271 -1
  7. package/dist/about-window.js.map +1 -0
  8. package/dist/appearance-D7uh_ZTy.d.cts +192 -0
  9. package/dist/appearance-D7uh_ZTy.d.ts +192 -0
  10. package/dist/appearance.cjs +39 -1
  11. package/dist/appearance.cjs.map +1 -0
  12. package/dist/appearance.d.cts +1 -1
  13. package/dist/appearance.d.ts +1 -1
  14. package/dist/appearance.js +39 -1
  15. package/dist/appearance.js.map +1 -0
  16. package/dist/browser-annotation-popup.cjs +9 -1
  17. package/dist/browser-annotation-popup.cjs.map +1 -0
  18. package/dist/browser-annotation-popup.d.cts +6 -6
  19. package/dist/browser-annotation-popup.d.ts +6 -6
  20. package/dist/browser-annotation-popup.js +9 -1
  21. package/dist/browser-annotation-popup.js.map +1 -0
  22. package/dist/chunk-66VEV7G2.js +111 -0
  23. package/dist/chunk-66VEV7G2.js.map +1 -0
  24. package/dist/chunk-KRP43SUA.cjs +1130 -0
  25. package/dist/chunk-KRP43SUA.cjs.map +1 -0
  26. package/dist/chunk-QS55W5Q5.cjs +111 -0
  27. package/dist/chunk-QS55W5Q5.cjs.map +1 -0
  28. package/dist/chunk-S3R5QFO4.js +1130 -0
  29. package/dist/chunk-S3R5QFO4.js.map +1 -0
  30. package/dist/chunk-UT5LC6MR.js +38 -0
  31. package/dist/chunk-UT5LC6MR.js.map +1 -0
  32. package/dist/chunk-ZZTEY4YX.cjs +38 -0
  33. package/dist/chunk-ZZTEY4YX.cjs.map +1 -0
  34. package/dist/core.css +7886 -0
  35. package/dist/file-tree.css +85 -0
  36. package/dist/index-nLo7jMlP.d.cts +166 -0
  37. package/dist/index-nLo7jMlP.d.ts +166 -0
  38. package/dist/index.cjs +39161 -26
  39. package/dist/index.cjs.map +1 -0
  40. package/dist/index.d.cts +3785 -3031
  41. package/dist/index.d.ts +3785 -3031
  42. package/dist/index.js +39161 -26
  43. package/dist/index.js.map +1 -0
  44. package/dist/locale.cjs +15 -0
  45. package/dist/locale.cjs.map +1 -0
  46. package/dist/locale.d.cts +28 -0
  47. package/dist/locale.d.ts +28 -0
  48. package/dist/locale.js +15 -0
  49. package/dist/locale.js.map +1 -0
  50. package/dist/office.css +1146 -0
  51. package/dist/slot-core.cjs +200 -0
  52. package/dist/slot-core.cjs.map +1 -0
  53. package/dist/slot-core.d.cts +146 -0
  54. package/dist/slot-core.d.ts +146 -0
  55. package/dist/slot-core.js +200 -0
  56. package/dist/slot-core.js.map +1 -0
  57. package/dist/slot-react.cjs +153 -0
  58. package/dist/slot-react.cjs.map +1 -0
  59. package/dist/slot-react.d.cts +36 -0
  60. package/dist/slot-react.d.ts +36 -0
  61. package/dist/slot-react.js +153 -0
  62. package/dist/slot-react.js.map +1 -0
  63. package/dist/tailwind.css +137 -0
  64. package/dist/workbench.css +9014 -0
  65. package/package.json +112 -47
  66. package/dist/appearance-D5uQ53j3.d.cts +0 -210
  67. package/dist/appearance-D5uQ53j3.d.ts +0 -210
  68. package/dist/chunk-3KT7IU4X.js +0 -13
  69. package/dist/chunk-5VLBKOG7.cjs +0 -194
  70. package/dist/chunk-7YJY64LZ.js +0 -82
  71. package/dist/chunk-EF2BSN3K.cjs +0 -13
  72. package/dist/chunk-GMMYDILD.cjs +0 -82
  73. package/dist/chunk-VG7FQQ7K.js +0 -194
  74. package/dist/fonts/JetBrainsMono-Medium.ttf +0 -0
  75. package/dist/fonts/JetBrainsMono-Regular.ttf +0 -0
  76. package/dist/fonts/SpaceGrotesk-700-latin-ext.woff2 +0 -0
  77. package/dist/fonts/SpaceGrotesk-700-latin.woff2 +0 -0
  78. package/dist/index.css +0 -1
  79. package/dist/orbitwork.css +0 -22145
  80. package/src/components/Layout/AppLayout/AppLayout.stories.tsx +0 -246
  81. package/src/components/Layout/AppLayout/AppLayoutSource.test.mjs +0 -37
  82. package/src/components/Layout/AppLayout/index.tsx +0 -122
  83. package/src/components/Layout/Sidebar/index.tsx +0 -13
  84. package/src/components/Layout/SidebarShell/SidebarShell.stories.tsx +0 -676
  85. package/src/components/Layout/SidebarShell/SidebarShellSource.test.mjs +0 -161
  86. package/src/components/Layout/SidebarShell/index.tsx +0 -326
  87. package/src/components/Layout/index.ts +0 -10
  88. package/src/components/composite/ActionBar/ActionBar.stories.tsx +0 -26
  89. package/src/components/composite/ActionBar/index.tsx +0 -31
  90. package/src/components/composite/ActionStatus/ActionStatus.stories.tsx +0 -60
  91. package/src/components/composite/ActionStatus/index.tsx +0 -21
  92. package/src/components/composite/AskQuestionCardView/AskQuestionCardView.stories.tsx +0 -175
  93. package/src/components/composite/AskQuestionCardView/AskQuestionCardViewSource.test.mjs +0 -92
  94. package/src/components/composite/AskQuestionCardView/index.tsx +0 -119
  95. package/src/components/composite/AssistantChannelCard/AssistantChannelCard.stories.tsx +0 -265
  96. package/src/components/composite/AssistantChannelCard/AssistantChannelCardSource.test.mjs +0 -45
  97. package/src/components/composite/AssistantChannelCard/index.tsx +0 -102
  98. package/src/components/composite/AssistantToggleRow/AssistantToggleRow.stories.tsx +0 -197
  99. package/src/components/composite/AssistantToggleRow/index.tsx +0 -35
  100. package/src/components/composite/AttachmentCard/AttachmentCard.stories.tsx +0 -125
  101. package/src/components/composite/AttachmentCard/index.tsx +0 -80
  102. package/src/components/composite/BackButton/BackButton.stories.tsx +0 -93
  103. package/src/components/composite/BackButton/BackButtonSource.test.mjs +0 -29
  104. package/src/components/composite/BackButton/index.tsx +0 -48
  105. package/src/components/composite/Banner/Banner.stories.tsx +0 -180
  106. package/src/components/composite/Banner/BannerSource.test.mjs +0 -67
  107. package/src/components/composite/Banner/index.tsx +0 -125
  108. package/src/components/composite/BeaconIcons/BeaconIcons.stories.tsx +0 -153
  109. package/src/components/composite/BeaconIcons/index.tsx +0 -265
  110. package/src/components/composite/BeaconSpinner/BeaconSpinner.stories.tsx +0 -144
  111. package/src/components/composite/BeaconSpinner/index.tsx +0 -185
  112. package/src/components/composite/CatalogStates/CatalogEmptyState.stories.tsx +0 -108
  113. package/src/components/composite/CatalogStates/CatalogStates.stories.tsx +0 -53
  114. package/src/components/composite/CatalogStates/CatalogStatesSource.test.mjs +0 -149
  115. package/src/components/composite/CatalogStates/index.tsx +0 -113
  116. package/src/components/composite/Charts/Charts.stories.tsx +0 -174
  117. package/src/components/composite/Charts/ChartsSource.test.mjs +0 -111
  118. package/src/components/composite/Charts/index.tsx +0 -385
  119. package/src/components/composite/CodeBlock/CodeBlock.stories.tsx +0 -308
  120. package/src/components/composite/CodeBlock/CodeFaceSource.test.mjs +0 -89
  121. package/src/components/composite/CodeBlock/index.tsx +0 -300
  122. package/src/components/composite/CodeDiff/CodeDiff.stories.tsx +0 -169
  123. package/src/components/composite/CodeDiff/index.tsx +0 -373
  124. package/src/components/composite/CodePreview/CodePreview.stories.tsx +0 -127
  125. package/src/components/composite/CodePreview/CodePreviewSource.test.mjs +0 -43
  126. package/src/components/composite/CodePreview/index.tsx +0 -98
  127. package/src/components/composite/CommandPalette/CommandPalette.stories.tsx +0 -89
  128. package/src/components/composite/CommandPalette/CommandPaletteSource.test.mjs +0 -61
  129. package/src/components/composite/CommandPalette/index.tsx +0 -310
  130. package/src/components/composite/ContentRecommendation/ContentRecommendation.stories.tsx +0 -300
  131. package/src/components/composite/ContentRecommendation/ContentRecommendationSource.test.mjs +0 -48
  132. package/src/components/composite/ContentRecommendation/index.tsx +0 -116
  133. package/src/components/composite/ContextChip/ContextChip.stories.tsx +0 -123
  134. package/src/components/composite/ContextChip/ContextChipSource.test.mjs +0 -24
  135. package/src/components/composite/ContextChip/index.tsx +0 -25
  136. package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorSizeSource.test.mjs +0 -15
  137. package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorView.stories.tsx +0 -110
  138. package/src/components/composite/ContextUsageIndicatorView/ContextUsageLoadingSource.test.mjs +0 -23
  139. package/src/components/composite/ContextUsageIndicatorView/index.tsx +0 -139
  140. package/src/components/composite/Controls/Controls.stories.tsx +0 -227
  141. package/src/components/composite/Controls/index.tsx +0 -15
  142. package/src/components/composite/CreateProjectDialog/CreateProjectDialog.stories.tsx +0 -56
  143. package/src/components/composite/CreateProjectDialog/index.tsx +0 -70
  144. package/src/components/composite/DataManagementSectionView/DataManagementSectionView.stories.tsx +0 -123
  145. package/src/components/composite/DataManagementSectionView/DataManagementSectionViewSource.test.mjs +0 -45
  146. package/src/components/composite/DataManagementSectionView/index.tsx +0 -110
  147. package/src/components/composite/DataTable/DataTable.stories.tsx +0 -159
  148. package/src/components/composite/DataTable/DataTableSource.test.mjs +0 -96
  149. package/src/components/composite/DataTable/index.tsx +0 -373
  150. package/src/components/composite/DetailChrome/DetailChrome.stories.tsx +0 -61
  151. package/src/components/composite/DetailChrome/DetailChromeSource.test.mjs +0 -31
  152. package/src/components/composite/DetailChrome/index.tsx +0 -94
  153. package/src/components/composite/DetailPanel/DetailPanel.stories.tsx +0 -185
  154. package/src/components/composite/DetailPanel/DetailPanelSource.test.mjs +0 -49
  155. package/src/components/composite/DetailPanel/index.tsx +0 -120
  156. package/src/components/composite/DetailScaffold/DetailScaffold.stories.tsx +0 -203
  157. package/src/components/composite/DetailScaffold/DetailScaffoldSource.test.mjs +0 -38
  158. package/src/components/composite/DetailScaffold/index.tsx +0 -114
  159. package/src/components/composite/Dialog/Dialog.stories.tsx +0 -343
  160. package/src/components/composite/Dialog/DialogSource.test.mjs +0 -130
  161. package/src/components/composite/Dialog/index.tsx +0 -333
  162. package/src/components/composite/DropZone/DropZone.stories.tsx +0 -105
  163. package/src/components/composite/DropZone/DropZoneSource.test.mjs +0 -68
  164. package/src/components/composite/DropZone/index.tsx +0 -196
  165. package/src/components/composite/FSelect/FSelect.stories.tsx +0 -64
  166. package/src/components/composite/FSelect/index.tsx +0 -29
  167. package/src/components/composite/FeedbackContextMenuView/FeedbackContextMenuView.stories.tsx +0 -106
  168. package/src/components/composite/FeedbackContextMenuView/index.tsx +0 -51
  169. package/src/components/composite/FeedbackDialogView/FeedbackDialogView.stories.tsx +0 -291
  170. package/src/components/composite/FeedbackDialogView/index.tsx +0 -95
  171. package/src/components/composite/FileReferenceCard/FileReferenceCard.stories.tsx +0 -364
  172. package/src/components/composite/FileReferenceCard/FileReferenceCardSource.test.mjs +0 -48
  173. package/src/components/composite/FileReferenceCard/index.tsx +0 -122
  174. package/src/components/composite/FilterBar/FilterBar.stories.tsx +0 -167
  175. package/src/components/composite/FilterBar/FilterBarSource.test.mjs +0 -75
  176. package/src/components/composite/FilterBar/index.tsx +0 -206
  177. package/src/components/composite/FormField/FormField.stories.tsx +0 -158
  178. package/src/components/composite/FormField/FormFieldSource.test.mjs +0 -56
  179. package/src/components/composite/FormField/index.tsx +0 -219
  180. package/src/components/composite/HomeBackdrop/HomeBackdrop.stories.tsx +0 -54
  181. package/src/components/composite/HomeBackdrop/HomeBackdropSource.test.mjs +0 -50
  182. package/src/components/composite/HomeBackdrop/index.tsx +0 -53
  183. package/src/components/composite/Icons/Icons.stories.tsx +0 -153
  184. package/src/components/composite/Icons/IconsSource.test.mjs +0 -23
  185. package/src/components/composite/Icons/index.tsx +0 -1361
  186. package/src/components/composite/ImageCard/ImageCard.stories.tsx +0 -54
  187. package/src/components/composite/ImageCard/index.tsx +0 -33
  188. package/src/components/composite/ImagePreview/ImagePreview.stories.tsx +0 -172
  189. package/src/components/composite/ImagePreview/ImagePreviewSource.test.mjs +0 -95
  190. package/src/components/composite/ImagePreview/index.tsx +0 -339
  191. package/src/components/composite/ListRow/ListRow.stories.tsx +0 -257
  192. package/src/components/composite/ListRow/ListRowSource.test.mjs +0 -101
  193. package/src/components/composite/ListRow/index.tsx +0 -309
  194. package/src/components/composite/Markdown/Markdown.stories.tsx +0 -192
  195. package/src/components/composite/Markdown/MarkdownSource.test.mjs +0 -126
  196. package/src/components/composite/Markdown/MarkdownStyleSource.test.mjs +0 -152
  197. package/src/components/composite/Markdown/index.tsx +0 -702
  198. package/src/components/composite/MarkdownPreview/MarkdownPreview.stories.tsx +0 -174
  199. package/src/components/composite/MarkdownPreview/MarkdownPreviewTabsSource.test.mjs +0 -31
  200. package/src/components/composite/MarkdownPreview/MarkdownRenderedStyleSource.test.mjs +0 -84
  201. package/src/components/composite/MarkdownPreview/index.tsx +0 -140
  202. package/src/components/composite/MarkdownPreviewModalView/MarkdownPreviewModalView.stories.tsx +0 -104
  203. package/src/components/composite/MarkdownPreviewModalView/index.tsx +0 -85
  204. package/src/components/composite/MessageFeedbackDialog/MessageFeedbackDialog.stories.tsx +0 -66
  205. package/src/components/composite/MessageFeedbackDialog/index.tsx +0 -115
  206. package/src/components/composite/ModelCatalogErrorState/ModelCatalogErrorState.stories.tsx +0 -101
  207. package/src/components/composite/ModelCatalogErrorState/ModelCatalogRetrySource.test.mjs +0 -86
  208. package/src/components/composite/ModelCatalogErrorState/index.tsx +0 -59
  209. package/src/components/composite/ModelModalityFlow/ModelModalityFlow.stories.tsx +0 -224
  210. package/src/components/composite/ModelModalityFlow/ModelModalityFlowSource.test.mjs +0 -56
  211. package/src/components/composite/ModelModalityFlow/index.tsx +0 -113
  212. package/src/components/composite/ModelPickerList/ModelPickerList.stories.tsx +0 -313
  213. package/src/components/composite/ModelPickerList/index.tsx +0 -142
  214. package/src/components/composite/ModelSelect/ModelSelect.stories.tsx +0 -90
  215. package/src/components/composite/ModelSelect/index.tsx +0 -148
  216. package/src/components/composite/ModelsSettingsSectionView/ModelsSettingsSectionView.stories.tsx +0 -170
  217. package/src/components/composite/ModelsSettingsSectionView/index.tsx +0 -139
  218. package/src/components/composite/NativeControls/NativeControls.stories.tsx +0 -386
  219. package/src/components/composite/NativeControls/NativeControlsStyleSource.test.mjs +0 -63
  220. package/src/components/composite/NativeControls/index.tsx +0 -97
  221. package/src/components/composite/NavMenu/NavMenu.stories.tsx +0 -383
  222. package/src/components/composite/NavMenu/NavMenuSource.test.mjs +0 -56
  223. package/src/components/composite/NavMenu/index.tsx +0 -142
  224. package/src/components/composite/NoPlanPanelView/NoPlanPanelView.stories.tsx +0 -344
  225. package/src/components/composite/NoPlanPanelView/NoPlanPanelViewSource.test.mjs +0 -34
  226. package/src/components/composite/NoPlanPanelView/index.tsx +0 -97
  227. package/src/components/composite/OpenWithButton/OpenWithButton.stories.tsx +0 -78
  228. package/src/components/composite/OpenWithButton/index.tsx +0 -46
  229. package/src/components/composite/OrbitworkLogo/OrbitworkLogo.stories.tsx +0 -192
  230. package/src/components/composite/OrbitworkLogo/index.tsx +0 -207
  231. package/src/components/composite/OrbitworkModal/OrbitworkModal.stories.tsx +0 -58
  232. package/src/components/composite/OrbitworkModal/index.tsx +0 -31
  233. package/src/components/composite/PageHead/PageHead.stories.tsx +0 -235
  234. package/src/components/composite/PageHead/PageHeadSource.test.mjs +0 -76
  235. package/src/components/composite/PageHead/index.tsx +0 -128
  236. package/src/components/composite/PlanFeatureIcon/PlanFeatureIcon.stories.tsx +0 -205
  237. package/src/components/composite/PlanFeatureIcon/PlanFeatureIconSource.test.mjs +0 -38
  238. package/src/components/composite/PlanFeatureIcon/index.tsx +0 -48
  239. package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionView.stories.tsx +0 -231
  240. package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionViewSource.test.mjs +0 -85
  241. package/src/components/composite/PlanSettingsSectionView/index.tsx +0 -264
  242. package/src/components/composite/Popover/Popover.stories.tsx +0 -175
  243. package/src/components/composite/Popover/PopoverSource.test.mjs +0 -59
  244. package/src/components/composite/Popover/index.tsx +0 -176
  245. package/src/components/composite/PptxRenderer/ElementDispatcher/index.tsx +0 -70
  246. package/src/components/composite/PptxRenderer/PptxChromeStyleSource.test.mjs +0 -36
  247. package/src/components/composite/PptxRenderer/PptxRenderer.stories.tsx +0 -128
  248. package/src/components/composite/PptxRenderer/PptxSlide/index.tsx +0 -48
  249. package/src/components/composite/PptxRenderer/constants.ts +0 -2
  250. package/src/components/composite/PptxRenderer/elements/AudioElement/index.tsx +0 -48
  251. package/src/components/composite/PptxRenderer/elements/ChartElement/index.tsx +0 -172
  252. package/src/components/composite/PptxRenderer/elements/DiagramElement/index.tsx +0 -46
  253. package/src/components/composite/PptxRenderer/elements/GroupElement/index.tsx +0 -28
  254. package/src/components/composite/PptxRenderer/elements/ImageElement/index.tsx +0 -61
  255. package/src/components/composite/PptxRenderer/elements/MathElement/index.tsx +0 -57
  256. package/src/components/composite/PptxRenderer/elements/ShapeElement/index.tsx +0 -327
  257. package/src/components/composite/PptxRenderer/elements/TableElement/index.tsx +0 -90
  258. package/src/components/composite/PptxRenderer/elements/TextElement/index.tsx +0 -57
  259. package/src/components/composite/PptxRenderer/elements/VideoElement/index.tsx +0 -43
  260. package/src/components/composite/PptxRenderer/index.ts +0 -24
  261. package/src/components/composite/PptxRenderer/types.ts +0 -326
  262. package/src/components/composite/PptxRenderer/utils.ts +0 -129
  263. package/src/components/composite/ProjectSelect/ProjectSelect.stories.tsx +0 -112
  264. package/src/components/composite/ProjectSelect/ProjectSelectSource.test.mjs +0 -34
  265. package/src/components/composite/ProjectSelect/index.tsx +0 -155
  266. package/src/components/composite/RadioCard/RadioCard.stories.tsx +0 -130
  267. package/src/components/composite/RadioCard/RadioCardSource.test.mjs +0 -42
  268. package/src/components/composite/RadioCard/index.tsx +0 -171
  269. package/src/components/composite/RowOverflowMenu/RowOverflowMenu.stories.tsx +0 -113
  270. package/src/components/composite/RowOverflowMenu/RowOverflowMenuSource.test.mjs +0 -59
  271. package/src/components/composite/RowOverflowMenu/index.tsx +0 -101
  272. package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPrompt.stories.tsx +0 -159
  273. package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPromptSource.test.mjs +0 -71
  274. package/src/components/composite/SandboxPermissionPrompt/index.tsx +0 -157
  275. package/src/components/composite/SearchInput/SearchInput.stories.tsx +0 -127
  276. package/src/components/composite/SearchInput/index.tsx +0 -91
  277. package/src/components/composite/SearchResult/SearchResult.stories.tsx +0 -305
  278. package/src/components/composite/SearchResult/SearchResultSource.test.mjs +0 -45
  279. package/src/components/composite/SearchResult/index.tsx +0 -148
  280. package/src/components/composite/Section/Section.stories.tsx +0 -148
  281. package/src/components/composite/Section/SectionSource.test.mjs +0 -59
  282. package/src/components/composite/Section/index.tsx +0 -105
  283. package/src/components/composite/SelectionBulkBar/SelectionBulkBar.stories.tsx +0 -111
  284. package/src/components/composite/SelectionBulkBar/SelectionBulkBarSource.test.mjs +0 -44
  285. package/src/components/composite/SelectionBulkBar/index.tsx +0 -99
  286. package/src/components/composite/ShareStrip/ShareStrip.stories.tsx +0 -123
  287. package/src/components/composite/ShareStrip/index.tsx +0 -83
  288. package/src/components/composite/ShortcutSheet/ShortcutSheet.stories.tsx +0 -90
  289. package/src/components/composite/ShortcutSheet/ShortcutSheetSource.test.mjs +0 -49
  290. package/src/components/composite/ShortcutSheet/index.tsx +0 -163
  291. package/src/components/composite/SitesArtifactCardView/SitesArtifactCardView.stories.tsx +0 -328
  292. package/src/components/composite/SitesArtifactCardView/SitesArtifactCardViewSource.test.mjs +0 -45
  293. package/src/components/composite/SitesArtifactCardView/index.tsx +0 -100
  294. package/src/components/composite/Skeleton/Skeleton.stories.tsx +0 -188
  295. package/src/components/composite/Skeleton/SkeletonSource.test.mjs +0 -25
  296. package/src/components/composite/Skeleton/index.tsx +0 -152
  297. package/src/components/composite/Splash/Splash.stories.tsx +0 -150
  298. package/src/components/composite/Splash/index.tsx +0 -229
  299. package/src/components/composite/StatusTag/StatusTag.stories.tsx +0 -66
  300. package/src/components/composite/StatusTag/StatusTagSource.test.mjs +0 -64
  301. package/src/components/composite/StatusTag/index.tsx +0 -78
  302. package/src/components/composite/StepList/StepList.stories.tsx +0 -352
  303. package/src/components/composite/StepList/index.tsx +0 -23
  304. package/src/components/composite/Tag/Tag.stories.tsx +0 -279
  305. package/src/components/composite/Tag/TagSource.test.mjs +0 -67
  306. package/src/components/composite/Tag/index.tsx +0 -229
  307. package/src/components/composite/TimePicker/TimePicker.stories.tsx +0 -91
  308. package/src/components/composite/TimePicker/TimePickerSource.test.mjs +0 -98
  309. package/src/components/composite/TimePicker/index.tsx +0 -208
  310. package/src/components/composite/TitleBar/TitleBar.stories.tsx +0 -329
  311. package/src/components/composite/TitleBar/TitleBarSource.test.mjs +0 -140
  312. package/src/components/composite/TitleBar/index.tsx +0 -350
  313. package/src/components/composite/Toast/Toast.stories.tsx +0 -304
  314. package/src/components/composite/Toast/ToastSource.test.mjs +0 -63
  315. package/src/components/composite/Toast/index.tsx +0 -135
  316. package/src/components/composite/Tooltip/Tooltip.stories.tsx +0 -304
  317. package/src/components/composite/Tooltip/TooltipSource.test.mjs +0 -34
  318. package/src/components/composite/Tooltip/index.tsx +0 -204
  319. package/src/components/composite/TranscriptDividers/TranscriptDividers.stories.tsx +0 -160
  320. package/src/components/composite/TranscriptDividers/TranscriptDividersSource.test.mjs +0 -90
  321. package/src/components/composite/TranscriptDividers/index.tsx +0 -352
  322. package/src/components/composite/WCardShell/WCardShell.stories.tsx +0 -228
  323. package/src/components/composite/WCardShell/index.tsx +0 -101
  324. package/src/components/composite/index.ts +0 -81
  325. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarView.stories.tsx +0 -128
  326. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarViewSource.test.mjs +0 -69
  327. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/index.tsx +0 -212
  328. package/src/components/domain/artifacts/index.ts +0 -1
  329. package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupView.stories.tsx +0 -211
  330. package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupViewSource.test.mjs +0 -82
  331. package/src/components/domain/browser/BrowserAnnotationPopupView/index.tsx +0 -235
  332. package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarView.stories.tsx +0 -260
  333. package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarViewSource.test.mjs +0 -12
  334. package/src/components/domain/browser/BrowserDeviceToolbarView/index.tsx +0 -154
  335. package/src/components/domain/browser/BrowserFindBarView/BrowserFindBarView.stories.tsx +0 -52
  336. package/src/components/domain/browser/BrowserFindBarView/index.tsx +0 -111
  337. package/src/components/domain/browser/BrowserImportDialogView/BrowserImportDialogView.stories.tsx +0 -89
  338. package/src/components/domain/browser/BrowserImportDialogView/index.tsx +0 -155
  339. package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorView.stories.tsx +0 -197
  340. package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorViewSource.test.mjs +0 -29
  341. package/src/components/domain/browser/BrowserLoadErrorView/index.tsx +0 -45
  342. package/src/components/domain/browser/BrowserMoreMenuView/BrowserMoreMenuView.stories.tsx +0 -66
  343. package/src/components/domain/browser/BrowserMoreMenuView/index.tsx +0 -268
  344. package/src/components/domain/browser/BrowserNavBarView/BrowserNavBarView.stories.tsx +0 -149
  345. package/src/components/domain/browser/BrowserNavBarView/index.tsx +0 -156
  346. package/src/components/domain/browser/BrowserTabBarView/index.tsx +0 -18
  347. package/src/components/domain/browser/SubAgentPane/SubAgentPane.stories.tsx +0 -96
  348. package/src/components/domain/browser/SubAgentPane/SubAgentPaneSource.test.mjs +0 -48
  349. package/src/components/domain/browser/SubAgentPane/index.tsx +0 -121
  350. package/src/components/domain/browser/TerminalPane/TerminalPane.stories.tsx +0 -95
  351. package/src/components/domain/browser/TerminalPane/TerminalPaneSource.test.mjs +0 -52
  352. package/src/components/domain/browser/TerminalPane/index.tsx +0 -75
  353. package/src/components/domain/browser/WebPreview/WebPreview.stories.tsx +0 -71
  354. package/src/components/domain/browser/WebPreview/index.tsx +0 -141
  355. package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsole.stories.tsx +0 -61
  356. package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsoleSource.test.mjs +0 -66
  357. package/src/components/domain/browser/WebPreviewConsole/index.tsx +0 -239
  358. package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialog.stories.tsx +0 -288
  359. package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialogSource.test.mjs +0 -62
  360. package/src/components/domain/browser/WebPreviewDialog/index.tsx +0 -82
  361. package/src/components/domain/browser/WebPreviewNav/WebPreviewNav.stories.tsx +0 -462
  362. package/src/components/domain/browser/WebPreviewNav/WebPreviewNavSource.test.mjs +0 -353
  363. package/src/components/domain/browser/WebPreviewNav/index.tsx +0 -351
  364. package/src/components/domain/browser/WebPreviewShell/WebPreviewShell.stories.tsx +0 -226
  365. package/src/components/domain/browser/WebPreviewShell/WebPreviewShellSource.test.mjs +0 -172
  366. package/src/components/domain/browser/WebPreviewShell/index.tsx +0 -324
  367. package/src/components/domain/browser/index.ts +0 -45
  368. package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegment.stories.tsx +0 -107
  369. package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegmentSource.test.mjs +0 -45
  370. package/src/components/domain/chat/AgentLoopSegment/index.tsx +0 -29
  371. package/src/components/domain/chat/AgentTurn/AgentTurn.stories.tsx +0 -162
  372. package/src/components/domain/chat/AgentTurn/AgentTurnSource.test.mjs +0 -98
  373. package/src/components/domain/chat/AgentTurn/beaconContext.ts +0 -37
  374. package/src/components/domain/chat/AgentTurn/index.tsx +0 -226
  375. package/src/components/domain/chat/ArtifactCard/ArtifactCard.stories.tsx +0 -127
  376. package/src/components/domain/chat/ArtifactCard/index.tsx +0 -249
  377. package/src/components/domain/chat/Attachment/Attachment.stories.tsx +0 -235
  378. package/src/components/domain/chat/Attachment/AttachmentSource.test.mjs +0 -160
  379. package/src/components/domain/chat/Attachment/index.tsx +0 -857
  380. package/src/components/domain/chat/AuthorizationCard/AuthorizationCard.stories.tsx +0 -53
  381. package/src/components/domain/chat/AuthorizationCard/AuthorizationCardSource.test.mjs +0 -80
  382. package/src/components/domain/chat/AuthorizationCard/index.tsx +0 -89
  383. package/src/components/domain/chat/ChatBubble/ChatBubble.stories.tsx +0 -32
  384. package/src/components/domain/chat/ChatBubble/index.tsx +0 -24
  385. package/src/components/domain/chat/ChatMessage/ChatMessage.stories.tsx +0 -31
  386. package/src/components/domain/chat/ChatMessage/index.tsx +0 -23
  387. package/src/components/domain/chat/ChatR2ReviewSource.test.mjs +0 -98
  388. package/src/components/domain/chat/ChatThinking/ChatThinking.stories.tsx +0 -125
  389. package/src/components/domain/chat/ChatThinking/index.tsx +0 -55
  390. package/src/components/domain/chat/Chatbot/Chatbot.stories.tsx +0 -49
  391. package/src/components/domain/chat/Chatbot/index.tsx +0 -37
  392. package/src/components/domain/chat/Composer/Composer.stories.tsx +0 -227
  393. package/src/components/domain/chat/Composer/ComposerSource.test.mjs +0 -175
  394. package/src/components/domain/chat/Composer/index.tsx +0 -450
  395. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.stories.tsx +0 -203
  396. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.tsx +0 -110
  397. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrumSource.test.mjs +0 -54
  398. package/src/components/domain/chat/Composer/parts/ComposerAuthorization.stories.tsx +0 -155
  399. package/src/components/domain/chat/Composer/parts/ComposerAuthorization.tsx +0 -108
  400. package/src/components/domain/chat/Composer/parts/ComposerMentions.stories.tsx +0 -76
  401. package/src/components/domain/chat/Composer/parts/ComposerMentions.tsx +0 -83
  402. package/src/components/domain/chat/Composer/parts/ComposerMentionsSource.test.mjs +0 -85
  403. package/src/components/domain/chat/Composer/parts/ComposerMenu.stories.tsx +0 -266
  404. package/src/components/domain/chat/Composer/parts/ComposerMenu.tsx +0 -232
  405. package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.stories.tsx +0 -166
  406. package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.tsx +0 -87
  407. package/src/components/domain/chat/Composer/parts/ComposerMenuPopoverSource.test.mjs +0 -56
  408. package/src/components/domain/chat/Composer/parts/ComposerPopover.stories.tsx +0 -257
  409. package/src/components/domain/chat/Composer/parts/ComposerPopover.tsx +0 -221
  410. package/src/components/domain/chat/Composer/parts/ComposerPopoverSource.test.mjs +0 -71
  411. package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.stories.tsx +0 -260
  412. package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.tsx +0 -246
  413. package/src/components/domain/chat/Composer/parts/ComposerProjectPickerSource.test.mjs +0 -46
  414. package/src/components/domain/chat/Composer/parts/ComposerQueue.stories.tsx +0 -275
  415. package/src/components/domain/chat/Composer/parts/ComposerQueue.tsx +0 -155
  416. package/src/components/domain/chat/Composer/parts/ComposerQueueSource.test.mjs +0 -95
  417. package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.stories.tsx +0 -77
  418. package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.tsx +0 -70
  419. package/src/components/domain/chat/Composer/parts/mountChip.ts +0 -21
  420. package/src/components/domain/chat/ContextUsage/ContextUsage.stories.tsx +0 -62
  421. package/src/components/domain/chat/ContextUsage/index.tsx +0 -69
  422. package/src/components/domain/chat/ExecutionSummary/ExecutionSummary.stories.tsx +0 -238
  423. package/src/components/domain/chat/ExecutionSummary/ExecutionSummarySource.test.mjs +0 -210
  424. package/src/components/domain/chat/ExecutionSummary/index.tsx +0 -487
  425. package/src/components/domain/chat/Message/Message.stories.tsx +0 -264
  426. package/src/components/domain/chat/Message/index.tsx +0 -44
  427. package/src/components/domain/chat/MessageActions/MessageActions.stories.tsx +0 -132
  428. package/src/components/domain/chat/MessageActions/MessageActionsSource.test.mjs +0 -79
  429. package/src/components/domain/chat/MessageActions/index.tsx +0 -186
  430. package/src/components/domain/chat/PlanCard/PlanCard.stories.tsx +0 -87
  431. package/src/components/domain/chat/PlanCard/index.tsx +0 -170
  432. package/src/components/domain/chat/RichContent/RichContent.stories.tsx +0 -102
  433. package/src/components/domain/chat/RichContent/RichContentSource.test.mjs +0 -82
  434. package/src/components/domain/chat/RichContent/index.tsx +0 -465
  435. package/src/components/domain/chat/SubAgentThread/SubAgentThread.stories.tsx +0 -119
  436. package/src/components/domain/chat/SubAgentThread/index.tsx +0 -104
  437. package/src/components/domain/chat/Thinking/Thinking.stories.tsx +0 -196
  438. package/src/components/domain/chat/Thinking/ThinkingInlineSource.test.mjs +0 -154
  439. package/src/components/domain/chat/Thinking/index.tsx +0 -237
  440. package/src/components/domain/chat/ToolCallRow/ToolCallRow.stories.tsx +0 -105
  441. package/src/components/domain/chat/ToolCallRow/ToolCallRowSource.test.mjs +0 -83
  442. package/src/components/domain/chat/ToolCallRow/index.tsx +0 -113
  443. package/src/components/domain/chat/Transcript/Transcript.stories.tsx +0 -296
  444. package/src/components/domain/chat/Transcript/TranscriptSource.test.mjs +0 -189
  445. package/src/components/domain/chat/Transcript/index.tsx +0 -187
  446. package/src/components/domain/chat/TranscriptSpine/TranscriptSpine.stories.tsx +0 -124
  447. package/src/components/domain/chat/TranscriptSpine/index.tsx +0 -245
  448. package/src/components/domain/chat/UserTurn/UserTurn.stories.tsx +0 -176
  449. package/src/components/domain/chat/UserTurn/UserTurnSource.test.mjs +0 -150
  450. package/src/components/domain/chat/UserTurn/index.tsx +0 -194
  451. package/src/components/domain/chat/index.ts +0 -22
  452. package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuView.stories.tsx +0 -116
  453. package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuViewSource.test.mjs +0 -80
  454. package/src/components/domain/desktop/DesktopAccountMenuView/index.tsx +0 -355
  455. package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettings.stories.tsx +0 -96
  456. package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettingsSource.test.mjs +0 -89
  457. package/src/components/domain/desktop/DesktopAppearanceSettings/index.tsx +0 -155
  458. package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigView.stories.tsx +0 -275
  459. package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigViewSource.test.mjs +0 -37
  460. package/src/components/domain/desktop/DesktopAssistantConfigView/index.tsx +0 -221
  461. package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogView.stories.tsx +0 -537
  462. package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogViewSource.test.mjs +0 -339
  463. package/src/components/domain/desktop/DesktopCatalogView/index.tsx +0 -1074
  464. package/src/components/domain/desktop/DesktopChatBranchDivider/DesktopChatBranchDivider.stories.tsx +0 -58
  465. package/src/components/domain/desktop/DesktopChatBranchDivider/index.tsx +0 -33
  466. package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateView.stories.tsx +0 -75
  467. package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateViewSource.test.mjs +0 -54
  468. package/src/components/domain/desktop/DesktopChatEmptyStateView/index.tsx +0 -64
  469. package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderView.stories.tsx +0 -83
  470. package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderViewSource.test.mjs +0 -126
  471. package/src/components/domain/desktop/DesktopChatHeaderView/index.tsx +0 -169
  472. package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageView.stories.tsx +0 -170
  473. package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageViewSource.test.mjs +0 -47
  474. package/src/components/domain/desktop/DesktopChatMessageView/index.tsx +0 -213
  475. package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnView.stories.tsx +0 -498
  476. package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnViewSource.test.mjs +0 -187
  477. package/src/components/domain/desktop/DesktopChatTurnView/index.tsx +0 -490
  478. package/src/components/domain/desktop/DesktopComposer/DesktopComposer.stories.tsx +0 -195
  479. package/src/components/domain/desktop/DesktopComposer/DesktopComposerModelPickerSource.test.mjs +0 -132
  480. package/src/components/domain/desktop/DesktopComposer/DesktopComposerMountChipSource.test.mjs +0 -43
  481. package/src/components/domain/desktop/DesktopComposer/DesktopComposerResponsiveSource.test.mjs +0 -44
  482. package/src/components/domain/desktop/DesktopComposer/DesktopMcpFormThemeSource.test.mjs +0 -30
  483. package/src/components/domain/desktop/DesktopComposer/index.tsx +0 -206
  484. package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailView.stories.tsx +0 -72
  485. package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailViewSource.test.mjs +0 -81
  486. package/src/components/domain/desktop/DesktopConnectorDetailView/index.tsx +0 -301
  487. package/src/components/domain/desktop/DesktopHomeView/DesktopHomeView.stories.tsx +0 -103
  488. package/src/components/domain/desktop/DesktopHomeView/DesktopHomeViewSource.test.mjs +0 -51
  489. package/src/components/domain/desktop/DesktopHomeView/index.tsx +0 -122
  490. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/DesktopLibraryAuthorizationDialog.stories.tsx +0 -55
  491. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/index.tsx +0 -156
  492. package/src/components/domain/desktop/DesktopLibraryPageView/DesktopLibraryPageView.stories.tsx +0 -42
  493. package/src/components/domain/desktop/DesktopLibraryPageView/index.tsx +0 -35
  494. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.css +0 -75
  495. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.stories.tsx +0 -230
  496. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginViewSource.test.mjs +0 -149
  497. package/src/components/domain/desktop/DesktopLoginView/index.tsx +0 -418
  498. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourView.stories.tsx +0 -103
  499. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourViewSource.test.mjs +0 -57
  500. package/src/components/domain/desktop/DesktopOnboardingTourView/index.tsx +0 -189
  501. package/src/components/domain/desktop/DesktopPet/DesktopPet.fixture.ts +0 -243
  502. package/src/components/domain/desktop/DesktopPet/DesktopPet.stories.tsx +0 -337
  503. package/src/components/domain/desktop/DesktopPet/DesktopPetSource.test.mjs +0 -191
  504. package/src/components/domain/desktop/DesktopPet/index.tsx +0 -591
  505. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettings.stories.tsx +0 -159
  506. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettingsSource.test.mjs +0 -76
  507. package/src/components/domain/desktop/DesktopPetSettings/index.tsx +0 -140
  508. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusView.stories.tsx +0 -166
  509. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusViewSource.test.mjs +0 -51
  510. package/src/components/domain/desktop/DesktopRunStatusView/index.tsx +0 -34
  511. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCard.stories.tsx +0 -122
  512. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCardSource.test.mjs +0 -42
  513. package/src/components/domain/desktop/DesktopSelectionCard/index.tsx +0 -75
  514. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySection.stories.tsx +0 -225
  515. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySectionSource.test.mjs +0 -105
  516. package/src/components/domain/desktop/DesktopSettingsMemorySection/index.tsx +0 -340
  517. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsView.stories.tsx +0 -177
  518. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsViewSource.test.mjs +0 -195
  519. package/src/components/domain/desktop/DesktopSettingsView/index.tsx +0 -176
  520. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarView.stories.tsx +0 -77
  521. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarViewSource.test.mjs +0 -76
  522. package/src/components/domain/desktop/DesktopShareSelectionBarView/index.tsx +0 -55
  523. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarView.stories.tsx +0 -454
  524. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarViewSource.test.mjs +0 -386
  525. package/src/components/domain/desktop/DesktopSidebarView/index.tsx +0 -1075
  526. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesView.stories.tsx +0 -369
  527. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesViewSource.test.mjs +0 -123
  528. package/src/components/domain/desktop/DesktopSiteReleasesView/index.tsx +0 -392
  529. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListView.stories.tsx +0 -244
  530. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListViewSource.test.mjs +0 -198
  531. package/src/components/domain/desktop/DesktopSitesListView/index.tsx +0 -417
  532. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageView.stories.tsx +0 -230
  533. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageViewSource.test.mjs +0 -149
  534. package/src/components/domain/desktop/DesktopSkillsPageView/index.tsx +0 -235
  535. package/src/components/domain/desktop/DesktopTaskDetailView/index.tsx +0 -111
  536. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallListViewSource.test.mjs +0 -302
  537. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallView.stories.tsx +0 -409
  538. package/src/components/domain/desktop/DesktopToolCallView/index.tsx +0 -388
  539. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShell.stories.tsx +0 -418
  540. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShellSource.test.mjs +0 -151
  541. package/src/components/domain/desktop/DesktopWorkbenchShell/index.tsx +0 -167
  542. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageView.stories.tsx +0 -135
  543. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageViewSource.test.mjs +0 -57
  544. package/src/components/domain/desktop/DesktopWorkspacePageView/index.tsx +0 -114
  545. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceView.stories.tsx +0 -227
  546. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceViewSource.test.mjs +0 -175
  547. package/src/components/domain/desktop/DesktopWorkspaceView/index.tsx +0 -580
  548. package/src/components/domain/desktop/ResourceManagement/ResourceManagement.stories.tsx +0 -19
  549. package/src/components/domain/desktop/ResourceManagement/ResourceManagementSource.test.mjs +0 -54
  550. package/src/components/domain/desktop/ResourceManagement/SharesList.tsx +0 -323
  551. package/src/components/domain/desktop/ResourceManagement/SnapshotViews.tsx +0 -92
  552. package/src/components/domain/desktop/ResourceManagement/SnapshotViewsSource.test.mjs +0 -15
  553. package/src/components/domain/desktop/ResourceManagement/index.tsx +0 -246
  554. package/src/components/domain/desktop/ShareSettingsDialogView/index.tsx +0 -234
  555. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmpty.stories.tsx +0 -100
  556. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmptySource.test.mjs +0 -67
  557. package/src/components/domain/desktop/SidePanelEmpty/index.tsx +0 -113
  558. package/src/components/domain/desktop/StarterCapsules/StarterCapsules.stories.tsx +0 -65
  559. package/src/components/domain/desktop/StarterCapsules/StarterCapsulesSource.test.mjs +0 -43
  560. package/src/components/domain/desktop/StarterCapsules/index.tsx +0 -90
  561. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanel.stories.tsx +0 -59
  562. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanelSource.test.mjs +0 -51
  563. package/src/components/domain/desktop/WorkbenchSidePanel/index.tsx +0 -74
  564. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirm.stories.tsx +0 -79
  565. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirmSource.test.mjs +0 -34
  566. package/src/components/domain/desktop/WorkspaceMigrateConfirm/index.tsx +0 -92
  567. package/src/components/domain/desktop/index.ts +0 -64
  568. package/src/components/domain/files/FileBrowser/FileBrowser.stories.tsx +0 -397
  569. package/src/components/domain/files/FileBrowser/FileBrowserSource.test.mjs +0 -75
  570. package/src/components/domain/files/FileBrowser/index.tsx +0 -221
  571. package/src/components/domain/files/FileIcon/FileIcon.stories.tsx +0 -207
  572. package/src/components/domain/files/FileIcon/FileIconSource.test.mjs +0 -39
  573. package/src/components/domain/files/FileIcon/index.tsx +0 -133
  574. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentView.stories.tsx +0 -242
  575. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentViewSource.test.mjs +0 -44
  576. package/src/components/domain/files/FilePreviewContentView/index.tsx +0 -125
  577. package/src/components/domain/files/FileTree/FileTree.stories.tsx +0 -204
  578. package/src/components/domain/files/FileTree/FileTreeSource.test.mjs +0 -18
  579. package/src/components/domain/files/FileTree/index.tsx +0 -106
  580. package/src/components/domain/files/PreviewDialog/PreviewDialog.stories.tsx +0 -178
  581. package/src/components/domain/files/PreviewDialog/PreviewDialogSource.test.mjs +0 -92
  582. package/src/components/domain/files/PreviewDialog/index.tsx +0 -294
  583. package/src/components/domain/files/index.ts +0 -5
  584. package/src/components/domain/index.ts +0 -8
  585. package/src/components/domain/office/CsvPreview/CsvPreview.stories.tsx +0 -264
  586. package/src/components/domain/office/CsvPreview/CsvPreviewSource.test.mjs +0 -77
  587. package/src/components/domain/office/CsvPreview/index.tsx +0 -224
  588. package/src/components/domain/office/OfficePreview/OfficePreview.stories.tsx +0 -265
  589. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.stories.tsx +0 -71
  590. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.tsx +0 -43
  591. package/src/components/domain/office/OfficePreview/OfficePreviewSource.test.mjs +0 -126
  592. package/src/components/domain/office/OfficePreview/index.tsx +0 -782
  593. package/src/components/domain/office/PdfPreview/PdfPreview.stories.tsx +0 -280
  594. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.stories.tsx +0 -61
  595. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.tsx +0 -61
  596. package/src/components/domain/office/PdfPreview/PdfPreviewSource.test.mjs +0 -70
  597. package/src/components/domain/office/PdfPreview/index.tsx +0 -217
  598. package/src/components/domain/office/index.ts +0 -5
  599. package/src/components/domain/skills/McpServerListView/McpServerListView.stories.tsx +0 -510
  600. package/src/components/domain/skills/McpServerListView/McpServerListViewSource.test.mjs +0 -101
  601. package/src/components/domain/skills/McpServerListView/index.tsx +0 -250
  602. package/src/components/domain/skills/SkillAvatarView/SkillAvatarView.stories.tsx +0 -121
  603. package/src/components/domain/skills/SkillAvatarView/SkillAvatarViewSource.test.mjs +0 -67
  604. package/src/components/domain/skills/SkillAvatarView/index.tsx +0 -112
  605. package/src/components/domain/skills/SkillCardView/SkillCardView.stories.tsx +0 -374
  606. package/src/components/domain/skills/SkillCardView/SkillCardViewSource.test.mjs +0 -35
  607. package/src/components/domain/skills/SkillCardView/index.tsx +0 -88
  608. package/src/components/domain/skills/SkillDetailPanelView/SkillDetailPanelView.stories.tsx +0 -113
  609. package/src/components/domain/skills/SkillDetailPanelView/index.tsx +0 -115
  610. package/src/components/domain/skills/SkillDetailView/SkillDetailView.stories.tsx +0 -274
  611. package/src/components/domain/skills/SkillDetailView/index.tsx +0 -121
  612. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogView.stories.tsx +0 -128
  613. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogViewSource.test.mjs +0 -11
  614. package/src/components/domain/skills/SkillImportDialogView/index.tsx +0 -147
  615. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalView.stories.tsx +0 -160
  616. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalViewSource.test.mjs +0 -99
  617. package/src/components/domain/skills/ToolDetailModalView/index.tsx +0 -160
  618. package/src/components/domain/skills/index.ts +0 -7
  619. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardView.stories.tsx +0 -120
  620. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardViewSource.test.mjs +0 -40
  621. package/src/components/domain/tasks/ScheduledTaskCardView/index.tsx +0 -135
  622. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialog.stories.tsx +0 -56
  623. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialogSource.test.mjs +0 -35
  624. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx +0 -73
  625. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailView.stories.tsx +0 -121
  626. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailViewSource.test.mjs +0 -115
  627. package/src/components/domain/tasks/ScheduledTaskDetailView/index.tsx +0 -223
  628. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceView.stories.tsx +0 -526
  629. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceViewSource.test.mjs +0 -85
  630. package/src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx +0 -118
  631. package/src/components/domain/tasks/index.ts +0 -4
  632. package/src/components/domain/theme/SkinManager.stories.tsx +0 -43
  633. package/src/components/domain/theme/SkinManagerUI.tsx +0 -382
  634. package/src/components/domain/theme/ThemeDemo.stories.tsx +0 -12
  635. package/src/components/domain/theme/ThemeDemo.tsx +0 -224
  636. package/src/components/index.ts +0 -11
  637. package/src/components/primitives/Avatar/Avatar.stories.tsx +0 -170
  638. package/src/components/primitives/Avatar/AvatarSource.test.mjs +0 -37
  639. package/src/components/primitives/Avatar/index.tsx +0 -180
  640. package/src/components/primitives/BackTop/BackTop.stories.tsx +0 -122
  641. package/src/components/primitives/BackTop/BackTopSource.test.mjs +0 -61
  642. package/src/components/primitives/BackTop/index.tsx +0 -93
  643. package/src/components/primitives/Badge/Badge.stories.tsx +0 -376
  644. package/src/components/primitives/Badge/BadgeSource.test.mjs +0 -27
  645. package/src/components/primitives/Badge/index.tsx +0 -65
  646. package/src/components/primitives/Button/Button.stories.tsx +0 -287
  647. package/src/components/primitives/Button/ButtonSource.test.mjs +0 -84
  648. package/src/components/primitives/Button/index.tsx +0 -216
  649. package/src/components/primitives/Card/Card.stories.tsx +0 -186
  650. package/src/components/primitives/Card/CardSource.test.mjs +0 -73
  651. package/src/components/primitives/Card/index.tsx +0 -137
  652. package/src/components/primitives/Checkbox/Checkbox.stories.tsx +0 -79
  653. package/src/components/primitives/Checkbox/CheckboxSource.test.mjs +0 -43
  654. package/src/components/primitives/Checkbox/index.tsx +0 -87
  655. package/src/components/primitives/Chip/Chip.stories.tsx +0 -149
  656. package/src/components/primitives/Chip/ChipSource.test.mjs +0 -73
  657. package/src/components/primitives/Chip/index.tsx +0 -252
  658. package/src/components/primitives/Divider/Divider.stories.tsx +0 -68
  659. package/src/components/primitives/Divider/DividerSource.test.mjs +0 -26
  660. package/src/components/primitives/Divider/index.tsx +0 -65
  661. package/src/components/primitives/Dropdown/Dropdown.stories.tsx +0 -38
  662. package/src/components/primitives/Dropdown/DropdownSource.test.mjs +0 -23
  663. package/src/components/primitives/Dropdown/index.tsx +0 -29
  664. package/src/components/primitives/EmptyState/EmptyState.stories.tsx +0 -159
  665. package/src/components/primitives/EmptyState/EmptyStateSource.test.mjs +0 -169
  666. package/src/components/primitives/EmptyState/index.tsx +0 -185
  667. package/src/components/primitives/ErrorCard/ErrorCard.stories.tsx +0 -50
  668. package/src/components/primitives/ErrorCard/index.tsx +0 -78
  669. package/src/components/primitives/Field/Field.stories.tsx +0 -208
  670. package/src/components/primitives/Field/FieldSource.test.mjs +0 -70
  671. package/src/components/primitives/Field/index.tsx +0 -297
  672. package/src/components/primitives/InlineMessage/InlineMessage.stories.tsx +0 -137
  673. package/src/components/primitives/InlineMessage/InlineMessageSource.test.mjs +0 -50
  674. package/src/components/primitives/InlineMessage/index.tsx +0 -141
  675. package/src/components/primitives/Input/Input.stories.tsx +0 -30
  676. package/src/components/primitives/Input/index.tsx +0 -12
  677. package/src/components/primitives/Keycap/Keycap.stories.tsx +0 -93
  678. package/src/components/primitives/Keycap/KeycapSource.test.mjs +0 -30
  679. package/src/components/primitives/Keycap/index.tsx +0 -67
  680. package/src/components/primitives/Menu/Menu.stories.tsx +0 -416
  681. package/src/components/primitives/Menu/MenuEmptySource.test.mjs +0 -23
  682. package/src/components/primitives/Menu/MenuSource.test.mjs +0 -207
  683. package/src/components/primitives/Menu/index.tsx +0 -922
  684. package/src/components/primitives/Pagination/Pagination.stories.tsx +0 -77
  685. package/src/components/primitives/Pagination/PaginationSource.test.mjs +0 -24
  686. package/src/components/primitives/Pagination/index.tsx +0 -85
  687. package/src/components/primitives/Pagination/pagination.ts +0 -25
  688. package/src/components/primitives/Pagination/paginationModel.test.mjs +0 -18
  689. package/src/components/primitives/ProgressBar/ProgressBar.stories.tsx +0 -103
  690. package/src/components/primitives/ProgressBar/ProgressBarSource.test.mjs +0 -44
  691. package/src/components/primitives/ProgressBar/index.tsx +0 -68
  692. package/src/components/primitives/Radio/Radio.stories.tsx +0 -84
  693. package/src/components/primitives/Radio/RadioSource.test.mjs +0 -38
  694. package/src/components/primitives/Radio/index.tsx +0 -161
  695. package/src/components/primitives/SegmentedControl/SegmentedControl.stories.tsx +0 -110
  696. package/src/components/primitives/SegmentedControl/SegmentedControlSource.test.mjs +0 -75
  697. package/src/components/primitives/SegmentedControl/index.tsx +0 -188
  698. package/src/components/primitives/Select/Select.stories.tsx +0 -158
  699. package/src/components/primitives/Select/SelectSource.test.mjs +0 -94
  700. package/src/components/primitives/Select/index.tsx +0 -364
  701. package/src/components/primitives/Spinner/index.tsx +0 -58
  702. package/src/components/primitives/Switch/Switch.stories.tsx +0 -64
  703. package/src/components/primitives/Switch/SwitchSource.test.mjs +0 -38
  704. package/src/components/primitives/Switch/index.tsx +0 -84
  705. package/src/components/primitives/Tabs/Tabs.stories.tsx +0 -230
  706. package/src/components/primitives/Tabs/TabsSource.test.mjs +0 -91
  707. package/src/components/primitives/Tabs/index.tsx +0 -183
  708. package/src/components/primitives/index.ts +0 -24
  709. package/src/examples/ResourceManagementExample.tsx +0 -119
  710. package/src/examples/SiteWorkbenchExample.tsx +0 -96
  711. package/src/hooks/index.ts +0 -7
  712. package/src/hooks/useClickOutside.ts +0 -20
  713. package/src/hooks/useDragReorder.ts +0 -29
  714. package/src/hooks/useImeAwareEnter.ts +0 -59
  715. package/src/hooks/useImeAwareEnterSource.test.mjs +0 -65
  716. package/src/hooks/useKeyboard.ts +0 -16
  717. package/src/hooks/usePopover.ts +0 -67
  718. package/src/hooks/useSelectedOptionLocator.ts +0 -33
  719. package/src/hooks/useSidebarResize.ts +0 -107
  720. package/src/hooks/useTenantTheme.ts +0 -53
  721. package/src/hooks/useUnifiedTheme.ts +0 -85
  722. package/src/index.ts +0 -6
  723. package/src/lib/InjectedStyleTokenMirrorSource.test.mjs +0 -67
  724. package/src/lib/about-window.test.mjs +0 -46
  725. package/src/lib/about-window.ts +0 -218
  726. package/src/lib/appearance.test.mjs +0 -283
  727. package/src/lib/appearance.ts +0 -46
  728. package/src/lib/browser-annotation-popup.ts +0 -151
  729. package/src/lib/focusTrap.ts +0 -51
  730. package/src/lib/index.ts +0 -5
  731. package/src/lib/shortcut.test.mjs +0 -100
  732. package/src/lib/shortcut.ts +0 -97
  733. package/src/lib/twMergeOw.ts +0 -18
  734. package/src/lib/utils.ts +0 -6
  735. package/src/screens/Browser.stories.tsx +0 -353
  736. package/src/screens/Chat.stories.tsx +0 -808
  737. package/src/screens/Home.stories.tsx +0 -253
  738. package/src/screens/Login.stories.tsx +0 -134
  739. package/src/screens/McpManager.stories.tsx +0 -159
  740. package/src/screens/Onboarding.stories.tsx +0 -155
  741. package/src/screens/ScheduledTasks.stories.tsx +0 -134
  742. package/src/screens/ScreenFrameSource.test.mjs +0 -77
  743. package/src/screens/SettingsAppearance.stories.tsx +0 -117
  744. package/src/screens/SettingsMemory.stories.tsx +0 -128
  745. package/src/screens/SettingsModels.stories.tsx +0 -228
  746. package/src/screens/SettingsSections.stories.tsx +0 -164
  747. package/src/screens/Share.stories.tsx +0 -202
  748. package/src/screens/SharePage.stories.tsx +0 -29
  749. package/src/screens/Sites.stories.tsx +0 -183
  750. package/src/screens/Skills.stories.tsx +0 -83
  751. package/src/screens/Workspace.stories.tsx +0 -191
  752. package/src/screens/_home.tsx +0 -46
  753. package/src/screens/_screen.tsx +0 -355
  754. package/src/screens/_settingsNav.ts +0 -27
  755. package/src/screens/_skillsCatalog.tsx +0 -372
  756. package/src/theme/SkinDenylistSyncSource.test.mjs +0 -124
  757. package/src/theme/__tests__/skins.test.mjs +0 -84
  758. package/src/theme/core/semanticAdapter.ts +0 -116
  759. package/src/theme/core/skin.ts +0 -605
  760. package/src/theme/core/skinScoped.ts +0 -289
  761. package/src/theme/core/tenantTheme.test.mjs +0 -127
  762. package/src/theme/core/tenantTheme.ts +0 -124
  763. package/src/theme/core/types.ts +0 -60
  764. package/src/theme/core/unifiedTheme.ts +0 -157
  765. package/src/theme/index.ts +0 -33
  766. package/src/theme/providers/BrandingProvider.tsx +0 -57
  767. package/src/theme/providers/ThemeProvider.tsx +0 -221
  768. package/src/theme/skinDs2PropertyGate.test.mjs +0 -109
  769. package/src/theme/skins/index.ts +0 -107
  770. package/src/theme/utils/cssSafety.ts +0 -92
  771. package/src/theme/utils/skinManager.ts +0 -159
  772. package/src/theme/utils/themeApplier.ts +0 -75
  773. package/src/tokens/DesktopSurfacesSweep15Source.test.mjs +0 -77
  774. package/src/tokens/SharedStyleSheetsSource.test.mjs +0 -90
  775. package/src/tokens/TailwindThemeSupplySource.test.mjs +0 -129
  776. package/src/tokens/base.ts +0 -199
  777. package/src/tokens/dark.ts +0 -288
  778. package/src/tokens/index.ts +0 -4
  779. package/src/tokens/light.ts +0 -320
  780. package/src/tokens/tailwind.ts +0 -216
  781. package/src/types/desktop-pet.ts +0 -100
  782. package/src/types/file-browser.ts +0 -51
  783. package/src/types/file-tree.ts +0 -34
  784. package/src/types/index.ts +0 -3
  785. package/src/types/xspreadsheet.d.ts +0 -4
  786. package/src/utils/cn.ts +0 -6
  787. package/src/utils/glyphColor.ts +0 -32
  788. package/src/utils/index.ts +0 -4
  789. package/src/utils/localPathInline.test.mjs +0 -45
  790. package/src/utils/localPathInline.ts +0 -49
  791. package/src/utils/markdownFileRefs.test.mjs +0 -88
  792. package/src/utils/markdownFileRefs.ts +0 -140
  793. package/src/utils/office-excel.ts +0 -452
  794. package/src/utils/shiki.ts +0 -156
@@ -1,782 +0,0 @@
1
- "use client"
2
-
3
- import {
4
- type CSSProperties,
5
- type ComponentProps,
6
- type KeyboardEvent as ReactKeyboardEvent,
7
- type ReactNode,
8
- type PointerEvent as ReactPointerEvent,
9
- memo,
10
- useCallback,
11
- useEffect,
12
- useRef,
13
- useState,
14
- } from "react"
15
- import { cn } from "../../../../lib/utils"
16
- import { createSpreadsheet, readOnlyInput, transferExcelToSpreadSheet } from "../../../../utils/office-excel"
17
- import { ZoomIn, ZoomOut } from "../../../composite/Icons"
18
- import { PptxSlide } from "../../../composite/PptxRenderer/PptxSlide"
19
- import { PT_TO_PX } from "../../../composite/PptxRenderer/constants"
20
- import type { PptxParseResult } from "../../../composite/PptxRenderer/types"
21
- import { Skeleton } from "../../../composite/Skeleton"
22
- import { Button, EmptyState, InlineMessage } from "../../../primitives"
23
- import { type AttachmentMenuOption, OpenWithMenu } from "../../chat/Attachment"
24
-
25
- // ─── OfficePreview ───
26
-
27
- /**
28
- * OfficePreview —— 04 预览域的 Office 适配器(Word / Excel / PowerPoint)。
29
- *
30
- * 归口口径(蓝图批次④「PreviewDialog 壳 + 各适配器」):适配器只负责**内容**,
31
- * 壳(标题栏读数、下载/打开方式动作组、模态立面、载/错/空三态)一律交给
32
- * `FilePreviewDialog`。`chrome={false}` 就是「我坐在壳里」的开关:关掉自绘的
33
- * 卡片边框与圆角,让内容铺满壳的内容区。开箱即用的组合见同目录 `OfficePreviewDialog`。
34
- *
35
- * 衬底制式:Office 走壳的 `plain` 而非 `paper`——三种渲染器各自带纸
36
- * (docx-preview 的白页衬灰底、pptx 的幻灯片底、x-spreadsheet 的 canvas 恒亮网格,
37
- * 见 styles/xspreadsheet.css 头注释的两域划分),壳再叠一层纸会出现纸中纸。
38
- *
39
- * R3 中性件:无信标/荧黄元素;缩放读数按 §7 走 mono+tabular-nums。
40
- */
41
- export type OfficeFileType = "word" | "excel" | "powerpoint" | "unknown"
42
-
43
- export type OfficePreviewProps = ComponentProps<"div"> & {
44
- /** 文件 URL(http、blob、或本地文件协议) */
45
- src?: string
46
- /** 文件类型提示 */
47
- fileType?: OfficeFileType
48
- /**
49
- * 自定义加载指示器。没有 `src` 时传它即视为**调用方自述载中**(取文件的那一层
50
- * 知道自己在载),此时出载态而不是空态——载态优先于空态。
51
- */
52
- loading?: ReactNode
53
- /** 自定义错误内容 */
54
- error?: ReactNode
55
- /**
56
- * 自绘卡片立面(边框+圆角)。坐进 `FilePreviewDialog` 壳时传 `false`:
57
- * 壳已经给了模态立面,适配器再画一圈边就成了双层框。默认 `true` 保持独立可用。
58
- */
59
- chrome?: boolean
60
- /** 用系统默认应用打开文件的回调(简单模式) */
61
- onOpen?: () => void
62
- /** "打开方式"菜单选项列表加载器(和 Attachment 卡一致) */
63
- onRequestOpenWithOptions?: () => Promise<AttachmentMenuOption[]> | AttachmentMenuOption[]
64
- /** "打开方式"菜单选中回调 */
65
- onOpenWith?: (option: AttachmentMenuOption) => void
66
- }
67
-
68
- const FILE_TYPE_LABELS: Record<OfficeFileType, string> = {
69
- word: "Word 文档",
70
- excel: "Excel 表格",
71
- powerpoint: "PowerPoint 演示",
72
- unknown: "Office 文档",
73
- }
74
-
75
- type RenderState = "idle" | "loading" | "ready" | "empty" | "error"
76
-
77
- /**
78
- * 带中文人话的解析错误。第三方解析库(docx-preview / exceljs / pptxtojson)与 fetch
79
- * 抛的都是裸英文,直接甩给用户就是 V1 的「把 stack 当文案」。§6 错误态口径=
80
- * **人话一句 + mono ≤2 行详情**:`human` 出正文,原文降级进折叠的 mono 详情。
81
- */
82
- class OfficeLoadError extends Error {
83
- human: string
84
- detail: string
85
- constructor(human: string, detail = "") {
86
- super(human)
87
- this.name = "OfficeLoadError"
88
- this.human = human
89
- this.detail = detail
90
- }
91
- }
92
-
93
- /** 把第三方库/网络层的裸英文归成一句中文人话;归不上的落通用句,原文仍留在 mono 详情里。 */
94
- function localizeOfficeError(raw: string, fileType: OfficeFileType): string {
95
- const label = FILE_TYPE_LABELS[fileType]
96
- if (/network|failed to fetch|load failed|err_|dns/i.test(raw)) return `${label}没取到,检查一下文件地址还在不在。`
97
- if (/password|encrypt/i.test(raw)) return `${label}设了密码,先解除保护再预览。`
98
- if (/corrupt|invalid|malformed|zip|central directory|unexpected end/i.test(raw))
99
- return `${label}读不出来,文件可能已经损坏。`
100
- return `${label}没解析出来。`
101
- }
102
-
103
- export function OfficePreview({
104
- className = "",
105
- src,
106
- fileType = "unknown",
107
- loading: loadingNode,
108
- error: errorNode,
109
- chrome = true,
110
- onOpen,
111
- onRequestOpenWithOptions,
112
- onOpenWith,
113
- children,
114
- ...props
115
- }: OfficePreviewProps) {
116
- const containerRef = useRef<HTMLDivElement>(null)
117
- const bodyRef = useRef<HTMLDivElement>(null)
118
- const renderIdRef = useRef(0)
119
- const bufferRef = useRef<ArrayBuffer | null>(null)
120
- const [state, setState] = useState<RenderState>("idle")
121
- const [errorMsg, setErrorMsg] = useState("")
122
- // 裸英文原文只进 mono 详情行,不当正文(§6 人话一句 + mono ≤2 行)
123
- const [errorDetail, setErrorDetail] = useState("")
124
- // x-spreadsheet 自带 ResizeObserver 与实例,卸载时要一起收掉
125
- const excelDisposeRef = useRef<(() => void) | null>(null)
126
-
127
- // PowerPoint state
128
- const [pptxData, setPptxData] = useState<PptxParseResult | null>(null)
129
- const [slideCount, setSlideCount] = useState(0)
130
- const [activeSlide, setActiveSlide] = useState(0)
131
- const [pptZoom, setPptZoom] = useState(1)
132
- const [slideFitScale, setSlideFitScale] = useState(0)
133
- const mainSlideRef = useRef<HTMLDivElement>(null)
134
- const pptxBodyRef = useRef<HTMLDivElement>(null)
135
-
136
- useEffect(() => {
137
- const container = containerRef.current
138
- if (!src || !container) {
139
- setState("idle")
140
- return
141
- }
142
-
143
- const renderId = renderIdRef.current + 1
144
- renderIdRef.current = renderId
145
- const superseded = () => renderIdRef.current !== renderId
146
-
147
- setState("loading")
148
- setErrorMsg("")
149
- setErrorDetail("")
150
-
151
- void (async () => {
152
- try {
153
- let buffer: ArrayBuffer
154
- if (bufferRef.current) {
155
- buffer = bufferRef.current
156
- } else {
157
- const response = await fetch(src)
158
- if (!response.ok)
159
- throw new OfficeLoadError(
160
- `${FILE_TYPE_LABELS[fileType]}没取到,检查一下文件地址还在不在。`,
161
- `HTTP ${response.status} ${response.statusText}`.trim(),
162
- )
163
- buffer = await response.arrayBuffer()
164
- if (superseded()) return
165
- bufferRef.current = buffer
166
- }
167
-
168
- container.replaceChildren()
169
- switch (fileType) {
170
- case "word":
171
- await renderWord(buffer, container)
172
- break
173
- case "excel": {
174
- excelDisposeRef.current?.()
175
- const dispose = await renderExcel(buffer, container, () => ({
176
- width: bodyRef.current?.clientWidth ?? 0,
177
- height: bodyRef.current?.clientHeight ?? 0,
178
- }))
179
- excelDisposeRef.current = dispose
180
- if (superseded()) return
181
- // 空工作簿:没有实例可挂,落 empty 档由 React 渲 EmptyState。
182
- if (!dispose) {
183
- setState("empty")
184
- return
185
- }
186
- break
187
- }
188
- case "powerpoint": {
189
- const { parse } = await import("pptxtojson")
190
- const result = await parse(buffer, {
191
- imageMode: "base64",
192
- videoMode: "blob",
193
- audioMode: "blob",
194
- })
195
- if (superseded()) return
196
- setPptxData(result as PptxParseResult)
197
- setSlideCount(result.slides.length)
198
- setActiveSlide(0)
199
- break
200
- }
201
- default:
202
- throw new OfficeLoadError("这种文件暂时打不开。", `unsupported fileType: ${fileType}`)
203
- }
204
- if (superseded()) return
205
- setState("ready")
206
- } catch (err) {
207
- if (superseded()) return
208
- const raw = err instanceof Error ? err.message : String(err ?? "")
209
- setState("error")
210
- setErrorMsg(err instanceof OfficeLoadError ? err.human : localizeOfficeError(raw, fileType))
211
- setErrorDetail(err instanceof OfficeLoadError ? err.detail : raw)
212
- }
213
- })()
214
-
215
- return () => {
216
- renderIdRef.current += 1
217
- }
218
- }, [src, fileType])
219
-
220
- // 组件卸载时收掉 x-spreadsheet 实例与它的 ResizeObserver
221
- useEffect(
222
- () => () => {
223
- excelDisposeRef.current?.()
224
- excelDisposeRef.current = null
225
- },
226
- [],
227
- )
228
-
229
- useEffect(() => {
230
- bufferRef.current = null
231
- setPptxData(null)
232
- setSlideCount(0)
233
- setActiveSlide(0)
234
- }, [src])
235
-
236
- // Zoom & pan interaction on main panel
237
- useEffect(() => {
238
- if (fileType !== "powerpoint" || !slideCount) return
239
- const slide = mainSlideRef.current
240
- const panel = slide?.parentElement
241
- if (!panel || !slide) return
242
-
243
- const baseZoom = pptxBodyRef.current?.dataset.owState === "collapsed" ? 0.9 : 1
244
- let zoom = baseZoom
245
- let panX = 0
246
- let panY = 0
247
- let dragging = false
248
- let startX = 0
249
- let startY = 0
250
- let startPanX = 0
251
- let startPanY = 0
252
-
253
- const applyTransform = () => {
254
- slide.style.transform = `scale(${zoom}) translate(${panX}px, ${panY}px)`
255
- setPptZoom(zoom)
256
- panel.style.cursor = zoom > 1.01 ? "grab" : ""
257
- }
258
-
259
- const onWheel = (e: WheelEvent) => {
260
- if (e.ctrlKey || e.metaKey) {
261
- e.preventDefault()
262
- const delta = -e.deltaY * 0.01
263
- zoom = Math.min(5, Math.max(0.25, zoom + delta))
264
- if (zoom <= 1) {
265
- panX = 0
266
- panY = 0
267
- }
268
- applyTransform()
269
- } else if (zoom > 1.01) {
270
- e.preventDefault()
271
- panX -= e.deltaX / zoom
272
- panY -= e.deltaY / zoom
273
- applyTransform()
274
- }
275
- }
276
-
277
- const onPointerDown = (e: PointerEvent) => {
278
- if (zoom <= 1.01) return
279
- e.preventDefault()
280
- dragging = true
281
- startX = e.clientX
282
- startY = e.clientY
283
- startPanX = panX
284
- startPanY = panY
285
- panel.style.cursor = "grabbing"
286
- panel.setPointerCapture(e.pointerId)
287
- }
288
-
289
- const onPointerMove = (e: PointerEvent) => {
290
- if (!dragging) return
291
- panX = startPanX + (e.clientX - startX) / zoom
292
- panY = startPanY + (e.clientY - startY) / zoom
293
- applyTransform()
294
- }
295
-
296
- const onPointerUp = (e: PointerEvent) => {
297
- if (!dragging) return
298
- dragging = false
299
- panel.style.cursor = zoom > 1.01 ? "grab" : ""
300
- panel.releasePointerCapture(e.pointerId)
301
- }
302
-
303
- const onDblClick = () => {
304
- zoom = baseZoom
305
- panX = 0
306
- panY = 0
307
- applyTransform()
308
- }
309
-
310
- const setZoomFromToolbar = (newZoom: number) => {
311
- zoom = Math.min(5, Math.max(0.25, newZoom))
312
- if (zoom <= 1) {
313
- panX = 0
314
- panY = 0
315
- }
316
- applyTransform()
317
- }
318
- ;(panel as any).__pptxSetZoom = setZoomFromToolbar
319
-
320
- panel.addEventListener("wheel", onWheel, { passive: false })
321
- panel.addEventListener("pointerdown", onPointerDown)
322
- panel.addEventListener("pointermove", onPointerMove)
323
- panel.addEventListener("pointerup", onPointerUp)
324
- panel.addEventListener("dblclick", onDblClick)
325
-
326
- return () => {
327
- panel.removeEventListener("wheel", onWheel)
328
- panel.removeEventListener("pointerdown", onPointerDown)
329
- panel.removeEventListener("pointermove", onPointerMove)
330
- panel.removeEventListener("pointerup", onPointerUp)
331
- panel.removeEventListener("dblclick", onDblClick)
332
- delete (panel as any).__pptxSetZoom
333
- }
334
- }, [fileType, slideCount, activeSlide])
335
-
336
- const handleZoomChange = (newZoom: number) => {
337
- const panel = mainSlideRef.current?.parentElement
338
- if (panel && (panel as any).__pptxSetZoom) {
339
- ;(panel as any).__pptxSetZoom(newZoom)
340
- }
341
- }
342
-
343
- const handlePptxKeyDown = useCallback(
344
- (event: ReactKeyboardEvent<HTMLDivElement>) => {
345
- if (event.key !== "ArrowUp" && event.key !== "ArrowDown") return
346
-
347
- const target = event.target as HTMLElement
348
- if (target.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(target.tagName)) return
349
-
350
- event.preventDefault()
351
- const offset = event.key === "ArrowUp" ? -1 : 1
352
- setActiveSlide((current) => Math.min(Math.max(current + offset, 0), slideCount - 1))
353
- },
354
- [slideCount],
355
- )
356
-
357
- const handlePptxPointerDown = useCallback((event: ReactPointerEvent<HTMLDivElement>) => {
358
- const target = event.target as HTMLElement
359
- if (target.closest('button, a, input, textarea, select, [contenteditable="true"]')) return
360
- event.currentTarget.focus({ preventScroll: true })
361
- }, [])
362
-
363
- useEffect(() => {
364
- if (!slideCount) return
365
- const activeThumbnail = pptxBodyRef.current?.querySelector<HTMLElement>(
366
- "[data-slot='pptx-thumb'][data-ow-state='active']",
367
- )
368
- activeThumbnail?.scrollIntoView({ block: "nearest" })
369
- }, [activeSlide, slideCount])
370
-
371
- // Toggle collapsed class based on panel width
372
- useEffect(() => {
373
- if (fileType !== "powerpoint" || !pptxBodyRef.current) return
374
- const body = pptxBodyRef.current
375
- const check = () => {
376
- if (body.clientWidth < 750) {
377
- body.dataset.owState = "collapsed"
378
- } else {
379
- delete body.dataset.owState
380
- }
381
- }
382
- check()
383
- const observer = new ResizeObserver(check)
384
- observer.observe(body)
385
- return () => observer.disconnect()
386
- }, [fileType, slideCount])
387
-
388
- // Compute fit scale for main slide based on panel size
389
- useEffect(() => {
390
- if (fileType !== "powerpoint" || !pptxData || !slideCount) return
391
- const slide = mainSlideRef.current
392
- const panel = slide?.parentElement
393
- if (!panel) return
394
-
395
- const refit = () => {
396
- const panelWidth = panel.clientWidth
397
- const panelHeight = panel.clientHeight
398
- if (!panelWidth || !panelHeight) return
399
- const nativeW = pptxData.size.width * PT_TO_PX
400
- const nativeH = pptxData.size.height * PT_TO_PX
401
- const collapsed = pptxBodyRef.current?.dataset.owState === "collapsed"
402
- const fitRatio = collapsed ? 0.81 : 0.9
403
- const scale = Math.min((panelWidth * fitRatio) / nativeW, (panelHeight * fitRatio) / nativeH)
404
- setSlideFitScale(scale)
405
- }
406
- refit()
407
- const observer = new ResizeObserver(refit)
408
- observer.observe(panel)
409
- return () => observer.disconnect()
410
- }, [fileType, slideCount, pptxData])
411
-
412
- const isPptx = fileType === "powerpoint" && state === "ready" && slideCount > 0
413
- // 调用方给了自定义 loading 节点却还没有 src = 它自己在取文件,自述「载中」。
414
- // 原来 `!src` 分支排在 `state === "loading"` 前面,state 恒为 idle,loadingNode 永不可达
415
- // ——WordLoading 那类 story 渲出来是空态不是载态。载态优先于空态。
416
- const selfDeclaredLoading = !src && loadingNode != null
417
-
418
- return (
419
- <div
420
- data-slot="office-preview"
421
- data-ow-chrome={chrome ? undefined : "none"}
422
- className={cn(
423
- "flex flex-col w-full h-full bg-ow-bg overflow-hidden",
424
- // 坐进 PreviewDialog 壳时不再自绘立面(§5 一件事只有一层边)
425
- chrome && "[border-radius:var(--ow-radius-card)] border border-ow-border-strong",
426
- className,
427
- )}
428
- {...props}
429
- >
430
- {/* Body */}
431
- <div
432
- data-ow-part="body"
433
- className="flex-1 min-h-0 relative flex flex-col items-center justify-center pl-0.5"
434
- ref={bodyRef}
435
- >
436
- {/* §6 容器三态:空=EmptyState 信标母题(G5)· 载=Skeleton 呼吸(禁 shimmer)·
437
- 错=InlineMessage error tint 三件套(人话一句 + 折叠 mono 详情)。
438
- 原来三态共用一个 text-3 灰字居中的 div,空态还自画了一套彩色文件类型图标
439
- ——判断表「空态:灰字居中 → G5」,且母题唯一语汇是信标。 */}
440
- {state === "loading" || selfDeclaredLoading ? (
441
- <div
442
- data-ow-part="loading"
443
- role="status"
444
- aria-live="polite"
445
- aria-label={`正在打开${FILE_TYPE_LABELS[fileType]}`}
446
- className="flex w-full max-w-[560px] flex-col gap-3 p-8"
447
- >
448
- {loadingNode ?? (
449
- <>
450
- <Skeleton variant="line" height={18} width="46%" />
451
- <Skeleton variant="line" height={13} />
452
- <Skeleton variant="line" height={13} />
453
- <Skeleton variant="line" height={13} width="78%" />
454
- <Skeleton variant="block" height={180} />
455
- </>
456
- )}
457
- </div>
458
- ) : !src ? (
459
- <div data-ow-part="empty" className="flex w-full items-center justify-center p-8">
460
- <EmptyState message={`暂无 ${FILE_TYPE_LABELS[fileType]}`} />
461
- </div>
462
- ) : state === "empty" ? (
463
- <div data-ow-part="empty" className="flex w-full items-center justify-center p-8">
464
- <EmptyState message="这个表格里没有工作表。" />
465
- </div>
466
- ) : state === "error" ? (
467
- <div data-ow-part="error" className="flex w-full max-w-[560px] flex-col p-8">
468
- {errorNode ?? (
469
- <InlineMessage variant="error" detail={errorDetail}>
470
- {errorMsg || `${FILE_TYPE_LABELS[fileType]}没解析出来。`}
471
- </InlineMessage>
472
- )}
473
- </div>
474
- ) : null}
475
-
476
- {/* PowerPoint dual-panel layout */}
477
- {isPptx && pptxData && (
478
- <div data-ow-part="pptx-panels" className="flex flex-col w-full flex-1 min-h-0 overflow-hidden self-stretch">
479
- {/* Toolbar */}
480
- <div
481
- data-ow-part="pptx-toolbar"
482
- /* §7 控件高:条高钉 --ow-h-lg(40),不再用 py-1.5 靠 6+28+6 凑(同簇 PdfPreview header 同口径)。 */
483
- className="flex items-center gap-1 px-3 border-b border-ow-border flex-shrink-0 bg-ow-bg"
484
- style={{ height: "var(--ow-h-lg)" }}
485
- >
486
- <span data-ow-part="spacer" className="flex-1" />
487
- <Button
488
- type="button"
489
- data-ow-part="toolbar-btn"
490
- variant="ghost"
491
- size="sm"
492
- className="w-7 h-7 p-0 text-ow-text-2 hover:bg-ow-surface"
493
- onClick={() => handleZoomChange(pptZoom - 0.25)}
494
- title="缩小"
495
- >
496
- <ZoomOut width={14} height={14} />
497
- </Button>
498
- <span
499
- data-ow-part="toolbar-zoom"
500
- // §7 读数(百分比)一律 mono + tabular-nums,缩放时数字不跳宽
501
- className="min-w-10 text-center font-medium text-ow-fs-caption leading-none font-[family-name:var(--ow-font-mono)] [font-variant-numeric:tabular-nums] text-ow-text-2 select-none"
502
- >
503
- {Math.round(pptZoom * 100)}%
504
- </span>
505
- <Button
506
- type="button"
507
- data-ow-part="toolbar-btn"
508
- variant="ghost"
509
- size="sm"
510
- className="w-7 h-7 p-0 text-ow-text-2 hover:bg-ow-surface"
511
- onClick={() => handleZoomChange(pptZoom + 0.25)}
512
- title="放大"
513
- >
514
- <ZoomIn width={14} height={14} />
515
- </Button>
516
- {(onOpen || onRequestOpenWithOptions) && (
517
- <OpenWithMenu
518
- label="打开方式"
519
- onOpen={onOpen}
520
- onRequestOptions={onRequestOpenWithOptions}
521
- onSelect={onOpenWith}
522
- />
523
- )}
524
- </div>
525
- <div
526
- data-ow-part="pptx-body"
527
- /* 焦点环三件套(§6 既定态):环宽/环色/缝全走 token。这一格铺满壳的内容区且父级
528
- overflow-hidden,正 offset 会被裁掉,所以缝取负值内收(同 xspreadsheet.css / assistant-settings.css)。 */
529
- className="grid grid-cols-[200px_minmax(0,1fr)] grid-rows-[1fr] flex-1 min-h-0 overflow-hidden relative focus:outline-none focus-visible:[outline:var(--ow-focus-ring-w)_solid_var(--ow-focus-ring)] focus-visible:[outline-offset:calc(var(--ow-focus-ring-offset)*-1)]"
530
- ref={pptxBodyRef}
531
- tabIndex={0}
532
- role="region"
533
- aria-label={`PowerPoint 预览,第 ${activeSlide + 1} 页,共 ${slideCount} 页`}
534
- onKeyDown={handlePptxKeyDown}
535
- onPointerDown={handlePptxPointerDown}
536
- >
537
- {/* Thumbnails */}
538
- <div
539
- data-ow-part="pptx-thumbs"
540
- /* §5 表面三档:贴地侧栏取实心面档 --ow-surface,不做半透明毛玻璃
541
- (bg-ow-bg/72 + backdrop-blur 是 V1 的「玻璃层」语汇,2.0 只有地/面/井三档)。 */
542
- className="flex flex-col gap-2 py-4 px-3 overflow-y-auto overflow-x-hidden min-h-0 border-r border-ow-border bg-ow-surface scrollbar-thin"
543
- >
544
- {pptxData.slides.map((slide, i) => (
545
- <PptxThumbnail
546
- key={i}
547
- slide={slide}
548
- index={i}
549
- isActive={i === activeSlide}
550
- slideWidth={pptxData.size.width}
551
- slideHeight={pptxData.size.height}
552
- onClick={setActiveSlide}
553
- />
554
- ))}
555
- </div>
556
- {/* Main slide panel */}
557
- <div
558
- data-ow-part="pptx-main"
559
- className="relative overflow-hidden bg-ow-surface flex items-center justify-center min-h-0 h-full"
560
- >
561
- <div
562
- data-ow-part="pptx-slide"
563
- /* §5 贴地零影:幻灯片坐在 pptx-main 面板里是贴地内容不是弹层,
564
- 纸面立边靠 1px --ow-border 表达(同文件 renderWord 也在 strip
565
- docx-preview 注入的 box-shadow,口径就此一致)。 */
566
- className="relative overflow-hidden [border-radius:var(--ow-radius-md)] border border-ow-border origin-center flex-shrink-0"
567
- ref={mainSlideRef}
568
- style={{
569
- width: pptxData.size.width * PT_TO_PX * slideFitScale,
570
- height: pptxData.size.height * PT_TO_PX * slideFitScale,
571
- }}
572
- >
573
- <div
574
- style={{
575
- transform: `scale(${slideFitScale})`,
576
- transformOrigin: "top left",
577
- }}
578
- >
579
- {pptxData.slides[activeSlide] && (
580
- <PptxSlide
581
- slide={pptxData.slides[activeSlide]}
582
- slideWidth={pptxData.size.width}
583
- slideHeight={pptxData.size.height}
584
- />
585
- )}
586
- </div>
587
- </div>
588
- </div>
589
- </div>
590
- </div>
591
- )}
592
-
593
- {/* Non-pptx content container */}
594
- <div
595
- ref={containerRef}
596
- data-ow-part="content"
597
- className="w-full h-full overflow-auto box-border"
598
- style={{ display: state === "ready" && !isPptx ? undefined : "none" }}
599
- />
600
- {children}
601
- </div>
602
- </div>
603
- )
604
- }
605
-
606
- // ─── Thumbnail ───
607
-
608
- interface PptxThumbnailProps {
609
- slide: PptxParseResult["slides"][number]
610
- index: number
611
- isActive: boolean
612
- slideWidth: number
613
- slideHeight: number
614
- onClick: (index: number) => void
615
- }
616
-
617
- const PptxThumbnail = memo(function PptxThumbnail({
618
- slide,
619
- index,
620
- isActive,
621
- slideWidth,
622
- slideHeight,
623
- onClick,
624
- }: PptxThumbnailProps) {
625
- const nativeWidthPx = slideWidth * PT_TO_PX
626
- const nativeHeightPx = slideHeight * PT_TO_PX
627
- const thumbRef = useRef<HTMLSpanElement>(null)
628
- const [thumbScale, setThumbScale] = useState(0)
629
-
630
- useEffect(() => {
631
- const el = thumbRef.current
632
- if (!el) return
633
- const compute = () => {
634
- const w = el.clientWidth
635
- if (w > 0) setThumbScale(w / nativeWidthPx)
636
- }
637
- compute()
638
- const observer = new ResizeObserver(compute)
639
- observer.observe(el)
640
- return () => observer.disconnect()
641
- }, [nativeWidthPx])
642
-
643
- const handleClick = useCallback(() => onClick(index), [onClick, index])
644
-
645
- return (
646
- <Button
647
- type="button"
648
- data-slot="pptx-thumb"
649
- data-ow-state={isActive ? "active" : undefined}
650
- variant="unstyled"
651
- /* R2/§15:选中态不能用 --ow-primary tint —— 暗档 primary 就是荧黄,一列缩略图
652
- 全成状态极。改中性底(hover→selected-bg)+当前页边框加粗+页码提色,
653
- R1 双编码里形状与文字各占一样,颜色只做第二编码。§9 动效走 ease-beacon 120ms。 */
654
- className="group grid grid-cols-[32px_minmax(0,1fr)] items-center gap-2 p-2 border-0 [border-radius:var(--ow-radius-sm)] bg-transparent cursor-pointer text-left [transition:background-color_var(--ow-dur-1)_var(--ow-ease-beacon)] hover:bg-ow-hover active:bg-ow-press data-[ow-state=active]:bg-ow-selected-bg"
655
- onClick={handleClick}
656
- >
657
- <span
658
- data-ow-part="num"
659
- // §7 读数:页码 mono + tabular-nums,页数进两位时不跳宽
660
- className="font-medium text-ow-fs-body leading-none font-[family-name:var(--ow-font-mono)] [font-variant-numeric:tabular-nums] text-ow-text-3 text-center group-data-[ow-state=active]:text-ow-text"
661
- >
662
- {index + 1}
663
- </span>
664
- <span
665
- data-ow-part="slide"
666
- className="block relative w-full [border-radius:var(--ow-radius-2xs)] border border-ow-border group-data-[ow-state=active]:border-ow-border-strong bg-ow-bg overflow-hidden pointer-events-none [transition:border-color_var(--ow-dur-1)_var(--ow-ease-beacon)]"
667
- ref={thumbRef}
668
- style={{ aspectRatio: `${slideWidth} / ${slideHeight}` }}
669
- >
670
- {thumbScale > 0 && (
671
- <span
672
- style={{
673
- display: "block",
674
- transform: `scale(${thumbScale})`,
675
- transformOrigin: "top left",
676
- position: "absolute",
677
- top: 0,
678
- left: 0,
679
- width: nativeWidthPx,
680
- height: nativeHeightPx,
681
- }}
682
- >
683
- <PptxSlide slide={slide} slideWidth={slideWidth} slideHeight={slideHeight} />
684
- </span>
685
- )}
686
- </span>
687
- </Button>
688
- )
689
- })
690
-
691
- // ─── Renderers (Word / Excel) ───
692
-
693
- async function renderWord(buffer: ArrayBuffer, container: HTMLElement): Promise<void> {
694
- const { renderAsync } = await import("docx-preview")
695
- await renderAsync(buffer, container, undefined, {
696
- className: "ow-docx-body",
697
- inWrapper: true,
698
- })
699
- // docx-preview injects a <style> with box-shadow on the page sections — strip it.
700
- container.querySelectorAll<HTMLStyleElement>("style").forEach((style) => {
701
- style.textContent = (style.textContent || "").replace(/box-shadow:[^;]+;/g, "")
702
- })
703
- // §14 白底浅字坑:纸面恒白(styles/components.css 把 section 的 background 定在
704
- // --ow-paper),所以纸上任何**继承语义色**的节点必须走浅档墨色,否则暗主题下会出现
705
- // 白纸浅字。docx-preview 的页节点是它自己建的 DOM,React 侧挂不上属性,只能渲完补打
706
- // ——与 PreviewDialog 的 paper 制式(纸页 data-theme="light")同一口径。
707
- // 文档自带的墨色(docx-preview 从主题解析出的内联 color)不受影响,仍是文档自己的黑。
708
- container.querySelectorAll<HTMLElement>("section.ow-docx-body, section.docx").forEach((page) => {
709
- page.dataset.theme = "light"
710
- })
711
- }
712
-
713
- // exceljs 4.4 throws "Cannot read properties of undefined (reading 'anchors')"
714
- // while reconciling drawings: `xlsx.js` does `(drawing.anchors || [])` over every
715
- // entry of the parsed drawings map, which guards `.anchors` being falsy but not
716
- // `drawing` itself being undefined. A drawing part that fails to parse (wrong
717
- // root tag, truncated XML) lands in that map as undefined and takes the whole
718
- // load down, even though we only ever render cell text.
719
- //
720
- // `ignoreNodes` alone is not enough — it suppresses the worksheet's own drawing
721
- // node, but that reconcile loop iterates the drawings map independently. Removing
722
- // the drawing parts alone is worse than nothing: it leaves the sheet's dangling
723
- // relationship behind and *causes* this same failure. Only both together cover
724
- // every case, so the zip rewrite runs strictly as a fallback and healthy files
725
- // never pay for it.
726
- async function loadWorkbookIgnoringDrawings(buffer: ArrayBuffer) {
727
- const ExcelJS = await import("exceljs")
728
- const loadOptions = { ignoreNodes: ["drawing", "picture"] }
729
- try {
730
- const workbook = new ExcelJS.Workbook()
731
- await workbook.xlsx.load(buffer, loadOptions)
732
- return workbook
733
- } catch {
734
- const JSZip = (await import("jszip")).default
735
- const zip = await JSZip.loadAsync(buffer)
736
- for (const entry of Object.keys(zip.files)) {
737
- if (entry.replace(/^\//, "").startsWith("xl/drawings/")) zip.remove(entry)
738
- }
739
- const sanitized = await zip.generateAsync({ type: "arraybuffer" })
740
- const workbook = new ExcelJS.Workbook()
741
- await workbook.xlsx.load(sanitized, loadOptions)
742
- return workbook
743
- }
744
- }
745
-
746
- /**
747
- * 用 x-spreadsheet 渲染工作簿,转换层与实例参数移植自 vue-office。
748
- *
749
- * 多 Sheet 切换交给 x-spreadsheet 自己的 bottombar,所以这里不再需要外层
750
- * sheet tabs。返回值是清理函数:实例把自己挂在 container 上,还额外注册了
751
- * 一个 window resize 监听。
752
- */
753
- async function renderExcel(
754
- buffer: ArrayBuffer,
755
- container: HTMLElement,
756
- measure: () => { width: number; height: number },
757
- ): Promise<(() => void) | null> {
758
- const workbook = await loadWorkbookIgnoringDrawings(buffer)
759
- // 空工作簿返回 null=「没挂任何实例」,空态交回 React(state="empty" → EmptyState 母题)。
760
- // 原来这里直接 innerHTML 写一段灰字 <p>,节点不在 React 树里,G5 母题进不去。
761
- if (!workbook.worksheets.length) return null
762
-
763
- const mount = document.createElement("div")
764
- mount.className = "ow-excel-sheet"
765
- mount.setAttribute("data-slot", "excel-sheet")
766
- container.appendChild(mount)
767
-
768
- const sheet = await createSpreadsheet(mount, measure)
769
- sheet.loadData(transferExcelToSpreadSheet(workbook, { minColLength: 20 }))
770
- // 只读模式下 x-spreadsheet 仍渲染可编辑的隐藏 input,双击单元格会进编辑态
771
- readOnlyInput(mount)
772
-
773
- // x-spreadsheet 只监听 window resize,面板内部的尺寸变化(侧栏折叠、
774
- // 分割条拖动)不会触发重排,所以补一个 ResizeObserver 走它的 reload。
775
- const observer = new ResizeObserver(() => sheet.sheet.reload?.())
776
- observer.observe(container)
777
-
778
- return () => {
779
- observer.disconnect()
780
- mount.remove()
781
- }
782
- }