@gyyxds/zy-ui 0.0.3 → 0.1.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/CHANGELOG.md +2 -2
- package/CONTRIBUTING.md +58 -10
- package/README.md +71 -29
- package/dist/zy-ui/button/ZyButton.vue.d.ts +3 -0
- package/dist/zy-ui/button/index.d.ts +6 -0
- package/dist/zy-ui/cascader/ZyCascader.vue.d.ts +23 -0
- package/dist/zy-ui/cascader/index.d.ts +39 -0
- package/dist/zy-ui/index.d.ts +281 -40
- package/dist/zy-ui/input/ZyInput.vue.d.ts +3 -3
- package/dist/zy-ui/input/index.d.ts +6 -6
- package/dist/zy-ui/mega-menu/types.d.ts +4 -4
- package/dist/zy-ui/select/ZySelect.vue.d.ts +32 -5
- package/dist/zy-ui/select/index.d.ts +57 -6
- package/dist/zy-ui/select/types.d.ts +9 -0
- package/dist/zy-ui/side-menu/ZySideMenu.vue.d.ts +48 -0
- package/dist/zy-ui/side-menu/index.d.ts +2 -0
- package/dist/zy-ui/side-menu/types.d.ts +21 -0
- package/dist/zy-ui/switch/ZySwitch.vue.d.ts +8 -2
- package/dist/zy-ui/switch/index.d.ts +6 -0
- package/dist/zy-ui/tabs/ZyTabs.vue.d.ts +49 -0
- package/dist/zy-ui/tabs/index.d.ts +81 -0
- package/dist/zy-ui/tabs/types.d.ts +10 -0
- package/dist/zy-ui/themes/basic.css +124 -0
- package/dist/zy-ui/themes/material.css +2 -1
- package/dist/zy-ui/themes/solid.css +500 -15
- package/dist/zy-ui/zy-ui.css +1 -1
- package/dist/zy-ui/zy-ui.js +1312 -745
- package/package.json +4 -3
|
@@ -34,13 +34,13 @@ html[data-zy-theme='solid'] {
|
|
|
34
34
|
--zy-key-edge: rgba(255, 255, 255, 0.95);
|
|
35
35
|
/*
|
|
36
36
|
* ---------- 键帽高度:挤出底座的厚度,三档 大 / 正常 / 小 ----------
|
|
37
|
-
* 大 =
|
|
38
|
-
* 正常 =
|
|
37
|
+
* 大 = 浮板 / 对话框(--zy-key-lift-lg、--zy-shadow-float)
|
|
38
|
+
* 正常 = 按钮 / 控件 / 卡片(--zy-key-lift-btn、--zy-card-fill-lift、--zy-shadow-card)
|
|
39
39
|
* 小 = 标签与角标(--zy-tag-fill-lift)、以及复选框 / 单选 / 分页这类小件
|
|
40
40
|
* 组件自己的尺寸变体在各自档位上再 ±1 档(如 large 标签 = 正常、small 标签 = 小)。
|
|
41
41
|
*/
|
|
42
|
-
--zy-key-lift-lg: 6px; /* 大 ·
|
|
43
|
-
--zy-key-lift: 4px; /* 正常 · 按钮 / 控件 */
|
|
42
|
+
--zy-key-lift-lg: 6px; /* 大 · 浮板 / 对话框 */
|
|
43
|
+
--zy-key-lift: 4px; /* 正常 · 按钮 / 控件 / 卡片 */
|
|
44
44
|
--zy-key-lift-sm: 2px; /* 小 · 标签 / 角标 / 小件 */
|
|
45
45
|
--zy-key-soft: 0 10px 18px rgba(15, 23, 42, 0.1);
|
|
46
46
|
--zy-key-down: 0 2px 6px rgba(15, 23, 42, 0.14);
|
|
@@ -426,6 +426,134 @@ html[data-zy-theme='solid'] .zy-btn.is-fill .zy-btn-fill-label {
|
|
|
426
426
|
* 悬停铺色、按下、禁用,全部交给组件自己那套数值。主题只声明「默认档也用这套材质」。
|
|
427
427
|
*/
|
|
428
428
|
|
|
429
|
+
/* ============================================================
|
|
430
|
+
* 1·凸 · 默认键(type 为空)的液态玻璃面 —— 仅 B 浅色
|
|
431
|
+
* ------------------------------------------------------------
|
|
432
|
+
* 默认键没有语义色。这里把它做成一块**实色玻璃**:四边由面本身收,
|
|
433
|
+
* 不靠描边 / 内影,轮廓与 Primary 一样锐利;表面是平的,按压只下沉、不鼓。
|
|
434
|
+
*
|
|
435
|
+
* 面 #cfe0f0(原半透明面在 B 桌面上的合成色)
|
|
436
|
+
* 雾 ::before,竖向白,横向 mask 收进中间;向下收透
|
|
437
|
+
* 大弧 ::after,主题两条弧的路径,填白色渐变,收进边内 1px
|
|
438
|
+
* 底光 主题 --zy-key-gloss
|
|
439
|
+
* 底座 面色合成色 × 82% + 黑(与 Primary 同一条公式)
|
|
440
|
+
* 按下 贴平:底座收平,不保留落地影
|
|
441
|
+
*
|
|
442
|
+
* 暗色档、plain / dashed / sweep / fill 仍走原主题,不在此规则内。
|
|
443
|
+
* ::before 在 is-loading 下让给 Element 的 loading 遮罩;雾 / 弧 / 文字
|
|
444
|
+
* 都排除 loading,避免盖住遮罩。
|
|
445
|
+
* ============================================================ */
|
|
446
|
+
html[data-zy-theme='solid']:not(.dark)
|
|
447
|
+
.zy-btn.el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--warning):not(.el-button--danger):not(.el-button--info):not(.is-plain):not(.is-dashed):not(.is-sweep):not(.is-fill):not(.is-text):not(.is-link) {
|
|
448
|
+
/* 实色玻璃面:四边由实色面收,和 Primary 的面边一样硬 */
|
|
449
|
+
--zy-key-glass-face: #cfe0f0;
|
|
450
|
+
/* 底座:面色合成色 × 82% + 黑,与 Primary 同一条公式 */
|
|
451
|
+
--zy-key-glass-base: color-mix(in srgb, #c6d8ea 82%, #000);
|
|
452
|
+
/* 乳白雾:中间一团,上下收干净;横向 24%–76% 收进中间 */
|
|
453
|
+
--zy-key-glass-fog: linear-gradient(
|
|
454
|
+
180deg,
|
|
455
|
+
rgba(255, 255, 255, 0) 0%,
|
|
456
|
+
rgba(255, 255, 255, 0.88) 26%,
|
|
457
|
+
rgba(255, 255, 255, 0.82) 60%,
|
|
458
|
+
rgba(255, 255, 255, 0) 100%
|
|
459
|
+
);
|
|
460
|
+
--zy-key-glass-fog-mask: linear-gradient(
|
|
461
|
+
90deg,
|
|
462
|
+
rgba(0, 0, 0, 0) 0%,
|
|
463
|
+
#000 24%,
|
|
464
|
+
#000 76%,
|
|
465
|
+
rgba(0, 0, 0, 0) 100%
|
|
466
|
+
);
|
|
467
|
+
/* 两块大弧形白高光:与主题同路径,填充改成白色渐变 */
|
|
468
|
+
--zy-key-glass-arc: linear-gradient(
|
|
469
|
+
180deg,
|
|
470
|
+
rgba(255, 255, 255, 0.52) 0%,
|
|
471
|
+
rgba(255, 255, 255, 0.34) 45%,
|
|
472
|
+
rgba(255, 255, 255, 0.22) 100%
|
|
473
|
+
);
|
|
474
|
+
--zy-key-glass-arc-l: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 487 487'%3E%3Cpath fill='%23FFF' fill-rule='nonzero' d='M0 .3c67 2.1 134.1 4.3 186.3 37 52.2 32.7 89.6 95.8 112.8 150.6 23.2 54.8 32.3 101.4 61.2 149.9 28.9 48.4 77.7 98.8 126.4 149.2H0V.3z'/%3E%3C/svg%3E");
|
|
475
|
+
--zy-key-glass-arc-r: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 487 487'%3E%3Cpath fill='%23FFF' fill-rule='nonzero' d='M487 486.7c-66.1-3.6-132.3-7.3-186.3-37s-95.9-85.3-126.2-137.2c-30.4-51.8-49.3-99.9-76.5-151.4C70.9 109.6 35.6 54.8.3 0H487v486.7z'/%3E%3C/svg%3E");
|
|
476
|
+
|
|
477
|
+
position: relative;
|
|
478
|
+
/* ::before 的负层级落在「按钮背景之上、文字之下」 */
|
|
479
|
+
isolation: isolate;
|
|
480
|
+
background-color: var(--zy-key-glass-face) !important;
|
|
481
|
+
/* 底部高光仍用主题那张图;面是实色,四边不靠底色透出来 */
|
|
482
|
+
background-image: var(--zy-key-gloss) !important;
|
|
483
|
+
background-repeat: no-repeat !important;
|
|
484
|
+
background-position: left top !important;
|
|
485
|
+
background-size: 100% 100% !important;
|
|
486
|
+
box-shadow:
|
|
487
|
+
0 var(--zy-key-lift-btn) 0 var(--zy-key-glass-base),
|
|
488
|
+
0 6px 14px rgba(15, 23, 42, 0.25) !important;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/* 乳白雾:单独一层,横向被 mask 收进中间;loading 下让给 Element 的遮罩 */
|
|
492
|
+
html[data-zy-theme='solid']:not(.dark)
|
|
493
|
+
.zy-btn.el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--warning):not(.el-button--danger):not(.el-button--info):not(.is-plain):not(.is-dashed):not(.is-sweep):not(.is-fill):not(.is-text):not(.is-link):not(.is-loading)::before {
|
|
494
|
+
content: '';
|
|
495
|
+
position: absolute;
|
|
496
|
+
inset: 0;
|
|
497
|
+
z-index: -1;
|
|
498
|
+
border-radius: inherit;
|
|
499
|
+
background: var(--zy-key-glass-fog);
|
|
500
|
+
-webkit-mask-image: var(--zy-key-glass-fog-mask);
|
|
501
|
+
mask-image: var(--zy-key-glass-fog-mask);
|
|
502
|
+
pointer-events: none;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/* 两块大弧形白高光:收进边内 1px,最外圈留给实色面,四边才锐利 */
|
|
506
|
+
html[data-zy-theme='solid']:not(.dark)
|
|
507
|
+
.zy-btn.el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--warning):not(.el-button--danger):not(.el-button--info):not(.is-plain):not(.is-dashed):not(.is-sweep):not(.is-fill):not(.is-text):not(.is-link):not(.is-loading)::after {
|
|
508
|
+
content: '';
|
|
509
|
+
position: absolute;
|
|
510
|
+
inset: 1px;
|
|
511
|
+
z-index: 1;
|
|
512
|
+
border-radius: inherit;
|
|
513
|
+
background: var(--zy-key-glass-arc);
|
|
514
|
+
-webkit-mask-image: var(--zy-key-glass-arc-l), var(--zy-key-glass-arc-r);
|
|
515
|
+
mask-image: var(--zy-key-glass-arc-l), var(--zy-key-glass-arc-r);
|
|
516
|
+
-webkit-mask-repeat: no-repeat;
|
|
517
|
+
mask-repeat: no-repeat;
|
|
518
|
+
-webkit-mask-position:
|
|
519
|
+
left calc(var(--zy-key-h) * -0.18) bottom 0,
|
|
520
|
+
right calc(var(--zy-key-h) * -0.27) top 0;
|
|
521
|
+
mask-position:
|
|
522
|
+
left calc(var(--zy-key-h) * -0.18) bottom 0,
|
|
523
|
+
right calc(var(--zy-key-h) * -0.27) top 0;
|
|
524
|
+
-webkit-mask-size:
|
|
525
|
+
var(--zy-key-h) 100%,
|
|
526
|
+
calc(var(--zy-key-h) * 1.1) 100%;
|
|
527
|
+
mask-size:
|
|
528
|
+
var(--zy-key-h) 100%,
|
|
529
|
+
calc(var(--zy-key-h) * 1.1) 100%;
|
|
530
|
+
pointer-events: none;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/* 文字 / 图标压在弧之上;loading 下交回 Element 的遮罩层级 */
|
|
534
|
+
html[data-zy-theme='solid']:not(.dark)
|
|
535
|
+
.zy-btn.el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--warning):not(.el-button--danger):not(.el-button--info):not(.is-plain):not(.is-dashed):not(.is-sweep):not(.is-fill):not(.is-text):not(.is-link):not(.is-loading)
|
|
536
|
+
.zy-btn-text,
|
|
537
|
+
html[data-zy-theme='solid']:not(.dark)
|
|
538
|
+
.zy-btn.el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--warning):not(.el-button--danger):not(.el-button--info):not(.is-plain):not(.is-dashed):not(.is-sweep):not(.is-fill):not(.is-text):not(.is-link):not(.is-loading)
|
|
539
|
+
> .el-icon {
|
|
540
|
+
position: relative;
|
|
541
|
+
z-index: 2;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/* 按下:贴平桌面 —— 底座收平,落地影去掉;位移 / 时长仍走主题 active 规则 */
|
|
545
|
+
html[data-zy-theme='solid']:not(.dark)
|
|
546
|
+
.zy-btn.el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--warning):not(.el-button--danger):not(.el-button--info).is-press:not(.is-plain):not(.is-dashed):not(.is-sweep):not(.is-fill):not(.is-text):not(.is-link):not(.is-disabled):active {
|
|
547
|
+
box-shadow: 0 0 0 var(--zy-key-glass-base) !important;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/* 焦点环:玻璃面不能用主题的白环,改用品色 */
|
|
551
|
+
html[data-zy-theme='solid']:not(.dark)
|
|
552
|
+
.zy-btn.el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--warning):not(.el-button--danger):not(.el-button--info):not(.is-plain):not(.is-dashed):not(.is-sweep):not(.is-fill):not(.is-text):not(.is-link):focus-visible {
|
|
553
|
+
outline: 2px solid color-mix(in srgb, var(--zy-brand) 55%, transparent);
|
|
554
|
+
outline-offset: 3px;
|
|
555
|
+
}
|
|
556
|
+
|
|
429
557
|
/* ============================================================
|
|
430
558
|
* 2 · 图标 —— 无材质,只说明线宽与尺寸(见规范文档)
|
|
431
559
|
* ============================================================ */
|
|
@@ -721,6 +849,34 @@ html[data-zy-theme='solid'] .zy-switch-track {
|
|
|
721
849
|
0 10px 18px rgba(15, 23, 42, 0.22);
|
|
722
850
|
}
|
|
723
851
|
|
|
852
|
+
/*
|
|
853
|
+
* 基础款选中轨道 = primary 键面:面色与键帽图层都和按钮共用同一套令牌。
|
|
854
|
+
* 原稿只有一块平色;这里只补 primary 的两侧 10% 白弧 + 底部渐层,几何与动效不动。
|
|
855
|
+
*/
|
|
856
|
+
html[data-zy-theme='solid'] .zy-switch--default .zy-switch-default-track {
|
|
857
|
+
--zy-key-h: calc(50px * var(--zy-switch-scale));
|
|
858
|
+
--zy-key-lift-now: 0px;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
html[data-zy-theme='solid']
|
|
862
|
+
.zy-switch--default
|
|
863
|
+
.zy-switch-input:checked
|
|
864
|
+
+ .zy-switch-default-track {
|
|
865
|
+
background-color: var(--zy-brand);
|
|
866
|
+
background-image: var(--zy-key-stack);
|
|
867
|
+
background-repeat: no-repeat;
|
|
868
|
+
background-position: var(--zy-key-stack-pos);
|
|
869
|
+
background-size: var(--zy-key-stack-size);
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
/* 深色档的 primary 键面走品牌深档,开关跟着换 */
|
|
873
|
+
html.dark[data-zy-theme='solid']
|
|
874
|
+
.zy-switch--default
|
|
875
|
+
.zy-switch-input:checked
|
|
876
|
+
+ .zy-switch-default-track {
|
|
877
|
+
background-color: var(--zy-brand-key);
|
|
878
|
+
}
|
|
879
|
+
|
|
724
880
|
/* ============================================================
|
|
725
881
|
* 8 · 单选框 —— 未选是槽里的小坑,选中是上色键
|
|
726
882
|
* ============================================================ */
|
|
@@ -871,7 +1027,7 @@ html.dark[data-zy-theme='solid'] .zy-radio-group:has(.el-radio-button) .zy-radio
|
|
|
871
1027
|
}
|
|
872
1028
|
|
|
873
1029
|
/* ============================================================
|
|
874
|
-
* 9 · 卡片 ——
|
|
1030
|
+
* 9 · 卡片 —— 正常键帽:白面 + 挤出边 + 两侧白弧(弧块由组件自带)
|
|
875
1031
|
* ============================================================ */
|
|
876
1032
|
|
|
877
1033
|
html[data-zy-theme='solid'] .zy-card {
|
|
@@ -879,8 +1035,8 @@ html[data-zy-theme='solid'] .zy-card {
|
|
|
879
1035
|
--zy-card-fill-clr: var(--zy-key-face);
|
|
880
1036
|
--zy-card-fill-ink: var(--zy-ink);
|
|
881
1037
|
--zy-card-fill-line: rgba(15, 23, 42, 0.1);
|
|
882
|
-
/*
|
|
883
|
-
--zy-card-fill-lift: var(--zy-key-lift
|
|
1038
|
+
/* 正常档:卡片底座 4px,与按钮 / 控件同一档 */
|
|
1039
|
+
--zy-card-fill-lift: var(--zy-key-lift);
|
|
884
1040
|
}
|
|
885
1041
|
|
|
886
1042
|
/* ============================================================
|
|
@@ -1557,6 +1713,71 @@ html[data-zy-theme='solid'] .zy-pagination .el-pagination__jump {
|
|
|
1557
1713
|
color: var(--zy-muted);
|
|
1558
1714
|
}
|
|
1559
1715
|
|
|
1716
|
+
/* 每页条数:与选择器同一条槽形控件 */
|
|
1717
|
+
html[data-zy-theme='solid'] .zy-pagination .el-pagination__sizes .el-select__wrapper {
|
|
1718
|
+
min-height: 28px;
|
|
1719
|
+
height: 28px;
|
|
1720
|
+
padding: 0 8px;
|
|
1721
|
+
border: 0;
|
|
1722
|
+
border-radius: var(--zy-radius-sm);
|
|
1723
|
+
background-color: var(--zy-slot-face);
|
|
1724
|
+
box-shadow: var(--zy-slot-shadow-sm);
|
|
1725
|
+
font-family: var(--zy-font-sans);
|
|
1726
|
+
transition:
|
|
1727
|
+
box-shadow var(--zy-duration-press) var(--zy-ease-soft),
|
|
1728
|
+
background-color var(--zy-duration-press) var(--zy-ease-soft);
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
html[data-zy-theme='solid'] .zy-pagination .el-pagination__sizes .el-select__wrapper:hover {
|
|
1732
|
+
box-shadow: var(--zy-slot-shadow-sm);
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
html[data-zy-theme='solid'] .zy-pagination .el-pagination__sizes .el-select__wrapper.is-focused,
|
|
1736
|
+
html[data-zy-theme='solid'] .zy-pagination .el-pagination__sizes .el-select__wrapper:focus-within {
|
|
1737
|
+
box-shadow:
|
|
1738
|
+
var(--zy-slot-shadow-sm),
|
|
1739
|
+
0 0 0 2px color-mix(in srgb, var(--zy-brand) 45%, transparent);
|
|
1740
|
+
}
|
|
1741
|
+
|
|
1742
|
+
html[data-zy-theme='solid'] .zy-pagination .el-pagination__sizes .el-select__selected-item,
|
|
1743
|
+
html[data-zy-theme='solid'] .zy-pagination .el-pagination__sizes .el-select__placeholder {
|
|
1744
|
+
color: var(--zy-ink);
|
|
1745
|
+
font-size: 12px;
|
|
1746
|
+
}
|
|
1747
|
+
|
|
1748
|
+
html[data-zy-theme='solid'] .zy-pagination .el-pagination__sizes .el-select__caret {
|
|
1749
|
+
color: var(--zy-muted);
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
html[data-zy-theme='solid'] .zy-pagination-popper {
|
|
1753
|
+
border: 0 !important;
|
|
1754
|
+
border-radius: var(--zy-radius) !important;
|
|
1755
|
+
background: var(--zy-key-face);
|
|
1756
|
+
box-shadow:
|
|
1757
|
+
inset 0 1px 0 var(--zy-key-edge),
|
|
1758
|
+
0 var(--zy-key-lift-sm) 0 var(--zy-key-base),
|
|
1759
|
+
var(--zy-key-soft) !important;
|
|
1760
|
+
}
|
|
1761
|
+
|
|
1762
|
+
html[data-zy-theme='solid'] .zy-pagination-popper .el-select-dropdown__item {
|
|
1763
|
+
min-height: 28px;
|
|
1764
|
+
height: 28px;
|
|
1765
|
+
line-height: 28px;
|
|
1766
|
+
border-radius: var(--zy-radius-sm);
|
|
1767
|
+
color: var(--zy-ink);
|
|
1768
|
+
font-family: var(--zy-font-sans);
|
|
1769
|
+
font-size: 12px;
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1772
|
+
html[data-zy-theme='solid'] .zy-pagination-popper .el-select-dropdown__item.is-hovering {
|
|
1773
|
+
background: var(--zy-slot-face);
|
|
1774
|
+
}
|
|
1775
|
+
|
|
1776
|
+
html[data-zy-theme='solid'] .zy-pagination-popper .el-select-dropdown__item.is-selected {
|
|
1777
|
+
color: var(--zy-brand);
|
|
1778
|
+
font-weight: 600;
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1560
1781
|
/* ============================================================
|
|
1561
1782
|
* 04 · 滑块拼图验证(实色键帽,方案稿):一块槽 + 两枚键
|
|
1562
1783
|
* 验证区是槽(凹),缺口是槽里挖出来的暗腔;拼图块是主色键、手柄是中性白键,
|
|
@@ -2173,7 +2394,8 @@ html.dark[data-zy-theme='solid'] .zy-loading-ball {
|
|
|
2173
2394
|
*
|
|
2174
2395
|
* 条 = **无标题容器那张面**(白面 + 1px 顶光 + 4px 底座 + 落影),
|
|
2175
2396
|
* 入口是面上的字(悬停按出一个小坑),展开那颗**点亮并按下**(品牌面 + 两侧白弧 + 底部高光),
|
|
2176
|
-
* 面板 =
|
|
2397
|
+
* 面板 = 正常键帽(键面 + 4px 底座 + 落影,厚一档就是大键帽);面板里的悬停反过来凹下去(槽)——
|
|
2398
|
+
* 一凸一凹才分得清层级。
|
|
2177
2399
|
*
|
|
2178
2400
|
* 深色:夜色令牌在 §0.1(键面 / 浮板 / 槽 / 语义键面),菜单只在自己的根上把它们
|
|
2179
2401
|
* 映成一组 --zy-mm-* —— 条、面板、槽、点亮键各自取对应那一级,不再写死数值。
|
|
@@ -2185,9 +2407,7 @@ html[data-zy-theme='solid'] .zy-mega-menu {
|
|
|
2185
2407
|
--zy-mm-bar-edge: var(--zy-key-edge);
|
|
2186
2408
|
--zy-mm-bar-shadow: 0 12px 26px rgba(15, 23, 42, 0.12);
|
|
2187
2409
|
--zy-mm-panel: var(--zy-key-face);
|
|
2188
|
-
--zy-mm-panel-shadow:
|
|
2189
|
-
0 var(--zy-key-lift-lg) 0 var(--zy-key-base-strong),
|
|
2190
|
-
0 22px 40px rgba(15, 23, 42, 0.2);
|
|
2410
|
+
--zy-mm-panel-shadow: var(--zy-shadow-card);
|
|
2191
2411
|
--zy-mm-slot: var(--zy-slot-face);
|
|
2192
2412
|
--zy-mm-slot-line: var(--zy-slot-line);
|
|
2193
2413
|
--zy-mm-slot-shadow: var(--zy-slot-shadow-sm);
|
|
@@ -2201,13 +2421,13 @@ html[data-zy-theme='solid'] .zy-mega-menu {
|
|
|
2201
2421
|
}
|
|
2202
2422
|
|
|
2203
2423
|
html.dark[data-zy-theme='solid'] .zy-mega-menu {
|
|
2204
|
-
/*
|
|
2424
|
+
/* 夜里的阶梯全部取 §0.1 的令牌:条和面板都回到键面、面板里的悬停沉进槽 */
|
|
2205
2425
|
--zy-mm-bar: var(--zy-key-face);
|
|
2206
2426
|
--zy-mm-bar-base: var(--zy-key-base);
|
|
2207
2427
|
--zy-mm-bar-edge: var(--zy-key-edge);
|
|
2208
2428
|
--zy-mm-bar-shadow: 0 16px 30px rgba(0, 0, 0, 0.5);
|
|
2209
|
-
--zy-mm-panel: var(--zy-key-face
|
|
2210
|
-
--zy-mm-panel-shadow: var(--zy-shadow-
|
|
2429
|
+
--zy-mm-panel: var(--zy-key-face);
|
|
2430
|
+
--zy-mm-panel-shadow: var(--zy-shadow-card);
|
|
2211
2431
|
--zy-mm-slot: var(--zy-slot-face);
|
|
2212
2432
|
--zy-mm-slot-line: var(--zy-slot-line);
|
|
2213
2433
|
--zy-mm-slot-shadow: var(--zy-slot-shadow-sm);
|
|
@@ -2279,7 +2499,7 @@ html[data-zy-theme='solid'] .zy-mega-menu__trigger.is-open {
|
|
|
2279
2499
|
html[data-zy-theme='solid'] .zy-mega-menu__panel {
|
|
2280
2500
|
top: calc(100% + 12px);
|
|
2281
2501
|
background: var(--zy-mm-panel);
|
|
2282
|
-
border-radius:
|
|
2502
|
+
border-radius: var(--zy-radius);
|
|
2283
2503
|
box-shadow:
|
|
2284
2504
|
inset 0 1px 0 var(--zy-mm-bar-edge),
|
|
2285
2505
|
var(--zy-mm-panel-shadow);
|
|
@@ -2349,3 +2569,268 @@ html[data-zy-theme='solid'] .zy-mega-menu__card-title {
|
|
|
2349
2569
|
html[data-zy-theme='solid'] .zy-mega-menu__group-ico {
|
|
2350
2570
|
color: var(--zy-mm-muted);
|
|
2351
2571
|
}
|
|
2572
|
+
|
|
2573
|
+
/* ---------- 侧边菜单:primary 渐变面板 + 平铺选中 ---------- */
|
|
2574
|
+
html[data-zy-theme='solid'] .zy-side-menu {
|
|
2575
|
+
--zy-side-menu-bg: var(--zy-brand);
|
|
2576
|
+
--zy-side-menu-bg-image: linear-gradient(
|
|
2577
|
+
180deg,
|
|
2578
|
+
color-mix(in srgb, var(--zy-brand) 84%, var(--zy-color-white)) 0%,
|
|
2579
|
+
var(--zy-brand) 46%,
|
|
2580
|
+
color-mix(in srgb, var(--zy-brand) 84%, #000) 100%
|
|
2581
|
+
);
|
|
2582
|
+
--zy-side-menu-fg: var(--zy-color-white);
|
|
2583
|
+
--zy-side-menu-sub-fg: var(--zy-color-white);
|
|
2584
|
+
--zy-side-menu-muted: var(--zy-color-white);
|
|
2585
|
+
--zy-side-menu-brand: var(--zy-color-white);
|
|
2586
|
+
--zy-side-menu-active-bg: rgba(255, 255, 255, 0.16);
|
|
2587
|
+
--zy-side-menu-active-ink: var(--zy-color-white);
|
|
2588
|
+
|
|
2589
|
+
border: 0;
|
|
2590
|
+
border-radius: var(--zy-radius);
|
|
2591
|
+
box-shadow:
|
|
2592
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.24),
|
|
2593
|
+
0 10px 24px rgba(15, 23, 42, 0.22);
|
|
2594
|
+
}
|
|
2595
|
+
|
|
2596
|
+
html.dark[data-zy-theme='solid'] .zy-side-menu {
|
|
2597
|
+
--zy-side-menu-bg: var(--zy-brand-key);
|
|
2598
|
+
--zy-side-menu-bg-image: linear-gradient(
|
|
2599
|
+
180deg,
|
|
2600
|
+
var(--zy-brand-key) 0%,
|
|
2601
|
+
var(--zy-brand-key) 52%,
|
|
2602
|
+
color-mix(in srgb, var(--zy-brand-key) 82%, #000) 100%
|
|
2603
|
+
);
|
|
2604
|
+
}
|
|
2605
|
+
|
|
2606
|
+
/* 白色背景变体:容器回到纸面 / 键面 */
|
|
2607
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] {
|
|
2608
|
+
--zy-side-menu-bg: var(--zy-key-face);
|
|
2609
|
+
--zy-side-menu-bg-image: none;
|
|
2610
|
+
--zy-side-menu-fg: var(--zy-ink);
|
|
2611
|
+
--zy-side-menu-sub-fg: var(--zy-muted);
|
|
2612
|
+
--zy-side-menu-muted: var(--zy-muted);
|
|
2613
|
+
--zy-side-menu-brand: var(--zy-brand);
|
|
2614
|
+
--zy-side-menu-active-bg: var(--zy-brand-soft);
|
|
2615
|
+
--zy-side-menu-active-ink: var(--zy-brand);
|
|
2616
|
+
|
|
2617
|
+
border: 1px solid var(--zy-hairline);
|
|
2618
|
+
box-shadow: var(--zy-shadow-card);
|
|
2619
|
+
}
|
|
2620
|
+
|
|
2621
|
+
html.dark[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] {
|
|
2622
|
+
border-color: var(--zy-hairline);
|
|
2623
|
+
}
|
|
2624
|
+
|
|
2625
|
+
/* 滑行高亮:品牌蓝面板用一层白雾,白色面板回到浅槽 */
|
|
2626
|
+
html[data-zy-theme='solid'] .zy-side-menu__glide {
|
|
2627
|
+
background: rgba(255, 255, 255, 0.1);
|
|
2628
|
+
box-shadow: none;
|
|
2629
|
+
}
|
|
2630
|
+
|
|
2631
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__glide {
|
|
2632
|
+
background: var(--zy-slot-face);
|
|
2633
|
+
box-shadow: none;
|
|
2634
|
+
}
|
|
2635
|
+
|
|
2636
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__brand {
|
|
2637
|
+
border-bottom-color: var(--zy-hairline);
|
|
2638
|
+
}
|
|
2639
|
+
|
|
2640
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__link:not(.is-active):hover,
|
|
2641
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__sublink:not(.is-active):hover {
|
|
2642
|
+
background: transparent;
|
|
2643
|
+
color: var(--zy-side-menu-fg);
|
|
2644
|
+
}
|
|
2645
|
+
|
|
2646
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__link.is-parent-active {
|
|
2647
|
+
background: var(--zy-slot-face);
|
|
2648
|
+
color: var(--zy-side-menu-active-ink);
|
|
2649
|
+
}
|
|
2650
|
+
|
|
2651
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__link.is-active {
|
|
2652
|
+
border-left-color: transparent;
|
|
2653
|
+
background: var(--zy-side-menu-active-bg);
|
|
2654
|
+
color: var(--zy-side-menu-active-ink);
|
|
2655
|
+
box-shadow: none;
|
|
2656
|
+
}
|
|
2657
|
+
|
|
2658
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__sublink.is-active {
|
|
2659
|
+
color: var(--zy-side-menu-active-ink);
|
|
2660
|
+
background: var(--zy-side-menu-active-bg);
|
|
2661
|
+
box-shadow: none;
|
|
2662
|
+
}
|
|
2663
|
+
|
|
2664
|
+
html[data-zy-theme='solid']
|
|
2665
|
+
.zy-side-menu[data-surface='plain']
|
|
2666
|
+
.zy-side-menu__sublink.is-active
|
|
2667
|
+
.zy-side-menu__dot {
|
|
2668
|
+
background: var(--zy-side-menu-active-ink);
|
|
2669
|
+
opacity: 1;
|
|
2670
|
+
}
|
|
2671
|
+
|
|
2672
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__sublink {
|
|
2673
|
+
color: var(--zy-side-menu-sub-fg);
|
|
2674
|
+
}
|
|
2675
|
+
|
|
2676
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__badge {
|
|
2677
|
+
background: var(--zy-slot-face);
|
|
2678
|
+
color: var(--zy-muted);
|
|
2679
|
+
}
|
|
2680
|
+
|
|
2681
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__sublist::before {
|
|
2682
|
+
background: var(--zy-hairline);
|
|
2683
|
+
}
|
|
2684
|
+
|
|
2685
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__footer {
|
|
2686
|
+
border-top-color: var(--zy-hairline);
|
|
2687
|
+
}
|
|
2688
|
+
|
|
2689
|
+
html[data-zy-theme='solid'] .zy-side-menu[data-surface='plain'] .zy-side-menu__link:focus-visible,
|
|
2690
|
+
html[data-zy-theme='solid']
|
|
2691
|
+
.zy-side-menu[data-surface='plain']
|
|
2692
|
+
.zy-side-menu__sublink:focus-visible {
|
|
2693
|
+
outline-color: var(--zy-brand);
|
|
2694
|
+
}
|
|
2695
|
+
|
|
2696
|
+
html[data-zy-theme='solid'] .zy-side-menu__brand {
|
|
2697
|
+
border-bottom-color: rgba(255, 255, 255, 0.22);
|
|
2698
|
+
}
|
|
2699
|
+
|
|
2700
|
+
html[data-zy-theme='solid'] .zy-side-menu__link:hover,
|
|
2701
|
+
html[data-zy-theme='solid'] .zy-side-menu__sublink:hover {
|
|
2702
|
+
background: transparent;
|
|
2703
|
+
color: var(--zy-side-menu-fg);
|
|
2704
|
+
}
|
|
2705
|
+
|
|
2706
|
+
html[data-zy-theme='solid'] .zy-side-menu__link.is-parent-active {
|
|
2707
|
+
background: color-mix(in srgb, var(--zy-side-menu-active-bg) 70%, transparent);
|
|
2708
|
+
color: var(--zy-side-menu-active-ink);
|
|
2709
|
+
}
|
|
2710
|
+
|
|
2711
|
+
/* 选中 = 与二级同一层平铺底,不再使用键帽 */
|
|
2712
|
+
html[data-zy-theme='solid'] .zy-side-menu__link.is-active,
|
|
2713
|
+
html[data-zy-theme='solid'] .zy-side-menu__sublink.is-active {
|
|
2714
|
+
border-left-color: transparent;
|
|
2715
|
+
background: var(--zy-side-menu-active-bg);
|
|
2716
|
+
color: var(--zy-side-menu-active-ink);
|
|
2717
|
+
box-shadow: none;
|
|
2718
|
+
}
|
|
2719
|
+
|
|
2720
|
+
html[data-zy-theme='solid'] .zy-side-menu__link.is-active .zy-side-menu__ico {
|
|
2721
|
+
color: var(--zy-side-menu-active-ink);
|
|
2722
|
+
}
|
|
2723
|
+
|
|
2724
|
+
html[data-zy-theme='solid'] .zy-side-menu__link.is-active .zy-side-menu__badge {
|
|
2725
|
+
background: color-mix(in srgb, var(--zy-side-menu-active-ink) 18%, transparent);
|
|
2726
|
+
color: var(--zy-side-menu-active-ink);
|
|
2727
|
+
}
|
|
2728
|
+
|
|
2729
|
+
html[data-zy-theme='solid'] .zy-side-menu__sublink.is-active .zy-side-menu__dot {
|
|
2730
|
+
background: var(--zy-side-menu-active-ink);
|
|
2731
|
+
opacity: 1;
|
|
2732
|
+
}
|
|
2733
|
+
|
|
2734
|
+
html[data-zy-theme='solid'] .zy-side-menu__badge {
|
|
2735
|
+
background: rgba(0, 0, 0, 0.16);
|
|
2736
|
+
color: var(--zy-color-white);
|
|
2737
|
+
}
|
|
2738
|
+
|
|
2739
|
+
html[data-zy-theme='solid'] .zy-side-menu__sublist::before {
|
|
2740
|
+
background: rgba(255, 255, 255, 0.24);
|
|
2741
|
+
}
|
|
2742
|
+
|
|
2743
|
+
html[data-zy-theme='solid'] .zy-side-menu__footer {
|
|
2744
|
+
border-top-color: rgba(255, 255, 255, 0.22);
|
|
2745
|
+
}
|
|
2746
|
+
|
|
2747
|
+
html[data-zy-theme='solid'] .zy-side-menu__link:focus-visible,
|
|
2748
|
+
html[data-zy-theme='solid'] .zy-side-menu__sublink:focus-visible {
|
|
2749
|
+
outline-color: var(--zy-color-white);
|
|
2750
|
+
}
|
|
2751
|
+
|
|
2752
|
+
html[data-zy-theme='solid'] .zy-side-menu__link.is-active:focus-visible,
|
|
2753
|
+
html[data-zy-theme='solid'] .zy-side-menu__sublink.is-active:focus-visible {
|
|
2754
|
+
outline-color: var(--zy-side-menu-active-ink);
|
|
2755
|
+
}
|
|
2756
|
+
|
|
2757
|
+
/* ---------- 级联选择器:el-cascader 的主题化类 .zy-cascader / .zy-cascader-popper ---------- */
|
|
2758
|
+
html[data-zy-theme='solid'] .zy-cascader .el-input__wrapper {
|
|
2759
|
+
border: 0;
|
|
2760
|
+
border-radius: var(--zy-radius);
|
|
2761
|
+
background-color: var(--zy-slot-face);
|
|
2762
|
+
box-shadow: var(--zy-slot-shadow);
|
|
2763
|
+
transition:
|
|
2764
|
+
box-shadow var(--zy-duration-fast) var(--zy-ease-soft),
|
|
2765
|
+
background-color var(--zy-duration-press) var(--zy-ease-soft);
|
|
2766
|
+
}
|
|
2767
|
+
|
|
2768
|
+
@media (hover: hover) and (pointer: fine) {
|
|
2769
|
+
html[data-zy-theme='solid'] .zy-cascader .el-input__wrapper:hover {
|
|
2770
|
+
box-shadow: var(--zy-slot-shadow-sm);
|
|
2771
|
+
}
|
|
2772
|
+
}
|
|
2773
|
+
|
|
2774
|
+
html[data-zy-theme='solid'] .zy-cascader .el-input__wrapper.is-focus {
|
|
2775
|
+
box-shadow:
|
|
2776
|
+
var(--zy-slot-shadow),
|
|
2777
|
+
0 0 0 2px color-mix(in srgb, var(--zy-brand) 45%, transparent);
|
|
2778
|
+
}
|
|
2779
|
+
|
|
2780
|
+
html[data-zy-theme='solid'] .zy-cascader .el-input__inner {
|
|
2781
|
+
color: var(--zy-ink);
|
|
2782
|
+
font-family: var(--zy-font-sans);
|
|
2783
|
+
}
|
|
2784
|
+
|
|
2785
|
+
html[data-zy-theme='solid'] .zy-cascader-popper {
|
|
2786
|
+
border: 0;
|
|
2787
|
+
border-radius: var(--zy-radius);
|
|
2788
|
+
background: var(--zy-key-face);
|
|
2789
|
+
box-shadow:
|
|
2790
|
+
inset 0 1px 0 var(--zy-key-edge),
|
|
2791
|
+
0 var(--zy-key-lift-sm) 0 var(--zy-key-base),
|
|
2792
|
+
var(--zy-key-soft);
|
|
2793
|
+
}
|
|
2794
|
+
|
|
2795
|
+
html[data-zy-theme='solid'] .zy-cascader-popper .el-cascader-menu {
|
|
2796
|
+
border-right-color: var(--zy-hairline);
|
|
2797
|
+
}
|
|
2798
|
+
|
|
2799
|
+
html[data-zy-theme='solid'] .zy-cascader-popper .el-cascader-node {
|
|
2800
|
+
color: var(--zy-ink);
|
|
2801
|
+
}
|
|
2802
|
+
|
|
2803
|
+
html[data-zy-theme='solid'] .zy-cascader-popper .el-cascader-node.in-active-path,
|
|
2804
|
+
html[data-zy-theme='solid'] .zy-cascader-popper .el-cascader-node.is-active {
|
|
2805
|
+
background: var(--zy-slot-face);
|
|
2806
|
+
color: var(--zy-brand);
|
|
2807
|
+
font-weight: 600;
|
|
2808
|
+
}
|
|
2809
|
+
|
|
2810
|
+
html[data-zy-theme='solid'] .zy-cascader-popper .el-cascader-node.is-disabled {
|
|
2811
|
+
opacity: 0.45;
|
|
2812
|
+
}
|
|
2813
|
+
|
|
2814
|
+
html[data-zy-theme='solid'] .zy-cascader-popper .el-cascader-node__prefix {
|
|
2815
|
+
color: var(--zy-muted);
|
|
2816
|
+
}
|
|
2817
|
+
|
|
2818
|
+
/* ---------- 异形标签页:选中片是切角的品牌键帽 ---------- */
|
|
2819
|
+
html[data-zy-theme='solid'] .zy-tabs {
|
|
2820
|
+
--zy-tabs-carrier-bg: var(--zy-brand-key, var(--zy-brand));
|
|
2821
|
+
--zy-tabs-carrier-image: none;
|
|
2822
|
+
--zy-tabs-carrier-shadow:
|
|
2823
|
+
0 var(--zy-key-lift) 0 var(--zy-key-base),
|
|
2824
|
+
0 6px 14px rgba(15, 23, 42, 0.18);
|
|
2825
|
+
--zy-tabs-carrier-seam: color-mix(in srgb, var(--zy-color-white) 38%, transparent);
|
|
2826
|
+
--zy-tabs-active-ink: var(--zy-color-white);
|
|
2827
|
+
--zy-tabs-active-index: color-mix(in srgb, var(--zy-color-white) 78%, transparent);
|
|
2828
|
+
--zy-tabs-cut: 16px;
|
|
2829
|
+
--zy-tabs-cut-sm: 10px;
|
|
2830
|
+
--zy-tabs-base-gap: 4px;
|
|
2831
|
+
}
|
|
2832
|
+
|
|
2833
|
+
html[data-zy-theme='solid'] .zy-tabs__tab[aria-selected='true'] {
|
|
2834
|
+
--zy-tabs-badge-bg: color-mix(in srgb, var(--zy-color-white) 20%, transparent);
|
|
2835
|
+
--zy-tabs-badge-ink: var(--zy-color-white);
|
|
2836
|
+
}
|