@mari-ui/native 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +88 -2
- package/dist/index.cjs +9602 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2871 -0
- package/dist/index.d.ts +2871 -0
- package/dist/index.js +9497 -0
- package/dist/index.js.map +1 -0
- package/package.json +72 -3
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,2871 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import React__default, { ReactNode, ForwardRefExoticComponent, RefAttributes, ComponentRef, ReactElement } from 'react';
|
|
3
|
+
import { StyleProp, ViewStyle, GestureResponderEvent, TextInputProps, TextStyle, PressableProps, View, FlatListProps, ViewProps, FlatList, TextProps as TextProps$1, DimensionValue, ImageSourcePropType, ImageStyle, Animated } from 'react-native';
|
|
4
|
+
import { ColorRole, Variant, ExtendedSize, Size, Placement } from '@mari-ui/core';
|
|
5
|
+
import { Theme } from '@mari-ui/tokens';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Native `skeleton` sözleşmesi — web'deki (Faz 15) ile aynı: veri gelene kadar
|
|
9
|
+
* component KENDİ geometrisinde (aynı yükseklik, köşe, genişlik) yer tutucu
|
|
10
|
+
* çizer → yüklenince yerleşim kaymaz. Yer tutucu ekran okuyucudan gizlidir.
|
|
11
|
+
* `loading` ≠ `skeleton`: `loading` süren bir EYLEM (Button spinner'ı),
|
|
12
|
+
* `skeleton` henüz VERİ yok.
|
|
13
|
+
*
|
|
14
|
+
* Hareket: web'deki parıltının native karşılığı hafif nabız (opaklık).
|
|
15
|
+
* Sistemde "Hareketi azalt" açıksa sabit.
|
|
16
|
+
*/
|
|
17
|
+
interface SkeletonableProps {
|
|
18
|
+
/** Veri gelene kadar component'in kendi boyutunda iskelet çizer. */
|
|
19
|
+
skeleton?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Yer tutucu kutu. `style` component'in GERÇEK geometrisini (yükseklik,
|
|
23
|
+
* köşe, iç boşluk) taşır; dolgu ve kenarlık burada iskelet tonuna çevrilir.
|
|
24
|
+
* `children` görünmez ama yer kaplar (ör. buton etiketi → aynı genişlik).
|
|
25
|
+
*/
|
|
26
|
+
declare function SkeletonBox({ style, children, animated }: Readonly<{
|
|
27
|
+
style?: StyleProp<ViewStyle>;
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
animated?: boolean;
|
|
30
|
+
}>): React.JSX.Element;
|
|
31
|
+
|
|
32
|
+
/** İkon-only ve pill butonlar için — web'deki `ButtonShape` ile aynı. */
|
|
33
|
+
type ButtonShape = "default" | "pill" | "circle" | "square";
|
|
34
|
+
type ButtonIconPosition = "start" | "end";
|
|
35
|
+
/** Web'deki `ButtonLoading` ile aynı sözleşme. */
|
|
36
|
+
type ButtonLoading = boolean | {
|
|
37
|
+
/** ms — gösterge ancak bu süre dolunca belirir (kısa işlemlerde titreme olmasın). Buton yine HEMEN devre dışı olur. */
|
|
38
|
+
delay?: number;
|
|
39
|
+
/** Varsayılan dönen gösterge yerine kendi ikonunuz. */
|
|
40
|
+
icon?: ReactNode;
|
|
41
|
+
iconPosition?: ButtonIconPosition;
|
|
42
|
+
};
|
|
43
|
+
interface ButtonProps extends SkeletonableProps {
|
|
44
|
+
/** Semantik renk. Varsayılan: `primary`. */
|
|
45
|
+
color?: ColorRole;
|
|
46
|
+
/** Dolgu stili. Varsayılan: `solid`. Web ile aynı sözlük; `link` web'deki gibi alt çizgisiz, dolgusuz. */
|
|
47
|
+
variant?: Variant;
|
|
48
|
+
/** Native ölçek: xs 32 · sm 36 · md 44 · lg 50 · xl 56 (web 20–48). Varsayılan: `md`. */
|
|
49
|
+
size?: ExtendedSize;
|
|
50
|
+
shape?: ButtonShape;
|
|
51
|
+
/** Tam genişlik. */
|
|
52
|
+
block?: boolean;
|
|
53
|
+
disabled?: boolean;
|
|
54
|
+
/** Süren eylem: buton devre dışı + dönen gösterge. Nesne ile gecikme / özel ikon. */
|
|
55
|
+
loading?: ButtonLoading;
|
|
56
|
+
/**
|
|
57
|
+
* İkon (ör. lucide-react-native). `size` / `color` verilmezse butonun
|
|
58
|
+
* boyutuna (12–20px) ve yazı rengine göre verilir — web'deki gibi.
|
|
59
|
+
*/
|
|
60
|
+
icon?: ReactNode;
|
|
61
|
+
iconPosition?: ButtonIconPosition;
|
|
62
|
+
onPress?: (event: GestureResponderEvent) => void;
|
|
63
|
+
onLongPress?: (event: GestureResponderEvent) => void;
|
|
64
|
+
/** Metin ya da öğe. Metin tek satırda kalır, sığmazsa "…" ile kesilir (web `truncate`). */
|
|
65
|
+
children?: ReactNode;
|
|
66
|
+
/** Kök `Pressable`e ek stil — web'deki `className`in native karşılığı. */
|
|
67
|
+
style?: StyleProp<ViewStyle>;
|
|
68
|
+
testID?: string;
|
|
69
|
+
/** Yalnız ikonlu butonda ZORUNLU (ekran okuyucu adı). */
|
|
70
|
+
accessibilityLabel?: string;
|
|
71
|
+
accessibilityHint?: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Web `Button` ile aynı eksenler, renkler ve davranış (web ↔ native ölçümüyle
|
|
76
|
+
* doğrulandı: renkler, kenarlık, kalınlık, varyantlar). Boyutlar native
|
|
77
|
+
* ölçekte (theme/nativeSize — Apple HIG + Material 3; md 44). Native
|
|
78
|
+
* farkları: `onClick` → `onPress`; `href`/`target` yok; hover yok → basılınca
|
|
79
|
+
* web'in hover + active hali birlikte.
|
|
80
|
+
*/
|
|
81
|
+
declare function Button({ color, variant, size, shape, block, disabled, loading, icon, iconPosition, onPress, onLongPress, children, style, testID, accessibilityLabel, accessibilityHint, skeleton, }: Readonly<ButtonProps>): React.JSX.Element;
|
|
82
|
+
|
|
83
|
+
type InputVariant = "outline" | "soft" | "ghost" | "underlined";
|
|
84
|
+
type InputShape = "default" | "pill" | "square";
|
|
85
|
+
/**
|
|
86
|
+
* Web `type` ile aynı sözlük — native'de klavye / otomatik doldurma / gizli
|
|
87
|
+
* giriş ayarlarına çevrilir (`password` → gizli + göster/gizle düğmesi).
|
|
88
|
+
*/
|
|
89
|
+
type InputType = "text" | "password" | "email" | "number" | "tel" | "url" | "search";
|
|
90
|
+
interface InputCountConfig {
|
|
91
|
+
formatter?: (info: {
|
|
92
|
+
value: string;
|
|
93
|
+
count: number;
|
|
94
|
+
maxLength?: number;
|
|
95
|
+
}) => ReactNode;
|
|
96
|
+
}
|
|
97
|
+
interface InputProps extends SkeletonableProps {
|
|
98
|
+
value?: string;
|
|
99
|
+
defaultValue?: string;
|
|
100
|
+
/** Web `onChange`in karşılığı — doğrudan metin. */
|
|
101
|
+
onChangeText?: (value: string) => void;
|
|
102
|
+
/** Klavyenin "gönder / bitti" tuşu (web `onPressEnter`). */
|
|
103
|
+
onPressEnter?: (value: string) => void;
|
|
104
|
+
placeholder?: string;
|
|
105
|
+
type?: InputType;
|
|
106
|
+
disabled?: boolean;
|
|
107
|
+
/** Yalnız okunur: seçilebilir, düzenlenemez. */
|
|
108
|
+
readOnly?: boolean;
|
|
109
|
+
size?: Size;
|
|
110
|
+
shape?: InputShape;
|
|
111
|
+
variant?: InputVariant;
|
|
112
|
+
/**
|
|
113
|
+
* Doğrulama rengi. Verilmezse dinlenme kenarlığı nötr gri, odakta `primary`
|
|
114
|
+
* (web ile aynı). `status` kısayolu: `error` / `warning`.
|
|
115
|
+
*/
|
|
116
|
+
color?: ColorRole;
|
|
117
|
+
status?: "error" | "warning";
|
|
118
|
+
/** İkon (soluk renkte). `size` / `color` verilmezse 16px ve soluk renk verilir. */
|
|
119
|
+
icon?: ReactNode;
|
|
120
|
+
iconPosition?: "start" | "end";
|
|
121
|
+
/** Doluyken temizle düğmesi. `{ clearIcon }` ile kendi ikonunuz. */
|
|
122
|
+
allowClear?: boolean | {
|
|
123
|
+
clearIcon?: ReactNode;
|
|
124
|
+
};
|
|
125
|
+
/** Temizle düğmesinin ekran okuyucu adı. Varsayılan: "Temizle". */
|
|
126
|
+
clearLabel?: string;
|
|
127
|
+
onClear?: () => void;
|
|
128
|
+
maxLength?: number;
|
|
129
|
+
/** Karakter sayacı ("12 / 50"). */
|
|
130
|
+
showCount?: boolean;
|
|
131
|
+
count?: InputCountConfig;
|
|
132
|
+
/** `type="password"`de göster/gizle düğmesi. Varsayılan: `true`. */
|
|
133
|
+
visibilityToggle?: boolean;
|
|
134
|
+
visibilityIconRender?: (visible: boolean) => ReactNode;
|
|
135
|
+
/** Biçim maskesi (ör. `"0(5__) ___ __ __"`); `_` yerine rakam yazılır. */
|
|
136
|
+
mask?: string;
|
|
137
|
+
replacement?: Record<string, RegExp>;
|
|
138
|
+
autoFocus?: boolean;
|
|
139
|
+
autoComplete?: Exclude<TextInputProps["autoComplete"], undefined>;
|
|
140
|
+
/** Klavyedeki eylem tuşu (web `enterKeyHint`). */
|
|
141
|
+
returnKeyType?: Exclude<TextInputProps["returnKeyType"], undefined>;
|
|
142
|
+
onFocus?: Exclude<TextInputProps["onFocus"], undefined>;
|
|
143
|
+
onBlur?: Exclude<TextInputProps["onBlur"], undefined>;
|
|
144
|
+
style?: StyleProp<ViewStyle>;
|
|
145
|
+
inputStyle?: StyleProp<TextStyle>;
|
|
146
|
+
testID?: string;
|
|
147
|
+
accessibilityLabel?: string;
|
|
148
|
+
accessibilityHint?: string;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Web `Input` ile aynı renk / kenarlık / odak davranışı (ölçümle doğrulandı),
|
|
153
|
+
* boyutlar native ölçekte (theme/nativeSize), ve aynı özellikler:
|
|
154
|
+
* varyant / boyut / şekil, doğrulama rengi (`color` / `status`), ikon,
|
|
155
|
+
* temizle, şifre göster/gizle, karakter sayacı, maske, Enter eylemi, iskelet.
|
|
156
|
+
* Alanın herhangi bir yerine dokununca yazma alanı odaklanır (web: wrapper
|
|
157
|
+
* mousedown); dokunma alanı 44px'e tamamlanır.
|
|
158
|
+
*/
|
|
159
|
+
declare function Input({ value, defaultValue, onChangeText, onPressEnter, placeholder, type, disabled: ownDisabled, readOnly, size, shape, variant, color, status: ownStatus, icon, iconPosition, allowClear, clearLabel, onClear, maxLength, showCount, count, visibilityToggle, visibilityIconRender, mask, replacement, autoFocus, autoComplete, returnKeyType, onFocus, onBlur, style, inputStyle, testID, accessibilityLabel: ownLabel, accessibilityHint: ownHint, skeleton: ownSkeleton, }: Readonly<InputProps>): React.JSX.Element;
|
|
160
|
+
|
|
161
|
+
interface TextareaAutoSize {
|
|
162
|
+
minRows?: number;
|
|
163
|
+
maxRows?: number;
|
|
164
|
+
}
|
|
165
|
+
interface TextareaProps extends SkeletonableProps {
|
|
166
|
+
value?: string;
|
|
167
|
+
defaultValue?: string;
|
|
168
|
+
onChangeText?: (value: string) => void;
|
|
169
|
+
placeholder?: string;
|
|
170
|
+
/** Başlangıç satır sayısı (sabit yükseklik). Varsayılan: 3. */
|
|
171
|
+
rows?: number;
|
|
172
|
+
/** İçerikle büyür: `true` ya da `{ minRows, maxRows }`; `maxRows` sonrası alan içinde kaydırılır. */
|
|
173
|
+
autoSize?: boolean | TextareaAutoSize;
|
|
174
|
+
disabled?: boolean;
|
|
175
|
+
readOnly?: boolean;
|
|
176
|
+
size?: Size;
|
|
177
|
+
shape?: Exclude<InputShape, "pill">;
|
|
178
|
+
variant?: InputVariant;
|
|
179
|
+
color?: ColorRole;
|
|
180
|
+
status?: "error" | "warning";
|
|
181
|
+
allowClear?: boolean | {
|
|
182
|
+
clearIcon?: ReactNode;
|
|
183
|
+
};
|
|
184
|
+
clearLabel?: string;
|
|
185
|
+
onClear?: () => void;
|
|
186
|
+
maxLength?: number;
|
|
187
|
+
showCount?: boolean;
|
|
188
|
+
count?: InputCountConfig;
|
|
189
|
+
autoFocus?: boolean;
|
|
190
|
+
onFocus?: () => void;
|
|
191
|
+
onBlur?: () => void;
|
|
192
|
+
style?: StyleProp<ViewStyle>;
|
|
193
|
+
inputStyle?: StyleProp<TextStyle>;
|
|
194
|
+
accessibilityLabel?: string;
|
|
195
|
+
accessibilityHint?: string;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Web `Textarea` ile aynı kutu (Input'un renk/kenar/odak kuralları), çok
|
|
199
|
+
* satırlı. Sayaç ve temizle düğmesi sağ alt / sağ üst köşede, metnin üstüne
|
|
200
|
+
* binmez. `autoSize` içerik yüksekliğini izler.
|
|
201
|
+
*/
|
|
202
|
+
declare function Textarea({ value, defaultValue, onChangeText, placeholder, rows, autoSize, disabled: ownDisabled, readOnly, size, shape, variant, color, status: ownStatus, allowClear, clearLabel, onClear, maxLength, showCount, count, autoFocus, onFocus, onBlur, style, inputStyle, accessibilityLabel: ownLabel, accessibilityHint: ownHint, skeleton: ownSkeleton, }: Readonly<TextareaProps>): React.JSX.Element;
|
|
203
|
+
|
|
204
|
+
type SearchInputProps = InputProps & {
|
|
205
|
+
/** Klavyedeki "Ara" tuşu VE ara düğmesi, alanın o anki değeriyle çağırır. */
|
|
206
|
+
onSearch?: (value: string) => void;
|
|
207
|
+
/** Arama sürüyor — ara ikonu yerine dönen gösterge; alan yazılabilir kalır. */
|
|
208
|
+
loading?: boolean;
|
|
209
|
+
/** Ara düğmesinin erişilebilir adı. Varsayılan: `"Ara"`. */
|
|
210
|
+
searchLabel?: string;
|
|
211
|
+
};
|
|
212
|
+
/** Web `SearchInput`: Input + sonda ara düğmesi; klavye dönüş tuşu "Ara". */
|
|
213
|
+
declare function SearchInput({ icon, iconPosition, onSearch, onPressEnter, loading, searchLabel, value, defaultValue, onChangeText, size, ...rest }: SearchInputProps): React.JSX.Element;
|
|
214
|
+
|
|
215
|
+
interface OtpInputProps extends SkeletonableProps {
|
|
216
|
+
/** Hane sayısı. Varsayılan: 6. */
|
|
217
|
+
length?: number;
|
|
218
|
+
value?: string;
|
|
219
|
+
defaultValue?: string;
|
|
220
|
+
/** Tüm haneler dolunca, birleşik kodla. */
|
|
221
|
+
onChange?: (value: string) => void;
|
|
222
|
+
/** Her değişiklikte hane dizisi (boş haneler `""`). */
|
|
223
|
+
onInput?: (value: string[]) => void;
|
|
224
|
+
disabled?: boolean;
|
|
225
|
+
size?: Size;
|
|
226
|
+
shape?: InputShape;
|
|
227
|
+
/** `ghost` OTP'de görünmez olacağından `underlined` çizilir. */
|
|
228
|
+
variant?: InputVariant;
|
|
229
|
+
color?: ColorRole;
|
|
230
|
+
status?: "error" | "warning";
|
|
231
|
+
/** Haneleri • ile gizler. */
|
|
232
|
+
mask?: boolean;
|
|
233
|
+
/** Her hane için dönüştürücü (ör. büyük harf). */
|
|
234
|
+
formatter?: (char: string) => string;
|
|
235
|
+
/** Haneler arasına öğe; fonksiyonsa i. haneden sonra. */
|
|
236
|
+
separator?: React__default.ReactNode | ((index: number) => React__default.ReactNode);
|
|
237
|
+
/** Varsayılan `numeric` (rakam klavyesi); harfli kodlar için `text`. */
|
|
238
|
+
inputMode?: "numeric" | "text";
|
|
239
|
+
/** `separated` (varsayılan): her hane ayrı kutu. `single`: tek alanda yuvalar. */
|
|
240
|
+
layout?: "separated" | "single";
|
|
241
|
+
/** Yalnız `single`: yuva çizgisi ortada (boşken) ya da altta (her zaman). */
|
|
242
|
+
linePosition?: "center" | "bottom";
|
|
243
|
+
autoFocus?: boolean;
|
|
244
|
+
/** Varsayılan: `"Doğrulama kodu"`. */
|
|
245
|
+
accessibilityLabel?: string;
|
|
246
|
+
accessibilityHint?: string;
|
|
247
|
+
style?: StyleProp<ViewStyle>;
|
|
248
|
+
}
|
|
249
|
+
declare function OtpInput({ length, value, defaultValue, onChange, onInput, disabled: ownDisabled, size, shape, variant, color, status: ownStatus, mask, formatter, separator, inputMode, layout, linePosition, autoFocus, accessibilityLabel: ownLabel, accessibilityHint: ownHint, skeleton: ownSkeleton, style, }: Readonly<OtpInputProps>): React__default.JSX.Element;
|
|
250
|
+
|
|
251
|
+
interface FieldProps {
|
|
252
|
+
label: React__default.ReactNode;
|
|
253
|
+
/** Alanın altında yardımcı metin. */
|
|
254
|
+
hint?: React__default.ReactNode;
|
|
255
|
+
/** Doluysa kontrol hata rengine geçer ve mesaj okunur (ipucunun yerine). */
|
|
256
|
+
error?: React__default.ReactNode;
|
|
257
|
+
/** Etikette görsel yıldız; ekran okuyucuda etikete ", zorunlu" eklenir. */
|
|
258
|
+
required?: boolean;
|
|
259
|
+
disabled?: boolean;
|
|
260
|
+
/** `horizontal`: etiket solda (%35), kontrol sağda — ayar ekranları için. Varsayılan: `vertical`. */
|
|
261
|
+
layout?: "vertical" | "horizontal";
|
|
262
|
+
/** Etiket ve kontrol birlikte iskelet çizer (kontrol `skeleton`ı buradan alır). */
|
|
263
|
+
skeleton?: boolean;
|
|
264
|
+
style?: StyleProp<ViewStyle>;
|
|
265
|
+
children: React__default.ReactNode;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Form alanı: etiket + kontrol + ipucu/hata. İçindeki mari-ui kontrolü
|
|
269
|
+
* (Input, Textarea, OtpInput, Segmented, Checkbox…) etiketini erişilebilir ad,
|
|
270
|
+
* hatayı/ipucunu erişilebilir ipucu olarak alır; hata varsa kırmızıya geçer.
|
|
271
|
+
*/
|
|
272
|
+
declare function Field({ label, hint, error, required, disabled, layout, skeleton, style, children }: Readonly<FieldProps>): React__default.JSX.Element;
|
|
273
|
+
|
|
274
|
+
type SegmentedValue = string | number;
|
|
275
|
+
interface SegmentedOption {
|
|
276
|
+
value: SegmentedValue;
|
|
277
|
+
label?: React__default.ReactNode;
|
|
278
|
+
icon?: React__default.ReactNode;
|
|
279
|
+
disabled?: boolean;
|
|
280
|
+
/** Yalnız ikonlu seçenekte zorunlu erişilebilir ad. */
|
|
281
|
+
accessibilityLabel?: string;
|
|
282
|
+
}
|
|
283
|
+
interface SegmentedProps extends SkeletonableProps {
|
|
284
|
+
options: (SegmentedValue | SegmentedOption)[];
|
|
285
|
+
value?: SegmentedValue;
|
|
286
|
+
defaultValue?: SegmentedValue;
|
|
287
|
+
onChange?: (value: SegmentedValue) => void;
|
|
288
|
+
/** Tam genişlik, eşit bölmeler. */
|
|
289
|
+
block?: boolean;
|
|
290
|
+
/** sm 28 · md 32 (iOS) · lg 40. Varsayılan: `md`. */
|
|
291
|
+
size?: Size;
|
|
292
|
+
disabled?: boolean;
|
|
293
|
+
/** Grubun erişilebilir adı. */
|
|
294
|
+
accessibilityLabel?: string;
|
|
295
|
+
style?: StyleProp<ViewStyle>;
|
|
296
|
+
}
|
|
297
|
+
declare function Segmented({ options, value, defaultValue, onChange, block, size, disabled: ownDisabled, skeleton: ownSkeleton, accessibilityLabel: ownLabel, style }: SegmentedProps): React__default.JSX.Element;
|
|
298
|
+
|
|
299
|
+
type CardSlot = "header" | "body" | "footer" | "cover" | "actions";
|
|
300
|
+
type CardSlotStyles = Partial<Record<CardSlot, StyleProp<ViewStyle>>>;
|
|
301
|
+
interface CardProps extends SkeletonableProps {
|
|
302
|
+
children?: ReactNode;
|
|
303
|
+
/** Uzun metin tek satırda kesilir. */
|
|
304
|
+
title?: ReactNode;
|
|
305
|
+
/** Başlığın sağındaki ek bilgi veya düğme. */
|
|
306
|
+
extra?: ReactNode;
|
|
307
|
+
/** Kenardan kenara kapak; görselin yüksekliğini veya aspectRatio'sunu verin. */
|
|
308
|
+
cover?: ReactNode;
|
|
309
|
+
footer?: ReactNode;
|
|
310
|
+
/** Eşit bölünmüş alt çubuk; her öğe kendi onPress'ini taşıyan bir düğme olmalı. */
|
|
311
|
+
actions?: ReactNode[];
|
|
312
|
+
/** Varsayılan: true. */
|
|
313
|
+
bordered?: boolean;
|
|
314
|
+
/** Basılma geri bildirimi. onPress/onLongPress varsa varsayılan açık; etkileşimi kapatmaz. */
|
|
315
|
+
hoverable?: boolean;
|
|
316
|
+
/** Native yazı ölçeği; dolgu sm: 12, md: 16, lg: 20. Varsayılan: md. */
|
|
317
|
+
size?: Size;
|
|
318
|
+
/** Tonlu zemin ve kenarlık. */
|
|
319
|
+
inset?: boolean;
|
|
320
|
+
/** Kartın tamamını devre dışı bırakır (içindeki eylemler dahil). */
|
|
321
|
+
disabled?: boolean;
|
|
322
|
+
style?: StyleProp<ViewStyle>;
|
|
323
|
+
/** Web classNames karşılığı: header/body/footer/cover/actions bölümlerinin stilleri. */
|
|
324
|
+
slotStyles?: CardSlotStyles;
|
|
325
|
+
/** Tüm kart dokunulabilir olur. İçinde başka düğmeler varsa bu prop'u kullanmayın. */
|
|
326
|
+
onPress?: Exclude<PressableProps["onPress"], undefined>;
|
|
327
|
+
onLongPress?: Exclude<PressableProps["onLongPress"], undefined>;
|
|
328
|
+
testID?: string;
|
|
329
|
+
accessibilityLabel?: string;
|
|
330
|
+
accessibilityHint?: string;
|
|
331
|
+
}
|
|
332
|
+
interface CardMetaProps {
|
|
333
|
+
/** Solda avatar veya ikon. */
|
|
334
|
+
avatar?: ReactNode;
|
|
335
|
+
title?: ReactNode;
|
|
336
|
+
description?: ReactNode;
|
|
337
|
+
style?: StyleProp<ViewStyle>;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/** Web slotları + native onPress; hoverable sadece basılma görünümünü belirler. */
|
|
341
|
+
declare const Card: ForwardRefExoticComponent<CardProps & RefAttributes<ComponentRef<typeof View>>>;
|
|
342
|
+
|
|
343
|
+
/** Web CardMeta: avatar + tek satır başlık + çok satırlı açıklama. */
|
|
344
|
+
declare function CardMeta({ avatar, title, description, style }: Readonly<CardMetaProps>): React.JSX.Element;
|
|
345
|
+
|
|
346
|
+
type ListItemLayout = "horizontal" | "vertical";
|
|
347
|
+
/** Infinite scrolling behavior backed by React Native `FlatList.onEndReached`. */
|
|
348
|
+
interface InfiniteScrollOptions {
|
|
349
|
+
/** Whether more records are available. */
|
|
350
|
+
hasMore: boolean;
|
|
351
|
+
/** Set while the next page is being fetched; prevents duplicate requests. */
|
|
352
|
+
loading?: boolean;
|
|
353
|
+
/** Fetch the next page. Append records to `data` in the caller. */
|
|
354
|
+
onLoadMore: () => void;
|
|
355
|
+
/** Message displayed after all records have loaded. `null` hides it. */
|
|
356
|
+
endMessage?: ReactNode;
|
|
357
|
+
/** Accessible action label displayed in the native list footer. */
|
|
358
|
+
loadMoreLabel?: string;
|
|
359
|
+
}
|
|
360
|
+
/** `FlatList` API'sini korur; `renderItem(item, index)` kolaylığını ekler. */
|
|
361
|
+
interface ListProps<ItemT> extends Omit<FlatListProps<ItemT>, "data" | "renderItem" | "ItemSeparatorComponent">, SkeletonableProps {
|
|
362
|
+
/** Veri kaynağı; boş bırakıldığında `ListEmptyComponent` gösterilir. */
|
|
363
|
+
data?: Exclude<FlatListProps<ItemT>["data"], undefined>;
|
|
364
|
+
/** Her kaydı bir native öğeye dönüştürür. */
|
|
365
|
+
renderItem: (item: ItemT, index: number) => ReactElement | null;
|
|
366
|
+
/** Satırlar arası ayırıcı. Verilmezse `split` varsayılan ayırıcıyı yönetir. */
|
|
367
|
+
ItemSeparatorComponent?: Exclude<FlatListProps<ItemT>["ItemSeparatorComponent"], undefined>;
|
|
368
|
+
/** `ItemSeparatorComponent` verilmediğinde ayırıcıyı açıp kapatır. Varsayılan: `true`. */
|
|
369
|
+
split?: boolean;
|
|
370
|
+
/** Satır yoğunluğu; native ölçü ölçeğinden gelir. Varsayılan: `md`. */
|
|
371
|
+
size?: Size;
|
|
372
|
+
/** Liste çevresine native tema kenarlığı ve köşe verir. */
|
|
373
|
+
bordered?: boolean;
|
|
374
|
+
/** `ListItem` içeriğinin yatay veya dikey düzeni. Varsayılan: `horizontal`. */
|
|
375
|
+
itemLayout?: ListItemLayout;
|
|
376
|
+
/** İlk yükleme yer tutucu satırlarının sayısı. Varsayılan: `3`. */
|
|
377
|
+
skeletonRows?: number;
|
|
378
|
+
/**
|
|
379
|
+
* Sonsuz kaydırma: `FlatList.onEndReached` tetiklenince sonraki sayfayı ister.
|
|
380
|
+
* Yeni kayıtları `data`ya siz eklersiniz; `hasMore`/`loading`ı güncel tutun.
|
|
381
|
+
* Eşik `onEndReachedThreshold` ile ayarlanır (varsayılan: `0.5`).
|
|
382
|
+
*/
|
|
383
|
+
infinite?: InfiniteScrollOptions;
|
|
384
|
+
}
|
|
385
|
+
interface ListItemProps extends ViewProps {
|
|
386
|
+
children?: ReactNode;
|
|
387
|
+
/** Satır eylemleri. */
|
|
388
|
+
actions?: ReactNode[];
|
|
389
|
+
/** Sağda duran ek içerik; ör. durum rozeti veya tarih. */
|
|
390
|
+
extra?: ReactNode;
|
|
391
|
+
}
|
|
392
|
+
interface ListItemMetaProps {
|
|
393
|
+
/** Solda avatar, ikon veya küçük görsel. */
|
|
394
|
+
avatar?: ReactNode;
|
|
395
|
+
title?: ReactNode;
|
|
396
|
+
description?: ReactNode;
|
|
397
|
+
style?: Exclude<ViewProps["style"], undefined>;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/** Native, virtualized list. Scroll, refresh and windowing props pass through to `FlatList`; `infinite` adds guarded paging. */
|
|
401
|
+
declare const List: <ItemT>(props: ListProps<ItemT> & React__default.RefAttributes<FlatList<ItemT>>) => React__default.ReactElement;
|
|
402
|
+
declare function ListItem({ children, actions, extra, style, ...viewProps }: Readonly<ListItemProps>): React__default.JSX.Element;
|
|
403
|
+
/** Native avatar + title + description block. */
|
|
404
|
+
declare function ListItemMeta({ avatar, title, description, style }: Readonly<ListItemMetaProps>): React__default.JSX.Element;
|
|
405
|
+
|
|
406
|
+
type TitleLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
407
|
+
type TextWeight = "normal" | "medium" | "semibold" | "bold";
|
|
408
|
+
/**
|
|
409
|
+
* Taşan metni kısaltır. `true` → tek satır + "…"; `{ rows: n }` → n satırdan
|
|
410
|
+
* sonra kısaltır (2–5). Native karşılığı `numberOfLines`.
|
|
411
|
+
*/
|
|
412
|
+
type TypographyEllipsis = boolean | {
|
|
413
|
+
rows: 2 | 3 | 4 | 5;
|
|
414
|
+
};
|
|
415
|
+
interface TypographyBaseProps extends Omit<TextProps$1, "children">, SkeletonableProps {
|
|
416
|
+
children?: ReactNode;
|
|
417
|
+
/** Varsayılan: gövde metni rengi (`foreground`). */
|
|
418
|
+
color?: ColorRole;
|
|
419
|
+
ellipsis?: TypographyEllipsis;
|
|
420
|
+
}
|
|
421
|
+
interface TextProps extends TypographyBaseProps {
|
|
422
|
+
weight?: TextWeight;
|
|
423
|
+
muted?: boolean;
|
|
424
|
+
}
|
|
425
|
+
interface ParagraphProps extends TypographyBaseProps {
|
|
426
|
+
muted?: boolean;
|
|
427
|
+
/** `skeleton` iken çizilecek satır sayısı. Varsayılan: 3. */
|
|
428
|
+
skeletonRows?: number;
|
|
429
|
+
}
|
|
430
|
+
interface TitleProps extends TypographyBaseProps {
|
|
431
|
+
/** HIG metin stilleri: 1 Large Title 34 · 2 Title 1 28 · 3 Title 2 22 · 4 Title 3 20 · 5 Headline 17 · 6 Subheadline 15. */
|
|
432
|
+
level?: TitleLevel;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
declare function Text({ children, color, weight, muted, ellipsis, skeleton, style, ...props }: Readonly<TextProps>): React__default.JSX.Element;
|
|
436
|
+
declare function Paragraph({ children, color, muted, ellipsis, skeleton, skeletonRows, style, ...props }: Readonly<ParagraphProps>): React__default.JSX.Element;
|
|
437
|
+
declare function Title({ level, children, color, ellipsis, skeleton, style, ...props }: Readonly<TitleProps>): React__default.JSX.Element;
|
|
438
|
+
|
|
439
|
+
type DividerLineStyle = "solid" | "dashed" | "dotted";
|
|
440
|
+
type DividerOrientation = "horizontal" | "vertical";
|
|
441
|
+
type DividerLabelAlign = "start" | "center" | "end";
|
|
442
|
+
interface DividerProps extends SkeletonableProps {
|
|
443
|
+
/** Yatay ayırıcının ortasındaki başlık. */
|
|
444
|
+
children?: React__default.ReactNode;
|
|
445
|
+
lineStyle?: DividerLineStyle;
|
|
446
|
+
orientation?: DividerOrientation;
|
|
447
|
+
labelAlign?: DividerLabelAlign;
|
|
448
|
+
/** `labelAlign` start/end iken başlığın kenara uzaklığı (pt). Varsayılan: 24. */
|
|
449
|
+
labelMargin?: number;
|
|
450
|
+
/** `false` → başlık ön plan rengi + orta kalınlık. Varsayılan: `true` (ikincil). */
|
|
451
|
+
plain?: boolean;
|
|
452
|
+
/** Çevresindeki boşluk: sm 8 · md 16 · lg 24. Varsayılan: `md`. */
|
|
453
|
+
size?: Size;
|
|
454
|
+
/** Yalnız `orientation="vertical"`. Varsayılan: 20 (satır içi metin yüksekliği). */
|
|
455
|
+
height?: DimensionValue;
|
|
456
|
+
style?: StyleProp<ViewStyle>;
|
|
457
|
+
}
|
|
458
|
+
declare function Divider({ children, lineStyle, orientation, labelAlign, labelMargin, plain, size, height, skeleton, style }: Readonly<DividerProps>): React__default.JSX.Element;
|
|
459
|
+
|
|
460
|
+
type SkeletonAvatarShape = "circle" | "square";
|
|
461
|
+
interface SkeletonAvatarProps {
|
|
462
|
+
active?: boolean;
|
|
463
|
+
/** Varsayılan: `"circle"` (Avatar gibi). */
|
|
464
|
+
shape?: SkeletonAvatarShape;
|
|
465
|
+
/** `sm`/`md`/`lg` (Avatar ölçeği 32/40/56) ya da pt. Varsayılan: `md`. */
|
|
466
|
+
size?: number | Size;
|
|
467
|
+
}
|
|
468
|
+
interface SkeletonTitleProps {
|
|
469
|
+
width?: DimensionValue;
|
|
470
|
+
}
|
|
471
|
+
interface SkeletonParagraphProps {
|
|
472
|
+
rows?: number;
|
|
473
|
+
/** Tek değer → son satır; dizi → satır satır. */
|
|
474
|
+
width?: DimensionValue | DimensionValue[];
|
|
475
|
+
}
|
|
476
|
+
interface SkeletonProps {
|
|
477
|
+
/** Nabız animasyonu. Varsayılan: `true` (native component iskeletleriyle aynı; hareket azaltmada durur). */
|
|
478
|
+
active?: boolean;
|
|
479
|
+
/**
|
|
480
|
+
* Verilirse iskelet bu adla "meşgul" olarak duyurulur. Varsayılan: ekran
|
|
481
|
+
* okuyucudan gizli — ekranda 12 iskelet varken 12 kez "yükleniyor" okunmasın.
|
|
482
|
+
*/
|
|
483
|
+
label?: string;
|
|
484
|
+
avatar?: boolean | SkeletonAvatarProps;
|
|
485
|
+
/** `false` → `children` gösterilir. */
|
|
486
|
+
loading?: boolean;
|
|
487
|
+
paragraph?: boolean | SkeletonParagraphProps;
|
|
488
|
+
/** Satır çubukları hap köşeli. */
|
|
489
|
+
round?: boolean;
|
|
490
|
+
title?: boolean | SkeletonTitleProps;
|
|
491
|
+
style?: StyleProp<ViewStyle>;
|
|
492
|
+
children?: React__default.ReactNode;
|
|
493
|
+
}
|
|
494
|
+
interface SkeletonBlockProps {
|
|
495
|
+
width?: DimensionValue;
|
|
496
|
+
/** Varsayılan: 16. */
|
|
497
|
+
height?: DimensionValue;
|
|
498
|
+
/** Tema köşe anahtarı. Varsayılan: `"md"`. */
|
|
499
|
+
radius?: "none" | "sm" | "md" | "lg" | "xl" | "full";
|
|
500
|
+
active?: boolean;
|
|
501
|
+
style?: StyleProp<ViewStyle>;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Ekran ya da bölüm iskeleti: avatar + başlık + paragraf. Satırlar Typography
|
|
505
|
+
* ölçeğinde (başlık = Headline 17/22, paragraf = Body 17/22) — yerine gelecek
|
|
506
|
+
* `Title level={5}` + `Paragraph` ile aynı yükseklik.
|
|
507
|
+
*/
|
|
508
|
+
declare function Skeleton({ active, label, avatar, loading, paragraph, round, title, style, children }: Readonly<SkeletonProps>): React__default.JSX.Element;
|
|
509
|
+
/** Serbest biçimli yer tutucu (görsel, grafik, özel kutu). */
|
|
510
|
+
declare function SkeletonBlock({ width, height, radius, active, style }: Readonly<SkeletonBlockProps>): React__default.JSX.Element;
|
|
511
|
+
|
|
512
|
+
interface TagProps extends SkeletonableProps {
|
|
513
|
+
children: React__default.ReactNode;
|
|
514
|
+
/** Varsayılan: `neutral`. */
|
|
515
|
+
color?: ColorRole;
|
|
516
|
+
/** Varsayılan: `soft`. */
|
|
517
|
+
variant?: Extract<Variant, "solid" | "soft" | "outline">;
|
|
518
|
+
icon?: React__default.ReactNode;
|
|
519
|
+
/** `false` → kapatma düğmesi yok; düğüm → özel ikon. `onClose` verilince varsayılan × görünür. */
|
|
520
|
+
closeIcon?: React__default.ReactNode | boolean;
|
|
521
|
+
/** `soft`/`solid` için rolün kenarlık tonu. */
|
|
522
|
+
bordered?: boolean;
|
|
523
|
+
onClose?: () => void;
|
|
524
|
+
/** Kapatma düğmesinin erişilebilir adı. Varsayılan: `"<metin> etiketini kaldır"` ya da `"Kaldır"`. */
|
|
525
|
+
closeLabel?: string;
|
|
526
|
+
style?: StyleProp<ViewStyle>;
|
|
527
|
+
}
|
|
528
|
+
declare function Tag({ children, color, variant, icon, closeIcon, bordered, onClose, closeLabel, skeleton, style }: Readonly<TagProps>): React__default.JSX.Element;
|
|
529
|
+
|
|
530
|
+
interface BadgeProps extends SkeletonableProps {
|
|
531
|
+
/** Sayı ya da kısa metin ("Yeni"). `0` varsayılan olarak gizlenir (`showZero`). */
|
|
532
|
+
count?: number | string;
|
|
533
|
+
/** Bu sayıdan büyükse "N+" gösterilir. Varsayılan: `99`. */
|
|
534
|
+
overflowCount?: number;
|
|
535
|
+
showZero?: boolean;
|
|
536
|
+
/** Sayı yerine küçük nokta. */
|
|
537
|
+
dot?: boolean;
|
|
538
|
+
/** Varsayılan: `error`. */
|
|
539
|
+
color?: ColorRole;
|
|
540
|
+
/** `sm` 16 / `md` 20pt kabarcık. Varsayılan: `md`. */
|
|
541
|
+
size?: "sm" | "md";
|
|
542
|
+
/**
|
|
543
|
+
* Ekran okuyucu metni, ör. "3 okunmamış bildirim". Sarılan öğe bir düğmeyse
|
|
544
|
+
* sayıyı düğmenin kendi `accessibilityLabel`ına katmak daha iyidir.
|
|
545
|
+
*/
|
|
546
|
+
label?: string;
|
|
547
|
+
/** Kabarcığı köşeden kaydırır: `[x, y]` pt (x sağa, y aşağı). */
|
|
548
|
+
offset?: [number, number];
|
|
549
|
+
/** Kabarcığın oturduğu öğe (ikon düğmesi, avatar). Verilmezse kabarcık tek başına durur. */
|
|
550
|
+
children?: React__default.ReactNode;
|
|
551
|
+
style?: StyleProp<ViewStyle>;
|
|
552
|
+
}
|
|
553
|
+
interface StatusBadgeProps extends SkeletonableProps {
|
|
554
|
+
color?: ColorRole;
|
|
555
|
+
/** Durum metni ("Aktif"). Renk tek başına anlam taşımaz; metin zorunlu. */
|
|
556
|
+
children: React__default.ReactNode;
|
|
557
|
+
/** Süren işlem: nokta nabız atar (hareket azaltmada durur). */
|
|
558
|
+
processing?: boolean;
|
|
559
|
+
style?: StyleProp<ViewStyle>;
|
|
560
|
+
}
|
|
561
|
+
declare function Badge({ count, overflowCount, showZero, dot, color, size, label, offset, children, skeleton, style }: Readonly<BadgeProps>): React__default.JSX.Element;
|
|
562
|
+
declare function StatusBadge({ color, children, processing, skeleton, style }: Readonly<StatusBadgeProps>): React__default.JSX.Element;
|
|
563
|
+
|
|
564
|
+
type AvatarSize = number | Size;
|
|
565
|
+
type AvatarShape = "circle" | "square";
|
|
566
|
+
interface AvatarProps extends SkeletonableProps {
|
|
567
|
+
/** Erişilebilir ad; görsel yoksa baş harfler buradan türetilir. */
|
|
568
|
+
alt?: string;
|
|
569
|
+
icon?: React__default.ReactNode;
|
|
570
|
+
shape?: AvatarShape;
|
|
571
|
+
/** `sm` 32 · `md` 40 · `lg` 56 ya da pt. Varsayılan: `md`. */
|
|
572
|
+
size?: AvatarSize;
|
|
573
|
+
/** URL, `require(...)` görseli ya da hazır bir öğe. */
|
|
574
|
+
src?: string | ImageSourcePropType | React__default.ReactElement;
|
|
575
|
+
/** Görsel yokken zemin rengi (soft ton). Varsayılan: nötr yüzey. */
|
|
576
|
+
color?: ColorRole;
|
|
577
|
+
/** Görsel yüklenemedi. `false` dönerse yedek (baş harf/ikon) gösterilmez. */
|
|
578
|
+
onError?: () => boolean | void;
|
|
579
|
+
style?: StyleProp<ViewStyle>;
|
|
580
|
+
}
|
|
581
|
+
interface AvatarGroupProps {
|
|
582
|
+
children: React__default.ReactNode;
|
|
583
|
+
/** Bu sayıdan fazlası tek bir "+N" avatarında toplanır. */
|
|
584
|
+
max?: number;
|
|
585
|
+
/** Tüm avatarların boyutu (tek tek verilen `size`'ı ezmez). Varsayılan: `md`. */
|
|
586
|
+
size?: AvatarSize;
|
|
587
|
+
shape?: AvatarShape;
|
|
588
|
+
skeleton?: boolean;
|
|
589
|
+
style?: StyleProp<ViewStyle>;
|
|
590
|
+
}
|
|
591
|
+
declare function Avatar({ alt, icon, shape, size, src, color, onError, skeleton, style }: Readonly<AvatarProps>): React__default.JSX.Element;
|
|
592
|
+
/** Üst üste binen avatarlar; her biri zemin renginde 2pt halkayla ayrışır. */
|
|
593
|
+
declare function AvatarGroup({ children, max, size, shape, skeleton, style }: Readonly<AvatarGroupProps>): React__default.JSX.Element;
|
|
594
|
+
|
|
595
|
+
type SelectionVariant = "solid" | "outline";
|
|
596
|
+
|
|
597
|
+
type CheckboxShape = "default" | "pill" | "square";
|
|
598
|
+
interface CheckboxProps extends SkeletonableProps {
|
|
599
|
+
checked?: boolean;
|
|
600
|
+
defaultChecked?: boolean;
|
|
601
|
+
/** Kısmi seçim (ör. "tümünü seç" alt öğelerin bir kısmı seçiliyken). */
|
|
602
|
+
indeterminate?: boolean;
|
|
603
|
+
disabled?: boolean;
|
|
604
|
+
/** Yeni değer. Web'deki `onChange(event)` yerine doğrudan `boolean`. */
|
|
605
|
+
onChange?: (checked: boolean) => void;
|
|
606
|
+
label?: React__default.ReactNode;
|
|
607
|
+
/** Etiketin altında soluk açıklama. */
|
|
608
|
+
description?: React__default.ReactNode;
|
|
609
|
+
/** Kutu sm 18 · md 22 · lg 26. Varsayılan: `md`. */
|
|
610
|
+
size?: Size;
|
|
611
|
+
shape?: CheckboxShape;
|
|
612
|
+
/** Varsayılan: `outline`. */
|
|
613
|
+
variant?: SelectionVariant;
|
|
614
|
+
/** Varsayılan: `primary`. `error`/`warning` dinlenirken de renkli kenar → doğrulama durumu. */
|
|
615
|
+
color?: ColorRole;
|
|
616
|
+
/** Etiket yoksa erişilebilir ad. */
|
|
617
|
+
accessibilityLabel?: string;
|
|
618
|
+
style?: StyleProp<ViewStyle>;
|
|
619
|
+
}
|
|
620
|
+
declare function Checkbox({ checked, defaultChecked, indeterminate, disabled: ownDisabled, onChange, label, description, size, shape, variant, color, skeleton: ownSkeleton, accessibilityLabel, style }: Readonly<CheckboxProps>): React__default.JSX.Element;
|
|
621
|
+
|
|
622
|
+
type RadioValue = string | number;
|
|
623
|
+
interface RadioOption {
|
|
624
|
+
label: React__default.ReactNode;
|
|
625
|
+
value: RadioValue;
|
|
626
|
+
disabled?: boolean;
|
|
627
|
+
/** Etiketin altında soluk açıklama (ör. kargo seçeneğinin süresi). */
|
|
628
|
+
description?: React__default.ReactNode;
|
|
629
|
+
}
|
|
630
|
+
interface RadioProps extends SkeletonableProps {
|
|
631
|
+
/** Grup içinde bu seçeneğin değeri. */
|
|
632
|
+
value?: RadioValue;
|
|
633
|
+
/** Grup dışında tek başına kullanımda. */
|
|
634
|
+
checked?: boolean;
|
|
635
|
+
defaultChecked?: boolean;
|
|
636
|
+
disabled?: boolean;
|
|
637
|
+
/** Tek başına kullanımda seçildi. Grup içinde `RadioGroup.onChange` kullanın. */
|
|
638
|
+
onChange?: (checked: boolean) => void;
|
|
639
|
+
label?: React__default.ReactNode;
|
|
640
|
+
description?: React__default.ReactNode;
|
|
641
|
+
/** Daire sm 18 · md 22 · lg 26. Varsayılan: `md` (grup verirse grubunki). */
|
|
642
|
+
size?: Size;
|
|
643
|
+
variant?: SelectionVariant;
|
|
644
|
+
color?: ColorRole;
|
|
645
|
+
accessibilityLabel?: string;
|
|
646
|
+
style?: StyleProp<ViewStyle>;
|
|
647
|
+
}
|
|
648
|
+
interface RadioGroupProps extends SkeletonableProps {
|
|
649
|
+
value?: RadioValue;
|
|
650
|
+
defaultValue?: RadioValue;
|
|
651
|
+
onChange?: (value: RadioValue) => void;
|
|
652
|
+
/** Dize/sayı ya da `{ label, value, description, disabled }`. Verilmezse `children` (Radio'lar). */
|
|
653
|
+
options?: (RadioValue | RadioOption)[];
|
|
654
|
+
children?: React__default.ReactNode;
|
|
655
|
+
disabled?: boolean;
|
|
656
|
+
variant?: SelectionVariant;
|
|
657
|
+
color?: ColorRole;
|
|
658
|
+
size?: Size;
|
|
659
|
+
/** Varsayılan: `vertical` (native'de seçenekler alt alta okunur; web varsayılanı `horizontal`). */
|
|
660
|
+
orientation?: "horizontal" | "vertical";
|
|
661
|
+
/** Grubun erişilebilir adı (görünür başlığı tekrarlayın). */
|
|
662
|
+
accessibilityLabel?: string;
|
|
663
|
+
style?: StyleProp<ViewStyle>;
|
|
664
|
+
}
|
|
665
|
+
declare function Radio({ value, checked, defaultChecked, disabled, onChange, label, description, size, variant, color, skeleton, accessibilityLabel, style }: Readonly<RadioProps>): React__default.JSX.Element;
|
|
666
|
+
declare function RadioGroup({ value, defaultValue, onChange, options, children, disabled: ownDisabled, variant, color, size, orientation, skeleton: ownSkeleton, accessibilityLabel: ownLabel, style }: Readonly<RadioGroupProps>): React__default.JSX.Element;
|
|
667
|
+
|
|
668
|
+
interface SwitchProps extends SkeletonableProps {
|
|
669
|
+
checked?: boolean;
|
|
670
|
+
defaultChecked?: boolean;
|
|
671
|
+
onChange?: (value: boolean) => void;
|
|
672
|
+
disabled?: boolean;
|
|
673
|
+
/** Anahtarın solunda etiket; tüm satır dokunulabilir (iOS ayar satırı). */
|
|
674
|
+
label?: string;
|
|
675
|
+
/** İzin içinde açıkken / kapalıyken görünen kısa metin. */
|
|
676
|
+
switchTrueLabel?: string;
|
|
677
|
+
switchFalseLabel?: string;
|
|
678
|
+
/** İz sm 40×24 · md 51×31 (iOS) · lg 60×36. Varsayılan: `md`. */
|
|
679
|
+
size?: Size;
|
|
680
|
+
/** Açık hal rengi. Varsayılan: `primary`. Kapalı hal her renkte nötr gri. */
|
|
681
|
+
color?: ColorRole;
|
|
682
|
+
/** Süren işlem: topuzda dönen gösterge, anahtar kilitli. */
|
|
683
|
+
loading?: boolean;
|
|
684
|
+
/** Etiket yoksa erişilebilir ad. */
|
|
685
|
+
accessibilityLabel?: string;
|
|
686
|
+
style?: StyleProp<ViewStyle>;
|
|
687
|
+
}
|
|
688
|
+
declare function Switch({ checked, defaultChecked, onChange, disabled: ownDisabled, label, switchTrueLabel, switchFalseLabel, size, color, loading, skeleton: ownSkeleton, accessibilityLabel: ownLabel, style }: SwitchProps): React__default.JSX.Element;
|
|
689
|
+
|
|
690
|
+
interface AlertProps extends SkeletonableProps {
|
|
691
|
+
title?: React__default.ReactNode;
|
|
692
|
+
description?: React__default.ReactNode;
|
|
693
|
+
/** Varsayılan: `info`. */
|
|
694
|
+
color?: ColorRole;
|
|
695
|
+
/** `true` (renge göre ikon), `false` ya da özel öğe. */
|
|
696
|
+
icon?: boolean | React__default.ReactNode;
|
|
697
|
+
/** Sağda eylem (ör. "Tekrar dene" düğmesi). */
|
|
698
|
+
action?: React__default.ReactNode;
|
|
699
|
+
closable?: boolean;
|
|
700
|
+
onClose?: () => void;
|
|
701
|
+
/** Varsayılan: `"Uyarıyı kapat"`. */
|
|
702
|
+
closeLabel?: string;
|
|
703
|
+
/** Ekran üstünde kenardan kenara şerit (köşesiz, yalnız alt çizgi). */
|
|
704
|
+
banner?: boolean;
|
|
705
|
+
/**
|
|
706
|
+
* Duyuru. Varsayılan: error/warning → `alert` (hemen okunur), diğerleri
|
|
707
|
+
* `status` (sırası gelince). `none`: duyurma (sayfa açılışında zaten görünen içerik).
|
|
708
|
+
*/
|
|
709
|
+
role?: "alert" | "status" | "none";
|
|
710
|
+
style?: StyleProp<ViewStyle>;
|
|
711
|
+
}
|
|
712
|
+
declare function Alert({ title, description, color, icon, action, closable, onClose, closeLabel, banner, role, skeleton, style }: Readonly<AlertProps>): React__default.JSX.Element | null;
|
|
713
|
+
|
|
714
|
+
type ProgressStatus = "normal" | "active" | "success" | "exception";
|
|
715
|
+
|
|
716
|
+
type ProgressSize = "sm" | "md" | "lg";
|
|
717
|
+
interface ProgressProps extends SkeletonableProps {
|
|
718
|
+
/** 0–100. */
|
|
719
|
+
percent?: number;
|
|
720
|
+
type?: "line" | "circle";
|
|
721
|
+
/** Verilmezse %100'de `success`. `active`: süren işlem (dolgu nabız atar). */
|
|
722
|
+
status?: ProgressStatus;
|
|
723
|
+
/** Varsayılan: `primary` (success/exception kendi rengini alır). */
|
|
724
|
+
color?: ColorRole;
|
|
725
|
+
/** Toplamın tamamlanmış (yeşil) kısmı, ör. yüklenen + işlenen. */
|
|
726
|
+
success?: {
|
|
727
|
+
percent: number;
|
|
728
|
+
};
|
|
729
|
+
/** Çizgiyi bu kadar adıma böler. */
|
|
730
|
+
steps?: number;
|
|
731
|
+
/** Yüzde / durum ikonu. Varsayılan: `true`. */
|
|
732
|
+
showInfo?: boolean;
|
|
733
|
+
format?: (percent: number) => React__default.ReactNode;
|
|
734
|
+
/** Çizgi 4/6/10 · daire 48/80/120. Varsayılan: `md`. */
|
|
735
|
+
size?: ProgressSize;
|
|
736
|
+
accessibilityLabel?: string;
|
|
737
|
+
style?: StyleProp<ViewStyle>;
|
|
738
|
+
}
|
|
739
|
+
declare function Progress({ percent: rawPercent, type, status: statusProp, color: colorProp, success, steps, showInfo, format, size, accessibilityLabel, skeleton, style }: Readonly<ProgressProps>): React__default.JSX.Element;
|
|
740
|
+
|
|
741
|
+
interface LoadingProps {
|
|
742
|
+
/** Varsayılan: `true`. */
|
|
743
|
+
spinning?: boolean;
|
|
744
|
+
/** sm 16 · md 20 · lg 36 (platform göstergesi). Varsayılan: `md`. */
|
|
745
|
+
size?: Size;
|
|
746
|
+
/** Göstergenin altında/yanında açıklama ("Siparişler yükleniyor"). */
|
|
747
|
+
tip?: React__default.ReactNode;
|
|
748
|
+
/** Bu kadar ms sonra görünür — hızlı biten işlemlerde yanıp sönmeyi önler. */
|
|
749
|
+
delay?: number;
|
|
750
|
+
/** Belirli ilerleme (0–100): dönen gösterge yerine dolan halka + yüzde. */
|
|
751
|
+
percent?: number;
|
|
752
|
+
/** Tüm ekranı kaplayan karartmalı katman. */
|
|
753
|
+
fullscreen?: boolean;
|
|
754
|
+
/** Verilirse içerik yerinde kalır, soluklaşır ve dokunmaya kapanır; gösterge üstünde. */
|
|
755
|
+
children?: React__default.ReactNode;
|
|
756
|
+
/** Varsayılan: `primary`. */
|
|
757
|
+
color?: ColorRole;
|
|
758
|
+
/** Halka izinin rengi (yalnız `percent`). Varsayılan: nötr yüzey. */
|
|
759
|
+
trackColor?: ColorRole;
|
|
760
|
+
/** Özel gösterge öğesi. */
|
|
761
|
+
indicator?: React__default.ReactNode;
|
|
762
|
+
/** Ekran okuyucu metni. Varsayılan: `tip` düz metinse o, değilse "Yükleniyor". */
|
|
763
|
+
accessibilityLabel?: string;
|
|
764
|
+
style?: StyleProp<ViewStyle>;
|
|
765
|
+
}
|
|
766
|
+
declare function Loading({ spinning, size, tip, delay, percent, fullscreen, children, color, trackColor, indicator, accessibilityLabel, style }: Readonly<LoadingProps>): React__default.JSX.Element | null;
|
|
767
|
+
|
|
768
|
+
interface EmptyProps extends SkeletonableProps {
|
|
769
|
+
title: string;
|
|
770
|
+
description?: React__default.ReactNode;
|
|
771
|
+
/** Tek ana eylem; `onPress` ile birlikte. */
|
|
772
|
+
buttonText?: string;
|
|
773
|
+
onPress?: () => void;
|
|
774
|
+
buttonIcon?: React__default.ReactNode;
|
|
775
|
+
/** Birden çok eylem (verilirse `buttonText` yok sayılır). */
|
|
776
|
+
actions?: React__default.ReactNode;
|
|
777
|
+
/** Varsayılan: gelen kutusu. */
|
|
778
|
+
icon?: React__default.ReactNode;
|
|
779
|
+
/** `sm`: kart/liste içi; `md`: ekranın ana durumu. Varsayılan: `md`. */
|
|
780
|
+
size?: "sm" | "md";
|
|
781
|
+
/** Başlık ekran okuyucuda başlık (`header`) olsun — ekranın ana içeriği boşsa. */
|
|
782
|
+
heading?: boolean;
|
|
783
|
+
style?: StyleProp<ViewStyle>;
|
|
784
|
+
}
|
|
785
|
+
/** Boş durum: neden boş + ne yapılabilir. Liste, arama sonucu, sepet. */
|
|
786
|
+
declare function Empty({ title, description, buttonText, onPress, buttonIcon, actions, icon, size, heading, skeleton, style }: Readonly<EmptyProps>): React__default.JSX.Element;
|
|
787
|
+
|
|
788
|
+
type ModalButtonPosition = "left" | "right";
|
|
789
|
+
interface ModalProps extends SkeletonableProps {
|
|
790
|
+
open: boolean;
|
|
791
|
+
/** Kapatma isteği: × düğmesi, karartmaya dokunma, Android geri tuşu. */
|
|
792
|
+
onClose: () => void;
|
|
793
|
+
title?: React__default.ReactNode;
|
|
794
|
+
description?: React__default.ReactNode;
|
|
795
|
+
/** Başlığın solunda, rol renginde yumuşak daire içinde. */
|
|
796
|
+
icon?: React__default.ReactNode;
|
|
797
|
+
/** Onay düğmesinin ve ikon dairesinin rengi. error/warning → yıkıcı onay. */
|
|
798
|
+
color?: ColorRole;
|
|
799
|
+
children?: React__default.ReactNode;
|
|
800
|
+
/** Varsayılan: `true`. */
|
|
801
|
+
showCloseButton?: boolean;
|
|
802
|
+
closeButtonPosition?: ModalButtonPosition;
|
|
803
|
+
/** Özel alt bölüm; verilirse varsayılan düğmeler çizilmez. `null` → alt bölüm yok. */
|
|
804
|
+
footer?: React__default.ReactNode;
|
|
805
|
+
/** Onay düğmesi sağda (varsayılan) ya da solda. */
|
|
806
|
+
footerButtonPosition?: ModalButtonPosition;
|
|
807
|
+
confirmButtonText?: string;
|
|
808
|
+
/** Varsayılan: "Vazgeç". */
|
|
809
|
+
cancelButtonText?: string;
|
|
810
|
+
/** Promise dönerse çözülene kadar onay düğmesi "yükleniyor". */
|
|
811
|
+
onConfirm?: () => void | Promise<unknown>;
|
|
812
|
+
/** Varsayılan: `onClose`. */
|
|
813
|
+
onCancel?: () => void;
|
|
814
|
+
confirmLoading?: boolean;
|
|
815
|
+
confirmDisabled?: boolean;
|
|
816
|
+
/** Genişlik sm 320 · md 400 · lg 520 (ekranı aşmaz). Varsayılan: `md`. */
|
|
817
|
+
size?: Size;
|
|
818
|
+
/** pt; `size`'ı ezer. */
|
|
819
|
+
width?: number;
|
|
820
|
+
/** Karartmaya dokununca kapanır. Varsayılan: `true`. */
|
|
821
|
+
maskClosable?: boolean;
|
|
822
|
+
/** Android geri tuşu kapatır (web'de Escape). Varsayılan: `true`. */
|
|
823
|
+
keyboard?: boolean;
|
|
824
|
+
/** Başlık yoksa erişilebilir ad. */
|
|
825
|
+
accessibilityLabel?: string;
|
|
826
|
+
bodyStyle?: StyleProp<ViewStyle>;
|
|
827
|
+
}
|
|
828
|
+
declare function Modal(props: Readonly<ModalProps>): React__default.JSX.Element;
|
|
829
|
+
|
|
830
|
+
interface DialogAction {
|
|
831
|
+
label: string;
|
|
832
|
+
/** Promise dönerse çözülene kadar düğmede gösterge, sonra pencere kapanır. */
|
|
833
|
+
onPress?: () => void | Promise<unknown>;
|
|
834
|
+
/** `cancel`: kalın (iOS), Android geri tuşu bunu çağırır. `destructive`: hata renginde. */
|
|
835
|
+
style?: "default" | "cancel" | "destructive";
|
|
836
|
+
}
|
|
837
|
+
interface DialogProps {
|
|
838
|
+
open: boolean;
|
|
839
|
+
/** Bir eyleme basıldıktan (ve Promise çözüldükten) sonra çağrılır. */
|
|
840
|
+
onClose: () => void;
|
|
841
|
+
title: string;
|
|
842
|
+
message?: string;
|
|
843
|
+
/** 1–3 eylem. İki eylem yan yana, bir ya da üç alt alta. Varsayılan: tek "Tamam". */
|
|
844
|
+
actions?: DialogAction[];
|
|
845
|
+
}
|
|
846
|
+
/**
|
|
847
|
+
* Kısa onay penceresi — iOS uyarısının ölçüleri (270pt, ortalanmış metin,
|
|
848
|
+
* eylemler çizgilerle ayrılmış), kendi temamızla. Karartmaya dokununca
|
|
849
|
+
* KAPANMAZ (karar bekler); Android geri tuşu `cancel` eylemini çağırır.
|
|
850
|
+
* Uzun içerik ya da form için `Modal`.
|
|
851
|
+
*/
|
|
852
|
+
declare function Dialog({ open, onClose, title, message, actions }: Readonly<DialogProps>): React__default.JSX.Element;
|
|
853
|
+
|
|
854
|
+
/** Durak noktası: pt ya da ekran yüksekliğinin yüzdesi ("50%"). */
|
|
855
|
+
type SnapPoint = number | `${number}%`;
|
|
856
|
+
|
|
857
|
+
interface BottomSheetProps extends SkeletonableProps {
|
|
858
|
+
open: boolean;
|
|
859
|
+
/** Kapatma isteği: aşağı sürükleme, karartmaya dokunma, Android geri tuşu, VoiceOver "geri". */
|
|
860
|
+
onClose: () => void;
|
|
861
|
+
title?: React__default.ReactNode;
|
|
862
|
+
children?: React__default.ReactNode;
|
|
863
|
+
/** Sabit alt bölüm (ör. "Uygula" düğmesi); her durakta görünür, içerik kaysa da yerinde. */
|
|
864
|
+
footer?: React__default.ReactNode;
|
|
865
|
+
/**
|
|
866
|
+
* Durak noktaları: pt ya da yüzde (`["50%", "90%"]`). Verilmezse panel içerik
|
|
867
|
+
* kadar yüksek (en fazla ekranın %90'ı) ve tek durak.
|
|
868
|
+
*/
|
|
869
|
+
snapPoints?: SnapPoint[];
|
|
870
|
+
/** Açılıştaki durak (küçükten büyüğe sıra). Varsayılan: 0. */
|
|
871
|
+
initialSnap?: number;
|
|
872
|
+
onSnapChange?: (index: number) => void;
|
|
873
|
+
/** Karartmaya dokununca kapanır. Varsayılan: `true`. */
|
|
874
|
+
maskClosable?: boolean;
|
|
875
|
+
/** Aşağı sürükleyerek kapatılabilir. Varsayılan: `true`. */
|
|
876
|
+
closable?: boolean;
|
|
877
|
+
/** Android geri tuşu kapatır. Varsayılan: `true`. */
|
|
878
|
+
keyboard?: boolean;
|
|
879
|
+
/** Alt güvenli alan payı (iOS ev çubuğu). Varsayılan: `ThemeProvider insets`in `bottom`ı (en az 16), yoksa iOS 28, Android 16. */
|
|
880
|
+
bottomInset?: number;
|
|
881
|
+
/**
|
|
882
|
+
* Kapanış animasyonu bitip panel kaldırıldıktan sonra. Kapanışta başka bir
|
|
883
|
+
* pencere (Dialog) açacaksanız burada açın — iOS, kapanmakta olan bir
|
|
884
|
+
* Modal varken yenisini göstermez.
|
|
885
|
+
*/
|
|
886
|
+
onAfterClose?: () => void;
|
|
887
|
+
/** Başlık yoksa erişilebilir ad. */
|
|
888
|
+
accessibilityLabel?: string;
|
|
889
|
+
contentStyle?: StyleProp<ViewStyle>;
|
|
890
|
+
}
|
|
891
|
+
declare function BottomSheet(props: Readonly<BottomSheetProps>): React__default.JSX.Element;
|
|
892
|
+
|
|
893
|
+
interface ActionSheetAction {
|
|
894
|
+
label: string;
|
|
895
|
+
onPress?: () => void;
|
|
896
|
+
/** Satırın solunda (renk/boyut verilmemişse satır rengine uyar). */
|
|
897
|
+
icon?: React__default.ReactNode;
|
|
898
|
+
/** Geri alınamaz işlem — hata renginde. */
|
|
899
|
+
destructive?: boolean;
|
|
900
|
+
disabled?: boolean;
|
|
901
|
+
}
|
|
902
|
+
interface ActionSheetProps {
|
|
903
|
+
open: boolean;
|
|
904
|
+
onClose: () => void;
|
|
905
|
+
title?: string;
|
|
906
|
+
/** Başlığın altında kısa açıklama. */
|
|
907
|
+
message?: string;
|
|
908
|
+
actions: ActionSheetAction[];
|
|
909
|
+
/** En altta ayrı, kalın. Varsayılan: "Vazgeç". `null` → yok. */
|
|
910
|
+
cancelLabel?: string | null;
|
|
911
|
+
/**
|
|
912
|
+
* Panel tamamen kapandıktan sonra (seçilen eylemin `onPress`inden SONRA).
|
|
913
|
+
* Vazgeçmeyi eylemden ayırmak için: eylem çalışmadıysa kullanıcı vazgeçmiştir.
|
|
914
|
+
*/
|
|
915
|
+
onAfterClose?: () => void;
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Bir öğe için eylem listesi (Paylaş / Düzenle / Sil). BottomSheet üzerinde,
|
|
919
|
+
* iki platformda aynı görünüm; sürükleyerek ya da karartmaya dokunarak kapanır.
|
|
920
|
+
* Bir eyleme basılınca panel kapanır, kapanış bitince eylem çalışır.
|
|
921
|
+
*/
|
|
922
|
+
declare function ActionSheet({ open, onClose, title, message, actions, cancelLabel, onAfterClose }: Readonly<ActionSheetProps>): React__default.JSX.Element;
|
|
923
|
+
|
|
924
|
+
/** Web konumları kabul edilir; telefonda köşe yok — en yakın kenara eşlenir. */
|
|
925
|
+
type ToastPosition = "top" | "bottom" | "topRight" | "topLeft" | "bottomLeft" | "bottomRight";
|
|
926
|
+
|
|
927
|
+
type ToastType = ColorRole | "none";
|
|
928
|
+
interface ToastAction {
|
|
929
|
+
label: string;
|
|
930
|
+
/** Basılınca Toast kapanır. */
|
|
931
|
+
onPress: () => void;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
interface ToastOptions {
|
|
935
|
+
title: string;
|
|
936
|
+
description?: React__default.ReactNode;
|
|
937
|
+
type?: ToastType;
|
|
938
|
+
/** `top` / `bottom` (web köşe değerleri en yakın kenara eşlenir). Varsayılan: `bottom`. */
|
|
939
|
+
position?: ToastPosition;
|
|
940
|
+
closeIcon?: boolean;
|
|
941
|
+
/** ms; `0` = kendiliğinden kapanmaz. Varsayılan 5000 (eylemliyse 8000; ekran okuyucu açıkken eylemli kapanmaz). */
|
|
942
|
+
duration?: number;
|
|
943
|
+
/** Tek eylem (ör. "Geri al"); basılınca Toast kapanır. */
|
|
944
|
+
action?: ToastAction;
|
|
945
|
+
onClose?: () => void;
|
|
946
|
+
/** Veri gelene kadar iskelet; `update(id, { skeleton: false, … })` ile duyurulur ve sayaç başlar. */
|
|
947
|
+
skeleton?: boolean;
|
|
948
|
+
}
|
|
949
|
+
interface ToastContextValue {
|
|
950
|
+
/** Gösterir, kimliğini döner. */
|
|
951
|
+
showToast: (options: ToastOptions) => string;
|
|
952
|
+
/** Kimlik verilmezse hepsini kapatır. */
|
|
953
|
+
dismiss: (id?: string) => void;
|
|
954
|
+
/** Gösterilen Toast'u günceller (ör. iskeletten veriye). */
|
|
955
|
+
update: (id: string, changes: Partial<Omit<ToastOptions, "position">>) => void;
|
|
956
|
+
}
|
|
957
|
+
interface ToastProviderProps {
|
|
958
|
+
children: React__default.ReactNode;
|
|
959
|
+
/** Kenar payları (güvenli alan). Varsayılan: üst iOS 54 / Android durum çubuğu, alt iOS 34 / Android 16. */
|
|
960
|
+
insets?: {
|
|
961
|
+
top?: number;
|
|
962
|
+
bottom?: number;
|
|
963
|
+
};
|
|
964
|
+
}
|
|
965
|
+
declare function ToastProvider({ children, insets }: Readonly<ToastProviderProps>): React__default.JSX.Element;
|
|
966
|
+
/** `ToastProvider` içinde: `const { showToast } = useToast();` */
|
|
967
|
+
declare function useToast(): ToastContextValue;
|
|
968
|
+
|
|
969
|
+
interface RateCharacterState {
|
|
970
|
+
index: number;
|
|
971
|
+
/** Dolu katman mı (boş katman `false`). */
|
|
972
|
+
filled: boolean;
|
|
973
|
+
/** O katmanın rengi — özel karakteri boyamak için. */
|
|
974
|
+
color: string;
|
|
975
|
+
}
|
|
976
|
+
interface RateProps extends SkeletonableProps {
|
|
977
|
+
/** Yıldız sayısı. Varsayılan: `5`. */
|
|
978
|
+
count?: number;
|
|
979
|
+
value?: number;
|
|
980
|
+
defaultValue?: number;
|
|
981
|
+
onChange?: (value: number) => void;
|
|
982
|
+
/** Parmak yıldızların üzerinde gezinirken önizleme puanı; bırakınca `0` (web'deki hover sözleşmesi). */
|
|
983
|
+
onHoverChange?: (value: number) => void;
|
|
984
|
+
/** Yarım puan (dokunulan yıldızın sol yarısı). */
|
|
985
|
+
allowHalf?: boolean;
|
|
986
|
+
/** Aynı puana yeniden dokununca sıfırlar. Varsayılan: `true`. */
|
|
987
|
+
allowClear?: boolean;
|
|
988
|
+
disabled?: boolean;
|
|
989
|
+
/** Salt gösterim (ortalama puan): etkileşim yok, ondalık değer (4,3) oranında dolar. */
|
|
990
|
+
readOnly?: boolean;
|
|
991
|
+
/** Yıldız yerine karakter. Fonksiyon her katmanı (boş/dolu) kendi rengiyle çizebilir. */
|
|
992
|
+
character?: React__default.ReactNode | ((state: RateCharacterState) => React__default.ReactNode);
|
|
993
|
+
/** Yıldız kutusu (pt). Varsayılan: `28`. */
|
|
994
|
+
characterSize?: number;
|
|
995
|
+
/** Verilmezse `rating` token'ları (parlak sarı). Rol verilirse düz o renk. */
|
|
996
|
+
color?: ColorRole;
|
|
997
|
+
/** İleri düzey kaçış: token yerine ham renk. */
|
|
998
|
+
characterColor?: string;
|
|
999
|
+
/** Varsayılan: "Puan". */
|
|
1000
|
+
accessibilityLabel?: string;
|
|
1001
|
+
style?: StyleProp<ViewStyle>;
|
|
1002
|
+
}
|
|
1003
|
+
declare function Rate({ count, value, defaultValue, onChange, onHoverChange, allowHalf, allowClear, disabled, readOnly, character, characterSize, color, characterColor, accessibilityLabel, skeleton, style, }: Readonly<RateProps>): React__default.JSX.Element;
|
|
1004
|
+
|
|
1005
|
+
/** Slider'ın saf hesapları (testli) — web `Slider/utils.ts` ile aynı sözleşme. */
|
|
1006
|
+
type SliderValue = number | [number, number];
|
|
1007
|
+
|
|
1008
|
+
type SliderIconItem = {
|
|
1009
|
+
icon: React__default.ReactNode;
|
|
1010
|
+
value: number;
|
|
1011
|
+
};
|
|
1012
|
+
type SliderIconPosition = "top" | "bottom";
|
|
1013
|
+
interface SliderProps extends SkeletonableProps {
|
|
1014
|
+
value?: SliderValue;
|
|
1015
|
+
/** Kontrolsüz başlangıç. Aralık için `[20, 80]`. Varsayılan: `0`. */
|
|
1016
|
+
defaultValue?: SliderValue;
|
|
1017
|
+
/** Tutamaç sm 20 · md 28 (iOS) · lg 32. Varsayılan: `md`. */
|
|
1018
|
+
size?: Size;
|
|
1019
|
+
min?: number;
|
|
1020
|
+
max?: number;
|
|
1021
|
+
/** Adım; ondalıklı olabilir (`0.5`). Varsayılan: `1`. */
|
|
1022
|
+
step?: number;
|
|
1023
|
+
vertical?: boolean;
|
|
1024
|
+
disabled?: boolean;
|
|
1025
|
+
/** Dolu kısım ve tutamaç kenarı. Varsayılan: `primary`. */
|
|
1026
|
+
color?: ColorRole;
|
|
1027
|
+
/** `false`: değer baloncuğunu hiç gösterme. */
|
|
1028
|
+
tooltipVisible?: boolean;
|
|
1029
|
+
/** Baloncuk sürüklemeyi beklemeden hep görünsün. */
|
|
1030
|
+
tooltipAlwaysVisible?: boolean;
|
|
1031
|
+
/** Baloncuktaki ve ekran okuyucudaki değer, ör. `(v) => \`${v} ₺\``. */
|
|
1032
|
+
formatValue?: (value: number) => React__default.ReactNode;
|
|
1033
|
+
/** Rayın altında (dikeyde yanında) etiketli işaretler: `{ 0: "0 ₺", 5000: "5.000 ₺" }`. */
|
|
1034
|
+
marks?: Record<number, React__default.ReactNode>;
|
|
1035
|
+
iconList?: SliderIconItem[];
|
|
1036
|
+
/** Yatayda ikonların yeri. Varsayılan: `bottom`. Dikeyde ikonlar solda. */
|
|
1037
|
+
iconPosition?: SliderIconPosition;
|
|
1038
|
+
/** Senkron sayı girişi (aralıkta iki giriş, altta). */
|
|
1039
|
+
showInput?: boolean;
|
|
1040
|
+
/** Sürüklerken her değişimde. */
|
|
1041
|
+
onChange?: (value: SliderValue) => void;
|
|
1042
|
+
/** Etkileşim bitince (parmak kalktı, giriş onaylandı) — ör. filtrede yalnız bırakınca istek atmak için. */
|
|
1043
|
+
onChangeEnd?: (value: SliderValue) => void;
|
|
1044
|
+
/** Ekran okuyucu adı. Aralıkta tutamaçlar "… en az" / "… en çok". */
|
|
1045
|
+
accessibilityLabel?: string;
|
|
1046
|
+
/** Aralık tutamaçlarının adları. */
|
|
1047
|
+
thumbLabels?: [string, string];
|
|
1048
|
+
style?: StyleProp<ViewStyle>;
|
|
1049
|
+
}
|
|
1050
|
+
declare function Slider({ value, defaultValue, size, min, max, step, vertical, disabled, color, tooltipVisible, tooltipAlwaysVisible, formatValue, marks, iconList, iconPosition, showInput, onChange, onChangeEnd, accessibilityLabel, thumbLabels, skeleton, style, }: Readonly<SliderProps>): React__default.JSX.Element;
|
|
1051
|
+
|
|
1052
|
+
/**
|
|
1053
|
+
* Değer animasyonu — web `lib/useAnimatedValue`ın native karşılığı (Statistic).
|
|
1054
|
+
*
|
|
1055
|
+
* - `count`: sayı bir önceki değerden (ilkinde 0) hedefe sayar, sonda yavaşlar.
|
|
1056
|
+
* - `typewriter`: metin karakter karakter yazılır.
|
|
1057
|
+
*
|
|
1058
|
+
* "Hareketi azalt" açıksa çalışmaz → değer doğrudan son halinde.
|
|
1059
|
+
*/
|
|
1060
|
+
type ValueAnimation = "count" | "typewriter";
|
|
1061
|
+
|
|
1062
|
+
type StatisticSize = "sm" | "md" | "lg";
|
|
1063
|
+
interface StatisticBaseProps extends SkeletonableProps {
|
|
1064
|
+
/** Üstte soluk başlık ("Aylık gelir"). */
|
|
1065
|
+
title?: React__default.ReactNode;
|
|
1066
|
+
/** Değerin solunda ("₺") / sağında ("kişi", "%"). */
|
|
1067
|
+
prefix?: React__default.ReactNode;
|
|
1068
|
+
suffix?: React__default.ReactNode;
|
|
1069
|
+
/** Altta soluk açıklama ("geçen aya göre"). */
|
|
1070
|
+
description?: React__default.ReactNode;
|
|
1071
|
+
/** Değer 22 / 28 / 34. Varsayılan: `md`. */
|
|
1072
|
+
size?: StatisticSize;
|
|
1073
|
+
style?: StyleProp<ViewStyle>;
|
|
1074
|
+
}
|
|
1075
|
+
interface StatisticTrend {
|
|
1076
|
+
/** Değişim: `12.4` → "%12,4" artış, `-3` → "%3" düşüş. */
|
|
1077
|
+
value: number;
|
|
1078
|
+
/** Hangi yön İYİ: gelir `up`, maliyet/iade `down`. Varsayılan: `up`. */
|
|
1079
|
+
goodWhen?: "up" | "down";
|
|
1080
|
+
/** `%` yerine " puan". Varsayılan: yüzde. */
|
|
1081
|
+
unit?: "percent" | "points";
|
|
1082
|
+
}
|
|
1083
|
+
interface StatisticProps extends StatisticBaseProps {
|
|
1084
|
+
/** Sayı yerel biçimde (1.234.567,8); metin olduğu gibi. */
|
|
1085
|
+
value: number | string;
|
|
1086
|
+
precision?: number;
|
|
1087
|
+
/** Değişim — renk yönden değil `goodWhen`den. */
|
|
1088
|
+
trend?: StatisticTrend;
|
|
1089
|
+
/** Varsayılan: `"tr-TR"`. */
|
|
1090
|
+
locale?: string;
|
|
1091
|
+
/** Giriş animasyonu (değer + trend); hareket azaltmada çalışmaz. Varsayılan: açık. */
|
|
1092
|
+
animated?: boolean;
|
|
1093
|
+
/** `"count"` sayar, `"typewriter"` yazar. Varsayılan: `"count"`. */
|
|
1094
|
+
valueAnimation?: ValueAnimation;
|
|
1095
|
+
}
|
|
1096
|
+
interface CountdownProps extends StatisticBaseProps {
|
|
1097
|
+
target: Date | number;
|
|
1098
|
+
onFinish?: () => void;
|
|
1099
|
+
/** "2 gün 04:12:09"; `false`: saate kat ("52:12:09"). Varsayılan: `true`. */
|
|
1100
|
+
showDays?: boolean;
|
|
1101
|
+
/** Varsayılan: `"Süre doldu"`. */
|
|
1102
|
+
finishedText?: React__default.ReactNode;
|
|
1103
|
+
}
|
|
1104
|
+
interface ClockProps extends StatisticBaseProps {
|
|
1105
|
+
/** IANA saat dilimi. Varsayılan: cihazınki. */
|
|
1106
|
+
timeZone?: string;
|
|
1107
|
+
showSeconds?: boolean;
|
|
1108
|
+
locale?: string;
|
|
1109
|
+
}
|
|
1110
|
+
interface StopwatchProps extends StatisticBaseProps {
|
|
1111
|
+
/** Başlat / Duraklat / Sıfırla. Varsayılan: `true`. */
|
|
1112
|
+
controls?: boolean;
|
|
1113
|
+
autoStart?: boolean;
|
|
1114
|
+
/** Durdurulunca/sıfırlanınca geçen süre (ms). */
|
|
1115
|
+
onStop?: (elapsedMs: number) => void;
|
|
1116
|
+
}
|
|
1117
|
+
/**
|
|
1118
|
+
* Sayısal KPI: başlık, yerel biçimli değer, önek/sonek, trend. Trendin rengi
|
|
1119
|
+
* yönden değil ANLAMdan (`goodWhen`): maliyetin düşmesi yeşil.
|
|
1120
|
+
*/
|
|
1121
|
+
declare function Statistic({ title, value, precision, prefix, suffix, trend, description, locale, size, style, skeleton, animated, valueAnimation }: Readonly<StatisticProps>): React__default.JSX.Element;
|
|
1122
|
+
/**
|
|
1123
|
+
* Geri sayım. Her saniye güncellenir ama duyurulmaz (`timer`); kalan süre
|
|
1124
|
+
* sözlü olarak erişilebilir adda, süre dolunca bir kez duyurulur.
|
|
1125
|
+
*/
|
|
1126
|
+
declare function Countdown({ title, target, onFinish, showDays, finishedText, prefix, suffix, description, size, style, skeleton }: Readonly<CountdownProps>): React__default.JSX.Element;
|
|
1127
|
+
/** Canlı saat; saniyesizde dakikada bir değişir ama saniyede bir kontrol edilir. */
|
|
1128
|
+
declare function Clock({ title, timeZone, showSeconds, locale, prefix, suffix, description, size, style, skeleton }: Readonly<ClockProps>): React__default.JSX.Element;
|
|
1129
|
+
/**
|
|
1130
|
+
* Kronometre: Başlat / Duraklat / Sıfırla. Salise görünür ama duyurulmaz;
|
|
1131
|
+
* durdurulunca geçen süre sözlü olarak duyurulur.
|
|
1132
|
+
*/
|
|
1133
|
+
declare function Stopwatch({ title, controls, autoStart, onStop, prefix, suffix, description, size, style, skeleton }: Readonly<StopwatchProps>): React__default.JSX.Element;
|
|
1134
|
+
|
|
1135
|
+
/** Steps'in saf mantığı (testli) — web `Steps/utils.ts` ile aynı kurallar, sınıf yerine renk. */
|
|
1136
|
+
type StepStatus = "wait" | "process" | "finish" | "error";
|
|
1137
|
+
type StepsVariant = "filled" | "outlined";
|
|
1138
|
+
|
|
1139
|
+
type StepsSize = "sm" | "md";
|
|
1140
|
+
type StepsLabelPlacement = "horizontal" | "vertical";
|
|
1141
|
+
interface StepItem {
|
|
1142
|
+
title: React__default.ReactNode;
|
|
1143
|
+
/** Başlığın yanında soluk ikincil metin (süre, tarih). */
|
|
1144
|
+
subTitle?: React__default.ReactNode;
|
|
1145
|
+
description?: React__default.ReactNode;
|
|
1146
|
+
/** Numara yerine dairede ikon (ör. lucide-react-native) — `size` ve `color` alır. */
|
|
1147
|
+
icon?: React__default.ComponentType<{
|
|
1148
|
+
size?: number;
|
|
1149
|
+
color?: string;
|
|
1150
|
+
}>;
|
|
1151
|
+
/** 1 tabanlı kimlik; `currentStep` bununla karşılaştırılır. Varsayılan: sırası. */
|
|
1152
|
+
step?: number;
|
|
1153
|
+
status?: StepStatus;
|
|
1154
|
+
/** Dokunulabilir Steps'te bu adıma gidilemez. */
|
|
1155
|
+
disabled?: boolean;
|
|
1156
|
+
}
|
|
1157
|
+
type StepData = StepItem[];
|
|
1158
|
+
interface StepsProps extends SkeletonableProps {
|
|
1159
|
+
data: StepData;
|
|
1160
|
+
/** Geçerli adım (1 tabanlı). */
|
|
1161
|
+
currentStep: number;
|
|
1162
|
+
/** Geçerli adımın durumu (`"error"`: ödeme reddedildi). Varsayılan: `"process"`. */
|
|
1163
|
+
status?: Exclude<StepStatus, "wait">;
|
|
1164
|
+
/** Verilirse adımlar dokunulabilir ve altta Geri/İleri çubuğu. */
|
|
1165
|
+
onChange?: (step: number) => void;
|
|
1166
|
+
/** Son adımda "Tamamla". Verilmezse "Tamamla" devre dışı. */
|
|
1167
|
+
onComplete?: () => void;
|
|
1168
|
+
/** Varsayılan: `onChange` verildiyse `true`. */
|
|
1169
|
+
showActions?: boolean;
|
|
1170
|
+
color?: ColorRole;
|
|
1171
|
+
variant?: StepsVariant;
|
|
1172
|
+
/** `"md"` 32 · `"sm"` 24 gösterge. */
|
|
1173
|
+
size?: StepsSize;
|
|
1174
|
+
vertical?: boolean;
|
|
1175
|
+
/** Yatayda başlık göstergenin yanında ya da altında ortalı. `dot` iken hep altında. */
|
|
1176
|
+
labelPlacement?: StepsLabelPlacement;
|
|
1177
|
+
/** Numara/ikon yerine küçük nokta — sade zaman çizelgesi. */
|
|
1178
|
+
dot?: boolean;
|
|
1179
|
+
/** Geçerli adımın göstergesinin etrafında ilerleme halkası (0–100). */
|
|
1180
|
+
percent?: number;
|
|
1181
|
+
/** Kapsayıcı bu genişliğin (pt) altındaysa dar düzene geçer; `false` kapatır. Varsayılan: `520`. */
|
|
1182
|
+
responsive?: number | false;
|
|
1183
|
+
/** Dar düzen: `"vertical"` dikey liste, `"compact"` yalnız göstergeler + "Adım 2/4 · Başlık". */
|
|
1184
|
+
responsiveLayout?: "vertical" | "compact";
|
|
1185
|
+
/** Adımların altında, eylem çubuğunun üstünde (bkz. `StepsContent`). */
|
|
1186
|
+
content?: React__default.ReactNode;
|
|
1187
|
+
/** Varsayılan: "İlerleme adımları". */
|
|
1188
|
+
accessibilityLabel?: string;
|
|
1189
|
+
style?: StyleProp<ViewStyle>;
|
|
1190
|
+
}
|
|
1191
|
+
declare function Steps({ data, currentStep, status: currentStatus, onChange, onComplete, showActions, color, variant, size, vertical, labelPlacement, dot, percent, responsive, responsiveLayout, content, accessibilityLabel, skeleton, style, }: Readonly<StepsProps>): React__default.JSX.Element;
|
|
1192
|
+
interface StepsContentProps {
|
|
1193
|
+
value: number;
|
|
1194
|
+
currentSteps: number;
|
|
1195
|
+
children: React__default.ReactNode;
|
|
1196
|
+
style?: StyleProp<ViewStyle>;
|
|
1197
|
+
}
|
|
1198
|
+
/** Yalnız geçerli adımın içeriği; görsel kutu dayatmaz (web ile aynı). */
|
|
1199
|
+
declare function StepsContent({ value, currentSteps, children, style }: StepsContentProps): React__default.JSX.Element | null;
|
|
1200
|
+
|
|
1201
|
+
/**
|
|
1202
|
+
* - `bordered` (varsayılan): dış çerçeve, tonlu başlıklar, gövde ayrı zeminde.
|
|
1203
|
+
* - `borderless`: çerçevesiz tonlu blok, yalnız bölümler arası çizgi.
|
|
1204
|
+
* - `ghost`: zemin ve çerçeve yok — bir kartın içine gömülür.
|
|
1205
|
+
* - `separated`: her bölüm ayrı, aralıklı bir kart (SSS).
|
|
1206
|
+
*/
|
|
1207
|
+
type AccordionVariant = "bordered" | "borderless" | "ghost" | "separated";
|
|
1208
|
+
interface AccordionItem {
|
|
1209
|
+
key: string;
|
|
1210
|
+
/** Başlık (düğmenin erişilebilir adı). */
|
|
1211
|
+
label: React__default.ReactNode;
|
|
1212
|
+
children: React__default.ReactNode;
|
|
1213
|
+
/** Başlığın sağında ek alan; açma düğmesinin DIŞINDA — içine düğme koymak güvenli. */
|
|
1214
|
+
extra?: React__default.ReactNode;
|
|
1215
|
+
disabled?: boolean;
|
|
1216
|
+
showArrow?: boolean;
|
|
1217
|
+
/** İçerik ilk açılıştan önce de çizilsin. */
|
|
1218
|
+
forceRender?: boolean;
|
|
1219
|
+
}
|
|
1220
|
+
interface AccordionProps extends SkeletonableProps {
|
|
1221
|
+
items: AccordionItem[];
|
|
1222
|
+
activeKey?: string | string[];
|
|
1223
|
+
defaultActiveKey?: string | string[];
|
|
1224
|
+
/** Her zaman dizi (tekli modda 0 ya da 1 eleman). */
|
|
1225
|
+
onChange?: (activeKeys: string[]) => void;
|
|
1226
|
+
/** Aynı anda yalnız bir bölüm açık. */
|
|
1227
|
+
single?: boolean;
|
|
1228
|
+
variant?: AccordionVariant;
|
|
1229
|
+
/** Başlık dolgusu sm 10·12 / md 12·16 / lg 16·20; satır en az 44pt. */
|
|
1230
|
+
size?: Size;
|
|
1231
|
+
iconPlacement?: "start" | "end";
|
|
1232
|
+
expandIcon?: (open: boolean) => React__default.ReactNode;
|
|
1233
|
+
/** Web'de `<hN>` seviyesi; native'de başlıklar düğmedir (RN'de başlık seviyesi yok) — yok sayılır. */
|
|
1234
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
1235
|
+
/** Kapanan bölümün içeriği kaldırılsın (varsayılan: ilk açılıştan sonra tutulur). */
|
|
1236
|
+
destroyOnHidden?: boolean;
|
|
1237
|
+
style?: StyleProp<ViewStyle>;
|
|
1238
|
+
}
|
|
1239
|
+
/** Başlık + açılır içerik listesi (ant.design Collapse). Başlığın her yerine dokunmak açar. */
|
|
1240
|
+
declare function Accordion({ items, activeKey, defaultActiveKey, onChange, single, variant, size, iconPlacement, expandIcon, destroyOnHidden, skeleton, style, }: Readonly<AccordionProps>): React__default.JSX.Element;
|
|
1241
|
+
|
|
1242
|
+
/** `line`: alt çizgili (varsayılan). `card`: kart sekmeler. `pills`: kayan zeminli segmented. */
|
|
1243
|
+
type TabsVariant = "line" | "card" | "pills";
|
|
1244
|
+
type TabsOrientation = "horizontal" | "vertical";
|
|
1245
|
+
interface TabsProps extends SkeletonableProps {
|
|
1246
|
+
defaultActiveTab?: string;
|
|
1247
|
+
activeTab?: string;
|
|
1248
|
+
onChange?: (value: string) => void;
|
|
1249
|
+
/** Aktif sekme göstergesinin rengi. Varsayılan: `primary`. */
|
|
1250
|
+
color?: ColorRole;
|
|
1251
|
+
variant?: TabsVariant;
|
|
1252
|
+
/** Sekme yüksekliği sm 36 · md 44 · lg 48. */
|
|
1253
|
+
size?: Size;
|
|
1254
|
+
/** `vertical`: sekmeler solda, içerik sağda. */
|
|
1255
|
+
orientation?: TabsOrientation;
|
|
1256
|
+
/** Dikey Tabs bu genişliğin (pt) altında yataya döner. `false` kapatır. Varsayılan: `640`. */
|
|
1257
|
+
responsive?: number | false;
|
|
1258
|
+
/** Sekmeler tüm genişliğe eşit dağılır. */
|
|
1259
|
+
fill?: boolean;
|
|
1260
|
+
align?: "start" | "center";
|
|
1261
|
+
/** Pasif paneller çizili kalır (gizli) — içlerindeki form durumu kaybolmaz. */
|
|
1262
|
+
keepMounted?: boolean;
|
|
1263
|
+
/** Web'de klavye etkinleştirme kipi; native'de ok tuşu yok — yok sayılır. */
|
|
1264
|
+
activationMode?: "automatic" | "manual";
|
|
1265
|
+
style?: StyleProp<ViewStyle>;
|
|
1266
|
+
children: React__default.ReactNode;
|
|
1267
|
+
}
|
|
1268
|
+
interface TabsListProps {
|
|
1269
|
+
children: React__default.ReactNode;
|
|
1270
|
+
/** Sekme çubuğunun sonunda ek içerik (ör. düğme). */
|
|
1271
|
+
extra?: React__default.ReactNode;
|
|
1272
|
+
/** Sekme grubunun erişilebilir adı. */
|
|
1273
|
+
accessibilityLabel?: string;
|
|
1274
|
+
style?: StyleProp<ViewStyle>;
|
|
1275
|
+
}
|
|
1276
|
+
interface TabsTriggerState {
|
|
1277
|
+
active: boolean;
|
|
1278
|
+
/** O anki etiket rengi — ikonu boyamak için. */
|
|
1279
|
+
color: string;
|
|
1280
|
+
}
|
|
1281
|
+
interface TabsTriggerProps {
|
|
1282
|
+
children: React__default.ReactNode;
|
|
1283
|
+
value: string;
|
|
1284
|
+
/** Etiketin önündeki ikon; fonksiyon verilirse etiket rengini alır (RN'de `currentColor` yok). */
|
|
1285
|
+
icon?: React__default.ReactNode | ((state: TabsTriggerState) => React__default.ReactNode);
|
|
1286
|
+
/** Etiketin yanında sayı rozeti. */
|
|
1287
|
+
count?: number;
|
|
1288
|
+
disabled?: boolean;
|
|
1289
|
+
style?: StyleProp<ViewStyle>;
|
|
1290
|
+
}
|
|
1291
|
+
interface TabsContentProps {
|
|
1292
|
+
children: React__default.ReactNode;
|
|
1293
|
+
value: string;
|
|
1294
|
+
/** Pasifken de çizili kalsın (`keepMounted`'ı panel bazında açar). */
|
|
1295
|
+
forceMount?: boolean;
|
|
1296
|
+
style?: StyleProp<ViewStyle>;
|
|
1297
|
+
}
|
|
1298
|
+
declare function Tabs({ defaultActiveTab, activeTab, onChange, color, variant, size, orientation, responsive, fill, align, keepMounted, skeleton, style, children, }: Readonly<TabsProps>): React__default.JSX.Element;
|
|
1299
|
+
declare function TabsList({ children, extra, accessibilityLabel, style }: Readonly<TabsListProps>): React__default.JSX.Element;
|
|
1300
|
+
declare function TabsTrigger({ children, value, icon, count, disabled, style }: Readonly<TabsTriggerProps>): React__default.JSX.Element;
|
|
1301
|
+
/** Aktif sekmenin paneli. Pasif paneller kaldırılır (`keepMounted` / `forceMount`: gizli tutulur). */
|
|
1302
|
+
declare function TabsContent({ children, value, forceMount, style }: Readonly<TabsContentProps>): React__default.JSX.Element | null;
|
|
1303
|
+
|
|
1304
|
+
/** Select'in saf mantığı — web `select/utils.ts` ile aynı kurallar (testli). */
|
|
1305
|
+
type SelectValue = string | number;
|
|
1306
|
+
interface SelectOption {
|
|
1307
|
+
value: SelectValue;
|
|
1308
|
+
/** Görünen metin. Verilmezse `value`. Aramada da bu (düz metinse) kullanılır. */
|
|
1309
|
+
label?: React__default.ReactNode;
|
|
1310
|
+
/** Solda ikon/avatar. */
|
|
1311
|
+
icon?: React__default.ReactNode;
|
|
1312
|
+
/** Etiketin altında soluk açıklama. */
|
|
1313
|
+
description?: React__default.ReactNode;
|
|
1314
|
+
disabled?: boolean;
|
|
1315
|
+
/** `label` düz metin değilse arama için kullanılacak metin. */
|
|
1316
|
+
searchText?: string;
|
|
1317
|
+
}
|
|
1318
|
+
/** Başlıklı seçenek grubu. */
|
|
1319
|
+
interface SelectOptionGroup {
|
|
1320
|
+
label: React__default.ReactNode;
|
|
1321
|
+
options: SelectOption[];
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
interface SelectBaseProps extends SkeletonableProps {
|
|
1325
|
+
options: Array<SelectOption | SelectOptionGroup>;
|
|
1326
|
+
placeholder?: string;
|
|
1327
|
+
/** Panelin üstünde arama alanı (Türkçe/aksansız). */
|
|
1328
|
+
showSearch?: boolean;
|
|
1329
|
+
/**
|
|
1330
|
+
* Listede olmayan değer de seçilebilir: aramada birebir eşleşme yoksa en üstte
|
|
1331
|
+
* "“…” kullan" satırı; klavyede "bitti" de yazılanı seçer. Aramayı kendiliğinden
|
|
1332
|
+
* açar. Değer yazılan metin olur (alanda düz metin / etiket olarak görünür).
|
|
1333
|
+
*/
|
|
1334
|
+
allowFreeText?: boolean;
|
|
1335
|
+
/** Serbest metin satırının etiketi. Varsayılan: `(t) => "“t” kullan"`. */
|
|
1336
|
+
freeTextLabel?: (text: string) => string;
|
|
1337
|
+
allowClear?: boolean;
|
|
1338
|
+
/** Varsayılan: `"Temizle"`. */
|
|
1339
|
+
clearLabel?: string;
|
|
1340
|
+
/** Seçenekler yükleniyor: panelde spinner, alanda dönen ikon. */
|
|
1341
|
+
loading?: boolean;
|
|
1342
|
+
/** Varsayılan: `"Sonuç bulunamadı"`. */
|
|
1343
|
+
notFoundContent?: React__default.ReactNode;
|
|
1344
|
+
disabled?: boolean;
|
|
1345
|
+
/** Alan Input ölçeğinde (md 44). */
|
|
1346
|
+
size?: Size;
|
|
1347
|
+
variant?: InputVariant;
|
|
1348
|
+
shape?: InputShape;
|
|
1349
|
+
/** Doğrulama durumu ya da vurgu rengi — Input'la aynı kural. */
|
|
1350
|
+
color?: ColorRole;
|
|
1351
|
+
/** Panel başlığı. Varsayılan: Field etiketi, yoksa `placeholder`. */
|
|
1352
|
+
title?: React__default.ReactNode;
|
|
1353
|
+
open?: boolean;
|
|
1354
|
+
onOpenChange?: (open: boolean) => void;
|
|
1355
|
+
/** Aramada yazılan metin (sunucu tarafı arama). */
|
|
1356
|
+
onSearch?: (text: string) => void;
|
|
1357
|
+
/** Seçenek satırını özelleştir. */
|
|
1358
|
+
optionRender?: (option: SelectOption, state: {
|
|
1359
|
+
selected: boolean;
|
|
1360
|
+
active: boolean;
|
|
1361
|
+
}) => React__default.ReactNode;
|
|
1362
|
+
accessibilityLabel?: string;
|
|
1363
|
+
accessibilityHint?: string;
|
|
1364
|
+
style?: StyleProp<ViewStyle>;
|
|
1365
|
+
}
|
|
1366
|
+
interface SelectSingleProps extends SelectBaseProps {
|
|
1367
|
+
mode?: undefined;
|
|
1368
|
+
value?: SelectValue | null;
|
|
1369
|
+
defaultValue?: SelectValue | null;
|
|
1370
|
+
onChange?: (value: SelectValue | null, option: SelectOption | null) => void;
|
|
1371
|
+
}
|
|
1372
|
+
interface SelectMultipleProps extends SelectBaseProps {
|
|
1373
|
+
/** Çoklu: seçilenler etiket olur, panel seçimden sonra açık kalır ("Tamam" ile kapanır). */
|
|
1374
|
+
mode: "multiple";
|
|
1375
|
+
value?: SelectValue[];
|
|
1376
|
+
defaultValue?: SelectValue[];
|
|
1377
|
+
onChange?: (value: SelectValue[], options: SelectOption[]) => void;
|
|
1378
|
+
/** En fazla bu kadar etiket, kalanı "+N". */
|
|
1379
|
+
maxTagCount?: number;
|
|
1380
|
+
}
|
|
1381
|
+
type SelectProps = SelectSingleProps | SelectMultipleProps;
|
|
1382
|
+
/**
|
|
1383
|
+
* Seçim alanı: kapalıyken Input'la aynı kutu; dokununca seçenekler
|
|
1384
|
+
* BottomSheet'te açılır (kullanıcı kararı). Tekli seçimde dokunulan seçenek
|
|
1385
|
+
* seçilir ve panel kapanır; çoklu seçimde panel açık kalır ("Tamam" kapatır).
|
|
1386
|
+
*/
|
|
1387
|
+
declare function Select(props: SelectProps): React__default.JSX.Element;
|
|
1388
|
+
|
|
1389
|
+
/**
|
|
1390
|
+
* Statik kaynak — web'deki `ImageStaticSource` ile aynı şekil (`{ src, width,
|
|
1391
|
+
* height, blurDataURL }`). Boyut verilirse yer önceden ayrılır.
|
|
1392
|
+
*/
|
|
1393
|
+
interface ImageStaticSource {
|
|
1394
|
+
src: string;
|
|
1395
|
+
width?: number;
|
|
1396
|
+
height?: number;
|
|
1397
|
+
/** Küçük bulanık ön izleme (genelde `data:` URL) — `placeholder` için kendiliğinden kullanılır. */
|
|
1398
|
+
blurDataURL?: string;
|
|
1399
|
+
}
|
|
1400
|
+
/** URL, statik kaynak ya da `require("./foto.jpg")` (paketlenmiş görsel). */
|
|
1401
|
+
type ImageSource = string | ImageStaticSource | number;
|
|
1402
|
+
interface ImageLoaderParams {
|
|
1403
|
+
src: string;
|
|
1404
|
+
/** İstenen piksel genişliği (kutu genişliği × ekran piksel oranı). */
|
|
1405
|
+
width: number;
|
|
1406
|
+
quality?: number;
|
|
1407
|
+
}
|
|
1408
|
+
/** Kaynak + genişlik → gerçek URL (CDN boyutlandırma). Web'deki `loader` ile aynı imza. */
|
|
1409
|
+
type ImageLoader = (params: ImageLoaderParams) => string;
|
|
1410
|
+
type ImageFit = "cover" | "contain" | "fill" | "none" | "scale-down";
|
|
1411
|
+
interface ImagePreviewConfig {
|
|
1412
|
+
/** Önizlemede gösterilecek (genelde daha yüksek çözünürlüklü) kaynak. Varsayılan: `src`. */
|
|
1413
|
+
src?: ImageSource;
|
|
1414
|
+
/** Görüntüleyicide görselin altındaki açıklama. */
|
|
1415
|
+
caption?: React__default.ReactNode;
|
|
1416
|
+
open?: boolean;
|
|
1417
|
+
onOpenChange?: (open: boolean) => void;
|
|
1418
|
+
}
|
|
1419
|
+
interface ImageLoadInfo {
|
|
1420
|
+
width: number;
|
|
1421
|
+
height: number;
|
|
1422
|
+
}
|
|
1423
|
+
interface ImageProps extends SkeletonableProps {
|
|
1424
|
+
src: ImageSource | null | undefined;
|
|
1425
|
+
/** Zorunlu. Süs görselse `alt=""` verin (ekran okuyucu atlar). */
|
|
1426
|
+
alt: string;
|
|
1427
|
+
/** Sayı = pt, yüzde = kaba göre. */
|
|
1428
|
+
width?: DimensionValue;
|
|
1429
|
+
height?: DimensionValue;
|
|
1430
|
+
/**
|
|
1431
|
+
* Yer önceden ayrılsın (yüklenince ekran kaymasın): `"4/3"`, `1.5`.
|
|
1432
|
+
* Verilmezse sayısal `width`/`height`ten (ya da kaynağın boyutundan) çıkarılır.
|
|
1433
|
+
*/
|
|
1434
|
+
aspectRatio?: number | string;
|
|
1435
|
+
/** Varsayılan: `"cover"`. */
|
|
1436
|
+
fit?: ImageFit;
|
|
1437
|
+
loader?: ImageLoader;
|
|
1438
|
+
/** `loader` aday genişlikleri; kutu genişliği × piksel oranına en yakın büyük aday istenir. */
|
|
1439
|
+
widths?: number[];
|
|
1440
|
+
quality?: number;
|
|
1441
|
+
/**
|
|
1442
|
+
* Yüklenirken gösterilen:
|
|
1443
|
+
* - `true`: bulanık ön izleme (`blurDataURL` ya da `loader` ile küçük boy), yoksa nabız,
|
|
1444
|
+
* - string: bu düşük çözünürlüklü URL bulanık gösterilir,
|
|
1445
|
+
* - node: özel içerik.
|
|
1446
|
+
* Varsayılan: `blurDataURL` varsa `true`.
|
|
1447
|
+
*/
|
|
1448
|
+
placeholder?: boolean | string | React__default.ReactNode;
|
|
1449
|
+
/** Yüklenemezse: URL (yedek görsel) ya da node. Varsayılan: ikon + "Görsel yüklenemedi". */
|
|
1450
|
+
fallback?: string | React__default.ReactNode;
|
|
1451
|
+
/** Dokununca tam ekran görüntüleyicide açılır. */
|
|
1452
|
+
preview?: boolean | ImagePreviewConfig;
|
|
1453
|
+
/** Dış kutu (köşe, kenarlık, boyut). */
|
|
1454
|
+
style?: StyleProp<ViewStyle>;
|
|
1455
|
+
/** İç `Image`. */
|
|
1456
|
+
imageStyle?: StyleProp<ImageStyle>;
|
|
1457
|
+
onLoad?: (info: ImageLoadInfo) => void;
|
|
1458
|
+
onError?: () => void;
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
/**
|
|
1462
|
+
* Web `Image`ın native karşılığı (yapı ant.design Image): kademeli yükleme
|
|
1463
|
+
* (bulanık ön izleme → asıl görsel yumuşak geçişle), `fallback`, `preview`
|
|
1464
|
+
* (tam ekran `ImageViewer`). Kutu yeri önceden ayırır (`aspectRatio` ya da
|
|
1465
|
+
* `width`/`height`) → yüklenince ekran kaymaz. CDN boyutlandırma `loader` ile:
|
|
1466
|
+
* kutu genişliği × ekran piksel oranına en yakın aday istenir.
|
|
1467
|
+
*/
|
|
1468
|
+
declare function Image({ src, alt, width, height, aspectRatio, fit, loader, widths, quality, placeholder, fallback, preview, skeleton, style, imageStyle, onLoad, onError, }: Readonly<ImageProps>): React__default.JSX.Element;
|
|
1469
|
+
|
|
1470
|
+
interface ImageViewerItem {
|
|
1471
|
+
key: React__default.Key;
|
|
1472
|
+
/** Tam çözünürlüklü kaynak. */
|
|
1473
|
+
src: ImageSource;
|
|
1474
|
+
alt: string;
|
|
1475
|
+
/** Asıl görsel yüklenene kadar altta gösterilen küçük boy; alt şeritte de kullanılır. */
|
|
1476
|
+
thumbnail?: string;
|
|
1477
|
+
caption?: React__default.ReactNode;
|
|
1478
|
+
}
|
|
1479
|
+
interface ImageViewerProps {
|
|
1480
|
+
items: ImageViewerItem[];
|
|
1481
|
+
open: boolean;
|
|
1482
|
+
onClose: () => void;
|
|
1483
|
+
index?: number;
|
|
1484
|
+
defaultIndex?: number;
|
|
1485
|
+
onIndexChange?: (index: number) => void;
|
|
1486
|
+
loader?: ImageLoader;
|
|
1487
|
+
/** Alt şerit. Varsayılan: birden fazla öğe varsa. */
|
|
1488
|
+
thumbnails?: boolean;
|
|
1489
|
+
/** Üst çubuğa ek eylemler (paylaş, sil…). */
|
|
1490
|
+
actions?: (item: ImageViewerItem, index: number) => React__default.ReactNode;
|
|
1491
|
+
accessibilityLabel?: string;
|
|
1492
|
+
/** Üst güvenli alan (durum çubuğu/çentik). Varsayılan: iOS 54, Android durum çubuğu yüksekliği. */
|
|
1493
|
+
topInset?: number;
|
|
1494
|
+
/** Alt güvenli alan (ev çubuğu). Varsayılan: iOS 28, Android 16. */
|
|
1495
|
+
bottomInset?: number;
|
|
1496
|
+
}
|
|
1497
|
+
/**
|
|
1498
|
+
* Tam ekran görüntüleyici — web `ImageViewer`ın native karşılığı (ek paket
|
|
1499
|
+
* yok; PanResponder + Animated). Yana kaydır = önceki/sonraki, aşağı çek =
|
|
1500
|
+
* kapat, çift dokun = yakınlaş/sıfırla, iki parmak = yakınlaş, yakınken
|
|
1501
|
+
* sürükle = gez, tek dokun = üst/alt çubukları gizle/göster.
|
|
1502
|
+
*/
|
|
1503
|
+
declare function ImageViewer(props: Readonly<ImageViewerProps>): React__default.JSX.Element;
|
|
1504
|
+
|
|
1505
|
+
/**
|
|
1506
|
+
* ImageGallery'nin saf mantığı — web'deki (`components/src/image/galleryUtils.ts`)
|
|
1507
|
+
* ile birebir; klavye ızgarası ve görünür aralık hesabı yok (native'de FlatList
|
|
1508
|
+
* sanallaştırır, satır konumları `getItemLayout`a gider).
|
|
1509
|
+
*/
|
|
1510
|
+
type GalleryView = "all" | "day" | "month" | "year";
|
|
1511
|
+
|
|
1512
|
+
interface ImageGalleryItem {
|
|
1513
|
+
key: React__default.Key;
|
|
1514
|
+
/** Tam çözünürlüklü kaynak. */
|
|
1515
|
+
src: ImageSource;
|
|
1516
|
+
alt: string;
|
|
1517
|
+
/** Çekim tarihi — bölümler buna göre. Hiçbir öğede yoksa galeri tek düz ızgaradır. */
|
|
1518
|
+
date?: Date | null;
|
|
1519
|
+
/** Varsayılan: `"image"`. Native görüntüleyicide video OYNATILMAZ — kapak görseli gösterilir. */
|
|
1520
|
+
type?: "image" | "video";
|
|
1521
|
+
/** Video kapak görseli (ızgarada ve görüntüleyicide) — hazır adres, `loader`dan geçmez. */
|
|
1522
|
+
poster?: string;
|
|
1523
|
+
/** Video süresi (sn) — küçük resmin köşesinde. */
|
|
1524
|
+
duration?: number;
|
|
1525
|
+
/** Izgarada `src` yerine gösterilecek küçük kaynak (CDN `loader`ı yoksa önerilir). */
|
|
1526
|
+
thumbnail?: ImageSource;
|
|
1527
|
+
caption?: React__default.ReactNode;
|
|
1528
|
+
}
|
|
1529
|
+
interface ImageGalleryProps extends SkeletonableProps {
|
|
1530
|
+
items: ImageGalleryItem[];
|
|
1531
|
+
/** Bölümleme: `day` / `month` / `year` başlıklı, `all` başlıksız tek ızgara. Varsayılan: `"day"`. */
|
|
1532
|
+
view?: GalleryView;
|
|
1533
|
+
defaultView?: GalleryView;
|
|
1534
|
+
onViewChange?: (view: GalleryView) => void;
|
|
1535
|
+
/** Araç çubuğundaki görünüm seçenekleri (sırasıyla). Varsayılan: Yıllar, Aylar, Günler, Tümü. */
|
|
1536
|
+
views?: GalleryView[];
|
|
1537
|
+
/** Sütun sayısı. `"auto"`: genişlik ve görünüme göre (gün iri, yıl sık). Varsayılan: `"auto"`. */
|
|
1538
|
+
columns?: number | "auto";
|
|
1539
|
+
defaultColumns?: number | "auto";
|
|
1540
|
+
onColumnsChange?: (columns: number | "auto") => void;
|
|
1541
|
+
/** Küçük resimler arası boşluk (pt, kıl payı). Varsayılan: `2`. */
|
|
1542
|
+
gap?: number;
|
|
1543
|
+
loader?: ImageLoader;
|
|
1544
|
+
/** Araç çubuğu (görünüm, sütun, seçim). Varsayılan: `true`. */
|
|
1545
|
+
toolbar?: boolean;
|
|
1546
|
+
/** Araç çubuğunun solundaki başlık. */
|
|
1547
|
+
title?: React__default.ReactNode;
|
|
1548
|
+
/** Sona yaklaşınca sonraki sayfayı ister (FlatList sanallaştırmasıyla). */
|
|
1549
|
+
infinite?: InfiniteScrollOptions;
|
|
1550
|
+
/** Araç çubuğunda "Seç" düğmesi; uzun basış da seçim moduna alır. */
|
|
1551
|
+
selectable?: boolean;
|
|
1552
|
+
selectionMode?: boolean;
|
|
1553
|
+
defaultSelectionMode?: boolean;
|
|
1554
|
+
onSelectionModeChange?: (active: boolean) => void;
|
|
1555
|
+
selectedKeys?: React__default.Key[];
|
|
1556
|
+
defaultSelectedKeys?: React__default.Key[];
|
|
1557
|
+
onSelectionChange?: (keys: React__default.Key[]) => void;
|
|
1558
|
+
/** Seçim modunda araç çubuğuna eklenecek eylemler (paylaş, sil…). */
|
|
1559
|
+
selectionActions?: (keys: React__default.Key[]) => React__default.ReactNode;
|
|
1560
|
+
/** Görüntüleyicinin üst çubuğuna ek eylemler. */
|
|
1561
|
+
viewerActions?: Exclude<ImageViewerProps["actions"], undefined>;
|
|
1562
|
+
/** Tarih biçimi. Varsayılan: `"tr-TR"`. */
|
|
1563
|
+
locale?: string;
|
|
1564
|
+
/** Öğe yokken. Varsayılan: "Henüz fotoğraf yok". */
|
|
1565
|
+
emptyText?: React__default.ReactNode;
|
|
1566
|
+
accessibilityLabel?: string;
|
|
1567
|
+
/** Dış kutu. Galeri kendi içinde kayar: ekranı doldurun (`flex: 1`) ya da yükseklik verin. */
|
|
1568
|
+
style?: StyleProp<ViewStyle>;
|
|
1569
|
+
}
|
|
1570
|
+
/**
|
|
1571
|
+
* Web `ImageGallery`ın native karşılığı (yapı iPhone Fotoğraflar): kare küçük
|
|
1572
|
+
* resimler kıl payı aralıkla, tarihe göre bölümler, Yıllar / Aylar / Günler /
|
|
1573
|
+
* Tümü (üst görünümde başlığa dokununca bir alta inilir), sütun sayısı, seçim
|
|
1574
|
+
* modu (uzun basış), tam ekran `ImageViewer`. Satırlar FlatList'te sanal;
|
|
1575
|
+
* konumlar önceden bilindiği için `getItemLayout` ile ölçümsüz.
|
|
1576
|
+
*/
|
|
1577
|
+
declare function ImageGallery(props: Readonly<ImageGalleryProps>): React__default.JSX.Element;
|
|
1578
|
+
|
|
1579
|
+
/**
|
|
1580
|
+
* Carousel'in saf mantığı (react-native'siz, testli). Konumlar SLAYT
|
|
1581
|
+
* birimindedir: 0 = ilk slayt görünen alanın solunda, 1 = bir slayt kaymış.
|
|
1582
|
+
*/
|
|
1583
|
+
type CarouselAlign = "start" | "center" | "end";
|
|
1584
|
+
interface ResponsiveItem {
|
|
1585
|
+
breakpoint: number;
|
|
1586
|
+
slidesToShow: number;
|
|
1587
|
+
slidesToScroll?: number;
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
type DotPosition = "bottom" | "top" | "left" | "right";
|
|
1591
|
+
type ArrowsPlacement = "sides" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
1592
|
+
type DotsPlacement = "overlay" | "outside";
|
|
1593
|
+
|
|
1594
|
+
interface CarouselControls {
|
|
1595
|
+
selectedIndex: number;
|
|
1596
|
+
/** Her durağın başlangıç konumu (slayt birimi). */
|
|
1597
|
+
scrollSnaps: number[];
|
|
1598
|
+
canScrollPrev: boolean;
|
|
1599
|
+
canScrollNext: boolean;
|
|
1600
|
+
scrollPrev: () => void;
|
|
1601
|
+
scrollNext: () => void;
|
|
1602
|
+
scrollTo: (index: number) => void;
|
|
1603
|
+
}
|
|
1604
|
+
interface CarouselProps extends SkeletonableProps {
|
|
1605
|
+
children: React__default.ReactNode;
|
|
1606
|
+
style?: StyleProp<ViewStyle>;
|
|
1607
|
+
/** Her slaydın kutusu (slaytlar arası boşluk için `paddingHorizontal`). */
|
|
1608
|
+
itemStyle?: StyleProp<ViewStyle>;
|
|
1609
|
+
/** Görünen alan (köşe, yükseklik). */
|
|
1610
|
+
viewportStyle?: StyleProp<ViewStyle>;
|
|
1611
|
+
/** Ok ve nokta göstergelerinin aktif rengi. Varsayılan: `neutral`. */
|
|
1612
|
+
color?: ColorRole;
|
|
1613
|
+
/** Erişilebilir ad (ör. "Kampanyalar"). Varsayılan: `"Slayt gösterisi"`. */
|
|
1614
|
+
label?: string;
|
|
1615
|
+
/** Kesintisiz döngü: sondan ileri ilk slayt yandan gelir. Varsayılan: `true`. */
|
|
1616
|
+
loop?: boolean;
|
|
1617
|
+
/** Parmakla yana kaydırarak gezinme. Varsayılan: `true`. */
|
|
1618
|
+
draggable?: boolean;
|
|
1619
|
+
/** Geçiş hızı (web ile aynı ölçek; ≈ `speed × 16` ms). Varsayılan: `20`. */
|
|
1620
|
+
speed?: number;
|
|
1621
|
+
slidesToShow?: number;
|
|
1622
|
+
slidesToScroll?: number;
|
|
1623
|
+
align?: CarouselAlign;
|
|
1624
|
+
containScroll?: "trimSnaps" | "keepSnaps";
|
|
1625
|
+
/** Otomatik ilerleme. Dokununca duraklar, durdur/başlat düğmesi gösterilir; "Hareketi azalt" açıksa başlamaz. */
|
|
1626
|
+
autoplay?: boolean;
|
|
1627
|
+
autoplayDelay?: number;
|
|
1628
|
+
/** Kullanıcı kaydırırsa otomatik oynatma kalıcı olarak durur. Varsayılan: `true`. */
|
|
1629
|
+
autoplayStopOnInteraction?: boolean;
|
|
1630
|
+
/** Önceki/sonraki okları. Native'de varsayılan `false` (kaydırma + noktalar). */
|
|
1631
|
+
arrows?: boolean;
|
|
1632
|
+
/** Web'de üzerine gelince beliren oklar; dokunmatikte hover yok — yok sayılır. */
|
|
1633
|
+
arrowsVisibility?: "always" | "hover";
|
|
1634
|
+
arrowsPlacement?: ArrowsPlacement;
|
|
1635
|
+
dots?: boolean;
|
|
1636
|
+
dotPosition?: DotPosition;
|
|
1637
|
+
dotsPlacement?: DotsPlacement;
|
|
1638
|
+
controlsRef?: React__default.RefObject<CarouselControls | null>;
|
|
1639
|
+
/** Pencere genişliğine göre `slidesToShow`/`slidesToScroll` (web ile aynı kural). */
|
|
1640
|
+
responsive?: ResponsiveItem[];
|
|
1641
|
+
/** Seçili durak değişirken: `(önceki, yeni)`. */
|
|
1642
|
+
beforeChange?: (current: number, next: number) => void;
|
|
1643
|
+
/** Geçiş yeni durakta bittiğinde. */
|
|
1644
|
+
afterChange?: (current: number) => void;
|
|
1645
|
+
onStateChange?: (state: CarouselControls) => void;
|
|
1646
|
+
}
|
|
1647
|
+
/**
|
|
1648
|
+
* Web `Carousel`ın native karşılığı — Embla yerine kendi izimiz (Animated +
|
|
1649
|
+
* PanResponder, ek paket yok). Kesintisiz döngü uçlara kopya slayt ekleyerek;
|
|
1650
|
+
* görünmeyen slaytlar ve kopyalar ekran okuyucudan gizli.
|
|
1651
|
+
*/
|
|
1652
|
+
declare function Carousel({ children, style, itemStyle, viewportStyle, color, label, skeleton, loop, draggable, speed, slidesToShow: baseShow, slidesToScroll: baseScroll, align, containScroll, autoplay, autoplayDelay, autoplayStopOnInteraction, arrows, arrowsPlacement, dots, dotPosition, dotsPlacement, controlsRef, responsive, beforeChange, afterChange, onStateChange, }: Readonly<CarouselProps>): React__default.JSX.Element;
|
|
1653
|
+
|
|
1654
|
+
/** `small`: tek sıra. `large`: altta büyük başlık; `scrollY` verilirse kaydırınca küçük başlığa geçer. */
|
|
1655
|
+
type AppBarSize = "small" | "large";
|
|
1656
|
+
interface AppBarProps extends SkeletonableProps {
|
|
1657
|
+
title?: React__default.ReactNode;
|
|
1658
|
+
/** Başlığın altında küçük satır (yalnız üst sırada; `large`'da küçük başlık görününce). */
|
|
1659
|
+
subtitle?: React__default.ReactNode;
|
|
1660
|
+
size?: AppBarSize;
|
|
1661
|
+
/** Başlık hizası. Varsayılan: iOS'ta `center`, diğerlerinde `start` (platform alışkanlığı). */
|
|
1662
|
+
titleAlign?: "start" | "center";
|
|
1663
|
+
/** Verilirse solda geri düğmesi çizilir. `leading` verilmişse o kazanır. */
|
|
1664
|
+
onBack?: () => void;
|
|
1665
|
+
/** Geri düğmesinin erişilebilir adı. Varsayılan: "Geri". */
|
|
1666
|
+
backAccessibilityLabel?: string;
|
|
1667
|
+
/** Sol uç (ör. menü düğmesi, logo). */
|
|
1668
|
+
leading?: React__default.ReactNode;
|
|
1669
|
+
/** Sağ uç — genelde `AppBarAction`'lar. */
|
|
1670
|
+
actions?: React__default.ReactNode;
|
|
1671
|
+
/** Üst güvenli alan payı (çentik / durum çubuğu). Varsayılan: `ThemeProvider insets`in `top`ı, yoksa 0. */
|
|
1672
|
+
topInset?: number;
|
|
1673
|
+
/** Sayfanın dikey kaydırma değeri (`useAppBarScroll`). `large` daralır, alt çizgi kaydırınca belirir. */
|
|
1674
|
+
scrollY?: Animated.Value;
|
|
1675
|
+
/** Alt ayırıcı çizgi. Varsayılan: `scrollY` varsa kaydırınca belirir, yoksa yok. */
|
|
1676
|
+
bordered?: boolean;
|
|
1677
|
+
style?: StyleProp<ViewStyle>;
|
|
1678
|
+
}
|
|
1679
|
+
interface AppBarActionState {
|
|
1680
|
+
color: string;
|
|
1681
|
+
}
|
|
1682
|
+
interface AppBarActionProps {
|
|
1683
|
+
/** Fonksiyon verilirse ikon rengini alır (RN'de `currentColor` yok). */
|
|
1684
|
+
icon: React__default.ReactNode | ((state: AppBarActionState) => React__default.ReactNode);
|
|
1685
|
+
/** Zorunlu — ikon tek başına ekran okuyucuya bir şey söylemez. */
|
|
1686
|
+
accessibilityLabel: string;
|
|
1687
|
+
onPress?: () => void;
|
|
1688
|
+
disabled?: boolean;
|
|
1689
|
+
/** Sayı rozeti; `true` nokta. */
|
|
1690
|
+
badge?: number | boolean;
|
|
1691
|
+
}
|
|
1692
|
+
/**
|
|
1693
|
+
* Sayfa kaydırmasını AppBar'a bağlar:
|
|
1694
|
+
* `const { scrollY, onScroll } = useAppBarScroll();` → `<AppBar scrollY={scrollY} />` +
|
|
1695
|
+
* `<Animated.ScrollView onScroll={onScroll} scrollEventThrottle={16}>`.
|
|
1696
|
+
*/
|
|
1697
|
+
declare function useAppBarScroll(): {
|
|
1698
|
+
scrollY: Animated.Value;
|
|
1699
|
+
onScroll: (...args: Array<any>) => void;
|
|
1700
|
+
scrollEventThrottle: number;
|
|
1701
|
+
};
|
|
1702
|
+
declare function AppBarAction({ icon, accessibilityLabel, onPress, disabled, badge }: Readonly<AppBarActionProps>): React__default.JSX.Element;
|
|
1703
|
+
declare function AppBar({ title, subtitle, size, titleAlign, onBack, backAccessibilityLabel, leading, actions, topInset, scrollY, bordered, skeleton, style, }: Readonly<AppBarProps>): React__default.JSX.Element;
|
|
1704
|
+
|
|
1705
|
+
/** `pill`: Material 3 — aktif ikonun arkasında hap zemin. `plain`: iOS — yalnız renk değişir. */
|
|
1706
|
+
type BottomNavigationVariant = "pill" | "plain";
|
|
1707
|
+
interface BottomNavigationIconState {
|
|
1708
|
+
active: boolean;
|
|
1709
|
+
/** O anki ikon rengi (RN'de `currentColor` yok). */
|
|
1710
|
+
color: string;
|
|
1711
|
+
size: number;
|
|
1712
|
+
}
|
|
1713
|
+
interface BottomNavigationItem {
|
|
1714
|
+
key: string;
|
|
1715
|
+
label: string;
|
|
1716
|
+
/** Fonksiyon verilirse durum ve rengi alır — aktifte dolu ikon göstermek için `active`'i kullanın. */
|
|
1717
|
+
icon: React__default.ReactNode | ((state: BottomNavigationIconState) => React__default.ReactNode);
|
|
1718
|
+
/** Sayı rozeti; `true` nokta. Sayıyı `accessibilityLabel`a da yazın. */
|
|
1719
|
+
badge?: number | boolean;
|
|
1720
|
+
disabled?: boolean;
|
|
1721
|
+
/** Varsayılan: `label`. */
|
|
1722
|
+
accessibilityLabel?: string;
|
|
1723
|
+
}
|
|
1724
|
+
interface BottomNavigationProps extends SkeletonableProps {
|
|
1725
|
+
items: BottomNavigationItem[];
|
|
1726
|
+
value?: string;
|
|
1727
|
+
defaultValue?: string;
|
|
1728
|
+
onChange?: (key: string) => void;
|
|
1729
|
+
/** Zaten seçili sekmeye yeniden dokunulunca (ör. listeyi başa kaydır). */
|
|
1730
|
+
onReselect?: (key: string) => void;
|
|
1731
|
+
/** Varsayılan: `pill`. */
|
|
1732
|
+
variant?: BottomNavigationVariant;
|
|
1733
|
+
/** Aktif sekmenin rengi. Varsayılan: `primary`. */
|
|
1734
|
+
color?: ColorRole;
|
|
1735
|
+
/** Etiketleri gizler (yalnız ikon; erişilebilir ad yine `label`). */
|
|
1736
|
+
hideLabels?: boolean;
|
|
1737
|
+
/** Alt güvenli alan payı (ev çubuğu). Varsayılan: `ThemeProvider insets`in `bottom`ı, yoksa 0. */
|
|
1738
|
+
bottomInset?: number;
|
|
1739
|
+
/** Üst ayırıcı çizgi. Varsayılan: `true`. */
|
|
1740
|
+
bordered?: boolean;
|
|
1741
|
+
accessibilityLabel?: string;
|
|
1742
|
+
style?: StyleProp<ViewStyle>;
|
|
1743
|
+
}
|
|
1744
|
+
declare function BottomNavigation({ items, value, defaultValue, onChange, onReselect, variant, color, hideLabels, bottomInset: bottomInsetProp, bordered, skeleton, accessibilityLabel, style, }: Readonly<BottomNavigationProps>): React__default.JSX.Element;
|
|
1745
|
+
|
|
1746
|
+
interface SidebarIconState {
|
|
1747
|
+
active: boolean;
|
|
1748
|
+
/** O anki ikon rengi (RN'de `currentColor` yok). */
|
|
1749
|
+
color: string;
|
|
1750
|
+
size: number;
|
|
1751
|
+
}
|
|
1752
|
+
/** Web `MenuItemType` ile aynı şekil (`promoTiles`, `target` yok — native'de anlamsız). */
|
|
1753
|
+
interface SidebarItem {
|
|
1754
|
+
key: string;
|
|
1755
|
+
title: string;
|
|
1756
|
+
description?: string;
|
|
1757
|
+
icon?: React__default.ReactNode | ((state: SidebarIconState) => React__default.ReactNode);
|
|
1758
|
+
route?: string;
|
|
1759
|
+
children?: SidebarItem[];
|
|
1760
|
+
/** Etkileşimsiz bölüm başlığı; gruplama dizide ondan sonra gelen kardeşlerle. */
|
|
1761
|
+
heading?: boolean;
|
|
1762
|
+
disabled?: boolean;
|
|
1763
|
+
/** Sayı rozeti; `true` nokta. */
|
|
1764
|
+
badge?: number | boolean;
|
|
1765
|
+
}
|
|
1766
|
+
/**
|
|
1767
|
+
* `Sidebar` (ekranın üstünde açılan katman) animasyonu. `slide`: yandan kayar
|
|
1768
|
+
* (kenara kaydırarak kapatma). `fade`: yerinde solarak belirir. Ekranı da
|
|
1769
|
+
* hareket ettiren açılışlar için `SidebarLayout`.
|
|
1770
|
+
*/
|
|
1771
|
+
type SidebarAnimation = "slide" | "fade";
|
|
1772
|
+
/**
|
|
1773
|
+
* `SidebarLayout` (ekranı da hareket ettiren) animasyonu. `push`: çekmece
|
|
1774
|
+
* ekranı yanında iter. `reveal`: menü altta sabit, ekran kayarak açığa
|
|
1775
|
+
* çıkarır. `scaleDown`: ekran küçülüp yuvarlak köşeli karta dönüşerek çekilir.
|
|
1776
|
+
*/
|
|
1777
|
+
type SidebarLayoutAnimation = "push" | "reveal" | "scaleDown";
|
|
1778
|
+
interface SidebarHeaderInk {
|
|
1779
|
+
/** Başlık bandındaki metin rengi (`emphasizedHeader`da rol renginin karşıtı). */
|
|
1780
|
+
color: string;
|
|
1781
|
+
muted: string;
|
|
1782
|
+
}
|
|
1783
|
+
/** `Sidebar` ve `SidebarLayout` ortak prop'ları. */
|
|
1784
|
+
interface SidebarBaseProps extends SkeletonableProps {
|
|
1785
|
+
data: SidebarItem[];
|
|
1786
|
+
open: boolean;
|
|
1787
|
+
/** Kapatma isteği: karartma, kapatma düğmesi, kenara kaydırma, Android geri, öğe seçimi. */
|
|
1788
|
+
onOpenChange: (open: boolean) => void;
|
|
1789
|
+
/** Aktif öğeyi bulmak için mevcut yol (React Navigation'da rota adı / yolu). */
|
|
1790
|
+
currentPath?: string;
|
|
1791
|
+
/** Aktif öğe anahtarı — `currentPath`'i ezer. */
|
|
1792
|
+
activeKey?: string;
|
|
1793
|
+
/** Yol taşıyan yaprak seçilince (kapanmadan önce). Yönlendiriciye burada gidin. */
|
|
1794
|
+
onNavigate?: (route: string, item: SidebarItem) => void;
|
|
1795
|
+
/** Herhangi bir yaprak seçilince (yolu olmasa da). */
|
|
1796
|
+
onSelect?: (item: SidebarItem) => void;
|
|
1797
|
+
/** Panelin üstü (ör. Avatar + "Merhaba, Deniz"). Fonksiyon verilirse bant renklerini alır. */
|
|
1798
|
+
header?: React__default.ReactNode | ((ink: SidebarHeaderInk) => React__default.ReactNode);
|
|
1799
|
+
/** Başlık bandı rol renginde dolgulu (Amazon çekmecesi). */
|
|
1800
|
+
emphasizedHeader?: boolean;
|
|
1801
|
+
/** Panelin altında sabit bölüm (ör. Çıkış yap). */
|
|
1802
|
+
footer?: React__default.ReactNode;
|
|
1803
|
+
/** Varsayılan: `left`. */
|
|
1804
|
+
position?: "left" | "right";
|
|
1805
|
+
/** Menü satırları açılışta (ve alt seviyeye inince) küçük gecikmelerle sırayla gelir. Varsayılan: `false`. */
|
|
1806
|
+
staggerItems?: boolean;
|
|
1807
|
+
/** Aktif öğe rengi. Varsayılan: `primary`. */
|
|
1808
|
+
color?: ColorRole;
|
|
1809
|
+
/** Kök seviyesine dönen satırın etiketi. Varsayılan: "Ana Menü". */
|
|
1810
|
+
rootLabel?: string;
|
|
1811
|
+
/** Üst seviyenin yolu varsa başlığın yanındaki bağlantı. Varsayılan: "Tümünü gör". */
|
|
1812
|
+
seeAllLabel?: string;
|
|
1813
|
+
/** Gezinme bölgesinin erişilebilir adı. Varsayılan: "Ana menü". */
|
|
1814
|
+
accessibilityLabel?: string;
|
|
1815
|
+
/**
|
|
1816
|
+
* Üst / alt güvenli alan payı. Varsayılan: `ThemeProvider insets`; o da yoksa
|
|
1817
|
+
* platform tahmini (iOS üst 54 / alt 28, Android durum çubuğu). `Sidebar` tam
|
|
1818
|
+
* ekran Modal'dır — uygulamanın SafeAreaView'u içine işlemez.
|
|
1819
|
+
*/
|
|
1820
|
+
topInset?: number;
|
|
1821
|
+
bottomInset?: number;
|
|
1822
|
+
style?: StyleProp<ViewStyle>;
|
|
1823
|
+
}
|
|
1824
|
+
interface SidebarProps extends SidebarBaseProps {
|
|
1825
|
+
/** Açılış / kapanış animasyonu. Varsayılan: `slide`. */
|
|
1826
|
+
animation?: SidebarAnimation;
|
|
1827
|
+
}
|
|
1828
|
+
interface SidebarLayoutProps extends SidebarBaseProps {
|
|
1829
|
+
/** Varsayılan: `push`. */
|
|
1830
|
+
animation?: SidebarLayoutAnimation;
|
|
1831
|
+
/** Ekranın kendisi (AppBar + içerik). */
|
|
1832
|
+
children: React__default.ReactNode;
|
|
1833
|
+
}
|
|
1834
|
+
|
|
1835
|
+
/**
|
|
1836
|
+
* Kenardan açılan gezinme çekmecesi (Material 3 Navigation Drawer, Amazon
|
|
1837
|
+
* menüsü): başlık bandı, bölüm başlıkları, aktif öğe, alt seviyelere inen
|
|
1838
|
+
* satırlar. Ekranın üstünde tam ekran katman (Modal). Arkadaki ekranı da
|
|
1839
|
+
* hareket ettiren açılışlar (push / reveal / scaleDown) için `SidebarLayout`.
|
|
1840
|
+
*/
|
|
1841
|
+
declare function Sidebar(props: Readonly<SidebarProps>): React__default.JSX.Element;
|
|
1842
|
+
|
|
1843
|
+
/**
|
|
1844
|
+
* Ekranı saran çekmece düzeni — açılırken arkadaki ekran da hareket eder:
|
|
1845
|
+
* `push` (çekmece ekranı iter), `reveal` (ekran kayarak alttaki menüyü açar),
|
|
1846
|
+
* `scaleDown` (ekran küçülüp yuvarlak köşeli karta dönüşerek çekilir).
|
|
1847
|
+
* Menü içeriği ve prop'lar `Sidebar` ile aynı; yalnız ekran `children` olarak verilir.
|
|
1848
|
+
*/
|
|
1849
|
+
declare function SidebarLayout(props: Readonly<SidebarLayoutProps>): React__default.JSX.Element;
|
|
1850
|
+
|
|
1851
|
+
/** Web `TreeNode` ile aynı şekil. */
|
|
1852
|
+
interface TreeNode {
|
|
1853
|
+
/** Ağaç genelinde benzersiz anahtar. */
|
|
1854
|
+
key: string;
|
|
1855
|
+
title: React__default.ReactNode;
|
|
1856
|
+
children?: TreeNode[];
|
|
1857
|
+
/** Başlığın solunda ikon (klasör, dosya…). */
|
|
1858
|
+
icon?: React__default.ReactNode;
|
|
1859
|
+
/** Seçilemez, işaretlenemez, açılabilir. */
|
|
1860
|
+
disabled?: boolean;
|
|
1861
|
+
/** Yalnız onay kutusu kapalı. */
|
|
1862
|
+
disableCheckbox?: boolean;
|
|
1863
|
+
/** `false`: bu düğüm seçilemez (dokunma yalnız açar/işaretler). */
|
|
1864
|
+
selectable?: boolean;
|
|
1865
|
+
/** `false`: bu düğümde onay kutusu yok. */
|
|
1866
|
+
checkable?: boolean;
|
|
1867
|
+
/**
|
|
1868
|
+
* Yaprak mı. `loadData` kullanırken çocuğu olmayan düğümler "henüz
|
|
1869
|
+
* yüklenmedi" sayılır; gerçek yaprakları `isLeaf: true` ile işaretleyin.
|
|
1870
|
+
*/
|
|
1871
|
+
isLeaf?: boolean;
|
|
1872
|
+
/** Arama için düz metin — `title` metin değilse verin. */
|
|
1873
|
+
searchText?: string;
|
|
1874
|
+
}
|
|
1875
|
+
interface TreeCheckInfo {
|
|
1876
|
+
/** Kesin işaretli anahtarlar (yayılım dahil). */
|
|
1877
|
+
checked: string[];
|
|
1878
|
+
/** Kısmen işaretli (bazı çocukları işaretli) üst düğümler. */
|
|
1879
|
+
halfChecked: string[];
|
|
1880
|
+
}
|
|
1881
|
+
interface TreeProps extends SkeletonableProps {
|
|
1882
|
+
treeData: TreeNode[];
|
|
1883
|
+
/** Açık düğümler. Verilirse kontrollü. */
|
|
1884
|
+
expandedKeys?: string[];
|
|
1885
|
+
defaultExpandedKeys?: string[];
|
|
1886
|
+
/** İlk açılışta tüm düğümler açık. */
|
|
1887
|
+
defaultExpandAll?: boolean;
|
|
1888
|
+
onExpand?: (expandedKeys: string[], info: {
|
|
1889
|
+
node: TreeNode;
|
|
1890
|
+
expanded: boolean;
|
|
1891
|
+
}) => void;
|
|
1892
|
+
/** Varsayılan: `true`. */
|
|
1893
|
+
selectable?: boolean;
|
|
1894
|
+
/** Birden çok düğüm seçilebilir (dokunma seçimi aç/kapar). */
|
|
1895
|
+
multiple?: boolean;
|
|
1896
|
+
selectedKeys?: string[];
|
|
1897
|
+
defaultSelectedKeys?: string[];
|
|
1898
|
+
onSelect?: (selectedKeys: string[], info: {
|
|
1899
|
+
node: TreeNode;
|
|
1900
|
+
selected: boolean;
|
|
1901
|
+
}) => void;
|
|
1902
|
+
/** Onay kutuları. */
|
|
1903
|
+
checkable?: boolean;
|
|
1904
|
+
/** İşaretli düğümler; üst/alt yayılımı ve kısmi durum hesaplanır. */
|
|
1905
|
+
checkedKeys?: string[];
|
|
1906
|
+
defaultCheckedKeys?: string[];
|
|
1907
|
+
/** Üst ↔ alt bağlantısı yok: her düğüm bağımsız işaretlenir. */
|
|
1908
|
+
checkStrictly?: boolean;
|
|
1909
|
+
onCheck?: (checkedKeys: string[], info: {
|
|
1910
|
+
node: TreeNode;
|
|
1911
|
+
checked: boolean;
|
|
1912
|
+
halfCheckedKeys: string[];
|
|
1913
|
+
}) => void;
|
|
1914
|
+
/** Açılınca çocukları getiren fonksiyon (tembel yükleme); çözülene kadar okta gösterge. `treeData`yı siz güncellersiniz. */
|
|
1915
|
+
loadData?: (node: TreeNode) => Promise<void>;
|
|
1916
|
+
/** Başlığa dokunma ne yapsın: yalnız seçim (varsayılan) ya da seçim + aç/kapa (dosya gezgini). */
|
|
1917
|
+
expandAction?: false | "click";
|
|
1918
|
+
/** Girinti kılavuz çizgileri. */
|
|
1919
|
+
showLine?: boolean;
|
|
1920
|
+
/** Bu metni (Türkçe harf duyarsız) içeren düğümler ve ataları gösterilir, eşleşme vurgulanır, atalar açılır. */
|
|
1921
|
+
searchValue?: string;
|
|
1922
|
+
/** Başlığı özel çizmek için. */
|
|
1923
|
+
titleRender?: (node: TreeNode) => React__default.ReactNode;
|
|
1924
|
+
/** Arama bir şey bulamazsa. Varsayılan: "Sonuç bulunamadı". */
|
|
1925
|
+
notFoundContent?: React__default.ReactNode;
|
|
1926
|
+
/** Seçim / işaret rengi. Varsayılan: `primary`. */
|
|
1927
|
+
color?: ColorRole;
|
|
1928
|
+
accessibilityLabel?: string;
|
|
1929
|
+
style?: StyleProp<ViewStyle>;
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
/**
|
|
1933
|
+
* Hiyerarşik veri görünümü: girintili satırlar, aç/kapa, seçim (tek / çok),
|
|
1934
|
+
* üst ↔ alt yayılımlı onay kutuları (kısmi durum), tembel yükleme, arama
|
|
1935
|
+
* vurgusu, kılavuz çizgileri. Mantık web Tree ile aynı (`treeUtils`).
|
|
1936
|
+
*/
|
|
1937
|
+
declare function Tree(props: Readonly<TreeProps>): React__default.JSX.Element;
|
|
1938
|
+
|
|
1939
|
+
/**
|
|
1940
|
+
* İşaretli modda değere hangi düğümler yazılsın:
|
|
1941
|
+
* - `child` (varsayılan): yalnız işaretli yapraklar.
|
|
1942
|
+
* - `parent`: tamamı işaretli bir dal tek anahtar (üst düğüm) olarak.
|
|
1943
|
+
* - `all`: işaretli her düğüm.
|
|
1944
|
+
*/
|
|
1945
|
+
type TreeSelectCheckedStrategy = "child" | "parent" | "all";
|
|
1946
|
+
|
|
1947
|
+
interface TreeSelectBaseProps extends SkeletonableProps {
|
|
1948
|
+
treeData: TreeNode[];
|
|
1949
|
+
placeholder?: string;
|
|
1950
|
+
/** Panelin üstünde arama; yazınca düz sonuç listesi (yoluyla), Türkçe harf duyarsız. */
|
|
1951
|
+
showSearch?: boolean;
|
|
1952
|
+
onSearch?: (text: string) => void;
|
|
1953
|
+
allowClear?: boolean;
|
|
1954
|
+
/** Varsayılan: `"Temizle"`. */
|
|
1955
|
+
clearLabel?: string;
|
|
1956
|
+
/** Varsayılan: `"Sonuç bulunamadı"`. */
|
|
1957
|
+
notFoundContent?: React__default.ReactNode;
|
|
1958
|
+
/**
|
|
1959
|
+
* Tembel yükleme: çocukları henüz yüklenmemiş (`children` tanımsız, `isLeaf`
|
|
1960
|
+
* değil) dala inilince çağrılır; çözülene kadar satırda gösterge. `treeData`yı
|
|
1961
|
+
* siz güncellersiniz. Arama yalnız yüklenmiş düğümlerde çalışır.
|
|
1962
|
+
*/
|
|
1963
|
+
loadData?: (node: TreeNode) => Promise<void>;
|
|
1964
|
+
/** Kök seviyesinin yol gösterimindeki adı. Varsayılan: `"Tümü"`. */
|
|
1965
|
+
rootLabel?: string;
|
|
1966
|
+
disabled?: boolean;
|
|
1967
|
+
/** Alan Input ölçeğinde (md 44). */
|
|
1968
|
+
size?: Size;
|
|
1969
|
+
variant?: InputVariant;
|
|
1970
|
+
shape?: InputShape;
|
|
1971
|
+
/** Doğrulama durumu ya da vurgu rengi — Input'la aynı kural. */
|
|
1972
|
+
color?: ColorRole;
|
|
1973
|
+
/** Panel başlığı. Varsayılan: Field etiketi, yoksa `placeholder`. */
|
|
1974
|
+
title?: React__default.ReactNode;
|
|
1975
|
+
open?: boolean;
|
|
1976
|
+
onOpenChange?: (open: boolean) => void;
|
|
1977
|
+
accessibilityLabel?: string;
|
|
1978
|
+
accessibilityHint?: string;
|
|
1979
|
+
style?: StyleProp<ViewStyle>;
|
|
1980
|
+
}
|
|
1981
|
+
interface TreeSelectSingleProps extends TreeSelectBaseProps {
|
|
1982
|
+
mode?: undefined;
|
|
1983
|
+
value?: string | null;
|
|
1984
|
+
defaultValue?: string | null;
|
|
1985
|
+
onChange?: (value: string | null, node: TreeNode | null) => void;
|
|
1986
|
+
}
|
|
1987
|
+
interface TreeSelectMultipleProps extends TreeSelectBaseProps {
|
|
1988
|
+
/** `multiple`: düğümler bağımsız seçilir. `checkable`: onay kutuları, üst ↔ alt yayılım. Panel "Tamam" ile kapanır. */
|
|
1989
|
+
mode: "multiple" | "checkable";
|
|
1990
|
+
value?: string[];
|
|
1991
|
+
defaultValue?: string[];
|
|
1992
|
+
onChange?: (value: string[], nodes: TreeNode[]) => void;
|
|
1993
|
+
/** `checkable`da değere yazılacak düğümler. Varsayılan: `"child"`. */
|
|
1994
|
+
showCheckedStrategy?: TreeSelectCheckedStrategy;
|
|
1995
|
+
/** `checkable`da yayılımı kapatır: her düğüm bağımsız işaretlenir. */
|
|
1996
|
+
treeCheckStrictly?: boolean;
|
|
1997
|
+
/** En fazla bu kadar etiket, kalanı "+N". */
|
|
1998
|
+
maxTagCount?: number;
|
|
1999
|
+
}
|
|
2000
|
+
type TreeSelectProps = TreeSelectSingleProps | TreeSelectMultipleProps;
|
|
2001
|
+
/**
|
|
2002
|
+
* Ağaçtan değer seçme alanı: kapalıyken Input kutusu; dokununca BottomSheet'te
|
|
2003
|
+
* aşağı inen menü (kullanıcı kararı) — yol gösterimi, çocuklu satır içeri iner,
|
|
2004
|
+
* dalın kendisi seviyenin başındaki "(tümü)" satırıyla seçilir. Arama düz
|
|
2005
|
+
* sonuç listesi (yoluyla). Tekli seçim paneli kapatır; çoklu / onay kutulu
|
|
2006
|
+
* "Tamam" ile kapanır. Mantık web TreeSelect ile aynı (`treeUtils`).
|
|
2007
|
+
*/
|
|
2008
|
+
declare function TreeSelect(props: TreeSelectProps): React__default.JSX.Element;
|
|
2009
|
+
|
|
2010
|
+
interface InputNumberProps extends SkeletonableProps {
|
|
2011
|
+
/** Değer; boş alan `null`. */
|
|
2012
|
+
value?: number | null;
|
|
2013
|
+
defaultValue?: number | null;
|
|
2014
|
+
/**
|
|
2015
|
+
* Her geçerli değişiklikte (yazarken, adımda, temizlenince `null`). Yazarken
|
|
2016
|
+
* min/max dışına çıkan değer de bildirilir; alandan çıkınca sınıra çekilip
|
|
2017
|
+
* yeniden bildirilir.
|
|
2018
|
+
*/
|
|
2019
|
+
onChange?: (value: number | null) => void;
|
|
2020
|
+
min?: number;
|
|
2021
|
+
max?: number;
|
|
2022
|
+
/** Artır/azalt adımı. Varsayılan: `1`. */
|
|
2023
|
+
step?: number;
|
|
2024
|
+
/** Sabit ondalık basamak (ör. para için 2). Verilmezse yazılan kadar. */
|
|
2025
|
+
precision?: number;
|
|
2026
|
+
/** Binlik ayıracı (1.234.567). Varsayılan: `true`. */
|
|
2027
|
+
grouping?: boolean;
|
|
2028
|
+
/** Biçimlendirme yereli. Varsayılan: `"tr-TR"` (virgül ondalık, nokta binlik). */
|
|
2029
|
+
locale?: string;
|
|
2030
|
+
/** Solda sabit metin/ikon, ör. `"₺"`. */
|
|
2031
|
+
prefix?: React__default.ReactNode;
|
|
2032
|
+
/** Sağda sabit metin/ikon, ör. `"%"`, `"kg"`. */
|
|
2033
|
+
suffix?: React__default.ReactNode;
|
|
2034
|
+
/** −/+ düğmeleri (iki yanda; basılı tutunca tekrarlar). Varsayılan: `true`. */
|
|
2035
|
+
controls?: boolean;
|
|
2036
|
+
/** Düğmelerin erişilebilir adları. Varsayılan: "Azalt" / "Artır". */
|
|
2037
|
+
incrementLabel?: string;
|
|
2038
|
+
decrementLabel?: string;
|
|
2039
|
+
placeholder?: string;
|
|
2040
|
+
disabled?: boolean;
|
|
2041
|
+
readOnly?: boolean;
|
|
2042
|
+
/** Alan Input ölçeğinde (md 44). */
|
|
2043
|
+
size?: Size;
|
|
2044
|
+
variant?: InputVariant;
|
|
2045
|
+
shape?: InputShape;
|
|
2046
|
+
/** Doğrulama durumu ya da vurgu rengi — Input'la aynı kural. */
|
|
2047
|
+
color?: ColorRole;
|
|
2048
|
+
onFocus?: () => void;
|
|
2049
|
+
onBlur?: () => void;
|
|
2050
|
+
/** Klavyenin "bitti" tuşu (değer sınıra çekildikten sonra). */
|
|
2051
|
+
onPressEnter?: (value: number | null) => void;
|
|
2052
|
+
accessibilityLabel?: string;
|
|
2053
|
+
accessibilityHint?: string;
|
|
2054
|
+
style?: StyleProp<ViewStyle>;
|
|
2055
|
+
}
|
|
2056
|
+
/**
|
|
2057
|
+
* Sayı alanı: Türkçe biçim (1.234,56), min/max, adım, sabit ondalık, ön/son
|
|
2058
|
+
* ek. −/+ iki yanda (sepetteki adet gibi), basılı tutunca tekrarlar; VoiceOver /
|
|
2059
|
+
* TalkBack'te yukarı/aşağı kaydırma artırır/azaltır. Uygun sayı klavyesi kendiliğinden.
|
|
2060
|
+
*/
|
|
2061
|
+
declare function InputNumber({ value, defaultValue, onChange, min, max, step, precision, grouping, locale, prefix, suffix, controls, incrementLabel, decrementLabel, placeholder, disabled: ownDisabled, readOnly, size, variant, shape, color, onFocus, onBlur, onPressEnter, accessibilityLabel: ownLabel, accessibilityHint: ownHint, skeleton: ownSkeleton, style, }: Readonly<InputNumberProps>): React__default.JSX.Element;
|
|
2062
|
+
|
|
2063
|
+
/**
|
|
2064
|
+
* Upload'ın saf mantığı — web `upload/utils` ile aynı kurallar, ama tarayıcı
|
|
2065
|
+
* `File` yerine seçicinin döndürdüğü düz nesne (`uri`, `name`, `size`,
|
|
2066
|
+
* `mimeType`; expo-image-picker / expo-document-picker / react-native-image-picker
|
|
2067
|
+
* hepsi bunları verir).
|
|
2068
|
+
*/
|
|
2069
|
+
interface UploadPickedFile {
|
|
2070
|
+
uri: string;
|
|
2071
|
+
/** Verilmezse `uri`nin son parçası. */
|
|
2072
|
+
name?: string;
|
|
2073
|
+
/** Bayt. Bilinmiyorsa boyut sınırı denetlenmez. */
|
|
2074
|
+
size?: number;
|
|
2075
|
+
mimeType?: string;
|
|
2076
|
+
}
|
|
2077
|
+
type UploadRejectReason = "invalid-type" | "size-exceeded" | "max-exceeded";
|
|
2078
|
+
|
|
2079
|
+
type UploadFileStatus = "uploading" | "done" | "error";
|
|
2080
|
+
interface UploadFile {
|
|
2081
|
+
uid: string;
|
|
2082
|
+
uri: string;
|
|
2083
|
+
name: string;
|
|
2084
|
+
size?: number;
|
|
2085
|
+
mimeType?: string;
|
|
2086
|
+
status: UploadFileStatus;
|
|
2087
|
+
/** 0–100 (`uploading`). */
|
|
2088
|
+
progress?: number;
|
|
2089
|
+
/** `error` durumunda gösterilen açıklama. */
|
|
2090
|
+
error?: string;
|
|
2091
|
+
}
|
|
2092
|
+
interface UploadPickContext {
|
|
2093
|
+
/** `max` 1'den büyükse çoklu seçim açılsın. */
|
|
2094
|
+
multiple: boolean;
|
|
2095
|
+
/** Daha kaç dosya eklenebilir. */
|
|
2096
|
+
remaining: number;
|
|
2097
|
+
/** `fileType` olduğu gibi (seçiciye süzgeç olarak verilebilir). */
|
|
2098
|
+
accept?: string;
|
|
2099
|
+
}
|
|
2100
|
+
/** Web ile aynı adlar: `list` satırlar, `review` kare/daire önizleme ızgarası. */
|
|
2101
|
+
type UploadListType = "list" | "review";
|
|
2102
|
+
type UploadReviewType = "square" | "circle";
|
|
2103
|
+
interface UploadProps extends SkeletonableProps {
|
|
2104
|
+
/**
|
|
2105
|
+
* Dosya seçme işi — kütüphane hiçbir native seçiciye bağlı değil. expo-image-picker,
|
|
2106
|
+
* expo-document-picker ya da react-native-image-picker ile doldurun; iptalde `null`.
|
|
2107
|
+
* Kamera / galeri seçimi için burada ActionSheet açabilirsiniz.
|
|
2108
|
+
*/
|
|
2109
|
+
onPick: (ctx: UploadPickContext) => Promise<UploadPickedFile[] | null | undefined>;
|
|
2110
|
+
/**
|
|
2111
|
+
* Gerçek yükleme (isteğe bağlı). Verilirse dosya `uploading` başlar, `report(0–100)`
|
|
2112
|
+
* ilerlemeyi gösterir; çözülünce `done`, reddedilince `error` (tekrar dene düğmesi).
|
|
2113
|
+
* Verilmezse dosyalar hemen `done` (yükleme formla birlikte yapılır).
|
|
2114
|
+
*/
|
|
2115
|
+
onUpload?: (file: UploadFile, report: (progress: number) => void) => Promise<void>;
|
|
2116
|
+
value?: UploadFile[];
|
|
2117
|
+
defaultValue?: UploadFile[];
|
|
2118
|
+
/** Liste her değiştiğinde (ekleme, ilerleme, bitiş, silme). */
|
|
2119
|
+
onChange?: (files: UploadFile[]) => void;
|
|
2120
|
+
/** Reddedilen her dosya için (tür / boyut / sayı). Varsayılan mesaj yine alanın altında görünür. */
|
|
2121
|
+
onReject?: (reason: UploadRejectReason, file: UploadPickedFile) => void;
|
|
2122
|
+
/** Kabul edilen türler (web `accept` sözdizimi): "image/*", "image/png, .pdf". */
|
|
2123
|
+
fileType?: string;
|
|
2124
|
+
/** Bayt. Varsayılan: 5 MB. Boyutu bilinmeyen dosyada denetlenmez. */
|
|
2125
|
+
fileSize?: number;
|
|
2126
|
+
/** En fazla dosya. Varsayılan: 5. */
|
|
2127
|
+
max?: number;
|
|
2128
|
+
/** Varsayılan: `list`. */
|
|
2129
|
+
listType?: UploadListType;
|
|
2130
|
+
/** `review` döşemesi. Varsayılan: `square` (`circle`: profil fotoğrafı). */
|
|
2131
|
+
reviewType?: UploadReviewType;
|
|
2132
|
+
/** `list` düğme metni. Varsayılan: "Dosya seç". */
|
|
2133
|
+
triggerLabel?: string;
|
|
2134
|
+
/** Düğmenin altında kısa açıklama (ör. "PNG, JPG · en fazla 5 MB"). */
|
|
2135
|
+
hint?: React__default.ReactNode;
|
|
2136
|
+
disabled?: boolean;
|
|
2137
|
+
accessibilityLabel?: string;
|
|
2138
|
+
style?: StyleProp<ViewStyle>;
|
|
2139
|
+
}
|
|
2140
|
+
/**
|
|
2141
|
+
* Dosya / görsel ekleme alanı. Seçme işini uygulama yapar (`onPick` — kütüphane
|
|
2142
|
+
* native bağımlılık taşımaz); Upload doğrular (tür, boyut, sayı), listeler,
|
|
2143
|
+
* önizler (görsel → tam ekran ImageViewer), isteğe bağlı gerçek yüklemenin
|
|
2144
|
+
* (`onUpload`) ilerlemesini ve hatasını gösterir.
|
|
2145
|
+
*/
|
|
2146
|
+
declare function Upload(props: Readonly<UploadProps>): React__default.JSX.Element;
|
|
2147
|
+
|
|
2148
|
+
/** `click`: dokununca açılır (varsayılan). `longPress`: basılı tutunca — web'deki `hover`ın (bilgi balonu) dokunmatik karşılığı. */
|
|
2149
|
+
type PopoverTrigger = "click" | "longPress";
|
|
2150
|
+
interface PopoverProps extends SkeletonableProps {
|
|
2151
|
+
/** Panelin başlığı — erişilebilir ad da budur. */
|
|
2152
|
+
title?: React__default.ReactNode;
|
|
2153
|
+
/** Panel içeriği; etkileşimli olabilir. Fonksiyon verilirse `close` alır (ör. "Kopyala"dan sonra kapat). */
|
|
2154
|
+
content: React__default.ReactNode | ((close: () => void) => React__default.ReactNode);
|
|
2155
|
+
/** Tetikleyici: TEK bir öğe (genelde Button) — `onPress` / `onLongPress`ı korunarak bağlanır. */
|
|
2156
|
+
children: React__default.ReactElement;
|
|
2157
|
+
/** Varsayılan: `click`. */
|
|
2158
|
+
trigger?: PopoverTrigger;
|
|
2159
|
+
/** Varsayılan: `"top"`; sığmazsa karşı yöne döner, ekrana kıstırılır. */
|
|
2160
|
+
placement?: Placement;
|
|
2161
|
+
/** Tetikleyiciyi gösteren ok. Varsayılan: `true`. */
|
|
2162
|
+
arrow?: boolean;
|
|
2163
|
+
open?: boolean;
|
|
2164
|
+
defaultOpen?: boolean;
|
|
2165
|
+
onOpenChange?: (open: boolean) => void;
|
|
2166
|
+
/** Panelin en fazla genişliği (pt). Varsayılan: 300. */
|
|
2167
|
+
maxWidth?: number;
|
|
2168
|
+
/** Başlık yoksa panelin erişilebilir adı. */
|
|
2169
|
+
accessibilityLabel?: string;
|
|
2170
|
+
/** `alertdialog`: onay isteyen panel. Varsayılan: `dialog`. */
|
|
2171
|
+
role?: "dialog" | "alertdialog";
|
|
2172
|
+
style?: StyleProp<ViewStyle>;
|
|
2173
|
+
}
|
|
2174
|
+
/**
|
|
2175
|
+
* Bir öğeye bağlı yüzen panel: başlık + (etkileşimli olabilen) içerik + ok.
|
|
2176
|
+
* Tetikleyiciye dokununca (ya da basılı tutunca) açılır; dışarı dokunma, Android
|
|
2177
|
+
* geri ve VoiceOver "geri" kapatır. Yer yoksa karşı yöne döner, ekrana kıstırılır
|
|
2178
|
+
* ama tetikleyiciden kopmaz (web ile aynı `computePanelPosition`).
|
|
2179
|
+
*/
|
|
2180
|
+
declare function Popover({ title, content, children, trigger, placement, arrow, open: openProp, defaultOpen, onOpenChange, maxWidth, accessibilityLabel, role, skeleton, style }: Readonly<PopoverProps>): React__default.JSX.Element;
|
|
2181
|
+
|
|
2182
|
+
type FloatButtonShape = "circle" | "square";
|
|
2183
|
+
type FloatButtonPlacement = "bottom-right" | "bottom-left" | "top-right" | "top-left";
|
|
2184
|
+
interface FloatButtonBadge {
|
|
2185
|
+
count?: number | string;
|
|
2186
|
+
dot?: boolean;
|
|
2187
|
+
color?: ColorRole;
|
|
2188
|
+
}
|
|
2189
|
+
interface FloatButtonIconState {
|
|
2190
|
+
/** İkon rengi (RN'de `currentColor` yok). */
|
|
2191
|
+
color: string;
|
|
2192
|
+
size: number;
|
|
2193
|
+
}
|
|
2194
|
+
interface FloatButtonProps extends SkeletonableProps {
|
|
2195
|
+
icon?: React__default.ReactNode | ((state: FloatButtonIconState) => React__default.ReactNode);
|
|
2196
|
+
/**
|
|
2197
|
+
* Genişletilmiş düğme (Material 3 extended FAB): ikonun yanında metin, hap şeklinde.
|
|
2198
|
+
* Liste kaydırılınca daraltmak için `label`ı kaldırın. Native'e özgü.
|
|
2199
|
+
*/
|
|
2200
|
+
label?: string;
|
|
2201
|
+
/** İkonun altında kısa metin (yalnız `square`); verilirse erişilebilir ad da odur. */
|
|
2202
|
+
description?: string;
|
|
2203
|
+
/** Grup menüsünde düğmenin yanında görünen etiket. Tek başına düğmede yalnız erişilebilir ad. */
|
|
2204
|
+
tooltip?: string;
|
|
2205
|
+
/** Verilmezse yüzey rengi (nötr); verilirse rolün dolu rengi (ör. `primary` = ana eylem). */
|
|
2206
|
+
color?: ColorRole;
|
|
2207
|
+
/** Varsayılan: `circle`. Grupta grubun şekli geçerli. */
|
|
2208
|
+
shape?: FloatButtonShape;
|
|
2209
|
+
/** Sayı ya da nokta rozeti (okunmamış mesaj gibi). */
|
|
2210
|
+
badge?: FloatButtonBadge;
|
|
2211
|
+
onPress?: () => void;
|
|
2212
|
+
/** Tek başına kullanımda kapsayıcının köşesi. Varsayılan: `bottom-right`. Grupta yok sayılır. */
|
|
2213
|
+
placement?: FloatButtonPlacement;
|
|
2214
|
+
/**
|
|
2215
|
+
* `false`: köşeye yapışmaz, akışta durur (ör. kendi düzeninizde). Varsayılan: `true` —
|
|
2216
|
+
* en yakın kapsayıcının (genelde ekranın) köşesine `position: absolute`.
|
|
2217
|
+
*/
|
|
2218
|
+
floating?: boolean;
|
|
2219
|
+
/** Kenardan uzaklık (güvenli alan payının üstüne). Varsayılan: 16. */
|
|
2220
|
+
offset?: number;
|
|
2221
|
+
disabled?: boolean;
|
|
2222
|
+
accessibilityLabel?: string;
|
|
2223
|
+
style?: StyleProp<ViewStyle>;
|
|
2224
|
+
}
|
|
2225
|
+
/**
|
|
2226
|
+
* Yüzen eylem düğmesi (Material 3 FAB): ekranın ana eylemi, kapsayıcının
|
|
2227
|
+
* köşesine yapışık. Daire / kare (alt metinli) / genişletilmiş (`label`),
|
|
2228
|
+
* rozet, güvenli alan payı. Grupta (`FloatButtonGroup`) alt alta ya da menü.
|
|
2229
|
+
*/
|
|
2230
|
+
declare function FloatButton({ icon, label, description, tooltip, color, shape: ownShape, badge, onPress, placement, floating, offset, disabled, accessibilityLabel, skeleton, style }: Readonly<FloatButtonProps>): React__default.JSX.Element;
|
|
2231
|
+
interface FloatButtonGroupBaseProps extends SkeletonableProps {
|
|
2232
|
+
/** Varsayılan: `circle`. */
|
|
2233
|
+
shape?: FloatButtonShape;
|
|
2234
|
+
/** Varsayılan: `bottom-right`. */
|
|
2235
|
+
placement?: FloatButtonPlacement;
|
|
2236
|
+
/** Bkz. `FloatButton.floating`. Varsayılan: `true`. */
|
|
2237
|
+
floating?: boolean;
|
|
2238
|
+
offset?: number;
|
|
2239
|
+
children: React__default.ReactNode;
|
|
2240
|
+
style?: StyleProp<ViewStyle>;
|
|
2241
|
+
}
|
|
2242
|
+
interface FloatButtonGroupStaticProps extends FloatButtonGroupBaseProps {
|
|
2243
|
+
/** Verilmezse düğmeler hep görünür, alt alta. */
|
|
2244
|
+
trigger?: undefined;
|
|
2245
|
+
}
|
|
2246
|
+
interface FloatButtonGroupMenuProps extends FloatButtonGroupBaseProps {
|
|
2247
|
+
/** Ana düğme menüyü açar / kapatır; düğmeler onun üstünde (ya da altında) açılır. Native'de yalnız `click`. */
|
|
2248
|
+
trigger: "click";
|
|
2249
|
+
open?: boolean;
|
|
2250
|
+
defaultOpen?: boolean;
|
|
2251
|
+
onOpenChange?: (open: boolean) => void;
|
|
2252
|
+
/** Ana düğmenin ikonu (kapalıyken). Açıkken × (döner). */
|
|
2253
|
+
icon?: Exclude<FloatButtonProps["icon"], undefined>;
|
|
2254
|
+
/** Ana düğmenin erişilebilir adı. Varsayılan: "Hızlı işlemler". */
|
|
2255
|
+
accessibilityLabel?: string;
|
|
2256
|
+
color?: ColorRole;
|
|
2257
|
+
}
|
|
2258
|
+
type FloatButtonGroupProps = FloatButtonGroupStaticProps | FloatButtonGroupMenuProps;
|
|
2259
|
+
/**
|
|
2260
|
+
* Birden çok yüzen düğme. `trigger` yoksa alt alta hep görünür; `trigger="click"` ana düğme menüyü (speed dial) açar —
|
|
2261
|
+
* öğeler etiketleriyle (`tooltip`) sırayla çıkar, öğeye dokununca kapanır.
|
|
2262
|
+
*/
|
|
2263
|
+
declare function FloatButtonGroup(props: FloatButtonGroupProps): React__default.JSX.Element;
|
|
2264
|
+
interface BackTopProps extends Omit<FloatButtonProps, "onPress" | "label" | "description"> {
|
|
2265
|
+
/** Sayfanın dikey kaydırma değeri (`useAppBarScroll` ya da kendi `Animated.Value`ınız). */
|
|
2266
|
+
scrollY: Animated.Value;
|
|
2267
|
+
/** Bu kadar kaydırılınca görünür (pt). Varsayılan: 400. */
|
|
2268
|
+
visibilityHeight?: number;
|
|
2269
|
+
/** Başa dönme işi sizde: `listRef.current?.scrollToOffset({ offset: 0, animated: true })`. */
|
|
2270
|
+
onPress: () => void;
|
|
2271
|
+
}
|
|
2272
|
+
/** Uzun sayfada başa dön düğmesi: `visibilityHeight` kadar kaydırılınca belirir. */
|
|
2273
|
+
declare function BackTop({ scrollY, visibilityHeight, onPress, accessibilityLabel, ...rest }: Readonly<BackTopProps>): React__default.JSX.Element;
|
|
2274
|
+
|
|
2275
|
+
/** Web `TimelineItem` ile aynı şekil. */
|
|
2276
|
+
interface TimelineItem {
|
|
2277
|
+
/** Satır anahtarı. Verilmezse sıra numarası. */
|
|
2278
|
+
key?: React__default.Key;
|
|
2279
|
+
/** Kısa etiket — çoğunlukla zaman ("14:32", "24 Eyl"). `titlePlacement="opposite"` ile noktanın karşı tarafında. */
|
|
2280
|
+
title?: React__default.ReactNode;
|
|
2281
|
+
/** Olayın kendisi. */
|
|
2282
|
+
content: React__default.ReactNode;
|
|
2283
|
+
/** Nokta rengi. Varsayılan: `primary`. */
|
|
2284
|
+
color?: ColorRole;
|
|
2285
|
+
/** Nokta yerine ikon (en fazla 20pt). Fonksiyon verilirse nokta rengini alır. */
|
|
2286
|
+
icon?: React__default.ReactNode | ((color: string) => React__default.ReactNode);
|
|
2287
|
+
/** Süren adım: nokta yerine dönen gösterge, öncesindeki ray kesikli. */
|
|
2288
|
+
loading?: boolean;
|
|
2289
|
+
/** `mode="alternate"`de bu öğenin tarafını zorlar. */
|
|
2290
|
+
placement?: "start" | "end";
|
|
2291
|
+
}
|
|
2292
|
+
interface TimelineProps extends SkeletonableProps {
|
|
2293
|
+
items: TimelineItem[];
|
|
2294
|
+
/** `start` (varsayılan): nokta solda. `end`: sağda. `alternate`: sırayla iki tarafa — dar ekranda (`responsive`) `start`a düşer. */
|
|
2295
|
+
mode?: "start" | "end" | "alternate";
|
|
2296
|
+
/** `horizontal`: olaylar yan yana, sığmazsa yatay kayar. */
|
|
2297
|
+
orientation?: "vertical" | "horizontal";
|
|
2298
|
+
/** `outlined` (varsayılan): içi boş halka. `filled`: dolu nokta. */
|
|
2299
|
+
variant?: "outlined" | "filled";
|
|
2300
|
+
/** `inline` (varsayılan): başlık içeriğin üstünde. `opposite`: başlık noktanın karşı tarafında (solda zaman, sağda olay). */
|
|
2301
|
+
titlePlacement?: "inline" | "opposite";
|
|
2302
|
+
/** En yeni olay üstte. */
|
|
2303
|
+
reverse?: boolean;
|
|
2304
|
+
/** Sona (ters sırada başa) "sürüyor" öğesi ekler. `true` → "Devam ediyor…". */
|
|
2305
|
+
pending?: React__default.ReactNode;
|
|
2306
|
+
/** `alternate` bu genişliğin (pt) altında `start`a döner. `false` kapatır. Varsayılan: 480. */
|
|
2307
|
+
responsive?: number | false;
|
|
2308
|
+
/** Listenin erişilebilir adı. */
|
|
2309
|
+
accessibilityLabel?: string;
|
|
2310
|
+
style?: StyleProp<ViewStyle>;
|
|
2311
|
+
}
|
|
2312
|
+
|
|
2313
|
+
/**
|
|
2314
|
+
* Zaman sırasına dizilmiş olaylar (kargo takibi, hesap etkinliği, sürüm
|
|
2315
|
+
* geçmişi). Dikey (start / end / alternate, başlık içte ya da karşıda) ya da
|
|
2316
|
+
* yatay; ikonlu / dolu / boş nokta, süren adım (`pending`, `loading`). Mantık
|
|
2317
|
+
* web Timeline ile aynı (`timelineUtils`).
|
|
2318
|
+
*/
|
|
2319
|
+
declare function Timeline({ items, mode, orientation, variant, titlePlacement, reverse, pending, responsive, accessibilityLabel, skeleton, style }: Readonly<TimelineProps>): React__default.JSX.Element;
|
|
2320
|
+
|
|
2321
|
+
/** Masonry'nin saf mantığı — web `masonry/utils` ile aynı (kırılımlar native kapsayıcı genişliğine göre). */
|
|
2322
|
+
|
|
2323
|
+
/** Kırılımlar (pt) — native'de kapsayıcı genişliği: telefon dikey < 480 ≤ telefon yatay / küçük tablet < 768 ≤ tablet. */
|
|
2324
|
+
type MasonryBreakpoint = "base" | "sm" | "md" | "lg";
|
|
2325
|
+
type MasonryColumns = number | Partial<Record<MasonryBreakpoint, number>>;
|
|
2326
|
+
|
|
2327
|
+
interface MasonryItem {
|
|
2328
|
+
key: React__default.Key;
|
|
2329
|
+
children: React__default.ReactNode;
|
|
2330
|
+
}
|
|
2331
|
+
interface MasonryProps extends SkeletonableProps {
|
|
2332
|
+
items: MasonryItem[];
|
|
2333
|
+
/** Sütun sayısı; nesne ile kapsayıcı genişliğine göre (mobil önce). Varsayılan: `{ base: 2, sm: 3, md: 4 }`. */
|
|
2334
|
+
columns?: MasonryColumns;
|
|
2335
|
+
/** Öğeler arası boşluk: sm 8 / md 16 / lg 24 ya da pt. Varsayılan: `sm`. */
|
|
2336
|
+
gutter?: Size | number;
|
|
2337
|
+
/** Sonsuz kaydırma: pano sonuna yaklaşınca `onLoadMore`; yeni öğeleri `items`a siz eklersiniz. */
|
|
2338
|
+
infinite?: InfiniteScrollOptions;
|
|
2339
|
+
/** Panonun üstünde (kayan içerikte) başlık / filtre alanı. */
|
|
2340
|
+
header?: React__default.ReactNode;
|
|
2341
|
+
/** İskelette yer tutucu sayısı (veri yokken). Varsayılan: 8. */
|
|
2342
|
+
skeletonCount?: number;
|
|
2343
|
+
/** Yerleşim her değiştiğinde (öğe yüksekliği, sütun sayısı). */
|
|
2344
|
+
onLayoutChange?: (info: {
|
|
2345
|
+
columns: number;
|
|
2346
|
+
height: number;
|
|
2347
|
+
}) => void;
|
|
2348
|
+
accessibilityLabel?: string;
|
|
2349
|
+
/** Kayan kap (`flex: 1` varsayılan — ekranın kalanını doldurur). */
|
|
2350
|
+
style?: StyleProp<ViewStyle>;
|
|
2351
|
+
contentContainerStyle?: StyleProp<ViewStyle>;
|
|
2352
|
+
}
|
|
2353
|
+
/**
|
|
2354
|
+
* Farklı yükseklikteki kartları boşluksuz sütunlara dizen pano (Pinterest).
|
|
2355
|
+
* Her öğe o an en kısa sütuna yerleşir; okuma sırası öğe sırası kalır.
|
|
2356
|
+
* Kendi içinde kayar; `infinite` ile sona yaklaşınca sonraki sayfa. Mantık web
|
|
2357
|
+
* Masonry ile aynı (`masonryUtils`). Sanallaştırma yok — binlerce öğede FlatList.
|
|
2358
|
+
*/
|
|
2359
|
+
declare function Masonry({ items, columns, gutter, infinite, header, skeletonCount, onLayoutChange, accessibilityLabel, skeleton, style, contentContainerStyle }: Readonly<MasonryProps>): React__default.JSX.Element;
|
|
2360
|
+
|
|
2361
|
+
type QRDotType = "square" | "rounded" | "dots" | "extra-rounded";
|
|
2362
|
+
type QRCornerSquareType = "square" | "extra-rounded" | "dot";
|
|
2363
|
+
type QRCornerDotType = "square" | "dot" | "heart";
|
|
2364
|
+
type QRErrorLevel = "L" | "M" | "Q" | "H";
|
|
2365
|
+
type QRStatus = "active" | "loading" | "expired" | "scanned";
|
|
2366
|
+
interface QRCodeProps$1 extends SkeletonableProps {
|
|
2367
|
+
/** Kodlanacak metin (URL, Wi-Fi, vCard…). UTF-8 kodlanır — Türkçe karakter güvenli. */
|
|
2368
|
+
value: string;
|
|
2369
|
+
/** Kenar uzunluğu: sayı = px, metin = CSS (`"10rem"`). Varsayılan: `"10rem"`. */
|
|
2370
|
+
size?: number | string;
|
|
2371
|
+
/**
|
|
2372
|
+
* Hata düzeltme: L 7% / M 15% / Q 25% / H 30% hasara dayanır. Ortada ikon
|
|
2373
|
+
* varsa `H` kullanın. Varsayılan: ikon varsa `H`, yoksa `M`.
|
|
2374
|
+
*/
|
|
2375
|
+
errorLevel?: QRErrorLevel;
|
|
2376
|
+
/** Modül (nokta) rengi. Varsayılan: nötr 950 (her temada koyu — okuyucular ters QR'ı çözemeyebilir). */
|
|
2377
|
+
color?: string;
|
|
2378
|
+
/** Verilirse sol üstten sağ alta gradyan. */
|
|
2379
|
+
colorEnd?: string;
|
|
2380
|
+
/** Zemin. Varsayılan: beyaz. `"transparent"` verilebilir (arkası açık renkli olmalı). */
|
|
2381
|
+
bgColor?: string;
|
|
2382
|
+
/** Konum işaretlerinin rengi. Varsayılan: `color`. */
|
|
2383
|
+
cornerColor?: string;
|
|
2384
|
+
dotType?: QRDotType;
|
|
2385
|
+
cornerSquareType?: QRCornerSquareType;
|
|
2386
|
+
cornerDotType?: QRCornerDotType;
|
|
2387
|
+
/** Ortadaki logo (görsel URL'si). */
|
|
2388
|
+
icon?: string;
|
|
2389
|
+
/** Logo kenarı, QR kenarına oranla (0.1–0.3). Varsayılan: `0.22`. */
|
|
2390
|
+
iconSize?: number;
|
|
2391
|
+
/** Kenar boşluğu (modül). Varsayılan: `2` (bordered'da kart dolgusu ek boşluk verir). */
|
|
2392
|
+
margin?: number;
|
|
2393
|
+
/** İnce kenarlıklı, yuvarlak köşeli kart içinde. Varsayılan: `true`. */
|
|
2394
|
+
bordered?: boolean;
|
|
2395
|
+
/**
|
|
2396
|
+
* `loading`: kod hazırlanıyor. `expired`: süresi doldu, "Yenile" gösterilir
|
|
2397
|
+
* (`onRefresh`). `scanned`: telefonda onay bekleniyor. Varsayılan: `active`.
|
|
2398
|
+
*/
|
|
2399
|
+
status?: QRStatus;
|
|
2400
|
+
onRefresh?: () => void;
|
|
2401
|
+
/** Durum katmanını özel çizmek için. */
|
|
2402
|
+
statusRender?: (status: Exclude<QRStatus, "active">) => React__default.ReactNode;
|
|
2403
|
+
/** Erişilebilir ad. Varsayılan: `"QR kod"`. İçeriği metin olarak da verin (ör. altında URL). */
|
|
2404
|
+
"aria-label"?: string;
|
|
2405
|
+
className?: string;
|
|
2406
|
+
}
|
|
2407
|
+
|
|
2408
|
+
interface QRCodeProps extends Omit<QRCodeProps$1, "size" | "className" | "aria-label" | "icon"> {
|
|
2409
|
+
/** Kenar uzunluğu (pt). Varsayılan: 160. */
|
|
2410
|
+
size?: number;
|
|
2411
|
+
/** Ortadaki logo: URL ya da `require(...)`. */
|
|
2412
|
+
icon?: string | number;
|
|
2413
|
+
/** Erişilebilir ad. Varsayılan: `"QR kod"`. İçeriği metin olarak da verin (ör. altında URL). */
|
|
2414
|
+
accessibilityLabel?: string;
|
|
2415
|
+
style?: StyleProp<ViewStyle>;
|
|
2416
|
+
}
|
|
2417
|
+
/**
|
|
2418
|
+
* QR kod: web QRCode ile aynı model (`qrcode-generator` + kullanıcının
|
|
2419
|
+
* renderer'ı — nokta stilleri, köşe şekilleri, gradyan, logo), çizim
|
|
2420
|
+
* `react-native-svg`. Durum katmanı: hazırlanıyor / süresi doldu (Yenile) /
|
|
2421
|
+
* tarandı. Türkçe içerik UTF-8 doğru kodlanır.
|
|
2422
|
+
*/
|
|
2423
|
+
declare function QRCode({ value, size, errorLevel, color, colorEnd, bgColor, cornerColor, dotType, cornerSquareType, cornerDotType, icon, iconSize, margin, bordered, status, onRefresh, statusRender, accessibilityLabel, skeleton, style, }: Readonly<QRCodeProps>): React__default.JSX.Element;
|
|
2424
|
+
|
|
2425
|
+
type PaginationVariant = "outline" | "soft" | "solid";
|
|
2426
|
+
interface PaginationProps extends SkeletonableProps {
|
|
2427
|
+
/** Aktif sayfa (1 tabanlı). Verilirse kontrollü. */
|
|
2428
|
+
currentPage?: number;
|
|
2429
|
+
/** Varsayılan: `1`. */
|
|
2430
|
+
defaultPage?: number;
|
|
2431
|
+
/** Sayfa başına öğe. Varsayılan: `10`. */
|
|
2432
|
+
pageSize?: number;
|
|
2433
|
+
totalItems: number;
|
|
2434
|
+
/** Sayfa gerçekten DEĞİŞTİĞİNDE. */
|
|
2435
|
+
onPageChange?: (page: number, pageSize: number) => void;
|
|
2436
|
+
/**
|
|
2437
|
+
* `true` (varsayılan): `‹ 3 / 10 ›` — mobilde yaygın biçim. `false`: sayfa
|
|
2438
|
+
* numaraları; kaç komşu sığacağı genişliğe göre ayarlanır, `…` ileri / geri atlar.
|
|
2439
|
+
*/
|
|
2440
|
+
simple?: boolean;
|
|
2441
|
+
/** `true`: "11–20 / 95 kayıt". Fonksiyon: kendi metniniz. */
|
|
2442
|
+
showTotal?: boolean | ((total: number, range: [number, number]) => React__default.ReactNode);
|
|
2443
|
+
/** Sayfa numaralarında en fazla komşu sayısı. Varsayılan: `1`. */
|
|
2444
|
+
siblingCount?: number;
|
|
2445
|
+
/** Düğme sm 32 · md 40 · lg 44 (dokunma alanı hep ≥ 44). Varsayılan: `md`. */
|
|
2446
|
+
size?: Size;
|
|
2447
|
+
/** Varsayılan: `primary`. */
|
|
2448
|
+
color?: ColorRole;
|
|
2449
|
+
/** Aktif sayfa görünümü. Varsayılan: `outline`. */
|
|
2450
|
+
variant?: PaginationVariant;
|
|
2451
|
+
disabled?: boolean;
|
|
2452
|
+
/** Varsayılan: `"Sayfalama"`. */
|
|
2453
|
+
accessibilityLabel?: string;
|
|
2454
|
+
style?: StyleProp<ViewStyle>;
|
|
2455
|
+
}
|
|
2456
|
+
/**
|
|
2457
|
+
* Sayfalama. Varsayılan `‹ 3 / 10 ›` (mobil); `simple={false}` sayfa numaraları
|
|
2458
|
+
* — sığan komşu sayısı genişliğe göre, `…` beş sayfa atlar. Sayfa boyutu seçici
|
|
2459
|
+
* ve "Git" alanı yok (mobilde Select / InputNumber ile ayrıca). Mantık web
|
|
2460
|
+
* Pagination ile aynı (`paginationUtils`).
|
|
2461
|
+
*/
|
|
2462
|
+
declare function Pagination({ currentPage, defaultPage, pageSize, totalItems, onPageChange, simple, showTotal, siblingCount, size, color, variant, disabled, accessibilityLabel, skeleton, style }: Readonly<PaginationProps>): React__default.JSX.Element;
|
|
2463
|
+
|
|
2464
|
+
interface NativeControlSize {
|
|
2465
|
+
readonly height: number;
|
|
2466
|
+
readonly fontSize: number;
|
|
2467
|
+
readonly lineHeight: number;
|
|
2468
|
+
readonly paddingHorizontal: number;
|
|
2469
|
+
readonly gap: number;
|
|
2470
|
+
readonly iconSize: number;
|
|
2471
|
+
readonly radius: keyof Theme["radius"];
|
|
2472
|
+
}
|
|
2473
|
+
interface NativeCardSize {
|
|
2474
|
+
readonly padding: number;
|
|
2475
|
+
readonly headerMinHeight: number;
|
|
2476
|
+
readonly headerPaddingVertical: number;
|
|
2477
|
+
readonly footerPaddingVertical: number;
|
|
2478
|
+
readonly actionPaddingVertical: number;
|
|
2479
|
+
readonly radius: keyof Theme["radius"];
|
|
2480
|
+
}
|
|
2481
|
+
interface NativeListSize {
|
|
2482
|
+
readonly rowMinHeight: number;
|
|
2483
|
+
readonly rowPaddingVertical: number;
|
|
2484
|
+
readonly rowPaddingHorizontal: number;
|
|
2485
|
+
readonly contentGap: number;
|
|
2486
|
+
readonly metaGap: number;
|
|
2487
|
+
readonly actionGap: number;
|
|
2488
|
+
readonly titleFontSize: number;
|
|
2489
|
+
readonly titleLineHeight: number;
|
|
2490
|
+
readonly descriptionFontSize: number;
|
|
2491
|
+
readonly descriptionLineHeight: number;
|
|
2492
|
+
}
|
|
2493
|
+
/** Tipografi satırı (pt). Başlık seviyeleri `h1`–`h6`, gövde `body`. */
|
|
2494
|
+
interface NativeTextSize {
|
|
2495
|
+
readonly fontSize: number;
|
|
2496
|
+
readonly lineHeight: number;
|
|
2497
|
+
}
|
|
2498
|
+
type NativeTextStyle = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "body";
|
|
2499
|
+
interface NativeAvatarSize {
|
|
2500
|
+
readonly size: number;
|
|
2501
|
+
readonly fontSize: number;
|
|
2502
|
+
/** `shape="square"` köşesi (tema radius anahtarı). */
|
|
2503
|
+
readonly radius: keyof Theme["radius"];
|
|
2504
|
+
/** AvatarGroup içinde üst üste binme payı. */
|
|
2505
|
+
readonly overlap: number;
|
|
2506
|
+
}
|
|
2507
|
+
interface NativeBadgeSize {
|
|
2508
|
+
readonly height: number;
|
|
2509
|
+
readonly fontSize: number;
|
|
2510
|
+
readonly paddingHorizontal: number;
|
|
2511
|
+
readonly dot: number;
|
|
2512
|
+
}
|
|
2513
|
+
interface NativeSelectionSize {
|
|
2514
|
+
/** Checkbox/Radio kutusu (pt). */
|
|
2515
|
+
readonly box: number;
|
|
2516
|
+
readonly radius: number;
|
|
2517
|
+
readonly fontSize: number;
|
|
2518
|
+
readonly lineHeight: number;
|
|
2519
|
+
readonly descriptionFontSize: number;
|
|
2520
|
+
readonly descriptionLineHeight: number;
|
|
2521
|
+
readonly gap: number;
|
|
2522
|
+
}
|
|
2523
|
+
interface NativeSwitchSize {
|
|
2524
|
+
readonly width: number;
|
|
2525
|
+
/** `switchTrueLabel`/`switchFalseLabel` varken iz genişliği. */
|
|
2526
|
+
readonly labelWidth: number;
|
|
2527
|
+
readonly height: number;
|
|
2528
|
+
readonly knob: number;
|
|
2529
|
+
readonly fontSize: number;
|
|
2530
|
+
}
|
|
2531
|
+
interface NativeSegmentedSize {
|
|
2532
|
+
readonly height: number;
|
|
2533
|
+
readonly fontSize: number;
|
|
2534
|
+
readonly paddingHorizontal: number;
|
|
2535
|
+
readonly radius: number;
|
|
2536
|
+
}
|
|
2537
|
+
interface NativeSliderSize {
|
|
2538
|
+
/** Ray kalınlığı. */
|
|
2539
|
+
readonly track: number;
|
|
2540
|
+
/** Tutamaç çapı. */
|
|
2541
|
+
readonly thumb: number;
|
|
2542
|
+
/** Dikey slider'ın yüksekliği. */
|
|
2543
|
+
readonly verticalLength: number;
|
|
2544
|
+
}
|
|
2545
|
+
interface NativeStatisticSize {
|
|
2546
|
+
readonly valueFontSize: number;
|
|
2547
|
+
readonly valueLineHeight: number;
|
|
2548
|
+
/** Başlık, trend ve açıklama satırı. */
|
|
2549
|
+
readonly labelFontSize: number;
|
|
2550
|
+
readonly labelLineHeight: number;
|
|
2551
|
+
}
|
|
2552
|
+
interface NativeStepsSize {
|
|
2553
|
+
/** Gösterge dairesi. */
|
|
2554
|
+
readonly indicator: number;
|
|
2555
|
+
readonly iconSize: number;
|
|
2556
|
+
/** Dairedeki numara. */
|
|
2557
|
+
readonly numberFontSize: number;
|
|
2558
|
+
readonly titleFontSize: number;
|
|
2559
|
+
readonly titleLineHeight: number;
|
|
2560
|
+
readonly descriptionFontSize: number;
|
|
2561
|
+
readonly descriptionLineHeight: number;
|
|
2562
|
+
}
|
|
2563
|
+
interface NativeAccordionSize {
|
|
2564
|
+
readonly paddingVertical: number;
|
|
2565
|
+
readonly paddingHorizontal: number;
|
|
2566
|
+
readonly fontSize: number;
|
|
2567
|
+
readonly lineHeight: number;
|
|
2568
|
+
readonly iconSize: number;
|
|
2569
|
+
}
|
|
2570
|
+
interface NativeTabsSize {
|
|
2571
|
+
readonly height: number;
|
|
2572
|
+
readonly fontSize: number;
|
|
2573
|
+
readonly paddingHorizontal: number;
|
|
2574
|
+
readonly iconSize: number;
|
|
2575
|
+
}
|
|
2576
|
+
interface NativeSelectSize {
|
|
2577
|
+
/** Paneldeki seçenek satırı. */
|
|
2578
|
+
readonly optionMinHeight: number;
|
|
2579
|
+
readonly fontSize: number;
|
|
2580
|
+
readonly lineHeight: number;
|
|
2581
|
+
readonly descriptionFontSize: number;
|
|
2582
|
+
readonly descriptionLineHeight: number;
|
|
2583
|
+
/** Grup başlığı (büyük harf, soluk). */
|
|
2584
|
+
readonly groupFontSize: number;
|
|
2585
|
+
}
|
|
2586
|
+
interface NativeTagSize {
|
|
2587
|
+
readonly fontSize: number;
|
|
2588
|
+
readonly lineHeight: number;
|
|
2589
|
+
readonly paddingHorizontal: number;
|
|
2590
|
+
readonly paddingVertical: number;
|
|
2591
|
+
readonly gap: number;
|
|
2592
|
+
readonly iconSize: number;
|
|
2593
|
+
readonly radius: keyof Theme["radius"];
|
|
2594
|
+
}
|
|
2595
|
+
interface NativeAppBarSize {
|
|
2596
|
+
/** Üst sıra (geri / başlık / eylemler) yüksekliği. */
|
|
2597
|
+
readonly height: number;
|
|
2598
|
+
readonly titleFontSize: number;
|
|
2599
|
+
readonly titleLineHeight: number;
|
|
2600
|
+
readonly subtitleFontSize: number;
|
|
2601
|
+
readonly subtitleLineHeight: number;
|
|
2602
|
+
/** `size="large"`: üst sıranın altındaki büyük başlık. */
|
|
2603
|
+
readonly largeTitleFontSize: number;
|
|
2604
|
+
readonly largeTitleLineHeight: number;
|
|
2605
|
+
/** Büyük başlık alanının yüksekliği (kaydırınca 0'a iner). */
|
|
2606
|
+
readonly largeAreaHeight: number;
|
|
2607
|
+
/** Eylem / geri düğmesinin dokunma kutusu. */
|
|
2608
|
+
readonly actionSize: number;
|
|
2609
|
+
readonly iconSize: number;
|
|
2610
|
+
}
|
|
2611
|
+
interface NativeBottomNavigationSize {
|
|
2612
|
+
/** Çubuğun yüksekliği (güvenli alan payı hariç). */
|
|
2613
|
+
readonly height: number;
|
|
2614
|
+
readonly iconSize: number;
|
|
2615
|
+
readonly labelFontSize: number;
|
|
2616
|
+
readonly labelLineHeight: number;
|
|
2617
|
+
/** `pill`: aktif ikonun arkasındaki hap zemin. */
|
|
2618
|
+
readonly indicatorWidth: number;
|
|
2619
|
+
readonly indicatorHeight: number;
|
|
2620
|
+
}
|
|
2621
|
+
interface NativeSidebarSize {
|
|
2622
|
+
/** Panel genişliği: ekranın bu oranı, en fazla `maxWidth`. */
|
|
2623
|
+
readonly widthRatio: number;
|
|
2624
|
+
readonly maxWidth: number;
|
|
2625
|
+
readonly rowMinHeight: number;
|
|
2626
|
+
readonly fontSize: number;
|
|
2627
|
+
readonly lineHeight: number;
|
|
2628
|
+
readonly iconSize: number;
|
|
2629
|
+
readonly headingFontSize: number;
|
|
2630
|
+
readonly paddingHorizontal: number;
|
|
2631
|
+
}
|
|
2632
|
+
interface NativeTreeSize {
|
|
2633
|
+
/** Satır en az yüksekliği (dokunma hedefi). */
|
|
2634
|
+
readonly rowMinHeight: number;
|
|
2635
|
+
/** Her seviyenin girintisi. */
|
|
2636
|
+
readonly indent: number;
|
|
2637
|
+
readonly fontSize: number;
|
|
2638
|
+
readonly lineHeight: number;
|
|
2639
|
+
readonly iconSize: number;
|
|
2640
|
+
/** Aç/kapa okunun dokunma kutusu. */
|
|
2641
|
+
readonly toggleSize: number;
|
|
2642
|
+
}
|
|
2643
|
+
/** Native ölçüleri web ölçeğinden bağımsızdır; değerler dp/pt cinsindendir. */
|
|
2644
|
+
interface NativeConfig {
|
|
2645
|
+
readonly sizes: Readonly<Record<ExtendedSize, NativeControlSize>>;
|
|
2646
|
+
readonly card: Readonly<Record<Size, NativeCardSize>>;
|
|
2647
|
+
readonly list: Readonly<Record<Size, NativeListSize>>;
|
|
2648
|
+
readonly typography: Readonly<Record<NativeTextStyle, NativeTextSize>>;
|
|
2649
|
+
readonly avatar: Readonly<Record<Size, NativeAvatarSize>>;
|
|
2650
|
+
readonly badge: Readonly<Record<"sm" | "md", NativeBadgeSize>>;
|
|
2651
|
+
readonly tag: NativeTagSize;
|
|
2652
|
+
readonly selection: Readonly<Record<Size, NativeSelectionSize>>;
|
|
2653
|
+
readonly switch: Readonly<Record<Size, NativeSwitchSize>>;
|
|
2654
|
+
readonly segmented: Readonly<Record<Size, NativeSegmentedSize>>;
|
|
2655
|
+
readonly slider: Readonly<Record<Size, NativeSliderSize>>;
|
|
2656
|
+
readonly statistic: Readonly<Record<Size, NativeStatisticSize>>;
|
|
2657
|
+
readonly steps: Readonly<Record<"sm" | "md", NativeStepsSize>>;
|
|
2658
|
+
readonly accordion: Readonly<Record<Size, NativeAccordionSize>>;
|
|
2659
|
+
readonly tabs: Readonly<Record<Size, NativeTabsSize>>;
|
|
2660
|
+
readonly select: NativeSelectSize;
|
|
2661
|
+
readonly appBar: NativeAppBarSize;
|
|
2662
|
+
readonly bottomNavigation: Readonly<Record<"pill" | "plain", NativeBottomNavigationSize>>;
|
|
2663
|
+
readonly sidebar: NativeSidebarSize;
|
|
2664
|
+
readonly tree: NativeTreeSize;
|
|
2665
|
+
}
|
|
2666
|
+
interface NativeConfigOverrides {
|
|
2667
|
+
/** Örn. `{ md: { height: 48, fontSize: 17 } }`. */
|
|
2668
|
+
sizes?: Partial<Record<ExtendedSize, Partial<NativeControlSize>>>;
|
|
2669
|
+
card?: Partial<Record<Size, Partial<NativeCardSize>>>;
|
|
2670
|
+
list?: Partial<Record<Size, Partial<NativeListSize>>>;
|
|
2671
|
+
typography?: Partial<Record<NativeTextStyle, Partial<NativeTextSize>>>;
|
|
2672
|
+
avatar?: Partial<Record<Size, Partial<NativeAvatarSize>>>;
|
|
2673
|
+
badge?: Partial<Record<"sm" | "md", Partial<NativeBadgeSize>>>;
|
|
2674
|
+
tag?: Partial<NativeTagSize>;
|
|
2675
|
+
selection?: Partial<Record<Size, Partial<NativeSelectionSize>>>;
|
|
2676
|
+
switch?: Partial<Record<Size, Partial<NativeSwitchSize>>>;
|
|
2677
|
+
segmented?: Partial<Record<Size, Partial<NativeSegmentedSize>>>;
|
|
2678
|
+
slider?: Partial<Record<Size, Partial<NativeSliderSize>>>;
|
|
2679
|
+
statistic?: Partial<Record<Size, Partial<NativeStatisticSize>>>;
|
|
2680
|
+
steps?: Partial<Record<"sm" | "md", Partial<NativeStepsSize>>>;
|
|
2681
|
+
accordion?: Partial<Record<Size, Partial<NativeAccordionSize>>>;
|
|
2682
|
+
tabs?: Partial<Record<Size, Partial<NativeTabsSize>>>;
|
|
2683
|
+
select?: Partial<NativeSelectSize>;
|
|
2684
|
+
appBar?: Partial<NativeAppBarSize>;
|
|
2685
|
+
bottomNavigation?: Partial<Record<"pill" | "plain", Partial<NativeBottomNavigationSize>>>;
|
|
2686
|
+
sidebar?: Partial<NativeSidebarSize>;
|
|
2687
|
+
tree?: Partial<NativeTreeSize>;
|
|
2688
|
+
}
|
|
2689
|
+
/** Native ölçü ve tipografisini bağımsız olarak özelleştirir; iç içe kullanıldığında üst ayarları korur. */
|
|
2690
|
+
declare function NativeConfigProvider({ config, children }: Readonly<{
|
|
2691
|
+
config?: NativeConfigOverrides;
|
|
2692
|
+
children: ReactNode;
|
|
2693
|
+
}>): React.JSX.Element;
|
|
2694
|
+
declare function useNativeConfig(): NativeConfig;
|
|
2695
|
+
|
|
2696
|
+
/**
|
|
2697
|
+
* Font kipi (kullanıcı kararı 2026-10-05 — "sıfır kurulum" sözü):
|
|
2698
|
+
*
|
|
2699
|
+
* - `"system"` (varsayılan): iOS'ta SF, Android'de Roboto. Hiçbir font dosyası
|
|
2700
|
+
* yüklenmesi gerekmez. Token'lardaki aile adları ("Geist"…) kullanılmaz —
|
|
2701
|
+
* yüklenmemiş bir aile iOS'ta geliştirme modunda hata basar, web'de serif'e
|
|
2702
|
+
* düşer (Expo'da gerçek render'da görüldü).
|
|
2703
|
+
* - `"brand"`: token aileleri (Geist gövde, Manrope başlık, Geist Mono kod).
|
|
2704
|
+
* Tüketici dosyaları `expo-font` ile, kayıt adı aile adıyla aynı olacak
|
|
2705
|
+
* şekilde yükler (bkz. `BRAND_FONT_FAMILIES` ve README).
|
|
2706
|
+
*/
|
|
2707
|
+
type NativeFonts = "system" | "brand";
|
|
2708
|
+
/** `"brand"` kipinde yüklenmesi gereken aileler — `useFonts` anahtarları bunlar olmalı. */
|
|
2709
|
+
declare const BRAND_FONT_FAMILIES: readonly ["Geist", "Manrope", "Geist Mono"];
|
|
2710
|
+
/** Temayı font kipine göre döner; sistem kopyası tema başına bir kez üretilir (kimlik sabit → gereksiz render yok). */
|
|
2711
|
+
declare function withFonts(theme: Theme, fonts: NativeFonts): Theme;
|
|
2712
|
+
|
|
2713
|
+
/** Güvenli alan payları (çentik / durum çubuğu / ev çubuğu), pt. */
|
|
2714
|
+
interface SafeAreaInsets {
|
|
2715
|
+
top: number;
|
|
2716
|
+
bottom: number;
|
|
2717
|
+
left: number;
|
|
2718
|
+
right: number;
|
|
2719
|
+
}
|
|
2720
|
+
declare function useSafeInsets(): Partial<SafeAreaInsets> | null;
|
|
2721
|
+
/**
|
|
2722
|
+
* Ağacın bir bölümü için güvenli alanı değiştirir — ör. ekran kenarına
|
|
2723
|
+
* DEĞMEYEN bir yerde çizilen AppBar / BottomNavigation için `insets={{}}`
|
|
2724
|
+
* (pay sıfır). Uygulama kökünde `ThemeProvider insets` yeterlidir.
|
|
2725
|
+
*/
|
|
2726
|
+
declare function SafeAreaInsetsProvider({ insets, children }: Readonly<{
|
|
2727
|
+
insets: Partial<SafeAreaInsets>;
|
|
2728
|
+
children: ReactNode;
|
|
2729
|
+
}>): React.JSX.Element;
|
|
2730
|
+
|
|
2731
|
+
interface ThemeProviderProps {
|
|
2732
|
+
/**
|
|
2733
|
+
* `@mari-ui/tokens`'ın `lightTheme`/`darkTheme`'i ya da tüketicinin kendi
|
|
2734
|
+
* ürettiği 3. bir tema (aynı `Theme` şekline uyduğu sürece — bkz. plan
|
|
2735
|
+
* backlog madde 10, "3. tema" ihtiyacı web'de olduğu gibi native'de de
|
|
2736
|
+
* sadece bir `Theme` objesi geçmekten ibaret).
|
|
2737
|
+
*/
|
|
2738
|
+
theme: Theme;
|
|
2739
|
+
/**
|
|
2740
|
+
* `"system"` (varsayılan): platform fontu, kurulum gerekmez. `"brand"`:
|
|
2741
|
+
* Geist / Manrope / Geist Mono — önce `expo-font` ile yükleyin (kayıt adları
|
|
2742
|
+
* `BRAND_FONT_FAMILIES`).
|
|
2743
|
+
*/
|
|
2744
|
+
fonts?: NativeFonts;
|
|
2745
|
+
/**
|
|
2746
|
+
* Güvenli alan payları — kökte bir kez `useSafeAreaInsets()` verin. Ekran
|
|
2747
|
+
* kenarına değen bileşenler (AppBar, BottomNavigation, Sidebar, BottomSheet,
|
|
2748
|
+
* Toast, ImageViewer) kendi prop'u verilmezse bunu kullanır. Verilmezse üst
|
|
2749
|
+
* sağlayıcınınki geçerli kalır.
|
|
2750
|
+
*/
|
|
2751
|
+
insets?: Partial<SafeAreaInsets>;
|
|
2752
|
+
children: ReactNode;
|
|
2753
|
+
}
|
|
2754
|
+
/**
|
|
2755
|
+
* OPSİYONELDİR. Sarmalanmazsa `useTheme()` sistemin `useColorScheme()`ine
|
|
2756
|
+
* göre otomatik light/dark seçer — bkz. `ThemeContext.ts`. `react-native`
|
|
2757
|
+
* import ETMEZ (sadece `react`) — bu yüzden bu dosya, tersine, vitest altında
|
|
2758
|
+
* da (herhangi bir RN mock'una gerek kalmadan) test edilebilir durumda.
|
|
2759
|
+
*/
|
|
2760
|
+
declare function ThemeProvider({ theme, fonts, insets, children }: ThemeProviderProps): React.JSX.Element;
|
|
2761
|
+
|
|
2762
|
+
/**
|
|
2763
|
+
* `<ThemeProvider>` varsa onu kullanır; yoksa `react-native`'in
|
|
2764
|
+
* `useColorScheme()`iyle işletim sistemi tercihine göre `lightTheme`/
|
|
2765
|
+
* `darkTheme` arasında otomatik seçer. Bu dosya (ve sadece bu dosya, `theme/`
|
|
2766
|
+
* altında) gerçek `react-native` çalışma zamanını import eder — dolayısıyla
|
|
2767
|
+
* vitest'in Flow sözdizimini ayrıştıramaması nedeniyle otomatik testlerin
|
|
2768
|
+
* DIŞINDA tutulur (bkz. `packages/native/README.md` — "Test kapsamı" notu);
|
|
2769
|
+
* yalnızca `tsc`/`eslint` ile ve tüketici uygulamalarda doğrulanır.
|
|
2770
|
+
*/
|
|
2771
|
+
declare function useTheme(): Theme;
|
|
2772
|
+
|
|
2773
|
+
interface ButtonRecipeOptions {
|
|
2774
|
+
color: ColorRole;
|
|
2775
|
+
variant: Variant;
|
|
2776
|
+
size: ExtendedSize;
|
|
2777
|
+
shape: ButtonShape;
|
|
2778
|
+
block: boolean;
|
|
2779
|
+
disabled: boolean;
|
|
2780
|
+
}
|
|
2781
|
+
interface ButtonRecipeResult {
|
|
2782
|
+
container: ViewStyle;
|
|
2783
|
+
pressedContainer: ViewStyle;
|
|
2784
|
+
label: TextStyle;
|
|
2785
|
+
/** İkon boyutu (px) — native ölçek: xs 14 · sm 16 · md 18 · lg 20 · xl 22. */
|
|
2786
|
+
iconSize: number;
|
|
2787
|
+
/** Görünümü değiştirmeden dokunma alanını 44px'e tamamlayan pay (web `touchTargetClass`). */
|
|
2788
|
+
hitSlop: {
|
|
2789
|
+
top: number;
|
|
2790
|
+
bottom: number;
|
|
2791
|
+
left: number;
|
|
2792
|
+
right: number;
|
|
2793
|
+
};
|
|
2794
|
+
}
|
|
2795
|
+
|
|
2796
|
+
interface InputRecipeOptions {
|
|
2797
|
+
color?: ColorRole;
|
|
2798
|
+
variant: InputVariant;
|
|
2799
|
+
size: Size;
|
|
2800
|
+
shape: InputShape;
|
|
2801
|
+
disabled: boolean;
|
|
2802
|
+
focused: boolean;
|
|
2803
|
+
}
|
|
2804
|
+
interface InputRecipeResult {
|
|
2805
|
+
container: ViewStyle;
|
|
2806
|
+
input: TextStyle;
|
|
2807
|
+
/** Yer tutucu ve ikonların soluk rengi (`canvas.muted`). */
|
|
2808
|
+
mutedColor: string;
|
|
2809
|
+
/** Karakter sayacı yazısı (web `text-xs tabular-nums text-mari-muted`). */
|
|
2810
|
+
count: TextStyle;
|
|
2811
|
+
/** Süs / göz ikonu boyutu (native ölçek); temizle X'i bundan 2px küçük. */
|
|
2812
|
+
iconSize: number;
|
|
2813
|
+
/** Görünümü değiştirmeden dokunma alanını 44px'e tamamlayan pay. */
|
|
2814
|
+
hitSlop: {
|
|
2815
|
+
top: number;
|
|
2816
|
+
bottom: number;
|
|
2817
|
+
left: number;
|
|
2818
|
+
right: number;
|
|
2819
|
+
};
|
|
2820
|
+
}
|
|
2821
|
+
|
|
2822
|
+
interface CardRecipeOptions {
|
|
2823
|
+
size?: Size;
|
|
2824
|
+
bordered: boolean;
|
|
2825
|
+
inset: boolean;
|
|
2826
|
+
}
|
|
2827
|
+
interface CardRecipeResult {
|
|
2828
|
+
container: ViewStyle;
|
|
2829
|
+
pressedContainer: ViewStyle;
|
|
2830
|
+
header: ViewStyle;
|
|
2831
|
+
titleText: TextStyle;
|
|
2832
|
+
extraText: TextStyle;
|
|
2833
|
+
divider: ViewStyle;
|
|
2834
|
+
body: ViewStyle;
|
|
2835
|
+
bodyText: TextStyle;
|
|
2836
|
+
footer: ViewStyle;
|
|
2837
|
+
actions: ViewStyle;
|
|
2838
|
+
action: ViewStyle;
|
|
2839
|
+
actionDivider: ViewStyle;
|
|
2840
|
+
}
|
|
2841
|
+
|
|
2842
|
+
interface RecipeMap {
|
|
2843
|
+
button: {
|
|
2844
|
+
options: ButtonRecipeOptions;
|
|
2845
|
+
result: ButtonRecipeResult;
|
|
2846
|
+
};
|
|
2847
|
+
input: {
|
|
2848
|
+
options: InputRecipeOptions;
|
|
2849
|
+
result: InputRecipeResult;
|
|
2850
|
+
};
|
|
2851
|
+
card: {
|
|
2852
|
+
options: CardRecipeOptions;
|
|
2853
|
+
result: CardRecipeResult;
|
|
2854
|
+
};
|
|
2855
|
+
}
|
|
2856
|
+
/**
|
|
2857
|
+
* Bildirimsel stil API'si (plan Faz 5): component yazarken elle bir
|
|
2858
|
+
* `StyleSheet.create` objesi kurulmaz, `useStyles("button", { color,
|
|
2859
|
+
* variant, size, ... })` çağrılır — recipe (bkz. `recipes/*.ts`) güncel
|
|
2860
|
+
* temaya (`useTheme()`) göre çözülmüş somut RN stilini döner.
|
|
2861
|
+
*
|
|
2862
|
+
* Kasıtlı olarak `useMemo` YOK: bu stiller zaten prop'lara göre DEĞİŞKEN —
|
|
2863
|
+
* klasik "component başına bir kere, modül seviyesinde `StyleSheet.create`"
|
|
2864
|
+
* paterni burada geçerli değil. Memoization burada gerçek bir performans
|
|
2865
|
+
* kazancı değil, sadece bağımlılık dizisini elle bakımlı tutma yükü demek
|
|
2866
|
+
* olurdu. İleride profiling gerçekten gerektirdiğini gösterirse eklenir
|
|
2867
|
+
* (bkz. plan backlog madde 18 — component bazlı ince ayar turu).
|
|
2868
|
+
*/
|
|
2869
|
+
declare function useStyles<K extends keyof RecipeMap>(name: K, options: RecipeMap[K]["options"]): RecipeMap[K]["result"];
|
|
2870
|
+
|
|
2871
|
+
export { Accordion, type AccordionItem, type AccordionProps, type AccordionVariant, ActionSheet, type ActionSheetAction, type ActionSheetProps, Alert, type AlertProps, AppBar, AppBarAction, type AppBarActionProps, type AppBarActionState, type AppBarProps, type AppBarSize, type ArrowsPlacement, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarShape, type AvatarSize, BRAND_FONT_FAMILIES, BackTop, type BackTopProps, Badge, type BadgeProps, BottomNavigation, type BottomNavigationIconState, type BottomNavigationItem, type BottomNavigationProps, type BottomNavigationVariant, BottomSheet, type BottomSheetProps, Button, type ButtonIconPosition, type ButtonProps, type ButtonShape, Card, CardMeta, type CardMetaProps, type CardProps, type CardSlot, type CardSlotStyles, Carousel, type CarouselAlign, type CarouselControls, type CarouselProps, Checkbox, type CheckboxProps, type CheckboxShape, Clock, type ClockProps, Countdown, type CountdownProps, Dialog, type DialogAction, type DialogProps, Divider, type DividerLabelAlign, type DividerLineStyle, type DividerOrientation, type DividerProps, type DotPosition, type DotsPlacement, Empty, type EmptyProps, Field, type FieldProps, FloatButton, type FloatButtonBadge, FloatButtonGroup, type FloatButtonGroupMenuProps, type FloatButtonGroupProps, type FloatButtonGroupStaticProps, type FloatButtonIconState, type FloatButtonPlacement, type FloatButtonProps, type FloatButtonShape, type GalleryView, Image, type ImageFit, ImageGallery, type ImageGalleryItem, type ImageGalleryProps, type ImageLoadInfo, type ImageLoader, type ImageLoaderParams, type ImagePreviewConfig, type ImageProps, type ImageSource, type ImageStaticSource, ImageViewer, type ImageViewerItem, type ImageViewerProps, type InfiniteScrollOptions, Input, InputNumber, type InputNumberProps, type InputProps, type InputShape, type InputVariant, List, ListItem, type ListItemLayout, ListItemMeta, type ListItemMetaProps, type ListItemProps, type ListProps, Loading, type LoadingProps, Masonry, type MasonryColumns, type MasonryItem, type MasonryProps, Modal, type ModalButtonPosition, type ModalProps, type NativeAccordionSize, type NativeAppBarSize, type NativeAvatarSize, type NativeBadgeSize, type NativeBottomNavigationSize, type NativeCardSize, type NativeConfig, type NativeConfigOverrides, NativeConfigProvider, type NativeControlSize, type NativeFonts, type NativeListSize, type NativeSegmentedSize, type NativeSelectSize, type NativeSelectionSize, type NativeSidebarSize, type NativeSliderSize, type NativeStatisticSize, type NativeStepsSize, type NativeSwitchSize, type NativeTabsSize, type NativeTagSize, type NativeTextSize, type NativeTextStyle, type NativeTreeSize, OtpInput, type OtpInputProps, Pagination, type PaginationProps, type PaginationVariant, Paragraph, type ParagraphProps, Popover, type PopoverProps, type PopoverTrigger, Progress, type ProgressProps, type ProgressSize, type ProgressStatus, QRCode, type QRCodeProps, type QRCornerDotType, type QRCornerSquareType, type QRDotType, type QRErrorLevel, type QRStatus, Radio, RadioGroup, type RadioGroupProps, type RadioOption, type RadioProps, type RadioValue, Rate, type RateCharacterState, type RateProps, type ResponsiveItem, type SafeAreaInsets, SafeAreaInsetsProvider, SearchInput, type SearchInputProps, Segmented, type SegmentedOption, type SegmentedProps, type SegmentedValue, Select, type SelectMultipleProps, type SelectOption, type SelectOptionGroup, type SelectProps, type SelectSingleProps, type SelectValue, Sidebar, type SidebarAnimation, type SidebarBaseProps, type SidebarHeaderInk, type SidebarIconState, type SidebarItem, SidebarLayout, type SidebarLayoutAnimation, type SidebarLayoutProps, type SidebarProps, Skeleton, type SkeletonAvatarProps, type SkeletonAvatarShape, SkeletonBlock, type SkeletonBlockProps, SkeletonBox, type SkeletonParagraphProps, type SkeletonProps, type SkeletonTitleProps, type SkeletonableProps, Slider, type SliderIconItem, type SliderIconPosition, type SliderProps, type SliderValue, type SnapPoint, Statistic, type StatisticProps, type StatisticSize, type StatisticTrend, StatusBadge, type StatusBadgeProps, type StepData, type StepItem, type StepStatus, Steps, StepsContent, type StepsContentProps, type StepsLabelPlacement, type StepsProps, type StepsSize, type StepsVariant, Stopwatch, type StopwatchProps, Switch, type SwitchProps, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsOrientation, type TabsProps, TabsTrigger, type TabsTriggerProps, type TabsTriggerState, type TabsVariant, Tag, type TagProps, Text, type TextProps, type TextWeight, Textarea, type TextareaAutoSize, type TextareaProps, ThemeProvider, type ThemeProviderProps, Timeline, type TimelineItem, type TimelineProps, Title, type TitleLevel, type TitleProps, type ToastAction, type ToastContextValue, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, type ToastType, Tree, type TreeCheckInfo, type TreeNode, type TreeProps, TreeSelect, type TreeSelectCheckedStrategy, type TreeSelectMultipleProps, type TreeSelectProps, type TreeSelectSingleProps, type TypographyEllipsis, Upload, type UploadFile, type UploadFileStatus, type UploadListType, type UploadPickContext, type UploadPickedFile, type UploadProps, type UploadRejectReason, type UploadReviewType, useAppBarScroll, useNativeConfig, useSafeInsets, useStyles, useTheme, useToast, withFonts };
|