@ahmetilhn/hanui 4.0.0 → 5.3.0

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.
Files changed (75) hide show
  1. package/README.md +259 -39
  2. package/build/charts.cjs +2 -0
  3. package/build/charts.cjs.map +1 -0
  4. package/build/charts.css +1 -0
  5. package/build/charts.js +1843 -0
  6. package/build/charts.js.map +1 -0
  7. package/build/chat.cjs +3 -0
  8. package/build/chat.cjs.map +1 -0
  9. package/build/chat.css +1 -0
  10. package/build/chat.js +707 -0
  11. package/build/chat.js.map +1 -0
  12. package/build/index.cjs +7 -7
  13. package/build/index.cjs.map +1 -1
  14. package/build/index.d.ts +661 -717
  15. package/build/index.js +3396 -3303
  16. package/build/index.js.map +1 -1
  17. package/build/scss/_colors.generated.scss +119 -0
  18. package/build/scss/_index.scss +6 -0
  19. package/build/scss/_metrics.generated.scss +49 -0
  20. package/build/scss/_mixins.scss +675 -0
  21. package/build/scss/_variables.scss +51 -0
  22. package/build/styles.css +1 -1
  23. package/build/types/charts/AreaChart/index.d.ts +14 -0
  24. package/build/types/charts/BarChart/index.d.ts +16 -0
  25. package/build/types/charts/BoxPlot/index.d.ts +43 -0
  26. package/build/types/charts/ComposedChart/index.d.ts +16 -0
  27. package/build/types/charts/Heatmap/index.d.ts +30 -0
  28. package/build/types/charts/Histogram/index.d.ts +29 -0
  29. package/build/types/charts/LineChart/index.d.ts +14 -0
  30. package/build/types/charts/PieChart/index.d.ts +36 -0
  31. package/build/types/charts/RadarChart/index.d.ts +40 -0
  32. package/build/types/charts/ScatterPlot/index.d.ts +41 -0
  33. package/build/types/charts/core/CartesianChart.d.ts +43 -0
  34. package/build/types/charts/core/ChartFrame.d.ts +55 -0
  35. package/build/types/charts/core/axes.d.ts +34 -0
  36. package/build/types/charts/core/cartesian.d.ts +79 -0
  37. package/build/types/charts/core/format.d.ts +9 -0
  38. package/build/types/charts/core/margins.d.ts +9 -0
  39. package/build/types/charts/core/palette.d.ts +13 -0
  40. package/build/types/charts/core/path.d.ts +24 -0
  41. package/build/types/charts/core/scale.d.ts +40 -0
  42. package/build/types/charts/core/series.d.ts +11 -0
  43. package/build/types/charts/core/spatial.d.ts +12 -0
  44. package/build/types/charts/core/stats.d.ts +34 -0
  45. package/build/types/charts/core/types.d.ts +31 -0
  46. package/build/types/charts/core/useChartWidth.d.ts +7 -0
  47. package/build/types/charts/index.d.ts +21 -0
  48. package/build/types/chat/ActionList/index.d.ts +46 -0
  49. package/build/types/chat/AppBar/index.d.ts +21 -0
  50. package/build/types/chat/ChatMessage/index.d.ts +24 -0
  51. package/build/types/chat/ChatThread/index.d.ts +24 -0
  52. package/build/types/chat/Citation/index.d.ts +15 -0
  53. package/build/types/chat/CodeBlock/index.d.ts +27 -0
  54. package/build/types/chat/DescriptionList/index.d.ts +16 -0
  55. package/build/types/chat/Legend/index.d.ts +20 -0
  56. package/build/types/chat/MessageActions/index.d.ts +21 -0
  57. package/build/types/chat/PromptInput/index.d.ts +47 -0
  58. package/build/types/chat/PromptSuggestions/index.d.ts +25 -0
  59. package/build/types/chat/Prose/index.d.ts +15 -0
  60. package/build/types/chat/ReasoningBlock/index.d.ts +24 -0
  61. package/build/types/chat/ReasoningText/index.d.ts +14 -0
  62. package/build/types/chat/SegmentBar/index.d.ts +46 -0
  63. package/build/types/chat/SourceList/index.d.ts +25 -0
  64. package/build/types/chat/TerminalOutput/index.d.ts +25 -0
  65. package/build/types/chat/ToolCall/index.d.ts +41 -0
  66. package/build/types/chat/index.d.ts +26 -0
  67. package/build/types/helpers/class-name.helper.d.ts +3 -0
  68. package/build/types/helpers/component.helper.d.ts +13 -0
  69. package/build/types/helpers/label.helper.d.ts +12 -0
  70. package/build/types/theme/palette.d.ts +203 -0
  71. package/build/types/theme/tokens.d.ts +208 -0
  72. package/build/types/types/common-element-props.type.d.ts +8 -0
  73. package/build/types/types/link.type.d.ts +14 -0
  74. package/build/types/types/theme.type.d.ts +223 -0
  75. package/package.json +19 -2
package/build/index.d.ts CHANGED
@@ -26,8 +26,11 @@ export declare const ABOVE_TABLET_MEDIA_QUERY = "(min-width: 1025px)";
26
26
 
27
27
  export declare const Accordion: typeof Accordion_2;
28
28
 
29
- /** Akordeon — katlanabilir bölümler. */
30
- declare const Accordion_2: FC<Props_37>;
29
+ /**
30
+ * Akordeon — katlanabilir bölümler. Her bölüm bir `Disclosure`: yerel `<details>` mantığı (kontrollü
31
+ * kipte DOM eşitlemesi, `onToggle`, pasif başlık) TEK yerde yaşar.
32
+ */
33
+ declare const Accordion_2: FC<Props_40>;
31
34
 
