import { getCollectionTitle } from "@/entrypoints/sidepanel/utils/getCollectionTitle"; import getSelectedTabs from "@/entrypoints/sidepanel/utils/getSelectedTabs"; import useSettings from "@/hooks/useSettings"; import { GroupItem, TabItem } from "@/models/CollectionModels"; import { Button, Caption1, makeStyles, mergeClasses, Subtitle2, tokens, Tooltip } from "@fluentui/react-components"; import { Add20Filled, Add20Regular, bundleIcon } from "@fluentui/react-icons"; import CollectionContext, { CollectionContextType } from "../../contexts/CollectionContext"; import { useCollections } from "../../contexts/CollectionsProvider"; import CollectionMoreButton from "./CollectionMoreButton"; import OpenCollectionButton from "./OpenCollectionButton"; import saveTabsToCollection from "@/utils/saveTabsToCollection"; export default function CollectionHeader({ dragHandleRef, dragHandleProps }: CollectionHeaderProps): React.ReactElement { const [listLocation] = useSettings("listLocation"); const isTab: boolean = listLocation === "tab" || listLocation === "pinned"; const { updateCollection } = useCollections(); const { tabCount, collection } = useContext(CollectionContext); const [alwaysShowToolbars] = useSettings("alwaysShowToolbars"); const AddIcon = bundleIcon(Add20Filled, Add20Regular); const handleAddSelected = async () => { const newTabs: (TabItem | GroupItem)[] = isTab ? (await saveTabsToCollection(false)).items : await getSelectedTabs(); updateCollection({ ...collection, items: [...collection.items, ...newTabs] }, collection.timestamp); }; const cls = useStyles(); return (
{ getCollectionTitle(collection) } { i18n.t("collections.tabs_count", [tabCount]) }
{ tabCount < 1 ? : }
); } export type CollectionHeaderProps = { dragHandleRef?: React.LegacyRef; dragHandleProps?: React.HTMLAttributes; }; const useStyles = makeStyles({ header: { color: "var(--border)", display: "grid", gridTemplateColumns: "1fr auto", padding: `${tokens.spacingVerticalS} ${tokens.spacingHorizontalS}`, paddingBottom: tokens.spacingVerticalS }, title: { display: "flex", flexFlow: "column", alignItems: "flex-start", overflow: "hidden" }, titleText: { maxWidth: "100%" }, toolbar: { display: "none", gap: tokens.spacingHorizontalS, alignItems: "flex-start" }, showToolbar: { display: "flex" } });