@xihan-ui/styles 1.0.0-alpha.3 → 1.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 +1922 -0
- package/README.md +1 -1
- package/css/accordion.css +25 -2
- package/css/alert.css +13 -9
- package/css/anchor.css +1 -1
- package/css/avatar-group.css +5 -1
- package/css/avatar.css +6 -0
- package/css/back-top.css +6 -0
- package/css/badge.css +94 -36
- package/css/breadcrumb.css +1 -1
- package/css/button-group.css +4 -0
- package/css/button.css +6 -0
- package/css/calendar.css +39 -13
- package/css/card.css +15 -6
- package/css/cascader.css +29 -23
- package/css/checkbox-group.css +38 -10
- package/css/checkbox.css +21 -10
- package/css/collapsible.css +7 -1
- package/css/color-picker.css +22 -2
- package/css/combobox.css +18 -7
- package/css/context-menu.css +17 -6
- package/css/date-field.css +2 -2
- package/css/date-picker.css +27 -17
- package/css/descriptions.css +9 -3
- package/css/dialog.css +7 -1
- package/css/drawer.css +15 -5
- package/css/dynamic-input.css +7 -0
- package/css/ellipsis.css +6 -0
- package/css/empty-state.css +16 -6
- package/css/field.css +7 -0
- package/css/file-upload.css +1 -1
- package/css/flex.css +13 -7
- package/css/float-button.css +7 -0
- package/css/floating-panel.css +6 -0
- package/css/grid.css +11 -5
- package/css/heatmap.css +3 -2
- package/css/highlight.css +1 -1
- package/css/hotkeys.css +1 -1
- package/css/hover-card.css +3 -0
- package/css/image-cropper.css +4 -2
- package/css/image-viewer.css +18 -5
- package/css/json-viewer.css +34 -1
- package/css/layout.css +15 -7
- package/css/list.css +14 -5
- package/css/listbox.css +4 -2
- package/css/loading-bar.css +5 -4
- package/css/log.css +6 -2
- package/css/masonry.css +5 -5
- package/css/mention.css +13 -3
- package/css/menu.css +16 -5
- package/css/menubar.css +14 -6
- package/css/navigation-menu.css +2 -2
- package/css/notification.css +377 -0
- package/css/number-field.css +9 -3
- package/css/page-header.css +7 -0
- package/css/pagination.css +158 -1
- package/css/password-input.css +4 -4
- package/css/pin-input.css +2 -2
- package/css/popconfirm.css +9 -2
- package/css/popover.css +3 -0
- package/css/popselect.css +24 -4
- package/css/progress.css +8 -2
- package/css/radio-group.css +17 -6
- package/css/rating.css +2 -2
- package/css/resizable.css +113 -0
- package/css/result.css +15 -5
- package/css/scrollbar.css +3 -0
- package/css/segmented.css +1 -1
- package/css/select.css +25 -7
- package/css/side-nav.css +16 -5
- package/css/slider.css +4 -2
- package/css/sortable.css +103 -0
- package/css/space.css +6 -6
- package/css/steps.css +6 -6
- package/css/switch.css +9 -2
- package/css/table.css +309 -10
- package/css/tabs.css +148 -1
- package/css/tag.css +3 -1
- package/css/tags-input.css +3 -3
- package/css/text-field.css +3 -3
- package/css/thread.css +10 -2
- package/css/time-field.css +2 -2
- package/css/time-picker.css +6 -6
- package/css/timeline.css +7 -7
- package/css/toast.css +103 -53
- package/css/toggle-group.css +30 -4
- package/css/toggle.css +6 -0
- package/css/tone.css +47 -17
- package/css/tooltip.css +7 -1
- package/css/tour.css +9 -3
- package/css/transfer.css +38 -12
- package/css/tree-select.css +30 -5
- package/css/tree.css +175 -4
- package/css/typography.css +1 -1
- package/css/undefined.css +1 -0
- package/index.css +3 -1
- package/index.unlayered.css +2650 -634
- package/package.json +5 -3
- package/css/toaster.css +0 -74
package/css/layout.css
CHANGED
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
display: flex;
|
|
41
41
|
grid-area: header;
|
|
42
42
|
align-items: center;
|
|
43
|
-
gap: var(--xh-space-3);
|
|
43
|
+
gap: var(--xh-layout-header-gap, var(--xh-space-3));
|
|
44
44
|
block-size: var(--xh-_layout-header-h);
|
|
45
|
-
padding-inline: var(--xh-space-4);
|
|
45
|
+
padding-inline: var(--xh-layout-header-px, var(--xh-space-4));
|
|
46
46
|
background: var(--xh-layout-header-bg, var(--xh-bg-surface));
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
grid-area: sider;
|
|
52
52
|
inline-size: var(--xh-_layout-sider-w);
|
|
53
53
|
overflow: hidden;
|
|
54
|
-
padding: var(--xh-space-3);
|
|
54
|
+
padding: var(--xh-layout-sider-padding, var(--xh-space-3));
|
|
55
55
|
background: var(--xh-layout-sider-bg, var(--xh-bg-subtle));
|
|
56
56
|
transition: inline-size var(--xh-motion-duration-enter) var(--xh-motion-ease-enter);
|
|
57
57
|
}
|
|
@@ -66,12 +66,12 @@
|
|
|
66
66
|
grid-area: content;
|
|
67
67
|
/* 内容列已是 minmax(0, 1fr),这里再声明一次,宽表格与长串文本才撑不破列 */
|
|
68
68
|
min-inline-size: 0;
|
|
69
|
-
padding: var(--xh-space-4);
|
|
69
|
+
padding: var(--xh-layout-content-padding, var(--xh-space-4));
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
[data-scope='layout'][data-part='footer'] {
|
|
73
73
|
grid-area: footer;
|
|
74
|
-
padding: var(--xh-space-3) var(--xh-space-4);
|
|
74
|
+
padding: var(--xh-layout-footer-padding, var(--xh-space-3) var(--xh-space-4));
|
|
75
75
|
background: var(--xh-layout-footer-bg, var(--xh-bg-surface));
|
|
76
76
|
color: var(--xh-fg-muted);
|
|
77
77
|
font-size: var(--xh-text-secondary-size);
|
|
@@ -82,9 +82,9 @@
|
|
|
82
82
|
display: inline-flex;
|
|
83
83
|
align-items: center;
|
|
84
84
|
justify-content: center;
|
|
85
|
-
gap: var(--xh-control-gap-sm);
|
|
85
|
+
gap: var(--xh-layout-sider-trigger-gap, var(--xh-control-gap-sm));
|
|
86
86
|
block-size: var(--xh-control-h-sm);
|
|
87
|
-
padding-inline: var(--xh-control-px-sm);
|
|
87
|
+
padding-inline: var(--xh-layout-sider-trigger-px, var(--xh-control-px-sm));
|
|
88
88
|
border: 0;
|
|
89
89
|
border-radius: var(--xh-layout-sider-trigger-radius, var(--xh-shape-control));
|
|
90
90
|
background: var(--xh-layout-sider-trigger-bg, transparent);
|
|
@@ -167,4 +167,12 @@
|
|
|
167
167
|
max-block-size: calc(var(--xh-layout-scrollport-h, 100dvh) - var(--xh-_layout-sider-offset));
|
|
168
168
|
overflow-y: auto;
|
|
169
169
|
}
|
|
170
|
+
|
|
171
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
172
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
173
|
+
[data-scope='layout'][data-part='root'][hidden],
|
|
174
|
+
[data-scope='layout'][data-part='header'][hidden],
|
|
175
|
+
[data-scope='layout'][data-part='sider-trigger'][hidden] {
|
|
176
|
+
display: none;
|
|
177
|
+
}
|
|
170
178
|
}
|
package/css/list.css
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
/* 一个尺寸档只换这几个私有槽,条目与两行文字都从根上继承它们,
|
|
9
9
|
换档不必给每个部件各写一条选择器 */
|
|
10
10
|
--xh-_list-item-py: var(--xh-list-item-py-md);
|
|
11
|
-
--xh-_list-item-px: var(--xh-
|
|
11
|
+
--xh-_list-item-px: var(--xh-list-item-px-md);
|
|
12
12
|
--xh-_list-item-gap: var(--xh-space-3);
|
|
13
13
|
--xh-_list-title-size: var(--xh-control-font-md);
|
|
14
14
|
--xh-_list-description-size: var(--xh-control-caption-md);
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
/* —— 尺寸 —— */
|
|
31
31
|
[data-scope='list'][data-part='root'][data-size='sm'] {
|
|
32
32
|
--xh-_list-item-py: var(--xh-list-item-py-sm);
|
|
33
|
-
--xh-_list-item-px: var(--xh-
|
|
33
|
+
--xh-_list-item-px: var(--xh-list-item-px-sm);
|
|
34
34
|
--xh-_list-item-gap: var(--xh-space-2);
|
|
35
35
|
--xh-_list-title-size: var(--xh-control-font-sm);
|
|
36
36
|
--xh-_list-description-size: var(--xh-control-caption-sm);
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
[data-scope='list'][data-part='root'][data-size='lg'] {
|
|
40
40
|
--xh-_list-item-py: var(--xh-list-item-py-lg);
|
|
41
|
-
--xh-_list-item-px: var(--xh-
|
|
41
|
+
--xh-_list-item-px: var(--xh-list-item-px-lg);
|
|
42
42
|
--xh-_list-item-gap: var(--xh-space-4);
|
|
43
43
|
--xh-_list-title-size: var(--xh-control-font-lg);
|
|
44
44
|
}
|
|
@@ -66,11 +66,11 @@
|
|
|
66
66
|
[data-scope='list'][data-part='root'][data-split]
|
|
67
67
|
> [data-scope='list'][data-part='item']
|
|
68
68
|
+ [data-scope='list'][data-part='item'] {
|
|
69
|
-
border-block-start: var(--xh-stroke-thin) solid var(--xh-list-
|
|
69
|
+
border-block-start: var(--xh-stroke-thin) solid var(--xh-list-divider, var(--xh-border-subtle));
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
[data-scope='list'][data-part='root'][data-hoverable] > [data-scope='list'][data-part='item'] {
|
|
73
|
-
transition: background
|
|
73
|
+
transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/* 悬停换底色:只在能用指针的设备上生效,触摸端不留一个按不掉的悬停态 */
|
|
@@ -119,4 +119,13 @@
|
|
|
119
119
|
gap: var(--xh-list-action-gap, var(--xh-space-2));
|
|
120
120
|
margin-inline-start: auto;
|
|
121
121
|
}
|
|
122
|
+
|
|
123
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
124
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
125
|
+
[data-scope='list'][data-part='item'][hidden],
|
|
126
|
+
[data-scope='list'][data-part='item-media'][hidden],
|
|
127
|
+
[data-scope='list'][data-part='item-content'][hidden],
|
|
128
|
+
[data-scope='list'][data-part='item-action'][hidden] {
|
|
129
|
+
display: none;
|
|
130
|
+
}
|
|
122
131
|
}
|
package/css/listbox.css
CHANGED
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
[data-scope='listbox'][data-part='content'] {
|
|
35
35
|
display: flex;
|
|
36
36
|
flex-direction: column;
|
|
37
|
+
gap: var(--xh-listbox-content-gap, var(--xh-list-option-gap));
|
|
37
38
|
max-block-size: var(--xh-listbox-content-max-h, var(--xh-viewport-h-md));
|
|
38
39
|
padding-block: var(--xh-listbox-content-py, var(--xh-space-1));
|
|
39
40
|
padding-inline: var(--xh-listbox-content-px, var(--xh-space-1));
|
|
@@ -66,6 +67,7 @@
|
|
|
66
67
|
[data-scope='listbox'][data-part='item-group'] {
|
|
67
68
|
display: flex;
|
|
68
69
|
flex-direction: column;
|
|
70
|
+
gap: var(--xh-listbox-item-group-gap, var(--xh-list-option-gap));
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
[data-scope='listbox'][data-part='item-group'][hidden] {
|
|
@@ -74,7 +76,7 @@
|
|
|
74
76
|
|
|
75
77
|
/* 组间留白只加在后继分组上:首组顶上已经有 content 的内边距,再加一层会显得头重 */
|
|
76
78
|
[data-scope='listbox'][data-part='item-group'] + [data-scope='listbox'][data-part='item-group'] {
|
|
77
|
-
margin-block-start: var(--xh-listbox-group-gap, var(--xh-space-
|
|
79
|
+
margin-block-start: var(--xh-listbox-group-gap, var(--xh-space-1_5));
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
/* 分组标题不是选项、进不了导航,画成小号次要文字,
|
|
@@ -168,7 +170,7 @@
|
|
|
168
170
|
align-items: center;
|
|
169
171
|
justify-content: center;
|
|
170
172
|
inline-size: var(--xh-listbox-item-indicator-size, var(--xh-control-indicator-size));
|
|
171
|
-
color: var(--xh-listbox-item-indicator-fg, var(--xh-
|
|
173
|
+
color: var(--xh-listbox-item-indicator-fg, var(--xh-fg-brand));
|
|
172
174
|
visibility: hidden;
|
|
173
175
|
}
|
|
174
176
|
|
package/css/loading-bar.css
CHANGED
|
@@ -31,8 +31,9 @@
|
|
|
31
31
|
display: none;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
/* 冲到 100 之后进入淡出:机器会在淡出窗口走完之前一直停在 finishing
|
|
35
|
-
|
|
34
|
+
/* 冲到 100 之后进入淡出:机器会在淡出窗口走完之前一直停在 finishing,这段过渡才有时间跑完。
|
|
35
|
+
窗口(machine 的 LOADING_BAR_FADE_DURATION,200ms)比过渡本身(motion-duration-exit,120ms)
|
|
36
|
+
宽出一截是有意的余量;两者不是同一个数,改窗口时只要保证它仍不短于过渡 */
|
|
36
37
|
[data-scope='loading-bar'][data-part='root'][data-state='finishing'] {
|
|
37
38
|
opacity: 0;
|
|
38
39
|
}
|
|
@@ -50,8 +51,8 @@
|
|
|
50
51
|
* 进度段。宽度那条轴(inline-size)由连接层写进内联样式,这里绝不重复写。
|
|
51
52
|
* 背景色同理:给了 color 就走内联,盖过下面这条。
|
|
52
53
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
54
|
+
* 语气取装饰档 --xh-_tone-soft:那一档压在画布上够 3:1,细带才看得出来。
|
|
55
|
+
* 槽位由 root 上的 data-tone 声明,继承下来。
|
|
55
56
|
* 没写 data-tone 时该槽没被声明,退回原来的品牌色。
|
|
56
57
|
*/
|
|
57
58
|
[data-scope='loading-bar'][data-part='range'] {
|
package/css/log.css
CHANGED
|
@@ -28,14 +28,18 @@
|
|
|
28
28
|
flex-basis 取 auto,连接层写的按行数高度才算数,同时外层给了高度时还能撑满;
|
|
29
29
|
min-block-size: 0 让它在弹性父级里能被压缩从而真的溢出;
|
|
30
30
|
两个轴都 auto:长行不折,横向也要能滚;
|
|
31
|
-
overscroll-behavior: contain
|
|
32
|
-
scrollbar-gutter: stable 避免滚动条出现与消失时推动文字。 */
|
|
31
|
+
overscroll-behavior: contain 阻止滚动量传给页面。 */
|
|
33
32
|
[data-scope='log'][data-part='viewport'] {
|
|
34
33
|
flex: 1 1 auto;
|
|
35
34
|
min-block-size: 0;
|
|
36
35
|
block-size: calc(var(--xh-_log-line-h) * var(--xh-log-rows, 16));
|
|
37
36
|
overflow: auto;
|
|
38
37
|
overscroll-behavior: contain;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* 还在用原生滚动条的视口留一条空道,滚动条出现与消失时不推动文字。
|
|
41
|
+
带 data-xh-scrollbar 的容器已经把原生条藏成零宽,这条空道对它没有布局作用,排除掉 */
|
|
42
|
+
[data-scope='log'][data-part='viewport']:not([data-xh-scrollbar]) {
|
|
39
43
|
scrollbar-gutter: stable;
|
|
40
44
|
}
|
|
41
45
|
|
package/css/masonry.css
CHANGED
|
@@ -42,22 +42,22 @@
|
|
|
42
42
|
/* —— 间距档位 —— */
|
|
43
43
|
/* 每一档指向一个间距令牌,列之间与列内项之间吃同一份间距 */
|
|
44
44
|
[data-scope='masonry'][data-part='root'][data-gap='xs'] {
|
|
45
|
-
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-
|
|
45
|
+
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-layout-gap-xs));
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
[data-scope='masonry'][data-part='root'][data-gap='sm'] {
|
|
49
|
-
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-
|
|
49
|
+
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-layout-gap-sm));
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
[data-scope='masonry'][data-part='root'][data-gap='md'] {
|
|
53
|
-
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-
|
|
53
|
+
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-layout-gap-md));
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
[data-scope='masonry'][data-part='root'][data-gap='lg'] {
|
|
57
|
-
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-
|
|
57
|
+
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-layout-gap-lg));
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
[data-scope='masonry'][data-part='root'][data-gap='xl'] {
|
|
61
|
-
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-
|
|
61
|
+
--xh-_masonry-gap: var(--xh-masonry-gap, var(--xh-layout-gap-xl));
|
|
62
62
|
}
|
|
63
63
|
}
|
package/css/mention.css
CHANGED
|
@@ -37,6 +37,9 @@
|
|
|
37
37
|
引擎没算(尚未落位 / 无引擎)时不额外限高 */
|
|
38
38
|
--xh-_mention-available-h: 100vh;
|
|
39
39
|
|
|
40
|
+
/* 候选列表的自绘条浮在内容之上:轨道不上底色,实色轨道会在列表右缘糊一条竖灰带 */
|
|
41
|
+
--xh-scrollbar-track-bg: transparent;
|
|
42
|
+
|
|
40
43
|
position: fixed;
|
|
41
44
|
z-index: var(--xh-mention-layer, var(--xh-layer-popover));
|
|
42
45
|
/* 空壳不吃指针,交互只发生在 content 上 */
|
|
@@ -53,9 +56,11 @@
|
|
|
53
56
|
/* 尺寸档只换这五个私有槽,输入框与候选都从这两处继承它们,换档不必给每个部件各写一条选择器 */
|
|
54
57
|
--xh-_mention-h: var(--xh-control-h-md);
|
|
55
58
|
--xh-_mention-px: var(--xh-control-px-md);
|
|
59
|
+
--xh-_mention-item-py: var(--xh-list-option-py-md);
|
|
60
|
+
--xh-_mention-item-px: var(--xh-control-px-md);
|
|
56
61
|
--xh-_mention-py: var(--xh-field-py);
|
|
57
62
|
--xh-_mention-gap: var(--xh-control-gap-md);
|
|
58
|
-
--xh-_mention-font-size: var(--xh-
|
|
63
|
+
--xh-_mention-font-size: var(--xh-control-font-md);
|
|
59
64
|
|
|
60
65
|
/* 形态档只换这三个槽:缺省即 outline(描边 + 画布底) */
|
|
61
66
|
--xh-_mention-input-bg: var(--xh-bg-canvas);
|
|
@@ -80,6 +85,8 @@
|
|
|
80
85
|
[data-scope='mention']:is([data-part='root'], [data-part='positioner'])[data-size='sm'] {
|
|
81
86
|
--xh-_mention-h: var(--xh-control-h-sm);
|
|
82
87
|
--xh-_mention-px: var(--xh-control-px-sm);
|
|
88
|
+
--xh-_mention-item-py: var(--xh-list-option-py-sm);
|
|
89
|
+
--xh-_mention-item-px: var(--xh-control-px-sm);
|
|
83
90
|
--xh-_mention-py: var(--xh-space-1);
|
|
84
91
|
--xh-_mention-gap: var(--xh-control-gap-sm);
|
|
85
92
|
--xh-_mention-font-size: var(--xh-control-font-sm);
|
|
@@ -88,6 +95,8 @@
|
|
|
88
95
|
[data-scope='mention']:is([data-part='root'], [data-part='positioner'])[data-size='lg'] {
|
|
89
96
|
--xh-_mention-h: var(--xh-control-h-lg);
|
|
90
97
|
--xh-_mention-px: var(--xh-control-px-lg);
|
|
98
|
+
--xh-_mention-item-py: var(--xh-list-option-py-lg);
|
|
99
|
+
--xh-_mention-item-px: var(--xh-control-px-lg);
|
|
91
100
|
--xh-_mention-py: var(--xh-space-3);
|
|
92
101
|
--xh-_mention-gap: var(--xh-control-gap-lg);
|
|
93
102
|
--xh-_mention-font-size: var(--xh-control-font-lg);
|
|
@@ -187,6 +196,7 @@
|
|
|
187
196
|
[data-scope='mention'][data-part='content'] {
|
|
188
197
|
display: flex;
|
|
189
198
|
flex-direction: column;
|
|
199
|
+
gap: var(--xh-mention-content-gap, var(--xh-list-option-gap));
|
|
190
200
|
min-inline-size: var(--xh-mention-content-min-w, var(--xh-overlay-min-w));
|
|
191
201
|
max-inline-size: var(--xh-mention-content-max-w, var(--xh-overlay-max-w));
|
|
192
202
|
max-block-size: min(var(--xh-mention-content-max-h, var(--xh-overlay-max-h)), var(--xh-_mention-available-h));
|
|
@@ -233,8 +243,8 @@
|
|
|
233
243
|
display: flex;
|
|
234
244
|
align-items: center;
|
|
235
245
|
gap: var(--xh-mention-item-gap, var(--xh-_mention-gap));
|
|
236
|
-
padding-block: var(--xh-mention-item-py, var(--xh-
|
|
237
|
-
padding-inline: var(--xh-mention-item-px, var(--xh-
|
|
246
|
+
padding-block: var(--xh-mention-item-py, var(--xh-_mention-item-py));
|
|
247
|
+
padding-inline: var(--xh-mention-item-px, var(--xh-_mention-item-px));
|
|
238
248
|
border-radius: var(--xh-mention-item-radius, var(--xh-shape-control));
|
|
239
249
|
color: var(--xh-mention-item-fg, var(--xh-fg-default));
|
|
240
250
|
font-size: var(--xh-mention-item-font-size, var(--xh-_mention-font-size));
|
package/css/menu.css
CHANGED
|
@@ -37,6 +37,9 @@
|
|
|
37
37
|
引擎没算(尚未落位 / 无引擎)时不额外限高 */
|
|
38
38
|
--xh-_menu-available-h: 100vh;
|
|
39
39
|
|
|
40
|
+
/* 条目列表的自绘条浮在内容之上:轨道不上底色,实色轨道会在菜单右缘糊一条竖灰带 */
|
|
41
|
+
--xh-scrollbar-track-bg: transparent;
|
|
42
|
+
|
|
40
43
|
position: fixed;
|
|
41
44
|
z-index: var(--xh-menu-layer, var(--xh-layer-popover));
|
|
42
45
|
/* 空壳不吃指针,交互只发生在 content 上 */
|
|
@@ -67,10 +70,10 @@
|
|
|
67
70
|
|
|
68
71
|
/* 尺寸档只换这四个私有槽,条目从 content 继承它们,换档不必给每个部件各写一条选择器。
|
|
69
72
|
菜单没有 root 部件(浮层树的最外层就是 content),三轴属性都落在这里 */
|
|
70
|
-
--xh-_menu-item-py: var(--xh-
|
|
73
|
+
--xh-_menu-item-py: var(--xh-list-option-py-md);
|
|
71
74
|
--xh-_menu-item-px: var(--xh-control-px-md);
|
|
72
75
|
--xh-_menu-item-gap: var(--xh-control-gap-md);
|
|
73
|
-
--xh-_menu-font-size: var(--xh-
|
|
76
|
+
--xh-_menu-font-size: var(--xh-control-font-md);
|
|
74
77
|
|
|
75
78
|
/* 打开子菜单的触发条目走品牌淡底强档,随语气换色相;没写 data-tone 时退回品牌淡底。
|
|
76
79
|
悬停与键盘焦点恒中性灰轻档、不接语气槽——两档同色相的话打开路径就认不出来了 */
|
|
@@ -78,6 +81,7 @@
|
|
|
78
81
|
|
|
79
82
|
display: flex;
|
|
80
83
|
flex-direction: column;
|
|
84
|
+
gap: var(--xh-menu-content-gap, var(--xh-list-option-gap));
|
|
81
85
|
min-inline-size: var(--xh-menu-min-w, var(--xh-overlay-menu-min-w));
|
|
82
86
|
max-inline-size: var(--xh-menu-max-w, var(--xh-overlay-max-w));
|
|
83
87
|
/* 两道上限取更小的那道:自己的高度上限,以及落定那一侧真正剩下的空间。
|
|
@@ -120,14 +124,14 @@
|
|
|
120
124
|
/* 缺省档写在 content 的基础规则里。条目高度由 padding 撑出来:
|
|
121
125
|
纵向走 space 档、行内内缩走 control-px 档(随密度轴),换档各挪一级 */
|
|
122
126
|
[data-scope='menu'][data-part='content'][data-size='sm'] {
|
|
123
|
-
--xh-_menu-item-py: var(--xh-
|
|
127
|
+
--xh-_menu-item-py: var(--xh-list-option-py-sm);
|
|
124
128
|
--xh-_menu-item-px: var(--xh-control-px-sm);
|
|
125
129
|
--xh-_menu-item-gap: var(--xh-control-gap-sm);
|
|
126
130
|
--xh-_menu-font-size: var(--xh-control-font-sm);
|
|
127
131
|
}
|
|
128
132
|
|
|
129
133
|
[data-scope='menu'][data-part='content'][data-size='lg'] {
|
|
130
|
-
--xh-_menu-item-py: var(--xh-
|
|
134
|
+
--xh-_menu-item-py: var(--xh-list-option-py-lg);
|
|
131
135
|
--xh-_menu-item-px: var(--xh-control-px-lg);
|
|
132
136
|
--xh-_menu-item-gap: var(--xh-control-gap-lg);
|
|
133
137
|
--xh-_menu-font-size: var(--xh-control-font-lg);
|
|
@@ -200,6 +204,7 @@
|
|
|
200
204
|
[data-scope='menu'][data-part='group'] {
|
|
201
205
|
display: flex;
|
|
202
206
|
flex-direction: column;
|
|
207
|
+
gap: var(--xh-menu-group-gap, var(--xh-list-option-gap));
|
|
203
208
|
}
|
|
204
209
|
|
|
205
210
|
[data-scope='menu'][data-part='group'][hidden] {
|
|
@@ -225,7 +230,7 @@
|
|
|
225
230
|
|
|
226
231
|
[data-scope='menu'][data-part='separator'] {
|
|
227
232
|
block-size: var(--xh-menu-separator-thickness, var(--xh-stroke-thin));
|
|
228
|
-
margin-block: var(--xh-menu-separator-my, var(--xh-space-
|
|
233
|
+
margin-block: var(--xh-menu-separator-my, var(--xh-space-0_5));
|
|
229
234
|
background: var(--xh-menu-separator-color, var(--xh-border-default));
|
|
230
235
|
}
|
|
231
236
|
|
|
@@ -241,4 +246,10 @@
|
|
|
241
246
|
background: var(--xh-menu-bg, var(--xh-bg-surface));
|
|
242
247
|
border: var(--xh-stroke-thin) solid var(--xh-menu-border, var(--xh-border-default));
|
|
243
248
|
}
|
|
249
|
+
|
|
250
|
+
/* 声明过任何 display 就盖掉了 UA 的 [hidden]{display:none},收起态得自己还回去。
|
|
251
|
+
写在文件末尾:兜底必须排在该部件所有 display 声明之后 */
|
|
252
|
+
[data-scope='menu'][data-part='item'][hidden] {
|
|
253
|
+
display: none;
|
|
254
|
+
}
|
|
244
255
|
}
|
package/css/menubar.css
CHANGED
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
color: var(--xh-menubar-root-fg, var(--xh-fg-default));
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/* 浮层被搬到 portal 落点,继承不到 root 上的槽:这把尺在被搬走的那一侧再声明一次,
|
|
23
|
+
关闭钮与条目里作者塞的图标才和皮肤画的兜底字形一样大 */
|
|
24
|
+
[data-scope='menubar'][data-part='content'] {
|
|
25
|
+
--xh-icon-size: var(--xh-menubar-icon-size, var(--xh-glyph-size-text));
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
[data-scope='menubar'][data-part='root'][hidden] {
|
|
23
29
|
display: none;
|
|
24
30
|
}
|
|
@@ -111,10 +117,10 @@
|
|
|
111
117
|
[data-scope='menubar']:is([data-part='root'], [data-part='positioner']) {
|
|
112
118
|
--xh-_menubar-trigger-py: var(--xh-space-1);
|
|
113
119
|
--xh-_menubar-trigger-px: var(--xh-control-px-md);
|
|
114
|
-
--xh-_menubar-item-py: var(--xh-
|
|
120
|
+
--xh-_menubar-item-py: var(--xh-list-option-py-md);
|
|
115
121
|
--xh-_menubar-item-px: var(--xh-control-px-md);
|
|
116
122
|
--xh-_menubar-item-gap: var(--xh-control-gap-md);
|
|
117
|
-
--xh-_menubar-font-size: var(--xh-
|
|
123
|
+
--xh-_menubar-font-size: var(--xh-control-font-md);
|
|
118
124
|
|
|
119
125
|
/* 展开着的那张菜单的 trigger 走品牌淡底强档,随语气换色相;没写 data-tone 时退回品牌淡底。
|
|
120
126
|
悬停与键盘焦点恒中性灰轻档、不接语气槽——两档同色相的话哪张开着就认不出来了。
|
|
@@ -128,7 +134,7 @@
|
|
|
128
134
|
[data-scope='menubar'][data-size='sm']:is([data-part='root'], [data-part='positioner']) {
|
|
129
135
|
--xh-_menubar-trigger-py: var(--xh-space-0_5);
|
|
130
136
|
--xh-_menubar-trigger-px: var(--xh-control-px-sm);
|
|
131
|
-
--xh-_menubar-item-py: var(--xh-
|
|
137
|
+
--xh-_menubar-item-py: var(--xh-list-option-py-sm);
|
|
132
138
|
--xh-_menubar-item-px: var(--xh-control-px-sm);
|
|
133
139
|
--xh-_menubar-item-gap: var(--xh-control-gap-sm);
|
|
134
140
|
--xh-_menubar-font-size: var(--xh-control-font-sm);
|
|
@@ -137,7 +143,7 @@
|
|
|
137
143
|
[data-scope='menubar'][data-size='lg']:is([data-part='root'], [data-part='positioner']) {
|
|
138
144
|
--xh-_menubar-trigger-py: var(--xh-space-2);
|
|
139
145
|
--xh-_menubar-trigger-px: var(--xh-control-px-lg);
|
|
140
|
-
--xh-_menubar-item-py: var(--xh-
|
|
146
|
+
--xh-_menubar-item-py: var(--xh-list-option-py-lg);
|
|
141
147
|
--xh-_menubar-item-px: var(--xh-control-px-lg);
|
|
142
148
|
--xh-_menubar-item-gap: var(--xh-control-gap-lg);
|
|
143
149
|
--xh-_menubar-font-size: var(--xh-control-font-lg);
|
|
@@ -146,6 +152,7 @@
|
|
|
146
152
|
[data-scope='menubar'][data-part='content'] {
|
|
147
153
|
display: flex;
|
|
148
154
|
flex-direction: column;
|
|
155
|
+
gap: var(--xh-menubar-content-gap, var(--xh-list-option-gap));
|
|
149
156
|
min-inline-size: var(--xh-menubar-min-w, var(--xh-overlay-menu-min-w));
|
|
150
157
|
max-inline-size: var(--xh-menubar-max-w, var(--xh-overlay-max-w));
|
|
151
158
|
/* 两道上限取更小的那道:自己的高度上限,以及落定那一侧真正剩下的空间。
|
|
@@ -195,6 +202,7 @@
|
|
|
195
202
|
[data-scope='menubar'][data-part='group'] {
|
|
196
203
|
display: flex;
|
|
197
204
|
flex-direction: column;
|
|
205
|
+
gap: var(--xh-menubar-group-gap, var(--xh-list-option-gap));
|
|
198
206
|
}
|
|
199
207
|
|
|
200
208
|
[data-scope='menubar'][data-part='group'][hidden] {
|
|
@@ -306,7 +314,7 @@
|
|
|
306
314
|
align-items: center;
|
|
307
315
|
justify-content: center;
|
|
308
316
|
inline-size: var(--xh-menubar-item-indicator-size, var(--xh-control-indicator-size));
|
|
309
|
-
color: var(--xh-menubar-item-indicator-fg, var(--xh-fg-brand));
|
|
317
|
+
color: var(--xh-menubar-item-indicator-fg, var(--xh-_tone, var(--xh-fg-brand)));
|
|
310
318
|
}
|
|
311
319
|
|
|
312
320
|
[data-scope='menubar'][data-part='item-indicator'][hidden] {
|
|
@@ -321,7 +329,7 @@
|
|
|
321
329
|
不给 display,因此 UA 的 [hidden]{display:none} 自己就压得住 */
|
|
322
330
|
[data-scope='menubar'][data-part='separator'] {
|
|
323
331
|
block-size: var(--xh-menubar-separator-thickness, var(--xh-stroke-thin));
|
|
324
|
-
margin-block: var(--xh-menubar-separator-my, var(--xh-space-
|
|
332
|
+
margin-block: var(--xh-menubar-separator-my, var(--xh-space-0_5));
|
|
325
333
|
background: var(--xh-menubar-separator-color, var(--xh-border-default));
|
|
326
334
|
}
|
|
327
335
|
|
package/css/navigation-menu.css
CHANGED
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
/* 尺寸档只换这五个私有槽,trigger 与面板里的链接都从 root 继承它们,
|
|
38
38
|
换档不必给每个部件各写一条选择器。面板与共享外壳都是 root 的后代,一并继承。
|
|
39
39
|
trigger 写的是 font: inherit,字号跟着 root 这一档走,不另立槽 */
|
|
40
|
-
--xh-_navigation-menu-font-size: var(--xh-
|
|
40
|
+
--xh-_navigation-menu-font-size: var(--xh-control-font-md);
|
|
41
41
|
--xh-_navigation-menu-trigger-h: var(--xh-control-h-md);
|
|
42
42
|
--xh-_navigation-menu-trigger-px: var(--xh-control-px-md);
|
|
43
43
|
--xh-_navigation-menu-trigger-gap: var(--xh-control-gap-md);
|
|
44
44
|
--xh-_navigation-menu-link-py: var(--xh-space-1_5);
|
|
45
45
|
--xh-_navigation-menu-link-px: var(--xh-control-px-md);
|
|
46
|
-
--xh-_navigation-menu-link-font-size: var(--xh-
|
|
46
|
+
--xh-_navigation-menu-link-font-size: var(--xh-control-font-md);
|
|
47
47
|
|
|
48
48
|
/* 悬停与键盘锚点恒中性灰轻档、不接语气槽——两档同色相的话打开路径就认不出来了 */
|
|
49
49
|
--xh-_navigation-menu-highlight-bg: var(--xh-bg-subtle);
|