diff --git a/apps/mobile/assets/icons/compose.xml b/apps/mobile/assets/icons/compose.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a958a9abc60abba8603ee7f41da7f5ba47f0d1d
--- /dev/null
+++ b/apps/mobile/assets/icons/compose.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/apps/mobile/src/components/MaterialNewThreadButton.android.tsx b/apps/mobile/src/components/MaterialNewThreadButton.android.tsx
index 8d2caf704f42681a70757fb82a033a7e954def40..cd76633d893570f5a13bc9ad0d02b92110d52bce 100644
--- a/apps/mobile/src/components/MaterialNewThreadButton.android.tsx
+++ b/apps/mobile/src/components/MaterialNewThreadButton.android.tsx
@@ -1,10 +1,14 @@
import type { ComponentProps } from "react";
import { MaterialFloatingActionButton } from "./MaterialFloatingActionButton.android";
+import { MaterialScrollComposeButton } from "./MaterialScrollComposeButton.android";
import type { MaterialNewThreadButton as SharedMaterialNewThreadButton } from "./MaterialNewThreadButton.shared";
export function MaterialNewThreadButton(
props: ComponentProps,
) {
+ if (props.extended && props.expanded !== undefined) {
+ return ;
+ }
return (
void;
+ readonly className?: string;
+ readonly style?: StyleProp;
+}) {
+ const { themeAppearance, themeVariables: colors } = useAppearancePreferences();
+ const typography = useScaledTextRole("footnote");
+ const [expandedWidth, setExpandedWidth] = useState(56);
+ const rememberWidth = useCallback(({ width }: { width: number }) => {
+ setExpandedWidth((previous) => Math.max(previous, width));
+ }, []);
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ New thread
+
+
+
+
+
+
+ {/* The visual host is wider than the button; only this target intercepts list touches. */}
+
+
+ );
+}