Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,13 @@ Full UI package. Key architectural points:
**Key UI components:**
- `StreamChannelListView` + `StreamChannelListTile` — channel list using `StreamChannelListController`
- `StreamMessageListView` — message list with floating date dividers, unread indicators, thread separators
- `StreamMessageInput` (legacy) / `StreamChatMessageComposer` (new design system) — message composition
- `StreamMessageComposer` (full-featured) / `StreamChatMessageInput` (new design system, UI-only) — message composition
- `StreamMessageWidget` — renders individual messages with attachments, reactions, threads
- Scroll views in `lib/src/scroll_view/` — generic paged scroll views for channels, threads, members, users, drafts, polls

**New design system components** (`lib/src/components/`):
- `StreamUserAvatar`, `StreamChannelAvatar`, `StreamUserAvatarGroup` — avatar components; these are chat-domain wrappers around the base components in `stream_core_flutter`
- `StreamChatMessageComposer` — new composer using `MessageComposerFactory` for custom layouts
- `StreamChatMessageInput` — new composer using `MessageComposerFactory` for custom layouts

**Golden tests:** Use `alchemist` package. Platform goldens used locally, CI goldens used in CI (detected via `CI`/`GITHUB_ACTIONS` env vars). Goldens stored alongside tests in `goldens/` subdirectories.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import '../src/mocks.dart';
Widget _buildMessageInputScaffold({
required MockClient client,
required MockChannel channel,
StreamMessageInput? messageInput,
StreamMessageComposer? messageInput,
}) {
return MaterialApp(
theme: docsScreenshotsTheme(),
Expand All @@ -28,7 +28,7 @@ Widget _buildMessageInputScaffold({
body: Column(
children: [
Expanded(child: Container()),
messageInput ?? const StreamMessageInput(),
messageInput ?? StreamMessageComposer(),
],
),
),
Expand All @@ -46,7 +46,7 @@ void main() {

goldenTest(
'default state',
fileName: 'stream_message_input_default',
fileName: 'stream_message_composer_default',
constraints: const BoxConstraints.tightFor(width: 375, height: 100),
builder: () {
final client = MockClient();
Expand Down Expand Up @@ -125,7 +125,7 @@ void main() {
body: Column(
children: [
const Expanded(child: SizedBox()),
StreamMessageInput(messageInputController: controller),
StreamMessageComposer(messageInputController: controller),
],
),
),
Expand Down Expand Up @@ -181,7 +181,7 @@ void main() {
body: Column(
children: [
Expanded(child: Container()),
const StreamMessageInput(),
StreamMessageComposer(),
],
),
),
Expand Down Expand Up @@ -218,7 +218,7 @@ void main() {
return _buildMessageInputScaffold(
client: client,
channel: channel,
messageInput: StreamMessageInput(messageInputController: controller),
messageInput: StreamMessageComposer(messageInputController: controller),
);
},
);
Expand Down
2 changes: 1 addition & 1 deletion docs/docs_screenshots/test/src/mocks.dart
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class MockChannelState extends Mock implements ChannelClientState {
}
}

/// Sets up a [MockChannel] with all stubs required by [StreamMessageInput].
/// Sets up a [MockChannel] with all stubs required by [StreamMessageComposer].
void setupMockChannel({
required MockClient client,
required MockClientState clientState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Widget _buildVoiceRecordingMessageInputScaffold({
body: Column(
children: [
Expanded(child: Container()),
StreamMessageInput(
StreamMessageComposer(
enableVoiceRecording: true,
messageInputController: messageInputController,
),
Expand Down Expand Up @@ -93,7 +93,7 @@ Widget _buildVoiceRecordingContextScaffold({
],
),
),
const StreamMessageInput(enableVoiceRecording: true),
StreamMessageComposer(enableVoiceRecording: true),
],
),
),
Expand All @@ -103,11 +103,11 @@ Widget _buildVoiceRecordingContextScaffold({
}

/// Scaffold that shows a full message input bar (with attachment button and
/// placeholder) using [StreamChatMessageComposer] so we can inject a custom
/// placeholder) using [StreamChatMessageInput] so we can inject a custom
/// [audioRecorderController] to control the recording state.
///
/// The outer [Material] + bottom padding mirrors what [StreamMessageInput]
/// wraps around [StreamChatMessageComposer] internally.
/// The outer [Material] + bottom padding mirrors what [StreamMessageComposer]
/// wraps around [StreamChatMessageInput] internally.
Widget _buildVoiceRecordingComposerScaffold({
required MockClient client,
required MockChannel channel,
Expand Down Expand Up @@ -136,7 +136,7 @@ Widget _buildVoiceRecordingComposerScaffold({
),
child: Padding(
padding: EdgeInsets.only(bottom: context.streamSpacing.md),
child: StreamChatMessageComposer(
child: StreamChatMessageInput(
onSendPressed: () {},
onAttachmentButtonPressed: () {},
placeholder: 'Send a message',
Expand Down
Loading
Loading