diff --git a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-panel-input.ts b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-panel-input.ts
index 640426eddf..abdbb748f8 100644
--- a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-panel-input.ts
+++ b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-panel-input.ts
@@ -168,6 +168,16 @@ export class ChatPanelInput extends WithDisposable(LitElement) {
}
}
+ .chat-panel-send svg rect {
+ fill: var(--affine-primary-color);
+ }
+ .chat-panel-send[aria-disabled='true'] {
+ cursor: not-allowed;
+ }
+ .chat-panel-send[aria-disabled='true'] svg rect {
+ fill: var(--affine-text-disable-color);
+ }
+
.close-wrapper {
width: 16px;
height: 16px;
@@ -286,18 +296,13 @@ export class ChatPanelInput extends WithDisposable(LitElement) {
const maxHeight = hasImages ? 272 + 2 : 200 + 2;
return html`
@@ -395,7 +400,11 @@ export class ChatPanelInput extends WithDisposable(LitElement) {
>
${ChatAbortIcon}
`
- : html`
+ : html`
${ChatSendIcon}
`}
diff --git a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/index.ts b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/index.ts
index b18bf39325..25e6caa9d3 100644
--- a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/index.ts
+++ b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/index.ts
@@ -91,6 +91,7 @@ export class ChatPanel extends WithDisposable(ShadowlessElement) {
align-items: center;
color: var(--affine-text-secondary-color);
font-size: 12px;
+ user-select: none;
}
`;
diff --git a/packages/frontend/core/src/blocksuite/presets/ai/peek-view/chat-block-input.ts b/packages/frontend/core/src/blocksuite/presets/ai/peek-view/chat-block-input.ts
index f77efc9069..d7c9d58069 100644
--- a/packages/frontend/core/src/blocksuite/presets/ai/peek-view/chat-block-input.ts
+++ b/packages/frontend/core/src/blocksuite/presets/ai/peek-view/chat-block-input.ts
@@ -56,6 +56,7 @@ export class ChatBlockInput extends LitElement {
resize: none;
overflow-y: hidden;
background-color: transparent;
+ user-select: none;
}
textarea::placeholder {
font-size: 14px;
@@ -91,6 +92,17 @@ export class ChatBlockInput extends LitElement {
}
}
}
+
+ .chat-panel-send svg rect {
+ fill: var(--affine-primary-color);
+ }
+ .chat-panel-send[aria-disabled='true'] {
+ cursor: not-allowed;
+ }
+ .chat-panel-send[aria-disabled='true'] svg rect {
+ fill: var(--affine-text-disable-color);
+ }
+
.close-wrapper {
width: 16px;
height: 16px;
@@ -143,17 +155,13 @@ export class ChatBlockInput extends LitElement {
});
return html`
@@ -233,7 +241,11 @@ export class ChatBlockInput extends LitElement {
>
${ChatAbortIcon}
`
- : html`
+ : html`
${ChatSendIcon}
`}
diff --git a/packages/frontend/core/src/blocksuite/presets/ai/peek-view/styles.ts b/packages/frontend/core/src/blocksuite/presets/ai/peek-view/styles.ts
index 7de306f0bd..b47e51e0bb 100644
--- a/packages/frontend/core/src/blocksuite/presets/ai/peek-view/styles.ts
+++ b/packages/frontend/core/src/blocksuite/presets/ai/peek-view/styles.ts
@@ -69,5 +69,6 @@ export const PeekViewStyles = css`
align-items: center;
color: var(--affine-text-secondary-color);
font-size: var(--affine-font-xs);
+ user-select: none;
}
`;
diff --git a/packages/frontend/core/src/components/pure/ai-island/index.tsx b/packages/frontend/core/src/components/pure/ai-island/index.tsx
index bd5092e859..f4859c6347 100644
--- a/packages/frontend/core/src/components/pure/ai-island/index.tsx
+++ b/packages/frontend/core/src/components/pure/ai-island/index.tsx
@@ -5,6 +5,7 @@ import {
useLiveData,
useService,
} from '@toeverything/infra';
+import clsx from 'clsx';
import { useEffect, useState } from 'react';
import { ToolContainer } from '../../workspace';
@@ -14,6 +15,7 @@ import {
aiIslandBtn,
aiIslandWrapper,
gradient,
+ toolStyle,
} from './styles.css';
const RIGHT_SIDEBAR_AI_HAS_EVER_OPENED_KEY =
@@ -49,7 +51,7 @@ export const AIIsland = () => {
}, [activeTab, haveChatTab, sidebarOpen]);
return (
-
+
{
+export const ToolContainer = (
+ props: PropsWithChildren<{ className?: string }>
+): ReactElement => {
const docId = useLiveData(
useService(GlobalContextService).globalContext.docId.$
);
@@ -79,11 +81,7 @@ export const ToolContainer = (props: PropsWithChildren): ReactElement => {
const doc = useLiveData(docId ? docRecordList.doc$(docId) : undefined);
const inTrash = useLiveData(doc?.meta$)?.trash;
return (
-