@ahmetilhn/hanui 2.0.4 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/index.cjs +12 -12
- package/build/index.cjs.map +1 -1
- package/build/index.d.ts +126 -2
- package/build/index.js +1557 -1500
- package/build/index.js.map +1 -1
- package/build/styles.css +1 -1
- package/package.json +1 -1
package/build/index.d.ts
CHANGED
|
@@ -121,6 +121,24 @@ export declare const Badge: typeof Badge_2;
|
|
|
121
121
|
* <p>Doygun dolgu yalnızca <strong>miktar</strong> tonlarında (`action`,
|
|
122
122
|
* `link`) anlamlı: onlar bir durumu değil bir sayıyı bildirir ve tıklanabilir
|
|
123
123
|
* bir öğenin parçasıdır.
|
|
124
|
+
*
|
|
125
|
+
* <h3>Koyu bandın üzerinde: `neutral` yeniden bağlanır</h3>
|
|
126
|
+
* Nötr rozet üç CSS özel özelliği okur — `--hanui-badge-bg`,
|
|
127
|
+
* `--hanui-badge-fg`, `--hanui-badge-line`. Kapsayıcıda tanımlanmadıklarında
|
|
128
|
+
* varsayılan tint çizilir; koyu bir gezinme rayının içinde ise kapsayıcı
|
|
129
|
+
* üçünü kendi tonlarına bağlayarak rozeti oraya taşır. İç sınıflara kural
|
|
130
|
+
* yazmak bir sonraki yayında sessizce düşerdi.
|
|
131
|
+
*
|
|
132
|
+
* ```scss
|
|
133
|
+
* .rail__badge {
|
|
134
|
+
* --hanui-badge-bg: #{$rail-hover};
|
|
135
|
+
* --hanui-badge-fg: #{$rail-fg-2};
|
|
136
|
+
* --hanui-badge-line: #{$rail-line};
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* <p>Durum tonları bilinçli olarak ezilemez: bir hata rozetini kapsayıcının
|
|
141
|
+
* sessizce nötrleştirmesi, rengin taşıdığı anlamı yok ederdi.
|
|
124
142
|
*/
|
|
125
143
|
declare const Badge_2: FC<Props_19>;
|
|
126
144
|
|
|
@@ -475,6 +493,13 @@ export declare const Chip: typeof Chip_2;
|
|
|
475
493
|
* Seçili çip pasifleştirilmez: kullanıcı seçimini geri alabilmeli. Basılı
|
|
476
494
|
* düğme semantiği (`aria-pressed`) ekran okuyucuya "seçili, kapatılabilir"
|
|
477
495
|
* bilgisini verir.
|
|
496
|
+
*
|
|
497
|
+
* <h3>Native `title` YAZILMAZ</h3>
|
|
498
|
+
* Görünür metni olmayan çip `label`ı yalnızca `aria-label`a koyar. Önce
|
|
499
|
+
* ikisini birden yazıyordu; tarayıcının balonu dokunmatikte hiç görünmez,
|
|
500
|
+
* klavyede gecikmeli çıkar ve biçimi işletim sistemine bağlıdır — yani
|
|
501
|
+
* "üzerine gelince ne olduğu yazar" sözü kullanıcıların çoğunda tutmuyordu.
|
|
502
|
+
* Açıklama isteyen çağıran çipi {@link Tooltip} ile sarar.
|
|
478
503
|
*/
|
|
479
504
|
declare const Chip_2: ForwardRefExoticComponent<Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
|
|
480
505
|
/** Görünen metin. Yalnız ikon taşıyan çipte verilmez; `label` zorunlu olur. */
|
|
@@ -721,11 +746,16 @@ export declare type CommonElementProps = Partial<{
|
|
|
721
746
|
* panelde kullanıcıyı kaydırmaya mahkûm ediyor; panel için doğru olan
|
|
722
747
|
* sıkılık vitrinde ucuz duruyor. İkisini tek ölçekle karşılamanın yolu yok.
|
|
723
748
|
*
|
|
724
|
-
* <h3>
|
|
749
|
+
* <h3>Boşluk ve punto iner; yarıçap ve dokunma hedefi inmez</h3>
|
|
725
750
|
* `space-0` ve `space-1` sabit kalır: 4 px'in altına inen bir boşluk kademesi
|
|
726
751
|
* bir boşluk değil bir çizim hatası. Yarıçap da sabit kalır — yuvarlaklık
|
|
727
752
|
* yoğunluğun değil markanın işi.
|
|
728
753
|
*
|
|
754
|
+
* <p>Punto ölçeğinin <strong>tamamı</strong> iner. Bir dönem yalnızca küçük
|
|
755
|
+
* uç (`2xs`–`body`) iniyordu ve bu ölçülebilir bir hataydı: gövde 15 px'e
|
|
756
|
+
* inerken başlıklar 29 px'te kaldığı için oran vitrindekinin çok üstüne
|
|
757
|
+
* çıkıyor, panelde başlıklar ekranı yiyordu.
|
|
758
|
+
*
|
|
729
759
|
* <h3>DOKUNMA HEDEFİ KÜÇÜLMEZ</h3>
|
|
730
760
|
* `tap-target` görünmez bir örtü çiziyor ve ölçüsü (44 px) buraya girmiyor:
|
|
731
761
|
* yoğun kip bilgi yoğunluğunu artırmak içindir, dokunulabilirliği düşürmek
|
|
@@ -743,6 +773,11 @@ export declare const COMPACT_DENSITY: {
|
|
|
743
773
|
readonly 'font-size-sm': "13px";
|
|
744
774
|
readonly 'font-size-base': "15px";
|
|
745
775
|
readonly 'font-size-body': "16px";
|
|
776
|
+
readonly 'font-size-lg': "18px";
|
|
777
|
+
readonly 'font-size-xl': "21px";
|
|
778
|
+
readonly 'font-size-2xl': "25px";
|
|
779
|
+
readonly 'font-size-3xl': "31px";
|
|
780
|
+
readonly 'font-size-4xl': "39px";
|
|
746
781
|
readonly 'leading-normal': "1.5";
|
|
747
782
|
readonly 'leading-relaxed': "1.6";
|
|
748
783
|
};
|
|
@@ -814,6 +849,12 @@ export declare const CopyField: typeof CopyField_2;
|
|
|
814
849
|
* dibinde "kopyalandı" yazması <em>hangisinin</em> kopyalandığını
|
|
815
850
|
* söylemiyordu. İkon yerinde tike dönünce cevap tıklanan yerde.
|
|
816
851
|
*
|
|
852
|
+
* <h3>Düğmede native `title` YOK</h3>
|
|
853
|
+
* Ad yalnızca `aria-label`da. `title` aynı metni bir kez daha yazıyordu ve
|
|
854
|
+
* tarayıcı balonu dokunmatikte hiç görünmediği için hiçbir şey kazandırmıyor,
|
|
855
|
+
* bazı ekran okuyucularda adı iki kez okutuyordu. Simgenin kendisi zaten bir
|
|
856
|
+
* pano ve kopyalandığında tikli panoya dönüyor.
|
|
857
|
+
*
|
|
817
858
|
* <h3>Pano erişimi reddedilirse</h3>
|
|
818
859
|
* `navigator.clipboard` güvenli olmayan bağlamda (HTTP) ve izin verilmediğinde
|
|
819
860
|
* reddeder. O durumda değer sessizce <em>seçilir</em>: kullanıcı Ctrl+C ile
|
|
@@ -1213,6 +1254,15 @@ export declare const FilterBar: typeof FilterBar_2;
|
|
|
1213
1254
|
* (birden çok alanı olan formda tarayıcının örtük gönderimi ancak bir gönderme
|
|
1214
1255
|
* düğmesi varsa çalışır).
|
|
1215
1256
|
*
|
|
1257
|
+
* <h3>Denetimler tek hizada</h3>
|
|
1258
|
+
* Şerit alanları alt kenardan hizalar; etiketli ve etiketsiz alanın yan yana
|
|
1259
|
+
* durması bunu bozmaz. Bozan şey denetimin <strong>altına</strong> yazılan
|
|
1260
|
+
* yardım/hata metniydi: alanın alt kenarı artık denetimin değil metnin kenarı
|
|
1261
|
+
* oluyor ve denetim komşularından yukarı kaçıyordu (ölçüldü: bir ekranda 24 px
|
|
1262
|
+
* kaçık iki girdi). Şeridin içindeki `Field` mesajı denetimin
|
|
1263
|
+
* <em>üstüne</em> alır — etiket, ipucu, denetim. DOM sırası değişmez, yani
|
|
1264
|
+
* ekran okuyucu yine "etiket, denetim, hata, ipucu" duyar.
|
|
1265
|
+
*
|
|
1216
1266
|
* <h3>320px'te taşma yok</h3>
|
|
1217
1267
|
* Alanlar `min-width: 240–280px` taşıyordu ve en dar ekranda şerit sayfayı yana
|
|
1218
1268
|
* kaydırıyordu. Genişlik artık `flex-basis` ile istenir, `min-width: 0` ile
|
|
@@ -1545,6 +1595,18 @@ export declare const IconButton: typeof IconButton_2;
|
|
|
1545
1595
|
* <p>Bağlantı kipinde `disabled` YOKTUR — `<a>` etiketinin devre dışı hâli
|
|
1546
1596
|
* yok ve `aria-disabled` tıklamayı engellemez. Erişilemez olması gereken bir
|
|
1547
1597
|
* eylem hiç çizilmez.
|
|
1598
|
+
*
|
|
1599
|
+
* <h3>Native `title` YAZILMAZ</h3>
|
|
1600
|
+
* Düğme `label`ı yalnızca `aria-label`a koyar. Önce ikisi birlikte
|
|
1601
|
+
* yazılıyordu (`title="Şifreyi göster" aria-label="Şifreyi göster"`) ve bu üç
|
|
1602
|
+
* ayrı sorun üretiyordu: tarayıcının balonu <strong>dokunmatikte hiç
|
|
1603
|
+
* görünmez</strong> — trafiğin ağırlığı mobil olan bir arayüzde açıklamanın
|
|
1604
|
+
* hiç olmaması demek; klavyeyle gelen kullanıcıda gecikmeli çıkar ve biçimi
|
|
1605
|
+
* işletim sistemine bağlıdır; bazı ekran okuyucular `aria-label` ile birlikte
|
|
1606
|
+
* ikisini de okuyup adı <em>iki kez</em> söyler. Görünür bir açıklama isteyen
|
|
1607
|
+
* çağıran düğmeyi {@link Tooltip} ile sarar — balon dokunmatikte uzun basmayla
|
|
1608
|
+
* da açılır. Yine de `title` geçirmek isteyen `...rest` ile geçirebilir; karar
|
|
1609
|
+
* artık çağıranın.
|
|
1548
1610
|
*/
|
|
1549
1611
|
declare const IconButton_2: ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
1550
1612
|
icon: ReactNode;
|
|
@@ -1662,6 +1724,27 @@ export declare const LIGHT_THEME: {
|
|
|
1662
1724
|
readonly 'on-action': "#ffffff";
|
|
1663
1725
|
/** Pasif dolgu; saydamlık DEĞİL kendi rengi (bkz. Button `:disabled`). */
|
|
1664
1726
|
readonly 'action-soft': "#c9d0da";
|
|
1727
|
+
/**
|
|
1728
|
+
* PASİF DOLGU ÜZERİNDEKİ METİN.
|
|
1729
|
+
*
|
|
1730
|
+
* <p>ÖLÇÜLDÜ: pasif düğme `action-soft` zeminine `on-action` (beyaz) metin
|
|
1731
|
+
* yazıyordu — açık temada <strong>1,55:1</strong>, koyu temada 1,93:1.
|
|
1732
|
+
* Ekranda "Ara", "Sorgula", "Giriş yap" yıkanmış duruyor; etiketin ne
|
|
1733
|
+
* dediği okunmuyordu.
|
|
1734
|
+
*
|
|
1735
|
+
* <p>WCAG pasif denetimleri hem 1.4.3'te hem 1.4.11'de açıkça muaf tutuyor,
|
|
1736
|
+
* yani bu bir İHLAL DEĞİLDİ — ve tam da bu yüzden hiçbir katman uyarmadı:
|
|
1737
|
+
* çift denetçinin listesinde de yoktu. Ama okunamayan bir etiket, düğmenin
|
|
1738
|
+
* neyi engellediğini de söylemez; kullanıcı "neden pasif" sorusunu
|
|
1739
|
+
* soramadan önce "bu neydi" sorusunda takılıyor. Pasiflik dolgunun
|
|
1740
|
+
* geri çekilmesiyle bildirilir, metnin silinmesiyle değil — `opacity` ile
|
|
1741
|
+
* soluklaştırma yasağının (`A11Y.md`) aynı gerekçesi.
|
|
1742
|
+
*
|
|
1743
|
+
* <p>Ton merdivenin kendisinden: açıkta `n700` (6,52:1), koyuda `n300`
|
|
1744
|
+
* (5,76:1). Çift artık `check-contrast.mjs`te ve eşiği tutmayan bir tema
|
|
1745
|
+
* derlemeyi kırar.
|
|
1746
|
+
*/
|
|
1747
|
+
readonly 'on-action-soft': "#3a424f";
|
|
1665
1748
|
readonly amber: "#f59e0b";
|
|
1666
1749
|
readonly 'amber-hover': "#d98706";
|
|
1667
1750
|
readonly 'amber-active': "#b87205";
|
|
@@ -2055,6 +2138,15 @@ export declare const Panel: typeof Panel_2;
|
|
|
2055
2138
|
* sayfanın üçte biri kadar kalıp yanındaki boşluğa bakıyordu; sorun formun
|
|
2056
2139
|
* değil PANELİN daraltılmasıydı.
|
|
2057
2140
|
*
|
|
2141
|
+
* <h3>Dip şeridi o sütunu izler</h3>
|
|
2142
|
+
* Panelde bir `PanelForm` varsa `footer` içeriği <strong>aynı sütunda</strong>
|
|
2143
|
+
* biter. Şeridin kendisi (zemin + üst çizgi) tam genişlikte kalır; hizalanan
|
|
2144
|
+
* yalnızca içeriği. Ölçüldü: form 565 px'lik sütununu bitirirken kaydet
|
|
2145
|
+
* düğmesi panelin öbür ucunda, formdan 576 px uzakta duruyordu — göz formu
|
|
2146
|
+
* bitiriyor, düğmeyi arıyordu. `PanelForm` kullanılmayan panelde kural
|
|
2147
|
+
* uygulanmaz: orada sınırlanacak bir sütun yok ve şeridin sağa yaslanması
|
|
2148
|
+
* doğru davranış.
|
|
2149
|
+
*
|
|
2058
2150
|
* @example
|
|
2059
2151
|
* <Panel title="Profil bilgileri" description="Fatura bu bilgilerle kesilir">
|
|
2060
2152
|
* <PanelForm>…alanlar…</PanelForm>
|
|
@@ -2494,7 +2586,7 @@ declare type Props_22 = {
|
|
|
2494
2586
|
/** Gösterilecek ve panoya kopyalanacak değer. */
|
|
2495
2587
|
value: string;
|
|
2496
2588
|
/**
|
|
2497
|
-
* Kopyalama düğmesinin erişilebilir
|
|
2589
|
+
* Kopyalama düğmesinin erişilebilir adı.
|
|
2498
2590
|
*
|
|
2499
2591
|
* <p>Verilmezse `labels.copyField.copy(value)` çağrılır. Config bir DİZE
|
|
2500
2592
|
* değil biçimlendirici tutar: ad değeri İÇERMELİ — bir listede on beş
|
|
@@ -2748,6 +2840,20 @@ declare type Props_32 = {
|
|
|
2748
2840
|
description?: ReactNode;
|
|
2749
2841
|
/** Sol üstte duran ikon madalyonu. */
|
|
2750
2842
|
icon?: ReactNode;
|
|
2843
|
+
/**
|
|
2844
|
+
* `plain` KUTUYU kaldırır: zemin, kenarlık ve dolgu gider, yalnızca sayı
|
|
2845
|
+
* kalır. Varsayılan `card`.
|
|
2846
|
+
*
|
|
2847
|
+
* <p>Kendi zemini olan bir bandın (kahraman, güvence şeridi) üzerinde
|
|
2848
|
+
* ölçümler kart olarak istenmiyor. Bunun tek yolu kapsayıcıda
|
|
2849
|
+
* `--hanui-surface: transparent` yazmaktı ve iki şeyi birden bozuyordu:
|
|
2850
|
+
* dolgu <em>görünmez oluyor ama YER KAPLIYOR</em> — ölçüldü, telefonda 2×2
|
|
2851
|
+
* ızgarada satır arası 48 px'e çıkıyor ve dört sayı tek bir grup gibi
|
|
2852
|
+
* okunmuyordu — ayrıca o değişken kapsayıcıdaki <strong>her</strong> hanui
|
|
2853
|
+
* yüzeyini birden düzleştiriyordu. `plain` niyeti tek yerde söyler ve
|
|
2854
|
+
* yüzey değişkenine dokunmaya gerek bırakmaz.
|
|
2855
|
+
*/
|
|
2856
|
+
variant?: 'card' | 'plain';
|
|
2751
2857
|
size?: 'sm' | 'md';
|
|
2752
2858
|
className?: string;
|
|
2753
2859
|
testId?: string;
|
|
@@ -3636,6 +3742,24 @@ export declare const Stat: typeof Stat_2;
|
|
|
3636
3742
|
* <h3>Rakamlar TABULAR</h3>
|
|
3637
3743
|
* Alt alta duran ölçüm kutularında orantılı rakamlar sütunu tırtıklı
|
|
3638
3744
|
* gösteriyor; `tabular-nums` her basamağı aynı genişlikte çiziyor.
|
|
3745
|
+
*
|
|
3746
|
+
* <h3>GENİŞLİK KARARI KAPSAYICININ</h3>
|
|
3747
|
+
* `Stat` kendine `flex` ya da `width` yazmaz ve bu bilinçli. Esnek bir sırada
|
|
3748
|
+
* içeriği kadar büzülür — yan yana dört kutu 148-177 px arasında tırtıklı
|
|
3749
|
+
* çıkabilir — ama çözüm kutuya `flex: 1` yazmak DEĞİL: aynı bileşen bir
|
|
3750
|
+
* ızgara hücresinde, bir kartın içinde ve tek başına da kullanılıyor ve orada
|
|
3751
|
+
* `flex: 1` çağıranın kararını sessizce eziyor. Eşit genişlik isteniyorsa
|
|
3752
|
+
* kapsayıcı söyler:
|
|
3753
|
+
*
|
|
3754
|
+
* ```scss
|
|
3755
|
+
* .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
|
|
3756
|
+
* ```
|
|
3757
|
+
*
|
|
3758
|
+
* <h3>Kendi zemini olan bandın üzerinde: `variant="plain"`</h3>
|
|
3759
|
+
* Kart görünümü (zemin + kenarlık + dolgu) sayfa yüzeyi için. Bir kahraman
|
|
3760
|
+
* bandının içinde ölçümler kart olarak istenmediğinde `plain` verilir; zemini
|
|
3761
|
+
* `transparent`a çevirmek dolguyu <em>görünmez</em> yapar ama kaldırmaz ve
|
|
3762
|
+
* ızgara sessizce dağılır.
|
|
3639
3763
|
*/
|
|
3640
3764
|
declare const Stat_2: FC<Props_32>;
|
|
3641
3765
|
|