@ash-qw/dsh-theme-prts 1.4.1 → 2.0.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 +17 -0
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/lib/client.js +472 -80
- package/package.json +2 -2
- package/src/client/index.js +1 -2
- package/src/client/session-lifeline.js +1 -1
- package/src/client/session-summary-preview.js +116 -2
- package/src/client/sidebar-control-adapter.js +370 -43
- package/src/client/theme-settings-workbench.js +15 -48
- package/src/styles/facility-vector.css +105 -21
- package/src/styles/prts.css +5 -5
- package/src/styles/refinement.css +1 -1
- package/src/styles/theme-settings-workbench.css +6 -32
|
@@ -11,18 +11,10 @@ const SETTINGS_FOCUSABLE = [
|
|
|
11
11
|
'[tabindex]:not([tabindex="-1"])',
|
|
12
12
|
].join(',')
|
|
13
13
|
|
|
14
|
-
const PRESET_OPTIONS = [
|
|
15
|
-
['standard-tactical', '标准战术', '完整底纹 / 标准玻璃 / 系统动效'],
|
|
16
|
-
['clear-glass', '清晰玻璃', '克制底纹 / 清晰玻璃 / 系统动效'],
|
|
17
|
-
['quiet-reading', '静谧阅读', '克制底纹 / 柔和玻璃 / 减少动效'],
|
|
18
|
-
]
|
|
19
|
-
|
|
20
14
|
const COMMON_CONTROLS = [
|
|
21
15
|
['cursor', 'PRTS 光标', [['system', '关闭'], ['prts', '开启']]],
|
|
22
16
|
['railDefaultHidden', '默认隐藏导航栏', [['false', '关闭'], ['true', '开启']]],
|
|
23
|
-
['
|
|
24
|
-
['glass', '玻璃材质', [['off', '关闭'], ['soft', '柔和'], ['standard', '标准'], ['clear', '清晰']]],
|
|
25
|
-
['motion', '动态效果', [['system', '跟随系统'], ['reduced', '减少']]],
|
|
17
|
+
['motion', '动态效果', []],
|
|
26
18
|
['sessionFlow', '当前会话流线', [['false', '关闭'], ['true', '开启']]],
|
|
27
19
|
['sessionGlow', '流线光效', [['false', '关闭'], ['true', '开启']]],
|
|
28
20
|
['sessionFlowPalette', '流线色调', [['triad', '三色'], ['rhodes', '青蓝'], ['amber', '金黄'], ['alert', '赤红'], ['custom', '自定义']]],
|
|
@@ -45,10 +37,8 @@ function previewSetting(key, label, description) {
|
|
|
45
37
|
}
|
|
46
38
|
|
|
47
39
|
function settingButtons(key, label, options) {
|
|
48
|
-
const note = key === '
|
|
49
|
-
|
|
50
|
-
: key === 'motion'
|
|
51
|
-
? '<small data-prts-setting-note data-prts-effective-motion hidden>系统当前要求减少动态</small>'
|
|
40
|
+
const note = key === 'motion'
|
|
41
|
+
? '<small data-prts-setting-note>关闭后减少装饰动效,保留运行状态等必要反馈</small><small data-prts-setting-note data-prts-effective-motion hidden>系统当前要求减少动态</small>'
|
|
52
42
|
: key === 'railDefaultHidden'
|
|
53
43
|
? '<small data-prts-setting-note>在任意窗口宽度下默认收起 P.R.T.S. 导航,可从左侧按钮临时展开</small>'
|
|
54
44
|
: key === 'conversationStyle'
|
|
@@ -64,11 +54,11 @@ function settingButtons(key, label, options) {
|
|
|
64
54
|
: key === 'sessionFlowPalette'
|
|
65
55
|
? '<small data-prts-setting-note>同时适配日间与夜间模式</small>'
|
|
66
56
|
: ''
|
|
67
|
-
if (['cursor', 'railDefaultHidden', 'sessionFlow', 'sessionGlow', 'bakerGroupAvatars', 'conversationEmblem', 'sessionPreview', 'previewOngoing', 'previewWarning', 'previewDone', 'previewDoubleClick', 'previewFollowOngoing', 'previewFollowWarning'].includes(key)) return `<div data-prts-setting-row="${key}">
|
|
57
|
+
if (['motion', 'cursor', 'railDefaultHidden', 'sessionFlow', 'sessionGlow', 'bakerGroupAvatars', 'conversationEmblem', 'sessionPreview', 'previewOngoing', 'previewWarning', 'previewDone', 'previewDoubleClick', 'previewFollowOngoing', 'previewFollowWarning'].includes(key)) return `<div data-prts-setting-row="${key}">
|
|
68
58
|
<span><strong>${label}</strong>${note}</span>
|
|
69
59
|
<button type="button" role="switch" aria-label="${label}" aria-checked="false" data-prts-setting-switch="${key}" ${key === 'cursor' ? 'data-prts-cursor-switch' : ''}><span aria-hidden="true"></span></button>
|
|
70
60
|
</div>`
|
|
71
|
-
const sample = value => key === '
|
|
61
|
+
const sample = value => key === 'sessionFlowPalette'
|
|
72
62
|
? `<i data-prts-option-sample="${key}" data-prts-option-sample-value="${value}" aria-hidden="true"></i>`
|
|
73
63
|
: ''
|
|
74
64
|
return `<div data-prts-setting-row="${key}">
|
|
@@ -77,11 +67,6 @@ function settingButtons(key, label, options) {
|
|
|
77
67
|
</div>`
|
|
78
68
|
}
|
|
79
69
|
|
|
80
|
-
function presetMarkup() {
|
|
81
|
-
return PRESET_OPTIONS.map(([value, title, description]) => `<button type="button" data-prts-setting-key="preset" data-prts-setting-value="${value}" data-prts-preset-card>
|
|
82
|
-
<strong>${title}</strong><span>${description}</span>
|
|
83
|
-
</button>`).join('')
|
|
84
|
-
}
|
|
85
70
|
|
|
86
71
|
function particleMarkup() {
|
|
87
72
|
return PARTICLE_OPTIONS.map(([value, label, count]) => `<button type="button" role="radio" data-prts-setting-key="particleDetail" data-prts-setting-value="${value}">
|
|
@@ -121,9 +106,8 @@ export function themeSettingsMarkup() {
|
|
|
121
106
|
<dialog id="prts-theme-settings" data-prts-theme-settings aria-label="P.R.T.S. 主题设置" aria-hidden="true">
|
|
122
107
|
<div data-prts-settings-frame>
|
|
123
108
|
<header data-prts-theme-settings-header>
|
|
124
|
-
<span><small>P.R.T.S. /
|
|
109
|
+
<span><small>P.R.T.S. / 设置</small><strong>主题设置</strong></span>
|
|
125
110
|
<div data-prts-settings-summary aria-live="polite">
|
|
126
|
-
<span data-prts-settings-preset-status>标准战术</span>
|
|
127
111
|
<span data-prts-persistence-status hidden></span>
|
|
128
112
|
</div>
|
|
129
113
|
<button type="button" data-prts-theme-settings-close aria-label="关闭主题设置">×</button>
|
|
@@ -132,10 +116,10 @@ export function themeSettingsMarkup() {
|
|
|
132
116
|
<div data-prts-settings-body>
|
|
133
117
|
<div data-prts-settings-sidebar>
|
|
134
118
|
<nav data-prts-settings-nav role="tablist" aria-label="设置分区">
|
|
135
|
-
<button type="button" data-prts-settings-jump="appearance" role="tab" id="prts-tab-appearance" aria-controls="prts-page-appearance" aria-selected="true" tabindex="0"
|
|
119
|
+
<button type="button" data-prts-settings-jump="appearance" role="tab" id="prts-tab-appearance" aria-controls="prts-page-appearance" aria-selected="true" tabindex="0">会话外观</button>
|
|
136
120
|
<button type="button" data-prts-settings-jump="interaction" role="tab" id="prts-tab-interaction" aria-controls="prts-page-interaction" aria-selected="false" tabindex="-1">交互</button>
|
|
137
121
|
<button type="button" data-prts-settings-jump="flow" role="tab" id="prts-tab-flow" aria-controls="prts-page-flow" aria-selected="false" tabindex="-1">会话流线</button>
|
|
138
|
-
<button type="button" data-prts-settings-jump="particles" role="tab" id="prts-tab-particles" aria-controls="prts-page-particles" aria-selected="false" tabindex="-1"
|
|
122
|
+
<button type="button" data-prts-settings-jump="particles" role="tab" id="prts-tab-particles" aria-controls="prts-page-particles" aria-selected="false" tabindex="-1">粒子徽记</button>
|
|
139
123
|
<button type="button" data-prts-settings-jump="assistance" role="tab" id="prts-tab-assistance" aria-controls="prts-page-assistance" aria-selected="false" tabindex="-1">辅助功能</button>
|
|
140
124
|
</nav>
|
|
141
125
|
<footer data-prts-settings-actions aria-label="全局主题设置操作">
|
|
@@ -145,8 +129,8 @@ export function themeSettingsMarkup() {
|
|
|
145
129
|
</div>
|
|
146
130
|
<div data-prts-reset-zone>
|
|
147
131
|
|
|
148
|
-
<button type="button" data-prts-reset-visual title="
|
|
149
|
-
<div data-prts-reset-confirm hidden role="group" aria-label="
|
|
132
|
+
<button type="button" data-prts-reset-visual title="恢复全部主题设置" aria-label="恢复全部主题设置">恢复默认</button>
|
|
133
|
+
<div data-prts-reset-confirm hidden role="group" aria-label="确认恢复全部主题设置">
|
|
150
134
|
<span>重置全部分类的主题设置,保留主题开关、启动动画和徽记配置。</span>
|
|
151
135
|
<button type="button" data-prts-reset-confirm-action>确认恢复</button>
|
|
152
136
|
<button type="button" data-prts-reset-cancel>取消</button>
|
|
@@ -156,18 +140,6 @@ export function themeSettingsMarkup() {
|
|
|
156
140
|
</div>
|
|
157
141
|
<div data-prts-theme-settings-scroll>
|
|
158
142
|
<section data-prts-settings-section="appearance" role="tabpanel" id="prts-page-appearance" aria-labelledby="prts-tab-appearance" tabindex="0">
|
|
159
|
-
<header data-prts-section-heading><strong>外观</strong><small>预设、界面材质与会话样式</small></header>
|
|
160
|
-
<section data-prts-settings-presets>
|
|
161
|
-
<header><span><strong>视觉预设</strong></span></header>
|
|
162
|
-
<div>${presetMarkup()}</div>
|
|
163
|
-
</section>
|
|
164
|
-
|
|
165
|
-
<section data-prts-settings-common>
|
|
166
|
-
<header><span><strong>界面外观</strong></span></header>
|
|
167
|
-
<div data-prts-settings-common-grid>
|
|
168
|
-
${COMMON_CONTROLS.filter(([key]) => ['texture', 'glass'].includes(key)).map(([key, label, options]) => settingButtons(key, label, options)).join('')}
|
|
169
|
-
</div>
|
|
170
|
-
</section>
|
|
171
143
|
<section data-prts-conversation-settings>
|
|
172
144
|
<header><strong>会话主题</strong><small>选择消息的呈现方式</small></header>
|
|
173
145
|
<div data-prts-conversation-cards>
|
|
@@ -180,13 +152,11 @@ export function themeSettingsMarkup() {
|
|
|
180
152
|
</section>
|
|
181
153
|
</section>
|
|
182
154
|
<section data-prts-settings-common data-prts-settings-section="interaction" role="tabpanel" id="prts-page-interaction" aria-labelledby="prts-tab-interaction" tabindex="0" hidden>
|
|
183
|
-
<header data-prts-section-heading><strong>交互</strong><small>光标、导航栏与动态反馈</small></header>
|
|
184
155
|
<div data-prts-settings-common-grid>
|
|
185
156
|
${COMMON_CONTROLS.filter(([key]) => ['cursor', 'railDefaultHidden', 'motion'].includes(key)).map(([key, label, options]) => settingButtons(key, label, options)).join('')}
|
|
186
157
|
</div>
|
|
187
158
|
</section>
|
|
188
159
|
<section data-prts-settings-section="assistance" role="tabpanel" id="prts-page-assistance" aria-labelledby="prts-tab-assistance" tabindex="0" hidden>
|
|
189
|
-
<header data-prts-section-heading><strong>辅助功能</strong><small>会话状态查看与快捷操作</small></header>
|
|
190
160
|
<section data-prts-preview-settings>
|
|
191
161
|
<div data-prts-preview-master>
|
|
192
162
|
${previewSetting('sessionPreview', '会话状态预览', '在工作区右侧查看会话进度,无需切换当前会话')}
|
|
@@ -214,7 +184,6 @@ export function themeSettingsMarkup() {
|
|
|
214
184
|
</section>
|
|
215
185
|
</section>
|
|
216
186
|
<section data-prts-settings-common data-prts-settings-section="flow" role="tabpanel" id="prts-page-flow" aria-labelledby="prts-tab-flow" tabindex="0" hidden>
|
|
217
|
-
<header data-prts-section-heading><strong>会话流线</strong><small>当前会话的流线与辉光</small></header>
|
|
218
187
|
<div data-prts-settings-common-grid>
|
|
219
188
|
${COMMON_CONTROLS.filter(([key]) => ['sessionFlow', 'sessionGlow', 'sessionFlowPalette'].includes(key)).map(([key, label, options]) => settingButtons(key, label, options)).join('')}
|
|
220
189
|
${sessionFlowColorMarkup()}
|
|
@@ -227,11 +196,10 @@ export function themeSettingsMarkup() {
|
|
|
227
196
|
</section>
|
|
228
197
|
|
|
229
198
|
<section data-prts-settings-advanced data-prts-settings-section="particles" role="tabpanel" id="prts-page-particles" aria-labelledby="prts-tab-particles" tabindex="0" hidden>
|
|
230
|
-
<header data-prts-section-heading><span><strong>粒子效果</strong><small>徽记精度与跟随移动速度</small></span><output data-prts-advanced-summary>标准 / 1×</output></header>
|
|
231
199
|
<div data-prts-settings-advanced-content>
|
|
232
200
|
${customEmblemMarkup()}
|
|
233
201
|
<section data-prts-particle-detail>
|
|
234
|
-
<header><strong>粒子精度</strong><span>同时调整会话与新会话徽记</span></header>
|
|
202
|
+
<header><strong>粒子精度</strong><span>同时调整会话与新会话徽记</span><output data-prts-advanced-summary>标准</output></header>
|
|
235
203
|
<div role="radiogroup" aria-label="粒子精度">${particleMarkup()}</div>
|
|
236
204
|
<label data-prts-setting-row="particleTraversalSpeed" data-prts-setting-range-row data-prts-particle-traversal>
|
|
237
205
|
<span><strong>跟随移动速度</strong><small>控制普通会话徽记移动及破碎重组的滚动距离</small></span>
|
|
@@ -519,6 +487,7 @@ export function createThemeSettingsOverlay({
|
|
|
519
487
|
for (const toggle of panel.querySelectorAll('[data-prts-setting-switch]')) {
|
|
520
488
|
const key = toggle.dataset.prtsSettingSwitch
|
|
521
489
|
const enabled = key === 'cursor' ? currentPreferences.cursor === 'prts'
|
|
490
|
+
: key === 'motion' ? currentPreferences.motion !== 'reduced'
|
|
522
491
|
: key === 'railDefaultHidden' ? currentPreferences[key] === true : currentPreferences[key] !== false
|
|
523
492
|
toggle.setAttribute('aria-checked', String(enabled))
|
|
524
493
|
toggle.classList.toggle('is-active', enabled)
|
|
@@ -536,6 +505,8 @@ export function createThemeSettingsOverlay({
|
|
|
536
505
|
|| (key === 'sessionFlowColors' && activeSessionFlowPalette() !== 'custom')
|
|
537
506
|
}
|
|
538
507
|
const particleDetail = resolveParticleDetail(currentPreferences)
|
|
508
|
+
const detailSummary = panel.querySelector('[data-prts-advanced-summary]')
|
|
509
|
+
if (detailSummary) detailSummary.textContent = PARTICLE_OPTIONS.find(([value]) => value === particleDetail)?.[1] ?? '标准'
|
|
539
510
|
for (const button of panel.querySelectorAll('button[data-prts-setting-key]')) {
|
|
540
511
|
const key = button.dataset.prtsSettingKey
|
|
541
512
|
const actual = key === 'particleDetail'
|
|
@@ -550,10 +521,6 @@ export function createThemeSettingsOverlay({
|
|
|
550
521
|
button.setAttribute('aria-pressed', String(selected))
|
|
551
522
|
if (button.getAttribute('role') === 'radio') button.setAttribute('aria-checked', String(selected))
|
|
552
523
|
}
|
|
553
|
-
const presetLabels = { 'standard-tactical': '标准战术', 'clear-glass': '清晰玻璃', 'quiet-reading': '静谧阅读', custom: '自定义' }
|
|
554
|
-
const preset = presetLabels[currentPreferences.preset] || '自定义'
|
|
555
|
-
const presetStatus = panel.querySelector('[data-prts-settings-preset-status]')
|
|
556
|
-
if (presetStatus) presetStatus.textContent = preset
|
|
557
524
|
const motionStatus = panel.querySelector('[data-prts-effective-motion]')
|
|
558
525
|
if (motionStatus) motionStatus.hidden = !(currentPreferences.motion === 'system' && motionMedia?.matches)
|
|
559
526
|
const transparency = panel.querySelector('[data-prts-transparency-status]')
|
|
@@ -619,7 +586,7 @@ export function createThemeSettingsOverlay({
|
|
|
619
586
|
if (target.hasAttribute('data-prts-setting-switch')) {
|
|
620
587
|
const key = target.dataset.prtsSettingSwitch
|
|
621
588
|
const enabled = target.getAttribute('aria-checked') === 'true'
|
|
622
|
-
onPreferenceChange(key, key === 'cursor' ? (enabled ? 'system' : 'prts') : !enabled)
|
|
589
|
+
onPreferenceChange(key, key === 'cursor' ? (enabled ? 'system' : 'prts') : key === 'motion' ? (enabled ? 'reduced' : 'system') : !enabled)
|
|
623
590
|
return
|
|
624
591
|
}
|
|
625
592
|
if (target.hasAttribute('data-prts-setting-key')) {
|
|
@@ -127,22 +127,11 @@ html[data-dsh-prts] [data-prts-session-summary-signal] {
|
|
|
127
127
|
color: inherit;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
html[data-dsh-prts] [data-prts-session-summary-signal="ongoing"]
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
width: 2px;
|
|
136
|
-
height: 2px;
|
|
137
|
-
background: currentColor;
|
|
138
|
-
box-shadow:
|
|
139
|
-
3.5px 0 currentColor,
|
|
140
|
-
7px 0 currentColor,
|
|
141
|
-
7px 3.5px currentColor,
|
|
142
|
-
7px 7px currentColor,
|
|
143
|
-
3.5px 7px currentColor,
|
|
144
|
-
0 7px currentColor,
|
|
145
|
-
0 3.5px currentColor;
|
|
130
|
+
html[data-dsh-prts] [data-prts-session-summary-signal="ongoing"] {
|
|
131
|
+
width: 16px;
|
|
132
|
+
height: 16px;
|
|
133
|
+
flex-basis: 16px;
|
|
134
|
+
color: var(--dsw-static-deepseek-450, var(--prts-cyan));
|
|
146
135
|
}
|
|
147
136
|
|
|
148
137
|
html[data-dsh-prts] [data-prts-session-summary-signal="done"]::before {
|
|
@@ -191,6 +180,16 @@ html[data-dsh-prts] [data-prts-session-summary-popover] {
|
|
|
191
180
|
pointer-events: none;
|
|
192
181
|
}
|
|
193
182
|
|
|
183
|
+
html[data-dsh-prts] [data-prts-session-summary-popover][data-prts-summary-above] {
|
|
184
|
+
top: auto;
|
|
185
|
+
bottom: calc(100% + 6px);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
html[data-dsh-prts] [data-prts-session-summary-popover][data-prts-summary-above]::before {
|
|
189
|
+
top: 100%;
|
|
190
|
+
bottom: auto;
|
|
191
|
+
}
|
|
192
|
+
|
|
194
193
|
html[data-dsh-prts] [data-prts-session-summary-popover]::before {
|
|
195
194
|
content: "";
|
|
196
195
|
position: absolute;
|
|
@@ -201,7 +200,7 @@ html[data-dsh-prts] [data-prts-session-summary-popover]::before {
|
|
|
201
200
|
height: 16px;
|
|
202
201
|
}
|
|
203
202
|
|
|
204
|
-
html[data-dsh-prts] [data-prts-session-summary-group]:is(:hover, :has(:focus-visible), [data-prts-preview-open]) [data-prts-session-summary-popover] {
|
|
203
|
+
html[data-dsh-prts] [data-prts-session-summary-group]:is(:hover, :has(:focus-visible), [data-prts-preview-open], [data-prts-summary-hover-open]) [data-prts-session-summary-popover] {
|
|
205
204
|
opacity: 1;
|
|
206
205
|
visibility: visible;
|
|
207
206
|
transform: translate3d(0, 0, 0);
|
|
@@ -514,11 +513,11 @@ html[data-dsh-prts][data-prts-scheme="light"][data-prts-session-glow="on"] [data
|
|
|
514
513
|
stroke-width: .52;
|
|
515
514
|
}
|
|
516
515
|
|
|
517
|
-
html[data-dsh-prts] [data-prts-session-row][aria-selected="true"] [data-prts-session-lifeline] {
|
|
516
|
+
html[data-dsh-prts] [data-prts-session-row]:is([data-prts-selection-target="true"], [aria-selected="true"]:not([data-prts-selection-target="false"])) [data-prts-session-lifeline] {
|
|
518
517
|
opacity: .98;
|
|
519
518
|
}
|
|
520
519
|
|
|
521
|
-
html[data-dsh-prts] [data-prts-session-row][aria-selected="true"]:hover [data-prts-session-lifeline] {
|
|
520
|
+
html[data-dsh-prts] [data-prts-session-row]:is([data-prts-selection-target="true"], [aria-selected="true"]:not([data-prts-selection-target="false"])):hover [data-prts-session-lifeline] {
|
|
522
521
|
opacity: 0;
|
|
523
522
|
}
|
|
524
523
|
|
|
@@ -603,7 +602,7 @@ html[data-dsh-prts][data-prts-scheme="light"] [data-prts-session-row] {
|
|
|
603
602
|
--prts-session-pickup-fill: #3f4d56;
|
|
604
603
|
}
|
|
605
604
|
|
|
606
|
-
html[data-dsh-prts] [data-prts-session-row][aria-selected="true"] {
|
|
605
|
+
html[data-dsh-prts] [data-prts-session-row]:is([data-prts-selection-target="true"], [aria-selected="true"]:not([data-prts-selection-target="false"])) {
|
|
607
606
|
--prts-facility-texture-color: var(--prts-yellow);
|
|
608
607
|
}
|
|
609
608
|
|
|
@@ -628,7 +627,7 @@ html[data-dsh-prts] [data-prts-workspace-row] > [data-prts-facility-spine] {
|
|
|
628
627
|
--prts-facility-surface: var(--prts-cyan);
|
|
629
628
|
}
|
|
630
629
|
|
|
631
|
-
html[data-dsh-prts] [data-prts-session-row][aria-selected="true"] > [data-prts-facility-spine] {
|
|
630
|
+
html[data-dsh-prts] [data-prts-session-row]:is([data-prts-selection-target="true"], [aria-selected="true"]:not([data-prts-selection-target="false"])) > [data-prts-facility-spine] {
|
|
632
631
|
--prts-facility-surface: var(--prts-yellow);
|
|
633
632
|
}
|
|
634
633
|
|
|
@@ -642,6 +641,13 @@ html[data-dsh-prts] [data-prts-session-row]:is(:hover, :focus-within, [data-prts
|
|
|
642
641
|
transform: scaleX(1) !important;
|
|
643
642
|
}
|
|
644
643
|
|
|
644
|
+
/* Expansion is state feedback: do not trail the newly visible session rows.
|
|
645
|
+
Collapsed-row hover keeps the normal spring transition. */
|
|
646
|
+
html[data-dsh-prts] [data-prts-workspace-row][aria-expanded="true"] > [data-prts-facility-spine],
|
|
647
|
+
html[data-dsh-prts] [data-prts-workspace-row][aria-expanded="true"]::before {
|
|
648
|
+
transition: none;
|
|
649
|
+
}
|
|
650
|
+
|
|
645
651
|
/* Switch each legacy fallback off only after its own valid vector path exists. */
|
|
646
652
|
html[data-dsh-prts] [data-prts-workspace-row][data-prts-spine-vector]::before,
|
|
647
653
|
html[data-dsh-prts] [data-prts-session-row][data-prts-spine-vector]::before {
|
|
@@ -780,3 +786,81 @@ html[data-dsh-prts] [data-prts-preview-marker] { display:none;flex:none;margin-l
|
|
|
780
786
|
html[data-dsh-prts] [data-prts-preview-active] > [data-prts-preview-marker] { display:block; }
|
|
781
787
|
html[data-dsh-prts] [data-prts-session-summary-item][data-prts-preview-active] { box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--prts-ink) 30%,transparent);border-top-color:transparent;border-radius:5px;background:color-mix(in srgb,currentColor 9%,transparent); }
|
|
782
788
|
html[data-dsh-prts] [data-prts-preview-session-title] { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:5px;color:var(--prts-muted);font:400 11px/1.5 var(--prts-body); }
|
|
789
|
+
|
|
790
|
+
html[data-dsh-prts] [data-prts-summary-reply][data-prts-preview-approval] > [data-prts-preview-body] { display:block;max-height:132px;overflow:auto;-webkit-line-clamp:unset;white-space:pre-wrap;overflow-wrap:anywhere; }
|
|
791
|
+
html[data-dsh-prts] [data-prts-approval-details] { margin-top:10px;color:var(--prts-muted);font-size:11px; }
|
|
792
|
+
html[data-dsh-prts] [data-prts-approval-details] pre { color:var(--prts-ink);white-space:pre-wrap;overflow-wrap:anywhere;user-select:text; }
|
|
793
|
+
|
|
794
|
+
html[data-dsh-prts] [data-prts-summary-instant] [data-prts-session-summary-popover] { transition:none; }
|
|
795
|
+
|
|
796
|
+
html[data-dsh-prts] [data-prts-summary-reply] { max-width:calc(100dvw - 16px);max-height:calc(100dvh - 16px);overflow:auto; }
|
|
797
|
+
|
|
798
|
+
html[data-dsh-prts] [data-prts-summary-reply][data-prts-preview-no-space] { visibility:hidden !important;pointer-events:none !important; }
|
|
799
|
+
html[data-dsh-prts] [data-prts-preview-space-notice] { margin-top:8px;padding:8px;border-top:1px solid var(--prts-line);color:var(--prts-muted);font:11px/1.6 var(--prts-body);white-space:normal;overflow-wrap:anywhere; }
|
|
800
|
+
|
|
801
|
+
html[data-dsh-prts] [data-prts-summary-space-notice] { display:none;font:11px/1.6 var(--prts-body);color:var(--prts-muted); }
|
|
802
|
+
html[data-dsh-prts] [data-prts-summary-no-space] > :not([data-prts-summary-space-notice]) { display:none; }
|
|
803
|
+
html[data-dsh-prts] [data-prts-summary-no-space] > [data-prts-summary-space-notice] { display:block; }
|
|
804
|
+
html[data-dsh-prts] [data-prts-summary-no-room] { visibility:hidden !important;pointer-events:none !important; }
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
/* A reply-space warning occupies the existing heading, never enlarges the menu. */
|
|
808
|
+
html[data-dsh-prts] [data-prts-session-summary-popover] > [data-prts-preview-space-notice] {
|
|
809
|
+
position: absolute;
|
|
810
|
+
top: 8px;
|
|
811
|
+
right: 8px;
|
|
812
|
+
left: 8px;
|
|
813
|
+
height: 28px;
|
|
814
|
+
margin: 0;
|
|
815
|
+
padding: 0 6px 6px;
|
|
816
|
+
border: 0;
|
|
817
|
+
display: flex;
|
|
818
|
+
align-items: center;
|
|
819
|
+
background: var(--prts-glass-dense, var(--prts-panel));
|
|
820
|
+
white-space: nowrap;
|
|
821
|
+
}
|
|
822
|
+
html[data-dsh-prts] [data-prts-session-summary-popover]:has(> [data-prts-preview-space-notice]) > [data-prts-session-summary-heading] {
|
|
823
|
+
visibility: hidden;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
/* Keep different-sized state markers centered on the same axis. */
|
|
827
|
+
html[data-dsh-prts] [data-prts-session-row] [data-state]:is([data-state="ongoing"], [data-state="done"], [data-state="warning"], [data-state="error"]) {
|
|
828
|
+
flex-shrink: 0;
|
|
829
|
+
margin-left: 20px;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
/* Running-room marker inside the host SVG; native children remain restorable. */
|
|
833
|
+
html[data-dsh-prts] [data-prts-session-row] svg[data-state="ongoing"]:has(> [data-prts-running-marker]) {
|
|
834
|
+
position: relative;
|
|
835
|
+
z-index: 1;
|
|
836
|
+
flex: 0 0 20px;
|
|
837
|
+
width: 20px;
|
|
838
|
+
height: 20px;
|
|
839
|
+
color: var(--prts-session-status-color, var(--dsw-static-deepseek-450, var(--prts-cyan)));
|
|
840
|
+
animation: none;
|
|
841
|
+
}
|
|
842
|
+
html[data-dsh-prts] svg[data-state="ongoing"]:has(> [data-prts-running-marker]) > :not([data-prts-running-marker]) { display: none; }
|
|
843
|
+
html[data-dsh-prts] [data-prts-running-marker] text {
|
|
844
|
+
fill: currentColor;
|
|
845
|
+
stroke: none;
|
|
846
|
+
text-anchor: middle;
|
|
847
|
+
font: 700 12px Arial, sans-serif;
|
|
848
|
+
}
|
|
849
|
+
html[data-dsh-prts] [data-prts-running-marker] circle {
|
|
850
|
+
fill: none;
|
|
851
|
+
stroke: currentColor;
|
|
852
|
+
stroke-width: 1.7;
|
|
853
|
+
stroke-linecap: round;
|
|
854
|
+
transform-origin: 12px 12px;
|
|
855
|
+
animation: prts-running-room-orbit 2.4s linear infinite;
|
|
856
|
+
}
|
|
857
|
+
@keyframes prts-running-room-orbit { to { transform: rotate(360deg); } }
|
|
858
|
+
/* Preserve this small status animation under reduced motion: it signals ongoing work. */
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
html[data-dsh-prts] [data-prts-summary-dismissed] [data-prts-session-summary-popover] {
|
|
862
|
+
opacity: 0 !important;
|
|
863
|
+
visibility: hidden !important;
|
|
864
|
+
pointer-events: none !important;
|
|
865
|
+
transition: none;
|
|
866
|
+
}
|
package/src/styles/prts.css
CHANGED
|
@@ -915,7 +915,7 @@ html[data-dsh-prts] [data-prts-session-row]:is(:hover, :focus-within, [data-prts
|
|
|
915
915
|
transform: scaleX(1);
|
|
916
916
|
}
|
|
917
917
|
|
|
918
|
-
html[data-dsh-prts] [data-prts-session-row][aria-selected="true"]::before {
|
|
918
|
+
html[data-dsh-prts] [data-prts-session-row]:is([data-prts-selection-target="true"], [aria-selected="true"]:not([data-prts-selection-target="false"]))::before {
|
|
919
919
|
background: var(--prts-yellow);
|
|
920
920
|
}
|
|
921
921
|
|
|
@@ -943,8 +943,8 @@ html[data-dsh-prts] :is([data-prts-workspace-row], [data-prts-session-row]) [dat
|
|
|
943
943
|
}
|
|
944
944
|
|
|
945
945
|
html[data-dsh-prts] [data-prts-row-title],
|
|
946
|
-
html[data-dsh-prts] [data-prts-session-row] > span:not([data-prts-facility-face]):not([data-prts-row-projection]):not([data-prts-session-actions]),
|
|
947
|
-
html[data-dsh-prts] [data-prts-workspace-row] > span:not([data-prts-facility-face]):not([data-prts-row-projection]):not([data-prts-workspace-actions]) {
|
|
946
|
+
html[data-dsh-prts] [data-prts-session-row] > span:not([data-prts-facility-face]):not([data-prts-facility-spine]):not([data-prts-row-projection]):not([data-prts-session-actions]),
|
|
947
|
+
html[data-dsh-prts] [data-prts-workspace-row] > span:not([data-prts-facility-face]):not([data-prts-facility-spine]):not([data-prts-row-projection]):not([data-prts-workspace-actions]) {
|
|
948
948
|
position: relative;
|
|
949
949
|
z-index: 3;
|
|
950
950
|
min-width: 0;
|
|
@@ -976,11 +976,11 @@ html[data-dsh-prts] [data-prts-session-row] [data-prts-row-title]::before {
|
|
|
976
976
|
letter-spacing: .08em;
|
|
977
977
|
}
|
|
978
978
|
|
|
979
|
-
html[data-dsh-prts] [data-prts-session-row][aria-selected="true"] [data-prts-row-title] {
|
|
979
|
+
html[data-dsh-prts] [data-prts-session-row]:is([data-prts-selection-target="true"], [aria-selected="true"]:not([data-prts-selection-target="false"])) [data-prts-row-title] {
|
|
980
980
|
font-weight: 700;
|
|
981
981
|
}
|
|
982
982
|
|
|
983
|
-
html[data-dsh-prts] [data-prts-session-row][aria-selected="true"] [data-prts-row-title]::before {
|
|
983
|
+
html[data-dsh-prts] [data-prts-session-row]:is([data-prts-selection-target="true"], [aria-selected="true"]:not([data-prts-selection-target="false"])) [data-prts-row-title]::before {
|
|
984
984
|
color: var(--prts-yellow);
|
|
985
985
|
}
|
|
986
986
|
|
|
@@ -154,7 +154,7 @@ html[data-dsh-prts] [data-prts-session-row]:hover [data-prts-session-time] {
|
|
|
154
154
|
opacity: 0;
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
html[data-dsh-prts] [data-prts-session-row][aria-selected="true"] [data-prts-session-time] {
|
|
157
|
+
html[data-dsh-prts] [data-prts-session-row]:is([data-prts-selection-target="true"], [aria-selected="true"]:not([data-prts-selection-target="false"])) [data-prts-session-time] {
|
|
158
158
|
opacity: 0;
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -784,37 +784,12 @@ padding: 20px 24px 28px;
|
|
|
784
784
|
background: var(--prts-canvas);
|
|
785
785
|
}
|
|
786
786
|
& [data-prts-settings-section] {
|
|
787
|
-
margin: 0
|
|
788
|
-
padding: 0
|
|
789
|
-
border: 1px solid var(--prts-line);
|
|
790
|
-
border-radius: 6px;
|
|
791
|
-
background: var(--prts-panel);
|
|
792
|
-
scroll-margin-top: 16px;
|
|
793
|
-
}
|
|
794
|
-
& [data-prts-settings-section] > [data-prts-section-heading] {
|
|
795
|
-
display: flex;
|
|
796
|
-
align-items: center;
|
|
797
|
-
justify-content: space-between;
|
|
798
|
-
gap: 12px;
|
|
799
|
-
min-height: 76px;
|
|
800
|
-
margin: 0 -20px 8px;
|
|
801
|
-
padding: 18px 20px;
|
|
787
|
+
margin: 0;
|
|
788
|
+
padding: 0;
|
|
802
789
|
border: 0;
|
|
803
|
-
border-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
}
|
|
807
|
-
& [data-prts-settings-section] > [data-prts-section-heading] > span {
|
|
808
|
-
display: grid;
|
|
809
|
-
gap: 5px;
|
|
810
|
-
}
|
|
811
|
-
& [data-prts-settings-section] > [data-prts-section-heading] strong {
|
|
812
|
-
font: 650 18px/1.4 var(--prts-body);
|
|
813
|
-
letter-spacing: 0;
|
|
814
|
-
}
|
|
815
|
-
& [data-prts-settings-section] > [data-prts-section-heading] small {
|
|
816
|
-
color: var(--prts-muted);
|
|
817
|
-
font: 400 12px/1.5 var(--prts-body);
|
|
790
|
+
border-radius: 0;
|
|
791
|
+
background: transparent;
|
|
792
|
+
scroll-margin-top: 16px;
|
|
818
793
|
}
|
|
819
794
|
& [data-prts-settings-section="appearance"] > section {
|
|
820
795
|
margin-bottom: 8px;
|
|
@@ -833,8 +808,7 @@ box-shadow: inset 3px 0 var(--prts-yellow);
|
|
|
833
808
|
}
|
|
834
809
|
@media (max-width: 720px) {
|
|
835
810
|
& [data-prts-theme-settings-scroll] { padding: 16px 12px 24px; }
|
|
836
|
-
& [data-prts-settings-section] { padding
|
|
837
|
-
& [data-prts-settings-section] > [data-prts-section-heading] { margin-inline: -14px; padding-inline: 14px; flex-wrap: wrap; gap: 4px 12px; }
|
|
811
|
+
& [data-prts-settings-section] { padding: 0; margin: 0; }
|
|
838
812
|
& [data-prts-settings-jump][aria-selected="true"] { box-shadow: inset 0 -3px var(--prts-yellow); }
|
|
839
813
|
}
|
|
840
814
|
& [data-prts-custom-emblem] {
|