smart-admin-web 10.14.0 → 10.20.0
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 +6 -6
- package/dist/api/index.d.ts +41 -2
- package/dist/api/index.js +36 -15
- package/dist/api/index.js.map +1 -1
- package/dist/api/schema.d.ts +418 -6
- package/dist/assets/icons/ph-subset.json.js +7 -7
- package/dist/assets/smart-logo.svg.js +5 -0
- package/dist/assets/smart-logo.svg.js.map +1 -0
- package/dist/components/AppIcon.vue.js +9 -9
- package/dist/components/AppIcon.vue.js.map +1 -1
- package/dist/components/AppWatermark.vue.d.ts +14 -0
- package/dist/components/AppWatermark.vue.js +38 -0
- package/dist/components/AppWatermark.vue.js.map +1 -0
- package/dist/components/AppWatermark2.vue.js +5 -0
- package/dist/components/AppWatermark2.vue.js.map +1 -0
- package/dist/components/Chart/PieChart.vue.d.ts +1 -1
- package/dist/components/Chart/echarts.js +15 -20
- package/dist/components/Chart/echarts.js.map +1 -1
- package/dist/components/CronEditor/index.vue.js +1 -1
- package/dist/components/CronEditor/index2.vue.js +2 -1
- package/dist/components/CronEditor/index2.vue.js.map +1 -1
- package/dist/components/DetailPage/index.vue.js +2 -2
- package/dist/components/DetailPage/index2.vue.js.map +1 -1
- package/dist/components/DictTag/index.vue.js.map +1 -1
- package/dist/components/ErrorBoundary/index.vue.js +2 -2
- package/dist/components/ErrorBoundary/index2.vue.js +1 -1
- package/dist/components/ErrorBoundary/index2.vue.js.map +1 -1
- package/dist/components/FormContainer/index.vue.js +91 -56
- package/dist/components/FormContainer/index.vue.js.map +1 -1
- package/dist/components/ImportWizard/index.vue.js +1 -1
- package/dist/components/ImportWizard/index2.vue.js +44 -41
- package/dist/components/ImportWizard/index2.vue.js.map +1 -1
- package/dist/components/MenuSearch.vue.js +2 -2
- package/dist/components/MenuSearch2.vue.js +19 -18
- package/dist/components/MenuSearch2.vue.js.map +1 -1
- package/dist/components/PasswordStrength/index.vue.js +2 -2
- package/dist/components/PasswordStrength/index2.vue.js +20 -18
- package/dist/components/PasswordStrength/index2.vue.js.map +1 -1
- package/dist/components/SmartLogo.vue.d.ts +3 -0
- package/dist/components/SmartLogo.vue.js +1 -1
- package/dist/components/SmartLogo2.vue.js +22 -64
- package/dist/components/SmartLogo2.vue.js.map +1 -1
- package/dist/{views/system/config/components/GroupExtraConfig.vue.d.ts → components/TableTotal/index.vue.d.ts} +1 -4
- package/dist/components/{SelectTable → TableTotal}/index.vue.js +1 -1
- package/dist/components/TableTotal/index2.vue.js +16 -0
- package/dist/components/TableTotal/index2.vue.js.map +1 -0
- package/dist/components/TableZoomButton/index.vue.js.map +1 -1
- package/dist/components/UserPicker/index.vue.js +2 -2
- package/dist/components/UserPicker/index2.vue.js +176 -117
- package/dist/components/UserPicker/index2.vue.js.map +1 -1
- package/dist/composables/useBatchDelete.js.map +1 -1
- package/dist/composables/useLayoutMenu.js +17 -16
- package/dist/composables/useLayoutMenu.js.map +1 -1
- package/dist/composables/useLoginHero.d.ts +2 -0
- package/dist/composables/useLoginHero.js +22 -0
- package/dist/composables/useLoginHero.js.map +1 -0
- package/dist/composables/useModule.js +39 -29
- package/dist/composables/useModule.js.map +1 -1
- package/dist/composables/usePageTitle.js +16 -14
- package/dist/composables/usePageTitle.js.map +1 -1
- package/dist/composables/useShellBreakpoint.d.ts +19 -0
- package/dist/composables/useShellBreakpoint.js +37 -0
- package/dist/composables/useShellBreakpoint.js.map +1 -0
- package/dist/composables/useSite.d.ts +20 -0
- package/dist/composables/useSite.js +18 -13
- package/dist/composables/useSite.js.map +1 -1
- package/dist/composables/useTabTitle.js.map +1 -1
- package/dist/composables/useTableTitle.d.ts +6 -0
- package/dist/composables/useTableTitle.js +11 -0
- package/dist/composables/useTableTitle.js.map +1 -0
- package/dist/composables/useTableZoom.d.ts +5 -0
- package/dist/composables/useTableZoom.js.map +1 -1
- package/dist/composables/useTheme.d.ts +2 -2
- package/dist/composables/useTheme.js +23 -20
- package/dist/composables/useTheme.js.map +1 -1
- package/dist/createSmartAdmin.d.ts +12 -2
- package/dist/createSmartAdmin.js +72 -60
- package/dist/createSmartAdmin.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +223 -208
- package/dist/index.js.map +1 -1
- package/dist/layouts/AccentPicker.vue.js +8 -0
- package/dist/layouts/AccentPicker.vue.js.map +1 -0
- package/dist/layouts/AccentPicker2.vue.js +131 -0
- package/dist/layouts/AccentPicker2.vue.js.map +1 -0
- package/dist/layouts/AppHeader.vue.d.ts +8 -1
- package/dist/layouts/AppHeader.vue.js +2 -2
- package/dist/layouts/AppHeader2.vue.js +317 -235
- package/dist/layouts/AppHeader2.vue.js.map +1 -1
- package/dist/layouts/NoticeBell.vue.js +2 -2
- package/dist/layouts/NoticeBell2.vue.js +1 -1
- package/dist/layouts/NoticeBell2.vue.js.map +1 -1
- package/dist/layouts/PersonalLayout.vue.js +2 -2
- package/dist/layouts/PersonalLayout2.vue.js +69 -47
- package/dist/layouts/PersonalLayout2.vue.js.map +1 -1
- package/dist/layouts/SettingsDrawer.vue.js +3 -3
- package/dist/layouts/SettingsDrawer2.vue.js +261 -325
- package/dist/layouts/SettingsDrawer2.vue.js.map +1 -1
- package/dist/layouts/TabsBar.vue.js +2 -2
- package/dist/layouts/TabsBar2.vue.js +97 -69
- package/dist/layouts/TabsBar2.vue.js.map +1 -1
- package/dist/layouts/components/SideNav.vue.d.ts +3 -0
- package/dist/layouts/components/SideNav.vue.js +1 -1
- package/dist/layouts/components/SideNav2.vue.js +54 -26
- package/dist/layouts/components/SideNav2.vue.js.map +1 -1
- package/dist/layouts/default.vue.js +1 -1
- package/dist/layouts/default2.vue.js +170 -140
- package/dist/layouts/default2.vue.js.map +1 -1
- package/dist/lib/favicon.d.ts +1 -0
- package/dist/lib/favicon.js +12 -0
- package/dist/lib/favicon.js.map +1 -0
- package/dist/lib/loginHero.d.ts +16 -0
- package/dist/lib/loginHero.js +33 -0
- package/dist/lib/loginHero.js.map +1 -0
- package/dist/lib/logoCrop.d.ts +25 -0
- package/dist/lib/logoCrop.js +22 -0
- package/dist/lib/logoCrop.js.map +1 -0
- package/dist/lib/runtime.d.ts +2 -0
- package/dist/lib/runtime.js +1 -1
- package/dist/lib/runtime.js.map +1 -1
- package/dist/lib/securityRules.d.ts +26 -0
- package/dist/lib/securityRules.js +86 -0
- package/dist/lib/securityRules.js.map +1 -0
- package/dist/lib/watermark.d.ts +110 -0
- package/dist/lib/watermark.js +151 -0
- package/dist/lib/watermark.js.map +1 -0
- package/dist/locales/en-US.d.ts +462 -42
- package/dist/locales/en-US.js +491 -78
- package/dist/locales/en-US.js.map +1 -1
- package/dist/locales/kernelMenuTitles.d.ts +1 -0
- package/dist/locales/kernelMenuTitles.js +128 -0
- package/dist/locales/kernelMenuTitles.js.map +1 -0
- package/dist/locales/menuTitle.d.ts +3 -0
- package/dist/locales/menuTitle.js +14 -12
- package/dist/locales/menuTitle.js.map +1 -1
- package/dist/locales/zh-CN.d.ts +462 -42
- package/dist/locales/zh-CN.js +490 -81
- package/dist/locales/zh-CN.js.map +1 -1
- package/dist/router/index.js +41 -32
- package/dist/router/index.js.map +1 -1
- package/dist/router/namedPage.d.ts +4 -0
- package/dist/router/namedPage.js +7 -7
- package/dist/router/namedPage.js.map +1 -1
- package/dist/router/viewRegistry.js +12 -12
- package/dist/router/viewRegistry.js.map +1 -1
- package/dist/stores/app.d.ts +0 -12
- package/dist/stores/app.js +11 -12
- package/dist/stores/app.js.map +1 -1
- package/dist/stores/tabs.js.map +1 -1
- package/dist/stores/user.d.ts +10 -0
- package/dist/stores/user.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/accentTokens.d.ts +27 -0
- package/dist/theme/accentTokens.js +54 -0
- package/dist/theme/accentTokens.js.map +1 -0
- package/dist/theme/accents.d.ts +21 -1
- package/dist/theme/accents.js +11 -2
- package/dist/theme/accents.js.map +1 -1
- package/dist/theme/mix.d.ts +58 -7
- package/dist/theme/mix.js +115 -30
- package/dist/theme/mix.js.map +1 -1
- package/dist/theme/naive-theme.d.ts +5 -2
- package/dist/theme/naive-theme.js +405 -75
- package/dist/theme/naive-theme.js.map +1 -1
- package/dist/utils/jwt.d.ts +8 -0
- package/dist/utils/jwt.js +14 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/menuIcon.d.ts +2 -0
- package/dist/utils/menuIcon.js +8 -0
- package/dist/utils/menuIcon.js.map +1 -0
- package/dist/utils/oauthBrand.d.ts +34 -9
- package/dist/utils/oauthBrand.js +70 -74
- package/dist/utils/oauthBrand.js.map +1 -1
- package/dist/utils/tableFilter.d.ts +88 -0
- package/dist/utils/tableFilter.js +116 -0
- package/dist/utils/tableFilter.js.map +1 -0
- package/dist/utils/tableToolbar.d.ts +18 -0
- package/dist/utils/tableToolbar.js +11 -0
- package/dist/utils/tableToolbar.js.map +1 -0
- package/dist/utils/treeFilter.d.ts +20 -0
- package/dist/utils/treeFilter.js +24 -0
- package/dist/utils/treeFilter.js.map +1 -0
- package/dist/views/dashboard/ShortcutPicker.vue.js +1 -1
- package/dist/views/dashboard/ShortcutPicker2.vue.js +73 -48
- package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -1
- package/dist/views/dashboard/biz.vue.js +1 -1
- package/dist/views/dashboard/biz2.vue.js +310 -257
- package/dist/views/dashboard/biz2.vue.js.map +1 -1
- package/dist/views/dashboard/workbench.vue.js +2 -2
- package/dist/views/dashboard/workbench2.vue.js +141 -155
- package/dist/views/dashboard/workbench2.vue.js.map +1 -1
- package/dist/views/embed/iframe.vue.js +2 -2
- package/dist/views/embed/iframe2.vue.js +22 -15
- package/dist/views/embed/iframe2.vue.js.map +1 -1
- package/dist/views/error/404.vue.js +2 -2
- package/dist/views/error/4042.vue.js +33 -24
- package/dist/views/error/4042.vue.js.map +1 -1
- package/dist/views/error/BootError.vue.js +1 -1
- package/dist/views/error/BootError2.vue.js +59 -48
- package/dist/views/error/BootError2.vue.js.map +1 -1
- package/dist/views/error/MissingRoute.vue.js +2 -2
- package/dist/views/error/MissingRoute2.vue.js +34 -15
- package/dist/views/error/MissingRoute2.vue.js.map +1 -1
- package/dist/views/login/LoginForm.vue.d.ts +7 -1
- package/dist/views/login/LoginForm.vue.js +2 -2
- package/dist/views/login/LoginForm2.vue.js +580 -488
- package/dist/views/login/LoginForm2.vue.js.map +1 -1
- package/dist/views/login/components/LoginDesk.vue.d.ts +36 -0
- package/dist/views/login/components/LoginDesk.vue.js +9 -0
- package/dist/views/login/components/LoginDesk.vue.js.map +1 -0
- package/dist/views/login/components/LoginDesk2.vue.js +100 -0
- package/dist/views/login/components/LoginDesk2.vue.js.map +1 -0
- package/dist/views/login/components/LoginHeroPanel.vue.d.ts +18 -0
- package/dist/views/login/components/LoginHeroPanel.vue.js +8 -0
- package/dist/views/login/components/LoginHeroPanel.vue.js.map +1 -0
- package/dist/views/login/components/LoginHeroPanel2.vue.js +61 -0
- package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -0
- package/dist/views/login/index.vue.js +1 -1
- package/dist/views/login/index2.vue.js +141 -71
- package/dist/views/login/index2.vue.js.map +1 -1
- package/dist/views/login/layout.d.ts +11 -0
- package/dist/views/login/layout.js +27 -0
- package/dist/views/login/layout.js.map +1 -0
- package/dist/views/mfa/index.vue.js +2 -2
- package/dist/views/mfa/index2.vue.js +367 -321
- package/dist/views/mfa/index2.vue.js.map +1 -1
- package/dist/views/module/index.vue.js +2 -2
- package/dist/views/module/index2.vue.js +132 -99
- package/dist/views/module/index2.vue.js.map +1 -1
- package/dist/views/oauth/callback.vue.js +2 -2
- package/dist/views/oauth/callback2.vue.js +65 -51
- package/dist/views/oauth/callback2.vue.js.map +1 -1
- package/dist/views/personal/bindings.vue.js +2 -2
- package/dist/views/personal/bindings2.vue.js +98 -94
- package/dist/views/personal/bindings2.vue.js.map +1 -1
- package/dist/views/personal/notice2.vue.js +103 -76
- package/dist/views/personal/notice2.vue.js.map +1 -1
- package/dist/views/personal/password2.vue.js +47 -40
- package/dist/views/personal/password2.vue.js.map +1 -1
- package/dist/views/personal/profile.vue.js +3 -3
- package/dist/views/personal/profile2.vue.js +24 -18
- package/dist/views/personal/profile2.vue.js.map +1 -1
- package/dist/views/personal/security.vue.js +2 -2
- package/dist/views/personal/security2.vue.js +65 -53
- package/dist/views/personal/security2.vue.js.map +1 -1
- package/dist/views/personal/sessions.vue.js +2 -2
- package/dist/views/personal/sessions2.vue.js +67 -62
- package/dist/views/personal/sessions2.vue.js.map +1 -1
- package/dist/views/system/ai-model/components/ProviderCard.vue.js +2 -2
- package/dist/views/system/ai-model/components/ProviderCard2.vue.js +142 -130
- package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -1
- package/dist/views/system/ai-model/components/ProviderForm.vue.js +2 -2
- package/dist/views/system/ai-model/components/ProviderForm2.vue.js +71 -70
- package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -1
- package/dist/views/system/ai-model/index.vue.js +2 -2
- package/dist/views/system/ai-model/index2.vue.js +99 -99
- package/dist/views/system/ai-model/index2.vue.js.map +1 -1
- package/dist/views/system/ai-model/presets.d.ts +1 -1
- package/dist/views/system/ai-model/presets.js +18 -18
- package/dist/views/system/ai-model/presets.js.map +1 -1
- package/dist/views/system/ai-usage/index.vue.js +2 -2
- package/dist/views/system/ai-usage/index2.vue.js +356 -258
- package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
- package/dist/views/system/api-docs/index.vue.js +5 -2
- package/dist/views/system/api-docs/index.vue.js.map +1 -1
- package/dist/views/system/api-docs/index2.vue.js +92 -42
- package/dist/views/system/api-docs/index2.vue.js.map +1 -1
- package/dist/views/system/cache/index.vue.js +2 -2
- package/dist/views/system/cache/index2.vue.js +74 -80
- package/dist/views/system/cache/index2.vue.js.map +1 -1
- package/dist/views/system/config/components/AdminMock.vue.js +8 -0
- package/dist/views/system/config/components/AdminMock.vue.js.map +1 -0
- package/dist/views/system/config/components/AdminMock2.vue.js +93 -0
- package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -0
- package/dist/views/system/config/components/AdvancedSection.vue.js +8 -0
- package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -0
- package/dist/views/system/config/components/AdvancedSection2.vue.js +163 -0
- package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/BrandSection.vue.d.ts +7 -0
- package/dist/views/system/config/components/BrandSection.vue.js +8 -0
- package/dist/views/system/config/components/BrandSection.vue.js.map +1 -0
- package/dist/views/system/config/components/BrandSection2.vue.js +266 -0
- package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgGroup.vue.d.ts +18 -0
- package/dist/views/system/config/components/CfgGroup.vue.js +8 -0
- package/dist/views/system/config/components/CfgGroup.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgGroup2.vue.js +22 -0
- package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgRow.vue.d.ts +26 -0
- package/dist/views/system/config/components/CfgRow.vue.js +9 -0
- package/dist/views/system/config/components/CfgRow.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgRow2.vue.js +54 -0
- package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgSegment.vue.d.ts +28 -0
- package/dist/views/system/config/components/CfgSegment.vue.js +8 -0
- package/dist/views/system/config/components/CfgSegment.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgSegment2.vue.js +45 -0
- package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.js +4 -1
- package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -1
- package/dist/views/system/config/components/ConfigFormModal2.vue.js +72 -60
- package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
- package/dist/views/system/config/components/JobSection.vue.js +8 -0
- package/dist/views/system/config/components/JobSection.vue.js.map +1 -0
- package/dist/views/system/config/components/JobSection2.vue.js +140 -0
- package/dist/views/system/config/components/JobSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/LoginMock.vue.d.ts +8 -0
- package/dist/views/system/config/components/LoginMock.vue.js +8 -0
- package/dist/views/system/config/components/LoginMock.vue.js.map +1 -0
- package/dist/views/system/config/components/LoginMock2.vue.js +132 -0
- package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoCropper.vue.d.ts +10 -0
- package/dist/views/system/config/components/LogoCropper.vue.js +8 -0
- package/dist/views/system/config/components/LogoCropper.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoCropper2.vue.js +122 -0
- package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoEditor.vue.js +8 -0
- package/dist/views/system/config/components/LogoEditor.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoEditor2.vue.js +161 -0
- package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -0
- package/dist/views/system/config/components/ProviderSheet.vue.d.ts +17 -0
- package/dist/views/system/config/components/ProviderSheet.vue.js +8 -0
- package/dist/views/system/config/components/ProviderSheet.vue.js.map +1 -0
- package/dist/views/system/config/components/ProviderSheet2.vue.js +343 -0
- package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -0
- package/dist/{layouts/SettingRow.vue.d.ts → views/system/config/components/ScaleToFit.vue.d.ts} +2 -1
- package/dist/views/system/config/components/ScaleToFit.vue.js +8 -0
- package/dist/views/system/config/components/ScaleToFit.vue.js.map +1 -0
- package/dist/views/system/config/components/ScaleToFit2.vue.js +41 -0
- package/dist/views/system/config/components/ScaleToFit2.vue.js.map +1 -0
- package/dist/views/system/config/components/SectionLayout.vue.d.ts +30 -0
- package/dist/views/system/config/components/SectionLayout.vue.js +8 -0
- package/dist/views/system/config/components/SectionLayout.vue.js.map +1 -0
- package/dist/views/system/config/components/SectionLayout2.vue.js +69 -0
- package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -0
- package/dist/views/system/config/components/SecuritySection.vue.js +8 -0
- package/dist/views/system/config/components/SecuritySection.vue.js.map +1 -0
- package/dist/views/system/config/components/SecuritySection2.vue.js +417 -0
- package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -0
- package/dist/views/system/config/components/SensitiveSection.vue.js +8 -0
- package/dist/views/system/config/components/SensitiveSection.vue.js.map +1 -0
- package/dist/views/system/config/components/SensitiveSection2.vue.js +214 -0
- package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/SigninSection.vue.js +8 -0
- package/dist/views/system/config/components/SigninSection.vue.js.map +1 -0
- package/dist/views/system/config/components/SigninSection2.vue.js +201 -0
- package/dist/views/system/config/components/SigninSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadSection.vue.js +8 -0
- package/dist/views/system/config/components/UploadSection.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadSection2.vue.js +176 -0
- package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/WatermarkSection.vue.js +8 -0
- package/dist/views/system/config/components/WatermarkSection.vue.js.map +1 -0
- package/dist/views/system/config/components/WatermarkSection2.vue.js +284 -0
- package/dist/views/system/config/components/WatermarkSection2.vue.js.map +1 -0
- package/dist/views/system/config/draft.d.ts +148 -0
- package/dist/views/system/config/draft.js +170 -0
- package/dist/views/system/config/draft.js.map +1 -0
- package/dist/views/system/config/flash.d.ts +2 -0
- package/dist/views/system/config/flash.js +9 -0
- package/dist/views/system/config/flash.js.map +1 -0
- package/dist/views/system/config/groups.d.ts +38 -7
- package/dist/views/system/config/groups.js +104 -14
- package/dist/views/system/config/groups.js.map +1 -1
- package/dist/views/system/config/index.vue.js +6 -2
- package/dist/views/system/config/index.vue.js.map +1 -1
- package/dist/views/system/config/index2.vue.js +201 -111
- package/dist/views/system/config/index2.vue.js.map +1 -1
- package/dist/views/system/config/layoutMode.d.ts +23 -0
- package/dist/views/system/config/layoutMode.js +28 -0
- package/dist/views/system/config/layoutMode.js.map +1 -0
- package/dist/views/system/config/providerForm.d.ts +33 -0
- package/dist/views/system/config/providerForm.js +63 -0
- package/dist/views/system/config/providerForm.js.map +1 -0
- package/dist/views/system/dict/index.vue.js +2 -2
- package/dist/views/system/dict/index2.vue.js +471 -366
- package/dist/views/system/dict/index2.vue.js.map +1 -1
- package/dist/views/system/file/index2.vue.js +91 -76
- package/dist/views/system/file/index2.vue.js.map +1 -1
- package/dist/views/system/job/index.vue.js +3 -3
- package/dist/views/system/job/index2.vue.js +897 -828
- package/dist/views/system/job/index2.vue.js.map +1 -1
- package/dist/views/system/job-log/components/AttemptTable.vue.d.ts +8 -0
- package/dist/views/system/job-log/components/AttemptTable.vue.js +5 -0
- package/dist/views/system/job-log/components/AttemptTable.vue.js.map +1 -0
- package/dist/views/system/job-log/components/AttemptTable2.vue.js +54 -0
- package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -0
- package/dist/views/system/job-log/index.vue.js +2 -2
- package/dist/views/system/job-log/index2.vue.js +193 -207
- package/dist/views/system/job-log/index2.vue.js.map +1 -1
- package/dist/views/system/job-log/runStatus.d.ts +13 -0
- package/dist/views/system/job-log/runStatus.js +26 -0
- package/dist/views/system/job-log/runStatus.js.map +1 -0
- package/dist/views/system/job-monitor/index.vue.js +2 -2
- package/dist/views/system/job-monitor/index2.vue.js +172 -180
- package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
- package/dist/views/system/log/exception/index.vue.js +2 -2
- package/dist/views/system/log/exception/index2.vue.js +135 -96
- package/dist/views/system/log/exception/index2.vue.js.map +1 -1
- package/dist/views/system/log/login/index2.vue.js +62 -41
- package/dist/views/system/log/login/index2.vue.js.map +1 -1
- package/dist/views/system/log/op/index.vue.js +2 -2
- package/dist/views/system/log/op/index2.vue.js +200 -162
- package/dist/views/system/log/op/index2.vue.js.map +1 -1
- package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
- package/dist/views/system/menu/components/ButtonManager2.vue.js +206 -190
- package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
- package/dist/views/system/menu/components/MenuFormModal.vue.js +2 -2
- package/dist/views/system/menu/components/MenuFormModal2.vue.js +127 -118
- package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -1
- package/dist/views/system/menu/index.vue.js +1 -1
- package/dist/views/system/menu/index2.vue.js +216 -183
- package/dist/views/system/menu/index2.vue.js.map +1 -1
- package/dist/views/system/module/index.vue.js +1 -1
- package/dist/views/system/module/index2.vue.js +177 -144
- package/dist/views/system/module/index2.vue.js.map +1 -1
- package/dist/views/system/monitor/index.vue.js +2 -2
- package/dist/views/system/monitor/index2.vue.js +134 -149
- package/dist/views/system/monitor/index2.vue.js.map +1 -1
- package/dist/views/system/notice/index.vue.js +1 -1
- package/dist/views/system/notice/index2.vue.js +209 -181
- package/dist/views/system/notice/index2.vue.js.map +1 -1
- package/dist/views/system/org/index.vue.js +1 -1
- package/dist/views/system/org/index2.vue.js +278 -248
- package/dist/views/system/org/index2.vue.js.map +1 -1
- package/dist/views/system/position/index.vue.js +5 -2
- package/dist/views/system/position/index.vue.js.map +1 -1
- package/dist/views/system/position/index2.vue.js +128 -92
- package/dist/views/system/position/index2.vue.js.map +1 -1
- package/dist/views/system/recycle/index.vue.js +2 -2
- package/dist/views/system/recycle/index2.vue.js +90 -67
- package/dist/views/system/recycle/index2.vue.js.map +1 -1
- package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +20 -0
- package/dist/views/system/role/components/GrantMenuSheet.vue.js +8 -0
- package/dist/views/system/role/components/GrantMenuSheet.vue.js.map +1 -0
- package/dist/views/system/role/components/GrantMenuSheet2.vue.js +117 -0
- package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -0
- package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +6 -4
- package/dist/views/system/role/components/GrantMenuTable.vue.js +2 -2
- package/dist/views/system/role/components/GrantMenuTable2.vue.js +279 -177
- package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
- package/dist/views/system/role/components/MatchText.vue.d.ts +7 -0
- package/dist/views/system/role/components/MatchText.vue.js +8 -0
- package/dist/views/system/role/components/MatchText.vue.js.map +1 -0
- package/dist/views/system/role/components/MatchText2.vue.js +29 -0
- package/dist/views/system/role/components/MatchText2.vue.js.map +1 -0
- package/dist/views/system/role/components/grantMenuGroups.d.ts +36 -0
- package/dist/views/system/role/components/grantMenuGroups.js +110 -48
- package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
- package/dist/views/system/role/index.vue.js +5 -2
- package/dist/views/system/role/index.vue.js.map +1 -1
- package/dist/views/system/role/index2.vue.js +181 -165
- package/dist/views/system/role/index2.vue.js.map +1 -1
- package/dist/views/system/session/index2.vue.js +75 -49
- package/dist/views/system/session/index2.vue.js.map +1 -1
- package/dist/views/system/user/components/ResetPasswordModal.vue.js +2 -2
- package/dist/views/system/user/components/ResetPasswordModal2.vue.js +2 -0
- package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -1
- package/dist/views/system/user/components/UserFormModal.vue.js +2 -2
- package/dist/views/system/user/components/UserFormModal2.vue.js +77 -76
- package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -1
- package/dist/views/system/user/index.vue.js +2 -2
- package/dist/views/system/user/index2.vue.js +362 -275
- package/dist/views/system/user/index2.vue.js.map +1 -1
- package/package.json +6 -8
- package/dist/components/SelectTable/index.vue.d.ts +0 -76
- package/dist/components/SelectTable/index2.vue.js +0 -256
- package/dist/components/SelectTable/index2.vue.js.map +0 -1
- package/dist/composables/useTableRowSort.d.ts +0 -20
- package/dist/composables/useTableRowSort.js +0 -59
- package/dist/composables/useTableRowSort.js.map +0 -1
- package/dist/layouts/LayoutModeCards.vue.js +0 -8
- package/dist/layouts/LayoutModeCards.vue.js.map +0 -1
- package/dist/layouts/LayoutModeCards2.vue.js +0 -67
- package/dist/layouts/LayoutModeCards2.vue.js.map +0 -1
- package/dist/layouts/SettingRow.vue.js +0 -8
- package/dist/layouts/SettingRow.vue.js.map +0 -1
- package/dist/layouts/SettingRow2.vue.js +0 -23
- package/dist/layouts/SettingRow2.vue.js.map +0 -1
- package/dist/views/login/skins/AuroraGlass.vue.js +0 -8
- package/dist/views/login/skins/AuroraGlass.vue.js.map +0 -1
- package/dist/views/login/skins/AuroraGlass2.vue.js +0 -80
- package/dist/views/login/skins/AuroraGlass2.vue.js.map +0 -1
- package/dist/views/login/skins/SplitPanel.vue.js +0 -8
- package/dist/views/login/skins/SplitPanel.vue.js.map +0 -1
- package/dist/views/login/skins/SplitPanel2.vue.js +0 -85
- package/dist/views/login/skins/SplitPanel2.vue.js.map +0 -1
- package/dist/views/login/skins/Spotlight.vue.js +0 -8
- package/dist/views/login/skins/Spotlight.vue.js.map +0 -1
- package/dist/views/login/skins/Spotlight2.vue.js +0 -36
- package/dist/views/login/skins/Spotlight2.vue.js.map +0 -1
- package/dist/views/login/skins.d.ts +0 -8
- package/dist/views/login/skins.js +0 -13
- package/dist/views/login/skins.js.map +0 -1
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js +0 -8
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +0 -218
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/GroupExtraConfig.vue.js +0 -8
- package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js +0 -108
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/HighSensConfig.vue.js +0 -5
- package/dist/views/system/config/components/HighSensConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/HighSensConfig2.vue.js +0 -134
- package/dist/views/system/config/components/HighSensConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/JobConfig.vue.js +0 -5
- package/dist/views/system/config/components/JobConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/JobConfig2.vue.js +0 -116
- package/dist/views/system/config/components/JobConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/OtherConfig.vue.js +0 -5
- package/dist/views/system/config/components/OtherConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/OtherConfig2.vue.js +0 -121
- package/dist/views/system/config/components/OtherConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/SecurityConfig.vue.js +0 -8
- package/dist/views/system/config/components/SecurityConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/SecurityConfig2.vue.js +0 -456
- package/dist/views/system/config/components/SecurityConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/SysBaseConfig.vue.js +0 -5
- package/dist/views/system/config/components/SysBaseConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/SysBaseConfig2.vue.js +0 -107
- package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/UploadConfig.vue.d.ts +0 -3
- package/dist/views/system/config/components/UploadConfig.vue.js +0 -5
- package/dist/views/system/config/components/UploadConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/UploadConfig2.vue.js +0 -135
- package/dist/views/system/config/components/UploadConfig2.vue.js.map +0 -1
- /package/dist/components/{SelectTable → TableTotal}/index.vue.js.map +0 -0
- /package/dist/layouts/{LayoutModeCards.vue.d.ts → AccentPicker.vue.d.ts} +0 -0
- /package/dist/views/{login/skins/AuroraGlass.vue.d.ts → system/config/components/AdminMock.vue.d.ts} +0 -0
- /package/dist/views/{login/skins/SplitPanel.vue.d.ts → system/config/components/AdvancedSection.vue.d.ts} +0 -0
- /package/dist/views/{login/skins/Spotlight.vue.d.ts → system/config/components/JobSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{ExternalAuthConfig.vue.d.ts → LogoEditor.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{HighSensConfig.vue.d.ts → SecuritySection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{JobConfig.vue.d.ts → SensitiveSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{OtherConfig.vue.d.ts → SigninSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{SecurityConfig.vue.d.ts → UploadSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{SysBaseConfig.vue.d.ts → WatermarkSection.vue.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accents.js","sources":["../../src/theme/accents.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"accents.js","sources":["../../src/theme/accents.ts"],"sourcesContent":["import { solid } from './mix'\n\n/**\n * 6 个强调色候选,全部取自 macOS 系统色:\n * 蓝 #0A84FF(默认)、靛蓝 #5856D6、紫 #AF52DE、深青 #30B0C7、墨绿 #30D158、石墨 #8E8E93。\n *\n * **取值标准是原值亮度落在 0.14–0.36**,不是看色相好不好看:这一段 `solid()` 之后色相不跑偏,\n * 而且六个色的主按钮一律深底白字。亮度 > 0.5 的色(薄荷 #63E6E2、亮青 #64D2FF、黄 #FFD60A)\n * 会走 `solid()`「保留原色配深字」的分支,换个强调色主按钮的字色就从白翻成黑,所以一个都不收。\n * 加新候选色前先算 `solid()` 的结果,别只看原始色相。\n *\n * 浅色 / 深色共用同一个值。品牌 Logo 的固定靛蓝不在这里(Logo 不随用户换色)。\n */\nexport const ACCENTS = ['#0A84FF', '#5856D6', '#AF52DE', '#30B0C7', '#30D158', '#8E8E93'] as const\n\nexport type Accent = (typeof ACCENTS)[number]\n\nexport interface AccentMeta {\n color: Accent\n /** 语言包键(settings.accentName.<key>);深青 / 墨绿压暗幅度大,色块里看到的不是 macOS 系统设置里那两个亮色,所以不叫青色 / 绿色。 */\n key: 'blue' | 'indigo' | 'purple' | 'teal' | 'green' | 'graphite'\n /** 色块预览用的颜色 = `solid(color)`:和开关 / 主按钮等实心控件同一套压暗规则,预览才和实际效果对得上。 */\n dot: string\n}\n\n/** 外观面板的色块清单(顺序同 ACCENTS)。`dot` 在定义时预计算。 */\nexport const ACCENT_META: readonly AccentMeta[] = (\n [\n ['#0A84FF', 'blue'],\n ['#5856D6', 'indigo'],\n ['#AF52DE', 'purple'],\n ['#30B0C7', 'teal'],\n ['#30D158', 'green'],\n ['#8E8E93', 'graphite'],\n ] as const\n).map(([color, key]) => ({ color, key, dot: solid(color) }))\n"],"names":["ACCENTS","ACCENT_META","color","key","solid"],"mappings":";AAaO,MAAMA,IAAU,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAa3EC,IACX;AAAA,EACE,CAAC,WAAW,MAAM;AAAA,EAClB,CAAC,WAAW,QAAQ;AAAA,EACpB,CAAC,WAAW,QAAQ;AAAA,EACpB,CAAC,WAAW,MAAM;AAAA,EAClB,CAAC,WAAW,OAAO;AAAA,EACnB,CAAC,WAAW,UAAU;AACxB,EACA,IAAI,CAAC,CAACC,GAAOC,CAAG,OAAO,EAAE,OAAAD,GAAO,KAAAC,GAAK,KAAKC,EAAMF,CAAK,IAAI;"}
|
package/dist/theme/mix.d.ts
CHANGED
|
@@ -1,26 +1,77 @@
|
|
|
1
1
|
/** 在 a、b 之间按 t∈[0,1] 线性插值(sRGB 分量)。t=0→a,t=1→b。 */
|
|
2
2
|
export declare function mix(a: string, b: string, t: number): string;
|
|
3
|
+
/** WCAG 相对亮度(0 黑 … 1 白)。 */
|
|
4
|
+
export declare function luminance(hex: string): number;
|
|
5
|
+
/** WCAG 对比度(1…21)。 */
|
|
6
|
+
export declare function contrast(a: string, b: string): number;
|
|
7
|
+
/**
|
|
8
|
+
* 把强调色当文字用时的可读版:在 bg 上逐步混黑,直到对比度 ≥ 4.5:1,色相不变。
|
|
9
|
+
* 浅色下的链接 / 选中文字 / 侧栏图标用它;深色背景上不要用(混黑只会更糟),深色走「往白提亮」。
|
|
10
|
+
*/
|
|
11
|
+
export declare function readable(c: string, bg?: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* 实心控件(主按钮、勾选框、开关、进度条)的底色:亮度 > 0.5 的亮色直接用(配深字),
|
|
14
|
+
* 其余压暗到白字 ≥ 4.5:1。**浅色 / 深色用同一个值**,切换外观模式时强调色不变。
|
|
15
|
+
* 6 个候选色的亮度都落在 0.14–0.36,所以实际都走「压暗」这一支、主按钮一律深底白字。
|
|
16
|
+
*/
|
|
17
|
+
export declare function solid(c: string): string;
|
|
3
18
|
export interface PrimaryRamp {
|
|
19
|
+
/** 实心主色(= `solid(accent)`,明暗同值)。 */
|
|
4
20
|
primary: string;
|
|
5
21
|
hover: string;
|
|
6
22
|
pressed: string;
|
|
7
|
-
/** 浅底(选中背景 / 标签底)
|
|
23
|
+
/** 浅底(选中背景 / 标签底)的**实色**版;裸 CSS 里的选中底改用半透明的 `--sel-bg`,这里保留给调用方自取。 */
|
|
8
24
|
light: string;
|
|
25
|
+
/** 压在 `primary` 上的字色:深底白字,极端情况(亮度 > 0.5)配近黑。 */
|
|
26
|
+
on: string;
|
|
9
27
|
}
|
|
10
28
|
/**
|
|
11
|
-
* accent → 主色四态
|
|
29
|
+
* accent → 主色四态 + 字色。规则:
|
|
30
|
+
* primary = solid(accent);hover 往白提 10%(亮色底改往黑压 8%);pressed 往黑压 12%。
|
|
31
|
+
* 浅色 / 深色同一个值,深色下不对 accent 另做提亮。
|
|
12
32
|
*
|
|
13
|
-
* 派生只在这一处:`naive-theme.ts`(
|
|
14
|
-
*
|
|
15
|
-
* **而没有任何东西会报错**。
|
|
33
|
+
* 派生只在这一处:`naive-theme.ts`(喂 Naive overrides)与 `accentTokens.ts`(写 CSS 变量)都调它。
|
|
34
|
+
* 两边各算一份的话,改一处忘另一处 = 裸 CSS 与 Naive 组件主色不同步,**而没有任何东西会报错**。
|
|
16
35
|
*
|
|
17
36
|
* `darkContainer` 只在暗色下参与 `light`(浅底要往容器色靠,否则在暗底上白得刺眼);亮色下忽略。
|
|
18
|
-
* 调用方通常传当前的 `--color-bg-container`。只要前三态的调用方(Naive)不关心 `light`,多算一次 mix 而已。
|
|
19
37
|
*/
|
|
20
38
|
export declare function derivePrimary(accent: string, dark: boolean, darkContainer?: string): PrimaryRamp;
|
|
21
|
-
/** accent → rgba(...,alpha),用于发光 /
|
|
39
|
+
/** accent → rgba(...,alpha),用于发光 / 渐变 / 选中淡底。 */
|
|
22
40
|
export declare function rgba(hex: string, alpha: number): string;
|
|
23
41
|
/** 英雄主按钮渐变(仅登录页 / 欢迎横幅 / 头像)。 */
|
|
24
42
|
export declare function btnGrad(accent: string): string;
|
|
25
43
|
/** 英雄按钮发光阴影。 */
|
|
26
44
|
export declare function glowSh(accent: string): string;
|
|
45
|
+
/** hex → [色相 0–360, 饱和度 0–1, 明度 0–1]。 */
|
|
46
|
+
export declare function hexToHsl(hex: string): [number, number, number];
|
|
47
|
+
export declare function hslToHex(h: number, s: number, l: number): string;
|
|
48
|
+
/** 邻近色位移:色相窄幅旋转 + 提亮 + 轻微降饱和。色场四团光和应用内环境光都用它从强调色推导。 */
|
|
49
|
+
export declare function shift(c: string, dh: number, dl: number, ds: number): string;
|
|
50
|
+
/**
|
|
51
|
+
* 色场四团光相对强调色的位移量 [Δ色相, Δ明度, Δ饱和]。这四组数按默认蓝下的目标色反解得到,
|
|
52
|
+
* 所以默认蓝的观感是定稿的(与目标色逐团差 1–2 个 RGB 单位),换成别的强调色才会有区别。
|
|
53
|
+
* 按色相位移、而不是 mix 向写死的颜色(如 #8B5CF6 / #22D3EE),是为了紫色等强调色不会塌成一片同色(混向固定色时四团里三团同色)。
|
|
54
|
+
*/
|
|
55
|
+
export declare const FIELD: ReadonlyArray<readonly [number, number, number]>;
|
|
56
|
+
/**
|
|
57
|
+
* 色场的取色源:近中性的强调色(石墨,饱和度 2%)旋转色相没有意义,转出来还是灰,整屏会变成一块死灰,
|
|
58
|
+
* 退回默认蓝——这也正是 macOS 的行为:石墨只把控件去色,桌面壁纸照旧有颜色。
|
|
59
|
+
* 注意只有色场退回,`--login-accent-2`(登录页主按钮渐变、标语高亮)仍走石墨本色,不然会冒出一个蓝按钮。
|
|
60
|
+
*/
|
|
61
|
+
export declare function fieldSrc(c: string): string;
|
|
62
|
+
/** accent → 色场四个色(登录页 `--desk-1..4` 与应用内 `--ambient-1..4` 同源,各自再乘自己的不透明度)。 */
|
|
63
|
+
export declare function fieldOf(c: string): string[];
|
|
64
|
+
/**
|
|
65
|
+
* 数据色相对强调色的 [色相偏移(度), 饱和度偏移]。顺序 = 系列顺序:第 1 个就是强调色本色,
|
|
66
|
+
* 第 2、3 个往两侧拉开最大(折线只有两个系列时要一眼分得开),后面依次外扩。
|
|
67
|
+
* 偏移控制在 ±115° 内,落在蓝 → 青 / 靛 → 紫 / 绿这一带,不会出现红 / 橙:
|
|
68
|
+
* 红橙是状态语义色(危险 / 警告),拿来画「权限点」「在线会话」会让人以为出了问题。
|
|
69
|
+
* 实心主色饱和度很高(默认蓝约 0.9),原样转色相会得到荧光品红 / 荧光绿,和柔和的玻璃界面打架,
|
|
70
|
+
* 所以偏得越远降得越多。
|
|
71
|
+
*/
|
|
72
|
+
export declare const CHART_STEPS: ReadonlyArray<readonly [number, number]>;
|
|
73
|
+
/**
|
|
74
|
+
* accent → 6 个图表数据色。和色场同源:石墨(近中性)的强调色转色相没有意义,退回默认蓝(见 fieldSrc)。
|
|
75
|
+
* 基准色取实心主色(明暗同值),再逐个压到对卡片底 ≥ 3:1;`darkCard` 是暗色卡片底色(`--bg-card`)。
|
|
76
|
+
*/
|
|
77
|
+
export declare function chartPalette(accent: string, dark: boolean, darkCard?: string): string[];
|
package/dist/theme/mix.js
CHANGED
|
@@ -1,43 +1,128 @@
|
|
|
1
|
-
function
|
|
2
|
-
return Math.max(0, Math.min(255, Math.round(
|
|
1
|
+
function M(n) {
|
|
2
|
+
return Math.max(0, Math.min(255, Math.round(n)));
|
|
3
3
|
}
|
|
4
|
-
function F(
|
|
5
|
-
let
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
return [
|
|
4
|
+
function F(n) {
|
|
5
|
+
let r = n.replace("#", "").trim();
|
|
6
|
+
r.length === 3 && (r = r.split("").map((t) => t + t).join(""));
|
|
7
|
+
const o = Number.parseInt(r, 16);
|
|
8
|
+
return [o >> 16 & 255, o >> 8 & 255, o & 255];
|
|
9
9
|
}
|
|
10
|
-
function b(
|
|
11
|
-
return "#" + [
|
|
10
|
+
function b(n, r, o) {
|
|
11
|
+
return "#" + [n, r, o].map((t) => M(t).toString(16).padStart(2, "0")).join("");
|
|
12
12
|
}
|
|
13
|
-
function
|
|
14
|
-
const [
|
|
15
|
-
return b(
|
|
13
|
+
function u(n, r, o) {
|
|
14
|
+
const [t, e, c] = F(n), [s, a, i] = F(r);
|
|
15
|
+
return b(t + (s - t) * o, e + (a - e) * o, c + (i - c) * o);
|
|
16
16
|
}
|
|
17
|
-
function
|
|
18
|
-
const
|
|
17
|
+
function m(n) {
|
|
18
|
+
const [r, o, t] = F(n).map((e) => {
|
|
19
|
+
const c = e / 255;
|
|
20
|
+
return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
21
|
+
});
|
|
22
|
+
return 0.2126 * r + 0.7152 * o + 0.0722 * t;
|
|
23
|
+
}
|
|
24
|
+
function p(n, r) {
|
|
25
|
+
const o = m(n), t = m(r);
|
|
26
|
+
return (Math.max(o, t) + 0.05) / (Math.min(o, t) + 0.05);
|
|
27
|
+
}
|
|
28
|
+
function d(n, r = "#FFFFFF") {
|
|
29
|
+
let o = 0, t = n;
|
|
30
|
+
for (; p(t, r) < 4.5 && o < 1; )
|
|
31
|
+
o += 0.02, t = u(n, "#000000", o);
|
|
32
|
+
return t;
|
|
33
|
+
}
|
|
34
|
+
function C(n) {
|
|
35
|
+
return m(n) > 0.5 ? n : d(n);
|
|
36
|
+
}
|
|
37
|
+
function $(n, r, o = "#1F2229") {
|
|
38
|
+
const t = C(n).toLowerCase(), e = m(t) > 0.5;
|
|
19
39
|
return {
|
|
20
|
-
primary:
|
|
21
|
-
hover:
|
|
22
|
-
pressed:
|
|
23
|
-
light:
|
|
40
|
+
primary: t,
|
|
41
|
+
hover: e ? u(t, "#000000", 0.08) : u(t, "#FFFFFF", 0.1),
|
|
42
|
+
pressed: u(t, "#000000", 0.12),
|
|
43
|
+
light: r ? u(t, o, 0.82) : u(t, "#FFFFFF", 0.9),
|
|
44
|
+
on: e ? "#0a0a0b" : "#ffffff"
|
|
24
45
|
};
|
|
25
46
|
}
|
|
26
|
-
function
|
|
27
|
-
const [
|
|
28
|
-
return `rgba(${
|
|
47
|
+
function S(n, r) {
|
|
48
|
+
const [o, t, e] = F(n);
|
|
49
|
+
return `rgba(${o}, ${t}, ${e}, ${r})`;
|
|
50
|
+
}
|
|
51
|
+
function _(n) {
|
|
52
|
+
return `linear-gradient(135deg, ${n} 0%, ${u(n, "#8B5CF6", 0.55)} 55%, ${u(n, "#EC4899", 0.62)} 100%)`;
|
|
53
|
+
}
|
|
54
|
+
function w(n) {
|
|
55
|
+
return `0 6px 20px ${S(n, 0.42)}`;
|
|
56
|
+
}
|
|
57
|
+
function h(n) {
|
|
58
|
+
const [r, o, t] = F(n).map((g) => g / 255), e = Math.max(r, o, t), c = Math.min(r, o, t), s = e - c, a = (e + c) / 2;
|
|
59
|
+
let i = 0, f = 0;
|
|
60
|
+
return s && (f = a > 0.5 ? s / (2 - e - c) : s / (e + c), i = (e === r ? (o - t) / s + (o < t ? 6 : 0) : e === o ? (t - r) / s + 2 : (r - o) / s + 4) * 60), [i, f, a];
|
|
61
|
+
}
|
|
62
|
+
function T(n, r, o) {
|
|
63
|
+
const t = (n % 360 + 360) % 360, e = Math.max(0, Math.min(1, r)), c = Math.max(0, Math.min(1, o)), s = (1 - Math.abs(2 * c - 1)) * e, a = s * (1 - Math.abs(t / 60 % 2 - 1)), i = c - s / 2, f = t < 60 ? [s, a, 0] : t < 120 ? [a, s, 0] : t < 180 ? [0, s, a] : t < 240 ? [0, a, s] : t < 300 ? [a, 0, s] : [s, 0, a];
|
|
64
|
+
return b((f[0] + i) * 255, (f[1] + i) * 255, (f[2] + i) * 255);
|
|
65
|
+
}
|
|
66
|
+
function l(n, r, o, t) {
|
|
67
|
+
const [e, c, s] = h(n);
|
|
68
|
+
return T(e + r, c + t, s + o);
|
|
69
|
+
}
|
|
70
|
+
const A = [
|
|
71
|
+
[0, 0, 0],
|
|
72
|
+
[17, 0.12, -0.05],
|
|
73
|
+
[-11, 0.01, -0.07],
|
|
74
|
+
[35, 0.16, -0.08]
|
|
75
|
+
], H = "#0A84FF";
|
|
76
|
+
function x(n) {
|
|
77
|
+
return h(n)[1] < 0.12 ? H : n;
|
|
78
|
+
}
|
|
79
|
+
function B(n) {
|
|
80
|
+
const r = x(n);
|
|
81
|
+
return A.map(([o, t, e]) => l(r, o, t, e));
|
|
82
|
+
}
|
|
83
|
+
const y = [
|
|
84
|
+
[0, 0],
|
|
85
|
+
[48, -0.16],
|
|
86
|
+
[-38, -0.14],
|
|
87
|
+
[96, -0.46],
|
|
88
|
+
[-76, -0.3],
|
|
89
|
+
[-112, -0.36]
|
|
90
|
+
];
|
|
91
|
+
function L(n) {
|
|
92
|
+
const r = (n % 360 + 360) % 360;
|
|
93
|
+
return r >= 345 || r <= 45;
|
|
29
94
|
}
|
|
30
|
-
|
|
31
|
-
|
|
95
|
+
const E = 3;
|
|
96
|
+
function I(n, r, o, t) {
|
|
97
|
+
let e = n;
|
|
98
|
+
for (let c = 0; c < 24 && p(e, r) < o; c++)
|
|
99
|
+
e = l(e, 0, t ? 0.02 : -0.02, 0);
|
|
100
|
+
return e;
|
|
32
101
|
}
|
|
33
|
-
function
|
|
34
|
-
|
|
102
|
+
function N(n, r, o = "#1b2842") {
|
|
103
|
+
const t = $(x(n), r).primary, e = r ? o : "#FFFFFF", c = h(t)[0];
|
|
104
|
+
return y.map(([s, a]) => {
|
|
105
|
+
const i = L(c + s) ? -s : s;
|
|
106
|
+
return I(l(t, i, 0, a), e, E, r);
|
|
107
|
+
});
|
|
35
108
|
}
|
|
36
109
|
export {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
110
|
+
y as CHART_STEPS,
|
|
111
|
+
A as FIELD,
|
|
112
|
+
_ as btnGrad,
|
|
113
|
+
N as chartPalette,
|
|
114
|
+
p as contrast,
|
|
115
|
+
$ as derivePrimary,
|
|
116
|
+
B as fieldOf,
|
|
117
|
+
x as fieldSrc,
|
|
118
|
+
w as glowSh,
|
|
119
|
+
h as hexToHsl,
|
|
120
|
+
T as hslToHex,
|
|
121
|
+
m as luminance,
|
|
122
|
+
u as mix,
|
|
123
|
+
d as readable,
|
|
124
|
+
S as rgba,
|
|
125
|
+
l as shift,
|
|
126
|
+
C as solid
|
|
42
127
|
};
|
|
43
128
|
//# sourceMappingURL=mix.js.map
|
package/dist/theme/mix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mix.js","sources":["../../src/theme/mix.ts"],"sourcesContent":["// 颜色派生规则(DESIGN.md 权威实现)。纯函数,无框架依赖。\n\nfunction clampByte(n: number): number {\n return Math.max(0, Math.min(255, Math.round(n)))\n}\n\nfunction parseHex(hex: string): [number, number, number] {\n let h = hex.replace('#', '').trim()\n if (h.length === 3)\n h = h\n .split('')\n .map(c => c + c)\n .join('')\n const n = Number.parseInt(h, 16)\n return [(n >> 16) & 255, (n >> 8) & 255, n & 255]\n}\n\nfunction toHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b].map(v => clampByte(v).toString(16).padStart(2, '0')).join('')\n}\n\n/** 在 a、b 之间按 t∈[0,1] 线性插值(sRGB 分量)。t=0→a,t=1→b。 */\nexport function mix(a: string, b: string, t: number): string {\n const [ar, ag, ab] = parseHex(a)\n const [br, bg, bb] = parseHex(b)\n return toHex(ar + (br - ar) * t, ag + (bg - ag) * t, ab + (bb - ab) * t)\n}\n\nexport interface PrimaryRamp {\n primary: string\n hover: string\n pressed: string\n /** 浅底(选中背景 / 标签底)。 */\n light: string\n}\n\n/**\n * accent → 主色四态(DESIGN.md)。暗色先把 accent 提亮一档,再派生 hover/pressed/light。\n *\n * 派生只在这一处:`naive-theme.ts`(取前三态,喂 Naive overrides)与 `useTheme.ts` 的 `applyPrimaryVars`\n * (取四态,写 CSS 变量)都调它。两边各算一份的话,改一处忘另一处 = 裸 CSS 与 Naive 组件主色不同步,\n * **而没有任何东西会报错**。\n *\n * `darkContainer` 只在暗色下参与 `light`(浅底要往容器色靠,否则在暗底上白得刺眼);亮色下忽略。\n * 调用方通常传当前的 `--color-bg-container`。只要前三态的调用方(Naive)不关心 `light`,多算一次 mix 而已。\n */\nexport function derivePrimary(\n accent: string,\n dark: boolean,\n darkContainer = '#1F2229',\n): PrimaryRamp {\n // 亮色下 primary 就是 accent 本身(不派生),但**要统一转小写**:其余三个都经 `toHex` 出小写,\n // 而 accent 通常是色板里的大写字面量。不归一的话输出的大小写会随主题变化,任何拿 `===` 直接比的\n // 地方就会得到一个**只在亮色下失败**的不一致。CSS 不区分大小写,归一无副作用\n // (已核实:全仓唯一的 accent `===` 比较在 SettingsDrawer 色板选中态,两边都是原始 accent,不经此函数)。\n const primary = (dark ? mix(accent, '#FFFFFF', 0.18) : accent).toLowerCase()\n return {\n primary,\n hover: mix(primary, '#FFFFFF', 0.16),\n pressed: mix(primary, '#000000', 0.18),\n light: dark ? mix(primary, darkContainer, 0.82) : mix(primary, '#FFFFFF', 0.9),\n }\n}\n\n/** accent → rgba(...,alpha),用于发光 / 渐变。 */\nexport function rgba(hex: string, alpha: number): string {\n const [r, g, b] = parseHex(hex)\n return `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n\n/** 英雄主按钮渐变(仅登录页 / 欢迎横幅 / 头像)。 */\nexport function btnGrad(accent: string): string {\n return `linear-gradient(135deg, ${accent} 0%, ${mix(accent, '#8B5CF6', 0.55)} 55%, ${mix(accent, '#EC4899', 0.62)} 100%)`\n}\n\n/** 英雄按钮发光阴影。 */\nexport function glowSh(accent: string): string {\n return `0 6px 20px ${rgba(accent, 0.42)}`\n}\n"],"names":["clampByte","n","parseHex","hex","h","c","toHex","g","b","v","mix","a","t","ar","ag","ab","br","bg","bb","derivePrimary","accent","dark","darkContainer","primary","rgba","alpha","r","btnGrad","glowSh"],"mappings":"AAEA,SAASA,EAAUC,GAAmB;AACpC,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAMA,CAAC,CAAC,CAAC;AACjD;AAEA,SAASC,EAASC,GAAuC;AACvD,MAAIC,IAAID,EAAI,QAAQ,KAAK,EAAE,EAAE,KAAA;AAC7B,EAAIC,EAAE,WAAW,MACfA,IAAIA,EACD,MAAM,EAAE,EACR,IAAI,OAAKC,IAAIA,CAAC,EACd,KAAK,EAAE;AACZ,QAAMJ,IAAI,OAAO,SAASG,GAAG,EAAE;AAC/B,SAAO,CAAEH,KAAK,KAAM,KAAMA,KAAK,IAAK,KAAKA,IAAI,GAAG;AAClD;AAEA,SAASK,EAAM,GAAWC,GAAWC,GAAmB;AACtD,SAAO,MAAM,CAAC,GAAGD,GAAGC,CAAC,EAAE,IAAI,OAAKR,EAAUS,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AACrF;AAGO,SAASC,EAAIC,GAAWH,GAAWI,GAAmB;AAC3D,QAAM,CAACC,GAAIC,GAAIC,CAAE,IAAIb,EAASS,CAAC,GACzB,CAACK,GAAIC,GAAIC,CAAE,IAAIhB,EAASM,CAAC;AAC/B,SAAOF,EAAMO,KAAMG,IAAKH,KAAMD,GAAGE,KAAMG,IAAKH,KAAMF,GAAGG,KAAMG,IAAKH,KAAMH,CAAC;AACzE;AAoBO,SAASO,EACdC,GACAC,GACAC,IAAgB,WACH;AAKb,QAAMC,KAAWF,IAAOX,EAAIU,GAAQ,WAAW,IAAI,IAAIA,GAAQ,YAAA;AAC/D,SAAO;AAAA,IACL,SAAAG;AAAA,IACA,OAAOb,EAAIa,GAAS,WAAW,IAAI;AAAA,IACnC,SAASb,EAAIa,GAAS,WAAW,IAAI;AAAA,IACrC,OAAOF,IAAOX,EAAIa,GAASD,GAAe,IAAI,IAAIZ,EAAIa,GAAS,WAAW,GAAG;AAAA,EAAA;AAEjF;AAGO,SAASC,EAAKrB,GAAasB,GAAuB;AACvD,QAAM,CAACC,GAAGnB,GAAGC,CAAC,IAAIN,EAASC,CAAG;AAC9B,SAAO,QAAQuB,CAAC,KAAKnB,CAAC,KAAKC,CAAC,KAAKiB,CAAK;AACxC;AAGO,SAASE,EAAQP,GAAwB;AAC9C,SAAO,2BAA2BA,CAAM,QAAQV,EAAIU,GAAQ,WAAW,IAAI,CAAC,SAASV,EAAIU,GAAQ,WAAW,IAAI,CAAC;AACnH;AAGO,SAASQ,EAAOR,GAAwB;AAC7C,SAAO,cAAcI,EAAKJ,GAAQ,IAAI,CAAC;AACzC;"}
|
|
1
|
+
{"version":3,"file":"mix.js","sources":["../../src/theme/mix.ts"],"sourcesContent":["// 颜色派生规则(DESIGN.md 所述规则的唯一实现)。纯函数,无框架依赖。\n// 改规则时同步改 DESIGN.md,mix.spec.ts 钉着 solid() / fieldOf() 的几组既定输出。\n\nfunction clampByte(n: number): number {\n return Math.max(0, Math.min(255, Math.round(n)))\n}\n\nfunction parseHex(hex: string): [number, number, number] {\n let h = hex.replace('#', '').trim()\n if (h.length === 3)\n h = h\n .split('')\n .map(c => c + c)\n .join('')\n const n = Number.parseInt(h, 16)\n return [(n >> 16) & 255, (n >> 8) & 255, n & 255]\n}\n\nfunction toHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b].map(v => clampByte(v).toString(16).padStart(2, '0')).join('')\n}\n\n/** 在 a、b 之间按 t∈[0,1] 线性插值(sRGB 分量)。t=0→a,t=1→b。 */\nexport function mix(a: string, b: string, t: number): string {\n const [ar, ag, ab] = parseHex(a)\n const [br, bg, bb] = parseHex(b)\n return toHex(ar + (br - ar) * t, ag + (bg - ag) * t, ab + (bb - ab) * t)\n}\n\n/** WCAG 相对亮度(0 黑 … 1 白)。 */\nexport function luminance(hex: string): number {\n const [r, g, b] = parseHex(hex).map(v => {\n const c = v / 255\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4\n }) as [number, number, number]\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/** WCAG 对比度(1…21)。 */\nexport function contrast(a: string, b: string): number {\n const x = luminance(a)\n const y = luminance(b)\n return (Math.max(x, y) + 0.05) / (Math.min(x, y) + 0.05)\n}\n\n/**\n * 把强调色当文字用时的可读版:在 bg 上逐步混黑,直到对比度 ≥ 4.5:1,色相不变。\n * 浅色下的链接 / 选中文字 / 侧栏图标用它;深色背景上不要用(混黑只会更糟),深色走「往白提亮」。\n */\nexport function readable(c: string, bg = '#FFFFFF'): string {\n let t = 0\n let r = c\n while (contrast(r, bg) < 4.5 && t < 1) {\n t += 0.02\n r = mix(c, '#000000', t)\n }\n return r\n}\n\n/**\n * 实心控件(主按钮、勾选框、开关、进度条)的底色:亮度 > 0.5 的亮色直接用(配深字),\n * 其余压暗到白字 ≥ 4.5:1。**浅色 / 深色用同一个值**,切换外观模式时强调色不变。\n * 6 个候选色的亮度都落在 0.14–0.36,所以实际都走「压暗」这一支、主按钮一律深底白字。\n */\nexport function solid(c: string): string {\n return luminance(c) > 0.5 ? c : readable(c)\n}\n\nexport interface PrimaryRamp {\n /** 实心主色(= `solid(accent)`,明暗同值)。 */\n primary: string\n hover: string\n pressed: string\n /** 浅底(选中背景 / 标签底)的**实色**版;裸 CSS 里的选中底改用半透明的 `--sel-bg`,这里保留给调用方自取。 */\n light: string\n /** 压在 `primary` 上的字色:深底白字,极端情况(亮度 > 0.5)配近黑。 */\n on: string\n}\n\n/**\n * accent → 主色四态 + 字色。规则:\n * primary = solid(accent);hover 往白提 10%(亮色底改往黑压 8%);pressed 往黑压 12%。\n * 浅色 / 深色同一个值,深色下不对 accent 另做提亮。\n *\n * 派生只在这一处:`naive-theme.ts`(喂 Naive overrides)与 `accentTokens.ts`(写 CSS 变量)都调它。\n * 两边各算一份的话,改一处忘另一处 = 裸 CSS 与 Naive 组件主色不同步,**而没有任何东西会报错**。\n *\n * `darkContainer` 只在暗色下参与 `light`(浅底要往容器色靠,否则在暗底上白得刺眼);亮色下忽略。\n */\nexport function derivePrimary(\n accent: string,\n dark: boolean,\n darkContainer = '#1F2229',\n): PrimaryRamp {\n // 统一转小写:solid() 在亮色分支里原样返回入参,而色板里的 accent 是大写字面量,\n // 其余三态都经 `toHex` 出小写。不归一的话输出的大小写会随强调色变化,\n // 任何拿 `===` 直接比的地方就会得到一个只在某些强调色下失败的不一致。CSS 不区分大小写,归一无副作用。\n const primary = solid(accent).toLowerCase()\n const bright = luminance(primary) > 0.5\n return {\n primary,\n hover: bright ? mix(primary, '#000000', 0.08) : mix(primary, '#FFFFFF', 0.1),\n pressed: mix(primary, '#000000', 0.12),\n light: dark ? mix(primary, darkContainer, 0.82) : mix(primary, '#FFFFFF', 0.9),\n on: bright ? '#0a0a0b' : '#ffffff',\n }\n}\n\n/** accent → rgba(...,alpha),用于发光 / 渐变 / 选中淡底。 */\nexport function rgba(hex: string, alpha: number): string {\n const [r, g, b] = parseHex(hex)\n return `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n\n/** 英雄主按钮渐变(仅登录页 / 欢迎横幅 / 头像)。 */\nexport function btnGrad(accent: string): string {\n return `linear-gradient(135deg, ${accent} 0%, ${mix(accent, '#8B5CF6', 0.55)} 55%, ${mix(accent, '#EC4899', 0.62)} 100%)`\n}\n\n/** 英雄按钮发光阴影。 */\nexport function glowSh(accent: string): string {\n return `0 6px 20px ${rgba(accent, 0.42)}`\n}\n\n/* ─── HSL 与色场:色场推导要按色相走,混向一个写死的颜色做不到 ─── */\n\n/** hex → [色相 0–360, 饱和度 0–1, 明度 0–1]。 */\nexport function hexToHsl(hex: string): [number, number, number] {\n const [r, g, b] = parseHex(hex).map(v => v / 255) as [number, number, number]\n const mx = Math.max(r, g, b)\n const mn = Math.min(r, g, b)\n const d = mx - mn\n const l = (mx + mn) / 2\n let h = 0\n let s = 0\n if (d) {\n s = l > 0.5 ? d / (2 - mx - mn) : d / (mx + mn)\n h =\n (mx === r ? (g - b) / d + (g < b ? 6 : 0) : mx === g ? (b - r) / d + 2 : (r - g) / d + 4) * 60\n }\n return [h, s, l]\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const hh = ((h % 360) + 360) % 360\n const ss = Math.max(0, Math.min(1, s))\n const ll = Math.max(0, Math.min(1, l))\n const c = (1 - Math.abs(2 * ll - 1)) * ss\n const x = c * (1 - Math.abs(((hh / 60) % 2) - 1))\n const m = ll - c / 2\n const t =\n hh < 60\n ? [c, x, 0]\n : hh < 120\n ? [x, c, 0]\n : hh < 180\n ? [0, c, x]\n : hh < 240\n ? [0, x, c]\n : hh < 300\n ? [x, 0, c]\n : [c, 0, x]\n return toHex((t[0]! + m) * 255, (t[1]! + m) * 255, (t[2]! + m) * 255)\n}\n\n/** 邻近色位移:色相窄幅旋转 + 提亮 + 轻微降饱和。色场四团光和应用内环境光都用它从强调色推导。 */\nexport function shift(c: string, dh: number, dl: number, ds: number): string {\n const [h, s, l] = hexToHsl(c)\n return hslToHex(h + dh, s + ds, l + dl)\n}\n\n/**\n * 色场四团光相对强调色的位移量 [Δ色相, Δ明度, Δ饱和]。这四组数按默认蓝下的目标色反解得到,\n * 所以默认蓝的观感是定稿的(与目标色逐团差 1–2 个 RGB 单位),换成别的强调色才会有区别。\n * 按色相位移、而不是 mix 向写死的颜色(如 #8B5CF6 / #22D3EE),是为了紫色等强调色不会塌成一片同色(混向固定色时四团里三团同色)。\n */\nexport const FIELD: ReadonlyArray<readonly [number, number, number]> = [\n [0, 0, 0],\n [17, 0.12, -0.05],\n [-11, 0.01, -0.07],\n [35, 0.16, -0.08],\n]\n\n/** 色场的默认取色源(默认强调色蓝)。 */\nconst FIELD_FALLBACK = '#0A84FF'\n\n/**\n * 色场的取色源:近中性的强调色(石墨,饱和度 2%)旋转色相没有意义,转出来还是灰,整屏会变成一块死灰,\n * 退回默认蓝——这也正是 macOS 的行为:石墨只把控件去色,桌面壁纸照旧有颜色。\n * 注意只有色场退回,`--login-accent-2`(登录页主按钮渐变、标语高亮)仍走石墨本色,不然会冒出一个蓝按钮。\n */\nexport function fieldSrc(c: string): string {\n return hexToHsl(c)[1] < 0.12 ? FIELD_FALLBACK : c\n}\n\n/** accent → 色场四个色(登录页 `--desk-1..4` 与应用内 `--ambient-1..4` 同源,各自再乘自己的不透明度)。 */\nexport function fieldOf(c: string): string[] {\n const src = fieldSrc(c)\n return FIELD.map(([dh, dl, ds]) => shift(src, dh, dl, ds))\n}\n\n/* ─── 图表数据色:由强调色推导的一组邻近色相 ─── */\n\n/**\n * 数据色相对强调色的 [色相偏移(度), 饱和度偏移]。顺序 = 系列顺序:第 1 个就是强调色本色,\n * 第 2、3 个往两侧拉开最大(折线只有两个系列时要一眼分得开),后面依次外扩。\n * 偏移控制在 ±115° 内,落在蓝 → 青 / 靛 → 紫 / 绿这一带,不会出现红 / 橙:\n * 红橙是状态语义色(危险 / 警告),拿来画「权限点」「在线会话」会让人以为出了问题。\n * 实心主色饱和度很高(默认蓝约 0.9),原样转色相会得到荧光品红 / 荧光绿,和柔和的玻璃界面打架,\n * 所以偏得越远降得越多。\n */\nexport const CHART_STEPS: ReadonlyArray<readonly [number, number]> = [\n [0, 0],\n [48, -0.16],\n [-38, -0.14],\n [96, -0.46],\n [-76, -0.3],\n [-112, -0.36],\n]\n\n/** 色相落在红 / 橙一带(345°–45°):状态语义色的地盘,数据色要避开。 */\nfunction inWarmZone(h: number): boolean {\n const x = ((h % 360) + 360) % 360\n return x >= 345 || x <= 45\n}\n\n/** 图形对象(折线、色块)与相邻底色的对比度下限,WCAG 1.4.11。 */\nconst CHART_MIN_CONTRAST = 3\n\n/** 把 c 的明度往「离底色更远」的方向推,直到对底色对比度 ≥ min(最多推 24 步,够用且保证终止)。 */\nfunction ensureContrast(c: string, bg: string, min: number, lighten: boolean): string {\n let out = c\n for (let i = 0; i < 24 && contrast(out, bg) < min; i++)\n out = shift(out, 0, lighten ? 0.02 : -0.02, 0)\n return out\n}\n\n/**\n * accent → 6 个图表数据色。和色场同源:石墨(近中性)的强调色转色相没有意义,退回默认蓝(见 fieldSrc)。\n * 基准色取实心主色(明暗同值),再逐个压到对卡片底 ≥ 3:1;`darkCard` 是暗色卡片底色(`--bg-card`)。\n */\nexport function chartPalette(accent: string, dark: boolean, darkCard = '#1b2842'): string[] {\n const base = derivePrimary(fieldSrc(accent), dark).primary\n const bg = dark ? darkCard : '#FFFFFF'\n const h0 = hexToHsl(base)[0]\n return CHART_STEPS.map(([dh, ds]) => {\n // 固定偏移在个别强调色下会转进红橙区(墨绿 −112° → 橙棕,靛蓝 +96° → 粉红):落进去就反向取\n const d = inWarmZone(h0 + dh) ? -dh : dh\n return ensureContrast(shift(base, d, 0, ds), bg, CHART_MIN_CONTRAST, dark)\n })\n}\n"],"names":["clampByte","parseHex","hex","h","c","n","toHex","r","g","b","v","mix","a","t","ar","ag","ab","br","bg","bb","luminance","contrast","x","y","readable","solid","derivePrimary","accent","dark","darkContainer","primary","bright","rgba","alpha","btnGrad","glowSh","hexToHsl","mx","mn","d","l","s","hslToHex","hh","ss","ll","m","shift","dh","dl","ds","FIELD","FIELD_FALLBACK","fieldSrc","fieldOf","src","CHART_STEPS","inWarmZone","CHART_MIN_CONTRAST","ensureContrast","min","lighten","out","i","chartPalette","darkCard","base","h0"],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { GlobalThemeOverrides } from 'naive-ui';
|
|
2
2
|
/**
|
|
3
|
-
* tokens.css → Naive UI GlobalThemeOverrides(DESIGN.md 映射表)。
|
|
4
|
-
*
|
|
3
|
+
* tokens.css → Naive UI GlobalThemeOverrides(映射关系见 DESIGN.md 映射表)。
|
|
4
|
+
* 强调色相关的值由 accent 按 `accentTokens.ts` 算;其余颜色 / 度量从当前 CSS 变量读取。
|
|
5
|
+
*
|
|
6
|
+
* 度量(中文界面 14px 偏小,整体比 Naive 默认大一档):正文 15px、默认控件高 30px(小 24、迷你 20)、Large 42px 只留给登录页与触屏窄档。
|
|
7
|
+
* 按钮默认款(没写 type 的 NButton,如表格库里的「搜索」「更多」)渲染成与 secondary 同色同无描边,整站只剩一种次按钮。
|
|
5
8
|
*/
|
|
6
9
|
export declare function buildThemeOverrides(opts: {
|
|
7
10
|
dark: boolean;
|