@orbit-work/ui 0.1.1 β†’ 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (794) hide show
  1. package/README.md +59 -57
  2. package/dist/about-window.cjs +271 -1
  3. package/dist/about-window.cjs.map +1 -0
  4. package/dist/about-window.d.cts +20 -2
  5. package/dist/about-window.d.ts +20 -2
  6. package/dist/about-window.js +271 -1
  7. package/dist/about-window.js.map +1 -0
  8. package/dist/appearance-D7uh_ZTy.d.cts +192 -0
  9. package/dist/appearance-D7uh_ZTy.d.ts +192 -0
  10. package/dist/appearance.cjs +39 -1
  11. package/dist/appearance.cjs.map +1 -0
  12. package/dist/appearance.d.cts +1 -1
  13. package/dist/appearance.d.ts +1 -1
  14. package/dist/appearance.js +39 -1
  15. package/dist/appearance.js.map +1 -0
  16. package/dist/browser-annotation-popup.cjs +9 -1
  17. package/dist/browser-annotation-popup.cjs.map +1 -0
  18. package/dist/browser-annotation-popup.d.cts +6 -6
  19. package/dist/browser-annotation-popup.d.ts +6 -6
  20. package/dist/browser-annotation-popup.js +9 -1
  21. package/dist/browser-annotation-popup.js.map +1 -0
  22. package/dist/chunk-66VEV7G2.js +111 -0
  23. package/dist/chunk-66VEV7G2.js.map +1 -0
  24. package/dist/chunk-KRP43SUA.cjs +1130 -0
  25. package/dist/chunk-KRP43SUA.cjs.map +1 -0
  26. package/dist/chunk-QS55W5Q5.cjs +111 -0
  27. package/dist/chunk-QS55W5Q5.cjs.map +1 -0
  28. package/dist/chunk-S3R5QFO4.js +1130 -0
  29. package/dist/chunk-S3R5QFO4.js.map +1 -0
  30. package/dist/chunk-UT5LC6MR.js +38 -0
  31. package/dist/chunk-UT5LC6MR.js.map +1 -0
  32. package/dist/chunk-ZZTEY4YX.cjs +38 -0
  33. package/dist/chunk-ZZTEY4YX.cjs.map +1 -0
  34. package/dist/core.css +7886 -0
  35. package/dist/file-tree.css +85 -0
  36. package/dist/index-nLo7jMlP.d.cts +166 -0
  37. package/dist/index-nLo7jMlP.d.ts +166 -0
  38. package/dist/index.cjs +39161 -26
  39. package/dist/index.cjs.map +1 -0
  40. package/dist/index.d.cts +3785 -3031
  41. package/dist/index.d.ts +3785 -3031
  42. package/dist/index.js +39161 -26
  43. package/dist/index.js.map +1 -0
  44. package/dist/locale.cjs +15 -0
  45. package/dist/locale.cjs.map +1 -0
  46. package/dist/locale.d.cts +28 -0
  47. package/dist/locale.d.ts +28 -0
  48. package/dist/locale.js +15 -0
  49. package/dist/locale.js.map +1 -0
  50. package/dist/office.css +1146 -0
  51. package/dist/slot-core.cjs +200 -0
  52. package/dist/slot-core.cjs.map +1 -0
  53. package/dist/slot-core.d.cts +146 -0
  54. package/dist/slot-core.d.ts +146 -0
  55. package/dist/slot-core.js +200 -0
  56. package/dist/slot-core.js.map +1 -0
  57. package/dist/slot-react.cjs +153 -0
  58. package/dist/slot-react.cjs.map +1 -0
  59. package/dist/slot-react.d.cts +36 -0
  60. package/dist/slot-react.d.ts +36 -0
  61. package/dist/slot-react.js +153 -0
  62. package/dist/slot-react.js.map +1 -0
  63. package/dist/tailwind.css +137 -0
  64. package/dist/workbench.css +9014 -0
  65. package/package.json +112 -47
  66. package/dist/appearance-D5uQ53j3.d.cts +0 -210
  67. package/dist/appearance-D5uQ53j3.d.ts +0 -210
  68. package/dist/chunk-3KT7IU4X.js +0 -13
  69. package/dist/chunk-5VLBKOG7.cjs +0 -194
  70. package/dist/chunk-7YJY64LZ.js +0 -82
  71. package/dist/chunk-EF2BSN3K.cjs +0 -13
  72. package/dist/chunk-GMMYDILD.cjs +0 -82
  73. package/dist/chunk-VG7FQQ7K.js +0 -194
  74. package/dist/fonts/JetBrainsMono-Medium.ttf +0 -0
  75. package/dist/fonts/JetBrainsMono-Regular.ttf +0 -0
  76. package/dist/fonts/SpaceGrotesk-700-latin-ext.woff2 +0 -0
  77. package/dist/fonts/SpaceGrotesk-700-latin.woff2 +0 -0
  78. package/dist/index.css +0 -1
  79. package/dist/orbitwork.css +0 -22145
  80. package/src/components/Layout/AppLayout/AppLayout.stories.tsx +0 -246
  81. package/src/components/Layout/AppLayout/AppLayoutSource.test.mjs +0 -37
  82. package/src/components/Layout/AppLayout/index.tsx +0 -122
  83. package/src/components/Layout/Sidebar/index.tsx +0 -13
  84. package/src/components/Layout/SidebarShell/SidebarShell.stories.tsx +0 -676
  85. package/src/components/Layout/SidebarShell/SidebarShellSource.test.mjs +0 -161
  86. package/src/components/Layout/SidebarShell/index.tsx +0 -326
  87. package/src/components/Layout/index.ts +0 -10
  88. package/src/components/composite/ActionBar/ActionBar.stories.tsx +0 -26
  89. package/src/components/composite/ActionBar/index.tsx +0 -31
  90. package/src/components/composite/ActionStatus/ActionStatus.stories.tsx +0 -60
  91. package/src/components/composite/ActionStatus/index.tsx +0 -21
  92. package/src/components/composite/AskQuestionCardView/AskQuestionCardView.stories.tsx +0 -175
  93. package/src/components/composite/AskQuestionCardView/AskQuestionCardViewSource.test.mjs +0 -92
  94. package/src/components/composite/AskQuestionCardView/index.tsx +0 -119
  95. package/src/components/composite/AssistantChannelCard/AssistantChannelCard.stories.tsx +0 -265
  96. package/src/components/composite/AssistantChannelCard/AssistantChannelCardSource.test.mjs +0 -45
  97. package/src/components/composite/AssistantChannelCard/index.tsx +0 -102
  98. package/src/components/composite/AssistantToggleRow/AssistantToggleRow.stories.tsx +0 -197
  99. package/src/components/composite/AssistantToggleRow/index.tsx +0 -35
  100. package/src/components/composite/AttachmentCard/AttachmentCard.stories.tsx +0 -125
  101. package/src/components/composite/AttachmentCard/index.tsx +0 -80
  102. package/src/components/composite/BackButton/BackButton.stories.tsx +0 -93
  103. package/src/components/composite/BackButton/BackButtonSource.test.mjs +0 -29
  104. package/src/components/composite/BackButton/index.tsx +0 -48
  105. package/src/components/composite/Banner/Banner.stories.tsx +0 -180
  106. package/src/components/composite/Banner/BannerSource.test.mjs +0 -67
  107. package/src/components/composite/Banner/index.tsx +0 -125
  108. package/src/components/composite/BeaconIcons/BeaconIcons.stories.tsx +0 -153
  109. package/src/components/composite/BeaconIcons/index.tsx +0 -265
  110. package/src/components/composite/BeaconSpinner/BeaconSpinner.stories.tsx +0 -144
  111. package/src/components/composite/BeaconSpinner/index.tsx +0 -185
  112. package/src/components/composite/CatalogStates/CatalogEmptyState.stories.tsx +0 -108
  113. package/src/components/composite/CatalogStates/CatalogStates.stories.tsx +0 -53
  114. package/src/components/composite/CatalogStates/CatalogStatesSource.test.mjs +0 -149
  115. package/src/components/composite/CatalogStates/index.tsx +0 -113
  116. package/src/components/composite/Charts/Charts.stories.tsx +0 -174
  117. package/src/components/composite/Charts/ChartsSource.test.mjs +0 -111
  118. package/src/components/composite/Charts/index.tsx +0 -385
  119. package/src/components/composite/CodeBlock/CodeBlock.stories.tsx +0 -308
  120. package/src/components/composite/CodeBlock/CodeFaceSource.test.mjs +0 -89
  121. package/src/components/composite/CodeBlock/index.tsx +0 -300
  122. package/src/components/composite/CodeDiff/CodeDiff.stories.tsx +0 -169
  123. package/src/components/composite/CodeDiff/index.tsx +0 -373
  124. package/src/components/composite/CodePreview/CodePreview.stories.tsx +0 -127
  125. package/src/components/composite/CodePreview/CodePreviewSource.test.mjs +0 -43
  126. package/src/components/composite/CodePreview/index.tsx +0 -98
  127. package/src/components/composite/CommandPalette/CommandPalette.stories.tsx +0 -89
  128. package/src/components/composite/CommandPalette/CommandPaletteSource.test.mjs +0 -61
  129. package/src/components/composite/CommandPalette/index.tsx +0 -310
  130. package/src/components/composite/ContentRecommendation/ContentRecommendation.stories.tsx +0 -300
  131. package/src/components/composite/ContentRecommendation/ContentRecommendationSource.test.mjs +0 -48
  132. package/src/components/composite/ContentRecommendation/index.tsx +0 -116
  133. package/src/components/composite/ContextChip/ContextChip.stories.tsx +0 -123
  134. package/src/components/composite/ContextChip/ContextChipSource.test.mjs +0 -24
  135. package/src/components/composite/ContextChip/index.tsx +0 -25
  136. package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorSizeSource.test.mjs +0 -15
  137. package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorView.stories.tsx +0 -110
  138. package/src/components/composite/ContextUsageIndicatorView/ContextUsageLoadingSource.test.mjs +0 -23
  139. package/src/components/composite/ContextUsageIndicatorView/index.tsx +0 -139
  140. package/src/components/composite/Controls/Controls.stories.tsx +0 -227
  141. package/src/components/composite/Controls/index.tsx +0 -15
  142. package/src/components/composite/CreateProjectDialog/CreateProjectDialog.stories.tsx +0 -56
  143. package/src/components/composite/CreateProjectDialog/index.tsx +0 -70
  144. package/src/components/composite/DataManagementSectionView/DataManagementSectionView.stories.tsx +0 -123
  145. package/src/components/composite/DataManagementSectionView/DataManagementSectionViewSource.test.mjs +0 -45
  146. package/src/components/composite/DataManagementSectionView/index.tsx +0 -110
  147. package/src/components/composite/DataTable/DataTable.stories.tsx +0 -159
  148. package/src/components/composite/DataTable/DataTableSource.test.mjs +0 -96
  149. package/src/components/composite/DataTable/index.tsx +0 -373
  150. package/src/components/composite/DetailChrome/DetailChrome.stories.tsx +0 -61
  151. package/src/components/composite/DetailChrome/DetailChromeSource.test.mjs +0 -31
  152. package/src/components/composite/DetailChrome/index.tsx +0 -94
  153. package/src/components/composite/DetailPanel/DetailPanel.stories.tsx +0 -185
  154. package/src/components/composite/DetailPanel/DetailPanelSource.test.mjs +0 -49
  155. package/src/components/composite/DetailPanel/index.tsx +0 -120
  156. package/src/components/composite/DetailScaffold/DetailScaffold.stories.tsx +0 -203
  157. package/src/components/composite/DetailScaffold/DetailScaffoldSource.test.mjs +0 -38
  158. package/src/components/composite/DetailScaffold/index.tsx +0 -114
  159. package/src/components/composite/Dialog/Dialog.stories.tsx +0 -343
  160. package/src/components/composite/Dialog/DialogSource.test.mjs +0 -130
  161. package/src/components/composite/Dialog/index.tsx +0 -333
  162. package/src/components/composite/DropZone/DropZone.stories.tsx +0 -105
  163. package/src/components/composite/DropZone/DropZoneSource.test.mjs +0 -68
  164. package/src/components/composite/DropZone/index.tsx +0 -196
  165. package/src/components/composite/FSelect/FSelect.stories.tsx +0 -64
  166. package/src/components/composite/FSelect/index.tsx +0 -29
  167. package/src/components/composite/FeedbackContextMenuView/FeedbackContextMenuView.stories.tsx +0 -106
  168. package/src/components/composite/FeedbackContextMenuView/index.tsx +0 -51
  169. package/src/components/composite/FeedbackDialogView/FeedbackDialogView.stories.tsx +0 -291
  170. package/src/components/composite/FeedbackDialogView/index.tsx +0 -95
  171. package/src/components/composite/FileReferenceCard/FileReferenceCard.stories.tsx +0 -364
  172. package/src/components/composite/FileReferenceCard/FileReferenceCardSource.test.mjs +0 -48
  173. package/src/components/composite/FileReferenceCard/index.tsx +0 -122
  174. package/src/components/composite/FilterBar/FilterBar.stories.tsx +0 -167
  175. package/src/components/composite/FilterBar/FilterBarSource.test.mjs +0 -75
  176. package/src/components/composite/FilterBar/index.tsx +0 -206
  177. package/src/components/composite/FormField/FormField.stories.tsx +0 -158
  178. package/src/components/composite/FormField/FormFieldSource.test.mjs +0 -56
  179. package/src/components/composite/FormField/index.tsx +0 -219
  180. package/src/components/composite/HomeBackdrop/HomeBackdrop.stories.tsx +0 -54
  181. package/src/components/composite/HomeBackdrop/HomeBackdropSource.test.mjs +0 -50
  182. package/src/components/composite/HomeBackdrop/index.tsx +0 -53
  183. package/src/components/composite/Icons/Icons.stories.tsx +0 -153
  184. package/src/components/composite/Icons/IconsSource.test.mjs +0 -23
  185. package/src/components/composite/Icons/index.tsx +0 -1361
  186. package/src/components/composite/ImageCard/ImageCard.stories.tsx +0 -54
  187. package/src/components/composite/ImageCard/index.tsx +0 -33
  188. package/src/components/composite/ImagePreview/ImagePreview.stories.tsx +0 -172
  189. package/src/components/composite/ImagePreview/ImagePreviewSource.test.mjs +0 -95
  190. package/src/components/composite/ImagePreview/index.tsx +0 -339
  191. package/src/components/composite/ListRow/ListRow.stories.tsx +0 -257
  192. package/src/components/composite/ListRow/ListRowSource.test.mjs +0 -101
  193. package/src/components/composite/ListRow/index.tsx +0 -309
  194. package/src/components/composite/Markdown/Markdown.stories.tsx +0 -192
  195. package/src/components/composite/Markdown/MarkdownSource.test.mjs +0 -126
  196. package/src/components/composite/Markdown/MarkdownStyleSource.test.mjs +0 -152
  197. package/src/components/composite/Markdown/index.tsx +0 -702
  198. package/src/components/composite/MarkdownPreview/MarkdownPreview.stories.tsx +0 -174
  199. package/src/components/composite/MarkdownPreview/MarkdownPreviewTabsSource.test.mjs +0 -31
  200. package/src/components/composite/MarkdownPreview/MarkdownRenderedStyleSource.test.mjs +0 -84
  201. package/src/components/composite/MarkdownPreview/index.tsx +0 -140
  202. package/src/components/composite/MarkdownPreviewModalView/MarkdownPreviewModalView.stories.tsx +0 -104
  203. package/src/components/composite/MarkdownPreviewModalView/index.tsx +0 -85
  204. package/src/components/composite/MessageFeedbackDialog/MessageFeedbackDialog.stories.tsx +0 -66
  205. package/src/components/composite/MessageFeedbackDialog/index.tsx +0 -115
  206. package/src/components/composite/ModelCatalogErrorState/ModelCatalogErrorState.stories.tsx +0 -101
  207. package/src/components/composite/ModelCatalogErrorState/ModelCatalogRetrySource.test.mjs +0 -86
  208. package/src/components/composite/ModelCatalogErrorState/index.tsx +0 -59
  209. package/src/components/composite/ModelModalityFlow/ModelModalityFlow.stories.tsx +0 -224
  210. package/src/components/composite/ModelModalityFlow/ModelModalityFlowSource.test.mjs +0 -56
  211. package/src/components/composite/ModelModalityFlow/index.tsx +0 -113
  212. package/src/components/composite/ModelPickerList/ModelPickerList.stories.tsx +0 -313
  213. package/src/components/composite/ModelPickerList/index.tsx +0 -142
  214. package/src/components/composite/ModelSelect/ModelSelect.stories.tsx +0 -90
  215. package/src/components/composite/ModelSelect/index.tsx +0 -148
  216. package/src/components/composite/ModelsSettingsSectionView/ModelsSettingsSectionView.stories.tsx +0 -170
  217. package/src/components/composite/ModelsSettingsSectionView/index.tsx +0 -139
  218. package/src/components/composite/NativeControls/NativeControls.stories.tsx +0 -386
  219. package/src/components/composite/NativeControls/NativeControlsStyleSource.test.mjs +0 -63
  220. package/src/components/composite/NativeControls/index.tsx +0 -97
  221. package/src/components/composite/NavMenu/NavMenu.stories.tsx +0 -383
  222. package/src/components/composite/NavMenu/NavMenuSource.test.mjs +0 -56
  223. package/src/components/composite/NavMenu/index.tsx +0 -142
  224. package/src/components/composite/NoPlanPanelView/NoPlanPanelView.stories.tsx +0 -344
  225. package/src/components/composite/NoPlanPanelView/NoPlanPanelViewSource.test.mjs +0 -34
  226. package/src/components/composite/NoPlanPanelView/index.tsx +0 -97
  227. package/src/components/composite/OpenWithButton/OpenWithButton.stories.tsx +0 -78
  228. package/src/components/composite/OpenWithButton/index.tsx +0 -46
  229. package/src/components/composite/OrbitworkLogo/OrbitworkLogo.stories.tsx +0 -192
  230. package/src/components/composite/OrbitworkLogo/index.tsx +0 -207
  231. package/src/components/composite/OrbitworkModal/OrbitworkModal.stories.tsx +0 -58
  232. package/src/components/composite/OrbitworkModal/index.tsx +0 -31
  233. package/src/components/composite/PageHead/PageHead.stories.tsx +0 -235
  234. package/src/components/composite/PageHead/PageHeadSource.test.mjs +0 -76
  235. package/src/components/composite/PageHead/index.tsx +0 -128
  236. package/src/components/composite/PlanFeatureIcon/PlanFeatureIcon.stories.tsx +0 -205
  237. package/src/components/composite/PlanFeatureIcon/PlanFeatureIconSource.test.mjs +0 -38
  238. package/src/components/composite/PlanFeatureIcon/index.tsx +0 -48
  239. package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionView.stories.tsx +0 -231
  240. package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionViewSource.test.mjs +0 -85
  241. package/src/components/composite/PlanSettingsSectionView/index.tsx +0 -264
  242. package/src/components/composite/Popover/Popover.stories.tsx +0 -175
  243. package/src/components/composite/Popover/PopoverSource.test.mjs +0 -59
  244. package/src/components/composite/Popover/index.tsx +0 -176
  245. package/src/components/composite/PptxRenderer/ElementDispatcher/index.tsx +0 -70
  246. package/src/components/composite/PptxRenderer/PptxChromeStyleSource.test.mjs +0 -36
  247. package/src/components/composite/PptxRenderer/PptxRenderer.stories.tsx +0 -128
  248. package/src/components/composite/PptxRenderer/PptxSlide/index.tsx +0 -48
  249. package/src/components/composite/PptxRenderer/constants.ts +0 -2
  250. package/src/components/composite/PptxRenderer/elements/AudioElement/index.tsx +0 -48
  251. package/src/components/composite/PptxRenderer/elements/ChartElement/index.tsx +0 -172
  252. package/src/components/composite/PptxRenderer/elements/DiagramElement/index.tsx +0 -46
  253. package/src/components/composite/PptxRenderer/elements/GroupElement/index.tsx +0 -28
  254. package/src/components/composite/PptxRenderer/elements/ImageElement/index.tsx +0 -61
  255. package/src/components/composite/PptxRenderer/elements/MathElement/index.tsx +0 -57
  256. package/src/components/composite/PptxRenderer/elements/ShapeElement/index.tsx +0 -327
  257. package/src/components/composite/PptxRenderer/elements/TableElement/index.tsx +0 -90
  258. package/src/components/composite/PptxRenderer/elements/TextElement/index.tsx +0 -57
  259. package/src/components/composite/PptxRenderer/elements/VideoElement/index.tsx +0 -43
  260. package/src/components/composite/PptxRenderer/index.ts +0 -24
  261. package/src/components/composite/PptxRenderer/types.ts +0 -326
  262. package/src/components/composite/PptxRenderer/utils.ts +0 -129
  263. package/src/components/composite/ProjectSelect/ProjectSelect.stories.tsx +0 -112
  264. package/src/components/composite/ProjectSelect/ProjectSelectSource.test.mjs +0 -34
  265. package/src/components/composite/ProjectSelect/index.tsx +0 -155
  266. package/src/components/composite/RadioCard/RadioCard.stories.tsx +0 -130
  267. package/src/components/composite/RadioCard/RadioCardSource.test.mjs +0 -42
  268. package/src/components/composite/RadioCard/index.tsx +0 -171
  269. package/src/components/composite/RowOverflowMenu/RowOverflowMenu.stories.tsx +0 -113
  270. package/src/components/composite/RowOverflowMenu/RowOverflowMenuSource.test.mjs +0 -59
  271. package/src/components/composite/RowOverflowMenu/index.tsx +0 -101
  272. package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPrompt.stories.tsx +0 -159
  273. package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPromptSource.test.mjs +0 -71
  274. package/src/components/composite/SandboxPermissionPrompt/index.tsx +0 -157
  275. package/src/components/composite/SearchInput/SearchInput.stories.tsx +0 -127
  276. package/src/components/composite/SearchInput/index.tsx +0 -91
  277. package/src/components/composite/SearchResult/SearchResult.stories.tsx +0 -305
  278. package/src/components/composite/SearchResult/SearchResultSource.test.mjs +0 -45
  279. package/src/components/composite/SearchResult/index.tsx +0 -148
  280. package/src/components/composite/Section/Section.stories.tsx +0 -148
  281. package/src/components/composite/Section/SectionSource.test.mjs +0 -59
  282. package/src/components/composite/Section/index.tsx +0 -105
  283. package/src/components/composite/SelectionBulkBar/SelectionBulkBar.stories.tsx +0 -111
  284. package/src/components/composite/SelectionBulkBar/SelectionBulkBarSource.test.mjs +0 -44
  285. package/src/components/composite/SelectionBulkBar/index.tsx +0 -99
  286. package/src/components/composite/ShareStrip/ShareStrip.stories.tsx +0 -123
  287. package/src/components/composite/ShareStrip/index.tsx +0 -83
  288. package/src/components/composite/ShortcutSheet/ShortcutSheet.stories.tsx +0 -90
  289. package/src/components/composite/ShortcutSheet/ShortcutSheetSource.test.mjs +0 -49
  290. package/src/components/composite/ShortcutSheet/index.tsx +0 -163
  291. package/src/components/composite/SitesArtifactCardView/SitesArtifactCardView.stories.tsx +0 -328
  292. package/src/components/composite/SitesArtifactCardView/SitesArtifactCardViewSource.test.mjs +0 -45
  293. package/src/components/composite/SitesArtifactCardView/index.tsx +0 -100
  294. package/src/components/composite/Skeleton/Skeleton.stories.tsx +0 -188
  295. package/src/components/composite/Skeleton/SkeletonSource.test.mjs +0 -25
  296. package/src/components/composite/Skeleton/index.tsx +0 -152
  297. package/src/components/composite/Splash/Splash.stories.tsx +0 -150
  298. package/src/components/composite/Splash/index.tsx +0 -229
  299. package/src/components/composite/StatusTag/StatusTag.stories.tsx +0 -66
  300. package/src/components/composite/StatusTag/StatusTagSource.test.mjs +0 -64
  301. package/src/components/composite/StatusTag/index.tsx +0 -78
  302. package/src/components/composite/StepList/StepList.stories.tsx +0 -352
  303. package/src/components/composite/StepList/index.tsx +0 -23
  304. package/src/components/composite/Tag/Tag.stories.tsx +0 -279
  305. package/src/components/composite/Tag/TagSource.test.mjs +0 -67
  306. package/src/components/composite/Tag/index.tsx +0 -229
  307. package/src/components/composite/TimePicker/TimePicker.stories.tsx +0 -91
  308. package/src/components/composite/TimePicker/TimePickerSource.test.mjs +0 -98
  309. package/src/components/composite/TimePicker/index.tsx +0 -208
  310. package/src/components/composite/TitleBar/TitleBar.stories.tsx +0 -329
  311. package/src/components/composite/TitleBar/TitleBarSource.test.mjs +0 -140
  312. package/src/components/composite/TitleBar/index.tsx +0 -350
  313. package/src/components/composite/Toast/Toast.stories.tsx +0 -304
  314. package/src/components/composite/Toast/ToastSource.test.mjs +0 -63
  315. package/src/components/composite/Toast/index.tsx +0 -135
  316. package/src/components/composite/Tooltip/Tooltip.stories.tsx +0 -304
  317. package/src/components/composite/Tooltip/TooltipSource.test.mjs +0 -34
  318. package/src/components/composite/Tooltip/index.tsx +0 -204
  319. package/src/components/composite/TranscriptDividers/TranscriptDividers.stories.tsx +0 -160
  320. package/src/components/composite/TranscriptDividers/TranscriptDividersSource.test.mjs +0 -90
  321. package/src/components/composite/TranscriptDividers/index.tsx +0 -352
  322. package/src/components/composite/WCardShell/WCardShell.stories.tsx +0 -228
  323. package/src/components/composite/WCardShell/index.tsx +0 -101
  324. package/src/components/composite/index.ts +0 -81
  325. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarView.stories.tsx +0 -128
  326. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarViewSource.test.mjs +0 -69
  327. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/index.tsx +0 -212
  328. package/src/components/domain/artifacts/index.ts +0 -1
  329. package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupView.stories.tsx +0 -211
  330. package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupViewSource.test.mjs +0 -82
  331. package/src/components/domain/browser/BrowserAnnotationPopupView/index.tsx +0 -235
  332. package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarView.stories.tsx +0 -260
  333. package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarViewSource.test.mjs +0 -12
  334. package/src/components/domain/browser/BrowserDeviceToolbarView/index.tsx +0 -154
  335. package/src/components/domain/browser/BrowserFindBarView/BrowserFindBarView.stories.tsx +0 -52
  336. package/src/components/domain/browser/BrowserFindBarView/index.tsx +0 -111
  337. package/src/components/domain/browser/BrowserImportDialogView/BrowserImportDialogView.stories.tsx +0 -89
  338. package/src/components/domain/browser/BrowserImportDialogView/index.tsx +0 -155
  339. package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorView.stories.tsx +0 -197
  340. package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorViewSource.test.mjs +0 -29
  341. package/src/components/domain/browser/BrowserLoadErrorView/index.tsx +0 -45
  342. package/src/components/domain/browser/BrowserMoreMenuView/BrowserMoreMenuView.stories.tsx +0 -66
  343. package/src/components/domain/browser/BrowserMoreMenuView/index.tsx +0 -268
  344. package/src/components/domain/browser/BrowserNavBarView/BrowserNavBarView.stories.tsx +0 -149
  345. package/src/components/domain/browser/BrowserNavBarView/index.tsx +0 -156
  346. package/src/components/domain/browser/BrowserTabBarView/index.tsx +0 -18
  347. package/src/components/domain/browser/SubAgentPane/SubAgentPane.stories.tsx +0 -96
  348. package/src/components/domain/browser/SubAgentPane/SubAgentPaneSource.test.mjs +0 -48
  349. package/src/components/domain/browser/SubAgentPane/index.tsx +0 -121
  350. package/src/components/domain/browser/TerminalPane/TerminalPane.stories.tsx +0 -95
  351. package/src/components/domain/browser/TerminalPane/TerminalPaneSource.test.mjs +0 -52
  352. package/src/components/domain/browser/TerminalPane/index.tsx +0 -75
  353. package/src/components/domain/browser/WebPreview/WebPreview.stories.tsx +0 -71
  354. package/src/components/domain/browser/WebPreview/index.tsx +0 -141
  355. package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsole.stories.tsx +0 -61
  356. package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsoleSource.test.mjs +0 -66
  357. package/src/components/domain/browser/WebPreviewConsole/index.tsx +0 -239
  358. package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialog.stories.tsx +0 -288
  359. package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialogSource.test.mjs +0 -62
  360. package/src/components/domain/browser/WebPreviewDialog/index.tsx +0 -82
  361. package/src/components/domain/browser/WebPreviewNav/WebPreviewNav.stories.tsx +0 -462
  362. package/src/components/domain/browser/WebPreviewNav/WebPreviewNavSource.test.mjs +0 -353
  363. package/src/components/domain/browser/WebPreviewNav/index.tsx +0 -351
  364. package/src/components/domain/browser/WebPreviewShell/WebPreviewShell.stories.tsx +0 -226
  365. package/src/components/domain/browser/WebPreviewShell/WebPreviewShellSource.test.mjs +0 -172
  366. package/src/components/domain/browser/WebPreviewShell/index.tsx +0 -324
  367. package/src/components/domain/browser/index.ts +0 -45
  368. package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegment.stories.tsx +0 -107
  369. package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegmentSource.test.mjs +0 -45
  370. package/src/components/domain/chat/AgentLoopSegment/index.tsx +0 -29
  371. package/src/components/domain/chat/AgentTurn/AgentTurn.stories.tsx +0 -162
  372. package/src/components/domain/chat/AgentTurn/AgentTurnSource.test.mjs +0 -98
  373. package/src/components/domain/chat/AgentTurn/beaconContext.ts +0 -37
  374. package/src/components/domain/chat/AgentTurn/index.tsx +0 -226
  375. package/src/components/domain/chat/ArtifactCard/ArtifactCard.stories.tsx +0 -127
  376. package/src/components/domain/chat/ArtifactCard/index.tsx +0 -249
  377. package/src/components/domain/chat/Attachment/Attachment.stories.tsx +0 -235
  378. package/src/components/domain/chat/Attachment/AttachmentSource.test.mjs +0 -160
  379. package/src/components/domain/chat/Attachment/index.tsx +0 -857
  380. package/src/components/domain/chat/AuthorizationCard/AuthorizationCard.stories.tsx +0 -53
  381. package/src/components/domain/chat/AuthorizationCard/AuthorizationCardSource.test.mjs +0 -80
  382. package/src/components/domain/chat/AuthorizationCard/index.tsx +0 -89
  383. package/src/components/domain/chat/ChatBubble/ChatBubble.stories.tsx +0 -32
  384. package/src/components/domain/chat/ChatBubble/index.tsx +0 -24
  385. package/src/components/domain/chat/ChatMessage/ChatMessage.stories.tsx +0 -31
  386. package/src/components/domain/chat/ChatMessage/index.tsx +0 -23
  387. package/src/components/domain/chat/ChatR2ReviewSource.test.mjs +0 -98
  388. package/src/components/domain/chat/ChatThinking/ChatThinking.stories.tsx +0 -125
  389. package/src/components/domain/chat/ChatThinking/index.tsx +0 -55
  390. package/src/components/domain/chat/Chatbot/Chatbot.stories.tsx +0 -49
  391. package/src/components/domain/chat/Chatbot/index.tsx +0 -37
  392. package/src/components/domain/chat/Composer/Composer.stories.tsx +0 -227
  393. package/src/components/domain/chat/Composer/ComposerSource.test.mjs +0 -175
  394. package/src/components/domain/chat/Composer/index.tsx +0 -450
  395. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.stories.tsx +0 -203
  396. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.tsx +0 -110
  397. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrumSource.test.mjs +0 -54
  398. package/src/components/domain/chat/Composer/parts/ComposerAuthorization.stories.tsx +0 -155
  399. package/src/components/domain/chat/Composer/parts/ComposerAuthorization.tsx +0 -108
  400. package/src/components/domain/chat/Composer/parts/ComposerMentions.stories.tsx +0 -76
  401. package/src/components/domain/chat/Composer/parts/ComposerMentions.tsx +0 -83
  402. package/src/components/domain/chat/Composer/parts/ComposerMentionsSource.test.mjs +0 -85
  403. package/src/components/domain/chat/Composer/parts/ComposerMenu.stories.tsx +0 -266
  404. package/src/components/domain/chat/Composer/parts/ComposerMenu.tsx +0 -232
  405. package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.stories.tsx +0 -166
  406. package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.tsx +0 -87
  407. package/src/components/domain/chat/Composer/parts/ComposerMenuPopoverSource.test.mjs +0 -56
  408. package/src/components/domain/chat/Composer/parts/ComposerPopover.stories.tsx +0 -257
  409. package/src/components/domain/chat/Composer/parts/ComposerPopover.tsx +0 -221
  410. package/src/components/domain/chat/Composer/parts/ComposerPopoverSource.test.mjs +0 -71
  411. package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.stories.tsx +0 -260
  412. package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.tsx +0 -246
  413. package/src/components/domain/chat/Composer/parts/ComposerProjectPickerSource.test.mjs +0 -46
  414. package/src/components/domain/chat/Composer/parts/ComposerQueue.stories.tsx +0 -275
  415. package/src/components/domain/chat/Composer/parts/ComposerQueue.tsx +0 -155
  416. package/src/components/domain/chat/Composer/parts/ComposerQueueSource.test.mjs +0 -95
  417. package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.stories.tsx +0 -77
  418. package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.tsx +0 -70
  419. package/src/components/domain/chat/Composer/parts/mountChip.ts +0 -21
  420. package/src/components/domain/chat/ContextUsage/ContextUsage.stories.tsx +0 -62
  421. package/src/components/domain/chat/ContextUsage/index.tsx +0 -69
  422. package/src/components/domain/chat/ExecutionSummary/ExecutionSummary.stories.tsx +0 -238
  423. package/src/components/domain/chat/ExecutionSummary/ExecutionSummarySource.test.mjs +0 -210
  424. package/src/components/domain/chat/ExecutionSummary/index.tsx +0 -487
  425. package/src/components/domain/chat/Message/Message.stories.tsx +0 -264
  426. package/src/components/domain/chat/Message/index.tsx +0 -44
  427. package/src/components/domain/chat/MessageActions/MessageActions.stories.tsx +0 -132
  428. package/src/components/domain/chat/MessageActions/MessageActionsSource.test.mjs +0 -79
  429. package/src/components/domain/chat/MessageActions/index.tsx +0 -186
  430. package/src/components/domain/chat/PlanCard/PlanCard.stories.tsx +0 -87
  431. package/src/components/domain/chat/PlanCard/index.tsx +0 -170
  432. package/src/components/domain/chat/RichContent/RichContent.stories.tsx +0 -102
  433. package/src/components/domain/chat/RichContent/RichContentSource.test.mjs +0 -82
  434. package/src/components/domain/chat/RichContent/index.tsx +0 -465
  435. package/src/components/domain/chat/SubAgentThread/SubAgentThread.stories.tsx +0 -119
  436. package/src/components/domain/chat/SubAgentThread/index.tsx +0 -104
  437. package/src/components/domain/chat/Thinking/Thinking.stories.tsx +0 -196
  438. package/src/components/domain/chat/Thinking/ThinkingInlineSource.test.mjs +0 -154
  439. package/src/components/domain/chat/Thinking/index.tsx +0 -237
  440. package/src/components/domain/chat/ToolCallRow/ToolCallRow.stories.tsx +0 -105
  441. package/src/components/domain/chat/ToolCallRow/ToolCallRowSource.test.mjs +0 -83
  442. package/src/components/domain/chat/ToolCallRow/index.tsx +0 -113
  443. package/src/components/domain/chat/Transcript/Transcript.stories.tsx +0 -296
  444. package/src/components/domain/chat/Transcript/TranscriptSource.test.mjs +0 -189
  445. package/src/components/domain/chat/Transcript/index.tsx +0 -187
  446. package/src/components/domain/chat/TranscriptSpine/TranscriptSpine.stories.tsx +0 -124
  447. package/src/components/domain/chat/TranscriptSpine/index.tsx +0 -245
  448. package/src/components/domain/chat/UserTurn/UserTurn.stories.tsx +0 -176
  449. package/src/components/domain/chat/UserTurn/UserTurnSource.test.mjs +0 -150
  450. package/src/components/domain/chat/UserTurn/index.tsx +0 -194
  451. package/src/components/domain/chat/index.ts +0 -22
  452. package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuView.stories.tsx +0 -116
  453. package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuViewSource.test.mjs +0 -80
  454. package/src/components/domain/desktop/DesktopAccountMenuView/index.tsx +0 -355
  455. package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettings.stories.tsx +0 -96
  456. package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettingsSource.test.mjs +0 -89
  457. package/src/components/domain/desktop/DesktopAppearanceSettings/index.tsx +0 -155
  458. package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigView.stories.tsx +0 -275
  459. package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigViewSource.test.mjs +0 -37
  460. package/src/components/domain/desktop/DesktopAssistantConfigView/index.tsx +0 -221
  461. package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogView.stories.tsx +0 -537
  462. package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogViewSource.test.mjs +0 -339
  463. package/src/components/domain/desktop/DesktopCatalogView/index.tsx +0 -1074
  464. package/src/components/domain/desktop/DesktopChatBranchDivider/DesktopChatBranchDivider.stories.tsx +0 -58
  465. package/src/components/domain/desktop/DesktopChatBranchDivider/index.tsx +0 -33
  466. package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateView.stories.tsx +0 -75
  467. package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateViewSource.test.mjs +0 -54
  468. package/src/components/domain/desktop/DesktopChatEmptyStateView/index.tsx +0 -64
  469. package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderView.stories.tsx +0 -83
  470. package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderViewSource.test.mjs +0 -126
  471. package/src/components/domain/desktop/DesktopChatHeaderView/index.tsx +0 -169
  472. package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageView.stories.tsx +0 -170
  473. package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageViewSource.test.mjs +0 -47
  474. package/src/components/domain/desktop/DesktopChatMessageView/index.tsx +0 -213
  475. package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnView.stories.tsx +0 -498
  476. package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnViewSource.test.mjs +0 -187
  477. package/src/components/domain/desktop/DesktopChatTurnView/index.tsx +0 -490
  478. package/src/components/domain/desktop/DesktopComposer/DesktopComposer.stories.tsx +0 -195
  479. package/src/components/domain/desktop/DesktopComposer/DesktopComposerModelPickerSource.test.mjs +0 -132
  480. package/src/components/domain/desktop/DesktopComposer/DesktopComposerMountChipSource.test.mjs +0 -43
  481. package/src/components/domain/desktop/DesktopComposer/DesktopComposerResponsiveSource.test.mjs +0 -44
  482. package/src/components/domain/desktop/DesktopComposer/DesktopMcpFormThemeSource.test.mjs +0 -30
  483. package/src/components/domain/desktop/DesktopComposer/index.tsx +0 -206
  484. package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailView.stories.tsx +0 -72
  485. package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailViewSource.test.mjs +0 -81
  486. package/src/components/domain/desktop/DesktopConnectorDetailView/index.tsx +0 -301
  487. package/src/components/domain/desktop/DesktopHomeView/DesktopHomeView.stories.tsx +0 -103
  488. package/src/components/domain/desktop/DesktopHomeView/DesktopHomeViewSource.test.mjs +0 -51
  489. package/src/components/domain/desktop/DesktopHomeView/index.tsx +0 -122
  490. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/DesktopLibraryAuthorizationDialog.stories.tsx +0 -55
  491. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/index.tsx +0 -156
  492. package/src/components/domain/desktop/DesktopLibraryPageView/DesktopLibraryPageView.stories.tsx +0 -42
  493. package/src/components/domain/desktop/DesktopLibraryPageView/index.tsx +0 -35
  494. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.css +0 -75
  495. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.stories.tsx +0 -230
  496. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginViewSource.test.mjs +0 -149
  497. package/src/components/domain/desktop/DesktopLoginView/index.tsx +0 -418
  498. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourView.stories.tsx +0 -103
  499. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourViewSource.test.mjs +0 -57
  500. package/src/components/domain/desktop/DesktopOnboardingTourView/index.tsx +0 -189
  501. package/src/components/domain/desktop/DesktopPet/DesktopPet.fixture.ts +0 -243
  502. package/src/components/domain/desktop/DesktopPet/DesktopPet.stories.tsx +0 -337
  503. package/src/components/domain/desktop/DesktopPet/DesktopPetSource.test.mjs +0 -191
  504. package/src/components/domain/desktop/DesktopPet/index.tsx +0 -591
  505. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettings.stories.tsx +0 -159
  506. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettingsSource.test.mjs +0 -76
  507. package/src/components/domain/desktop/DesktopPetSettings/index.tsx +0 -140
  508. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusView.stories.tsx +0 -166
  509. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusViewSource.test.mjs +0 -51
  510. package/src/components/domain/desktop/DesktopRunStatusView/index.tsx +0 -34
  511. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCard.stories.tsx +0 -122
  512. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCardSource.test.mjs +0 -42
  513. package/src/components/domain/desktop/DesktopSelectionCard/index.tsx +0 -75
  514. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySection.stories.tsx +0 -225
  515. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySectionSource.test.mjs +0 -105
  516. package/src/components/domain/desktop/DesktopSettingsMemorySection/index.tsx +0 -340
  517. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsView.stories.tsx +0 -177
  518. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsViewSource.test.mjs +0 -195
  519. package/src/components/domain/desktop/DesktopSettingsView/index.tsx +0 -176
  520. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarView.stories.tsx +0 -77
  521. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarViewSource.test.mjs +0 -76
  522. package/src/components/domain/desktop/DesktopShareSelectionBarView/index.tsx +0 -55
  523. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarView.stories.tsx +0 -454
  524. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarViewSource.test.mjs +0 -386
  525. package/src/components/domain/desktop/DesktopSidebarView/index.tsx +0 -1075
  526. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesView.stories.tsx +0 -369
  527. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesViewSource.test.mjs +0 -123
  528. package/src/components/domain/desktop/DesktopSiteReleasesView/index.tsx +0 -392
  529. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListView.stories.tsx +0 -244
  530. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListViewSource.test.mjs +0 -198
  531. package/src/components/domain/desktop/DesktopSitesListView/index.tsx +0 -417
  532. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageView.stories.tsx +0 -230
  533. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageViewSource.test.mjs +0 -149
  534. package/src/components/domain/desktop/DesktopSkillsPageView/index.tsx +0 -235
  535. package/src/components/domain/desktop/DesktopTaskDetailView/index.tsx +0 -111
  536. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallListViewSource.test.mjs +0 -302
  537. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallView.stories.tsx +0 -409
  538. package/src/components/domain/desktop/DesktopToolCallView/index.tsx +0 -388
  539. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShell.stories.tsx +0 -418
  540. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShellSource.test.mjs +0 -151
  541. package/src/components/domain/desktop/DesktopWorkbenchShell/index.tsx +0 -167
  542. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageView.stories.tsx +0 -135
  543. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageViewSource.test.mjs +0 -57
  544. package/src/components/domain/desktop/DesktopWorkspacePageView/index.tsx +0 -114
  545. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceView.stories.tsx +0 -227
  546. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceViewSource.test.mjs +0 -175
  547. package/src/components/domain/desktop/DesktopWorkspaceView/index.tsx +0 -580
  548. package/src/components/domain/desktop/ResourceManagement/ResourceManagement.stories.tsx +0 -19
  549. package/src/components/domain/desktop/ResourceManagement/ResourceManagementSource.test.mjs +0 -54
  550. package/src/components/domain/desktop/ResourceManagement/SharesList.tsx +0 -323
  551. package/src/components/domain/desktop/ResourceManagement/SnapshotViews.tsx +0 -92
  552. package/src/components/domain/desktop/ResourceManagement/SnapshotViewsSource.test.mjs +0 -15
  553. package/src/components/domain/desktop/ResourceManagement/index.tsx +0 -246
  554. package/src/components/domain/desktop/ShareSettingsDialogView/index.tsx +0 -234
  555. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmpty.stories.tsx +0 -100
  556. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmptySource.test.mjs +0 -67
  557. package/src/components/domain/desktop/SidePanelEmpty/index.tsx +0 -113
  558. package/src/components/domain/desktop/StarterCapsules/StarterCapsules.stories.tsx +0 -65
  559. package/src/components/domain/desktop/StarterCapsules/StarterCapsulesSource.test.mjs +0 -43
  560. package/src/components/domain/desktop/StarterCapsules/index.tsx +0 -90
  561. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanel.stories.tsx +0 -59
  562. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanelSource.test.mjs +0 -51
  563. package/src/components/domain/desktop/WorkbenchSidePanel/index.tsx +0 -74
  564. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirm.stories.tsx +0 -79
  565. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirmSource.test.mjs +0 -34
  566. package/src/components/domain/desktop/WorkspaceMigrateConfirm/index.tsx +0 -92
  567. package/src/components/domain/desktop/index.ts +0 -64
  568. package/src/components/domain/files/FileBrowser/FileBrowser.stories.tsx +0 -397
  569. package/src/components/domain/files/FileBrowser/FileBrowserSource.test.mjs +0 -75
  570. package/src/components/domain/files/FileBrowser/index.tsx +0 -221
  571. package/src/components/domain/files/FileIcon/FileIcon.stories.tsx +0 -207
  572. package/src/components/domain/files/FileIcon/FileIconSource.test.mjs +0 -39
  573. package/src/components/domain/files/FileIcon/index.tsx +0 -133
  574. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentView.stories.tsx +0 -242
  575. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentViewSource.test.mjs +0 -44
  576. package/src/components/domain/files/FilePreviewContentView/index.tsx +0 -125
  577. package/src/components/domain/files/FileTree/FileTree.stories.tsx +0 -204
  578. package/src/components/domain/files/FileTree/FileTreeSource.test.mjs +0 -18
  579. package/src/components/domain/files/FileTree/index.tsx +0 -106
  580. package/src/components/domain/files/PreviewDialog/PreviewDialog.stories.tsx +0 -178
  581. package/src/components/domain/files/PreviewDialog/PreviewDialogSource.test.mjs +0 -92
  582. package/src/components/domain/files/PreviewDialog/index.tsx +0 -294
  583. package/src/components/domain/files/index.ts +0 -5
  584. package/src/components/domain/index.ts +0 -8
  585. package/src/components/domain/office/CsvPreview/CsvPreview.stories.tsx +0 -264
  586. package/src/components/domain/office/CsvPreview/CsvPreviewSource.test.mjs +0 -77
  587. package/src/components/domain/office/CsvPreview/index.tsx +0 -224
  588. package/src/components/domain/office/OfficePreview/OfficePreview.stories.tsx +0 -265
  589. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.stories.tsx +0 -71
  590. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.tsx +0 -43
  591. package/src/components/domain/office/OfficePreview/OfficePreviewSource.test.mjs +0 -126
  592. package/src/components/domain/office/OfficePreview/index.tsx +0 -782
  593. package/src/components/domain/office/PdfPreview/PdfPreview.stories.tsx +0 -280
  594. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.stories.tsx +0 -61
  595. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.tsx +0 -61
  596. package/src/components/domain/office/PdfPreview/PdfPreviewSource.test.mjs +0 -70
  597. package/src/components/domain/office/PdfPreview/index.tsx +0 -217
  598. package/src/components/domain/office/index.ts +0 -5
  599. package/src/components/domain/skills/McpServerListView/McpServerListView.stories.tsx +0 -510
  600. package/src/components/domain/skills/McpServerListView/McpServerListViewSource.test.mjs +0 -101
  601. package/src/components/domain/skills/McpServerListView/index.tsx +0 -250
  602. package/src/components/domain/skills/SkillAvatarView/SkillAvatarView.stories.tsx +0 -121
  603. package/src/components/domain/skills/SkillAvatarView/SkillAvatarViewSource.test.mjs +0 -67
  604. package/src/components/domain/skills/SkillAvatarView/index.tsx +0 -112
  605. package/src/components/domain/skills/SkillCardView/SkillCardView.stories.tsx +0 -374
  606. package/src/components/domain/skills/SkillCardView/SkillCardViewSource.test.mjs +0 -35
  607. package/src/components/domain/skills/SkillCardView/index.tsx +0 -88
  608. package/src/components/domain/skills/SkillDetailPanelView/SkillDetailPanelView.stories.tsx +0 -113
  609. package/src/components/domain/skills/SkillDetailPanelView/index.tsx +0 -115
  610. package/src/components/domain/skills/SkillDetailView/SkillDetailView.stories.tsx +0 -274
  611. package/src/components/domain/skills/SkillDetailView/index.tsx +0 -121
  612. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogView.stories.tsx +0 -128
  613. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogViewSource.test.mjs +0 -11
  614. package/src/components/domain/skills/SkillImportDialogView/index.tsx +0 -147
  615. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalView.stories.tsx +0 -160
  616. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalViewSource.test.mjs +0 -99
  617. package/src/components/domain/skills/ToolDetailModalView/index.tsx +0 -160
  618. package/src/components/domain/skills/index.ts +0 -7
  619. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardView.stories.tsx +0 -120
  620. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardViewSource.test.mjs +0 -40
  621. package/src/components/domain/tasks/ScheduledTaskCardView/index.tsx +0 -135
  622. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialog.stories.tsx +0 -56
  623. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialogSource.test.mjs +0 -35
  624. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx +0 -73
  625. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailView.stories.tsx +0 -121
  626. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailViewSource.test.mjs +0 -115
  627. package/src/components/domain/tasks/ScheduledTaskDetailView/index.tsx +0 -223
  628. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceView.stories.tsx +0 -526
  629. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceViewSource.test.mjs +0 -85
  630. package/src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx +0 -118
  631. package/src/components/domain/tasks/index.ts +0 -4
  632. package/src/components/domain/theme/SkinManager.stories.tsx +0 -43
  633. package/src/components/domain/theme/SkinManagerUI.tsx +0 -382
  634. package/src/components/domain/theme/ThemeDemo.stories.tsx +0 -12
  635. package/src/components/domain/theme/ThemeDemo.tsx +0 -224
  636. package/src/components/index.ts +0 -11
  637. package/src/components/primitives/Avatar/Avatar.stories.tsx +0 -170
  638. package/src/components/primitives/Avatar/AvatarSource.test.mjs +0 -37
  639. package/src/components/primitives/Avatar/index.tsx +0 -180
  640. package/src/components/primitives/BackTop/BackTop.stories.tsx +0 -122
  641. package/src/components/primitives/BackTop/BackTopSource.test.mjs +0 -61
  642. package/src/components/primitives/BackTop/index.tsx +0 -93
  643. package/src/components/primitives/Badge/Badge.stories.tsx +0 -376
  644. package/src/components/primitives/Badge/BadgeSource.test.mjs +0 -27
  645. package/src/components/primitives/Badge/index.tsx +0 -65
  646. package/src/components/primitives/Button/Button.stories.tsx +0 -287
  647. package/src/components/primitives/Button/ButtonSource.test.mjs +0 -84
  648. package/src/components/primitives/Button/index.tsx +0 -216
  649. package/src/components/primitives/Card/Card.stories.tsx +0 -186
  650. package/src/components/primitives/Card/CardSource.test.mjs +0 -73
  651. package/src/components/primitives/Card/index.tsx +0 -137
  652. package/src/components/primitives/Checkbox/Checkbox.stories.tsx +0 -79
  653. package/src/components/primitives/Checkbox/CheckboxSource.test.mjs +0 -43
  654. package/src/components/primitives/Checkbox/index.tsx +0 -87
  655. package/src/components/primitives/Chip/Chip.stories.tsx +0 -149
  656. package/src/components/primitives/Chip/ChipSource.test.mjs +0 -73
  657. package/src/components/primitives/Chip/index.tsx +0 -252
  658. package/src/components/primitives/Divider/Divider.stories.tsx +0 -68
  659. package/src/components/primitives/Divider/DividerSource.test.mjs +0 -26
  660. package/src/components/primitives/Divider/index.tsx +0 -65
  661. package/src/components/primitives/Dropdown/Dropdown.stories.tsx +0 -38
  662. package/src/components/primitives/Dropdown/DropdownSource.test.mjs +0 -23
  663. package/src/components/primitives/Dropdown/index.tsx +0 -29
  664. package/src/components/primitives/EmptyState/EmptyState.stories.tsx +0 -159
  665. package/src/components/primitives/EmptyState/EmptyStateSource.test.mjs +0 -169
  666. package/src/components/primitives/EmptyState/index.tsx +0 -185
  667. package/src/components/primitives/ErrorCard/ErrorCard.stories.tsx +0 -50
  668. package/src/components/primitives/ErrorCard/index.tsx +0 -78
  669. package/src/components/primitives/Field/Field.stories.tsx +0 -208
  670. package/src/components/primitives/Field/FieldSource.test.mjs +0 -70
  671. package/src/components/primitives/Field/index.tsx +0 -297
  672. package/src/components/primitives/InlineMessage/InlineMessage.stories.tsx +0 -137
  673. package/src/components/primitives/InlineMessage/InlineMessageSource.test.mjs +0 -50
  674. package/src/components/primitives/InlineMessage/index.tsx +0 -141
  675. package/src/components/primitives/Input/Input.stories.tsx +0 -30
  676. package/src/components/primitives/Input/index.tsx +0 -12
  677. package/src/components/primitives/Keycap/Keycap.stories.tsx +0 -93
  678. package/src/components/primitives/Keycap/KeycapSource.test.mjs +0 -30
  679. package/src/components/primitives/Keycap/index.tsx +0 -67
  680. package/src/components/primitives/Menu/Menu.stories.tsx +0 -416
  681. package/src/components/primitives/Menu/MenuEmptySource.test.mjs +0 -23
  682. package/src/components/primitives/Menu/MenuSource.test.mjs +0 -207
  683. package/src/components/primitives/Menu/index.tsx +0 -922
  684. package/src/components/primitives/Pagination/Pagination.stories.tsx +0 -77
  685. package/src/components/primitives/Pagination/PaginationSource.test.mjs +0 -24
  686. package/src/components/primitives/Pagination/index.tsx +0 -85
  687. package/src/components/primitives/Pagination/pagination.ts +0 -25
  688. package/src/components/primitives/Pagination/paginationModel.test.mjs +0 -18
  689. package/src/components/primitives/ProgressBar/ProgressBar.stories.tsx +0 -103
  690. package/src/components/primitives/ProgressBar/ProgressBarSource.test.mjs +0 -44
  691. package/src/components/primitives/ProgressBar/index.tsx +0 -68
  692. package/src/components/primitives/Radio/Radio.stories.tsx +0 -84
  693. package/src/components/primitives/Radio/RadioSource.test.mjs +0 -38
  694. package/src/components/primitives/Radio/index.tsx +0 -161
  695. package/src/components/primitives/SegmentedControl/SegmentedControl.stories.tsx +0 -110
  696. package/src/components/primitives/SegmentedControl/SegmentedControlSource.test.mjs +0 -75
  697. package/src/components/primitives/SegmentedControl/index.tsx +0 -188
  698. package/src/components/primitives/Select/Select.stories.tsx +0 -158
  699. package/src/components/primitives/Select/SelectSource.test.mjs +0 -94
  700. package/src/components/primitives/Select/index.tsx +0 -364
  701. package/src/components/primitives/Spinner/index.tsx +0 -58
  702. package/src/components/primitives/Switch/Switch.stories.tsx +0 -64
  703. package/src/components/primitives/Switch/SwitchSource.test.mjs +0 -38
  704. package/src/components/primitives/Switch/index.tsx +0 -84
  705. package/src/components/primitives/Tabs/Tabs.stories.tsx +0 -230
  706. package/src/components/primitives/Tabs/TabsSource.test.mjs +0 -91
  707. package/src/components/primitives/Tabs/index.tsx +0 -183
  708. package/src/components/primitives/index.ts +0 -24
  709. package/src/examples/ResourceManagementExample.tsx +0 -119
  710. package/src/examples/SiteWorkbenchExample.tsx +0 -96
  711. package/src/hooks/index.ts +0 -7
  712. package/src/hooks/useClickOutside.ts +0 -20
  713. package/src/hooks/useDragReorder.ts +0 -29
  714. package/src/hooks/useImeAwareEnter.ts +0 -59
  715. package/src/hooks/useImeAwareEnterSource.test.mjs +0 -65
  716. package/src/hooks/useKeyboard.ts +0 -16
  717. package/src/hooks/usePopover.ts +0 -67
  718. package/src/hooks/useSelectedOptionLocator.ts +0 -33
  719. package/src/hooks/useSidebarResize.ts +0 -107
  720. package/src/hooks/useTenantTheme.ts +0 -53
  721. package/src/hooks/useUnifiedTheme.ts +0 -85
  722. package/src/index.ts +0 -6
  723. package/src/lib/InjectedStyleTokenMirrorSource.test.mjs +0 -67
  724. package/src/lib/about-window.test.mjs +0 -46
  725. package/src/lib/about-window.ts +0 -218
  726. package/src/lib/appearance.test.mjs +0 -283
  727. package/src/lib/appearance.ts +0 -46
  728. package/src/lib/browser-annotation-popup.ts +0 -151
  729. package/src/lib/focusTrap.ts +0 -51
  730. package/src/lib/index.ts +0 -5
  731. package/src/lib/shortcut.test.mjs +0 -100
  732. package/src/lib/shortcut.ts +0 -97
  733. package/src/lib/twMergeOw.ts +0 -18
  734. package/src/lib/utils.ts +0 -6
  735. package/src/screens/Browser.stories.tsx +0 -353
  736. package/src/screens/Chat.stories.tsx +0 -808
  737. package/src/screens/Home.stories.tsx +0 -253
  738. package/src/screens/Login.stories.tsx +0 -134
  739. package/src/screens/McpManager.stories.tsx +0 -159
  740. package/src/screens/Onboarding.stories.tsx +0 -155
  741. package/src/screens/ScheduledTasks.stories.tsx +0 -134
  742. package/src/screens/ScreenFrameSource.test.mjs +0 -77
  743. package/src/screens/SettingsAppearance.stories.tsx +0 -117
  744. package/src/screens/SettingsMemory.stories.tsx +0 -128
  745. package/src/screens/SettingsModels.stories.tsx +0 -228
  746. package/src/screens/SettingsSections.stories.tsx +0 -164
  747. package/src/screens/Share.stories.tsx +0 -202
  748. package/src/screens/SharePage.stories.tsx +0 -29
  749. package/src/screens/Sites.stories.tsx +0 -183
  750. package/src/screens/Skills.stories.tsx +0 -83
  751. package/src/screens/Workspace.stories.tsx +0 -191
  752. package/src/screens/_home.tsx +0 -46
  753. package/src/screens/_screen.tsx +0 -355
  754. package/src/screens/_settingsNav.ts +0 -27
  755. package/src/screens/_skillsCatalog.tsx +0 -372
  756. package/src/theme/SkinDenylistSyncSource.test.mjs +0 -124
  757. package/src/theme/__tests__/skins.test.mjs +0 -84
  758. package/src/theme/core/semanticAdapter.ts +0 -116
  759. package/src/theme/core/skin.ts +0 -605
  760. package/src/theme/core/skinScoped.ts +0 -289
  761. package/src/theme/core/tenantTheme.test.mjs +0 -127
  762. package/src/theme/core/tenantTheme.ts +0 -124
  763. package/src/theme/core/types.ts +0 -60
  764. package/src/theme/core/unifiedTheme.ts +0 -157
  765. package/src/theme/index.ts +0 -33
  766. package/src/theme/providers/BrandingProvider.tsx +0 -57
  767. package/src/theme/providers/ThemeProvider.tsx +0 -221
  768. package/src/theme/skinDs2PropertyGate.test.mjs +0 -109
  769. package/src/theme/skins/index.ts +0 -107
  770. package/src/theme/utils/cssSafety.ts +0 -92
  771. package/src/theme/utils/skinManager.ts +0 -159
  772. package/src/theme/utils/themeApplier.ts +0 -75
  773. package/src/tokens/DesktopSurfacesSweep15Source.test.mjs +0 -77
  774. package/src/tokens/SharedStyleSheetsSource.test.mjs +0 -90
  775. package/src/tokens/TailwindThemeSupplySource.test.mjs +0 -129
  776. package/src/tokens/base.ts +0 -199
  777. package/src/tokens/dark.ts +0 -288
  778. package/src/tokens/index.ts +0 -4
  779. package/src/tokens/light.ts +0 -320
  780. package/src/tokens/tailwind.ts +0 -216
  781. package/src/types/desktop-pet.ts +0 -100
  782. package/src/types/file-browser.ts +0 -51
  783. package/src/types/file-tree.ts +0 -34
  784. package/src/types/index.ts +0 -3
  785. package/src/types/xspreadsheet.d.ts +0 -4
  786. package/src/utils/cn.ts +0 -6
  787. package/src/utils/glyphColor.ts +0 -32
  788. package/src/utils/index.ts +0 -4
  789. package/src/utils/localPathInline.test.mjs +0 -45
  790. package/src/utils/localPathInline.ts +0 -49
  791. package/src/utils/markdownFileRefs.test.mjs +0 -88
  792. package/src/utils/markdownFileRefs.ts +0 -140
  793. package/src/utils/office-excel.ts +0 -452
  794. package/src/utils/shiki.ts +0 -156
