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 */}
{/* 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 = (
)
// 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