# DOM attribute'ları

> Sayproof bileşeninin kullandığı ve CSS kurallarınızın ya da script'lerinizin dayanabileceği tüm data-review-* attribute'ları.

Kaynak: /tr/reference/dom-attributes/

Bu attribute'lar bir sözleşmedir (sürüm 3): aynı sürüm içinde kaldırılmaz ve anlamları değişmez; yeni attribute'lar eklenebilir. CSS kurallarınızı ve script'lerinizi bu attribute'lara göre yazın. Kullanım örnekleri için: [Düzen ve CSS seçicileri](/tr/customize/css-hooks.md).

## Container yapılandırması

Bu attribute'lar container'a (`data-review-mount`) eklenir. Container'da bulunmayan bir değer için script etiketindeki değer kullanılır. Bu attribute'lardan biri değiştiğinde bileşen kendini yeniler.

| Attribute | Değer |
|---|---|
| `data-review-mount` | Öğenin bir yorum container'ı olduğunu belirtir. Bir sayfada birden fazla container bulunabilir. |
| `data-review-site-key` | Site anahtarı. Yalnızca script etiketinden ya da `Sayproof.mount()` seçeneklerinden okunur; container'daki değer yok sayılır. Böylece sayfaya sonradan eklenen bir içerik yorumları başka bir kanala yönlendiremez. |
| `data-review-base` | Sayproof API adresi. Yalnızca script etiketinden ya da `Sayproof.mount()` seçeneklerinden okunur; container'daki değer yok sayılır. Böylece sayfaya sonradan eklenen bir içerik müşterinin formda yazdıklarını başka bir sunucuya gönderemez. |
| `data-review-product` | Ürün kodu: varyant ya da grup kodu |
| `data-review-scope` | `variant` (varsayılan) ya da `group` |
| `data-review-product-name` | Ürün adı. Okunur ancak şu anda gösterimde kullanılmaz; ileride kullanılmak üzere ayrılmıştır. |
| `data-review-locale` | `tr` ya da `en`. Container'da ve script etiketinde belirtilmezse `<html lang>` değeri, o da yoksa kanalın dili kullanılır. |
| `data-review-layout` | `list` (varsayılan) ya da `grid` |
| `data-review-style` | `cards` ya da `sidebar`: düzen. Belirtilmezse kanalın panelde seçilen düzeni kullanılır. |
| `data-review-theme` | `warm`, `trust`, `editorial`, `minimal`, `soft`, `bold`, `natural` ya da `night`: hazır tasarım. Belirtilmezse ya da tanınmayan bir değer verilirse kanalın panelde seçilen tasarımı kullanılır. |
| `data-review-mode` | `headless`: script özet, liste ve sıralama oluşturmaz; yalnızca yorum yazma akışını yürütür |
| `data-review-gate` | Yorum yazma alanının gösterileceği öğenin CSS seçicisi. Eşleşen öğe yoksa alan container'ın içinde gösterilir. |
| `data-review-viewer` | `pending`: oturum açmış müşterinin durumu bekleniyor; yanıt gelene kadar yorum yazma alanı gösterilmez |

## Container durumu

| Attribute | Anlamı |
|---|---|
| `data-review-ready` | Bileşen hazır; `Sayproof.write(container)` artık akışı açabilir. Ürün değiştiğinde, yeni içerik hazır olana kadar kaldırılır. |
| `data-review-failed` | Yorumlar yüklenemedi; sayfanın geri kalanı etkilenmez |

## Kök öğe

| Attribute | Anlamı |
|---|---|
| `data-review-root` | Bileşenin kök öğesi; stil kapsamı bu öğeden başlar |
| `data-review-version` | Sözleşme sürümü (`3`) |
| `data-review-style` | Kullanılan düzen: `cards` ya da `sidebar` |
| `data-review-theme` | Kullanılan hazır tasarım: `warm`, `trust`, `editorial`, `minimal`, `soft`, `bold`, `natural` ya da `night`; tasarımın değişken değerleri bu attribute'a bağlıdır |
| `data-review-market` | Yorumların ait olduğu pazar |
| `data-review-product` | Yorumları gösterilen ürün kodu |
| `data-review-layout` | Kök öğeye de eklenir: `list` ya da `grid` |
| `data-review-busy` | Bir istek sürüyor |
| `data-review-ssr` | Sunucuda oluşturulmuş kök öğe; script bu öğeyi devralır |
| `data-review-stylesheet` | Sunucuda oluşturulan HTML'in başındaki `<link>`; bileşenin temel stillerini script'ten önce yükler |
| `data-review-state` | Sunucu yanıtını taşıyan `<script type="application/json">` etiketi; script ilk görüntülemeyi ağ isteği yapmadan bu veriden oluşturur |
| `data-review-frame` | Kök öğenin içindeki yerleşim çerçevesi; yan panelli düzende geniş alanda iki sütun |
| `data-review-aside` | Özet ve yorum yazma alanı; yan panelli düzende sol sütun |
| `data-review-main` | Yapay zekâ özeti (v2 ile gelecek; şu an çizilmez), fotoğraf şeridi, filtreler, araç çubuğu, sonuç satırı, liste ve "Daha fazla yorum" düğmesi |