@@ -1,702 +0,0 @@
1
- "use client"
2
-
3
- import { Fragment, useEffect, useMemo, useState } from "react"
4
- import { splitLocalPathSegments } from "../../../utils/localPathInline"
5
- import {
6
- type LocalLinkTargetOptions,
7
- cleanFileLabel,
8
- collectMarkdownFileRefs,
9
- localMarkdownLinkTarget,
10
- safeHref,
11
- } from "../../../utils/markdownFileRefs"
12
- import {
13
- Attachment,
14
- type AttachmentItem,
15
- AttachmentList,
16
- type AttachmentMenuOption,
17
- } from "../../domain/chat/Attachment"
18
- import { Button } from "../../primitives"
19
- import { CodeBlock } from "../CodeBlock"
20
-
21
- // Markdown is a small, dependency-free renderer for the common subset of
22
- // markdown that skill introductions use: headings, paragraphs, bold/italic,
23
- // inline code, fenced code blocks, and ordered/unordered lists. It renders via
24
- // React elements (no dangerouslySetInnerHTML), so all text stays escaped.
25
-
26
- type Block =
27
- | { kind: "heading"; level: number; text: string }
28
- | { kind: "para"; text: string }
29
- | { kind: "code"; text: string; language?: string }
30
- | { kind: "list"; ordered: boolean; items: string[] }
31
- | { kind: "table"; headers: string[]; rows: string[][]; aligns: TableAlign[] }
32
- | { kind: "quote"; paragraphs: string[] }
33
- | { kind: "imageGallery"; images: MarkdownImageItem[] }
34
-
35
- // Blockquote marker: "> " or a bare ">" on an otherwise empty line.
36
- const QUOTE_LINE_RE = /^\s{0,3}>\s?/
37
-
38
- type TableAlign = "left" | "center" | "right"
39
-
40
- // Shell-ish fence languages that get a "run in terminal" affordance when the
41
- // host passes onRunCommand.
42
- const RUNNABLE_SHELL_LANGUAGES = new Set(["bash", "sh", "zsh", "shell", "shellscript"])
43
-
44
- function isRunnableShellLanguage(language: string | undefined): boolean {
45
- return Boolean(language && RUNNABLE_SHELL_LANGUAGES.has(language.toLowerCase()))
46
- }
47
- // Resolved local media a Markdown image/link target maps to. Exported as the
48
- // single source of truth so every surface that threads image preview through
49
- // Markdown (chat bubble, message actions, preview modal) shares one shape.
50
- export type LocalMarkdownPreview = { kind: "image" | "video"; name: string; url: string }
51
- // Resolver a host passes down to turn a local/relative image target (e.g.
52
- // images/poster.png) into previewable media, or null when it cannot.
53
- export type LocalImagePreviewResolver = (path: string) => Promise<LocalMarkdownPreview | null>
54
- type MarkdownImageItem = { alt: string; target: string }
55
- type InlineRenderOptions = {
56
- onLocalPathClick?: (path: string) => void
57
- // Opens an inline local path through the same handler as the file reference
58
- // cards below the message, so both surfaces resolve previews identically.
59
- onLocalFileOpen?: (item: AttachmentItem) => void
60
- onLocalImagePreview?: LocalImagePreviewResolver
61
- localPathBaseDir?: string
62
- }
63
- type LocalPathOpener = (path: string, label?: string) => void
64
-
65
- // Inline local paths and the file reference cards must open the same way. When
66
- // a host provides the card handler, route inline clicks through it with the
67
- // same AttachmentItem shape collectLocalFileRefs builds.
68
- function resolveLocalPathOpener(options: InlineRenderOptions): LocalPathOpener | undefined {
69
- const { onLocalFileOpen, onLocalPathClick } = options
70
- if (onLocalFileOpen) return (path, label) => onLocalFileOpen({ name: cleanFileLabel(label ?? "", path), path })
71
- if (onLocalPathClick) return (path) => onLocalPathClick(path)
72
- return undefined
73
- }
74
-
75
- // Relative link targets only resolve when the host knows the session's project
76
- // directory β€” the main process needs that base dir to turn out/report.md into a
77
- // real path (and to reject anything escaping the project).
78
- function localLinkOptions(options: InlineRenderOptions): LocalLinkTargetOptions {
79
- return { allowRelative: Boolean(options.localPathBaseDir) }
80
- }
81
-
82
- function parseBlocks(src: string): Block[] {
83
- const lines = src.replace(/\r\n/g, "\n").split("\n")
84
- const blocks: Block[] = []
85
- let i = 0
86
- while (i < lines.length) {
87
- const line = lines[i] ?? ""
88
- // Fenced code block.
89
- if (line.trimStart().startsWith("```")) {
90
- const language = line.trimStart().slice(3).trim().split(/\s+/)[0] || undefined
91
- const body: string[] = []
92
- i += 1
93
- while (i < lines.length && !(lines[i] ?? "").trimStart().startsWith("```")) {
94
- body.push(lines[i] ?? "")
95
- i += 1
96
- }
97
- i += 1 // skip closing fence
98
- blocks.push({ kind: "code", text: body.join("\n"), language })
99
- continue
100
- }
101
- // Blank line.
102
- if (line.trim() === "") {
103
- i += 1
104
- continue
105
- }
106
- // Heading.
107
- const heading = line.match(/^(#{1,6})\s+(.*)$/)
108
- if (heading) {
109
- blocks.push({ kind: "heading", level: heading[1]?.length ?? 1, text: heading[2] ?? "" })
110
- i += 1
111
- continue
112
- }
113
- // Blockquote β€” consume contiguous "> " lines; a blank quoted line splits
114
- // paragraphs inside the quote.
115
- if (QUOTE_LINE_RE.test(line)) {
116
- const quoted: string[] = []
117
- while (i < lines.length && QUOTE_LINE_RE.test(lines[i] ?? "")) {
118
- quoted.push((lines[i] ?? "").replace(QUOTE_LINE_RE, ""))
119
- i += 1
120
- }
121
- const paragraphs: string[] = []
122
- let buffer: string[] = []
123
- for (const quotedLine of quoted) {
124
- if (quotedLine.trim() === "") {
125
- if (buffer.length > 0) paragraphs.push(buffer.join(" "))
126
- buffer = []
127
- } else {
128
- buffer.push(quotedLine)
129
- }
130
- }
131
- if (buffer.length > 0) paragraphs.push(buffer.join(" "))
132
- blocks.push({ kind: "quote", paragraphs })
133
- continue
134
- }
135
- // GitHub-style table. Requires a header row and a separator row.
136
- if (isTableHeader(lines, i)) {
137
- const headers = splitTableRow(lines[i] ?? "")
138
- const aligns = parseTableAligns(splitTableRow(lines[i + 1] ?? ""), headers.length)
139
- const rows: string[][] = []
140
- i += 2
141
- while (i < lines.length && isTableRow(lines[i] ?? "")) {
142
- rows.push(normalizeTableRow(splitTableRow(lines[i] ?? ""), headers.length))
143
- i += 1
144
- }
145
- blocks.push({ kind: "table", headers, rows, aligns })
146
- continue
147
- }
148
- // List (ordered or unordered) β€” consume contiguous item lines.
149
- if (/^\s*([-*]|\d+\.)\s+/.test(line)) {
150
- const ordered = /^\s*\d+\.\s+/.test(line)
151
- const items: string[] = []
152
- while (i < lines.length && /^\s*([-*]|\d+\.)\s+/.test(lines[i] ?? "")) {
153
- items.push((lines[i] ?? "").replace(/^\s*([-*]|\d+\.)\s+/, ""))
154
- i += 1
155
- }
156
- blocks.push({ kind: "list", ordered, items })
157
- continue
158
- }
159
- const imageGallery = collectImageGallery(lines, i)
160
- if (imageGallery) {
161
- blocks.push({ kind: "imageGallery", images: imageGallery.images })
162
- i = imageGallery.nextIndex
163
- continue
164
- }
165
- // Paragraph β€” consume contiguous non-blank, non-structural lines.
166
- const para: string[] = []
167
- while (
168
- i < lines.length &&
169
- (lines[i] ?? "").trim() !== "" &&
170
- !(lines[i] ?? "").trimStart().startsWith("```") &&
171
- !/^#{1,6}\s+/.test(lines[i] ?? "") &&
172
- !isTableHeader(lines, i) &&
173
- !QUOTE_LINE_RE.test(lines[i] ?? "") &&
174
- !/^\s*([-*]|\d+\.)\s+/.test(lines[i] ?? "")
175
- ) {
176
- para.push(lines[i] ?? "")
177
- i += 1
178
- }
179
- blocks.push({ kind: "para", text: para.join(" ") })
180
- }
181
- return blocks
182
- }
183
-
184
- function collectImageGallery(
185
- lines: string[],
186
- startIndex: number,
187
- ): { images: MarkdownImageItem[]; nextIndex: number } | null {
188
- const images: MarkdownImageItem[] = []
189
- let i = startIndex
190
- while (i < lines.length) {
191
- const line = lines[i] ?? ""
192
- if (line.trim() === "") {
193
- const nextNonBlankIndex = findNextNonBlankLine(lines, i + 1)
194
- if (images.length > 0 && nextNonBlankIndex >= 0 && parseImageOnlyLine(lines[nextNonBlankIndex] ?? "")) {
195
- i += 1
196
- continue
197
- }
198
- break
199
- }
200
- const image = parseImageOnlyLine(line)
201
- if (!image) break
202
- images.push(image)
203
- i += 1
204
- }
205
- return images.length > 0 ? { images, nextIndex: i } : null
206
- }
207
-
208
- function findNextNonBlankLine(lines: string[], startIndex: number): number {
209
- for (let i = startIndex; i < lines.length; i += 1) {
210
- if ((lines[i] ?? "").trim() !== "") return i
211
- }
212
- return -1
213
- }
214
-
215
- function parseImageOnlyLine(line: string): MarkdownImageItem | null {
216
- const match = line.trim().match(/^!\[([^\]]*)\]\(([^)]+)\)$/)
217
- if (!match) return null
218
- return { alt: match[1] ?? "", target: match[2] ?? "" }
219
- }
220
-
221
- function isTableHeader(lines: string[], index: number): boolean {
222
- const current = lines[index] ?? ""
223
- const next = lines[index + 1] ?? ""
224
- if (!isTableRow(current) || !isTableRow(next)) return false
225
- const headers = splitTableRow(current)
226
- const separators = splitTableRow(next)
227
- return (
228
- headers.length > 0 &&
229
- separators.length >= headers.length &&
230
- separators.slice(0, headers.length).every((cell) => /^:?-{3,}:?$/.test(cell.trim()))
231
- )
232
- }
233
-
234
- function isTableRow(line: string): boolean {
235
- return line.includes("|") && line.trim() !== ""
236
- }
237
-
238
- function splitTableRow(line: string): string[] {
239
- const trimmed = line.trim().replace(/^\|/, "").replace(/\|$/, "")
240
- return trimmed.split("|").map((cell) => cell.trim())
241
- }
242
-
243
- function normalizeTableRow(row: string[], length: number): string[] {
244
- return Array.from({ length }, (_, index) => row[index] ?? "")
245
- }
246
-
247
- function parseTableAligns(cells: string[], length: number): TableAlign[] {
248
- return Array.from({ length }, (_, index) => {
249
- const cell = cells[index]?.trim() ?? ""
250
- if (cell.startsWith(":") && cell.endsWith(":")) return "center"
251
- if (cell.endsWith(":")) return "right"
252
- return "left"
253
- })
254
- }
255
-
256
- // renderInline handles **bold**, *italic*/_italic_, `code`, ![alt](url),
257
- // [text](url), and bare http(s) URLs.
258
- function renderInline(text: string, options: InlineRenderOptions = {}): React.ReactNode[] {
259
- const nodes: React.ReactNode[] = []
260
- const openLocalPath = resolveLocalPathOpener(options)
261
- const re =
262
- /(\*\*([^*]+)\*\*|`([^`]+)`|\*([^*]+)\*|_([^_]+)_|!\[([^\]]*)\]\(([^)]+)\)|\[([^\]]+)\]\(([^)]+)\)|(https?:\/\/[^\s<>()]+))/g
263
- let last = 0
264
- let key = 0
265
- let m: RegExpExecArray | null
266
- while ((m = re.exec(text)) !== null) {
267
- if (m.index > last) nodes.push(...renderText(text.slice(last, m.index), key++, openLocalPath))
268
- if (m[2] !== undefined) nodes.push(<strong key={key++}>{renderText(m[2], key++, openLocalPath)}</strong>)
269
- else if (m[3] !== undefined) nodes.push(<code key={key++}>{m[3]}</code>)
270
- else if (m[4] !== undefined) nodes.push(<em key={key++}>{renderText(m[4], key++, openLocalPath)}</em>)
271
- else if (m[5] !== undefined) nodes.push(<em key={key++}>{renderText(m[5], key++, openLocalPath)}</em>)
272
- else if (m[6] !== undefined && m[7] !== undefined) {
273
- nodes.push(
274
- <MarkdownImage
275
- key={key++}
276
- alt={m[6]}
277
- target={m[7]}
278
- openLocalPath={openLocalPath}
279
- onLocalImagePreview={options.onLocalImagePreview}
280
- localPathBaseDir={options.localPathBaseDir}
281
- />,
282
- )
283
- } else if (m[8] !== undefined && m[9] !== undefined) {
284
- const localPath = localMarkdownLinkTarget(m[9], localLinkOptions(options))
285
- const href = localPath ? null : safeHref(m[9])
286
- const label = m[8]
287
- // Untrusted skill content: render as a link only when the protocol is
288
- // safe; otherwise downgrade to plain text so javascript:/data: etc. can't
289
- // be clicked in the Electron renderer.
290
- nodes.push(
291
- localPath && openLocalPath ? (
292
- <Button
293
- variant="unstyled"
294
- key={key++}
295
- type="button"
296
- className="md__local-path"
297
- title={localPath}
298
- onClick={() => openLocalPath(localPath, label)}
299
- >
300
- {renderLinkLabel(label, key++)}
301
- </Button>
302
- ) : href ? (
303
- <a key={key++} href={href} target="_blank" rel="noreferrer noopener">
304
- {renderLinkLabel(label, key++)}
305
- </a>
306
- ) : (
307
- <Fragment key={key++}>{renderLinkLabel(label, key++)}</Fragment>
308
- ),
309
- )
310
- } else if (m[10] !== undefined) {
311
- const { href, trailing } = splitTrailingUrlPunctuation(m[10])
312
- const safe = safeHref(href)
313
- nodes.push(
314
- safe ? (
315
- <a key={key++} href={safe} target="_blank" rel="noreferrer noopener">
316
- {href}
317
- </a>
318
- ) : (
319
- <Fragment key={key++}>{href}</Fragment>
320
- ),
321
- )
322
- if (trailing) nodes.push(...renderText(trailing, key++, openLocalPath))
323
- }
324
- last = m.index + m[0].length
325
- }
326
- if (last < text.length) nodes.push(...renderText(text.slice(last), key++, openLocalPath))
327
- return nodes
328
- }
329
-
330
- // Link labels carry their own emphasis markup (agents commonly emit
331
- // [**`file.txt`**](/abs/path)). Parse the safe inline subset here β€” no nested
332
- // links or images β€” so the markers do not leak into the visible label.
333
- function renderLinkLabel(label: string, keySeed: number): React.ReactNode[] {
334
- const nodes: React.ReactNode[] = []
335
- const re = /(\*\*([^*]+)\*\*|`([^`]+)`|\*([^*]+)\*|_([^_]+)_)/g
336
- let last = 0
337
- let key = keySeed
338
- let m: RegExpExecArray | null
339
- while ((m = re.exec(label)) !== null) {
340
- if (m.index > last) nodes.push(...renderEmojiText(label.slice(last, m.index), key++))
341
- if (m[2] !== undefined) nodes.push(<strong key={`lb-${key++}`}>{renderLinkLabel(m[2], key++)}</strong>)
342
- else if (m[3] !== undefined) nodes.push(<code key={`lb-${key++}`}>{m[3]}</code>)
343
- else if (m[4] !== undefined) nodes.push(<em key={`lb-${key++}`}>{renderLinkLabel(m[4], key++)}</em>)
344
- else if (m[5] !== undefined) nodes.push(<em key={`lb-${key++}`}>{renderLinkLabel(m[5], key++)}</em>)
345
- last = m.index + m[0].length
346
- }
347
- if (last < label.length) nodes.push(...renderEmojiText(label.slice(last), key++))
348
- return nodes
349
- }
350
-
351
- function MarkdownImage({
352
- alt,
353
- target,
354
- openLocalPath,
355
- onLocalImagePreview,
356
- localPathBaseDir,
357
- variant = "inline",
358
- }: {
359
- alt: string
360
- target: string
361
- openLocalPath?: LocalPathOpener
362
- onLocalImagePreview?: LocalImagePreviewResolver
363
- localPathBaseDir?: string
364
- variant?: "inline" | "gallery"
365
- }): React.ReactElement {
366
- const cleanTarget = target.trim()
367
- const [preview, setPreview] = useState<LocalMarkdownPreview | null>(null)
368
- const remoteHref = safeRemoteImageHref(cleanTarget)
369
- const shouldResolveLocal = !remoteHref && isLikelyLocalImageTarget(cleanTarget) && Boolean(onLocalImagePreview)
370
- const imageClassName = variant === "gallery" ? "md__image md__image--gallery" : "md__image"
371
- const buttonClassName = variant === "gallery" ? "md__image-button md__image-button--gallery" : "md__image-button"
372
-
373
- useEffect(() => {
374
- if (!shouldResolveLocal || !onLocalImagePreview) {
375
- setPreview(null)
376
- return
377
- }
378
- let canceled = false
379
- setPreview(null)
380
- onLocalImagePreview(cleanTarget)
381
- .then((result) => {
382
- if (!canceled) setPreview(result?.kind === "image" ? result : null)
383
- })
384
- .catch(() => {
385
- if (!canceled) setPreview(null)
386
- })
387
- return () => {
388
- canceled = true
389
- }
390
- }, [cleanTarget, onLocalImagePreview, shouldResolveLocal])
391
-
392
- if (remoteHref) {
393
- return <img className={imageClassName} src={remoteHref} alt={alt} />
394
- }
395
-
396
- if (preview) {
397
- return (
398
- <Button
399
- variant="unstyled"
400
- type="button"
401
- className={buttonClassName}
402
- title={alt || preview.name}
403
- data-md-image-target={cleanTarget}
404
- data-md-image-base-dir={localPathBaseDir || undefined}
405
- data-md-image-name={alt || preview.name}
406
- onClick={() => openLocalPath?.(cleanTarget, alt)}
407
- >
408
- <img className={imageClassName} src={preview.url} alt={alt || preview.name} />
409
- </Button>
410
- )
411
- }
412
-
413
- const label = alt || cleanTarget
414
- if (openLocalPath && isLikelyLocalImageTarget(cleanTarget)) {
415
- return (
416
- <Button
417
- variant="unstyled"
418
- type="button"
419
- className="md__image-fallback"
420
- title={cleanTarget}
421
- onClick={() => openLocalPath(cleanTarget, alt)}
422
- >
423
- {label}
424
- </Button>
425
- )
426
- }
427
- return <span className="md__image-fallback">{label}</span>
428
- }
429
-
430
- function ImageGallery({
431
- images,
432
- options,
433
- }: {
434
- images: MarkdownImageItem[]
435
- options: InlineRenderOptions
436
- }): React.ReactElement {
437
- const openLocalPath = resolveLocalPathOpener(options)
438
- return (
439
- <div
440
- className={`md__image-gallery md__image-gallery--${imageGallerySizeClass(images.length)}`}
441
- data-image-count={images.length}
442
- >
443
- {images.map((image, index) => (
444
- <MarkdownImage
445
- key={`${image.target}-${index}`}
446
- alt={image.alt}
447
- target={image.target}
448
- openLocalPath={openLocalPath}
449
- onLocalImagePreview={options.onLocalImagePreview}
450
- localPathBaseDir={options.localPathBaseDir}
451
- variant="gallery"
452
- />
453
- ))}
454
- </div>
455
- )
456
- }
457
-
458
- function imageGallerySizeClass(count: number): string {
459
- if (count <= 1) return "count-1"
460
- if (count === 2) return "count-2"
461
- if (count === 3) return "count-3"
462
- return "count-many"
463
- }
464
-
465
- function renderText(text: string, keySeed: number, openLocalPath?: LocalPathOpener): React.ReactNode[] {
466
- if (openLocalPath) return renderLocalPaths(text, keySeed, openLocalPath)
467
- return renderEmojiText(text, keySeed)
468
- }
469
-
470
- function renderLocalPaths(text: string, keySeed: number, openLocalPath: LocalPathOpener): React.ReactNode[] {
471
- const nodes: React.ReactNode[] = []
472
- let key = keySeed
473
- for (const segment of splitLocalPathSegments(text)) {
474
- if (segment.kind === "text") {
475
- nodes.push(...renderEmojiText(segment.text, key++))
476
- continue
477
- }
478
- nodes.push(
479
- <Button
480
- variant="unstyled"
481
- key={`path-${key++}`}
482
- type="button"
483
- className="md__local-path"
484
- title={segment.path}
485
- onClick={() => openLocalPath(segment.path)}
486
- >
487
- {segment.path}
488
- </Button>,
489
- )
490
- if (segment.trailing) nodes.push(...renderEmojiText(segment.trailing, key++))
491
- }
492
- return nodes
493
- }
494
-
495
- function collectLocalFileRefs(blocks: Block[], linkOptions: LocalLinkTargetOptions): AttachmentItem[] {
496
- const seen = new Set<string>()
497
- const refs: AttachmentItem[] = []
498
- const collect = (text: string) => collectMarkdownFileRefs(text, seen, refs, linkOptions)
499
- for (const block of blocks) {
500
- if (block.kind === "code" || block.kind === "imageGallery") continue
501
- if (block.kind === "heading" || block.kind === "para") collect(block.text)
502
- if (block.kind === "list") block.items.forEach(collect)
503
- if (block.kind === "quote") block.paragraphs.forEach(collect)
504
- if (block.kind === "table") {
505
- block.headers.forEach(collect)
506
- block.rows.forEach((row) => row.forEach(collect))
507
- }
508
- }
509
- return refs
510
- }
511
-
512
- function renderEmojiText(text: string, keySeed: number): React.ReactNode[] {
513
- const nodes: React.ReactNode[] = []
514
- const re = /:([a-zA-Z0-9_+-]+):/g
515
- let last = 0
516
- let key = keySeed
517
- let m: RegExpExecArray | null
518
- while ((m = re.exec(text)) !== null) {
519
- if (m.index > last) nodes.push(<Fragment key={`t-${key++}`}>{text.slice(last, m.index)}</Fragment>)
520
- const emoji = EMOJI_SHORTCODES[m[1] ?? ""]
521
- nodes.push(<Fragment key={`t-${key++}`}>{emoji ?? m[0]}</Fragment>)
522
- last = m.index + m[0].length
523
- }
524
- if (last < text.length) nodes.push(<Fragment key={`t-${key++}`}>{text.slice(last)}</Fragment>)
525
- return nodes
526
- }
527
-
528
- const EMOJI_SHORTCODES: Record<string, string> = {
529
- smile: "πŸ˜„",
530
- smiley: "πŸ˜ƒ",
531
- grinning: "πŸ˜€",
532
- joy: "πŸ˜‚",
533
- blush: "😊",
534
- wink: "πŸ˜‰",
535
- thinking: "πŸ€”",
536
- rocket: "πŸš€",
537
- tada: "πŸŽ‰",
538
- sparkles: "✨",
539
- fire: "πŸ”₯",
540
- warning: "⚠️",
541
- white_check_mark: "βœ…",
542
- check: "βœ…",
543
- x: "❌",
544
- cross_mark: "❌",
545
- memo: "πŸ“",
546
- bulb: "πŸ’‘",
547
- link: "πŸ”—",
548
- book: "πŸ“–",
549
- calendar: "πŸ“…",
550
- clock: "πŸ•’",
551
- robot: "πŸ€–",
552
- eyes: "πŸ‘€",
553
- point_right: "πŸ‘‰",
554
- point_left: "πŸ‘ˆ",
555
- thumbsup: "πŸ‘",
556
- thumbsdown: "πŸ‘Ž",
557
- }
558
-
559
- function splitTrailingUrlPunctuation(raw: string): { href: string; trailing: string } {
560
- const match = raw.match(/^(.*?)([.,!?;:οΌŒγ€‚οΌοΌŸοΌ›οΌšγ€]+)?$/)
561
- return {
562
- href: match?.[1] || raw,
563
- trailing: match?.[2] || "",
564
- }
565
- }
566
-
567
- function safeRemoteImageHref(raw: string): string | null {
568
- const href = safeHref(raw)
569
- if (!href) return null
570
- return /^https?:\/\//i.test(href) ? href : null
571
- }
572
-
573
- function isLikelyLocalImageTarget(raw: string): boolean {
574
- return /\.(png|jpe?g|gif|webp|bmp|svg|heic|heif|tiff?)(?:[?#].*)?$/i.test(raw.trim())
575
- }
576
-
577
- export type MarkdownProps = {
578
- source: string
579
- className?: string
580
- onLocalPathClick?: (path: string) => void
581
- onLocalFileCardOpen?: (item: AttachmentItem) => void
582
- onRequestLocalFileOpenWithOptions?: (item: AttachmentItem) => Promise<AttachmentMenuOption[]> | AttachmentMenuOption[]
583
- onLocalFileCardOpenWith?: (item: AttachmentItem, option: AttachmentMenuOption) => void
584
- onLocalFileCardOpenWithMenu?: (item: AttachmentItem) => void
585
- onLocalImagePreview?: LocalImagePreviewResolver
586
- localPathBaseDir?: string
587
- /** When set, shell code blocks show a run button that invokes this with the code. */
588
- onRunCommand?: (code: string) => void
589
- }
590
-
591
- export function Markdown({
592
- source,
593
- className,
594
- onLocalPathClick,
595
- onLocalFileCardOpen,
596
- onRequestLocalFileOpenWithOptions,
597
- onLocalFileCardOpenWith,
598
- onLocalFileCardOpenWithMenu,
599
- onLocalImagePreview,
600
- localPathBaseDir,
601
- onRunCommand,
602
- }: MarkdownProps): React.ReactElement {
603
- const blocks = useMemo(() => parseBlocks(source), [source])
604
- // Inline local paths share onLocalFileCardOpen with the cards below so both
605
- // resolve the same preview surface (browser sidebar, in-app viewer, or OS).
606
- const inlineOptions = {
607
- onLocalPathClick,
608
- onLocalFileOpen: onLocalFileCardOpen,
609
- onLocalImagePreview,
610
- localPathBaseDir,
611
- }
612
- const localFileRefs = useMemo(
613
- () => (onLocalPathClick ? collectLocalFileRefs(blocks, { allowRelative: Boolean(localPathBaseDir) }) : []),
614
- [blocks, localPathBaseDir, onLocalPathClick],
615
- )
616
- return (
617
- <div className={className ? `md ${className}` : "md"}>
618
- {blocks.map((block, idx) => {
619
- if (block.kind === "heading") {
620
- const Tag = `h${Math.min(block.level, 6)}` as "h1"
621
- return <Tag key={idx}>{renderInline(block.text, inlineOptions)}</Tag>
622
- }
623
- if (block.kind === "code") {
624
- const runnable = onRunCommand && isRunnableShellLanguage(block.language)
625
- return (
626
- <CodeBlock
627
- key={idx}
628
- language={block.language || "text"}
629
- onRun={runnable ? () => onRunCommand(block.text) : undefined}
630
- >
631
- {block.text}
632
- </CodeBlock>
633
- )
634
- }
635
- if (block.kind === "list") {
636
- const items = block.items.map((it, j) => <li key={j}>{renderInline(it, inlineOptions)}</li>)
637
- return block.ordered ? <ol key={idx}>{items}</ol> : <ul key={idx}>{items}</ul>
638
- }
639
- if (block.kind === "table") {
640
- return (
641
- <div key={idx} className="md__table-wrap">
642
- <table>
643
- <thead>
644
- <tr>
645
- {block.headers.map((cell, j) => (
646
- <th key={j} className={`al-${block.aligns[j] ?? "left"}`}>
647
- {renderInline(cell, inlineOptions)}
648
- </th>
649
- ))}
650
- </tr>
651
- </thead>
652
- <tbody>
653
- {block.rows.map((row, rowIndex) => (
654
- <tr key={rowIndex}>
655
- {row.map((cell, cellIndex) => (
656
- <td key={cellIndex} className={`al-${block.aligns[cellIndex] ?? "left"}`}>
657
- {renderInline(cell, inlineOptions)}
658
- </td>
659
- ))}
660
- </tr>
661
- ))}
662
- </tbody>
663
- </table>
664
- </div>
665
- )
666
- }
667
- if (block.kind === "quote") {
668
- return (
669
- <blockquote key={idx}>
670
- {block.paragraphs.map((text, j) => (
671
- <p key={j}>{renderInline(text, inlineOptions)}</p>
672
- ))}
673
- </blockquote>
674
- )
675
- }
676
- if (block.kind === "imageGallery")
677
- return <ImageGallery key={idx} images={block.images} options={inlineOptions} />
678
- return <p key={idx}>{renderInline(block.text, inlineOptions)}</p>
679
- })}
680
- {onLocalPathClick && localFileRefs.length > 0 && (
681
- <AttachmentList layout="stack" className="md-file-cards" aria-label="ζœ¬εœ°ζ–‡δ»ΆεΌ•η”¨">
682
- {localFileRefs.map((item) => (
683
- <Attachment
684
- key={item.id ?? item.path}
685
- variant="card"
686
- name={item.name}
687
- path={item.path}
688
- // ε‘ζœ¬θΊ«ε°±ζ˜―ζ‰“εΌ€ε…₯ε£οΌŒζŽ¨ζ–­ε‡Ίηš„η±»εž‹ζ–‡ζ‘ˆεͺδΌšι‡ε€ζ‰©ε±•εοΌ›δΈšεŠ‘δΌ ηš„ typeLabel 留着。
689
- meta={item.typeLabel ?? ""}
690
- onOpen={() => (onLocalFileCardOpen ?? ((ref: AttachmentItem) => onLocalPathClick(ref.path)))(item)}
691
- onNativeActionsMenu={onLocalFileCardOpenWithMenu ? () => onLocalFileCardOpenWithMenu(item) : undefined}
692
- onRequestActions={
693
- onRequestLocalFileOpenWithOptions ? () => onRequestLocalFileOpenWithOptions(item) : undefined
694
- }
695
- onAction={onLocalFileCardOpenWith ? (option) => onLocalFileCardOpenWith(item, option) : undefined}
696
- />
697
- ))}
698
- </AttachmentList>
699
- )}
700
- </div>
701
- )
702
- }