/* * Vencord, a modification for Discord's desktop app * Copyright (c) 2023 Vendicated and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import { classNameFactory } from "@api/Styles"; import { Text, Tooltip, useState } from "@webpack/common"; export const cl = classNameFactory("vc-expandableheader-"); import "./ExpandableHeader.css"; export interface ExpandableHeaderProps { onMoreClick?: () => void; moreTooltipText?: string; onDropDownClick?: (state: boolean) => void; defaultState?: boolean; headerText: string; children: React.ReactNode; buttons?: React.ReactNode[]; } export default function ExpandableHeader({ children, onMoreClick, buttons, moreTooltipText, defaultState = false, onDropDownClick, headerText }: ExpandableHeaderProps) { const [showContent, setShowContent] = useState(defaultState); return ( <>
{headerText}
{ buttons ?? null } { onMoreClick && // only show more button if callback is provided {tooltipProps => ( )} } {tooltipProps => ( )}
{showContent && children} ); }