Appearance & themes
Linkstacked separates content (links and copy) from appearance (theme, fonts, gradients, layout). The appearance surface is small but opinionated — a handful of fields drive every visual variant.
Read the current appearance
query Appearance {
me {
profile {
_id
appearance {
themeId
font
layout
accentColor
backgroundGradient
buttonStyle
}
}
}
}Update appearance
updateAppearance accepts a partial input — only fields you supply are
written, so you can change just the theme and leave fonts intact:
mutation UpdateAppearance($input: UpdateAppearanceInput!) {
updateAppearance(input: $input) {
profile { _id appearance { themeId } }
}
}{
"input": {
"themeId": "midnight",
"font": "Inter",
"buttonStyle": "rounded"
}
}Theme catalog
A profile can pick any system theme that's been approved for its
subscription tier. The list is exposed through systemThemes so your
integration shows the same set the dashboard does:
query SystemThemes {
systemThemes {
_id name previewImageUrl cssConfig
}
}Marketplace themes
Themes purchased from the marketplace are returned alongside system
themes from the same query — they carry an extra marketplaceListingId
field so you can link back to the listing.