@xihan-ui/styles 3.1.0 → 3.2.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 +29 -0
- package/component-tokens.d.ts +1 -0
- package/components.tokens.json +32 -2
- package/css/alert.css +2 -2
- package/css/approval.css +4 -4
- package/css/button.css +9 -5
- package/css/calendar-picker.css +3 -3
- package/css/calendar-range-picker.css +7 -7
- package/css/carousel.css +45 -13
- package/css/cartesian-chart.css +11 -11
- package/css/cascader.css +10 -10
- package/css/citation.css +2 -2
- package/css/code-view.css +6 -6
- package/css/color-swatch-picker.css +9 -4
- package/css/combobox.css +12 -4
- package/css/command.css +1 -1
- package/css/date-field.css +8 -2
- package/css/date-picker.css +13 -7
- package/css/date-range-picker.css +13 -7
- package/css/diff-view.css +8 -8
- package/css/field-array.css +1 -1
- package/css/file-upload.css +1 -1
- package/css/float-button.css +42 -27
- package/css/form.css +6 -6
- package/css/graph-chart.css +2 -2
- package/css/highlight.css +1 -1
- package/css/image.css +1 -1
- package/css/mention.css +1 -1
- package/css/message-feed.css +1 -1
- package/css/notification.css +18 -18
- package/css/number-field.css +18 -18
- package/css/page-header.css +2 -2
- package/css/password-input.css +2 -2
- package/css/popconfirm.css +3 -3
- package/css/question-flow.css +8 -8
- package/css/radar-chart.css +6 -6
- package/css/rating.css +1 -1
- package/css/select.css +2 -2
- package/css/separator.css +2 -2
- package/css/side-nav.css +13 -13
- package/css/skeleton.css +5 -5
- package/css/slider.css +6 -6
- package/css/sortable.css +2 -2
- package/css/table.css +2 -2
- package/css/tags-input.css +1 -1
- package/css/tool-call.css +7 -7
- package/css/tooltip.css +1 -1
- package/css/tree-select.css +2 -2
- package/dist/css/accordion.css +269 -0
- package/dist/css/affix.css +47 -0
- package/dist/css/alert.css +247 -0
- package/dist/css/anchor.css +252 -0
- package/dist/css/approval.css +501 -0
- package/dist/css/avatar-group.css +99 -0
- package/dist/css/avatar.css +98 -0
- package/dist/css/back-top.css +161 -0
- package/dist/css/badge.css +205 -0
- package/dist/css/bar-code.css +62 -0
- package/dist/css/breadcrumb.css +230 -0
- package/dist/css/button-group.css +263 -0
- package/dist/css/button.css +219 -0
- package/dist/css/calendar-picker.css +467 -0
- package/dist/css/calendar-range-picker.css +554 -0
- package/dist/css/card.css +221 -0
- package/dist/css/carousel.css +710 -0
- package/dist/css/cartesian-chart.css +830 -0
- package/dist/css/cascader.css +961 -0
- package/dist/css/checkbox-group.css +358 -0
- package/dist/css/checkbox.css +257 -0
- package/dist/css/citation.css +470 -0
- package/dist/css/clipboard.css +315 -0
- package/dist/css/code-view.css +374 -0
- package/dist/css/collapsible.css +185 -0
- package/dist/css/color-field.css +176 -0
- package/dist/css/color-picker.css +595 -0
- package/dist/css/color-slider.css +281 -0
- package/dist/css/color-swatch-picker.css +250 -0
- package/dist/css/color-swatch.css +35 -0
- package/dist/css/combobox.css +574 -0
- package/dist/css/command.css +399 -0
- package/dist/css/context-menu.css +420 -0
- package/dist/css/date-field.css +317 -0
- package/dist/css/date-picker.css +868 -0
- package/dist/css/date-range-picker.css +886 -0
- package/dist/css/description.css +67 -0
- package/dist/css/descriptions.css +299 -0
- package/dist/css/dialog.css +455 -0
- package/dist/css/diff-view.css +513 -0
- package/dist/css/download-trigger.css +151 -0
- package/dist/css/drawer.css +552 -0
- package/dist/css/editable.css +295 -0
- package/dist/css/empty-state.css +163 -0
- package/dist/css/field-array.css +226 -0
- package/dist/css/field.css +166 -0
- package/dist/css/fieldset.css +102 -0
- package/dist/css/file-upload.css +429 -0
- package/dist/css/flex.css +441 -0
- package/dist/css/float-button.css +569 -0
- package/dist/css/floating-panel.css +429 -0
- package/dist/css/focus.css +46 -0
- package/dist/css/forced-colors.css +93 -0
- package/dist/css/form.css +393 -0
- package/dist/css/funnel-chart.css +106 -0
- package/dist/css/graph-chart.css +205 -0
- package/dist/css/grid-list.css +235 -0
- package/dist/css/grid.css +1201 -0
- package/dist/css/heatmap.css +552 -0
- package/dist/css/hierarchy-chart.css +298 -0
- package/dist/css/highlight.css +41 -0
- package/dist/css/hover-card.css +226 -0
- package/dist/css/icon.css +225 -0
- package/dist/css/image-cropper.css +373 -0
- package/dist/css/image-viewer.css +538 -0
- package/dist/css/image.css +98 -0
- package/dist/css/infinite-scroll.css +77 -0
- package/dist/css/input-group.css +275 -0
- package/dist/css/json-viewer.css +379 -0
- package/dist/css/kbd.css +72 -0
- package/dist/css/label.css +78 -0
- package/dist/css/layers.css +7 -0
- package/dist/css/layout.css +372 -0
- package/dist/css/liquid.css +106 -0
- package/dist/css/list.css +152 -0
- package/dist/css/listbox.css +390 -0
- package/dist/css/loading-bar.css +141 -0
- package/dist/css/log.css +306 -0
- package/dist/css/markdown-stream.css +149 -0
- package/dist/css/marquee.css +378 -0
- package/dist/css/masonry.css +70 -0
- package/dist/css/matrix-code.css +67 -0
- package/dist/css/mention.css +393 -0
- package/dist/css/menu.css +364 -0
- package/dist/css/menubar.css +456 -0
- package/dist/css/message-feed.css +318 -0
- package/dist/css/navigation-menu.css +513 -0
- package/dist/css/notification.css +782 -0
- package/dist/css/number-animation.css +44 -0
- package/dist/css/number-field.css +252 -0
- package/dist/css/overlay-arrow.css +56 -0
- package/dist/css/page-header.css +184 -0
- package/dist/css/pagination.css +450 -0
- package/dist/css/password-input.css +391 -0
- package/dist/css/pie-chart.css +247 -0
- package/dist/css/pin-input.css +199 -0
- package/dist/css/pointer.css +36 -0
- package/dist/css/popconfirm.css +320 -0
- package/dist/css/popover.css +279 -0
- package/dist/css/progress.css +501 -0
- package/dist/css/prompt-input.css +260 -0
- package/dist/css/question-flow.css +553 -0
- package/dist/css/radar-chart.css +233 -0
- package/dist/css/radio-group.css +598 -0
- package/dist/css/rating.css +294 -0
- package/dist/css/reasoning.css +343 -0
- package/dist/css/reset.css +117 -0
- package/dist/css/resizable.css +242 -0
- package/dist/css/sankey-chart.css +174 -0
- package/dist/css/scroll-area.css +240 -0
- package/dist/css/scrollbar.css +204 -0
- package/dist/css/select.css +612 -0
- package/dist/css/separator.css +122 -0
- package/dist/css/side-nav.css +476 -0
- package/dist/css/signature-pad.css +179 -0
- package/dist/css/skeleton.css +161 -0
- package/dist/css/slider.css +374 -0
- package/dist/css/sortable.css +228 -0
- package/dist/css/sparkline.css +164 -0
- package/dist/css/spinner.css +236 -0
- package/dist/css/splitter.css +159 -0
- package/dist/css/statistic.css +137 -0
- package/dist/css/steps.css +627 -0
- package/dist/css/switch.css +351 -0
- package/dist/css/table.css +1145 -0
- package/dist/css/tabs.css +944 -0
- package/dist/css/tag-group.css +247 -0
- package/dist/css/tag.css +310 -0
- package/dist/css/tags-input.css +322 -0
- package/dist/css/text-field.css +197 -0
- package/dist/css/time-field.css +277 -0
- package/dist/css/time-picker.css +707 -0
- package/dist/css/time-range-picker.css +746 -0
- package/dist/css/timeline.css +423 -0
- package/dist/css/timer.css +123 -0
- package/dist/css/timestamp.css +34 -0
- package/dist/css/toggle-group.css +424 -0
- package/dist/css/toggle.css +146 -0
- package/dist/css/tone.css +189 -0
- package/dist/css/tool-call.css +429 -0
- package/dist/css/toolbar.css +365 -0
- package/dist/css/tooltip.css +218 -0
- package/dist/css/tour.css +439 -0
- package/dist/css/transfer.css +638 -0
- package/dist/css/tree-select.css +878 -0
- package/dist/css/tree.css +733 -0
- package/dist/css/truncate.css +108 -0
- package/dist/css/typography.css +472 -0
- package/dist/css/undefined.css +58 -0
- package/dist/css/virtualizer.css +166 -0
- package/dist/css/visually-hidden.css +20 -0
- package/dist/css/watermark.css +82 -0
- package/dist/family/action-control.css +487 -0
- package/dist/family/chart.css +480 -0
- package/dist/family/check-mark.css +94 -0
- package/dist/family/choice-card.css +97 -0
- package/dist/family/collection-item.css +764 -0
- package/dist/family/field-chrome.css +287 -0
- package/dist/family/loading-ring.css +95 -0
- package/dist/family/material.css +72 -0
- package/dist/family/menu-choice.css +56 -0
- package/dist/family/motion.css +363 -0
- package/dist/family/swatch.css +59 -0
- package/dist/family/tag-list.css +59 -0
- package/family/action-control.css +3 -12
- package/index.css +6882 -6809
- package/index.unlayered.css +6884 -6811
- package/package.json +165 -164
package/css/notification.css
CHANGED
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
}
|
|
448
448
|
|
|
449
449
|
/* 轻提示:方盒自带一圈内衬,与间距合起来让出字形到正文的那段距离 */
|
|
450
|
-
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-indicator'] {
|
|
450
|
+
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-indicator']:where([data-scope='notification']) {
|
|
451
451
|
flex: none;
|
|
452
452
|
box-sizing: content-box;
|
|
453
453
|
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
@@ -484,17 +484,17 @@
|
|
|
484
484
|
transition: opacity var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
-
[data-scope='notification'][data-part='item'][data-tone='success'] [data-part='item-indicator']:empty::after {
|
|
487
|
+
[data-scope='notification'][data-part='item'][data-tone='success'] [data-part='item-indicator']:where([data-scope='notification']):empty::after {
|
|
488
488
|
-webkit-mask-image: var(--xh-glyph-mark-check);
|
|
489
489
|
mask-image: var(--xh-glyph-mark-check);
|
|
490
490
|
}
|
|
491
491
|
|
|
492
|
-
[data-scope='notification'][data-part='item'][data-tone='warning'] [data-part='item-indicator']:empty::after {
|
|
492
|
+
[data-scope='notification'][data-part='item'][data-tone='warning'] [data-part='item-indicator']:where([data-scope='notification']):empty::after {
|
|
493
493
|
-webkit-mask-image: var(--xh-glyph-mark-warning);
|
|
494
494
|
mask-image: var(--xh-glyph-mark-warning);
|
|
495
495
|
}
|
|
496
496
|
|
|
497
|
-
[data-scope='notification'][data-part='item'][data-tone='danger'] [data-part='item-indicator']:empty::after {
|
|
497
|
+
[data-scope='notification'][data-part='item'][data-tone='danger'] [data-part='item-indicator']:where([data-scope='notification']):empty::after {
|
|
498
498
|
-webkit-mask-image: var(--xh-glyph-mark-close);
|
|
499
499
|
mask-image: var(--xh-glyph-mark-close);
|
|
500
500
|
}
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
min-inline-size: 0;
|
|
514
514
|
}
|
|
515
515
|
|
|
516
|
-
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-content'] {
|
|
516
|
+
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-content']:where([data-scope='notification']) {
|
|
517
517
|
flex: 1 1 auto;
|
|
518
518
|
align-self: center;
|
|
519
519
|
row-gap: 0;
|
|
@@ -533,14 +533,14 @@
|
|
|
533
533
|
}
|
|
534
534
|
|
|
535
535
|
/* 轻提示的语气落到标题与行首字形:一句话的结果,颜色本身就是信息 */
|
|
536
|
-
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-title'] {
|
|
536
|
+
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-title']:where([data-scope='notification']) {
|
|
537
537
|
min-inline-size: 0;
|
|
538
538
|
color: var(--xh-notification-title-fg, var(--xh-_tone-fg));
|
|
539
539
|
}
|
|
540
540
|
|
|
541
541
|
/* 卡片的叉钉在右上角,标题得给它让位;说明与操作在第二行往下,不受影响。
|
|
542
542
|
让位量与叉的贴边取同一个值,作者改了贴边槽,标题让出的那段跟着走 */
|
|
543
|
-
[data-scope='notification'][data-part='item'][data-preset='card']:has([data-part='item-close-trigger']) [data-part='item-title'] {
|
|
543
|
+
[data-scope='notification'][data-part='item'][data-preset='card']:has([data-part='item-close-trigger']) [data-part='item-title']:where([data-scope='notification']) {
|
|
544
544
|
padding-inline-end: calc(
|
|
545
545
|
var(--xh-notification-close-size, var(--xh-control-h-sm)) +
|
|
546
546
|
var(--xh-notification-close-inset, var(--xh-surface-action-inset))
|
|
@@ -560,7 +560,7 @@
|
|
|
560
560
|
}
|
|
561
561
|
|
|
562
562
|
/* 轻提示的说明只是一行短上下文,行高收紧到正文之下 */
|
|
563
|
-
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-description'] {
|
|
563
|
+
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-description']:where([data-scope='notification']) {
|
|
564
564
|
min-inline-size: 0;
|
|
565
565
|
line-height: var(--xh-notification-description-leading, var(--xh-leading-normal));
|
|
566
566
|
}
|
|
@@ -595,7 +595,7 @@
|
|
|
595
595
|
}
|
|
596
596
|
|
|
597
597
|
/* 卡片:横跨整张卡片的一行,它不是正文的一部分,不跟着第二列走;两端取胶囊 */
|
|
598
|
-
[data-scope='notification'][data-part='item'][data-preset='card'] [data-part='item-progress'] {
|
|
598
|
+
[data-scope='notification'][data-part='item'][data-preset='card'] [data-part='item-progress']:where([data-scope='notification']) {
|
|
599
599
|
--xh-_countdown-radius: var(--xh-notification-progress-radius, var(--xh-shape-pill));
|
|
600
600
|
|
|
601
601
|
grid-column: 1 / -1;
|
|
@@ -603,7 +603,7 @@
|
|
|
603
603
|
}
|
|
604
604
|
|
|
605
605
|
/* 轻提示:贴着卡片底边走 */
|
|
606
|
-
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-progress'] {
|
|
606
|
+
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-progress']:where([data-scope='notification']) {
|
|
607
607
|
position: absolute;
|
|
608
608
|
inset-block-end: 0;
|
|
609
609
|
inset-inline-start: 0;
|
|
@@ -621,7 +621,7 @@
|
|
|
621
621
|
animation-timing-function: steps(var(--xh-_notification-progress-steps, 1), end);
|
|
622
622
|
}
|
|
623
623
|
|
|
624
|
-
[data-scope='notification'][data-part='item'][data-paused] [data-part='item-progress'] {
|
|
624
|
+
[data-scope='notification'][data-part='item'][data-paused] [data-part='item-progress']:where([data-scope='notification']) {
|
|
625
625
|
animation-play-state: paused;
|
|
626
626
|
}
|
|
627
627
|
|
|
@@ -659,7 +659,7 @@
|
|
|
659
659
|
}
|
|
660
660
|
|
|
661
661
|
/* 轻提示是单行 flex,按钮不参与伸缩:文案长了该换行的是文字 */
|
|
662
|
-
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-action-trigger'] {
|
|
662
|
+
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-action-trigger']:where([data-scope='notification']) {
|
|
663
663
|
flex: none;
|
|
664
664
|
align-self: center;
|
|
665
665
|
}
|
|
@@ -692,14 +692,14 @@
|
|
|
692
692
|
}
|
|
693
693
|
|
|
694
694
|
/* 卡片:钉在右上角的内衬处,不参与网格排布——留在流里它会变成正文下面的第三行 */
|
|
695
|
-
[data-scope='notification'][data-part='item'][data-preset='card'] [data-part='item-close-trigger'] {
|
|
695
|
+
[data-scope='notification'][data-part='item'][data-preset='card'] [data-part='item-close-trigger']:where([data-scope='notification']) {
|
|
696
696
|
position: absolute;
|
|
697
697
|
inset-block-start: var(--xh-notification-close-inset, var(--xh-surface-action-inset));
|
|
698
698
|
inset-inline-end: var(--xh-notification-close-inset, var(--xh-surface-action-inset));
|
|
699
699
|
}
|
|
700
700
|
|
|
701
701
|
/* 轻提示:排在一行短消息的行尾,与文本列一起垂直居中 */
|
|
702
|
-
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-close-trigger'] {
|
|
702
|
+
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-close-trigger']:where([data-scope='notification']) {
|
|
703
703
|
flex: none;
|
|
704
704
|
align-self: center;
|
|
705
705
|
}
|
|
@@ -708,13 +708,13 @@
|
|
|
708
708
|
hover-focus 显示策略:那一档用 visibility 收起,这颗叉占 Tab 位,收成 visibility: hidden
|
|
709
709
|
后键盘就够不到它了;这里只压 opacity 与 pointer-events,焦点仍能落进来 */
|
|
710
710
|
@media (hover: hover) {
|
|
711
|
-
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-close-trigger'] {
|
|
711
|
+
[data-scope='notification'][data-part='item'][data-preset='toast'] [data-part='item-close-trigger']:where([data-scope='notification']) {
|
|
712
712
|
opacity: 0;
|
|
713
713
|
pointer-events: none;
|
|
714
714
|
}
|
|
715
715
|
|
|
716
|
-
[data-scope='notification'][data-part='item'][data-preset='toast']:hover [data-part='item-close-trigger'],
|
|
717
|
-
[data-scope='notification'][data-part='item'][data-preset='toast']:focus-within [data-part='item-close-trigger'] {
|
|
716
|
+
[data-scope='notification'][data-part='item'][data-preset='toast']:hover [data-part='item-close-trigger']:where([data-scope='notification']),
|
|
717
|
+
[data-scope='notification'][data-part='item'][data-preset='toast']:focus-within [data-part='item-close-trigger']:where([data-scope='notification']) {
|
|
718
718
|
opacity: 1;
|
|
719
719
|
pointer-events: auto;
|
|
720
720
|
}
|
|
@@ -722,7 +722,7 @@
|
|
|
722
722
|
|
|
723
723
|
/* 收拢的后层只允许最前一条露出关闭入口;触屏没有 hover,必须显式收起后层的叉 */
|
|
724
724
|
[data-scope='notification'][data-part='group'][data-stacked] [data-scope='notification'][data-part='item'][data-stack-index]:not([data-frontmost]):not([data-expanded])
|
|
725
|
-
[data-part='item-close-trigger'] {
|
|
725
|
+
[data-part='item-close-trigger']:where([data-scope='notification']) {
|
|
726
726
|
opacity: 0;
|
|
727
727
|
pointer-events: none;
|
|
728
728
|
}
|
package/css/number-field.css
CHANGED
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
/* 盒内 input:无边框无底无圆角无落影由家族重置,观感全归 control。
|
|
122
122
|
数字居中排在两个按钮之间,行内内衬留给它自己(control 不给内衬);
|
|
123
123
|
前后缀图标/文字直接流式排在 input 两侧,不用再绝对定位 */
|
|
124
|
-
[data-scope='number-field'][data-part='control'] [data-part='input'] {
|
|
124
|
+
[data-scope='number-field'][data-part='control'] [data-part='input']:where([data-scope='number-field']) {
|
|
125
125
|
--xh-field-input-fg: var(--xh-number-field-input-fg, var(--xh-fg-default));
|
|
126
126
|
--xh-field-input-font-size: var(--xh-number-field-input-font-size, var(--xh-_number-field-font-size));
|
|
127
127
|
--xh-field-placeholder-fg: var(--xh-number-field-placeholder-fg, var(--xh-fg-subtle));
|
|
@@ -137,8 +137,8 @@
|
|
|
137
137
|
/* 盒内按钮:正方视觉盒、inset 圆角、悬停 100 / 按下 200 与 0.97 按压、粗指针热区与
|
|
138
138
|
:focus-visible 关环全由 Action Control 的 field-inset ghost 档给,组件只映射既有覆盖槽。
|
|
139
139
|
常态只剩符号,符号取默认前景,悬停与按下才浮出底色 */
|
|
140
|
-
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger'],
|
|
141
|
-
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger'] {
|
|
140
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:where([data-scope='number-field']),
|
|
141
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:where([data-scope='number-field']) {
|
|
142
142
|
--xh-action-visual-size: var(--xh-number-field-trigger-size, var(--xh-_action-profile-visual-size));
|
|
143
143
|
--xh-action-min-inline-size: var(--xh-number-field-trigger-size, var(--xh-_action-profile-visual-size));
|
|
144
144
|
--xh-action-radius: var(--xh-number-field-trigger-radius, var(--xh-shape-inset));
|
|
@@ -159,16 +159,16 @@
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
/* DOM 顺序不承担视觉位置:既有用法即使把减钮写在 input 前面,默认仍统一收进右侧动作组。 */
|
|
162
|
-
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger'] {
|
|
162
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:where([data-scope='number-field']) {
|
|
163
163
|
order: 1;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger'] {
|
|
166
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:where([data-scope='number-field']) {
|
|
167
167
|
order: 2;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger'][hidden],
|
|
171
|
-
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger'][hidden] {
|
|
170
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger'][hidden]:where([data-scope='number-field']),
|
|
171
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger'][hidden]:where([data-scope='number-field']) {
|
|
172
172
|
display: none;
|
|
173
173
|
}
|
|
174
174
|
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
::before 已被兜底字形占着,::after 在粗指针下是家族给的 44px 热区,几何只能落在
|
|
178
178
|
background-image 上:一条 1px × 半高的渐变贴在逻辑起始侧,底色换态时它仍叠在上层。
|
|
179
179
|
线只画在动作组第一颗减钮的逻辑起始侧;background-position 是物理轴,RTL 另给一条换边。 */
|
|
180
|
-
[data-scope='number-field'][data-part='control']:has([data-part='input']) [data-part='decrement-trigger'] {
|
|
180
|
+
[data-scope='number-field'][data-part='control']:has([data-part='input']) [data-part='decrement-trigger']:where([data-scope='number-field']) {
|
|
181
181
|
background-image: linear-gradient(
|
|
182
182
|
var(--xh-number-field-trigger-divider, var(--xh-material-soft-separator)),
|
|
183
183
|
var(--xh-number-field-trigger-divider, var(--xh-material-soft-separator))
|
|
@@ -187,12 +187,12 @@
|
|
|
187
187
|
background-size: var(--xh-stroke-thin) var(--xh-number-field-trigger-divider-h, var(--xh-_number-field-divider-h));
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
[dir='rtl'] [data-scope='number-field'][data-part='control']:has([data-part='input']) [data-part='decrement-trigger'] {
|
|
190
|
+
[dir='rtl'] [data-scope='number-field'][data-part='control']:has([data-part='input']) [data-part='decrement-trigger']:where([data-scope='number-field']) {
|
|
191
191
|
background-position: 100% 50%;
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
/* 没写内容就由皮肤画兜底字形;作者往部件里塞了自己的图形,这几条即不命中 */
|
|
195
|
-
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:empty::before {
|
|
195
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:where([data-scope='number-field']):empty::before {
|
|
196
196
|
content: '';
|
|
197
197
|
display: inline-block;
|
|
198
198
|
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
mask: var(--xh-glyph-mark-plus) center / contain no-repeat;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:empty::before {
|
|
206
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:where([data-scope='number-field']):empty::before {
|
|
207
207
|
content: '';
|
|
208
208
|
display: inline-block;
|
|
209
209
|
inline-size: var(--xh-icon-size, var(--xh-glyph-size-text));
|
|
@@ -216,7 +216,7 @@
|
|
|
216
216
|
|
|
217
217
|
/* 高对比档整层丢弃 background-image,分隔线改用系统色重画,并关掉这一颗钮的强制换色 */
|
|
218
218
|
@media (forced-colors: active) {
|
|
219
|
-
[data-scope='number-field'][data-part='control']:has([data-part='input']) [data-part='decrement-trigger'] {
|
|
219
|
+
[data-scope='number-field'][data-part='control']:has([data-part='input']) [data-part='decrement-trigger']:where([data-scope='number-field']) {
|
|
220
220
|
background-image: linear-gradient(ButtonText, ButtonText);
|
|
221
221
|
forced-color-adjust: none;
|
|
222
222
|
}
|
|
@@ -233,19 +233,19 @@
|
|
|
233
233
|
字形退出强制换色、直接写系统色(不能取 currentColor:退出强制换色的伪元素读到的是被系统换掉之前的作者色):
|
|
234
234
|
按钮面上取 ButtonText,悬停与按下时家族把按钮涂成 Highlight、字形换 HighlightText;
|
|
235
235
|
禁用取 GrayText */
|
|
236
|
-
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:empty::before,
|
|
237
|
-
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:empty::before {
|
|
236
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:where([data-scope='number-field']):empty::before,
|
|
237
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:where([data-scope='number-field']):empty::before {
|
|
238
238
|
forced-color-adjust: none;
|
|
239
239
|
background-color: ButtonText;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before,
|
|
243
|
-
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
242
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger']:where([data-scope='number-field']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before,
|
|
243
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger']:where([data-scope='number-field']):not([data-disabled]):not([data-loading]):is(:hover, :active, [data-pressed]):empty::before {
|
|
244
244
|
background-color: HighlightText;
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger'][data-disabled]:empty::before,
|
|
248
|
-
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger'][data-disabled]:empty::before {
|
|
247
|
+
[data-scope='number-field'][data-part='control'] [data-part='increment-trigger'][data-disabled]:where([data-scope='number-field']):empty::before,
|
|
248
|
+
[data-scope='number-field'][data-part='control'] [data-part='decrement-trigger'][data-disabled]:where([data-scope='number-field']):empty::before {
|
|
249
249
|
background-color: GrayText;
|
|
250
250
|
}
|
|
251
251
|
}
|
package/css/page-header.css
CHANGED
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
[data-scope='page-header'][data-part='root']:has(> [data-part='description'])
|
|
152
|
-
> :is([data-part='back-trigger'], [data-part='media'], [data-part='extra']) {
|
|
152
|
+
> :is([data-part='back-trigger'], [data-part='media'], [data-part='extra']):where([data-scope='page-header']) {
|
|
153
153
|
grid-row: span 2;
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
grid-column: 2;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
[data-scope='page-header'][data-part='root'] > [data-part='extra'] {
|
|
169
|
+
[data-scope='page-header'][data-part='root'] > [data-part='extra']:where([data-scope='page-header']) {
|
|
170
170
|
grid-column: 1 / -1;
|
|
171
171
|
grid-row: auto;
|
|
172
172
|
margin-inline-start: 0;
|
package/css/password-input.css
CHANGED
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
分不出焦点在框里还是在钮上,所以钮上再画一圈自己的环(家族只对不占 Tab 位的内嵌钮关环)。
|
|
203
203
|
环往内收,压在按钮自己的方框里,不与盒子外面那一圈叠在一起。
|
|
204
204
|
指示焦点只能用环不能用底色:可用的几档底色压在盒底上都到不了 3:1,换了色也等于没画 */
|
|
205
|
-
[data-scope='password-input'][data-part='control'] [data-part='visibility-trigger']:focus-visible {
|
|
205
|
+
[data-scope='password-input'][data-part='control'] [data-part='visibility-trigger']:where([data-scope='password-input']):focus-visible {
|
|
206
206
|
outline: var(--xh-ring-width) solid var(--xh-_password-input-ring);
|
|
207
207
|
outline-offset: var(--xh-ring-offset);
|
|
208
208
|
}
|
|
@@ -357,7 +357,7 @@
|
|
|
357
357
|
|
|
358
358
|
/* 关掉强制换色后,上面那圈自留的 :focus-visible 环与家族普通态的焦点底/字都会按作者色落地;
|
|
359
359
|
家族高对比块的特指度压不过它们,这里用同一选择器把环、底、字改回系统色 */
|
|
360
|
-
[data-scope='password-input'][data-part='control'] [data-part='visibility-trigger']:focus-visible {
|
|
360
|
+
[data-scope='password-input'][data-part='control'] [data-part='visibility-trigger']:where([data-scope='password-input']):focus-visible {
|
|
361
361
|
outline-color: Highlight;
|
|
362
362
|
background-color: ButtonFace;
|
|
363
363
|
color: ButtonText;
|
package/css/popconfirm.css
CHANGED
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
/* 箭头绝对定位挂在 content 上,不占格:吃到栅格位的话它的贴边就从格线起算,被内衬推进面里 */
|
|
148
|
-
[data-scope='popconfirm'][data-part='content'] > [data-part='arrow'] {
|
|
148
|
+
[data-scope='popconfirm'][data-part='content'] > [data-part='arrow']:where([data-scope='popconfirm']) {
|
|
149
149
|
grid-column: auto;
|
|
150
150
|
}
|
|
151
151
|
|
|
@@ -234,11 +234,11 @@
|
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
/* 并排落在最后一行的右侧两格;取消在左、确认在右 */
|
|
237
|
-
[data-scope='popconfirm'][data-part='content'] > [data-part='cancel-trigger'] {
|
|
237
|
+
[data-scope='popconfirm'][data-part='content'] > [data-part='cancel-trigger']:where([data-scope='popconfirm']) {
|
|
238
238
|
grid-column: 2;
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
-
[data-scope='popconfirm'][data-part='content'] > [data-part='confirm-trigger'] {
|
|
241
|
+
[data-scope='popconfirm'][data-part='content'] > [data-part='confirm-trigger']:where([data-scope='popconfirm']) {
|
|
242
242
|
grid-column: 3;
|
|
243
243
|
}
|
|
244
244
|
|
package/css/question-flow.css
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
/* 卡片出现时滑入;落在首帧就在的列表条目里(历史消息)时直接呈现,不跟着整屏一起入场 */
|
|
44
|
-
[data-scope='question-flow'][data-part='root']:not([data-scope][data-part='item'][data-instant]
|
|
44
|
+
[data-scope='question-flow'][data-part='root']:not([data-scope][data-part='item'][data-instant] :where([data-scope='question-flow'])) {
|
|
45
45
|
animation: xh-item-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -201,27 +201,27 @@
|
|
|
201
201
|
位次就是到达顺序。落在首帧就在的列表条目里(历史消息)时直接呈现。
|
|
202
202
|
backwards 不能省:等待期间起帧不生效的话,后面几条会先露一下再跳回去。
|
|
203
203
|
第 6 条起并到同一拍上 */
|
|
204
|
-
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:not([data-scope][data-part='item'][data-instant]
|
|
204
|
+
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:where([data-scope='question-flow']):not([data-scope][data-part='item'][data-instant] :where([data-scope='question-flow'])) {
|
|
205
205
|
animation: xh-rise-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong) backwards;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:nth-child(2):not([data-scope][data-part='item'][data-instant]
|
|
208
|
+
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:where([data-scope='question-flow']):nth-child(2):not([data-scope][data-part='item'][data-instant] :where([data-scope='question-flow'])) {
|
|
209
209
|
animation-delay: calc(var(--xh-motion-stagger-step) * 1);
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:nth-child(3):not([data-scope][data-part='item'][data-instant]
|
|
212
|
+
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:where([data-scope='question-flow']):nth-child(3):not([data-scope][data-part='item'][data-instant] :where([data-scope='question-flow'])) {
|
|
213
213
|
animation-delay: calc(var(--xh-motion-stagger-step) * 2);
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:nth-child(4):not([data-scope][data-part='item'][data-instant]
|
|
216
|
+
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:where([data-scope='question-flow']):nth-child(4):not([data-scope][data-part='item'][data-instant] :where([data-scope='question-flow'])) {
|
|
217
217
|
animation-delay: calc(var(--xh-motion-stagger-step) * 3);
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:nth-child(5):not([data-scope][data-part='item'][data-instant]
|
|
220
|
+
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:where([data-scope='question-flow']):nth-child(5):not([data-scope][data-part='item'][data-instant] :where([data-scope='question-flow'])) {
|
|
221
221
|
animation-delay: calc(var(--xh-motion-stagger-step) * 4);
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:nth-child(n + 6):not([data-scope][data-part='item'][data-instant]
|
|
224
|
+
[data-scope='question-flow'][data-part='question'][data-current] [data-part='item']:where([data-scope='question-flow']):nth-child(n + 6):not([data-scope][data-part='item'][data-instant] :where([data-scope='question-flow'])) {
|
|
225
225
|
animation-delay: calc(var(--xh-motion-stagger-step) * 5);
|
|
226
226
|
}
|
|
227
227
|
|
|
@@ -504,7 +504,7 @@
|
|
|
504
504
|
}
|
|
505
505
|
|
|
506
506
|
/* 落定结果弹出;落在首帧就在的列表条目里(历史消息)时直接呈现,不跟着整屏一起入场 */
|
|
507
|
-
[data-scope='question-flow'][data-part='result']:not([data-scope][data-part='item'][data-instant]
|
|
507
|
+
[data-scope='question-flow'][data-part='result']:not([data-scope][data-part='item'][data-instant] :where([data-scope='question-flow'])) {
|
|
508
508
|
animation: xh-pop-in var(--xh-motion-duration-enter) var(--xh-motion-ease-enter-strong);
|
|
509
509
|
}
|
|
510
510
|
|
package/css/radar-chart.css
CHANGED
|
@@ -167,12 +167,12 @@
|
|
|
167
167
|
|
|
168
168
|
/* —— 纹理:颜色不可用或不可靠时(强制色、打印、祖先写了 data-xh-chart-patterns),面积改用本系列在 defs 里的
|
|
169
169
|
纹理填充、描出轮廓,轮廓换线型。色标的纹理在配方里 —— */
|
|
170
|
-
:where([data-xh-chart-patterns]) [data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='area-fill'] {
|
|
170
|
+
:where([data-xh-chart-patterns]) [data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='area-fill']:where([data-scope='radar-chart']) {
|
|
171
171
|
fill: var(--xh-_chart-pattern);
|
|
172
172
|
fill-opacity: 1;
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
:where([data-xh-chart-patterns]) [data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='line'] {
|
|
175
|
+
:where([data-xh-chart-patterns]) [data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='line']:where([data-scope='radar-chart']) {
|
|
176
176
|
stroke-dasharray: var(--xh-_chart-dash);
|
|
177
177
|
}
|
|
178
178
|
|
|
@@ -204,13 +204,13 @@
|
|
|
204
204
|
stroke: Canvas;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
-
[data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='area-fill'] {
|
|
207
|
+
[data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='area-fill']:where([data-scope='radar-chart']) {
|
|
208
208
|
forced-color-adjust: none;
|
|
209
209
|
fill: var(--xh-_chart-pattern);
|
|
210
210
|
fill-opacity: 1;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
[data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='line'] {
|
|
213
|
+
[data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='line']:where([data-scope='radar-chart']) {
|
|
214
214
|
stroke-dasharray: var(--xh-_chart-dash);
|
|
215
215
|
}
|
|
216
216
|
}
|
|
@@ -221,12 +221,12 @@
|
|
|
221
221
|
display: none;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
[data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='area-fill'] {
|
|
224
|
+
[data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='area-fill']:where([data-scope='radar-chart']) {
|
|
225
225
|
fill: var(--xh-_chart-pattern);
|
|
226
226
|
fill-opacity: 1;
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
[data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='line'] {
|
|
229
|
+
[data-scope='radar-chart'][data-xh-chart-pattern] > [data-part='line']:where([data-scope='radar-chart']) {
|
|
230
230
|
stroke-dasharray: var(--xh-_chart-dash);
|
|
231
231
|
}
|
|
232
232
|
}
|
package/css/rating.css
CHANGED
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
justify-content: start;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
[data-scope='rating'][data-part='root']:has(> [data-part='value-text']) > [data-part='label'] {
|
|
81
|
+
[data-scope='rating'][data-part='root']:has(> [data-part='value-text']) > [data-part='label']:where([data-scope='rating']) {
|
|
82
82
|
grid-column: 1 / -1;
|
|
83
83
|
}
|
|
84
84
|
|
package/css/select.css
CHANGED
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
|
|
225
225
|
/* 标签行露面时 value-text 让位:两者是触发器里的同一格,占位文字与标签不同屏。
|
|
226
226
|
value-text 留在 DOM 里,trigger 的可及名仍从它取到完整的选中项文本 */
|
|
227
|
-
[data-scope='select'][data-part='trigger']:has([data-part='tag-list']:not([hidden])) [data-part='value-text'] {
|
|
227
|
+
[data-scope='select'][data-part='trigger']:has([data-part='tag-list']:not([hidden])) [data-part='value-text']:where([data-scope='select']) {
|
|
228
228
|
display: none;
|
|
229
229
|
}
|
|
230
230
|
|
|
@@ -256,7 +256,7 @@
|
|
|
256
256
|
/* 有值时清空钮顶上来,箭头让位:两个图标并排堆着,用户分不清点哪个。
|
|
257
257
|
判据查的是盒里此刻真有一颗没收起的清空钮,不是「有没有值」——
|
|
258
258
|
作者没摆清空钮时箭头照常留着,不然让了位没人接,指示符整个消失 */
|
|
259
|
-
[data-scope='select'][data-part='control']:has([data-part='clear-trigger']:not([hidden])) [data-part='indicator'] {
|
|
259
|
+
[data-scope='select'][data-part='control']:has([data-part='clear-trigger']:not([hidden])) [data-part='indicator']:where([data-scope='select']) {
|
|
260
260
|
display: none;
|
|
261
261
|
}
|
|
262
262
|
|
package/css/separator.css
CHANGED
|
@@ -109,8 +109,8 @@
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
/* 文字靠边:靠哪边就把那一侧的线收成一小截,另一侧照旧等分 */
|
|
112
|
-
[data-scope='separator'][data-part='root'][data-align='start'] > [data-part='line']:first-child,
|
|
113
|
-
[data-scope='separator'][data-part='root'][data-align='end'] > [data-part='line']:last-child {
|
|
112
|
+
[data-scope='separator'][data-part='root'][data-align='start'] > [data-part='line']:where([data-scope='separator']):first-child,
|
|
113
|
+
[data-scope='separator'][data-part='root'][data-align='end'] > [data-part='line']:where([data-scope='separator']):last-child {
|
|
114
114
|
flex: 0 0 var(--xh-separator-align-length, var(--xh-space-6));
|
|
115
115
|
}
|
|
116
116
|
|
package/css/side-nav.css
CHANGED
|
@@ -112,11 +112,11 @@
|
|
|
112
112
|
|
|
113
113
|
/* 折叠一开始搜索框就与行文字一起淡出,展开等整栏宽度落定才淡入;落成图标栏之后让位:
|
|
114
114
|
留着高度、不可见也不可聚焦(过滤此时暂停),下面的行不上下跳 */
|
|
115
|
-
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='input'] {
|
|
115
|
+
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='input']:where([data-scope='side-nav']) {
|
|
116
116
|
opacity: 0;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='input'] {
|
|
119
|
+
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='input']:where([data-scope='side-nav']) {
|
|
120
120
|
visibility: hidden;
|
|
121
121
|
}
|
|
122
122
|
|
|
@@ -171,13 +171,13 @@
|
|
|
171
171
|
|
|
172
172
|
/* 图标栏里分组标题没有落点:字淡成透明、仍参与播报,标题留着自己的高度,下面的行不上下跳;
|
|
173
173
|
折叠一开始就淡出,展开等整栏宽度落定才淡入。落成图标栏之后在这一格里画一道细分隔,分组仍看得出来 */
|
|
174
|
-
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='group-label'] {
|
|
174
|
+
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='group-label']:where([data-scope='side-nav']) {
|
|
175
175
|
overflow: hidden;
|
|
176
176
|
color: transparent;
|
|
177
177
|
white-space: nowrap;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='group-label']::after {
|
|
180
|
+
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='group-label']:where([data-scope='side-nav'])::after {
|
|
181
181
|
content: '';
|
|
182
182
|
position: absolute;
|
|
183
183
|
inset-inline: var(--xh-_side-nav-row-px);
|
|
@@ -275,9 +275,9 @@
|
|
|
275
275
|
|
|
276
276
|
/* 行文字与展开箭头的淡变:折叠一开始就淡出,此时仍在行里、由收窄的行宽裁着;展开时等整栏宽度落定才淡入。
|
|
277
277
|
弹出面板里的行不在此列 */
|
|
278
|
-
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='branch-text']:not([data-popout]
|
|
279
|
-
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='link-text']:not([data-popout]
|
|
280
|
-
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='branch-indicator']:not([data-popout]
|
|
278
|
+
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='branch-text']:where([data-scope='side-nav']):not([data-popout] :where([data-scope='side-nav'])),
|
|
279
|
+
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='link-text']:where([data-scope='side-nav']):not([data-popout] :where([data-scope='side-nav'])),
|
|
280
|
+
[data-scope='side-nav'][data-part='root']:is([data-collapsed], [data-animating]) [data-part='branch-indicator']:where([data-scope='side-nav']):not([data-popout] :where([data-scope='side-nav'])) {
|
|
281
281
|
opacity: 0;
|
|
282
282
|
}
|
|
283
283
|
|
|
@@ -286,8 +286,8 @@
|
|
|
286
286
|
藏成 display:none 它们就一个名字都没有了。
|
|
287
287
|
white-space: nowrap 防止 1px 宽把文本挤成竖排。
|
|
288
288
|
弹出面板里的行不在此列——面板是正常宽度的浮层,文字照常显示 */
|
|
289
|
-
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='branch-text']:not([data-popout]
|
|
290
|
-
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='link-text']:not([data-popout]
|
|
289
|
+
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='branch-text']:where([data-scope='side-nav']):not([data-popout] :where([data-scope='side-nav'])),
|
|
290
|
+
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='link-text']:where([data-scope='side-nav']):not([data-popout] :where([data-scope='side-nav'])) {
|
|
291
291
|
position: absolute;
|
|
292
292
|
inline-size: 1px;
|
|
293
293
|
block-size: 1px;
|
|
@@ -300,12 +300,12 @@
|
|
|
300
300
|
}
|
|
301
301
|
|
|
302
302
|
/* 展开指示是纯装饰(aria-hidden),落成图标栏之后整个不占位 */
|
|
303
|
-
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='branch-indicator']:not([data-popout]
|
|
303
|
+
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='branch-indicator']:where([data-scope='side-nav']):not([data-popout] :where([data-scope='side-nav'])) {
|
|
304
304
|
display: none;
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
-
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='branch-trigger']:not([data-popout]
|
|
308
|
-
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='link']:not([data-popout]
|
|
307
|
+
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='branch-trigger']:where([data-scope='side-nav']):not([data-popout] :where([data-scope='side-nav'])),
|
|
308
|
+
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='link']:where([data-scope='side-nav']):not([data-popout] :where([data-scope='side-nav'])) {
|
|
309
309
|
--xh-collection-inline-padding: 0;
|
|
310
310
|
|
|
311
311
|
justify-content: center;
|
|
@@ -441,7 +441,7 @@
|
|
|
441
441
|
|
|
442
442
|
@media (forced-colors: active) {
|
|
443
443
|
/* 图标栏里分组之间那道细分隔画的是一块底色,这一档里底色被统一换成 Canvas、整道消失;换成 GrayText 画回来 */
|
|
444
|
-
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='group-label']::after {
|
|
444
|
+
[data-scope='side-nav'][data-part='root'][data-collapsed]:not([data-animating]) [data-part='group-label']:where([data-scope='side-nav'])::after {
|
|
445
445
|
background: GrayText;
|
|
446
446
|
}
|
|
447
447
|
}
|
package/css/skeleton.css
CHANGED
|
@@ -90,13 +90,13 @@
|
|
|
90
90
|
* 微光扫的是一道亮带,呼吸改的是整根的浓淡——两者都表达"还在等",
|
|
91
91
|
* 换哪一档由作者定,缺省仍是微光。
|
|
92
92
|
*/
|
|
93
|
-
[data-scope='skeleton'][data-part='root'][data-animation='pulse'] [data-part='item'] {
|
|
93
|
+
[data-scope='skeleton'][data-part='root'][data-animation='pulse'] [data-part='item']:where([data-scope='skeleton']) {
|
|
94
94
|
background-image: none;
|
|
95
95
|
animation: xh-skeleton-pulse var(--xh-skeleton-pulse-duration, var(--xh-motion-loop-shimmer)) var(--xh-motion-ease-sweep) infinite alternate;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
/* 静止档:底色留着,两层动效都撤掉 */
|
|
99
|
-
[data-scope='skeleton'][data-part='root'][data-animation='none'] [data-part='item'] {
|
|
99
|
+
[data-scope='skeleton'][data-part='root'][data-animation='none'] [data-part='item']:where([data-scope='skeleton']) {
|
|
100
100
|
background-image: none;
|
|
101
101
|
animation: none;
|
|
102
102
|
}
|
|
@@ -104,17 +104,17 @@
|
|
|
104
104
|
/* 呼吸档自带一条动画,压不住下面基础降级里的 animation: none,这一档各自再写一份。
|
|
105
105
|
两组规则是同一件事的两个触发条件:系统偏好与作者打的 data-motion */
|
|
106
106
|
@media (prefers-reduced-motion: reduce) {
|
|
107
|
-
[data-scope='skeleton'][data-part='root'][data-animation='pulse'] [data-part='item'] {
|
|
107
|
+
[data-scope='skeleton'][data-part='root'][data-animation='pulse'] [data-part='item']:where([data-scope='skeleton']) {
|
|
108
108
|
animation: none;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
:where([data-motion='reduce']) [data-scope='skeleton'][data-part='root'][data-animation='pulse'] [data-part='item'] {
|
|
112
|
+
:where([data-motion='reduce']) [data-scope='skeleton'][data-part='root'][data-animation='pulse'] [data-part='item']:where([data-scope='skeleton']) {
|
|
113
113
|
animation: none;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
@media print {
|
|
117
|
-
[data-scope='skeleton'][data-part='root'][data-animation='pulse'] [data-part='item'] {
|
|
117
|
+
[data-scope='skeleton'][data-part='root'][data-animation='pulse'] [data-part='item']:where([data-scope='skeleton']) {
|
|
118
118
|
animation: none;
|
|
119
119
|
}
|
|
120
120
|
}
|
package/css/slider.css
CHANGED
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
排了刻度文案的横轨两侧各让出一段,那半个文案落进让出来的这一段里。
|
|
65
65
|
让在控件上而不是根上:轨道、刻度、拇指的坐标都以控件为基准,一起让开才不会彼此错位。 */
|
|
66
66
|
[data-scope='slider'][data-part='root']:has([data-part='tick-label'])
|
|
67
|
-
[data-part='control'][data-orientation='horizontal'] {
|
|
67
|
+
[data-part='control'][data-orientation='horizontal']:where([data-scope='slider']) {
|
|
68
68
|
margin-inline: var(--xh-slider-control-gutter, var(--xh-space-6));
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -335,27 +335,27 @@
|
|
|
335
335
|
|
|
336
336
|
/* 禁用:刻度点与文案由 tick-group 上的 data-disabled 下发(连接层不给每个刻度单发),
|
|
337
337
|
已过的刻度点与区间同色,文案换禁用前景,点它跳档的手型收掉 */
|
|
338
|
-
[data-scope='slider'][data-part='tick-group'][data-disabled] [data-part='tick'] {
|
|
338
|
+
[data-scope='slider'][data-part='tick-group'][data-disabled] [data-part='tick']:where([data-scope='slider']) {
|
|
339
339
|
background: var(--xh-slider-tick-bg-disabled, var(--xh-border-default));
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
[data-scope='slider'][data-part='tick-group'][data-disabled] [data-part='tick'][data-passed] {
|
|
342
|
+
[data-scope='slider'][data-part='tick-group'][data-disabled] [data-part='tick'][data-passed]:where([data-scope='slider']) {
|
|
343
343
|
background: var(--xh-slider-tick-bg-active-disabled, var(--xh-fg-disabled));
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
-
[data-scope='slider'][data-part='tick-group'][data-disabled] [data-part='tick-label'] {
|
|
346
|
+
[data-scope='slider'][data-part='tick-group'][data-disabled] [data-part='tick-label']:where([data-scope='slider']) {
|
|
347
347
|
color: var(--xh-slider-tick-label-fg-disabled, var(--xh-fg-disabled));
|
|
348
348
|
cursor: not-allowed;
|
|
349
349
|
}
|
|
350
350
|
|
|
351
351
|
/* 竖直轨道:点与文案换轴,坐标由连接层写在 block 轴上 */
|
|
352
|
-
[data-scope='slider'][data-part='root'][data-orientation='vertical'] [data-part='tick'] {
|
|
352
|
+
[data-scope='slider'][data-part='root'][data-orientation='vertical'] [data-part='tick']:where([data-scope='slider']) {
|
|
353
353
|
inset-block-start: auto;
|
|
354
354
|
inset-inline-start: 50%;
|
|
355
355
|
translate: calc(-50% * var(--xh-direction-sign)) 50%;
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
[data-scope='slider'][data-part='root'][data-orientation='vertical'] [data-part='tick-label'] {
|
|
358
|
+
[data-scope='slider'][data-part='root'][data-orientation='vertical'] [data-part='tick-label']:where([data-scope='slider']) {
|
|
359
359
|
inset-block-start: auto;
|
|
360
360
|
inset-inline-start: 100%;
|
|
361
361
|
margin-block-start: 0;
|