@gyyxds/zy-ui 0.0.4 → 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.
@@ -849,6 +849,34 @@ html[data-zy-theme='solid'] .zy-switch-track {
849
849
  0 10px 18px rgba(15, 23, 42, 0.22);
850
850
  }
851
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
+
852
880
  /* ============================================================
853
881
  * 8 · 单选框 —— 未选是槽里的小坑,选中是上色键
854
882
  * ============================================================ */
@@ -1685,6 +1713,71 @@ html[data-zy-theme='solid'] .zy-pagination .el-pagination__jump {
1685
1713
  color: var(--zy-muted);
1686
1714
  }
1687
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
+
1688
1781
  /* ============================================================
1689
1782
  * 04 · 滑块拼图验证(实色键帽,方案稿):一块槽 + 两枚键
1690
1783
  * 验证区是槽(凹),缺口是槽里挖出来的暗腔;拼图块是主色键、手柄是中性白键,
@@ -2476,3 +2569,268 @@ html[data-zy-theme='solid'] .zy-mega-menu__card-title {
2476
2569
  html[data-zy-theme='solid'] .zy-mega-menu__group-ico {
2477
2570
  color: var(--zy-mm-muted);
2478
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
+ }