function SearchContainer()

in src/components/Search/SearchContainer.tsx [17:75]


function SearchContainer(props: SearchViewProps) {
  const themeMode = useAppSelector((state) => state.theme.mode);
  const styles = SearchContainerStyles(themeMode, /* isHome */ true);
  const [isBaseSearchExpanded, setIsBaseSearchExpanded] = useState(true);
  const { newRevInfo, newRepo, frameworkId } =
    useLoaderData() as LoaderReturnValue;

  return (
    <section
      data-testid='search-section'
      ref={props.containerRef}
      className={styles.container}
    >
      <Typography className='search-default-title'>{strings.title}</Typography>

      <div>
        <SearchFormHeader
          compareType={'base'}
          isExpanded={isBaseSearchExpanded}
          title={strings.base.title}
          subtitle={strings.base.tagline}
          onClick={() => setIsBaseSearchExpanded(true)}
        />
        {/* hard code the frameworkIdVal  because talos is the
       default framework; refer to frameworkMap in constants.ts */}
        <CompareWithBase
          frameworkIdVal={frameworkId}
          hasEditButton={false}
          baseRev={null}
          newRevs={newRevInfo ? [newRevInfo] : []}
          isExpanded={isBaseSearchExpanded}
          setIsExpanded={() => setIsBaseSearchExpanded(true)}
          baseRepo={newRepo}
          newRepo={newRepo}
        />
      </div>
      <div>
        <SearchFormHeader
          compareType={'time'}
          isExpanded={!isBaseSearchExpanded}
          title={strings.overTime.title}
          subtitle={strings.overTime.tagline}
          onClick={() => setIsBaseSearchExpanded(false)}
        />

        <CompareOverTime
          hasEditButton={false}
          newRevs={newRevInfo ? [newRevInfo] : []}
          isExpanded={!isBaseSearchExpanded}
          setIsExpanded={() => setIsBaseSearchExpanded(false)}
          frameworkIdVal={frameworkId}
          intervalValue={86400 as TimeRange['value']}
          baseRepo={newRepo}
          newRepo={newRepo}
        />
      </div>
    </section>
  );
}