@orbit-work/ui 0.1.2-preview.0 → 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 (795) 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 +3769 -3032
  41. package/dist/index.d.ts +3769 -3032
  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 -22209
  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 -1367
  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 -167
  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/DesktopLibraryAuthorizationDialogSource.test.mjs +0 -22
  492. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/index.tsx +0 -171
  493. package/src/components/domain/desktop/DesktopLibraryPageView/DesktopLibraryPageView.stories.tsx +0 -49
  494. package/src/components/domain/desktop/DesktopLibraryPageView/index.tsx +0 -49
  495. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.css +0 -75
  496. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.stories.tsx +0 -230
  497. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginViewSource.test.mjs +0 -156
  498. package/src/components/domain/desktop/DesktopLoginView/index.tsx +0 -432
  499. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourView.stories.tsx +0 -103
  500. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourViewSource.test.mjs +0 -57
  501. package/src/components/domain/desktop/DesktopOnboardingTourView/index.tsx +0 -189
  502. package/src/components/domain/desktop/DesktopPet/DesktopPet.fixture.ts +0 -243
  503. package/src/components/domain/desktop/DesktopPet/DesktopPet.stories.tsx +0 -337
  504. package/src/components/domain/desktop/DesktopPet/DesktopPetSource.test.mjs +0 -191
  505. package/src/components/domain/desktop/DesktopPet/index.tsx +0 -591
  506. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettings.stories.tsx +0 -159
  507. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettingsSource.test.mjs +0 -76
  508. package/src/components/domain/desktop/DesktopPetSettings/index.tsx +0 -140
  509. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusView.stories.tsx +0 -166
  510. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusViewSource.test.mjs +0 -51
  511. package/src/components/domain/desktop/DesktopRunStatusView/index.tsx +0 -34
  512. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCard.stories.tsx +0 -122
  513. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCardSource.test.mjs +0 -42
  514. package/src/components/domain/desktop/DesktopSelectionCard/index.tsx +0 -75
  515. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySection.stories.tsx +0 -225
  516. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySectionSource.test.mjs +0 -105
  517. package/src/components/domain/desktop/DesktopSettingsMemorySection/index.tsx +0 -340
  518. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsView.stories.tsx +0 -177
  519. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsViewSource.test.mjs +0 -195
  520. package/src/components/domain/desktop/DesktopSettingsView/index.tsx +0 -176
  521. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarView.stories.tsx +0 -77
  522. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarViewSource.test.mjs +0 -76
  523. package/src/components/domain/desktop/DesktopShareSelectionBarView/index.tsx +0 -55
  524. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarView.stories.tsx +0 -454
  525. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarViewSource.test.mjs +0 -388
  526. package/src/components/domain/desktop/DesktopSidebarView/index.tsx +0 -1111
  527. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesView.stories.tsx +0 -369
  528. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesViewSource.test.mjs +0 -123
  529. package/src/components/domain/desktop/DesktopSiteReleasesView/index.tsx +0 -392
  530. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListView.stories.tsx +0 -244
  531. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListViewSource.test.mjs +0 -198
  532. package/src/components/domain/desktop/DesktopSitesListView/index.tsx +0 -417
  533. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageView.stories.tsx +0 -230
  534. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageViewSource.test.mjs +0 -149
  535. package/src/components/domain/desktop/DesktopSkillsPageView/index.tsx +0 -235
  536. package/src/components/domain/desktop/DesktopTaskDetailView/index.tsx +0 -111
  537. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallListViewSource.test.mjs +0 -302
  538. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallView.stories.tsx +0 -409
  539. package/src/components/domain/desktop/DesktopToolCallView/index.tsx +0 -388
  540. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShell.stories.tsx +0 -418
  541. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShellSource.test.mjs +0 -151
  542. package/src/components/domain/desktop/DesktopWorkbenchShell/index.tsx +0 -167
  543. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageView.stories.tsx +0 -135
  544. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageViewSource.test.mjs +0 -57
  545. package/src/components/domain/desktop/DesktopWorkspacePageView/index.tsx +0 -114
  546. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceView.stories.tsx +0 -227
  547. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceViewSource.test.mjs +0 -175
  548. package/src/components/domain/desktop/DesktopWorkspaceView/index.tsx +0 -580
  549. package/src/components/domain/desktop/ResourceManagement/ResourceManagement.stories.tsx +0 -19
  550. package/src/components/domain/desktop/ResourceManagement/ResourceManagementSource.test.mjs +0 -54
  551. package/src/components/domain/desktop/ResourceManagement/SharesList.tsx +0 -323
  552. package/src/components/domain/desktop/ResourceManagement/SnapshotViews.tsx +0 -92
  553. package/src/components/domain/desktop/ResourceManagement/SnapshotViewsSource.test.mjs +0 -15
  554. package/src/components/domain/desktop/ResourceManagement/index.tsx +0 -246
  555. package/src/components/domain/desktop/ShareSettingsDialogView/index.tsx +0 -234
  556. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmpty.stories.tsx +0 -100
  557. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmptySource.test.mjs +0 -67
  558. package/src/components/domain/desktop/SidePanelEmpty/index.tsx +0 -113
  559. package/src/components/domain/desktop/StarterCapsules/StarterCapsules.stories.tsx +0 -65
  560. package/src/components/domain/desktop/StarterCapsules/StarterCapsulesSource.test.mjs +0 -43
  561. package/src/components/domain/desktop/StarterCapsules/index.tsx +0 -90
  562. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanel.stories.tsx +0 -59
  563. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanelSource.test.mjs +0 -51
  564. package/src/components/domain/desktop/WorkbenchSidePanel/index.tsx +0 -74
  565. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirm.stories.tsx +0 -79
  566. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirmSource.test.mjs +0 -34
  567. package/src/components/domain/desktop/WorkspaceMigrateConfirm/index.tsx +0 -92
  568. package/src/components/domain/desktop/index.ts +0 -64
  569. package/src/components/domain/files/FileBrowser/FileBrowser.stories.tsx +0 -397
  570. package/src/components/domain/files/FileBrowser/FileBrowserSource.test.mjs +0 -75
  571. package/src/components/domain/files/FileBrowser/index.tsx +0 -221
  572. package/src/components/domain/files/FileIcon/FileIcon.stories.tsx +0 -207
  573. package/src/components/domain/files/FileIcon/FileIconSource.test.mjs +0 -39
  574. package/src/components/domain/files/FileIcon/index.tsx +0 -133
  575. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentView.stories.tsx +0 -242
  576. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentViewSource.test.mjs +0 -44
  577. package/src/components/domain/files/FilePreviewContentView/index.tsx +0 -125
  578. package/src/components/domain/files/FileTree/FileTree.stories.tsx +0 -204
  579. package/src/components/domain/files/FileTree/FileTreeSource.test.mjs +0 -18
  580. package/src/components/domain/files/FileTree/index.tsx +0 -106
  581. package/src/components/domain/files/PreviewDialog/PreviewDialog.stories.tsx +0 -178
  582. package/src/components/domain/files/PreviewDialog/PreviewDialogSource.test.mjs +0 -92
  583. package/src/components/domain/files/PreviewDialog/index.tsx +0 -294
  584. package/src/components/domain/files/index.ts +0 -5
  585. package/src/components/domain/index.ts +0 -8
  586. package/src/components/domain/office/CsvPreview/CsvPreview.stories.tsx +0 -264
  587. package/src/components/domain/office/CsvPreview/CsvPreviewSource.test.mjs +0 -77
  588. package/src/components/domain/office/CsvPreview/index.tsx +0 -224
  589. package/src/components/domain/office/OfficePreview/OfficePreview.stories.tsx +0 -265
  590. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.stories.tsx +0 -71
  591. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.tsx +0 -43
  592. package/src/components/domain/office/OfficePreview/OfficePreviewSource.test.mjs +0 -126
  593. package/src/components/domain/office/OfficePreview/index.tsx +0 -782
  594. package/src/components/domain/office/PdfPreview/PdfPreview.stories.tsx +0 -280
  595. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.stories.tsx +0 -61
  596. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.tsx +0 -61
  597. package/src/components/domain/office/PdfPreview/PdfPreviewSource.test.mjs +0 -70
  598. package/src/components/domain/office/PdfPreview/index.tsx +0 -217
  599. package/src/components/domain/office/index.ts +0 -5
  600. package/src/components/domain/skills/McpServerListView/McpServerListView.stories.tsx +0 -510
  601. package/src/components/domain/skills/McpServerListView/McpServerListViewSource.test.mjs +0 -101
  602. package/src/components/domain/skills/McpServerListView/index.tsx +0 -250
  603. package/src/components/domain/skills/SkillAvatarView/SkillAvatarView.stories.tsx +0 -121
  604. package/src/components/domain/skills/SkillAvatarView/SkillAvatarViewSource.test.mjs +0 -67
  605. package/src/components/domain/skills/SkillAvatarView/index.tsx +0 -112
  606. package/src/components/domain/skills/SkillCardView/SkillCardView.stories.tsx +0 -374
  607. package/src/components/domain/skills/SkillCardView/SkillCardViewSource.test.mjs +0 -35
  608. package/src/components/domain/skills/SkillCardView/index.tsx +0 -88
  609. package/src/components/domain/skills/SkillDetailPanelView/SkillDetailPanelView.stories.tsx +0 -113
  610. package/src/components/domain/skills/SkillDetailPanelView/index.tsx +0 -115
  611. package/src/components/domain/skills/SkillDetailView/SkillDetailView.stories.tsx +0 -274
  612. package/src/components/domain/skills/SkillDetailView/index.tsx +0 -121
  613. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogView.stories.tsx +0 -128
  614. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogViewSource.test.mjs +0 -11
  615. package/src/components/domain/skills/SkillImportDialogView/index.tsx +0 -147
  616. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalView.stories.tsx +0 -160
  617. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalViewSource.test.mjs +0 -99
  618. package/src/components/domain/skills/ToolDetailModalView/index.tsx +0 -160
  619. package/src/components/domain/skills/index.ts +0 -7
  620. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardView.stories.tsx +0 -120
  621. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardViewSource.test.mjs +0 -40
  622. package/src/components/domain/tasks/ScheduledTaskCardView/index.tsx +0 -135
  623. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialog.stories.tsx +0 -56
  624. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialogSource.test.mjs +0 -35
  625. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx +0 -73
  626. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailView.stories.tsx +0 -121
  627. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailViewSource.test.mjs +0 -115
  628. package/src/components/domain/tasks/ScheduledTaskDetailView/index.tsx +0 -223
  629. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceView.stories.tsx +0 -526
  630. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceViewSource.test.mjs +0 -85
  631. package/src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx +0 -118
  632. package/src/components/domain/tasks/index.ts +0 -4
  633. package/src/components/domain/theme/SkinManager.stories.tsx +0 -43
  634. package/src/components/domain/theme/SkinManagerUI.tsx +0 -382
  635. package/src/components/domain/theme/ThemeDemo.stories.tsx +0 -12
  636. package/src/components/domain/theme/ThemeDemo.tsx +0 -224
  637. package/src/components/index.ts +0 -11
  638. package/src/components/primitives/Avatar/Avatar.stories.tsx +0 -170
  639. package/src/components/primitives/Avatar/AvatarSource.test.mjs +0 -37
  640. package/src/components/primitives/Avatar/index.tsx +0 -180
  641. package/src/components/primitives/BackTop/BackTop.stories.tsx +0 -122
  642. package/src/components/primitives/BackTop/BackTopSource.test.mjs +0 -61
  643. package/src/components/primitives/BackTop/index.tsx +0 -93
  644. package/src/components/primitives/Badge/Badge.stories.tsx +0 -376
  645. package/src/components/primitives/Badge/BadgeSource.test.mjs +0 -27
  646. package/src/components/primitives/Badge/index.tsx +0 -65
  647. package/src/components/primitives/Button/Button.stories.tsx +0 -287
  648. package/src/components/primitives/Button/ButtonSource.test.mjs +0 -84
  649. package/src/components/primitives/Button/index.tsx +0 -219
  650. package/src/components/primitives/Card/Card.stories.tsx +0 -186
  651. package/src/components/primitives/Card/CardSource.test.mjs +0 -73
  652. package/src/components/primitives/Card/index.tsx +0 -137
  653. package/src/components/primitives/Checkbox/Checkbox.stories.tsx +0 -79
  654. package/src/components/primitives/Checkbox/CheckboxSource.test.mjs +0 -43
  655. package/src/components/primitives/Checkbox/index.tsx +0 -87
  656. package/src/components/primitives/Chip/Chip.stories.tsx +0 -149
  657. package/src/components/primitives/Chip/ChipSource.test.mjs +0 -73
  658. package/src/components/primitives/Chip/index.tsx +0 -252
  659. package/src/components/primitives/Divider/Divider.stories.tsx +0 -68
  660. package/src/components/primitives/Divider/DividerSource.test.mjs +0 -26
  661. package/src/components/primitives/Divider/index.tsx +0 -65
  662. package/src/components/primitives/Dropdown/Dropdown.stories.tsx +0 -38
  663. package/src/components/primitives/Dropdown/DropdownSource.test.mjs +0 -23
  664. package/src/components/primitives/Dropdown/index.tsx +0 -29
  665. package/src/components/primitives/EmptyState/EmptyState.stories.tsx +0 -159
  666. package/src/components/primitives/EmptyState/EmptyStateSource.test.mjs +0 -169
  667. package/src/components/primitives/EmptyState/index.tsx +0 -185
  668. package/src/components/primitives/ErrorCard/ErrorCard.stories.tsx +0 -50
  669. package/src/components/primitives/ErrorCard/index.tsx +0 -78
  670. package/src/components/primitives/Field/Field.stories.tsx +0 -208
  671. package/src/components/primitives/Field/FieldSource.test.mjs +0 -70
  672. package/src/components/primitives/Field/index.tsx +0 -297
  673. package/src/components/primitives/InlineMessage/InlineMessage.stories.tsx +0 -137
  674. package/src/components/primitives/InlineMessage/InlineMessageSource.test.mjs +0 -50
  675. package/src/components/primitives/InlineMessage/index.tsx +0 -141
  676. package/src/components/primitives/Input/Input.stories.tsx +0 -30
  677. package/src/components/primitives/Input/index.tsx +0 -12
  678. package/src/components/primitives/Keycap/Keycap.stories.tsx +0 -93
  679. package/src/components/primitives/Keycap/KeycapSource.test.mjs +0 -30
  680. package/src/components/primitives/Keycap/index.tsx +0 -67
  681. package/src/components/primitives/Menu/Menu.stories.tsx +0 -416
  682. package/src/components/primitives/Menu/MenuEmptySource.test.mjs +0 -23
  683. package/src/components/primitives/Menu/MenuSource.test.mjs +0 -207
  684. package/src/components/primitives/Menu/index.tsx +0 -923
  685. package/src/components/primitives/Pagination/Pagination.stories.tsx +0 -77
  686. package/src/components/primitives/Pagination/PaginationSource.test.mjs +0 -24
  687. package/src/components/primitives/Pagination/index.tsx +0 -85
  688. package/src/components/primitives/Pagination/pagination.ts +0 -25
  689. package/src/components/primitives/Pagination/paginationModel.test.mjs +0 -18
  690. package/src/components/primitives/ProgressBar/ProgressBar.stories.tsx +0 -103
  691. package/src/components/primitives/ProgressBar/ProgressBarSource.test.mjs +0 -44
  692. package/src/components/primitives/ProgressBar/index.tsx +0 -68
  693. package/src/components/primitives/Radio/Radio.stories.tsx +0 -84
  694. package/src/components/primitives/Radio/RadioSource.test.mjs +0 -38
  695. package/src/components/primitives/Radio/index.tsx +0 -161
  696. package/src/components/primitives/SegmentedControl/SegmentedControl.stories.tsx +0 -110
  697. package/src/components/primitives/SegmentedControl/SegmentedControlSource.test.mjs +0 -75
  698. package/src/components/primitives/SegmentedControl/index.tsx +0 -188
  699. package/src/components/primitives/Select/Select.stories.tsx +0 -158
  700. package/src/components/primitives/Select/SelectSource.test.mjs +0 -94
  701. package/src/components/primitives/Select/index.tsx +0 -406
  702. package/src/components/primitives/Spinner/index.tsx +0 -58
  703. package/src/components/primitives/Switch/Switch.stories.tsx +0 -64
  704. package/src/components/primitives/Switch/SwitchSource.test.mjs +0 -38
  705. package/src/components/primitives/Switch/index.tsx +0 -84
  706. package/src/components/primitives/Tabs/Tabs.stories.tsx +0 -230
  707. package/src/components/primitives/Tabs/TabsSource.test.mjs +0 -91
  708. package/src/components/primitives/Tabs/index.tsx +0 -183
  709. package/src/components/primitives/index.ts +0 -24
  710. package/src/examples/ResourceManagementExample.tsx +0 -119
  711. package/src/examples/SiteWorkbenchExample.tsx +0 -96
  712. package/src/hooks/index.ts +0 -7
  713. package/src/hooks/useClickOutside.ts +0 -20
  714. package/src/hooks/useDragReorder.ts +0 -29
  715. package/src/hooks/useImeAwareEnter.ts +0 -59
  716. package/src/hooks/useImeAwareEnterSource.test.mjs +0 -65
  717. package/src/hooks/useKeyboard.ts +0 -16
  718. package/src/hooks/usePopover.ts +0 -67
  719. package/src/hooks/useSelectedOptionLocator.ts +0 -33
  720. package/src/hooks/useSidebarResize.ts +0 -107
  721. package/src/hooks/useTenantTheme.ts +0 -53
  722. package/src/hooks/useUnifiedTheme.ts +0 -85
  723. package/src/index.ts +0 -6
  724. package/src/lib/InjectedStyleTokenMirrorSource.test.mjs +0 -67
  725. package/src/lib/about-window.test.mjs +0 -46
  726. package/src/lib/about-window.ts +0 -218
  727. package/src/lib/appearance.test.mjs +0 -283
  728. package/src/lib/appearance.ts +0 -46
  729. package/src/lib/browser-annotation-popup.ts +0 -151
  730. package/src/lib/focusTrap.ts +0 -51
  731. package/src/lib/index.ts +0 -5
  732. package/src/lib/shortcut.test.mjs +0 -100
  733. package/src/lib/shortcut.ts +0 -97
  734. package/src/lib/twMergeOw.ts +0 -18
  735. package/src/lib/utils.ts +0 -6
  736. package/src/screens/Browser.stories.tsx +0 -353
  737. package/src/screens/Chat.stories.tsx +0 -808
  738. package/src/screens/Home.stories.tsx +0 -253
  739. package/src/screens/Login.stories.tsx +0 -134
  740. package/src/screens/McpManager.stories.tsx +0 -159
  741. package/src/screens/Onboarding.stories.tsx +0 -155
  742. package/src/screens/ScheduledTasks.stories.tsx +0 -134
  743. package/src/screens/ScreenFrameSource.test.mjs +0 -77
  744. package/src/screens/SettingsAppearance.stories.tsx +0 -117
  745. package/src/screens/SettingsMemory.stories.tsx +0 -128
  746. package/src/screens/SettingsModels.stories.tsx +0 -228
  747. package/src/screens/SettingsSections.stories.tsx +0 -164
  748. package/src/screens/Share.stories.tsx +0 -202
  749. package/src/screens/SharePage.stories.tsx +0 -29
  750. package/src/screens/Sites.stories.tsx +0 -183
  751. package/src/screens/Skills.stories.tsx +0 -83
  752. package/src/screens/Workspace.stories.tsx +0 -191
  753. package/src/screens/_home.tsx +0 -46
  754. package/src/screens/_screen.tsx +0 -355
  755. package/src/screens/_settingsNav.ts +0 -27
  756. package/src/screens/_skillsCatalog.tsx +0 -372
  757. package/src/theme/SkinDenylistSyncSource.test.mjs +0 -124
  758. package/src/theme/__tests__/skins.test.mjs +0 -84
  759. package/src/theme/core/semanticAdapter.ts +0 -116
  760. package/src/theme/core/skin.ts +0 -605
  761. package/src/theme/core/skinScoped.ts +0 -289
  762. package/src/theme/core/tenantTheme.test.mjs +0 -127
  763. package/src/theme/core/tenantTheme.ts +0 -124
  764. package/src/theme/core/types.ts +0 -60
  765. package/src/theme/core/unifiedTheme.ts +0 -157
  766. package/src/theme/index.ts +0 -33
  767. package/src/theme/providers/BrandingProvider.tsx +0 -57
  768. package/src/theme/providers/ThemeProvider.tsx +0 -221
  769. package/src/theme/skinDs2PropertyGate.test.mjs +0 -109
  770. package/src/theme/skins/index.ts +0 -107
  771. package/src/theme/utils/cssSafety.ts +0 -92
  772. package/src/theme/utils/skinManager.ts +0 -159
  773. package/src/theme/utils/themeApplier.ts +0 -75
  774. package/src/tokens/DesktopSurfacesSweep15Source.test.mjs +0 -77
  775. package/src/tokens/SharedStyleSheetsSource.test.mjs +0 -90
  776. package/src/tokens/TailwindThemeSupplySource.test.mjs +0 -129
  777. package/src/tokens/base.ts +0 -199
  778. package/src/tokens/dark.ts +0 -288
  779. package/src/tokens/index.ts +0 -4
  780. package/src/tokens/light.ts +0 -320
  781. package/src/tokens/tailwind.ts +0 -216
  782. package/src/types/desktop-pet.ts +0 -100
  783. package/src/types/file-browser.ts +0 -51
  784. package/src/types/file-tree.ts +0 -34
  785. package/src/types/index.ts +0 -3
  786. package/src/types/xspreadsheet.d.ts +0 -4
  787. package/src/utils/cn.ts +0 -6
  788. package/src/utils/glyphColor.ts +0 -32
  789. package/src/utils/index.ts +0 -4
  790. package/src/utils/localPathInline.test.mjs +0 -45
  791. package/src/utils/localPathInline.ts +0 -49
  792. package/src/utils/markdownFileRefs.test.mjs +0 -88
  793. package/src/utils/markdownFileRefs.ts +0 -140
  794. package/src/utils/office-excel.ts +0 -452
  795. package/src/utils/shiki.ts +0 -156
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/wowzin/projects/orbit/packages/ui/dist/chunk-KRP43SUA.cjs","../src/tokens/base.ts","../src/theme/core/fontScale.ts","../src/theme/utils/cssSafety.ts","../src/theme/core/skin.ts","../src/theme/skins/index.ts","../src/theme/core/types.ts"],"names":[],"mappings":"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L,EAAA;AACE,EAAA;AACO,EAAA;AACN,EAAA;AACe,IAAA;AACC,MAAA;AACE,MAAA;AACD,MAAA;AACD,MAAA;AACE,MAAA;AACP,MAAA;AACA,MAAA;AACW,MAAA;AACA,MAAA;AAC1B,IAAA;AACkB,IAAA;AACE,MAAA;AACE,MAAA;AACD,MAAA;AACD,MAAA;AACE,MAAA;AACP,MAAA;AACA,MAAA;AACW,MAAA;AACA,MAAA;AAC1B,IAAA;AACH,EAAA;AACF;AAEuC;AACrC,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACF;ALqqByE;AACA;AM5iClC;AACrC,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACF;AAoCsC;AACpC,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACF;AAEmC;AACjC,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACF;AAE4E;ANygCH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/wowzin/projects/orbit/packages/ui/dist/chunk-KRP43SUA.cjs","sourcesContent":[null,"/**\n * Orbitwork Design System — Primitive tokens.\n *\n * Theme-invariant foundation scales consumed by the CSS generator. Component\n * and layout measurements live in metrics.ts; theme semantics live in the\n * light/dark modules.\n */\n\nexport const primitive = {\n // Core brand colors\n navy: \"#0F1B3D\",\n yellow: \"#FFD23E\",\n yellowDeep: \"#D8A300\",\n white: \"#F7F6F1\",\n graphite: \"#16171B\",\n graphiteRaised: \"#1E2025\",\n graphiteBorder: \"#2A2C33\",\n\n // Theme-invariant brand lockup palette.\n brand: {\n dividerLight: \"#D8D5CC\",\n dividerDark: \"var(--ow-gray-70)\",\n cnLight: \"#3A3E46\",\n cnDark: \"#C9CBD1\",\n },\n\n // Grayscale 00-90: warm white to navy\n gray: {\n \"00\": \"#F7F6F1\",\n \"05\": \"#ECEBE5\",\n \"10\": \"#DCDCD7\",\n \"20\": \"#C2C3C1\",\n \"30\": \"#A2A5A9\",\n \"40\": \"#82878F\",\n \"50\": \"#646B7A\",\n \"60\": \"#4A5164\",\n \"70\": \"#333B50\",\n \"80\": \"#202942\",\n \"90\": \"#0F1B3D\",\n },\n\n // Spacing — Orbitwork DS standard scale\n space: {\n \"05\": \"2px\",\n \"1\": \"4px\",\n \"15\": \"6px\",\n \"2\": \"8px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"24\": \"96px\",\n },\n\n // Radius\n radius: {\n \"2xs\": \"4px\",\n xs: \"6px\",\n sm: \"8px\",\n md: \"10px\",\n lg: \"12px\",\n xl: \"16px\",\n pill: \"999px\",\n },\n\n // Typography — fonts\n fontDisplay: \"'Space Grotesk', 'HarmonyOS Sans SC', 'Noto Sans SC', sans-serif\",\n fontSans:\n \"'HarmonyOS Sans SC', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji'\",\n fontMono:\n \"'IBM Plex Mono', ui-monospace, 'SF Mono', monospace, 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji'\",\n\n // Type scale\n fsDisplay: \"46px\",\n fsHeadline: \"32px\",\n fsTitle: \"22px\",\n fsSubtitle: \"16px\",\n fsBody: \"14px\",\n fsCaption: \"12px\",\n fsEyebrow: \"11px\",\n fsUi: \"13px\",\n fsCode: \"13px\",\n fsEyebrowCjk: \"12px\",\n // Extended type scale\n fsHeadlineLg: \"34px\",\n fsHeadlineMd: \"27px\",\n fsHeadlineSm: \"22px\",\n fsTitleLg: \"19px\",\n fsTitleMd: \"16px\",\n fsTitleSm: \"14px\",\n fsBodyLg: \"16px\",\n fsBodyMd: \"14px\",\n fsBodySm: \"12px\",\n fsMarkMd: \"11px\",\n fsMarkSm: \"10px\",\n\n // Line heights\n lhHeadline: \"1.15\",\n lhTitle: \"1.3\",\n lhBody: \"1.75\",\n lhUi: \"1.5\",\n lhCode: \"1.7\",\n\n // Letter spacing\n lsTitle: \"0.01em\",\n lsEyebrow: \"0.14em\",\n lsEyebrowCjk: \"0.08em\",\n\n // Motion\n easeBeacon: \"cubic-bezier(0.22, 1, 0.36, 1)\",\n dur1: \"120ms\",\n dur2: \"200ms\",\n dur3: \"320ms\",\n durSpin: \"1.6s\",\n durSpinFast: \"0.9s\",\n durSplash: \"1250ms\",\n staggerBeacon: \"125ms\",\n\n // Font weight\n fontWeightNormal: \"400\",\n fontWeightMedium: \"500\",\n fontWeightSemibold: \"600\",\n fontWeightBold: \"700\",\n\n // Border width\n borderWidthThin: \"0.5px\",\n borderWidthDefault: \"1px\",\n borderWidthThick: \"2px\",\n\n // Opacity levels\n opacityMuted: \"0.6\",\n opacityHover: \"0.8\",\n} as const\n","import { primitive } from \"../../tokens/base.ts\"\n\n/** Supported text sizes, independent of the light/dark palette. */\nexport const ORBITWORK_FONT_SCALES = [0.9, 1, 1.1, 1.2] as const\nexport type OrbitworkFontScale = (typeof ORBITWORK_FONT_SCALES)[number]\n\nexport function isOrbitworkFontScale(value: unknown): value is OrbitworkFontScale {\n return typeof value === \"number\" && ORBITWORK_FONT_SCALES.some((scale) => scale === value)\n}\n\n/** Personal device preference wins over a skin preset; old settings resolve to 100%. */\nexport function resolveOrbitworkFontScale(preference: unknown, skinScale?: unknown): OrbitworkFontScale {\n return isOrbitworkFontScale(preference) ? preference : isOrbitworkFontScale(skinScale) ? skinScale : 1\n}\n\n/** Reuse the maintained DS2 scale. Never compound a previously applied size. */\nexport function fontScaleTokens(scale: OrbitworkFontScale): Record<string, string> {\n if (!isOrbitworkFontScale(scale) || scale === 1) return {}\n return Object.fromEntries(\n Object.entries(primitive)\n .filter(([key]) => /^fs[A-Z]/.test(key))\n .map(([key, value]) => [\n `--ow-${key.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}`,\n `${Math.round(Number.parseFloat(String(value)) * scale * 100) / 100}px`,\n ]),\n )\n}\n","/** Security verdict for precision CSS before it reaches the runtime stylesheet. */\nexport interface CSSSafetyReport {\n ok: boolean\n blockedImports: number\n blockedUrls: number\n blockedScripts: number\n warnings: string[]\n}\n\n/**\n * Precision CSS is declarative styling only. Assets use dedicated validated\n * skin fields, so every import, URL and executable CSS form is rejected here.\n */\nexport function analyzeSkinCSS(css: string): CSSSafetyReport {\n const blockedImports = css.match(/@import\\b/gi)?.length ?? 0\n const blockedUrls = css.match(/url\\s*\\(/gi)?.length ?? 0\n const blockedScripts = (css.match(/javascript\\s*:/gi)?.length ?? 0) + (css.match(/expression\\s*\\(/gi)?.length ?? 0)\n const warnings: string[] = []\n\n if (blockedImports > 0) warnings.push(`检测到 ${blockedImports} 个 @import 规则`)\n if (blockedUrls > 0) warnings.push(`检测到 ${blockedUrls} 个 url() 引用`)\n if (blockedScripts > 0) warnings.push(`检测到 ${blockedScripts} 个可执行 CSS 表达式`)\n\n return {\n ok: warnings.length === 0,\n blockedImports,\n blockedUrls,\n blockedScripts,\n warnings,\n }\n}\n","/**\n * Orbitwork skin protocol — aligned with Design project architecture.\n * A skin is a validated JSON document that overrides --ow-* CSS variables\n * at runtime. This module is framework-agnostic.\n */\n\nimport { analyzeSkinCSS } from \"../utils/cssSafety.ts\"\nimport { type OrbitworkFontScale, isOrbitworkFontScale } from \"./fontScale.ts\"\n\nexport type Theme = \"light\" | \"dark\" | \"system\"\nexport type ResolvedTheme = \"light\" | \"dark\"\n\n/**\n * DS2 皮肤白名单(COMPONENT-RULES §15 · 2026-08-31 裁决):\n * - 可覆盖:中性表面/边框/文字梯度、chat/composer/sidebar 背景类、\n * btn-primary 族(唯一开放的租户品牌色位)。\n * - 已移除(禁覆盖):primary 族(--ow-primary 暗档=荧黄行动极)、link、\n * switchActive(--ow-control-on 无彩选中)、功能色四族、cardRadius/buttonRadius\n * (圆角是品牌定稿)。\n */\nexport type OrbitworkSkinTokens = {\n backgroundPrimary?: string\n backgroundSecondary?: string\n backgroundTertiary?: string\n foregroundPrimary?: string\n foregroundSecondary?: string\n foregroundMuted?: string\n borderSubtle?: string\n borderStrong?: string\n buttonPrimaryBackground?: string\n buttonPrimaryForeground?: string\n chatBackground?: string\n chatBackgroundImage?: string\n /** 0–1 decimal string; kept under the legacy chatBackground namespace for skin.json compatibility. */\n chatBackgroundImageOpacity?: string\n chatBackgroundOverlay?: string\n chatBackgroundMaskColor?: string\n chatBackgroundPosition?:\n | \"center\"\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top left\"\n | \"top right\"\n | \"bottom left\"\n | \"bottom right\"\n chatBackgroundSize?: \"cover\" | \"contain\" | \"auto\"\n userBubbleBackground?: string\n userBubbleForeground?: string\n userBubbleBorder?: string\n composerBackground?: string\n composerBorder?: string\n sidebarBackground?: string\n sidebarSelectedBackground?: string\n}\n\n/** Maintenance record for each public-part precision selector. */\nexport type OrbitworkSkinRegistryEntry = {\n target: string\n reason: string\n}\n\nexport type OrbitworkSkin = {\n version: 1\n id: string\n name: string\n description?: string\n /** Uniform text size preset, shared by both color modes. */\n fontScale?: OrbitworkFontScale\n modes: {\n light?: OrbitworkSkinTokens\n dark?: OrbitworkSkinTokens\n }\n contributes?: {\n /** Registered CSS targeting component roots and their public parts. */\n publicPartStyles?: string\n /** Every public-part selector must have a matching maintenance record. */\n registry?: OrbitworkSkinRegistryEntry[]\n }\n}\n\nexport type SkinValidationResult = { ok: true; skin: OrbitworkSkin } | { ok: false; error: string }\n\nconst COLOR_KEYS = [\n \"backgroundPrimary\",\n \"backgroundSecondary\",\n \"backgroundTertiary\",\n \"foregroundPrimary\",\n \"foregroundSecondary\",\n \"foregroundMuted\",\n \"borderSubtle\",\n \"borderStrong\",\n \"buttonPrimaryBackground\",\n \"buttonPrimaryForeground\",\n \"chatBackground\",\n \"chatBackgroundOverlay\",\n \"userBubbleBackground\",\n \"userBubbleForeground\",\n \"userBubbleBorder\",\n \"composerBackground\",\n \"composerBorder\",\n \"sidebarBackground\",\n \"sidebarSelectedBackground\",\n] as const\nconst IMAGE_KEYS = [\"chatBackgroundImage\"] as const\nconst OPACITY_KEYS = [\"chatBackgroundImageOpacity\"] as const\nconst MASK_COLOR_KEYS = [\"chatBackgroundMaskColor\"] as const\nconst POSITION_KEYS = [\"chatBackgroundPosition\"] as const\nconst SIZE_KEYS = [\"chatBackgroundSize\"] as const\nconst TOKEN_KEYS = [\n ...COLOR_KEYS,\n ...MASK_COLOR_KEYS,\n ...IMAGE_KEYS,\n ...OPACITY_KEYS,\n ...POSITION_KEYS,\n ...SIZE_KEYS,\n] as const\nconst ROOT_KEYS = new Set([\"version\", \"id\", \"name\", \"description\", \"fontScale\", \"modes\", \"contributes\"])\nconst MODE_KEYS = new Set([\"light\", \"dark\"])\nconst TOKEN_KEY_SET = new Set<string>(TOKEN_KEYS)\nconst CONTRIBUTES_KEYS = new Set([\"publicPartStyles\", \"registry\"])\nconst REGISTRY_ENTRY_KEYS = new Set([\"target\", \"reason\"])\nexport const HEX_COLOR = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i\nconst MASK_HEX_COLOR = /^#[0-9a-f]{6}(?:[0-9a-f]{2})?$/i\nconst DATA_IMAGE = /^data:image\\/(png|jpeg|webp);base64,([A-Za-z0-9+/]+={0,2})$/\nconst BACKGROUND_POSITIONS = new Set([\n \"center\",\n \"top\",\n \"bottom\",\n \"left\",\n \"right\",\n \"top left\",\n \"top right\",\n \"bottom left\",\n \"bottom right\",\n])\nconst BACKGROUND_SIZES = new Set([\"cover\", \"contain\", \"auto\"])\nexport const MAX_ORBITWORK_SKIN_IMAGE_BYTES = 5 * 1024 * 1024\nconst CHAT_BACKGROUND_MASK_DERIVED_PROPERTIES = [\n \"--ow-chat-bg-mask-start-opacity\",\n \"--ow-chat-bg-mask-end-opacity\",\n] as const\n\nexport type OrbitworkSkinChatBackgroundMask = {\n color: string\n strength: number\n startOpacity: number\n endOpacity: number\n}\n\n/** Six-digit colors retain the original 80% → 50% mask; explicit alpha controls final strength. */\nexport function resolveOrbitworkSkinChatBackgroundMask(value: string): OrbitworkSkinChatBackgroundMask {\n const normalized = MASK_HEX_COLOR.test(value) ? value.toLowerCase() : \"#000000\"\n const strength = normalized.length === 9 ? Math.round((Number.parseInt(normalized.slice(7), 16) / 255) * 100) : 80\n const startOpacity = strength\n const endOpacity = strength <= 80 ? strength * 0.625 : 50 + (strength - 80) * 2.5\n return { color: normalized.slice(0, 7), strength, startOpacity, endOpacity }\n}\n\nexport function orbitworkSkinChatBackgroundMaskColor(color: string, strength: number): string {\n const normalizedColor = /^#[0-9a-f]{6}$/i.test(color) ? color.toLowerCase() : \"#000000\"\n const alpha = Math.round((Math.min(100, Math.max(0, strength)) / 100) * 255)\n return `${normalizedColor}${alpha.toString(16).padStart(2, \"0\")}`\n}\n\nexport const ORBITWORK_SKIN_CSS_VARIABLES: Readonly<Record<keyof OrbitworkSkinTokens, string>> = {\n backgroundPrimary: \"--ow-bg\",\n backgroundSecondary: \"--ow-surface\",\n backgroundTertiary: \"--ow-surface-2\",\n foregroundPrimary: \"--ow-text\",\n foregroundSecondary: \"--ow-text-2\",\n foregroundMuted: \"--ow-text-3\",\n borderSubtle: \"--ow-border\",\n borderStrong: \"--ow-border-strong\",\n buttonPrimaryBackground: \"--ow-btn-primary-bg\",\n buttonPrimaryForeground: \"--ow-btn-primary-fg\",\n chatBackground: \"--ow-chat-bg\",\n chatBackgroundImage: \"--ow-chat-bg-image\",\n chatBackgroundImageOpacity: \"--ow-chat-bg-image-opacity\",\n chatBackgroundOverlay: \"--ow-chat-bg-overlay\",\n chatBackgroundMaskColor: \"--ow-chat-bg-mask-color\",\n chatBackgroundPosition: \"--ow-chat-bg-position\",\n chatBackgroundSize: \"--ow-chat-bg-size\",\n // 三件用户气泡钩子由 domain/chat/UserTurn 消费;未覆盖时兜底 DS2 井色配方\n // (bg=--ow-bubble-user / fg=--ow-text / border=--ow-border),不再兜底透明。\n userBubbleBackground: \"--ow-chat-user-bubble-bg\",\n userBubbleForeground: \"--ow-chat-user-bubble-fg\",\n userBubbleBorder: \"--ow-chat-user-bubble-border\",\n composerBackground: \"--ow-composer-bg\",\n composerBorder: \"--ow-composer-border\",\n sidebarBackground: \"--ow-sidebar-bg\",\n sidebarSelectedBackground: \"--ow-sidebar-selected-bg\",\n}\n\n/**\n * DS2 皮肤禁覆盖清单(COMPONENT-RULES §15 · 2026-08-31 裁决)。\n * 条目以 `*` 结尾表示前缀匹配;其余为精确名(含其 `-` 后缀派生,如\n * `--ow-control-on` 同时覆盖 `--ow-control-on-glyph`)。\n *\n * 官方 skin skill 直接调用本模块导出的 parseOrbitworkSkin,不复制这份清单。\n */\nexport const DS2_SKIN_DENYLIST = [\n // 三极 token\n \"--ow-beacon\",\n \"--ow-beacon-idle\",\n \"--ow-accent-dot\",\n \"--ow-data-today\",\n // 行动极族(租户品牌色只经 btn-primary 族开放,--ow-primary 落点不可写)\n \"--ow-primary*\",\n // 无彩选中原则\n \"--ow-control-on\",\n // focus-ring\n \"--ow-focus-ring\",\n // 功能色四族全档\n \"--ow-info*\",\n \"--ow-success*\",\n \"--ow-warning*\",\n \"--ow-error*\",\n // 功能色别名:--ow-mention-bg/-text 直挂 --ow-info-tint/-on-tint,\n // Aliases are denied too, so precision CSS cannot bypass functional colors.\n \"--ow-mention*\",\n // 恒定域\n \"--ow-paper\",\n \"--ow-stage-*\",\n \"--ow-term-*\",\n \"--ow-ansi-*\",\n // 圆角(形状表是品牌定稿)\n \"--ow-radius-*\",\n] as const\n\n/**\n * DS2 皮肤禁覆盖 **CSS 属性** 清单(COMPONENT-RULES §5/§7/§9 · W5 终扫补闸)。\n *\n * `DS2_SKIN_DENYLIST` only sees token names. Precision CSS can also write\n * `box-shadow: 0 0 20px …`, `border-radius: 18px`,\n * `transform: translateY(-2px)`、`animation: neon-pulse 2s infinite` 完全绕开它——\n * 而这四类恰恰是 2.0 明令收口的三层:贴地零影(§5)、形状表定稿(§7)、\n * 唯一动效语汇=信标(§9)。故对属性维度另立一闸:命中即整块剥除。\n *\n * 条目为属性名前缀(连字符边界):`border-radius` 同时覆盖\n * `border-top-left-radius` 等长写;`transition` 覆盖 `transition-property` 等。\n *\n * 官方 skin skill 直接调用本模块导出的 parseOrbitworkSkin,不复制这份清单。\n */\nexport const DS2_SKIN_DENIED_PROPERTIES = [\n \"border-radius\",\n \"border-top-left-radius\",\n \"border-top-right-radius\",\n \"border-bottom-left-radius\",\n \"border-bottom-right-radius\",\n \"box-shadow\",\n \"transform\",\n \"animation\",\n \"transition\",\n \"backdrop-filter\",\n \"-webkit-backdrop-filter\",\n] as const\n\n/**\n * 判断某个 CSS 属性名是否命中属性维度禁覆盖清单。\n * 只按连字符边界做前缀匹配,避免 `animation` 误伤自定义属性 `--animation-x`\n * (自定义属性由 token 维度那一闸单独管)。\n */\nexport function isDs2SkinDeniedProperty(propertyName: string): boolean {\n const name = propertyName.trim().toLowerCase()\n if (name.startsWith(\"--\")) return false\n return DS2_SKIN_DENIED_PROPERTIES.some((entry) => name === entry || name.startsWith(`${entry}-`))\n}\n\n/**\n * 在一段 CSS 文本里找出第一处命中属性维度禁覆盖清单的声明。\n * 只在「声明位置」匹配(块首/`;`/`{` 之后的标识符 + `:`),选择器与值里的同名词不算。\n */\nexport function findDs2DeniedCssProperty(css: string): string | null {\n const declaration = /(?:^|[{;])\\s*(-{0,2}[a-z][a-z0-9-]*)\\s*:/gi\n let match: RegExpExecArray | null = declaration.exec(css)\n while (match) {\n const property = match[1] ?? \"\"\n if (isDs2SkinDeniedProperty(property)) return property.toLowerCase()\n match = declaration.exec(css)\n }\n return null\n}\n\n/**\n * 值维度禁覆盖(DS2 判据 7「品牌外渐变一律清除」)。\n *\n * 校验脚本不得复制该规则,统一委托 parseOrbitworkSkin。\n *\n * 为什么不是往 DS2_SKIN_DENIED_PROPERTIES 里加 `background`:皮肤本来就该能改底色,\n * 按属性名封会把整类合法覆盖一起封掉。要拦的是**值的形态**——任何 *-gradient()。\n * R2 之前这一层完全没有:glass.ts 的 `body { background: linear-gradient(135deg,\n * rgba(59,130,246,.1), rgba(139,92,246,.1)) }`(V1 蓝紫)是整份皮肤里唯二穿过闸口的\n * 块之一;cyberpunk.ts 的 `userBubbleBackground: \"linear-gradient(135deg,#E91E63,#9C27B0)\"`\n * 更是走 mode token 直接落到用户气泡上——两条路都得拦。\n */\nexport const DS2_SKIN_DENIED_VALUE_PATTERNS = [\"-gradient(\"] as const\n\n/** 判断某个 CSS 值是否命中值维度禁覆盖(渐变)。 */\nexport function isDs2SkinDeniedValue(value: string): boolean {\n const v = value.toLowerCase()\n return DS2_SKIN_DENIED_VALUE_PATTERNS.some((entry) => v.includes(entry))\n}\n\n/**\n * 在一段 CSS 文本里找出第一处命中值维度禁覆盖的声明值。\n * 只看声明的**值**侧,选择器与注释里的同名词不算(调用方已剥注释)。\n */\nexport function findDs2DeniedCssValue(css: string): string | null {\n const declaration = /(?:^|[{;])\\s*-{0,2}[a-z][a-z0-9-]*\\s*:([^;{}]*)/gi\n let match: RegExpExecArray | null = declaration.exec(css)\n while (match) {\n const value = match[1] ?? \"\"\n if (isDs2SkinDeniedValue(value)) {\n const hit = /[a-z-]*-gradient\\(/i.exec(value)\n return hit ? hit[0].slice(0, -1) : \"gradient\"\n }\n match = declaration.exec(css)\n }\n return null\n}\n\n/** Brand-locked component roots that precision styles cannot target. */\nexport const DS2_LOCKED_SLOT_SELECTORS = [\"beacon-spinner\", \"orbitwork-mark\", \"orbitwork-lockup\"] as const\n\nexport const MAX_ORBITWORK_SKIN_CSS_BYTES = 256 * 1024\n\n/**\n * Exact precision-style surface maintained by Orbitwork UI.\n * A data-slot/data-ow-part attribute is not skin-public unless it appears here.\n * Each target also owns its allowed visual properties so skins cannot turn a\n * stable selector into an undocumented layout or behavior override.\n */\nexport const ORBITWORK_SKIN_PUBLIC_PARTS = Object.freeze({\n '[data-slot=\"artifact-preview-card\"] [data-ow-part=\"meta\"]': Object.freeze([\"color\", \"font-weight\"]),\n} as const)\n\n/** One shared DS2 verdict for both import-time rejection and apply-time defence. */\nexport function findDs2SkinCssViolation(css: string): string | null {\n for (const slot of DS2_LOCKED_SLOT_SELECTORS) {\n if (css.includes(slot)) return `锁定件选择器 \"${slot}\"`\n }\n const tokenNames = css.match(/--ow-[a-z0-9-]+/gi) ?? []\n for (const tokenName of tokenNames) {\n if (isDs2SkinDeniedToken(tokenName)) return `禁覆盖 token ${tokenName}`\n }\n const property = findDs2DeniedCssProperty(css)\n if (property) return `禁覆盖 CSS 属性 ${property}`\n const gradient = findDs2DeniedCssValue(css)\n if (gradient) return `禁覆盖值形态 ${gradient}()`\n return null\n}\n\n/** 判断某个 CSS 自定义属性名是否命中 DS2 禁覆盖清单。 */\nexport function isDs2SkinDeniedToken(tokenName: string): boolean {\n const name = tokenName.trim()\n return DS2_SKIN_DENYLIST.some((entry) =>\n entry.endsWith(\"*\") ? name.startsWith(entry.slice(0, -1)) : name === entry || name.startsWith(`${entry}-`),\n )\n}\n\n/** WCAG 2.x 相对亮度 → 对比度实算(输入为 3/4/6/8 位 hex;alpha 忽略,按不透明计算)。 */\nexport function ds2ContrastRatio(hexA: string, hexB: string): number {\n const la = relativeLuminance(hexA)\n const lb = relativeLuminance(hexB)\n const lighter = Math.max(la, lb)\n const darker = Math.min(la, lb)\n return (lighter + 0.05) / (darker + 0.05)\n}\n\nfunction relativeLuminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex)\n const toLinear = (channel: number) => {\n const c = channel / 255\n return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4\n }\n return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b)\n}\n\nfunction hexToRgb(hex: string): [number, number, number] {\n let value = hex.replace(/^#/, \"\")\n if (value.length === 3 || value.length === 4) {\n value = value\n .slice(0, 3)\n .split(\"\")\n .map((c) => c + c)\n .join(\"\")\n }\n return [\n Number.parseInt(value.slice(0, 2), 16),\n Number.parseInt(value.slice(2, 4), 16),\n Number.parseInt(value.slice(4, 6), 16),\n ]\n}\n\n/** 中性梯度整组闸:命中任一触发键即要求整组提交并过对比度实算。 */\nconst NEUTRAL_TRIGGER_KEYS = [\n \"backgroundPrimary\",\n \"backgroundSecondary\",\n \"backgroundTertiary\",\n \"foregroundPrimary\",\n \"foregroundSecondary\",\n \"foregroundMuted\",\n] as const\nconst NEUTRAL_REQUIRED_KEYS = [\n \"backgroundPrimary\",\n \"backgroundSecondary\",\n \"backgroundTertiary\",\n \"foregroundPrimary\",\n \"foregroundSecondary\",\n \"foregroundMuted\",\n \"borderSubtle\",\n \"borderStrong\",\n] as const\nconst NEUTRAL_CONTRAST_PAIRS: ReadonlyArray<readonly [keyof OrbitworkSkinTokens, keyof OrbitworkSkinTokens]> = [\n [\"foregroundPrimary\", \"backgroundPrimary\"],\n [\"foregroundPrimary\", \"backgroundSecondary\"],\n [\"foregroundPrimary\", \"backgroundTertiary\"],\n [\"foregroundSecondary\", \"backgroundPrimary\"],\n [\"foregroundSecondary\", \"backgroundSecondary\"],\n [\"foregroundSecondary\", \"backgroundTertiary\"],\n [\"foregroundMuted\", \"backgroundPrimary\"],\n [\"foregroundMuted\", \"backgroundSecondary\"],\n [\"foregroundMuted\", \"backgroundTertiary\"],\n]\nconst MIN_NEUTRAL_CONTRAST = 4.5\n\n/** 闸 (a):覆盖项落点命中禁覆盖清单即拒绝(白名单收敛后属兜底防线)。 */\nfunction assertTokensNotDenied(tokens: OrbitworkSkinTokens, path: string): void {\n for (const [key, value] of Object.entries(tokens)) {\n const cssVar = ORBITWORK_SKIN_CSS_VARIABLES[key as keyof OrbitworkSkinTokens]\n if (cssVar && isDs2SkinDeniedToken(cssVar)) {\n throw new Error(`${path}.${key} 的落点 ${cssVar} 命中 DS2 禁覆盖清单,拒绝该皮肤`)\n }\n // 值维度:token 值本身是渐变时,属性闸与 token 闸都拦不住(落点名合法、属性名合法),\n // 直接落到气泡/侧栏底上——判据 7「品牌外渐变一律清除」在这里收口。\n // chatBackgroundImage 例外:它本来就是一张图/图案的落点,由 orbitwork-skin-image 单独校验。\n if (key !== \"chatBackgroundImage\" && typeof value === \"string\" && isDs2SkinDeniedValue(value)) {\n throw new Error(`${path}.${key} 的值是渐变(${value}),DS2 判据 7 品牌外渐变一律清除,拒绝该皮肤`)\n }\n }\n}\n\n/** 闸 (b):中性梯度整组提交 + WCAG 对比度实算(text-on-bg / text-on-surface ≥ 4.5:1)。 */\nfunction assertNeutralGroupContrast(tokens: OrbitworkSkinTokens, path: string): void {\n const touched = NEUTRAL_TRIGGER_KEYS.some((key) => tokens[key] !== undefined)\n if (!touched) return\n const missing = NEUTRAL_REQUIRED_KEYS.filter((key) => tokens[key] === undefined)\n if (missing.length > 0) {\n throw new Error(`${path} 中性梯度须整组提交(text 系与 bg/surface 系同批),缺少:${missing.join(\"、\")}`)\n }\n for (const [textKey, bgKey] of NEUTRAL_CONTRAST_PAIRS) {\n const text = tokens[textKey]\n const bg = tokens[bgKey]\n if (!text || !bg) continue\n const ratio = ds2ContrastRatio(text, bg)\n if (ratio < MIN_NEUTRAL_CONTRAST) {\n throw new Error(\n `${path} 对比度不达标:${textKey}(${text}) 在 ${bgKey}(${bg}) 上为 ${ratio.toFixed(2)}:1,要求 ≥ ${MIN_NEUTRAL_CONTRAST}:1`,\n )\n }\n }\n}\n\n/** Runtime btn-primary is open, but yellow-adjacent values would impersonate the locked beacon pole. */\nexport function isNeonYellowAdjacent(value: string): boolean {\n if (!HEX_COLOR.test(value)) return false\n const [r, g, b] = hexToRgb(value)\n const max = Math.max(r, g, b) / 255\n const min = Math.min(r, g, b) / 255\n const delta = max - min\n if (delta === 0) return false\n const red = r / 255\n const green = g / 255\n const blue = b / 255\n let hue =\n max === red ? ((green - blue) / delta) % 6 : max === green ? (blue - red) / delta + 2 : (red - green) / delta + 4\n hue = (hue * 60 + 360) % 360\n const lightness = (max + min) / 2\n const saturation = delta / (1 - Math.abs(2 * lightness - 1))\n return hue >= 40 && hue <= 75 && saturation >= 0.5 && lightness >= 0.35\n}\n\nfunction assertButtonPrimary(tokens: OrbitworkSkinTokens, path: string): void {\n const background = tokens.buttonPrimaryBackground\n const foreground = tokens.buttonPrimaryForeground\n if (!background && !foreground) return\n if (!background || !foreground) throw new Error(`${path} btn-primary 须同时提交 background 与 foreground`)\n if (isNeonYellowAdjacent(background)) throw new Error(`${path}.buttonPrimaryBackground 不得使用荧黄邻近色`)\n const ratio = ds2ContrastRatio(background, foreground)\n if (ratio < 4.5) throw new Error(`${path} btn-primary 对比度为 ${ratio.toFixed(2)}:1,要求 ≥ 4.5:1`)\n}\n\nexport function hasOrbitworkSkinChatBackground(skin: OrbitworkSkin | null | undefined, mode: ResolvedTheme): boolean {\n return Boolean(skin?.modes?.[mode]?.chatBackgroundImage)\n}\n\nexport function parseOrbitworkSkin(input: unknown): SkinValidationResult {\n try {\n if (!isRecord(input)) throw new Error(\"主题必须是 JSON 对象\")\n assertKnownKeys(input, ROOT_KEYS, \"主题\")\n if (input.version !== 1) throw new Error(\"仅支持 version: 1\")\n if (typeof input.id !== \"string\" || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(input.id) || input.id.length > 64)\n throw new Error(\"id 必须是最多 64 字符的小写短横线标识\")\n if (typeof input.name !== \"string\" || !input.name.trim() || input.name.length > 48)\n throw new Error(\"name 必须是 1–48 个字符\")\n if (input.description !== undefined && (typeof input.description !== \"string\" || input.description.length > 160))\n throw new Error(\"description 最多 160 个字符\")\n if (input.fontScale !== undefined && !isOrbitworkFontScale(input.fontScale))\n throw new Error(\"fontScale 必须是 0.9、1、1.1 或 1.2\")\n if (!isRecord(input.modes)) throw new Error(\"modes 必须是对象\")\n assertKnownKeys(input.modes, MODE_KEYS, \"modes\")\n const light =\n input.modes.light === undefined ? undefined : parseTokens(input.modes.light, TOKEN_KEY_SET, \"modes.light\")\n const dark = input.modes.dark === undefined ? undefined : parseTokens(input.modes.dark, TOKEN_KEY_SET, \"modes.dark\")\n if (!light && !dark) throw new Error(\"modes 至少需要 light 或 dark\")\n\n // DS2 两道闸:禁覆盖清单拦截 + 中性梯度整组对比度实算\n if (light) {\n assertTokensNotDenied(light, \"modes.light\")\n assertNeutralGroupContrast(light, \"modes.light\")\n assertButtonPrimary(light, \"modes.light\")\n }\n if (dark) {\n assertTokensNotDenied(dark, \"modes.dark\")\n assertNeutralGroupContrast(dark, \"modes.dark\")\n assertButtonPrimary(dark, \"modes.dark\")\n }\n\n // Parse registered public-part styles.\n let contributes: OrbitworkSkin[\"contributes\"] | undefined\n if (input.contributes !== undefined) {\n if (!isRecord(input.contributes)) throw new Error(\"contributes 必须是对象\")\n assertKnownKeys(input.contributes, CONTRIBUTES_KEYS, \"contributes\")\n const publicPartStyles = input.contributes.publicPartStyles\n if (publicPartStyles !== undefined && typeof publicPartStyles !== \"string\")\n throw new Error(\"contributes.publicPartStyles 必须是字符串\")\n const registry = parseRegistry(input.contributes.registry)\n const normalizedPublicPartStyles = assertSkinContributions(publicPartStyles, registry)\n if (normalizedPublicPartStyles || registry) {\n contributes = {\n ...(normalizedPublicPartStyles ? { publicPartStyles: normalizedPublicPartStyles } : {}),\n ...(registry ? { registry } : {}),\n }\n }\n }\n\n return {\n ok: true,\n skin: {\n version: 1,\n id: input.id,\n name: input.name.trim(),\n ...(input.description ? { description: input.description.trim() } : {}),\n ...(input.fontScale !== undefined ? { fontScale: input.fontScale } : {}),\n modes: { ...(light ? { light } : {}), ...(dark ? { dark } : {}) },\n ...(contributes ? { contributes } : {}),\n },\n }\n } catch (error) {\n return { ok: false, error: error instanceof Error ? error.message : \"主题格式无效\" }\n }\n}\n\nconst PUBLIC_PART_TARGET =\n /^\\[data-slot=[\"'][a-z0-9]+(?:-[a-z0-9]+)*[\"']\\](?:\\s+(?:>\\s+)?\\[data-ow-(?:part|state|role|kind|context)=[\"'][a-z0-9]+(?:-[a-z0-9]+)*[\"']\\])*$/\n\ntype SkinCssDeclaration = { property: string; value: string }\ntype SkinCssRule = { selectors: string[]; declarations: SkinCssDeclaration[] }\n\nfunction assertSkinCssValue(property: string, value: string): void {\n if (property === \"color\" && /^var\\(--ow-text(?:-2)?\\)$/.test(value)) {\n return\n }\n if (\n property === \"font-weight\" &&\n (/^(?:[1-9]00|normal|bold)$/i.test(value) || /^var\\(--ow-font-weight-[a-z0-9-]+\\)$/i.test(value))\n )\n return\n throw new Error(`contributes.publicPartStyles 不允许 ${property} 使用值 ${value}`)\n}\n\n/**\n * Parse the deliberately tiny public-part CSS language and serialize it back\n * to one canonical representation. Comments and escapes are rejected instead\n * of being stripped: validation and browser injection must consume identical\n * semantics.\n */\nfunction cssRules(css: string): SkinCssRule[] {\n if (css.includes(\"/*\") || css.includes(\"*/\")) {\n throw new Error(\"contributes.publicPartStyles 不支持 CSS 注释\")\n }\n if (css.includes(\"\\\\\")) throw new Error(\"contributes.publicPartStyles 不支持 CSS 转义\")\n const rules: SkinCssRule[] = []\n let cursor = 0\n while (cursor < css.length) {\n while (/\\s/.test(css[cursor] ?? \"\")) cursor += 1\n if (cursor >= css.length) break\n const open = css.indexOf(\"{\", cursor)\n if (open < 0) throw new Error(\"contributes.publicPartStyles 包含不完整的 CSS 规则\")\n const close = css.indexOf(\"}\", open + 1)\n if (close < 0 || css.slice(open + 1, close).includes(\"{\")) {\n throw new Error(\"contributes.publicPartStyles 只能包含扁平 CSS 规则\")\n }\n const prelude = css.slice(cursor, open).trim()\n if (!prelude || prelude.startsWith(\"@\")) {\n throw new Error(\"contributes.publicPartStyles 不支持 @ 规则或空选择器\")\n }\n const selectors = prelude\n .split(\",\")\n .map((selector) => selector.trim())\n .filter(Boolean)\n const declarations = css\n .slice(open + 1, close)\n .split(\";\")\n .map((declaration) => declaration.trim())\n .filter(Boolean)\n .map((declaration) => {\n const separator = declaration.indexOf(\":\")\n if (separator <= 0 || !declaration.slice(separator + 1).trim()) {\n throw new Error(`contributes.publicPartStyles 包含无效声明:${declaration}`)\n }\n const property = declaration.slice(0, separator).trim().toLowerCase()\n const value = declaration.slice(separator + 1).trim()\n if (!/^[a-z][a-z-]*$/.test(property) || /[{};\"'@]/.test(value) || /!\\s*important/i.test(value)) {\n throw new Error(`contributes.publicPartStyles 包含无效声明:${declaration}`)\n }\n assertSkinCssValue(property, value)\n return { property, value }\n })\n if (declarations.length === 0) throw new Error(\"contributes.publicPartStyles 不接受空规则\")\n rules.push({ selectors, declarations })\n cursor = close + 1\n }\n if (css.trim() && rules.length === 0) throw new Error(\"contributes.publicPartStyles 没有有效规则\")\n return rules\n}\n\nexport function normalizeOrbitworkSkinPublicPartStyles(publicPartStyles: string): string {\n const path = \"contributes.publicPartStyles\"\n const publicPartCss = publicPartStyles.trim()\n if (new TextEncoder().encode(publicPartCss).byteLength > MAX_ORBITWORK_SKIN_CSS_BYTES)\n throw new Error(`${path} 不能超过 256 KiB`)\n const rules = cssRules(publicPartCss)\n for (const rule of rules) {\n for (const selector of rule.selectors) {\n if (!PUBLIC_PART_TARGET.test(selector))\n throw new Error(`${path} 只能定位 data-slot 根及其 data-ow-* public part:${selector}`)\n const allowedProperties = ORBITWORK_SKIN_PUBLIC_PARTS[selector as keyof typeof ORBITWORK_SKIN_PUBLIC_PARTS]\n if (!allowedProperties) throw new Error(`${path} 选择器不是 Orbitwork 开放的皮肤 public part:${selector}`)\n for (const { property } of rule.declarations) {\n if (!(allowedProperties as readonly string[]).includes(property)) {\n throw new Error(`${path} 不允许在 ${selector} 覆盖属性 ${property}`)\n }\n }\n }\n }\n const canonical = rules\n .map(\n ({ selectors, declarations }) =>\n `${selectors.join(\", \")} { ${declarations.map(({ property, value }) => `${property}: ${value};`).join(\" \")} }`,\n )\n .join(\"\\n\")\n const safety = analyzeSkinCSS(canonical)\n if (!safety.ok) throw new Error(`${path} 包含不安全内容:${safety.warnings.join(\";\")}`)\n const violation = findDs2SkinCssViolation(canonical)\n if (violation) throw new Error(`${path} 命中 DS2 禁覆盖:${violation}`)\n return canonical\n}\n\nfunction assertSkinContributions(\n publicPartStyles: unknown,\n registry: OrbitworkSkinRegistryEntry[] | undefined,\n): string | undefined {\n const publicPartCss = typeof publicPartStyles === \"string\" ? publicPartStyles.trim() : \"\"\n const hasCss = publicPartCss.length > 0\n\n if (hasCss && !registry?.length) throw new Error(\"contributes.publicPartStyles 必须提供 registry 登记\")\n if (!hasCss && registry?.length) throw new Error(\"contributes.registry 不能脱离 publicPartStyles 单独存在\")\n if (!hasCss || !registry) return undefined\n\n const normalized = normalizeOrbitworkSkinPublicPartStyles(publicPartCss)\n const rules = cssRules(normalized)\n const selectors = rules.flatMap((rule) => rule.selectors)\n const registeredTargets = new Set(registry.map((entry) => entry.target))\n for (const rule of rules) {\n for (const selector of rule.selectors) {\n if (!registeredTargets.has(selector)) throw new Error(`contributes.publicPartStyles 选择器未登记:${selector}`)\n }\n }\n const selectorSet = new Set(selectors)\n for (const entry of registry) {\n if (!selectorSet.has(entry.target)) throw new Error(`contributes.registry target 未出现在 CSS:${entry.target}`)\n }\n return normalized\n}\n\nfunction parseTokens(input: unknown, allowed: Set<string>, path: string): OrbitworkSkinTokens {\n if (!isRecord(input)) throw new Error(`${path} 必须是对象`)\n assertKnownKeys(input, allowed, path)\n const result: OrbitworkSkinTokens = {}\n for (const [key, value] of Object.entries(input)) {\n if (typeof value !== \"string\") throw new Error(`${path}.${key} 必须是字符串`)\n if (COLOR_KEYS.includes(key as (typeof COLOR_KEYS)[number])) {\n if (!HEX_COLOR.test(value)) throw new Error(`${path}.${key} 必须是十六进制颜色`)\n ;(result as Record<string, string>)[key] = value.toLowerCase()\n } else if (MASK_COLOR_KEYS.includes(key as (typeof MASK_COLOR_KEYS)[number])) {\n if (!MASK_HEX_COLOR.test(value)) throw new Error(`${path}.${key} 必须是六位或八位十六进制颜色`)\n ;(result as Record<string, string>)[key] = value.toLowerCase()\n } else if (IMAGE_KEYS.includes(key as (typeof IMAGE_KEYS)[number])) {\n assertSafeDataImage(value, `${path}.${key}`)\n ;(result as Record<string, string>)[key] = value\n } else if (OPACITY_KEYS.includes(key as (typeof OPACITY_KEYS)[number])) {\n const opacity = Number(value)\n if (!/^(?:0(?:\\.\\d+)?|1(?:\\.0+)?)$/.test(value) || !Number.isFinite(opacity) || opacity < 0 || opacity > 1) {\n throw new Error(`${path}.${key} 必须是 0–1 之间的十进制字符串`)\n }\n ;(result as Record<string, string>)[key] = String(opacity)\n } else if (POSITION_KEYS.includes(key as (typeof POSITION_KEYS)[number])) {\n const normalized = value.toLowerCase()\n if (!BACKGROUND_POSITIONS.has(normalized)) throw new Error(`${path}.${key} 不是支持的背景位置`)\n ;(result as Record<string, string>)[key] = normalized\n } else if (SIZE_KEYS.includes(key as (typeof SIZE_KEYS)[number])) {\n const normalized = value.toLowerCase()\n if (!BACKGROUND_SIZES.has(normalized)) throw new Error(`${path}.${key} 不是支持的背景尺寸`)\n ;(result as Record<string, string>)[key] = normalized\n } else {\n throw new Error(`${path} 包含不支持的字段:${key}`)\n }\n }\n return result\n}\n\nfunction parseRegistry(input: unknown): OrbitworkSkinRegistryEntry[] | undefined {\n if (input === undefined) return undefined\n if (!Array.isArray(input)) throw new Error(\"contributes.registry 必须是数组\")\n if (input.length === 0) return undefined\n const result = input.map((entry, index) => {\n if (!isRecord(entry)) throw new Error(`contributes.registry[${index}] 必须是 { target, reason } 对象`)\n assertKnownKeys(entry, REGISTRY_ENTRY_KEYS, `contributes.registry[${index}]`)\n const { target, reason } = entry\n if (typeof target !== \"string\" || !target.trim() || target.length > 200)\n throw new Error(`contributes.registry[${index}].target 必须是 1–200 字符的字符串`)\n if (typeof reason !== \"string\" || !reason.trim() || reason.length > 200)\n throw new Error(`contributes.registry[${index}].reason 必须是 1–200 字符的字符串`)\n return { target: target.trim(), reason: reason.trim() }\n })\n const duplicate = result.find(\n (entry, index) => result.findIndex((candidate) => candidate.target === entry.target) !== index,\n )\n if (duplicate) throw new Error(`contributes.registry target 重复:${duplicate.target}`)\n return result\n}\n\nfunction assertSafeDataImage(value: string, path: string): void {\n const match = DATA_IMAGE.exec(value)\n if (!match) throw new Error(`${path} 必须是 PNG、JPEG 或 WebP 的 base64 data URL`)\n const format = match[1]\n const payload = match[2]\n if (!format || !payload) throw new Error(`${path} 包含无效的图片数据`)\n if (payload.length % 4 !== 0) throw new Error(`${path} 包含无效的 base64 数据`)\n const padding = payload.endsWith(\"==\") ? 2 : payload.endsWith(\"=\") ? 1 : 0\n const decodedBytes = (payload.length / 4) * 3 - padding\n if (decodedBytes > MAX_ORBITWORK_SKIN_IMAGE_BYTES) throw new Error(`${path} 解码后不能超过 5 MiB`)\n let bytes: number[]\n try {\n const decoded = globalThis.atob(payload)\n bytes = Array.from(decoded.slice(0, 12), (char) => char.charCodeAt(0))\n } catch {\n throw new Error(`${path} 包含无效的 base64 数据`)\n }\n const validMagic =\n format === \"png\"\n ? [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every((byte, index) => bytes[index] === byte)\n : format === \"jpeg\"\n ? bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff\n : bytes[0] === 0x52 &&\n bytes[1] === 0x49 &&\n bytes[2] === 0x46 &&\n bytes[3] === 0x46 &&\n bytes[8] === 0x57 &&\n bytes[9] === 0x45 &&\n bytes[10] === 0x42 &&\n bytes[11] === 0x50\n if (!validMagic) throw new Error(`${path} 的内容与图片格式不匹配`)\n}\n\n/** Convert a validated embedded image into a CSS value without accepting arbitrary CSS or URLs. */\nexport function orbitworkSkinImageCssValue(value: string | undefined): string | undefined {\n if (!value) return undefined\n try {\n assertSafeDataImage(value, \"chatBackgroundImage\")\n return `url(\"${value}\")`\n } catch {\n return undefined\n }\n}\n\nexport function assertKnownKeys(value: Record<string, unknown>, allowed: Set<string>, path: string) {\n const unknown = Object.keys(value).find((key) => !allowed.has(key))\n if (unknown) throw new Error(`${path} 包含不支持的字段:${unknown}`)\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n}\n","import type { OrbitworkSkin, OrbitworkSkinTokens } from \"../core/skin.ts\"\n\ntype CompleteModeInput = {\n backgroundPrimary: string\n backgroundSecondary: string\n backgroundTertiary: string\n foregroundPrimary: string\n foregroundSecondary: string\n borderSubtle: string\n borderStrong: string\n buttonPrimaryBackground?: string\n buttonPrimaryForeground?: string\n}\n\n/** Give every built-in palette real component coverage instead of changing only the page canvas. */\nfunction completeMode(input: CompleteModeInput): OrbitworkSkinTokens {\n return {\n ...input,\n foregroundMuted: input.foregroundSecondary,\n chatBackground: input.backgroundPrimary,\n userBubbleBackground: input.backgroundTertiary,\n userBubbleForeground: input.foregroundPrimary,\n userBubbleBorder: input.borderStrong,\n composerBackground: input.backgroundSecondary,\n composerBorder: input.borderStrong,\n sidebarBackground: input.backgroundSecondary,\n sidebarSelectedBackground: input.backgroundTertiary,\n }\n}\n\n/**\n * Codex-inspired defaults mapped from the user-exported `codex-theme-v1` light/dark\n * configurations. `surface`, `ink`, and `contrast` own this neutral palette;\n * primary buttons inherit the same defaults as Warm Beige.\n * Codex-only font/window/functional-color fields stay outside the personal-skin contract.\n */\nexport const codex: OrbitworkSkin = {\n version: 1,\n id: \"codex\",\n name: \"Normal\",\n description: \"高对比中性工作空间\",\n modes: {\n light: completeMode({\n backgroundPrimary: \"#ffffff\",\n backgroundSecondary: \"#f5f5f5\",\n backgroundTertiary: \"#ebebeb\",\n foregroundPrimary: \"#000000\",\n foregroundSecondary: \"#525252\",\n borderSubtle: \"#dedede\",\n borderStrong: \"#b8b8b8\",\n }),\n dark: completeMode({\n backgroundPrimary: \"#1f1f24\",\n backgroundSecondary: \"#29292e\",\n backgroundTertiary: \"#333339\",\n foregroundPrimary: \"#ffffff\",\n foregroundSecondary: \"#b7b7c0\",\n borderSubtle: \"#3f3f46\",\n borderStrong: \"#676771\",\n }),\n },\n}\n\nexport const DEFAULT_ORBITWORK_SKIN_ID = \"codex\" as const\n\n/** The former unskinned DS2 palette, retained as the second built-in choice. */\nexport const warmBeige: OrbitworkSkin = {\n version: 1,\n id: \"warm-beige\",\n name: \"Warm Beige\",\n description: \"Orbitwork 原始的海军蓝与暖灰语义配色\",\n modes: {\n light: completeMode({\n backgroundPrimary: \"#f7f6f1\",\n backgroundSecondary: \"#fdfdfc\",\n backgroundTertiary: \"#f1f0ea\",\n foregroundPrimary: \"#333b50\",\n foregroundSecondary: \"#646b7a\",\n borderSubtle: \"#dcdcd7\",\n borderStrong: \"#c2c3c1\",\n }),\n dark: completeMode({\n backgroundPrimary: \"#16171b\",\n backgroundSecondary: \"#1e2025\",\n backgroundTertiary: \"#23252b\",\n foregroundPrimary: \"#ecebe5\",\n foregroundSecondary: \"#92969d\",\n borderSubtle: \"#2a2c33\",\n borderStrong: \"#3f434d\",\n }),\n },\n}\n\nexport const aurora: OrbitworkSkin = {\n version: 1,\n id: \"aurora\",\n name: \"Aurora\",\n description: \"柔和紫色强调与微暖背景\",\n modes: {\n light: {\n backgroundPrimary: \"#fdfcff\",\n backgroundSecondary: \"#f8f5ff\",\n backgroundTertiary: \"#f1ecfb\",\n foregroundPrimary: \"#1d1a26\",\n foregroundSecondary: \"#4c4560\",\n foregroundMuted: \"#4c4560\",\n borderSubtle: \"#ded8ea\",\n borderStrong: \"#c4b5fd\",\n buttonPrimaryBackground: \"#7c3aed\",\n buttonPrimaryForeground: \"#ffffff\",\n chatBackground: \"#fdfcff\",\n userBubbleBackground: \"#f1ecfb\",\n userBubbleForeground: \"#1d1a26\",\n userBubbleBorder: \"#c4b5fd\",\n composerBackground: \"#f8f5ff\",\n composerBorder: \"#c4b5fd\",\n sidebarBackground: \"#f8f5ff\",\n sidebarSelectedBackground: \"#f1ecfb\",\n },\n dark: {\n backgroundPrimary: \"#17141d\",\n backgroundSecondary: \"#201b29\",\n backgroundTertiary: \"#2a2335\",\n foregroundPrimary: \"#eae6f2\",\n foregroundSecondary: \"#b3abc6\",\n foregroundMuted: \"#b3abc6\",\n borderSubtle: \"#393146\",\n borderStrong: \"#6d4aa5\",\n buttonPrimaryBackground: \"#a78bfa\",\n buttonPrimaryForeground: \"#17141d\",\n chatBackground: \"#17141d\",\n userBubbleBackground: \"#2a2335\",\n userBubbleForeground: \"#eae6f2\",\n userBubbleBorder: \"#6d4aa5\",\n composerBackground: \"#201b29\",\n composerBorder: \"#6d4aa5\",\n sidebarBackground: \"#201b29\",\n sidebarSelectedBackground: \"#2a2335\",\n },\n },\n}\n\nexport const forest: OrbitworkSkin = {\n version: 1,\n id: \"forest\",\n name: \"Forest\",\n description: \"克制自然的绿色工作空间\",\n modes: {\n light: {\n backgroundPrimary: \"#fbfdfb\",\n backgroundSecondary: \"#f3f8f5\",\n backgroundTertiary: \"#e9f1ec\",\n foregroundPrimary: \"#16211b\",\n foregroundSecondary: \"#3f5248\",\n foregroundMuted: \"#3f5248\",\n borderSubtle: \"#d6e1da\",\n borderStrong: \"#98d8be\",\n buttonPrimaryBackground: \"#16805b\",\n buttonPrimaryForeground: \"#ffffff\",\n chatBackground: \"#fbfdfb\",\n userBubbleBackground: \"#e9f1ec\",\n userBubbleForeground: \"#16211b\",\n userBubbleBorder: \"#98d8be\",\n composerBackground: \"#f3f8f5\",\n composerBorder: \"#98d8be\",\n sidebarBackground: \"#f3f8f5\",\n sidebarSelectedBackground: \"#e9f1ec\",\n },\n dark: {\n backgroundPrimary: \"#111916\",\n backgroundSecondary: \"#17231e\",\n backgroundTertiary: \"#1e2e27\",\n foregroundPrimary: \"#e4efe8\",\n foregroundSecondary: \"#a7bcb0\",\n foregroundMuted: \"#a7bcb0\",\n borderSubtle: \"#314139\",\n borderStrong: \"#28664f\",\n buttonPrimaryBackground: \"#55d6a0\",\n buttonPrimaryForeground: \"#111916\",\n chatBackground: \"#111916\",\n userBubbleBackground: \"#1e2e27\",\n userBubbleForeground: \"#e4efe8\",\n userBubbleBorder: \"#28664f\",\n composerBackground: \"#17231e\",\n composerBorder: \"#28664f\",\n sidebarBackground: \"#17231e\",\n sidebarSelectedBackground: \"#1e2e27\",\n },\n },\n}\n\n/*\n * Adapted from Craft Agents OSS's MIT-licensed built-in themes. Source attribution stays beside\n * the palettes so future updates preserve provenance:\n * https://github.com/craft-ai-agents/craft-agents-oss/tree/main/apps/electron/resources/themes\n */\nexport const catppuccin: OrbitworkSkin = {\n version: 1,\n id: \"catppuccin\",\n name: \"Catppuccin\",\n description: \"柔和的粉彩色调,适合长时间阅读\",\n modes: {\n light: completeMode({\n backgroundPrimary: \"#eff1f5\",\n backgroundSecondary: \"#e6e9ef\",\n backgroundTertiary: \"#dce0e8\",\n foregroundPrimary: \"#4c4f69\",\n foregroundSecondary: \"#565a75\",\n borderSubtle: \"#ccd0da\",\n borderStrong: \"#9ca0b0\",\n buttonPrimaryBackground: \"#8839ef\",\n buttonPrimaryForeground: \"#ffffff\",\n }),\n dark: completeMode({\n backgroundPrimary: \"#1e1e2e\",\n backgroundSecondary: \"#181825\",\n backgroundTertiary: \"#313244\",\n foregroundPrimary: \"#cdd6f4\",\n foregroundSecondary: \"#bac2de\",\n borderSubtle: \"#45475a\",\n borderStrong: \"#6c7086\",\n buttonPrimaryBackground: \"#cba6f7\",\n buttonPrimaryForeground: \"#1e1e2e\",\n }),\n },\n}\n\nexport const gruvbox: OrbitworkSkin = {\n version: 1,\n id: \"gruvbox\",\n name: \"Gruvbox\",\n description: \"复古而温暖的泥土色工作空间\",\n modes: {\n light: completeMode({\n backgroundPrimary: \"#fbf1c7\",\n backgroundSecondary: \"#ebdbb2\",\n backgroundTertiary: \"#d5c4a1\",\n foregroundPrimary: \"#3c3836\",\n foregroundSecondary: \"#504945\",\n borderSubtle: \"#bdae93\",\n borderStrong: \"#928374\",\n buttonPrimaryBackground: \"#458588\",\n buttonPrimaryForeground: \"#000000\",\n }),\n dark: completeMode({\n backgroundPrimary: \"#282828\",\n backgroundSecondary: \"#32302f\",\n backgroundTertiary: \"#3c3836\",\n foregroundPrimary: \"#ebdbb2\",\n foregroundSecondary: \"#d5c4a1\",\n borderSubtle: \"#504945\",\n borderStrong: \"#665c54\",\n buttonPrimaryBackground: \"#83a598\",\n buttonPrimaryForeground: \"#282828\",\n }),\n },\n}\n\nexport const nord: OrbitworkSkin = {\n version: 1,\n id: \"nord\",\n name: \"Nord\",\n description: \"冷静克制的北境蓝灰色调\",\n modes: {\n light: completeMode({\n backgroundPrimary: \"#eceff4\",\n backgroundSecondary: \"#e5e9f0\",\n backgroundTertiary: \"#d8dee9\",\n foregroundPrimary: \"#2e3440\",\n foregroundSecondary: \"#3b4252\",\n borderSubtle: \"#c2c9d4\",\n borderStrong: \"#8f99a9\",\n buttonPrimaryBackground: \"#5e81ac\",\n buttonPrimaryForeground: \"#000000\",\n }),\n dark: completeMode({\n backgroundPrimary: \"#2e3440\",\n backgroundSecondary: \"#3b4252\",\n backgroundTertiary: \"#434c5e\",\n foregroundPrimary: \"#eceff4\",\n foregroundSecondary: \"#d8dee9\",\n borderSubtle: \"#4c566a\",\n borderStrong: \"#60708a\",\n buttonPrimaryBackground: \"#88c0d0\",\n buttonPrimaryForeground: \"#2e3440\",\n }),\n },\n}\n\nexport const oneDarkPro: OrbitworkSkin = {\n version: 1,\n id: \"one-dark-pro\",\n name: \"One Dark Pro\",\n description: \"均衡清晰的 Atom 风格配色\",\n modes: {\n light: completeMode({\n backgroundPrimary: \"#fafafa\",\n backgroundSecondary: \"#f0f0f0\",\n backgroundTertiary: \"#e5e5e6\",\n foregroundPrimary: \"#383a42\",\n foregroundSecondary: \"#4f525d\",\n borderSubtle: \"#d0d0d1\",\n borderStrong: \"#a0a1a7\",\n buttonPrimaryBackground: \"#4078f2\",\n buttonPrimaryForeground: \"#000000\",\n }),\n dark: completeMode({\n backgroundPrimary: \"#282c34\",\n backgroundSecondary: \"#21252b\",\n backgroundTertiary: \"#2f343f\",\n foregroundPrimary: \"#abb2bf\",\n foregroundSecondary: \"#c8ccd4\",\n borderSubtle: \"#3e4451\",\n borderStrong: \"#5c6370\",\n buttonPrimaryBackground: \"#61afef\",\n buttonPrimaryForeground: \"#20232a\",\n }),\n },\n}\n\nexport const rosePine: OrbitworkSkin = {\n version: 1,\n id: \"rose-pine\",\n name: \"Rosé Pine\",\n description: \"温暖优雅的玫瑰灰紫色调\",\n modes: {\n light: completeMode({\n backgroundPrimary: \"#faf4ed\",\n backgroundSecondary: \"#fffaf3\",\n backgroundTertiary: \"#f2e9e1\",\n foregroundPrimary: \"#575279\",\n foregroundSecondary: \"#625d82\",\n borderSubtle: \"#dfdad9\",\n borderStrong: \"#9893a5\",\n buttonPrimaryBackground: \"#907aa9\",\n buttonPrimaryForeground: \"#191724\",\n }),\n dark: completeMode({\n backgroundPrimary: \"#191724\",\n backgroundSecondary: \"#1f1d2e\",\n backgroundTertiary: \"#26233a\",\n foregroundPrimary: \"#e0def4\",\n foregroundSecondary: \"#c4a7e7\",\n borderSubtle: \"#403d52\",\n borderStrong: \"#6e6a86\",\n buttonPrimaryBackground: \"#c4a7e7\",\n buttonPrimaryForeground: \"#191724\",\n }),\n },\n}\n\nexport const solarized: OrbitworkSkin = {\n version: 1,\n id: \"solarized\",\n name: \"Solarized\",\n description: \"低疲劳、精确平衡的经典配色\",\n modes: {\n light: completeMode({\n backgroundPrimary: \"#fdf6e3\",\n backgroundSecondary: \"#eee8d5\",\n backgroundTertiary: \"#e4ddc7\",\n foregroundPrimary: \"#4b626a\",\n foregroundSecondary: \"#455b62\",\n borderSubtle: \"#d3cbb7\",\n borderStrong: \"#93a1a1\",\n buttonPrimaryBackground: \"#268bd2\",\n buttonPrimaryForeground: \"#001f27\",\n }),\n dark: completeMode({\n backgroundPrimary: \"#002b36\",\n backgroundSecondary: \"#073642\",\n backgroundTertiary: \"#0b4654\",\n foregroundPrimary: \"#eee8d5\",\n foregroundSecondary: \"#d5d1c4\",\n borderSubtle: \"#23515d\",\n borderStrong: \"#586e75\",\n buttonPrimaryBackground: \"#268bd2\",\n buttonPrimaryForeground: \"#001f27\",\n }),\n },\n}\n\nexport const BUILTIN_ORBITWORK_SKINS = [\n codex,\n warmBeige,\n aurora,\n forest,\n catppuccin,\n gruvbox,\n nord,\n oneDarkPro,\n rosePine,\n solarized,\n] as const\n","import type { ResolvedTheme } from \"./skin.ts\"\n\n/** Runtime layers may override only this complete neutral group. */\nexport const TENANT_THEME_COLOR_KEYS = [\n \"bg\",\n \"surface\",\n \"surface2\",\n \"text\",\n \"text2\",\n \"text3\",\n \"border\",\n \"borderStrong\",\n] as const\n\nexport type TenantThemeColors = Record<(typeof TENANT_THEME_COLOR_KEYS)[number], string>\n\n/** Localized brand copy. Assets stay outside locale buckets. */\nexport type TenantBranding = {\n productName: string\n companyName: string\n claim?: string\n claimNote?: string\n slogan?: string\n}\n\nexport type LocalizedBranding = Record<string, TenantBranding>\n\n/**\n * GET /api/v1/tenant/theme response.\n *\n * Every supplied mode is a complete neutral group. Keeping light and dark\n * separate prevents a runtime :root override from leaking one palette into\n * both DS2 modes.\n */\nexport type TenantTheme = {\n name: string\n /** Brand image. Empty string means fall through to the host/brand layer. */\n logo: string\n favicon?: string\n modes: Partial<Record<ResolvedTheme, TenantThemeColors>>\n typography: {\n fontSans: string\n fontMono: string\n }\n /** en-US is the required baseline; other locale buckets are optional. */\n branding: LocalizedBranding\n}\n\nexport const UNIFIED_NEUTRAL_TOKENS = [\n \"--ow-bg\",\n \"--ow-surface\",\n \"--ow-surface-2\",\n \"--ow-text\",\n \"--ow-text-2\",\n \"--ow-text-3\",\n \"--ow-border\",\n \"--ow-border-strong\",\n] as const\n\nexport const BRAND_ACTION_TOKENS = [\n \"--ow-btn-primary-bg\",\n \"--ow-btn-primary-hover\",\n \"--ow-btn-primary-press\",\n \"--ow-btn-primary-fg\",\n \"--ow-beacon\",\n \"--ow-beacon-idle\",\n \"--ow-accent-dot\",\n \"--ow-data-today\",\n] as const\n\nexport const UNIFIED_TYPOGRAPHY_TOKENS = [\"--ow-font-sans\", \"--ow-font-mono\"] as const\n\nexport type UnifiedNeutralToken = (typeof UNIFIED_NEUTRAL_TOKENS)[number]\nexport type BrandActionToken = (typeof BRAND_ACTION_TOKENS)[number]\nexport type BrandThemeToken = UnifiedNeutralToken | BrandActionToken\nexport type UnifiedTypographyToken = (typeof UNIFIED_TYPOGRAPHY_TOKENS)[number]\nexport type UnifiedThemeToken = BrandThemeToken | UnifiedTypographyToken\n\n/** Build-time validated OEM brand input consumed by the UI merge layer. */\nexport type BrandTheme = {\n id: string\n logo?: string\n favicon?: string\n modes: Partial<Record<ResolvedTheme, Partial<Record<BrandThemeToken, string>>>>\n typography?: {\n fontSans: string\n fontMono: string\n }\n branding?: LocalizedBranding\n}\n"]}
@@ -0,0 +1,111 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/lib/browser-annotation-popup.ts
2
+ var BROWSER_ANNOTATION_PROPERTY_DEFS = [
3
+ { key: "textContent", label: "\u6587\u672C", cssProp: "", type: "text" },
4
+ { key: "color", label: "\u6587\u672C\u989C\u8272", cssProp: "color", type: "color" },
5
+ { key: "backgroundColor", label: "\u80CC\u666F", cssProp: "backgroundColor", type: "color" },
6
+ { key: "opacity", label: "Opacity", cssProp: "opacity", type: "number", step: 0.1, min: 0, max: 1 },
7
+ { key: "fontFamily", label: "\u5B57\u4F53", cssProp: "fontFamily", type: "select", options: [] },
8
+ { key: "fontSize", label: "\u5B57\u53F7", cssProp: "fontSize", type: "number", unit: "px" },
9
+ {
10
+ key: "fontWeight",
11
+ label: "\u5B57\u91CD",
12
+ cssProp: "fontWeight",
13
+ type: "select",
14
+ options: ["100", "200", "300", "400", "500", "600", "700", "800", "900"]
15
+ },
16
+ { key: "borderRadius", label: "\u8FB9\u6846\u5706\u89D2\u534A\u5F84", cssProp: "borderRadius", type: "number", unit: "px" },
17
+ { key: "borderColor", label: "\u8FB9\u6846\u989C\u8272", cssProp: "borderColor", type: "color" },
18
+ { key: "borderWidth", label: "\u8FB9\u6846\u5BBD\u5EA6", cssProp: "borderWidth", type: "number", unit: "px" },
19
+ { key: "width", label: "\u5BBD\u5EA6", cssProp: "width", type: "number", unit: "px" },
20
+ { key: "height", label: "\u9AD8\u5EA6", cssProp: "height", type: "number", unit: "px" },
21
+ { key: "padding", label: "\u5185\u8FB9\u8DDD", cssProp: "padding", type: "spacing" },
22
+ { key: "margin", label: "\u5916\u8FB9\u8DDD", cssProp: "margin", type: "spacing" }
23
+ ];
24
+ var BROWSER_ANNOTATION_POPUP_STYLES = `
25
+ [data-slot="browser-annotation-popup"]{all:initial;box-sizing:border-box;
26
+ /* \u2500\u2500 DS 2.0 \u6D45\u6863\u7EC8\u503C\u955C\u50CF\u8868\uFF08\u5DE6\uFF1D\u672C\u5730\u9694\u79BB\u952E\uFF0C\u53F3\u6CE8\u91CA\uFF1D\u6240\u6284\u7684 DS 2.0 token\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
27
+ --ow-annotation-primary:#0F1B3D; /* --ow-btn-primary-bg\uFF08\uFF1D--ow-accent / --ow-navy\uFF09 */
28
+ --ow-annotation-primary-hover:#202942; /* --ow-btn-primary-hover */
29
+ --ow-annotation-on-fill:#F7F6F1; /* --ow-on-fill\uFF08\uFF1D--ow-btn-primary-fg\uFF1B\u4E0A\u6E38 text \u547D\u540D\u53EA\u5728\u5BFC\u5165\u8FB9\u754C\u5F52\u4E00\uFF09 */
30
+ --ow-annotation-bg:#FFFFFF; /* --ow-popover-bg \u2014\u2014 \u6D6E\u5C42\u81EA\u5DF1\u7684\u9762 */
31
+ --ow-annotation-bg-muted:#F1F0EA; /* --ow-surface-2\uFF08\u5D4C\u5957\u4E95/\u8F93\u5165\u5E95/\u8868\u5934\u5E95\uFF09\uFF0C\u6D45\u6863\u4E0E --ow-hover-pop \u540C\u503C */
32
+ --ow-annotation-bg-hover:#ECEBE5; /* --ow-press-pop \u2014\u2014 \u6BD4 bg-muted \u518D\u6DF1\u4E00\u6863\uFF08\xA75 \u5F39\u5C42\u4E0A\u8D70 pop \u6863\uFF09 */
33
+ --ow-annotation-fg:#333B50; /* --ow-text */
34
+ --ow-annotation-fg-muted:#646B7A; /* --ow-text-2 */
35
+ --ow-annotation-fg-subtle:#646B7A; /* --ow-text-3\uFF08\u53EF\u8BFB\u526F\u6587\u672C\u6863\uFF09 */
36
+ --ow-annotation-fg-placeholder:#646B7A; /* --ow-placeholder\uFF08\u6D45\u6863\uFF1D--ow-text-3\uFF09 */
37
+ --ow-annotation-line:#DCDCD7; /* --ow-border\uFF08\uFF1D--ow-input-border\uFF09\u2014\u2014 \u63CF\u8FB9\u4E0E\u5206\u9694\u7EBF rest */
38
+ --ow-annotation-line-strong:#C2C3C1; /* --ow-border-strong \u2014\u2014 \u8F93\u5165 hover \u6863\uFF08\xA76 \u4E09\u6001\u8FB9\u6846\uFF09 */
39
+ --ow-annotation-shadow-pop:0 4px 12px rgba(15, 27, 61, 0.10); /* --ow-shadow-pop */
40
+ /* \u5B57\u4F53\u6808\u4E5F\u8981\u955C\u50CF\uFF1A\u6CE8\u8FDB\u7B2C\u4E09\u65B9\u9875\u65F6 --ow-font-sans \u4E0D\u5728\u573A\uFF0C\u56DE\u9000\u503C\u5FC5\u987B\u9010\u5B57\u6284 DS 2.0 \u7684\u6808
41
+ \uFF08\xA78 \u5DF2\u77E5\u5751\uFF1Aemoji \u65CF\u5FC5\u987B\u7F6E\u4E8E\u6808\u5C3E\uFF0CLinux \u6570\u5B57\u6E32\u67D3\u7F3A\u9677\uFF0C\u52FF\u8C03\u5E8F\uFF09\u3002 */
42
+ --ow-annotation-font-sans:'HarmonyOS Sans SC', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji'; /* --ow-font-sans */
43
+ /* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
44
+ position:fixed;z-index:2147483647;font-family:var(--ow-annotation-font-sans);font-size:var(--ow-fs-ui, 13px);color:var(--ow-annotation-fg);pointer-events:auto;width:320px;background:var(--ow-annotation-bg);border:var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);border-radius:var(--ow-radius-lg, 12px);box-shadow:var(--ow-annotation-shadow-pop);overflow:hidden;display:flex;flex-direction:column;}
45
+ [data-slot="browser-annotation-popup"][data-preview="true"]{position:relative;z-index:1;max-height:100%;}
46
+ [data-slot="browser-annotation-popup"] *{box-sizing:border-box;}
47
+ /* \u5DE6\u4FA7\u7AD6\u6761\u662F\u7EAF\u88C5\u9970\u7684\u4E00\u6761\u810A\uFF0C\u4E0D\u7F16\u7801\u4EFB\u4F55\u72B6\u6001\u2014\u2014\u6309 \xA74 R2/R1 \u5B83\u6CA1\u6709\u8D44\u683C\u62FF\u63D0\u8272\uFF0C\u8D70\u4E2D\u6027\u63CF\u8FB9\u3002 */
48
+ [data-slot="browser-annotation-popup"] [data-ow-part="collapsed-view"]{display:flex;align-items:center;gap:var(--ow-space-15, 6px);padding:10px var(--ow-space-3, 12px);border-left:3px solid var(--ow-annotation-line-strong);border-radius:var(--ow-radius-lg, 12px);}
49
+ [data-slot="browser-annotation-popup"] [data-ow-part="expanded-view"]{display:none;flex-direction:column;overflow:hidden;flex:1;min-height:0;}
50
+ [data-slot="browser-annotation-popup"][data-ow-state="expanded"] [data-ow-part="collapsed-view"]{display:none;}
51
+ [data-slot="browser-annotation-popup"][data-ow-state="expanded"] [data-ow-part="expanded-view"]{display:flex;}
52
+ [data-slot="browser-annotation-popup"][data-ow-state="expanded"][data-placement="flipped"] [data-ow-part="expanded-view"]{flex-direction:column-reverse;}
53
+ [data-slot="browser-annotation-popup"][data-ow-state="expanded"][data-placement="flipped"]{border-radius:var(--ow-radius-lg, 12px);}
54
+ [data-slot="browser-annotation-popup"] [data-ow-part="top"]{display:flex;align-items:center;gap:var(--ow-space-2, 8px);padding:10px var(--ow-space-3, 12px);border-left:3px solid var(--ow-annotation-line-strong);border-radius:var(--ow-radius-lg, 12px) var(--ow-radius-lg, 12px) 0 0;flex-shrink:0;}
55
+ /* \u5DE5\u5177\u6761\u6309\u94AE\u8D70 ghost\uFF08DS 2.0 P6-7\uFF09\uFF1A\u9759\u6B62\u900F\u660E\uFF0Chover \u624D\u4E0A\u5E95\uFF0Cpress \u518D\u6DF1\u4E00\u6863\u3002
56
+ \u4E4B\u524D\u9759\u6B62\u5C31\u5E26 bg-muted\uFF0C\u7B49\u4E8E\u4E00\u76F4\u662F\u4E2A\u5B9E\u5FC3 chip\uFF0C\u8DDF \xA75\u300C\u8D34\u5730\u4E0D\u4E0A\u5E95\u300D\u5BF9\u4E0D\u4E0A\u3002 */
57
+ [data-slot="browser-annotation-popup"] [data-ow-part="settings-btn"]{all:initial;cursor:pointer;font:inherit;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--ow-radius-sm, 8px);background:transparent;color:var(--ow-annotation-fg-muted);flex-shrink:0;transition:background var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1));font-size:0;}
58
+ [data-slot="browser-annotation-popup"] [data-ow-part="settings-btn"]:hover{background:var(--ow-annotation-bg-muted);}
59
+ [data-slot="browser-annotation-popup"] [data-ow-part="settings-btn"]:active{background:var(--ow-annotation-bg-hover);}
60
+ [data-slot="browser-annotation-popup"] [data-ow-part="input"]{all:initial;flex:1;font:inherit;font-size:var(--ow-fs-ui, 13px);color:var(--ow-annotation-fg);padding:var(--ow-space-05, 2px) 0;border:none;outline:none;background:transparent;min-width:0;}
61
+ [data-slot="browser-annotation-popup"] [data-ow-part="input"]::placeholder{color:var(--ow-annotation-fg-placeholder);}
62
+ /* \u63D0\u4EA4\u94AE\u4E0E\u540C\u4E00\u884C\u7684 settings-btn \u540C\u6863\uFF1A28\xD728\uFF08\xA77 \u63A7\u4EF6\u9AD8 {28,32,40}\uFF0C\u56FE\u6807\u94AE \u226528\xD728\uFF09\u3002
63
+ \u65E7\u503C 30\xD730 \u4E0D\u5728\u6863\u5185\uFF0C\u4E14\u4E0E\u884C\u5185\u90BB\u5C45\u5BF9\u4E0D\u9F50\u3002 */
64
+ [data-slot="browser-annotation-popup"] [data-ow-part="submit-btn"]{all:initial;cursor:pointer;font:inherit;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--ow-radius-sm, 8px);background:transparent;color:var(--ow-annotation-fg-subtle);flex-shrink:0;transition:background var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1)),color var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1));}
65
+ [data-slot="browser-annotation-popup"] [data-ow-part="submit-btn"]:hover{background:var(--ow-annotation-bg-muted);}
66
+ /* \u6709\u5B57\u624D\u662F\u300C\u80FD\u63D0\u4EA4\u4E86\u300D\u2014\u2014\u5B9E\u5E95\uFF0B\u63D0\u8272\uFF0C\u5F62\u72B6\u4E0D\u53D8\uFF0C\u989C\u8272\u662F\u7B2C\u4E8C\u7F16\u7801\uFF08R1\uFF09\u3002 */
67
+ [data-slot="browser-annotation-popup"] [data-ow-part="submit-btn"][data-ow-state="has-text"]{background:var(--ow-annotation-primary);color:var(--ow-annotation-on-fill);}
68
+ [data-slot="browser-annotation-popup"] [data-ow-part="submit-btn"][data-ow-state="has-text"]:hover{background:var(--ow-annotation-primary-hover);}
69
+ /* \xA76\uFF1A\u7126\u70B9\u73AF 2px + 2px \u7559\u767D\u7F1D\uFF0C\u4E0D\u9760 all:initial \u4E4B\u540E\u6D88\u5931\u7684\u6D4F\u89C8\u5668\u9ED8\u8BA4\u73AF\u3002
70
+ \u73AF\u8272\u5F15 primary\uFF1ADS 2.0 \u6D45\u6863 --ow-focus-ring \u4E0E --ow-btn-primary-bg \u540C\u4E3A #0F1B3D\uFF0C
71
+ \u4E0D\u53E6\u7ACB\u952E\uFF1B\u82E5\u4E0A\u6E38\u628A\u4E24\u8005\u62C6\u5F00\uFF0C\u8FD9\u91CC\u8981\u8DDF\u7740\u8865 --ow-annotation-focus-ring\u3002 */
72
+ [data-slot="browser-annotation-popup"] [data-ow-part="settings-btn"]:focus-visible,[data-slot="browser-annotation-popup"] [data-ow-part="submit-btn"]:focus-visible,[data-slot="browser-annotation-popup"] [data-ow-part="cancel"]:focus-visible,[data-slot="browser-annotation-popup"] [data-ow-part="confirm"]:focus-visible{outline:var(--ow-focus-ring-w, 2px) solid var(--ow-annotation-primary);outline-offset:var(--ow-focus-ring-offset, 2px);}
73
+ [data-slot="browser-annotation-popup"] [data-ow-part="tag"]{display:flex;align-items:center;justify-content:space-between;padding:var(--ow-space-15, 6px) 14px;background:var(--ow-annotation-bg-muted);font-weight:700;font-size:var(--ow-fs-ui, 13px);color:var(--ow-annotation-fg);flex-shrink:0;}
74
+ /* \u62D6\u62FD\u63E1\u628A\u662F\u5B57\u5F62\u4E0D\u662F\u88C5\u9970\u8272\u5757\uFF0C\xA77\u300C\u56FE\u6807\u8272\u53EA\u53D6 text/text-2/text-3\u300D\u2014\u2014\u539F fg-faint(#C2C3C1)
75
+ \u5728 DS 2.0 \u91CC\u662F --ow-border-strong\uFF0C\u6CA1\u6709\u5BF9\u5E94\u7684\u6587\u5B57\u6863\uFF0C\u6545\u5E76\u5165 text-3\u3002 */
76
+ [data-slot="browser-annotation-popup"] [data-ow-part="tag-drag"]{color:var(--ow-annotation-fg-subtle);cursor:grab;font-size:var(--ow-fs-body, 14px);letter-spacing:1px;}
77
+ [data-slot="browser-annotation-popup"] [data-ow-part="props"]{padding:var(--ow-space-05, 2px) 14px var(--ow-space-1, 4px);overflow-y:auto;flex:1;min-height:0;}
78
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop"]{display:flex;align-items:center;padding:var(--ow-space-15, 6px) 0;border-bottom: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);gap:10px;}
79
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop"]:last-child{border-bottom:none;}
80
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-label"]{width:60px;flex-shrink:0;font-size:var(--ow-fs-mark-md, 11px);color:var(--ow-annotation-fg);font-weight:500;}
81
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-value"]{flex:1;display:flex;align-items:center;gap:5px;position:relative;}
82
+ /* \u8F93\u5165\u7C7B\u5E95\u8272\u8D70 --ow-surface-2 \u7684\u955C\u50CF\uFF08\xA75\u300C\u5D4C\u5957\u4E95\uFF1D\u8F93\u5165\u5E95\u300D\uFF09\uFF0C\u5750\u5728 popover \u767D\u9762\u4E0A\u624D\u8BFB\u5F97\u51FA\u4E95\uFF1B
83
+ \u4E09\u6001\u8FB9\u6846 rest(line) \u2192 hover(line-strong) \u2192 focus(focus-ring\uFF0C\u6D45\u6863\u540C primary)\uFF0C\xA76\u3002 */
84
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-input"]{all:initial;font:inherit;font-size:var(--ow-fs-mark-md, 11px);color:var(--ow-annotation-fg);box-sizing:border-box;height:28px;padding:0 var(--ow-space-2, 8px);border: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);border-radius:var(--ow-radius-xs, 6px);width:100%;outline:none;background:var(--ow-annotation-bg-muted);}
85
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-input"]:hover{border-color:var(--ow-annotation-line-strong);}
86
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-input"]:focus{border-color:var(--ow-annotation-primary);}
87
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-unit"]{font-size:var(--ow-fs-mark-sm, 10px);color:var(--ow-annotation-fg-subtle);position:absolute;right:8px;pointer-events:none;}
88
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-select"]{all:initial;font:inherit;font-size:var(--ow-fs-mark-md, 11px);color:var(--ow-annotation-fg);box-sizing:border-box;height:28px;padding:0 var(--ow-space-2, 8px);border: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);border-radius:var(--ow-radius-xs, 6px);width:100%;outline:none;appearance:auto;cursor:pointer;background:var(--ow-annotation-bg-muted);}
89
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-select"]:hover{border-color:var(--ow-annotation-line-strong);}
90
+ [data-slot="browser-annotation-popup"] [data-ow-part="prop-select"]:focus{border-color:var(--ow-annotation-primary);}
91
+ /* \xA77 \u5F62\u72B6\u8868\uFF1A999 \u53EA\u7559\u7ED9\u5E26\u72B6\u6001\u70B9/\u8BA1\u6570\u7684 chip \u4E0E\u771F\u5706\u4EF6\uFF08\u5934\u50CF/\u72B6\u6001\u70B9\uFF09\u3002\u8272\u677F\u662F\u4E2A\u53D6\u8272\u63A7\u4EF6\uFF0C
92
+ \u843D\u6309\u94AE\u6863 8px\uFF08\u539F 50% \u5706\u70B9\u662F V1 \u8272\u677F\u6BCD\u9898\uFF09\u3002 */
93
+ [data-slot="browser-annotation-popup"] [data-ow-part="color-swatch"]{width:20px;height:20px;border-radius:var(--ow-radius-sm, 8px);border: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);flex-shrink:0;cursor:pointer;position:relative;overflow:hidden;}
94
+ [data-slot="browser-annotation-popup"] [data-ow-part="color-swatch"]:hover{border-color:var(--ow-annotation-line-strong);}
95
+ [data-slot="browser-annotation-popup"] [data-ow-part="color-swatch"] input{position:absolute;inset:-4px;width:28px;height:28px;opacity:0;cursor:pointer;}
96
+ [data-slot="browser-annotation-popup"] [data-ow-part="spacing"]{display:flex;gap:3px;flex:1;}
97
+ [data-slot="browser-annotation-popup"] [data-ow-part="spacing"] input{all:initial;font:inherit;font-size:var(--ow-fs-mark-sm, 10px);color:var(--ow-annotation-fg);box-sizing:border-box;height:28px;padding:0 3px;border: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);border-radius:var(--ow-radius-xs, 6px);width:100%;text-align:center;outline:none;background:var(--ow-annotation-bg-muted);}
98
+ [data-slot="browser-annotation-popup"] [data-ow-part="spacing"] input:hover{border-color:var(--ow-annotation-line-strong);}
99
+ [data-slot="browser-annotation-popup"] [data-ow-part="spacing"] input:focus{border-color:var(--ow-annotation-primary);}
100
+ [data-slot="browser-annotation-popup"] [data-ow-part="actions"]{display:flex;align-items:center;justify-content:space-between;padding:var(--ow-space-2, 8px) var(--ow-space-3, 12px);border-top: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);flex-shrink:0;}
101
+ [data-slot="browser-annotation-popup"] [data-ow-part="cancel"]{all:initial;cursor:pointer;font:inherit;font-weight:500;font-size:var(--ow-fs-ui, 13px);color:var(--ow-annotation-fg);box-sizing:border-box;height:32px;padding:0 14px;border:none;border-radius:var(--ow-radius-sm, 8px);background:var(--ow-annotation-bg-muted);transition:background var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1));display:inline-flex;align-items:center;justify-content:center;}
102
+ [data-slot="browser-annotation-popup"] [data-ow-part="cancel"]:hover{background:var(--ow-annotation-bg-hover);}
103
+ [data-slot="browser-annotation-popup"] [data-ow-part="confirm"]{all:initial;cursor:pointer;font:inherit;font-weight:500;font-size:var(--ow-fs-ui, 13px);box-sizing:border-box;height:32px;padding:0 14px;border:none;border-radius:var(--ow-radius-sm, 8px);background:var(--ow-annotation-primary);color:var(--ow-annotation-on-fill);transition:background var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1));display:inline-flex;align-items:center;justify-content:center;gap:var(--ow-space-1, 4px);}
104
+ [data-slot="browser-annotation-popup"] [data-ow-part="confirm"]:hover{background:var(--ow-annotation-primary-hover);}
105
+ `;
106
+
107
+
108
+
109
+
110
+ exports.BROWSER_ANNOTATION_PROPERTY_DEFS = BROWSER_ANNOTATION_PROPERTY_DEFS; exports.BROWSER_ANNOTATION_POPUP_STYLES = BROWSER_ANNOTATION_POPUP_STYLES;
111
+ //# sourceMappingURL=chunk-QS55W5Q5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/wowzin/projects/orbit/packages/ui/dist/chunk-QS55W5Q5.cjs","../src/lib/browser-annotation-popup.ts"],"names":[],"mappings":"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","file":"/Users/wowzin/projects/orbit/packages/ui/dist/chunk-QS55W5Q5.cjs","sourcesContent":[null,"export type BrowserAnnotationPropertyType = \"text\" | \"color\" | \"number\" | \"select\" | \"spacing\"\n\nexport interface BrowserAnnotationPropertyDefinition {\n key: string\n label: string\n cssProp: string\n type: BrowserAnnotationPropertyType\n unit?: string\n options?: readonly string[]\n step?: number\n min?: number\n max?: number\n}\n\n/**\n * Annotation properties shared by the WebView runtime and the React preview.\n * Keep this module free of React and DOM imports so Electron can bundle it in\n * the sandboxed guest preload without pulling in the component library.\n */\nexport const BROWSER_ANNOTATION_PROPERTY_DEFS: readonly BrowserAnnotationPropertyDefinition[] = [\n { key: \"textContent\", label: \"文本\", cssProp: \"\", type: \"text\" },\n { key: \"color\", label: \"文本颜色\", cssProp: \"color\", type: \"color\" },\n { key: \"backgroundColor\", label: \"背景\", cssProp: \"backgroundColor\", type: \"color\" },\n { key: \"opacity\", label: \"Opacity\", cssProp: \"opacity\", type: \"number\", step: 0.1, min: 0, max: 1 },\n { key: \"fontFamily\", label: \"字体\", cssProp: \"fontFamily\", type: \"select\", options: [] },\n { key: \"fontSize\", label: \"字号\", cssProp: \"fontSize\", type: \"number\", unit: \"px\" },\n {\n key: \"fontWeight\",\n label: \"字重\",\n cssProp: \"fontWeight\",\n type: \"select\",\n options: [\"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\"],\n },\n { key: \"borderRadius\", label: \"边框圆角半径\", cssProp: \"borderRadius\", type: \"number\", unit: \"px\" },\n { key: \"borderColor\", label: \"边框颜色\", cssProp: \"borderColor\", type: \"color\" },\n { key: \"borderWidth\", label: \"边框宽度\", cssProp: \"borderWidth\", type: \"number\", unit: \"px\" },\n { key: \"width\", label: \"宽度\", cssProp: \"width\", type: \"number\", unit: \"px\" },\n { key: \"height\", label: \"高度\", cssProp: \"height\", type: \"number\", unit: \"px\" },\n { key: \"padding\", label: \"内边距\", cssProp: \"padding\", type: \"spacing\" },\n { key: \"margin\", label: \"外边距\", cssProp: \"margin\", type: \"spacing\" },\n]\n\n/**\n * Isolated light-surface skin used inside arbitrary third-party pages. The\n * scoped semantic variables prevent host-page CSS variables from changing the\n * popup while keeping every visual value in this Orbitwork UI-owned source.\n *\n * DS 2.0 契约(P6-7 / W4 去痕):这段 CSS 注进的是**第三方页面**,全局 `--ow-*` token 表\n * 不在场,所以 `var(--ow-x, y)` 里真正生效的永远是回退值 y —— 这份 `--ow-annotation-*`\n * 就是 DS token 的镜像,是本文件唯一允许出现字面色值的地方。规则块里一律零裸色:\n * 新值先在这里立一个 `--ow-annotation-*`(值抄 DS 2.0 浅档终值),再去规则里引。\n *\n * 表里每行右侧注释=它抄的那个 DS 2.0 token 名;终值出自 `src/tokens/{base,metrics}.ts` +\n * `src/tokens/light.ts`(解析后与 `contracts/ds2-spec.json` 的 light 档逐值一致)。\n * 改值的顺序永远是「先改 DS token,再回来同步这张表」,两边不许各自漂。\n *\n * **单主题(恒浅档)是有意的决定**:浮层落在任意第三方页面上,宿主页的明暗与我们无关,\n * 我们也拿不到自己的 `[data-theme]`;跟着宿主猜主题只会得到一个半明半暗的壳。所以这张表\n * 恒取 DS 2.0 **浅档**终值,浮层永远是一块自带 `--ow-popover-bg` 白面 + 1px `--ow-border`\n * + `--ow-shadow-pop` 的离地卡片(§5 立面:悬浮层永远保留 1px 边框),靠自己的立面立住,\n * 不靠宿主底色。`data-preview=\"true\"`(应用内 React 预览)沿用同一张表,两处所见一致。\n *\n * 圆角走 `--ow-radius-lg`(12):浮层是 popover/卡片档(§7 形状表 12=卡片/popover/toast),\n * 不是 modal 档;旧写法 `var(--ow-radius-modal, 14px)` 既走错语义档、14 又是形状表外的\n * 自造值(表内只有 4/6/8/10/12/16/999)。\n *\n * `data-slot` / `data-ow-part` 是与 desktop preload(webviewPreload.ts createPopup)和\n * BrowserAnnotationPopupView 之间的三方约定,改动要三处同步。\n */\nexport const BROWSER_ANNOTATION_POPUP_STYLES = `\n[data-slot=\"browser-annotation-popup\"]{all:initial;box-sizing:border-box;\n/* ── DS 2.0 浅档终值镜像表(左=本地隔离键,右注释=所抄的 DS 2.0 token)───────────── */\n--ow-annotation-primary:#0F1B3D; /* --ow-btn-primary-bg(=--ow-accent / --ow-navy) */\n--ow-annotation-primary-hover:#202942; /* --ow-btn-primary-hover */\n--ow-annotation-on-fill:#F7F6F1; /* --ow-on-fill(=--ow-btn-primary-fg;上游 text 命名只在导入边界归一) */\n--ow-annotation-bg:#FFFFFF; /* --ow-popover-bg —— 浮层自己的面 */\n--ow-annotation-bg-muted:#F1F0EA; /* --ow-surface-2(嵌套井/输入底/表头底),浅档与 --ow-hover-pop 同值 */\n--ow-annotation-bg-hover:#ECEBE5; /* --ow-press-pop —— 比 bg-muted 再深一档(§5 弹层上走 pop 档) */\n--ow-annotation-fg:#333B50; /* --ow-text */\n--ow-annotation-fg-muted:#646B7A; /* --ow-text-2 */\n--ow-annotation-fg-subtle:#646B7A; /* --ow-text-3(可读副文本档) */\n--ow-annotation-fg-placeholder:#646B7A; /* --ow-placeholder(浅档=--ow-text-3) */\n--ow-annotation-line:#DCDCD7; /* --ow-border(=--ow-input-border)—— 描边与分隔线 rest */\n--ow-annotation-line-strong:#C2C3C1; /* --ow-border-strong —— 输入 hover 档(§6 三态边框) */\n--ow-annotation-shadow-pop:0 4px 12px rgba(15, 27, 61, 0.10); /* --ow-shadow-pop */\n/* 字体栈也要镜像:注进第三方页时 --ow-font-sans 不在场,回退值必须逐字抄 DS 2.0 的栈\n (§8 已知坑:emoji 族必须置于栈尾,Linux 数字渲染缺陷,勿调序)。 */\n--ow-annotation-font-sans:'HarmonyOS Sans SC', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji'; /* --ow-font-sans */\n/* ──────────────────────────────────────────────────────────────────────────────── */\nposition:fixed;z-index:2147483647;font-family:var(--ow-annotation-font-sans);font-size:var(--ow-fs-ui, 13px);color:var(--ow-annotation-fg);pointer-events:auto;width:320px;background:var(--ow-annotation-bg);border:var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);border-radius:var(--ow-radius-lg, 12px);box-shadow:var(--ow-annotation-shadow-pop);overflow:hidden;display:flex;flex-direction:column;}\n[data-slot=\"browser-annotation-popup\"][data-preview=\"true\"]{position:relative;z-index:1;max-height:100%;}\n[data-slot=\"browser-annotation-popup\"] *{box-sizing:border-box;}\n/* 左侧竖条是纯装饰的一条脊,不编码任何状态——按 §4 R2/R1 它没有资格拿提色,走中性描边。 */\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"collapsed-view\"]{display:flex;align-items:center;gap:var(--ow-space-15, 6px);padding:10px var(--ow-space-3, 12px);border-left:3px solid var(--ow-annotation-line-strong);border-radius:var(--ow-radius-lg, 12px);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"expanded-view\"]{display:none;flex-direction:column;overflow:hidden;flex:1;min-height:0;}\n[data-slot=\"browser-annotation-popup\"][data-ow-state=\"expanded\"] [data-ow-part=\"collapsed-view\"]{display:none;}\n[data-slot=\"browser-annotation-popup\"][data-ow-state=\"expanded\"] [data-ow-part=\"expanded-view\"]{display:flex;}\n[data-slot=\"browser-annotation-popup\"][data-ow-state=\"expanded\"][data-placement=\"flipped\"] [data-ow-part=\"expanded-view\"]{flex-direction:column-reverse;}\n[data-slot=\"browser-annotation-popup\"][data-ow-state=\"expanded\"][data-placement=\"flipped\"]{border-radius:var(--ow-radius-lg, 12px);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"top\"]{display:flex;align-items:center;gap:var(--ow-space-2, 8px);padding:10px var(--ow-space-3, 12px);border-left:3px solid var(--ow-annotation-line-strong);border-radius:var(--ow-radius-lg, 12px) var(--ow-radius-lg, 12px) 0 0;flex-shrink:0;}\n/* 工具条按钮走 ghost(DS 2.0 P6-7):静止透明,hover 才上底,press 再深一档。\n 之前静止就带 bg-muted,等于一直是个实心 chip,跟 §5「贴地不上底」对不上。 */\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"settings-btn\"]{all:initial;cursor:pointer;font:inherit;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--ow-radius-sm, 8px);background:transparent;color:var(--ow-annotation-fg-muted);flex-shrink:0;transition:background var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1));font-size:0;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"settings-btn\"]:hover{background:var(--ow-annotation-bg-muted);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"settings-btn\"]:active{background:var(--ow-annotation-bg-hover);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"input\"]{all:initial;flex:1;font:inherit;font-size:var(--ow-fs-ui, 13px);color:var(--ow-annotation-fg);padding:var(--ow-space-05, 2px) 0;border:none;outline:none;background:transparent;min-width:0;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"input\"]::placeholder{color:var(--ow-annotation-fg-placeholder);}\n/* 提交钮与同一行的 settings-btn 同档:28×28(§7 控件高 {28,32,40},图标钮 ≥28×28)。\n 旧值 30×30 不在档内,且与行内邻居对不齐。 */\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"submit-btn\"]{all:initial;cursor:pointer;font:inherit;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--ow-radius-sm, 8px);background:transparent;color:var(--ow-annotation-fg-subtle);flex-shrink:0;transition:background var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1)),color var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1));}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"submit-btn\"]:hover{background:var(--ow-annotation-bg-muted);}\n/* 有字才是「能提交了」——实底+提色,形状不变,颜色是第二编码(R1)。 */\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"submit-btn\"][data-ow-state=\"has-text\"]{background:var(--ow-annotation-primary);color:var(--ow-annotation-on-fill);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"submit-btn\"][data-ow-state=\"has-text\"]:hover{background:var(--ow-annotation-primary-hover);}\n/* §6:焦点环 2px + 2px 留白缝,不靠 all:initial 之后消失的浏览器默认环。\n 环色引 primary:DS 2.0 浅档 --ow-focus-ring 与 --ow-btn-primary-bg 同为 #0F1B3D,\n 不另立键;若上游把两者拆开,这里要跟着补 --ow-annotation-focus-ring。 */\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"settings-btn\"]:focus-visible,[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"submit-btn\"]:focus-visible,[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"cancel\"]:focus-visible,[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"confirm\"]:focus-visible{outline:var(--ow-focus-ring-w, 2px) solid var(--ow-annotation-primary);outline-offset:var(--ow-focus-ring-offset, 2px);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"tag\"]{display:flex;align-items:center;justify-content:space-between;padding:var(--ow-space-15, 6px) 14px;background:var(--ow-annotation-bg-muted);font-weight:700;font-size:var(--ow-fs-ui, 13px);color:var(--ow-annotation-fg);flex-shrink:0;}\n/* 拖拽握把是字形不是装饰色块,§7「图标色只取 text/text-2/text-3」——原 fg-faint(#C2C3C1)\n 在 DS 2.0 里是 --ow-border-strong,没有对应的文字档,故并入 text-3。 */\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"tag-drag\"]{color:var(--ow-annotation-fg-subtle);cursor:grab;font-size:var(--ow-fs-body, 14px);letter-spacing:1px;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"props\"]{padding:var(--ow-space-05, 2px) 14px var(--ow-space-1, 4px);overflow-y:auto;flex:1;min-height:0;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop\"]{display:flex;align-items:center;padding:var(--ow-space-15, 6px) 0;border-bottom: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);gap:10px;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop\"]:last-child{border-bottom:none;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-label\"]{width:60px;flex-shrink:0;font-size:var(--ow-fs-mark-md, 11px);color:var(--ow-annotation-fg);font-weight:500;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-value\"]{flex:1;display:flex;align-items:center;gap:5px;position:relative;}\n/* 输入类底色走 --ow-surface-2 的镜像(§5「嵌套井=输入底」),坐在 popover 白面上才读得出井;\n 三态边框 rest(line) → hover(line-strong) → focus(focus-ring,浅档同 primary),§6。 */\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-input\"]{all:initial;font:inherit;font-size:var(--ow-fs-mark-md, 11px);color:var(--ow-annotation-fg);box-sizing:border-box;height:28px;padding:0 var(--ow-space-2, 8px);border: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);border-radius:var(--ow-radius-xs, 6px);width:100%;outline:none;background:var(--ow-annotation-bg-muted);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-input\"]:hover{border-color:var(--ow-annotation-line-strong);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-input\"]:focus{border-color:var(--ow-annotation-primary);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-unit\"]{font-size:var(--ow-fs-mark-sm, 10px);color:var(--ow-annotation-fg-subtle);position:absolute;right:8px;pointer-events:none;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-select\"]{all:initial;font:inherit;font-size:var(--ow-fs-mark-md, 11px);color:var(--ow-annotation-fg);box-sizing:border-box;height:28px;padding:0 var(--ow-space-2, 8px);border: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);border-radius:var(--ow-radius-xs, 6px);width:100%;outline:none;appearance:auto;cursor:pointer;background:var(--ow-annotation-bg-muted);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-select\"]:hover{border-color:var(--ow-annotation-line-strong);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"prop-select\"]:focus{border-color:var(--ow-annotation-primary);}\n/* §7 形状表:999 只留给带状态点/计数的 chip 与真圆件(头像/状态点)。色板是个取色控件,\n 落按钮档 8px(原 50% 圆点是 V1 色板母题)。 */\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"color-swatch\"]{width:20px;height:20px;border-radius:var(--ow-radius-sm, 8px);border: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);flex-shrink:0;cursor:pointer;position:relative;overflow:hidden;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"color-swatch\"]:hover{border-color:var(--ow-annotation-line-strong);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"color-swatch\"] input{position:absolute;inset:-4px;width:28px;height:28px;opacity:0;cursor:pointer;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"spacing\"]{display:flex;gap:3px;flex:1;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"spacing\"] input{all:initial;font:inherit;font-size:var(--ow-fs-mark-sm, 10px);color:var(--ow-annotation-fg);box-sizing:border-box;height:28px;padding:0 3px;border: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);border-radius:var(--ow-radius-xs, 6px);width:100%;text-align:center;outline:none;background:var(--ow-annotation-bg-muted);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"spacing\"] input:hover{border-color:var(--ow-annotation-line-strong);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"spacing\"] input:focus{border-color:var(--ow-annotation-primary);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"actions\"]{display:flex;align-items:center;justify-content:space-between;padding:var(--ow-space-2, 8px) var(--ow-space-3, 12px);border-top: var(--ow-border-width-default, 1px) solid var(--ow-annotation-line);flex-shrink:0;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"cancel\"]{all:initial;cursor:pointer;font:inherit;font-weight:500;font-size:var(--ow-fs-ui, 13px);color:var(--ow-annotation-fg);box-sizing:border-box;height:32px;padding:0 14px;border:none;border-radius:var(--ow-radius-sm, 8px);background:var(--ow-annotation-bg-muted);transition:background var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1));display:inline-flex;align-items:center;justify-content:center;}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"cancel\"]:hover{background:var(--ow-annotation-bg-hover);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"confirm\"]{all:initial;cursor:pointer;font:inherit;font-weight:500;font-size:var(--ow-fs-ui, 13px);box-sizing:border-box;height:32px;padding:0 14px;border:none;border-radius:var(--ow-radius-sm, 8px);background:var(--ow-annotation-primary);color:var(--ow-annotation-on-fill);transition:background var(--ow-dur-1, 120ms) var(--ow-ease-beacon, cubic-bezier(0.22, 1, 0.36, 1));display:inline-flex;align-items:center;justify-content:center;gap:var(--ow-space-1, 4px);}\n[data-slot=\"browser-annotation-popup\"] [data-ow-part=\"confirm\"]:hover{background:var(--ow-annotation-primary-hover);}\n`\n"]}