<p>Yalnızca, paylaşılan dosyadaki <code>@source</code> yollarının her iki panel dizinini kapsadığından emin olun, çünkü tek bir üretilmiş tema yalnızca oluşturulduğu panel için kapsama sahiptir.</p>

<h2>
    <a name="reading-filaments-hook-classes" href="#reading-filaments-hook-classes"></a>
    Filament'in Hook Sınıflarını Okuma
</h2>

<p>Renklerin ötesine geçip özelleştirmeye başladığınızda, <a href="https://filamentphp.com/docs/5.x/styling/css-hooks?ref=filamentmastery.com#common-hook-class-abbreviations" target="_blank" rel="noopener noreferrer">Filament'in CSS sınıflarını</a> hedefleyeceksiniz. Bunlar, aşağıdaki yan menü örneği ve arayüzün her yerinde kullanılanlardır. Ayrıca tutarlı bir adlandırma kuralına sahiptirler:</p>

<ul>
    <li><code>fi</code> "Filament" için kısaltmadır.</li>
    <li><code>fi-ac</code> Aksiyonlar paketinden kullanılan sınıflardır.</li>
    <li><code>fi-fo</code> Formlar paketinden kullanılan sınıflardır.</li>
    <li><code>fi-in</code> Bilgi listeleri paketinden kullanılan sınıflardır.</li>
    <li><code>fi-no</code> Bildirimler paketinden kullanılan sınıflardır.</li>
    <li><code>fi-sc</code> Şema paketinden kullanılan sınıflardır.</li>
    <li><code>fi-ta</code> Tablolar paketinden kullanılan sınıflardır.</li>
    <li><code>fi-wi</code> Widget’lar paketinden kullanılan sınıflardır.</li>
    <li><code>btn</code> "buton" için kısaltmadır.</li>
    <li><code>col</code> "sütun" için kısaltmadır.</li>
    <li><code>ctn</code> "kapsayıcı" için kısaltmadır.</li>
    <li><code>wrp</code> "saracak" için kısaltmadır.</li>
</ul>

<p>Bu deseni bildiğinizde, hook sınıf adları her zaman geliştirme kaynağını karıştırmadan daha anlaşılır hale gelir.</p>

<p><strong>Hook sınıflarını pratikte bulmak:</strong> Adlandırma kuralı, bulduğunuz bir sınıfın ne anlama geldiğini gösterir, ancak öncelikle bulmanız gerekir. En hızlı yol:</p>

<ol>
    <li>Özelleştirmek istediğiniz panelde tarayıcı geliştirici araçlarınızı açın.</li>
    <li>Hedeflemek istediğiniz öğeyi inceleyin.</li>
    <li>Denetleyicide <code>fi-</code> ile başlayan sınıfları arayın.</li>
    <li>Bu sınıfı tema CSS’inizde kullanın.</li>
</ol>

<p>Bu, yalnızca adlandırma kuralına dayanarak tahmin yapmak yerine, tam olarak görmekte olduğunuz öğeyi hedeflemenin en güvenilir yoludur.</p>

<h2>
    <a name="customizing-your-theme" href="#customizing-your-theme"></a>
    Temanızı Özelleştirme
</h2>

<p>Tema kaydedildikten sonra, artık kendi stillerinizi doğrudan <code>theme.css</code> dosyasına ekleyebilirsiniz. Filament'in hook sınıfları, belirli arayüz parçalarını hedeflemenize olanak tanıyan <a href="https://filamentphp.com/docs/5.x/styling/overview?ref=filamentmastery.com" target="_blank" rel="noopener noreferrer">Filament belgelerinde</a> belgelenmiştir.</p>

<p>İşte yan menüyü özelleştirme örneği, orijinal v3 kılavuzunda aynı fikre dayanarak, yeni dosya yapısına uyarlama:<br/></p>

<div class="highlight js-code-highlight">
    <pre class="highlight css"><code><span class="k">@import</span> <span class="s2">'../../../../vendor/filament/filament/resources/css/theme.css'</span><span class="p">;</span>

@source ‘../../../../app/Filament/*/;
@source ‘../../../../resources/views/filament/*/;

