diff --git a/fluxer_app/src/features/channel/components/LexicalChannelTextareaContent.tsx b/fluxer_app/src/features/channel/components/LexicalChannelTextareaContent.tsx
index a7e165575..8ddf7ea2b 100644
--- a/fluxer_app/src/features/channel/components/LexicalChannelTextareaContent.tsx
+++ b/fluxer_app/src/features/channel/components/LexicalChannelTextareaContent.tsx
@@ -1375,7 +1375,10 @@ export const LexicalChannelTextareaContent = observer(
showStickersButton={showStickersButton}
showEmojiButton={showEmojiButton}
showMessageSendButton={showMessageSendButton}
- showVoiceMessageButton={false}
+ canRecordVoice={canAttachFilesInChannel(channel)}
+ isEditingMessage={isEditingMessageInComposer || editingMessageId != null}
+ hasPendingSticker={hasPendingSticker}
+ voiceTooltipAnchorRef={contentAreaRef}
expressionPickerOpen={expressionPickerOpen}
selectedTab={selectedTab}
isMobile={mobileLayout.enabled}
diff --git a/fluxer_app/src/features/channel/components/VoiceMessageRecorder.module.css b/fluxer_app/src/features/channel/components/VoiceMessageRecorder.module.css
index f2b610dcf..cec209143 100644
--- a/fluxer_app/src/features/channel/components/VoiceMessageRecorder.module.css
+++ b/fluxer_app/src/features/channel/components/VoiceMessageRecorder.module.css
@@ -7,6 +7,34 @@
justify-content: center;
}
+.voiceButton {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-width: var(--textarea-button-height);
+ height: var(--textarea-button-height);
+ padding: 0;
+ color: var(--text-primary-muted);
+ border-radius: var(--radius-md);
+ background: transparent;
+ border: none;
+ outline: none;
+ cursor: pointer;
+ flex-shrink: 0;
+ touch-action: none;
+}
+
+.voiceButton:disabled {
+ cursor: not-allowed;
+ opacity: 0.7;
+}
+
+.voiceButtonIcon {
+ width: var(--textarea-button-icon-size);
+ height: var(--textarea-button-icon-size);
+ flex-shrink: 0;
+}
+
.holdTooltip {
background-color: var(--brand-primary);
color: var(--text-on-brand-primary);
@@ -33,6 +61,10 @@
}
.overlayInner {
+ display: flex;
+ align-items: flex-end;
+ gap: 0.375rem;
+ padding: 0.5rem;
width: 100%;
min-width: 0;
box-sizing: border-box;
@@ -133,6 +165,7 @@
flex-shrink: 0;
display: flex;
align-items: center;
+ width: 2.25rem;
height: 2.25rem;
}
diff --git a/fluxer_app/src/features/channel/components/VoiceMessageRecorder.tsx b/fluxer_app/src/features/channel/components/VoiceMessageRecorder.tsx
index be3f606e0..c671b5e49 100644
--- a/fluxer_app/src/features/channel/components/VoiceMessageRecorder.tsx
+++ b/fluxer_app/src/features/channel/components/VoiceMessageRecorder.tsx
@@ -2,7 +2,6 @@
import Accessibility from '@app/features/accessibility/state/Accessibility';
import {LimitResolver} from '@app/features/app/utils/LimitResolverAdapter';
-import layoutStyles from '@app/features/channel/components/textarea/MobileTextareaLayout.module.css';
import styles from '@app/features/channel/components/VoiceMessageRecorder.module.css';
import {Logger} from '@app/features/platform/utils/AppLogger';
import {usePortalHost} from '@app/features/ui/overlay/PortalHostContext';
@@ -529,7 +528,7 @@ export default function VoiceMessageRecorder({channelId, disabled, tooltipAnchor
>
@@ -578,10 +577,7 @@ export default function VoiceMessageRecorder({channelId, disabled, tooltipAnchor
transition={resolvedOverlayMotion.transition}
data-flx="channel.voice-message-recorder.recording-overlay"
>
-
+