content: import 'package:flutter/material.dart';
  
  import 'package:fluffychat/config/themes.dart';
  import 'package:fluffychat/l10n/l10n.dart';
  import 'package:fluffychat/pages/chat_search/chat_search_files_tab.dart';
  import 'package:fluffychat/pages/chat_search/chat_search_images_tab.dart';
  import 'package:fluffychat/pages/chat_search/chat_search_message_tab.dart';
  import 'package:fluffychat/pages/chat_search/chat_search_page.dart';
  import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart';
  import 'package:fluffychat/widgets/layouts/max_width_body.dart';
  
  class ChatSearchView extends StatelessWidget {
    final ChatSearchController controller;
  
    const ChatSearchView(this.controller, {super.key});
  
    @override
    Widget build(BuildContext context) {
      final room = controller.room;
      if (room == null) {
        return Scaffold(
          appBar: AppBar(title: Text(L10n.of(context).oopsSomethingWentWrong)),
          body: Center(
            child: Padding(
              padding: const EdgeInsets.all(16),
              child: Text(L10n.of(context).youAreNoLongerParticipatingInThisChat),
            ),
          ),
        );
      }
  
      final theme = Theme.of(context);
  
      return Scaffold(
        appBar: AppBar(
          leading: const Center(child: BackButton()),
          titleSpacing: 0,
          title: Text(
            L10n.of(context).searchIn(
              room.getLocalizedDisplayname(MatrixLocals(L10n.of(context))),
            ),
          ),
        ),
        body: MaxWidthBody(
          withScrolling: false,
          child: Column(
            children: [
              if (FluffyThemes.isThreeColumnMode(context))
                const SizedBox(height: 16),
              Padding(
                padding: const EdgeInsets.symmetric(
                  horizontal: 16,
                ),
                child: TextField(
                  controller: controller.searchController,
                  onSubmitted: (_) => controller.restartSearch(),
                  autofocus: true,
                  enabled: controller.tabController.index == 0,
                  decoration: InputDecoration(
                    hintText: L10n.of(context).search,
                    prefixIcon: const Icon(Icons.search_outlined),
                    filled: true,
                    fillColor: theme.colorScheme.secondaryContainer,
                    border: OutlineInputBorder(
                      borderSide: BorderSide.none,
                      borderRadius: BorderRadius.circular(99),
                    ),
                    hintStyle: TextStyle(
                      color: theme.colorScheme.onPrimaryContainer,
                      fontWeight: FontWeight.normal,
                    ),
                  ),
                ),
              ),
              TabBar(
                controller: controller.tabController,
                tabs: [
                  Tab(child: Text(L10n.of(context).messages)),
                  Tab(child: Text(L10n.of(context).gallery)),
                  Tab(child: Text(L10n.of(context).files)),
                ],
              ),
              Expanded(
                child: TabBarView(
                  controller: controller.tabController,
                  children: [
                    ChatSearchMessageTab(
                      searchQuery: controller.searchController.text,
                      room: room,
                      startSearch: controller.startMessageSearch,
                      searchStream: controller.searchStream,
                    ),
                    ChatSearchImagesTab(
                      room: room,
                      startSearch: controller.startGallerySearch,
                      searchStream: controller.galleryStream,
                    ),
                    ChatSearchFilesTab(
                      room: room,
                      startSearch: controller.startFileSearch,
                      searchStream: controller.fileStream,
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      );
    }
  }
  