@q1travel/design-system 0.26.0 → 0.27.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/.agents/skills/product-design/exemplars/README.md +1 -1
- package/.agents/skills/product-design/references/glossary.md +1 -1
- package/contracts/button-api-compatibility.md +11 -11
- package/contracts/context-contrast-migration.md +3 -6
- package/contracts/design.dark.md +21 -2
- package/contracts/design.md +21 -2
- package/contracts/implementation-map.md +2 -2
- package/contracts/overlay-foundation.md +4 -4
- package/contracts/overlay-shadow-migration.md +5 -19
- package/contracts/pagination-migration.md +3 -3
- package/contracts/status-chip-badge-migration.md +3 -3
- package/contracts/table-migration.md +4 -4
- package/contracts/token-naming.md +40 -3
- package/dist-pkg/design-system.d.ts +92 -14
- package/dist-pkg/design-system.js +6936 -6497
- package/dist-pkg/style.css +730 -83
- package/dist-pkg/tokens.css +38 -0
- package/package.json +3 -3
package/dist-pkg/style.css
CHANGED
|
@@ -174,6 +174,27 @@
|
|
|
174
174
|
--q1-color-status-info-text: #0064b8;
|
|
175
175
|
--q1-color-status-info-surface: var(--q1-color-blue-100);
|
|
176
176
|
--q1-color-status-info-border: #abcff0;
|
|
177
|
+
/* 域色板 · auth:账户入口专用的冷蓝灰色板(所有者 2026-10-13 批准)。只在账户入口域内成组使用,
|
|
178
|
+
不与中性链 token 混用;值独立于中性链,明暗各一套。 */
|
|
179
|
+
--q1-color-auth-text-primary: #061b31;
|
|
180
|
+
--q1-color-auth-text-secondary: #273951;
|
|
181
|
+
--q1-color-auth-text-muted: #64748d;
|
|
182
|
+
--q1-color-auth-border-strong: #d6dde6;
|
|
183
|
+
--q1-color-auth-surface-card: #ffffff;
|
|
184
|
+
--q1-color-auth-surface-subtle: #f8fafc;
|
|
185
|
+
--q1-color-auth-surface-disabled: #f6f9fc;
|
|
186
|
+
--q1-color-auth-surface-media: #04050a;
|
|
187
|
+
--q1-color-auth-action-disabled-bg: #c7c9cc;
|
|
188
|
+
--q1-color-auth-action-disabled-border: #c7c9cc;
|
|
189
|
+
--q1-color-auth-action-disabled-text: #ffffff;
|
|
190
|
+
--q1-color-auth-focus-ring: rgba(83, 58, 253, 0.42);
|
|
191
|
+
--q1-color-auth-danger-border: #d92d20;
|
|
192
|
+
--q1-color-auth-danger-surface: #fff8f7;
|
|
193
|
+
--q1-color-auth-field-error-text: #d32f2f;
|
|
194
|
+
--q1-color-auth-media-overlay: rgba(4, 5, 10, 0.46);
|
|
195
|
+
--q1-color-auth-media-overlay-hover: rgba(4, 5, 10, 0.66);
|
|
196
|
+
--q1-color-auth-on-media-border: rgba(255, 255, 255, 0.22);
|
|
197
|
+
--q1-color-auth-on-media-border-hover: rgba(255, 255, 255, 0.34);
|
|
177
198
|
--q1-font-sans: "Noto Sans SC", "PingFang SC", "Microsoft YaHei UI", sans-serif;
|
|
178
199
|
--q1-font-mono: "Geist Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
|
|
179
200
|
--q1-font-weight-regular: 400;
|
|
@@ -483,6 +504,27 @@
|
|
|
483
504
|
--q1-color-status-info-text: var(--q1-color-blue-900);
|
|
484
505
|
--q1-color-status-info-surface: var(--q1-color-blue-100);
|
|
485
506
|
--q1-color-status-info-border: #194f81;
|
|
507
|
+
/* 域色板 · auth:账户入口专用的冷蓝灰色板(所有者 2026-10-13 批准)。只在账户入口域内成组使用,
|
|
508
|
+
不与中性链 token 混用;值独立于中性链,明暗各一套。 */
|
|
509
|
+
--q1-color-auth-text-primary: #f3f4f6;
|
|
510
|
+
--q1-color-auth-text-secondary: #d1d5db;
|
|
511
|
+
--q1-color-auth-text-muted: #9ca3af;
|
|
512
|
+
--q1-color-auth-border-strong: #343943;
|
|
513
|
+
--q1-color-auth-surface-card: #17191d;
|
|
514
|
+
--q1-color-auth-surface-subtle: #101216;
|
|
515
|
+
--q1-color-auth-surface-disabled: #202329;
|
|
516
|
+
--q1-color-auth-surface-media: #04050a;
|
|
517
|
+
--q1-color-auth-action-disabled-bg: #3b404a;
|
|
518
|
+
--q1-color-auth-action-disabled-border: #3b404a;
|
|
519
|
+
--q1-color-auth-action-disabled-text: #a6acb8;
|
|
520
|
+
--q1-color-auth-focus-ring: rgba(126, 108, 255, 0.52);
|
|
521
|
+
--q1-color-auth-danger-border: #d92d20;
|
|
522
|
+
--q1-color-auth-danger-surface: #241719;
|
|
523
|
+
--q1-color-auth-field-error-text: #d32f2f;
|
|
524
|
+
--q1-color-auth-media-overlay: rgba(4, 5, 10, 0.46);
|
|
525
|
+
--q1-color-auth-media-overlay-hover: rgba(4, 5, 10, 0.66);
|
|
526
|
+
--q1-color-auth-on-media-border: rgba(255, 255, 255, 0.22);
|
|
527
|
+
--q1-color-auth-on-media-border-hover: rgba(255, 255, 255, 0.34);
|
|
486
528
|
/* Override only the press state: the dark Primary ramp runs left-dark to
|
|
487
529
|
right-light, so Primary-900 is a light tint. Point action-press at a darker
|
|
488
530
|
step so default -> hover -> press keeps getting darker (hover still
|
|
@@ -841,7 +883,7 @@
|
|
|
841
883
|
}
|
|
842
884
|
|
|
843
885
|
/* 快捷键徽章(shortcut):内联 <kbd>,currentColor + opacity 让它继承按钮前景色、
|
|
844
|
-
自动适配各 variant 与明暗,无需 dark
|
|
886
|
+
自动适配各 variant 与明暗,无需 dark 块。移植自主应用既有的按钮快捷键样式。 */
|
|
845
887
|
/* 快捷键徽标(自有扩展):不用生硬边框方框,改 currentColor 半透明填充的柔和键帽——
|
|
846
888
|
继承按钮前景色,在 primary(白前景) 上是白 16% 键帽、在浅底按钮上自动变深色填充,各 variant 自适应。 */
|
|
847
889
|
.button__shortcut {
|
|
@@ -916,8 +958,8 @@
|
|
|
916
958
|
.form-field__description,
|
|
917
959
|
.form-field__message {
|
|
918
960
|
color: var(--q1-color-text-secondary);
|
|
919
|
-
font-size:
|
|
920
|
-
line-height:
|
|
961
|
+
font-size: var(--q1-font-size-label-13);
|
|
962
|
+
line-height: var(--q1-line-height-label-13);
|
|
921
963
|
}
|
|
922
964
|
|
|
923
965
|
.form-field__message {
|
|
@@ -944,7 +986,7 @@
|
|
|
944
986
|
align-items: center;
|
|
945
987
|
min-height: 40px;
|
|
946
988
|
overflow: hidden;
|
|
947
|
-
border: 1px solid var(--q1-input-border, var(--q1-color-border));
|
|
989
|
+
border: 1px solid var(--q1-input-border, var(--q1-color-border-control));
|
|
948
990
|
border-radius: var(--q1-radius-2);
|
|
949
991
|
background: var(--q1-input-bg, var(--q1-color-bg-sunken));
|
|
950
992
|
font-size: var(--q1-font-size-label-14);
|
|
@@ -1024,10 +1066,33 @@
|
|
|
1024
1066
|
.input-control__action {
|
|
1025
1067
|
display: inline-flex;
|
|
1026
1068
|
flex: none;
|
|
1027
|
-
align-items:
|
|
1069
|
+
align-items: stretch;
|
|
1070
|
+
align-self: stretch;
|
|
1071
|
+
/* 槽位上下各越过 1px 边框:按钮高度取外框整高,不再把外框撑出比同档 Input 多 2px。 */
|
|
1072
|
+
margin-block: -1px;
|
|
1028
1073
|
padding-inline-end: var(--q1-space-1);
|
|
1029
1074
|
}
|
|
1030
1075
|
|
|
1076
|
+
/* 按钮高度跟随外框,不再用自身尺寸档的最小高度(xs 输入框里的 sm 按钮会撑高外框)。 */
|
|
1077
|
+
.input-control__action .button {
|
|
1078
|
+
min-height: 0;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
/* 外框 overflow 会裁掉按钮向外扩的焦点环。参照 Geist Input 后缀按钮:外框保留裁切并照常画
|
|
1082
|
+
聚焦光晕(焦点仍在控件内),按钮自己的环改为向内收的 outline,整圈落在按钮可见区内,
|
|
1083
|
+
从输入框 Tab 到按钮时焦点位置可辨;outline 在强制颜色模式下同样可见。 */
|
|
1084
|
+
.input-control:has(.input-control__action .button:focus-visible) {
|
|
1085
|
+
border-color: var(--q1-input-border-focus, var(--q1-color-border));
|
|
1086
|
+
box-shadow: var(--q1-input-focus-ring, var(--q1-shadow-focus-input));
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
.input-control__action .button--ghost.button--icon:focus-visible {
|
|
1090
|
+
outline: 2px solid var(--q1-color-focus);
|
|
1091
|
+
outline-offset: calc(-1 * var(--q1-space-1));
|
|
1092
|
+
box-shadow: none;
|
|
1093
|
+
color: var(--q1-color-text-primary);
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1031
1096
|
.input-control__reveal-icons {
|
|
1032
1097
|
display: inline-grid;
|
|
1033
1098
|
}
|
|
@@ -1135,15 +1200,15 @@
|
|
|
1135
1200
|
|
|
1136
1201
|
/* 组件 token 层(token-naming 契约 · Component Tokens)。
|
|
1137
1202
|
消费方常有自己的表单外壳,只想换边框色或焦点环,却因为这里直写 token 而不得不整条
|
|
1138
|
-
`border`
|
|
1139
|
-
|
|
1203
|
+
`border` 重写——顺带把宽度与样式也一起接管。实测下游主应用有约 150 处这样的覆写,
|
|
1204
|
+
约 50 种属性组合,前三名全是配色与焦点环。给出这五个变量后,改一个变量能达成的事,
|
|
1140
1205
|
就不会再长成九个属性的覆写。
|
|
1141
1206
|
缺省值仍是语义 token,不传即维持现状。 */
|
|
1142
1207
|
.form-control {
|
|
1143
1208
|
box-sizing: border-box;
|
|
1144
1209
|
width: 100%;
|
|
1145
1210
|
min-height: 40px;
|
|
1146
|
-
border: 1px solid var(--q1-input-border, var(--q1-color-border));
|
|
1211
|
+
border: 1px solid var(--q1-input-border, var(--q1-color-border-control));
|
|
1147
1212
|
border-radius: var(--q1-radius-2);
|
|
1148
1213
|
background: var(--q1-input-bg, var(--q1-color-bg-sunken));
|
|
1149
1214
|
color: var(--q1-input-fg, var(--q1-color-text-primary));
|
|
@@ -1155,7 +1220,7 @@
|
|
|
1155
1220
|
}
|
|
1156
1221
|
|
|
1157
1222
|
/* 数字输入:隐去浏览器原生步进三角。
|
|
1158
|
-
|
|
1223
|
+
它不是本库的图标,是浏览器自绘的控件,于是同一组字段里「费率 %」这种无 suffix 的
|
|
1159
1224
|
会多出一对三角,而带 CNY/% suffix 的不会——同一行字段看起来是两种控件。
|
|
1160
1225
|
|
|
1161
1226
|
两个引擎各管各的:Chromium/WebKit 的三角是 ::-webkit-*-spin-button 伪元素,
|
|
@@ -1235,7 +1300,7 @@
|
|
|
1235
1300
|
display: flex;
|
|
1236
1301
|
flex-direction: column;
|
|
1237
1302
|
overflow: hidden;
|
|
1238
|
-
border: 1px solid var(--q1-color-border);
|
|
1303
|
+
border: 1px solid var(--q1-color-border-control);
|
|
1239
1304
|
border-radius: var(--q1-radius-2);
|
|
1240
1305
|
background: var(--q1-color-bg-sunken);
|
|
1241
1306
|
}
|
|
@@ -1279,7 +1344,8 @@
|
|
|
1279
1344
|
|
|
1280
1345
|
.textarea-control__count {
|
|
1281
1346
|
align-self: flex-end;
|
|
1282
|
-
|
|
1347
|
+
/* 右侧多留一个拖拽手柄的宽度:计数不再正好叠在右下角手柄下方。 */
|
|
1348
|
+
padding: 0 var(--q1-space-6) var(--q1-space-2) var(--q1-space-3);
|
|
1283
1349
|
color: var(--q1-color-text-secondary);
|
|
1284
1350
|
font-size: 12px;
|
|
1285
1351
|
line-height: 16px;
|
|
@@ -1590,9 +1656,12 @@
|
|
|
1590
1656
|
line-height: var(--q1-line-height-label-13);
|
|
1591
1657
|
}
|
|
1592
1658
|
|
|
1593
|
-
/* 修复选择器手误:描述曾与 __message 同列被涂成 danger 红。
|
|
1659
|
+
/* 修复选择器手误:描述曾与 __message 同列被涂成 danger 红。
|
|
1660
|
+
说明不得大于标签(曾继承 16px 致层级倒置):与标签同为 13 档,靠次级色区分。 */
|
|
1594
1661
|
.control-option__description {
|
|
1595
1662
|
color: var(--q1-color-text-secondary);
|
|
1663
|
+
font-size: var(--q1-font-size-label-13);
|
|
1664
|
+
line-height: var(--q1-line-height-label-13);
|
|
1596
1665
|
}
|
|
1597
1666
|
|
|
1598
1667
|
.control-option__message {
|
|
@@ -1648,6 +1717,12 @@
|
|
|
1648
1717
|
.menu__trigger:hover:not(:disabled) {
|
|
1649
1718
|
background: color-mix(in srgb, var(--q1-color-text-primary) 4%, transparent);
|
|
1650
1719
|
}
|
|
1720
|
+
/* 文字触发器的前置图标:装饰性,与 Button 的 affix 同样不参与可访问名称。 */
|
|
1721
|
+
.menu__trigger-prefix {
|
|
1722
|
+
display: inline-flex;
|
|
1723
|
+
flex: none;
|
|
1724
|
+
align-items: center;
|
|
1725
|
+
}
|
|
1651
1726
|
/* 图标-only 触发器。 */
|
|
1652
1727
|
.menu__trigger--icon {
|
|
1653
1728
|
width: 32px;
|
|
@@ -1784,6 +1859,11 @@
|
|
|
1784
1859
|
flex: none;
|
|
1785
1860
|
color: var(--q1-color-text-secondary);
|
|
1786
1861
|
}
|
|
1862
|
+
/* 组内有图标时,无图标项的占位槽:与 16px 图标同宽,保证文字起点一致。 */
|
|
1863
|
+
.menu__item-icon-placeholder {
|
|
1864
|
+
flex: none;
|
|
1865
|
+
width: var(--q1-space-4);
|
|
1866
|
+
}
|
|
1787
1867
|
.menu__item--danger .menu__item-icon {
|
|
1788
1868
|
color: var(--q1-color-red-700);
|
|
1789
1869
|
}
|
|
@@ -1923,6 +2003,12 @@
|
|
|
1923
2003
|
margin-inline-start: calc(-1 * (var(--q1-space-4) + 1px));
|
|
1924
2004
|
}
|
|
1925
2005
|
|
|
2006
|
+
/* 勾选列只占勾选框所需宽度,多余宽度留给内容列,避免勾选框与名称列之间出现大段空白。 */
|
|
2007
|
+
.table th.table__cell--select,
|
|
2008
|
+
.table td.table__cell--select {
|
|
2009
|
+
width: var(--q1-space-10);
|
|
2010
|
+
}
|
|
2011
|
+
|
|
1926
2012
|
.table th.table__cell--align-center,
|
|
1927
2013
|
.table td.table__cell--align-center {
|
|
1928
2014
|
text-align: center;
|
|
@@ -2261,6 +2347,11 @@
|
|
|
2261
2347
|
box-shadow: 0 0 0 1px var(--q1-color-bg-panel);
|
|
2262
2348
|
}
|
|
2263
2349
|
|
|
2350
|
+
/* 组内字母头像右侧被后一个头像压住 30%:字号降一档(直径 3/8),两个字母仍完整落在露出的区域内。 */
|
|
2351
|
+
.avatar-group .avatar--letter {
|
|
2352
|
+
font-size: calc(var(--q1-avatar-size, 32px) * 0.375);
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2264
2355
|
/* +N 收纳芯片:恒定深色、不随主题翻转(同族先例:遮罩恒黑)。 */
|
|
2265
2356
|
.avatar--overflow {
|
|
2266
2357
|
/* q1-lint-disable Q1-DS-501 恒定深色不随主题翻转,同族先例:遮罩恒黑 */
|
|
@@ -2776,6 +2867,18 @@
|
|
|
2776
2867
|
.banner > .banner__actions {
|
|
2777
2868
|
justify-self: start;
|
|
2778
2869
|
}
|
|
2870
|
+
|
|
2871
|
+
/* 关闭钮脱离网格固定在右上角,只让主操作折到下一行;44px 命中区让 × 与首行标题同中线。 */
|
|
2872
|
+
.banner:has(.banner__close):not(.banner--announcement, .banner--progress) {
|
|
2873
|
+
position: relative;
|
|
2874
|
+
padding-right: calc(var(--q1-space-10) + var(--q1-space-1));
|
|
2875
|
+
}
|
|
2876
|
+
|
|
2877
|
+
.banner:not(.banner--announcement, .banner--progress) .banner__close {
|
|
2878
|
+
position: absolute;
|
|
2879
|
+
top: 0;
|
|
2880
|
+
right: 0;
|
|
2881
|
+
}
|
|
2779
2882
|
}
|
|
2780
2883
|
|
|
2781
2884
|
@media (max-width: 48rem), (pointer: coarse), (any-pointer: coarse) {
|
|
@@ -3236,7 +3339,8 @@ a.breadcrumb__link:hover {
|
|
|
3236
3339
|
}
|
|
3237
3340
|
|
|
3238
3341
|
.browser__url-head {
|
|
3239
|
-
|
|
3342
|
+
/* 按内容收缩而不是吃满剩余宽度:域名与路径紧挨着居中,不在中间留大段空白。 */
|
|
3343
|
+
flex: 0 1 auto;
|
|
3240
3344
|
min-width: 0;
|
|
3241
3345
|
overflow: hidden;
|
|
3242
3346
|
text-overflow: ellipsis;
|
|
@@ -3244,7 +3348,7 @@ a.breadcrumb__link:hover {
|
|
|
3244
3348
|
}
|
|
3245
3349
|
|
|
3246
3350
|
.browser__url-tail {
|
|
3247
|
-
flex: 0
|
|
3351
|
+
flex: 0 0 auto;
|
|
3248
3352
|
max-width: 50%;
|
|
3249
3353
|
min-width: 0;
|
|
3250
3354
|
overflow: hidden;
|
|
@@ -3854,6 +3958,8 @@ a[href]:has(> .book):focus-visible {
|
|
|
3854
3958
|
.tabs-control__help {
|
|
3855
3959
|
display: grid;
|
|
3856
3960
|
gap: var(--q1-space-1);
|
|
3961
|
+
/* 说明与标签文字同一起点(标签按钮左右各留 space-1) */
|
|
3962
|
+
padding-inline: var(--q1-space-1);
|
|
3857
3963
|
color: var(--q1-color-text-secondary);
|
|
3858
3964
|
font-size: var(--q1-font-size-label-13);
|
|
3859
3965
|
line-height: var(--q1-line-height-label-13);
|
|
@@ -3887,13 +3993,33 @@ a[href]:has(> .book):focus-visible {
|
|
|
3887
3993
|
color: var(--q1-color-text-primary);
|
|
3888
3994
|
}
|
|
3889
3995
|
|
|
3996
|
+
/* 线型(line)变体:无外框、无卡片底色与内边距,只保留 tablist 的 1px 基线,贴在页面标题下方;
|
|
3997
|
+
对照 Geist:标签上下 14px、文字 14/20 常规字重,选中项 2px 前景色指示线与基线重合,无位移动画。 */
|
|
3998
|
+
.tabs-root--line {
|
|
3999
|
+
border: 0;
|
|
4000
|
+
border-radius: 0;
|
|
4001
|
+
background: transparent;
|
|
4002
|
+
padding: 0;
|
|
4003
|
+
}
|
|
4004
|
+
|
|
4005
|
+
.tabs-control--line .tabs-control__tab {
|
|
4006
|
+
min-height: 0;
|
|
4007
|
+
padding: var(--q1-space-3-5) var(--q1-space-1);
|
|
4008
|
+
}
|
|
4009
|
+
|
|
4010
|
+
.tabs-control--line .tabs-control__tab:disabled {
|
|
4011
|
+
color: var(--q1-color-text-disabled);
|
|
4012
|
+
border-bottom-color: transparent;
|
|
4013
|
+
}
|
|
4014
|
+
|
|
3890
4015
|
.tabs-control__panel {
|
|
3891
4016
|
min-height: 96px;
|
|
3892
4017
|
border-radius: var(--q1-radius-3);
|
|
3893
4018
|
color: var(--q1-color-text-secondary);
|
|
3894
4019
|
font-size: 14px;
|
|
3895
4020
|
line-height: 1.7;
|
|
3896
|
-
|
|
4021
|
+
/* 正文左缘与标签文字左缘对齐 */
|
|
4022
|
+
padding: var(--q1-space-4) var(--q1-space-1);
|
|
3897
4023
|
}
|
|
3898
4024
|
|
|
3899
4025
|
.tabs-control__panel[hidden] {
|
|
@@ -3929,6 +4055,51 @@ a[href]:has(> .book):focus-visible {
|
|
|
3929
4055
|
line-height: var(--q1-line-height-label-13);
|
|
3930
4056
|
}
|
|
3931
4057
|
|
|
4058
|
+
.tabs-line-demo {
|
|
4059
|
+
display: grid;
|
|
4060
|
+
gap: var(--q1-space-4);
|
|
4061
|
+
}
|
|
4062
|
+
|
|
4063
|
+
.tabs-line-demo__header {
|
|
4064
|
+
display: grid;
|
|
4065
|
+
gap: var(--q1-space-1);
|
|
4066
|
+
}
|
|
4067
|
+
|
|
4068
|
+
.tabs-line-demo__title {
|
|
4069
|
+
margin: 0;
|
|
4070
|
+
color: var(--q1-color-text-primary);
|
|
4071
|
+
font-size: var(--q1-font-size-heading-20);
|
|
4072
|
+
font-weight: var(--q1-font-weight-heading-20);
|
|
4073
|
+
line-height: var(--q1-line-height-heading-20);
|
|
4074
|
+
}
|
|
4075
|
+
|
|
4076
|
+
.tabs-line-demo__description,
|
|
4077
|
+
.tabs-line-demo__section-body {
|
|
4078
|
+
margin: 0;
|
|
4079
|
+
color: var(--q1-color-text-secondary);
|
|
4080
|
+
font-size: var(--q1-font-size-label-14);
|
|
4081
|
+
line-height: var(--q1-line-height-label-14);
|
|
4082
|
+
}
|
|
4083
|
+
|
|
4084
|
+
.tabs-line-demo__sections {
|
|
4085
|
+
display: grid;
|
|
4086
|
+
gap: var(--q1-space-6);
|
|
4087
|
+
}
|
|
4088
|
+
|
|
4089
|
+
.tabs-line-demo__section {
|
|
4090
|
+
display: grid;
|
|
4091
|
+
gap: var(--q1-space-1);
|
|
4092
|
+
scroll-margin-top: var(--q1-space-6);
|
|
4093
|
+
}
|
|
4094
|
+
|
|
4095
|
+
.tabs-line-demo__section-title {
|
|
4096
|
+
margin: 0;
|
|
4097
|
+
color: var(--q1-color-text-primary);
|
|
4098
|
+
font-size: var(--q1-font-size-heading-16);
|
|
4099
|
+
font-weight: var(--q1-font-weight-heading-16);
|
|
4100
|
+
line-height: var(--q1-line-height-heading-16);
|
|
4101
|
+
}
|
|
4102
|
+
|
|
3932
4103
|
@media (prefers-reduced-motion: reduce) {
|
|
3933
4104
|
.tabs-control__tab::before {
|
|
3934
4105
|
transition: opacity var(--q1-duration-press) var(--q1-ease-state);
|
|
@@ -3962,18 +4133,32 @@ a[href]:has(> .book):focus-visible {
|
|
|
3962
4133
|
.tabs-control--secondary .tabs-control__tab {
|
|
3963
4134
|
min-height: 44px;
|
|
3964
4135
|
}
|
|
4136
|
+
|
|
4137
|
+
/* 线型保持标签自然宽度(与 Geist 一致),不拉伸等分;高度已超过 44px 触控目标。 */
|
|
4138
|
+
.tabs-control--line .tabs-control__tab {
|
|
4139
|
+
width: auto;
|
|
4140
|
+
min-height: 0;
|
|
4141
|
+
padding-inline: var(--q1-space-1);
|
|
4142
|
+
}
|
|
4143
|
+
|
|
4144
|
+
.tabs-control--line .tabs-control__tab-wrapper {
|
|
4145
|
+
flex: none;
|
|
4146
|
+
}
|
|
3965
4147
|
}
|
|
3966
4148
|
|
|
3967
4149
|
/* —— 触发器 + 弹层 —— */
|
|
3968
4150
|
.cal-field {
|
|
3969
4151
|
position: relative;
|
|
3970
|
-
display:
|
|
4152
|
+
display: block;
|
|
4153
|
+
min-width: 0;
|
|
3971
4154
|
}
|
|
3972
4155
|
|
|
3973
4156
|
.cal-field__control {
|
|
3974
4157
|
--cal-field-height: var(--q1-control-height-default);
|
|
4158
|
+
box-sizing: border-box;
|
|
4159
|
+
width: 100%;
|
|
3975
4160
|
height: var(--cal-field-height);
|
|
3976
|
-
display:
|
|
4161
|
+
display: flex;
|
|
3977
4162
|
align-items: center;
|
|
3978
4163
|
box-shadow: inset 0 0 0 calc(var(--q1-space-1) / 4) var(--q1-color-border);
|
|
3979
4164
|
border-radius: var(--q1-radius-2);
|
|
@@ -3996,10 +4181,6 @@ a[href]:has(> .book):focus-visible {
|
|
|
3996
4181
|
box-shadow: inset 0 0 0 calc(var(--q1-space-1) / 4) var(--q1-color-border-strong);
|
|
3997
4182
|
}
|
|
3998
4183
|
|
|
3999
|
-
.cal-field__control--default {
|
|
4000
|
-
min-width: 220px;
|
|
4001
|
-
}
|
|
4002
|
-
|
|
4003
4184
|
.cal-field__control--compact .cal-field__label {
|
|
4004
4185
|
max-width: 96px;
|
|
4005
4186
|
overflow: hidden;
|
|
@@ -4051,10 +4232,10 @@ a[href]:has(> .book):focus-visible {
|
|
|
4051
4232
|
}
|
|
4052
4233
|
|
|
4053
4234
|
.cal-popover {
|
|
4054
|
-
position:
|
|
4055
|
-
top:
|
|
4235
|
+
position: fixed;
|
|
4236
|
+
top: 0;
|
|
4056
4237
|
left: 0;
|
|
4057
|
-
|
|
4238
|
+
width: max-content;
|
|
4058
4239
|
display: flex;
|
|
4059
4240
|
gap: var(--q1-space-6);
|
|
4060
4241
|
padding: var(--q1-space-4);
|
|
@@ -4952,19 +5133,23 @@ a[href]:has(> .book):focus-visible {
|
|
|
4952
5133
|
background: var(--q1-color-bg-canvas);
|
|
4953
5134
|
}
|
|
4954
5135
|
|
|
5136
|
+
/* 阶段标签与刻度对齐:全部叠在同一网格单元,水平位置与宽度由组件按刻度百分比写入(以刻度为中心)。 */
|
|
4955
5137
|
.progress__stage-list {
|
|
4956
5138
|
display: grid;
|
|
4957
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, 120px), 1fr));
|
|
4958
|
-
gap: var(--q1-space-2) var(--q1-space-4);
|
|
4959
5139
|
margin: var(--q1-space-2) 0 0;
|
|
4960
5140
|
padding: 0;
|
|
4961
5141
|
list-style: none;
|
|
4962
5142
|
}
|
|
4963
5143
|
|
|
4964
5144
|
.progress__stage {
|
|
5145
|
+
grid-area: 1 / 1;
|
|
4965
5146
|
display: flex;
|
|
5147
|
+
flex-wrap: wrap;
|
|
5148
|
+
justify-content: center;
|
|
4966
5149
|
align-items: baseline;
|
|
4967
|
-
gap: var(--q1-space-
|
|
5150
|
+
column-gap: var(--q1-space-1);
|
|
5151
|
+
min-width: 0;
|
|
5152
|
+
text-align: center;
|
|
4968
5153
|
font-size: 13px;
|
|
4969
5154
|
line-height: 1.5;
|
|
4970
5155
|
color: var(--q1-color-text-secondary);
|
|
@@ -5205,12 +5390,14 @@ a[href]:has(> .book):focus-visible {
|
|
|
5205
5390
|
display: block;
|
|
5206
5391
|
min-width: 0;
|
|
5207
5392
|
max-width: 100%;
|
|
5393
|
+
/* 截断省略号用拉丁字形(见 fonts.css 'Q1 Latin Ellipsis',只覆盖 U+2026),去掉全角「…」两侧空白。 */
|
|
5394
|
+
font-family: 'Q1 Latin Ellipsis', var(--q1-font-sans);
|
|
5208
5395
|
font-size: 14px;
|
|
5209
5396
|
color: var(--q1-color-text-primary);
|
|
5210
5397
|
}
|
|
5211
5398
|
|
|
5212
5399
|
.middle-truncate--mono {
|
|
5213
|
-
font-family: var(--q1-font-mono);
|
|
5400
|
+
font-family: 'Q1 Latin Ellipsis', var(--q1-font-mono);
|
|
5214
5401
|
font-size: 13px;
|
|
5215
5402
|
}
|
|
5216
5403
|
|
|
@@ -5332,6 +5519,21 @@ a[href]:has(> .book):focus-visible {
|
|
|
5332
5519
|
align-self: flex-start;
|
|
5333
5520
|
max-width: 100%;
|
|
5334
5521
|
}
|
|
5522
|
+
|
|
5523
|
+
/* 有前导头像/图标时折到下一行的右栏与标题文字左缘对齐(缩进 = 前导宽度 + space-3),不退回卡片左缘。 */
|
|
5524
|
+
.entity:has(> .entity__main > .entity__leading) {
|
|
5525
|
+
display: grid;
|
|
5526
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
5527
|
+
column-gap: var(--q1-space-3);
|
|
5528
|
+
}
|
|
5529
|
+
|
|
5530
|
+
.entity:has(> .entity__main > .entity__leading) > .entity__main {
|
|
5531
|
+
display: contents;
|
|
5532
|
+
}
|
|
5533
|
+
|
|
5534
|
+
.entity:has(> .entity__main > .entity__leading) > .entity__trailing {
|
|
5535
|
+
grid-column: 2;
|
|
5536
|
+
}
|
|
5335
5537
|
}
|
|
5336
5538
|
|
|
5337
5539
|
.error-msg {
|
|
@@ -5369,6 +5571,13 @@ a[href]:has(> .book):focus-visible {
|
|
|
5369
5571
|
margin-left: var(--q1-space-2);
|
|
5370
5572
|
}
|
|
5371
5573
|
|
|
5574
|
+
/* 按钮型恢复操作(32px)独占一行,不与 20px 文字行顶对齐、折行后也不带行内缩进;文字链接仍随文内联。 */
|
|
5575
|
+
.error-msg__action:has(> .button) {
|
|
5576
|
+
display: flex;
|
|
5577
|
+
margin-top: var(--q1-space-2);
|
|
5578
|
+
margin-left: 0;
|
|
5579
|
+
}
|
|
5580
|
+
|
|
5372
5581
|
.error-card {
|
|
5373
5582
|
display: flex;
|
|
5374
5583
|
flex-direction: column;
|
|
@@ -6266,16 +6475,25 @@ a.q1-card:focus-visible {
|
|
|
6266
6475
|
overflow: hidden;
|
|
6267
6476
|
}
|
|
6268
6477
|
|
|
6478
|
+
/* 原生 legend 默认骑在 fieldset 顶边框上、把边框切出缺口;浮动整宽让它回到内容流,
|
|
6479
|
+
后继元素 clear 落到其下方。语义仍是原生 legend(读屏组名不变)。 */
|
|
6269
6480
|
.fieldset__title {
|
|
6481
|
+
float: left;
|
|
6482
|
+
width: 100%;
|
|
6270
6483
|
padding: var(--q1-space-4) var(--q1-space-6) 0;
|
|
6271
6484
|
font-size: 16px;
|
|
6272
6485
|
font-weight: var(--q1-font-weight-medium);
|
|
6273
6486
|
color: var(--q1-color-text-primary);
|
|
6274
6487
|
}
|
|
6275
6488
|
|
|
6489
|
+
.fieldset__title + * {
|
|
6490
|
+
clear: both;
|
|
6491
|
+
}
|
|
6492
|
+
|
|
6493
|
+
/* 上间距放进 padding:clear 后的 margin-top 会被 clearance 吞掉。 */
|
|
6276
6494
|
.fieldset__subtitle {
|
|
6277
|
-
margin:
|
|
6278
|
-
padding:
|
|
6495
|
+
margin: 0;
|
|
6496
|
+
padding: var(--q1-space-1) var(--q1-space-6) var(--q1-space-4);
|
|
6279
6497
|
font-size: 14px;
|
|
6280
6498
|
color: var(--q1-color-text-secondary);
|
|
6281
6499
|
}
|
|
@@ -6321,6 +6539,15 @@ a.q1-card:focus-visible {
|
|
|
6321
6539
|
color: var(--q1-color-status-danger);
|
|
6322
6540
|
}
|
|
6323
6541
|
|
|
6542
|
+
/* 窄屏:页脚纵排,说明文字整行在上、操作在下,避免日期与按钮文案被并排挤成两行。 */
|
|
6543
|
+
@media (max-width: 48rem) {
|
|
6544
|
+
.fieldset__footer {
|
|
6545
|
+
flex-direction: column;
|
|
6546
|
+
align-items: flex-start;
|
|
6547
|
+
gap: var(--q1-space-2);
|
|
6548
|
+
}
|
|
6549
|
+
}
|
|
6550
|
+
|
|
6324
6551
|
.show-more__list {
|
|
6325
6552
|
margin: 0;
|
|
6326
6553
|
padding: 0;
|
|
@@ -6868,6 +7095,7 @@ a.q1-card:focus-visible {
|
|
|
6868
7095
|
gap: var(--q1-space-1);
|
|
6869
7096
|
max-width: 100%;
|
|
6870
7097
|
}
|
|
7098
|
+
/* 页码宽度随内容自适应(最小 32px 方形),不按总页数位数预留固定宽度。 */
|
|
6871
7099
|
.pagination__button {
|
|
6872
7100
|
display: inline-flex;
|
|
6873
7101
|
align-items: center;
|
|
@@ -6918,20 +7146,13 @@ a.q1-card:focus-visible {
|
|
|
6918
7146
|
color: var(--q1-color-text-muted);
|
|
6919
7147
|
text-align: center;
|
|
6920
7148
|
}
|
|
6921
|
-
.pagination__button--page,
|
|
6922
|
-
.pagination__ellipsis {
|
|
6923
|
-
box-sizing: border-box;
|
|
6924
|
-
width: max(32px, calc(var(--pagination-page-digits) * 0.5rem + var(--q1-space-4)));
|
|
6925
|
-
}
|
|
6926
7149
|
@media (pointer: coarse) {
|
|
6927
7150
|
.pagination__button {
|
|
6928
7151
|
min-width: 44px;
|
|
6929
7152
|
min-height: 44px;
|
|
6930
7153
|
}
|
|
6931
7154
|
|
|
6932
|
-
.pagination__button--page,
|
|
6933
7155
|
.pagination__ellipsis {
|
|
6934
|
-
width: max(44px, calc(var(--pagination-page-digits) * 0.5rem + var(--q1-space-4)));
|
|
6935
7156
|
min-width: 44px;
|
|
6936
7157
|
min-height: 44px;
|
|
6937
7158
|
}
|
|
@@ -7338,21 +7559,10 @@ a.q1-card:focus-visible {
|
|
|
7338
7559
|
position: relative;
|
|
7339
7560
|
display: inline-flex;
|
|
7340
7561
|
}
|
|
7562
|
+
/* 默认触发器外观来自 Button secondary sm,这里只保留提示触发器不可点击的指针语义。 */
|
|
7341
7563
|
.q1-tooltip__trigger {
|
|
7342
|
-
min-width: 56px;
|
|
7343
|
-
padding: var(--q1-space-2) var(--q1-space-4);
|
|
7344
|
-
border: 1px solid var(--q1-color-border-strong);
|
|
7345
|
-
border-radius: var(--q1-radius-2);
|
|
7346
|
-
background: var(--q1-color-bg-panel);
|
|
7347
|
-
color: var(--q1-color-text-primary);
|
|
7348
|
-
font: inherit;
|
|
7349
|
-
font-size: 14px;
|
|
7350
7564
|
cursor: default;
|
|
7351
7565
|
}
|
|
7352
|
-
.q1-tooltip__trigger:focus-visible {
|
|
7353
|
-
outline: none;
|
|
7354
|
-
box-shadow: var(--q1-shadow-focus);
|
|
7355
|
-
}
|
|
7356
7566
|
.q1-tooltip__bubble {
|
|
7357
7567
|
position: fixed;
|
|
7358
7568
|
z-index: var(--q1-z-popover);
|
|
@@ -7776,7 +7986,7 @@ a.q1-card:focus-visible {
|
|
|
7776
7986
|
width: 64px;
|
|
7777
7987
|
min-height: 44px;
|
|
7778
7988
|
padding: var(--q1-space-2) var(--q1-space-3);
|
|
7779
|
-
border: 1px solid var(--q1-color-border);
|
|
7989
|
+
border: 1px solid var(--q1-color-border-control);
|
|
7780
7990
|
border-radius: var(--q1-radius-2);
|
|
7781
7991
|
background: var(--q1-color-bg-panel);
|
|
7782
7992
|
color: var(--q1-color-text-primary);
|
|
@@ -7811,6 +8021,18 @@ a.q1-card:focus-visible {
|
|
|
7811
8021
|
touch-action: pan-y;
|
|
7812
8022
|
user-select: none;
|
|
7813
8023
|
}
|
|
8024
|
+
/* 窄屏:滑轨独占整行,上下限数字框移到滑轨下方左右两端,滑轨不再被两侧数字框挤窄。 */
|
|
8025
|
+
@media (max-width: 48rem) {
|
|
8026
|
+
.range-slider__controls {
|
|
8027
|
+
flex-wrap: wrap;
|
|
8028
|
+
justify-content: space-between;
|
|
8029
|
+
row-gap: var(--q1-space-2);
|
|
8030
|
+
}
|
|
8031
|
+
.range-slider__track-area {
|
|
8032
|
+
order: -1;
|
|
8033
|
+
flex-basis: 100%;
|
|
8034
|
+
}
|
|
8035
|
+
}
|
|
7814
8036
|
.range-slider__rail {
|
|
7815
8037
|
position: absolute;
|
|
7816
8038
|
top: 50%;
|
|
@@ -8331,16 +8553,18 @@ a.q1-card:focus-visible {
|
|
|
8331
8553
|
background: var(--q1-color-bg-overlay);
|
|
8332
8554
|
box-shadow: var(--q1-shadow-popover);
|
|
8333
8555
|
}
|
|
8556
|
+
/* 表头与选项行同高(space-8 = 32px);左内边距 = 选项左内边距 + 勾选框(16px = space-4) + gap,
|
|
8557
|
+
让「全选」文字与选项标签列对齐。 */
|
|
8334
8558
|
.multi-select__bulk {
|
|
8335
8559
|
display: flex;
|
|
8336
8560
|
align-items: center;
|
|
8337
8561
|
justify-content: space-between;
|
|
8338
|
-
|
|
8562
|
+
height: var(--q1-space-8);
|
|
8563
|
+
padding: 0 var(--q1-space-3) 0 calc(var(--q1-space-3) * 2 + var(--q1-space-4));
|
|
8339
8564
|
margin-bottom: var(--q1-space-1);
|
|
8340
8565
|
}
|
|
8341
8566
|
.multi-select__bulk-button {
|
|
8342
|
-
|
|
8343
|
-
padding: var(--q1-space-1) var(--q1-space-2);
|
|
8567
|
+
padding: 0;
|
|
8344
8568
|
border: 0;
|
|
8345
8569
|
border-radius: var(--q1-radius-1);
|
|
8346
8570
|
background: transparent;
|
|
@@ -8451,8 +8675,9 @@ a.q1-card:focus-visible {
|
|
|
8451
8675
|
.multi-select__option:hover {
|
|
8452
8676
|
background: color-mix(in srgb, var(--q1-color-text-primary) 5%, transparent);
|
|
8453
8677
|
}
|
|
8678
|
+
/* 去内边距后底色会贴字,悬停改为文字升到主色。 */
|
|
8454
8679
|
.multi-select__bulk-button:hover {
|
|
8455
|
-
|
|
8680
|
+
color: var(--q1-color-text-primary);
|
|
8456
8681
|
}
|
|
8457
8682
|
}
|
|
8458
8683
|
@media (pointer: coarse), (any-pointer: coarse) {
|
|
@@ -8461,7 +8686,8 @@ a.q1-card:focus-visible {
|
|
|
8461
8686
|
.multi-select__option {
|
|
8462
8687
|
min-height: 44px;
|
|
8463
8688
|
}
|
|
8464
|
-
.multi-select__option
|
|
8689
|
+
.multi-select__option,
|
|
8690
|
+
.multi-select__bulk {
|
|
8465
8691
|
height: auto;
|
|
8466
8692
|
}
|
|
8467
8693
|
}
|
|
@@ -9725,6 +9951,17 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
9725
9951
|
white-space: nowrap;
|
|
9726
9952
|
}
|
|
9727
9953
|
|
|
9954
|
+
/* 同一分区内只要有一项带图标(条目或分组触发器),无图标的直属条目预留 16px 图标槽,
|
|
9955
|
+
文字起点与带图标项对齐;横向导航不受影响。 */
|
|
9956
|
+
.q1-navigation:not(.q1-navigation--horizontal) .q1-navigation__section-content:has(
|
|
9957
|
+
> .q1-navigation__item-row > .q1-navigation__item > .q1-navigation__item-icon,
|
|
9958
|
+
> .q1-navigation__group > .q1-navigation__group-trigger > .q1-navigation__group-icon
|
|
9959
|
+
) > .q1-navigation__item-row > .q1-navigation__item:not(:has(> .q1-navigation__item-icon))::before {
|
|
9960
|
+
flex: none;
|
|
9961
|
+
width: var(--q1-space-4);
|
|
9962
|
+
content: '';
|
|
9963
|
+
}
|
|
9964
|
+
|
|
9728
9965
|
/* 独立 translate 与展开时的 transform: rotate 叠加,互不覆盖。 */
|
|
9729
9966
|
.q1-navigation__group-chevron {
|
|
9730
9967
|
flex: none;
|
|
@@ -10762,6 +10999,21 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
10762
10999
|
transform: translateX(-100%);
|
|
10763
11000
|
}
|
|
10764
11001
|
|
|
11002
|
+
/* 窄屏只留首尾轴标签:中间标签隐藏,首尾各让出到一半宽度(min-width 压过行内 max-width),末端文字右对齐贴住终点。 */
|
|
11003
|
+
@media (max-width: 48rem) {
|
|
11004
|
+
.q1-chart__axis-label--middle {
|
|
11005
|
+
display: none;
|
|
11006
|
+
}
|
|
11007
|
+
|
|
11008
|
+
.q1-chart__axis:has(> .q1-chart__axis-label--middle) > :is(.q1-chart__axis-label--start, .q1-chart__axis-label--end) {
|
|
11009
|
+
min-width: 50%;
|
|
11010
|
+
}
|
|
11011
|
+
|
|
11012
|
+
.q1-chart__axis-label--end {
|
|
11013
|
+
text-align: end;
|
|
11014
|
+
}
|
|
11015
|
+
}
|
|
11016
|
+
|
|
10765
11017
|
/* ==========================================================================
|
|
10766
11018
|
Link(正文链接)
|
|
10767
11019
|
==========================================================================
|
|
@@ -10832,6 +11084,7 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
10832
11084
|
|
|
10833
11085
|
.form-control:focus,
|
|
10834
11086
|
.input-control:has(.form-control:focus),
|
|
11087
|
+
.input-control:has(.input-control__action .button:focus-visible),
|
|
10835
11088
|
.textarea-control:has(.form-control:focus),
|
|
10836
11089
|
.combobox__control:has(.combobox__input:focus),
|
|
10837
11090
|
.multi-select__trigger:focus,
|
|
@@ -11068,10 +11321,15 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
11068
11321
|
.cal-popover {
|
|
11069
11322
|
box-sizing: border-box;
|
|
11070
11323
|
max-width: calc(100vw - var(--q1-space-2));
|
|
11071
|
-
|
|
11324
|
+
max-height: calc(100vh - var(--q1-space-2));
|
|
11325
|
+
overflow-y: auto;
|
|
11072
11326
|
transform-origin: var(--cal-popover-origin-x, left) top;
|
|
11073
11327
|
}
|
|
11074
11328
|
|
|
11329
|
+
.cal-popover[data-side='top'] {
|
|
11330
|
+
transform-origin: var(--cal-popover-origin-x, left) bottom;
|
|
11331
|
+
}
|
|
11332
|
+
|
|
11075
11333
|
@media (prefers-reduced-motion: no-preference) {
|
|
11076
11334
|
.cal-popover[data-motion-input='pointer'] {
|
|
11077
11335
|
animation: q1-calendar-popover-enter var(--q1-duration-fast) var(--q1-ease-out) both;
|
|
@@ -11153,22 +11411,39 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
11153
11411
|
}
|
|
11154
11412
|
}
|
|
11155
11413
|
|
|
11414
|
+
/* 时间输入复用 Input 的 .form-control 皮肤与 sm 高度档;宽度按 HH:mm 五个等宽字符加左右内边距。 */
|
|
11156
11415
|
.cal-time-input {
|
|
11157
|
-
|
|
11158
|
-
|
|
11159
|
-
padding: var(--q1-space-1) var(--q1-space-2);
|
|
11160
|
-
border: thin solid var(--q1-color-border);
|
|
11161
|
-
border-radius: var(--q1-radius-2);
|
|
11162
|
-
background: var(--q1-color-bg-raised);
|
|
11163
|
-
color: var(--q1-color-text-primary);
|
|
11164
|
-
font: inherit;
|
|
11416
|
+
flex: none;
|
|
11417
|
+
width: calc(6ch + 2 * var(--q1-space-3));
|
|
11165
11418
|
font-variant-numeric: tabular-nums;
|
|
11166
11419
|
}
|
|
11167
|
-
.cal-time-input:focus-visible { outline: none; box-shadow: var(--q1-shadow-focus); }
|
|
11168
11420
|
@media (pointer: coarse), (any-pointer: coarse) {
|
|
11169
11421
|
.cal-time-input { min-height: var(--q1-touch-target-min); font-size: var(--q1-font-size-copy-16); }
|
|
11170
11422
|
}
|
|
11171
11423
|
|
|
11424
|
+
/* Calendar 触发器:与 Select 一样铺满所在列,长值截断;禁用态对齐 Select(浅灰底、弱边界、弱化文字)。 */
|
|
11425
|
+
.cal-field__trigger {
|
|
11426
|
+
min-width: 0;
|
|
11427
|
+
}
|
|
11428
|
+
|
|
11429
|
+
.cal-field__label {
|
|
11430
|
+
min-width: 0;
|
|
11431
|
+
overflow: hidden;
|
|
11432
|
+
text-overflow: ellipsis;
|
|
11433
|
+
white-space: nowrap;
|
|
11434
|
+
}
|
|
11435
|
+
|
|
11436
|
+
.cal-field .cal-field__control:has(.cal-field__trigger:disabled) {
|
|
11437
|
+
background: var(--q1-color-gray-100);
|
|
11438
|
+
box-shadow: inset 0 0 0 calc(var(--q1-space-1) / 4) var(--q1-color-border);
|
|
11439
|
+
}
|
|
11440
|
+
|
|
11441
|
+
.cal-field .cal-field__trigger:disabled,
|
|
11442
|
+
.cal-field .cal-field__caret:disabled {
|
|
11443
|
+
color: var(--q1-color-text-muted);
|
|
11444
|
+
cursor: not-allowed;
|
|
11445
|
+
}
|
|
11446
|
+
|
|
11172
11447
|
@media (max-width: 40rem) {
|
|
11173
11448
|
.sheet__panel.sheet__panel--mobile-fullscreen {
|
|
11174
11449
|
inset: 0;
|
|
@@ -11718,6 +11993,217 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
11718
11993
|
white-space: normal;
|
|
11719
11994
|
}
|
|
11720
11995
|
|
|
11996
|
+
/* ContextSwitcher 组织形态:居中可编辑头部、行尾附注、flush 层级与右侧子菜单。随包样式发布。 */
|
|
11997
|
+
.q1-context-switcher__stacked-header--centered {
|
|
11998
|
+
flex-direction: column;
|
|
11999
|
+
align-items: center;
|
|
12000
|
+
gap: var(--q1-space-2);
|
|
12001
|
+
padding-block: var(--q1-space-4) var(--q1-space-3);
|
|
12002
|
+
text-align: center;
|
|
12003
|
+
}
|
|
12004
|
+
|
|
12005
|
+
.q1-context-switcher__stacked-header--centered:has(.q1-context-switcher__description) {
|
|
12006
|
+
align-items: center;
|
|
12007
|
+
}
|
|
12008
|
+
|
|
12009
|
+
.q1-context-switcher__stacked-header--centered .q1-context-switcher__avatar-action-menu {
|
|
12010
|
+
display: flex;
|
|
12011
|
+
}
|
|
12012
|
+
|
|
12013
|
+
.q1-context-switcher__stacked-header--centered .q1-context-switcher__current {
|
|
12014
|
+
justify-items: center;
|
|
12015
|
+
row-gap: var(--q1-space-1);
|
|
12016
|
+
}
|
|
12017
|
+
|
|
12018
|
+
.q1-context-switcher__stacked-header--centered > .q1-context-switcher__avatar {
|
|
12019
|
+
translate: none;
|
|
12020
|
+
}
|
|
12021
|
+
|
|
12022
|
+
.q1-context-switcher__stacked-header--centered .q1-context-switcher__current-label {
|
|
12023
|
+
font-size: var(--q1-font-size-label-14);
|
|
12024
|
+
font-weight: var(--q1-font-weight-semibold);
|
|
12025
|
+
line-height: var(--q1-line-height-label-14);
|
|
12026
|
+
}
|
|
12027
|
+
|
|
12028
|
+
.q1-context-switcher__avatar-action .q1-avatar-button__tile > svg {
|
|
12029
|
+
width: var(--q1-space-4);
|
|
12030
|
+
height: var(--q1-space-4);
|
|
12031
|
+
}
|
|
12032
|
+
|
|
12033
|
+
/* 行尾附注:纯文字计数,与勾、处理中占同一尾槽(同宽、同中心),只显示一个。 */
|
|
12034
|
+
.q1-context-switcher__meta {
|
|
12035
|
+
display: inline-flex;
|
|
12036
|
+
flex: none;
|
|
12037
|
+
min-width: var(--q1-space-4);
|
|
12038
|
+
justify-content: center;
|
|
12039
|
+
color: var(--q1-color-text-secondary);
|
|
12040
|
+
font-size: var(--q1-font-size-label-12);
|
|
12041
|
+
font-variant-numeric: tabular-nums;
|
|
12042
|
+
line-height: var(--q1-line-height-label-12);
|
|
12043
|
+
}
|
|
12044
|
+
|
|
12045
|
+
.q1-context-switcher__submenu-chevron {
|
|
12046
|
+
flex: none;
|
|
12047
|
+
margin-inline-start: auto;
|
|
12048
|
+
color: var(--q1-color-text-muted);
|
|
12049
|
+
}
|
|
12050
|
+
|
|
12051
|
+
/* flush:子项与父项图块左对齐,层级只靠分组、计数与 aria-describedby 表达。 */
|
|
12052
|
+
.q1-context-switcher__popup--stacked[data-nesting='flush'] .q1-context-switcher__item--nested {
|
|
12053
|
+
padding-inline-start: var(--q1-space-2);
|
|
12054
|
+
}
|
|
12055
|
+
|
|
12056
|
+
.q1-context-switcher__item[aria-expanded='true'],
|
|
12057
|
+
.q1-context-switcher__action[aria-expanded='true'] {
|
|
12058
|
+
background: var(--q1-color-bg-subtle);
|
|
12059
|
+
}
|
|
12060
|
+
|
|
12061
|
+
.q1-context-switcher__popup--stacked .q1-context-switcher__item[aria-expanded='true']::before,
|
|
12062
|
+
.q1-context-switcher__popup--stacked .q1-context-switcher__action[aria-expanded='true']::before {
|
|
12063
|
+
opacity: 1;
|
|
12064
|
+
}
|
|
12065
|
+
|
|
12066
|
+
.q1-context-switcher__submenu {
|
|
12067
|
+
position: fixed;
|
|
12068
|
+
z-index: 1;
|
|
12069
|
+
display: grid;
|
|
12070
|
+
width: max-content;
|
|
12071
|
+
min-width: calc(var(--q1-space-24) * 2);
|
|
12072
|
+
max-width: calc(100vw - var(--q1-space-4));
|
|
12073
|
+
border-radius: var(--q1-radius-3);
|
|
12074
|
+
background: var(--q1-color-bg-overlay);
|
|
12075
|
+
padding: var(--q1-space-1);
|
|
12076
|
+
box-shadow: var(--q1-shadow-popover);
|
|
12077
|
+
}
|
|
12078
|
+
|
|
12079
|
+
/* 右弹子菜单在弹层之外绘制:打开期间放开弹层裁切(列表滚动由内部分组容器承担)。 */
|
|
12080
|
+
.q1-context-switcher__popup:has(.q1-context-switcher__submenu:is([data-side='right'], [data-side='left'])) {
|
|
12081
|
+
overflow: visible;
|
|
12082
|
+
}
|
|
12083
|
+
|
|
12084
|
+
.q1-context-switcher__submenu .q1-context-switcher__submenu-item {
|
|
12085
|
+
min-height: var(--q1-space-10);
|
|
12086
|
+
}
|
|
12087
|
+
|
|
12088
|
+
/* 组织形态与子菜单的高亮只有一层:1px 描边 + 行浅底(::before),不叠双层焦点光晕。 */
|
|
12089
|
+
.q1-context-switcher__popup--stacked[data-nesting='flush'] :is(.q1-context-switcher__item, .q1-context-switcher__action):focus-visible,
|
|
12090
|
+
.q1-context-switcher__submenu .q1-context-switcher__submenu-item:focus {
|
|
12091
|
+
outline: 1px solid var(--q1-color-border-strong);
|
|
12092
|
+
outline-offset: -1px;
|
|
12093
|
+
box-shadow: none;
|
|
12094
|
+
}
|
|
12095
|
+
|
|
12096
|
+
.q1-context-switcher__submenu .q1-context-switcher__submenu-item:focus::before {
|
|
12097
|
+
opacity: 1;
|
|
12098
|
+
}
|
|
12099
|
+
|
|
12100
|
+
/* 窄屏就地展开:子项作为列表流中的缩进行,没有卡片底色与阴影,缩进一个图标块宽度。 */
|
|
12101
|
+
@media (max-width: 48rem) {
|
|
12102
|
+
.q1-context-switcher__submenu {
|
|
12103
|
+
position: static;
|
|
12104
|
+
width: auto;
|
|
12105
|
+
min-width: 0;
|
|
12106
|
+
max-width: none;
|
|
12107
|
+
border-radius: 0;
|
|
12108
|
+
background: transparent;
|
|
12109
|
+
padding: 0 0 0 var(--q1-space-6);
|
|
12110
|
+
box-shadow: none;
|
|
12111
|
+
}
|
|
12112
|
+
|
|
12113
|
+
.q1-context-switcher__submenu .q1-context-switcher__submenu-item:focus {
|
|
12114
|
+
outline: none;
|
|
12115
|
+
}
|
|
12116
|
+
}
|
|
12117
|
+
|
|
12118
|
+
/* AvatarButton:可编辑头像图块。徽标只在悬停 / 键盘焦点时出现,且不拦截指针。 */
|
|
12119
|
+
.q1-avatar-button {
|
|
12120
|
+
--q1-avatar-button-size: var(--q1-space-8);
|
|
12121
|
+
position: relative;
|
|
12122
|
+
display: inline-flex;
|
|
12123
|
+
flex: none;
|
|
12124
|
+
width: var(--q1-avatar-button-size);
|
|
12125
|
+
height: var(--q1-avatar-button-size);
|
|
12126
|
+
border: 0;
|
|
12127
|
+
border-radius: var(--q1-radius-2);
|
|
12128
|
+
background: transparent;
|
|
12129
|
+
padding: 0;
|
|
12130
|
+
color: var(--q1-color-text-secondary);
|
|
12131
|
+
font: inherit;
|
|
12132
|
+
text-decoration: none;
|
|
12133
|
+
cursor: pointer;
|
|
12134
|
+
transition: box-shadow var(--q1-duration-press) var(--q1-ease-out);
|
|
12135
|
+
}
|
|
12136
|
+
|
|
12137
|
+
.q1-avatar-button__tile {
|
|
12138
|
+
display: inline-flex;
|
|
12139
|
+
width: 100%;
|
|
12140
|
+
height: 100%;
|
|
12141
|
+
overflow: hidden;
|
|
12142
|
+
align-items: center;
|
|
12143
|
+
justify-content: center;
|
|
12144
|
+
border-radius: inherit;
|
|
12145
|
+
background: var(--q1-color-bg-subtle);
|
|
12146
|
+
font-size: var(--q1-font-size-label-13);
|
|
12147
|
+
font-weight: var(--q1-font-weight-semibold);
|
|
12148
|
+
}
|
|
12149
|
+
|
|
12150
|
+
.q1-avatar-button__img {
|
|
12151
|
+
width: 100%;
|
|
12152
|
+
height: 100%;
|
|
12153
|
+
object-fit: cover;
|
|
12154
|
+
}
|
|
12155
|
+
|
|
12156
|
+
/* 悬停 / 焦点只加一圈柔和外环(取 focus 色的外层光晕),不叠内圈描边。 */
|
|
12157
|
+
.q1-avatar-button {
|
|
12158
|
+
--q1-avatar-button-ring: 0 0 0 var(--q1-space-1) color-mix(in srgb, var(--q1-color-focus) 16%, transparent);
|
|
12159
|
+
}
|
|
12160
|
+
|
|
12161
|
+
/* 方块徽标向外凸出半个 space-1,压在图块右下角。 */
|
|
12162
|
+
.q1-avatar-button__badge {
|
|
12163
|
+
position: absolute;
|
|
12164
|
+
right: calc(var(--q1-space-1) / -2);
|
|
12165
|
+
bottom: calc(var(--q1-space-1) / -2);
|
|
12166
|
+
display: inline-flex;
|
|
12167
|
+
width: var(--q1-space-3);
|
|
12168
|
+
height: var(--q1-space-3);
|
|
12169
|
+
align-items: center;
|
|
12170
|
+
justify-content: center;
|
|
12171
|
+
border-radius: var(--q1-radius-1);
|
|
12172
|
+
background: var(--q1-color-bg-overlay);
|
|
12173
|
+
color: var(--q1-color-text-secondary);
|
|
12174
|
+
opacity: 0;
|
|
12175
|
+
pointer-events: none;
|
|
12176
|
+
transition: opacity var(--q1-duration-press) var(--q1-ease-out);
|
|
12177
|
+
}
|
|
12178
|
+
|
|
12179
|
+
.q1-avatar-button:focus-visible {
|
|
12180
|
+
outline: none;
|
|
12181
|
+
box-shadow: var(--q1-avatar-button-ring);
|
|
12182
|
+
}
|
|
12183
|
+
|
|
12184
|
+
/* 键盘焦点立即显示徽标;指针悬停才走淡入。 */
|
|
12185
|
+
.q1-avatar-button:focus-visible .q1-avatar-button__badge {
|
|
12186
|
+
opacity: 1;
|
|
12187
|
+
transition: none;
|
|
12188
|
+
}
|
|
12189
|
+
|
|
12190
|
+
@media (hover: hover) and (pointer: fine) {
|
|
12191
|
+
.q1-avatar-button:hover {
|
|
12192
|
+
box-shadow: var(--q1-avatar-button-ring);
|
|
12193
|
+
}
|
|
12194
|
+
|
|
12195
|
+
.q1-avatar-button:hover .q1-avatar-button__badge {
|
|
12196
|
+
opacity: 1;
|
|
12197
|
+
}
|
|
12198
|
+
}
|
|
12199
|
+
|
|
12200
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12201
|
+
.q1-avatar-button,
|
|
12202
|
+
.q1-avatar-button__badge {
|
|
12203
|
+
transition: none;
|
|
12204
|
+
}
|
|
12205
|
+
}
|
|
12206
|
+
|
|
11721
12207
|
.copy-button {
|
|
11722
12208
|
display: grid;
|
|
11723
12209
|
place-items: center;
|
|
@@ -12266,6 +12752,100 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
12266
12752
|
}
|
|
12267
12753
|
}
|
|
12268
12754
|
|
|
12755
|
+
/* Label + InfoTip:标签与说明微图标同行;常驻面板换行铺满整行。 */
|
|
12756
|
+
.label-row,
|
|
12757
|
+
.form-field__label-row {
|
|
12758
|
+
display: flex;
|
|
12759
|
+
flex-wrap: wrap;
|
|
12760
|
+
align-items: center;
|
|
12761
|
+
gap: var(--q1-space-1);
|
|
12762
|
+
min-width: 0;
|
|
12763
|
+
}
|
|
12764
|
+
|
|
12765
|
+
.info-tip {
|
|
12766
|
+
display: contents;
|
|
12767
|
+
}
|
|
12768
|
+
|
|
12769
|
+
/* 16px 线性图标、静止 text-muted、悬停/聚焦转 text-primary,无底块。
|
|
12770
|
+
命中盒 24×24(WCAG 2.5.8),负 margin 吃回多出的 4px,不抬高 20px 标签行、视觉间距仍是 space-1;
|
|
12771
|
+
触屏下 TouchTarget 再扩到 --q1-touch-target-min。 */
|
|
12772
|
+
.info-tip__trigger,
|
|
12773
|
+
.info-tip__close {
|
|
12774
|
+
position: relative;
|
|
12775
|
+
display: inline-grid;
|
|
12776
|
+
place-items: center;
|
|
12777
|
+
flex: 0 0 auto;
|
|
12778
|
+
width: var(--q1-space-6);
|
|
12779
|
+
height: var(--q1-space-6);
|
|
12780
|
+
margin: calc(var(--q1-space-1) / -2) calc(var(--q1-space-1) * -1);
|
|
12781
|
+
padding: 0;
|
|
12782
|
+
border: none;
|
|
12783
|
+
border-radius: var(--q1-radius-1);
|
|
12784
|
+
background: transparent;
|
|
12785
|
+
color: var(--q1-color-text-muted);
|
|
12786
|
+
cursor: help;
|
|
12787
|
+
transition:
|
|
12788
|
+
color var(--q1-duration-press) var(--q1-ease-out),
|
|
12789
|
+
transform var(--q1-duration-press) var(--q1-ease-out);
|
|
12790
|
+
touch-action: manipulation;
|
|
12791
|
+
--touch-target-border-width: 0px;
|
|
12792
|
+
}
|
|
12793
|
+
|
|
12794
|
+
.info-tip__close {
|
|
12795
|
+
cursor: pointer;
|
|
12796
|
+
}
|
|
12797
|
+
|
|
12798
|
+
.info-tip__trigger:hover,
|
|
12799
|
+
.info-tip__trigger:focus-visible,
|
|
12800
|
+
.info-tip__trigger[aria-expanded='true'],
|
|
12801
|
+
.info-tip__close:hover,
|
|
12802
|
+
.info-tip__close:focus-visible {
|
|
12803
|
+
color: var(--q1-color-text-primary);
|
|
12804
|
+
}
|
|
12805
|
+
|
|
12806
|
+
.info-tip__trigger:focus-visible,
|
|
12807
|
+
.info-tip__close:focus-visible {
|
|
12808
|
+
outline: none;
|
|
12809
|
+
box-shadow: var(--q1-shadow-focus);
|
|
12810
|
+
}
|
|
12811
|
+
|
|
12812
|
+
.info-tip__trigger[data-motion-input='pointer']:active {
|
|
12813
|
+
transform: scale(0.97);
|
|
12814
|
+
}
|
|
12815
|
+
|
|
12816
|
+
.info-tip__panel {
|
|
12817
|
+
flex: 1 0 100%;
|
|
12818
|
+
display: flex;
|
|
12819
|
+
align-items: flex-start;
|
|
12820
|
+
justify-content: flex-start;
|
|
12821
|
+
gap: var(--q1-space-2);
|
|
12822
|
+
color: var(--q1-color-text-secondary);
|
|
12823
|
+
font-size: var(--q1-font-size-label-13);
|
|
12824
|
+
font-weight: var(--q1-font-weight-regular);
|
|
12825
|
+
line-height: var(--q1-line-height-label-13);
|
|
12826
|
+
text-align: start;
|
|
12827
|
+
}
|
|
12828
|
+
|
|
12829
|
+
.info-tip__panel[hidden] {
|
|
12830
|
+
display: none;
|
|
12831
|
+
}
|
|
12832
|
+
|
|
12833
|
+
.info-tip__content {
|
|
12834
|
+
min-width: 0;
|
|
12835
|
+
overflow-wrap: anywhere;
|
|
12836
|
+
}
|
|
12837
|
+
|
|
12838
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12839
|
+
.info-tip__trigger,
|
|
12840
|
+
.info-tip__close {
|
|
12841
|
+
transition: none;
|
|
12842
|
+
}
|
|
12843
|
+
|
|
12844
|
+
.info-tip__trigger[data-motion-input='pointer']:active {
|
|
12845
|
+
transform: none;
|
|
12846
|
+
}
|
|
12847
|
+
}
|
|
12848
|
+
|
|
12269
12849
|
/* Destructive Action Modal 的短屏结构与指针开关动效;全局 Modal 家族保持原行为。 */
|
|
12270
12850
|
.destructive-modal {
|
|
12271
12851
|
padding-block:
|
|
@@ -12732,6 +13312,9 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
12732
13312
|
.filter-chip--sm { height: var(--q1-space-8); }
|
|
12733
13313
|
.filter-chip--md { height: var(--q1-control-height-default); }
|
|
12734
13314
|
.filter-chip--lg { height: calc(var(--q1-control-height-default) + var(--q1-space-2)); }
|
|
13315
|
+
/* lg 高 48:短文案时横向内边距随档放宽,避免胶囊被压成近正圆。 */
|
|
13316
|
+
.filter-chip--lg .filter-chip__picker { padding-inline: var(--q1-space-3); }
|
|
13317
|
+
.filter-chip--lg .filter-chip__clear + .filter-chip__picker { padding-inline-start: var(--q1-space-1); }
|
|
12735
13318
|
|
|
12736
13319
|
.popover-trigger { display: inline-flex; }
|
|
12737
13320
|
.popover-panel {
|
|
@@ -12860,12 +13443,16 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
12860
13443
|
.timeline::before { content: ''; position: absolute; left: calc(var(--q1-space-3) - var(--q1-space-1) / 8); top: var(--q1-space-2); bottom: var(--q1-space-2); width: 1px; background: var(--q1-color-border-strong); }
|
|
12861
13444
|
.timeline__item { position: relative; display: grid; grid-template-columns: var(--q1-space-6) minmax(0, 1fr); gap: var(--q1-space-3); padding-block: var(--q1-space-1-5); }
|
|
12862
13445
|
.timeline__indicator { display: grid; place-items: center; height: var(--q1-space-6); z-index: 1; background: var(--q1-color-bg-panel); }
|
|
12863
|
-
.timeline__dot { width: var(--q1-space-2); height: var(--q1-space-2); border-radius: var(--q1-radius-full); background: var(--q1-color-
|
|
13446
|
+
.timeline__dot { width: var(--q1-space-2); height: var(--q1-space-2); border-radius: var(--q1-radius-full); background: var(--q1-color-text-muted); }
|
|
12864
13447
|
.timeline__dot--success { background: var(--q1-color-status-success); }
|
|
12865
13448
|
.timeline__dot--danger { background: var(--q1-color-status-danger); }
|
|
12866
13449
|
.timeline__dot--warning { background: var(--q1-color-status-warning); }
|
|
12867
13450
|
.timeline__content { min-width: 0; }
|
|
12868
|
-
.timeline__disclosure { border: 0; padding: var(--q1-space-1) 0; background: transparent; color: var(--q1-color-text-muted); font: inherit; font-size: var(--q1-font-size-label-13); cursor: pointer; }
|
|
13451
|
+
.timeline__disclosure { display: inline-flex; align-items: center; gap: var(--q1-space-1); max-width: 100%; border: 0; padding: var(--q1-space-1) 0; background: transparent; color: var(--q1-color-text-muted); font: inherit; font-size: var(--q1-font-size-label-13); text-align: start; cursor: pointer; }
|
|
13452
|
+
/* 摘要可折行,chevron 固定在行尾不单独掉行、与首行同中线;展开时转向下方,与全站 chevron 披露一致。 */
|
|
13453
|
+
.timeline__disclosure-label { min-width: 0; }
|
|
13454
|
+
.timeline__disclosure-icon { flex: none; align-self: flex-start; height: 1lh; }
|
|
13455
|
+
.timeline__disclosure[aria-expanded='true'] .timeline__disclosure-icon { rotate: 90deg; }
|
|
12869
13456
|
.timeline__disclosure:focus-visible { outline: none; box-shadow: var(--q1-shadow-focus); border-radius: var(--q1-radius-1); }
|
|
12870
13457
|
@media (pointer: coarse), (any-pointer: coarse) { .timeline__disclosure { min-height: var(--q1-touch-target-min); } }
|
|
12871
13458
|
|
|
@@ -12942,10 +13529,15 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
12942
13529
|
|
|
12943
13530
|
.attachment { display: inline-flex; align-items: center; gap: var(--q1-space-2); padding: var(--q1-space-1-5) var(--q1-space-2-5); border: 1px solid var(--q1-color-border); border-radius: var(--q1-radius-2); max-width: 100%; min-width: 0; }
|
|
12944
13531
|
.attachment__icon { display: grid; place-items: center; width: var(--q1-space-7); height: var(--q1-space-7); background: var(--q1-color-bg-subtle); border-radius: var(--q1-radius-1); flex-shrink: 0; }
|
|
12945
|
-
.attachment__details { min-width:
|
|
13532
|
+
.attachment__details { display: grid; min-width: var(--q1-space-24); }
|
|
13533
|
+
.attachment__details > .progress,
|
|
13534
|
+
.attachment__error { margin-top: var(--q1-space-1); }
|
|
12946
13535
|
.attachment__name { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--q1-font-size-label-13); }
|
|
12947
13536
|
.attachment__size { color: var(--q1-color-text-muted); font-size: var(--q1-font-size-label-13); }
|
|
12948
|
-
.attachment__error { display:
|
|
13537
|
+
.attachment__error { display: flex; align-items: center; gap: var(--q1-space-2); color: var(--q1-color-status-danger-text); font-size: var(--q1-font-size-label-13); line-height: var(--q1-line-height-label-13); }
|
|
13538
|
+
.attachment__retry { position: relative; --touch-target-border-width: 0px; border: 0; padding: 0; background: transparent; color: var(--q1-color-text-primary); font: inherit; font-weight: var(--q1-font-weight-medium); border-radius: var(--q1-radius-1); cursor: pointer; }
|
|
13539
|
+
.attachment__retry:hover { text-decoration: underline; }
|
|
13540
|
+
.attachment__retry:focus-visible { outline: none; box-shadow: var(--q1-shadow-focus); }
|
|
12949
13541
|
.attachment__remove { position: relative; --touch-target-border-width: 0px; border: 0; background: transparent; color: var(--q1-color-text-muted); display: grid; place-items: center; width: var(--q1-space-6); height: var(--q1-space-6); border-radius: var(--q1-radius-1); flex-shrink: 0; }
|
|
12950
13542
|
.attachment__remove:hover { background: var(--q1-color-bg-hover); }
|
|
12951
13543
|
.attachment__remove:focus-visible { outline: none; box-shadow: var(--q1-shadow-focus); }
|
|
@@ -13064,11 +13656,10 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
13064
13656
|
display: block;
|
|
13065
13657
|
}
|
|
13066
13658
|
|
|
13067
|
-
.feedback__select,
|
|
13068
13659
|
.feedback__textarea {
|
|
13069
13660
|
width: 100%;
|
|
13070
13661
|
padding: var(--q1-space-2) var(--q1-space-3);
|
|
13071
|
-
border: 1px solid var(--q1-color-border);
|
|
13662
|
+
border: 1px solid var(--q1-color-border-control);
|
|
13072
13663
|
border-radius: var(--q1-radius-2);
|
|
13073
13664
|
background: var(--q1-color-bg-panel);
|
|
13074
13665
|
color: var(--q1-color-text-primary);
|
|
@@ -13228,11 +13819,6 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
13228
13819
|
line-height: var(--field-error-line-height);
|
|
13229
13820
|
}
|
|
13230
13821
|
|
|
13231
|
-
/* FormField 的描述原为 20px 行盒,错误切换保持相同几何;文字仍为 13px。 */
|
|
13232
|
-
.form-field__message {
|
|
13233
|
-
--field-error-line-height: var(--q1-line-height-label-14);
|
|
13234
|
-
}
|
|
13235
|
-
|
|
13236
13822
|
/* 图标对齐第一行,独立 ErrorMessage 保留既有各尺寸行高。 */
|
|
13237
13823
|
.error-msg {
|
|
13238
13824
|
--field-error-line-height: var(--q1-line-height-label-13);
|
|
@@ -13427,7 +14013,8 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
13427
14013
|
line-height: var(--q1-line-height-label-13);
|
|
13428
14014
|
}
|
|
13429
14015
|
|
|
13430
|
-
/* Form boundaries and brand graphics: owner-approved dark/mobile audit roles.
|
|
14016
|
+
/* Form boundaries and brand graphics: owner-approved dark/mobile audit roles.
|
|
14017
|
+
Checkbox Circle keeps its own tone stroke (status-* / text-muted), so it is excluded here. */
|
|
13431
14018
|
:root[data-theme='dark'] :is(
|
|
13432
14019
|
.form-control:not(.input-control .form-control):not(.textarea-control .form-control):not(:disabled):not([aria-invalid='true']):not(.form-field--error .form-control),
|
|
13433
14020
|
.input-control:not(:has(:disabled, [aria-invalid='true'])):not(.form-field--error .input-control),
|
|
@@ -13453,11 +14040,25 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
13453
14040
|
.q1-verification-code:not(:has(:disabled, [aria-invalid='true'])) .q1-verification-code__slot,
|
|
13454
14041
|
.choicebox:not(:has(:checked, :disabled)),
|
|
13455
14042
|
.choicebox:not(:has(:checked, :disabled)) .choicebox__indicator,
|
|
13456
|
-
.control-option:has(input:not(:checked):not(:indeterminate):not(:disabled)) .control-option__visual
|
|
14043
|
+
.control-option:not(.checkbox-circle):has(input:not(:checked):not(:indeterminate):not(:disabled)) .control-option__visual
|
|
13457
14044
|
) {
|
|
13458
14045
|
border-color: var(--q1-color-border-control);
|
|
13459
14046
|
}
|
|
13460
14047
|
|
|
14048
|
+
/* 控件基础边框统一走 --q1-color-border-control;禁用态保持原来的弱边界 --q1-color-border,
|
|
14049
|
+
不随控件边界角色加深(暗色下 border-control 比 border 更亮)。 */
|
|
14050
|
+
.input-control:has(.form-control:disabled):not(:has([aria-invalid='true'])):not(.form-field--error .input-control),
|
|
14051
|
+
.form-control:disabled:not(.input-control .form-control):not(.textarea-control .form-control):not([aria-invalid='true']):not(.form-field--error .form-control) {
|
|
14052
|
+
border-color: var(--q1-input-border, var(--q1-color-border));
|
|
14053
|
+
}
|
|
14054
|
+
|
|
14055
|
+
.textarea-control:has(.form-control:disabled):not(:has([aria-invalid='true'])):not(.form-field--error .textarea-control),
|
|
14056
|
+
.feedback__select:disabled,
|
|
14057
|
+
.feedback__textarea:disabled,
|
|
14058
|
+
.range-slider__number:disabled {
|
|
14059
|
+
border-color: var(--q1-color-border);
|
|
14060
|
+
}
|
|
14061
|
+
|
|
13461
14062
|
:root[data-theme='dark'] .cal-field__control {
|
|
13462
14063
|
box-shadow: inset 0 0 0 calc(var(--q1-space-1) / 4) var(--q1-color-border-control);
|
|
13463
14064
|
}
|
|
@@ -13473,7 +14074,7 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
13473
14074
|
border-color: var(--q1-color-gray-700);
|
|
13474
14075
|
}
|
|
13475
14076
|
|
|
13476
|
-
:root[data-theme='dark'] .control-option:has(input:not(:checked):not(:indeterminate):not(:disabled)):hover .control-option__visual {
|
|
14077
|
+
:root[data-theme='dark'] .control-option:not(.checkbox-circle):has(input:not(:checked):not(:indeterminate):not(:disabled)):hover .control-option__visual {
|
|
13477
14078
|
border-color: var(--q1-color-text-secondary);
|
|
13478
14079
|
}
|
|
13479
14080
|
}
|
|
@@ -13490,19 +14091,19 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
13490
14091
|
|
|
13491
14092
|
:root[data-theme='dark'] .slider-input:not(.range-slider__thumb):not(:disabled)::-webkit-slider-runnable-track,
|
|
13492
14093
|
:root[data-theme='dark'] .range-slider:not(.range-slider--disabled) .range-slider__rail {
|
|
13493
|
-
background: var(--q1-color-
|
|
14094
|
+
background: var(--q1-color-border-control);
|
|
13494
14095
|
}
|
|
13495
14096
|
|
|
13496
14097
|
:root[data-theme='dark'] .slider-input:not(.range-slider__thumb):not(:disabled)::-moz-range-track {
|
|
13497
|
-
background: var(--q1-color-
|
|
14098
|
+
background: var(--q1-color-border-control);
|
|
13498
14099
|
}
|
|
13499
14100
|
|
|
13500
14101
|
:root[data-theme='dark'] .slider-input--filled:not(.range-slider__thumb):not(:disabled)::-webkit-slider-runnable-track {
|
|
13501
|
-
background: linear-gradient(to right, var(--q1-color-accent-graphic) var(--slider-pct), var(--q1-color-
|
|
14102
|
+
background: linear-gradient(to right, var(--q1-color-accent-graphic) var(--slider-pct), var(--q1-color-border-control) var(--slider-pct));
|
|
13502
14103
|
}
|
|
13503
14104
|
|
|
13504
14105
|
:root[data-theme='dark'] .slider-input--filled:not(.range-slider__thumb):not(:disabled)::-moz-range-track {
|
|
13505
|
-
background: linear-gradient(to right, var(--q1-color-accent-graphic) var(--slider-pct), var(--q1-color-
|
|
14106
|
+
background: linear-gradient(to right, var(--q1-color-accent-graphic) var(--slider-pct), var(--q1-color-border-control) var(--slider-pct));
|
|
13506
14107
|
}
|
|
13507
14108
|
|
|
13508
14109
|
.range-slider:not(.range-slider--disabled) .range-slider__fill,
|
|
@@ -13513,3 +14114,49 @@ a.q1-navigation__item[aria-disabled='true'] {
|
|
|
13513
14114
|
.q1-chart__line {
|
|
13514
14115
|
stroke: var(--q1-color-accent-graphic);
|
|
13515
14116
|
}
|
|
14117
|
+
|
|
14118
|
+
/* 暗色表面抬升:亮色下靠恒深底色或投影成立的轮廓,暗色下与底色同色而消失。
|
|
14119
|
+
只在 :root[data-theme='dark'] 分支改,亮色外观不变;统一走面板底色 + 1px hairline。 */
|
|
14120
|
+
|
|
14121
|
+
/* 无框卡片:亮色靠投影浮起;暗色投影不可见,补 hairline 保住卡片边界。 */
|
|
14122
|
+
:root[data-theme='dark'] .q1-card--borderless {
|
|
14123
|
+
border-color: var(--q1-color-border);
|
|
14124
|
+
}
|
|
14125
|
+
|
|
14126
|
+
/* +N 收纳芯片与页顶公告药丸:恒深底色在暗色画布上与底同色,改面板底 + hairline + 主文字色。 */
|
|
14127
|
+
:root[data-theme='dark'] .avatar--overflow,
|
|
14128
|
+
:root[data-theme='dark'] .banner__cta {
|
|
14129
|
+
border: 1px solid var(--q1-color-border);
|
|
14130
|
+
background: var(--q1-color-bg-panel);
|
|
14131
|
+
color: var(--q1-color-text-primary);
|
|
14132
|
+
}
|
|
14133
|
+
|
|
14134
|
+
@media (hover: hover) and (pointer: fine) {
|
|
14135
|
+
/* 悬停与同族 .banner__action 一致:底色换 bg-subtle。 */
|
|
14136
|
+
:root[data-theme='dark'] .banner__cta:hover {
|
|
14137
|
+
background: var(--q1-color-bg-subtle);
|
|
14138
|
+
}
|
|
14139
|
+
}
|
|
14140
|
+
|
|
14141
|
+
/* Badge Pill:亮色 background-200 是近白浅底,暗色同一 token 翻成纯黑,在面板上成黑块;改面板底色;
|
|
14142
|
+
:where 把特异性压回基础规则,悬停/按下态照常覆盖。 */
|
|
14143
|
+
:where(:root[data-theme='dark']) .badge__pill-visual {
|
|
14144
|
+
background: var(--q1-color-bg-panel);
|
|
14145
|
+
}
|
|
14146
|
+
|
|
14147
|
+
/* Filter Chip:暗色 bg-canvas 比示例面板更深,成黑块;改面板底色(同上用 :where 保留悬停态)。 */
|
|
14148
|
+
:where(:root[data-theme='dark']) .filter-chip {
|
|
14149
|
+
background: var(--q1-color-bg-panel);
|
|
14150
|
+
}
|
|
14151
|
+
|
|
14152
|
+
/* 虚线占位(Filter Chip 未设值、Context Menu 触发区):暗色 border-strong 与面板仅约 1.4:1,
|
|
14153
|
+
先用 text-muted 拉到 ≥ 3:1;border-strong 取值定案后再统一回归。 */
|
|
14154
|
+
:root[data-theme='dark'] .filter-chip:not(.filter-chip--set):not([data-disabled]),
|
|
14155
|
+
:root[data-theme='dark'] .context-menu__area {
|
|
14156
|
+
border-color: var(--q1-color-text-muted);
|
|
14157
|
+
}
|
|
14158
|
+
|
|
14159
|
+
/* Multi Select 未选中勾选框:暗色 border-strong 落在浮层底上约 1.1:1;改控件边界角色 border-control。 */
|
|
14160
|
+
:root[data-theme='dark'] .multi-select__check:not(.multi-select__check--on) {
|
|
14161
|
+
border-color: var(--q1-color-border-control);
|
|
14162
|
+
}
|