@orbit-work/ui 0.1.2-preview.0 → 0.1.3

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 (810) 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.cjs +41 -1
  9. package/dist/appearance.cjs.map +1 -0
  10. package/dist/appearance.d.cts +7 -1
  11. package/dist/appearance.d.ts +7 -1
  12. package/dist/appearance.js +41 -1
  13. package/dist/appearance.js.map +1 -0
  14. package/dist/brand-preview.cjs +14 -0
  15. package/dist/brand-preview.cjs.map +1 -0
  16. package/dist/brand-preview.d.cts +13 -0
  17. package/dist/brand-preview.d.ts +13 -0
  18. package/dist/brand-preview.js +14 -0
  19. package/dist/brand-preview.js.map +1 -0
  20. package/dist/browser-annotation-popup.cjs +9 -1
  21. package/dist/browser-annotation-popup.cjs.map +1 -0
  22. package/dist/browser-annotation-popup.d.cts +6 -6
  23. package/dist/browser-annotation-popup.d.ts +6 -6
  24. package/dist/browser-annotation-popup.js +9 -1
  25. package/dist/browser-annotation-popup.js.map +1 -0
  26. package/dist/chunk-66VEV7G2.js +111 -0
  27. package/dist/chunk-66VEV7G2.js.map +1 -0
  28. package/dist/chunk-JC7BHKS4.cjs +734 -0
  29. package/dist/chunk-JC7BHKS4.cjs.map +1 -0
  30. package/dist/chunk-K7ONUTLA.cjs +240 -0
  31. package/dist/chunk-K7ONUTLA.cjs.map +1 -0
  32. package/dist/chunk-KTNWR3H5.js +399 -0
  33. package/dist/chunk-KTNWR3H5.js.map +1 -0
  34. package/dist/chunk-LSGO6AQR.js +734 -0
  35. package/dist/chunk-LSGO6AQR.js.map +1 -0
  36. package/dist/chunk-Q7B4M5GC.cjs +399 -0
  37. package/dist/chunk-Q7B4M5GC.cjs.map +1 -0
  38. package/dist/chunk-QS55W5Q5.cjs +111 -0
  39. package/dist/chunk-QS55W5Q5.cjs.map +1 -0
  40. package/dist/chunk-UT5LC6MR.js +38 -0
  41. package/dist/chunk-UT5LC6MR.js.map +1 -0
  42. package/dist/chunk-ZXMHCL6D.js +240 -0
  43. package/dist/chunk-ZXMHCL6D.js.map +1 -0
  44. package/dist/chunk-ZZTEY4YX.cjs +38 -0
  45. package/dist/chunk-ZZTEY4YX.cjs.map +1 -0
  46. package/dist/core.css +7895 -0
  47. package/dist/core.scoped.css +7888 -0
  48. package/dist/file-tree.css +85 -0
  49. package/dist/index-nLo7jMlP.d.cts +166 -0
  50. package/dist/index-nLo7jMlP.d.ts +166 -0
  51. package/dist/index.cjs +38996 -26
  52. package/dist/index.cjs.map +1 -0
  53. package/dist/index.d.cts +3797 -3027
  54. package/dist/index.d.ts +3797 -3027
  55. package/dist/index.js +38996 -26
  56. package/dist/index.js.map +1 -0
  57. package/dist/locale.cjs +15 -0
  58. package/dist/locale.cjs.map +1 -0
  59. package/dist/locale.d.cts +28 -0
  60. package/dist/locale.d.ts +28 -0
  61. package/dist/locale.js +15 -0
  62. package/dist/locale.js.map +1 -0
  63. package/dist/office.css +1146 -0
  64. package/dist/slot-core.cjs +200 -0
  65. package/dist/slot-core.cjs.map +1 -0
  66. package/dist/slot-core.d.cts +146 -0
  67. package/dist/slot-core.d.ts +146 -0
  68. package/dist/slot-core.js +200 -0
  69. package/dist/slot-core.js.map +1 -0
  70. package/dist/slot-react.cjs +153 -0
  71. package/dist/slot-react.cjs.map +1 -0
  72. package/dist/slot-react.d.cts +36 -0
  73. package/dist/slot-react.d.ts +36 -0
  74. package/dist/slot-react.js +153 -0
  75. package/dist/slot-react.js.map +1 -0
  76. package/dist/tailwind.css +137 -0
  77. package/dist/unifiedTheme-DQ-sETKO.d.cts +201 -0
  78. package/dist/unifiedTheme-DQ-sETKO.d.ts +201 -0
  79. package/dist/workbench.css +9023 -0
  80. package/package.json +126 -47
  81. package/dist/appearance-D5uQ53j3.d.cts +0 -210
  82. package/dist/appearance-D5uQ53j3.d.ts +0 -210
  83. package/dist/chunk-3KT7IU4X.js +0 -13
  84. package/dist/chunk-5VLBKOG7.cjs +0 -194
  85. package/dist/chunk-7YJY64LZ.js +0 -82
  86. package/dist/chunk-EF2BSN3K.cjs +0 -13
  87. package/dist/chunk-GMMYDILD.cjs +0 -82
  88. package/dist/chunk-VG7FQQ7K.js +0 -194
  89. package/dist/fonts/JetBrainsMono-Medium.ttf +0 -0
  90. package/dist/fonts/JetBrainsMono-Regular.ttf +0 -0
  91. package/dist/fonts/SpaceGrotesk-700-latin-ext.woff2 +0 -0
  92. package/dist/fonts/SpaceGrotesk-700-latin.woff2 +0 -0
  93. package/dist/index.css +0 -1
  94. package/dist/orbitwork.css +0 -22209
  95. package/src/components/Layout/AppLayout/AppLayout.stories.tsx +0 -246
  96. package/src/components/Layout/AppLayout/AppLayoutSource.test.mjs +0 -37
  97. package/src/components/Layout/AppLayout/index.tsx +0 -122
  98. package/src/components/Layout/Sidebar/index.tsx +0 -13
  99. package/src/components/Layout/SidebarShell/SidebarShell.stories.tsx +0 -676
  100. package/src/components/Layout/SidebarShell/SidebarShellSource.test.mjs +0 -161
  101. package/src/components/Layout/SidebarShell/index.tsx +0 -326
  102. package/src/components/Layout/index.ts +0 -10
  103. package/src/components/composite/ActionBar/ActionBar.stories.tsx +0 -26
  104. package/src/components/composite/ActionBar/index.tsx +0 -31
  105. package/src/components/composite/ActionStatus/ActionStatus.stories.tsx +0 -60
  106. package/src/components/composite/ActionStatus/index.tsx +0 -21
  107. package/src/components/composite/AskQuestionCardView/AskQuestionCardView.stories.tsx +0 -175
  108. package/src/components/composite/AskQuestionCardView/AskQuestionCardViewSource.test.mjs +0 -92
  109. package/src/components/composite/AskQuestionCardView/index.tsx +0 -119
  110. package/src/components/composite/AssistantChannelCard/AssistantChannelCard.stories.tsx +0 -265
  111. package/src/components/composite/AssistantChannelCard/AssistantChannelCardSource.test.mjs +0 -45
  112. package/src/components/composite/AssistantChannelCard/index.tsx +0 -102
  113. package/src/components/composite/AssistantToggleRow/AssistantToggleRow.stories.tsx +0 -197
  114. package/src/components/composite/AssistantToggleRow/index.tsx +0 -35
  115. package/src/components/composite/AttachmentCard/AttachmentCard.stories.tsx +0 -125
  116. package/src/components/composite/AttachmentCard/index.tsx +0 -80
  117. package/src/components/composite/BackButton/BackButton.stories.tsx +0 -93
  118. package/src/components/composite/BackButton/BackButtonSource.test.mjs +0 -29
  119. package/src/components/composite/BackButton/index.tsx +0 -48
  120. package/src/components/composite/Banner/Banner.stories.tsx +0 -180
  121. package/src/components/composite/Banner/BannerSource.test.mjs +0 -67
  122. package/src/components/composite/Banner/index.tsx +0 -125
  123. package/src/components/composite/BeaconIcons/BeaconIcons.stories.tsx +0 -153
  124. package/src/components/composite/BeaconIcons/index.tsx +0 -265
  125. package/src/components/composite/BeaconSpinner/BeaconSpinner.stories.tsx +0 -144
  126. package/src/components/composite/BeaconSpinner/index.tsx +0 -185
  127. package/src/components/composite/CatalogStates/CatalogEmptyState.stories.tsx +0 -108
  128. package/src/components/composite/CatalogStates/CatalogStates.stories.tsx +0 -53
  129. package/src/components/composite/CatalogStates/CatalogStatesSource.test.mjs +0 -149
  130. package/src/components/composite/CatalogStates/index.tsx +0 -113
  131. package/src/components/composite/Charts/Charts.stories.tsx +0 -174
  132. package/src/components/composite/Charts/ChartsSource.test.mjs +0 -111
  133. package/src/components/composite/Charts/index.tsx +0 -385
  134. package/src/components/composite/CodeBlock/CodeBlock.stories.tsx +0 -308
  135. package/src/components/composite/CodeBlock/CodeFaceSource.test.mjs +0 -89
  136. package/src/components/composite/CodeBlock/index.tsx +0 -300
  137. package/src/components/composite/CodeDiff/CodeDiff.stories.tsx +0 -169
  138. package/src/components/composite/CodeDiff/index.tsx +0 -373
  139. package/src/components/composite/CodePreview/CodePreview.stories.tsx +0 -127
  140. package/src/components/composite/CodePreview/CodePreviewSource.test.mjs +0 -43
  141. package/src/components/composite/CodePreview/index.tsx +0 -98
  142. package/src/components/composite/CommandPalette/CommandPalette.stories.tsx +0 -89
  143. package/src/components/composite/CommandPalette/CommandPaletteSource.test.mjs +0 -61
  144. package/src/components/composite/CommandPalette/index.tsx +0 -310
  145. package/src/components/composite/ContentRecommendation/ContentRecommendation.stories.tsx +0 -300
  146. package/src/components/composite/ContentRecommendation/ContentRecommendationSource.test.mjs +0 -48
  147. package/src/components/composite/ContentRecommendation/index.tsx +0 -116
  148. package/src/components/composite/ContextChip/ContextChip.stories.tsx +0 -123
  149. package/src/components/composite/ContextChip/ContextChipSource.test.mjs +0 -24
  150. package/src/components/composite/ContextChip/index.tsx +0 -25
  151. package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorSizeSource.test.mjs +0 -15
  152. package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorView.stories.tsx +0 -110
  153. package/src/components/composite/ContextUsageIndicatorView/ContextUsageLoadingSource.test.mjs +0 -23
  154. package/src/components/composite/ContextUsageIndicatorView/index.tsx +0 -139
  155. package/src/components/composite/Controls/Controls.stories.tsx +0 -227
  156. package/src/components/composite/Controls/index.tsx +0 -15
  157. package/src/components/composite/CreateProjectDialog/CreateProjectDialog.stories.tsx +0 -56
  158. package/src/components/composite/CreateProjectDialog/index.tsx +0 -70
  159. package/src/components/composite/DataManagementSectionView/DataManagementSectionView.stories.tsx +0 -123
  160. package/src/components/composite/DataManagementSectionView/DataManagementSectionViewSource.test.mjs +0 -45
  161. package/src/components/composite/DataManagementSectionView/index.tsx +0 -110
  162. package/src/components/composite/DataTable/DataTable.stories.tsx +0 -159
  163. package/src/components/composite/DataTable/DataTableSource.test.mjs +0 -96
  164. package/src/components/composite/DataTable/index.tsx +0 -373
  165. package/src/components/composite/DetailChrome/DetailChrome.stories.tsx +0 -61
  166. package/src/components/composite/DetailChrome/DetailChromeSource.test.mjs +0 -31
  167. package/src/components/composite/DetailChrome/index.tsx +0 -94
  168. package/src/components/composite/DetailPanel/DetailPanel.stories.tsx +0 -185
  169. package/src/components/composite/DetailPanel/DetailPanelSource.test.mjs +0 -49
  170. package/src/components/composite/DetailPanel/index.tsx +0 -120
  171. package/src/components/composite/DetailScaffold/DetailScaffold.stories.tsx +0 -203
  172. package/src/components/composite/DetailScaffold/DetailScaffoldSource.test.mjs +0 -38
  173. package/src/components/composite/DetailScaffold/index.tsx +0 -114
  174. package/src/components/composite/Dialog/Dialog.stories.tsx +0 -343
  175. package/src/components/composite/Dialog/DialogSource.test.mjs +0 -130
  176. package/src/components/composite/Dialog/index.tsx +0 -333
  177. package/src/components/composite/DropZone/DropZone.stories.tsx +0 -105
  178. package/src/components/composite/DropZone/DropZoneSource.test.mjs +0 -68
  179. package/src/components/composite/DropZone/index.tsx +0 -196
  180. package/src/components/composite/FSelect/FSelect.stories.tsx +0 -64
  181. package/src/components/composite/FSelect/index.tsx +0 -29
  182. package/src/components/composite/FeedbackContextMenuView/FeedbackContextMenuView.stories.tsx +0 -106
  183. package/src/components/composite/FeedbackContextMenuView/index.tsx +0 -51
  184. package/src/components/composite/FeedbackDialogView/FeedbackDialogView.stories.tsx +0 -291
  185. package/src/components/composite/FeedbackDialogView/index.tsx +0 -95
  186. package/src/components/composite/FileReferenceCard/FileReferenceCard.stories.tsx +0 -364
  187. package/src/components/composite/FileReferenceCard/FileReferenceCardSource.test.mjs +0 -48
  188. package/src/components/composite/FileReferenceCard/index.tsx +0 -122
  189. package/src/components/composite/FilterBar/FilterBar.stories.tsx +0 -167
  190. package/src/components/composite/FilterBar/FilterBarSource.test.mjs +0 -75
  191. package/src/components/composite/FilterBar/index.tsx +0 -206
  192. package/src/components/composite/FormField/FormField.stories.tsx +0 -158
  193. package/src/components/composite/FormField/FormFieldSource.test.mjs +0 -56
  194. package/src/components/composite/FormField/index.tsx +0 -219
  195. package/src/components/composite/HomeBackdrop/HomeBackdrop.stories.tsx +0 -54
  196. package/src/components/composite/HomeBackdrop/HomeBackdropSource.test.mjs +0 -50
  197. package/src/components/composite/HomeBackdrop/index.tsx +0 -53
  198. package/src/components/composite/Icons/Icons.stories.tsx +0 -153
  199. package/src/components/composite/Icons/IconsSource.test.mjs +0 -23
  200. package/src/components/composite/Icons/index.tsx +0 -1367
  201. package/src/components/composite/ImageCard/ImageCard.stories.tsx +0 -54
  202. package/src/components/composite/ImageCard/index.tsx +0 -33
  203. package/src/components/composite/ImagePreview/ImagePreview.stories.tsx +0 -172
  204. package/src/components/composite/ImagePreview/ImagePreviewSource.test.mjs +0 -95
  205. package/src/components/composite/ImagePreview/index.tsx +0 -339
  206. package/src/components/composite/ListRow/ListRow.stories.tsx +0 -257
  207. package/src/components/composite/ListRow/ListRowSource.test.mjs +0 -101
  208. package/src/components/composite/ListRow/index.tsx +0 -309
  209. package/src/components/composite/Markdown/Markdown.stories.tsx +0 -192
  210. package/src/components/composite/Markdown/MarkdownSource.test.mjs +0 -126
  211. package/src/components/composite/Markdown/MarkdownStyleSource.test.mjs +0 -167
  212. package/src/components/composite/Markdown/index.tsx +0 -702
  213. package/src/components/composite/MarkdownPreview/MarkdownPreview.stories.tsx +0 -174
  214. package/src/components/composite/MarkdownPreview/MarkdownPreviewTabsSource.test.mjs +0 -31
  215. package/src/components/composite/MarkdownPreview/MarkdownRenderedStyleSource.test.mjs +0 -84
  216. package/src/components/composite/MarkdownPreview/index.tsx +0 -140
  217. package/src/components/composite/MarkdownPreviewModalView/MarkdownPreviewModalView.stories.tsx +0 -104
  218. package/src/components/composite/MarkdownPreviewModalView/index.tsx +0 -85
  219. package/src/components/composite/MessageFeedbackDialog/MessageFeedbackDialog.stories.tsx +0 -66
  220. package/src/components/composite/MessageFeedbackDialog/index.tsx +0 -115
  221. package/src/components/composite/ModelCatalogErrorState/ModelCatalogErrorState.stories.tsx +0 -101
  222. package/src/components/composite/ModelCatalogErrorState/ModelCatalogRetrySource.test.mjs +0 -86
  223. package/src/components/composite/ModelCatalogErrorState/index.tsx +0 -59
  224. package/src/components/composite/ModelModalityFlow/ModelModalityFlow.stories.tsx +0 -224
  225. package/src/components/composite/ModelModalityFlow/ModelModalityFlowSource.test.mjs +0 -56
  226. package/src/components/composite/ModelModalityFlow/index.tsx +0 -113
  227. package/src/components/composite/ModelPickerList/ModelPickerList.stories.tsx +0 -313
  228. package/src/components/composite/ModelPickerList/index.tsx +0 -142
  229. package/src/components/composite/ModelSelect/ModelSelect.stories.tsx +0 -90
  230. package/src/components/composite/ModelSelect/index.tsx +0 -148
  231. package/src/components/composite/ModelsSettingsSectionView/ModelsSettingsSectionView.stories.tsx +0 -170
  232. package/src/components/composite/ModelsSettingsSectionView/index.tsx +0 -139
  233. package/src/components/composite/NativeControls/NativeControls.stories.tsx +0 -386
  234. package/src/components/composite/NativeControls/NativeControlsStyleSource.test.mjs +0 -63
  235. package/src/components/composite/NativeControls/index.tsx +0 -97
  236. package/src/components/composite/NavMenu/NavMenu.stories.tsx +0 -383
  237. package/src/components/composite/NavMenu/NavMenuSource.test.mjs +0 -56
  238. package/src/components/composite/NavMenu/index.tsx +0 -142
  239. package/src/components/composite/NoPlanPanelView/NoPlanPanelView.stories.tsx +0 -344
  240. package/src/components/composite/NoPlanPanelView/NoPlanPanelViewSource.test.mjs +0 -34
  241. package/src/components/composite/NoPlanPanelView/index.tsx +0 -97
  242. package/src/components/composite/OpenWithButton/OpenWithButton.stories.tsx +0 -78
  243. package/src/components/composite/OpenWithButton/index.tsx +0 -46
  244. package/src/components/composite/OrbitworkLogo/OrbitworkLogo.stories.tsx +0 -192
  245. package/src/components/composite/OrbitworkLogo/index.tsx +0 -207
  246. package/src/components/composite/OrbitworkModal/OrbitworkModal.stories.tsx +0 -58
  247. package/src/components/composite/OrbitworkModal/index.tsx +0 -31
  248. package/src/components/composite/PageHead/PageHead.stories.tsx +0 -235
  249. package/src/components/composite/PageHead/PageHeadSource.test.mjs +0 -76
  250. package/src/components/composite/PageHead/index.tsx +0 -128
  251. package/src/components/composite/PlanFeatureIcon/PlanFeatureIcon.stories.tsx +0 -205
  252. package/src/components/composite/PlanFeatureIcon/PlanFeatureIconSource.test.mjs +0 -38
  253. package/src/components/composite/PlanFeatureIcon/index.tsx +0 -48
  254. package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionView.stories.tsx +0 -231
  255. package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionViewSource.test.mjs +0 -85
  256. package/src/components/composite/PlanSettingsSectionView/index.tsx +0 -264
  257. package/src/components/composite/Popover/Popover.stories.tsx +0 -175
  258. package/src/components/composite/Popover/PopoverSource.test.mjs +0 -59
  259. package/src/components/composite/Popover/index.tsx +0 -176
  260. package/src/components/composite/PptxRenderer/ElementDispatcher/index.tsx +0 -70
  261. package/src/components/composite/PptxRenderer/PptxChromeStyleSource.test.mjs +0 -36
  262. package/src/components/composite/PptxRenderer/PptxRenderer.stories.tsx +0 -128
  263. package/src/components/composite/PptxRenderer/PptxSlide/index.tsx +0 -48
  264. package/src/components/composite/PptxRenderer/constants.ts +0 -2
  265. package/src/components/composite/PptxRenderer/elements/AudioElement/index.tsx +0 -48
  266. package/src/components/composite/PptxRenderer/elements/ChartElement/index.tsx +0 -172
  267. package/src/components/composite/PptxRenderer/elements/DiagramElement/index.tsx +0 -46
  268. package/src/components/composite/PptxRenderer/elements/GroupElement/index.tsx +0 -28
  269. package/src/components/composite/PptxRenderer/elements/ImageElement/index.tsx +0 -61
  270. package/src/components/composite/PptxRenderer/elements/MathElement/index.tsx +0 -57
  271. package/src/components/composite/PptxRenderer/elements/ShapeElement/index.tsx +0 -327
  272. package/src/components/composite/PptxRenderer/elements/TableElement/index.tsx +0 -90
  273. package/src/components/composite/PptxRenderer/elements/TextElement/index.tsx +0 -57
  274. package/src/components/composite/PptxRenderer/elements/VideoElement/index.tsx +0 -43
  275. package/src/components/composite/PptxRenderer/index.ts +0 -24
  276. package/src/components/composite/PptxRenderer/types.ts +0 -326
  277. package/src/components/composite/PptxRenderer/utils.ts +0 -129
  278. package/src/components/composite/ProjectSelect/ProjectSelect.stories.tsx +0 -112
  279. package/src/components/composite/ProjectSelect/ProjectSelectSource.test.mjs +0 -34
  280. package/src/components/composite/ProjectSelect/index.tsx +0 -155
  281. package/src/components/composite/RadioCard/RadioCard.stories.tsx +0 -130
  282. package/src/components/composite/RadioCard/RadioCardSource.test.mjs +0 -42
  283. package/src/components/composite/RadioCard/index.tsx +0 -171
  284. package/src/components/composite/RowOverflowMenu/RowOverflowMenu.stories.tsx +0 -113
  285. package/src/components/composite/RowOverflowMenu/RowOverflowMenuSource.test.mjs +0 -59
  286. package/src/components/composite/RowOverflowMenu/index.tsx +0 -101
  287. package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPrompt.stories.tsx +0 -159
  288. package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPromptSource.test.mjs +0 -71
  289. package/src/components/composite/SandboxPermissionPrompt/index.tsx +0 -157
  290. package/src/components/composite/SearchInput/SearchInput.stories.tsx +0 -127
  291. package/src/components/composite/SearchInput/index.tsx +0 -91
  292. package/src/components/composite/SearchResult/SearchResult.stories.tsx +0 -305
  293. package/src/components/composite/SearchResult/SearchResultSource.test.mjs +0 -45
  294. package/src/components/composite/SearchResult/index.tsx +0 -148
  295. package/src/components/composite/Section/Section.stories.tsx +0 -148
  296. package/src/components/composite/Section/SectionSource.test.mjs +0 -59
  297. package/src/components/composite/Section/index.tsx +0 -105
  298. package/src/components/composite/SelectionBulkBar/SelectionBulkBar.stories.tsx +0 -111
  299. package/src/components/composite/SelectionBulkBar/SelectionBulkBarSource.test.mjs +0 -44
  300. package/src/components/composite/SelectionBulkBar/index.tsx +0 -99
  301. package/src/components/composite/ShareStrip/ShareStrip.stories.tsx +0 -123
  302. package/src/components/composite/ShareStrip/index.tsx +0 -83
  303. package/src/components/composite/ShortcutSheet/ShortcutSheet.stories.tsx +0 -90
  304. package/src/components/composite/ShortcutSheet/ShortcutSheetSource.test.mjs +0 -49
  305. package/src/components/composite/ShortcutSheet/index.tsx +0 -163
  306. package/src/components/composite/SitesArtifactCardView/SitesArtifactCardView.stories.tsx +0 -328
  307. package/src/components/composite/SitesArtifactCardView/SitesArtifactCardViewSource.test.mjs +0 -45
  308. package/src/components/composite/SitesArtifactCardView/index.tsx +0 -100
  309. package/src/components/composite/Skeleton/Skeleton.stories.tsx +0 -188
  310. package/src/components/composite/Skeleton/SkeletonSource.test.mjs +0 -25
  311. package/src/components/composite/Skeleton/index.tsx +0 -152
  312. package/src/components/composite/Splash/Splash.stories.tsx +0 -150
  313. package/src/components/composite/Splash/index.tsx +0 -229
  314. package/src/components/composite/StatusTag/StatusTag.stories.tsx +0 -66
  315. package/src/components/composite/StatusTag/StatusTagSource.test.mjs +0 -64
  316. package/src/components/composite/StatusTag/index.tsx +0 -78
  317. package/src/components/composite/StepList/StepList.stories.tsx +0 -352
  318. package/src/components/composite/StepList/index.tsx +0 -23
  319. package/src/components/composite/Tag/Tag.stories.tsx +0 -279
  320. package/src/components/composite/Tag/TagSource.test.mjs +0 -67
  321. package/src/components/composite/Tag/index.tsx +0 -229
  322. package/src/components/composite/TimePicker/TimePicker.stories.tsx +0 -91
  323. package/src/components/composite/TimePicker/TimePickerSource.test.mjs +0 -98
  324. package/src/components/composite/TimePicker/index.tsx +0 -208
  325. package/src/components/composite/TitleBar/TitleBar.stories.tsx +0 -329
  326. package/src/components/composite/TitleBar/TitleBarSource.test.mjs +0 -140
  327. package/src/components/composite/TitleBar/index.tsx +0 -350
  328. package/src/components/composite/Toast/Toast.stories.tsx +0 -304
  329. package/src/components/composite/Toast/ToastSource.test.mjs +0 -63
  330. package/src/components/composite/Toast/index.tsx +0 -135
  331. package/src/components/composite/Tooltip/Tooltip.stories.tsx +0 -304
  332. package/src/components/composite/Tooltip/TooltipSource.test.mjs +0 -34
  333. package/src/components/composite/Tooltip/index.tsx +0 -204
  334. package/src/components/composite/TranscriptDividers/TranscriptDividers.stories.tsx +0 -160
  335. package/src/components/composite/TranscriptDividers/TranscriptDividersSource.test.mjs +0 -90
  336. package/src/components/composite/TranscriptDividers/index.tsx +0 -352
  337. package/src/components/composite/WCardShell/WCardShell.stories.tsx +0 -228
  338. package/src/components/composite/WCardShell/index.tsx +0 -101
  339. package/src/components/composite/index.ts +0 -81
  340. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarView.stories.tsx +0 -128
  341. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarViewSource.test.mjs +0 -69
  342. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/index.tsx +0 -212
  343. package/src/components/domain/artifacts/index.ts +0 -1
  344. package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupView.stories.tsx +0 -211
  345. package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupViewSource.test.mjs +0 -82
  346. package/src/components/domain/browser/BrowserAnnotationPopupView/index.tsx +0 -235
  347. package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarView.stories.tsx +0 -260
  348. package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarViewSource.test.mjs +0 -12
  349. package/src/components/domain/browser/BrowserDeviceToolbarView/index.tsx +0 -154
  350. package/src/components/domain/browser/BrowserFindBarView/BrowserFindBarView.stories.tsx +0 -52
  351. package/src/components/domain/browser/BrowserFindBarView/index.tsx +0 -111
  352. package/src/components/domain/browser/BrowserImportDialogView/BrowserImportDialogView.stories.tsx +0 -89
  353. package/src/components/domain/browser/BrowserImportDialogView/index.tsx +0 -155
  354. package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorView.stories.tsx +0 -197
  355. package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorViewSource.test.mjs +0 -29
  356. package/src/components/domain/browser/BrowserLoadErrorView/index.tsx +0 -45
  357. package/src/components/domain/browser/BrowserMoreMenuView/BrowserMoreMenuView.stories.tsx +0 -66
  358. package/src/components/domain/browser/BrowserMoreMenuView/index.tsx +0 -268
  359. package/src/components/domain/browser/BrowserNavBarView/BrowserNavBarView.stories.tsx +0 -149
  360. package/src/components/domain/browser/BrowserNavBarView/index.tsx +0 -156
  361. package/src/components/domain/browser/BrowserTabBarView/index.tsx +0 -18
  362. package/src/components/domain/browser/SubAgentPane/SubAgentPane.stories.tsx +0 -96
  363. package/src/components/domain/browser/SubAgentPane/SubAgentPaneSource.test.mjs +0 -48
  364. package/src/components/domain/browser/SubAgentPane/index.tsx +0 -121
  365. package/src/components/domain/browser/TerminalPane/TerminalPane.stories.tsx +0 -95
  366. package/src/components/domain/browser/TerminalPane/TerminalPaneSource.test.mjs +0 -52
  367. package/src/components/domain/browser/TerminalPane/index.tsx +0 -75
  368. package/src/components/domain/browser/WebPreview/WebPreview.stories.tsx +0 -71
  369. package/src/components/domain/browser/WebPreview/index.tsx +0 -141
  370. package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsole.stories.tsx +0 -61
  371. package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsoleSource.test.mjs +0 -66
  372. package/src/components/domain/browser/WebPreviewConsole/index.tsx +0 -239
  373. package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialog.stories.tsx +0 -288
  374. package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialogSource.test.mjs +0 -62
  375. package/src/components/domain/browser/WebPreviewDialog/index.tsx +0 -82
  376. package/src/components/domain/browser/WebPreviewNav/WebPreviewNav.stories.tsx +0 -462
  377. package/src/components/domain/browser/WebPreviewNav/WebPreviewNavSource.test.mjs +0 -353
  378. package/src/components/domain/browser/WebPreviewNav/index.tsx +0 -351
  379. package/src/components/domain/browser/WebPreviewShell/WebPreviewShell.stories.tsx +0 -226
  380. package/src/components/domain/browser/WebPreviewShell/WebPreviewShellSource.test.mjs +0 -172
  381. package/src/components/domain/browser/WebPreviewShell/index.tsx +0 -324
  382. package/src/components/domain/browser/index.ts +0 -45
  383. package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegment.stories.tsx +0 -107
  384. package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegmentSource.test.mjs +0 -45
  385. package/src/components/domain/chat/AgentLoopSegment/index.tsx +0 -29
  386. package/src/components/domain/chat/AgentTurn/AgentTurn.stories.tsx +0 -162
  387. package/src/components/domain/chat/AgentTurn/AgentTurnSource.test.mjs +0 -98
  388. package/src/components/domain/chat/AgentTurn/beaconContext.ts +0 -37
  389. package/src/components/domain/chat/AgentTurn/index.tsx +0 -226
  390. package/src/components/domain/chat/ArtifactCard/ArtifactCard.stories.tsx +0 -127
  391. package/src/components/domain/chat/ArtifactCard/index.tsx +0 -249
  392. package/src/components/domain/chat/Attachment/Attachment.stories.tsx +0 -235
  393. package/src/components/domain/chat/Attachment/AttachmentSource.test.mjs +0 -160
  394. package/src/components/domain/chat/Attachment/index.tsx +0 -857
  395. package/src/components/domain/chat/AuthorizationCard/AuthorizationCard.stories.tsx +0 -53
  396. package/src/components/domain/chat/AuthorizationCard/AuthorizationCardSource.test.mjs +0 -80
  397. package/src/components/domain/chat/AuthorizationCard/index.tsx +0 -89
  398. package/src/components/domain/chat/ChatBubble/ChatBubble.stories.tsx +0 -32
  399. package/src/components/domain/chat/ChatBubble/index.tsx +0 -24
  400. package/src/components/domain/chat/ChatMessage/ChatMessage.stories.tsx +0 -31
  401. package/src/components/domain/chat/ChatMessage/index.tsx +0 -23
  402. package/src/components/domain/chat/ChatR2ReviewSource.test.mjs +0 -98
  403. package/src/components/domain/chat/ChatThinking/ChatThinking.stories.tsx +0 -125
  404. package/src/components/domain/chat/ChatThinking/index.tsx +0 -55
  405. package/src/components/domain/chat/Chatbot/Chatbot.stories.tsx +0 -49
  406. package/src/components/domain/chat/Chatbot/index.tsx +0 -37
  407. package/src/components/domain/chat/Composer/Composer.stories.tsx +0 -227
  408. package/src/components/domain/chat/Composer/ComposerSource.test.mjs +0 -175
  409. package/src/components/domain/chat/Composer/index.tsx +0 -450
  410. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.stories.tsx +0 -203
  411. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.tsx +0 -110
  412. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrumSource.test.mjs +0 -54
  413. package/src/components/domain/chat/Composer/parts/ComposerAuthorization.stories.tsx +0 -155
  414. package/src/components/domain/chat/Composer/parts/ComposerAuthorization.tsx +0 -108
  415. package/src/components/domain/chat/Composer/parts/ComposerMentions.stories.tsx +0 -76
  416. package/src/components/domain/chat/Composer/parts/ComposerMentions.tsx +0 -83
  417. package/src/components/domain/chat/Composer/parts/ComposerMentionsSource.test.mjs +0 -85
  418. package/src/components/domain/chat/Composer/parts/ComposerMenu.stories.tsx +0 -266
  419. package/src/components/domain/chat/Composer/parts/ComposerMenu.tsx +0 -232
  420. package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.stories.tsx +0 -166
  421. package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.tsx +0 -87
  422. package/src/components/domain/chat/Composer/parts/ComposerMenuPopoverSource.test.mjs +0 -56
  423. package/src/components/domain/chat/Composer/parts/ComposerPopover.stories.tsx +0 -257
  424. package/src/components/domain/chat/Composer/parts/ComposerPopover.tsx +0 -221
  425. package/src/components/domain/chat/Composer/parts/ComposerPopoverSource.test.mjs +0 -71
  426. package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.stories.tsx +0 -260
  427. package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.tsx +0 -246
  428. package/src/components/domain/chat/Composer/parts/ComposerProjectPickerSource.test.mjs +0 -46
  429. package/src/components/domain/chat/Composer/parts/ComposerQueue.stories.tsx +0 -275
  430. package/src/components/domain/chat/Composer/parts/ComposerQueue.tsx +0 -155
  431. package/src/components/domain/chat/Composer/parts/ComposerQueueSource.test.mjs +0 -95
  432. package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.stories.tsx +0 -77
  433. package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.tsx +0 -70
  434. package/src/components/domain/chat/Composer/parts/mountChip.ts +0 -21
  435. package/src/components/domain/chat/ContextUsage/ContextUsage.stories.tsx +0 -62
  436. package/src/components/domain/chat/ContextUsage/index.tsx +0 -69
  437. package/src/components/domain/chat/ExecutionSummary/ExecutionSummary.stories.tsx +0 -238
  438. package/src/components/domain/chat/ExecutionSummary/ExecutionSummarySource.test.mjs +0 -210
  439. package/src/components/domain/chat/ExecutionSummary/index.tsx +0 -487
  440. package/src/components/domain/chat/Message/Message.stories.tsx +0 -264
  441. package/src/components/domain/chat/Message/index.tsx +0 -44
  442. package/src/components/domain/chat/MessageActions/MessageActions.stories.tsx +0 -132
  443. package/src/components/domain/chat/MessageActions/MessageActionsSource.test.mjs +0 -79
  444. package/src/components/domain/chat/MessageActions/index.tsx +0 -186
  445. package/src/components/domain/chat/PlanCard/PlanCard.stories.tsx +0 -87
  446. package/src/components/domain/chat/PlanCard/index.tsx +0 -170
  447. package/src/components/domain/chat/RichContent/RichContent.stories.tsx +0 -102
  448. package/src/components/domain/chat/RichContent/RichContentSource.test.mjs +0 -82
  449. package/src/components/domain/chat/RichContent/index.tsx +0 -465
  450. package/src/components/domain/chat/SubAgentThread/SubAgentThread.stories.tsx +0 -119
  451. package/src/components/domain/chat/SubAgentThread/index.tsx +0 -104
  452. package/src/components/domain/chat/Thinking/Thinking.stories.tsx +0 -196
  453. package/src/components/domain/chat/Thinking/ThinkingInlineSource.test.mjs +0 -154
  454. package/src/components/domain/chat/Thinking/index.tsx +0 -237
  455. package/src/components/domain/chat/ToolCallRow/ToolCallRow.stories.tsx +0 -105
  456. package/src/components/domain/chat/ToolCallRow/ToolCallRowSource.test.mjs +0 -83
  457. package/src/components/domain/chat/ToolCallRow/index.tsx +0 -113
  458. package/src/components/domain/chat/Transcript/Transcript.stories.tsx +0 -296
  459. package/src/components/domain/chat/Transcript/TranscriptSource.test.mjs +0 -189
  460. package/src/components/domain/chat/Transcript/index.tsx +0 -187
  461. package/src/components/domain/chat/TranscriptSpine/TranscriptSpine.stories.tsx +0 -124
  462. package/src/components/domain/chat/TranscriptSpine/index.tsx +0 -245
  463. package/src/components/domain/chat/UserTurn/UserTurn.stories.tsx +0 -176
  464. package/src/components/domain/chat/UserTurn/UserTurnSource.test.mjs +0 -150
  465. package/src/components/domain/chat/UserTurn/index.tsx +0 -194
  466. package/src/components/domain/chat/index.ts +0 -22
  467. package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuView.stories.tsx +0 -116
  468. package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuViewSource.test.mjs +0 -80
  469. package/src/components/domain/desktop/DesktopAccountMenuView/index.tsx +0 -355
  470. package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettings.stories.tsx +0 -96
  471. package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettingsSource.test.mjs +0 -89
  472. package/src/components/domain/desktop/DesktopAppearanceSettings/index.tsx +0 -155
  473. package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigView.stories.tsx +0 -275
  474. package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigViewSource.test.mjs +0 -37
  475. package/src/components/domain/desktop/DesktopAssistantConfigView/index.tsx +0 -221
  476. package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogView.stories.tsx +0 -537
  477. package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogViewSource.test.mjs +0 -339
  478. package/src/components/domain/desktop/DesktopCatalogView/index.tsx +0 -1074
  479. package/src/components/domain/desktop/DesktopChatBranchDivider/DesktopChatBranchDivider.stories.tsx +0 -58
  480. package/src/components/domain/desktop/DesktopChatBranchDivider/index.tsx +0 -33
  481. package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateView.stories.tsx +0 -75
  482. package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateViewSource.test.mjs +0 -54
  483. package/src/components/domain/desktop/DesktopChatEmptyStateView/index.tsx +0 -64
  484. package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderView.stories.tsx +0 -83
  485. package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderViewSource.test.mjs +0 -126
  486. package/src/components/domain/desktop/DesktopChatHeaderView/index.tsx +0 -169
  487. package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageView.stories.tsx +0 -170
  488. package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageViewSource.test.mjs +0 -47
  489. package/src/components/domain/desktop/DesktopChatMessageView/index.tsx +0 -213
  490. package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnView.stories.tsx +0 -498
  491. package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnViewSource.test.mjs +0 -187
  492. package/src/components/domain/desktop/DesktopChatTurnView/index.tsx +0 -490
  493. package/src/components/domain/desktop/DesktopComposer/DesktopComposer.stories.tsx +0 -195
  494. package/src/components/domain/desktop/DesktopComposer/DesktopComposerModelPickerSource.test.mjs +0 -132
  495. package/src/components/domain/desktop/DesktopComposer/DesktopComposerMountChipSource.test.mjs +0 -43
  496. package/src/components/domain/desktop/DesktopComposer/DesktopComposerResponsiveSource.test.mjs +0 -44
  497. package/src/components/domain/desktop/DesktopComposer/DesktopMcpFormThemeSource.test.mjs +0 -30
  498. package/src/components/domain/desktop/DesktopComposer/index.tsx +0 -206
  499. package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailView.stories.tsx +0 -72
  500. package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailViewSource.test.mjs +0 -81
  501. package/src/components/domain/desktop/DesktopConnectorDetailView/index.tsx +0 -301
  502. package/src/components/domain/desktop/DesktopHomeView/DesktopHomeView.stories.tsx +0 -103
  503. package/src/components/domain/desktop/DesktopHomeView/DesktopHomeViewSource.test.mjs +0 -51
  504. package/src/components/domain/desktop/DesktopHomeView/index.tsx +0 -122
  505. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/DesktopLibraryAuthorizationDialog.stories.tsx +0 -55
  506. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/DesktopLibraryAuthorizationDialogSource.test.mjs +0 -22
  507. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/index.tsx +0 -171
  508. package/src/components/domain/desktop/DesktopLibraryPageView/DesktopLibraryPageView.stories.tsx +0 -49
  509. package/src/components/domain/desktop/DesktopLibraryPageView/index.tsx +0 -49
  510. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.css +0 -75
  511. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.stories.tsx +0 -230
  512. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginViewSource.test.mjs +0 -156
  513. package/src/components/domain/desktop/DesktopLoginView/index.tsx +0 -432
  514. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourView.stories.tsx +0 -103
  515. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourViewSource.test.mjs +0 -57
  516. package/src/components/domain/desktop/DesktopOnboardingTourView/index.tsx +0 -189
  517. package/src/components/domain/desktop/DesktopPet/DesktopPet.fixture.ts +0 -243
  518. package/src/components/domain/desktop/DesktopPet/DesktopPet.stories.tsx +0 -337
  519. package/src/components/domain/desktop/DesktopPet/DesktopPetSource.test.mjs +0 -191
  520. package/src/components/domain/desktop/DesktopPet/index.tsx +0 -591
  521. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettings.stories.tsx +0 -159
  522. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettingsSource.test.mjs +0 -76
  523. package/src/components/domain/desktop/DesktopPetSettings/index.tsx +0 -140
  524. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusView.stories.tsx +0 -166
  525. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusViewSource.test.mjs +0 -51
  526. package/src/components/domain/desktop/DesktopRunStatusView/index.tsx +0 -34
  527. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCard.stories.tsx +0 -122
  528. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCardSource.test.mjs +0 -42
  529. package/src/components/domain/desktop/DesktopSelectionCard/index.tsx +0 -75
  530. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySection.stories.tsx +0 -225
  531. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySectionSource.test.mjs +0 -105
  532. package/src/components/domain/desktop/DesktopSettingsMemorySection/index.tsx +0 -340
  533. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsView.stories.tsx +0 -177
  534. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsViewSource.test.mjs +0 -195
  535. package/src/components/domain/desktop/DesktopSettingsView/index.tsx +0 -176
  536. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarView.stories.tsx +0 -77
  537. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarViewSource.test.mjs +0 -76
  538. package/src/components/domain/desktop/DesktopShareSelectionBarView/index.tsx +0 -55
  539. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarView.stories.tsx +0 -454
  540. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarViewSource.test.mjs +0 -388
  541. package/src/components/domain/desktop/DesktopSidebarView/index.tsx +0 -1111
  542. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesView.stories.tsx +0 -369
  543. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesViewSource.test.mjs +0 -123
  544. package/src/components/domain/desktop/DesktopSiteReleasesView/index.tsx +0 -392
  545. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListView.stories.tsx +0 -244
  546. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListViewSource.test.mjs +0 -198
  547. package/src/components/domain/desktop/DesktopSitesListView/index.tsx +0 -417
  548. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageView.stories.tsx +0 -230
  549. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageViewSource.test.mjs +0 -149
  550. package/src/components/domain/desktop/DesktopSkillsPageView/index.tsx +0 -235
  551. package/src/components/domain/desktop/DesktopTaskDetailView/index.tsx +0 -111
  552. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallListViewSource.test.mjs +0 -302
  553. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallView.stories.tsx +0 -409
  554. package/src/components/domain/desktop/DesktopToolCallView/index.tsx +0 -388
  555. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShell.stories.tsx +0 -418
  556. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShellSource.test.mjs +0 -151
  557. package/src/components/domain/desktop/DesktopWorkbenchShell/index.tsx +0 -167
  558. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageView.stories.tsx +0 -135
  559. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageViewSource.test.mjs +0 -57
  560. package/src/components/domain/desktop/DesktopWorkspacePageView/index.tsx +0 -114
  561. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceView.stories.tsx +0 -227
  562. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceViewSource.test.mjs +0 -175
  563. package/src/components/domain/desktop/DesktopWorkspaceView/index.tsx +0 -580
  564. package/src/components/domain/desktop/ResourceManagement/ResourceManagement.stories.tsx +0 -19
  565. package/src/components/domain/desktop/ResourceManagement/ResourceManagementSource.test.mjs +0 -54
  566. package/src/components/domain/desktop/ResourceManagement/SharesList.tsx +0 -323
  567. package/src/components/domain/desktop/ResourceManagement/SnapshotViews.tsx +0 -92
  568. package/src/components/domain/desktop/ResourceManagement/SnapshotViewsSource.test.mjs +0 -15
  569. package/src/components/domain/desktop/ResourceManagement/index.tsx +0 -246
  570. package/src/components/domain/desktop/ShareSettingsDialogView/index.tsx +0 -234
  571. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmpty.stories.tsx +0 -100
  572. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmptySource.test.mjs +0 -67
  573. package/src/components/domain/desktop/SidePanelEmpty/index.tsx +0 -113
  574. package/src/components/domain/desktop/StarterCapsules/StarterCapsules.stories.tsx +0 -65
  575. package/src/components/domain/desktop/StarterCapsules/StarterCapsulesSource.test.mjs +0 -43
  576. package/src/components/domain/desktop/StarterCapsules/index.tsx +0 -90
  577. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanel.stories.tsx +0 -59
  578. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanelSource.test.mjs +0 -51
  579. package/src/components/domain/desktop/WorkbenchSidePanel/index.tsx +0 -74
  580. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirm.stories.tsx +0 -79
  581. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirmSource.test.mjs +0 -34
  582. package/src/components/domain/desktop/WorkspaceMigrateConfirm/index.tsx +0 -92
  583. package/src/components/domain/desktop/index.ts +0 -64
  584. package/src/components/domain/files/FileBrowser/FileBrowser.stories.tsx +0 -397
  585. package/src/components/domain/files/FileBrowser/FileBrowserSource.test.mjs +0 -75
  586. package/src/components/domain/files/FileBrowser/index.tsx +0 -221
  587. package/src/components/domain/files/FileIcon/FileIcon.stories.tsx +0 -207
  588. package/src/components/domain/files/FileIcon/FileIconSource.test.mjs +0 -39
  589. package/src/components/domain/files/FileIcon/index.tsx +0 -133
  590. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentView.stories.tsx +0 -242
  591. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentViewSource.test.mjs +0 -44
  592. package/src/components/domain/files/FilePreviewContentView/index.tsx +0 -125
  593. package/src/components/domain/files/FileTree/FileTree.stories.tsx +0 -204
  594. package/src/components/domain/files/FileTree/FileTreeSource.test.mjs +0 -18
  595. package/src/components/domain/files/FileTree/index.tsx +0 -106
  596. package/src/components/domain/files/PreviewDialog/PreviewDialog.stories.tsx +0 -178
  597. package/src/components/domain/files/PreviewDialog/PreviewDialogSource.test.mjs +0 -92
  598. package/src/components/domain/files/PreviewDialog/index.tsx +0 -294
  599. package/src/components/domain/files/index.ts +0 -5
  600. package/src/components/domain/index.ts +0 -8
  601. package/src/components/domain/office/CsvPreview/CsvPreview.stories.tsx +0 -264
  602. package/src/components/domain/office/CsvPreview/CsvPreviewSource.test.mjs +0 -77
  603. package/src/components/domain/office/CsvPreview/index.tsx +0 -224
  604. package/src/components/domain/office/OfficePreview/OfficePreview.stories.tsx +0 -265
  605. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.stories.tsx +0 -71
  606. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.tsx +0 -43
  607. package/src/components/domain/office/OfficePreview/OfficePreviewSource.test.mjs +0 -126
  608. package/src/components/domain/office/OfficePreview/index.tsx +0 -782
  609. package/src/components/domain/office/PdfPreview/PdfPreview.stories.tsx +0 -280
  610. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.stories.tsx +0 -61
  611. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.tsx +0 -61
  612. package/src/components/domain/office/PdfPreview/PdfPreviewSource.test.mjs +0 -70
  613. package/src/components/domain/office/PdfPreview/index.tsx +0 -217
  614. package/src/components/domain/office/index.ts +0 -5
  615. package/src/components/domain/skills/McpServerListView/McpServerListView.stories.tsx +0 -510
  616. package/src/components/domain/skills/McpServerListView/McpServerListViewSource.test.mjs +0 -101
  617. package/src/components/domain/skills/McpServerListView/index.tsx +0 -250
  618. package/src/components/domain/skills/SkillAvatarView/SkillAvatarView.stories.tsx +0 -121
  619. package/src/components/domain/skills/SkillAvatarView/SkillAvatarViewSource.test.mjs +0 -67
  620. package/src/components/domain/skills/SkillAvatarView/index.tsx +0 -112
  621. package/src/components/domain/skills/SkillCardView/SkillCardView.stories.tsx +0 -374
  622. package/src/components/domain/skills/SkillCardView/SkillCardViewSource.test.mjs +0 -35
  623. package/src/components/domain/skills/SkillCardView/index.tsx +0 -88
  624. package/src/components/domain/skills/SkillDetailPanelView/SkillDetailPanelView.stories.tsx +0 -113
  625. package/src/components/domain/skills/SkillDetailPanelView/index.tsx +0 -115
  626. package/src/components/domain/skills/SkillDetailView/SkillDetailView.stories.tsx +0 -274
  627. package/src/components/domain/skills/SkillDetailView/index.tsx +0 -121
  628. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogView.stories.tsx +0 -128
  629. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogViewSource.test.mjs +0 -11
  630. package/src/components/domain/skills/SkillImportDialogView/index.tsx +0 -147
  631. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalView.stories.tsx +0 -160
  632. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalViewSource.test.mjs +0 -99
  633. package/src/components/domain/skills/ToolDetailModalView/index.tsx +0 -160
  634. package/src/components/domain/skills/index.ts +0 -7
  635. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardView.stories.tsx +0 -120
  636. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardViewSource.test.mjs +0 -40
  637. package/src/components/domain/tasks/ScheduledTaskCardView/index.tsx +0 -135
  638. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialog.stories.tsx +0 -56
  639. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialogSource.test.mjs +0 -35
  640. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx +0 -73
  641. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailView.stories.tsx +0 -121
  642. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailViewSource.test.mjs +0 -115
  643. package/src/components/domain/tasks/ScheduledTaskDetailView/index.tsx +0 -223
  644. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceView.stories.tsx +0 -526
  645. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceViewSource.test.mjs +0 -85
  646. package/src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx +0 -118
  647. package/src/components/domain/tasks/index.ts +0 -4
  648. package/src/components/domain/theme/SkinManager.stories.tsx +0 -43
  649. package/src/components/domain/theme/SkinManagerUI.tsx +0 -382
  650. package/src/components/domain/theme/ThemeDemo.stories.tsx +0 -12
  651. package/src/components/domain/theme/ThemeDemo.tsx +0 -224
  652. package/src/components/index.ts +0 -11
  653. package/src/components/primitives/Avatar/Avatar.stories.tsx +0 -170
  654. package/src/components/primitives/Avatar/AvatarSource.test.mjs +0 -37
  655. package/src/components/primitives/Avatar/index.tsx +0 -180
  656. package/src/components/primitives/BackTop/BackTop.stories.tsx +0 -122
  657. package/src/components/primitives/BackTop/BackTopSource.test.mjs +0 -61
  658. package/src/components/primitives/BackTop/index.tsx +0 -93
  659. package/src/components/primitives/Badge/Badge.stories.tsx +0 -376
  660. package/src/components/primitives/Badge/BadgeSource.test.mjs +0 -27
  661. package/src/components/primitives/Badge/index.tsx +0 -65
  662. package/src/components/primitives/Button/Button.stories.tsx +0 -287
  663. package/src/components/primitives/Button/ButtonSource.test.mjs +0 -84
  664. package/src/components/primitives/Button/index.tsx +0 -219
  665. package/src/components/primitives/Card/Card.stories.tsx +0 -186
  666. package/src/components/primitives/Card/CardSource.test.mjs +0 -73
  667. package/src/components/primitives/Card/index.tsx +0 -137
  668. package/src/components/primitives/Checkbox/Checkbox.stories.tsx +0 -79
  669. package/src/components/primitives/Checkbox/CheckboxSource.test.mjs +0 -43
  670. package/src/components/primitives/Checkbox/index.tsx +0 -87
  671. package/src/components/primitives/Chip/Chip.stories.tsx +0 -149
  672. package/src/components/primitives/Chip/ChipSource.test.mjs +0 -73
  673. package/src/components/primitives/Chip/index.tsx +0 -252
  674. package/src/components/primitives/Divider/Divider.stories.tsx +0 -68
  675. package/src/components/primitives/Divider/DividerSource.test.mjs +0 -26
  676. package/src/components/primitives/Divider/index.tsx +0 -65
  677. package/src/components/primitives/Dropdown/Dropdown.stories.tsx +0 -38
  678. package/src/components/primitives/Dropdown/DropdownSource.test.mjs +0 -23
  679. package/src/components/primitives/Dropdown/index.tsx +0 -29
  680. package/src/components/primitives/EmptyState/EmptyState.stories.tsx +0 -159
  681. package/src/components/primitives/EmptyState/EmptyStateSource.test.mjs +0 -169
  682. package/src/components/primitives/EmptyState/index.tsx +0 -185
  683. package/src/components/primitives/ErrorCard/ErrorCard.stories.tsx +0 -50
  684. package/src/components/primitives/ErrorCard/index.tsx +0 -78
  685. package/src/components/primitives/Field/Field.stories.tsx +0 -208
  686. package/src/components/primitives/Field/FieldSource.test.mjs +0 -70
  687. package/src/components/primitives/Field/index.tsx +0 -297
  688. package/src/components/primitives/InlineMessage/InlineMessage.stories.tsx +0 -137
  689. package/src/components/primitives/InlineMessage/InlineMessageSource.test.mjs +0 -50
  690. package/src/components/primitives/InlineMessage/index.tsx +0 -141
  691. package/src/components/primitives/Input/Input.stories.tsx +0 -30
  692. package/src/components/primitives/Input/index.tsx +0 -12
  693. package/src/components/primitives/Keycap/Keycap.stories.tsx +0 -93
  694. package/src/components/primitives/Keycap/KeycapSource.test.mjs +0 -30
  695. package/src/components/primitives/Keycap/index.tsx +0 -67
  696. package/src/components/primitives/Menu/Menu.stories.tsx +0 -416
  697. package/src/components/primitives/Menu/MenuEmptySource.test.mjs +0 -23
  698. package/src/components/primitives/Menu/MenuSource.test.mjs +0 -207
  699. package/src/components/primitives/Menu/index.tsx +0 -923
  700. package/src/components/primitives/Pagination/Pagination.stories.tsx +0 -77
  701. package/src/components/primitives/Pagination/PaginationSource.test.mjs +0 -24
  702. package/src/components/primitives/Pagination/index.tsx +0 -85
  703. package/src/components/primitives/Pagination/pagination.ts +0 -25
  704. package/src/components/primitives/Pagination/paginationModel.test.mjs +0 -18
  705. package/src/components/primitives/ProgressBar/ProgressBar.stories.tsx +0 -103
  706. package/src/components/primitives/ProgressBar/ProgressBarSource.test.mjs +0 -44
  707. package/src/components/primitives/ProgressBar/index.tsx +0 -68
  708. package/src/components/primitives/Radio/Radio.stories.tsx +0 -84
  709. package/src/components/primitives/Radio/RadioSource.test.mjs +0 -38
  710. package/src/components/primitives/Radio/index.tsx +0 -161
  711. package/src/components/primitives/SegmentedControl/SegmentedControl.stories.tsx +0 -110
  712. package/src/components/primitives/SegmentedControl/SegmentedControlSource.test.mjs +0 -75
  713. package/src/components/primitives/SegmentedControl/index.tsx +0 -188
  714. package/src/components/primitives/Select/Select.stories.tsx +0 -158
  715. package/src/components/primitives/Select/SelectSource.test.mjs +0 -94
  716. package/src/components/primitives/Select/index.tsx +0 -406
  717. package/src/components/primitives/Spinner/index.tsx +0 -58
  718. package/src/components/primitives/Switch/Switch.stories.tsx +0 -64
  719. package/src/components/primitives/Switch/SwitchSource.test.mjs +0 -38
  720. package/src/components/primitives/Switch/index.tsx +0 -84
  721. package/src/components/primitives/Tabs/Tabs.stories.tsx +0 -230
  722. package/src/components/primitives/Tabs/TabsSource.test.mjs +0 -91
  723. package/src/components/primitives/Tabs/index.tsx +0 -183
  724. package/src/components/primitives/index.ts +0 -24
  725. package/src/examples/ResourceManagementExample.tsx +0 -119
  726. package/src/examples/SiteWorkbenchExample.tsx +0 -96
  727. package/src/hooks/index.ts +0 -7
  728. package/src/hooks/useClickOutside.ts +0 -20
  729. package/src/hooks/useDragReorder.ts +0 -29
  730. package/src/hooks/useImeAwareEnter.ts +0 -59
  731. package/src/hooks/useImeAwareEnterSource.test.mjs +0 -65
  732. package/src/hooks/useKeyboard.ts +0 -16
  733. package/src/hooks/usePopover.ts +0 -67
  734. package/src/hooks/useSelectedOptionLocator.ts +0 -33
  735. package/src/hooks/useSidebarResize.ts +0 -107
  736. package/src/hooks/useTenantTheme.ts +0 -53
  737. package/src/hooks/useUnifiedTheme.ts +0 -85
  738. package/src/index.ts +0 -6
  739. package/src/lib/InjectedStyleTokenMirrorSource.test.mjs +0 -67
  740. package/src/lib/about-window.test.mjs +0 -46
  741. package/src/lib/about-window.ts +0 -218
  742. package/src/lib/appearance.test.mjs +0 -283
  743. package/src/lib/appearance.ts +0 -46
  744. package/src/lib/browser-annotation-popup.ts +0 -151
  745. package/src/lib/focusTrap.ts +0 -51
  746. package/src/lib/index.ts +0 -5
  747. package/src/lib/shortcut.test.mjs +0 -100
  748. package/src/lib/shortcut.ts +0 -97
  749. package/src/lib/twMergeOw.ts +0 -18
  750. package/src/lib/utils.ts +0 -6
  751. package/src/screens/Browser.stories.tsx +0 -353
  752. package/src/screens/Chat.stories.tsx +0 -808
  753. package/src/screens/Home.stories.tsx +0 -253
  754. package/src/screens/Login.stories.tsx +0 -134
  755. package/src/screens/McpManager.stories.tsx +0 -159
  756. package/src/screens/Onboarding.stories.tsx +0 -155
  757. package/src/screens/ScheduledTasks.stories.tsx +0 -134
  758. package/src/screens/ScreenFrameSource.test.mjs +0 -77
  759. package/src/screens/SettingsAppearance.stories.tsx +0 -117
  760. package/src/screens/SettingsMemory.stories.tsx +0 -128
  761. package/src/screens/SettingsModels.stories.tsx +0 -228
  762. package/src/screens/SettingsSections.stories.tsx +0 -164
  763. package/src/screens/Share.stories.tsx +0 -202
  764. package/src/screens/SharePage.stories.tsx +0 -29
  765. package/src/screens/Sites.stories.tsx +0 -183
  766. package/src/screens/Skills.stories.tsx +0 -83
  767. package/src/screens/Workspace.stories.tsx +0 -191
  768. package/src/screens/_home.tsx +0 -46
  769. package/src/screens/_screen.tsx +0 -355
  770. package/src/screens/_settingsNav.ts +0 -27
  771. package/src/screens/_skillsCatalog.tsx +0 -372
  772. package/src/theme/SkinDenylistSyncSource.test.mjs +0 -124
  773. package/src/theme/__tests__/skins.test.mjs +0 -84
  774. package/src/theme/core/semanticAdapter.ts +0 -116
  775. package/src/theme/core/skin.ts +0 -605
  776. package/src/theme/core/skinScoped.ts +0 -289
  777. package/src/theme/core/tenantTheme.test.mjs +0 -127
  778. package/src/theme/core/tenantTheme.ts +0 -124
  779. package/src/theme/core/types.ts +0 -60
  780. package/src/theme/core/unifiedTheme.ts +0 -157
  781. package/src/theme/index.ts +0 -33
  782. package/src/theme/providers/BrandingProvider.tsx +0 -57
  783. package/src/theme/providers/ThemeProvider.tsx +0 -221
  784. package/src/theme/skinDs2PropertyGate.test.mjs +0 -109
  785. package/src/theme/skins/index.ts +0 -107
  786. package/src/theme/utils/cssSafety.ts +0 -92
  787. package/src/theme/utils/skinManager.ts +0 -159
  788. package/src/theme/utils/themeApplier.ts +0 -75
  789. package/src/tokens/DesktopSurfacesSweep15Source.test.mjs +0 -77
  790. package/src/tokens/SharedStyleSheetsSource.test.mjs +0 -90
  791. package/src/tokens/TailwindThemeSupplySource.test.mjs +0 -129
  792. package/src/tokens/base.ts +0 -199
  793. package/src/tokens/dark.ts +0 -288
  794. package/src/tokens/index.ts +0 -4
  795. package/src/tokens/light.ts +0 -320
  796. package/src/tokens/tailwind.ts +0 -216
  797. package/src/types/desktop-pet.ts +0 -100
  798. package/src/types/file-browser.ts +0 -51
  799. package/src/types/file-tree.ts +0 -34
  800. package/src/types/index.ts +0 -3
  801. package/src/types/xspreadsheet.d.ts +0 -4
  802. package/src/utils/cn.ts +0 -6
  803. package/src/utils/glyphColor.ts +0 -32
  804. package/src/utils/index.ts +0 -4
  805. package/src/utils/localPathInline.test.mjs +0 -45
  806. package/src/utils/localPathInline.ts +0 -49
  807. package/src/utils/markdownFileRefs.test.mjs +0 -88
  808. package/src/utils/markdownFileRefs.ts +0 -140
  809. package/src/utils/office-excel.ts +0 -452
  810. package/src/utils/shiki.ts +0 -156