## Özet

| Attribute | Anlamı |
|---|---|
| `data-review-summary` | Özet bölümü |
| `data-review-score`, `data-review-score-detail` | Ortalama puan bloğu ve içindeki yıldız, yorum sayısı ve doğrulanmış yorum sayısı grubu |
| `data-review-average` | Ortalama puan |
| `data-review-stars` | Her zaman beş yıldız karakteri (`★★★★★`). Dolu kısım `data-review-fill` değerine göre yıldız renginde, kalanı `--review-track` renginde gösterilir; özette ortalamaya göre dolar. Metin karşılığı `aria-label` içindedir. |
| `data-review-count` | Yorum sayısı |
| `data-review-verified-count` | Doğrulanmış yorum sayısı; değeri sayının kendisidir, yalnızca sıfırdan büyükse gösterilir |
| `data-review-shared-count` | Diğer pazarlardan gelip listede gösterilen yorum sayısı ("Diğer pazarlardan 3 yorum"); değeri sayının kendisidir. Yalnızca diğer pazarlardan yorum gösteriliyorsa eklenir; bu yorumlar ortalamaya katılmaz. **Gizlenemez.** |
| `data-review-imported-count` | Pazaryerinden aktarılan yorumların payı ("4 yorumun 3'ü Trendyol'dan"); değeri aktarılan yorum sayısıdır. Yalnızca aktarılmış yorum varsa eklenir; bu yorumlar ortalamaya katılır. **Gizlenemez.** |
| `data-review-distribution` | Puan dağılımı listesi (`<ol>`, 5 yıldızdan 1 yıldıza) |
| `data-review-star`, `data-review-star-count` | Dağılımdaki bir yıldız düzeyinin satırı ve o düzeydeki yorum sayısı |
| `data-review-star-filter` | Satırdaki düğme; değeri yıldız düzeyidir. Tıklandığında liste o puandaki yorumlarla sınırlanır, yeniden tıklandığında filtre kalkar. Seçiliyken `aria-pressed="true"`; o düzeyde yorum yoksa `disabled`. |
| `data-review-star-label`, `data-review-bar`, `data-review-star-total` | Düğmedeki yıldız etiketi (`5★`), çubuk ve sayı |
| `data-review-fill` | Yıldızların ve çubuğun doluluğu ya da ölçek işaretçisinin konumu: 0 ile 100 arasında, 5'in katları. Yıldızlarda puanın 5'e oranı, 5'in en yakın katına yuvarlanır (4,3 → 85). Yorumu olan bir yıldız düzeyinin çubuğu en az 5'tir. |
| `data-review-aspects-group`, `data-review-aspects` | Basamaklı ölçekli değerlendirme başlıklarının özeti (`role="group"` içinde `<dl>`); en az bir puan verilmiş başlık varsa gösterilir |
| `data-review-aspect` | Özetteki bir başlık: `<div data-review-aspect="<anahtar>"><dt>başlık</dt><dd>ölçek · uçların adları · en yakın basamak ve puan sayısı</dd></div>` |
| `data-review-scale`, `data-review-scale-marker` | Basamaklı ölçeğin çizgisi ve üzerindeki işaretçi; işaretçinin konumu `data-review-fill` değerindedir |
| `data-review-scale-ends` | Ölçeğin iki ucundaki basamakların adları |
| `data-review-aspect-value` | Başlığın metin değeri: özette en yakın basamak ve puan sayısı, yorumda seçilen basamak |
| `data-review-method-statement` | Yöntem beyanı bağlantısı. **Gizlenemez.** |

## Yapay zekâ özeti

Yorum özeti kartı (v2 ile gelecek; şu an çizilmez), marka yorum özetini açtığında ve ürünün en az 10 yorumu olduğunda `data-review-main`'in ilk öğesi olarak, fotoğraf şeridinden önce gösterilir. Filtrelerden etkilenmez. Sunucuda hazırlanan HTML ve script aynı yapıyı üretir:

```html
<section data-review-ai-summary>
  <h3 data-review-ai-summary-title>Müşteriler ne diyor</h3>
  <p data-review-ai-summary-text>Alıcıların çoğu kalıbın iyi oturduğunu söylüyor. 2 yorumda kargonun geç geldiği belirtiliyor.</p>
  <ul data-review-ai-topics aria-label="Öne çıkan konular">
    <li data-review-ai-topic="fit" data-review-ai-sentiment="positive">Kalıp · 7<span data-review-sr> · çoğunlukla olumlu</span></li>
    <li data-review-ai-topic="delivery" data-review-ai-sentiment="negative">Kargo ve teslimat · 2<span data-review-sr> · çoğunlukla olumsuz</span></li>
  </ul>
  <p data-review-ai-summary-note>Yapay zekâ ile 10 yorumdan özetlendi · 12 Ekim 2026 · <a data-review-ai-summary-link href="…" target="_blank" rel="noopener">Nasıl hazırlanıyor?</a></p>
</section>
```

