@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,605 +0,0 @@
1
- /**
2
- * Orbitwork skin protocol — aligned with Design project architecture.
3
- * A skin is a validated JSON document that overrides --ow-* CSS variables
4
- * at runtime. This module is framework-agnostic.
5
- */
6
-
7
- export type Theme = "light" | "dark" | "system"
8
- export type ResolvedTheme = "light" | "dark"
9
-
10
- /**
11
- * DS2 皮肤白名单(COMPONENT-RULES §15 · 2026-08-31 裁决):
12
- * - 可覆盖:中性表面/边框/文字梯度、chat/composer/sidebar 背景类、
13
- * btn-primary 族(唯一开放的租户品牌色位)。
14
- * - 已移除(禁覆盖):primary 族(--ow-primary 暗档=荧黄行动极)、link、
15
- * switchActive(--ow-control-on 无彩选中)、功能色四族、cardRadius/buttonRadius
16
- * (圆角是品牌定稿)。
17
- */
18
- export type OrbitworkSkinTokens = {
19
- backgroundPrimary?: string
20
- backgroundSecondary?: string
21
- backgroundTertiary?: string
22
- backgroundPanel?: string
23
- foregroundPrimary?: string
24
- foregroundSecondary?: string
25
- foregroundMuted?: string
26
- foregroundHint?: string
27
- borderSubtle?: string
28
- borderDefault?: string
29
- borderStrong?: string
30
- buttonPrimaryBackground?: string
31
- buttonPrimaryForeground?: string
32
- chatBackground?: string
33
- chatBackgroundImage?: string
34
- chatBackgroundOverlay?: string
35
- chatBackgroundMaskColor?: string
36
- chatBackgroundPosition?:
37
- | "center"
38
- | "top"
39
- | "bottom"
40
- | "left"
41
- | "right"
42
- | "top left"
43
- | "top right"
44
- | "bottom left"
45
- | "bottom right"
46
- chatBackgroundSize?: "cover" | "contain" | "auto"
47
- userBubbleBackground?: string
48
- userBubbleForeground?: string
49
- userBubbleBorder?: string
50
- composerBackground?: string
51
- composerBorder?: string
52
- sidebarBackground?: string
53
- sidebarSelectedBackground?: string
54
- }
55
-
56
- /** L2/L3 逃生通道登记项:每条高级样式须登记目标与用途(§15,长期目标清零)。 */
57
- export type OrbitworkSkinRegistryEntry = {
58
- target: string
59
- reason: string
60
- }
61
-
62
- export type OrbitworkSkin = {
63
- version: 1
64
- id: string
65
- name: string
66
- description?: string
67
- /**
68
- * @deprecated DS2 §15:圆角是品牌定稿,皮肤不再开放 cardRadius/buttonRadius。
69
- * 字段仅为旧代码类型兼容保留(空对象),解析路径一律拒绝 common。
70
- */
71
- common?: Record<string, never>
72
- modes: {
73
- light?: OrbitworkSkinTokens
74
- dark?: OrbitworkSkinTokens
75
- }
76
- contributes?: {
77
- /** L2: 语义选择器样式(精准定制组件部件) */
78
- semanticStyles?: string
79
- /** L3: 自由补丁(高级用户,需谨慎使用) */
80
- patches?: string
81
- /** L2/L3 登记表:存在 semanticStyles/patches 时必须逐条登记(validate-skin 强制) */
82
- registry?: OrbitworkSkinRegistryEntry[]
83
- }
84
- }
85
-
86
- export type SkinValidationResult = { ok: true; skin: OrbitworkSkin } | { ok: false; error: string }
87
-
88
- const COLOR_KEYS = [
89
- "backgroundPrimary",
90
- "backgroundSecondary",
91
- "backgroundTertiary",
92
- "backgroundPanel",
93
- "foregroundPrimary",
94
- "foregroundSecondary",
95
- "foregroundMuted",
96
- "foregroundHint",
97
- "borderSubtle",
98
- "borderDefault",
99
- "borderStrong",
100
- "buttonPrimaryBackground",
101
- "buttonPrimaryForeground",
102
- "chatBackground",
103
- "chatBackgroundOverlay",
104
- "userBubbleBackground",
105
- "userBubbleForeground",
106
- "userBubbleBorder",
107
- "composerBackground",
108
- "composerBorder",
109
- "sidebarBackground",
110
- "sidebarSelectedBackground",
111
- ] as const
112
- const IMAGE_KEYS = ["chatBackgroundImage"] as const
113
- const MASK_COLOR_KEYS = ["chatBackgroundMaskColor"] as const
114
- const POSITION_KEYS = ["chatBackgroundPosition"] as const
115
- const SIZE_KEYS = ["chatBackgroundSize"] as const
116
- const TOKEN_KEYS = [...COLOR_KEYS, ...MASK_COLOR_KEYS, ...IMAGE_KEYS, ...POSITION_KEYS, ...SIZE_KEYS] as const
117
- const ROOT_KEYS = new Set(["version", "id", "name", "description", "modes", "contributes"])
118
- const MODE_KEYS = new Set(["light", "dark"])
119
- const TOKEN_KEY_SET = new Set<string>(TOKEN_KEYS)
120
- const CONTRIBUTES_KEYS = new Set(["semanticStyles", "patches", "registry"])
121
- const REGISTRY_ENTRY_KEYS = new Set(["target", "reason"])
122
- export const HEX_COLOR = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i
123
- const MASK_HEX_COLOR = /^#[0-9a-f]{6}(?:[0-9a-f]{2})?$/i
124
- const DATA_IMAGE = /^data:image\/(png|jpeg|webp);base64,([A-Za-z0-9+/]+={0,2})$/
125
- const BACKGROUND_POSITIONS = new Set([
126
- "center",
127
- "top",
128
- "bottom",
129
- "left",
130
- "right",
131
- "top left",
132
- "top right",
133
- "bottom left",
134
- "bottom right",
135
- ])
136
- const BACKGROUND_SIZES = new Set(["cover", "contain", "auto"])
137
- export const MAX_ORBITWORK_SKIN_IMAGE_BYTES = 5 * 1024 * 1024
138
- const INLINE_SKIN_IMAGE_MAX_BYTES = 128 * 1024
139
- const CHAT_BACKGROUND_MASK_DERIVED_PROPERTIES = [
140
- "--ow-chat-bg-mask-start-opacity",
141
- "--ow-chat-bg-mask-end-opacity",
142
- ] as const
143
-
144
- export type OrbitworkSkinChatBackgroundMask = {
145
- color: string
146
- strength: number
147
- startOpacity: number
148
- endOpacity: number
149
- }
150
-
151
- /** Six-digit colors retain the original 80% → 50% mask; explicit alpha controls final strength. */
152
- export function resolveOrbitworkSkinChatBackgroundMask(value: string): OrbitworkSkinChatBackgroundMask {
153
- const normalized = MASK_HEX_COLOR.test(value) ? value.toLowerCase() : "#000000"
154
- const strength = normalized.length === 9 ? Math.round((Number.parseInt(normalized.slice(7), 16) / 255) * 100) : 80
155
- const startOpacity = strength
156
- const endOpacity = strength <= 80 ? strength * 0.625 : 50 + (strength - 80) * 2.5
157
- return { color: normalized.slice(0, 7), strength, startOpacity, endOpacity }
158
- }
159
-
160
- export function orbitworkSkinChatBackgroundMaskColor(color: string, strength: number): string {
161
- const normalizedColor = /^#[0-9a-f]{6}$/i.test(color) ? color.toLowerCase() : "#000000"
162
- const alpha = Math.round((Math.min(100, Math.max(0, strength)) / 100) * 255)
163
- return `${normalizedColor}${alpha.toString(16).padStart(2, "0")}`
164
- }
165
-
166
- export const ORBITWORK_SKIN_CSS_VARIABLES: Readonly<Record<keyof OrbitworkSkinTokens, string>> = {
167
- backgroundPrimary: "--ow-bg",
168
- backgroundSecondary: "--ow-surface",
169
- backgroundTertiary: "--ow-surface-2",
170
- backgroundPanel: "--ow-bg",
171
- foregroundPrimary: "--ow-text",
172
- foregroundSecondary: "--ow-text-2",
173
- foregroundMuted: "--ow-text-3",
174
- // 2.0 文字梯度只有三档,hint 与 muted 同落 text-3
175
- foregroundHint: "--ow-text-3",
176
- borderSubtle: "--ow-border",
177
- // 2.0 边框只有两档,subtle 与 default 同落 border
178
- borderDefault: "--ow-border",
179
- borderStrong: "--ow-border-strong",
180
- buttonPrimaryBackground: "--ow-btn-primary-bg",
181
- buttonPrimaryForeground: "--ow-btn-primary-fg",
182
- chatBackground: "--ow-chat-bg",
183
- chatBackgroundImage: "--ow-chat-bg-image",
184
- chatBackgroundOverlay: "--ow-chat-bg-overlay",
185
- chatBackgroundMaskColor: "--ow-chat-bg-mask-color",
186
- chatBackgroundPosition: "--ow-chat-bg-position",
187
- chatBackgroundSize: "--ow-chat-bg-size",
188
- // 三件用户气泡钩子由 domain/chat/UserTurn 消费;未覆盖时兜底 DS2 井色配方
189
- // (bg=--ow-bubble-user / fg=--ow-text / border=--ow-border),不再兜底透明。
190
- userBubbleBackground: "--ow-chat-user-bubble-bg",
191
- userBubbleForeground: "--ow-chat-user-bubble-fg",
192
- userBubbleBorder: "--ow-chat-user-bubble-border",
193
- composerBackground: "--ow-composer-bg",
194
- composerBorder: "--ow-composer-border",
195
- sidebarBackground: "--ow-sidebar-bg",
196
- sidebarSelectedBackground: "--ow-sidebar-selected-bg",
197
- }
198
-
199
- /**
200
- * DS2 皮肤禁覆盖清单(COMPONENT-RULES §15 · 2026-08-31 裁决)。
201
- * 条目以 `*` 结尾表示前缀匹配;其余为精确名(含其 `-` 后缀派生,如
202
- * `--ow-control-on` 同时覆盖 `--ow-control-on-glyph`)。
203
- *
204
- * ⚠️ 同步义务:.claude/skills/ui-theme-skin/scripts/check-skin-ds2.mjs 持有
205
- * 本清单的副本,两处必须同步修改。
206
- */
207
- export const DS2_SKIN_DENYLIST = [
208
- // 三极 token
209
- "--ow-beacon",
210
- "--ow-beacon-idle",
211
- "--ow-accent-dot",
212
- "--ow-data-today",
213
- // 行动极族(租户品牌色只经 btn-primary 族开放,--ow-primary 落点不可写)
214
- "--ow-primary*",
215
- // 无彩选中原则
216
- "--ow-control-on",
217
- // focus-ring
218
- "--ow-focus-ring",
219
- // 功能色四族全档
220
- "--ow-info*",
221
- "--ow-success*",
222
- "--ow-warning*",
223
- "--ow-error*",
224
- // 功能色别名:--ow-mention-bg/-text 直挂 --ow-info-tint/-on-tint,
225
- // 不封别名等于给 L2/L3 皮肤留了一道绕开功能色禁覆盖的后门。
226
- "--ow-mention*",
227
- // 恒定域
228
- "--ow-paper",
229
- "--ow-stage-*",
230
- "--ow-term-*",
231
- "--ow-ansi-*",
232
- // 圆角(形状表是品牌定稿)
233
- "--ow-radius-*",
234
- ] as const
235
-
236
- /**
237
- * DS2 皮肤禁覆盖 **CSS 属性** 清单(COMPONENT-RULES §5/§7/§9 · W5 终扫补闸)。
238
- *
239
- * 背景:`DS2_SKIN_DENYLIST` 是 token 名维度的闸,只认 `--ow-*`。L2/L3 的
240
- * semanticStyles / patches 里裸写的 `box-shadow: 0 0 20px …`、`border-radius: 18px`、
241
- * `transform: translateY(-2px)`、`animation: neon-pulse 2s infinite` 完全绕开它——
242
- * 而这四类恰恰是 2.0 明令收口的三层:贴地零影(§5)、形状表定稿(§7)、
243
- * 唯一动效语汇=信标(§9)。故对属性维度另立一闸:命中即整块剥除。
244
- *
245
- * 条目为属性名前缀(连字符边界):`border-radius` 同时覆盖
246
- * `border-top-left-radius` 等长写;`transition` 覆盖 `transition-property` 等。
247
- *
248
- * ⚠️ 同步义务:.claude/skills/ui-theme-skin/scripts/check-skin-ds2.mjs 持有本清单副本。
249
- */
250
- export const DS2_SKIN_DENIED_PROPERTIES = [
251
- "border-radius",
252
- "border-top-left-radius",
253
- "border-top-right-radius",
254
- "border-bottom-left-radius",
255
- "border-bottom-right-radius",
256
- "box-shadow",
257
- "transform",
258
- "animation",
259
- "transition",
260
- "backdrop-filter",
261
- "-webkit-backdrop-filter",
262
- ] as const
263
-
264
- /**
265
- * 判断某个 CSS 属性名是否命中属性维度禁覆盖清单。
266
- * 只按连字符边界做前缀匹配,避免 `animation` 误伤自定义属性 `--animation-x`
267
- * (自定义属性由 token 维度那一闸单独管)。
268
- */
269
- export function isDs2SkinDeniedProperty(propertyName: string): boolean {
270
- const name = propertyName.trim().toLowerCase()
271
- if (name.startsWith("--")) return false
272
- return DS2_SKIN_DENIED_PROPERTIES.some((entry) => name === entry || name.startsWith(`${entry}-`))
273
- }
274
-
275
- /**
276
- * 在一段 CSS 文本里找出第一处命中属性维度禁覆盖清单的声明。
277
- * 只在「声明位置」匹配(块首/`;`/`{` 之后的标识符 + `:`),选择器与值里的同名词不算。
278
- */
279
- export function findDs2DeniedCssProperty(css: string): string | null {
280
- const declaration = /(?:^|[{;])\s*(-{0,2}[a-z][a-z0-9-]*)\s*:/gi
281
- let match: RegExpExecArray | null = declaration.exec(css)
282
- while (match) {
283
- const property = match[1] ?? ""
284
- if (isDs2SkinDeniedProperty(property)) return property.toLowerCase()
285
- match = declaration.exec(css)
286
- }
287
- return null
288
- }
289
-
290
- /**
291
- * 值维度禁覆盖(DS2 判据 7「品牌外渐变一律清除」)。
292
- *
293
- * ⚠️ 同步义务:与 .claude|.agents/skills/ui-theme-skin/scripts/check-skin-ds2.mjs 的
294
- * DENIED_VALUE_PATTERNS 为同一清单的副本(见 SkinDenylistSyncSource.test.mjs)。
295
- *
296
- * 为什么不是往 DS2_SKIN_DENIED_PROPERTIES 里加 `background`:皮肤本来就该能改底色,
297
- * 按属性名封会把整类合法覆盖一起封掉。要拦的是**值的形态**——任何 *-gradient()。
298
- * R2 之前这一层完全没有:glass.ts 的 `body { background: linear-gradient(135deg,
299
- * rgba(59,130,246,.1), rgba(139,92,246,.1)) }`(V1 蓝紫)是整份皮肤里唯二穿过闸口的
300
- * 块之一;cyberpunk.ts 的 `userBubbleBackground: "linear-gradient(135deg,#E91E63,#9C27B0)"`
301
- * 更是走 mode token 直接落到用户气泡上——两条路都得拦。
302
- */
303
- export const DS2_SKIN_DENIED_VALUE_PATTERNS = ["-gradient("] as const
304
-
305
- /** 判断某个 CSS 值是否命中值维度禁覆盖(渐变)。 */
306
- export function isDs2SkinDeniedValue(value: string): boolean {
307
- const v = value.toLowerCase()
308
- return DS2_SKIN_DENIED_VALUE_PATTERNS.some((entry) => v.includes(entry))
309
- }
310
-
311
- /**
312
- * 在一段 CSS 文本里找出第一处命中值维度禁覆盖的声明值。
313
- * 只看声明的**值**侧,选择器与注释里的同名词不算(调用方已剥注释)。
314
- */
315
- export function findDs2DeniedCssValue(css: string): string | null {
316
- const declaration = /(?:^|[{;])\s*-{0,2}[a-z][a-z0-9-]*\s*:([^;{}]*)/gi
317
- let match: RegExpExecArray | null = declaration.exec(css)
318
- while (match) {
319
- const value = match[1] ?? ""
320
- if (isDs2SkinDeniedValue(value)) {
321
- const hit = /[a-z-]*-gradient\(/i.exec(value)
322
- return hit ? hit[0].slice(0, -1) : "gradient"
323
- }
324
- match = declaration.exec(css)
325
- }
326
- return null
327
- }
328
-
329
- /** 锁定件 data-slot 选择器初始清单:L2/L3 内容命中即剥除(字符串匹配)。 */
330
- export const DS2_LOCKED_SLOT_SELECTORS = ["beacon-spinner", "orbitwork-mark", "orbitwork-lockup"] as const
331
-
332
- /** 判断某个 CSS 自定义属性名是否命中 DS2 禁覆盖清单。 */
333
- export function isDs2SkinDeniedToken(tokenName: string): boolean {
334
- const name = tokenName.trim()
335
- return DS2_SKIN_DENYLIST.some((entry) =>
336
- entry.endsWith("*") ? name.startsWith(entry.slice(0, -1)) : name === entry || name.startsWith(`${entry}-`),
337
- )
338
- }
339
-
340
- /** WCAG 2.x 相对亮度 → 对比度实算(输入为 3/4/6/8 位 hex;alpha 忽略,按不透明计算)。 */
341
- export function ds2ContrastRatio(hexA: string, hexB: string): number {
342
- const la = relativeLuminance(hexA)
343
- const lb = relativeLuminance(hexB)
344
- const lighter = Math.max(la, lb)
345
- const darker = Math.min(la, lb)
346
- return (lighter + 0.05) / (darker + 0.05)
347
- }
348
-
349
- function relativeLuminance(hex: string): number {
350
- const [r, g, b] = hexToRgb(hex)
351
- const toLinear = (channel: number) => {
352
- const c = channel / 255
353
- return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4
354
- }
355
- return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b)
356
- }
357
-
358
- function hexToRgb(hex: string): [number, number, number] {
359
- let value = hex.replace(/^#/, "")
360
- if (value.length === 3 || value.length === 4) {
361
- value = value
362
- .slice(0, 3)
363
- .split("")
364
- .map((c) => c + c)
365
- .join("")
366
- }
367
- return [
368
- Number.parseInt(value.slice(0, 2), 16),
369
- Number.parseInt(value.slice(2, 4), 16),
370
- Number.parseInt(value.slice(4, 6), 16),
371
- ]
372
- }
373
-
374
- /** 中性梯度整组闸:命中任一触发键即要求整组提交并过对比度实算。 */
375
- const NEUTRAL_TRIGGER_KEYS = [
376
- "backgroundPrimary",
377
- "backgroundSecondary",
378
- "backgroundTertiary",
379
- "backgroundPanel",
380
- "foregroundPrimary",
381
- "foregroundSecondary",
382
- "foregroundMuted",
383
- "foregroundHint",
384
- ] as const
385
- const NEUTRAL_REQUIRED_KEYS = [
386
- "backgroundPrimary",
387
- "backgroundSecondary",
388
- "backgroundTertiary",
389
- "foregroundPrimary",
390
- "foregroundSecondary",
391
- ] as const
392
- const NEUTRAL_CONTRAST_PAIRS: ReadonlyArray<readonly [keyof OrbitworkSkinTokens, keyof OrbitworkSkinTokens]> = [
393
- ["foregroundPrimary", "backgroundPrimary"],
394
- ["foregroundPrimary", "backgroundSecondary"],
395
- ["foregroundPrimary", "backgroundTertiary"],
396
- ["foregroundSecondary", "backgroundPrimary"],
397
- ["foregroundSecondary", "backgroundSecondary"],
398
- ]
399
- const MIN_NEUTRAL_CONTRAST = 4.5
400
-
401
- /** 闸 (a):覆盖项落点命中禁覆盖清单即拒绝(白名单收敛后属兜底防线)。 */
402
- function assertTokensNotDenied(tokens: OrbitworkSkinTokens, path: string): void {
403
- for (const [key, value] of Object.entries(tokens)) {
404
- const cssVar = ORBITWORK_SKIN_CSS_VARIABLES[key as keyof OrbitworkSkinTokens]
405
- if (cssVar && isDs2SkinDeniedToken(cssVar)) {
406
- throw new Error(`${path}.${key} 的落点 ${cssVar} 命中 DS2 禁覆盖清单,拒绝该皮肤`)
407
- }
408
- // 值维度:token 值本身是渐变时,属性闸与 token 闸都拦不住(落点名合法、属性名合法),
409
- // 直接落到气泡/侧栏底上——判据 7「品牌外渐变一律清除」在这里收口。
410
- // chatBackgroundImage 例外:它本来就是一张图/图案的落点,由 orbitwork-skin-image 单独校验。
411
- if (key !== "chatBackgroundImage" && typeof value === "string" && isDs2SkinDeniedValue(value)) {
412
- throw new Error(`${path}.${key} 的值是渐变(${value}),DS2 判据 7 品牌外渐变一律清除,拒绝该皮肤`)
413
- }
414
- }
415
- }
416
-
417
- /** 闸 (b):中性梯度整组提交 + WCAG 对比度实算(text-on-bg / text-on-surface ≥ 4.5:1)。 */
418
- function assertNeutralGroupContrast(tokens: OrbitworkSkinTokens, path: string): void {
419
- const touched = NEUTRAL_TRIGGER_KEYS.some((key) => tokens[key] !== undefined)
420
- if (!touched) return
421
- const missing = NEUTRAL_REQUIRED_KEYS.filter((key) => tokens[key] === undefined)
422
- if (missing.length > 0) {
423
- throw new Error(`${path} 中性梯度须整组提交(text 系与 bg/surface 系同批),缺少:${missing.join("、")}`)
424
- }
425
- for (const [textKey, bgKey] of NEUTRAL_CONTRAST_PAIRS) {
426
- const text = tokens[textKey]
427
- const bg = tokens[bgKey]
428
- if (!text || !bg) continue
429
- const ratio = ds2ContrastRatio(text, bg)
430
- if (ratio < MIN_NEUTRAL_CONTRAST) {
431
- throw new Error(
432
- `${path} 对比度不达标:${textKey}(${text}) 在 ${bgKey}(${bg}) 上为 ${ratio.toFixed(2)}:1,要求 ≥ ${MIN_NEUTRAL_CONTRAST}:1`,
433
- )
434
- }
435
- }
436
- }
437
-
438
- export function hasOrbitworkSkinChatBackground(skin: OrbitworkSkin | null | undefined, mode: ResolvedTheme): boolean {
439
- return Boolean(skin?.modes?.[mode]?.chatBackgroundImage)
440
- }
441
-
442
- export function parseOrbitworkSkin(input: unknown): SkinValidationResult {
443
- try {
444
- if (!isRecord(input)) throw new Error("主题必须是 JSON 对象")
445
- if ("common" in input)
446
- throw new Error("common(cardRadius/buttonRadius)已随 DS2 皮肤边界取消:圆角是品牌定稿,不开放自由值")
447
- assertKnownKeys(input, ROOT_KEYS, "主题")
448
- if (input.version !== 1) throw new Error("仅支持 version: 1")
449
- if (typeof input.id !== "string" || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(input.id) || input.id.length > 64)
450
- throw new Error("id 必须是最多 64 字符的小写短横线标识")
451
- if (typeof input.name !== "string" || !input.name.trim() || input.name.length > 48)
452
- throw new Error("name 必须是 1–48 个字符")
453
- if (input.description !== undefined && (typeof input.description !== "string" || input.description.length > 160))
454
- throw new Error("description 最多 160 个字符")
455
- if (!isRecord(input.modes)) throw new Error("modes 必须是对象")
456
- assertKnownKeys(input.modes, MODE_KEYS, "modes")
457
- const light =
458
- input.modes.light === undefined ? undefined : parseTokens(input.modes.light, TOKEN_KEY_SET, "modes.light")
459
- const dark = input.modes.dark === undefined ? undefined : parseTokens(input.modes.dark, TOKEN_KEY_SET, "modes.dark")
460
- if (!light && !dark) throw new Error("modes 至少需要 light 或 dark")
461
-
462
- // DS2 两道闸:禁覆盖清单拦截 + 中性梯度整组对比度实算
463
- if (light) {
464
- assertTokensNotDenied(light, "modes.light")
465
- assertNeutralGroupContrast(light, "modes.light")
466
- }
467
- if (dark) {
468
- assertTokensNotDenied(dark, "modes.dark")
469
- assertNeutralGroupContrast(dark, "modes.dark")
470
- }
471
-
472
- // Parse contributes (L2/L3)
473
- let contributes: OrbitworkSkin["contributes"] | undefined
474
- if (input.contributes !== undefined) {
475
- if (!isRecord(input.contributes)) throw new Error("contributes 必须是对象")
476
- assertKnownKeys(input.contributes, CONTRIBUTES_KEYS, "contributes")
477
- const semanticStyles = input.contributes.semanticStyles
478
- const patches = input.contributes.patches
479
- if (semanticStyles !== undefined && typeof semanticStyles !== "string")
480
- throw new Error("contributes.semanticStyles 必须是字符串")
481
- if (patches !== undefined && typeof patches !== "string") throw new Error("contributes.patches 必须是字符串")
482
- const registry = parseRegistry(input.contributes.registry)
483
- if (semanticStyles || patches || registry) {
484
- contributes = {
485
- ...(semanticStyles ? { semanticStyles } : {}),
486
- ...(patches ? { patches } : {}),
487
- ...(registry ? { registry } : {}),
488
- }
489
- }
490
- }
491
-
492
- return {
493
- ok: true,
494
- skin: {
495
- version: 1,
496
- id: input.id,
497
- name: input.name.trim(),
498
- ...(input.description ? { description: input.description.trim() } : {}),
499
- modes: { ...(light ? { light } : {}), ...(dark ? { dark } : {}) },
500
- ...(contributes ? { contributes } : {}),
501
- },
502
- }
503
- } catch (error) {
504
- return { ok: false, error: error instanceof Error ? error.message : "主题格式无效" }
505
- }
506
- }
507
-
508
- function parseTokens(input: unknown, allowed: Set<string>, path: string): OrbitworkSkinTokens {
509
- if (!isRecord(input)) throw new Error(`${path} 必须是对象`)
510
- assertKnownKeys(input, allowed, path)
511
- const result: OrbitworkSkinTokens = {}
512
- for (const [key, value] of Object.entries(input)) {
513
- if (typeof value !== "string") throw new Error(`${path}.${key} 必须是字符串`)
514
- if (COLOR_KEYS.includes(key as (typeof COLOR_KEYS)[number])) {
515
- if (!HEX_COLOR.test(value)) throw new Error(`${path}.${key} 必须是十六进制颜色`)
516
- ;(result as Record<string, string>)[key] = value.toLowerCase()
517
- } else if (MASK_COLOR_KEYS.includes(key as (typeof MASK_COLOR_KEYS)[number])) {
518
- if (!MASK_HEX_COLOR.test(value)) throw new Error(`${path}.${key} 必须是六位或八位十六进制颜色`)
519
- ;(result as Record<string, string>)[key] = value.toLowerCase()
520
- } else if (IMAGE_KEYS.includes(key as (typeof IMAGE_KEYS)[number])) {
521
- assertSafeDataImage(value, `${path}.${key}`)
522
- ;(result as Record<string, string>)[key] = value
523
- } else if (POSITION_KEYS.includes(key as (typeof POSITION_KEYS)[number])) {
524
- const normalized = value.toLowerCase()
525
- if (!BACKGROUND_POSITIONS.has(normalized)) throw new Error(`${path}.${key} 不是支持的背景位置`)
526
- ;(result as Record<string, string>)[key] = normalized
527
- } else if (SIZE_KEYS.includes(key as (typeof SIZE_KEYS)[number])) {
528
- const normalized = value.toLowerCase()
529
- if (!BACKGROUND_SIZES.has(normalized)) throw new Error(`${path}.${key} 不是支持的背景尺寸`)
530
- ;(result as Record<string, string>)[key] = normalized
531
- } else {
532
- throw new Error(`${path} 包含不支持的字段:${key}`)
533
- }
534
- }
535
- return result
536
- }
537
-
538
- function parseRegistry(input: unknown): OrbitworkSkinRegistryEntry[] | undefined {
539
- if (input === undefined) return undefined
540
- if (!Array.isArray(input)) throw new Error("contributes.registry 必须是数组")
541
- if (input.length === 0) return undefined
542
- return input.map((entry, index) => {
543
- if (!isRecord(entry)) throw new Error(`contributes.registry[${index}] 必须是 { target, reason } 对象`)
544
- assertKnownKeys(entry, REGISTRY_ENTRY_KEYS, `contributes.registry[${index}]`)
545
- const { target, reason } = entry
546
- if (typeof target !== "string" || !target.trim() || target.length > 200)
547
- throw new Error(`contributes.registry[${index}].target 必须是 1–200 字符的字符串`)
548
- if (typeof reason !== "string" || !reason.trim() || reason.length > 200)
549
- throw new Error(`contributes.registry[${index}].reason 必须是 1–200 字符的字符串`)
550
- return { target: target.trim(), reason: reason.trim() }
551
- })
552
- }
553
-
554
- function assertSafeDataImage(value: string, path: string): void {
555
- const match = DATA_IMAGE.exec(value)
556
- if (!match) throw new Error(`${path} 必须是 PNG、JPEG 或 WebP 的 base64 data URL`)
557
- const format = match[1]
558
- const payload = match[2]
559
- if (!format || !payload) throw new Error(`${path} 包含无效的图片数据`)
560
- if (payload.length % 4 !== 0) throw new Error(`${path} 包含无效的 base64 数据`)
561
- const padding = payload.endsWith("==") ? 2 : payload.endsWith("=") ? 1 : 0
562
- const decodedBytes = (payload.length / 4) * 3 - padding
563
- if (decodedBytes > MAX_ORBITWORK_SKIN_IMAGE_BYTES) throw new Error(`${path} 解码后不能超过 5 MiB`)
564
- let bytes: number[]
565
- try {
566
- const decoded = globalThis.atob(payload)
567
- bytes = Array.from(decoded.slice(0, 12), (char) => char.charCodeAt(0))
568
- } catch {
569
- throw new Error(`${path} 包含无效的 base64 数据`)
570
- }
571
- const validMagic =
572
- format === "png"
573
- ? [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every((byte, index) => bytes[index] === byte)
574
- : format === "jpeg"
575
- ? bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff
576
- : bytes[0] === 0x52 &&
577
- bytes[1] === 0x49 &&
578
- bytes[2] === 0x46 &&
579
- bytes[3] === 0x46 &&
580
- bytes[8] === 0x57 &&
581
- bytes[9] === 0x45 &&
582
- bytes[10] === 0x42 &&
583
- bytes[11] === 0x50
584
- if (!validMagic) throw new Error(`${path} 的内容与图片格式不匹配`)
585
- }
586
-
587
- /** Convert a validated embedded image into a CSS value without accepting arbitrary CSS or URLs. */
588
- export function orbitworkSkinImageCssValue(value: string | undefined): string | undefined {
589
- if (!value) return undefined
590
- try {
591
- assertSafeDataImage(value, "chatBackgroundImage")
592
- return `url("${value}")`
593
- } catch {
594
- return undefined
595
- }
596
- }
597
-
598
- export function assertKnownKeys(value: Record<string, unknown>, allowed: Set<string>, path: string) {
599
- const unknown = Object.keys(value).find((key) => !allowed.has(key))
600
- if (unknown) throw new Error(`${path} 包含不支持的字段:${unknown}`)
601
- }
602
-
603
- export function isRecord(value: unknown): value is Record<string, unknown> {
604
- return value !== null && typeof value === "object" && !Array.isArray(value)
605
- }