@@ -1,857 +0,0 @@
1
- "use client"
2
-
3
- import { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from "react"
4
- import { cn } from "../../../../lib/utils"
5
- import { Icon, type IconName } from "../../../composite/Icons"
6
- import { Button } from "../../../primitives/Button"
7
- import { EmptyState } from "../../../primitives/EmptyState"
8
- import { Menu, type MenuEntry } from "../../../primitives/Menu"
9
- import { ProgressBar } from "../../../primitives/ProgressBar"
10
- import { FileIcon, resolveFileIcon } from "../../files/FileIcon"
11
-
12
- /**
13
- * Attachment — 聊天附件(DS 2.0 聊天域 · 蓝图批次③「Attachment(合并 AttachmentCard /
14
- * Attachments / FileReferenceCard(+s) / ImageCard)」)。
15
- *
16
- * 四个形态,一套状态:
17
- * - `card` 横卡:FileIcon 单色字形 + 文件名 + meta mono 读数 + 操作 Menu(旧 FileReferenceCard);
18
- * - `tile` 方片 112×112:Composer 附件条里的非图附件(旧 AttachmentCard 无缩略档);
19
- * - `image` 图片方片 112×112:缩略图 + scrim 遮罩操作(旧 AttachmentCard 缩略档);
20
- * - `media` 富媒体图卡:最大 420 宽 + 可选说明行(旧 ImageCard)。
21
- * 行集走同目录 `AttachmentList`(strip 横排=旧 Attachments,stack 竖列=旧 FileReferenceCards)。
22
- *
23
- * 立面 §5:卡是贴地之物 —— 1px `--ow-border` + 0 影,hover 走所在表面的 `--ow-hover`→`--ow-press`
24
- * (不是 pop 档,卡不是弹层);只有操作 Menu 那一层是离地之物,立面由 `Menu` 原语承担。
25
- *
26
- * 状态 §6:default / hover / press / focus-visible(`ow-focus-ring` 2px 环)/ disabled 逐 token /
27
- * 上传中(`ProgressBar` + mono 读数)/ 失败(error tint +「重试」,R1 双编码:色之外还有文字与按钮)/ 完成。
28
- *
29
- * 度量 §7:圆角 12(`--ow-radius-card`);文件名 sans、meta 读数一律 mono + tabular-nums;
30
- * 文件类型图标=单色字形 + 扩展名 mono 标签(`FileIcon`),禁多彩类型底。
31
- *
32
- * R3 中性件:聊天里的附件没有叙事位置 —— 不带信标点、不引荧黄,品牌感只来自字体、灰阶、间距。
33
- * 上传进度用 `--ow-progress-fill`(墨/月白)而不是荧黄(§4「其余角色永不荧黄」)。
34
- */
35
-
36
- /* ------------------------------------------------------------------ *
37
- * 数据模型
38
- * ------------------------------------------------------------------ */
39
-
40
- /** 文件语义分类。旧 `FileReferenceTone` 的规范名。 */
41
- export type AttachmentTone =
42
- | "file"
43
- | "markdown"
44
- | "presentation"
45
- | "document"
46
- | "spreadsheet"
47
- | "image"
48
- | "video"
49
- | "pdf"
50
- | "web"
51
- | "code"
52
-
53
- /** 一条文件引用。旧 `FileReferenceItem` 的规范名,字段逐一保留。 */
54
- export type AttachmentItem = {
55
- id?: string
56
- name: string
57
- path: string
58
- /** 扩展名标签覆盖(默认从 path/name 推断),透传给 FileIcon 的右下角标签。 */
59
- badge?: string
60
- /** 类型文案覆盖(业务文案,如来源/价格)。 */
61
- typeLabel?: string
62
- }
63
- /* R2:`tone`(V1 的多彩文件类别)从本类型摘除——DS 2.0 §7「文件类型图标=单色字形 +
64
- 扩展名 mono 标签,禁多彩类型底」,全库没有也不会有消费方,留着是个渲不出来的承诺。
65
- 语义分类本身还在 `AttachmentMeta.tone`(inferAttachmentMeta 的返回),宿主要分类判断
66
- 直接读那里。 */
67
-
68
- /** 操作菜单里的一个应用/动作。旧 `FileReferenceOpenWithOption` 的规范名。 */
69
- export type AttachmentOpenOption = {
70
- id: string
71
- name: string
72
- path?: string
73
- isDefault?: boolean
74
- kind?: "app" | "action"
75
- icon?: string
76
- iconName?: IconName
77
- iconUrl?: string
78
- disabled?: boolean
79
- }
80
-
81
- /** 操作菜单条目(含分隔线与分组标题)。旧 `FileReferenceMenuOption` 的规范名。 */
82
- export type AttachmentMenuOption =
83
- | AttachmentOpenOption
84
- | { id: string; kind: "divider"; name?: string }
85
- | { id: string; kind: "header"; name: string }
86
-
87
- /** 上传生命周期。 */
88
- export type AttachmentStatus = "uploading" | "error" | "done"
89
-
90
- export type AttachmentVariant = "card" | "tile" | "image" | "media"
91
-
92
- type AttachmentMeta = {
93
- badge: string
94
- label: string
95
- tone: AttachmentTone
96
- }
97
-
98
- /* ------------------------------------------------------------------ *
99
- * 类型推断
100
- * ------------------------------------------------------------------ */
101
-
102
- /** 从路径或文件名推断扩展名标签、类型文案与 tone。旧 `inferFileReferenceMeta` 的规范名。 */
103
- export function inferAttachmentMeta(pathOrName: string): AttachmentMeta {
104
- const ext = (pathOrName.match(/\.([A-Za-z0-9]+)(?::\d+)?$/)?.[1] ?? "").toLowerCase()
105
- if (ext === "md" || ext === "markdown") return { badge: "MD", label: "Markdown", tone: "markdown" }
106
- if (["ppt", "pptx"].includes(ext)) return { badge: "P", label: "演示文稿", tone: "presentation" }
107
- if (["doc", "docx"].includes(ext)) return { badge: "W", label: "文档", tone: "document" }
108
- if (["xls", "xlsx", "csv"].includes(ext)) return { badge: "X", label: "表格", tone: "spreadsheet" }
109
- if (["png", "jpg", "jpeg", "gif", "webp", "bmp", "svg", "heic", "heif", "tif", "tiff"].includes(ext))
110
- return { badge: "IMG", label: "图片", tone: "image" }
111
- if (["mp4", "mov", "webm", "avi", "mkv"].includes(ext)) return { badge: "VID", label: "视频", tone: "video" }
112
- if (ext === "pdf") return { badge: "PDF", label: "PDF", tone: "pdf" }
113
- if (ext === "html" || ext === "htm") return { badge: "HTML", label: "网页", tone: "web" }
114
- if (["py", "ts", "tsx", "js", "jsx", "go", "rs", "java", "cpp", "c", "h", "css", "json", "yaml", "yml"].includes(ext))
115
- return { badge: ext.toUpperCase().slice(0, 3), label: "代码", tone: "code" }
116
- return { badge: ext ? ext.toUpperCase().slice(0, 3) : "FILE", label: "文件", tone: "file" }
117
- }
118
-
119
- function attachmentMeta(item: AttachmentItem): AttachmentMeta {
120
- const inferred = inferAttachmentMeta(item.path || item.name)
121
- return {
122
- badge: (item.badge ?? inferred.badge).trim().toUpperCase().slice(0, 4) || "FILE",
123
- label: item.typeLabel ?? inferred.label,
124
- tone: inferred.tone,
125
- }
126
- }
127
-
128
- /* ------------------------------------------------------------------ *
129
- * 操作菜单(Menu 配方)
130
- * ------------------------------------------------------------------ */
131
-
132
- function isOpenOption(option: AttachmentMenuOption): option is AttachmentOpenOption {
133
- return option.kind !== "divider" && option.kind !== "header"
134
- }
135
-
136
- /** 主进程枚举应用是分两拨回的:先回名字、后补图标。图标没齐就还得再刷一次。 */
137
- function areOptionsComplete(options: AttachmentMenuOption[]): boolean {
138
- const apps = options.filter((option): option is AttachmentOpenOption => option.kind === "app")
139
- return apps.length === 0 || apps.every((option) => Boolean(option.iconUrl || option.iconName || option.icon))
140
- }
141
-
142
- function optionKey(option: AttachmentMenuOption, index: number): string {
143
- return `${option.id}::${isOpenOption(option) ? (option.path ?? "") : index}`
144
- }
145
-
146
- function optionIcon(option: AttachmentOpenOption): ReactNode {
147
- if (option.iconUrl)
148
- return (
149
- <img
150
- src={option.iconUrl}
151
- alt=""
152
- className="w-4 h-4 object-contain [border-radius:var(--ow-radius-2xs)]"
153
- aria-hidden="true"
154
- />
155
- )
156
- if (option.iconName) return <Icon name={option.iconName} size={15} />
157
- return option.icon ?? null
158
- }
159
-
160
- function toMenuEntries(options: AttachmentMenuOption[]): MenuEntry[] {
161
- return options.map((option, index) => {
162
- const key = optionKey(option, index)
163
- if (option.kind === "divider") return { type: "separator", key }
164
- if (option.kind === "header") return { type: "group", key, label: option.name }
165
- return { key, label: option.name, icon: optionIcon(option), disabled: option.disabled }
166
- })
167
- }
168
-
169
- /**
170
- * 「打开方式」选项加载:闲时预取 + 图标补齐后台重刷 + 换文件即作废。
171
- * 第一次点开常常在等主进程枚举可用应用,所以空闲期先跑一遍,点开时通常已经在手里了。
172
- */
173
- function useOpenWithOptions(
174
- onRequestOptions: (() => Promise<AttachmentMenuOption[]> | AttachmentMenuOption[]) | undefined,
175
- optionsKey: string | undefined,
176
- prefetch: boolean,
177
- ) {
178
- const [options, setOptions] = useState<AttachmentMenuOption[]>([])
179
- const [loading, setLoading] = useState(false)
180
- const [loaded, setLoaded] = useState(false)
181
- const keyRef = useRef(optionsKey)
182
- keyRef.current = optionsKey
183
- const requestRef = useRef(onRequestOptions)
184
- requestRef.current = onRequestOptions
185
- const prefetchedRef = useRef<{ key: string | undefined; request: Promise<AttachmentMenuOption[]> } | null>(null)
186
-
187
- // 换了文件,上一份选项就不属于当前这条了,一律作废重来。
188
- useEffect(() => {
189
- prefetchedRef.current = null
190
- setOptions([])
191
- setLoaded(false)
192
- setLoading(false)
193
- }, [optionsKey, onRequestOptions])
194
-
195
- useEffect(() => {
196
- if (!prefetch || !onRequestOptions) return
197
- let cancelled = false
198
- const run = () => {
199
- if (cancelled) return
200
- const key = keyRef.current
201
- let request: Promise<AttachmentMenuOption[]>
202
- try {
203
- request = Promise.resolve(onRequestOptions())
204
- } catch {
205
- return
206
- }
207
- prefetchedRef.current = { key, request }
208
- request.catch(() => {
209
- if (prefetchedRef.current?.request === request) prefetchedRef.current = null
210
- })
211
- }
212
- if (typeof window.requestIdleCallback === "function") {
213
- const idleId = window.requestIdleCallback(run, { timeout: 800 })
214
- return () => {
215
- cancelled = true
216
- window.cancelIdleCallback(idleId)
217
- }
218
- }
219
- const timeoutId = window.setTimeout(run, 150)
220
- return () => {
221
- cancelled = true
222
- window.clearTimeout(timeoutId)
223
- }
224
- }, [prefetch, onRequestOptions, optionsKey])
225
-
226
- const load = useCallback(async () => {
227
- const request = requestRef.current
228
- if (!request || loaded) return
229
- const requestedKey = keyRef.current
230
- const apply = (next: AttachmentMenuOption[]): boolean => {
231
- // 请求飞在路上时用户换了文件:结果作废,但别把 loaded 立起来。
232
- if (keyRef.current !== requestedKey) return true
233
- setOptions(next)
234
- const complete = areOptionsComplete(next)
235
- setLoaded(complete)
236
- return complete
237
- }
238
- const refresh = () => {
239
- let result: Promise<AttachmentMenuOption[]> | AttachmentMenuOption[]
240
- try {
241
- result = request()
242
- } catch {
243
- return
244
- }
245
- void Promise.resolve(result)
246
- .then((next) => {
247
- apply(next)
248
- })
249
- .catch(() => {
250
- // 后台补图标失败就留着那份没图标的,总比把菜单清空强。
251
- })
252
- }
253
- const prefetched = prefetchedRef.current
254
- const result = prefetched && prefetched.key === requestedKey ? prefetched.request : request()
255
- if (Array.isArray(result)) {
256
- const complete = apply(result)
257
- prefetchedRef.current = null
258
- if (!complete) refresh()
259
- return
260
- }
261
- setLoading(true)
262
- try {
263
- const complete = apply(await result)
264
- if (prefetchedRef.current?.request === result) prefetchedRef.current = null
265
- if (!complete) refresh()
266
- } finally {
267
- setLoading(false)
268
- }
269
- }, [loaded])
270
-
271
- return { options, loading, load }
272
- }
273
-
274
- export type OpenWithMenuProps = {
275
- /** 触发器文案,默认「打开方式」。 */
276
- label?: string
277
- /** 触发器左侧图标。 */
278
- iconName?: IconName
279
- /** 已经在手里的选项;给了 `onRequestOptions` 就以异步结果为准。 */
280
- options?: AttachmentMenuOption[]
281
- /** 拉取选项(点开时调用,闲时预取一次)。 */
282
- onRequestOptions?: () => Promise<AttachmentMenuOption[]> | AttachmentMenuOption[]
283
- /** 选项变更的身份(一般是文件 path):变了就把缓存作废。 */
284
- optionsKey?: string
285
- /** 选中某项。 */
286
- onSelect?: (option: AttachmentOpenOption) => void
287
- /** 既没有选项也没有加载器时,触发器退化成一个直接打开的按钮。 */
288
- onOpen?: () => void
289
- /** 交给宿主弹原生菜单(桌面端 OS 菜单):给了就不开 web 菜单。 */
290
- onNativeMenu?: () => void
291
- triggerVariant?: "secondary" | "ghost" | "text"
292
- triggerSize?: "sm" | "md"
293
- /** 只出图标不出文案(方片/图片形态的「…」)。 */
294
- iconOnly?: boolean
295
- disabled?: boolean
296
- width?: number
297
- className?: string
298
- }
299
-
300
- /**
301
- * OpenWithMenu — 「打开方式」菜单配方(`Menu` 原语 + 次要按钮触发器)。
302
- *
303
- * 蓝图裁撤了 `OpenWithButton`(工程件 →Menu 配方),这里是它的规范继任者:
304
- * 弹层的立面、翻转、外点关闭、键盘导航全部由 `Menu` 原语承担(portal + fixed,
305
- * 视口下方放不下才向上翻,横向夹在视口内,滚动容器裁不掉它);本配方只管
306
- * 「什么时候去拉选项」这件业务事。
307
- */
308
- export function OpenWithMenu({
309
- label = "打开方式",
310
- iconName,
311
- options: optionsProp,
312
- onRequestOptions,
313
- optionsKey,
314
- onSelect,
315
- onOpen,
316
- onNativeMenu,
317
- triggerVariant = "secondary",
318
- triggerSize = "sm",
319
- iconOnly = false,
320
- disabled = false,
321
- width = 180,
322
- className,
323
- }: OpenWithMenuProps) {
324
- const [open, setOpen] = useState(false)
325
- const remote = useOpenWithOptions(onRequestOptions, optionsKey, Boolean(onRequestOptions) && !onNativeMenu)
326
- const options = onRequestOptions ? remote.options : (optionsProp ?? [])
327
- const entries = useMemo(() => toMenuEntries(options), [options])
328
- const byKey = useMemo(() => {
329
- const map = new Map<string, AttachmentOpenOption>()
330
- options.forEach((option, index) => {
331
- if (isOpenOption(option)) map.set(optionKey(option, index), option)
332
- })
333
- return map
334
- }, [options])
335
-
336
- // 没有任何菜单来源就不是菜单,是一个直接打开的按钮;宿主要弹原生菜单时触发器只负责喊一声。
337
- const bare = !onRequestOptions && !onNativeMenu && options.length === 0
338
- const renderTrigger = (onClick?: () => void) => (
339
- <Button
340
- variant={triggerVariant}
341
- size={triggerSize}
342
- type="button"
343
- data-slot="open-with"
344
- data-ow-part="action"
345
- disabled={disabled}
346
- className={cn(iconOnly ? "w-7 h-7 p-0" : "gap-1 px-2", className)}
347
- aria-label={iconOnly ? label : undefined}
348
- title={iconOnly ? label : undefined}
349
- onClick={onClick}
350
- >
351
- {iconName && <Icon name={iconName} size={14} />}
352
- {iconOnly ? <Icon name="More" size={16} aria-hidden="true" /> : <span>{label}</span>}
353
- {!iconOnly && !bare && <Icon name="ChevDown" size={13} aria-hidden="true" />}
354
- </Button>
355
- )
356
-
357
- if (bare) return renderTrigger(onOpen)
358
- if (onNativeMenu) return renderTrigger(onNativeMenu)
359
-
360
- return (
361
- <Menu
362
- trigger={renderTrigger()}
363
- triggerClassName="inline-flex"
364
- open={open}
365
- onOpenChange={(next) => {
366
- setOpen(next)
367
- if (next) void remote.load()
368
- }}
369
- items={entries}
370
- onSelect={(key) => {
371
- const option = byKey.get(key)
372
- if (option) onSelect?.(option)
373
- }}
374
- empty={remote.loading ? "加载中" : "暂无打开方式"}
375
- align="end"
376
- width={width}
377
- ariaLabel={label}
378
- // 视口再矮也不许把菜单撑出屏外:280 与「视口高减两边留白」取小。
379
- className="max-h-[min(280px,calc(100vh-16px))] overflow-y-auto"
380
- />
381
- )
382
- }
383
-
384
- /* ------------------------------------------------------------------ *
385
- * Attachment
386
- * ------------------------------------------------------------------ */
387
-
388
- export type AttachmentProps = {
389
- /** 文件名(显示名)。 */
390
- name: string
391
- /** 完整路径:进 title 保全值,也作操作菜单缓存的身份。 */
392
- path?: string
393
- /** 形态,见组件说明。 */
394
- variant?: AttachmentVariant
395
- /** meta 读数(大小/类型/尺寸/时间)。不给就按扩展名推断类型文案。 */
396
- meta?: string
397
- /** 应用侧的文件分类(image/video/pdf…),扩展名认不出时兜底。 */
398
- kind?: string
399
- /** 类型图标右下角标签的显式覆盖(≤4 字符);不传按文件名推断。 */
400
- badge?: string
401
- /** 图片/富媒体形态的图源。 */
402
- thumbnail?: string
403
- /** 富媒体形态的说明行。 */
404
- caption?: string
405
- /** 没有图源时的占位读数,如 "cover.jpg · 1600×900"。 */
406
- placeholder?: string
407
- status?: AttachmentStatus
408
- /** 上传进度 0–100。 */
409
- progress?: number
410
- /** 失败的一句人话。 */
411
- errorText?: string
412
- disabled?: boolean
413
- /** 打开这个附件(给了就整块可点)。 */
414
- onOpen?: () => void
415
- onRetry?: () => void
416
- onRemove?: () => void
417
- /** 操作菜单选项(`OpenWithMenu` 配方)。 */
418
- actions?: AttachmentMenuOption[]
419
- onRequestActions?: () => Promise<AttachmentMenuOption[]> | AttachmentMenuOption[]
420
- onAction?: (option: AttachmentOpenOption) => void
421
- /** 交给宿主弹原生菜单。 */
422
- onNativeActionsMenu?: () => void
423
- /** 操作菜单触发器文案,默认「打开方式」。 */
424
- actionsLabel?: string
425
- className?: string
426
- }
427
-
428
- const NAME_CLASS =
429
- "min-w-0 text-[length:var(--ow-fs-ui)] font-medium leading-snug text-[color:var(--ow-text)] overflow-hidden text-ellipsis"
430
- /** 读数一律 mono + tabular-nums(§7)。 */
431
- const META_TEXT_CLASS =
432
- "font-[family-name:var(--ow-font-mono)] tabular-nums text-[length:var(--ow-fs-eyebrow)] leading-snug text-[color:var(--ow-text-3)]"
433
- const META_CLASS = `min-w-0 truncate ${META_TEXT_CLASS}`
434
- /** 体积/尺寸这一截是白名单:不为类型那截让位(shrink-0);max-w-full 只是兜底,
435
- * 防某个畸形长读数把方片撑破。 */
436
- const META_READING_CLASS = `shrink-0 max-w-full truncate ${META_TEXT_CLASS}`
437
-
438
- /**
439
- * 方片 112 宽的 meta 行拆两截:末尾「· 」之后的读数(854 KB / 2.4 MB)是白名单,
440
- * 前面的类型那截才承担省略号。类型那截若与 FileIcon 的扩展名标签重复(DOC/DOCX、
441
- * PDF…),直接摘掉——方片里那枚字形已经在说同一件事,读数才是这行的信息。
442
- *
443
- * 起因:mono 读数比 R1 的 sans 宽,「DOC · 854 KB」在 84px 内容宽里被截成「85…」,
444
- * 体积整段消失(三方对齐轮 R2 退化)。
445
- */
446
- function splitTileMeta(line: string, typeLabel: string | null): { head: string; reading: string } {
447
- const parts = line.split("·").map((part) => part.trim())
448
- if (parts.length < 2 || parts.some((part) => !part)) return { head: "", reading: line }
449
- const reading = parts[parts.length - 1] ?? line
450
- const head = parts.slice(0, -1)
451
- const first = (head[0] ?? "").toUpperCase()
452
- if (typeLabel !== null && (first.startsWith(typeLabel) || typeLabel.startsWith(first))) head.shift()
453
- return { head: head.join(" · "), reading }
454
- }
455
-
456
- function RemoveButton({ onClick, disabled }: { onClick: () => void; disabled?: boolean }) {
457
- return (
458
- <Button
459
- variant="ghost"
460
- size="sm"
461
- type="button"
462
- data-ow-part="remove"
463
- className="w-7 h-7 p-0 shrink-0"
464
- aria-label="移除附件"
465
- title="移除附件"
466
- disabled={disabled}
467
- onClick={(event) => {
468
- event.stopPropagation()
469
- onClick()
470
- }}
471
- icon={<Icon name="Close" size={14} />}
472
- />
473
- )
474
- }
475
-
476
- function RetryButton({ onClick, disabled }: { onClick: () => void; disabled?: boolean }) {
477
- return (
478
- <Button
479
- variant="text"
480
- size="sm"
481
- type="button"
482
- data-ow-part="retry"
483
- className="shrink-0"
484
- disabled={disabled}
485
- onClick={(event) => {
486
- event.stopPropagation()
487
- onClick()
488
- }}
489
- >
490
- 重试
491
- </Button>
492
- )
493
- }
494
-
495
- /** 上传中:进度条走 `--ow-progress-fill`(墨/月白),读数 mono;永不荧黄(§4)。 */
496
- function UploadProgress({ name, progress }: { name: string; progress: number }) {
497
- return <ProgressBar value={progress} size="sm" aria-label={`${name} 上传进度`} className="mt-1" />
498
- }
499
-
500
- export function Attachment({
501
- name,
502
- path,
503
- variant = "card",
504
- meta,
505
- kind,
506
- badge,
507
- thumbnail,
508
- caption,
509
- placeholder,
510
- status = "done",
511
- progress = 0,
512
- errorText = "上传失败",
513
- disabled = false,
514
- onOpen,
515
- onRetry,
516
- onRemove,
517
- actions,
518
- onRequestActions,
519
- onAction,
520
- onNativeActionsMenu,
521
- actionsLabel = "打开方式",
522
- className,
523
- }: AttachmentProps) {
524
- const pct = Math.max(0, Math.min(100, Math.round(progress)))
525
- const inferred = attachmentMeta({ name, path: path ?? name })
526
- // meta 传空串=显式不要这行(可点的卡本身就是打开入口,推断出的类型文案只是重复扩展名)。
527
- const metaText = status === "uploading" ? `上传中 ${pct}%` : (meta ?? inferred.label)
528
- const metaLine = status === "error" ? errorText : metaText
529
- const clickable = Boolean(onOpen) && !disabled
530
- const hasMenu = Boolean(actions?.length || onRequestActions || onNativeActionsMenu)
531
-
532
- const menu = hasMenu ? (
533
- <OpenWithMenu
534
- label={actionsLabel}
535
- options={actions}
536
- onRequestOptions={onRequestActions}
537
- optionsKey={path ?? name}
538
- onSelect={onAction}
539
- onNativeMenu={onNativeActionsMenu}
540
- disabled={disabled}
541
- iconOnly={variant !== "card"}
542
- triggerVariant={variant === "card" ? "secondary" : "ghost"}
543
- />
544
- ) : null
545
-
546
- /* ---- 图片形态:缩略 + scrim 遮罩操作 ---- */
547
- if (variant === "image" || variant === "media") {
548
- const media = variant === "media"
549
- return (
550
- <div
551
- data-slot="attachment"
552
- data-ow-variant={variant}
553
- data-ow-state={status}
554
- title={path ?? name}
555
- className={cn(
556
- "group relative box-border overflow-hidden border [border-radius:var(--ow-radius-card)]",
557
- "bg-[var(--ow-surface)]",
558
- "transition-[border-color] duration-[var(--ow-dur-1)] ease-[var(--ow-ease-beacon)]",
559
- media ? "w-full max-w-[420px]" : "w-28 h-28 shrink-0",
560
- status === "error" ? "border-[color:var(--ow-error)]" : "border-[color:var(--ow-border)]",
561
- clickable && "cursor-pointer ow-focus-ring",
562
- className,
563
- )}
564
- role={clickable ? "button" : undefined}
565
- tabIndex={clickable ? 0 : undefined}
566
- aria-label={clickable ? `打开 ${name}` : undefined}
567
- onClick={clickable ? onOpen : undefined}
568
- onKeyDown={
569
- clickable
570
- ? (event) => {
571
- // L3-2-1:只认落在卡壳自己身上的键;卡内的钮自己处理 Enter/空格。
572
- if (event.target !== event.currentTarget) return
573
- if (event.key === "Enter" || event.key === " ") {
574
- event.preventDefault()
575
- onOpen?.()
576
- }
577
- }
578
- : undefined
579
- }
580
- >
581
- <div data-ow-part="media" className={cn("w-full overflow-hidden", media ? "h-[200px]" : "h-full")}>
582
- {thumbnail ? (
583
- <img src={thumbnail} alt={caption || name} className="w-full h-full object-cover" />
584
- ) : (
585
- <span
586
- data-ow-part="placeholder"
587
- className="flex w-full h-full items-center justify-center bg-[var(--ow-surface-2)] px-2 text-center"
588
- >
589
- <span className={META_CLASS}>{placeholder ?? name}</span>
590
- </span>
591
- )}
592
- </div>
593
- {media && caption && (
594
- <div
595
- data-ow-part="caption"
596
- className="py-2.5 px-3.5 text-[length:var(--ow-fs-caption)] leading-snug text-[color:var(--ow-text-2)]"
597
- >
598
- {caption}
599
- </div>
600
- )}
601
- {status === "uploading" && (
602
- <div data-ow-part="upload" className="absolute inset-x-0 bottom-0 px-2 pb-2">
603
- <span className={cn(META_CLASS, "block text-[color:var(--ow-on-fill)]")}>上传中 {pct}%</span>
604
- <UploadProgress name={name} progress={pct} />
605
- </div>
606
- )}
607
- {/* 遮罩操作:hover / 键盘聚焦才浮出,底走 --ow-scrim,字走 --ow-on-fill(实底上的字,§2)。
608
- 遮罩本身不吃指针 —— 图整块可点时,点在空处仍要开预览;只有按钮那一小块收指针,
609
- 并把点击/回车拦在自己这层,否则移除一个附件顺带把预览也开了。 */}
610
- {(onRemove || (status === "error" && onRetry) || menu) && (
611
- <span
612
- data-ow-part="overlay"
613
- className={cn(
614
- "pointer-events-none absolute inset-0 flex items-start justify-end p-1.5",
615
- "bg-[var(--ow-scrim)] text-[color:var(--ow-on-fill)]",
616
- "opacity-0 transition-opacity duration-[var(--ow-dur-1)] ease-[var(--ow-ease-beacon)]",
617
- "group-hover:opacity-100 group-focus-within:opacity-100",
618
- )}
619
- >
620
- <span
621
- data-ow-part="actions"
622
- className="pointer-events-auto flex items-center gap-1"
623
- onClick={(event) => event.stopPropagation()}
624
- onKeyDown={(event) => event.stopPropagation()}
625
- >
626
- {status === "error" && onRetry && <RetryButton onClick={onRetry} disabled={disabled} />}
627
- {menu}
628
- {onRemove && <RemoveButton onClick={onRemove} disabled={disabled} />}
629
- </span>
630
- </span>
631
- )}
632
- {status === "error" && (
633
- <span
634
- data-ow-part="error"
635
- className="absolute inset-x-0 bottom-0 truncate bg-[var(--ow-error-tint)] px-2 py-1 text-[length:var(--ow-fs-eyebrow)] leading-snug text-[color:var(--ow-error-on-tint)]"
636
- >
637
- {errorText}
638
- </span>
639
- )}
640
- </div>
641
- )
642
- }
643
-
644
- /* ---- 方片形态:Composer 附件条 ---- */
645
- if (variant === "tile") {
646
- const iconLabel = badge?.trim().toUpperCase().slice(0, 4) || resolveFileIcon(name, kind)?.label || null
647
- const tileMeta = splitTileMeta(metaLine, iconLabel)
648
- return (
649
- <div
650
- data-slot="attachment"
651
- data-ow-variant="tile"
652
- data-ow-state={status}
653
- title={path ?? name}
654
- className={cn(
655
- // 卡骨架收口口径:容器 14(p-3.5),与 card 形态同一口径。
656
- "group relative box-border flex w-28 h-28 shrink-0 flex-col justify-between gap-1 p-3.5",
657
- "border [border-radius:var(--ow-radius-card)]",
658
- "transition-[background-color,border-color] duration-[var(--ow-dur-1)] ease-[var(--ow-ease-beacon)]",
659
- status === "error"
660
- ? "border-[color:var(--ow-error-tint-border)] bg-[var(--ow-error-tint)]"
661
- : "border-[color:var(--ow-border)] bg-[var(--ow-surface)]",
662
- disabled && "border-[color:var(--ow-disabled-border)] bg-[var(--ow-disabled-bg)]",
663
- className,
664
- )}
665
- >
666
- <span
667
- data-ow-part="name"
668
- className={cn(
669
- NAME_CLASS,
670
- "[display:-webkit-box] [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [overflow-wrap:anywhere]",
671
- disabled && "text-[color:var(--ow-disabled-text)]",
672
- )}
673
- >
674
- {name}
675
- </span>
676
- <span data-ow-part="meta" className="flex min-w-0 items-center gap-1 overflow-hidden">
677
- <FileIcon
678
- name={name}
679
- kind={kind}
680
- label={badge}
681
- className="shrink-0 text-[color:var(--ow-text-2)]"
682
- width={15}
683
- height={15}
684
- />
685
- {tileMeta.head && (
686
- <span
687
- className={cn(
688
- META_CLASS,
689
- status === "error" && "text-[color:var(--ow-error-on-tint)]",
690
- disabled && "text-[color:var(--ow-disabled-text)]",
691
- )}
692
- >
693
- {tileMeta.head} ·
694
- </span>
695
- )}
696
- <span
697
- className={cn(
698
- META_READING_CLASS,
699
- status === "error" && "text-[color:var(--ow-error-on-tint)]",
700
- disabled && "text-[color:var(--ow-disabled-text)]",
701
- )}
702
- >
703
- {tileMeta.reading}
704
- </span>
705
- </span>
706
- {status === "uploading" && <UploadProgress name={name} progress={pct} />}
707
- {(onRemove || (status === "error" && onRetry) || menu) && (
708
- <span
709
- data-ow-part="actions"
710
- className={cn(
711
- "absolute top-1 right-1 flex items-center gap-0.5",
712
- // 方片顶角是文件名的地盘:悬出来的操作组压字,给它一块与卡同色的实底,
713
- // 读得清也不显脏(image 形态的 scrim 同款思路);错误/禁用档跟着卡底走。
714
- "[border-radius:var(--ow-radius-2xs)]",
715
- status === "error"
716
- ? "bg-[var(--ow-error-tint)]"
717
- : disabled
718
- ? "bg-[var(--ow-disabled-bg)]"
719
- : "bg-[var(--ow-surface)]",
720
- "opacity-0 transition-opacity duration-[var(--ow-dur-1)] ease-[var(--ow-ease-beacon)]",
721
- "group-hover:opacity-100 group-focus-within:opacity-100",
722
- )}
723
- >
724
- {status === "error" && onRetry && <RetryButton onClick={onRetry} disabled={disabled} />}
725
- {menu}
726
- {onRemove && <RemoveButton onClick={onRemove} disabled={disabled} />}
727
- </span>
728
- )}
729
- </div>
730
- )
731
- }
732
-
733
- /* ---- 横卡形态:转录里的文件引用 ---- */
734
- const body = (
735
- <span data-ow-part="content" className="grid min-w-0 grid-cols-[auto_minmax(0,1fr)] items-center gap-3 text-left">
736
- <FileIcon
737
- name={name}
738
- kind={kind}
739
- label={badge}
740
- className={cn("shrink-0 text-[color:var(--ow-text-2)]", disabled && "text-[color:var(--ow-disabled-text)]")}
741
- width={28}
742
- height={28}
743
- />
744
- <span className="flex min-w-0 flex-col gap-0.5">
745
- <span
746
- data-ow-part="name"
747
- className={cn(NAME_CLASS, "whitespace-nowrap", disabled && "text-[color:var(--ow-disabled-text)]")}
748
- >
749
- {name}
750
- </span>
751
- {metaLine && (
752
- <span
753
- data-ow-part="meta"
754
- className={cn(
755
- META_CLASS,
756
- status === "error" && "text-[color:var(--ow-error-on-tint)]",
757
- disabled && "text-[color:var(--ow-disabled-text)]",
758
- )}
759
- >
760
- {metaLine}
761
- </span>
762
- )}
763
- </span>
764
- </span>
765
- )
766
-
767
- return (
768
- <div
769
- data-slot="attachment"
770
- data-ow-variant="card"
771
- data-ow-state={status}
772
- title={path ?? name}
773
- className={cn(
774
- // 卡骨架收口口径:容器 14(p-3.5)。原来是 py-2.5 px-3 = 10/12,一套卡三个内距值并存
775
- // (tile 12、card 10/12、同期改过的 .cronjob-card/.skcard/.site-card 都是 14)。
776
- "box-border grid w-full min-h-[62px] grid-cols-[minmax(0,1fr)_auto] items-center gap-3 p-3.5",
777
- // 贴地之物:1px 边 + 0 影(§5)。
778
- "border [border-radius:var(--ow-radius-card)] text-[color:var(--ow-text)]",
779
- "transition-[background-color,border-color] duration-[var(--ow-dur-1)] ease-[var(--ow-ease-beacon)]",
780
- status === "error"
781
- ? "border-[color:var(--ow-error-tint-border)] bg-[var(--ow-error-tint)]"
782
- : "border-[color:var(--ow-border)] bg-[var(--ow-surface)]",
783
- disabled && "border-[color:var(--ow-disabled-border)] bg-[var(--ow-disabled-bg)]",
784
- className,
785
- )}
786
- >
787
- <span className="grid min-w-0 gap-1">
788
- {clickable ? (
789
- <Button
790
- variant="unstyled"
791
- type="button"
792
- data-ow-part="main"
793
- disabled={disabled}
794
- className="ow-focus-ring grid min-w-0 cursor-pointer p-0 text-left [border-radius:var(--ow-radius-control)] hover:bg-[var(--ow-hover)] active:bg-[var(--ow-press)]"
795
- onClick={onOpen}
796
- >
797
- {body}
798
- </Button>
799
- ) : (
800
- body
801
- )}
802
- {status === "uploading" && <UploadProgress name={name} progress={pct} />}
803
- </span>
804
- {(menu || onRemove || (status === "error" && onRetry)) && (
805
- <span data-ow-part="actions" className="inline-flex items-center gap-1.5">
806
- {status === "error" && onRetry && <RetryButton onClick={onRetry} disabled={disabled} />}
807
- {menu}
808
- {onRemove && <RemoveButton onClick={onRemove} disabled={disabled} />}
809
- </span>
810
- )}
811
- </div>
812
- )
813
- }
814
-
815
- /* ------------------------------------------------------------------ *
816
- * AttachmentList
817
- * ------------------------------------------------------------------ */
818
-
819
- export type AttachmentListProps = {
820
- /** `strip` 横排可滚(Composer 附件条)· `stack` 竖列(转录里的文件引用)。 */
821
- layout?: "strip" | "stack"
822
- /** 没有条目时的空态一句话;不给就整块不渲染。 */
823
- empty?: ReactNode
824
- children?: ReactNode
825
- className?: string
826
- "aria-label"?: string
827
- }
828
-
829
- /**
830
- * AttachmentList — 附件行集(合并旧 `Attachments` 横排与 `FileReferenceCards` 竖列)。
831
- * 空态母题走 `EmptyState` 原语(信标 mono 母题 + 一句 text-2,禁插画禁 emoji)。
832
- */
833
- export function AttachmentList({
834
- layout = "strip",
835
- empty,
836
- children,
837
- className,
838
- "aria-label": ariaLabel,
839
- }: AttachmentListProps) {
840
- const isEmpty = children === null || children === undefined || (Array.isArray(children) && children.length === 0)
841
- if (isEmpty && !empty) return null
842
- return (
843
- <div
844
- data-slot="attachment-list"
845
- data-ow-variant={layout}
846
- aria-label={ariaLabel}
847
- className={cn(
848
- layout === "strip"
849
- ? "flex gap-2 overflow-x-auto overflow-y-hidden"
850
- : "flex w-full max-w-[520px] flex-col gap-2",
851
- className,
852
- )}
853
- >
854
- {isEmpty ? <EmptyState message={empty} markSize={28} /> : children}
855
- </div>
856
- )
857
- }