@umituz/react-native-design-system 2.6.94 → 2.6.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/package.json +1 -1
  2. package/src/atoms/AtomicAvatar.README.md +284 -397
  3. package/src/atoms/AtomicBadge.README.md +123 -358
  4. package/src/atoms/AtomicCard.README.md +358 -247
  5. package/src/atoms/AtomicDatePicker.README.md +127 -332
  6. package/src/atoms/AtomicFab.README.md +194 -352
  7. package/src/atoms/AtomicIcon.README.md +241 -274
  8. package/src/atoms/AtomicProgress.README.md +100 -338
  9. package/src/atoms/AtomicSpinner.README.md +304 -337
  10. package/src/atoms/AtomicText.README.md +153 -389
  11. package/src/atoms/AtomicTextArea.README.md +267 -268
  12. package/src/atoms/EmptyState.README.md +247 -292
  13. package/src/atoms/GlassView/README.md +313 -444
  14. package/src/atoms/button/README.md +186 -297
  15. package/src/atoms/button/STRATEGY.md +252 -0
  16. package/src/atoms/chip/README.md +242 -290
  17. package/src/atoms/input/README.md +296 -290
  18. package/src/atoms/picker/README.md +278 -309
  19. package/src/atoms/skeleton/AtomicSkeleton.README.md +394 -252
  20. package/src/molecules/BaseModal/README.md +356 -0
  21. package/src/molecules/BaseModal.README.md +324 -200
  22. package/src/molecules/ConfirmationModal.README.md +349 -302
  23. package/src/molecules/Divider/README.md +293 -376
  24. package/src/molecules/FormField.README.md +321 -534
  25. package/src/molecules/GlowingCard/GlowingCard.tsx +1 -1
  26. package/src/molecules/GlowingCard/README.md +230 -372
  27. package/src/molecules/List/README.md +281 -488
  28. package/src/molecules/ListItem.README.md +320 -315
  29. package/src/molecules/SearchBar/README.md +332 -430
  30. package/src/molecules/StepHeader/README.md +311 -411
  31. package/src/molecules/StepProgress/README.md +281 -448
  32. package/src/molecules/alerts/README.md +272 -355
  33. package/src/molecules/avatar/README.md +295 -356
  34. package/src/molecules/bottom-sheet/README.md +303 -340
  35. package/src/molecules/calendar/README.md +301 -265
  36. package/src/molecules/countdown/README.md +347 -456
  37. package/src/molecules/emoji/README.md +281 -514
  38. package/src/molecules/listitem/README.md +307 -399
  39. package/src/molecules/media-card/MediaCard.tsx +31 -34
  40. package/src/molecules/media-card/README.md +217 -319
  41. package/src/molecules/navigation/README.md +263 -284
  42. package/src/molecules/splash/README.md +76 -80
  43. package/src/molecules/swipe-actions/README.md +376 -588
@@ -1,399 +1,194 @@
1
1
  # AtomicDatePicker
2
2
 
3
- AtomicDatePicker, platforma özel native tarih/saat seçici bileşenidir. iOS ve Android'de tutarlı bir deneyim sunar.
3
+ A platform-native date/time picker component for React Native.
4
4
 
5
- ## Özellikler
5
+ ## Import & Usage
6
6
 
7
- - 📅 **Tarih Seçimi**: Native tarih picker
8
- - **Saat Seçimi**: Native saat picker
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
- ## Temel Kullanım
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
- ## Date Picker
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
- mode="date"
53
- label="Tarih"
54
- placeholder="Tarih seçin"
19
+ label="Birthday"
20
+ placeholder="Select date"
55
21
  />
56
22
  ```
57
23
 
58
- ## Time Picker
24
+ ## Strategy
59
25
 
60
- ```tsx
61
- const [time, setTime] = useState<Date | null>(null);
26
+ **Purpose**: Provide native date/time selection with platform-appropriate UI.
62
27
 
63
- <AtomicDatePicker
64
- value={time}
65
- onChange={setTime}
66
- mode="time"
67
- label="Saat"
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
- ## DateTime Picker (Sadece iOS)
34
+ **When NOT to Use**:
35
+ - For custom calendar UI (build custom component)
36
+ - When using non-standard calendars
73
37
 
74
- ```tsx
75
- const [dateTime, setDateTime] = useState<Date | null>(null);
38
+ ## Rules
76
39
 
77
- <AtomicDatePicker
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
- ## Min/Max Date
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
- ```tsx
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
- ## Error State
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
- ```tsx
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
- ## Disabled
58
+ **NEVER** do these:
110
59
 
111
60
  ```tsx
61
+ // ❌ No value or onChange
112
62
  <AtomicDatePicker