| Attribute | Anlamı |
|---|---|
| `data-review-ai-summary` | Yapay zekâ ile hazırlanmış yorum özetinin kartı (`<section>`) (v2 ile gelecek; şu an çizilmez). **Gizlenemez.** |
| `data-review-ai-summary-title` | "Müşteriler ne diyor" başlığı |
| `data-review-ai-summary-text` | Özet metni |
| `data-review-ai-topics` | Öne çıkan konuların listesi; konusu belirlenmiş yorum yoksa eklenmez |
| `data-review-ai-topic`, `data-review-ai-sentiment` | Bir konu ve yorumların çoğunluğundaki duygu. Konu `fit` (Kalıp), `quality` (Kalite), `delivery` (Kargo ve teslimat) ya da `packaging` (Paketleme); duygu `positive`, `negative` ya da `neutral`. En çok geçen en fazla 4 konu gösterilir; metni konu adı ve konunun geçtiği yorum sayısıdır. Duygu ekran okuyucular için `data-review-sr` içinde yazılır: "çoğunlukla olumlu", "çoğunlukla olumsuz" ya da "görüşler karışık". |
| `data-review-ai-summary-note` | Alt satır: özetin kaç yorumdan ve hangi gün hazırlandığı |
| `data-review-ai-summary-link` | Yöntem beyanına giden "Nasıl hazırlanıyor?" bağlantısı; yeni sekmede açılır |

## Fotoğraf şeridi

