refactor: translate UI elements to Turkish and update homepage content

This commit is contained in:
Buğra
2025-07-10 15:53:05 +03:00
parent 5633ec92a1
commit 4538959c00
33 changed files with 544 additions and 1809 deletions
+38 -6
View File
@@ -1,23 +1,55 @@
---
import Layout from '~/layouts/Layout.astro';
import { getHomePermalink } from '~/utils/permalinks';
import { Icon } from 'astro-icon/components';
const title = `Error 404`;
const title = `Hata 404`;
---
<Layout metadata={{ title }}>
<section class="flex items-center h-full p-16">
<div class="container flex flex-col items-center justify-center px-5 mx-auto my-8">
<div class="max-w-md text-center">
<h2 class="mb-8 font-bold text-9xl">
<div class="max-w-lg text-center">
<!-- Radio Tower Icon -->
<div class="mb-6">
<Icon name="tabler:antenna" class="w-24 h-24 mx-auto text-primary opacity-80" />
</div>
<h2 class="mb-4 font-bold text-9xl">
<span class="sr-only">Error</span>
<span class="text-primary">404</span>
</h2>
<p class="text-3xl font-semibold md:text-3xl">Sorry, we couldn't find this page.</p>
<!-- Ham Radio themed message -->
<div class="mb-6 p-4 bg-gray-100 dark:bg-slate-800 rounded-lg border-l-4 border-primary">
<p class="text-lg font-mono text-gray-700 dark:text-gray-300 mb-2">
<strong>CQ CQ CQ... Sinyal bulunamadı!</strong>
</p>
<p class="text-sm text-gray-600 dark:text-gray-400">Frekans: 404 MHz • Güç: 0 Watt • SWR: ∞</p>
</div>
<p class="text-2xl font-semibold md:text-3xl mb-4">📡 Sinyal menzil dışında!</p>
<p class="mt-4 mb-8 text-lg text-muted dark:text-slate-400">
But dont worry, you can find plenty of other things on our homepage.
Aradığınız sayfa stratosferde kaybolmuş gibi görünüyor. <br />
Ana istasyona (sayfaya) geri dönün veya frekansı yeniden ayarlayın.
</p>
<a rel="noopener noreferrer" href={getHomePermalink()} class="btn ml-4">Back to homepage</a>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<a rel="noopener noreferrer" href={getHomePermalink()} class="btn">
<Icon name="tabler:home" class="w-5 h-5 mr-2" />
Ana İstasyon (QTH)
</a>
<a rel="noopener noreferrer" href="/blog" class="btn btn-outline">
<Icon name="tabler:radio" class="w-5 h-5 mr-2" />
Blog Yayınları
</a>
</div>
<!-- Fun Ham Radio callsign -->
<div class="mt-8 text-sm text-gray-500 dark:text-gray-400">
<p>73 de YM1KTC - Amatör Radyocular Derneği</p>
</div>
</div>
</div>
</section>
+3 -3
View File
@@ -24,7 +24,7 @@ const currentPage = page.currentPage ?? 1;
// const allTags = await findTags();
const metadata = {
title: `Blog${currentPage > 1 ? ` — Page ${currentPage}` : ''}`,
title: `📻 Blog${currentPage > 1 ? ` — Sayfa ${currentPage}` : ''}`,
robots: {
index: blogListRobots?.index && currentPage === 1,
follow: blogListRobots?.follow,
@@ -38,9 +38,9 @@ const metadata = {
<Layout metadata={metadata}>
<section class="px-6 sm:px-6 py-12 sm:py-16 lg:py-20 mx-auto max-w-4xl">
<Headline
subtitle="A statically generated blog example with news, tutorials, resources and other interesting content related to AstroWind"
subtitle="📡 Amatör radyo dünyasından haberler, eğitim içerikleri, teknik kaynaklar ve ilginç makaleler - 73 de YM1KTC"
>
The Blog
📻 Blog
</Headline>
<BlogList posts={page.data} />
<Pagination prevUrl={page.url.prev} nextUrl={page.url.next} />
-15
View File
@@ -1,15 +0,0 @@
---
// Redirect to decap CMS
---
<html>
<head>
<meta http-equiv="refresh" content="0; url=/decapcms/" />
<script>
window.location.replace('/decapcms/');
</script>
</head>
<body>
<p>Redirecting to CMS...</p>
</body>
</html>
-150
View File
@@ -1,150 +0,0 @@
---
// Authentication handler page for Netlify Identity
---
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Kimlik Doğrulama - ARC</title>
<script is:inline src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
margin: 0;
padding: 2rem;
background: #f8fafc;
color: #334155;
}
.container {
max-width: 400px;
margin: 0 auto;
background: white;
padding: 2rem;
border-radius: 8px;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
text-align: center;
}
.logo {
width: 64px;
height: 64px;
margin: 0 auto 1rem;
background: #3b82f6;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 24px;
font-weight: bold;
}
.spinner {
border: 3px solid #f3f4f6;
border-top: 3px solid #3b82f6;
border-radius: 50%;
width: 24px;
height: 24px;
animation: spin 1s linear infinite;
margin: 1rem auto;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.button {
background: #3b82f6;
color: white;
border: none;
padding: 0.75rem 1.5rem;
border-radius: 6px;
cursor: pointer;
text-decoration: none;
display: inline-block;
margin-top: 1rem;
}
.button:hover {
background: #2563eb;
}
</style>
</head>
<body>
<div class="container">
<div class="logo">ARC</div>
<h1>Kimlik Doğrulama</h1>
<div id="status">
<div class="spinner"></div>
<p>Kimlik doğrulama işlemi yapılıyor...</p>
</div>
</div>
<script is:inline>
// Handle Netlify Identity authentication
if (window.netlifyIdentity) {
// Handle the confirmation/recovery tokens
window.netlifyIdentity.on('init', (user) => {
if (user) {
// User is already logged in, redirect to admin
document.getElementById('status').innerHTML = `
<p>✅ Giriş başarılı!</p>
<p>Yönetim paneline yönlendiriliyorsunuz...</p>
`;
setTimeout(() => {
window.location.href = '/admin/';
}, 2000);
} else {
// Check for confirmation/recovery tokens in URL
const urlParams = new URLSearchParams(window.location.search);
const hashParams = new URLSearchParams(window.location.hash.substring(1));
const confirmationToken = urlParams.get('confirmation_token') || hashParams.get('confirmation_token');
const recoveryToken = urlParams.get('recovery_token') || hashParams.get('recovery_token');
const inviteToken = urlParams.get('invite_token') || hashParams.get('invite_token');
if (confirmationToken || recoveryToken || inviteToken) {
document.getElementById('status').innerHTML = `
<p>Hesabınız doğrulanıyor...</p>
<div class="spinner"></div>
`;
// The widget will automatically handle the tokens
// Just wait for the user to be confirmed
window.netlifyIdentity.on('login', (user) => {
document.getElementById('status').innerHTML = `
<p>✅ Hesap doğrulandı!</p>
<p>Yönetim paneline yönlendiriliyorsunuz...</p>
`;
setTimeout(() => {
window.location.href = '/admin/';
}, 2000);
});
window.netlifyIdentity.on('error', (err) => {
console.error('Identity error:', err);
document.getElementById('status').innerHTML = `
<p>❌ Doğrulama hatası</p>
<p>Lütfen tekrar deneyin veya yeni bir davet isteyin.</p>
<a href="/admin/" class="button">Yönetim Paneli</a>
`;
});
} else {
// No tokens, show login option
document.getElementById('status').innerHTML = `
<p>Giriş yapmak için aşağıdaki butona tıklayın.</p>
<a href="/admin/" class="button">Yönetim Paneli</a>
`;
}
}
});
// Initialize the widget
window.netlifyIdentity.init();
} else {
document.getElementById('status').innerHTML = `
<p>❌ Kimlik doğrulama servisi yüklenemedi</p>
<a href="/admin/" class="button">Tekrar Dene</a>
`;
}
</script>
</body>
</html>
+109
View File
@@ -0,0 +1,109 @@
---
import Layout from '~/layouts/PageLayout.astro';
import { fetchPosts } from '~/utils/blog';
import { TAG_BASE } from '~/utils/permalinks';
export const prerender = true;
const posts = await fetchPosts();
// Get all tags and count posts for each
const tagsMap = new Map();
posts.forEach(post => {
if (post.tags && Array.isArray(post.tags)) {
post.tags.forEach(tag => {
const tagSlug = tag.slug;
if (tagsMap.has(tagSlug)) {
tagsMap.get(tagSlug).count += 1;
} else {
tagsMap.set(tagSlug, {
title: tag.title,
slug: tagSlug,
count: 1
});
}
});
}
});
// Sort tags by count (descending) then by title
const tags = Array.from(tagsMap.values()).sort((a, b) => {
if (b.count !== a.count) {
return b.count - a.count;
}
return a.title.localeCompare(b.title, 'tr');
});
const metadata = {
title: '🏷️ Etiketler',
description: 'Amatör radyo blog etiketlerini görüntüleyin - 73 de YM1KTC',
robots: {
index: true,
follow: true,
},
};
---
<Layout metadata={metadata}>
<section class="px-4 md:px-6 py-12 sm:py-16 lg:py-20 mx-auto max-w-6xl">
<div class="mb-8 md:mb-16 text-center">
<h1 class="text-3xl md:text-4xl font-bold leading-tighter tracking-tighter mb-4 font-heading">
🏷️ Etiketler
</h1>
<p class="text-muted text-lg">
📡 Amatör radyo blog yazılarımızı etiketlere göre keşfedin - QSL!
</p>
</div>
<div class="flex flex-wrap gap-3 justify-center">
{tags.map((tag) => (
<a
href={`/${TAG_BASE}/${tag.slug}`}
class="inline-flex items-center px-4 py-2 bg-gray-100 dark:bg-gray-800 text-gray-800 dark:text-gray-200 rounded-full hover:bg-primary-100 dark:hover:bg-primary-900 hover:text-primary-800 dark:hover:text-primary-200 transition-colors duration-200 text-sm font-medium"
>
<span class="mr-2">{tag.title}</span>
<span class="inline-flex items-center justify-center w-5 h-5 text-xs font-semibold text-white bg-primary-600 rounded-full">
{tag.count}
</span>
</a>
))}
</div>
{tags.length === 0 && (
<div class="text-center py-12">
<p class="text-muted text-lg">🏷️ Henüz hiç etiket bulunmamaktadır. QRT!</p>
</div>
)}
<!-- Popular Tags Section -->
{tags.length > 0 && (
<div class="mt-16">
<h2 class="text-2xl font-bold text-center mb-8 text-gray-900 dark:text-white">
📻 Popüler Etiketler
</h2>
<div class="grid gap-4 md:gap-6 sm:grid-cols-2 lg:grid-cols-3">
{tags.slice(0, 6).map((tag) => (
<div class="flex justify-between items-center p-4 bg-white dark:bg-slate-900 rounded-lg shadow-md border border-gray-200 dark:border-gray-700 hover:shadow-lg transition-shadow duration-200">
<div>
<h3 class="font-semibold text-gray-900 dark:text-white">
<a
href={`/${TAG_BASE}/${tag.slug}`}
class="hover:text-primary-600 dark:hover:text-primary-400 transition-colors duration-200"
>
{tag.title}
</a>
</h3>
<p class="text-sm text-muted mt-1">
{tag.count} {tag.count === 1 ? 'yazı' : 'yazı'}
</p>
</div>
<div class="flex items-center justify-center w-8 h-8 bg-primary-100 dark:bg-primary-900 text-primary-600 dark:text-primary-400 rounded-full text-sm font-semibold">
{tag.count}
</div>
</div>
))}
</div>
</div>
)}
</section>
</Layout>
+40
View File
@@ -0,0 +1,40 @@
---
title: 'Gizlilik Politikası'
layout: '~/layouts/MarkdownLayout.astro'
---
_Son güncelleme_: 6 Ocak 2023
## Gizlilik Politikası
Bu Gizlilik Politikası, Amatör Radyocular Derneği (ARC) olarak kişisel bilgilerinizin nasıl toplandığını, kullanıldığını ve korunduğunu açıklar.
### Toplanan Bilgiler
- **İletişim Bilgileri**: İsim, e-posta adresi, telefon numarası
- **Çağrı İşareti**: Amatör radio çağrı işaretiniz
- **Lisans Bilgileri**: Amatör radio lisans durumu ve sınıfı
- **Eğitim Bilgileri**: Katıldığınız kurslar ve sınavlar
### Bilgilerin Kullanımı
Kişisel bilgileriniz aşağıdaki amaçlarla kullanılır:
- Eğitim programları ve etkinlikler hakkında bilgilendirme
- Lisans sınavları ve başvuru süreçleri
- Teknik destek ve danışmanlık hizmetleri
- Acil durum haberleşme koordinasyonu
### Bilgi Güvenliği
Kişisel bilgileriniz güvenli sunucularda saklanır ve yetkisiz erişime karşı korunur. Bilgileriniz üçüncü taraflarla paylaşılmaz.
### İletişim
Gizlilik politikamız hakkında sorularınız için:
- E-posta: bilgi@radio.org.tr
- Telefon: +90 510 220 50 24
### Güncellemeler
Bu politika gerektiğinde güncellenebilir. Değişiklikler web sitesinde yayınlanır.
@@ -7,7 +7,7 @@ import Steps2 from '~/components/widgets/Steps2.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Hakkımızda - ARC',
title: '📻 Hakkımızda - ARC YM1KTC',
};
---
@@ -15,16 +15,16 @@ const metadata = {
<!-- Hero Widget ******************* -->
<Hero
tagline="Hakkımızda"
tagline="📡 Hakkımızda"
image={{
src: '~/assets/images/2024/12/ARC_2024_bayrak_logo-Large-1-1024x1024.png',
alt: 'ARC Logo',
width: 1024,
height: 1024,
width: 256,
height: 256,
}}
>
<Fragment slot="title">
Amatör radyo dünyasında <br />
📻 Amatör radyo dünyasında <br />
<span class="text-accent dark:text-white"> Güçlü bir topluluk</span>
</Fragment>
@@ -38,7 +38,7 @@ const metadata = {
<!-- Stats Widget ****************** -->
<Stats
title="Derneğimizle ilgili istatistikler"
title="📈 Derneğimizle ilgili istatistikler - QSL"
stats={[
{ title: 'Kuruluş Yılı', amount: '2024' },
{ title: 'Aktif Üye', amount: '100+' },
@@ -50,24 +50,29 @@ const metadata = {
<!-- Features3 Widget ************** -->
<Features3
title="Faaliyet Alanlarımız"
title="📡 Faaliyet Alanlarımız"
subtitle="Amatör radyo dünyasında geniş bir yelpazede hizmet sunan derneğimiz, üyelerimize kapsamlı destek sağlamaktadır."
columns={3}
isBeforeContent={true}
items={[
{
title: 'Eğitim ve Öğretim',
title: '📚 Eğitim ve Öğretim',
description:
'Amatör telsiz lisans sınavlarına hazırlık, teknik eğitim programları ve sürekli gelişim kursları düzenliyoruz.',
icon: 'tabler:school',
callToAction: {
text: 'Sınav Hazırlık Sitesi',
href: 'https://sinav.radio.org.tr/',
target: '_blank',
},
},
{
title: 'Teknik Altyapı',
title: '📡 Teknik Altyapı',
description: 'VHF/UHF röle sistemleri, beacon istasyonları ve teknik altyapı projeleri geliştirip işletiyoruz.',
icon: 'tabler:antenna',
},
{
title: 'Acil Haberleşme',
title: '🚨 Acil Haberleşme',
description:
'Acil durumlarda güvenilir haberleşme sistemleri geliştirerek toplumsal sorumluluğumuzu yerine getiriyoruz.',
icon: 'tabler:phone-call',
@@ -82,66 +87,65 @@ const metadata = {
isAfterContent={true}
items={[
{
title: 'Araştırma ve Geliştirme',
title: '🔬 Araştırma ve Geliştirme',
description:
'Amatör radyo teknolojileri üzerine araştırma projeleri yürütüyor ve yenilikçi çözümler geliştiriyoruz.',
icon: 'tabler:microscope',
},
{
title: 'Topluluk Etkinlikleri',
title: '🎉 Topluluk Etkinlikleri',
description:
'Yarışmalar, sergiler, seminerler ve sosyal etkinlikler düzenleyerek amatör radyocuları bir araya getiriyoruz.',
icon: 'tabler:users',
},
{
title: 'Uluslararası İşbirliği',
title: '🌍 Uluslararası İşbirliği',
description: "Dünya çapında amatör radyo kuruluşlarıyla işbirliği yaparak Türkiye'yi temsil ediyoruz.",
icon: 'tabler:world',
},
{
title: 'Genç Radyocular',
title: '👨‍👩‍👧‍👦 Genç Radyocular',
description:
'Gençlerin amatör radyo dünyasına katılımını teşvik eden özel programlar ve etkinlikler düzenliyoruz.',
icon: 'tabler:user-plus',
},
{
title: 'Teknik Danışmanlık',
title: '⚙️ Teknik Danışmanlık',
description:
'Anten kurulumu, ekipman seçimi ve teknik konularda üyelerimize uzman danışmanlık hizmeti sunuyoruz.',
icon: 'tabler:tool',
},
{
title: 'Dijital Modlar',
title: '📶 Dijital Modlar',
description: 'DMR, APRS, FT8 gibi dijital mod teknolojileri konusunda eğitim ve uygulama desteği sağlıyoruz.',
icon: 'tabler:device-laptop',
callToAction: {
text: 'DMR Editor',
href: 'https://dmr.radio.org.tr/',
target: '_blank',
},
},
]}
image={{
src: '~/assets/images/2024/12/ARC_2024_bayrak_logo-Large-1-1024x1024.png',
alt: 'ARC Logo',
width: 1024,
height: 1024,
}}
/>
<!-- Steps2 Widget ****************** -->
<Steps2
title="Değerlerimiz"
title="Değerlerimiz"
subtitle="Derneğimizin temel değerleri, tüm faaliyetlerimizin ve üyelerimizle ilişkilerimizin temelini oluşturmaktadır."
items={[
{
title: 'Üye Odaklı Yaklaşım',
title: '🎯 Üye Odaklı Yaklaşım',
description:
'Üyelerimizin ihtiyaçlarını önceleyerek, onların gelişimini desteklemek ve amatör radyo yolculuklarında rehberlik etmek en önemli amacımızdır.',
},
{
title: 'Sürekli Gelişim',
title: '📈 Sürekli Gelişim',
description:
'Teknolojideki gelişmeleri takip ederek, eğitim programlarımızı ve hizmetlerimizi sürekli güncelliyor ve geliştiriyoruz.',
},
{
title: 'Etik Değerler',
title: '🌟 Etik Değerler',
description:
'Amatör radyo etiğini benimser, şeffaflık, dürüstlük ve toplumsal sorumluluk bilinciyle hareket ederiz.',
},
@@ -151,28 +155,28 @@ const metadata = {
<!-- Steps2 Widget ****************** -->
<Steps2
title="Başarılarımız"
title="🏆 Başarılarımız"
subtitle="Kurulduğumuz günden bu yana elde ettiğimiz başarılar ve topluma katkılarımız."
isReversed={true}
callToAction={{
text: 'Daha fazla bilgi',
href: '/contact',
href: '/iletisim',
}}
items={[
{
title: 'Türkiye çapında erişim',
title: '🇹🇷 Türkiye çapında erişim',
description:
'Röle sistemlerimiz ve eğitim programlarımız ile Türkiye genelinde amatör radyoculara hizmet veriyoruz.',
icon: 'tabler:map-pin',
},
{
title: 'Pozitif üye geri bildirimleri',
title: '😊 Pozitif üye geri bildirimleri',
description:
'Üyelerimizden aldığımız olumlu geri bildirimler ve yüksek memnuniyet oranları bizi motive ediyor.',
icon: 'tabler:message-star',
},
{
title: 'Sektörel tanınırlık',
title: '🏅 Sektörel tanınırlık',
description:
'Amatör radyo camiasında saygın bir konuma sahip olup, diğer kuruluşlar tarafından referans alınıyoruz.',
icon: 'tabler:award',
@@ -183,13 +187,13 @@ const metadata = {
<!-- Features2 Widget ************** -->
<Features2
title="Yönetim Kurulu"
tagline="Liderlik"
title="💼 Yönetim Kurulu"
tagline="👑 Liderlik"
columns={1}
items={[
{
title: 'Başkan',
description: 'Cüneyt Şahna (TA1CUN) - +90 532 311 17 66',
title: '📻 Başkan',
description: 'Cüneyt Şahna (TA1CUN)',
},
]}
/>
@@ -197,17 +201,17 @@ const metadata = {
<!-- Features2 Widget ************** -->
<Features2
title="Teknik Destek"
tagline="İletişim"
title="🛠️ Teknik Destek"
tagline="📡 İletişim"
columns={2}
items={[
{
title: 'E-posta ile iletişim',
title: '📮 E-posta ile iletişim',
description: 'Teknik sorularınız, üyelik başvurunuz veya genel bilgi almak için e-posta gönderebilirsiniz.',
icon: 'tabler:mail',
},
{
title: 'Telefon desteği',
title: '📞 Telefon desteği',
description: 'Acil durumlar ve önemli konular için telefon hattımızdan bize ulaşabilirsiniz.',
icon: 'tabler:headset',
},
@@ -5,66 +5,76 @@ import ContactUs from '~/components/widgets/Contact.astro';
import Features2 from '~/components/widgets/Features2.astro';
const metadata = {
title: 'İletişim - ARC',
title: '📡 İletişim - ARC YM1KTC',
};
---
<Layout metadata={metadata}>
<!-- HeroText Widget ******************* -->
<HeroText tagline="İletişim" title="Bizimle İletişime Geçin!" />
<HeroText tagline="📡 İletişim" title="📻 73! Bizimle İletişime Geçin!" />
<ContactUs
id="form"
title="Bugün bize mesaj gönderin!"
subtitle="Hızlı yanıtlar için SSS bölümümüze göz atın. Aradığınız çözümü orada bulabilirsiniz! Bulamazsanız, destek ekibimiz size yardımcı olmaktan mutluluk duyar."
title="📨 CQ CQ CQ - Bugün bize mesaj gönderin!"
subtitle="📻 Hızlı yanıtlar için SSS bölümümüze göz atın. Aradığınız çözümü orada bulabilirsiniz! Bulamazsanız, destek ekibimiz size yardımcı olmaktan mutluluk duyar. 73!"
inputs={[
{
type: 'text',
name: 'name',
label: 'Ad Soyad',
label: '👤 Ad Soyad',
},
{
type: 'email',
name: 'email',
label: 'E-posta',
label: '📮 E-posta',
},
{
type: 'text',
name: 'callsign',
label: 'Çağrı İşareti (İsteğe bağlı)',
label: '📻 Çağrı İşareti (İsteğe bağlı)',
},
]}
textarea={{
label: 'Mesaj',
label: '📝 Mesaj',
}}
disclaimer={{
label: 'Bu iletişim formunu göndererek, kişisel bilgilerinizin toplanmasını kabul etmiş olursunuz.',
}}
description="Destek ekibimiz genellikle 24 iş saati içinde yanıt verir."
description="🚀 Destek ekibimiz genellikle 24 iş saati içinde yanıt verir. QSL!"
/>
<!-- Features2 Widget ************** -->
<Features2
title="Size yardımcı olmak için buradayız!"
title="🛠️ Size yardımcı olmak için buradayız - 73!"
items={[
{
title: 'Genel Destek',
title: '📞 Genel Destek',
description: `Dernek faaliyetleri, web sitesi navigasyonu, etkinlik bilgileri veya genel sorularınız için bizimle iletişime geçin.`,
},
{
title: 'Eğitim Programları',
title: '📚 Eğitim Programları',
description:
'Amatör telsiz eğitimi, lisans sınav hazırlığı ve teknik kurslar hakkında sorularınız için bizimle iletişime geçin.',
callToAction: {
text: 'Sınav Hazırlık',
href: 'https://sinav.radio.org.tr/',
target: '_blank',
},
},
{
title: 'Teknik Destek',
title: '⚙️ Teknik Destek',
description:
'Röle sistemleri, anten kurulumu, frekans ayarları ve diğer teknik konularda destek almak için bizimle iletişime geçin.',
callToAction: {
text: 'DMR Editor',
href: 'https://dmr.radio.org.tr/',
target: '_blank',
},
},
{
title: 'Telefon',
title: '📞 Telefon',
description: '+90 510 220 50 24 (dernek hattı)',
icon: 'tabler:headset',
},
@@ -75,7 +85,7 @@ const metadata = {
href: 'mailto:bilgi@radio.org.tr',
},
{
title: 'Adres',
title: '📍 Adres',
description: 'Kılıçali Paşa Mah. Altın Bilezik Sk. No: 2/9, 34433 Beyoğlu İstanbul',
icon: 'tabler:map-pin',
},
@@ -84,39 +94,74 @@ const metadata = {
<!-- Social Media Links -->
<Features2
title="Sosyal Medya"
tagline="Takip Edin"
title="📱 Sosyal Medya"
tagline="👀 Takip Edin"
columns={3}
items={[
{
title: 'Facebook',
title: '📸 Facebook',
description: 'Facebook sayfamızdan güncel haberler ve etkinliklerimizi takip edin.',
icon: 'tabler:brand-facebook',
callToAction: {
text: 'Sayfayı Ziyaret Et',
href: 'https://facebook.com/ym1ktc',
target: '_blank',
variant: 'link',
},
},
{
title: 'YouTube',
title: '🎥 YouTube',
description: 'YouTube kanalımızdan eğitim videoları ve canlı yayınları izleyin.',
icon: 'tabler:brand-youtube',
callToAction: {
text: 'Kanalı Ziyaret Et',
href: 'https://www.youtube.com/@YM1KTC',
target: '_blank',
variant: 'link',
},
},
{
title: 'Instagram',
title: '📷 Instagram',
description: 'Instagram hesabımızdan fotoğraf ve video paylaşımlarımızı görün.',
icon: 'tabler:brand-instagram',
callToAction: {
text: 'Hesabı Ziyaret Et',
href: 'https://www.instagram.com/ym1ktc',
target: '_blank',
variant: 'link',
},
},
{
title: 'X (Twitter)',
title: '🐦 X (Twitter)',
description: 'X (Twitter) hesabımızdan anlık güncellemeler ve duyurular.',
icon: 'tabler:brand-x',
callToAction: {
text: 'Hesabı Takip Et',
href: 'https://x.com/ym1ktc',
target: '_blank',
variant: 'link',
},
},
{
title: 'LinkedIn',
title: '📋 LinkedIn',
description: 'LinkedIn sayfamızdan profesyonel güncellemeler ve iş birliği fırsatları.',
icon: 'tabler:brand-linkedin',
callToAction: {
text: 'Sayfayı Ziyaret Et',
href: 'https://www.linkedin.com/company/arctr/',
target: '_blank',
variant: 'link',
},
},
{
title: 'E-posta',
title: '📧 E-posta',
description: 'Doğrudan e-posta ile bizimle iletişime geçin: bilgi@radio.org.tr',
icon: 'tabler:mail',
callToAction: {
text: 'E-posta Gönder',
href: 'mailto:bilgi@radio.org.tr',
variant: 'link',
},
},
]}
/>
+38 -27
View File
@@ -24,10 +24,10 @@ const metadata = {
{
variant: 'primary',
text: 'İletişim',
href: '/contact',
href: '/iletisim',
icon: 'tabler:mail',
},
{ text: 'Hakkımızda', href: '/about' },
{ text: 'Hakkımızda', href: '/hakkimizda' },
]}
image={{
src: '~/assets/images/2024/12/ARC_2024_bayrak_logo-Large-1-1024x1024.png',
@@ -37,8 +37,9 @@ const metadata = {
}}
>
<Fragment slot="title">
<span class="text-accent dark:text-white">Amatör Radyocular Derneği</span>
<span class="text-accent dark:text-white">📡 Amatör Radyocular Derneği</span>
<span class="hidden xl:inline"> (ARC)</span>
<span class="block text-sm text-gray-600 dark:text-gray-300 mt-2">YM1KTC • 73 QRT</span>
</Fragment>
<Fragment slot="subtitle">
@@ -54,48 +55,58 @@ const metadata = {
<!-- Note Widget ******************* -->
<Note
title="Misyonumuz:"
description="Amatör telsizciliği yaygınlaştırmak, eğitim vermek ve teknik projeler geliştirmek"
title="📻 CQ CQ CQ - Misyonumuz:"
description="Amatör telsizciliği yaygınlaştırmak, eğitim vermek ve teknik projeler geliştirmek • 73 de YM1KTC"
/>
<!-- Features Widget *************** -->
<Features
id="features"
tagline="Hizmetlerimiz"
title="ARC ile Neler Yapabilirsiniz"
subtitle="Amatör radyocular derneği olarak sunduğumuz hizmetler ve faaliyet alanlarımız hakkında bilgi edinebilirsiniz."
tagline="📡 Hizmetlerimiz"
title="QSL - ARC ile Neler Yapabilirsiniz"
subtitle="Amatör radyocular derneği olarak sunduğumuz hizmetler ve faaliyet alanlarımız hakkında bilgi edinebilirsiniz. 73!"
items={[
{
title: 'Amatör Telsiz Eğitimi',
title: '📚 Amatör Telsiz Eğitimi',
description:
'Amatör telsizciliğe yeni başlayanlar için temel eğitim programları ve ileri seviye teknik kurslar düzenliyoruz.',
icon: 'tabler:school',
},
{
title: 'Lisans Sınavı Hazırlığı',
title: '📋 Lisans Sınavı Hazırlığı',
description:
'Amatör telsiz lisans sınavlarına hazırlık kursları ve deneme sınavları ile üyelerimizi destekliyoruz.',
icon: 'tabler:certificate',
callToAction: {
text: 'Sınav Sitesine Git',
href: 'https://sinav.radio.org.tr/',
target: '_blank',
},
},
{
title: 'Röle ve Beacon İşletmeciliği',
title: '📡 Röle ve Beacon İşletmeciliği',
description:
'VHF/UHF röle sistemi ve beacon altyapıları kurarak amatör radyocuların haberleşmesini kolaylaştırıyoruz.',
icon: 'tabler:antenna',
},
{
title: 'Acil Haberleşme',
description: 'Acil durumlarda güvenilir haberleşme sistemleri geliştiriyoruz.',
title: '🌐 Akıllı İletişim',
description: 'Modern ve yenilikçi iletişim çözümleri geliştiriyoruz.',
icon: 'tabler:phone-call',
callToAction: {
text: 'DMR Editor',
href: 'https://dmr.radio.org.tr/',
target: '_blank',
},
},
{
title: 'Teknik Projeler',
title: '⚙️ Teknik Projeler',
description: 'Amatör radyo teknolojileri üzerine araştırma ve geliştirme projeleri yürütüyoruz.',
icon: 'tabler:settings',
},
{
title: 'Etkinlik ve Yarışmalar',
title: '🏆 Etkinlik ve Yarışmalar',
description: 'Amatör radyocular arası bağları güçlendirmek için yarışmalar ve sosyal etkinlikler düzenliyoruz.',
icon: 'tabler:trophy',
},
@@ -106,20 +117,20 @@ const metadata = {
<Content
isReversed
tagline="Hakkımızda"
title="ARC'nin Temelleri: Gelişim ve İşbirliği!"
tagline="📻 Hakkımızda"
title="ARC'nin Temelleri: QSO Gelişim ve İşbirliği!"
items={[
{
title: '31 Mayıs 2024 tarihinde kuruldu',
title: '📅 31 Mayıs 2024 tarihinde kuruldu',
description:
'İstanbul merkezli derneğimiz, amatör telsizciliği yaygınlaştırmak amacıyla modern bir yaklaşımla kurulmuştur.',
},
{
title: 'YM1KTC çağrı işareti',
title: '📻 YM1KTC çağrı işareti',
description: 'Derneğimizin resmi çağrı işareti ile tüm amatör radyo faaliyetlerimizi sürdürmekteyiz.',
},
{
title: 'Geniş üyelik ağı',
title: '🌐 Geniş üyelik ağı',
description: 'Türkiye genelinde amatör radyocularımızı bir araya getirerek güçlü bir topluluk oluşturmaktayız.',
},
]}
@@ -132,7 +143,7 @@ const metadata = {
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">
Modern temeller üzerine kurulan derneğimiz
📡 Modern temeller üzerine kurulan derneğimiz
</h3>
Amatör radyo dünyasında öncü bir yaklaşım benimsiyor, teknoloji ve geleneksel değerleri harmanlıyoruz.
</Fragment>
@@ -145,7 +156,7 @@ const metadata = {
<!-- HighlightedPosts Widget ******* -->
<BlogLatestPosts
title="Blog'umuzda Daha Fazla İçerik Keşfedin"
title="📖 Blog'umuzda Daha Fazla İçerik Keşfedin"
information={`Blog'umuzda amatör telsizciliğe dair güncel bilgiler, teknik makaleler ve eğitim içerikleri bulabilirsiniz.
Her yeni makale, amatör radyo konusunda uzmanlaşmanız için önemli bir adım olacaktır.
Amatör radyo dünyasındaki gelişmeleri takip etmek için blog'umuzu ziyaret edin.
@@ -155,9 +166,9 @@ const metadata = {
<!-- FAQs Widget ******************* -->
<FAQs
title="Sıkça Sorulan Sorular"
title="Sıkça Sorulan Sorular"
subtitle="ARC hakkında merak ettikleriniz ve amatör telsizciliği konusunda sık sorulan sorular ve cevapları."
tagline="SSS"
tagline="🔍 SSS"
classes={{ container: 'max-w-6xl' }}
items={[
{
@@ -206,20 +217,20 @@ const metadata = {
{
variant: 'primary',
text: 'İletişim',
href: '/contact',
href: '/iletisim',
icon: 'tabler:mail',
},
]}
>
<Fragment slot="title">
Amatör Radyocular<br class="block sm:hidden" /><span class="sm:whitespace-nowrap"> Derneği</span>
📡 Amatör Radyocular<br class="block sm:hidden" /><span class="sm:whitespace-nowrap"> Derneği</span>
</Fragment>
<Fragment slot="subtitle">
Amatör radyo dünyasında yerinizi alın ve bizimle birlikte büyüyen toplulukta yer alın. <br
class="hidden md:inline"
/>
Bizimle iletişime geçin ve amatör radyo yolculuğunuza başlayın!
Bizimle iletişime geçin ve amatör radyo yolculuğunuza başlayın! 73 de YM1KTC
</Fragment>
</CallToAction>
</Layout>
+93
View File
@@ -0,0 +1,93 @@
---
import Layout from '~/layouts/PageLayout.astro';
import { fetchPosts } from '~/utils/blog';
import { CATEGORY_BASE } from '~/utils/permalinks';
export const prerender = true;
const posts = await fetchPosts();
// Get all categories and count posts for each
const categoriesMap = new Map();
posts.forEach(post => {
if (post.category) {
const categorySlug = post.category.slug;
if (categoriesMap.has(categorySlug)) {
categoriesMap.get(categorySlug).count += 1;
} else {
categoriesMap.set(categorySlug, {
title: post.category.title,
slug: categorySlug,
count: 1
});
}
}
});
// Sort categories by count (descending) then by title
const categories = Array.from(categoriesMap.values()).sort((a, b) => {
if (b.count !== a.count) {
return b.count - a.count;
}
return a.title.localeCompare(b.title, 'tr');
});
const metadata = {
title: '📻 Kategoriler',
description: 'Amatör radyo blog kategorilerini görüntüleyin - 73 de YM1KTC',
robots: {
index: true,
follow: true,
},
};
---
<Layout metadata={metadata}>
<section class="px-4 md:px-6 py-12 sm:py-16 lg:py-20 mx-auto max-w-4xl">
<div class="mb-8 md:mb-16 text-center">
<h1 class="text-3xl md:text-4xl font-bold leading-tighter tracking-tighter mb-4 font-heading">
📻 Kategoriler
</h1>
<p class="text-muted text-lg">
📡 Amatör radyo blog yazılarımızı kategorilere göre keşfedin - QSL!
</p>
</div>
<div class="grid gap-6 md:gap-8">
{categories.map((category) => (
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-center p-6 bg-white dark:bg-slate-900 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 hover:shadow-xl transition-shadow duration-200">
<div class="mb-4 sm:mb-0">
<h2 class="text-xl font-semibold text-gray-900 dark:text-white mb-2">
<a
href={`/${CATEGORY_BASE}/${category.slug}`}
class="hover:text-primary-600 dark:hover:text-primary-400 transition-colors duration-200"
>
{category.title}
</a>
</h2>
<p class="text-muted text-sm">
{category.count} {category.count === 1 ? 'yazı' : 'yazı'}
</p>
</div>
<div class="flex items-center">
<a
href={`/${CATEGORY_BASE}/${category.slug}`}
class="inline-flex items-center px-4 py-2 text-sm font-medium text-white bg-primary-600 rounded-md hover:bg-primary-700 transition-colors duration-200"
>
📝 Yazıları Görüntüle
<svg class="w-4 h-4 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
</svg>
</a>
</div>
</div>
))}
</div>
{categories.length === 0 && (
<div class="text-center py-12">
<p class="text-muted text-lg">📻 Henüz hiç kategori bulunmamaktadır. QRT!</p>
</div>
)}
</section>
</Layout>
+48
View File
@@ -0,0 +1,48 @@
---
title: 'Kullanım Şartları'
layout: '~/layouts/MarkdownLayout.astro'
---
_Son güncelleme_: 6 Ocak 2023
## Kullanım Şartları
Bu web sitesini kullanarak aşağıdaki şartları kabul etmiş olursunuz.
### Genel Kullanım
- Web sitesi eğitim ve bilgilendirme amaçlıdır
- İçerik telif hakları ile korunmaktadır
- Ticari olmayan amaçlarla kullanılabilir
- Kaynak göstermek şartıyla paylaşılabilir
### Amatör Radio Lisans Bilgileri
- Sınavlar ve eğitim materyalleri güncel düzenlemelere göre hazırlanır
- Lisans başvuru süreçleri resmi kurumlar tarafından yürütülür
- Dernek sadece eğitim ve danışmanlık hizmeti verir
### Sorumluluk
- Teknik bilgiler referans amaçlıdır
- Uygulamalar kişisel sorumluluktadır
- Güvenlik önlemlerine uyulmalıdır
- Yasal düzenlemelere uyum gereklidir
### Etik Kurallar
- Amatör radio etik kurallarına uyulmalıdır
- Zararlı girişimde bulunulmamalıdır
- Diğer kullanıcılara saygı gösterilmelidir
- Doğru bilgi paylaşımı önemlidir
### Değişiklikler
Bu şartlar gerektiğinde güncellenebilir. Güncel sürüm web sitesinde yayınlanır.
### İletişim
Sorularınız için:
- E-posta: bilgi@radio.org.tr
- Telefon: +90 510 220 50 24
- Adres: Beyoğlu, İstanbul
-244
View File
@@ -1,244 +0,0 @@
---
import Layout from '~/layouts/PageLayout.astro';
import HeroText from '~/components/widgets/HeroText.astro';
import Prices from '~/components/widgets/Pricing.astro';
import FAQs from '~/components/widgets/FAQs.astro';
import Steps from '~/components/widgets/Steps.astro';
import Features3 from '~/components/widgets/Features3.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
const metadata = {
title: 'Pricing',
};
---
<Layout metadata={metadata}>
<!-- HeroText Widget ******************* -->
<HeroText
tagline="Pricing"
title="Stellar Pricing for Every Journey"
subtitle="Choose the perfect plan that aligns with your cosmic goals."
/>
<!-- Pricing Widget ******************* -->
<Prices
title="Our prices"
subtitle="Only pay for what you need"
prices={[
{
title: 'basic',
subtitle: 'Optimal choice for personal use',
price: 29,
period: 'per month',
items: [
{
description: 'Etiam in libero, et volutpat',
},
{
description: 'Aenean ac nunc dolor tristique',
},
{
description: 'Cras scelerisque accumsan lib',
},
{
description: 'In hac habitasse',
},
],
callToAction: {
target: '_blank',
text: 'Get started',
href: '#',
},
},
{
title: 'standard',
subtitle: 'Optimal choice for small teams',
price: 69,
period: 'Per Month',
items: [
{
description: 'Proin vel laoreet',
},
{
description: 'Ut efficitur habitasse egestas',
},
{
description: 'Volutpat hac curabitur',
},
{
description: 'Pellentesque blandit ut nibh',
},
{
description: 'Donec fringilla sem',
},
],
callToAction: {
target: '_blank',
text: 'Get started',
href: '#',
},
hasRibbon: true,
ribbonTitle: 'popular',
},
{
title: 'premium',
subtitle: 'Optimal choice for companies',
price: 199,
period: 'Per Month',
items: [
{
description: 'Curabitur suscipit risus',
},
{
description: 'Aliquam habitasse malesuada',
},
{
description: 'Suspendisse sit amet blandit',
},
{
description: 'Suspendisse auctor blandit dui',
},
],
callToAction: {
target: '_blank',
text: 'Get started',
href: '#',
},
},
]}
/>
<!-- Features3 Widget ************** -->
<Features3
title="Price-related features"
subtitle="Discover the advantages of choosing our plans"
columns={2}
items={[
{
title: 'Tiered Pricing Plans',
description: 'Choose from a range of pricing plans designed to accommodate different budgets and requirements.',
icon: 'tabler:stairs',
},
{
title: 'Transparent Pricing',
description: 'Clearly displayed pricing details for each plan, with no hidden costs or unexpected charges.',
icon: 'tabler:flip-vertical',
},
{
title: 'Secure Payment Methods',
description: 'Secure payment gateways to protect your financial information during transactions.',
icon: 'tabler:shield-lock',
},
{
title: 'Instant Access',
description: `Immediate access to your chosen plan's features and templates upon subscription.`,
icon: 'tabler:accessible',
},
{
title: 'Upgrade Value',
description: 'Upgrade to higher-tier plans to unlock more features and benefits for an enhanced experience.',
icon: 'tabler:chevrons-up',
},
{
title: '24H support',
description: 'Questions answered via live chat, email or phone, every calendar day.',
icon: 'tabler:headset',
},
]}
classes={{ container: 'max-w-5xl' }}
/>
<!-- Steps Widget ****************** -->
<Steps
title="A guided journey from plans to creativity"
tagline="simplified process"
isReversed={true}
items={[
{
title: 'Explore plans',
icon: 'tabler:number-1',
},
{
title: 'Select a plan',
icon: 'tabler:number-2',
},
{
title: 'Sign Up / Log In',
icon: 'tabler:number-3',
},
{
title: 'Review order',
icon: 'tabler:number-4',
},
{
title: 'Enter payment details',
icon: 'tabler:number-5',
},
{
title: 'Confirmation',
icon: 'tabler:number-6',
},
{
title: 'Download and start using the template(s)',
icon: 'tabler:number-7',
},
]}
image={{
src: 'https://images.unsplash.com/photo-1536816579748-4ecb3f03d72a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=987&q=80',
alt: 'Steps image',
}}
/>
<!-- FAQs Widget ******************* -->
<FAQs
title="Pricing FAQs"
subtitle="Choosing the right plan is important, and we're here to answer your questions. If you have queries about our pricing options, you're in the right place."
columns={1}
items={[
{
title: 'Do the plans come with customer support?',
description:
'Absolutely, all plans include access to our dedicated customer support to assist you with any queries or concerns.',
},
{
title: 'Is there a trial period for the different plans?',
description:
"Unfortunately, we don't offer trial periods for the plans. However, you can check out our demo section to preview the quality of our templates.",
},
{
title: 'Can I switch between plans?',
description:
'Certainly! You can easily upgrade or downgrade your plan, at any time, to find the one that best suits your evolving requirements.',
},
{
title: 'What payment methods do you accept?',
description:
'We accept major credit cards and online payment methods to ensure a convenient and secure transaction process.',
},
{
title: 'Are there any hidden fees beyond the displayed cost?',
description:
'No, the subscription cost covers all the features and templates listed under each plan. There are no hidden fees or extra charges.',
},
]}
/>
<!-- CallToAction Widget *********** -->
<CallToAction
title="Ready to boost your projects?"
subtitle="Join our community of satisfied customers who have transformed their work with our templates."
actions={[
{
variant: 'primary',
text: 'Get started now',
href: '/',
},
]}
/>
</Layout>
-185
View File
@@ -1,185 +0,0 @@
---
title: 'Privacy Policy'
layout: '~/layouts/MarkdownLayout.astro'
---
_Last updated_: January 06, 2023
This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.
We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy is just a Demo.
## Interpretation and Definitions
### Interpretation
The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.
### Definitions
For the purposes of this Privacy Policy:
- **Account** means a unique account created for You to access our Service or parts of our Service.
- **Company** (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to AstroWind LLC, 1 Cupertino, CA 95014.
- **Cookies** are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses.
- **Country** refers to: California, United States
- **Device** means any device that can access the Service such as a computer, a cellphone or a digital tablet.
- **Personal Data** is any information that relates to an identified or identifiable individual.
- **Service** refers to the Website.
- **Service Provider** means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.
- **Usage Data** refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).
- **Website** refers to AstroWind, accessible from [https://astrowind.vercel.app](https://astrowind.vercel.app)
- **You** means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.
## Collecting and Using Your Personal Data
### Types of Data Collected
#### Personal Data
While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:
- Usage Data
#### Usage Data
Usage Data is collected automatically when using the Service.
Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.
When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.
We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.
#### Tracking Technologies and Cookies
We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include:
- **Cookies or Browser Cookies.** A cookie is a small file placed on Your Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie is being sent. However, if You do not accept Cookies, You may not be able to use some parts of our Service. Unless you have adjusted Your browser setting so that it will refuse Cookies, our Service may use Cookies.
- **Web Beacons.** Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity).
Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser.
We use both Session and Persistent Cookies for the purposes set out below:
- **Necessary / Essential Cookies**
Type: Session Cookies
Administered by: Us
Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services.
- **Cookies Policy / Notice Acceptance Cookies**
Type: Persistent Cookies
Administered by: Us
Purpose: These Cookies identify if users have accepted the use of cookies on the Website.
- **Functionality Cookies**
Type: Persistent Cookies
Administered by: Us
Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website.
For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy.
## Use of Your Personal Data
The Company may use Personal Data for the following purposes:
- **To provide and maintain our Service**, including to monitor the usage of our Service.
- **To manage Your Account:** to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.
- **For the performance of a contract:** the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.
- **To contact You:** To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.
- **To provide You** with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.
- **To manage Your requests:** To attend and manage Your requests to Us.
- **For business transfers:** We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.
- **For other purposes**: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.
We may share Your personal information in the following situations:
- **With Service Providers:** We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You.
- **For business transfers:** We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company.
- **With Affiliates:** We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us.
- **With business partners:** We may share Your information with Our business partners to offer You certain products, services or promotions.
- **With other users:** when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside.
- **With Your consent**: We may disclose Your personal information for any other purpose with Your consent.
## Retention of Your Personal Data
The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.
## Transfer of Your Personal Data
Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.
Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.
The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.
## Delete Your Personal Data
You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.
Our Service may give You the ability to delete certain information about You from within the Service.
You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.
Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.
## Disclosure of Your Personal Data
### Business Transactions
If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.
#### Law enforcement
Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).
#### Other legal requirements
The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:
- Comply with a legal obligation
- Protect and defend the rights or property of the Company
- Prevent or investigate possible wrongdoing in connection with the Service
- Protect the personal safety of Users of the Service or the public
- Protect against legal liability
## Security of Your Personal Data
The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.
## Children's Privacy
Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.
If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.
## Links to Other Websites
Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.
We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
## Changes to this Privacy Policy
We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.
We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
## Contact Us
If you have any questions about this Privacy Policy, You can contact us:
- By email: somecoolemail@domain.com
-224
View File
@@ -1,224 +0,0 @@
---
import CallToAction from '~/components/widgets/CallToAction.astro';
import Content from '~/components/widgets/Content.astro';
import Features2 from '~/components/widgets/Features2.astro';
import Hero from '~/components/widgets/Hero.astro';
import Testimonials from '~/components/widgets/Testimonials.astro';
import Layout from '~/layouts/PageLayout.astro';
const metadata = {
title: 'Services',
};
---
<Layout metadata={metadata}>
<!-- Hero Widget ******************* -->
<Hero
tagline="Services"
title="Elevate your projects with our stunning templates"
subtitle="Explore our meticulously crafted templates tailored to various industries and purposes. From captivating presentations to functional website designs, we offer the tools you need to succeed."
actions={[{ variant: 'primary', target: '_blank', text: 'Start exploring', href: '/' }]}
image={{
src: 'https://images.unsplash.com/photo-1519389950473-47ba0277781c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1740&q=80',
alt: 'AstroWind Hero Image',
}}
/>
<!-- Features2 Widget ************** -->
<Features2
title="Explore our diverse templates"
subtitle="Discover our selection below to streamline and elevate your projects."
columns={3}
items={[
{
title: 'Educational',
description:
'By harmonizing instructional design and visual appeal, templates streamline content creation for varied materials, expediting development and cultivating engaging educational spaces.',
icon: 'tabler:school',
},
{
title: 'Interior Design',
description:
'Crafting functional, visually appealing spaces for residential and commercial use. Templates emphasize layout, colors, and furniture setups, offering a versatile toolkit for your design vision.',
icon: 'tabler:home-star',
},
{
title: 'Photography',
description: `Empowering photographers, our templates facilitate captivating storytelling. With a keen focus on layout, galleries, and typography, they cater to both professionals and enthusiasts.`,
icon: 'tabler:photo',
},
{
title: 'E-commerce',
description:
'Developing engaging online stores, our E-commerce templates ensure a dynamic presence to effectively showcase products. Ideal for startups or revamps.',
icon: 'tabler:shopping-cart',
},
{
title: 'Blog',
description:
'With attention to typography, these templates empower effective content presentation for writers at any stage, ensuring visually engaging and user-friendly blogs.',
icon: 'tabler:article',
},
{
title: 'Business',
description:
'Providing polished options for effective visual communication, these templates empower both startups and established companies for a professional brand presence.',
icon: 'tabler:building-store',
},
{
title: 'Branding',
description:
'Offering pre-designed elements for a consistent brand identity, including logos and marketing materials. Ideal for new ventures or revamps.',
icon: 'tabler:arrow-big-up-lines',
},
{
title: 'Medical',
description: `From presentations to patient forms, these tools enhance communication effectiveness for healthcare professionals. Ideal for medical practices and research pursuits.`,
icon: 'tabler:vaccine',
},
{
title: 'Fashion Design',
description:
'With attention to detail, customization, and contemporary design, they empower designers to showcase ideas cohesively. Ideal for all levels of designers.',
icon: 'tabler:tie',
},
]}
/>
<!-- Content Widget **************** -->
<Content
isReversed
items={[
{
title: 'High-Quality Designs',
description:
'Our templates feature top-tier designs that ensure a professional and polished appearance for your projects.',
icon: 'tabler:wand',
},
{
title: 'Customization Tools',
description:
'Tailor each template to your unique needs with user-friendly customization tools that let you personalize colors, fonts, and content.',
icon: 'tabler:settings',
},
{
title: 'Pre-Designed Elements',
description:
'Save time and effort with our ready-to-use elements, including graphics, icons, and layouts that enhance the visual appeal of your creations.',
icon: 'tabler:presentation',
},
{
title: 'Preview and Mockup Views',
description:
'Visualize the final outcome before making any changes using our preview and mockup views, ensuring your projects meet your expectations.',
icon: 'tabler:carousel-horizontal',
},
]}
image={{
src: 'https://images.unsplash.com/photo-1525909002-1b05e0c869d8?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=870&q=80',
alt: 'Features Image',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Main Features</h3>
</Fragment>
</Content>
<!-- Content Widget **************** -->
<Content
isAfterContent
items={[
{
title: 'Time Savings',
description:
'Streamline your workflow, enabling you to create stunning materials efficiently and allocate more time to your core tasks.',
icon: 'tabler:clock',
},
{
title: 'Professional Appearance',
description:
'Elevate your projects with the polished and sophisticated look that our templates provide, making a lasting impression on your audience.',
icon: 'tabler:school',
},
{
title: 'Cost-Efficiency',
description:
'Benefit from cost savings by avoiding the need for custom design work, as our templates offer professional-grade designs at a fraction of the cost.',
icon: 'tabler:coin',
},
{
title: 'Instant Download',
description:
'Enjoy immediate access to your chosen templates upon purchase, enabling you to begin working on your projects without delay.',
icon: 'tabler:file-download',
},
]}
image={{
src: 'https://images.unsplash.com/photo-1552664688-cf412ec27db2?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=774&q=80',
alt: 'Benefits Image',
}}
>
<Fragment slot="content">
<h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Benefits</h3>
</Fragment>
</Content>
<!-- Testimonials Widget *********** -->
<Testimonials
title="Words from real customers"
testimonials={[
{
testimonial: `The designs are not only visually appealing but also highly professional. The templates have saved me a significant amount of time while helping me make a lasting impression on my clients.`,
name: 'Emily Kennedy',
job: 'Front-end developer',
image: {
src: 'https://images.unsplash.com/photo-1618835962148-cf177563c6c0?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=930&q=80',
alt: 'Emily Kennedy Image',
},
},
{
testimonial: `It beautifully showcases my work, with its clean and elegant design that lets my photographs shine. Customization was a breeze, even for a non-tech person like me. The result is a professional and immersive portfolio that's garnered numerous compliments.`,
name: 'Sarah Hansen',
job: 'Photographer',
image: {
src: 'https://images.unsplash.com/photo-1561406636-b80293969660?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=774&q=80',
alt: 'Sarah Hansen Image',
},
},
{
testimonial: `I discovered these templates and I'm impressed by their variety and quality. They've helped me establish a consistent brand image across my marketing and social platforms, elevating my business's overall appearance.`,
name: 'Mark Wilkinson',
job: 'Small business owner',
image: {
src: 'https://images.unsplash.com/photo-1545167622-3a6ac756afa4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=824&q=80',
alt: 'Mark Wilkinson Image',
},
},
]}
callToAction={{
target: '_blank',
text: 'More testimonials...',
href: 'https://github.com/onwidget/astrowind',
icon: 'tabler:chevron-right',
}}
/>
<!-- CallToAction Widget *********** -->
<CallToAction
actions={[
{
variant: 'primary',
text: 'Start exploring',
href: '/',
},
]}
title="Dive into our template collection"
subtitle="Whether you're in business, design, or education, our templates are here to elevate your projects."
/>
</Layout>
-120
View File
@@ -1,120 +0,0 @@
---
title: 'Terms and Conditions'
layout: '~/layouts/MarkdownLayout.astro'
---
_Last updated_: January 06, 2023
Please read these terms and conditions carefully before using Our Service.
## Interpretation and Definitions
### Interpretation
The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.
### Definitions
For the purposes of these Terms and Conditions:
- **Affiliate** means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.
- **Country** refers to: California, United States
- **Company** (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to AstroWind LLC, 1 Cupertino, CA 95014.
- **Device** means any device that can access the Service such as a computer, a cellphone or a digital tablet.
- **Service** refers to the Website.
- **Terms and Conditions** (also referred as "Terms") mean these Terms and Conditions that form the entire agreement between You and the Company regarding the use of the Service. This Terms and Conditions agreement is a Demo.
- **Third-party Social Media Service** means any services or content (including data, information, products or services) provided by a third-party that may be displayed, included or made available by the Service.
- **Website** refers to AstroWind, accessible from [https://astrowind.vercel.app](https://astrowind.vercel.app)
- **You** means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.
## Acknowledgment
These are the Terms and Conditions governing the use of this Service and the agreement that operates between You and the Company. These Terms and Conditions set out the rights and obligations of all users regarding the use of the Service.
Your access to and use of the Service is conditioned on Your acceptance of and compliance with these Terms and Conditions. These Terms and Conditions apply to all visitors, users and others who access or use the Service.
By accessing or using the Service You agree to be bound by these Terms and Conditions. If You disagree with any part of these Terms and Conditions then You may not access the Service.
You represent that you are over the age of 18\. The Company does not permit those under 18 to use the Service.
Your access to and use of the Service is also conditioned on Your acceptance of and compliance with the Privacy Policy of the Company. Our Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your personal information when You use the Application or the Website and tells You about Your privacy rights and how the law protects You. Please read Our Privacy Policy carefully before using Our Service.
## Links to Other Websites
Our Service may contain links to third-party web sites or services that are not owned or controlled by the Company.
The Company has no control over, and assumes no responsibility for, the content, privacy policies, or practices of any third party web sites or services. You further acknowledge and agree that the Company shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with the use of or reliance on any such content, goods or services available on or through any such web sites or services.
We strongly advise You to read the terms and conditions and privacy policies of any third-party web sites or services that You visit.
## Termination
We may terminate or suspend Your access immediately, without prior notice or liability, for any reason whatsoever, including without limitation if You breach these Terms and Conditions.
Upon termination, Your right to use the Service will cease immediately.
## Limitation of Liability
Notwithstanding any damages that You might incur, the entire liability of the Company and any of its suppliers under any provision of this Terms and Your exclusive remedy for all of the foregoing shall be limited to the amount actually paid by You through the Service or 100 USD if You haven't purchased anything through the Service.
To the maximum extent permitted by applicable law, in no event shall the Company or its suppliers be liable for any special, incidental, indirect, or consequential damages whatsoever (including, but not limited to, damages for loss of profits, loss of data or other information, for business interruption, for personal injury, loss of privacy arising out of or in any way related to the use of or inability to use the Service, third-party software and/or third-party hardware used with the Service, or otherwise in connection with any provision of this Terms), even if the Company or any supplier has been advised of the possibility of such damages and even if the remedy fails of its essential purpose.
Some states do not allow the exclusion of implied warranties or limitation of liability for incidental or consequential damages, which means that some of the above limitations may not apply. In these states, each party's liability will be limited to the greatest extent permitted by law.
## "AS IS" and "AS AVAILABLE" Disclaimer
The Service is provided to You "AS IS" and "AS AVAILABLE" and with all faults and defects without warranty of any kind. To the maximum extent permitted under applicable law, the Company, on its own behalf and on behalf of its Affiliates and its and their respective licensors and service providers, expressly disclaims all warranties, whether express, implied, statutory or otherwise, with respect to the Service, including all implied warranties of merchantability, fitness for a particular purpose, title and non-infringement, and warranties that may arise out of course of dealing, course of performance, usage or trade practice. Without limitation to the foregoing, the Company provides no warranty or undertaking, and makes no representation of any kind that the Service will meet Your requirements, achieve any intended results, be compatible or work with any other software, applications, systems or services, operate without interruption, meet any performance or reliability standards or be error free or that any errors or defects can or will be corrected.
Without limiting the foregoing, neither the Company nor any of the company's provider makes any representation or warranty of any kind, express or implied: (i) as to the operation or availability of the Service, or the information, content, and materials or products included thereon; (ii) that the Service will be uninterrupted or error-free; (iii) as to the accuracy, reliability, or currency of any information or content provided through the Service; or (iv) that the Service, its servers, the content, or e-mails sent from or on behalf of the Company are free of viruses, scripts, trojan horses, worms, malware, timebombs or other harmful components.
Some jurisdictions do not allow the exclusion of certain types of warranties or limitations on applicable statutory rights of a consumer, so some or all of the above exclusions and limitations may not apply to You. But in such a case the exclusions and limitations set forth in this section shall be applied to the greatest extent enforceable under applicable law.
## Governing Law
The laws of the Country, excluding its conflicts of law rules, shall govern this Terms and Your use of the Service. Your use of the Application may also be subject to other local, state, national, or international laws.
## Disputes Resolution
If You have any concern or dispute about the Service, You agree to first try to resolve the dispute informally by contacting the Company.
## For European Union (EU) Users
If You are a European Union consumer, you will benefit from any mandatory provisions of the law of the country in which you are resident in.
## United States Legal Compliance
You represent and warrant that (i) You are not located in a country that is subject to the United States government embargo, or that has been designated by the United States government as a "terrorist supporting" country, and (ii) You are not listed on any United States government list of prohibited or restricted parties.
## Severability and Waiver
### Severability
If any provision of these Terms is held to be unenforceable or invalid, such provision will be changed and interpreted to accomplish the objectives of such provision to the greatest extent possible under applicable law and the remaining provisions will continue in full force and effect.
### Waiver
Except as provided herein, the failure to exercise a right or to require performance of an obligation under these Terms shall not effect a party's ability to exercise such right or require such performance at any time thereafter nor shall the waiver of a breach constitute a waiver of any subsequent breach.
## Translation Interpretation
These Terms and Conditions may have been translated if We have made them available to You on our Service. You agree that the original English text shall prevail in the case of a dispute.
## Changes to These Terms and Conditions
We reserve the right, at Our sole discretion, to modify or replace these Terms at any time. If a revision is material We will make reasonable efforts to provide at least 30 days' notice prior to any new terms taking effect. What constitutes a material change will be determined at Our sole discretion.
By continuing to access or use Our Service after those revisions become effective, You agree to be bound by the revised terms. If You do not agree to the new terms, in whole or in part, please stop using the website and the Service.
## Contact Us
If you have any questions about these Terms and Conditions, You can contact us:
- By email: somecoolemail@domain.com