import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" // Import the JSON data import buttonsData from "./buttons.json" export default (() => { // Define the component const Btn8831: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => { // Group buttons by type const groupedButtons = groupButtonsByType(buttonsData) // Define the order of types const typeOrder = ["friend", "standard", "misc"] return (
{typeOrder.map((type, index) => { const buttons = groupedButtons[type] if (buttons && buttons.length > 0) { return (
{/* Render buttons of the current type */}
{buttons.map((button, idx) => (
{renderButtonContent(button)}
))}
{/* Add a horizontal line after the group except for the last one */} {index < typeOrder.length - 1 &&
}
) } return null })}
) } // Function to group buttons by type function groupButtonsByType(buttons: any[]) { const groups: { [key: string]: any[] } = { misc: [], friend: [], standard: [], } buttons.forEach((button: any) => { let type = button.type?.toLowerCase() || "standard" if (type === "fren") type = "friend" if (!groups[type]) type = "standard" // Default to 'standard' if type is unrecognized groups[type].push(button) }) return groups } // Updated renderButtonContent function function renderButtonContent(button: any): preact.VNode | null { const contentType = button.contentType || "image" // Default to 'image' if (contentType === "image") { // Create the element const imgElement = ( {button.alt} ) // If `button.url` is present, wrap the image in an `` tag if (button.url) { return {imgElement} } else { // If no `url`, return the image element without wrapping return imgElement } } else if (contentType === "iframe") { const iframeAttrs = button.iframeAttributes || {} return } else { // Handle other content types if necessary return null } } return Btn8831 }) satisfies QuartzComponentConstructor