İçeriğe geç
Dokümanlar

Tema yazmak

my-theme/
  theme.json           token'lar, modlar, ayarlar, override'lar
  components/          bu temanın değiştirdiği bileşenler

schemaVersion: 2 zorunludur. Sürüm 1 manifestleri yarım desteklenmek yerine yüklemede reddedilir.

En küçük tema

{
  "schemaVersion": 2,
  "id": "my-theme",
  "name": "My Theme",
  "modes": {
    "default": "light",
    "light": { "tokens": { "colors": { "background": "#ffffff", "foreground": "#16161a" } } },
    "dark":  { "tokens": { "colors": { "background": "#0e0e11", "foreground": "#f2f2f5" } } }
  }
}

Bu, çalışan bir temadır. Bildirmediği her şey platformun kendi değerinde kalır; yani bir tema, tam bir stylesheet değil, farklı vermek istediğin kararların listesidir.

Operatörün değiştirebilmesi

Token'ı bir alan olarak bildir, özelleştirici onu çizsin:

{
  "tokens": {
    "colors": {
      "accent": { "label": "Vurgu", "default": "#1b34f5" }
    },
    "fonts": {
      "display": { "label": "Başlıklar", "default": "Archivo" }
    }
  }
}

Ayarlar

Ayarlar renk değil içeriktir: bir slogan, bir kapak, bir davet bağlantısı. Çekirdek grubu /admin/theme/<group> altında etiketler, girdiler, kaydet ve sıfırla ile birlikte çizer.

{
  "settings": {
    "hero": {
      "label": "Hero",
      "fields": {
        "tagline": { "type": "text", "label": "Slogan" },
        "cover": { "type": "image", "label": "Kapak görseli" },
        "discord": { "type": "url", "label": "Discord daveti" }
      }
    }
  }
}

Bir bileşeni değiştirmek

{
  "components": {
    "Footer": "components/Footer.tsx",
    "Hero": "components/Hero.tsx"
  }
}

Bileşen, platformun kendi sürümünün aldığı prop'ların aynısını alır. Temanın ayarlarını veritabanına uzanarak değil SDK üzerinden oku: bir tema, ziyaretçinin indirdiği bundle'ın içinde çalışır.

Bir slot açmak

{
  "slots": [{ "name": "hero.liveStats" }],
  "slotContents": [{ "slot": "footer.top", "component": "components/Ribbon.tsx" }]
}

slots, modüller için açtığın yerlerdir. slotContents ise çekirdeğin ya da bir modülün açtığı slot'lara koyduğun şeylerdir.

Modül önermek

{
  "suggestedModules": ["store", "servers"]
}

Operatörün kapatabileceği bir şerit. Hiçbir şey kurulmaz, hiçbir şey etkinleştirilmez.

Kendi metinleri

{
  "translations": {
    "en": { "myTheme": { "joinUs": "Join us" } },
    "tr": { "myTheme": { "joinUs": "Bize katıl" } }
  }
}

Tema etkinleştirildiğinde, platformun getirdiği her dilde senkronlanır.