| Attribute | Anlamı |
|---|---|
| `data-review-gallery` | Ürünün yorumlarındaki en yeni fotoğraf ve videoların şeridi (en fazla 12); en az bir dosya varsa gösterilir. Filtrelerden etkilenmez. |
| `data-review-gallery-title` | Şeridin başlığı ("Fotoğraf ve videolar") |
| `data-review-gallery-list` | Yatay kaydırılan liste |
| `data-review-gallery-item` | Bir dosyanın düğmesi; `data-review-media-kind` (`image` ya da `video`) ve `data-review-media-index` (şeritteki sırası, 0'dan başlar) taşır ve fotoğraf görüntüleyiciyi açar |

## Filtreler, arama ve sıralama

Filtreler birlikte uygulanır: biri değiştiğinde diğerleri korunur ve liste ilk sayfadan yeniden yüklenir; özet, fotoğraf şeridi ve filtre düğmeleri yerinde kalır. Filtre düğmeleri ve araç çubuğu yalnızca üründe en az bir yorum varsa gösterilir.

| Attribute | Anlamı |
|---|---|
| `data-review-filters` | Filtre düğmelerinin grubu (`role="group"`); gösterilecek filtre yoksa eklenmez |
| `data-review-filter` | Bir filtre düğmesi. `verified`: yalnızca doğrulanmış alıcıların yorumları; doğrulanmış yorum sayısı sıfırdan büyük ve toplamdan küçükse gösterilir. `media`: fotoğraflı ya da videolu yorumlar; böyle bir yorum varsa gösterilir. `topic`: sık geçen bir kelimeyi içeren yorumlar. Seçiliyken `aria-pressed="true"`; yeniden basıldığında filtre kalkar. |
| `data-review-topics`, `data-review-topics-label` | Konu düğmelerinin grubu ve "Sık geçenler" etiketi |
| `data-review-topic` | Konu düğmesinin kelimesi (`data-review-filter="topic"` öğesinde) |
| `data-review-toolbar` | Arama bölümünü ve sıralama menüsünü taşıyan çubuk |
| `data-review-search` | Arama bölümü (`role="search"`) |
| `data-review-search-input`, `data-review-search-submit` | Arama alanı (en fazla 100 karakter) ve "Ara" düğmesi. Arama Enter tuşuyla ya da düğmeyle yapılır; alan boşaltıldığında arama kalkar. |
| `data-review-sort` | Sıralama menüsü; pazar birden fazla sıralamaya izin veriyorsa gösterilir. **Gizlenemez.** |
| `data-review-sort-option` | İzin verilen bir sıralama seçeneği |
| `data-review-sort-default` | Pazarın varsayılan sıralaması |
| `data-review-results`, `data-review-results-text` | Sonuç satırı ve "n yorum bulundu" metni; yalnızca bir filtre ya da arama uygulandığında görünür, aksi hâlde `hidden` |
| `data-review-clear` | Tüm filtreleri ve aramayı kaldıran "Filtreleri temizle" düğmesi |
| `data-review-announce` | Filtre sonrasında sonuç sayısını ekran okuyuculara bildiren durum metni (`role="status"`) |

## Liste ve yorum

| Attribute | Anlamı |
|---|---|
| `data-review-body-slot` | Listenin ya da boş durum mesajının yeri |
| `data-review-list` | Yorum listesi |
| `data-review-item` | Tek bir yorum |
| `data-review-id` | Yorumun kimliği |
| `data-review-rating` | Puan |
| `data-review-head` | Yorumun üst satırı: baş harfler ve yazar bölümü |
| `data-review-avatar` | Yazarın gösterilen adının baş harfleri (en fazla iki harf) |
| `data-review-avatar-tone` | Baş harf dairesinin rengi: `0` ile `5` arasında, yazarın gösterilen adından belirlenir; aynı ad her zaman aynı rengi alır |
| `data-review-byline` | Yazar adı ve altındaki satır |
| `data-review-author` | Yazar adı |
| `data-review-meta` | Yazar adının altındaki ikinci satır: rozetler ve tarih |
| `data-review-badges` | Rozetlerin grubu (`data-review-meta` içinde); rozet yoksa eklenmez |
| `data-review-date` | Yayın tarihi (`<time datetime>`, `data-review-meta` içinde) |
| `data-review-verified` | Doğrulama rozeti. **Gizlenemez.** |
| `data-review-method` | Doğrulama yöntemi: `platform_api`, `tokenized_invite`, `in_store` ya da `manual` |
| `data-review-origin`, `data-review-origin-kind`, `data-review-origin-market` | Başka bir kaynaktan gelen yorumun etiketi; tür `syndicated` (markanın başka bir pazarından, etiket "EU pazarından" gibi kaynak pazarı yazar) ya da `imported` (pazaryerinden aktarılmış; etiket "Trendyol'da satın alındı · Trendyol'dan otomatik aktarıldı" gibi kaynağı yazar). Aktarılmış yorumda kaynak yorumun adresi varsa etiket `<a>` olur (`href`, `target="_blank"`, `rel="noopener"`), yoksa `<span>` kalır; bu yorumlarda `data-review-verified` bulunmaz. **Gizlenemez.** |
| `data-review-experience` | Değeri `process`: siparişi iptal edilen ya da ürünü iade eden müşterinin o aşamaya kadarki deneyimini anlatan yorumun etiketi. **Gizlenemez.** |
| `data-review-stars` | Yorumun puanı: beş yıldız, dolu kısım `data-review-fill` değerindedir |
| `data-review-title`, `data-review-body` | Başlık ve yorum metni |
| `data-review-long`, `data-review-open` | `data-review-body` üzerinde: 420 karakterden ya da 4 satırdan uzun metin 4 satırda kesilir; ziyaretçi metni açtığında `data-review-open` eklenir |
| `data-review-translated` | Çevrilmiş yorumda metnin altındaki satır (v2 ile gelecek; şu an çizilmez): "Çevrildi" ve `data-review-show-original` düğmesi. Yorum ziyaretçinin dilinde değilse ve o dile çevirisi varsa başlık ve metin çeviriyle gösterilir. **Gizlenemez.** |
| `data-review-show-original` | "Aslını göster" / "Çeviriyi göster" düğmesi (`aria-pressed`) (v2 ile gelecek; şu an çizilmez); aslı gösterilirken başlık ve metin yorumun dilini `lang` niteliğinde taşır |
| `data-review-expand` | "Devamını oku" / "Daha az göster" düğmesi (`aria-expanded`). Yalnızca metin gerçekten 4 satırı aşıyorsa görünür; bileşenin genişliği değiştiğinde yeniden ölçülür. |
| `data-review-item-aspects` | Yorumda verilen basamaklı ölçekli başlık puanları (`<dl>`); her satır `data-review-aspect` taşır, `<dd>` ölçeği ve seçilen basamağın adını (`data-review-aspect-value`) içerir |
| `data-review-media`, `data-review-media-item`, `data-review-media-kind` | Fotoğraf ve video önizlemeleri; tür `image` ya da `video` |
| `data-review-media-open`, `data-review-media-index` | Önizleme düğmesi ve dosyanın yorumdaki sırası (0'dan başlar); fotoğraf görüntüleyiciyi açar |
| `data-review-seller-response` | Satıcı yanıtı; yorumla aynı akışta. **Gizlenemez.** |
| `data-review-resolution` | Çözüm kaydı; yorumla aynı akışta. **Gizlenemez.** |
| `data-review-reply-label` | Satıcı yanıtı ya da çözüm kaydı etiketi |
| `data-review-actions` | Oy grubunun ve "Bildir" düğmesinin bulunduğu satır |
| `data-review-vote`, `data-review-vote-label` | Oy grubu (`role="group"`) ve "Faydalı mı?" etiketi |
| `data-review-helpful`, `data-review-helpful-count` | "Evet" düğmesi ve oy sayısı. Düğme bir başparmak simgesi (satır içi `<svg>`) ve sayıyı içerir; tam metin ("Evet (n)") `aria-label` içindedir. Seçiliyken `aria-pressed="true"`. |
| `data-review-unhelpful`, `data-review-unhelpful-count` | "Hayır" düğmesi ve oy sayısı; simge ters çevrilmiş olarak gösterilir, tam metin ("Hayır (m)") `aria-label` içindedir. Seçiliyken `aria-pressed="true"`. Seçili düğmeye yeniden basıldığında oy geri alınır, diğerine basıldığında oy o yöne taşınır. |
| `data-review-vote-count` | Oy düğmesinin içinde yalnızca sayıyı gösteren öğe |
| `data-review-actions-message` | Satırın durum mesajı (örneğin oyun kaydedilemediği) |
| `data-review-report`, `data-review-report-form`, `data-review-report-sent` | Yorum bildirme düğmesi, formu ve onay mesajı |
| `data-review-empty` | Hiç yorum olmadığında ya da filtrelere uyan yorum bulunmadığında gösterilen mesaj |
| `data-review-more` | Sonraki sayfayı yükleyen düğme |
| `data-review-list-message` | Filtre, sıralama ya da sonraki sayfa yüklenemediğinde gösterilen durum mesajı (`role="status"`); sonraki başarılı yüklemede kaldırılır |
| `data-review-sr` | Yalnızca ekran okuyuculara yönelik metin |

## Soru-cevap

Marka soru-cevabı açtığında kök öğenin son çocuğu olarak eklenir (`data-review-frame`'in ardından). Script bu bölümü ayrı bir parça olarak, yalnızca soru-cevap açıkken yükler; sunucuda hazırlanan HTML aynı yapıyı taşır.

| Attribute | Anlamı |
|---|---|
| `data-review-questions` | Soru-cevap bölümü (`<section>`) |
| `data-review-questions-title` | "Soru ve cevaplar" başlığı |
| `data-review-question-list` | Soru listesi |
| `data-review-question`, `data-review-question-id` | Tek bir soru ve kimliği |
| `data-review-question-body` | Soru metni |
| `data-review-question-meta`, `data-review-question-author` | Sorunun altındaki satır ve soranın adı (ad yoksa "Anonim"); tarih `data-review-date` ile |
| `data-review-answers` | Sorunun cevap listesi; cevap yoksa eklenmez |
| `data-review-answer`, `data-review-answer-kind` | Tek bir cevap; tür `brand` (marka) ya da `buyer` (ürünü satın almış müşteri) |
| `data-review-answer-head`, `data-review-answer-author` | Cevabın üst satırı ve yazanın adı (markanın cevabında kanalın marka adı) |
| `data-review-answer-badge` | Markanın cevabındaki "Marka" etiketi. Müşteri cevabında yerine `data-review-verified` ("Doğrulanmış alıcı") bulunur. **Gizlenemez.** |
| `data-review-answer-body` | Cevap metni |
| `data-review-answer-open`, `data-review-answer-form` | "Cevapla" düğmesi (`aria-expanded`) ve cevap formu; yalnızca ziyaretçinin satın alma doğrulaması varken (davet bağlantısı, sipariş doğrulaması ya da oturum açmış müşteri) eklenir |
| `data-review-questions-empty` | Soru yokken gösterilen mesaj |
| `data-review-questions-more` | Sonraki soru sayfasını yükleyen düğme |
| `data-review-ask`, `data-review-question-form` | "Soru sor" düğmesi (`aria-expanded`) ve soru formu |
| `data-review-question-asker` | Oturum açmış müşteride ad ve e-posta alanlarının yerine gösterilen satır: "Ayşe K. olarak soruyorsunuz. Cevap gelince e-postanıza haber veririz."; ad gönderilmediyse "Hesabınızla soruyorsunuz. Cevap gelince e-postanıza haber veririz." |
| `data-review-question-notify` | Oturum açmamış ziyaretçinin formunda "Cevap gelince e-postayla haber ver" onay kutusunu taşıyan `<label>`; kutu işaretlenince e-posta alanı görünür ve zorunlu olur |
| `data-review-question-notice` | Formdaki bilgi metni |
| `data-review-privacy` | Soru ve cevap formunda bilgi metninin altındaki paragraf; içindeki bağlantı ("Kişisel verilerin işlenmesi hakkında aydınlatma metni") kanalda girilen aydınlatma metnini yeni sekmede açar (`target="_blank"`, `rel="noopener"`). Kanalda aydınlatma metni bağlantısı yoksa eklenmez. |
| `data-review-questions-message` | Bölümün durum mesajı (`role="status"`): gönderildi, eksik alan ya da hata |

## Yorum yazma alanı

| Attribute | Anlamı |
|---|---|
| `data-review-gate-root` | Yorum yazma alanının kök öğesi; kök öğeyle aynı `data-review-theme` değerini taşır |
| `data-review-gate-state` | `pending` (sunucuda hazırlanan HTML ya da oturum açmış müşterinin durumu bekleniyor), `closed`, `open` (form açık), `refused` (uygun sipariş yok) ya da `submitted` (yorum gönderildi) |
| `data-review-gate-info` | Oturum açmamış ziyaretçinin gördüğü bilgi metni |
| `data-review-gate-verify` | Sipariş doğrulamasını açan düğme. `pending` durumunda script devralana kadar `disabled` olarak gösterilir. |
| `data-review-gate-form` | Sipariş numarası ve e-posta formu |
| `data-review-gate-message` | Tek ve genel hata mesajı |
| `data-review-gate-write` | Oturum açmış müşteriye gösterilen "Yorum yaz" düğmesi; yalnızca sunucu uygunluğu doğruladığında |
| `data-review-viewer-state` | `can_write` ya da `written` |
| `data-review-own-standing` | Müşterinin kendi yorumunun durumu: `published`, `pending`, `rejected` ya da `removed` |

## Yorum formu

Form bir dialog içinde açılır ve `body` öğesine eklenir. Bileşen sayfada açık bir modal `<dialog>` öğesinin içindeyse form o dialog'un içine eklenir; böylece üstteki katmanın altında kalmaz. Dialog içinde Tab tuşu her yıldız satırında ve her basamak grubunda bir kez durur; grup içinde ok tuşlarıyla seçim yapılır.

| Attribute | Anlamı |
|---|---|
| `data-review-form-overlay`, `data-review-form-dialog` | Arka plan katmanı ve dialog (`role="dialog"`; odak dialog içinde tutulur, Esc tuşu kapatır) |
| `data-review-form-verify` | Dialog içindeki sipariş doğrulama adımı |
| `data-review-form-head`, `data-review-form-title`, `data-review-form-lede`, `data-review-form-close` | Başlık bölümü: başlık, açıklama ve kapatma düğmesi |
| `data-review-form-content`, `data-review-form-foot` | İçerik ve alt bölüm |
| `data-review-form` | Yorum formu |
| `data-review-form-product`, `data-review-form-name`, `data-review-form-variant` | Bir ürünün bölümü, adı ve varyant bilgisi |
| `data-review-form-rating`, `data-review-form-star` | Yıldız grubu ve tek bir yıldız |
| `data-review-form-body`, `data-review-form-body-label` | Yorum metni alanı ve etiketi |
| `data-review-form-who` | Formun ürün bölümlerinin altındaki ad bölümü: isteğe bağlı ad alanı (`<label>` içinde `input[type=text]`) ve adın gizlenmesi için `data-review-hide-name` onay kutusu. Düzeltme formunda alanlar yorumdaki mevcut adla ve seçimle dolu gelir. Sipariş detayındaki değerlendirmede bölüm bir kez, ürün formlarının altında yer alır ve her ürünün gönderiminde kullanılır |
| `data-review-hide-name` | "Adım sitede gizli kalsın" onay kutusunu taşıyan `<label>`; yorum formunda, soru formunda ve cevap formunda bulunur. İşaretliyse ad sitede her sözcüğün ilk harfi ve `***` olarak görünür |
| `data-review-form-prompts` | Ürünün değerlendirme başlıkları varsa metin alanının altındaki tarafsız sorular ("Yazarken şunlara değinebilirsiniz: Kalıp nasıldı? …"); alan `aria-describedby` ile bu satıra bağlanır. Hazır cümle ya da öneri içermez. |
| `data-review-form-aspects`, `data-review-form-aspects-title`, `data-review-form-aspect` | Değerlendirme başlıkları; ürün için başlık tanımlıysa gösterilir. Hem ürünle hem teslimat ve hizmetle ilgili başlık varsa ilki "Ayrıntılı puanlama", ikincisi "Teslimat ve hizmet" altında sorulur ve `data-review-form-aspects-title` iki kez yer alır |
| `data-review-form-steps`, `data-review-form-step`, `data-review-form-step-checked` | Basamaklı ölçek ve seçili basamak |
| `data-review-form-media`, `data-review-form-media-add`, `data-review-form-media-list`, `data-review-form-media-item`, `data-review-form-media-state`, `data-review-form-media-message` | Fotoğraf ve video ekleme: bölüm, ekleme düğmesi, liste, tek dosya, yükleme durumu (`pending`, `ready`, `refused`, düzeltmede önceki dosyalar için `kept`) ve mesaj |
| `data-review-form-media-remove` | Düzeltme formunda önceki bir fotoğrafı ya da videoyu yorumdan kaldıran düğme (`data-review-form-media-state="kept"` öğesinde) |
| `data-review-form-media-progress`, `data-review-form-media-cancel` | Bir dosya hazırlanırken ve yüklenirken (`pending` durumunda): ilerleme metni ("Hazırlanıyor %42", ardından "Yükleniyor %17") ve bu dosyayı iptal eden düğme; ikisi de iş bitince öğeden kalkar |
| `data-review-form-notice`, `data-review-form-hint` | Yayın bilgilendirmesi ve yardımcı metin |
| `data-review-privacy` | Yayın bilgilendirmesinin altındaki aydınlatma metni bağlantısı (`<p>` içinde `<a>`, yeni sekmede açılır); yalnızca kanalda aydınlatma metni bağlantısı girilmişse |
| `data-review-form-submit`, `data-review-form-cancel`, `data-review-form-message`, `data-review-form-done` | Gönder ve vazgeç düğmeleri, hata mesajı ve gönderim sonrası mesaj |

## Fotoğraf görüntüleyici

Bir önizlemeye ya da fotoğraf şeridindeki bir dosyaya tıklandığında dosya bir dialog içinde büyütülür. Görüntüleyici ilk açılışta ayrı bir parça olarak yüklenir ve yorum formuyla aynı dialog yapısını kullanır (`data-review-form-overlay`, `data-review-form-dialog`, `data-review-form-head`, `data-review-form-title`, `data-review-form-close`). Başlık "Fotoğraf ve videolar"dır; açıklama satırı (`data-review-form-lede`) gösterilen dosyanın sırasını verir ("2 / 5"). Şeritten açıldığında şeritteki tüm dosyalar, yorumdan açıldığında o yorumun dosyaları gezilir. Birden fazla dosya varsa sol ve sağ ok tuşları önceki ve sonraki dosyaya geçer; odak bir videodayken ok tuşları videoya bırakılır. Esc tuşu dialog'u kapatır ve odak dialog'u açan düğmeye döner.

| Attribute | Anlamı |
|---|---|
| `data-review-lightbox` | Görüntüleyici dialog'u; `data-review-form-dialog` öğesinde bulunur |
| `data-review-lightbox-stage` | Dosyanın ve önceki/sonraki düğmelerinin bulunduğu alan |
| `data-review-lightbox-figure` | Büyütülmüş dosya (`<figure>`): fotoğraf ya da oynatıcı denetimleri açık video |
| `data-review-lightbox-caption`, `data-review-lightbox-author` | Dosyanın altındaki puan ve yazar satırı ile yazar adı |
| `data-review-lightbox-previous`, `data-review-lightbox-next` | Önceki ve sonraki düğmeleri; yalnızca birden fazla dosya varsa gösterilir. Son dosyadan sonra ilk dosyaya dönülür. |

## Sipariş detayında değerlendirme

Oturum açmış müşterinin sipariş detayı sayfasında siparişin her ürünü için sayfanın içinde bir puan ve yorum formu gösterilir (dialog açılmaz). Kurulum için: [Oturum açmış müşteri › Sipariş detayı sayfası](/tr/integrate/signed-in-customers.md#siparis-detayi-sayfasi).

| Attribute | Anlamı |
|---|---|
| `data-review-order` | Sayfanıza eklediğiniz öğe; değeri sipariş numarasıdır. Script bu öğenin içeriğini oluşturduğu bölümle değiştirir. Site anahtarı, API adresi ve tasarım (`data-review-theme`) container'da olduğu gibi öğenin kendi attribute'larından, yoksa script etiketinden okunur; metinlerin dili sipariş yanıtının dilidir. |
| `data-review-order-state` | Öğenin içindeki `<script type="application/json">` etiketi; Sayproof'un sipariş yanıtını taşır |
| `data-review-order-root` | Bölümün kök öğesi; `data-review-theme` taşır |
| `data-review-order-title` | Bölümün başlığı ("Ürünleri değerlendirin") |
| `data-review-order-lines`, `data-review-order-line` | Ürün listesi ve bir ürünün satırı; satırın değeri sipariş satırının kimliğidir (`line_reference`) |
| `data-review-line-state` | Satırın durumu: `can_write`, `pending`, `published`, `rejected`, `removed`, `waiting` ya da `closed`. Yorum gönderildikten sonra `pending` olur. |
| `data-review-order-form` | Yorum yazılabilen satırdaki form. Ürün bölümü yorum formuyla aynı alanları taşır (`data-review-form-product`, `data-review-form-name`, `data-review-form-rating`, `data-review-form-body`, `data-review-form-media`, `data-review-form-aspects`). |
| `data-review-order-foot` | Formun alt satırı: mesaj (`data-review-form-message`) ve satıra ait **Gönder** düğmesi (`data-review-form-submit`) |
| `data-review-order-status` | Yorum yazılamayan satırda ya da gönderimden sonra gösterilen durum metni (`role="status"`) |
| `data-review-form-notice` | Yayın bilgilendirmesi; en az bir satıra yorum yazılabiliyorsa listenin altında gösterilir |
| `data-review-privacy` | Yayın bilgilendirmesinin altındaki aydınlatma metni bağlantısı; kanalda aydınlatma metni bağlantısı girilmişse ve en az bir satıra yorum yazılabiliyorsa gösterilir |

## Stil etiketleri

Script stillerini üç `<style>` etiketiyle yükler: `#sayproof-style` (varsayılan bileşen), `#sayproof-style-form` (yorum formu, sipariş doğrulaması ve sipariş detayındaki değerlendirme; ilk açılışta yüklenir) ve `#sayproof-style-lightbox` (fotoğraf görüntüleyici; ilk açılışta yüklenir). `#sayproof-style`, ilk yorum listesi isteğiyle paralel yüklenen ayrı bir parçadan gelir; headless kullanımda eklenmez. Script etiketindeki `nonce` değeri üç etikete de eklenir. CSS değişkenleri için: [CSS değişkenleri](/tr/customize/theme.md).

## Örnekler

### Tüm yapılandırma attribute'larıyla container

```html
<div id="yorum-yaz"></div>

<div id="reviews"
     data-review-mount
     data-review-product="URUN-38"
     data-review-scope="variant"
     data-review-product-name="Koşu ayakkabısı"
     data-review-locale="tr"
     data-review-layout="grid"
     data-review-style="sidebar"
     data-review-theme="trust"
     data-review-gate="#yorum-yaz"></div>

<script type="module" src="https://cdn.sayproof.example/sayproof.js"
        data-review-site-key="SITE-ANAHTARINIZ"
        data-review-base="https://api.sayproof.example"
        data-review-locale="tr"></script>
```

### Varyant seçildiğinde ürünü değiştirmek

`data-review-product` değerini değiştirmeniz yeterlidir; script değişikliği algılar ve yeni ürünün yorumlarını yükler. Ek bir işlem gerekmez.

```html
<select id="size">
  <option value="URUN-38">38</option>
  <option value="URUN-39">39</option>
</select>

<div id="reviews" data-review-mount data-review-product="URUN-38"></div>

<script>
  document.querySelector("#size").addEventListener("change", (event) => {
    document.querySelector("#reviews").dataset.reviewProduct = event.target.value;
  });
</script>
```

### Aynı sayfada varyant ve grup yorumları

```html
<section>
  <h2>Bu numaranın yorumları</h2>
  <div data-review-mount data-review-product="URUN-38" data-review-scope="variant"></div>
</section>

<section>
  <h2>Tüm numaraların yorumları</h2>
  <div data-review-mount data-review-product="URUN" data-review-scope="group"></div>
</section>
```

### Bileşen hazır olana kadar kendi düğmenizi pasif tutmak

```html
<button id="write-review" type="button" disabled>Yorum yaz</button>
<div id="reviews" data-review-mount data-review-product="URUN-38"></div>

<script>
  const container = document.querySelector("#reviews");
  const button = document.querySelector("#write-review");

  const sync = () => {
    button.disabled = !container.hasAttribute("data-review-ready");
  };
  new MutationObserver(sync).observe(container, { attributes: true, attributeFilter: ["data-review-ready"] });
  sync();

  button.addEventListener("click", () => window.Sayproof?.write(container));
</script>
```

### Sipariş detayı sayfasında değerlendirme

`data-review-order-state` etiketinin içeriği, sunucunuzun `GET /v1/viewer/order` isteğine aldığı yanıtın kendisidir; etiketin içine yazarken `<`, `>` ve `&` karakterlerini escape edin. Script öğeyi bulur, içeriğini değerlendirme bölümüyle değiştirir; site anahtarı ve API adresi script etiketinden alınır.

```html
<div data-review-order="100245">
  <script type="application/json" data-review-order-state>{"order":"100245","token":"…","lines":[…],"limits":{…},"language":"tr","theme":"warm","words":{…}}</script>
</div>

<script type="module" src="https://cdn.sayproof.example/sayproof.js"
        data-review-site-key="SITE-ANAHTARINIZ"
        data-review-base="https://api.sayproof.example"
        data-review-locale="tr"></script>
```

### Duruma göre biçimlendirme

```css
[data-review-root][data-review-busy] [data-review-list] {
  transition: opacity 0.2s;
}

[data-review-gate-root][data-review-gate-state="submitted"] {
  border-left: 3px solid var(--review-accent, #1f1b16);
}

[data-review-item]:has([data-review-origin-kind="imported"]) [data-review-body] {
  font-style: italic;
}

[data-review-media-item][data-review-media-kind="video"] {
  outline: 1px solid var(--review-border, #ece5da);
}

[data-review-star-filter][aria-pressed="true"] [data-review-bar]::before {
  background: var(--review-accent, #1f1b16);
}

[data-review-order-line][data-review-line-state="published"] [data-review-order-status] {
  color: #1f7a4d;
}
```