32
35
  export declare type AccordionItem = {
33
36
  id: string;
@@ -42,33 +45,38 @@ export declare type AccordionItem = {
42
45
  export declare const Alert: typeof Alert_2;
43
46
 
44
47
  /** Bilgi / uyarı kutusu. */
45
- declare const Alert_2: FC<Props_17>;
48
+ declare const Alert_2: FC<Props_18>;
46
49
 
47
50
  export declare type AlertTone = 'info' | 'success' | 'warning' | 'danger';
48
51
 
49
52
  /** Duyurunun aciliyeti. */
50
53
  export declare type AnnouncePoliteness = 'polite' | 'assertive';
51
54
 
52
- /**
53
- * Ezmeleri belgeye yazar. Aynı `<style>` etiketi tekrar kullanılır: her
54
- * çağrıda yeni bir etiket eklemek, birbirini ezen onlarca blok bırakıyordu.
55
- */
55
+ /** Ezmeleri belgeye yazar. */
56
56
  export declare const applyThemeConfig: (config: HanuiThemeConfig | undefined) => void;
57
57
 
58
58
  export declare const Avatar: typeof Avatar_2;
59
59
 
60
60
  /** Avatar — kullanıcı madalyonu. */
61
- declare const Avatar_2: FC<Props_18>;
61
+ declare const Avatar_2: FC<Props_19>;
62
+
63
+ declare type AvatarShape = 'circle' | 'rounded';
64
+
65
+ /**
66
+ * `auto`: baş harf madalyonu addan SABİT bir kovaya boyanır. `brand`: marka madalyonu — çam zemin,
67
+ * mint işaret, iki temada aynı (logo kuralı; asistanın avatarı, boş sohbetin karosu).
68
+ */
69
+ declare type AvatarTone = 'auto' | 'brand';
62
70
 
63
71
  export declare const Badge: typeof Badge_2;
64
72
 
65
73
  /** Rozet — durum ve sınıflandırma etiketi. */
66
- declare const Badge_2: FC<Props_19>;
74
+ declare const Badge_2: FC<Props_20>;
67
75
 
68
76
  export declare type BadgeTone = 'neutral' | 'success' | 'danger' | 'warning' | 'info'
69
- /** Birincil sınıflandırma tinti (mavi-lacivert aile). */
77
+ /** Birincil sınıflandırma tinti (yeşil aile — Hanparça "Orijinal"). */
70
78
  | 'oem'
71
- /** İkincil sınıflandırma tinti (mor aile). */
79
+ /** İkincil sınıflandırma tinti (menekşe aile — Hanparça "Muadil"). */
72
80
  | 'alt'
73
81
  /** İndirim / olumlu değişim yüzdesi. Tutarın kendisi nötr kalır. */
74
82
  | 'sale'
@@ -102,13 +110,9 @@ declare type BaseProps_2 = {
102
110
 
103
111
  declare type BaseProps_3 = {
104
112
  isOpen: boolean;
105
- /** Vazgeçme ve perde/Escape kapanışı. Başarı kapanışını bileşen kendisi yapar. */
113
+ /** Vazgeçme ve perde/Escape kapanışı. */
106
114
  onClose: () => void;
107
- /**
108
- * Girilen değerle çalışır (değer kırpılmış gönderilir). Reddederse pencere
109
- * AÇIK kalır ve metin korunur; hata bildirimi çağıranın işi — bildirimi
110
- * gösterip hatayı yeniden fırlatın ya da hiç yakalamayın.
111
- */
115
+ /** Girilen değerle çalışır (değer kırpılmış gönderilir). */
112
116
  onSubmit: (value: string) => void | Promise<void>;
113
117
  title: string;
114
118
  /** Girdi alanının etiketi. */
@@ -117,18 +121,14 @@ declare type BaseProps_3 = {
117
121
  submitLabel?: string;
118
122
  /** Verilmezse `labels.cancel`. */
119
123
  cancelLabel?: string;
120
- /** Kapatma düğmesinin erişilebilir adı. Verilmezse `labels.close`. */
124
+ /** Kapatma düğmesinin erişilebilir adı. */
121
125
  closeLabel?: string;
122
126
  /** Başlığın altındaki bir cümlelik bağlam. */
123
127
  description?: ReactNode;
124
128
  hint?: string;
125
129
  placeholder?: string;
126
130
  defaultValue?: string;
127
- /**
128
- * `text` tek satır, `multiline` gerekçe gibi uzun metin, `number` adet/fark
129
- * gibi sayılar. Değer her durumda dize döner; ayrıştırmak çağıranın işi
130
- * (bir stok farkı `-5` gibi işaretli olabiliyor).
131
- */
131
+ /** `text` tek satır, `multiline` gerekçe gibi uzun metin, `number` adet/fark gibi sayılar. */
132
132
  inputMode?: 'text' | 'multiline' | 'number';
133
133
  maxLength?: number;
134
134
  rows?: number;
@@ -137,32 +137,29 @@ declare type BaseProps_3 = {
137
137
  declare type BaseProps_4 = {
138
138
  page: number;
139
139
  totalPages: number;
140
- /** Gezinme bölgesinin erişilebilir adı. Verilmezse `labels.pagination.label`. */
140
+ /** Gezinme bölgesinin erişilebilir adı. */
141
141
  label?: string;
142
142
  /** Verilmezse `labels.pagination.previous`. */
143
143
  previousLabel?: string;
144
144
  /** Verilmezse `labels.pagination.next`. */
145
145
  nextLabel?: string;
146
- /**
147
- * Sayfa değiştiğinde ekran okuyucuya duyurulacak metin
148
- * ("3. sayfa · 1.248 sonuç").
149
- */
146
+ /** Sayfa değiştiğinde ekran okuyucuya duyurulacak metin ("3. sayfa · 1.248 sonuç"). */
150
147
  formatAnnouncement?: (page: number, totalPages: number) => string;
151
148
  /**
152
- * Sayfa değiştiren bir tıklamadan sonra kaydırma. `'top'` verilirse pencere
153
- * en üste alınır — çağıran tarafta kaydırma kodu yazılmaz.
149
+ * Sayfa değiştiren bir tıklamadan sonra kaydırma. `'top'` verilirse pencere en üste alınır —
150
+ * çağıran tarafta kaydırma kodu yazılmaz.
154
151
  */
155
152
  scrollTo?: 'top';
156
153
  className?: string;
157
154
  testId?: string;
158
155
  };
159
156
 
160
- export declare const BottomSheet: MemoExoticComponent<({ title, closeLabel, onClose, children, toolbar, footer, closeAbove, className, testId, }: Props_42) => ReactPortal | null>;
157
+ export declare const BottomSheet: MemoExoticComponent<({ title, closeLabel, onClose, children, toolbar, footer, closeAbove, className, testId, }: Props_46) => ReactPortal | null>;
161
158
 
162
159
  export declare const Breadcrumb: typeof Breadcrumb_2;
163
160
 
164
161
  /** Kırıntı yolu. */
165
- declare const Breadcrumb_2: FC<Props_20>;
162
+ declare const Breadcrumb_2: FC<Props_21>;
166
163
 
167
164
  /** Yapılandırmayı CSS metnine çevirir. */
168
165
  export declare const buildThemeCss: (config: HanuiThemeConfig) => string;
@@ -171,15 +168,12 @@ export declare const Button: typeof Button_2;
171
168
 
172
169
  /**
173
170
  * Düğme.
174
- *
175
- * @example
176
- * <Button variant={UIVariant.PRIMARY} isLoading={isSaving} onClick={save}>
177
- * Kaydet
178
- * </Button>
171
+ * @example <Button variant={UIVariant.PRIMARY} isLoading={isSaving} onClick={save}> Kaydet…
179
172
  */
180
173
  declare const Button_2: ForwardRefExoticComponent<Partial<{
181
174
  variant: UIVariant;
182
175
  size: UISize;
176
+ shape: ButtonShape;
183
177
  isLoading: boolean;
184
178
  isFullWidth: boolean;
185
179
  startIcon: ReactNode;
@@ -191,10 +185,7 @@ testId: string;
191
185
  }> & ButtonHTMLAttributes<HTMLButtonElement> & {
192
186
  /** Verilirse düğme bir bağlantı olarak çizilir. */
193
187
  href?: string;
194
- /**
195
- * Uygulama dışına çıkan bağlantı: yeni sekmede açılır ve yönlendirici
196
- * devreye girmez.
197
- */
188
+ /** Uygulama dışına çıkan bağlantı: yeni sekmede açılır ve yönlendirici devreye girmez. */
198
189
  isExternal?: boolean;
199
190
  /** Yönlendiriciye geçirilecek ek props (`{ scroll: false }`, `{ replace: true }`). */
200
191
  linkProps?: HanuiLinkExtraProps;
@@ -207,27 +198,21 @@ declare type ButtonProps = BaseProps_4 & {
207
198
  linkProps?: never;
208
199
  };
209
200
 
201
+ /** Köşe biçimi. `pill` üst bant ve araç çubuğundaki hafif eylemler için; ölçü değişmez. */
202
+ declare type ButtonShape = 'rounded' | 'pill';
203
+
210
204
  export declare const Card: typeof Card_2;
211
205
 
212
206
  /**
213
207
  * Kart — medya + gövde + eylem şeridi.
214
- *
215
- * @example
216
- * <Card as="article" isInteractive>
217
- * <CardMedia href="/urun/x" ratio={1}>
218
- * <CardOverlay position="top-left"><Badge>Yeni</Badge></CardOverlay>
219
- * <img src={…} alt="" />
220
- * </CardMedia>
221
- * <CardBody>…</CardBody>
222
- * <CardFooter>…</CardFooter>
223
- * </Card>
208
+ * @example <Card as="article" isInteractive> <CardMedia href="/urun/x" ratio={1}>…
224
209
  */
225
210
  declare const Card_2: FC<CardProps>;
226
211
 
227
212
  /** Kartın metin gövdesi: başlık, açıklama, üstyazı. */
228
213
  export declare const CardBody: FC<CardSectionProps>;
229
214
 
230
- /** Eylem şeridi — tutar, düğmeler. Kartın dibine yapışır. */
215
+ /** Eylem şeridi — tutar, düğmeler. */
231
216
  export declare const CardFooter: FC<CardSectionProps>;
232
217
 
233
218
  /** Kartın görsel alanı. */
@@ -238,20 +223,15 @@ export declare type CardMediaFit = 'cover' | 'contain' | 'inset';
238
223
 
239
224
  declare type CardMediaProps = {
240
225
  children: ReactNode;
241
- /** Genişlik / yükseklik oranı. Sabit oran yükleme sırasında kaymayı önler. */
226
+ /** Genişlik / yükseklik oranı. */
242
227
  ratio?: number;
243
228
  /** Medya alanı tıklanabilirse: görsel bağlantının içine alınır. */
244
229
  href?: string;
245
230
  /** Yönlendiriciye geçirilecek ek props. */
246
231
  linkProps?: HanuiLinkExtraProps;
247
- /** Görsel çerçeveyi nasıl doldurur — bkz. {@link CardMediaFit}. */
232
+ /** Görsel çerçeveyi nasıl doldurur — bkz. */
248
233
  fit?: CardMediaFit;
249
- /**
250
- * @deprecated `fit` kullanın: `isContained` → `fit="contain"`,
251
- * `isContained={false}` → `fit="cover"`. Boolean yalnızca iki durumu
252
- * anlatabiliyordu, üçüncüsü (`inset`) ona sığmadı. Eski yol bir sürüm daha
253
- * çalışır; `CLAUDE.md` → Göç.
254
- */
234
+ /** @deprecated `fit` kullanın: `isContained` → `fit="contain"`, `isContained={false}` →… */
255
235
  isContained?: boolean;
256
236
  className?: string;
257
237
  };
@@ -283,7 +263,7 @@ declare type CardSectionProps = {
283
263
  export declare const Carousel: typeof Carousel_2;
284
264
 
285
265
  /** Kaydırılabilir şerit (carousel). */
286
- declare const Carousel_2: FC<Props_21>;
266
+ declare const Carousel_2: FC<Props_22>;
287
267
 
288
268
  export declare const Checkbox: typeof Checkbox_2;
289
269
 
@@ -299,7 +279,7 @@ export declare const Chip: typeof Chip_2;
299
279
 
300
280
  /** Çip — seçilebilir etiket. */
301
281
  declare const Chip_2: ForwardRefExoticComponent<Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
302
- /** Görünen metin. Yalnız ikon taşıyan çipte verilmez; `label` zorunlu olur. */
282
+ /** Görünen metin. */
303
283
  children?: ReactNode;
304
284
  /** Metnin solundaki ikon. */
305
285
  icon?: ReactNode;
@@ -309,20 +289,13 @@ endIcon?: ReactNode;
309
289
  count?: number;
310
290
  isSelected?: boolean;
311
291
  size?: ChipSize;
312
- /**
313
- * Erişilebilir ad. Görünür metin yoksa <strong>zorunlu</strong>: yalnız ikon
314
- * taşıyan bir çip ekran okuyucuda "düğme" diye okunur.
315
- */
292
+ /** Erişilebilir ad. */
316
293
  label?: string;
317
294
  /** Verilirse çip bir bağlantı olarak çizilir. */
318
295
  href?: string;
319
296
  /** Yönlendiriciye geçirilecek ek props. */
320
297
  linkProps?: HanuiLinkExtraProps;
321
- /**
322
- * Grup içindeki ARIA rolü. Tek seçimli gruplarda `radio`, çok seçimlide
323
- * verilmez — {@link ChipGroup} bunu kendisi ayarlar; elle kullanımda
324
- * `aria-pressed` üretilir.
325
- */
298
+ /** Grup içindeki ARIA rolü. */
326
299
  role?: "radio";
327
300
  testId?: string;
328
301
  } & RefAttributes<HTMLButtonElement>>;
@@ -330,7 +303,7 @@ testId?: string;
330
303
  export declare const ChipGroup: typeof ChipGroup_2;
331
304
 
332
305
  /** Çip grubu — açılır liste yerine tek dokunuşla seçim. */
333
- declare const ChipGroup_2: <T extends string>({ options, label, size, isScrollable, className, ...selection }: Props_6<T>) => JSX.Element;
306
+ declare const ChipGroup_2: <T extends string>({ options, label, size, isScrollable, className, ...selection }: Props_7<T>) => JSX.Element;
334
307
 
335
308
  export declare type ChipOption<T extends string = string> = {
336
309
  value: T;
@@ -346,11 +319,16 @@ declare type CircleProps = {
346
319
  /** Tamamlanan miktar. `undefined` → BELİRSİZ; çember döner. */
347
320
  value?: number;
348
321
  max?: number;
349
- /** Erişilebilir ad. ZORUNLU. */
322
+ /** Erişilebilir ad. */
350
323
  label: string;
351
324
  valueText?: string;
352
325
  /** Yüzdeyi çemberin ortasına yazar. */
353
326
  isValueVisible?: boolean;
327
+ /**
328
+ * ⚠ `brand` 5.0'dan beri MÜREKKEP çizer (`selected` — ilerleme bir seçim göstergesi), yeşil
329
+ * DEĞİL: yeşil yalnızca eylem, bağlantı ve odakta. Ad 4.x'ten kaldı; değiştirmek her çağrıyı
330
+ * kırardı ve kazancı yalnızca isim olurdu.
331
+ */
354
332
  tone?: 'brand' | 'success' | 'warning' | 'danger';
355
333
  /** Dış çap (px). */
356
334
  size?: number;
@@ -361,17 +339,13 @@ declare type CircleProps = {
361
339
  export declare const CodeBadge: typeof CodeBadge_2;
362
340
 
363
341
  /**
364
- * Teknik kod rozeti — monospace kod, marka zeminli çerçeve.
365
- *
366
- * `CopyField`ten farkı ÇERÇEVEDİR: CopyField satır içi çıplak değer, bu
367
- * bileşen sayfanın kahramanı olan kod (arıza kodu başlığı gibi). Pano
368
- * mantığı ikisinde de `useCopyFeedback` — ayrışamazlar. Etiketler de
369
- * `labels.copyField` sözlüğünü paylaşır: aynı eylem için ikinci bir sözlük
370
- * anahtarı, iki ayrı çeviri kaynağı olurdu.
342
+ * Teknik kod rozeti — monospace kod, MÜREKKEP zemin (iki temada aynı).
343
+ * Etkileşimli kipte (`onClick` / `href`) kod bir düğme ya da bağlantıdır; kopyalama düğmesi onun
344
+ * KARDEŞİ kalır (iç içe düğme geçersiz HTML).
371
345
  */
372
- declare const CodeBadge_2: FC<Props_22>;
346
+ declare const CodeBadge_2: FC<Props_23>;
373
347
 
374
- export declare type CodeBadgeSize = 'sm' | 'md' | 'lg';
348
+ export declare type CodeBadgeSize = 'xs' | 'sm' | 'md' | 'lg';
375
349
 
376
350
  export declare const Combobox: typeof Combobox_2;
377
351
 
@@ -408,9 +382,8 @@ declare type ComboboxProps<T extends string> = {
408
382
  onChange: (value: T | null) => void;
409
383
  labels: ComboboxLabels;
410
384
  /**
411
- * Verilirse arama <strong>sunucuda</strong> yapılır: bileşen listeyi kendisi
412
- * filtrelemez, yazılanı 300 ms bekleyip buraya bildirir. Verilmezse
413
- * filtreleme yerelde ve aksan duyarsız yapılır.
385
+ * Verilirse arama sunucuda yapılır: bileşen listeyi kendisi filtrelemez, yazılanı 300 ms bekleyip
386
+ * buraya bildirir.
414
387
  */
415
388
  onSearch?: (query: string) => void;
416
389
  isLoading?: boolean;
@@ -422,7 +395,7 @@ declare type ComboboxProps<T extends string> = {
422
395
  /** Tetikleyicinin solundaki ikon. */
423
396
  icon?: ReactNode;
424
397
  id?: string;
425
- /** Zorunluluk — `Field`in `FieldChildProps` sözleşmesi. Bkz. `Select.required`. */
398
+ /** Zorunluluk — `Field`in `FieldChildProps` sözleşmesi. */
426
399
  required?: boolean;
427
400
  'aria-describedby'?: string;
428
401
  'aria-invalid'?: boolean;
@@ -435,10 +408,10 @@ export declare type CommandItem = {
435
408
  label: string;
436
409
  /** Ayırt edici ikincil satır — bir komutun nereye götürdüğü. */
437
410
  description?: string;
438
- /** Gruplama başlığı ("Gezinme", "Eylemler"). Aynı grup ardışık çizilir. */
411
+ /** Gruplama başlığı ("Gezinme", "Eylemler"). */
439
412
  group?: string;
440
413
  icon?: ReactNode;
441
- /** Kısayol ipucu ("⌘K"). Yalnızca GÖSTERİLİR; tuşu çağıran bağlar. */
414
+ /** Kısayol ipucu ("⌘K"). */
442
415
  shortcut?: string;
443
416
  onSelect: () => void;
444
417
  };
@@ -446,7 +419,7 @@ export declare type CommandItem = {
446
419
  export declare const CommandPalette: typeof CommandPalette_2;
447
420
 
448
421
  /** Komut paleti — klavyeyle her şeye ulaşma. */
449
- declare const CommandPalette_2: ({ isOpen, onClose, items, label, searchPlaceholder, emptyMessage, className, testId, }: Props_44) => JSX.Element;
422
+ declare const CommandPalette_2: ({ isOpen, onClose, items, label, searchPlaceholder, emptyMessage, hotkey, onOpen, className, testId, }: Props_48) => JSX.Element;
450
423
 
451
424
  /** Her bileşenin kabul ettiği ortak kanca noktaları. */
452
425
  export declare type CommonElementProps = Partial<{
@@ -455,18 +428,7 @@ export declare type CommonElementProps = Partial<{
455
428
  testId: string;
456
429
  }>;
457
430
 
458
- /**
459
- * YOĞUN (compact) KİP — `<html data-hanui-density="compact">`.
460
- *
461
- * <p>⚠ <strong>17 SABİT DEĞER İKİ ÇARPANA İNDİ.</strong> Eski kip ölçeğin her
462
- * kademesini elle eziyordu ve o değerler (11/12/13/15/16/18/21/25/31/39)
463
- * akışkan ölçeğin mobil tabanlarıyla **neredeyse birebir aynıydı**. Sonuç:
464
- * yoğun kipi açan panel bir telefonda küçülmeyi İKİ KEZ yiyor, `2xs` 10px'in
465
- * altına düşüyordu. Ezme yerine çarpma, ikisini yapısal olarak uzlaştırıyor.
466
- *
467
- * <p>İkinci kazanç: kip artık ölçeğin ÜST ucunu da doğru taşıyor. Eski liste
468
- * elle yazıldığı için bir kademe eklendiğinde güncellenmesi unutulabilirdi.
469
- */
431
+ /** YOĞUN (compact) KİP — `<html data-hanui-density="compact">`. */
470
432
  export declare const COMPACT_DENSITY: {
471
433
  readonly 'type-scale': "0.93";
472
434
  readonly 'space-scale': "0.88";
@@ -476,21 +438,16 @@ export declare const ConfirmDialog: typeof ConfirmDialog_2;
476
438
 
477
439
  /**
478
440
  * Onay penceresi.
479
- *
480
- * @example
481
- * const [target, setTarget] = useState<Address | null>(null);
441
+ * @example const [target, setTarget] = useState<Address | null>(null);
482
442
  */
483
- declare const ConfirmDialog_2: FC<Props_45>;
443
+ declare const ConfirmDialog_2: FC<Props_49>;
484
444
 
485
445
  export declare type ConfirmKind = 'destructive' | 'warning' | 'neutral';
486
446
 
487
447
  export declare const CopyField: typeof CopyField_2;
488
448
 
489
- /**
490
- * Kopyalanabilir teknik değer — <strong>tek dokunuşla panoya</strong>.
491
- * Pano mantığı `useCopyFeedback`te, `CodeBadge` ile ortak.
492
- */
493
- declare const CopyField_2: FC<Props_23>;
449
+ /** Kopyalanabilir teknik değer — tek dokunuşla panoya. */
450
+ declare const CopyField_2: FC<Props_26>;
494
451
 
495
452
  export declare type Crumb = {
496
453
  label: string;
@@ -504,24 +461,20 @@ export declare const DARK_THEME: Record<keyof typeof LIGHT_THEME, string>;
504
461
  export declare const DataTable: typeof DataTable_2;
505
462
 
506
463
  /** Operasyon veri tablosu — durum satırlı tablo sözleşmesi. */
507
- declare const DataTable_2: FC<Props_49>;
464
+ declare const DataTable_2: FC<Props_53>;
508
465
 
509
466
  export declare type DataTableColumn = {
510
467
  /** Sütun kimliği (React key). */
511
468
  key: string;
512
- /** Başlık hücresinin içeriği. Toplu seçim kutusu gibi öğeler de girebilir. */
469
+ /** Başlık hücresinin içeriği. */
513
470
  label?: ReactNode;
514
- /**
515
- * Görsel başlığı olmayan sütunun erişilebilir adı (eylem sütunu gibi).
516
- * Boş bir `<th>` ekran okuyucuda adsız bir sütun bırakıyordu.
517
- */
471
+ /** Görsel başlığı olmayan sütunun erişilebilir adı (eylem sütunu gibi). */
518
472
  srLabel?: string;
519
473
  /** Sıralanabilir sütunun yönü (`aria-sort`). */
520
474
  ariaSort?: 'ascending' | 'descending';
521
475
  /**
522
- * Sütun sıralanabilir. `DataTable.onSort` ile birlikte anlamlı; ikisinden
523
- * biri eksikse başlık düz metin kalır — tıklanabilir görünüp hiçbir şey
524
- * yapmayan bir başlık, kullanıcıya var olmayan bir yetenek vaat ediyordu.
476
+ * Sütun sıralanabilir. `DataTable.onSort` ile birlikte anlamlı; ikisinden biri eksikse başlık düz
477
+ * metin kalır
525
478
  */
526
479
  isSortable?: boolean;
527
480
  /** Sütun yatay kaydırmada YERİNDE kalır. */
@@ -533,7 +486,7 @@ export declare const DataTableRow: FC<RowProps>;
533
486
 
534
487
  export declare const DateField: typeof DateField_2;
535
488
 
536
- /** Tarih alanı — <strong>yerel</strong> `<input type="date">`. */
489
+ /** Tarih alanı — yerel `<input type="date">`. */
537
490
  declare const DateField_2: ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type"> & {
538
491
  /** `date` (varsayılan) · `datetime-local` · `month` · `time`. */
539
492
  type?: "date" | "datetime-local" | "month" | "time";
@@ -551,23 +504,14 @@ export declare type DateRangeValue = {
551
504
  /** Kütüphanenin varsayılan font yığınları — hepsi sistem fontlarına iner. */
552
505
  export declare const DEFAULT_FONTS: Required<HanuiFonts>;
553
506
 
554
- /**
555
- * Bilgi yoğunluğunun taşındığı öznitelik.
556
- * `<html data-hanui-density="compact">`.
557
- */
507
+ /** Bilgi yoğunluğunun taşındığı öznitelik. `<html data-hanui-density="compact">`. */
558
508
  export declare const DENSITY_ATTRIBUTE = "data-hanui-density";
559
509
 
560
510
  export declare const Directory: typeof Directory_2;
561
511
 
562
512
  /**
563
513
  * Dizin — harf veya konu başlıklı, gruplanmış bağlantı listesi.
564
- *
565
- * @example
566
- * <Directory>
567
- * <DirectoryGroup label="A">
568
- * <DirectoryRow href="/marka/ate" name="ATE" media={<img … />} />
569
- * </DirectoryGroup>
570
- * </Directory>
514
+ * @example <Directory> <DirectoryGroup label="A"> <DirectoryRow href="/marka/ate" name="ATE"…
571
515
  */
572
516
  declare const Directory_2: FC<DirectoryProps>;
573
517
 
@@ -577,10 +521,7 @@ export declare const DirectoryGroup: FC<DirectoryGroupProps>;
577
521
  declare type DirectoryGroupProps = {
578
522
  /** Grup başlığı: harf ("A", "0-9") veya konu ("Fren sistemi"). */
579
523
  label: string;
580
- /**
581
- * Başlık kendisi bir hedefe götürüyorsa. Harf gruplarında verilmez — "A"
582
- * diye bir sayfa yok.
583
- */
524
+ /** Başlık kendisi bir hedefe götürüyorsa. */
584
525
  href?: string;
585
526
  /** Yönlendiriciye geçirilecek ek props. */
586
527
  linkProps?: HanuiLinkExtraProps;
@@ -599,7 +540,7 @@ declare type DirectoryJumpProps = {
599
540
  labels: string[];
600
541
  /** Çıpa kimliğini üretir; `DirectoryGroup id` ile aynı olmalı. */
601
542
  toId: (label: string) => string;
602
- /** Şeridin erişilebilir adı. Verilmezse `labels.directoryJump`. */
543
+ /** Şeridin erişilebilir adı. */
603
544
  label?: string;
604
545
  };
605
546
 
@@ -614,7 +555,7 @@ export declare const DirectoryRow: FC<DirectoryRowProps>;
614
555
  declare type DirectoryRowProps = {
615
556
  href: string;
616
557
  name: string;
617
- /** Logo, ikon veya baş harf madalyonu. Satırın solunda. */
558
+ /** Logo, ikon veya baş harf madalyonu. */
618
559
  media?: ReactNode;
619
560
  /** Sağ uçta duran işaret: rozet, kayıt sayısı. */
620
561
  marker?: ReactNode;
@@ -623,36 +564,43 @@ declare type DirectoryRowProps = {
623
564
  className?: string;
624
565
  };
625
566
 
567
+ export declare const Disclosure: typeof Disclosure_2;
568
+
569
+ /**
570
+ * Tek başına açılır-kapanır bölüm — yerel `<details>` / `<summary>`.
571
+ *
572
+ * Klavye: `Enter` / `Space` başlıkta açar-kapar (tarayıcının kendi davranışı).
573
+ *
574
+ * ⚠ Yerel öğe bilinçli: odak, klavye ve ekran okuyucunun "genişletildi / daraltıldı" duyurusu
575
+ * tarayıcıdan geliyor. Taklit bir `button[aria-expanded]` bunları yeniden yazmak demekti.
576
+ */
577
+ declare const Disclosure_2: FC<Props_41>;
578
+
579
+ export declare type DisclosureVariant = 'framed' | 'plain';
580
+
626
581
  export declare const Divider: typeof Divider_2;
627
582
 
628
583
  /** Ayırıcı çizgi. */
629
- declare const Divider_2: FC<Props_24>;
584
+ declare const Divider_2: FC<Props_27>;
630
585
 
631
586
  export declare const Drawer: typeof Drawer_2;
632
587
 
633
588
  /** Çekmece (drawer) — kenardan açılan kipsel panel. */
634
- declare const Drawer_2: ({ isOpen, onClose, title, closeLabel, children, side, size, footer, toolbar, className, testId, }: Props_46) => JSX.Element;
589
+ declare const Drawer_2: ({ isOpen, onClose, title, closeLabel, children, side, size, footer, toolbar, className, testId, }: Props_50) => JSX.Element;
635
590
 
636
591
  export declare const EmptyState: typeof EmptyState_2;
637
592
 
638
593
  /** Boş durum. */
639
- declare const EmptyState_2: FC<Props_25>;
594
+ declare const EmptyState_2: FC<Props_28>;
640
595
 
641
596
  export declare const Field: typeof Field_2;
642
597
 
643
598
  /**
644
599
  * Form alanı sarmalayıcısı.
645
- *
646
- * @example
647
- * <Field label="E-posta" isRequired requiredLabel="(zorunlu)" error={emailError}>
648
- * {props => <Input {...props} type="email" value={email} onChange={onChange} />}
649
- * </Field>
650
- *
651
- * @example
652
- * // `{...props}` yaymayan bileşenlerde (Combobox, Select) yalnızca `id`:
653
- * <Field label="Şehir">{props => <Combobox id={props.id} … />}</Field>
600
+ * @example <Field label="E-posta" isRequired requiredLabel="(zorunlu)"…
601
+ * @example // `{...props}` yaymayan bileşenlerde (Combobox, Select) yalnızca `id`…
654
602
  */
655
- declare const Field_2: FC<Props_15>;
603
+ declare const Field_2: FC<Props_16>;
656
604
 
657
605
  /** Girdiye yayılacak erişilebilirlik bağları. */
658
606
  export declare type FieldChildProps = {
@@ -664,42 +612,33 @@ export declare type FieldChildProps = {
664
612
 
665
613
  declare type FieldProps = {
666
614
  children: ReactNode;
667
- /**
668
- * Alan kalan genişliği doldurur (arama kutusu). Diğer alanlar tercih
669
- * ettikleri genişlikte kalır ve şerit sağa doğru boşluk bırakır.
670
- */
615
+ /** Alan kalan genişliği doldurur (arama kutusu). */
671
616
  isWide?: boolean;
672
617
  className?: string;
673
618
  };
674
619
 
675
620
  export declare const FileUpload: typeof FileUpload_2;
676
621
 
677
- /** Dosya yükleme — sürükle-bırak <strong>ve</strong> düğme. */
678
- declare const FileUpload_2: ({ files, onSelect, onRemove, label, hint, accept, isMultiple, maxSize, removeLabel, dropLabel, sizeErrorText, isDisabled, error, children, className, testId, }: Props_16) => JSX.Element;
622
+ /** Dosya yükleme — sürükle-bırak ve düğme. */
623
+ declare const FileUpload_2: ({ files, onSelect, onRemove, label, hint, accept, isMultiple, maxSize, removeLabel, dropLabel, sizeErrorText, isDisabled, error, children, className, testId, }: Props_17) => JSX.Element;
679
624
 
680
625
  export declare const FilterBar: typeof FilterBar_2;
681
626
 
682
627
  /** Filtre şeridi. */
683
- declare const FilterBar_2: FC<Props_50>;
628
+ declare const FilterBar_2: FC<Props_54>;
684
629
 
685
- /**
686
- * Şerit içindeki tek alanın genişlik sözleşmesi. İçine `Field` + girdi ya da
687
- * yalın `Input` konur; genişlik kararı alanın kendisine yazılmaz.
688
- */
630
+ /** Şerit içindeki tek alanın genişlik sözleşmesi. */
689
631
  export declare const FilterBarField: FC<FieldProps>;
690
632
 
691
633
  /**
692
634
  * Sayı biçimlendiricileri: değere bağlı metinler dizeyle verilemez.
693
- *
694
- * ⚠ `helpers/label.helper.ts` de aynı imzayı ELLE taşıyordu. Tip
695
- * <strong>index.ts'ten dışa verilmiyor</strong>, yani birleştirmek genel API'yi
696
- * değiştirmez — ölçüldü (`npm run check:api`).
635
+ * ⚠ `helpers/label.helper.ts` de aynı imzayı ELLE taşıyordu.
697
636
  */
698
637
  declare type Formatter<TArgs extends unknown[]> = (...args: TArgs) => string;
699
638
 
700
639
  /**
701
- * Kullanıcının SEÇİMİ. `system` = açık bir seçim yok, işletim sistemi tercihi
702
- * izlenir (`prefers-color-scheme`).
640
+ * Kullanıcının SEÇİMİ. `system` = açık bir seçim yok, işletim sistemi tercihi izlenir
641
+ * (`prefers-color-scheme`).
703
642
  */
704
643
  export declare type HanuiColorPreference = HanuiColorScheme | 'system';
705
644
 
@@ -709,15 +648,12 @@ export declare type HanuiColorScheme = 'light' | 'dark';
709
648
  export declare type HanuiContextValue = {
710
649
  /** Tüketicinin yönlendiricisi (`next/link`, `react-router`ın `Link`i…). */
711
650
  linkComponent?: HanuiLinkComponent;
712
- /** Uygulanan tema ezmeleri. Salt okunur; değiştirmek için `HanuiProvider`. */
651
+ /** Uygulanan tema ezmeleri. */
713
652
  theme?: HanuiThemeConfig;
714
653
  /**
715
- * Arayüz metinleri. Bir bileşen metnini prop olarak almadıysa buradan okur;
716
- * varsayılanlar `HanuiLabels` alanlarının yanında yazılı.
717
- *
718
- * ⚠ Referans bir dönem `theme/labels.ts`yi gösteriyordu; o dosya yalnızca
719
- * tek satırlık bir başlık yorumu taşıyordu (sıfır export, sıfır import) ve
720
- * kaldırıldı — belge var olmayan bir yeri işaret ediyordu.
654
+ * Arayüz metinleri.
655
+ * ⚠ Referans bir dönem `theme/labels.ts`yi gösteriyordu; o dosya yalnızca tek satırlık bir başlık
656
+ * yorumu taşıyordu (sıfır export, sıfır…
721
657
  */
722
658
  labels?: HanuiLabels;
723
659
  };
@@ -737,9 +673,8 @@ export declare type HanuiLabels = Partial<{
737
673
  close: string;
738
674
  /**
739
675
  * Bildirim yığınının bölge adı ("Bildirimler"). `ToastHub`.
740
- *
741
- * ⚠ Yığın bir `role="region"` ve `aria-live` bölgesi; adsız bir bölge
742
- * ekran okuyucuda yalnızca "bölge" diye okunur.
676
+ * ⚠ Yığın bir `role="region"` ve `aria-live` bölgesi; adsız bir bölge ekran okuyucuda yalnızca
677
+ * "bölge" diye okunur.
743
678
  */
744
679
  notifications: string;
745
680
  /** Vazgeçme eylemi. `ConfirmDialog`, `PromptDialog`. */
@@ -793,19 +728,45 @@ export declare type HanuiLabels = Partial<{
793
728
  empty: string;
794
729
  loading: string;
795
730
  }>;
731
+ /**
732
+ * Sohbet bileşenleri (`@ahmetilhn/hanui/chat`). Çağrı yerine ÖZGÜ metinler buraya girmez:
733
+ * `PromptInput.placeholder`, `ReasoningBlock.summary`, `ToolCall.name`.
734
+ */
735
+ chat: Partial<{
736
+ /** Sohbet akışının bölge adı ("Sohbet"). `ChatThread`. */
737
+ thread: string;
738
+ /** Gönder düğmesi. `PromptInput`. */
739
+ send: string;
740
+ /** Akışı durdur düğmesi. `PromptInput`. */
741
+ stop: string;
742
+ /** Kullanıcı yukarı kaydırınca beliren düğme ("En yeniye in"). `ChatThread`. */
743
+ scrollToLatest: string;
744
+ /** Yanıt tamamlandığında duyurulan cümle ("Yanıt hazır"). `ChatThread`. */
745
+ replyReady: string;
746
+ /** Mesaj eylemleri araç çubuğunun adı. `MessageActions`. */
747
+ messageActions: string;
748
+ /** Kaynak listesinin adı ("Kaynaklar"). `SourceList`. */
749
+ sources: string;
750
+ /** Atıf numarasının okunan adı, örn. `n => 'Kaynak ' + n`. `Citation`. */
751
+ citation: Formatter<[index: number]>;
752
+ /** stderr satırının önündeki gizli işaret ("hata çıktısı"): renk tek başına anlam taşımaz. */
753
+ stderr: string;
754
+ /** Araç çağrısının durum metinleri. `ToolCall`. */
755
+ toolStatus: Partial<Record<'running' | 'ok' | 'error' | 'aborted' | 'interrupted', string>>;
756
+ /** Kod bloğunu kopyalama düğmesi, örn. `language => language + ' kodunu kopyala'`. `CodeBlock`. */
757
+ codeCopy: Formatter<[language: string]>;
758
+ /** Kopyalandıktan sonra duyurulan cümle. `CodeBlock`. */
759
+ codeCopied: string;
760
+ }>;
796
761
  copyField: Partial<{
797
- /** Kopyalama düğmesinin adı. Değeri İÇERİR: bir listede on beş düğme var
798
- * ve hepsi "Kopyala" diye okunduğunda hangisi olduğu belli olmuyordu. */
762
+ /** Kopyalama düğmesinin adı. */
799
763
  copy: Formatter<[value: string]>;
800
764
  copied: Formatter<[value: string]>;
801
765
  announcement: string;
802
766
  }>;
803
767
  /**
804
768
  * Dosya yukleme.
805
- *
806
769
  * ⚠ `tooLarge` bir BICIMLENDIRICI: mesaj dosya adini ve siniri TASIMALI.
807
- * Sabit bir "cok buyuk" metni, on dosyalik bir listede hangisinin
808
- * reddedildigini soylemiyordu.
809
770
  */
810
771
  fileUpload: Partial<{
811
772
  tooLarge: Formatter<[name: string, max: string]>;
@@ -816,10 +777,7 @@ export declare type HanuiLabels = Partial<{
816
777
  }>;
817
778
  /**
818
779
  * Sayisal gostergenin YON metni.
819
- *
820
- * ⚠ Uc deger de SR-ONLY: ok isareti gorsel bir sinyal ve ekran okuyucuya
821
- * hicbir sey soylemiyor. Verilmezse gosterge "yuzde 12" der, artis mi
822
- * azalis mi belirsiz kalir.
780
+ * ⚠ Uc deger de SR-ONLY: ok isareti gorsel bir sinyal ve ekran okuyucuya hicbir sey soylemiyor.
823
781
  */
824
782
  stat: Partial<{
825
783
  increase: string;
@@ -848,8 +806,7 @@ export declare type HanuiLabels = Partial<{
848
806
  srLabel: Formatter<[value: number, count: number | undefined]>;
849
807
  /** Puan girişinde yıldız sayısı ("4 yıldız"). */
850
808
  starCount: Formatter<[star: number]>;
851
- /** Beş puanın anlamı. Dolu yıldız sayısı tek başına bir şekil sinyali;
852
- * yanındaki metin renk körü kullanıcıya ikinci bir ipucu verir. */
809
+ /** Beş puanın anlamı. */
853
810
  scale: Record<1 | 2 | 3 | 4 | 5, string>;
854
811
  }>;
855
812
  }>;
@@ -859,10 +816,7 @@ export declare type HanuiLinkComponent = ComponentType<HanuiLinkProps>;
859
816
 
860
817
  /**
861
818
  * Bileşenden yönlendiriciye geçirilecek ek props.
862
- *
863
- * @example
864
- * // Next.js App Router: sayfa numarasına basınca liste yukarı sıçramasın.
865
- * <Pagination linkProps={{ scroll: false }} … />
819
+ * @example // Next.js App Router: sayfa numarasına basınca liste yukarı sıçramasın.…
866
820
  */
867
821
  export declare type HanuiLinkExtraProps = Record<string, unknown>;
868
822
 
@@ -873,7 +827,7 @@ export declare type HanuiLinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {
873
827
  [key: string]: unknown;
874
828
  };
875
829
 
876
- /** Ölçü ezmeleri. Kısmî verilebilir; verilmeyen her ölçü varsayılanında kalır. */
830
+ /** Ölçü ezmeleri. */
877
831
  export declare type HanuiMetrics = Partial<Record<HanuiMetricToken, string>>;
878
832
 
879
833
  /** Ölçü token adları — `METRIC_TOKENS`ten türetilir. */
@@ -881,11 +835,7 @@ export declare type HanuiMetricToken = keyof typeof METRIC_TOKENS;
881
835
 
882
836
  /**
883
837
  * Kütüphane sağlayıcısı.
884
- *
885
- * @example
886
- * <HanuiProvider linkComponent={NextLink} theme={{ light: { blue: '#0d6efd' } }}>
887
- * <App />
888
- * </HanuiProvider>
838
+ * @example <HanuiProvider linkComponent={NextLink} theme={{ light: { link: '#0a58ca' } }}> <App…
889
839
  */
890
840
  export declare const HanuiProvider: FC<Props>;
891
841
 
@@ -894,15 +844,7 @@ export declare type HanuiResolvedTokens = Record<HanuiToken, string>;
894
844
 
895
845
  /**
896
846
  * Dışarıdan verilebilecek tema yapılandırması.
897
- *
898
- * @example
899
- * initHanui({
900
- * theme: {
901
- * light: { blue: '#0d6efd', 'blue-text': '#0a58ca' },
902
- * dark: { blue: '#6ea8fe' },
903
- * fonts: { heading: 'Archivo, sans-serif' },
904
- * },
905
- * });
847
+ * @example initHanui({ theme: { light: { link: '#0a58ca', 'ring-color': '#0d6efd' }, dark: {…
906
848
  */
907
849
  export declare type HanuiThemeConfig = Partial<{
908
850
  light: HanuiThemeTokens;
@@ -910,24 +852,32 @@ export declare type HanuiThemeConfig = Partial<{
910
852
  fonts: HanuiFonts;
911
853
  /**
912
854
  * Ölçü ezmeleri — yarıçap, boşluk, punto, süre.
913
- *
914
- * @example
915
- * initHanui({ theme: { metrics: { 'radius-md': '2px', 'radius-lg': '4px' } } });
855
+ * @example initHanui({ theme: { metrics: { 'radius-md': '2px', 'radius-lg': '4px' } } });
916
856
  */
917
857
  metrics: HanuiMetrics;
918
858
  }>;
919
859
 
860
+ /**
861
+ * İLK BOYAMADAN ÖNCE tema — `<head>` içine, sunucu düzeninde.
862
+ *
863
+ * Kayıtlı açık seçimi (`light` / `dark`) `<html data-hanui-theme>`e yazar; kayıt yoksa sistem
864
+ * tercihi izlenir. Sunucu çıktısındaki satır içi betik HTML ayrıştırılırken çalışır; React onu
865
+ * istemcide YENİDEN çalıştırmaz.
866
+ *
867
+ * ⚠ BİR BİLEŞEN, fonksiyon değil: paket `'use client'` taşıdığı için dışa verilen düz bir
868
+ * fonksiyon Next'in sunucu bileşeninde ÇAĞRILAMIYOR ("Attempted to call … from the server").
869
+ * Bileşen ise sunucuda da çizilir. Bu yüzden 5.1 taslağındaki `themeBootScript()` dışa verilmedi.
870
+ * @example <head><HanuiThemeScript storageKey="theme" /></head>
871
+ */
872
+ export declare const HanuiThemeScript: FC<Props_2>;
873
+
920
874
  declare type HanuiThemeState = {
921
875
  /**
922
- * ÇÖZÜLMÜŞ tema — ekranda çizili olan. `preference` `system` iken bu alan
923
- * işletim sisteminin o anki tercihini taşır.
876
+ * ÇÖZÜLMÜŞ tema — ekranda çizili olan. `preference` `system` iken bu alan işletim sisteminin o
877
+ * anki tercihini taşır.
924
878
  */
925
879
  scheme: HanuiColorScheme;
926
- /**
927
- * Kullanıcının SEÇİMİ. Üç durumlu bir tema anahtarı (Açık / Koyu / Sistem)
928
- * bunu okur; `scheme` okunsaydı "Sistem" seçiliyken düğme "Koyu"yu işaretli
929
- * gösterirdi.
930
- */
880
+ /** Kullanıcının SEÇİMİ. */
931
881
  preference: HanuiColorPreference;
932
882
  /** `'system'` verildiğinde AÇIK seçim silinir ve sistem tercihi izlenir. */
933
883
  setScheme: (preference: HanuiColorPreference) => void;
@@ -937,20 +887,28 @@ declare type HanuiThemeState = {
937
887
  isReady: boolean;
938
888
  };
939
889
 
940
- /** Bir temanın token → değer eşlemesi. Kısmî verilebilir; eksikler varsayılandan gelir. */
890
+ /** Bir temanın token → değer eşlemesi. */
941
891
  export declare type HanuiThemeTokens = Partial<Record<HanuiToken, string>>;
942
892
 
943
893
  /** Token adları — `LIGHT_THEME`den türetilir, elle listelenmez. */
944
894
  export declare type HanuiToken = keyof typeof LIGHT_THEME;
945
895
 
896
+ /**
897
+ * `Escape`i tüketecek AÇIK bir yüzey var mı — kipsel pencere, açılır panel, bildirim.
898
+ * ⚠ Sayfa düzeyinde `Escape` dinleyen her kod (sohbetin "akışı durdur" kısayolu gibi) önce bunu
899
+ * sorar. Sormayan bir dinleyici, kullanıcı yalnızca bir modalı kapatmak isterken arkadaki işi de
900
+ * iptal ediyordu. Yüzey kapanırken yığından AYNI olayın içinde değil, bir sonraki render'da
901
+ * çıkar; yani dinleyici o tuş vuruşunda hâlâ `true` görür — istenen de bu.
902
+ */
903
+ export declare const hasOpenSurface: () => boolean;
904
+
946
905
  declare type HubProps = {
947
- /** Kapatma düğmelerinin erişilebilir adı. Verilmezse `labels.close`. */
906
+ /** Kapatma düğmelerinin erişilebilir adı. */
948
907
  closeLabel?: string;
949
908
  /**
950
909
  * Yığının erişilebilir adı ("Bildirimler").
951
- *
952
- * ⚠ Yığın artık bir `role="region"` ve canlı bölge; adsız bir bölge ekran
953
- * okuyucuda yalnızca "bölge" diye okunur.
910
+ * ⚠ Yığın artık bir `role="region"` ve canlı bölge; adsız bir bölge ekran okuyucuda yalnızca
911
+ * "bölge" diye okunur.
954
912
  */
955
913
  regionLabel?: string;
956
914
  className?: string;
@@ -963,12 +921,10 @@ declare const IconButton_2: ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLB
963
921
  icon: ReactNode;
964
922
  /** Görsel etiketi olmayan düğmenin erişilebilir adı — ZORUNLU. */
965
923
  label: string;
966
- /**
967
- * `cart` <strong>yalnızca dönüşüm eyleminde</strong> kullanılır — ekranda
968
- * görünen tek doygun turuncu odur. Nötr dolgu için `solid`.
969
- */
924
+ /** `cart` yalnızca dönüşüm eyleminde kullanılır — ekrandaki en parlak yeşil odur. */
970
925
  variant?: IconButtonVariant;
971
926
  size?: "sm" | "md";
927
+ shape?: IconButtonShape;
972
928
  /** Verilirse öğe bir bağlantı olarak çizilir. */
973
929
  href?: string;
974
930
  /** Yönlendiriciye geçirilecek ek props. */
@@ -976,32 +932,23 @@ linkProps?: HanuiLinkExtraProps;
976
932
  testId?: string;
977
933
  } & RefAttributes<HTMLButtonElement>>;
978
934
 
935
+ /** Köşe biçimi. `round` tam daire — sohbet girdisindeki gönder / durdur gibi. Ölçü değişmez. */
936
+ declare type IconButtonShape = 'rounded' | 'round';
937
+
979
938
  export declare type IconButtonVariant = 'ghost' | 'outline' | 'solid' | 'cart' | 'danger';
980
939
 
981
940
  /**
982
- * Kütüphaneyi <strong>React ağacının dışından</strong> yapılandırır.
983
- *
984
- * @example
985
- * // app/layout.tsx — <head> içine, boyamadan önce.
986
- * <script dangerouslySetInnerHTML={{ __html: `
987
- * document.documentElement.dataset.hanuiTheme =
988
- * localStorage.getItem('theme') ?? 'light';
989
- * ` }} />
941
+ * Kütüphaneyi React ağacının dışından yapılandırır.
942
+ * @example // app/layout.tsx — <head> içine, boyamadan önce. <script…
990
943
  */
991
944
  export declare const initHanui: (options?: InitHanuiOptions) => void;
992
945
 
993
946
  export declare type InitHanuiOptions = Partial<{
994
- /** Tema ve ölçü ezmeleri. Yalnızca değiştirilen token'lar verilir. */
947
+ /** Tema ve ölçü ezmeleri. */
995
948
  theme: HanuiThemeConfig;
996
- /**
997
- * Başlangıç şeması. Verilmezse `<html data-hanui-theme>` neyse o kalır;
998
- * o da yoksa sistem tercihi (`prefers-color-scheme`) devreye girer.
999
- */
949
+ /** Başlangıç şeması. */
1000
950
  colorScheme: HanuiColorScheme;
1001
- /**
1002
- * Bilgi yoğunluğu. Verilmezse `<html data-hanui-density>` neyse o kalır;
1003
- * o da yoksa `default`.
1004
- */
951
+ /** Bilgi yoğunluğu. */
1005
952
  density: HanuiDensity;
1006
953
  }>;
1007
954
 
@@ -1013,65 +960,81 @@ declare const Input_2: ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLIn
1013
960
  prefix?: ReactNode;
1014
961
  /** Sağda gösterilen ikon veya birim (göz simgesi, "kg"). */
1015
962
  suffix?: ReactNode;
1016
- /** Teknik veri: SKU, kod, seri numarası — monospace ve harf aralıklı. */
963
+ /** Teknik veri: */
1017
964
  isTechnical?: boolean;
1018
965
  testId?: string;
1019
966
  } & RefAttributes<HTMLInputElement>>;
1020
967
 
968
+ export declare const Kbd: typeof Kbd_2;
969
+
970
+ /**
971
+ * Klavye kısayolu — `<kbd>` içinde her tuş kendi `<kbd>`si (HTML'in birleşik tuş deseni).
972
+ * Ekran okuyucu "Shift artı Enter" diye okur; yalnızca görsel bir ipucuysa `aria-hidden` geçin.
973
+ */
974
+ declare const Kbd_2: FC<Props_24>;
975
+
1021
976
  /** AÇIK TEMA — varsayılan. */
1022
977
  export declare const LIGHT_THEME: {
1023
- readonly page: "#f7fcf8";
1024
- readonly surface: "#fdfefd";
1025
- readonly 'surface-2': "#e9f7ed";
1026
- readonly 'surface-3': "#dff3e5";
978
+ readonly page: "#faf9f5";
979
+ readonly surface: "#fffefc";
980
+ readonly 'surface-2': "#efe9de";
981
+ readonly 'surface-3': "#e8e0d3";
1027
982
  /** Girinti sayfanın ALTINA iner (arama kutusu, kod bloğu, pasif girdi). */
1028
- readonly 'surface-inset': "#f1faf4";
1029
- readonly border: "#c0eacf";
1030
- readonly 'border-strong': "#aaddbf";
1031
- readonly text: "#010f0b";
1032
- readonly 'text-2': "#325a4d";
1033
- readonly 'text-3': "#467060";
1034
- readonly shell: "#00322a";
1035
- readonly 'shell-2': "#154c3d";
1036
- readonly 'shell-3': "#225f4d";
983
+ readonly 'surface-inset': "#f5f0e8";
984
+ readonly border: "#ded8d0";
985
+ readonly 'border-strong': "#d0c8bd";
986
+ readonly text: "#141413";
987
+ readonly 'text-2': "#4d4b46";
988
+ readonly 'text-3': "#67655e";
989
+ readonly shell: "#181715";
990
+ readonly 'shell-2': "#1f1e1b";
991
+ readonly 'shell-3': "#2a2925";
992
+ readonly 'on-shell': "#faf9f5";
993
+ readonly 'on-shell-2': "#b4b1a9";
994
+ /** Mürekkep üzerinde hata metni (terminalin stderr'i). Açık temanın `bad-fg`i burada 2:1'in altında. */
995
+ readonly 'on-shell-danger': "#f2a099";
996
+ /** Koyu temada kabuk sayfadan 1,03:1 ayrışıyor; görünür kılan bu çizgi. */
997
+ readonly 'shell-line': "#33312d";
1037
998
  readonly action: "#00322a";
1038
999
  readonly 'action-hover': "#154c3d";
1039
1000
  readonly 'action-active': "#225f4d";
1040
- readonly 'on-action': "#fdfefd";
1001
+ readonly 'on-action': "#fffefc";
1041
1002
  /** Dolgunun SINIRI; açık temada dolgunun kendisi (bkz. `ACTION_LINE`). */
1042
1003
  readonly 'action-line': "#00322a";
1043
- /** Pasif dolgu; saydamlık DEĞİL kendi rengi (bkz. Button `:disabled`). */
1044
- readonly 'action-soft': "#aaddbf";
1004
+ /** Pasif dolgu; saydamlık DEĞİL kendi rengi (bkz. */
1005
+ readonly 'action-soft': "#d0c8bd";
1045
1006
  /** PASİF DOLGU ÜZERİNDEKİ METİN. */
1046
- readonly 'on-action-soft': "#1d4238";
1007
+ readonly 'on-action-soft': "#3d3d3a";
1047
1008
  readonly cart: "#1ba055";
1048
1009
  readonly 'cart-hover': "#20b360";
1049
1010
  readonly 'cart-active': "#19934e";
1050
1011
  readonly 'cart-soft': "#84cb97";
1051
1012
  readonly 'on-cart': "#021407";
1052
- readonly role: "#1f7b56";
1053
- readonly 'role-hover': "#176446";
1054
- readonly 'role-active': "#115037";
1055
- readonly 'role-text': "#17704e";
1056
- readonly 'role-tint': "#d5f6e4";
1057
- readonly 'role-line': "#93dfba";
1058
- readonly 'on-role': "#fdfefd";
1013
+ readonly selected: "#141413";
1014
+ readonly 'selected-hover': "#252523";
1015
+ readonly 'selected-active': "#3d3d3a";
1016
+ readonly 'on-selected': "#faf9f5";
1017
+ /** Seçili satır / seçenek zemini — kenarlık ya da işaretle BİRLİKTE (seçim yalnız zeminle verilmez). */
1018
+ readonly 'selected-tint': "#e8e0d3";
1019
+ readonly 'selected-line': "#141413";
1020
+ readonly link: "#17704e";
1021
+ readonly 'link-hover': "#176446";
1059
1022
  readonly 'ok-bg': "#c2f6cf";
1060
1023
  readonly 'ok-fg': "#166e3a";
1061
1024
  readonly 'ok-line': "#7eda99";
1062
- readonly 'warn-bg': "#f6e4cf";
1025
+ readonly 'warn-bg': "#f9dcb9";
1063
1026
  readonly 'warn-fg': "#7c5212";
1064
1027
  readonly 'warn-line': "#e8b97f";
1065
- readonly 'off-bg': "#daece5";
1066
- readonly 'off-fg': "#4d625a";
1067
- readonly 'off-line': "#afcabf";
1068
- readonly 'bad-bg': "#f6e2e0";
1028
+ readonly 'off-bg': "#dcdad6";
1029
+ readonly 'off-fg': "#5b5851";
1030
+ readonly 'off-line': "#c5c2bb";
1031
+ readonly 'bad-bg': "#f9d8d5";
1069
1032
  readonly 'bad-fg': "#a91922";
1070
1033
  readonly 'bad-line': "#e9b3ae";
1071
1034
  readonly 'oem-bg': "#a7f7c8";
1072
1035
  readonly 'oem-fg': "#0c5d3a";
1073
1036
  readonly 'oem-line': "#6ace97";
1074
- readonly 'alt-bg': "#e9e4f6";
1037
+ readonly 'alt-bg': "#e5dcf9";
1075
1038
  readonly 'alt-fg': "#751dc8";
1076
1039
  readonly 'alt-line': "#c9bae7";
1077
1040
  readonly 'sale-bg': "#c2f6cf";
@@ -1080,28 +1043,25 @@ export declare const LIGHT_THEME: {
1080
1043
  readonly 'green-accent': "#18904c";
1081
1044
  readonly 'green-accent-hover': "#12783e";
1082
1045
  readonly 'on-green': "#021407";
1083
- readonly star: "#8c6a11";
1046
+ readonly star: "#846310";
1084
1047
  readonly 'danger-solid': "#c21625";
1085
1048
  readonly 'danger-solid-hover': "#a2111d";
1086
- readonly 'on-danger': "#fdfefd";
1087
- readonly 'nav-bg': "#fdfefd";
1088
- readonly 'nav-bg-2': "#e9f7ed";
1089
- readonly 'nav-fg': "#010f0b";
1090
- readonly 'nav-fg-2': "#325a4d";
1091
- readonly 'nav-fg-3': "#467060";
1092
- readonly 'nav-line': "#d5f0de";
1093
- readonly 'nav-line-strong': "#aaddbf";
1094
- readonly 'nav-hover': "#e9f7ed";
1095
- readonly 'footer-bg': "#e9f7ed";
1049
+ readonly 'on-danger': "#fffefc";
1050
+ readonly 'nav-bg': "#faf9f5";
1051
+ readonly 'nav-bg-2': "#efe9de";
1052
+ readonly 'nav-fg': "#141413";
1053
+ readonly 'nav-fg-2': "#4d4b46";
1054
+ readonly 'nav-fg-3': "#67655e";
1055
+ readonly 'nav-line': "#e4dfd8";
1056
+ readonly 'nav-line-strong': "#d0c8bd";
1057
+ readonly 'nav-hover': "#efe9de";
1058
+ readonly 'footer-bg': "#efe9de";
1096
1059
  readonly 'band-bg': "#00322a";
1097
1060
  readonly 'band-fg': "#e9f7ed";
1098
1061
  readonly 'band-fg-2': "#8abaa1";
1099
1062
  /**
1100
- * Bandın ÜÇÜNCÜ metin kademesi ve imza vurgusu.
1101
- *
1102
- * <p>Panelin kenar çubuğu rayı bu ikisini bir dönem SABİT HEX olarak
1103
- * taşıyordu (`#799a8f`, `#43ff9c`) — uygulamada kalan son renk
1104
- * literalleriydi ve paletten bağımsız hareket ediyorlardı.
1063
+ * Bandın ÜÇÜNCÜ metin kademesi ve imza vurgusu. Panelin kenar çubuğu rayı bu ikisini bir dönem
1064
+ * SABİT HEX olarak taşıyordu (`#799a8f`, `#43ff9c`)
1105
1065
  */
1106
1066
  readonly 'band-fg-3': "#79a790";
1107
1067
  readonly 'band-accent': "#43ff9c";
@@ -1114,7 +1074,7 @@ export declare const LIGHT_THEME: {
1114
1074
  readonly 'shadow-xl': `0 8px 16px ${string}, 0 28px 56px ${string}`;
1115
1075
  /** Yapışkan alt bar; gölge YUKARI düşer. */
1116
1076
  readonly 'shadow-up': `0 -2px 4px ${string}, 0 -8px 24px ${string}`;
1117
- /** Odak halkası MAVİ: odak bir gezinme olayıdır, bir dönüşüm değil. */
1077
+ /** Odak halkası BAĞLANTI YEŞİLİ: odak bir gezinme olayıdır. Çam DEĞİL — birincil dolguyla aynı ton. */
1118
1078
  readonly ring: `0 0 0 3px ${string}`;
1119
1079
  readonly 'ring-color': "#1f7b56";
1120
1080
  readonly 'ring-danger': `0 0 0 3px ${string}`;
@@ -1122,16 +1082,23 @@ export declare const LIGHT_THEME: {
1122
1082
  readonly scrim: string;
1123
1083
  readonly 'scrim-soft': string;
1124
1084
  readonly glass: string;
1125
- readonly 'glass-solid': "#fdfefd";
1126
- readonly 'on-scrim': "#fdfefd";
1127
- readonly 'skeleton-a': "#e9f7ed";
1128
- readonly 'skeleton-b': "#f7fcf8";
1085
+ readonly 'glass-solid': "#fffefc";
1086
+ readonly 'on-scrim': "#fffefc";
1087
+ readonly 'skeleton-a': "#efe9de";
1088
+ readonly 'skeleton-b': "#faf9f5";
1129
1089
  readonly track: string;
1130
1090
  /** Görsel yer tutucu (medya yoksa). */
1131
- readonly 'media-bg': "#e9f7ed";
1091
+ readonly 'media-bg': "#efe9de";
1132
1092
  readonly 'glow-1': string;
1133
1093
  readonly 'glow-2': string;
1134
1094
  readonly 'glow-cart': string;
1095
+ readonly 'cat-1': "#2774cd";
1096
+ readonly 'cat-2': "#b75225";
1097
+ readonly 'cat-3': "#2c8761";
1098
+ readonly 'cat-4': "#8b7126";
1099
+ readonly 'cat-5': "#c02f8f";
1100
+ readonly 'series-1': "#252523";
1101
+ readonly 'series-2': "#8f3beb";
1135
1102
  };
1136
1103
 
1137
1104
  declare type LinkProps = BaseProps_4 & {
@@ -1151,7 +1118,7 @@ export declare type ListboxNavigation<T extends HTMLElement = HTMLElement> = {
1151
1118
  };
1152
1119
 
1153
1120
  export declare type ListboxNavigationOptions = {
1154
- /** Seçenek sayısı. Liste süzüldüğünde değişir. */
1121
+ /** Seçenek sayısı. */
1155
1122
  count: number;
1156
1123
  isOpen: boolean;
1157
1124
  /** Açılışta etkin olacak dizin — genellikle seçili olan. */
@@ -1167,7 +1134,7 @@ export declare const matchesSearch: (haystack: string, needle: string) => boolea
1167
1134
  export declare const Menu: typeof Menu_2;
1168
1135
 
1169
1136
  /** Menü — bir listeden EYLEM seçme. */
1170
- declare const Menu_2: ({ trigger, items, label, side, align, className, testId, }: Props_4) => JSX.Element | null;
1137
+ declare const Menu_2: ({ trigger, items, label, side, align, className, testId, }: Props_5) => JSX.Element | null;
1171
1138
 
1172
1139
  export declare type MenuItem = {
1173
1140
  id: string;
@@ -1187,12 +1154,7 @@ export declare const METRIC_TOKENS: {
1187
1154
  readonly 'radius-lg': "12px";
1188
1155
  readonly 'radius-xl': "16px";
1189
1156
  readonly 'radius-pill': "999px";
1190
- /**
1191
- * YOĞUNLUK ÇARPANLARI — akışkan ölçeğin üzerine binen tek ayar.
1192
- *
1193
- * <p>Varsayılan `1`, yani hiçbir şeyi değiştirmez; `data-hanui-density`
1194
- * ya da tüketicinin kendi metrik ezmesi bunları düşürür.
1195
- */
1157
+ /** YOĞUNLUK ÇARPANLARI — akışkan ölçeğin üzerine binen tek ayar. */
1196
1158
  readonly 'type-scale': "1";
1197
1159
  readonly 'space-scale': "1";
1198
1160
  readonly 'space-0': "0";
@@ -1215,17 +1177,7 @@ export declare const METRIC_TOKENS: {
1215
1177
  readonly 'font-size-2xl': string;
1216
1178
  readonly 'font-size-3xl': string;
1217
1179
  readonly 'font-size-4xl': string;
1218
- /**
1219
- * FORM DENETİMİ PUNTOSU — ölçekten AYRI ve 16px'in altına inmez.
1220
- *
1221
- * <p>⚠ iOS Safari, hesaplanan puntosu 16px'in ALTINDA olan bir `input`a
1222
- * odaklanıldığında sayfayı zorla yakınlaştırır ve geri çıkmaz. `font-size-base`
1223
- * akışkan olunca dar ekranda 15px'e iniyor, yani bu düzeltme olmadan
1224
- * **telefonda her form alanı sayfayı zıplatırdı.**
1225
- *
1226
- * <p>`max()` kullanılıyor çünkü ölçek büyüdüğünde denetim de büyümeli;
1227
- * sabit `16px` yazmak üst uçta alanı ölçeğin gerisinde bırakırdı.
1228
- */
1180
+ /** FORM DENETİMİ PUNTOSU — ölçekten AYRI ve 16px'in altına inmez. */
1229
1181
  readonly 'font-size-control': `max(16px, ${string})`;
1230
1182
  readonly 'leading-none': "1";
1231
1183
  readonly 'leading-tight': "1.16";
@@ -1246,18 +1198,17 @@ export declare const METRIC_TOKENS: {
1246
1198
  readonly 'ease-spring': "cubic-bezier(0.34, 1.4, 0.64, 1)";
1247
1199
  readonly 'duration-spin': "700ms";
1248
1200
  readonly 'duration-shimmer': "1400ms";
1201
+ /** Durum noktasının nabzı — "çalışıyor / bağlanıyor"; 700 ms telaş, 2 sn ölü gibi okunuyordu. */
1202
+ readonly 'duration-pulse': "1600ms";
1249
1203
  };
1250
1204
 
1251
- /**
1252
- * Kırılma noktaları — `styles/_variables.scss` içindeki `$breakpoint-*` ile
1253
- * <strong>aynı</strong> değerler.
1254
- */
1205
+ /** Kırılma noktaları — `styles/_variables.scss` içindeki `$breakpoint-*` ile aynı değerler. */
1255
1206
  export declare const MOBILE_BREAKPOINT = 640;
1256
1207
 
1257
1208
  export declare const Modal: typeof Modal_2;
1258
1209
 
1259
1210
  /** Kip pencere (modal). */
1260
- declare const Modal_2: ({ isOpen, onClose, title, closeLabel, children, description, footer, icon, tone, size, isDismissable, className, testId, }: Props_43) => JSX.Element;
1211
+ declare const Modal_2: ({ isOpen, onClose, title, closeLabel, children, description, footer, icon, tone, size, isDismissable, className, testId, }: Props_47) => JSX.Element;
1261
1212
 
1262
1213
  export declare type ModalTone = 'neutral' | 'danger' | 'warning' | 'success' | 'info';
1263
1214
 
@@ -1267,30 +1218,26 @@ declare type MultipleProps<T extends string> = BaseProps<T> & {
1267
1218
  onChange: (value: T[]) => void;
1268
1219
  };
1269
1220
 
1270
- /** Serbest metin arama anahtarı: ASCII, küçük harf, tek boşlukla ayrılmış. */
1221
+ /** Serbest metin arama anahtarı: */
1271
1222
  export declare const normalizeSearchTerm: (value: string) => string;
1272
1223
 
1273
1224
  export declare const PageHeader: typeof PageHeader_2;
1274
1225
 
1275
1226
  /** Sayfa başlığı — her ekranın aynı giriş bloğu. */
1276
- declare const PageHeader_2: FC<Props_26>;
1227
+ declare const PageHeader_2: FC<Props_29>;
1277
1228
 
1278
1229
  export declare const Pagination: typeof Pagination_2;
1279
1230
 
1280
1231
  /** Sayfalama. */
1281
- declare const Pagination_2: FC<Props_51>;
1232
+ declare const Pagination_2: FC<Props_55>;
1282
1233
 
1283
1234
  export declare const Panel: typeof Panel_2;
1284
1235
 
1285
1236
  /**
1286
1237
  * Panel — başlığı olan içerik kutusu.
1287
- *
1288
- * @example
1289
- * <Panel title="Profil bilgileri" description="Fatura bu bilgilerle kesilir">
1290
- * <PanelForm>…alanlar…</PanelForm>
1291
- * </Panel>
1238
+ * @example <Panel title="Profil bilgileri" description="Fatura bu bilgilerle kesilir">…
1292
1239
  */
1293
- declare const Panel_2: FC<Props_27>;
1240
+ declare const Panel_2: FC<Props_30>;
1294
1241
 
1295
1242
  /** Panel içindeki form ızgarası. */
1296
1243
  export declare const PanelForm: FC<PanelFormProps>;
@@ -1302,7 +1249,7 @@ declare type PanelFormProps = {
1302
1249
  className?: string;
1303
1250
  };
1304
1251
 
1305
- /** İki alanı yan yana koyan satır. Dar ekranda alt alta düşer. */
1252
+ /** İki alanı yan yana koyan satır. */
1306
1253
  export declare const PanelRow: FC<PanelRowProps>;
1307
1254
 
1308
1255
  declare type PanelRowProps = {
@@ -1313,18 +1260,15 @@ declare type PanelRowProps = {
1313
1260
  export declare const PasswordInput: typeof PasswordInput_2;
1314
1261
 
1315
1262
  /**
1316
- * Şifre girdisi — yanında göz düğmesi.
1317
- *
1318
- * `hanparca-admin` ve `hanparca-frontend`te BİREBİR AYNI dosya olarak
1319
- * duruyordu; iki kopya da hanui'nin `Input` + `IconButton` bileşenlerini
1320
- * sarmalıyordu, yani zaten bu kütüphaneye aitti.
1263
+ * Şifre girdisi — yanında göz düğmesi. `hanparca-admin` ve `hanparca-frontend`te BİREBİR AYNI dosya
1264
+ * olarak duruyordu
1321
1265
  */
1322
- declare const PasswordInput_2: FC<Props_13>;
1266
+ declare const PasswordInput_2: FC<Props_14>;
1323
1267
 
1324
1268
  export declare const Popover: typeof Popover_2;
1325
1269
 
1326
- /** Popover — <strong>eylem taşıyabilen</strong>, odaklanabilir yüzey. */
1327
- declare const Popover_2: ({ trigger, children, label, side, align, isOpen: controlledOpen, onOpenChange, className, testId, }: Props_5) => JSX.Element | null;
1270
+ /** Popover — eylem taşıyabilen, odaklanabilir yüzey. */
1271
+ declare const Popover_2: ({ trigger, children, label, side, align, isOpen: controlledOpen, onOpenChange, className, testId, }: Props_6) => JSX.Element | null;
1328
1272
 
1329
1273
  /** Tercih edilen kenar boyunca hizalama. */
1330
1274
  export declare type PositionAlign = 'start' | 'center' | 'end';
@@ -1350,55 +1294,42 @@ export declare type PositioningState = {
1350
1294
  /** ÇÖZÜLMÜŞ kenar: çarpışma yüzünden tercih edilenin karşıtı olabilir. */
1351
1295
  side: PositionSide;
1352
1296
  /**
1353
- * Tetikleyicinin ölçülen genişliği (px) — açılır listeler panelin genişliğini
1354
- * buna bağlıyor.
1355
- *
1356
- * ⚠ ÖLÇÜM BURADA, ÇAĞIRANDA DEĞİL. `Combobox` ve `Select` bu değeri render
1357
- * sırasında `triggerRef.current?.offsetWidth` ile okuyordu; render sırasında
1358
- * DOM okumak iki şeyi birden kırıyor: ilk render'da ref henüz boş olabilir
1359
- * (`undefined` genişlik) ve değer bir daha GÜNCELLENMEZ — pencere yeniden
1360
- * boyutlandığında ya da yazı tipi geldiğinde panel bayat genişlikte kalır.
1361
- * Kanca tetikleyiciyi `ResizeObserver` ile zaten izliyor, yani ölçüm burada
1362
- * bedavaya reaktif.
1297
+ * Tetikleyicinin ölçülen genişliği (px) — açılır listeler panelin genişliğini buna bağlıyor.
1298
+ * ⚠ ÖLÇÜM BURADA, ÇAĞIRANDA DEĞİL. `Combobox` ve `Select` bu değeri render sırasında
1299
+ * `triggerRef.current?.offsetWidth` ile okuyordu
1363
1300
  */
1364
1301
  anchorWidth: number;
1365
- /** İlk ölçüm yapıldı mı. Yapılmadan çizilen yüzey sol üst köşede parlıyor. */
1302
+ /** İlk ölçüm yapıldı mı. */
1366
1303
  isPositioned: boolean;
1367
1304
  };
1368
1305
 
1369
- /** Yüzeyin tercih ettiği kenar. Yer yoksa karşıtına düşer. */
1306
+ /** Yüzeyin tercih ettiği kenar. */
1370
1307
  export declare type PositionSide = 'top' | 'bottom' | 'left' | 'right';
1371
1308
 
1372
1309
  export declare const Price: typeof Price_2;
1373
1310
 
1374
1311
  /** Tutar gösterimi. */
1375
- declare const Price_2: FC<Props_28>;
1312
+ declare const Price_2: FC<Props_31>;
1376
1313
 
1377
1314
  export declare const Progress: typeof Progress_2;
1378
1315
 
1379
- /** İlerleme çubuğu — <strong>ölçülebilir</strong> bekleme. */
1380
- declare const Progress_2: ({ value, max, label, valueText, isValueVisible, tone, size, className, testId, }: Props_35) => JSX.Element;
1316
+ /** İlerleme çubuğu — ölçülebilir bekleme. */
1317
+ declare const Progress_2: ({ value, max, label, valueText, isValueVisible, tone, size, className, testId, }: Props_38) => JSX.Element;
1381
1318
 
1382
1319
  export declare const ProgressCircle: MemoExoticComponent<({ value, max, label, valueText, isValueVisible, tone, size, className, testId, }: CircleProps) => JSX.Element>;
1383
1320
 
1384
1321
  export declare const PromptDialog: typeof PromptDialog_2;
1385
1322
 
1386
1323
  /** Metin isteyen pencere — `window.prompt()` yerine. */
1387
- declare const PromptDialog_2: FC<Props_47>;
1324
+ declare const PromptDialog_2: FC<Props_51>;
1388
1325
 
1389
1326
  declare type Props = {
1390
1327
  children: ReactNode;
1391
- /**
1392
- * Tema ezmeleri. Yalnızca DEĞİŞTİRİLEN token'lar verilir; verilmeyen her
1393
- * token varsayılanında kalır.
1394
- */
1328
+ /** Tema ezmeleri. */
1395
1329
  theme?: HanuiThemeConfig;
1396
1330
  /**
1397
- * Tüketicinin bağlantı bileşeni. Verilmezse ham `<a>` çizilir.
1398
- *
1399
- * @example
1400
- * import NextLink from 'next/link';
1401
- * <HanuiProvider linkComponent={NextLink}>…</HanuiProvider>
1331
+ * Tüketicinin bağlantı bileşeni.
1332
+ * @example import NextLink from 'next/link'; <HanuiProvider linkComponent={NextLink}>…</Ha…
1402
1333
  */
1403
1334
  linkComponent?: HanuiLinkComponent;
1404
1335
  /** Arayüz metinleri — bir kez, burada. */
@@ -1406,54 +1337,58 @@ declare type Props = {
1406
1337
  };
1407
1338
 
1408
1339
  declare type Props_10 = {
1340
+ /** Radyo grubu adı — aynı gruptaki kartlar ok tuşlarıyla gezilir. */
1341
+ name: string;
1342
+ value: string;
1343
+ isSelected: boolean;
1344
+ isDisabled?: boolean;
1345
+ onChange: (value: string) => void;
1346
+ /** Zengin gövde: kartın içeriği çağırana aittir. */
1347
+ children: ReactNode;
1348
+ } & CommonElementProps;
1349
+
1350
+ declare type Props_11 = {
1409
1351
  min: number;
1410
1352
  max: number;
1411
1353
  step?: number;
1412
1354
  value: RangeValue;
1413
1355
  /** Sürükleme sürerken her adımda çağrılır — ekrandaki değeri günceller. */
1414
1356
  onChange: (value: RangeValue) => void;
1415
- /**
1416
- * Sürükleme <em>bittiğinde</em> çağrılır. Adres çubuğuna yazmak veya
1417
- * sunucuya istek atmak gibi pahalı işler buraya bağlanır.
1418
- */
1357
+ /** Sürükleme bittiğinde çağrılır. */
1419
1358
  onCommit?: (value: RangeValue) => void;
1420
1359
  /** Ham sayıyı okunur metne çevirir ("125000" → "1.250 TL"). */
1421
1360
  formatValue?: (value: number) => string;
1422
1361
  /** Grubun erişilebilir adı ("Fiyat aralığı"). */
1423
1362
  label: string;
1424
- /** Alt kulbun erişilebilir ad eki. Verilmezse `labels.range.min`. */
1363
+ /** Alt kulbun erişilebilir ad eki. */
1425
1364
  minLabel?: string;
1426
- /** Üst kulbun erişilebilir ad eki. Verilmezse `labels.range.max`. */
1365
+ /** Üst kulbun erişilebilir ad eki. */
1427
1366
  maxLabel?: string;
1428
1367
  isDisabled?: boolean;
1429
1368
  className?: string;
1430
1369
  testId?: string;
1431
1370
  };
1432
1371
 
1433
- declare type Props_11 = {
1372
+ declare type Props_12 = {
1434
1373
  value: number | null;
1435
1374
  onChange: (value: number) => void;
1436
1375
  /** Grubun erişilebilir adı ("Ürün puanı"). */
1437
1376
  label: string;
1438
1377
  /**
1439
- * Puan açıklamaları. Hem ekran okuyucuya okunur hem de seçildiğinde
1440
- * yıldızların altında yazar. Verilmezse `labels.rating.scale`.
1378
+ * Puan açıklamaları. Hem ekran okuyucuya okunur hem de seçildiğinde yıldızların altında yazar.
1441
1379
  */
1442
1380
  ratingLabels?: RatingLabels;
1443
- /**
1444
- * Ekran okuyucuda yıldız sayısını okuyan biçimlendirici ("4 yıldız").
1445
- * Verilmezse `labels.rating.starCount`.
1446
- */
1381
+ /** Ekran okuyucuda yıldız sayısını okuyan biçimlendirici ("4 yıldız"). */
1447
1382
  formatStarCount?: (star: number) => string;
1448
1383
  isDisabled?: boolean;
1449
1384
  className?: string;
1450
1385
  testId?: string;
1451
1386
  };
1452
1387
 
1453
- declare type Props_12 = {
1388
+ declare type Props_13 = {
1454
1389
  value: number;
1455
1390
  onChange: (value: number) => void;
1456
- /** Grubun ve girdinin erişilebilir adı. Verilmezse `labels.quantity.label`. */
1391
+ /** Grubun ve girdinin erişilebilir adı. */
1457
1392
  label?: string;
1458
1393
  /** Verilmezse `labels.quantity.decrease`. */
1459
1394
  decreaseLabel?: string;
@@ -1467,28 +1402,28 @@ declare type Props_12 = {
1467
1402
  testId?: string;
1468
1403
  };
1469
1404
 
1470
- declare type Props_13 = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & {
1405
+ declare type Props_14 = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & {
1471
1406
  /** Şifre gizliyken düğmenin erişilebilir adı. */
1472
1407
  showLabel?: string;
1473
1408
  /** Şifre görünürken düğmenin erişilebilir adı. */
1474
1409
  hideLabel?: string;
1475
1410
  };
1476
1411
 
1477
- declare type Props_14 = {
1412
+ declare type Props_15 = {
1478
1413
  values: string[];
1479
1414
  onChange: (values: string[]) => void;
1480
- /** Alanın erişilebilir adı. ZORUNLU. */
1415
+ /** Alanın erişilebilir adı. */
1481
1416
  label: string;
1482
1417
  placeholder?: string;
1483
- /** Her etiketin kaldırma düğmesinin ad öneki ("Kaldır"). ZORUNLU. */
1418
+ /** Her etiketin kaldırma düğmesinin ad öneki ("Kaldır"). */
1484
1419
  removeLabel: string;
1485
- /** Etiketi bitiren tuşlar. Varsayılan `Enter` ve virgül. */
1420
+ /** Etiketi bitiren tuşlar. */
1486
1421
  separators?: string[];
1487
- /** En fazla kaç etiket. Dolduğunda girdi PASİF olur, gizlenmez. */
1422
+ /** En fazla kaç etiket. */
1488
1423
  maxTags?: number;
1489
1424
  isDisabled?: boolean;
1490
1425
  id?: string;
1491
- /** Zorunluluk — `Field`in `FieldChildProps` sözleşmesi. Bkz. `Select.required`. */
1426
+ /** Zorunluluk — `Field`in `FieldChildProps` sözleşmesi. */
1492
1427
  required?: boolean;
1493
1428
  'aria-describedby'?: string;
1494
1429
  'aria-invalid'?: boolean;
@@ -1496,25 +1431,25 @@ declare type Props_14 = {
1496
1431
  testId?: string;
1497
1432
  };
1498
1433
 
1499
- declare type Props_15 = BaseProps_2 & {
1434
+ declare type Props_16 = BaseProps_2 & {
1500
1435
  isRequired?: boolean;
1501
1436
  /** Zorunluluk yıldızının ekran okuyucu karşılığı ("(zorunlu)"). */
1502
1437
  requiredLabel?: string;
1503
1438
  };
1504
1439
 
1505
- declare type Props_16 = {
1440
+ declare type Props_17 = {
1506
1441
  files: UploadFile[];
1507
1442
  /** Kullanıcı dosya seçtiğinde/bıraktığında çağrılır — DOĞRULANMIŞ liste. */
1508
1443
  onSelect: (files: File[]) => void;
1509
1444
  onRemove: (id: string) => void;
1510
- /** Alanın görünür etiketi ve erişilebilir adı. ZORUNLU. */
1445
+ /** Alanın görünür etiketi ve erişilebilir adı. */
1511
1446
  label: string;
1512
1447
  /** Etiketin altındaki kural cümlesi ("PDF veya JPG, en fazla 5 MB"). */
1513
1448
  hint?: string;
1514
1449
  /** `<input accept>` — tarayıcının dosya seçicisini süzer. */
1515
1450
  accept?: string;
1516
1451
  isMultiple?: boolean;
1517
- /** Bayt. Aşan dosya `onSelect`e HİÇ ulaşmaz; hata metni burada üretilir. */
1452
+ /** Bayt. */
1518
1453
  maxSize?: number;
1519
1454
  /** Kaldırma düğmelerinin erişilebilir ad öneki ("Kaldır"). */
1520
1455
  removeLabel: string;
@@ -1530,7 +1465,7 @@ declare type Props_16 = {
1530
1465
  testId?: string;
1531
1466
  };
1532
1467
 
1533
- declare type Props_17 = {
1468
+ declare type Props_18 = {
1534
1469
  children: ReactNode;
1535
1470
  tone?: AlertTone;
1536
1471
  title?: string;
@@ -1540,14 +1475,15 @@ declare type Props_17 = {
1540
1475
  testId?: string;
1541
1476
  };
1542
1477
 
1543
- declare type Props_18 = {
1544
- /** Tam ad; baş harfler buradan üretilir ve görsel yoksa `alt` metnidir. */
1478
+ declare type Props_19 = {
1479
+ /** Tam ad; baş harfler buradan üretilir ve her durumda okunan addır (`aria-label`). */
1545
1480
  name: string;
1546
- /**
1547
- * Profil görseli. Verilmezse baş harf madalyonuna düşer — çağıran tarafın
1548
- * koşul yazması gerekmez.
1549
- */
1481
+ /** Profil görseli. */
1550
1482
  imageUrl?: string;
1483
+ /** Baş harf yerine ikon (marka işareti, sistem kullanıcısı). Görselden önce gelmez. */
1484
+ icon?: ReactNode;
1485
+ shape?: AvatarShape;
1486
+ tone?: AvatarTone;
1551
1487
  /** Baş harfleri büyütürken kullanılacak dil etiketi ("tr", "az"). */
1552
1488
  locale?: string;
1553
1489
  size?: 'sm' | 'md' | 'lg';
@@ -1555,7 +1491,12 @@ declare type Props_18 = {
1555
1491
  testId?: string;
1556
1492
  };
1557
1493
 
1558
- declare type Props_19 = {
1494
+ declare type Props_2 = {
1495
+ /** Kullanıcının seçiminin tutulduğu `localStorage` anahtarı. */
1496
+ storageKey: string;
1497
+ };
1498
+
1499
+ declare type Props_20 = {
1559
1500
  children: ReactNode;
1560
1501
  tone?: BadgeTone;
1561
1502
  variant?: BadgeVariant;
@@ -1565,20 +1506,9 @@ declare type Props_19 = {
1565
1506
  testId?: string;
1566
1507
  };
1567
1508
 
1568
- declare type Props_2 = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> & {
1569
- href: string;
1570
- children: ReactNode;
1571
- /** Sonda ok gösterilir — "devam et" anlamı taşıyan bağlantılarda. */
1572
- hasArrow?: boolean;
1573
- tone?: 'brand' | 'muted';
1574
- size?: 'sm' | 'md';
1575
- /** Yönlendiriciye geçirilecek ek props. */
1576
- linkProps?: HanuiLinkExtraProps;
1577
- };
1578
-
1579
- declare type Props_20 = {
1509
+ declare type Props_21 = {
1580
1510
  items: Crumb[];
1581
- /** Gezinme bölgesinin erişilebilir adı. Verilmezse `labels.breadcrumb`. */
1511
+ /** Gezinme bölgesinin erişilebilir adı. */
1582
1512
  label?: string;
1583
1513
  /** Yönlendiriciye geçirilecek ek props. */
1584
1514
  linkProps?: HanuiLinkExtraProps;
@@ -1586,55 +1516,78 @@ declare type Props_20 = {
1586
1516
  testId?: string;
1587
1517
  };
1588
1518
 
1589
- declare type Props_21 = {
1519
+ declare type Props_22 = {
1590
1520
  children: ReactNode;
1591
- /** Şeridin erişilebilir adı ("Öne çıkan ürünler"). ZORUNLU. */
1521
+ /** Şeridin erişilebilir adı ("Öne çıkan ürünler"). */
1592
1522
  label: string;
1593
- /** Önceki/sonraki düğmelerinin erişilebilir adları. ZORUNLU. */
1523
+ /** Önceki/sonraki düğmelerinin erişilebilir adları. */
1594
1524
  previousLabel: string;
1595
1525
  nextLabel: string;
1596
1526
  /** Sayfa göstergesinin ad üreticisi (`index` 1 tabanlı). */
1597
1527
  formatDotLabel?: (index: number, total: number) => string;
1598
- /**
1599
- * Bir kartın genişliği. Şerit her kartı bu genişlikte çizer.
1600
- * Duyarlı genişlik ya da "yarım kart görünsün" gibi bir ölçü gerekiyorsa
1601
- * CSS'ten `--hanui-carousel-item` ezilir; buradaki değer yalnızca varsayılan.
1602
- */
1528
+ /** Bir kartın genişliği. Şerit her kartı bu genişlikte çizer. */
1603
1529
  itemWidth?: number;
1604
1530
  /**
1605
- * @deprecated `itemWidth` kullanın. Ad bir ASGARİ genişlik vaat ediyordu ama
1606
- * şerit artık kartları germiyor: verilen değer kartın genişliğinin kendisi.
1607
- * Eski yol bir sürüm daha çalışır; `CLAUDE.md` → Göç.
1531
+ * @deprecated `itemWidth` kullanın. Ad bir ASGARİ genişlik vaat ediyordu ama şerit artık
1532
+ * kartları…
1608
1533
  */
1609
1534
  itemMinWidth?: number;
1610
1535
  className?: string;
1611
1536
  testId?: string;
1612
1537
  };
1613
1538
 
1614
- declare type Props_22 = {
1539
+ declare type Props_23 = {
1615
1540
  /** Gösterilecek teknik kod (arıza kodu, parça numarası, şase). */
1616
1541
  code: string;
1617
1542
  /** Kopyalama düğmesi ekler. */
1618
1543
  isCopyable?: boolean;
1619
- /** Kopyalama düğmesinin erişilebilir adı. Verilmezse `labels.copyField.copy(code)`. */
1544
+ /** Kopyalama düğmesinin erişilebilir adı. */
1620
1545
  copyLabel?: string;
1621
- /** Kopyalandıktan sonraki ad. Verilmezse `labels.copyField.copied(code)`. */
1546
+ /** Kopyalandıktan sonraki ad. */
1622
1547
  copiedLabel?: string;
1623
- /** `aria-live` ile duyurulan onay cümlesi. Verilmezse `labels.copyField.announcement`. */
1548
+ /** `aria-live` ile duyurulan onay cümlesi. */
1624
1549
  copiedAnnouncement?: string;
1625
1550
  size?: CodeBadgeSize;
1551
+ /** Kodu ETKİLEŞİMLİ yapar (kaynağı aç, ayrıntıya git): kod bir düğme olur. */
1552
+ onClick?: () => void;
1553
+ /** Kodu bir BAĞLANTI yapar; `onClick` ile birlikte verilmez. */
1554
+ href?: string;
1555
+ linkProps?: HanuiLinkExtraProps;
1556
+ /**
1557
+ * Etkileşimli kodun okunan adı. Kısa kimliklerde ("A3") kod tek başına ne açılacağını söylemez
1558
+ * ("A3 kaynağını aç"). Verilmezse kodun kendisi.
1559
+ */
1560
+ label?: string;
1626
1561
  className?: string;
1627
1562
  testId?: string;
1628
1563
  };
1629
1564
 
1630
- declare type Props_23 = {
1565
+ declare type Props_24 = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
1566
+ /** Basılacak tuşlar, sırayla: `['Shift', 'Enter']`. Tek tuş da bir dizi: `['⌘K']`. */
1567
+ keys: string[];
1568
+ };
1569
+
1570
+ declare type Props_25 = {
1571
+ tone?: StatusDotTone;
1572
+ /**
1573
+ * Durumun okunan adı ("Bağlı", "Çalışıyor"). ZORUNLU: nokta yalnızca renk ve renk tek başına
1574
+ * anlam taşıyamaz (WCAG 1.4.1). Görsel olarak gizli metin olarak yazılır.
1575
+ */
1576
+ label: string;
1577
+ /** Süren bir iş — "çalışıyor", "bağlanıyor". Azaltılmış harekette durur. */
1578
+ isPulsing?: boolean;
1579
+ className?: string;
1580
+ testId?: string;
1581
+ };
1582
+
1583
+ declare type Props_26 = {
1631
1584
  /** Gösterilecek ve panoya kopyalanacak değer. */
1632
1585
  value: string;
1633
1586
  /** Kopyalama düğmesinin erişilebilir adı. */
1634
1587
  copyLabel?: string;
1635
- /** Kopyalandıktan sonraki ad. Verilmezse `labels.copyField.copied(value)`. */
1588
+ /** Kopyalandıktan sonraki ad. */
1636
1589
  copiedLabel?: string;
1637
- /** `aria-live` ile duyurulan onay cümlesi. Verilmezse `labels.copyField.announcement`. */
1590
+ /** `aria-live` ile duyurulan onay cümlesi. */
1638
1591
  copiedAnnouncement?: string;
1639
1592
  size?: 'sm' | 'md';
1640
1593
  /** Kopyalama düğmesini gizler. */
@@ -1643,13 +1596,13 @@ declare type Props_23 = {
1643
1596
  testId?: string;
1644
1597
  };
1645
1598
 
1646
- declare type Props_24 = {
1599
+ declare type Props_27 = {
1647
1600
  /** Ortada gösterilen metin ("veya"). */
1648
1601
  label?: string;
1649
1602
  className?: string;
1650
1603
  };
1651
1604
 
1652
- declare type Props_25 = {
1605
+ declare type Props_28 = {
1653
1606
  title: string;
1654
1607
  description?: string;
1655
1608
  icon?: ReactNode;
@@ -1664,20 +1617,17 @@ declare type Props_25 = {
1664
1617
  testId?: string;
1665
1618
  };
1666
1619
 
1667
- declare type Props_26 = {
1620
+ declare type Props_29 = {
1668
1621
  title: string;
1669
1622
  /** Başlığın üstündeki küçük bağlam etiketi ("HESABIM", "KATEGORİ"). */
1670
1623
  eyebrow?: string;
1671
1624
  /** Bir cümlelik açıklama. 68ch ile sınırlı tutulur. */
1672
1625
  description?: ReactNode;
1673
- /** Sağ tarafta duran eylemler. Dar ekranda başlığın altına düşer. */
1626
+ /** Sağ tarafta duran eylemler. */
1674
1627
  actions?: ReactNode;
1675
1628
  /** Başlık satırının üstündeki kırıntı yolu. */
1676
1629
  breadcrumb?: ReactNode;
1677
- /**
1678
- * Başlığın yanındaki sayaç ("1.248 kayıt"). Açıklamanın değil BAŞLIĞIN
1679
- * hizasında durur; kullanıcı sayıyı başlıkla birlikte okur.
1680
- */
1630
+ /** Başlığın yanındaki sayaç ("1.248 kayıt"). */
1681
1631
  meta?: ReactNode;
1682
1632
  /** Başlık bloğunun altında duran ek içerik (filtre şeridi, sekmeler). */
1683
1633
  children?: ReactNode;
@@ -1687,9 +1637,20 @@ declare type Props_26 = {
1687
1637
  testId?: string;
1688
1638
  };
1689
1639
 
1690
- declare type Props_27 = {
1640
+ declare type Props_3 = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> & {
1641
+ href: string;
1691
1642
  children: ReactNode;
1692
- /** Panel başlığı. Verilmezse başlık şeridi hiç çizilmez. */
1643
+ /** Sonda ok gösterilir — "devam et" anlamı taşıyan bağlantılarda. */
1644
+ hasArrow?: boolean;
1645
+ tone?: 'brand' | 'muted';
1646
+ size?: 'sm' | 'md';
1647
+ /** Yönlendiriciye geçirilecek ek props. */
1648
+ linkProps?: HanuiLinkExtraProps;
1649
+ };
1650
+
1651
+ declare type Props_30 = {
1652
+ children: ReactNode;
1653
+ /** Panel başlığı. */
1693
1654
  title?: string;
1694
1655
  /** Başlık altındaki tek satırlık açıklama. */
1695
1656
  description?: ReactNode;
@@ -1709,10 +1670,10 @@ declare type Props_27 = {
1709
1670
  testId?: string;
1710
1671
  };
1711
1672
 
1712
- declare type Props_28 = {
1713
- /** BİÇİMLENMİŞ tutar: "1.299,90". Bileşen hesap yapmaz. */
1673
+ declare type Props_31 = {
1674
+ /** BİÇİMLENMİŞ tutar: "1.299,90". */
1714
1675
  value: string;
1715
- /** Para birimi simgesi ya da kodu. Verilmezse `labels.currency`. */
1676
+ /** Para birimi simgesi ya da kodu. */
1716
1677
  currency?: string;
1717
1678
  /** Değeri `Intl.NumberFormat` ile biçimlendirir. */
1718
1679
  isFormatted?: boolean;
@@ -1727,8 +1688,8 @@ declare type Props_28 = {
1727
1688
  testId?: string;
1728
1689
  };
1729
1690
 
1730
- declare type Props_29 = {
1731
- /** 0–5 arası puan. Yarım yıldız desteklenir. */
1691
+ declare type Props_32 = {
1692
+ /** 0–5 arası puan. */
1732
1693
  value: number;
1733
1694
  /** Değerlendirme sayısı; verilirse yıldızların yanında gösterilir. */
1734
1695
  count?: number;
@@ -1739,34 +1700,7 @@ declare type Props_29 = {
1739
1700
  testId?: string;
1740
1701
  };
1741
1702
 
1742
- declare type Props_3 = {
1743
- /** Balonda gösterilecek açıklama. */
1744
- content: ReactNode;
1745
- /** Açıklamanın bağlandığı öğe — düğme, ikon, etiket. */
1746
- children: ReactNode;
1747
- /**
1748
- * Tercih edilen kenar. Yer yoksa KARŞITINA düşer; üçüncü bir kenara
1749
- * atlamaz (bkz. `usePositioning`).
1750
- */
1751
- side?: PositionSide;
1752
- /**
1753
- * Açılma gecikmesi (ms). Fare bir araç çubuğunun üzerinden geçerken sıfır
1754
- * gecikme, art arda beş balon açıp kapatıyordu.
1755
- */
1756
- openDelay?: number;
1757
- /**
1758
- * @deprecated `side` kullanın. Bu prop bir sonraki büyük sürümde kalkacak.
1759
- *
1760
- * <p>Ad değişti çünkü davranış değişti: `position` SABİT bir kenar
1761
- * yazıyordu ve balon oraya sığmadığında görünüm alanının dışına taşıyordu.
1762
- * `side` yalnızca TERCİH — yer yoksa karşıt kenara düşülüyor. Aynı adı
1763
- * korumak, artık doğru olmayan bir sözü sürdürmek olurdu.
1764
- */
1765
- position?: 'top' | 'bottom';
1766
- className?: string;
1767
- };
1768
-
1769
- declare type Props_30 = {
1703
+ declare type Props_33 = {
1770
1704
  title: string;
1771
1705
  description?: string;
1772
1706
  /** Üstte gösterilen küçük büyük-harf etiket. */
@@ -1779,9 +1713,9 @@ declare type Props_30 = {
1779
1713
  testId?: string;
1780
1714
  };
1781
1715
 
1782
- declare type Props_31 = {
1716
+ declare type Props_34 = {
1783
1717
  children: ReactNode;
1784
- /** Kaydırılabilir bölgenin erişilebilir adı. ZORUNLU. */
1718
+ /** Kaydırılabilir bölgenin erişilebilir adı. */
1785
1719
  label: string;
1786
1720
  /** Kaydırma yönü. `both` iki eksende de kaydırır. */
1787
1721
  axis?: 'vertical' | 'horizontal' | 'both';
@@ -1789,11 +1723,16 @@ declare type Props_31 = {
1789
1723
  maxHeight?: number | string;
1790
1724
  /** Kenarlarda içeriğin devam ettiğini gösteren solma. */
1791
1725
  hasFade?: boolean;
1726
+ /**
1727
+ * SONA yapışık kalır — içerik büyüdükçe aşağı iner, kullanıcı yukarı kaydırınca bırakır, sona
1728
+ * dönünce yeniden yapışır (akan akıl yürütme, canlı terminal çıktısı). Yalnızca dikey eksende.
1729
+ */
1730
+ isFollowingEnd?: boolean;
1792
1731
  className?: string;
1793
1732
  testId?: string;
1794
1733
  };
1795
1734
 
1796
- declare type Props_32 = {
1735
+ declare type Props_35 = {
1797
1736
  /** Genişlik: sayı px, dize doğrudan CSS değeri. */
1798
1737
  width?: number | string;
1799
1738
  height?: number | string;
@@ -1804,10 +1743,10 @@ declare type Props_32 = {
1804
1743
  className?: string;
1805
1744
  };
1806
1745
 
1807
- declare type Props_33 = {
1746
+ declare type Props_36 = {
1808
1747
  /** Ölçülen şeyin adı ("Bugünkü sipariş"). */
1809
1748
  label: string;
1810
- /** Değerin KENDİSİ — biçimlendirilmiş dize. Bileşen hesap yapmaz. */
1749
+ /** Değerin KENDİSİ — biçimlendirilmiş dize. */
1811
1750
  value: ReactNode;
1812
1751
  /** Değerin yanındaki birim ("₺", "adet"). */
1813
1752
  unit?: string;
@@ -1815,23 +1754,24 @@ declare type Props_33 = {
1815
1754
  delta?: string;
1816
1755
  /** Değişimin yönü. */
1817
1756
  trend?: StatTrend;
1818
- /** Artış İYİ mi. Varsayılan `true`. */
1757
+ /** Artış İYİ mi. */
1819
1758
  isUpPositive?: boolean;
1820
1759
  /** Değerin altındaki bir cümlelik bağlam ("geçen haftaya göre"). */
1821
1760
  description?: ReactNode;
1822
1761
  /** Sol üstte duran ikon madalyonu. */
1823
1762
  icon?: ReactNode;
1824
1763
  /**
1825
- * `plain` KUTUYU kaldırır: zemin, kenarlık ve dolgu gider, yalnızca sayı
1826
- * kalır. Varsayılan `card`.
1764
+ * `plain` KUTUYU kaldırır: zemin, kenarlık ve dolgu gider, yalnızca sayı kalır.
1765
+ * `inline` etiketi ve değeri TEK SATIRA dizer, değer teknik fontta — metrik satırı ("Gecikme
1766
+ * 412 ms"). Değişim ve açıklama bu kipte de çizilir, satırı uzatır.
1827
1767
  */
1828
- variant?: 'card' | 'plain';
1768
+ variant?: 'card' | 'plain' | 'inline';
1829
1769
  size?: 'sm' | 'md';
1830
1770
  className?: string;
1831
1771
  testId?: string;
1832
1772
  };
1833
1773
 
1834
- declare type Props_34 = {
1774
+ declare type Props_37 = {
1835
1775
  /** Kart başlığı — aynı zamanda bağlantı metni. */
1836
1776
  title: string;
1837
1777
  href: string;
@@ -1849,34 +1789,57 @@ declare type Props_34 = {
1849
1789
  testId?: string;
1850
1790
  };
1851
1791
 
1852
- declare type Props_35 = {
1792
+ declare type Props_38 = {
1853
1793
  /**
1854
- * Tamamlanan miktar. `undefined` → BELİRSİZ ilerleme (sonu bilinmiyor);
1855
- * çubuk kendi kendine akar.
1794
+ * Tamamlanan miktar. `undefined` → BELİRSİZ ilerleme (sonu bilinmiyor); çubuk kendi kendine akar.
1856
1795
  */
1857
1796
  value?: number;
1858
1797
  /** Ölçeğin üst ucu. */
1859
1798
  max?: number;
1860
- /** Çubuğun erişilebilir adı ("Yükleme", "Ödeme adımı"). ZORUNLU. */
1799
+ /** Çubuğun erişilebilir adı ("Yükleme", "Ödeme adımı"). */
1861
1800
  label: string;
1862
1801
  /** Ekran okuyucuya okunan METİN karşılığı ("3 / 5 dosya"). */
1863
1802
  valueText?: string;
1864
1803
  /** Yüzdeyi çubuğun yanında GÖRÜNÜR olarak yazar. */
1865
1804
  isValueVisible?: boolean;
1805
+ /**
1806
+ * ⚠ `brand` 5.0'dan beri MÜREKKEP çizer (`selected` — ilerleme bir seçim göstergesi), yeşil
1807
+ * DEĞİL: yeşil yalnızca eylem, bağlantı ve odakta. Ad 4.x'ten kaldı; değiştirmek her çağrıyı
1808
+ * kırardı ve kazancı yalnızca isim olurdu.
1809
+ */
1866
1810
  tone?: 'brand' | 'success' | 'warning' | 'danger';
1867
- size?: 'sm' | 'md';
1811
+ /** `xs` 2 px — satır içi gösterge (bağlam doluluğu); etiket yanında okunur. */
1812
+ size?: 'xs' | 'sm' | 'md';
1868
1813
  className?: string;
1869
1814
  testId?: string;
1870
1815
  };
1871
1816
 
1872
- declare type Props_36 = {
1817
+ declare type Props_39 = {
1873
1818
  size?: 'sm' | 'md' | 'lg';
1874
1819
  /** Ekran okuyucuya okunacak metin; görsel olarak gizli. */
1875
1820
  label?: string;
1876
1821
  className?: string;
1877
1822
  };
1878
1823
 
1879
- declare type Props_37 = {
1824
+ declare type Props_4 = {
1825
+ /** Balonda gösterilecek açıklama. */
1826
+ content: ReactNode;
1827
+ /** Açıklamanın bağlandığı öğe — düğme, ikon, etiket. */
1828
+ children: ReactNode;
1829
+ /** Tercih edilen kenar. */
1830
+ side?: PositionSide;
1831
+ /** Açılma gecikmesi (ms). */
1832
+ openDelay?: number;
1833
+ /**
1834
+ * Ad değişti çünkü davranış değişti: `position` SABİT bir kenar yazıyordu ve balon oraya
1835
+ * sığmadığında görünüm alanının dışına taşıyordu. `side`…
1836
+ * @deprecated `side` kullanın.
1837
+ */
1838
+ position?: 'top' | 'bottom';
1839
+ className?: string;
1840
+ };
1841
+
1842
+ declare type Props_40 = {
1880
1843
  items: AccordionItem[];
1881
1844
  /** Aynı anda YALNIZCA BİR bölüm açık kalır. */
1882
1845
  isSingle?: boolean;
@@ -1889,29 +1852,42 @@ declare type Props_37 = {
1889
1852
  testId?: string;
1890
1853
  };
1891
1854
 
1892
- declare type Props_38 = {
1893
- steps: StepItem[];
1855
+ declare type Props_41 = {
1856
+ /** Başlık satırı — tıklanabilir olan bu. */
1857
+ summary: ReactNode;
1858
+ /** Başlığın sağında duran ikincil bilgi (süre, sayaç, rozet). */
1859
+ meta?: ReactNode;
1860
+ children: ReactNode;
1894
1861
  /**
1895
- * Bulunulan adımın DİZİNİ (0 tabanlı). Öncesi tamamlanmış sayılır.
1896
- * VERİLMEZSE liste ilerleme değil SIRALI TALİMAT olarak çizilir: durum
1897
- * metni yok, tik yok, `aria-current` yok — yalnızca numaralı adımlar
1898
- * ("olası nedenler — kontrol sırasıyla" gibi teşhis listeleri).
1862
+ * Kontrollü kullanım; `onOpenChange` ile birlikte verilir.
1863
+ * ⚠ Ebeveyn `onOpenChange`i yok sayarsa DOM bir sonraki render'da prop'a döner, AYNI tuş vuruşunda
1864
+ * değil: `toggle` olayı eşzamansız ve anında geri çevirmek kendi `toggle`ıyla yarışıyordu.
1899
1865
  */
1866
+ isOpen?: boolean;
1867
+ /** Kontrolsüz kullanımda açılış durumu (boolean prop adı `is*` — API kuralı). */
1868
+ isDefaultOpen?: boolean;
1869
+ onOpenChange?: (isOpen: boolean) => void;
1870
+ isDisabled?: boolean;
1871
+ /** `framed` kendi kenarlığı ve zemini olan kutu; `plain` kenarlıksız satır (liste içinde). */
1872
+ variant?: DisclosureVariant;
1873
+ className?: string;
1874
+ testId?: string;
1875
+ };
1876
+
1877
+ declare type Props_42 = {
1878
+ steps: StepItem[];
1879
+ /** Bulunulan adımın DİZİNİ (0 tabanlı). */
1900
1880
  currentIndex?: number;
1901
- /**
1902
- * Bir adıma dönülebiliyorsa verilir. Verilmediğinde adımlar düğme DEĞİL
1903
- * düz metin olur — tıklanabilir görünüp hiçbir şey yapmayan bir adım,
1904
- * kullanıcıya var olmayan bir yol vaat ediyordu.
1905
- */
1881
+ /** Bir adıma dönülebiliyorsa verilir. */
1906
1882
  onStepClick?: (index: number) => void;
1907
- /** Akışın erişilebilir adı ("Ödeme adımları"). ZORUNLU. */
1883
+ /** Akışın erişilebilir adı ("Ödeme adımları"). */
1908
1884
  label: string;
1909
1885
  orientation?: 'horizontal' | 'vertical';
1910
1886
  className?: string;
1911
1887
  testId?: string;
1912
1888
  };
1913
1889
 
1914
- declare type Props_39 = {
1890
+ declare type Props_43 = {
1915
1891
  items: TabItem[];
1916
1892
  /** Kontrolsüz kullanımda açılışta seçili sekme. */
1917
1893
  defaultTabId?: string;
@@ -1926,19 +1902,7 @@ declare type Props_39 = {
1926
1902
  testId?: string;
1927
1903
  };
1928
1904
 
1929
- declare type Props_4 = {
1930
- /** Tetikleyici. TEK öğe; bileşen ona `ref` ve ARIA ekliyor. */
1931
- trigger: ReactElement;
1932
- items: MenuItem[];
1933
- /** Menünün erişilebilir adı ("Satır eylemleri"). ZORUNLU. */
1934
- label: string;
1935
- side?: PositionSide;
1936
- align?: PositionAlign;
1937
- className?: string;
1938
- testId?: string;
1939
- };
1940
-
1941
- declare type Props_40 = {
1905
+ declare type Props_44 = {
1942
1906
  label: string;
1943
1907
  /** İkon DIŞARIDAN gelir: hangi ikonun hangi konuya ait olduğu uygulamanın bilgisi. */
1944
1908
  icon: ReactNode;
@@ -1952,34 +1916,34 @@ declare type Props_40 = {
1952
1916
  testId?: string;
1953
1917
  };
1954
1918
 
1955
- declare type Props_41 = {
1919
+ declare type Props_45 = {
1956
1920
  events: TimelineEvent[];
1957
- /** Akışın erişilebilir adı ("Sipariş geçmişi"). ZORUNLU. */
1921
+ /** Akışın erişilebilir adı ("Sipariş geçmişi"). */
1958
1922
  label: string;
1959
1923
  className?: string;
1960
1924
  testId?: string;
1961
1925
  };
1962
1926
 
1963
- declare type Props_42 = {
1927
+ declare type Props_46 = {
1964
1928
  title: string;
1965
- /** Kapatma düğmesinin erişilebilir adı. Verilmezse `labels.close`. */
1929
+ /** Kapatma düğmesinin erişilebilir adı. */
1966
1930
  closeLabel?: string;
1967
1931
  onClose: () => void;
1968
1932
  children: ReactNode;
1969
1933
  /**
1970
- * Başlığın altında duran, gövde kaydırılırken yerinde kalan şerit —
1971
- * `Combobox`ın arama kutusu gibi.
1934
+ * Başlığın altında duran, gövde kaydırılırken yerinde kalan şerit — `Combobox`ın arama kutusu
1935
+ * gibi.
1972
1936
  */
1973
1937
  toolbar?: ReactNode;
1974
1938
  /** Dipte duran eylem şeridi. */
1975
1939
  footer?: ReactNode;
1976
- /** Panelin <strong>kendiliğinden kapandığı</strong> medya sorgusu. */
1940
+ /** Panelin kendiliğinden kapandığı medya sorgusu. */
1977
1941
  closeAbove?: string;
1978
1942
  className?: string;
1979
1943
  testId?: string;
1980
1944
  };
1981
1945
 
1982
- declare type Props_43 = {
1946
+ declare type Props_47 = {
1983
1947
  isOpen: boolean;
1984
1948
  onClose: () => void;
1985
1949
  title: string;
@@ -1988,42 +1952,50 @@ declare type Props_43 = {
1988
1952
  children?: ReactNode;
1989
1953
  /** Başlığın altındaki bir cümlelik açıklama. */
1990
1954
  description?: ReactNode;
1991
- /** Altta duran eylemler. Sağa yaslanır; dar ekranda tam genişliğe yayılır. */
1955
+ /** Altta duran eylemler. */
1992
1956
  footer?: ReactNode;
1993
1957
  /** Başlığın solunda duran ikon madalyonu; `tone` rengini alır. */
1994
1958
  icon?: ReactNode;
1995
1959
  /** İkon madalyonunun tonu. */
1996
1960
  tone?: ModalTone;
1997
- size?: 'sm' | 'md' | 'lg';
1961
+ /** `xl` (≈1040 px) sekmeli, tablolu panolar için; dar ekranda diğerleri gibi tam genişlik. */
1962
+ size?: 'sm' | 'md' | 'lg' | 'xl';
1998
1963
  /** `false` iken arka plana tıklama, Escape ve kapatma düğmesi kapatmaz. */
1999
1964
  isDismissable?: boolean;
2000
1965
  className?: string;
2001
1966
  testId?: string;
2002
1967
  };
2003
1968
 
2004
- declare type Props_44 = {
1969
+ declare type Props_48 = {
2005
1970
  isOpen: boolean;
2006
1971
  onClose: () => void;
2007
1972
  items: CommandItem[];
2008
- /** Pencerenin erişilebilir adı ("Komut paleti"). ZORUNLU. */
1973
+ /** Pencerenin erişilebilir adı ("Komut paleti"). */
2009
1974
  label: string;
2010
- /** Arama kutusunun yer tutucusu ve erişilebilir adı. ZORUNLU. */
1975
+ /** Arama kutusunun yer tutucusu ve erişilebilir adı. */
2011
1976
  searchPlaceholder: string;
2012
- /** Sonuç yokken yazılan metin. ZORUNLU. */
1977
+ /** Sonuç yokken yazılan metin. */
2013
1978
  emptyMessage: string;
1979
+ /**
1980
+ * Paleti açıp kapatan kısayol: `'mod+k'` (`mod` macOS'ta ⌘, diğerlerinde Ctrl), `'shift+/'`.
1981
+ * Başka bir kipsel yüzey açıkken yok sayılır. `onOpen` ile birlikte verilir.
1982
+ */
1983
+ hotkey?: string;
1984
+ /** Kısayol basıldığında, palet kapalıyken. */
1985
+ onOpen?: () => void;
2014
1986
  className?: string;
2015
1987
  testId?: string;
2016
1988
  };
2017
1989
 
2018
- declare type Props_45 = {
1990
+ declare type Props_49 = {
2019
1991
  isOpen: boolean;
2020
1992
  onClose: () => void;
2021
1993
  /**
2022
- * Onaylandığında çalışır. `Promise` dönerse düğme beklerken yükleme
2023
- * durumuna geçer ve pencere <strong>kapanmaz</strong>.
1994
+ * Onaylandığında çalışır. `Promise` dönerse düğme beklerken yükleme durumuna geçer ve pencere
1995
+ * kapanmaz.
2024
1996
  */
2025
1997
  onConfirm: () => void | Promise<void>;
2026
- /** Soru cümlesi. Eylem odaklı yazılır: "…silinsin mi?". */
1998
+ /** Soru cümlesi. */
2027
1999
  title: string;
2028
2000
  /** Sonucu açıklar: neyin geri alınamaz olduğu burada yazılır. */
2029
2001
  description?: ReactNode;
@@ -2035,20 +2007,32 @@ declare type Props_45 = {
2035
2007
  closeLabel?: string;
2036
2008
  /** Onayın türü — ikon, ton ve onay düğmesinin varyantını birlikte belirler. */
2037
2009
  variant?: ConfirmKind;
2038
- /** @deprecated `variant` kullanın. Bir sonraki büyük sürümde kalkacak. */
2010
+ /** @deprecated `variant` kullanın. */
2039
2011
  kind?: ConfirmKind;
2040
2012
  /** Ek bağlam: silinecek kaydın özeti, uyarı kutusu. */
2041
2013
  children?: ReactNode;
2042
2014
  };
2043
2015
 
2044
- declare type Props_46 = {
2016
+ declare type Props_5 = {
2017
+ /** Tetikleyici. */
2018
+ trigger: ReactElement;
2019
+ items: MenuItem[];
2020
+ /** Menünün erişilebilir adı ("Satır eylemleri"). */
2021
+ label: string;
2022
+ side?: PositionSide;
2023
+ align?: PositionAlign;
2024
+ className?: string;
2025
+ testId?: string;
2026
+ };
2027
+
2028
+ declare type Props_50 = {
2045
2029
  isOpen: boolean;
2046
2030
  onClose: () => void;
2047
2031
  title: string;
2048
- /** Kapatma düğmesinin erişilebilir adı. Verilmezse `labels.close`. */
2032
+ /** Kapatma düğmesinin erişilebilir adı. */
2049
2033
  closeLabel?: string;
2050
2034
  children: ReactNode;
2051
- /** Panelin hangi kenardan geldiği. Mantıksal: `end` RTL'de sola açılır. */
2035
+ /** Panelin hangi kenardan geldiği. */
2052
2036
  side?: 'start' | 'end';
2053
2037
  size?: 'sm' | 'md' | 'lg';
2054
2038
  /** Dipte duran eylem şeridi; gövde kaydırılırken yerinde kalır. */
@@ -2059,67 +2043,45 @@ declare type Props_46 = {
2059
2043
  testId?: string;
2060
2044
  };
2061
2045
 
2062
- declare type Props_47 = BaseProps_3 & {
2046
+ declare type Props_51 = BaseProps_3 & {
2063
2047
  /** Boş (yalnızca boşluk dahil) değer gönderilemez. */
2064
2048
  isRequired?: boolean;
2065
2049
  /** Zorunluluk yıldızının ekran okuyucu karşılığı ("(zorunlu)"). */
2066
2050
  requiredLabel?: string;
2067
2051
  };
2068
2052
 
2069
- declare type Props_48 = TableHTMLAttributes<HTMLTableElement> & Partial<{
2070
- /**
2071
- * Hücre dolgusu. Tablolar aynı iskeleti paylaşır ama yoğunlukları içeriğe
2072
- * göre değişir: yüzlerce satırlık bir liste sıkı, karşılaştırma matrisi
2073
- * ferah durur.
2074
- */
2053
+ declare type Props_52 = TableHTMLAttributes<HTMLTableElement> & Partial<{
2054
+ /** Hücre dolgusu. */
2075
2055
  density: 'compact' | 'regular' | 'spacious';
2076
- /**
2077
- * Başlık satırı `$surface-2` zeminle kutunun içinde YAPIŞKAN kalır.
2078
- * Zemin zorunlu: saydam başlığın arkasından kayan satırlar geçiyordu.
2079
- * `top: 0` doğru olan — referans üst bant değil, tablonun kendi kaydırma
2080
- * kutusu.
2081
- */
2056
+ /** Başlık satırı `$surface-2` zeminle kutunun içinde YAPIŞKAN kalır. */
2082
2057
  hasStickyHead: boolean;
2083
2058
  /** Satır hover zemini: çok sütunlu tabloda göz satırını kaybediyor. */
2084
2059
  hasRowHover: boolean;
2085
2060
  }>;
2086
2061
 
2087
- declare type Props_49 = {
2062
+ declare type Props_53 = {
2088
2063
  columns: DataTableColumn[];
2089
2064
  /**
2090
2065
  * Tablonun erişilebilir adı ("Bekleyen siparişler").
2091
- *
2092
- * ⚠ ADSIZ TABLO EKRAN OKUYUCUDA YALNIZCA "tablo" DİYE OKUNUR. Panelde
2093
- * aynı anda birden fazla tablo bulunabiliyor ve kullanıcı hangisinde
2094
- * olduğunu ayırt edemiyordu. `<caption>` yerine `aria-label` seçildi:
2095
- * başlık zaten `PageHeader`/`Panel` içinde görünür durumda, ikinci kez
2096
- * çizmek görsel tekrar olurdu.
2066
+ * ⚠ ADSIZ TABLO EKRAN OKUYUCUDA YALNIZCA "tablo" DİYE OKUNUR.
2097
2067
  */
2098
2068
  label?: string;
2099
2069
  /**
2100
- * Gövde satırları (`<tr>`). Ekranların özel hücreleri, bağlantıları ve satır
2101
- * tintleri burada yaşar; tablo yalnızca kabuğu ve durum satırlarını
2102
- * üstlenir. Uyarı tinti için {@link DataTableRow}.
2070
+ * Gövde satırları (` `). Ekranların özel hücreleri, bağlantıları ve satır tintleri burada yaşar;
2071
+ * tablo yalnızca kabuğu ve durum satırlarını üstlenir.
2103
2072
  */
2104
2073
  children?: ReactNode;
2105
- /** Satır yokken gösterilen metin. Verilmezse `labels.dataTable.empty`. */
2074
+ /** Satır yokken gösterilen metin. */
2106
2075
  emptyMessage?: string;
2107
- /** Yükleme sürerken gösterilen metin. Verilmezse `labels.dataTable.loading`. */
2076
+ /** Yükleme sürerken gösterilen metin. */
2108
2077
  loadingMessage?: string;
2109
2078
  isLoading?: boolean;
2110
2079
  /**
2111
- * Liste ÇEKİLEMEDİ. <strong>"Yüklenemedi" ile "boş" ayrı durumlardır</strong>:
2112
- * hata verilmişken boş mesajı asla çizilmez — ağ hatasını "kayıt kalmamış"
2113
- * diye okutmak kullanıcıya yanlış karar verdirir. Hatayı tablonun dışında
2114
- * (`Alert`) gösteren ekran bu prop'u geçmez.
2080
+ * Liste ÇEKİLEMEDİ. "Yüklenemedi" ile "boş" ayrı durumlardır: hata verilmişken boş mesajı asla
2081
+ * çizilmez
2115
2082
  */
2116
2083
  error?: string | null;
2117
- /**
2118
- * Gövde `100dvh - <bant>` ile sınırlanır ve başlık satırı kendi kaydırma
2119
- * alanına yapışır. Sınırsız yükseklikte `position: sticky` HİÇ çalışmıyordu:
2120
- * `overflow` alanı ekrandan uzun olunca başlık sayfayla birlikte yukarı çıkıp
2121
- * gidiyordu.
2122
- */
2084
+ /** Gövde `100dvh - <bant>` ile sınırlanır ve başlık satırı kendi kaydırma alanına yapışır. */
2123
2085
  hasViewportCap?: boolean;
2124
2086
  /** Sıralanabilir bir başlığa basıldığında çağrılır. */
2125
2087
  onSort?: (key: string, direction: 'ascending' | 'descending') => void;
@@ -2129,49 +2091,46 @@ declare type Props_49 = {
2129
2091
  testId?: string;
2130
2092
  };
2131
2093
 
2132
- declare type Props_5 = {
2094
+ declare type Props_54 = {
2133
2095
  /**
2134
- * Tetikleyici. TEK bir öğe olmak zorunda: bileşen ona `ref`, `onClick` ve
2135
- * `aria-expanded` ekliyor.
2096
+ * Filtreler uygulanır. `preventDefault` bileşenin işi; çağıran yalnızca durumunu günceller
2097
+ * (sayfayı 1'e almak + aramayı uygulamak gibi).
2136
2098
  */
2099
+ onSubmit: () => void;
2100
+ /** Alanlar — her biri FilterBarField içinde. */
2101
+ children: ReactNode;
2102
+ /** Şeridin sağ ucundaki eylemler ("Uygula" düğmesi gibi). */
2103
+ actions?: ReactNode;
2104
+ /** Şeridin erişilebilir adı. */
2105
+ label?: string;
2106
+ className?: string;
2107
+ testId?: string;
2108
+ };
2109
+
2110
+ declare type Props_55 = LinkProps | ButtonProps;
2111
+
2112
+ declare type Props_6 = {
2113
+ /** Tetikleyici. */
2137
2114
  trigger: ReactElement;
2138
2115
  children: ReactNode;
2139
- /** Yüzeyin erişilebilir adı. ZORUNLU — adsız bir bölge "grup" diye okunur. */
2116
+ /** Yüzeyin erişilebilir adı. */
2140
2117
  label: string;
2141
2118
  side?: PositionSide;
2142
2119
  align?: PositionAlign;
2143
- /** Kontrollü kullanım. Verilmezse bileşen durumu kendisi tutar. */
2120
+ /** Kontrollü kullanım. */
2144
2121
  isOpen?: boolean;
2145
2122
  onOpenChange?: (isOpen: boolean) => void;
2146
2123
  className?: string;
2147
2124
  testId?: string;
2148
2125
  };
2149
2126
 
2150
- declare type Props_50 = {
2151
- /**
2152
- * Filtreler uygulanır. `preventDefault` bileşenin işi; çağıran yalnızca
2153
- * durumunu günceller (sayfayı 1'e almak + aramayı uygulamak gibi).
2154
- */
2155
- onSubmit: () => void;
2156
- /** Alanlar — her biri {@link FilterBarField} içinde. */
2157
- children: ReactNode;
2158
- /** Şeridin sağ ucundaki eylemler ("Uygula" düğmesi gibi). */
2159
- actions?: ReactNode;
2160
- /** Şeridin erişilebilir adı. Verilmezse `labels.filters`. */
2161
- label?: string;
2162
- className?: string;
2163
- testId?: string;
2164
- };
2165
-
2166
- declare type Props_51 = LinkProps | ButtonProps;
2127
+ declare type Props_7<T extends string> = SingleProps<T> | MultipleProps<T>;
2167
2128
 
2168
- declare type Props_6<T extends string> = SingleProps<T> | MultipleProps<T>;
2169
-
2170
- declare type Props_7<T extends string> = {
2129
+ declare type Props_8<T extends string> = {
2171
2130
  options: SegmentOption<T>[];
2172
2131
  value: T;
2173
2132
  onChange: (value: T) => void;
2174
- /** Grubun erişilebilir adı ("Görünüm"). ZORUNLU. */
2133
+ /** Grubun erişilebilir adı ("Görünüm"). */
2175
2134
  label: string;
2176
2135
  /** Etiketler gizlenir, yalnızca ikon çizilir. `label` yine okunur. */
2177
2136
  isIconOnly?: boolean;
@@ -2180,18 +2139,15 @@ declare type Props_7<T extends string> = {
2180
2139
  testId?: string;
2181
2140
  };
2182
2141
 
2183
- declare type Props_8<T extends string> = {
2142
+ declare type Props_9<T extends string> = {
2184
2143
  options: SelectOption<T>[];
2185
2144
  value: T;
2186
2145
  onChange: (value: T) => void;
2187
- /**
2188
- * Alanın adı. İki işi birden yapar: alt sayfanın başlığı olur ve
2189
- * tetikleyicinin <strong>erişilebilir adı</strong>dır.
2190
- */
2146
+ /** Alanın adı. */
2191
2147
  label: string;
2192
- /** Seçim yokken tetikleyicide görünen metin. Verilmezse `labels.selectPlaceholder`. */
2148
+ /** Seçim yokken tetikleyicide görünen metin. */
2193
2149
  placeholder?: string;
2194
- /** Alt sayfanın kapatma düğmesinin erişilebilir adı. Verilmezse `labels.close`. */
2150
+ /** Alt sayfanın kapatma düğmesinin erişilebilir adı. */
2195
2151
  closeLabel?: string;
2196
2152
  /** Tetikleyicinin solundaki ikon. */
2197
2153
  icon?: ReactNode;
@@ -2203,14 +2159,8 @@ declare type Props_8<T extends string> = {
2203
2159
  id?: string;
2204
2160
  /**
2205
2161
  * Zorunluluk — `Field`in `FieldChildProps` sözleşmesinden gelir.
2206
- *
2207
- * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan
2208
- * sessizce buharlaşır. `required` bir dönem tam olarak öyleydi: `<Field
2209
- * isRequired>{props => <Select {...props} …/>}</Field>` yazan çağıran
2210
- * görsel `*` ve sr-only "(zorunlu)" alıyor ama KONTROLDE hiçbir işaret
2211
- * olmuyordu — doğrudan kutuya atlayan ekran okuyucu kullanıcısı alanın
2212
- * zorunlu olduğunu hiç duymuyordu. `props` taze bir nesne literali olmadığı
2213
- * için TypeScript'in fazla-özellik denetimi de uyarmıyordu.
2162
+ * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan sessizce buharlaşır.
2163
+ * `required` bir dönem tam olarak öyleydi: `<Field…
2214
2164
  */
2215
2165
  required?: boolean;
2216
2166
  'aria-describedby'?: string;
@@ -2219,21 +2169,10 @@ declare type Props_8<T extends string> = {
2219
2169
  testId?: string;
2220
2170
  };
2221
2171
 
2222
- declare type Props_9 = {
2223
- /** Radyo grubu adı — aynı gruptaki kartlar ok tuşlarıyla gezilir. */
2224
- name: string;
2225
- value: string;
2226
- isSelected: boolean;
2227
- isDisabled?: boolean;
2228
- onChange: (value: string) => void;
2229
- /** Zengin gövde: kartın içeriği çağırana aittir. */
2230
- children: ReactNode;
2231
- } & CommonElementProps;
2232
-
2233
2172
  export declare const QuantityStepper: typeof QuantityStepper_2;
2234
2173
 
2235
2174
  /** Adet seçici. */
2236
- declare const QuantityStepper_2: FC<Props_12>;
2175
+ declare const QuantityStepper_2: FC<Props_13>;
2237
2176
 
2238
2177
  export declare const Radio: typeof Radio_2;
2239
2178
 
@@ -2250,16 +2189,16 @@ testId?: string;
2250
2189
  export declare const RadioCard: typeof RadioCard_2;
2251
2190
 
2252
2191
  /** Seçilebilir kart — zengin gövdeli radyo. */
2253
- declare const RadioCard_2: FC<Props_9>;
2192
+ declare const RadioCard_2: FC<Props_10>;
2254
2193
 
2255
2194
  declare type RangeProps = {
2256
2195
  value: DateRangeValue;
2257
2196
  onChange: (value: DateRangeValue) => void;
2258
- /** Başlangıç alanının erişilebilir adı ("Başlangıç"). ZORUNLU. */
2197
+ /** Başlangıç alanının erişilebilir adı ("Başlangıç"). */
2259
2198
  startLabel: string;
2260
- /** Bitiş alanının erişilebilir adı ("Bitiş"). ZORUNLU. */
2199
+ /** Bitiş alanının erişilebilir adı ("Bitiş"). */
2261
2200
  endLabel: string;
2262
- /** İki alanın arasındaki ayraç. Varsayılan yarım tire. */
2201
+ /** İki alanın arasındaki ayraç. */
2263
2202
  separator?: string;
2264
2203
  /** Ölçeğin uçları; ikisi de yerel öğeye geçer. */
2265
2204
  min?: string;
@@ -2274,19 +2213,19 @@ declare type RangeProps = {
2274
2213
  export declare const RangeSlider: typeof RangeSlider_2;
2275
2214
 
2276
2215
  /** Çift kulplu aralık kaydırıcı. */
2277
- declare const RangeSlider_2: ({ min, max, step, value, onChange, onCommit, formatValue, label, minLabel, maxLabel, isDisabled, className, testId, }: Props_10) => JSX.Element;
2216
+ declare const RangeSlider_2: ({ min, max, step, value, onChange, onCommit, formatValue, label, minLabel, maxLabel, isDisabled, className, testId, }: Props_11) => JSX.Element;
2278
2217
 
2279
2218
  export declare type RangeValue = [number, number];
2280
2219
 
2281
2220
  export declare const Rating: typeof Rating_2;
2282
2221
 
2283
2222
  /** Yıldız puanı — salt gösterim. */
2284
- declare const Rating_2: FC<Props_29>;
2223
+ declare const Rating_2: FC<Props_32>;
2285
2224
 
2286
2225
  export declare const RatingInput: typeof RatingInput_2;
2287
2226
 
2288
2227
  /** Yıldızla puan girişi. */
2289
- declare const RatingInput_2: ({ value, onChange, label, ratingLabels, formatStarCount, isDisabled, className, testId, }: Props_11) => JSX.Element;
2228
+ declare const RatingInput_2: ({ value, onChange, label, ratingLabels, formatStarCount, isDisabled, className, testId, }: Props_12) => JSX.Element;
2290
2229
 
2291
2230
  /** Beş puanın her birinin ne anlama geldiği. */
2292
2231
  export declare type RatingLabels = Record<1 | 2 | 3 | 4 | 5, string>;
@@ -2302,22 +2241,16 @@ declare type RowProps = HTMLAttributes<HTMLTableRowElement> & {
2302
2241
 
2303
2242
  export declare const ScrollArea: typeof ScrollArea_2;
2304
2243
 
2305
- /** Kaydırma kutusu — <strong>klavyeyle erişilebilir</strong> kaydırma bölgesi. */
2306
- declare const ScrollArea_2: FC<Props_31>;
2244
+ /** Kaydırma kutusu — klavyeyle erişilebilir kaydırma bölgesi. */
2245
+ declare const ScrollArea_2: FC<Props_34>;
2307
2246
 
2308
2247
  declare type ScrollerProps = HTMLAttributes<HTMLDivElement> & {
2309
- /**
2310
- * Çerçeve (hairline + yarıçap + yüzey). Gömülü tablolarda kapatılır: orada
2311
- * tablo zaten bir kartın içinde ve ikinci bir çerçeve kutu içinde kutu
2312
- * görünüyordu.
2313
- */
2248
+ /** Çerçeve (hairline + yarıçap + yüzey). */
2314
2249
  hasFrame?: boolean;
2315
2250
  /**
2316
2251
  * Kaydırma bölgesinin erişilebilir adı ("Sipariş kalemleri").
2317
- *
2318
- * ⚠ ZORUNLU değil ama VERİLMELİ: kutu klavyeyle odaklanabilir bir
2319
- * `region` ve adsız bir bölge ekran okuyucuda yalnızca "bölge" diye
2320
- * okunur — kullanıcı neyin içinde olduğunu bilemez.
2252
+ * ⚠ ZORUNLU değil ama VERİLMELİ: kutu klavyeyle odaklanabilir bir `region` ve adsız bir bölge
2253
+ * ekran okuyucuda yalnızca "bölge" diye okunur
2321
2254
  */
2322
2255
  label?: string;
2323
2256
  };
@@ -2325,12 +2258,12 @@ declare type ScrollerProps = HTMLAttributes<HTMLDivElement> & {
2325
2258
  export declare const SectionHeader: typeof SectionHeader_2;
2326
2259
 
2327
2260
  /** Bölüm başlığı. */
2328
- declare const SectionHeader_2: FC<Props_30>;
2261
+ declare const SectionHeader_2: FC<Props_33>;
2329
2262
 
2330
2263
  export declare const SegmentedControl: typeof SegmentedControl_2;
2331
2264
 
2332
- /** Bölmeli denetim — <strong>görünüm</strong> değiştirme. */
2333
- declare const SegmentedControl_2: <T extends string>({ options, value, onChange, label, isIconOnly, size, className, testId, }: Props_7<T>) => JSX.Element;
2265
+ /** Bölmeli denetim — görünüm değiştirme. */
2266
+ declare const SegmentedControl_2: <T extends string>({ options, value, onChange, label, isIconOnly, size, className, testId, }: Props_8<T>) => JSX.Element;
2334
2267
 
2335
2268
  export declare type SegmentOption<T extends string = string> = {
2336
2269
  value: T;
@@ -2343,7 +2276,7 @@ export declare type SegmentOption<T extends string = string> = {
2343
2276
  export declare const Select: typeof Select_2;
2344
2277
 
2345
2278
  /** Seçim kutusu. */
2346
- declare const Select_2: <T extends string>({ options, value, onChange, label, placeholder, closeLabel, icon, size, align, isDisabled, id, className, testId, required, "aria-describedby": describedBy, "aria-invalid": isInvalid, }: Props_8<T>) => JSX.Element;
2279
+ declare const Select_2: <T extends string>({ options, value, onChange, label, placeholder, closeLabel, icon, size, align, isDisabled, id, className, testId, required, "aria-describedby": describedBy, "aria-invalid": isInvalid, }: Props_9<T>) => JSX.Element;
2347
2280
 
2348
2281
  export declare type SelectOption<T extends string = string> = {
2349
2282
  value: T;
@@ -2367,7 +2300,7 @@ declare type SingleProps<T extends string> = BaseProps<T> & {
2367
2300
  export declare const Skeleton: typeof Skeleton_2;
2368
2301
 
2369
2302
  /** Yükleme iskeleti. */
2370
- declare const Skeleton_2: FC<Props_32>;
2303
+ declare const Skeleton_2: FC<Props_35>;
2371
2304
 
2372
2305
  export declare const SkeletonCard: NamedExoticComponent<ShapeProps>;
2373
2306
 
@@ -2380,16 +2313,28 @@ columns?: number;
2380
2313
  export declare const Spinner: typeof Spinner_2;
2381
2314
 
2382
2315
  /** Yükleme göstergesi. */
2383
- declare const Spinner_2: FC<Props_36>;
2316
+ declare const Spinner_2: FC<Props_39>;
2384
2317
 
2385
2318
  export declare const Stat: typeof Stat_2;
2386
2319
 
2387
2320
  /** Ölçüm kutusu (KPI). */
2388
- declare const Stat_2: FC<Props_33>;
2321
+ declare const Stat_2: FC<Props_36>;
2389
2322
 
2390
2323
  /** Değişimin yönü. `flat` "değişmedi" — yokluk DEĞİL. */
2391
2324
  export declare type StatTrend = 'up' | 'down' | 'flat';
2392
2325
 
2326
+ export declare const StatusDot: typeof StatusDot_2;
2327
+
2328
+ /**
2329
+ * Durum noktası — bağlantı, araç çağrısı, meşguliyet.
2330
+ *
2331
+ * ⚠ Marka tonu YOK (`brand`): nokta bir durum taşır, marka yüzeyi değil. Süren iş `neutral` +
2332
+ * `isPulsing` ile anlatılır; yeşil yalnızca anlamsal başarıda (`success`).
2333
+ */
2334
+ declare const StatusDot_2: FC<Props_25>;
2335
+
2336
+ export declare type StatusDotTone = 'neutral' | 'success' | 'warning' | 'danger';
2337
+
2393
2338
  export declare type StepItem = {
2394
2339
  id: string;
2395
2340
  label: string;
@@ -2400,33 +2345,27 @@ export declare type StepItem = {
2400
2345
  export declare const Steps: typeof Steps_2;
2401
2346
 
2402
2347
  /** Adım göstergesi (stepper) — çok adımlı akışta NEREDE olunduğu. */
2403
- declare const Steps_2: FC<Props_38>;
2348
+ declare const Steps_2: FC<Props_42>;
2349
+
2350
+ declare type StickToBottom = {
2351
+ /** Kutu sonda mı (pay dahilinde). `false` iken "en yeniye in" düğmesi gösterilir. */
2352
+ isAtEnd: boolean;
2353
+ /** Sona kaydırır ve yeniden yapışır. */
2354
+ scrollToEnd: () => void;
2355
+ };
2404
2356
 
2405
2357
  export declare const SummaryCard: typeof SummaryCard_2;
2406
2358
 
2407
- /**
2408
- * Özet kartı — başlık + kısa açıklama + meta satırı taşıyan BAĞLANTILI kart.
2409
- *
2410
- * Kartın tamamı tıklanır ama sekme durağı TEKTİR: bağlantı başlıktadır,
2411
- * yüzeyi `::after` katmanı kaplar. `meta` satırı katmanın ÜSTÜNDE durur —
2412
- * içine konan çip/rozet tıklamaları kart bağlantısına düşmez.
2413
- */
2414
- declare const SummaryCard_2: FC<Props_34>;
2359
+ /** Özet kartı — başlık + kısa açıklama + meta satırı taşıyan BAĞLANTILI kart. */
2360
+ declare const SummaryCard_2: FC<Props_37>;
2415
2361
 
2416
2362
  export declare type SummaryCardHeadingLevel = 2 | 3 | 4;
2417
2363
 
2418
2364
  export declare const Switch: typeof Switch_2;
2419
2365
 
2420
2366
  /**
2421
- * Anahtar (switch) — <strong>anında</strong> uygulanan aç/kapa.
2422
- *
2423
- * @example
2424
- * <Switch
2425
- * label="Kampanya bildirimleri"
2426
- * hint="E-posta ile ayda en fazla iki ileti"
2427
- * checked={isSubscribed}
2428
- * onChange={event => subscribe(event.target.checked)}
2429
- * />
2367
+ * Anahtar (switch) — anında uygulanan aç/kapa.
2368
+ * @example <Switch label="Kampanya bildirimleri" hint="E-posta ile ayda en fazla iki…
2430
2369
  */
2431
2370
  declare const Switch_2: ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "role" | "type"> & {
2432
2371
  /** Anahtarın görünür etiketi. */
@@ -2450,34 +2389,26 @@ export declare type TabItem = {
2450
2389
  export declare const Table: typeof Table_2;
2451
2390
 
2452
2391
  /** Temel tablo — hairline satır ayrımı, `$surface-2` başlık, yoğunluk ölçeği. */
2453
- declare const Table_2: FC<Props_48>;
2392
+ declare const Table_2: FC<Props_52>;
2454
2393
 
2455
2394
  export declare const TableCheckbox: typeof TableCheckbox_2;
2456
2395
 
2457
2396
  /** Tablo hücresindeki toplu seçim kutusu. */
2458
2397
  declare const TableCheckbox_2: ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "aria-label"> & {
2459
- /**
2460
- * Erişilebilir ad — ZORUNLU. Hücrede görünür etiket yok (etiket sütun
2461
- * başlığında); adsız kutu ekran okuyucuda yalnızca "onay kutusu" diye
2462
- * okunur. Satır kutusunda kaydın kimliğini söyleyin ("SP-2026-000123 seç").
2463
- */
2398
+ /** Erişilebilir ad — ZORUNLU. */
2464
2399
  label: string;
2465
2400
  /**
2466
2401
  * "Bazı satırlar seçili" — başlık kutusunun üçüncü durumu.
2467
- *
2468
- * ⚠ Bu prop OLMADAN o durum İFADE EDİLEMİYORDU. `indeterminate` bir HTML
2469
- * niteliği değil, yalnızca DOM ÖZELLİĞİ; JSX ile yazılamaz, `ref` üzerinden
2470
- * atanması gerekir. Sonuç: başlık kutusu ya "hiçbiri" ya "hepsi" diyordu,
2471
- * kısmi seçimde ise sessizce YANLIŞ bilgi veriyordu — operatör "hepsi
2472
- * seçili" sanıp toplu işlem yapıyordu.
2402
+ * ⚠ Bu prop OLMADAN o durum İFADE EDİLEMİYORDU. `indeterminate` bir HTML niteliği değil, yalnızca
2403
+ * DOM ÖZELLİĞİ
2473
2404
  */
2474
2405
  isIndeterminate?: boolean;
2475
2406
  testId?: string;
2476
2407
  } & RefAttributes<HTMLInputElement>>;
2477
2408
 
2478
2409
  /**
2479
- * Tablo kaydırma kutusu — "tablo kendi kutusunda kayar, sayfa asla yatay
2480
- * kaymaz" kuralının tek uygulaması.
2410
+ * Tablo kaydırma kutusu — "tablo kendi kutusunda kayar, sayfa asla yatay kaymaz" kuralının tek
2411
+ * uygulaması.
2481
2412
  */
2482
2413
  export declare const TableScroller: FC<ScrollerProps>;
2483
2414
 
@@ -2488,17 +2419,18 @@ export declare const TABLET_PORTRAIT_BREAKPOINT = 768;
2488
2419
  export declare const Tabs: typeof Tabs_2;
2489
2420
 
2490
2421
  /** Sekmeler. */
2491
- declare const Tabs_2: FC<Props_39>;
2422
+ declare const Tabs_2: FC<Props_43>;
2492
2423
 
2493
2424
  export declare const TagInput: typeof TagInput_2;
2494
2425
 
2495
2426
  /** Etiket girdisi — yazılan metni kaldırılabilir çiplere çevirir. */
2496
- declare const TagInput_2: ({ values, onChange, label, placeholder, removeLabel, separators, maxTags, isDisabled, id, required, className, testId, "aria-describedby": describedBy, "aria-invalid": isInvalid, }: Props_14) => JSX.Element;
2427
+ declare const TagInput_2: ({ values, onChange, label, placeholder, removeLabel, separators, maxTags, isDisabled, id, required, className, testId, "aria-describedby": describedBy, "aria-invalid": isInvalid, }: Props_15) => JSX.Element;
2497
2428
 
2498
2429
  export declare const Textarea: typeof Textarea_2;
2499
2430
 
2500
2431
  /** Çok satırlı metin girdisi. */
2501
2432
  declare const Textarea_2: ForwardRefExoticComponent<TextareaHTMLAttributes<HTMLTextAreaElement> & {
2433
+ variant?: TextareaVariant;
2502
2434
  /** Alan içeriğiyle birlikte BÜYÜR — kaydırma çubuğu yerine yükseklik. */
2503
2435
  isAutoSize?: boolean;
2504
2436
  /** Otomatik büyümenin tavanı (satır). */
@@ -2508,10 +2440,17 @@ hasCounter?: boolean;
2508
2440
  testId?: string;
2509
2441
  } & RefAttributes<HTMLTextAreaElement>>;
2510
2442
 
2443
+ /**
2444
+ * `bare`: kenarlık, zemin, dolgu ve gölge YOK — çerçeveyi kapsayıcı çizer (sohbet girdisi).
2445
+ * ⚠ Odak göstergesi de kapsayıcının işi (`:focus-within`); `bare` alanı çerçevesiz bir kutuya
2446
+ * konursa odak görünmez olur.
2447
+ */
2448
+ declare type TextareaVariant = 'default' | 'bare';
2449
+
2511
2450
  export declare const TextLink: typeof TextLink_2;
2512
2451
 
2513
2452
  /** Metin bağlantısı. */
2514
- declare const TextLink_2: ({ href, children, hasArrow, tone, size, className, linkProps, ...rest }: Props_2) => JSX.Element;
2453
+ declare const TextLink_2: ({ href, children, hasArrow, tone, size, className, linkProps, ...rest }: Props_3) => JSX.Element;
2515
2454
 
2516
2455
  /** Temanın taşındığı öznitelik. `<html data-hanui-theme="dark">`. */
2517
2456
  export declare const THEME_ATTRIBUTE = "data-hanui-theme";
@@ -2519,17 +2458,17 @@ export declare const THEME_ATTRIBUTE = "data-hanui-theme";
2519
2458
  export declare const Tile: typeof Tile_2;
2520
2459
 
2521
2460
  /** Karo — ikon madalyonu + etiket. */
2522
- declare const Tile_2: ({ label, icon, href, meta, isActive, linkProps, className, testId }: Props_40) => JSX.Element;
2461
+ declare const Tile_2: ({ label, icon, href, meta, isActive, linkProps, className, testId }: Props_44) => JSX.Element;
2523
2462
 
2524
2463
  export declare const Timeline: typeof Timeline_2;
2525
2464
 
2526
2465
  /** Zaman çizelgesi — sipariş durumu, işlem geçmişi. */
2527
- declare const Timeline_2: FC<Props_41>;
2466
+ declare const Timeline_2: FC<Props_45>;
2528
2467
 
2529
2468
  export declare type TimelineEvent = {
2530
2469
  id: string;
2531
2470
  title: string;
2532
- /** Zaman damgası — BİÇİMLENDİRİLMİŞ dize. Bileşen tarih biçimlendirmez. */
2471
+ /** Zaman damgası — BİÇİMLENDİRİLMİŞ dize. */
2533
2472
  time?: string;
2534
2473
  description?: ReactNode;
2535
2474
  status?: TimelineStatus;
@@ -2542,10 +2481,7 @@ export declare type TimelineStatus = 'done' | 'current' | 'pending' | 'failed';
2542
2481
 
2543
2482
  /**
2544
2483
  * BİLDİRİM SÖZLEŞMESİ — süre, ikon ve renk kararları TEK YERDE.
2545
- *
2546
- * @example
2547
- * toast.success('Adres kaydedildi');
2548
- * toast.error('Kart reddedildi', { action: { label: 'Yeniden dene', onClick: retry } });
2484
+ * @example toast.success('Adres kaydedildi'); toast.error('Kart reddedildi', { action: { label…
2549
2485
  */
2550
2486
  export declare const toast: {
2551
2487
  show: (message: string, options?: ToastOptions) => number;
@@ -2560,7 +2496,7 @@ export declare const toast: {
2560
2496
 
2561
2497
  export declare const ToastHub: typeof ToastHub_2;
2562
2498
 
2563
- /** Bildirim yığını — uygulamada <strong>BİR KEZ</strong> çizilir. */
2499
+ /** Bildirim yığını — uygulamada BİR KEZ çizilir. */
2564
2500
  declare const ToastHub_2: ({ closeLabel, regionLabel, className }: HubProps) => ReactPortal | null;
2565
2501
 
2566
2502
  export declare type ToastOptions = {
@@ -2580,12 +2516,7 @@ export declare const ToastPortal: typeof ToastPortal_2;
2580
2516
 
2581
2517
  /**
2582
2518
  * `ToastHub`ı montajdan SONRA çizen sarmalayıcı.
2583
- *
2584
- * ⚠ SUNUCUDA ÇİZİLMEMESİ ŞART. `ToastHub` portal kullanıyor ve `document`
2585
- * olmadan çalışamaz; sunucu tarafında çizilen bir ağaçta doğrudan kullanmak
2586
- * hidrasyon uyuşmazlığı üretir. Next.js kullanan iki uygulamada da aynı
2587
- * sarmalayıcı BİREBİR AYNI dosya olarak yazılmıştı — çözüm uygulamaya değil
2588
- * bileşene ait.
2519
+ * ⚠ SUNUCUDA ÇİZİLMEMESİ ŞART. `ToastHub` portal kullanıyor ve `document` olmadan çalışamaz
2589
2520
  */
2590
2521
  declare const ToastPortal_2: FC;
2591
2522
 
@@ -2594,10 +2525,12 @@ export declare type ToastTone = 'info' | 'success' | 'warning' | 'danger';
2594
2525
  export declare const Tooltip: typeof Tooltip_2;
2595
2526
 
2596
2527
  /** İpucu balonu. */
2597
- declare const Tooltip_2: ({ content, children, side, position, openDelay, className, }: Props_3) => JSX.Element;
2528
+ declare const Tooltip_2: ({ content, children, side, position, openDelay, className, }: Props_4) => JSX.Element;
2598
2529
 
2599
2530
  /** Ölçü basamakları. */
2600
2531
  export declare enum UISize {
2532
+ /** Görsel 30 px — yoğun araç çubuğu ve üst bant. Dokunma hedefi yine 44 px (`tap-target`). */
2533
+ XSMALL = "XSMALL",
2601
2534
  SMALL = "SMALL",
2602
2535
  MEDIUM = "MEDIUM",
2603
2536
  LARGE = "LARGE"
@@ -2605,16 +2538,13 @@ export declare enum UISize {
2605
2538
 
2606
2539
  /** Düğme ve eylem varyantları. */
2607
2540
  export declare enum UIVariant {
2608
- /** Ekranın tek beklenen eylemi: <strong>nötr grafit</strong> dolgu. */
2541
+ /** Ekranın tek beklenen eylemi: çam dolgu (koyu temada mint sınırla). Bir ekranda TEK. */
2609
2542
  PRIMARY = "PRIMARY",
2610
- /** <strong>Dönüşüm eylemi — ve yalnızca o.</strong> */
2543
+ /** Dönüşüm eylemi — ve yalnızca o. */
2611
2544
  CART = "CART",
2612
2545
  /** Nötr ikincil eylem: gri kenarlık, koyu metin ("Vazgeç"). */
2613
2546
  SECONDARY = "SECONDARY",
2614
- /**
2615
- * Mavi çerçeveli eylem — teşvik edilen ama birincil olmayan gezinme
2616
- * ("Tümünü gör").
2617
- */
2547
+ /** Mürekkep çerçeveli eylem — teşvik edilen ama birincil olmayan gezinme ("Tümünü gör"). */
2618
2548
  OUTLINE = "OUTLINE",
2619
2549
  /** Vurgu bandı içindeki eylem: bandın kendi yüzey merdivenini kullanır. */
2620
2550
  DARK = "DARK",
@@ -2622,25 +2552,22 @@ export declare enum UIVariant {
2622
2552
  LIGHT = "LIGHT",
2623
2553
  /** Zeminsiz eylem: araç çubuğu ve satır içi ikincil işler. */
2624
2554
  GHOST = "GHOST",
2625
- /** Yıkıcı eylem: silme onayı. Durum tinti değil, gerçek bir dolgu. */
2555
+ /** Yıkıcı eylem: silme onayı. */
2626
2556
  DANGER = "DANGER"
2627
2557
  }
2628
2558
 
2629
2559
  export declare type UploadFile = {
2630
2560
  id: string;
2631
2561
  name: string;
2632
- /** Bayt. Ekranda okunur biçime çevrilir. */
2562
+ /** Bayt. */
2633
2563
  size: number;
2634
2564
  /** 0-100. `undefined` → yükleme başlamadı ya da bitti. */
2635
2565
  progress?: number;
2636
- /** Bu dosyaya ait hata. Satır kırmızı çizilir ve metin okunur. */
2566
+ /** Bu dosyaya ait hata. */
2637
2567
  error?: string;
2638
2568
  };
2639
2569
 
2640
- /**
2641
- * Duyuru fonksiyonu döndürür. Referans SABİT: bağımlılık dizisine güvenle
2642
- * konur, her render'da yeni bir kapanış üretip etkileri tetiklemez.
2643
- */
2570
+ /** Duyuru fonksiyonu döndürür. */
2644
2571
  export declare const useAnnounce: () => ((message: string, politeness?: AnnouncePoliteness) => void);
2645
2572
 
2646
2573
  /** Sağlayıcı ZORUNLU DEĞİL. */
@@ -2648,20 +2575,27 @@ export declare const useHanui: () => HanuiContextValue;
2648
2575
 
2649
2576
  /**
2650
2577
  * Açık/koyu seçimini okur ve değiştirir.
2651
- *
2652
- * @example
2653
- * const { scheme, toggle, isReady } = useHanuiTheme();
2578
+ * @example const { scheme, toggle, isReady } = useHanuiTheme();
2654
2579
  */
2655
2580
  export declare const useHanuiTheme: () => HanuiThemeState;
2656
2581
 
2582
+ /**
2583
+ * Token'ların ÇÖZÜLMÜŞ değerleri — CSS değişkeni okuyamayan çizim kütüphaneleri için (recharts
2584
+ * `stroke`/`fill` prop'ları `var(--…)` kabul etmiyor).
2585
+ * Tema değiştiğinde (açık seçim, sistem tercihi, `initHanui` ezmesi) yeniden çizer.
2586
+ * ⚠ Sunucu çıktısında ve hidrasyondan önceki ilk karede her değer `currentColor`.
2587
+ * @example const colors = useHanuiTokens(['series-1', 'series-2', 'border']);
2588
+ */
2589
+ export declare const useHanuiTokens: <TName extends HanuiToken>(names: readonly TName[]) => Record<TName, string>;
2590
+
2657
2591
  /** LISTBOX KLAVYE GEZİNMESİ — `Select` ve `Combobox`ın ortak modeli. */
2658
2592
  export declare const useListboxNavigation: <T extends HTMLElement = HTMLElement>({ count, isOpen, initialIndex, onSelect, onClose }: ListboxNavigationOptions, { hasSpaceSelect }?: {
2659
2593
  hasSpaceSelect?: boolean | undefined;
2660
2594
  }) => ListboxNavigation<T>;
2661
2595
 
2662
2596
  /**
2663
- * ÇARPIŞMAYA DUYARLI KONUMLANDIRMA — `Tooltip`, `Popover`, `Menu` ve açılır
2664
- * listelerin ortak temeli.
2597
+ * ÇARPIŞMAYA DUYARLI KONUMLANDIRMA — `Tooltip`, `Popover`, `Menu` ve açılır listelerin ortak
2598
+ * temeli.
2665
2599
  */
2666
2600
  export declare const usePositioning: (anchorRef: {
2667
2601
  current: HTMLElement | null;
@@ -2669,6 +2603,16 @@ export declare const usePositioning: (anchorRef: {
2669
2603
  current: HTMLElement | null;
2670
2604
  }, { side, align, offset, padding, isOpen }: PositioningOptions) => PositioningState;
2671
2605
 
2606
+ /**
2607
+ * Kaydırma kutusunu SONA yapışık tutar — kullanıcı yukarı kaydırana kadar. Akan bir yanıt, canlı
2608
+ * terminal çıktısı, büyüyen akıl yürütme metni.
2609
+ * İçerik değişimini (`MutationObserver`: yeni satır, akan metin) ve kutunun kendi boyunu
2610
+ * (`ResizeObserver`: ekran klavyesi açılınca) izler; render'da yerleşim okumaz.
2611
+ * @param isEnabled `false` iken hiçbir şey izlenmez.
2612
+ * @example const { isAtEnd, scrollToEnd } = useStickToBottom(listRef);
2613
+ */
2614
+ export declare const useStickToBottom: (ref: RefObject<HTMLElement | null>, isEnabled?: boolean) => StickToBottom;
2615
+
2672
2616
  /** SANALLAŞTIRMA — yalnızca görünen satırları çiz. */
2673
2617
  export declare const useVirtualList: (count: number, { rowHeight, overscan, isEnabled }?: {
2674
2618
  rowHeight?: number | undefined;