feat: show view count badge next to reading time

- GET /api/views/counts/ returns { slug: count } for all published posts
- Eye-icon badge on post cards and post header, filled client-side;
  space is reserved so there is no layout shift, hidden if the API fails

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 09:21:21 +03:00
parent a32c0d0911
commit b1f2c4c875
13 changed files with 252 additions and 38 deletions
+49 -9
View File
@@ -16,7 +16,9 @@
},
"card": {
"readMore": "Devamını oku",
"readingTime": "{n} dk okuma"
"readingTime": "{n} dk okuma",
"views": "{n} görüntülenme",
"viewsLabel": "Görüntülenme sayısı"
},
"dates": {
"created": "Oluşturuldu",
@@ -63,15 +65,53 @@
"diy": {
"title": "Sorumluluk Reddi",
"body": "Bu yazıdaki uygulamalar eğitim ve hobi amaçlıdır. Uygulamadan doğabilecek her türlü zarar, cihaz arızası ve mevzuata aykırılık sorumluluğu uygulayan kişiye aittir.",
"link": { "label": "Sorumluluk reddi metninin tamamı", "href": "/sorumluluk-reddi/" }
"link": {
"label": "Sorumluluk reddi metninin tamamı",
"href": "/sorumluluk-reddi/"
}
},
"share": [
{ "id": "x", "label": "X'te paylaş", "icon": "tabler:brand-x", "url": "https://x.com/intent/post?url={url}&text={title}" },
{ "id": "facebook", "label": "Facebook'ta paylaş", "icon": "tabler:brand-facebook", "url": "https://www.facebook.com/sharer/sharer.php?u={url}" },
{ "id": "linkedin", "label": "LinkedIn'de paylaş", "icon": "tabler:brand-linkedin", "url": "https://www.linkedin.com/sharing/share-offsite/?url={url}" },
{ "id": "whatsapp", "label": "WhatsApp ile gönder", "icon": "tabler:brand-whatsapp", "url": "https://wa.me/?text={title}%20{url}" },
{ "id": "telegram", "label": "Telegram ile gönder", "icon": "tabler:brand-telegram", "url": "https://t.me/share/url?url={url}&text={title}" },
{ "id": "bluesky", "label": "Bluesky'da paylaş", "icon": "tabler:brand-bluesky", "url": "https://bsky.app/intent/compose?text={title}%20{url}" },
{ "id": "email", "label": "E-posta ile gönder", "icon": "tabler:mail", "url": "mailto:?subject={title}&body={url}" }
{
"id": "x",
"label": "X'te paylaş",
"icon": "tabler:brand-x",
"url": "https://x.com/intent/post?url={url}&text={title}"
},
{
"id": "facebook",
"label": "Facebook'ta paylaş",
"icon": "tabler:brand-facebook",
"url": "https://www.facebook.com/sharer/sharer.php?u={url}"
},
{
"id": "linkedin",
"label": "LinkedIn'de paylaş",
"icon": "tabler:brand-linkedin",
"url": "https://www.linkedin.com/sharing/share-offsite/?url={url}"
},
{
"id": "whatsapp",
"label": "WhatsApp ile gönder",
"icon": "tabler:brand-whatsapp",
"url": "https://wa.me/?text={title}%20{url}"
},
{
"id": "telegram",
"label": "Telegram ile gönder",
"icon": "tabler:brand-telegram",
"url": "https://t.me/share/url?url={url}&text={title}"
},
{
"id": "bluesky",
"label": "Bluesky'da paylaş",
"icon": "tabler:brand-bluesky",
"url": "https://bsky.app/intent/compose?text={title}%20{url}"
},
{
"id": "email",
"label": "E-posta ile gönder",
"icon": "tabler:mail",
"url": "mailto:?subject={title}&body={url}"
}
]
}