Ana içeriğe geç

Tema Ekleme

Bu bölümde, projenize yeni bir tema nasıl ekleyebileceğinizi öğreneceksiniz.

Tema Dosyası Oluşturma

İlk adım olarak, temanızı tanımlayan bir dosya oluşturmanız gerekiyor.

// themes klasöründe yeni bir tema dosyası oluşturun
// örnek: themes/customTheme.js
export const customTheme = {
// Ana renkler
colors: {
primary: '#3366FF',
secondary: '#FF6633',
background: '#FFFFFF',
text: '#333333',
},
// Yazı tipleri
fonts: {
body: 'Roboto, sans-serif',
heading: 'Montserrat, sans-serif',
},
// Boşluk ölçüleri
spacing: {
small: '8px',
medium: '16px',
large: '24px',
}
};

Tema Kayıt İşlemi

Oluşturduğunuz temayı sistemde kullanılabilir hale getirmek için kaydetmeniz gerekiyor.

// Temanızı tema yöneticisine kaydedin
// örnek: src/themeRegistry.js
import { themeRegistry } from './core/themes';
import { customTheme } from './themes/customTheme';

// Temayı sisteme kaydetme
themeRegistry.register('custom', customTheme);

Tema Kullanımı

Kaydedilen temayı uygulamanızda kullanmak için aşağıdaki adımları izleyebilirsiniz.

// Temanızı uygulamanızda kullanın
// örnek: src/App.jsx
import { ThemeProvider } from 'styled-components';
import { themeRegistry } from './core/themes';

function App() {
// Aktif temayı almak
const currentTheme = themeRegistry.getTheme('custom');

return (
<ThemeProvider theme={currentTheme}>
{/* Uygulama içeriği */}
</ThemeProvider>
);
}

Çoklu Tema Desteği

Uygulamanızda birden fazla tema desteklemek istiyorsanız, her temayı ayrı dosyalarda tanımlayabilir ve tema yöneticisine kaydedebilirsiniz.

// Birden fazla tema tanımlama
// lightTheme.js
export const lightTheme = {
colors: {
primary: '#3366FF',
background: '#FFFFFF',
text: '#333333',
},
// Diğer tema özellikleri...
};

// darkTheme.js
export const darkTheme = {
colors: {
primary: '#6699FF',
background: '#333333',
text: '#FFFFFF',
},
// Diğer tema özellikleri...
};

Ardından her iki temayı da kaydedin:

// Temaları kaydetme
themeRegistry.register('light', lightTheme);
themeRegistry.register('dark', darkTheme);

Varsayılan Tema Belirleme

Sisteminizde varsayılan olarak kullanılacak temayı belirleyebilirsiniz:

// Varsayılan temayı belirleme
themeRegistry.setDefaultTheme('light');

// Varsayılan temayı alma
const defaultTheme = themeRegistry.getDefaultTheme();

İleri Düzey Yapılandırma

Daha karmaşık tema yapılandırmaları için tema fabrikası (theme factory) yaklaşımını kullanabilirsiniz:

// Tema fabrikası oluşturma
// themeFactory.js
export const createTheme = (options) => {
// Varsayılan değerler
const defaultOptions = {
primaryColor: '#3366FF',
isDark: false,
borderRadius: '4px',
};

// Seçenekleri birleştirme
const config = { ...defaultOptions, ...options };

// Tema oluşturma
return {
colors: {
primary: config.primaryColor,
background: config.isDark ? '#333333' : '#FFFFFF',
text: config.isDark ? '#FFFFFF' : '#333333',
},
borders: {
radius: config.borderRadius,
},
// Diğer tema özellikleri...
};
};

Bu fabrika fonksiyonunu kullanarak farklı temalar oluşturabilirsiniz:

// Fabrikayı kullanarak temalar oluşturma
const blueTheme = createTheme({ primaryColor: '#3366FF' });
const darkRedTheme = createTheme({ primaryColor: '#FF3366', isDark: true });

// Temaları kaydetme
themeRegistry.register('blue', blueTheme);
themeRegistry.register('darkRed', darkRedTheme);