import React from "react"; import { Flex, Box, Text, IconButton, Close, Label } from "theme-ui"; import SimpleBar from "simplebar-react"; import Case from "case"; import RemoveTokenIcon from "../../icons/RemoveTokenIcon"; import GroupIcon from "../../icons/GroupIcon"; import TokenHideIcon from "../../icons/TokenHideIcon"; import TokenShowIcon from "../../icons/TokenShowIcon"; import TokenTile from "./TokenTile"; import Link from "../Link"; import FilterBar from "../FilterBar"; import { useDatabase } from "../../contexts/DatabaseContext"; import useResponsiveLayout from "../../hooks/useResponsiveLayout"; function TokenTiles({ tokens, groups, onTokenAdd, onTokenEdit, onTokenSelect, selectedTokens, onTokensRemove, selectMode, onSelectModeChange, search, onSearchChange, onTokensGroup, onTokensHide, }) { const { databaseStatus } = useDatabase(); const layout = useResponsiveLayout(); let hasSelectedDefaultToken = selectedTokens.some( (token) => token.type === "default" ); let allTokensVisible = selectedTokens.every((token) => !token.hideInSidebar); function tokenToTile(token) { const isSelected = selectedTokens.includes(token); return ( ); } const multipleSelected = selectedTokens.length > 1; let hideTitle = ""; if (multipleSelected) { if (allTokensVisible) { hideTitle = "Hide Tokens in Sidebar"; } else { hideTitle = "Show Tokens in Sidebar"; } } else { if (allTokensVisible) { hideTitle = "Hide Token in Sidebar"; } else { hideTitle = "Show Token in Sidebar"; } } return ( onTokenSelect()} search={search} onSearchChange={onSearchChange} selectMode={selectMode} onSelectModeChange={onSelectModeChange} onAdd={onTokenAdd} addTitle="Add Token" /> onTokenSelect()} > {groups.map((group) => ( {tokens[group].map(tokenToTile)} ))} {databaseStatus === "disabled" && ( Token saving is unavailable. See FAQ{" "} for more information. )} {selectedTokens.length > 0 && ( onTokenSelect()} /> onTokensHide(allTokensVisible)} > {allTokensVisible ? : } onTokensGroup()} disabled={hasSelectedDefaultToken} > onTokensRemove()} disabled={hasSelectedDefaultToken} > )} ); } export default TokenTiles;