@done-coding/admin-core 0.11.0 → 0.12.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/es/bridge/index.mjs +51 -45
- package/es/bridge/theme/index.mjs +88 -74
- package/es/components/app-layout/AppLayout.vue.mjs +2 -2
- package/es/components/app-layout/AppLayout.vue2.mjs +49 -45
- package/es/components/app-layout/AppTheme.vue.mjs +3 -3
- package/es/components/app-layout/AppTheme.vue2.mjs +15 -15
- package/es/components/display/ActionBtn.vue.mjs +22 -19
- package/es/components/display/TabsMain.vue.mjs +5 -5
- package/es/components/form/FormMain.vue.mjs +1 -1
- package/es/components/form/FormMain.vue2.mjs +1 -0
- package/es/components/list-page/ListPage.vue.mjs +2 -2
- package/es/components/list-page/ListPage.vue2.mjs +2 -2
- package/es/components/menu/MenuItemSub.vue.mjs +10 -9
- package/es/components/menu/MenuTree.vue.mjs +1 -0
- package/es/components/modal/ConfirmModal.vue.mjs +3 -3
- package/es/components/modal/ConfirmModal.vue2.mjs +15 -15
- package/es/components/modal/DetailModal.vue.mjs +18 -17
- package/es/components/panel/PanelMain.vue.mjs +2 -2
- package/es/components/panel/PanelMain.vue2.mjs +21 -18
- package/es/components/table/TableMain.vue.mjs +2 -2
- package/es/components/table/TableMain.vue2.mjs +48 -48
- package/es/hooks/use-admin-theme-apply.mjs +167 -39
- package/es/index.mjs +87 -85
- package/es/style.css +1 -1
- package/es/utils/theme-scale.mjs +29 -23
- package/package.json +6 -4
- package/types/bridge/index.d.ts +26 -2
- package/types/bridge/theme/index.d.ts +1 -1
- package/types/bridge/theme/types.d.ts +78 -0
- package/types/components/app-layout/AppLayout.vue.d.ts +1 -1
- package/types/components/app-layout/types.d.ts +1 -1
- package/types/hooks/use-admin-theme-apply.d.ts +18 -1
- package/types/utils/theme-scale.d.ts +8 -0
package/es/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createAdminBridge as
|
|
1
|
+
import { createAdminBridge as t } from "./bridge/index.mjs";
|
|
2
2
|
import { default as a } from "./components/display/ActionBtn.vue.mjs";
|
|
3
3
|
import { default as f } from "./components/display/ActionBtnGroup.vue.mjs";
|
|
4
4
|
import { default as s } from "./components/display/BooleanTag.vue.mjs";
|
|
@@ -16,12 +16,12 @@ import { default as C } from "./components/modal/ModalShelf.vue.mjs";
|
|
|
16
16
|
import { default as D } from "./components/panel/PanelItem.vue.mjs";
|
|
17
17
|
import { default as B } from "./components/panel/PanelItemNestPanel.vue.mjs";
|
|
18
18
|
import { default as Y } from "./components/misc/SelectModule.vue.mjs";
|
|
19
|
-
import { default as
|
|
19
|
+
import { default as G } from "./components/display/TabsMain.vue.mjs";
|
|
20
20
|
import { default as K } from "./components/misc/TriggerAutoImport.vue.mjs";
|
|
21
21
|
import { default as w } from "./components/display/WatchSize.vue.mjs";
|
|
22
22
|
import { ADMIN_BRIDGE_KEY as W, APP_LAYOUT_APP_STORE_KEY as k, APP_LAYOUT_BRIDGE_KEY as X, APP_LAYOUT_USER_STORE_KEY as z, BODY_CONTENT_VIEWPORT_HEIGHT as Z, FORM_NEST_REGISTRY_KEY as j, NEST_LAYOUT_SCALE_KEY as Q, TABS_MAIN_VISUAL_LEVEL as q, getModalShelfInjectionKey as J } from "./inject/key.mjs";
|
|
23
23
|
import { ADMIN_CORE_VIEWPORT_DECOR_ZINDEX_ABOVE as ee, ADMIN_CORE_VIEWPORT_DECOR_ZINDEX_BELOW as oe } from "./components/app-layout/viewport.mjs";
|
|
24
|
-
import { APP_API_LIST_MODEL_KEY_CONFIG as
|
|
24
|
+
import { APP_API_LIST_MODEL_KEY_CONFIG as re } from "./config/list-model.mjs";
|
|
25
25
|
import { default as me } from "./components/display/ActionConfirm.vue.mjs";
|
|
26
26
|
import { default as pe } from "./components/app-layout/AppAside.vue.mjs";
|
|
27
27
|
import { default as ue } from "./components/app-layout/AppBody.vue.mjs";
|
|
@@ -34,10 +34,10 @@ import { default as Ie } from "./components/app-layout/AppSidebar.vue.mjs";
|
|
|
34
34
|
import { default as Re } from "./components/app-layout/AppTheme.vue.mjs";
|
|
35
35
|
import { default as Le } from "./components/misc/AutoRefresh.vue.mjs";
|
|
36
36
|
import { default as Oe } from "./components/misc/AutoRefreshGroup.vue.mjs";
|
|
37
|
-
import { default as
|
|
38
|
-
import { EXPORT_MAX_LIMIT as
|
|
39
|
-
import { FORM_CONFIG_SELECT_ALL_VALUE as Ye, getConfirmPasswordRule as
|
|
40
|
-
import { FORM_ITEM_CHANGE_LOADING as ve, NEST_LAYOUT_TIERS as we, ceilToTier as He, generateFormData as We, getBlurSubmit as ke, getChangeSubmit as Xe, getDatePickerShortcuts as ze, getEnterSubmit as Ze, getPlaceholder as je, getVModelSugar as Qe, parseFormData as qe, resolveFormLayout as Je, resolveLayoutSpan as $e, setInputComponent as eo, setSelectComponent as oo, stringifyFormData as
|
|
37
|
+
import { default as he } from "./components/modal/ConfirmModal.vue.mjs";
|
|
38
|
+
import { EXPORT_MAX_LIMIT as Ne, OPERATE_COLUMN_PROP as De, exportCSV as ye, pickExportColumns as Be } from "./utils/export.mjs";
|
|
39
|
+
import { FORM_CONFIG_SELECT_ALL_VALUE as Ye, getConfirmPasswordRule as be, passwordRule as Ge, setFormComponentType as Ue } from "./helpers/form.mjs";
|
|
40
|
+
import { FORM_ITEM_CHANGE_LOADING as ve, NEST_LAYOUT_TIERS as we, ceilToTier as He, generateFormData as We, getBlurSubmit as ke, getChangeSubmit as Xe, getDatePickerShortcuts as ze, getEnterSubmit as Ze, getPlaceholder as je, getVModelSugar as Qe, parseFormData as qe, resolveFormLayout as Je, resolveLayoutSpan as $e, setInputComponent as eo, setSelectComponent as oo, stringifyFormData as to, swiftFormItemConfig as ro } from "./components/form/utils.mjs";
|
|
41
41
|
import { default as mo } from "./components/form/FormItemNestForm.vue.mjs";
|
|
42
42
|
import { default as po } from "./components/form/FormItemNestFormList.vue.mjs";
|
|
43
43
|
import { default as uo } from "./components/form/FormMain.vue.mjs";
|
|
@@ -49,42 +49,42 @@ import { default as To } from "./components/panel/PanelEditSwitch.vue.mjs";
|
|
|
49
49
|
import { default as Po } from "./components/panel/PanelItemNestForm.vue.mjs";
|
|
50
50
|
import { default as Fo } from "./components/panel/PanelMain.vue.mjs";
|
|
51
51
|
import { ROUTE_MODULE_LEVEL as Mo, TabsMainReplaceQueryKey as Oo } from "./config/route.mjs";
|
|
52
|
-
import { default as
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import {
|
|
61
|
-
import {
|
|
62
|
-
import {
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
66
|
-
import {
|
|
67
|
-
import {
|
|
68
|
-
import {
|
|
69
|
-
import {
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import { useAdminViewportApply as
|
|
75
|
-
import { useBreakpoint as
|
|
76
|
-
import { useChannelViewportHeight as
|
|
77
|
-
import { useFeelSize as
|
|
78
|
-
import { useMenusDataDispatch as
|
|
79
|
-
import { useNestForm as
|
|
80
|
-
import { useNestFormList as
|
|
81
|
-
import { useNestLayoutScale as
|
|
82
|
-
import { useTimeout as
|
|
52
|
+
import { default as ho } from "./components/table/TableMain.vue.mjs";
|
|
53
|
+
import { buildRhythmCss as No, useAdminThemeApply as Do } from "./hooks/use-admin-theme-apply.mjs";
|
|
54
|
+
import { checkLogin as Bo } from "./router/guard/login.mjs";
|
|
55
|
+
import { checkPermission as Yo } from "./router/guard/permission.mjs";
|
|
56
|
+
import { countAll as Go, createListApi as Uo, fetchListAll as Ko } from "./helpers/list-helper.mjs";
|
|
57
|
+
import { createAppStore as wo } from "./store/app.mjs";
|
|
58
|
+
import { createGenerateRouteMetaRawTree as Wo } from "./bridge/route.mjs";
|
|
59
|
+
import { createGuard as Xo } from "./router/guard/index.mjs";
|
|
60
|
+
import { createNestFormExposeMap as Zo } from "./components/form/nest-registry.mjs";
|
|
61
|
+
import { createRoutePermissionStore as Qo } from "./store/router-permission.mjs";
|
|
62
|
+
import { createStorageWithNamespace as Jo } from "./bridge/storage.mjs";
|
|
63
|
+
import { createUseState as et } from "./bridge/state.mjs";
|
|
64
|
+
import { createUserStore as tt } from "./store/user.mjs";
|
|
65
|
+
import { flatRouteMetaResolveRaw as at, getRoutePermissionKey as mt } from "./utils/router.mjs";
|
|
66
|
+
import { getId as pt } from "./utils/id.mjs";
|
|
67
|
+
import { nestFormItem as ut } from "./components/form/nest-form-item.mjs";
|
|
68
|
+
import { nestFormItemList as xt } from "./components/form/nest-form-item-list.mjs";
|
|
69
|
+
import { nestPanelForm as it } from "./components/panel/nest-panel-form.mjs";
|
|
70
|
+
import { nestPanelItem as _t } from "./components/panel/nest-panel-item.mjs";
|
|
71
|
+
import { themeScaleDerive as Et, themeScaleMix as ct, themeScaleToRgba as St } from "./utils/theme-scale.mjs";
|
|
72
|
+
import { timeCountDown as It } from "./utils/time.mjs";
|
|
73
|
+
import { useActivated as Rt, useActivatedEvent as Ft, useActivatedExec as Lt } from "./hooks/activated.mjs";
|
|
74
|
+
import { useAdminViewportApply as Ot } from "./hooks/use-admin-viewport-apply.mjs";
|
|
75
|
+
import { useBreakpoint as ht } from "./hooks/use-breakpoint.mjs";
|
|
76
|
+
import { useChannelViewportHeight as Nt } from "./hooks/use-channel-viewport-height.mjs";
|
|
77
|
+
import { useFeelSize as yt } from "./hooks/feel-size.mjs";
|
|
78
|
+
import { useMenusDataDispatch as Vt } from "./hooks/menus-dispatch.mjs";
|
|
79
|
+
import { useNestForm as bt } from "./components/form/use-nest-form.mjs";
|
|
80
|
+
import { useNestFormList as Ut } from "./components/form/use-nest-form-list.mjs";
|
|
81
|
+
import { useNestLayoutScale as vt } from "./components/form/use-nest-layout-scale.mjs";
|
|
82
|
+
import { useTimeout as Ht } from "./hooks/timeout.mjs";
|
|
83
83
|
export {
|
|
84
84
|
W as ADMIN_BRIDGE_KEY,
|
|
85
85
|
ee as ADMIN_CORE_VIEWPORT_DECOR_ZINDEX_ABOVE,
|
|
86
86
|
oe as ADMIN_CORE_VIEWPORT_DECOR_ZINDEX_BELOW,
|
|
87
|
-
|
|
87
|
+
re as APP_API_LIST_MODEL_KEY_CONFIG,
|
|
88
88
|
k as APP_LAYOUT_APP_STORE_KEY,
|
|
89
89
|
X as APP_LAYOUT_BRIDGE_KEY,
|
|
90
90
|
z as APP_LAYOUT_USER_STORE_KEY,
|
|
@@ -104,9 +104,9 @@ export {
|
|
|
104
104
|
Oe as AutoRefreshGroup,
|
|
105
105
|
Z as BODY_CONTENT_VIEWPORT_HEIGHT,
|
|
106
106
|
s as BooleanTag,
|
|
107
|
-
|
|
107
|
+
he as ConfirmModal,
|
|
108
108
|
l as DetailModal,
|
|
109
|
-
|
|
109
|
+
Ne as EXPORT_MAX_LIMIT,
|
|
110
110
|
Ye as FORM_CONFIG_SELECT_ALL_VALUE,
|
|
111
111
|
ve as FORM_ITEM_CHANGE_LOADING,
|
|
112
112
|
j as FORM_NEST_REGISTRY_KEY,
|
|
@@ -138,67 +138,69 @@ export {
|
|
|
138
138
|
Mo as ROUTE_MODULE_LEVEL,
|
|
139
139
|
Y as SelectModule,
|
|
140
140
|
q as TABS_MAIN_VISUAL_LEVEL,
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
ho as TableMain,
|
|
142
|
+
G as TabsMain,
|
|
143
143
|
Oo as TabsMainReplaceQueryKey,
|
|
144
144
|
K as TriggerAutoImport,
|
|
145
145
|
w as WatchSize,
|
|
146
|
+
No as buildRhythmCss,
|
|
146
147
|
He as ceilToTier,
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
148
|
+
Bo as checkLogin,
|
|
149
|
+
Yo as checkPermission,
|
|
150
|
+
Go as countAll,
|
|
151
|
+
t as createAdminBridge,
|
|
152
|
+
wo as createAppStore,
|
|
153
|
+
Wo as createGenerateRouteMetaRawTree,
|
|
154
|
+
Xo as createGuard,
|
|
155
|
+
Uo as createListApi,
|
|
156
|
+
Zo as createNestFormExposeMap,
|
|
157
|
+
Qo as createRoutePermissionStore,
|
|
158
|
+
Jo as createStorageWithNamespace,
|
|
159
|
+
et as createUseState,
|
|
160
|
+
tt as createUserStore,
|
|
160
161
|
ye as exportCSV,
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
Ko as fetchListAll,
|
|
163
|
+
at as flatRouteMetaResolveRaw,
|
|
163
164
|
We as generateFormData,
|
|
164
165
|
ke as getBlurSubmit,
|
|
165
166
|
Xe as getChangeSubmit,
|
|
166
|
-
|
|
167
|
+
be as getConfirmPasswordRule,
|
|
167
168
|
ze as getDatePickerShortcuts,
|
|
168
169
|
Ze as getEnterSubmit,
|
|
169
|
-
|
|
170
|
+
pt as getId,
|
|
170
171
|
J as getModalShelfInjectionKey,
|
|
171
172
|
je as getPlaceholder,
|
|
172
|
-
|
|
173
|
+
mt as getRoutePermissionKey,
|
|
173
174
|
Qe as getVModelSugar,
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
ut as nestFormItem,
|
|
176
|
+
xt as nestFormItemList,
|
|
177
|
+
it as nestPanelForm,
|
|
178
|
+
_t as nestPanelItem,
|
|
178
179
|
qe as parseFormData,
|
|
179
|
-
|
|
180
|
+
Ge as passwordRule,
|
|
180
181
|
Be as pickExportColumns,
|
|
181
182
|
Je as resolveFormLayout,
|
|
182
183
|
$e as resolveLayoutSpan,
|
|
183
|
-
|
|
184
|
+
Ue as setFormComponentType,
|
|
184
185
|
eo as setInputComponent,
|
|
185
186
|
oo as setSelectComponent,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
187
|
+
to as stringifyFormData,
|
|
188
|
+
ro as swiftFormItemConfig,
|
|
189
|
+
Et as themeScaleDerive,
|
|
190
|
+
ct as themeScaleMix,
|
|
191
|
+
St as themeScaleToRgba,
|
|
192
|
+
It as timeCountDown,
|
|
193
|
+
Rt as useActivated,
|
|
194
|
+
Ft as useActivatedEvent,
|
|
195
|
+
Lt as useActivatedExec,
|
|
196
|
+
Do as useAdminThemeApply,
|
|
197
|
+
Ot as useAdminViewportApply,
|
|
198
|
+
ht as useBreakpoint,
|
|
199
|
+
Nt as useChannelViewportHeight,
|
|
200
|
+
yt as useFeelSize,
|
|
201
|
+
Vt as useMenusDataDispatch,
|
|
202
|
+
bt as useNestForm,
|
|
203
|
+
Ut as useNestFormList,
|
|
204
|
+
vt as useNestLayoutScale,
|
|
205
|
+
Ht as useTimeout
|
|
204
206
|
};
|
package/es/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.confirm-modal[data-v-26598cb2] .el-dialog__header{margin-right:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.confirm-modal__title[data-v-26598cb2]{font-size:16px;font-weight:600;line-height:24px;color:var(--el-text-color-primary);text-align:left}.confirm-modal[data-v-26598cb2] .el-dialog__body{padding:20px}.confirm-modal__content[data-v-26598cb2]{overflow-x:hidden;overflow-y:auto;max-height:calc(100vh - 200px);font-size:14px;line-height:22px;color:var(--el-text-color-regular);text-align:left;word-break:break-word}.confirm-modal[data-v-26598cb2] .el-dialog__footer{padding:12px 20px;border-top:1px solid var(--el-border-color-lighter)}.confirm-modal__footer[data-v-26598cb2]{display:flex;justify-content:flex-end;align-items:center;gap:8px}.confirm-modal__footer[data-v-26598cb2] .el-button{min-width:72px}.confirm-modal__footer[reverse=true][data-v-26598cb2]{flex-direction:row-reverse}.action-confirm__title[data-v-88119b35]{font-weight:600;margin-bottom:6px}.action-confirm__content[data-v-88119b35]{margin-bottom:12px;color:var(--el-text-color-regular)}.action-confirm__actions[data-v-88119b35]{display:flex;justify-content:flex-end;gap:8px}.form-item-tip[data-v-8b508d64]{text-align:left;line-height:1.5;font-size:12px}.form-item-label-hide[data-v-8b508d64] .el-form-item__label-wrap{display:none}[data-v-8ad14c45] .el-row>.el-col>.el-form-item{margin-bottom:18px}.form-submit-panel[data-v-93bc9096]{display:flex;flex-direction:column}.form-submit-panel .form-submit-panel-form[data-v-93bc9096]{order:1}.form-submit-panel .form-submit-panel-operation[data-v-93bc9096]{order:2}.form-submit-panel .form-submit-panel-operation-inner[data-v-93bc9096]{display:flex;align-items:center;gap:8px;padding:10px 12px}.form-submit-panel .el-affix--fixed .form-submit-panel-operation-inner[data-v-93bc9096]{background-color:var(--admin-core-body-color)}.form-submit-panel_bottom-center .form-submit-panel-operation-inner[data-v-93bc9096],.form-submit-panel_bottom-right .form-submit-panel-operation-inner[data-v-93bc9096]{border-top:1px solid var(--el-border-color-light);border-bottom-left-radius:var(--admin-core-radius, var(--el-border-radius-base));border-bottom-right-radius:var(--admin-core-radius, var(--el-border-radius-base))}.form-submit-panel_bottom-center .form-submit-panel-operation-inner[data-v-93bc9096]{justify-content:center}.form-submit-panel_bottom-right .form-submit-panel-operation-inner[data-v-93bc9096]{justify-content:flex-end}.form-submit-panel_top-right .form-submit-panel-operation[data-v-93bc9096]{order:0}.form-submit-panel_top-right .form-submit-panel-operation-inner[data-v-93bc9096]{justify-content:flex-end;border-bottom:1px solid var(--el-border-color-light);border-top-left-radius:var(--admin-core-radius, var(--el-border-radius-base));border-top-right-radius:var(--admin-core-radius, var(--el-border-radius-base))}.form-submit-panel_no-divider .form-submit-panel-operation-inner[data-v-93bc9096]{border:none;border-radius:0}.form-submit-panel_bare .form-submit-panel-operation-inner[data-v-93bc9096]{padding:0}.panel-edit-switch[data-v-65f056ab]{position:relative}.panel-edit-switch:hover .panel-edit-switch-edit-btn[data-v-65f056ab]{display:block}.panel-edit-switch-edit-btn[data-v-65f056ab]{position:absolute;top:0;right:0;z-index:1;display:none}.panel-edit-switch-actions[data-v-65f056ab]{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.panel-main-item-col:not(:last-of-type) .panel-main-item-col-wrap_card[data-v-9c14b584]{margin-bottom:var(--v5b714e11)}.form-search_show[data-v-4d4d2642]{margin-bottom:10px}.form-search .btn-box[data-v-4d4d2642]{display:flex;align-items:center;gap:8px;justify-content:flex-end}.form-search .btn-box-expand-icon[data-v-4d4d2642]{margin-right:2px}.form-verify-image[data-v-669b7ad9] .el-input__suffix-inner *{margin:0}.form-verify-image-suffix[data-v-669b7ad9]{position:absolute;height:100%;border-radius:var(--el-input-border-radius, var(--admin-core-radius, var(--el-border-radius-base)));top:50%;transform:translateY(-50%);overflow:hidden;cursor:pointer}.form-verify-image-suffix-main[data-v-669b7ad9]{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f4f4f4}.tabs-main-bar[data-v-3faa57f5]{position:relative;display:flex;align-items:center}.tabs-main-bar-item[data-v-3faa57f5]{border:none;background:transparent;cursor:pointer;color:var(--el-text-color-regular);transition:background .2s,color .2s,box-shadow .2s}.tabs-main-bar-indicator[data-v-3faa57f5]{position:absolute;left:0;background:var(--admin-core-primary-color);transition:transform .2s,width .2s}.tabs-main-bar--l1 .tabs-main-bar-item[data-v-3faa57f5]{font-size:16px}.tabs-main-bar--l2 .tabs-main-bar-item[data-v-3faa57f5]{font-size:14px}.tabs-main-bar--l3 .tabs-main-bar-item[data-v-3faa57f5],.tabs-main-bar--l4 .tabs-main-bar-item[data-v-3faa57f5]{font-size:12px}.tabs-main-bar--variant-card[data-v-3faa57f5]{position:relative;overflow:hidden;gap:2px}.tabs-main-bar--variant-card .tabs-main-bar-item[data-v-3faa57f5]{position:relative;padding:8px 20px;line-height:1.4;border:1px solid transparent;border-bottom:0;border-radius:6px 6px 0 0}.tabs-main-bar--variant-card .tabs-main-bar-item[data-v-3faa57f5]:hover:not(.tabs-main-bar-item_active){color:var(--admin-core-primary-color)}.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]{color:var(--admin-core-primary-color);border-color:var(--el-border-color-light)}.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]:before,.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]:after{content:"";position:absolute;bottom:0;width:100vw;height:1px;background:var(--el-border-color-light)}.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]:before{right:100%}.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]:after{left:100%}.tabs-main-bar--variant-indicator .tabs-main-bar-item[data-v-3faa57f5]{padding:8px 16px}.tabs-main-bar--variant-indicator .tabs-main-bar-item_active[data-v-3faa57f5]{color:var(--admin-core-primary-color)}.tabs-main-bar--variant-indicator .tabs-main-bar-indicator[data-v-3faa57f5]{bottom:0;height:2px}.tabs-main-bar--variant-indicator-compact .tabs-main-bar-item[data-v-3faa57f5]{padding:6px 10px}.tabs-main-bar--variant-indicator-compact .tabs-main-bar-item_active[data-v-3faa57f5]{color:var(--admin-core-primary-color)}.tabs-main-bar--variant-indicator-compact .tabs-main-bar-indicator[data-v-3faa57f5]{bottom:0;height:1px}.tabs-main-bar--variant-plain .tabs-main-bar-item[data-v-3faa57f5]{padding:4px 8px}.tabs-main-bar--variant-plain .tabs-main-bar-item_active[data-v-3faa57f5]{color:var(--admin-core-primary-color);font-weight:600}.app-aside[data-v-d07cb9ed]{transition-duration:.3s;transition-property:width;transition-timing-function:linear;box-shadow:var(--admin-core-shadow, var(--el-box-shadow));overflow-x:hidden;overflow-y:auto;z-index:0}.app-breadcrumb[data-v-9bbe0b05]{display:flex;align-items:center;justify-content:flex-start}.app-body[data-v-ae442089]{transition-duration:.3s;transition-property:padding;transition-timing-function:linear;min-height:100vh}.app-body-shim[data-v-ae442089]{width:100%;--app-viewport-max-height: var(--ae6fc168)}.app-footer[data-v-71b2892d]{transition-duration:.3s;transition-property:height;transition-timing-function:linear;overflow:hidden;width:100%;box-shadow:var(--admin-core-shadow, var(--el-box-shadow))}.app-footer-shim[data-v-71b2892d]{width:100%;height:100%;padding:0 20px}.app-header[data-v-ef6c4b9f]{transition-duration:.3s;transition-property:height;transition-timing-function:linear;overflow:hidden;box-shadow:var(--admin-core-shadow, var(--el-box-shadow));z-index:1}.app-header-module[data-v-ef6c4b9f]{display:flex;flex:1;height:100%;overflow-x:auto}.app-header-module-item[data-v-ef6c4b9f]{display:flex;justify-content:center;align-items:center;padding:0 20px;white-space:nowrap;height:100%}.app-header-module-item[data-v-ef6c4b9f]:hover,.app-header-module-item_active[data-v-ef6c4b9f]{color:var(--v1eee7516)}.app-header-module-item_active[data-v-ef6c4b9f]{position:relative}.app-header-module-item_active[data-v-ef6c4b9f]:before{content:"";position:absolute;left:50%;top:0;width:100%;height:3px;background-color:var(--v1eee7516);transform:translate(-50%)}.app-header-shim[data-v-ef6c4b9f]{width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 20px;font-size:18px;font-weight:700}.app-header-module-item__icon[data-v-ef6c4b9f]{margin-right:8px}.app-header-right[data-v-ef6c4b9f]{padding-left:80px;display:flex;align-items:center}.app-sidebar[data-v-1dee248d]{transition-duration:.3s;transition-property:width;transition-timing-function:linear;box-shadow:var(--admin-core-shadow, var(--el-box-shadow));overflow:visible;z-index:var(--v368510bd)}.app-sidebar-top[data-v-1dee248d]{position:absolute;left:0;right:0;top:0;overflow:hidden}.app-sidebar-bottom[data-v-1dee248d]{position:absolute;left:0;right:0;bottom:0;overflow:hidden}.app-sidebar-shim[data-v-1dee248d]{position:absolute;left:0;right:0;top:var(--v7b09fce5);bottom:var(--v1098f49b);overflow-x:hidden;overflow-y:auto;--el-menu-border-color: transparent;-webkit-user-select:none;user-select:none}.app-sidebar-toggle[data-v-1dee248d]{position:absolute;left:100%;top:50%;transform:translate(-50%,-50%);cursor:pointer;width:22px;height:22px;border-radius:50%;background-color:var(--cc02eed6);color:var(--v56d0884d);border:1px solid var(--v56d0884d);box-shadow:0 1px 2px #0000000f;display:flex;align-items:center;justify-content:center;font-size:12px;z-index:1;isolation:isolate;transition:color .3s,border-color .3s,box-shadow .3s}.app-sidebar-toggle[data-v-1dee248d]:before{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:50%;background-color:var(--v56d0884d);opacity:.18;z-index:-1;pointer-events:none;transition:opacity .3s,inset .3s}.app-sidebar-toggle[data-v-1dee248d]:active,.app-sidebar-toggle[data-v-1dee248d]:focus,.app-sidebar-toggle[data-v-1dee248d]:hover{box-shadow:0 2px 6px #0000001f}.app-sidebar-toggle[data-v-1dee248d]:active:before,.app-sidebar-toggle[data-v-1dee248d]:focus:before,.app-sidebar-toggle[data-v-1dee248d]:hover:before{opacity:.32;top:-5px;right:-5px;bottom:-5px;left:-5px}.app-sidebar-toggle-icon[data-v-1dee248d]{transition:transform .3s}.app-theme[data-v-89d81e34]{display:inline-flex;align-items:center;gap:12px;margin-right:12px}.app-theme__style-select[data-v-89d81e34]{width:120px}.app-layout[data-v-646eac1d]{position:relative}.app-layout_noLogin[data-v-646eac1d] .app-body,.app-layout_noLogin[data-v-646eac1d] .app-sidebar,.app-layout_noLogin[data-v-646eac1d] .app-header,.app-layout_noLogin[data-v-646eac1d] .app-footer{transition:none!important}.app-page-shim[data-v-fda19616]{--app-viewport-max-height: var(--v54888f0e)}[data-v-64f355fe] .auto-refresh-label{display:flex;font-size:13px;color:var(--el-text-color-regular);margin-bottom:8px}.auto-refresh-group-icon--rotating[data-v-e608ff06]{animation:auto-refresh-rotating-e608ff06 1s linear infinite}@keyframes auto-refresh-rotating-e608ff06{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.form-item-nest-form[data-v-12b77b02],.form-item-nest-form-list[data-v-9fa02cbe]{padding:16px;border:1px solid var(--admin-core-border-color);border-radius:8px;box-shadow:var(--admin-core-shadow, var(--el-box-shadow-lighter))}.form-item-nest-form-list-row[data-v-9fa02cbe]{display:flex;align-items:flex-start;gap:8px;margin-bottom:12px}.form-item-nest-form-list-row-body[data-v-9fa02cbe]{flex:1;min-width:0;padding:12px 16px;border:1px solid var(--el-border-color-lighter);border-radius:6px;box-shadow:var(--el-box-shadow-lighter)}.table-toolbar[data-v-6f2937e1]{display:flex;justify-content:space-between;align-items:center;padding-bottom:8px;gap:20px}.table-toolbar-left[data-v-6f2937e1],.table-toolbar-right[data-v-6f2937e1]{display:flex;align-items:center;gap:10px}.table-toolbar-switch-view[data-v-6f2937e1]{--el-switch-off-color: var(--admin-core-primary-color);--el-switch-on-color: var(--admin-core-warning-color)}.data-list-view[data-v-708af83f]{width:100%}.data-list-view-empty[data-v-708af83f]{display:flex;justify-content:center;align-items:center;width:100%;min-height:60px}.table-main-pagination[data-v-132febbc]{margin-top:10px;display:flex;justify-content:flex-end}.list-page[data-v-fc41e3d4]{min-height:var(--c6e708aa)}.list-page-header[data-v-fc41e3d4],.list-page-operation[data-v-fc41e3d4]{margin-bottom:10px}.list-page[data-v-fc41e3d4] .el-loading-mask{left:-10px;top:-10px;right:-10px;bottom:-10px}.panel-item-nest-form-actions[data-v-3af1d77a]{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
|
|
1
|
+
.confirm-modal[data-v-647fb7fd] .el-dialog__header{margin-right:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.confirm-modal__title[data-v-647fb7fd]{font-size:16px;font-weight:600;line-height:24px;color:var(--el-text-color-primary);text-align:left}.confirm-modal[data-v-647fb7fd] .el-dialog__body{padding:20px}.confirm-modal__content[data-v-647fb7fd]{overflow-x:hidden;overflow-y:auto;max-height:calc(100vh - 200px);font-size:14px;line-height:22px;color:var(--el-text-color-regular);text-align:left;word-break:break-word}.confirm-modal[data-v-647fb7fd] .el-dialog__footer{padding:12px 20px;border-top:1px solid var(--el-border-color-lighter)}.confirm-modal__footer[data-v-647fb7fd]{display:flex;justify-content:flex-end;align-items:center;gap:8px}.confirm-modal__footer[data-v-647fb7fd] .el-button{min-width:72px}.confirm-modal__footer[reverse=true][data-v-647fb7fd]{flex-direction:row-reverse}.action-confirm__title[data-v-88119b35]{font-weight:600;margin-bottom:6px}.action-confirm__content[data-v-88119b35]{margin-bottom:12px;color:var(--el-text-color-regular)}.action-confirm__actions[data-v-88119b35]{display:flex;justify-content:flex-end;gap:8px}.form-item-tip[data-v-8b508d64]{text-align:left;line-height:1.5;font-size:12px}.form-item-label-hide[data-v-8b508d64] .el-form-item__label-wrap{display:none}[data-v-83b1b718] .el-row>.el-col>.el-form-item{margin-bottom:18px}.form-submit-panel[data-v-93bc9096]{display:flex;flex-direction:column}.form-submit-panel .form-submit-panel-form[data-v-93bc9096]{order:1}.form-submit-panel .form-submit-panel-operation[data-v-93bc9096]{order:2}.form-submit-panel .form-submit-panel-operation-inner[data-v-93bc9096]{display:flex;align-items:center;gap:8px;padding:10px 12px}.form-submit-panel .el-affix--fixed .form-submit-panel-operation-inner[data-v-93bc9096]{background-color:var(--admin-core-body-color)}.form-submit-panel_bottom-center .form-submit-panel-operation-inner[data-v-93bc9096],.form-submit-panel_bottom-right .form-submit-panel-operation-inner[data-v-93bc9096]{border-top:1px solid var(--el-border-color-light);border-bottom-left-radius:var(--admin-core-radius, var(--el-border-radius-base));border-bottom-right-radius:var(--admin-core-radius, var(--el-border-radius-base))}.form-submit-panel_bottom-center .form-submit-panel-operation-inner[data-v-93bc9096]{justify-content:center}.form-submit-panel_bottom-right .form-submit-panel-operation-inner[data-v-93bc9096]{justify-content:flex-end}.form-submit-panel_top-right .form-submit-panel-operation[data-v-93bc9096]{order:0}.form-submit-panel_top-right .form-submit-panel-operation-inner[data-v-93bc9096]{justify-content:flex-end;border-bottom:1px solid var(--el-border-color-light);border-top-left-radius:var(--admin-core-radius, var(--el-border-radius-base));border-top-right-radius:var(--admin-core-radius, var(--el-border-radius-base))}.form-submit-panel_no-divider .form-submit-panel-operation-inner[data-v-93bc9096]{border:none;border-radius:0}.form-submit-panel_bare .form-submit-panel-operation-inner[data-v-93bc9096]{padding:0}.panel-edit-switch[data-v-65f056ab]{position:relative}.panel-edit-switch:hover .panel-edit-switch-edit-btn[data-v-65f056ab]{display:block}.panel-edit-switch-edit-btn[data-v-65f056ab]{position:absolute;top:0;right:0;z-index:1;display:none}.panel-edit-switch-actions[data-v-65f056ab]{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.panel-main-item-col:not(:last-of-type) .panel-main-item-col-wrap_card[data-v-0835965e]{margin-bottom:var(--e1f69828)}.form-search_show[data-v-4d4d2642]{margin-bottom:10px}.form-search .btn-box[data-v-4d4d2642]{display:flex;align-items:center;gap:8px;justify-content:flex-end}.form-search .btn-box-expand-icon[data-v-4d4d2642]{margin-right:2px}.form-verify-image[data-v-669b7ad9] .el-input__suffix-inner *{margin:0}.form-verify-image-suffix[data-v-669b7ad9]{position:absolute;height:100%;border-radius:var(--el-input-border-radius, var(--admin-core-radius, var(--el-border-radius-base)));top:50%;transform:translateY(-50%);overflow:hidden;cursor:pointer}.form-verify-image-suffix-main[data-v-669b7ad9]{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f4f4f4}.tabs-main-bar[data-v-3faa57f5]{position:relative;display:flex;align-items:center}.tabs-main-bar-item[data-v-3faa57f5]{border:none;background:transparent;cursor:pointer;color:var(--el-text-color-regular);transition:background .2s,color .2s,box-shadow .2s}.tabs-main-bar-indicator[data-v-3faa57f5]{position:absolute;left:0;background:var(--admin-core-primary-color);transition:transform .2s,width .2s}.tabs-main-bar--l1 .tabs-main-bar-item[data-v-3faa57f5]{font-size:16px}.tabs-main-bar--l2 .tabs-main-bar-item[data-v-3faa57f5]{font-size:14px}.tabs-main-bar--l3 .tabs-main-bar-item[data-v-3faa57f5],.tabs-main-bar--l4 .tabs-main-bar-item[data-v-3faa57f5]{font-size:12px}.tabs-main-bar--variant-card[data-v-3faa57f5]{position:relative;overflow:hidden;gap:2px}.tabs-main-bar--variant-card .tabs-main-bar-item[data-v-3faa57f5]{position:relative;padding:8px 20px;line-height:1.4;border:1px solid transparent;border-bottom:0;border-radius:6px 6px 0 0}.tabs-main-bar--variant-card .tabs-main-bar-item[data-v-3faa57f5]:hover:not(.tabs-main-bar-item_active){color:var(--admin-core-primary-color)}.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]{color:var(--admin-core-primary-color);border-color:var(--el-border-color-light)}.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]:before,.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]:after{content:"";position:absolute;bottom:0;width:100vw;height:1px;background:var(--el-border-color-light)}.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]:before{right:100%}.tabs-main-bar--variant-card .tabs-main-bar-item_active[data-v-3faa57f5]:after{left:100%}.tabs-main-bar--variant-indicator .tabs-main-bar-item[data-v-3faa57f5]{padding:8px 16px}.tabs-main-bar--variant-indicator .tabs-main-bar-item_active[data-v-3faa57f5]{color:var(--admin-core-primary-color)}.tabs-main-bar--variant-indicator .tabs-main-bar-indicator[data-v-3faa57f5]{bottom:0;height:2px}.tabs-main-bar--variant-indicator-compact .tabs-main-bar-item[data-v-3faa57f5]{padding:6px 10px}.tabs-main-bar--variant-indicator-compact .tabs-main-bar-item_active[data-v-3faa57f5]{color:var(--admin-core-primary-color)}.tabs-main-bar--variant-indicator-compact .tabs-main-bar-indicator[data-v-3faa57f5]{bottom:0;height:1px}.tabs-main-bar--variant-plain .tabs-main-bar-item[data-v-3faa57f5]{padding:4px 8px}.tabs-main-bar--variant-plain .tabs-main-bar-item_active[data-v-3faa57f5]{color:var(--admin-core-primary-color);font-weight:600}.app-aside[data-v-d07cb9ed]{transition-duration:.3s;transition-property:width;transition-timing-function:linear;box-shadow:var(--admin-core-shadow, var(--el-box-shadow));overflow-x:hidden;overflow-y:auto;z-index:0}.app-breadcrumb[data-v-9bbe0b05]{display:flex;align-items:center;justify-content:flex-start}.app-body[data-v-ae442089]{transition-duration:.3s;transition-property:padding;transition-timing-function:linear;min-height:100vh}.app-body-shim[data-v-ae442089]{width:100%;--app-viewport-max-height: var(--ae6fc168)}.app-footer[data-v-71b2892d]{transition-duration:.3s;transition-property:height;transition-timing-function:linear;overflow:hidden;width:100%;box-shadow:var(--admin-core-shadow, var(--el-box-shadow))}.app-footer-shim[data-v-71b2892d]{width:100%;height:100%;padding:0 20px}.app-header[data-v-ef6c4b9f]{transition-duration:.3s;transition-property:height;transition-timing-function:linear;overflow:hidden;box-shadow:var(--admin-core-shadow, var(--el-box-shadow));z-index:1}.app-header-module[data-v-ef6c4b9f]{display:flex;flex:1;height:100%;overflow-x:auto}.app-header-module-item[data-v-ef6c4b9f]{display:flex;justify-content:center;align-items:center;padding:0 20px;white-space:nowrap;height:100%}.app-header-module-item[data-v-ef6c4b9f]:hover,.app-header-module-item_active[data-v-ef6c4b9f]{color:var(--v1eee7516)}.app-header-module-item_active[data-v-ef6c4b9f]{position:relative}.app-header-module-item_active[data-v-ef6c4b9f]:before{content:"";position:absolute;left:50%;top:0;width:100%;height:3px;background-color:var(--v1eee7516);transform:translate(-50%)}.app-header-shim[data-v-ef6c4b9f]{width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 20px;font-size:18px;font-weight:700}.app-header-module-item__icon[data-v-ef6c4b9f]{margin-right:8px}.app-header-right[data-v-ef6c4b9f]{padding-left:80px;display:flex;align-items:center}.app-sidebar[data-v-1dee248d]{transition-duration:.3s;transition-property:width;transition-timing-function:linear;box-shadow:var(--admin-core-shadow, var(--el-box-shadow));overflow:visible;z-index:var(--v368510bd)}.app-sidebar-top[data-v-1dee248d]{position:absolute;left:0;right:0;top:0;overflow:hidden}.app-sidebar-bottom[data-v-1dee248d]{position:absolute;left:0;right:0;bottom:0;overflow:hidden}.app-sidebar-shim[data-v-1dee248d]{position:absolute;left:0;right:0;top:var(--v7b09fce5);bottom:var(--v1098f49b);overflow-x:hidden;overflow-y:auto;--el-menu-border-color: transparent;-webkit-user-select:none;user-select:none}.app-sidebar-toggle[data-v-1dee248d]{position:absolute;left:100%;top:50%;transform:translate(-50%,-50%);cursor:pointer;width:22px;height:22px;border-radius:50%;background-color:var(--cc02eed6);color:var(--v56d0884d);border:1px solid var(--v56d0884d);box-shadow:0 1px 2px #0000000f;display:flex;align-items:center;justify-content:center;font-size:12px;z-index:1;isolation:isolate;transition:color .3s,border-color .3s,box-shadow .3s}.app-sidebar-toggle[data-v-1dee248d]:before{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:50%;background-color:var(--v56d0884d);opacity:.18;z-index:-1;pointer-events:none;transition:opacity .3s,inset .3s}.app-sidebar-toggle[data-v-1dee248d]:active,.app-sidebar-toggle[data-v-1dee248d]:focus,.app-sidebar-toggle[data-v-1dee248d]:hover{box-shadow:0 2px 6px #0000001f}.app-sidebar-toggle[data-v-1dee248d]:active:before,.app-sidebar-toggle[data-v-1dee248d]:focus:before,.app-sidebar-toggle[data-v-1dee248d]:hover:before{opacity:.32;top:-5px;right:-5px;bottom:-5px;left:-5px}.app-sidebar-toggle-icon[data-v-1dee248d]{transition:transform .3s}.app-theme[data-v-e4f0fe3b]{display:inline-flex;align-items:center;gap:12px;margin-right:12px}.app-theme__style-select[data-v-e4f0fe3b]{width:120px}.app-layout[data-v-452f511b]{position:relative}.app-layout_noLogin[data-v-452f511b] .app-body,.app-layout_noLogin[data-v-452f511b] .app-sidebar,.app-layout_noLogin[data-v-452f511b] .app-header,.app-layout_noLogin[data-v-452f511b] .app-footer{transition:none!important}.app-page-shim[data-v-fda19616]{--app-viewport-max-height: var(--v54888f0e)}[data-v-64f355fe] .auto-refresh-label{display:flex;font-size:13px;color:var(--el-text-color-regular);margin-bottom:8px}.auto-refresh-group-icon--rotating[data-v-e608ff06]{animation:auto-refresh-rotating-e608ff06 1s linear infinite}@keyframes auto-refresh-rotating-e608ff06{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.form-item-nest-form[data-v-12b77b02],.form-item-nest-form-list[data-v-9fa02cbe]{padding:16px;border:1px solid var(--admin-core-border-color);border-radius:8px;box-shadow:var(--admin-core-shadow, var(--el-box-shadow-lighter))}.form-item-nest-form-list-row[data-v-9fa02cbe]{display:flex;align-items:flex-start;gap:8px;margin-bottom:12px}.form-item-nest-form-list-row-body[data-v-9fa02cbe]{flex:1;min-width:0;padding:12px 16px;border:1px solid var(--el-border-color-lighter);border-radius:6px;box-shadow:var(--el-box-shadow-lighter)}.table-toolbar[data-v-6f2937e1]{display:flex;justify-content:space-between;align-items:center;padding-bottom:8px;gap:20px}.table-toolbar-left[data-v-6f2937e1],.table-toolbar-right[data-v-6f2937e1]{display:flex;align-items:center;gap:10px}.table-toolbar-switch-view[data-v-6f2937e1]{--el-switch-off-color: var(--admin-core-primary-color);--el-switch-on-color: var(--admin-core-warning-color)}.data-list-view[data-v-708af83f]{width:100%}.data-list-view-empty[data-v-708af83f]{display:flex;justify-content:center;align-items:center;width:100%;min-height:60px}.table-main-pagination[data-v-e8584319]{margin-top:10px;display:flex;justify-content:flex-end}.list-page[data-v-0e94ce51]{min-height:var(--v3390ee15)}.list-page-header[data-v-0e94ce51],.list-page-operation[data-v-0e94ce51]{margin-bottom:10px}.list-page[data-v-0e94ce51] .el-loading-mask{left:-10px;top:-10px;right:-10px;bottom:-10px}.panel-item-nest-form-actions[data-v-3af1d77a]{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
|
package/es/utils/theme-scale.mjs
CHANGED
|
@@ -1,37 +1,43 @@
|
|
|
1
|
-
const
|
|
1
|
+
const c = (s) => {
|
|
2
2
|
const t = s.trim().replace(/^#/, "");
|
|
3
3
|
if (t.length === 3) {
|
|
4
|
-
const n = parseInt(t[0] + t[0], 16),
|
|
5
|
-
return [n,
|
|
4
|
+
const n = parseInt(t[0] + t[0], 16), e = parseInt(t[1] + t[1], 16), r = parseInt(t[2] + t[2], 16);
|
|
5
|
+
return [n, e, r].some(Number.isNaN) ? null : [n, e, r];
|
|
6
6
|
}
|
|
7
7
|
if (t.length === 6) {
|
|
8
|
-
const n = parseInt(t.slice(0, 2), 16),
|
|
9
|
-
return [n,
|
|
8
|
+
const n = parseInt(t.slice(0, 2), 16), e = parseInt(t.slice(2, 4), 16), r = parseInt(t.slice(4, 6), 16);
|
|
9
|
+
return [n, e, r].some(Number.isNaN) ? null : [n, e, r];
|
|
10
10
|
}
|
|
11
11
|
return null;
|
|
12
|
-
}, o = (s, t, n) => {
|
|
13
|
-
const r = (e) => Math.min(255, Math.max(0, Math.round(e))).toString(16).padStart(2, "0");
|
|
14
|
-
return `#${r(s)}${r(t)}${r(n)}`;
|
|
15
12
|
}, i = (s, t, n) => {
|
|
16
|
-
const
|
|
17
|
-
return
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
const e = (r) => Math.min(255, Math.max(0, Math.round(r))).toString(16).padStart(2, "0");
|
|
14
|
+
return `#${e(s)}${e(t)}${e(n)}`;
|
|
15
|
+
}, o = (s, t, n) => {
|
|
16
|
+
const e = c(s), r = c(t);
|
|
17
|
+
return !e || !r ? t : i(
|
|
18
|
+
e[0] * n + r[0] * (1 - n),
|
|
19
|
+
e[1] * n + r[1] * (1 - n),
|
|
20
|
+
e[2] * n + r[2] * (1 - n)
|
|
21
21
|
);
|
|
22
|
-
},
|
|
23
|
-
const n =
|
|
22
|
+
}, l = (s, t) => {
|
|
23
|
+
const n = c(s);
|
|
24
|
+
if (!n) return s;
|
|
25
|
+
const e = Math.min(1, Math.max(0, t));
|
|
26
|
+
return `rgba(${n[0]}, ${n[1]}, ${n[2]}, ${e})`;
|
|
27
|
+
}, h = (s, t) => {
|
|
28
|
+
const n = t === "light" ? "#ffffff" : "#141414", e = t === "light" ? "#000000" : "#ffffff", r = (a) => o(n, s, a / 10);
|
|
24
29
|
return {
|
|
25
30
|
base: s,
|
|
26
|
-
"light-3":
|
|
27
|
-
"light-5":
|
|
28
|
-
"light-7":
|
|
29
|
-
"light-8":
|
|
30
|
-
"light-9":
|
|
31
|
-
"dark-2":
|
|
31
|
+
"light-3": r(3),
|
|
32
|
+
"light-5": r(5),
|
|
33
|
+
"light-7": r(7),
|
|
34
|
+
"light-8": r(8),
|
|
35
|
+
"light-9": r(9),
|
|
36
|
+
"dark-2": o(e, s, 0.2)
|
|
32
37
|
};
|
|
33
38
|
};
|
|
34
39
|
export {
|
|
35
|
-
|
|
36
|
-
|
|
40
|
+
h as themeScaleDerive,
|
|
41
|
+
o as themeScaleMix,
|
|
42
|
+
l as themeScaleToRgba
|
|
37
43
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@done-coding/admin-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "后台管理核心",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "lib/index.cjs",
|
|
@@ -27,12 +27,13 @@
|
|
|
27
27
|
"dev": "vite build -w -m hotBuild",
|
|
28
28
|
"prehotBuild": "dc-inject",
|
|
29
29
|
"hotBuild": "vite build -w",
|
|
30
|
-
"prebuild": "dc-inject",
|
|
30
|
+
"prebuild": "rimraf types && dc-inject",
|
|
31
31
|
"build": "vue-tsc && vite build",
|
|
32
32
|
"build:test": "pnpm run build",
|
|
33
33
|
"prepack": "pnpm build",
|
|
34
34
|
"test": "vitest",
|
|
35
|
-
"coverage": "vitest run --coverage"
|
|
35
|
+
"coverage": "vitest run --coverage",
|
|
36
|
+
"prebuild:test": "rimraf types"
|
|
36
37
|
},
|
|
37
38
|
"repository": {
|
|
38
39
|
"type": "git",
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"@vue/test-utils": "^2.4.10",
|
|
60
61
|
"jsdom": "^29.1.0",
|
|
61
62
|
"less": "^4.2.0",
|
|
63
|
+
"rimraf": "^5.0.1",
|
|
62
64
|
"typescript": "^5.2.2",
|
|
63
65
|
"vite": "^5.2.0",
|
|
64
66
|
"vite-plugin-dts": "^4.5.4",
|
|
@@ -79,5 +81,5 @@
|
|
|
79
81
|
"node": ">=18.0.0",
|
|
80
82
|
"pnpm": ">=9.0.0"
|
|
81
83
|
},
|
|
82
|
-
"gitHead": "
|
|
84
|
+
"gitHead": "de49e7d3580a081b7f865fc1a79b76b77221ab99"
|
|
83
85
|
}
|
package/types/bridge/index.d.ts
CHANGED
|
@@ -4,11 +4,11 @@ import { createUseState } from './state';
|
|
|
4
4
|
import { createGenerateRouteMetaRawTree } from './route';
|
|
5
5
|
import { UpdatableConfigKey, UpdatableConfigMap } from './config-hook';
|
|
6
6
|
import { AdminBridgePluginLike } from './plugin';
|
|
7
|
-
import { AdminThemeModule, AdminThemeMode, BridgeThemeLayoutState } from './theme';
|
|
7
|
+
import { AdminThemeModule, AdminThemeMode, AdminThemeDensity, AdminThemeMotion, BridgeThemeLayoutState } from './theme';
|
|
8
8
|
export { createUseState, type UseStateOptions } from './state';
|
|
9
9
|
export { createGenerateRouteMetaRawTree, type RouteMetaDefaultConfig, } from './route';
|
|
10
10
|
export { createStorageWithNamespace } from './storage';
|
|
11
|
-
export type { AdminThemeEntry, AdminThemeLifecycleContext, AdminThemeLifecycleHooks, AdminConfigDescription, AdminThemeModule, AdminThemeMode, AdminThemePresetLayout, BridgeThemeLayoutState, BridgeThemeLayoutBaseline, BridgeThemeHook, } from './theme';
|
|
11
|
+
export type { AdminThemeEntry, AdminThemeLifecycleContext, AdminThemeLifecycleHooks, AdminConfigDescription, AdminThemeModule, AdminThemeMode, AdminThemeDensity, AdminThemeMotion, ElSize, AdminThemeComponentDefaults, AdminThemePresetLayout, BridgeThemeLayoutState, BridgeThemeLayoutBaseline, BridgeThemeHook, } from './theme';
|
|
12
12
|
/**
|
|
13
13
|
* 认证桥接无状态纯工厂。
|
|
14
14
|
*
|
|
@@ -453,6 +453,21 @@ export interface AdminBridgeInitOptions<UserInfo = unknown> {
|
|
|
453
453
|
APP_ROUTER_PATHS_CONFIG: AppRouterPathsConfig;
|
|
454
454
|
/** 应用主题配置(light / dark 双主题) */
|
|
455
455
|
APP_THEME_CONFIG: AppThemeConfig;
|
|
456
|
+
/**
|
|
457
|
+
* 明暗模式默认值(**仅无缓存时生效**,可选);缺省 `"light"`。
|
|
458
|
+
*
|
|
459
|
+
* 读持久化命中 themeMode → 缓存优先;无缓存才回落本值。设 `"dark"` =「首次进入默认暗色」、
|
|
460
|
+
* `"system"` =「默认跟随系统」。透传给 theme cache hook 的 `defaultMode`。
|
|
461
|
+
*/
|
|
462
|
+
defaultThemeMode?: AdminThemeMode;
|
|
463
|
+
/**
|
|
464
|
+
* 是否显示内置「风格切换下拉」(AppTheme 的 ElSelect);缺省 `true`。
|
|
465
|
+
*
|
|
466
|
+
* false 时仅隐藏风格下拉,**亮/暗/跟随系统三态切换恒显、不受此控**。风格下拉本就
|
|
467
|
+
* 仅在注册多风格(list.length>1)时出现,此开关用于「多风格已注册但不想让用户切风格」。
|
|
468
|
+
* 经 `bridge.showThemeStyleSwitcher` readonly 暴露,AppTheme 直读 `v-if` 自控。
|
|
469
|
+
*/
|
|
470
|
+
showThemeStyleSwitcher?: boolean;
|
|
456
471
|
/** app 嵌套路由树(必传,#4e additive;createUserStore 权限树依赖 children 嵌套,[MUST NOT] 传扁平化数据) */
|
|
457
472
|
routes: RouteRecordRaw[];
|
|
458
473
|
/** 用户信息空保底工厂(v3 终锁 Δ0b;恒返非空业务字段默认值对象,createUserStore useState 经此取初值,core 不锁业务 shape) */
|
|
@@ -551,6 +566,13 @@ export interface AdminBridge<UserInfo = unknown, LoginParams = unknown> {
|
|
|
551
566
|
* [MUST NOT] 解构/快照(⚠️ 切换 preset 后定格)。
|
|
552
567
|
*/
|
|
553
568
|
readonly themeLayout: DeepReadonly<Ref<BridgeThemeLayoutState>>;
|
|
569
|
+
/**
|
|
570
|
+
* 当前密度档 / 动效档(响应式只读真相源;明暗无关)。
|
|
571
|
+
* `useAdminThemeApply` watch 此重写节奏 `<style>`;`theme.setStyle` 按 preset 复位、
|
|
572
|
+
* `theme.setDensity`/`setMotion` 直接改。[MUST NOT] 解构/快照。
|
|
573
|
+
*/
|
|
574
|
+
readonly themeDensity: DeepReadonly<Ref<AdminThemeDensity>>;
|
|
575
|
+
readonly themeMotion: DeepReadonly<Ref<AdminThemeMotion>>;
|
|
554
576
|
/**
|
|
555
577
|
* 当前生效的 JS 主题色(输出 B:JS 色值直给,与挂值 composable 的 cssvar 输出 A 对称)。
|
|
556
578
|
*
|
|
@@ -562,6 +584,8 @@ export interface AdminBridge<UserInfo = unknown, LoginParams = unknown> {
|
|
|
562
584
|
* [MUST NOT] 解构/快照(⚠️ 切换风格/明暗后定格)。
|
|
563
585
|
*/
|
|
564
586
|
readonly themeColors: DeepReadonly<Ref<AppThemeColor>>;
|
|
587
|
+
/** 是否显示内置「风格切换下拉」(AppTheme ElSelect);init 静态值,缺省 true。亮暗切换恒显、不受此控。 */
|
|
588
|
+
readonly showThemeStyleSwitcher: boolean;
|
|
565
589
|
/** 用户信息字段访问器集(业务注入;createUserStore 经 bridge.userInfoAccess.<字段>.get/set 读写,第一宪法 core 零字段耦合) */
|
|
566
590
|
readonly userInfoAccess: UserInfoAccess<UserInfo>;
|
|
567
591
|
/**
|
|
@@ -7,4 +7,4 @@ import { BridgeThemeHook, BridgeThemeInit } from './types';
|
|
|
7
7
|
* `themeStyle` 走「desiredStyle 命中再 apply」时序(插件后注册风格亦能恢复)。
|
|
8
8
|
*/
|
|
9
9
|
export declare function createBridgeThemeHook(init: BridgeThemeInit): BridgeThemeHook;
|
|
10
|
-
export type { AdminThemePresetLayout, AdminConfigDescription, AdminThemeLifecycleContext, AdminThemeLifecycleHooks, AdminThemeEntry, AdminThemeMode, AdminThemeModule, BridgeThemeLayoutState, BridgeThemeHook, BridgeThemeLayoutBaseline, BridgeThemeInit, } from './types';
|
|
10
|
+
export type { AdminThemePresetLayout, AdminConfigDescription, AdminThemeLifecycleContext, AdminThemeLifecycleHooks, AdminThemeEntry, AdminThemeMode, AdminThemeModule, AdminThemeDensity, AdminThemeMotion, ElSize, AdminThemeComponentDefaults, BridgeThemeLayoutState, BridgeThemeHook, BridgeThemeLayoutBaseline, BridgeThemeInit, } from './types';
|
|
@@ -140,6 +140,62 @@ export interface AdminThemeEntry extends AdminThemeLifecycleHooks {
|
|
|
140
140
|
* 见 {@link AdminThemePresetLayout}。
|
|
141
141
|
*/
|
|
142
142
|
layout?: AdminThemePresetLayout;
|
|
143
|
+
/**
|
|
144
|
+
* 密度档(节奏维度);缺省 → 切到该 preset 复位为 `'cozy'`。
|
|
145
|
+
* 见 {@link AdminThemeDensity}。setStyle 时复位 + 应用(同 layout「基线复位 + 叠加」语义)。
|
|
146
|
+
*/
|
|
147
|
+
density?: AdminThemeDensity;
|
|
148
|
+
/**
|
|
149
|
+
* 动效档(节奏维度);缺省 → 切到该 preset 复位为 `'standard'`。
|
|
150
|
+
* 见 {@link AdminThemeMotion}。
|
|
151
|
+
*/
|
|
152
|
+
motion?: AdminThemeMotion;
|
|
153
|
+
/**
|
|
154
|
+
* 逐族 EP size 覆盖(**期二消费**,本期仅冻结数据形为焊缝);缺省不覆盖、走 density 档默认。
|
|
155
|
+
* 仅声明式 size/border/stripe,[MUST NOT] 收行为(design §9 表现 vs 行为边界)。
|
|
156
|
+
* 见 {@link AdminThemeComponentDefaults}。
|
|
157
|
+
*/
|
|
158
|
+
componentDefaults?: AdminThemeComponentDefaults;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* element-plus 组件尺寸档(透传给一等公民 size prop)。
|
|
162
|
+
*/
|
|
163
|
+
export type ElSize = "large" | "default" | "small";
|
|
164
|
+
/**
|
|
165
|
+
* 密度档(persona 节奏维度):紧凑 / 适中 / 舒展。
|
|
166
|
+
* 整体平移全局留白 + 控件高 + 字号(取值见 design §2.1)。明暗无关。
|
|
167
|
+
*/
|
|
168
|
+
export type AdminThemeDensity = "compact" | "cozy" | "comfortable";
|
|
169
|
+
/**
|
|
170
|
+
* 动效档(persona 节奏维度):急促 / 标准 / 舒缓。
|
|
171
|
+
* 整体换挡全局过渡时长 + 缓动(取值见 design §2.2)。reduced-motion 无条件压过。
|
|
172
|
+
*/
|
|
173
|
+
export type AdminThemeMotion = "snappy" | "standard" | "calm";
|
|
174
|
+
/**
|
|
175
|
+
* 逐族 EP size 覆盖(componentDefaults,**期二真例外补丁**;本期仅冻结类型为焊缝)。
|
|
176
|
+
*
|
|
177
|
+
* 仅声明式 size 枚举 + table 的 border/stripe,[MUST NOT] 收任何行为 / handler /
|
|
178
|
+
* validator / 数据流(design §9 表现 vs 行为边界判据:persona 永不拥有行为)。
|
|
179
|
+
*/
|
|
180
|
+
export interface AdminThemeComponentDefaults {
|
|
181
|
+
/** 表格族默认(size / 是否边框 / 是否斑马纹) */
|
|
182
|
+
table?: {
|
|
183
|
+
size?: ElSize;
|
|
184
|
+
border?: boolean;
|
|
185
|
+
stripe?: boolean;
|
|
186
|
+
};
|
|
187
|
+
/** 表单族默认(size;labelPosition 任务驱动、[MUST NOT] 入此) */
|
|
188
|
+
form?: {
|
|
189
|
+
size?: ElSize;
|
|
190
|
+
};
|
|
191
|
+
/** 弹窗族默认(size 档→ width 由组件内映射) */
|
|
192
|
+
modal?: {
|
|
193
|
+
size?: ElSize;
|
|
194
|
+
};
|
|
195
|
+
/** 操作按钮族默认(size) */
|
|
196
|
+
actionBtn?: {
|
|
197
|
+
size?: ElSize;
|
|
198
|
+
};
|
|
143
199
|
}
|
|
144
200
|
/**
|
|
145
201
|
* 主题明暗模式三态:亮 / 暗 / 跟随系统。
|
|
@@ -170,6 +226,13 @@ export interface AdminThemeModule {
|
|
|
170
226
|
* 新代码 [SHOULD] 用 {@link AdminThemeModule.setMode}(支持 `system` 第三态)。
|
|
171
227
|
*/
|
|
172
228
|
setDark: (isDark: boolean) => void;
|
|
229
|
+
/**
|
|
230
|
+
* 直接设密度档(独立于风格切换;供 UI 偏好 / demo 切换器)。
|
|
231
|
+
* 注:`setStyle` 会按目标 preset 的 density 复位,故风格切换后手设的密度会被覆盖(同 layout 语义)。
|
|
232
|
+
*/
|
|
233
|
+
setDensity: (density: AdminThemeDensity) => void;
|
|
234
|
+
/** 直接设动效档(独立于风格切换;语义同 {@link setDensity})。 */
|
|
235
|
+
setMotion: (motion: AdminThemeMotion) => void;
|
|
173
236
|
/** 响应式风格名列表(只读,供 `AppTheme.vue` 下拉;`length>1` 才显示选择)。 */
|
|
174
237
|
list: DeepReadonly<Ref<string[]>>;
|
|
175
238
|
/** 取风格展示名(`add` 注册的 label;缺省回退 name 自身)。 */
|
|
@@ -209,6 +272,13 @@ export interface BridgeThemeHook {
|
|
|
209
272
|
* 尺寸 / 套框纯数据维度经 setStyle 灌 bridge config,不在此重复。
|
|
210
273
|
*/
|
|
211
274
|
themeLayout: DeepReadonly<Ref<BridgeThemeLayoutState>>;
|
|
275
|
+
/**
|
|
276
|
+
* 当前密度档(响应式只读真相源);`useAdminThemeApply` watch 此重写节奏 `<style>`。
|
|
277
|
+
* setStyle 按 preset.density 复位(缺省 `'cozy'`),或 `setDensity` 直接改。
|
|
278
|
+
*/
|
|
279
|
+
themeDensity: DeepReadonly<Ref<AdminThemeDensity>>;
|
|
280
|
+
/** 当前动效档(响应式只读真相源);语义同 {@link themeDensity}(缺省 `'standard'`)。 */
|
|
281
|
+
themeMotion: DeepReadonly<Ref<AdminThemeMotion>>;
|
|
212
282
|
}
|
|
213
283
|
/**
|
|
214
284
|
* 六组布局 config 的 init 基线快照(`setStyle` 复位 + 叠加用)。
|
|
@@ -255,4 +325,12 @@ export interface BridgeThemeInit {
|
|
|
255
325
|
storage: StorageLike;
|
|
256
326
|
/** 持久化 key(命名空间已由 storage 加前缀);缺省 `"admin-core-theme"` */
|
|
257
327
|
storageKey?: string;
|
|
328
|
+
/**
|
|
329
|
+
* 明暗模式默认值(**仅无缓存时生效**);缺省 `"light"`。
|
|
330
|
+
*
|
|
331
|
+
* 读持久化命中 `themeMode` → 缓存优先覆盖本值(缓存语义不变);无缓存才回落到此。
|
|
332
|
+
* 业务侧经 `createAdminBridge({ defaultThemeMode })` 注入,如设 `"dark"` =
|
|
333
|
+
* 「首次进入(无缓存)默认暗色」、`"system"` =「默认跟随系统」。
|
|
334
|
+
*/
|
|
335
|
+
defaultMode?: AdminThemeMode;
|
|
258
336
|
}
|
|
@@ -10,7 +10,7 @@ type __VLS_Props = {
|
|
|
10
10
|
adminBridge: AppLayoutBridgeSlice;
|
|
11
11
|
appStore: AppLayoutAppStoreSlice;
|
|
12
12
|
userStore: AppLayoutUserStoreSlice;
|
|
13
|
-
/** 水印内容(空数组/空串/undefined
|
|
13
|
+
/** 水印内容(空数组/空串/undefined 不展示 = 关闭水印);layout 不耦合 UserInfo shape,由业务侧派生 */
|
|
14
14
|
watermarkContent?: WatermarkProps["content"];
|
|
15
15
|
/**
|
|
16
16
|
* sidebar 层级是否高于 header(#7.5 期新增,默认 false)。
|
|
@@ -41,7 +41,7 @@ export type AppLayoutUserStoreSlice<UserInfo = Record<string, any>> = ReturnType
|
|
|
41
41
|
* (getRoutes / generateRouteMetaRawTree)。loginApi / refreshToken 等 auth
|
|
42
42
|
* 面不通过本 slice 暴露(业务侧通过 appAdminBridge 直读)。
|
|
43
43
|
*/
|
|
44
|
-
export type AppLayoutBridgeSlice = Pick<AdminBridge, "APP_BASE_INFO" | "APP_ENV_INFO" | "APP_CACHE_CONFIG" | "APP_LAYOUT_HEADER_CONFIG" | "APP_LAYOUT_FOOTER_CONFIG" | "APP_LAYOUT_SIDEBAR_CONFIG" | "APP_LAYOUT_BREADCRUMB_CONFIG" | "APP_LAYOUT_BODY_CONFIG" | "APP_LAYOUT_VIEWPORT_CONFIG" | "APP_LAYOUT_GAP_CONFIG" | "APP_LAYOUT_CONFIG" | "APP_ROUTER_META_DEFAULT_CONFIG" | "APP_ROUTER_CONFIG" | "APP_ROUTER_PATHS_CONFIG" | "APP_THEME_CONFIG" | "theme" | "themeStyle" | "themeMode" | "themeIsDark" | "themeLayout" | "themeColors" | "getRoutes" | "generateRouteMetaRawTree">;
|
|
44
|
+
export type AppLayoutBridgeSlice = Pick<AdminBridge, "APP_BASE_INFO" | "APP_ENV_INFO" | "APP_CACHE_CONFIG" | "APP_LAYOUT_HEADER_CONFIG" | "APP_LAYOUT_FOOTER_CONFIG" | "APP_LAYOUT_SIDEBAR_CONFIG" | "APP_LAYOUT_BREADCRUMB_CONFIG" | "APP_LAYOUT_BODY_CONFIG" | "APP_LAYOUT_VIEWPORT_CONFIG" | "APP_LAYOUT_GAP_CONFIG" | "APP_LAYOUT_CONFIG" | "APP_ROUTER_META_DEFAULT_CONFIG" | "APP_ROUTER_CONFIG" | "APP_ROUTER_PATHS_CONFIG" | "APP_THEME_CONFIG" | "theme" | "themeStyle" | "themeMode" | "themeIsDark" | "themeLayout" | "themeDensity" | "themeMotion" | "themeColors" | "showThemeStyleSwitcher" | "getRoutes" | "generateRouteMetaRawTree">;
|
|
45
45
|
/**
|
|
46
46
|
* 内容锚 slot 名集(焊缝契约 ③,纯功能语义;P1' 去布局化重做)。
|
|
47
47
|
*
|
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
import { DeepReadonly } from 'vue';
|
|
2
|
-
import { AppThemeConfig } from '../bridge';
|
|
2
|
+
import { AppThemeConfig, AdminThemeDensity, AdminThemeMotion } from '../bridge';
|
|
3
|
+
/**
|
|
4
|
+
* 构建节奏 `<style>` 文本:单 `:root{}` 块(明暗无关,[MUST NOT] 进 `:root.dark`)
|
|
5
|
+
* + reduced-motion 兜底块(无条件压过三档,design §2.3)。
|
|
6
|
+
*
|
|
7
|
+
* dual-write 规格(design §3):control-height→`--el-component-size`、font-base→
|
|
8
|
+
* `--el-font-size-base`、motion-duration→`--el-transition-duration-fast`、
|
|
9
|
+
* duration-slow→`--el-transition-duration`、easing→两个 EP bezier。spacing 四 token
|
|
10
|
+
* EP 无对应、仅挂 admin-core(EP 内部写死间距由 §3.1 受控桥接样式重映射)。
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildRhythmCss(density: AdminThemeDensity, motion: AdminThemeMotion): string;
|
|
3
13
|
/** `useAdminThemeApply` 入参。 */
|
|
4
14
|
export interface UseAdminThemeApplyOptions {
|
|
5
15
|
/** 当前风格 config 响应式获取器(= `bridge.APP_THEME_CONFIG`,含 light/dark) */
|
|
6
16
|
getThemeConfig: () => AppThemeConfig | DeepReadonly<AppThemeConfig>;
|
|
7
17
|
/** 是否暗色响应式获取器(= `bridge.themeIsDark.value`) */
|
|
8
18
|
getThemeIsDark: () => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* 当前密度档响应式获取器(= `bridge.themeDensity.value`)。
|
|
21
|
+
* 与 {@link getThemeMotion} **同时**提供才注入节奏 `<style>`;缺省 → 不挂节奏(向后兼容)。
|
|
22
|
+
*/
|
|
23
|
+
getThemeDensity?: () => AdminThemeDensity;
|
|
24
|
+
/** 当前动效档响应式获取器(= `bridge.themeMotion.value`);语义同 {@link getThemeDensity}。 */
|
|
25
|
+
getThemeMotion?: () => AdminThemeMotion;
|
|
9
26
|
/** 注入 document(测试 / SSR);缺省 `globalThis.document`,不存在时静默跳过 */
|
|
10
27
|
document?: Document;
|
|
11
28
|
}
|