.fi-sidebar {
@apply !bg-gray-500;

<span class="err">.fi-sidebar-header</span> <span class="err">{</span>
    <span class="err">.fi-icon-btn-icon</span> <span class="err">{</span>
        <span class="err">@apply</span> <span class="err">text-primary-500;</span>
    <span class="p">}</span>
<span class="err">}</span>

<span class="nc">.fi-sidebar-group-label</span><span class="o">,</span> <span class="nc">.fi-icon-btn-icon</span><span class="o">,</span> <span class="nc">.fi-sidebar-group-icon</span><span class="o">,</span> <span class="nc">.fi-sidebar-item-icon</span><span class="o">,</span> <span class="nc">.fi-sidebar-item-button</span><span class="o">,</span> <span class="nc">.fi-sidebar-item-label</span> <span class="p">{</span>
    <span class="err">@apply</span> <span class="err">text-white;</span>
<span class="p">}</span>

<span class="nc">.fi-sidebar-item-active</span> <span class="p">{</span>
    <span class="err">.fi-sidebar-item-button</span> <span class="err">{</span>
        <span class="err">@apply</span> <span class="err">bg-primary-500;</span>
    <span class="p">}</span>
<span class="err">}</span>

<span class="nc">.fi-sidebar-item</span><span class="o">,</span> <span class="nc">.fi-sidebar-item-button</span> <span class="p">{</span>
    <span class="err">:hover</span> <span class="err">{</span>
        <span class="err">@apply</span> <span class="py">hover</span><span class="p">:</span><span class="n">bg-primary-500</span><span class="p">;</span>
    <span class="p">}</span>
<span class="err">}</span>

<span class="nc">.fi-icon-btn</span> <span class="p">{</span>
    <span class="err">:hover</span> <span class="err">{</span>
        <span class="err">@apply</span> <span class="py">hover</span><span class="p">:</span><span class="n">text-primary-500</span><span class="p">;</span>
    <span class="p">}</span>
<span class="err">}</span>

<span class="nc">.fi-sidebar-nav-groups</span> <span class="p">{</span>
    <span class="err">@apply</span> <span class="err">gap-y-0;</span>
<span class="p">}</span>

<p><code>@apply</code> sözdizimi ve hook sınıflarının kendisi değişmedi. Değişen, onların etrafındaki tüm yapı: temanın oluşturulma şekli, Tailwind’in dosyalarınızı tarama şekli ve derleme yapılandırması.</p>

<h3>
    <a name="using-css-variables-for-reusable-values" href="#using-css-variables-for-reusable-values"></a>
    Tekrar kullanılabilir değerler için CSS değişkenlerini kullanma
</h3>

<p>Birden fazla kuralda aynı renk veya değeri tekrar tekrar buluyorsanız, <code>@layer base</code> içinde bir CSS değişkeni tanımlamak, işleri tutarlı hale getirir ve ileride güncellemeyi kolaylaştırır:<br/></p>

<div class="highlight js-code-highlight">
    <pre class="highlight css"><code><span class="k">@layer</span> <span class="n">base</span> <span class="p">{</span>
<span class="nd">:root</span> <span class="p">{</span>
    <span class="py">--sidebar-bg</span><span class="p">:</span> <span class="m">#1f2937</span><span class="p">;</span>
<span class="p">}</span>

<span class="nd">:root</span><span class="o">[</span><span class="nt">class</span><span class="o">~=</span><span class="s1">"dark"</span><span class="o">]</span> <span class="p">{</span>
    <span class="py">--sidebar-bg</span><span class="p">:</span> <span class="m">#111827</span><span class="p">;</span>
<span class="p">}</span>

}

<p>Daha sonra bunu stillerinizde doğrudan ifade edebilirsiniz:<br/></p>

<div class="highlight js-code-highlight">
    <pre class="highlight css"><code><span class="nc">.fi-sidebar</span> <span class="p">{</span>
<span class="nl">background</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--sidebar-bg</span><span class="p">);</span>

}

<p>Bu, birçok yerde tekrar kullanılacak değerler için veya kuralları çoğaltmadan açık ve koyu mod arasında geçmek istediğinizde özellikle faydalıdır.</p>

<p>İşiniz bittiğinde, <code>npm run build</code> çalıştırarak özel temanızı yayına alabilirsiniz.</p>

<h2>
    <a name="common-mistakes-when-customizing-filament-themes" href="#common-mistakes-when-customizing-filament-themes"></a>
    Filament temalarını özelleştirirken yapılan yaygın hatalar
