diff --git a/apps/sim/app/(interfaces)/chat/components/input/input.tsx b/apps/sim/app/(interfaces)/chat/components/input/input.tsx
index 0698fbfda16..b2c6c8b48f1 100644
--- a/apps/sim/app/(interfaces)/chat/components/input/input.tsx
+++ b/apps/sim/app/(interfaces)/chat/components/input/input.tsx
@@ -7,6 +7,7 @@ import { ArrowUp, Paperclip, StopFilled, X } from '@sim/emcn/icons'
import { createLogger } from '@sim/logger'
import { generateId } from '@sim/utils/id'
import { CHAT_ACCEPT_ATTRIBUTE } from '@/lib/uploads/utils/validation'
+import { PublicChatActionButton } from '@/app/(interfaces)/chat/components/input/public-chat-action-button'
const logger = createLogger('ChatInput')
@@ -221,15 +222,14 @@ export const ChatInput: React.FC<{
-
+
Attach files
@@ -252,24 +252,22 @@ export const ChatInput: React.FC<{
{isStreaming ? (
-
+
) : (
-
+
)}
diff --git a/apps/sim/app/(interfaces)/chat/components/input/public-chat-action-button.tsx b/apps/sim/app/(interfaces)/chat/components/input/public-chat-action-button.tsx
new file mode 100644
index 00000000000..838051a1817
--- /dev/null
+++ b/apps/sim/app/(interfaces)/chat/components/input/public-chat-action-button.tsx
@@ -0,0 +1,17 @@
+import { type ComponentProps, forwardRef } from 'react'
+import { Button } from '@sim/emcn'
+
+interface PublicChatActionButtonProps
+ extends Omit<
+ ComponentProps,
+ 'variant' | 'size' | 'iconSize' | 'iconPadding' | 'className'
+ > {
+ variant: 'primary' | 'quiet'
+ 'aria-label': string
+}
+
+/** Public chat's circular composer action, retaining its primary and quiet palettes. */
+export const PublicChatActionButton = forwardRef(
+ (props, ref) =>
+)
+PublicChatActionButton.displayName = 'PublicChatActionButton'