@orbit-work/ui 0.1.2-preview.0 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -57
- package/dist/about-window.cjs +271 -1
- package/dist/about-window.cjs.map +1 -0
- package/dist/about-window.d.cts +20 -2
- package/dist/about-window.d.ts +20 -2
- package/dist/about-window.js +271 -1
- package/dist/about-window.js.map +1 -0
- package/dist/appearance.cjs +41 -1
- package/dist/appearance.cjs.map +1 -0
- package/dist/appearance.d.cts +7 -1
- package/dist/appearance.d.ts +7 -1
- package/dist/appearance.js +41 -1
- package/dist/appearance.js.map +1 -0
- package/dist/brand-preview.cjs +14 -0
- package/dist/brand-preview.cjs.map +1 -0
- package/dist/brand-preview.d.cts +13 -0
- package/dist/brand-preview.d.ts +13 -0
- package/dist/brand-preview.js +14 -0
- package/dist/brand-preview.js.map +1 -0
- package/dist/browser-annotation-popup.cjs +9 -1
- package/dist/browser-annotation-popup.cjs.map +1 -0
- package/dist/browser-annotation-popup.d.cts +6 -6
- package/dist/browser-annotation-popup.d.ts +6 -6
- package/dist/browser-annotation-popup.js +9 -1
- package/dist/browser-annotation-popup.js.map +1 -0
- package/dist/chunk-66VEV7G2.js +111 -0
- package/dist/chunk-66VEV7G2.js.map +1 -0
- package/dist/chunk-JC7BHKS4.cjs +734 -0
- package/dist/chunk-JC7BHKS4.cjs.map +1 -0
- package/dist/chunk-K7ONUTLA.cjs +240 -0
- package/dist/chunk-K7ONUTLA.cjs.map +1 -0
- package/dist/chunk-KTNWR3H5.js +399 -0
- package/dist/chunk-KTNWR3H5.js.map +1 -0
- package/dist/chunk-LSGO6AQR.js +734 -0
- package/dist/chunk-LSGO6AQR.js.map +1 -0
- package/dist/chunk-Q7B4M5GC.cjs +399 -0
- package/dist/chunk-Q7B4M5GC.cjs.map +1 -0
- package/dist/chunk-QS55W5Q5.cjs +111 -0
- package/dist/chunk-QS55W5Q5.cjs.map +1 -0
- package/dist/chunk-UT5LC6MR.js +38 -0
- package/dist/chunk-UT5LC6MR.js.map +1 -0
- package/dist/chunk-ZXMHCL6D.js +240 -0
- package/dist/chunk-ZXMHCL6D.js.map +1 -0
- package/dist/chunk-ZZTEY4YX.cjs +38 -0
- package/dist/chunk-ZZTEY4YX.cjs.map +1 -0
- package/dist/core.css +7895 -0
- package/dist/core.scoped.css +7888 -0
- package/dist/file-tree.css +85 -0
- package/dist/index-nLo7jMlP.d.cts +166 -0
- package/dist/index-nLo7jMlP.d.ts +166 -0
- package/dist/index.cjs +38996 -26
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3797 -3027
- package/dist/index.d.ts +3797 -3027
- package/dist/index.js +38996 -26
- package/dist/index.js.map +1 -0
- package/dist/locale.cjs +15 -0
- package/dist/locale.cjs.map +1 -0
- package/dist/locale.d.cts +28 -0
- package/dist/locale.d.ts +28 -0
- package/dist/locale.js +15 -0
- package/dist/locale.js.map +1 -0
- package/dist/office.css +1146 -0
- package/dist/slot-core.cjs +200 -0
- package/dist/slot-core.cjs.map +1 -0
- package/dist/slot-core.d.cts +146 -0
- package/dist/slot-core.d.ts +146 -0
- package/dist/slot-core.js +200 -0
- package/dist/slot-core.js.map +1 -0
- package/dist/slot-react.cjs +153 -0
- package/dist/slot-react.cjs.map +1 -0
- package/dist/slot-react.d.cts +36 -0
- package/dist/slot-react.d.ts +36 -0
- package/dist/slot-react.js +153 -0
- package/dist/slot-react.js.map +1 -0
- package/dist/tailwind.css +137 -0
- package/dist/unifiedTheme-DQ-sETKO.d.cts +201 -0
- package/dist/unifiedTheme-DQ-sETKO.d.ts +201 -0
- package/dist/workbench.css +9023 -0
- package/package.json +126 -47
- package/dist/appearance-D5uQ53j3.d.cts +0 -210
- package/dist/appearance-D5uQ53j3.d.ts +0 -210
- package/dist/chunk-3KT7IU4X.js +0 -13
- package/dist/chunk-5VLBKOG7.cjs +0 -194
- package/dist/chunk-7YJY64LZ.js +0 -82
- package/dist/chunk-EF2BSN3K.cjs +0 -13
- package/dist/chunk-GMMYDILD.cjs +0 -82
- package/dist/chunk-VG7FQQ7K.js +0 -194
- package/dist/fonts/JetBrainsMono-Medium.ttf +0 -0
- package/dist/fonts/JetBrainsMono-Regular.ttf +0 -0
- package/dist/fonts/SpaceGrotesk-700-latin-ext.woff2 +0 -0
- package/dist/fonts/SpaceGrotesk-700-latin.woff2 +0 -0
- package/dist/index.css +0 -1
- package/dist/orbitwork.css +0 -22209
- package/src/components/Layout/AppLayout/AppLayout.stories.tsx +0 -246
- package/src/components/Layout/AppLayout/AppLayoutSource.test.mjs +0 -37
- package/src/components/Layout/AppLayout/index.tsx +0 -122
- package/src/components/Layout/Sidebar/index.tsx +0 -13
- package/src/components/Layout/SidebarShell/SidebarShell.stories.tsx +0 -676
- package/src/components/Layout/SidebarShell/SidebarShellSource.test.mjs +0 -161
- package/src/components/Layout/SidebarShell/index.tsx +0 -326
- package/src/components/Layout/index.ts +0 -10
- package/src/components/composite/ActionBar/ActionBar.stories.tsx +0 -26
- package/src/components/composite/ActionBar/index.tsx +0 -31
- package/src/components/composite/ActionStatus/ActionStatus.stories.tsx +0 -60
- package/src/components/composite/ActionStatus/index.tsx +0 -21
- package/src/components/composite/AskQuestionCardView/AskQuestionCardView.stories.tsx +0 -175
- package/src/components/composite/AskQuestionCardView/AskQuestionCardViewSource.test.mjs +0 -92
- package/src/components/composite/AskQuestionCardView/index.tsx +0 -119
- package/src/components/composite/AssistantChannelCard/AssistantChannelCard.stories.tsx +0 -265
- package/src/components/composite/AssistantChannelCard/AssistantChannelCardSource.test.mjs +0 -45
- package/src/components/composite/AssistantChannelCard/index.tsx +0 -102
- package/src/components/composite/AssistantToggleRow/AssistantToggleRow.stories.tsx +0 -197
- package/src/components/composite/AssistantToggleRow/index.tsx +0 -35
- package/src/components/composite/AttachmentCard/AttachmentCard.stories.tsx +0 -125
- package/src/components/composite/AttachmentCard/index.tsx +0 -80
- package/src/components/composite/BackButton/BackButton.stories.tsx +0 -93
- package/src/components/composite/BackButton/BackButtonSource.test.mjs +0 -29
- package/src/components/composite/BackButton/index.tsx +0 -48
- package/src/components/composite/Banner/Banner.stories.tsx +0 -180
- package/src/components/composite/Banner/BannerSource.test.mjs +0 -67
- package/src/components/composite/Banner/index.tsx +0 -125
- package/src/components/composite/BeaconIcons/BeaconIcons.stories.tsx +0 -153
- package/src/components/composite/BeaconIcons/index.tsx +0 -265
- package/src/components/composite/BeaconSpinner/BeaconSpinner.stories.tsx +0 -144
- package/src/components/composite/BeaconSpinner/index.tsx +0 -185
- package/src/components/composite/CatalogStates/CatalogEmptyState.stories.tsx +0 -108
- package/src/components/composite/CatalogStates/CatalogStates.stories.tsx +0 -53
- package/src/components/composite/CatalogStates/CatalogStatesSource.test.mjs +0 -149
- package/src/components/composite/CatalogStates/index.tsx +0 -113
- package/src/components/composite/Charts/Charts.stories.tsx +0 -174
- package/src/components/composite/Charts/ChartsSource.test.mjs +0 -111
- package/src/components/composite/Charts/index.tsx +0 -385
- package/src/components/composite/CodeBlock/CodeBlock.stories.tsx +0 -308
- package/src/components/composite/CodeBlock/CodeFaceSource.test.mjs +0 -89
- package/src/components/composite/CodeBlock/index.tsx +0 -300
- package/src/components/composite/CodeDiff/CodeDiff.stories.tsx +0 -169
- package/src/components/composite/CodeDiff/index.tsx +0 -373
- package/src/components/composite/CodePreview/CodePreview.stories.tsx +0 -127
- package/src/components/composite/CodePreview/CodePreviewSource.test.mjs +0 -43
- package/src/components/composite/CodePreview/index.tsx +0 -98
- package/src/components/composite/CommandPalette/CommandPalette.stories.tsx +0 -89
- package/src/components/composite/CommandPalette/CommandPaletteSource.test.mjs +0 -61
- package/src/components/composite/CommandPalette/index.tsx +0 -310
- package/src/components/composite/ContentRecommendation/ContentRecommendation.stories.tsx +0 -300
- package/src/components/composite/ContentRecommendation/ContentRecommendationSource.test.mjs +0 -48
- package/src/components/composite/ContentRecommendation/index.tsx +0 -116
- package/src/components/composite/ContextChip/ContextChip.stories.tsx +0 -123
- package/src/components/composite/ContextChip/ContextChipSource.test.mjs +0 -24
- package/src/components/composite/ContextChip/index.tsx +0 -25
- package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorSizeSource.test.mjs +0 -15
- package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorView.stories.tsx +0 -110
- package/src/components/composite/ContextUsageIndicatorView/ContextUsageLoadingSource.test.mjs +0 -23
- package/src/components/composite/ContextUsageIndicatorView/index.tsx +0 -139
- package/src/components/composite/Controls/Controls.stories.tsx +0 -227
- package/src/components/composite/Controls/index.tsx +0 -15
- package/src/components/composite/CreateProjectDialog/CreateProjectDialog.stories.tsx +0 -56
- package/src/components/composite/CreateProjectDialog/index.tsx +0 -70
- package/src/components/composite/DataManagementSectionView/DataManagementSectionView.stories.tsx +0 -123
- package/src/components/composite/DataManagementSectionView/DataManagementSectionViewSource.test.mjs +0 -45
- package/src/components/composite/DataManagementSectionView/index.tsx +0 -110
- package/src/components/composite/DataTable/DataTable.stories.tsx +0 -159
- package/src/components/composite/DataTable/DataTableSource.test.mjs +0 -96
- package/src/components/composite/DataTable/index.tsx +0 -373
- package/src/components/composite/DetailChrome/DetailChrome.stories.tsx +0 -61
- package/src/components/composite/DetailChrome/DetailChromeSource.test.mjs +0 -31
- package/src/components/composite/DetailChrome/index.tsx +0 -94
- package/src/components/composite/DetailPanel/DetailPanel.stories.tsx +0 -185
- package/src/components/composite/DetailPanel/DetailPanelSource.test.mjs +0 -49
- package/src/components/composite/DetailPanel/index.tsx +0 -120
- package/src/components/composite/DetailScaffold/DetailScaffold.stories.tsx +0 -203
- package/src/components/composite/DetailScaffold/DetailScaffoldSource.test.mjs +0 -38
- package/src/components/composite/DetailScaffold/index.tsx +0 -114
- package/src/components/composite/Dialog/Dialog.stories.tsx +0 -343
- package/src/components/composite/Dialog/DialogSource.test.mjs +0 -130
- package/src/components/composite/Dialog/index.tsx +0 -333
- package/src/components/composite/DropZone/DropZone.stories.tsx +0 -105
- package/src/components/composite/DropZone/DropZoneSource.test.mjs +0 -68
- package/src/components/composite/DropZone/index.tsx +0 -196
- package/src/components/composite/FSelect/FSelect.stories.tsx +0 -64
- package/src/components/composite/FSelect/index.tsx +0 -29
- package/src/components/composite/FeedbackContextMenuView/FeedbackContextMenuView.stories.tsx +0 -106
- package/src/components/composite/FeedbackContextMenuView/index.tsx +0 -51
- package/src/components/composite/FeedbackDialogView/FeedbackDialogView.stories.tsx +0 -291
- package/src/components/composite/FeedbackDialogView/index.tsx +0 -95
- package/src/components/composite/FileReferenceCard/FileReferenceCard.stories.tsx +0 -364
- package/src/components/composite/FileReferenceCard/FileReferenceCardSource.test.mjs +0 -48
- package/src/components/composite/FileReferenceCard/index.tsx +0 -122
- package/src/components/composite/FilterBar/FilterBar.stories.tsx +0 -167
- package/src/components/composite/FilterBar/FilterBarSource.test.mjs +0 -75
- package/src/components/composite/FilterBar/index.tsx +0 -206
- package/src/components/composite/FormField/FormField.stories.tsx +0 -158
- package/src/components/composite/FormField/FormFieldSource.test.mjs +0 -56
- package/src/components/composite/FormField/index.tsx +0 -219
- package/src/components/composite/HomeBackdrop/HomeBackdrop.stories.tsx +0 -54
- package/src/components/composite/HomeBackdrop/HomeBackdropSource.test.mjs +0 -50
- package/src/components/composite/HomeBackdrop/index.tsx +0 -53
- package/src/components/composite/Icons/Icons.stories.tsx +0 -153
- package/src/components/composite/Icons/IconsSource.test.mjs +0 -23
- package/src/components/composite/Icons/index.tsx +0 -1367
- package/src/components/composite/ImageCard/ImageCard.stories.tsx +0 -54
- package/src/components/composite/ImageCard/index.tsx +0 -33
- package/src/components/composite/ImagePreview/ImagePreview.stories.tsx +0 -172
- package/src/components/composite/ImagePreview/ImagePreviewSource.test.mjs +0 -95
- package/src/components/composite/ImagePreview/index.tsx +0 -339
- package/src/components/composite/ListRow/ListRow.stories.tsx +0 -257
- package/src/components/composite/ListRow/ListRowSource.test.mjs +0 -101
- package/src/components/composite/ListRow/index.tsx +0 -309
- package/src/components/composite/Markdown/Markdown.stories.tsx +0 -192
- package/src/components/composite/Markdown/MarkdownSource.test.mjs +0 -126
- package/src/components/composite/Markdown/MarkdownStyleSource.test.mjs +0 -167
- package/src/components/composite/Markdown/index.tsx +0 -702
- package/src/components/composite/MarkdownPreview/MarkdownPreview.stories.tsx +0 -174
- package/src/components/composite/MarkdownPreview/MarkdownPreviewTabsSource.test.mjs +0 -31
- package/src/components/composite/MarkdownPreview/MarkdownRenderedStyleSource.test.mjs +0 -84
- package/src/components/composite/MarkdownPreview/index.tsx +0 -140
- package/src/components/composite/MarkdownPreviewModalView/MarkdownPreviewModalView.stories.tsx +0 -104
- package/src/components/composite/MarkdownPreviewModalView/index.tsx +0 -85
- package/src/components/composite/MessageFeedbackDialog/MessageFeedbackDialog.stories.tsx +0 -66
- package/src/components/composite/MessageFeedbackDialog/index.tsx +0 -115
- package/src/components/composite/ModelCatalogErrorState/ModelCatalogErrorState.stories.tsx +0 -101
- package/src/components/composite/ModelCatalogErrorState/ModelCatalogRetrySource.test.mjs +0 -86
- package/src/components/composite/ModelCatalogErrorState/index.tsx +0 -59
- package/src/components/composite/ModelModalityFlow/ModelModalityFlow.stories.tsx +0 -224
- package/src/components/composite/ModelModalityFlow/ModelModalityFlowSource.test.mjs +0 -56
- package/src/components/composite/ModelModalityFlow/index.tsx +0 -113
- package/src/components/composite/ModelPickerList/ModelPickerList.stories.tsx +0 -313
- package/src/components/composite/ModelPickerList/index.tsx +0 -142
- package/src/components/composite/ModelSelect/ModelSelect.stories.tsx +0 -90
- package/src/components/composite/ModelSelect/index.tsx +0 -148
- package/src/components/composite/ModelsSettingsSectionView/ModelsSettingsSectionView.stories.tsx +0 -170
- package/src/components/composite/ModelsSettingsSectionView/index.tsx +0 -139
- package/src/components/composite/NativeControls/NativeControls.stories.tsx +0 -386
- package/src/components/composite/NativeControls/NativeControlsStyleSource.test.mjs +0 -63
- package/src/components/composite/NativeControls/index.tsx +0 -97
- package/src/components/composite/NavMenu/NavMenu.stories.tsx +0 -383
- package/src/components/composite/NavMenu/NavMenuSource.test.mjs +0 -56
- package/src/components/composite/NavMenu/index.tsx +0 -142
- package/src/components/composite/NoPlanPanelView/NoPlanPanelView.stories.tsx +0 -344
- package/src/components/composite/NoPlanPanelView/NoPlanPanelViewSource.test.mjs +0 -34
- package/src/components/composite/NoPlanPanelView/index.tsx +0 -97
- package/src/components/composite/OpenWithButton/OpenWithButton.stories.tsx +0 -78
- package/src/components/composite/OpenWithButton/index.tsx +0 -46
- package/src/components/composite/OrbitworkLogo/OrbitworkLogo.stories.tsx +0 -192
- package/src/components/composite/OrbitworkLogo/index.tsx +0 -207
- package/src/components/composite/OrbitworkModal/OrbitworkModal.stories.tsx +0 -58
- package/src/components/composite/OrbitworkModal/index.tsx +0 -31
- package/src/components/composite/PageHead/PageHead.stories.tsx +0 -235
- package/src/components/composite/PageHead/PageHeadSource.test.mjs +0 -76
- package/src/components/composite/PageHead/index.tsx +0 -128
- package/src/components/composite/PlanFeatureIcon/PlanFeatureIcon.stories.tsx +0 -205
- package/src/components/composite/PlanFeatureIcon/PlanFeatureIconSource.test.mjs +0 -38
- package/src/components/composite/PlanFeatureIcon/index.tsx +0 -48
- package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionView.stories.tsx +0 -231
- package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionViewSource.test.mjs +0 -85
- package/src/components/composite/PlanSettingsSectionView/index.tsx +0 -264
- package/src/components/composite/Popover/Popover.stories.tsx +0 -175
- package/src/components/composite/Popover/PopoverSource.test.mjs +0 -59
- package/src/components/composite/Popover/index.tsx +0 -176
- package/src/components/composite/PptxRenderer/ElementDispatcher/index.tsx +0 -70
- package/src/components/composite/PptxRenderer/PptxChromeStyleSource.test.mjs +0 -36
- package/src/components/composite/PptxRenderer/PptxRenderer.stories.tsx +0 -128
- package/src/components/composite/PptxRenderer/PptxSlide/index.tsx +0 -48
- package/src/components/composite/PptxRenderer/constants.ts +0 -2
- package/src/components/composite/PptxRenderer/elements/AudioElement/index.tsx +0 -48
- package/src/components/composite/PptxRenderer/elements/ChartElement/index.tsx +0 -172
- package/src/components/composite/PptxRenderer/elements/DiagramElement/index.tsx +0 -46
- package/src/components/composite/PptxRenderer/elements/GroupElement/index.tsx +0 -28
- package/src/components/composite/PptxRenderer/elements/ImageElement/index.tsx +0 -61
- package/src/components/composite/PptxRenderer/elements/MathElement/index.tsx +0 -57
- package/src/components/composite/PptxRenderer/elements/ShapeElement/index.tsx +0 -327
- package/src/components/composite/PptxRenderer/elements/TableElement/index.tsx +0 -90
- package/src/components/composite/PptxRenderer/elements/TextElement/index.tsx +0 -57
- package/src/components/composite/PptxRenderer/elements/VideoElement/index.tsx +0 -43
- package/src/components/composite/PptxRenderer/index.ts +0 -24
- package/src/components/composite/PptxRenderer/types.ts +0 -326
- package/src/components/composite/PptxRenderer/utils.ts +0 -129
- package/src/components/composite/ProjectSelect/ProjectSelect.stories.tsx +0 -112
- package/src/components/composite/ProjectSelect/ProjectSelectSource.test.mjs +0 -34
- package/src/components/composite/ProjectSelect/index.tsx +0 -155
- package/src/components/composite/RadioCard/RadioCard.stories.tsx +0 -130
- package/src/components/composite/RadioCard/RadioCardSource.test.mjs +0 -42
- package/src/components/composite/RadioCard/index.tsx +0 -171
- package/src/components/composite/RowOverflowMenu/RowOverflowMenu.stories.tsx +0 -113
- package/src/components/composite/RowOverflowMenu/RowOverflowMenuSource.test.mjs +0 -59
- package/src/components/composite/RowOverflowMenu/index.tsx +0 -101
- package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPrompt.stories.tsx +0 -159
- package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPromptSource.test.mjs +0 -71
- package/src/components/composite/SandboxPermissionPrompt/index.tsx +0 -157
- package/src/components/composite/SearchInput/SearchInput.stories.tsx +0 -127
- package/src/components/composite/SearchInput/index.tsx +0 -91
- package/src/components/composite/SearchResult/SearchResult.stories.tsx +0 -305
- package/src/components/composite/SearchResult/SearchResultSource.test.mjs +0 -45
- package/src/components/composite/SearchResult/index.tsx +0 -148
- package/src/components/composite/Section/Section.stories.tsx +0 -148
- package/src/components/composite/Section/SectionSource.test.mjs +0 -59
- package/src/components/composite/Section/index.tsx +0 -105
- package/src/components/composite/SelectionBulkBar/SelectionBulkBar.stories.tsx +0 -111
- package/src/components/composite/SelectionBulkBar/SelectionBulkBarSource.test.mjs +0 -44
- package/src/components/composite/SelectionBulkBar/index.tsx +0 -99
- package/src/components/composite/ShareStrip/ShareStrip.stories.tsx +0 -123
- package/src/components/composite/ShareStrip/index.tsx +0 -83
- package/src/components/composite/ShortcutSheet/ShortcutSheet.stories.tsx +0 -90
- package/src/components/composite/ShortcutSheet/ShortcutSheetSource.test.mjs +0 -49
- package/src/components/composite/ShortcutSheet/index.tsx +0 -163
- package/src/components/composite/SitesArtifactCardView/SitesArtifactCardView.stories.tsx +0 -328
- package/src/components/composite/SitesArtifactCardView/SitesArtifactCardViewSource.test.mjs +0 -45
- package/src/components/composite/SitesArtifactCardView/index.tsx +0 -100
- package/src/components/composite/Skeleton/Skeleton.stories.tsx +0 -188
- package/src/components/composite/Skeleton/SkeletonSource.test.mjs +0 -25
- package/src/components/composite/Skeleton/index.tsx +0 -152
- package/src/components/composite/Splash/Splash.stories.tsx +0 -150
- package/src/components/composite/Splash/index.tsx +0 -229
- package/src/components/composite/StatusTag/StatusTag.stories.tsx +0 -66
- package/src/components/composite/StatusTag/StatusTagSource.test.mjs +0 -64
- package/src/components/composite/StatusTag/index.tsx +0 -78
- package/src/components/composite/StepList/StepList.stories.tsx +0 -352
- package/src/components/composite/StepList/index.tsx +0 -23
- package/src/components/composite/Tag/Tag.stories.tsx +0 -279
- package/src/components/composite/Tag/TagSource.test.mjs +0 -67
- package/src/components/composite/Tag/index.tsx +0 -229
- package/src/components/composite/TimePicker/TimePicker.stories.tsx +0 -91
- package/src/components/composite/TimePicker/TimePickerSource.test.mjs +0 -98
- package/src/components/composite/TimePicker/index.tsx +0 -208
- package/src/components/composite/TitleBar/TitleBar.stories.tsx +0 -329
- package/src/components/composite/TitleBar/TitleBarSource.test.mjs +0 -140
- package/src/components/composite/TitleBar/index.tsx +0 -350
- package/src/components/composite/Toast/Toast.stories.tsx +0 -304
- package/src/components/composite/Toast/ToastSource.test.mjs +0 -63
- package/src/components/composite/Toast/index.tsx +0 -135
- package/src/components/composite/Tooltip/Tooltip.stories.tsx +0 -304
- package/src/components/composite/Tooltip/TooltipSource.test.mjs +0 -34
- package/src/components/composite/Tooltip/index.tsx +0 -204
- package/src/components/composite/TranscriptDividers/TranscriptDividers.stories.tsx +0 -160
- package/src/components/composite/TranscriptDividers/TranscriptDividersSource.test.mjs +0 -90
- package/src/components/composite/TranscriptDividers/index.tsx +0 -352
- package/src/components/composite/WCardShell/WCardShell.stories.tsx +0 -228
- package/src/components/composite/WCardShell/index.tsx +0 -101
- package/src/components/composite/index.ts +0 -81
- package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarView.stories.tsx +0 -128
- package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarViewSource.test.mjs +0 -69
- package/src/components/domain/artifacts/ArtifactPreviewSidebarView/index.tsx +0 -212
- package/src/components/domain/artifacts/index.ts +0 -1
- package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupView.stories.tsx +0 -211
- package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupViewSource.test.mjs +0 -82
- package/src/components/domain/browser/BrowserAnnotationPopupView/index.tsx +0 -235
- package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarView.stories.tsx +0 -260
- package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarViewSource.test.mjs +0 -12
- package/src/components/domain/browser/BrowserDeviceToolbarView/index.tsx +0 -154
- package/src/components/domain/browser/BrowserFindBarView/BrowserFindBarView.stories.tsx +0 -52
- package/src/components/domain/browser/BrowserFindBarView/index.tsx +0 -111
- package/src/components/domain/browser/BrowserImportDialogView/BrowserImportDialogView.stories.tsx +0 -89
- package/src/components/domain/browser/BrowserImportDialogView/index.tsx +0 -155
- package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorView.stories.tsx +0 -197
- package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorViewSource.test.mjs +0 -29
- package/src/components/domain/browser/BrowserLoadErrorView/index.tsx +0 -45
- package/src/components/domain/browser/BrowserMoreMenuView/BrowserMoreMenuView.stories.tsx +0 -66
- package/src/components/domain/browser/BrowserMoreMenuView/index.tsx +0 -268
- package/src/components/domain/browser/BrowserNavBarView/BrowserNavBarView.stories.tsx +0 -149
- package/src/components/domain/browser/BrowserNavBarView/index.tsx +0 -156
- package/src/components/domain/browser/BrowserTabBarView/index.tsx +0 -18
- package/src/components/domain/browser/SubAgentPane/SubAgentPane.stories.tsx +0 -96
- package/src/components/domain/browser/SubAgentPane/SubAgentPaneSource.test.mjs +0 -48
- package/src/components/domain/browser/SubAgentPane/index.tsx +0 -121
- package/src/components/domain/browser/TerminalPane/TerminalPane.stories.tsx +0 -95
- package/src/components/domain/browser/TerminalPane/TerminalPaneSource.test.mjs +0 -52
- package/src/components/domain/browser/TerminalPane/index.tsx +0 -75
- package/src/components/domain/browser/WebPreview/WebPreview.stories.tsx +0 -71
- package/src/components/domain/browser/WebPreview/index.tsx +0 -141
- package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsole.stories.tsx +0 -61
- package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsoleSource.test.mjs +0 -66
- package/src/components/domain/browser/WebPreviewConsole/index.tsx +0 -239
- package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialog.stories.tsx +0 -288
- package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialogSource.test.mjs +0 -62
- package/src/components/domain/browser/WebPreviewDialog/index.tsx +0 -82
- package/src/components/domain/browser/WebPreviewNav/WebPreviewNav.stories.tsx +0 -462
- package/src/components/domain/browser/WebPreviewNav/WebPreviewNavSource.test.mjs +0 -353
- package/src/components/domain/browser/WebPreviewNav/index.tsx +0 -351
- package/src/components/domain/browser/WebPreviewShell/WebPreviewShell.stories.tsx +0 -226
- package/src/components/domain/browser/WebPreviewShell/WebPreviewShellSource.test.mjs +0 -172
- package/src/components/domain/browser/WebPreviewShell/index.tsx +0 -324
- package/src/components/domain/browser/index.ts +0 -45
- package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegment.stories.tsx +0 -107
- package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegmentSource.test.mjs +0 -45
- package/src/components/domain/chat/AgentLoopSegment/index.tsx +0 -29
- package/src/components/domain/chat/AgentTurn/AgentTurn.stories.tsx +0 -162
- package/src/components/domain/chat/AgentTurn/AgentTurnSource.test.mjs +0 -98
- package/src/components/domain/chat/AgentTurn/beaconContext.ts +0 -37
- package/src/components/domain/chat/AgentTurn/index.tsx +0 -226
- package/src/components/domain/chat/ArtifactCard/ArtifactCard.stories.tsx +0 -127
- package/src/components/domain/chat/ArtifactCard/index.tsx +0 -249
- package/src/components/domain/chat/Attachment/Attachment.stories.tsx +0 -235
- package/src/components/domain/chat/Attachment/AttachmentSource.test.mjs +0 -160
- package/src/components/domain/chat/Attachment/index.tsx +0 -857
- package/src/components/domain/chat/AuthorizationCard/AuthorizationCard.stories.tsx +0 -53
- package/src/components/domain/chat/AuthorizationCard/AuthorizationCardSource.test.mjs +0 -80
- package/src/components/domain/chat/AuthorizationCard/index.tsx +0 -89
- package/src/components/domain/chat/ChatBubble/ChatBubble.stories.tsx +0 -32
- package/src/components/domain/chat/ChatBubble/index.tsx +0 -24
- package/src/components/domain/chat/ChatMessage/ChatMessage.stories.tsx +0 -31
- package/src/components/domain/chat/ChatMessage/index.tsx +0 -23
- package/src/components/domain/chat/ChatR2ReviewSource.test.mjs +0 -98
- package/src/components/domain/chat/ChatThinking/ChatThinking.stories.tsx +0 -125
- package/src/components/domain/chat/ChatThinking/index.tsx +0 -55
- package/src/components/domain/chat/Chatbot/Chatbot.stories.tsx +0 -49
- package/src/components/domain/chat/Chatbot/index.tsx +0 -37
- package/src/components/domain/chat/Composer/Composer.stories.tsx +0 -227
- package/src/components/domain/chat/Composer/ComposerSource.test.mjs +0 -175
- package/src/components/domain/chat/Composer/index.tsx +0 -450
- package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.stories.tsx +0 -203
- package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.tsx +0 -110
- package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrumSource.test.mjs +0 -54
- package/src/components/domain/chat/Composer/parts/ComposerAuthorization.stories.tsx +0 -155
- package/src/components/domain/chat/Composer/parts/ComposerAuthorization.tsx +0 -108
- package/src/components/domain/chat/Composer/parts/ComposerMentions.stories.tsx +0 -76
- package/src/components/domain/chat/Composer/parts/ComposerMentions.tsx +0 -83
- package/src/components/domain/chat/Composer/parts/ComposerMentionsSource.test.mjs +0 -85
- package/src/components/domain/chat/Composer/parts/ComposerMenu.stories.tsx +0 -266
- package/src/components/domain/chat/Composer/parts/ComposerMenu.tsx +0 -232
- package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.stories.tsx +0 -166
- package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.tsx +0 -87
- package/src/components/domain/chat/Composer/parts/ComposerMenuPopoverSource.test.mjs +0 -56
- package/src/components/domain/chat/Composer/parts/ComposerPopover.stories.tsx +0 -257
- package/src/components/domain/chat/Composer/parts/ComposerPopover.tsx +0 -221
- package/src/components/domain/chat/Composer/parts/ComposerPopoverSource.test.mjs +0 -71
- package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.stories.tsx +0 -260
- package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.tsx +0 -246
- package/src/components/domain/chat/Composer/parts/ComposerProjectPickerSource.test.mjs +0 -46
- package/src/components/domain/chat/Composer/parts/ComposerQueue.stories.tsx +0 -275
- package/src/components/domain/chat/Composer/parts/ComposerQueue.tsx +0 -155
- package/src/components/domain/chat/Composer/parts/ComposerQueueSource.test.mjs +0 -95
- package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.stories.tsx +0 -77
- package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.tsx +0 -70
- package/src/components/domain/chat/Composer/parts/mountChip.ts +0 -21
- package/src/components/domain/chat/ContextUsage/ContextUsage.stories.tsx +0 -62
- package/src/components/domain/chat/ContextUsage/index.tsx +0 -69
- package/src/components/domain/chat/ExecutionSummary/ExecutionSummary.stories.tsx +0 -238
- package/src/components/domain/chat/ExecutionSummary/ExecutionSummarySource.test.mjs +0 -210
- package/src/components/domain/chat/ExecutionSummary/index.tsx +0 -487
- package/src/components/domain/chat/Message/Message.stories.tsx +0 -264
- package/src/components/domain/chat/Message/index.tsx +0 -44
- package/src/components/domain/chat/MessageActions/MessageActions.stories.tsx +0 -132
- package/src/components/domain/chat/MessageActions/MessageActionsSource.test.mjs +0 -79
- package/src/components/domain/chat/MessageActions/index.tsx +0 -186
- package/src/components/domain/chat/PlanCard/PlanCard.stories.tsx +0 -87
- package/src/components/domain/chat/PlanCard/index.tsx +0 -170
- package/src/components/domain/chat/RichContent/RichContent.stories.tsx +0 -102
- package/src/components/domain/chat/RichContent/RichContentSource.test.mjs +0 -82
- package/src/components/domain/chat/RichContent/index.tsx +0 -465
- package/src/components/domain/chat/SubAgentThread/SubAgentThread.stories.tsx +0 -119
- package/src/components/domain/chat/SubAgentThread/index.tsx +0 -104
- package/src/components/domain/chat/Thinking/Thinking.stories.tsx +0 -196
- package/src/components/domain/chat/Thinking/ThinkingInlineSource.test.mjs +0 -154
- package/src/components/domain/chat/Thinking/index.tsx +0 -237
- package/src/components/domain/chat/ToolCallRow/ToolCallRow.stories.tsx +0 -105
- package/src/components/domain/chat/ToolCallRow/ToolCallRowSource.test.mjs +0 -83
- package/src/components/domain/chat/ToolCallRow/index.tsx +0 -113
- package/src/components/domain/chat/Transcript/Transcript.stories.tsx +0 -296
- package/src/components/domain/chat/Transcript/TranscriptSource.test.mjs +0 -189
- package/src/components/domain/chat/Transcript/index.tsx +0 -187
- package/src/components/domain/chat/TranscriptSpine/TranscriptSpine.stories.tsx +0 -124
- package/src/components/domain/chat/TranscriptSpine/index.tsx +0 -245
- package/src/components/domain/chat/UserTurn/UserTurn.stories.tsx +0 -176
- package/src/components/domain/chat/UserTurn/UserTurnSource.test.mjs +0 -150
- package/src/components/domain/chat/UserTurn/index.tsx +0 -194
- package/src/components/domain/chat/index.ts +0 -22
- package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuView.stories.tsx +0 -116
- package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuViewSource.test.mjs +0 -80
- package/src/components/domain/desktop/DesktopAccountMenuView/index.tsx +0 -355
- package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettings.stories.tsx +0 -96
- package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettingsSource.test.mjs +0 -89
- package/src/components/domain/desktop/DesktopAppearanceSettings/index.tsx +0 -155
- package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigView.stories.tsx +0 -275
- package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigViewSource.test.mjs +0 -37
- package/src/components/domain/desktop/DesktopAssistantConfigView/index.tsx +0 -221
- package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogView.stories.tsx +0 -537
- package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogViewSource.test.mjs +0 -339
- package/src/components/domain/desktop/DesktopCatalogView/index.tsx +0 -1074
- package/src/components/domain/desktop/DesktopChatBranchDivider/DesktopChatBranchDivider.stories.tsx +0 -58
- package/src/components/domain/desktop/DesktopChatBranchDivider/index.tsx +0 -33
- package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateView.stories.tsx +0 -75
- package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateViewSource.test.mjs +0 -54
- package/src/components/domain/desktop/DesktopChatEmptyStateView/index.tsx +0 -64
- package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderView.stories.tsx +0 -83
- package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderViewSource.test.mjs +0 -126
- package/src/components/domain/desktop/DesktopChatHeaderView/index.tsx +0 -169
- package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageView.stories.tsx +0 -170
- package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageViewSource.test.mjs +0 -47
- package/src/components/domain/desktop/DesktopChatMessageView/index.tsx +0 -213
- package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnView.stories.tsx +0 -498
- package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnViewSource.test.mjs +0 -187
- package/src/components/domain/desktop/DesktopChatTurnView/index.tsx +0 -490
- package/src/components/domain/desktop/DesktopComposer/DesktopComposer.stories.tsx +0 -195
- package/src/components/domain/desktop/DesktopComposer/DesktopComposerModelPickerSource.test.mjs +0 -132
- package/src/components/domain/desktop/DesktopComposer/DesktopComposerMountChipSource.test.mjs +0 -43
- package/src/components/domain/desktop/DesktopComposer/DesktopComposerResponsiveSource.test.mjs +0 -44
- package/src/components/domain/desktop/DesktopComposer/DesktopMcpFormThemeSource.test.mjs +0 -30
- package/src/components/domain/desktop/DesktopComposer/index.tsx +0 -206
- package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailView.stories.tsx +0 -72
- package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailViewSource.test.mjs +0 -81
- package/src/components/domain/desktop/DesktopConnectorDetailView/index.tsx +0 -301
- package/src/components/domain/desktop/DesktopHomeView/DesktopHomeView.stories.tsx +0 -103
- package/src/components/domain/desktop/DesktopHomeView/DesktopHomeViewSource.test.mjs +0 -51
- package/src/components/domain/desktop/DesktopHomeView/index.tsx +0 -122
- package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/DesktopLibraryAuthorizationDialog.stories.tsx +0 -55
- package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/DesktopLibraryAuthorizationDialogSource.test.mjs +0 -22
- package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/index.tsx +0 -171
- package/src/components/domain/desktop/DesktopLibraryPageView/DesktopLibraryPageView.stories.tsx +0 -49
- package/src/components/domain/desktop/DesktopLibraryPageView/index.tsx +0 -49
- package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.css +0 -75
- package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.stories.tsx +0 -230
- package/src/components/domain/desktop/DesktopLoginView/DesktopLoginViewSource.test.mjs +0 -156
- package/src/components/domain/desktop/DesktopLoginView/index.tsx +0 -432
- package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourView.stories.tsx +0 -103
- package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourViewSource.test.mjs +0 -57
- package/src/components/domain/desktop/DesktopOnboardingTourView/index.tsx +0 -189
- package/src/components/domain/desktop/DesktopPet/DesktopPet.fixture.ts +0 -243
- package/src/components/domain/desktop/DesktopPet/DesktopPet.stories.tsx +0 -337
- package/src/components/domain/desktop/DesktopPet/DesktopPetSource.test.mjs +0 -191
- package/src/components/domain/desktop/DesktopPet/index.tsx +0 -591
- package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettings.stories.tsx +0 -159
- package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettingsSource.test.mjs +0 -76
- package/src/components/domain/desktop/DesktopPetSettings/index.tsx +0 -140
- package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusView.stories.tsx +0 -166
- package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusViewSource.test.mjs +0 -51
- package/src/components/domain/desktop/DesktopRunStatusView/index.tsx +0 -34
- package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCard.stories.tsx +0 -122
- package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCardSource.test.mjs +0 -42
- package/src/components/domain/desktop/DesktopSelectionCard/index.tsx +0 -75
- package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySection.stories.tsx +0 -225
- package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySectionSource.test.mjs +0 -105
- package/src/components/domain/desktop/DesktopSettingsMemorySection/index.tsx +0 -340
- package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsView.stories.tsx +0 -177
- package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsViewSource.test.mjs +0 -195
- package/src/components/domain/desktop/DesktopSettingsView/index.tsx +0 -176
- package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarView.stories.tsx +0 -77
- package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarViewSource.test.mjs +0 -76
- package/src/components/domain/desktop/DesktopShareSelectionBarView/index.tsx +0 -55
- package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarView.stories.tsx +0 -454
- package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarViewSource.test.mjs +0 -388
- package/src/components/domain/desktop/DesktopSidebarView/index.tsx +0 -1111
- package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesView.stories.tsx +0 -369
- package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesViewSource.test.mjs +0 -123
- package/src/components/domain/desktop/DesktopSiteReleasesView/index.tsx +0 -392
- package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListView.stories.tsx +0 -244
- package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListViewSource.test.mjs +0 -198
- package/src/components/domain/desktop/DesktopSitesListView/index.tsx +0 -417
- package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageView.stories.tsx +0 -230
- package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageViewSource.test.mjs +0 -149
- package/src/components/domain/desktop/DesktopSkillsPageView/index.tsx +0 -235
- package/src/components/domain/desktop/DesktopTaskDetailView/index.tsx +0 -111
- package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallListViewSource.test.mjs +0 -302
- package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallView.stories.tsx +0 -409
- package/src/components/domain/desktop/DesktopToolCallView/index.tsx +0 -388
- package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShell.stories.tsx +0 -418
- package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShellSource.test.mjs +0 -151
- package/src/components/domain/desktop/DesktopWorkbenchShell/index.tsx +0 -167
- package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageView.stories.tsx +0 -135
- package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageViewSource.test.mjs +0 -57
- package/src/components/domain/desktop/DesktopWorkspacePageView/index.tsx +0 -114
- package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceView.stories.tsx +0 -227
- package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceViewSource.test.mjs +0 -175
- package/src/components/domain/desktop/DesktopWorkspaceView/index.tsx +0 -580
- package/src/components/domain/desktop/ResourceManagement/ResourceManagement.stories.tsx +0 -19
- package/src/components/domain/desktop/ResourceManagement/ResourceManagementSource.test.mjs +0 -54
- package/src/components/domain/desktop/ResourceManagement/SharesList.tsx +0 -323
- package/src/components/domain/desktop/ResourceManagement/SnapshotViews.tsx +0 -92
- package/src/components/domain/desktop/ResourceManagement/SnapshotViewsSource.test.mjs +0 -15
- package/src/components/domain/desktop/ResourceManagement/index.tsx +0 -246
- package/src/components/domain/desktop/ShareSettingsDialogView/index.tsx +0 -234
- package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmpty.stories.tsx +0 -100
- package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmptySource.test.mjs +0 -67
- package/src/components/domain/desktop/SidePanelEmpty/index.tsx +0 -113
- package/src/components/domain/desktop/StarterCapsules/StarterCapsules.stories.tsx +0 -65
- package/src/components/domain/desktop/StarterCapsules/StarterCapsulesSource.test.mjs +0 -43
- package/src/components/domain/desktop/StarterCapsules/index.tsx +0 -90
- package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanel.stories.tsx +0 -59
- package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanelSource.test.mjs +0 -51
- package/src/components/domain/desktop/WorkbenchSidePanel/index.tsx +0 -74
- package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirm.stories.tsx +0 -79
- package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirmSource.test.mjs +0 -34
- package/src/components/domain/desktop/WorkspaceMigrateConfirm/index.tsx +0 -92
- package/src/components/domain/desktop/index.ts +0 -64
- package/src/components/domain/files/FileBrowser/FileBrowser.stories.tsx +0 -397
- package/src/components/domain/files/FileBrowser/FileBrowserSource.test.mjs +0 -75
- package/src/components/domain/files/FileBrowser/index.tsx +0 -221
- package/src/components/domain/files/FileIcon/FileIcon.stories.tsx +0 -207
- package/src/components/domain/files/FileIcon/FileIconSource.test.mjs +0 -39
- package/src/components/domain/files/FileIcon/index.tsx +0 -133
- package/src/components/domain/files/FilePreviewContentView/FilePreviewContentView.stories.tsx +0 -242
- package/src/components/domain/files/FilePreviewContentView/FilePreviewContentViewSource.test.mjs +0 -44
- package/src/components/domain/files/FilePreviewContentView/index.tsx +0 -125
- package/src/components/domain/files/FileTree/FileTree.stories.tsx +0 -204
- package/src/components/domain/files/FileTree/FileTreeSource.test.mjs +0 -18
- package/src/components/domain/files/FileTree/index.tsx +0 -106
- package/src/components/domain/files/PreviewDialog/PreviewDialog.stories.tsx +0 -178
- package/src/components/domain/files/PreviewDialog/PreviewDialogSource.test.mjs +0 -92
- package/src/components/domain/files/PreviewDialog/index.tsx +0 -294
- package/src/components/domain/files/index.ts +0 -5
- package/src/components/domain/index.ts +0 -8
- package/src/components/domain/office/CsvPreview/CsvPreview.stories.tsx +0 -264
- package/src/components/domain/office/CsvPreview/CsvPreviewSource.test.mjs +0 -77
- package/src/components/domain/office/CsvPreview/index.tsx +0 -224
- package/src/components/domain/office/OfficePreview/OfficePreview.stories.tsx +0 -265
- package/src/components/domain/office/OfficePreview/OfficePreviewDialog.stories.tsx +0 -71
- package/src/components/domain/office/OfficePreview/OfficePreviewDialog.tsx +0 -43
- package/src/components/domain/office/OfficePreview/OfficePreviewSource.test.mjs +0 -126
- package/src/components/domain/office/OfficePreview/index.tsx +0 -782
- package/src/components/domain/office/PdfPreview/PdfPreview.stories.tsx +0 -280
- package/src/components/domain/office/PdfPreview/PdfPreviewDialog.stories.tsx +0 -61
- package/src/components/domain/office/PdfPreview/PdfPreviewDialog.tsx +0 -61
- package/src/components/domain/office/PdfPreview/PdfPreviewSource.test.mjs +0 -70
- package/src/components/domain/office/PdfPreview/index.tsx +0 -217
- package/src/components/domain/office/index.ts +0 -5
- package/src/components/domain/skills/McpServerListView/McpServerListView.stories.tsx +0 -510
- package/src/components/domain/skills/McpServerListView/McpServerListViewSource.test.mjs +0 -101
- package/src/components/domain/skills/McpServerListView/index.tsx +0 -250
- package/src/components/domain/skills/SkillAvatarView/SkillAvatarView.stories.tsx +0 -121
- package/src/components/domain/skills/SkillAvatarView/SkillAvatarViewSource.test.mjs +0 -67
- package/src/components/domain/skills/SkillAvatarView/index.tsx +0 -112
- package/src/components/domain/skills/SkillCardView/SkillCardView.stories.tsx +0 -374
- package/src/components/domain/skills/SkillCardView/SkillCardViewSource.test.mjs +0 -35
- package/src/components/domain/skills/SkillCardView/index.tsx +0 -88
- package/src/components/domain/skills/SkillDetailPanelView/SkillDetailPanelView.stories.tsx +0 -113
- package/src/components/domain/skills/SkillDetailPanelView/index.tsx +0 -115
- package/src/components/domain/skills/SkillDetailView/SkillDetailView.stories.tsx +0 -274
- package/src/components/domain/skills/SkillDetailView/index.tsx +0 -121
- package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogView.stories.tsx +0 -128
- package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogViewSource.test.mjs +0 -11
- package/src/components/domain/skills/SkillImportDialogView/index.tsx +0 -147
- package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalView.stories.tsx +0 -160
- package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalViewSource.test.mjs +0 -99
- package/src/components/domain/skills/ToolDetailModalView/index.tsx +0 -160
- package/src/components/domain/skills/index.ts +0 -7
- package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardView.stories.tsx +0 -120
- package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardViewSource.test.mjs +0 -40
- package/src/components/domain/tasks/ScheduledTaskCardView/index.tsx +0 -135
- package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialog.stories.tsx +0 -56
- package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialogSource.test.mjs +0 -35
- package/src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx +0 -73
- package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailView.stories.tsx +0 -121
- package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailViewSource.test.mjs +0 -115
- package/src/components/domain/tasks/ScheduledTaskDetailView/index.tsx +0 -223
- package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceView.stories.tsx +0 -526
- package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceViewSource.test.mjs +0 -85
- package/src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx +0 -118
- package/src/components/domain/tasks/index.ts +0 -4
- package/src/components/domain/theme/SkinManager.stories.tsx +0 -43
- package/src/components/domain/theme/SkinManagerUI.tsx +0 -382
- package/src/components/domain/theme/ThemeDemo.stories.tsx +0 -12
- package/src/components/domain/theme/ThemeDemo.tsx +0 -224
- package/src/components/index.ts +0 -11
- package/src/components/primitives/Avatar/Avatar.stories.tsx +0 -170
- package/src/components/primitives/Avatar/AvatarSource.test.mjs +0 -37
- package/src/components/primitives/Avatar/index.tsx +0 -180
- package/src/components/primitives/BackTop/BackTop.stories.tsx +0 -122
- package/src/components/primitives/BackTop/BackTopSource.test.mjs +0 -61
- package/src/components/primitives/BackTop/index.tsx +0 -93
- package/src/components/primitives/Badge/Badge.stories.tsx +0 -376
- package/src/components/primitives/Badge/BadgeSource.test.mjs +0 -27
- package/src/components/primitives/Badge/index.tsx +0 -65
- package/src/components/primitives/Button/Button.stories.tsx +0 -287
- package/src/components/primitives/Button/ButtonSource.test.mjs +0 -84
- package/src/components/primitives/Button/index.tsx +0 -219
- package/src/components/primitives/Card/Card.stories.tsx +0 -186
- package/src/components/primitives/Card/CardSource.test.mjs +0 -73
- package/src/components/primitives/Card/index.tsx +0 -137
- package/src/components/primitives/Checkbox/Checkbox.stories.tsx +0 -79
- package/src/components/primitives/Checkbox/CheckboxSource.test.mjs +0 -43
- package/src/components/primitives/Checkbox/index.tsx +0 -87
- package/src/components/primitives/Chip/Chip.stories.tsx +0 -149
- package/src/components/primitives/Chip/ChipSource.test.mjs +0 -73
- package/src/components/primitives/Chip/index.tsx +0 -252
- package/src/components/primitives/Divider/Divider.stories.tsx +0 -68
- package/src/components/primitives/Divider/DividerSource.test.mjs +0 -26
- package/src/components/primitives/Divider/index.tsx +0 -65
- package/src/components/primitives/Dropdown/Dropdown.stories.tsx +0 -38
- package/src/components/primitives/Dropdown/DropdownSource.test.mjs +0 -23
- package/src/components/primitives/Dropdown/index.tsx +0 -29
- package/src/components/primitives/EmptyState/EmptyState.stories.tsx +0 -159
- package/src/components/primitives/EmptyState/EmptyStateSource.test.mjs +0 -169
- package/src/components/primitives/EmptyState/index.tsx +0 -185
- package/src/components/primitives/ErrorCard/ErrorCard.stories.tsx +0 -50
- package/src/components/primitives/ErrorCard/index.tsx +0 -78
- package/src/components/primitives/Field/Field.stories.tsx +0 -208
- package/src/components/primitives/Field/FieldSource.test.mjs +0 -70
- package/src/components/primitives/Field/index.tsx +0 -297
- package/src/components/primitives/InlineMessage/InlineMessage.stories.tsx +0 -137
- package/src/components/primitives/InlineMessage/InlineMessageSource.test.mjs +0 -50
- package/src/components/primitives/InlineMessage/index.tsx +0 -141
- package/src/components/primitives/Input/Input.stories.tsx +0 -30
- package/src/components/primitives/Input/index.tsx +0 -12
- package/src/components/primitives/Keycap/Keycap.stories.tsx +0 -93
- package/src/components/primitives/Keycap/KeycapSource.test.mjs +0 -30
- package/src/components/primitives/Keycap/index.tsx +0 -67
- package/src/components/primitives/Menu/Menu.stories.tsx +0 -416
- package/src/components/primitives/Menu/MenuEmptySource.test.mjs +0 -23
- package/src/components/primitives/Menu/MenuSource.test.mjs +0 -207
- package/src/components/primitives/Menu/index.tsx +0 -923
- package/src/components/primitives/Pagination/Pagination.stories.tsx +0 -77
- package/src/components/primitives/Pagination/PaginationSource.test.mjs +0 -24
- package/src/components/primitives/Pagination/index.tsx +0 -85
- package/src/components/primitives/Pagination/pagination.ts +0 -25
- package/src/components/primitives/Pagination/paginationModel.test.mjs +0 -18
- package/src/components/primitives/ProgressBar/ProgressBar.stories.tsx +0 -103
- package/src/components/primitives/ProgressBar/ProgressBarSource.test.mjs +0 -44
- package/src/components/primitives/ProgressBar/index.tsx +0 -68
- package/src/components/primitives/Radio/Radio.stories.tsx +0 -84
- package/src/components/primitives/Radio/RadioSource.test.mjs +0 -38
- package/src/components/primitives/Radio/index.tsx +0 -161
- package/src/components/primitives/SegmentedControl/SegmentedControl.stories.tsx +0 -110
- package/src/components/primitives/SegmentedControl/SegmentedControlSource.test.mjs +0 -75
- package/src/components/primitives/SegmentedControl/index.tsx +0 -188
- package/src/components/primitives/Select/Select.stories.tsx +0 -158
- package/src/components/primitives/Select/SelectSource.test.mjs +0 -94
- package/src/components/primitives/Select/index.tsx +0 -406
- package/src/components/primitives/Spinner/index.tsx +0 -58
- package/src/components/primitives/Switch/Switch.stories.tsx +0 -64
- package/src/components/primitives/Switch/SwitchSource.test.mjs +0 -38
- package/src/components/primitives/Switch/index.tsx +0 -84
- package/src/components/primitives/Tabs/Tabs.stories.tsx +0 -230
- package/src/components/primitives/Tabs/TabsSource.test.mjs +0 -91
- package/src/components/primitives/Tabs/index.tsx +0 -183
- package/src/components/primitives/index.ts +0 -24
- package/src/examples/ResourceManagementExample.tsx +0 -119
- package/src/examples/SiteWorkbenchExample.tsx +0 -96
- package/src/hooks/index.ts +0 -7
- package/src/hooks/useClickOutside.ts +0 -20
- package/src/hooks/useDragReorder.ts +0 -29
- package/src/hooks/useImeAwareEnter.ts +0 -59
- package/src/hooks/useImeAwareEnterSource.test.mjs +0 -65
- package/src/hooks/useKeyboard.ts +0 -16
- package/src/hooks/usePopover.ts +0 -67
- package/src/hooks/useSelectedOptionLocator.ts +0 -33
- package/src/hooks/useSidebarResize.ts +0 -107
- package/src/hooks/useTenantTheme.ts +0 -53
- package/src/hooks/useUnifiedTheme.ts +0 -85
- package/src/index.ts +0 -6
- package/src/lib/InjectedStyleTokenMirrorSource.test.mjs +0 -67
- package/src/lib/about-window.test.mjs +0 -46
- package/src/lib/about-window.ts +0 -218
- package/src/lib/appearance.test.mjs +0 -283
- package/src/lib/appearance.ts +0 -46
- package/src/lib/browser-annotation-popup.ts +0 -151
- package/src/lib/focusTrap.ts +0 -51
- package/src/lib/index.ts +0 -5
- package/src/lib/shortcut.test.mjs +0 -100
- package/src/lib/shortcut.ts +0 -97
- package/src/lib/twMergeOw.ts +0 -18
- package/src/lib/utils.ts +0 -6
- package/src/screens/Browser.stories.tsx +0 -353
- package/src/screens/Chat.stories.tsx +0 -808
- package/src/screens/Home.stories.tsx +0 -253
- package/src/screens/Login.stories.tsx +0 -134
- package/src/screens/McpManager.stories.tsx +0 -159
- package/src/screens/Onboarding.stories.tsx +0 -155
- package/src/screens/ScheduledTasks.stories.tsx +0 -134
- package/src/screens/ScreenFrameSource.test.mjs +0 -77
- package/src/screens/SettingsAppearance.stories.tsx +0 -117
- package/src/screens/SettingsMemory.stories.tsx +0 -128
- package/src/screens/SettingsModels.stories.tsx +0 -228
- package/src/screens/SettingsSections.stories.tsx +0 -164
- package/src/screens/Share.stories.tsx +0 -202
- package/src/screens/SharePage.stories.tsx +0 -29
- package/src/screens/Sites.stories.tsx +0 -183
- package/src/screens/Skills.stories.tsx +0 -83
- package/src/screens/Workspace.stories.tsx +0 -191
- package/src/screens/_home.tsx +0 -46
- package/src/screens/_screen.tsx +0 -355
- package/src/screens/_settingsNav.ts +0 -27
- package/src/screens/_skillsCatalog.tsx +0 -372
- package/src/theme/SkinDenylistSyncSource.test.mjs +0 -124
- package/src/theme/__tests__/skins.test.mjs +0 -84
- package/src/theme/core/semanticAdapter.ts +0 -116
- package/src/theme/core/skin.ts +0 -605
- package/src/theme/core/skinScoped.ts +0 -289
- package/src/theme/core/tenantTheme.test.mjs +0 -127
- package/src/theme/core/tenantTheme.ts +0 -124
- package/src/theme/core/types.ts +0 -60
- package/src/theme/core/unifiedTheme.ts +0 -157
- package/src/theme/index.ts +0 -33
- package/src/theme/providers/BrandingProvider.tsx +0 -57
- package/src/theme/providers/ThemeProvider.tsx +0 -221
- package/src/theme/skinDs2PropertyGate.test.mjs +0 -109
- package/src/theme/skins/index.ts +0 -107
- package/src/theme/utils/cssSafety.ts +0 -92
- package/src/theme/utils/skinManager.ts +0 -159
- package/src/theme/utils/themeApplier.ts +0 -75
- package/src/tokens/DesktopSurfacesSweep15Source.test.mjs +0 -77
- package/src/tokens/SharedStyleSheetsSource.test.mjs +0 -90
- package/src/tokens/TailwindThemeSupplySource.test.mjs +0 -129
- package/src/tokens/base.ts +0 -199
- package/src/tokens/dark.ts +0 -288
- package/src/tokens/index.ts +0 -4
- package/src/tokens/light.ts +0 -320
- package/src/tokens/tailwind.ts +0 -216
- package/src/types/desktop-pet.ts +0 -100
- package/src/types/file-browser.ts +0 -51
- package/src/types/file-tree.ts +0 -34
- package/src/types/index.ts +0 -3
- package/src/types/xspreadsheet.d.ts +0 -4
- package/src/utils/cn.ts +0 -6
- package/src/utils/glyphColor.ts +0 -32
- package/src/utils/index.ts +0 -4
- package/src/utils/localPathInline.test.mjs +0 -45
- package/src/utils/localPathInline.ts +0 -49
- package/src/utils/markdownFileRefs.test.mjs +0 -88
- package/src/utils/markdownFileRefs.ts +0 -140
- package/src/utils/office-excel.ts +0 -452
- package/src/utils/shiki.ts +0 -156
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/base.ts","../src/theme/core/fontScale.ts","../src/theme/utils/cssSafety.ts","../src/theme/core/skin.ts"],"sourcesContent":["/**\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"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/theme/skins/index.ts
|
|
2
|
+
function completeMode(input) {
|
|
3
|
+
return {
|
|
4
|
+
...input,
|
|
5
|
+
foregroundMuted: input.foregroundSecondary,
|
|
6
|
+
chatBackground: input.backgroundPrimary,
|
|
7
|
+
userBubbleBackground: input.backgroundTertiary,
|
|
8
|
+
userBubbleForeground: input.foregroundPrimary,
|
|
9
|
+
userBubbleBorder: input.borderStrong,
|
|
10
|
+
composerBackground: input.backgroundSecondary,
|
|
11
|
+
composerBorder: input.borderStrong,
|
|
12
|
+
sidebarBackground: input.backgroundSecondary,
|
|
13
|
+
sidebarSelectedBackground: input.backgroundTertiary
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
var codex = {
|
|
17
|
+
version: 1,
|
|
18
|
+
id: "codex",
|
|
19
|
+
name: "Normal",
|
|
20
|
+
description: "\u9AD8\u5BF9\u6BD4\u4E2D\u6027\u5DE5\u4F5C\u7A7A\u95F4",
|
|
21
|
+
modes: {
|
|
22
|
+
light: completeMode({
|
|
23
|
+
backgroundPrimary: "#ffffff",
|
|
24
|
+
backgroundSecondary: "#f5f5f5",
|
|
25
|
+
backgroundTertiary: "#ebebeb",
|
|
26
|
+
foregroundPrimary: "#000000",
|
|
27
|
+
foregroundSecondary: "#525252",
|
|
28
|
+
borderSubtle: "#dedede",
|
|
29
|
+
borderStrong: "#b8b8b8"
|
|
30
|
+
}),
|
|
31
|
+
dark: completeMode({
|
|
32
|
+
backgroundPrimary: "#1f1f24",
|
|
33
|
+
backgroundSecondary: "#29292e",
|
|
34
|
+
backgroundTertiary: "#333339",
|
|
35
|
+
foregroundPrimary: "#ffffff",
|
|
36
|
+
foregroundSecondary: "#b7b7c0",
|
|
37
|
+
borderSubtle: "#3f3f46",
|
|
38
|
+
borderStrong: "#676771"
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
var DEFAULT_ORBITWORK_SKIN_ID = "codex";
|
|
43
|
+
var warmBeige = {
|
|
44
|
+
version: 1,
|
|
45
|
+
id: "warm-beige",
|
|
46
|
+
name: "Warm Beige",
|
|
47
|
+
description: "Orbitwork \u539F\u59CB\u7684\u6D77\u519B\u84DD\u4E0E\u6696\u7070\u8BED\u4E49\u914D\u8272",
|
|
48
|
+
modes: {
|
|
49
|
+
light: completeMode({
|
|
50
|
+
backgroundPrimary: "#f7f6f1",
|
|
51
|
+
backgroundSecondary: "#fdfdfc",
|
|
52
|
+
backgroundTertiary: "#f1f0ea",
|
|
53
|
+
foregroundPrimary: "#333b50",
|
|
54
|
+
foregroundSecondary: "#646b7a",
|
|
55
|
+
borderSubtle: "#dcdcd7",
|
|
56
|
+
borderStrong: "#c2c3c1"
|
|
57
|
+
}),
|
|
58
|
+
dark: completeMode({
|
|
59
|
+
backgroundPrimary: "#16171b",
|
|
60
|
+
backgroundSecondary: "#1e2025",
|
|
61
|
+
backgroundTertiary: "#23252b",
|
|
62
|
+
foregroundPrimary: "#ecebe5",
|
|
63
|
+
foregroundSecondary: "#92969d",
|
|
64
|
+
borderSubtle: "#2a2c33",
|
|
65
|
+
borderStrong: "#3f434d"
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
var aurora = {
|
|
70
|
+
version: 1,
|
|
71
|
+
id: "aurora",
|
|
72
|
+
name: "Aurora",
|
|
73
|
+
description: "\u67D4\u548C\u7D2B\u8272\u5F3A\u8C03\u4E0E\u5FAE\u6696\u80CC\u666F",
|
|
74
|
+
modes: {
|
|
75
|
+
light: {
|
|
76
|
+
backgroundPrimary: "#fdfcff",
|
|
77
|
+
backgroundSecondary: "#f8f5ff",
|
|
78
|
+
backgroundTertiary: "#f1ecfb",
|
|
79
|
+
foregroundPrimary: "#1d1a26",
|
|
80
|
+
foregroundSecondary: "#4c4560",
|
|
81
|
+
foregroundMuted: "#4c4560",
|
|
82
|
+
borderSubtle: "#ded8ea",
|
|
83
|
+
borderStrong: "#c4b5fd",
|
|
84
|
+
buttonPrimaryBackground: "#7c3aed",
|
|
85
|
+
buttonPrimaryForeground: "#ffffff",
|
|
86
|
+
chatBackground: "#fdfcff",
|
|
87
|
+
userBubbleBackground: "#f1ecfb",
|
|
88
|
+
userBubbleForeground: "#1d1a26",
|
|
89
|
+
userBubbleBorder: "#c4b5fd",
|
|
90
|
+
composerBackground: "#f8f5ff",
|
|
91
|
+
composerBorder: "#c4b5fd",
|
|
92
|
+
sidebarBackground: "#f8f5ff",
|
|
93
|
+
sidebarSelectedBackground: "#f1ecfb"
|
|
94
|
+
},
|
|
95
|
+
dark: {
|
|
96
|
+
backgroundPrimary: "#17141d",
|
|
97
|
+
backgroundSecondary: "#201b29",
|
|
98
|
+
backgroundTertiary: "#2a2335",
|
|
99
|
+
foregroundPrimary: "#eae6f2",
|
|
100
|
+
foregroundSecondary: "#b3abc6",
|
|
101
|
+
foregroundMuted: "#b3abc6",
|
|
102
|
+
borderSubtle: "#393146",
|
|
103
|
+
borderStrong: "#6d4aa5",
|
|
104
|
+
buttonPrimaryBackground: "#a78bfa",
|
|
105
|
+
buttonPrimaryForeground: "#17141d",
|
|
106
|
+
chatBackground: "#17141d",
|
|
107
|
+
userBubbleBackground: "#2a2335",
|
|
108
|
+
userBubbleForeground: "#eae6f2",
|
|
109
|
+
userBubbleBorder: "#6d4aa5",
|
|
110
|
+
composerBackground: "#201b29",
|
|
111
|
+
composerBorder: "#6d4aa5",
|
|
112
|
+
sidebarBackground: "#201b29",
|
|
113
|
+
sidebarSelectedBackground: "#2a2335"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
var forest = {
|
|
118
|
+
version: 1,
|
|
119
|
+
id: "forest",
|
|
120
|
+
name: "Forest",
|
|
121
|
+
description: "\u514B\u5236\u81EA\u7136\u7684\u7EFF\u8272\u5DE5\u4F5C\u7A7A\u95F4",
|
|
122
|
+
modes: {
|
|
123
|
+
light: {
|
|
124
|
+
backgroundPrimary: "#fbfdfb",
|
|
125
|
+
backgroundSecondary: "#f3f8f5",
|
|
126
|
+
backgroundTertiary: "#e9f1ec",
|
|
127
|
+
foregroundPrimary: "#16211b",
|
|
128
|
+
foregroundSecondary: "#3f5248",
|
|
129
|
+
foregroundMuted: "#3f5248",
|
|
130
|
+
borderSubtle: "#d6e1da",
|
|
131
|
+
borderStrong: "#98d8be",
|
|
132
|
+
buttonPrimaryBackground: "#16805b",
|
|
133
|
+
buttonPrimaryForeground: "#ffffff",
|
|
134
|
+
chatBackground: "#fbfdfb",
|
|
135
|
+
userBubbleBackground: "#e9f1ec",
|
|
136
|
+
userBubbleForeground: "#16211b",
|
|
137
|
+
userBubbleBorder: "#98d8be",
|
|
138
|
+
composerBackground: "#f3f8f5",
|
|
139
|
+
composerBorder: "#98d8be",
|
|
140
|
+
sidebarBackground: "#f3f8f5",
|
|
141
|
+
sidebarSelectedBackground: "#e9f1ec"
|
|
142
|
+
},
|
|
143
|
+
dark: {
|
|
144
|
+
backgroundPrimary: "#111916",
|
|
145
|
+
backgroundSecondary: "#17231e",
|
|
146
|
+
backgroundTertiary: "#1e2e27",
|
|
147
|
+
foregroundPrimary: "#e4efe8",
|
|
148
|
+
foregroundSecondary: "#a7bcb0",
|
|
149
|
+
foregroundMuted: "#a7bcb0",
|
|
150
|
+
borderSubtle: "#314139",
|
|
151
|
+
borderStrong: "#28664f",
|
|
152
|
+
buttonPrimaryBackground: "#55d6a0",
|
|
153
|
+
buttonPrimaryForeground: "#111916",
|
|
154
|
+
chatBackground: "#111916",
|
|
155
|
+
userBubbleBackground: "#1e2e27",
|
|
156
|
+
userBubbleForeground: "#e4efe8",
|
|
157
|
+
userBubbleBorder: "#28664f",
|
|
158
|
+
composerBackground: "#17231e",
|
|
159
|
+
composerBorder: "#28664f",
|
|
160
|
+
sidebarBackground: "#17231e",
|
|
161
|
+
sidebarSelectedBackground: "#1e2e27"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
var catppuccin = {
|
|
166
|
+
version: 1,
|
|
167
|
+
id: "catppuccin",
|
|
168
|
+
name: "Catppuccin",
|
|
169
|
+
description: "\u67D4\u548C\u7684\u7C89\u5F69\u8272\u8C03\uFF0C\u9002\u5408\u957F\u65F6\u95F4\u9605\u8BFB",
|
|
170
|
+
modes: {
|
|
171
|
+
light: completeMode({
|
|
172
|
+
backgroundPrimary: "#eff1f5",
|
|
173
|
+
backgroundSecondary: "#e6e9ef",
|
|
174
|
+
backgroundTertiary: "#dce0e8",
|
|
175
|
+
foregroundPrimary: "#4c4f69",
|
|
176
|
+
foregroundSecondary: "#565a75",
|
|
177
|
+
borderSubtle: "#ccd0da",
|
|
178
|
+
borderStrong: "#9ca0b0",
|
|
179
|
+
buttonPrimaryBackground: "#8839ef",
|
|
180
|
+
buttonPrimaryForeground: "#ffffff"
|
|
181
|
+
}),
|
|
182
|
+
dark: completeMode({
|
|
183
|
+
backgroundPrimary: "#1e1e2e",
|
|
184
|
+
backgroundSecondary: "#181825",
|
|
185
|
+
backgroundTertiary: "#313244",
|
|
186
|
+
foregroundPrimary: "#cdd6f4",
|
|
187
|
+
foregroundSecondary: "#bac2de",
|
|
188
|
+
borderSubtle: "#45475a",
|
|
189
|
+
borderStrong: "#6c7086",
|
|
190
|
+
buttonPrimaryBackground: "#cba6f7",
|
|
191
|
+
buttonPrimaryForeground: "#1e1e2e"
|
|
192
|
+
})
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
var gruvbox = {
|
|
196
|
+
version: 1,
|
|
197
|
+
id: "gruvbox",
|
|
198
|
+
name: "Gruvbox",
|
|
199
|
+
description: "\u590D\u53E4\u800C\u6E29\u6696\u7684\u6CE5\u571F\u8272\u5DE5\u4F5C\u7A7A\u95F4",
|
|
200
|
+
modes: {
|
|
201
|
+
light: completeMode({
|
|
202
|
+
backgroundPrimary: "#fbf1c7",
|
|
203
|
+
backgroundSecondary: "#ebdbb2",
|
|
204
|
+
backgroundTertiary: "#d5c4a1",
|
|
205
|
+
foregroundPrimary: "#3c3836",
|
|
206
|
+
foregroundSecondary: "#504945",
|
|
207
|
+
borderSubtle: "#bdae93",
|
|
208
|
+
borderStrong: "#928374",
|
|
209
|
+
buttonPrimaryBackground: "#458588",
|
|
210
|
+
buttonPrimaryForeground: "#000000"
|
|
211
|
+
}),
|
|
212
|
+
dark: completeMode({
|
|
213
|
+
backgroundPrimary: "#282828",
|
|
214
|
+
backgroundSecondary: "#32302f",
|
|
215
|
+
backgroundTertiary: "#3c3836",
|
|
216
|
+
foregroundPrimary: "#ebdbb2",
|
|
217
|
+
foregroundSecondary: "#d5c4a1",
|
|
218
|
+
borderSubtle: "#504945",
|
|
219
|
+
borderStrong: "#665c54",
|
|
220
|
+
buttonPrimaryBackground: "#83a598",
|
|
221
|
+
buttonPrimaryForeground: "#282828"
|
|
222
|
+
})
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
var nord = {
|
|
226
|
+
version: 1,
|
|
227
|
+
id: "nord",
|
|
228
|
+
name: "Nord",
|
|
229
|
+
description: "\u51B7\u9759\u514B\u5236\u7684\u5317\u5883\u84DD\u7070\u8272\u8C03",
|
|
230
|
+
modes: {
|
|
231
|
+
light: completeMode({
|
|
232
|
+
backgroundPrimary: "#eceff4",
|
|
233
|
+
backgroundSecondary: "#e5e9f0",
|
|
234
|
+
backgroundTertiary: "#d8dee9",
|
|
235
|
+
foregroundPrimary: "#2e3440",
|
|
236
|
+
foregroundSecondary: "#3b4252",
|
|
237
|
+
borderSubtle: "#c2c9d4",
|
|
238
|
+
borderStrong: "#8f99a9",
|
|
239
|
+
buttonPrimaryBackground: "#5e81ac",
|
|
240
|
+
buttonPrimaryForeground: "#000000"
|
|
241
|
+
}),
|
|
242
|
+
dark: completeMode({
|
|
243
|
+
backgroundPrimary: "#2e3440",
|
|
244
|
+
backgroundSecondary: "#3b4252",
|
|
245
|
+
backgroundTertiary: "#434c5e",
|
|
246
|
+
foregroundPrimary: "#eceff4",
|
|
247
|
+
foregroundSecondary: "#d8dee9",
|
|
248
|
+
borderSubtle: "#4c566a",
|
|
249
|
+
borderStrong: "#60708a",
|
|
250
|
+
buttonPrimaryBackground: "#88c0d0",
|
|
251
|
+
buttonPrimaryForeground: "#2e3440"
|
|
252
|
+
})
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
var oneDarkPro = {
|
|
256
|
+
version: 1,
|
|
257
|
+
id: "one-dark-pro",
|
|
258
|
+
name: "One Dark Pro",
|
|
259
|
+
description: "\u5747\u8861\u6E05\u6670\u7684 Atom \u98CE\u683C\u914D\u8272",
|
|
260
|
+
modes: {
|
|
261
|
+
light: completeMode({
|
|
262
|
+
backgroundPrimary: "#fafafa",
|
|
263
|
+
backgroundSecondary: "#f0f0f0",
|
|
264
|
+
backgroundTertiary: "#e5e5e6",
|
|
265
|
+
foregroundPrimary: "#383a42",
|
|
266
|
+
foregroundSecondary: "#4f525d",
|
|
267
|
+
borderSubtle: "#d0d0d1",
|
|
268
|
+
borderStrong: "#a0a1a7",
|
|
269
|
+
buttonPrimaryBackground: "#4078f2",
|
|
270
|
+
buttonPrimaryForeground: "#000000"
|
|
271
|
+
}),
|
|
272
|
+
dark: completeMode({
|
|
273
|
+
backgroundPrimary: "#282c34",
|
|
274
|
+
backgroundSecondary: "#21252b",
|
|
275
|
+
backgroundTertiary: "#2f343f",
|
|
276
|
+
foregroundPrimary: "#abb2bf",
|
|
277
|
+
foregroundSecondary: "#c8ccd4",
|
|
278
|
+
borderSubtle: "#3e4451",
|
|
279
|
+
borderStrong: "#5c6370",
|
|
280
|
+
buttonPrimaryBackground: "#61afef",
|
|
281
|
+
buttonPrimaryForeground: "#20232a"
|
|
282
|
+
})
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
var rosePine = {
|
|
286
|
+
version: 1,
|
|
287
|
+
id: "rose-pine",
|
|
288
|
+
name: "Ros\xE9 Pine",
|
|
289
|
+
description: "\u6E29\u6696\u4F18\u96C5\u7684\u73AB\u7470\u7070\u7D2B\u8272\u8C03",
|
|
290
|
+
modes: {
|
|
291
|
+
light: completeMode({
|
|
292
|
+
backgroundPrimary: "#faf4ed",
|
|
293
|
+
backgroundSecondary: "#fffaf3",
|
|
294
|
+
backgroundTertiary: "#f2e9e1",
|
|
295
|
+
foregroundPrimary: "#575279",
|
|
296
|
+
foregroundSecondary: "#625d82",
|
|
297
|
+
borderSubtle: "#dfdad9",
|
|
298
|
+
borderStrong: "#9893a5",
|
|
299
|
+
buttonPrimaryBackground: "#907aa9",
|
|
300
|
+
buttonPrimaryForeground: "#191724"
|
|
301
|
+
}),
|
|
302
|
+
dark: completeMode({
|
|
303
|
+
backgroundPrimary: "#191724",
|
|
304
|
+
backgroundSecondary: "#1f1d2e",
|
|
305
|
+
backgroundTertiary: "#26233a",
|
|
306
|
+
foregroundPrimary: "#e0def4",
|
|
307
|
+
foregroundSecondary: "#c4a7e7",
|
|
308
|
+
borderSubtle: "#403d52",
|
|
309
|
+
borderStrong: "#6e6a86",
|
|
310
|
+
buttonPrimaryBackground: "#c4a7e7",
|
|
311
|
+
buttonPrimaryForeground: "#191724"
|
|
312
|
+
})
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
var solarized = {
|
|
316
|
+
version: 1,
|
|
317
|
+
id: "solarized",
|
|
318
|
+
name: "Solarized",
|
|
319
|
+
description: "\u4F4E\u75B2\u52B3\u3001\u7CBE\u786E\u5E73\u8861\u7684\u7ECF\u5178\u914D\u8272",
|
|
320
|
+
modes: {
|
|
321
|
+
light: completeMode({
|
|
322
|
+
backgroundPrimary: "#fdf6e3",
|
|
323
|
+
backgroundSecondary: "#eee8d5",
|
|
324
|
+
backgroundTertiary: "#e4ddc7",
|
|
325
|
+
foregroundPrimary: "#4b626a",
|
|
326
|
+
foregroundSecondary: "#455b62",
|
|
327
|
+
borderSubtle: "#d3cbb7",
|
|
328
|
+
borderStrong: "#93a1a1",
|
|
329
|
+
buttonPrimaryBackground: "#268bd2",
|
|
330
|
+
buttonPrimaryForeground: "#001f27"
|
|
331
|
+
}),
|
|
332
|
+
dark: completeMode({
|
|
333
|
+
backgroundPrimary: "#002b36",
|
|
334
|
+
backgroundSecondary: "#073642",
|
|
335
|
+
backgroundTertiary: "#0b4654",
|
|
336
|
+
foregroundPrimary: "#eee8d5",
|
|
337
|
+
foregroundSecondary: "#d5d1c4",
|
|
338
|
+
borderSubtle: "#23515d",
|
|
339
|
+
borderStrong: "#586e75",
|
|
340
|
+
buttonPrimaryBackground: "#268bd2",
|
|
341
|
+
buttonPrimaryForeground: "#001f27"
|
|
342
|
+
})
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
var BUILTIN_ORBITWORK_SKINS = [
|
|
346
|
+
codex,
|
|
347
|
+
warmBeige,
|
|
348
|
+
aurora,
|
|
349
|
+
forest,
|
|
350
|
+
catppuccin,
|
|
351
|
+
gruvbox,
|
|
352
|
+
nord,
|
|
353
|
+
oneDarkPro,
|
|
354
|
+
rosePine,
|
|
355
|
+
solarized
|
|
356
|
+
];
|
|
357
|
+
|
|
358
|
+
// src/theme/core/types.ts
|
|
359
|
+
var TENANT_THEME_COLOR_KEYS = [
|
|
360
|
+
"bg",
|
|
361
|
+
"surface",
|
|
362
|
+
"surface2",
|
|
363
|
+
"text",
|
|
364
|
+
"text2",
|
|
365
|
+
"text3",
|
|
366
|
+
"border",
|
|
367
|
+
"borderStrong"
|
|
368
|
+
];
|
|
369
|
+
var UNIFIED_NEUTRAL_TOKENS = [
|
|
370
|
+
"--ow-bg",
|
|
371
|
+
"--ow-surface",
|
|
372
|
+
"--ow-surface-2",
|
|
373
|
+
"--ow-text",
|
|
374
|
+
"--ow-text-2",
|
|
375
|
+
"--ow-text-3",
|
|
376
|
+
"--ow-border",
|
|
377
|
+
"--ow-border-strong"
|
|
378
|
+
];
|
|
379
|
+
var BRAND_ACTION_TOKENS = [
|
|
380
|
+
"--ow-btn-primary-bg",
|
|
381
|
+
"--ow-btn-primary-hover",
|
|
382
|
+
"--ow-btn-primary-press",
|
|
383
|
+
"--ow-btn-primary-fg",
|
|
384
|
+
"--ow-beacon",
|
|
385
|
+
"--ow-beacon-idle",
|
|
386
|
+
"--ow-accent-dot",
|
|
387
|
+
"--ow-data-today"
|
|
388
|
+
];
|
|
389
|
+
var UNIFIED_TYPOGRAPHY_TOKENS = ["--ow-font-sans", "--ow-font-mono"];
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
exports.DEFAULT_ORBITWORK_SKIN_ID = DEFAULT_ORBITWORK_SKIN_ID; exports.BUILTIN_ORBITWORK_SKINS = BUILTIN_ORBITWORK_SKINS; exports.TENANT_THEME_COLOR_KEYS = TENANT_THEME_COLOR_KEYS; exports.UNIFIED_NEUTRAL_TOKENS = UNIFIED_NEUTRAL_TOKENS; exports.BRAND_ACTION_TOKENS = BRAND_ACTION_TOKENS; exports.UNIFIED_TYPOGRAPHY_TOKENS = UNIFIED_TYPOGRAPHY_TOKENS;
|
|
399
|
+
//# sourceMappingURL=chunk-Q7B4M5GC.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/wowzin/projects/orbit/packages/ui/dist/chunk-Q7B4M5GC.cjs","../src/theme/skins/index.ts","../src/theme/core/types.ts"],"names":[],"mappings":"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","file":"/Users/wowzin/projects/orbit/packages/ui/dist/chunk-Q7B4M5GC.cjs","sourcesContent":[null,"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 { OrbitworkFontScale } from \"./fontScale.ts\"\nimport 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 /** Optional login key-visual photo; empty/absent falls back to the stock KV. */\n loginKV?: 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 /** Optional login key-visual photo (KV board background on the desktop login page). */\n loginKV?: string\n favicon?: string\n modes: Partial<Record<ResolvedTheme, Partial<Record<BrandThemeToken, string>>>>\n typography?: {\n fontSans: string\n fontMono: string\n }\n /** OEM text-size preset; the personal preference and user skins still win. */\n fontScale?: OrbitworkFontScale\n branding?: LocalizedBranding\n}\n"]}
|