</h2>

<p>Filament temalarıyla ilk kez çalışmaya başlayan geliştiriciler arasında sıkça karşılaşılan bazı problemler var.</p>

<p><strong>Yalnızca <code>-&gt;colors()</code> yeterliyken tema oluşturma.</strong> Eğer tek amacınız temel rengi, butonları ve yan menü vurgularını değiştirmekse, <code>-&gt;colors()</code> panel sağlayıcısında bunu yapar ve herhangi bir dosya üretmenize gerek kalmaz. Yalnızca yapısal değişiklikler, hedefsel arayüz öğeleri veya CSS değişkenlerini ince ayar yapmak için özel bir tema gereklidir. Gereksiz yere bir tema dosyası oluşturarak yalnızca bakım gerektiren ek bir dosya ve derleme aşaması katmanısınız.</p>

<p><strong>Özel Blade dizinlerini <code>@source</code>'a eklemeyi unutmak.</strong>  Oluşturulan tema varsayılan olarak yalnızca Filament'in kendi dizinlerini tarar. <code>app/Filament</code> dışındaki özel Blade bileşenlerinde, Livewire bileşenlerinde veya görünümlerde kullanılan herhangi bir Tailwind sınıfı, bu yolları açıkça eklemediğiniz sürece tanınmaz. Tailwind, tespit edilmeden sınıfları sessizce temizler ve sorun ancak üretimde stillerin rastgele çalışmadığını gördüğünüzde ortaya çıkar.</p>

<p><strong>Filament'in hook sınıflarını değil, iç sınıfları stillendirmek.</strong>  Filament'in hook sınıfları, CSS özelleştirmesi için tasarlanmış yüzeydir. <code>fi-</code> ön ekine sahip olmayan sınıfları stillendirmeniz, sürümlerin arasında değişebilecek iç uygulama ayrıntılarını hedeflemektir. Filament'in belgeleri, kullanmak istediğiniz bir hook sınıfı yoksa, bunu eklemek için bir pull request açmanızı önerir; bunun yerine iç sınıfları hedeflemekten kaçınmalısınız.</p>

<p><strong>Aşırı düzeltme.</strong>  Bir temaya eklenen daha fazla CSS düzeltmesi, güncellemeleri zorlaştırır. Filament yeni bir sürüm sunduğunda, arayüzde yapılan herhangi bir yapısal değişiklik eski işaretlemeye karşı yazılmış kuralları bozabilir. Renk tokenları, CSS değişkenleri ve hedeflenmiş hook sınıfı düzeltmeleri yazmaktan kaçının; büyük bölümleri yeniden yazmak yerine, bir tema Filament'i bir markaya uyarlamalıdır, onu tamamen farklı bir uygulamaya dönüştürmemelidir.</p>

<p><strong>Ve elbette, doğrudan vendor dosyalarını düzenlemek.</strong>  <code>vendor/filament</code> içinde yapılan herhangi bir değişiklik, <code>composer update</code> çalıştırıldığında üzerine yazılacaktır. Filament'in varsayılan temasında bir şey değiştirilmesi gerekiyorsa, doğru yer, element hedeflemek için hook sınıflarını kullanarak özel <code>theme.css</code> dosyasıdır. Vendor dizini asla doğru yer değildir.</p>

<h3>
    <a name="dont-want-to-build-a-theme-from-scratch" href="#dont-want-to-build-a-theme-from-scratch"></a>
    Baştan bir tema oluşturmak istemiyor musunuz?
</h3>

<p>Özel bir Filament teması oluşturmak istemiyorsanız, Filafly, panelinize hemen yerleştirmek için hazır premium temalar ve eklentiler sunar.</p>

<p><strong>MASTERY15</strong> kodunu kullanarak <strong>%15 indirim kazanabilirsiniz</strong>.</p>

<p><a href="https://filafly.com/?utm_source=filamentmastery&amp;utm_medium=affiliate&amp;utm_campaign=affiliates&amp;ref=filamentmastery" target="_blank" rel="noopener noreferrer">Filafly temalarını keşfedin →</a></p>

<p>Kaynak: <a href="https://filamentmastery.com" target="_blank" rel="noopener noreferrer">Filament Mastery</a></p>

Kaynak: Orijinal Makale

Bu Makaleyi Paylaş