feat(voice): add async selectable summaries

This commit is contained in:
zhangheng
2026-07-22 19:13:55 +08:00
parent 108e280b3f
commit 0a2509d923
17 changed files with 1530 additions and 159 deletions

View File

@@ -182,10 +182,18 @@
.voice-state-arrow {
flex: none;
margin-left: 10rpx;
color: #8e8e93;
font-size: 30rpx;
line-height: 1;
width: 14rpx;
height: 14rpx;
margin: -6rpx 6rpx 0 14rpx;
border-right: 3rpx solid #8e8e93;
border-bottom: 3rpx solid #8e8e93;
transform: rotate(45deg);
transition: transform 140ms cubic-bezier(0.23, 1, 0.32, 1);
}
.voice-state-arrow-expanded {
margin-top: 6rpx;
transform: rotate(225deg);
}
.voice-record-list {
@@ -210,6 +218,29 @@
font-weight: 600;
}
.voice-summary-selection-heading,
.voice-record-title-row,
.voice-summary-preview-heading {
display: flex;
align-items: center;
}
.voice-summary-selection-heading {
gap: 14rpx;
}
.voice-record-title-row {
min-width: 0;
gap: 8rpx;
}
.voice-summary-checkbox {
flex: none;
width: 46rpx;
transform: scale(0.8);
transform-origin: left center;
}
.voice-record-item {
padding: 18rpx 0;
border-top: 1rpx solid #e5e5ea;
@@ -285,6 +316,89 @@
opacity: 1;
}
.voice-summary-controls {
padding: 18rpx 0;
border-top: 1rpx solid #e5e5ea;
}
.voice-summary-button,
.voice-summary-apply-button {
width: 100%;
height: 72rpx;
margin: 0;
border: 0;
border-radius: 8rpx;
font-size: 25rpx;
font-weight: 600;
line-height: 72rpx;
}
.voice-summary-button {
background: #eaf3ff;
color: #007aff;
}
.voice-summary-apply-button {
margin-top: 18rpx;
background: #007aff;
color: #ffffff;
}
.voice-summary-button::after,
.voice-summary-apply-button::after {
border: 0;
}
.voice-summary-button[disabled],
.voice-summary-apply-button[disabled] {
background: #f1f3f6;
color: #aeaeb2;
opacity: 1;
}
.voice-summary-preview {
padding: 18rpx 0;
border-top: 1rpx solid #d8d8dc;
}
.voice-summary-preview-failed {
border-top-color: #e8b3b0;
}
.voice-summary-preview-heading {
justify-content: space-between;
gap: 18rpx;
color: #1c1c1e;
font-size: 24rpx;
font-weight: 600;
}
.voice-summary-preview-heading text:last-child {
color: #6e6e73;
font-size: 22rpx;
font-weight: 400;
text-align: right;
}
.voice-summary-preview-failed .voice-summary-preview-heading text:last-child {
color: #b8322d;
}
.voice-summary-preview-content,
.voice-summary-preview-note {
display: block;
margin-top: 14rpx;
color: #3a3a3c;
font-size: 25rpx;
line-height: 1.65;
white-space: pre-wrap;
word-break: break-all;
}
.voice-summary-preview-note {
color: #8e8e93;
}
.recording-time {
flex: none;
margin-left: 12rpx;
@@ -351,7 +465,8 @@
@media (prefers-reduced-motion: reduce) {
.voice-button,
.voice-state-actionable {
.voice-state-actionable,
.voice-state-arrow {
transition: none;
}