@vibe-forge/client 0.11.1 → 0.11.3
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/cli.cjs +6 -1
- package/dist/assets/{arc-CSepokz3.js → arc-h39NrT24.js} +1 -1
- package/dist/assets/{blockDiagram-c4efeb88-D0ARcoNf.js → blockDiagram-c4efeb88-CaDg46I6.js} +1 -1
- package/dist/assets/{c4Diagram-c83219d4-BysYF9kP.js → c4Diagram-c83219d4-CDqjcF9U.js} +1 -1
- package/dist/assets/channel-CBULQbJz.js +1 -0
- package/dist/assets/{classDiagram-beda092f-BG1GhIOL.js → classDiagram-beda092f-BDnZm8nO.js} +1 -1
- package/dist/assets/{classDiagram-v2-2358418a-Dd08uGSH.js → classDiagram-v2-2358418a-BUi85KJW.js} +1 -1
- package/dist/assets/clone-dkS7LczW.js +1 -0
- package/dist/assets/{createText-1719965b-CigPEIEn.js → createText-1719965b-Ca5dEwfo.js} +1 -1
- package/dist/assets/{cssMode-MjflyEfm.js → cssMode-Ysz7NfYo.js} +1 -1
- package/dist/assets/{edges-96097737-DuTBJJRv.js → edges-96097737-CdSKqxZt.js} +1 -1
- package/dist/assets/{erDiagram-0228fc6a-Cp1bL7Y7.js → erDiagram-0228fc6a-B-veAUv_.js} +1 -1
- package/dist/assets/{flowDb-c6c81e3f-BfKbhiq5.js → flowDb-c6c81e3f-DD8Cx7_9.js} +1 -1
- package/dist/assets/{flowDiagram-50d868cf-m7gGc3PK.js → flowDiagram-50d868cf-9f-_x1ET.js} +1 -1
- package/dist/assets/flowDiagram-v2-4f6560a1-1miffU4x.js +1 -0
- package/dist/assets/{flowchart-elk-definition-6af322e1-EVeTDRRK.js → flowchart-elk-definition-6af322e1-5RhpQM4M.js} +1 -1
- package/dist/assets/{freemarker2-Bb3-QAIN.js → freemarker2-SgMdIXw4.js} +1 -1
- package/dist/assets/{ganttDiagram-a2739b55-DslB2U0R.js → ganttDiagram-a2739b55-DnxNghZA.js} +1 -1
- package/dist/assets/{gitGraphDiagram-82fe8481-C-KFWMXL.js → gitGraphDiagram-82fe8481-CBvS3Tf9.js} +1 -1
- package/dist/assets/{graph-CukaUc0o.js → graph-CkHF299-.js} +1 -1
- package/dist/assets/{handlebars-C4le-2Y6.js → handlebars-C57IyLUe.js} +1 -1
- package/dist/assets/{html-CjNiRs5S.js → html-YsDy5wvW.js} +1 -1
- package/dist/assets/{htmlMode-B73_3-We.js → htmlMode-7o_VDODD.js} +1 -1
- package/dist/assets/{index-5325376f-CVISZFPw.js → index-5325376f-BzOVQPu-.js} +1 -1
- package/dist/assets/{index-BZosmb5_.js → index-BHFpctk6.js} +320 -319
- package/dist/assets/index-D_XqxIvp.css +32 -0
- package/dist/assets/{infoDiagram-8eee0895-DoirLE1K.js → infoDiagram-8eee0895-DJ-UI1h4.js} +1 -1
- package/dist/assets/{javascript-BDjnqJFP.js → javascript-BHQ9NEZr.js} +1 -1
- package/dist/assets/{journeyDiagram-c64418c1-Ckn-p2CM.js → journeyDiagram-c64418c1-DwfykcG9.js} +1 -1
- package/dist/assets/{jsonMode-C-ftOc5j.js → jsonMode-3QjftkMM.js} +1 -1
- package/dist/assets/{layout-Z7yUG7hB.js → layout-CbViRb_b.js} +1 -1
- package/dist/assets/{line-DPG_cfAy.js → line-DBdBvv9D.js} +1 -1
- package/dist/assets/{linear--GSeVfMi.js → linear-BDAfhcjn.js} +1 -1
- package/dist/assets/{liquid-COiLZ9py.js → liquid-B0cPPzIR.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-DGmhryFq.js → lspLanguageFeatures-IOxbobOz.js} +1 -1
- package/dist/assets/{mdx-BpL87Gej.js → mdx-Dma_RA8P.js} +1 -1
- package/dist/assets/{mermaid.core-Cg1CCDo6.js → mermaid.core-Cvn8Go4x.js} +4 -4
- package/dist/assets/{mindmap-definition-8da855dc-CKDof1lD.js → mindmap-definition-8da855dc-DEnYq0Lc.js} +1 -1
- package/dist/assets/{pieDiagram-a8764435-DwvCaZVE.js → pieDiagram-a8764435-ZC4j8sHU.js} +1 -1
- package/dist/assets/{python-63dBmWV_.js → python-Be0WX4q5.js} +1 -1
- package/dist/assets/{quadrantDiagram-1e28029f-CkzYBQpy.js → quadrantDiagram-1e28029f-DUaqHlIB.js} +1 -1
- package/dist/assets/{razor-C50tBqEZ.js → razor-Tjhny-uT.js} +1 -1
- package/dist/assets/{requirementDiagram-08caed73-Brgdjqf4.js → requirementDiagram-08caed73-DjSal3es.js} +1 -1
- package/dist/assets/{sankeyDiagram-a04cb91d-CGkYexrs.js → sankeyDiagram-a04cb91d-BMDXMrMz.js} +1 -1
- package/dist/assets/{sequenceDiagram-c5b8d532-D0wE-_J8.js → sequenceDiagram-c5b8d532-CQl9YUlH.js} +1 -1
- package/dist/assets/{stateDiagram-1ecb1508-BYb3NCXZ.js → stateDiagram-1ecb1508-DG7mU9jD.js} +1 -1
- package/dist/assets/{stateDiagram-v2-c2b004d7-DrPqi4Pt.js → stateDiagram-v2-c2b004d7-DTbR_azy.js} +1 -1
- package/dist/assets/{styles-b4e223ce-DD66TIO4.js → styles-b4e223ce-C9aS3zb8.js} +1 -1
- package/dist/assets/{styles-ca3715f6-iy02LHIV.js → styles-ca3715f6-Bh3keVTZ.js} +1 -1
- package/dist/assets/{styles-d45a18b0-BgqAgJyW.js → styles-d45a18b0-BDcLLa65.js} +1 -1
- package/dist/assets/{svgDrawCommon-b86b1483-CDq7ugnw.js → svgDrawCommon-b86b1483-B9H5ZS_9.js} +1 -1
- package/dist/assets/{timeline-definition-faaaa080-DzcLLjK0.js → timeline-definition-faaaa080-DCMYCBhK.js} +1 -1
- package/dist/assets/{tsMode-BFRFI4ct.js → tsMode-DVqLsn98.js} +1 -1
- package/dist/assets/{typescript-CBZQRAPv.js → typescript-wMVyXw7G.js} +1 -1
- package/dist/assets/{xml-BpWm6upt.js → xml-w0gzmn0c.js} +1 -1
- package/dist/assets/{xychartDiagram-f5964ef8-zBN8FmLQ.js → xychartDiagram-f5964ef8-CdxyD3K5.js} +1 -1
- package/dist/assets/{yaml-CqbJPiIP.js → yaml-C29TL1ed.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +9 -9
- package/src/api/sessions.ts +70 -1
- package/src/api/types.ts +2 -1
- package/src/api.ts +5 -0
- package/src/components/chat/AGENTS.md +14 -2
- package/src/components/chat/ChatComposerCard.scss +73 -0
- package/src/components/chat/ChatComposerCard.tsx +59 -0
- package/src/components/chat/ChatHeader.tsx +3 -1
- package/src/components/chat/ChatHistoryView.tsx +215 -49
- package/src/components/chat/CurrentTodoList.scss +210 -200
- package/src/components/chat/CurrentTodoList.tsx +116 -48
- package/src/components/chat/QueuedMessagesCard.scss +195 -0
- package/src/components/chat/QueuedMessagesCard.tsx +170 -0
- package/src/components/chat/sender/@components/adapter-select/AdapterSelectControl.scss +8 -0
- package/src/components/chat/sender/@components/sender-attachments/SenderAttachments.scss +152 -28
- package/src/components/chat/sender/@components/sender-attachments/SenderAttachments.tsx +95 -23
- package/src/components/chat/sender/@components/sender-body/SenderBody.tsx +7 -0
- package/src/components/chat/sender/@components/sender-interaction-panel/SenderInteractionPanel.scss +161 -45
- package/src/components/chat/sender/@components/sender-interaction-panel/SenderInteractionPanel.tsx +310 -71
- package/src/components/chat/sender/@components/sender-monaco-editor/SenderMonacoEditor.tsx +18 -0
- package/src/components/chat/sender/@components/sender-monaco-editor/use-sender-monaco-editor.ts +86 -9
- package/src/components/chat/sender/@components/sender-submit-action/SenderSubmitAction.scss +98 -1
- package/src/components/chat/sender/@components/sender-submit-action/SenderSubmitAction.tsx +137 -17
- package/src/components/chat/sender/@components/sender-toolbar/SenderToolbar.tsx +12 -6
- package/src/components/chat/sender/@core/build-sender-controller-result.ts +6 -0
- package/src/components/chat/sender/@core/build-sender-toolbar.ts +25 -2
- package/src/components/chat/sender/@core/create-sender-toolbar-handlers.ts +9 -2
- package/src/components/chat/sender/@core/interaction-request.ts +2 -2
- package/src/components/chat/sender/@core/sender-toolbar-bindings.ts +28 -4
- package/src/components/chat/sender/@hooks/use-sender-controller.ts +56 -11
- package/src/components/chat/sender/@hooks/use-sender-keydown.ts +64 -0
- package/src/components/chat/sender/@hooks/use-sender-shortcuts.ts +16 -1
- package/src/components/chat/sender/@hooks/use-sender-submit.ts +16 -8
- package/src/components/chat/sender/@types/sender-props.ts +19 -3
- package/src/components/chat/sender/@types/sender-toolbar-types.ts +12 -1
- package/src/components/chat/sender/Sender.scss +3 -0
- package/src/components/chat/sender/Sender.tsx +2 -12
- package/src/hooks/chat/session-view-cache.ts +4 -1
- package/src/hooks/chat/use-chat-adapter.ts +5 -1
- package/src/hooks/chat/use-chat-model-adapter-selection.tsx +5 -1
- package/src/hooks/chat/use-chat-session-actions.ts +99 -4
- package/src/hooks/chat/use-chat-session-messages.ts +20 -1
- package/src/hooks/chat/use-chat-session.ts +2 -0
- package/src/main.tsx +8 -0
- package/src/resources/locales/en.json +36 -5
- package/src/resources/locales/zh.json +36 -5
- package/src/routes/ChatRoute.scss +45 -1
- package/src/routes/ChatRoute.tsx +3 -0
- package/dist/assets/channel-CeKPk6Nd.js +0 -1
- package/dist/assets/clone-CrkD2PuD.js +0 -1
- package/dist/assets/flowDiagram-v2-4f6560a1-4ZU4bdp1.js +0 -1
- package/dist/assets/index-C1oh0w9H.css +0 -32
- package/src/components/chat/ThinkingStatus.scss +0 -70
- package/src/components/chat/ThinkingStatus.tsx +0 -13
|
@@ -1,7 +1,44 @@
|
|
|
1
1
|
import './SenderAttachments.scss'
|
|
2
2
|
|
|
3
|
+
import { useTranslation } from 'react-i18next'
|
|
4
|
+
|
|
3
5
|
import type { PendingContextFile, PendingImage } from '../../@types/sender-composer'
|
|
4
6
|
|
|
7
|
+
const formatAttachmentSize = (size?: number) => {
|
|
8
|
+
if (size == null || Number.isNaN(size) || size <= 0) {
|
|
9
|
+
return null
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (size < 1024) {
|
|
13
|
+
return `${size} B`
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (size < 1024 * 1024) {
|
|
17
|
+
return `${(size / 1024).toFixed(size >= 10 * 1024 ? 0 : 1)} KB`
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return `${(size / (1024 * 1024)).toFixed(size >= 10 * 1024 * 1024 ? 0 : 1)} MB`
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const getFileDisplayName = (file: PendingContextFile) => {
|
|
24
|
+
if (file.name != null && file.name !== '') {
|
|
25
|
+
return file.name
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const parts = file.path.split(/[\\/]/)
|
|
29
|
+
return parts.at(-1) ?? file.path
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const getFileParentPath = (path: string) => {
|
|
33
|
+
const normalized = path.replace(/\\/g, '/')
|
|
34
|
+
const lastSlashIndex = normalized.lastIndexOf('/')
|
|
35
|
+
if (lastSlashIndex <= 0) {
|
|
36
|
+
return '.'
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return normalized.slice(0, lastSlashIndex)
|
|
40
|
+
}
|
|
41
|
+
|
|
5
42
|
export function SenderAttachments({
|
|
6
43
|
pendingImages,
|
|
7
44
|
pendingFiles,
|
|
@@ -13,33 +50,68 @@ export function SenderAttachments({
|
|
|
13
50
|
onRemovePendingImage: (id: string) => void
|
|
14
51
|
onRemovePendingFile: (path: string) => void
|
|
15
52
|
}) {
|
|
53
|
+
const { t } = useTranslation()
|
|
54
|
+
|
|
16
55
|
return (
|
|
17
56
|
<>
|
|
18
|
-
{pendingImages.length > 0 && (
|
|
19
|
-
<div className='pending-
|
|
20
|
-
{
|
|
21
|
-
<div
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
57
|
+
{(pendingImages.length > 0 || pendingFiles.length > 0) && (
|
|
58
|
+
<div className='pending-attachments'>
|
|
59
|
+
{pendingFiles.length > 0 && (
|
|
60
|
+
<div className='pending-attachments__files'>
|
|
61
|
+
{pendingFiles.map((file) => {
|
|
62
|
+
const sizeLabel = formatAttachmentSize(file.size)
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<div key={file.path} className='pending-context-file'>
|
|
66
|
+
<div className='pending-context-file__meta'>
|
|
67
|
+
<span className='material-symbols-rounded pending-context-file__icon'>attach_file</span>
|
|
68
|
+
<div className='pending-context-file__copy'>
|
|
69
|
+
<span className='pending-context-file__name'>{getFileDisplayName(file)}</span>
|
|
70
|
+
<code className='pending-context-file__path'>{getFileParentPath(file.path)}</code>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
<div className='pending-context-file__actions'>
|
|
74
|
+
{sizeLabel != null && <span className='pending-context-file__size'>{sizeLabel}</span>}
|
|
75
|
+
<button
|
|
76
|
+
type='button'
|
|
77
|
+
className='pending-context-file__remove'
|
|
78
|
+
onClick={() => onRemovePendingFile(file.path)}
|
|
79
|
+
>
|
|
80
|
+
<span className='material-symbols-rounded'>close</span>
|
|
81
|
+
</button>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
)
|
|
85
|
+
})}
|
|
26
86
|
</div>
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
87
|
+
)}
|
|
88
|
+
{pendingImages.length > 0 && (
|
|
89
|
+
<div className='pending-attachments__images'>
|
|
90
|
+
{pendingImages.map((image) => {
|
|
91
|
+
const displayName = image.name ?? t('chat.attachments.pastedImage')
|
|
92
|
+
const sizeLabel = formatAttachmentSize(image.size)
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
<div key={image.id} className='pending-image'>
|
|
96
|
+
<img src={image.url} alt={image.name ?? ''} />
|
|
97
|
+
<div className='pending-image__overlay'>
|
|
98
|
+
<div className='pending-image__meta'>
|
|
99
|
+
<span className='pending-image__name'>{displayName}</span>
|
|
100
|
+
{sizeLabel != null && <span className='pending-image__size'>{sizeLabel}</span>}
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
<button
|
|
104
|
+
type='button'
|
|
105
|
+
className='pending-image-remove'
|
|
106
|
+
onClick={() => onRemovePendingImage(image.id)}
|
|
107
|
+
>
|
|
108
|
+
<span className='material-symbols-rounded'>close</span>
|
|
109
|
+
</button>
|
|
110
|
+
</div>
|
|
111
|
+
)
|
|
112
|
+
})}
|
|
41
113
|
</div>
|
|
42
|
-
)
|
|
114
|
+
)}
|
|
43
115
|
</div>
|
|
44
116
|
)}
|
|
45
117
|
</>
|
|
@@ -35,6 +35,8 @@ export function SenderBody({
|
|
|
35
35
|
onCursorChange,
|
|
36
36
|
onKeyDown,
|
|
37
37
|
onPaste,
|
|
38
|
+
secondarySendShortcut,
|
|
39
|
+
onSecondarySendShortcut,
|
|
38
40
|
resolveCompletionMatch,
|
|
39
41
|
resolveTokenDecorations,
|
|
40
42
|
toolbarState,
|
|
@@ -60,6 +62,8 @@ export function SenderBody({
|
|
|
60
62
|
onCursorChange: (cursorOffset: number | null) => void
|
|
61
63
|
onKeyDown: (event: KeyboardEvent) => void
|
|
62
64
|
onPaste: (event: ClipboardEvent) => void | Promise<void>
|
|
65
|
+
secondarySendShortcut?: string
|
|
66
|
+
onSecondarySendShortcut?: () => void
|
|
63
67
|
resolveCompletionMatch: (
|
|
64
68
|
value: string,
|
|
65
69
|
cursorOffset: number | null,
|
|
@@ -91,7 +95,10 @@ export function SenderBody({
|
|
|
91
95
|
placeholder={placeholder || t('chat.inputPlaceholder')}
|
|
92
96
|
disabled={(!isInlineEdit && modelUnavailable) || (isInlineEdit && isBusy)}
|
|
93
97
|
sendShortcut={toolbarState.resolvedSendShortcut}
|
|
98
|
+
sendShortcutDisabled={toolbarState.sendBlocked}
|
|
94
99
|
onSendShortcut={toolbarHandlers.onSend}
|
|
100
|
+
secondarySendShortcut={secondarySendShortcut}
|
|
101
|
+
onSecondarySendShortcut={onSecondarySendShortcut}
|
|
95
102
|
onInputChange={onInputChange}
|
|
96
103
|
onCursorChange={onCursorChange}
|
|
97
104
|
onKeyDown={onKeyDown}
|
package/src/components/chat/sender/@components/sender-interaction-panel/SenderInteractionPanel.scss
CHANGED
|
@@ -1,57 +1,123 @@
|
|
|
1
1
|
.chat-input-wrapper--permission {
|
|
2
2
|
.interaction-panel {
|
|
3
|
-
|
|
3
|
+
max-height: none;
|
|
4
|
+
overflow-y: visible;
|
|
4
5
|
}
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
.interaction-panel {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
border:
|
|
14
|
-
|
|
15
|
-
background-color: var(--input-bg, #f9fafb);
|
|
9
|
+
--interaction-muted: var(--sub-text-color, #6b7280);
|
|
10
|
+
--interaction-option-bg: var(--bg-color);
|
|
11
|
+
--interaction-option-border: var(--border-color);
|
|
12
|
+
--interaction-option-hover-border: rgba(59, 130, 246, .3);
|
|
13
|
+
--interaction-option-active-bg: rgba(59, 130, 246, .08);
|
|
14
|
+
--interaction-option-active-border: rgba(59, 130, 246, .42);
|
|
15
|
+
--interaction-info-bg: rgba(15, 23, 42, .06);
|
|
16
16
|
|
|
17
|
-
&
|
|
17
|
+
&__summary {
|
|
18
|
+
align-items: flex-start;
|
|
19
|
+
padding: 10px 12px 6px;
|
|
20
|
+
gap: 10px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&__body {
|
|
18
24
|
display: flex;
|
|
19
25
|
flex-direction: column;
|
|
26
|
+
gap: 6px;
|
|
27
|
+
padding: 0 8px 8px;
|
|
20
28
|
}
|
|
21
29
|
|
|
22
|
-
&
|
|
30
|
+
&__header {
|
|
31
|
+
width: 100%;
|
|
23
32
|
display: flex;
|
|
24
|
-
|
|
33
|
+
align-items: flex-start;
|
|
34
|
+
justify-content: space-between;
|
|
35
|
+
gap: 8px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&__title-wrap {
|
|
39
|
+
flex: 1;
|
|
40
|
+
min-width: 0;
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
25
43
|
gap: 6px;
|
|
26
44
|
}
|
|
27
45
|
|
|
28
|
-
&
|
|
46
|
+
&__title-icon {
|
|
47
|
+
flex: 0 0 auto;
|
|
48
|
+
font-size: 15px;
|
|
49
|
+
color: var(--primary-color, #2563eb);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&__options {
|
|
29
53
|
display: flex;
|
|
30
54
|
flex-direction: column;
|
|
31
55
|
gap: 6px;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
&__nav {
|
|
59
|
+
flex: 0 0 auto;
|
|
60
|
+
display: inline-flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
gap: 2px;
|
|
63
|
+
margin-top: -1px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&__nav-button {
|
|
67
|
+
width: 22px;
|
|
68
|
+
height: 22px;
|
|
69
|
+
padding: 0;
|
|
70
|
+
border: none;
|
|
71
|
+
border-radius: 6px;
|
|
72
|
+
background: transparent;
|
|
73
|
+
color: var(--interaction-muted);
|
|
74
|
+
display: inline-flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
justify-content: center;
|
|
77
|
+
cursor: pointer;
|
|
78
|
+
transition: background-color .18s ease, color .18s ease;
|
|
79
|
+
|
|
80
|
+
.material-symbols-rounded {
|
|
81
|
+
font-size: 17px;
|
|
82
|
+
line-height: 1;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&:hover,
|
|
86
|
+
&:focus-visible {
|
|
87
|
+
background: rgba(148, 163, 184, .14);
|
|
88
|
+
color: var(--text-color);
|
|
89
|
+
outline: none;
|
|
90
|
+
}
|
|
35
91
|
}
|
|
36
92
|
|
|
37
93
|
&__option.ant-btn {
|
|
38
94
|
height: auto;
|
|
39
95
|
display: flex;
|
|
40
|
-
align-items:
|
|
96
|
+
align-items: flex-start;
|
|
41
97
|
justify-content: flex-start;
|
|
42
98
|
gap: 8px;
|
|
43
99
|
padding: 8px 10px;
|
|
44
100
|
border-radius: 10px;
|
|
45
|
-
border-color: var(--border
|
|
46
|
-
background: var(--bg
|
|
101
|
+
border-color: var(--interaction-option-border);
|
|
102
|
+
background: var(--interaction-option-bg);
|
|
47
103
|
box-shadow: none;
|
|
48
104
|
text-align: left;
|
|
49
|
-
|
|
105
|
+
transition:
|
|
106
|
+
background-color .18s ease,
|
|
107
|
+
border-color .18s ease,
|
|
108
|
+
color .18s ease;
|
|
109
|
+
|
|
110
|
+
&.is-active {
|
|
111
|
+
background: var(--interaction-option-active-bg);
|
|
112
|
+
border-color: var(--interaction-option-active-border);
|
|
113
|
+
}
|
|
50
114
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
115
|
+
&:hover,
|
|
116
|
+
&:focus-visible {
|
|
117
|
+
border-color: var(--interaction-option-hover-border);
|
|
118
|
+
background: var(--interaction-option-bg);
|
|
119
|
+
outline: none;
|
|
120
|
+
}
|
|
55
121
|
}
|
|
56
122
|
|
|
57
123
|
&__option--allow.ant-btn {
|
|
@@ -75,6 +141,24 @@
|
|
|
75
141
|
}
|
|
76
142
|
}
|
|
77
143
|
|
|
144
|
+
&__option--question.ant-btn {
|
|
145
|
+
display: block;
|
|
146
|
+
padding: 6px 8px;
|
|
147
|
+
background: transparent;
|
|
148
|
+
border-color: rgba(148, 163, 184, .16);
|
|
149
|
+
|
|
150
|
+
&.is-active {
|
|
151
|
+
background: rgba(148, 163, 184, .16);
|
|
152
|
+
border-color: rgba(148, 163, 184, .38);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
&:hover,
|
|
156
|
+
&:focus-visible {
|
|
157
|
+
background: rgba(148, 163, 184, .14);
|
|
158
|
+
border-color: rgba(148, 163, 184, .3);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
78
162
|
&__option-icon {
|
|
79
163
|
display: inline-flex;
|
|
80
164
|
align-items: center;
|
|
@@ -85,6 +169,7 @@
|
|
|
85
169
|
flex: 0 0 auto;
|
|
86
170
|
align-self: center;
|
|
87
171
|
font-size: 13px;
|
|
172
|
+
margin-top: 1px;
|
|
88
173
|
}
|
|
89
174
|
|
|
90
175
|
&__option-copy {
|
|
@@ -101,7 +186,25 @@
|
|
|
101
186
|
min-width: 0;
|
|
102
187
|
}
|
|
103
188
|
|
|
189
|
+
&__option-main {
|
|
190
|
+
display: flex;
|
|
191
|
+
align-items: center;
|
|
192
|
+
gap: 8px;
|
|
193
|
+
width: 100%;
|
|
194
|
+
min-width: 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
&__option-index {
|
|
198
|
+
flex: 0 0 auto;
|
|
199
|
+
color: var(--interaction-muted);
|
|
200
|
+
font-size: 11px;
|
|
201
|
+
font-weight: 600;
|
|
202
|
+
line-height: 1.25;
|
|
203
|
+
user-select: none;
|
|
204
|
+
}
|
|
205
|
+
|
|
104
206
|
&__option-label {
|
|
207
|
+
min-width: 0;
|
|
105
208
|
font-size: 11px;
|
|
106
209
|
font-weight: 500;
|
|
107
210
|
line-height: 1.35;
|
|
@@ -116,6 +219,26 @@
|
|
|
116
219
|
word-break: break-word;
|
|
117
220
|
}
|
|
118
221
|
|
|
222
|
+
&__option-side {
|
|
223
|
+
display: inline-flex;
|
|
224
|
+
align-items: center;
|
|
225
|
+
flex: 0 0 auto;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
&__info-trigger {
|
|
229
|
+
width: 16px;
|
|
230
|
+
height: 16px;
|
|
231
|
+
border-radius: 999px;
|
|
232
|
+
display: inline-flex;
|
|
233
|
+
align-items: center;
|
|
234
|
+
justify-content: center;
|
|
235
|
+
background: var(--interaction-info-bg);
|
|
236
|
+
color: var(--interaction-muted);
|
|
237
|
+
font-size: 12px;
|
|
238
|
+
line-height: 1;
|
|
239
|
+
cursor: help;
|
|
240
|
+
}
|
|
241
|
+
|
|
119
242
|
&__toggle.ant-btn {
|
|
120
243
|
height: auto;
|
|
121
244
|
display: inline-flex;
|
|
@@ -144,35 +267,28 @@
|
|
|
144
267
|
}
|
|
145
268
|
}
|
|
146
269
|
|
|
147
|
-
@keyframes interaction-panel-secondary-enter {
|
|
148
|
-
from {
|
|
149
|
-
max-height: 0;
|
|
150
|
-
opacity: 0;
|
|
151
|
-
transform: translateY(-4px);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
to {
|
|
155
|
-
max-height: 240px;
|
|
156
|
-
opacity: 1;
|
|
157
|
-
transform: translateY(0);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
270
|
.interaction-question {
|
|
271
|
+
min-width: 0;
|
|
162
272
|
font-size: 12px;
|
|
163
273
|
font-weight: 600;
|
|
164
274
|
line-height: 1.4;
|
|
165
275
|
color: var(--text-color);
|
|
166
276
|
}
|
|
167
277
|
|
|
168
|
-
@media (prefers-reduced-motion: reduce) {
|
|
169
|
-
.interaction-panel__secondary {
|
|
170
|
-
animation: none;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
278
|
html.dark {
|
|
175
279
|
.interaction-panel {
|
|
176
|
-
--
|
|
280
|
+
--interaction-option-bg: rgba(15, 23, 42, .52);
|
|
281
|
+
--interaction-option-border: rgba(71, 85, 105, .36);
|
|
282
|
+
--interaction-option-hover-border: rgba(148, 163, 184, .5);
|
|
283
|
+
--interaction-option-active-bg: rgba(51, 65, 85, .44);
|
|
284
|
+
--interaction-option-active-border: rgba(148, 163, 184, .52);
|
|
285
|
+
--interaction-info-bg: rgba(148, 163, 184, .14);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.interaction-panel__option.ant-btn {
|
|
289
|
+
&:hover,
|
|
290
|
+
&:focus-visible {
|
|
291
|
+
background: var(--interaction-option-bg);
|
|
292
|
+
}
|
|
177
293
|
}
|
|
178
294
|
}
|