@umituz/react-native-design-system 2.6.94 → 2.6.96
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/package.json +1 -1
- package/src/atoms/AtomicAvatar.README.md +284 -397
- package/src/atoms/AtomicBadge.README.md +123 -358
- package/src/atoms/AtomicCard.README.md +358 -247
- package/src/atoms/AtomicDatePicker.README.md +127 -332
- package/src/atoms/AtomicFab.README.md +194 -352
- package/src/atoms/AtomicIcon.README.md +241 -274
- package/src/atoms/AtomicProgress.README.md +100 -338
- package/src/atoms/AtomicSpinner.README.md +304 -337
- package/src/atoms/AtomicText.README.md +153 -389
- package/src/atoms/AtomicTextArea.README.md +267 -268
- package/src/atoms/EmptyState.README.md +247 -292
- package/src/atoms/GlassView/README.md +313 -444
- package/src/atoms/button/README.md +186 -297
- package/src/atoms/button/STRATEGY.md +252 -0
- package/src/atoms/chip/README.md +242 -290
- package/src/atoms/input/README.md +296 -290
- package/src/atoms/picker/README.md +278 -309
- package/src/atoms/skeleton/AtomicSkeleton.README.md +394 -252
- package/src/molecules/BaseModal/README.md +356 -0
- package/src/molecules/BaseModal.README.md +324 -200
- package/src/molecules/ConfirmationModal.README.md +349 -302
- package/src/molecules/Divider/README.md +293 -376
- package/src/molecules/FormField.README.md +321 -534
- package/src/molecules/GlowingCard/GlowingCard.tsx +1 -1
- package/src/molecules/GlowingCard/README.md +230 -372
- package/src/molecules/List/README.md +281 -488
- package/src/molecules/ListItem.README.md +320 -315
- package/src/molecules/SearchBar/README.md +332 -430
- package/src/molecules/StepHeader/README.md +311 -411
- package/src/molecules/StepProgress/README.md +281 -448
- package/src/molecules/alerts/README.md +272 -355
- package/src/molecules/avatar/README.md +295 -356
- package/src/molecules/bottom-sheet/README.md +303 -340
- package/src/molecules/calendar/README.md +301 -265
- package/src/molecules/countdown/README.md +347 -456
- package/src/molecules/emoji/README.md +281 -514
- package/src/molecules/listitem/README.md +307 -399
- package/src/molecules/media-card/MediaCard.tsx +31 -34
- package/src/molecules/media-card/README.md +217 -319
- package/src/molecules/navigation/README.md +263 -284
- package/src/molecules/navigation/components/NavigationHeader.tsx +77 -0
- package/src/molecules/navigation/index.ts +1 -0
- package/src/molecules/splash/README.md +76 -80
- package/src/molecules/swipe-actions/README.md +376 -588
|
@@ -1,399 +1,194 @@
|
|
|
1
1
|
# AtomicDatePicker
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A platform-native date/time picker component for React Native.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Import & Usage
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- 🌍 **Locale Desteği**: Otomatik dil entegrasyonu
|
|
10
|
-
- 🎨 **Tema Bilinci**: Tema entegrasyonu
|
|
11
|
-
- 📱 **Platform Spesifik**: iOS wheel, Android dialog
|
|
12
|
-
- ⚙️ **Kısıtlamalar**: Min/Maks tarih
|
|
13
|
-
- ♿ **Erişilebilir**: Tam erişilebilirlik desteği
|
|
14
|
-
|
|
15
|
-
## Kurulum
|
|
16
|
-
|
|
17
|
-
```tsx
|
|
18
|
-
import { AtomicDatePicker } from 'react-native-design-system';
|
|
7
|
+
```typescript
|
|
8
|
+
import { AtomicDatePicker } from 'react-native-design-system/src/atoms/AtomicDatePicker';
|
|
19
9
|
```
|
|
20
10
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
```tsx
|
|
24
|
-
import React, { useState } from 'react';
|
|
25
|
-
import { View } from 'react-native';
|
|
26
|
-
import { AtomicDatePicker } from 'react-native-design-system';
|
|
27
|
-
|
|
28
|
-
export const BasicExample = () => {
|
|
29
|
-
const [selectedDate, setSelectedDate] = useState<Date | null>(null);
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<View style={{ padding: 16 }}>
|
|
33
|
-
<AtomicDatePicker
|
|
34
|
-
value={selectedDate}
|
|
35
|
-
onChange={setSelectedDate}
|
|
36
|
-
label="Doğum Tarihi"
|
|
37
|
-
placeholder="Tarih seçin"
|
|
38
|
-
/>
|
|
39
|
-
</View>
|
|
40
|
-
);
|
|
41
|
-
};
|
|
42
|
-
```
|
|
11
|
+
**Location:** `src/atoms/AtomicDatePicker.tsx`
|
|
43
12
|
|
|
44
|
-
##
|
|
13
|
+
## Basic Usage
|
|
45
14
|
|
|
46
15
|
```tsx
|
|
47
|
-
const [date, setDate] = useState<Date | null>(null);
|
|
48
|
-
|
|
49
16
|
<AtomicDatePicker
|
|
50
17
|
value={date}
|
|
51
18
|
onChange={setDate}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
placeholder="Tarih seçin"
|
|
19
|
+
label="Birthday"
|
|
20
|
+
placeholder="Select date"
|
|
55
21
|
/>
|
|
56
22
|
```
|
|
57
23
|
|
|
58
|
-
##
|
|
24
|
+
## Strategy
|
|
59
25
|
|
|
60
|
-
|
|
61
|
-
const [time, setTime] = useState<Date | null>(null);
|
|
26
|
+
**Purpose**: Provide native date/time selection with platform-appropriate UI.
|
|
62
27
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
placeholder="Saat seçin"
|
|
69
|
-
/>
|
|
70
|
-
```
|
|
28
|
+
**When to Use**:
|
|
29
|
+
- Date selection (birthdays, appointments, events)
|
|
30
|
+
- Time selection (reminders, scheduling)
|
|
31
|
+
- Date ranges (start/end dates)
|
|
32
|
+
- Any date/time input
|
|
71
33
|
|
|
72
|
-
|
|
34
|
+
**When NOT to Use**:
|
|
35
|
+
- For custom calendar UI (build custom component)
|
|
36
|
+
- When using non-standard calendars
|
|
73
37
|
|
|
74
|
-
|
|
75
|
-
const [dateTime, setDateTime] = useState<Date | null>(null);
|
|
38
|
+
## Rules
|
|
76
39
|
|
|
77
|
-
|
|
78
|
-
value={dateTime}
|
|
79
|
-
onChange={setDateTime}
|
|
80
|
-
mode="datetime"
|
|
81
|
-
label="Tarih ve Saat"
|
|
82
|
-
placeholder="Tarih ve saat seçin"
|
|
83
|
-
/>
|
|
84
|
-
```
|
|
40
|
+
### Required
|
|
85
41
|
|
|
86
|
-
|
|
42
|
+
1. **MUST** provide `value` and `onChange`
|
|
43
|
+
2. **SHOULD** provide `label` for accessibility
|
|
44
|
+
3. **MUST** show error messages clearly
|
|
45
|
+
4. **ALWAYS** set appropriate `mode` (date, time, datetime)
|
|
46
|
+
5. **SHOULD** use `minimumDate`/`maximumDate` for constraints
|
|
47
|
+
6. **MUST** validate dates appropriately
|
|
87
48
|
|
|
88
|
-
|
|
89
|
-
<AtomicDatePicker
|
|
90
|
-
value={birthDate}
|
|
91
|
-
onChange={setBirthDate}
|
|
92
|
-
label="Doğum Tarihi"
|
|
93
|
-
minimumDate={new Date(1900, 0, 1)}
|
|
94
|
-
maximumDate={new Date()}
|
|
95
|
-
/>
|
|
96
|
-
```
|
|
49
|
+
### Date Validation
|
|
97
50
|
|
|
98
|
-
|
|
51
|
+
1. **Future dates**: Birthdays, events
|
|
52
|
+
2. **Past dates**: Historical dates
|
|
53
|
+
3. **Ranges**: Set min/max appropriately
|
|
54
|
+
4. **Business rules**: Enforce date constraints
|
|
99
55
|
|
|
100
|
-
|
|
101
|
-
<AtomicDatePicker
|
|
102
|
-
value={date}
|
|
103
|
-
onChange={setDate}
|
|
104
|
-
label="Tarih"
|
|
105
|
-
error="Lütfen geçerli bir tarih seçin"
|
|
106
|
-
/>
|
|
107
|
-
```
|
|
56
|
+
## Forbidden
|
|
108
57
|
|
|
109
|
-
|
|
58
|
+
❌ **NEVER** do these:
|
|
110
59
|
|
|
111
60
|
```tsx
|
|
61
|
+
// ❌ No value or onChange
|
|
112
62
|
<AtomicDatePicker
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
disabled
|
|
63
|
+
label="Birthday"
|
|
64
|
+
placeholder="Select date"
|
|
65
|
+
// ❌ Missing value and onChange
|
|
117
66
|
/>
|
|
118
|
-
```
|
|
119
67
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
```tsx
|
|
125
|
-
export const BirthDateForm = () => {
|
|
126
|
-
const [birthDate, setBirthDate] = useState<Date | null>(null);
|
|
127
|
-
|
|
128
|
-
return (
|
|
129
|
-
<View style={{ padding: 16 }}>
|
|
130
|
-
<AtomicDatePicker
|
|
131
|
-
value={birthDate}
|
|
132
|
-
onChange={setBirthDate}
|
|
133
|
-
label="Doğum Tarihi"
|
|
134
|
-
placeholder="Doğum tarihinizi seçin"
|
|
135
|
-
minimumDate={new Date(1900, 0, 1)}
|
|
136
|
-
maximumDate={new Date()}
|
|
137
|
-
mode="date"
|
|
138
|
-
/>
|
|
139
|
-
|
|
140
|
-
{birthDate && (
|
|
141
|
-
<AtomicText type="bodyMedium" marginTop="sm">
|
|
142
|
-
Seçilen Tarih: {birthDate.toLocaleDateString('tr-TR')}
|
|
143
|
-
</AtomicText>
|
|
144
|
-
)}
|
|
145
|
-
</View>
|
|
146
|
-
);
|
|
147
|
-
};
|
|
148
|
-
```
|
|
68
|
+
// ❌ Wrong mode
|
|
69
|
+
<AtomicDatePicker
|
|
70
|
+
mode="datetime" {/* ❌ Android doesn't support */}
|
|
71
|
+
/>
|
|
149
72
|
|
|
150
|
-
|
|
73
|
+
// ❌ No date constraints
|
|
74
|
+
<AtomicDatePicker
|
|
75
|
+
label="Birthday"
|
|
76
|
+
// ❌ Should have maximumDate
|
|
77
|
+
/>
|
|
151
78
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const handleDateChange = (date: Date) => {
|
|
158
|
-
const today = new Date();
|
|
159
|
-
today.setHours(0, 0, 0, 0);
|
|
160
|
-
|
|
161
|
-
if (date < today) {
|
|
162
|
-
setError('Geçmiş tarih seçemezsiniz');
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
setError('');
|
|
167
|
-
setAppointmentDate(date);
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
return (
|
|
171
|
-
<View style={{ padding: 16 }}>
|
|
172
|
-
<AtomicDatePicker
|
|
173
|
-
value={appointmentDate}
|
|
174
|
-
onChange={handleDateChange}
|
|
175
|
-
label="Randevu Tarihi"
|
|
176
|
-
placeholder="Randevu tarihi seçin"
|
|
177
|
-
minimumDate={new Date()}
|
|
178
|
-
error={error}
|
|
179
|
-
mode="date"
|
|
180
|
-
/>
|
|
181
|
-
</View>
|
|
182
|
-
);
|
|
183
|
-
};
|
|
79
|
+
// ❌ Generic error
|
|
80
|
+
<AtomicDatePicker
|
|
81
|
+
error="Invalid date" {/* ❌ Not actionable */}
|
|
82
|
+
/>
|
|
184
83
|
```
|
|
185
84
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
```tsx
|
|
189
|
-
export const EventForm = () => {
|
|
190
|
-
const [eventDateTime, setEventDateTime] = useState<Date | null>(null);
|
|
191
|
-
|
|
192
|
-
return (
|
|
193
|
-
<View style={{ padding: 16 }}>
|
|
194
|
-
<AtomicDatePicker
|
|
195
|
-
value={eventDateTime}
|
|
196
|
-
onChange={setEventDateTime}
|
|
197
|
-
label="Etkinlik Tarihi ve Saati"
|
|
198
|
-
placeholder="Tarih ve saat seçin"
|
|
199
|
-
minimumDate={new Date()}
|
|
200
|
-
mode="datetime"
|
|
201
|
-
/>
|
|
202
|
-
|
|
203
|
-
{eventDateTime && (
|
|
204
|
-
<AtomicText type="bodyMedium" marginTop="sm">
|
|
205
|
-
{eventDateTime.toLocaleString('tr-TR')}
|
|
206
|
-
</AtomicText>
|
|
207
|
-
)}
|
|
208
|
-
</View>
|
|
209
|
-
);
|
|
210
|
-
};
|
|
211
|
-
```
|
|
85
|
+
## Best Practices
|
|
212
86
|
|
|
213
|
-
###
|
|
87
|
+
### Date Constraints
|
|
214
88
|
|
|
89
|
+
✅ **DO**:
|
|
215
90
|
```tsx
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
onChange={setReminderTime}
|
|
224
|
-
label="Hatırlatıcı Saati"
|
|
225
|
-
placeholder="Saat seçin"
|
|
226
|
-
mode="time"
|
|
227
|
-
/>
|
|
228
|
-
|
|
229
|
-
{reminderTime && (
|
|
230
|
-
<AtomicText type="bodyMedium" marginTop="sm">
|
|
231
|
-
{reminderTime.toLocaleTimeString('tr-TR', {
|
|
232
|
-
hour: '2-digit',
|
|
233
|
-
minute: '2-digit',
|
|
234
|
-
})}
|
|
235
|
-
</AtomicText>
|
|
236
|
-
)}
|
|
237
|
-
</View>
|
|
238
|
-
);
|
|
239
|
-
};
|
|
91
|
+
<AtomicDatePicker
|
|
92
|
+
label="Birthday"
|
|
93
|
+
value={birthDate}
|
|
94
|
+
onChange={setBirthDate}
|
|
95
|
+
minimumDate={new Date(1900, 0, 1)}
|
|
96
|
+
maximumDate={new Date()}
|
|
97
|
+
/>
|
|
240
98
|
```
|
|
241
99
|
|
|
242
|
-
|
|
243
|
-
|
|
100
|
+
❌ **DON'T**:
|
|
244
101
|
```tsx
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
return (
|
|
253
|
-
<View style={{ padding: 16 }}>
|
|
254
|
-
<AtomicDatePicker
|
|
255
|
-
value={expiryDate}
|
|
256
|
-
onChange={setExpiryDate}
|
|
257
|
-
label="Geçerlilik Tarihi"
|
|
258
|
-
placeholder="Son kullanma tarihi"
|
|
259
|
-
minimumDate={today}
|
|
260
|
-
maximumDate={nextYear}
|
|
261
|
-
mode="date"
|
|
262
|
-
/>
|
|
263
|
-
</View>
|
|
264
|
-
);
|
|
265
|
-
};
|
|
102
|
+
// ❌ No constraints
|
|
103
|
+
<AtomicDatePicker
|
|
104
|
+
label="Birthday"
|
|
105
|
+
value={birthDate}
|
|
106
|
+
onChange={setBirthDate}
|
|
107
|
+
// User can select any date
|
|
108
|
+
/>
|
|
266
109
|
```
|
|
267
110
|
|
|
268
|
-
|
|
111
|
+
## AI Coding Guidelines
|
|
269
112
|
|
|
270
|
-
|
|
271
|
-
export const DateRangeForm = () => {
|
|
272
|
-
const [startDate, setStartDate] = useState<Date | null>(null);
|
|
273
|
-
const [endDate, setEndDate] = useState<Date | null>(null);
|
|
274
|
-
|
|
275
|
-
return (
|
|
276
|
-
<View style={{ padding: 16 }}>
|
|
277
|
-
<AtomicDatePicker
|
|
278
|
-
value={startDate}
|
|
279
|
-
onChange={(date) => {
|
|
280
|
-
setStartDate(date);
|
|
281
|
-
if (endDate && date > endDate) {
|
|
282
|
-
setEndDate(null);
|
|
283
|
-
}
|
|
284
|
-
}}
|
|
285
|
-
label="Başlangıç Tarihi"
|
|
286
|
-
placeholder="Başlangıç tarihi"
|
|
287
|
-
mode="date"
|
|
288
|
-
/>
|
|
289
|
-
|
|
290
|
-
<AtomicDatePicker
|
|
291
|
-
value={endDate}
|
|
292
|
-
onChange={setEndDate}
|
|
293
|
-
label="Bitiş Tarihi"
|
|
294
|
-
placeholder="Bitiş tarihi"
|
|
295
|
-
minimumDate={startDate || undefined}
|
|
296
|
-
mode="date"
|
|
297
|
-
style={{ marginTop: 16 }}
|
|
298
|
-
/>
|
|
299
|
-
</View>
|
|
300
|
-
);
|
|
301
|
-
};
|
|
302
|
-
```
|
|
113
|
+
### For AI Agents
|
|
303
114
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|------|-----|------------|----------|
|
|
310
|
-
| `value` | `Date \| null` | - **(Zorunlu)** | Seçili tarih |
|
|
311
|
-
| `onChange` | `(date: Date) => void` | - **(Zorunlu)** | Değişiklik olayı |
|
|
312
|
-
| `label` | `string` | - | Etiket metni |
|
|
313
|
-
| `error` | `string` | - | Hata mesajı |
|
|
314
|
-
| `disabled` | `boolean` | `false` | Devre dışı |
|
|
315
|
-
| `minimumDate` | `Date` | - | Minimum tarih |
|
|
316
|
-
| `maximumDate` | `Date` | - | Maksimum tarih |
|
|
317
|
-
| `mode` | `'date' \| 'time' \| 'datetime'` | `'date'` | Picker modu |
|
|
318
|
-
| `placeholder` | `string` | `'Select date'` | Placeholder metni |
|
|
319
|
-
| `style` | `StyleProp<ViewStyle>` | - | Özel stil |
|
|
320
|
-
| `testID` | `string` | - | Test ID'si |
|
|
321
|
-
|
|
322
|
-
## Platform Davranışı
|
|
323
|
-
|
|
324
|
-
### iOS
|
|
325
|
-
- ✨ Bottom sheet modal açılır
|
|
326
|
-
- 🎡 Wheel picker gösterir
|
|
327
|
-
- ✅ "Done" butonu ile onaylar
|
|
328
|
-
- 👆 Swipe down ile kapatılır
|
|
329
|
-
|
|
330
|
-
### Android
|
|
331
|
-
- 📱 Dialog açılır
|
|
332
|
-
- 📅 Takvim view gösterir
|
|
333
|
-
- ✅ Seçimde otomatik kapanır
|
|
115
|
+
1. **Always provide value and onChange**:
|
|
116
|
+
```tsx
|
|
117
|
+
// ✅ Good
|
|
118
|
+
const [date, setDate] = useState<Date | null>(null);
|
|
119
|
+
<AtomicDatePicker value={date} onChange={setDate} label="Date" />
|
|
334
120
|
|
|
335
|
-
|
|
121
|
+
// ❌ Bad
|
|
122
|
+
<AtomicDatePicker label="Date" />
|
|
123
|
+
```
|
|
336
124
|
|
|
337
|
-
|
|
125
|
+
2. **Always set date constraints**:
|
|
126
|
+
```tsx
|
|
127
|
+
// ✅ Good
|
|
128
|
+
<AtomicDatePicker
|
|
129
|
+
label="Birthday"
|
|
130
|
+
maximumDate={new Date()}
|
|
131
|
+
/>
|
|
338
132
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
133
|
+
// ❌ Bad
|
|
134
|
+
<AtomicDatePicker label="Birthday" />
|
|
135
|
+
```
|
|
342
136
|
|
|
343
|
-
|
|
344
|
-
|
|
137
|
+
3. **Always use appropriate mode**:
|
|
138
|
+
```tsx
|
|
139
|
+
// ✅ Good - correct mode
|
|
140
|
+
<AtomicDatePicker mode="date" />
|
|
141
|
+
<AtomicDatePicker mode="time" />
|
|
345
142
|
|
|
346
|
-
//
|
|
347
|
-
<AtomicDatePicker mode="datetime" />
|
|
348
|
-
```
|
|
143
|
+
// ❌ Bad - datetime on Android
|
|
144
|
+
<AtomicDatePicker mode="datetime" />
|
|
145
|
+
```
|
|
349
146
|
|
|
350
|
-
###
|
|
147
|
+
### Common Patterns
|
|
351
148
|
|
|
149
|
+
#### Date Picker
|
|
352
150
|
```tsx
|
|
353
|
-
// Geçmiş tarih için
|
|
354
151
|
<AtomicDatePicker
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
<AtomicDatePicker
|
|
360
|
-
minimumDate={new Date()}
|
|
152
|
+
label="Date"
|
|
153
|
+
value={date}
|
|
154
|
+
onChange={setDate}
|
|
155
|
+
mode="date"
|
|
361
156
|
/>
|
|
157
|
+
```
|
|
362
158
|
|
|
363
|
-
|
|
159
|
+
#### Time Picker
|
|
160
|
+
```tsx
|
|
364
161
|
<AtomicDatePicker
|
|
365
|
-
|
|
366
|
-
|
|
162
|
+
label="Time"
|
|
163
|
+
value={time}
|
|
164
|
+
onChange={setTime}
|
|
165
|
+
mode="time"
|
|
367
166
|
/>
|
|
368
167
|
```
|
|
369
168
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
```tsx
|
|
373
|
-
const validateDate = (date: Date) => {
|
|
374
|
-
const today = new Date();
|
|
375
|
-
if (date < today) {
|
|
376
|
-
return 'Geçmiş tarih seçemezsiniz';
|
|
377
|
-
}
|
|
378
|
-
return '';
|
|
379
|
-
};
|
|
380
|
-
```
|
|
169
|
+
## Props Reference
|
|
381
170
|
|
|
382
|
-
|
|
171
|
+
| Prop | Type | Required | Default | Description |
|
|
172
|
+
|------|------|----------|---------|-------------|
|
|
173
|
+
| `value` | `Date \| null` | Yes | - | Selected date |
|
|
174
|
+
| `onChange` | `(date: Date) => void` | Yes | - | Change callback |
|
|
175
|
+
| `label` | `string` | No | - | Field label |
|
|
176
|
+
| `error` | `string` | No | - | Error message |
|
|
177
|
+
| `mode` | `'date' \| 'time' \| 'datetime'` | No | `'date'` | Picker mode |
|
|
178
|
+
| `minimumDate` | `Date` | No | - | Minimum date |
|
|
179
|
+
| `maximumDate` | `Date` | No | - | Maximum date |
|
|
383
180
|
|
|
384
|
-
|
|
181
|
+
## Accessibility
|
|
385
182
|
|
|
386
|
-
- ✅ Screen reader
|
|
387
|
-
- ✅ Native picker
|
|
388
|
-
- ✅ Error state
|
|
389
|
-
- ✅ Test ID desteği
|
|
183
|
+
- ✅ Screen reader support
|
|
184
|
+
- ✅ Native picker accessibility
|
|
185
|
+
- ✅ Error state announcement
|
|
390
186
|
|
|
391
|
-
##
|
|
187
|
+
## Related Components
|
|
392
188
|
|
|
393
|
-
- [`AtomicInput`](./
|
|
394
|
-
- [`FormField`](
|
|
395
|
-
- [`AtomicPicker`](./picker/README.md) - Seçim bileşeni
|
|
189
|
+
- [`AtomicInput`](./AtomicInput.README.md) - Text input
|
|
190
|
+
- [`FormField`](../molecules/FormField) - Form wrapper
|
|
396
191
|
|
|
397
|
-
##
|
|
192
|
+
## License
|
|
398
193
|
|
|
399
194
|
MIT
|