113
- value={date}
114
- onChange={setDate}
115
- label="Tarih"
116
- disabled
63
+ label="Birthday"
64
+ placeholder="Select date"
65
+ // ❌ Missing value and onChange
117
66
  />
118
- ```
119
67
 
120
- ## Örnek Kullanımlar
121
-
122
- ### Doğum Tarihi
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
- ### Randevu Tarihi
73
+ // No date constraints
74
+ <AtomicDatePicker
75
+ label="Birthday"
76
+ // ❌ Should have maximumDate
77
+ />
151
78
 
152
- ```tsx
153
- export const AppointmentForm = () => {
154
- const [appointmentDate, setAppointmentDate] = useState<Date | null>(null);
155
- const [error, setError] = useState('');
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
- ### Etkinlik Tarihi ve Saati
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
- ### Hatırlatıcı Saati
87
+ ### Date Constraints
214
88
 
89
+ ✅ **DO**:
215
90
  ```tsx
216
- export const ReminderForm = () => {
217
- const [reminderTime, setReminderTime] = useState<Date | null>(null);
218
-
219
- return (
220
- <View style={{ padding: 16 }}>
221
- <AtomicDatePicker
222
- value={reminderTime}
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
- ### Geçerlilik Tarihi
243
-
100
+ **DON'T**:
244
101
  ```tsx
245
- export const ExpiryForm = () => {
246
- const [expiryDate, setExpiryDate] = useState<Date | null>(null);
247
-
248
- const today = new Date();
249
- const nextYear = new Date();
250
- nextYear.setFullYear(today.getFullYear() + 1);
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
- ### Tarih Aralığı
111
+ ## AI Coding Guidelines
269
112
 
270
- ```tsx
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
- ## Props
305
-
306
- ### AtomicDatePickerProps
307
-
308
- | Prop | Tip | Varsayılan | Açıklama |
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
- ## Best Practices
121
+ // Bad
122
+ <AtomicDatePicker label="Date" />
123
+ ```
336
124
 
337
- ### 1. Mode Seçimi
125
+ 2. **Always set date constraints**:
126
+ ```tsx
127
+ // ✅ Good
128
+ <AtomicDatePicker
129
+ label="Birthday"
130
+ maximumDate={new Date()}
131
+ />
338
132
 
339
- ```tsx
340
- // Sadece tarih
341
- <AtomicDatePicker mode="date" />
133
+ // ❌ Bad
134
+ <AtomicDatePicker label="Birthday" />
135
+ ```
342
136
 
343
- // Sadece saat
344
- <AtomicDatePicker mode="time" />
137
+ 3. **Always use appropriate mode**:
138
+ ```tsx
139
+ // ✅ Good - correct mode
140
+ <AtomicDatePicker mode="date" />
141
+ <AtomicDatePicker mode="time" />
345
142
 
346
- // Tarih ve saat (sadece iOS)
347
- <AtomicDatePicker mode="datetime" />
348
- ```
143
+ // Bad - datetime on Android
144
+ <AtomicDatePicker mode="datetime" />
145
+ ```
349
146
 
350
- ### 2. Tarih Kısıtlamaları
147
+ ### Common Patterns
351
148
 
149
+ #### Date Picker
352
150
  ```tsx
353
- // Geçmiş tarih için
354
151
  <AtomicDatePicker
355
- maximumDate={new Date()}
356
- />
357
-
358
- // Gelecek tarih için
359
- <AtomicDatePicker
360
- minimumDate={new Date()}
152
+ label="Date"
153
+ value={date}
154
+ onChange={setDate}
155
+ mode="date"
361
156
  />
157
+ ```
362
158
 
363
- // Belirli aralık
159
+ #### Time Picker
160
+ ```tsx
364
161
  <AtomicDatePicker
365
- minimumDate={new Date(2024, 0, 1)}
366
- maximumDate={new Date(2024, 11, 31)}
162
+ label="Time"
163
+ value={time}
164
+ onChange={setTime}
165
+ mode="time"
367
166
  />
368
167
  ```
369
168
 
370
- ### 3. Error Handling
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
- ## Erişilebilirlik
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
- AtomicDatePicker, tam erişilebilirlik desteği sunar:
181
+ ## Accessibility
385
182
 
386
- - ✅ Screen reader desteği
387
- - ✅ Native picker erişilebilirliği
388
- - ✅ Error state anonsu
389
- - ✅ Test ID desteği
183
+ - ✅ Screen reader support
184
+ - ✅ Native picker accessibility
185
+ - ✅ Error state announcement
390
186
 
391
- ## İlgili Bileşenler
187
+ ## Related Components
392
188
 
393
- - [`AtomicInput`](./input/README.md) - Input bileşeni
394
- - [`FormField`](../../molecules/FormField/README.md) - Form alanı
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
- ## Lisans
192
+ ## License
398
193
 
399
194
  MIT