@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.
- 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/splash/README.md +76 -80
- package/src/molecules/swipe-actions/README.md +376 -588
|
@@ -1,402 +1,164 @@
|
|
|
1
1
|
# AtomicProgress
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A progress bar component for showing determinate progress (0-100%).
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Import & Usage
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- 📝 **Metin Desteği**: Yüzde veya değer gösterimi
|
|
10
|
-
- 🔲 **2 Şekil**: Rounded veya Square
|
|
11
|
-
- ♿ **Erişilebilir**: Tam erişilebilirlik desteği
|
|
12
|
-
|
|
13
|
-
## Kurulum
|
|
14
|
-
|
|
15
|
-
```tsx
|
|
16
|
-
import { AtomicProgress } from 'react-native-design-system';
|
|
7
|
+
```typescript
|
|
8
|
+
import { AtomicProgress } from 'react-native-design-system/src/atoms/AtomicProgress';
|
|
17
9
|
```
|
|
18
10
|
|
|
19
|
-
|
|
11
|
+
**Location:** `src/atoms/AtomicProgress.tsx`
|
|
20
12
|
|
|
21
|
-
|
|
22
|
-
import React from 'react';
|
|
23
|
-
import { View } from 'react-native';
|
|
24
|
-
import { AtomicProgress } from 'react-native-design-system';
|
|
25
|
-
|
|
26
|
-
export const BasicExample = () => {
|
|
27
|
-
return (
|
|
28
|
-
<View style={{ padding: 16 }}>
|
|
29
|
-
<AtomicProgress value={50} />
|
|
30
|
-
</View>
|
|
31
|
-
);
|
|
32
|
-
};
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Basic Progress
|
|
13
|
+
## Basic Usage
|
|
36
14
|
|
|
37
15
|
```tsx
|
|
38
|
-
{/* 0% */}
|
|
39
|
-
<AtomicProgress value={0} />
|
|
40
|
-
|
|
41
|
-
{/* 50% */}
|
|
42
16
|
<AtomicProgress value={50} />
|
|
43
|
-
|
|
44
|
-
{/* 100% */}
|
|
45
|
-
<AtomicProgress value={100} />
|
|
46
17
|
```
|
|
47
18
|
|
|
48
|
-
##
|
|
19
|
+
## Strategy
|
|
49
20
|
|
|
50
|
-
|
|
51
|
-
<View style={{ gap: 16 }}>
|
|
52
|
-
<AtomicProgress value={50} height={4} />
|
|
53
|
-
<AtomicProgress value={50} height={8} />
|
|
54
|
-
<AtomicProgress value={50} height={12} />
|
|
55
|
-
<AtomicProgress value={50} height={16} />
|
|
56
|
-
</View>
|
|
57
|
-
```
|
|
21
|
+
**Purpose**: Show determinate progress for operations with known completion percentage.
|
|
58
22
|
|
|
59
|
-
|
|
23
|
+
**When to Use**:
|
|
24
|
+
- File upload/download progress
|
|
25
|
+
- Task completion progress
|
|
26
|
+
- Form filling progress
|
|
27
|
+
- Loading with known percentage
|
|
28
|
+
- Step-by-step progress
|
|
60
29
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
<AtomicProgress value={50} width={200} />
|
|
66
|
-
</View>
|
|
67
|
-
```
|
|
30
|
+
**When NOT to Use**:
|
|
31
|
+
- For indeterminate loading (use AtomicSpinner instead)
|
|
32
|
+
- When progress percentage is unknown
|
|
33
|
+
- For status indicators (use badges instead)
|
|
68
34
|
|
|
69
|
-
##
|
|
35
|
+
## Rules
|
|
70
36
|
|
|
71
|
-
|
|
72
|
-
<View style={{ gap: 16 }}>
|
|
73
|
-
<AtomicProgress value={50} color="#6366f1" />
|
|
74
|
-
<AtomicProgress value={50} color="#10b981" />
|
|
75
|
-
<AtomicProgress value={50} color="#f59e0b" />
|
|
76
|
-
<AtomicProgress value={50} color="#ef4444" />
|
|
77
|
-
</View>
|
|
78
|
-
```
|
|
37
|
+
### Required
|
|
79
38
|
|
|
80
|
-
|
|
39
|
+
1. **MUST** provide `value` (0-100)
|
|
40
|
+
2. **ALWAYS** clamp value to 0-100 range
|
|
41
|
+
3. **SHOULD** use appropriate height for context
|
|
42
|
+
4. **MUST** provide accessibility label
|
|
43
|
+
5. **SHOULD** use semantic colors for meaning
|
|
44
|
+
6. **ALWAYS** show progress text for meaningful feedback
|
|
81
45
|
|
|
82
|
-
|
|
83
|
-
<View style={{ gap: 16 }}>
|
|
84
|
-
<AtomicProgress value={50} shape="rounded" />
|
|
85
|
-
<AtomicProgress value={50} shape="square" />
|
|
86
|
-
</View>
|
|
87
|
-
```
|
|
46
|
+
### Color Semantics
|
|
88
47
|
|
|
89
|
-
|
|
48
|
+
1. **Primary**: General progress
|
|
49
|
+
2. **Success**: Completion/success
|
|
50
|
+
3. **Warning**: Caution needed
|
|
51
|
+
4. **Error**: Error occurred
|
|
90
52
|
|
|
91
|
-
|
|
92
|
-
<AtomicProgress
|
|
93
|
-
value={75}
|
|
94
|
-
showPercentage
|
|
95
|
-
height={24}
|
|
96
|
-
/>
|
|
97
|
-
```
|
|
53
|
+
## Forbidden
|
|
98
54
|
|
|
99
|
-
|
|
55
|
+
❌ **NEVER** do these:
|
|
100
56
|
|
|
101
57
|
```tsx
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
showValue
|
|
105
|
-
height={24}
|
|
106
|
-
/>
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## Custom Background
|
|
58
|
+
// ❌ No value
|
|
59
|
+
<AtomicProgress /> {/* ❌ Missing required prop */}
|
|
110
60
|
|
|
111
|
-
|
|
112
|
-
<AtomicProgress
|
|
113
|
-
value={50}
|
|
114
|
-
color="#6366f1"
|
|
115
|
-
backgroundColor="#e0e7ff"
|
|
116
|
-
/>
|
|
117
|
-
```
|
|
61
|
+
// ❌ Value out of range
|
|
62
|
+
<AtomicProgress value={150} /> {/* ❌ Must be 0-100 */}
|
|
118
63
|
|
|
119
|
-
|
|
64
|
+
// ❌ For indeterminate loading
|
|
65
|
+
<AtomicProgress value={unknownProgress} /> {/* ❌ Use Spinner */}
|
|
120
66
|
|
|
121
|
-
|
|
67
|
+
// ❌ Too tall
|
|
68
|
+
<AtomicProgress value={50} height={50} /> {/* ❌ Too thick */}
|
|
122
69
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
<AtomicText type="bodyMedium">Yükleniyor...</AtomicText>
|
|
129
|
-
<AtomicText type="bodyMedium" color="primary">
|
|
130
|
-
%{progress}
|
|
131
|
-
</AtomicText>
|
|
132
|
-
</View>
|
|
133
|
-
|
|
134
|
-
<AtomicProgress
|
|
135
|
-
value={progress}
|
|
136
|
-
height={8}
|
|
137
|
-
color="#6366f1"
|
|
138
|
-
showPercentage
|
|
139
|
-
/>
|
|
140
|
-
</View>
|
|
141
|
-
);
|
|
142
|
-
};
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### Görev İlerlemesi
|
|
146
|
-
|
|
147
|
-
```tsx
|
|
148
|
-
export const TaskProgress = ({ completed, total }) => {
|
|
149
|
-
const percentage = (completed / total) * 100;
|
|
150
|
-
|
|
151
|
-
return (
|
|
152
|
-
<View style={{ padding: 16 }}>
|
|
153
|
-
<AtomicText type="bodyMedium" style={{ marginBottom: 8 }}>
|
|
154
|
-
{completed} / {total} görev tamamlandı
|
|
155
|
-
</AtomicText>
|
|
156
|
-
|
|
157
|
-
<AtomicProgress
|
|
158
|
-
value={percentage}
|
|
159
|
-
height={12}
|
|
160
|
-
color="#10b981"
|
|
161
|
-
/>
|
|
162
|
-
</View>
|
|
163
|
-
);
|
|
164
|
-
};
|
|
70
|
+
// ❌ Confusing color
|
|
71
|
+
<AtomicProgress
|
|
72
|
+
value={100}
|
|
73
|
+
color="error" {/* ❌ 100% should be success */}
|
|
74
|
+
/>
|
|
165
75
|
```
|
|
166
76
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
```tsx
|
|
170
|
-
export const FormCompletionProgress = ({ completedSteps, totalSteps }) => {
|
|
171
|
-
const percentage = (completedSteps / totalSteps) * 100;
|
|
172
|
-
|
|
173
|
-
return (
|
|
174
|
-
<View style={{ padding: 16, backgroundColor: '#f8f9fa', borderRadius: 8 }}>
|
|
175
|
-
<AtomicText type="labelLarge" color="textSecondary" style={{ marginBottom: 8 }}>
|
|
176
|
-
Form İlerlemesi
|
|
177
|
-
</AtomicText>
|
|
178
|
-
|
|
179
|
-
<AtomicProgress
|
|
180
|
-
value={percentage}
|
|
181
|
-
height={8}
|
|
182
|
-
color="#6366f1"
|
|
183
|
-
showPercentage
|
|
184
|
-
/>
|
|
185
|
-
|
|
186
|
-
<AtomicText type="bodySmall" color="textTertiary" style={{ marginTop: 8 }}>
|
|
187
|
-
{completedSteps} / {totalSteps} adım tamamlandı
|
|
188
|
-
</AtomicText>
|
|
189
|
-
</View>
|
|
190
|
-
);
|
|
191
|
-
};
|
|
192
|
-
```
|
|
77
|
+
## Best Practices
|
|
193
78
|
|
|
194
|
-
###
|
|
79
|
+
### Value Management
|
|
195
80
|
|
|
81
|
+
✅ **DO**:
|
|
196
82
|
```tsx
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
return (
|
|
201
|
-
<View style={{ padding: 16 }}>
|
|
202
|
-
<View style={{ flexDirection: 'row', justifyContent: 'space-between', marginBottom: 8 }}>
|
|
203
|
-
<AtomicText type="bodyMedium" fontWeight="600">
|
|
204
|
-
Başarı İlerlemesi
|
|
205
|
-
</AtomicText>
|
|
206
|
-
<AtomicText type="bodyMedium" color="success">
|
|
207
|
-
{current} / {target}
|
|
208
|
-
</AtomicText>
|
|
209
|
-
</View>
|
|
210
|
-
|
|
211
|
-
<AtomicProgress
|
|
212
|
-
value={percentage}
|
|
213
|
-
height={16}
|
|
214
|
-
color="#10b981"
|
|
215
|
-
backgroundColor="#d4edda"
|
|
216
|
-
showPercentage
|
|
217
|
-
/>
|
|
218
|
-
</View>
|
|
219
|
-
);
|
|
220
|
-
};
|
|
83
|
+
const progress = (completed / total) * 100;
|
|
84
|
+
<AtomicProgress value={progress} />
|
|
221
85
|
```
|
|
222
86
|
|
|
223
|
-
|
|
224
|
-
|
|
87
|
+
❌ **DON'T**:
|
|
225
88
|
```tsx
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
const downloadedMB = (downloaded / 1024 / 1024).toFixed(2);
|
|
229
|
-
const totalMB = (total / 1024 / 1024).toFixed(2);
|
|
230
|
-
|
|
231
|
-
return (
|
|
232
|
-
<View style={{ padding: 16 }}>
|
|
233
|
-
<AtomicText type="bodyMedium" fontWeight="600" style={{ marginBottom: 4 }}>
|
|
234
|
-
{filename}
|
|
235
|
-
</AtomicText>
|
|
236
|
-
|
|
237
|
-
<View style={{ flexDirection: 'row', justifyContent: 'space-between', marginBottom: 8 }}>
|
|
238
|
-
<AtomicText type="bodySmall" color="textSecondary">
|
|
239
|
-
{downloadedMB} MB / {totalMB} MB
|
|
240
|
-
</AtomicText>
|
|
241
|
-
<AtomicText type="bodySmall" color="primary">
|
|
242
|
-
%{Math.round(percentage)}
|
|
243
|
-
</AtomicText>
|
|
244
|
-
</View>
|
|
245
|
-
|
|
246
|
-
<AtomicProgress
|
|
247
|
-
value={percentage}
|
|
248
|
-
height={6}
|
|
249
|
-
color="#6366f1"
|
|
250
|
-
/>
|
|
251
|
-
</View>
|
|
252
|
-
);
|
|
253
|
-
};
|
|
89
|
+
// ❌ Unclamped value
|
|
90
|
+
<AtomicProgress value={150} />
|
|
254
91
|
```
|
|
255
92
|
|
|
256
|
-
|
|
93
|
+
## AI Coding Guidelines
|
|
257
94
|
|
|
258
|
-
|
|
259
|
-
export const ReadingProgress = ({ currentPage, totalPages }) => {
|
|
260
|
-
const percentage = (currentPage / totalPages) * 100;
|
|
261
|
-
|
|
262
|
-
return (
|
|
263
|
-
<View style={{ padding: 16 }}>
|
|
264
|
-
<AtomicText type="labelLarge" color="textSecondary" style={{ marginBottom: 8 }}>
|
|
265
|
-
Okuma İlerlemesi
|
|
266
|
-
</AtomicText>
|
|
267
|
-
|
|
268
|
-
<AtomicProgress
|
|
269
|
-
value={percentage}
|
|
270
|
-
height={8}
|
|
271
|
-
color="#8b5cf6"
|
|
272
|
-
showPercentage
|
|
273
|
-
/>
|
|
274
|
-
|
|
275
|
-
<AtomicText type="bodySmall" color="textTertiary" style={{ marginTop: 8 }}>
|
|
276
|
-
Sayfa {currentPage} / {totalPages}
|
|
277
|
-
</AtomicText>
|
|
278
|
-
</View>
|
|
279
|
-
);
|
|
280
|
-
};
|
|
281
|
-
```
|
|
95
|
+
### For AI Agents
|
|
282
96
|
|
|
283
|
-
|
|
97
|
+
1. **Always provide value**:
|
|
98
|
+
```tsx
|
|
99
|
+
// ✅ Good
|
|
100
|
+
<AtomicProgress value={progress} />
|
|
284
101
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
const formatTime = (seconds) => {
|
|
290
|
-
const mins = Math.floor(seconds / 60);
|
|
291
|
-
const secs = Math.floor(seconds % 60);
|
|
292
|
-
return `${mins}:${secs.toString().padStart(2, '0')}`;
|
|
293
|
-
};
|
|
294
|
-
|
|
295
|
-
return (
|
|
296
|
-
<View style={{ padding: 8 }}>
|
|
297
|
-
<AtomicProgress
|
|
298
|
-
value={percentage}
|
|
299
|
-
height={4}
|
|
300
|
-
color="#ef4444"
|
|
301
|
-
backgroundColor="#374151"
|
|
302
|
-
/>
|
|
303
|
-
|
|
304
|
-
<View style={{ flexDirection: 'row', justifyContent: 'space-between', marginTop: 4 }}>
|
|
305
|
-
<AtomicText type="bodySmall" color="textSecondary">
|
|
306
|
-
{formatTime(currentTime)}
|
|
307
|
-
</AtomicText>
|
|
308
|
-
<AtomicText type="bodySmall" color="textSecondary">
|
|
309
|
-
{formatTime(duration)}
|
|
310
|
-
</AtomicText>
|
|
311
|
-
</View>
|
|
312
|
-
</View>
|
|
313
|
-
);
|
|
314
|
-
};
|
|
315
|
-
```
|
|
102
|
+
// ❌ Bad
|
|
103
|
+
<AtomicProgress />
|
|
104
|
+
```
|
|
316
105
|
|
|
317
|
-
|
|
106
|
+
2. **Always clamp value to 0-100**:
|
|
107
|
+
```tsx
|
|
108
|
+
// ✅ Good
|
|
109
|
+
const value = Math.max(0, Math.min(100, progress));
|
|
110
|
+
<AtomicProgress value={value} />
|
|
318
111
|
|
|
319
|
-
|
|
112
|
+
// ❌ Bad
|
|
113
|
+
<AtomicProgress value={progress} /> {/* Could be > 100 */}
|
|
114
|
+
```
|
|
320
115
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
| `width` | `number \| string` | `'100%'` | Genişlik |
|
|
326
|
-
| `color` | `string` | - | İlerleme rengi |
|
|
327
|
-
| `backgroundColor` | `string` | - | Arka plan rengi |
|
|
328
|
-
| `shape` | `'rounded' \| 'square'` | `'rounded'` | Şekil |
|
|
329
|
-
| `showPercentage` | `boolean` | `false` | Yüzde göster |
|
|
330
|
-
| `showValue` | `boolean` | `false` | Değer göster |
|
|
331
|
-
| `textColor` | `string` | - | Metin rengi |
|
|
332
|
-
| `style` | `ViewStyle` | - | Özel stil |
|
|
333
|
-
| `testID` | `string` | - | Test ID'si |
|
|
116
|
+
3. **Always use appropriate height**:
|
|
117
|
+
```tsx
|
|
118
|
+
// ✅ Good
|
|
119
|
+
<AtomicProgress value={50} height={8} />
|
|
334
120
|
|
|
335
|
-
|
|
121
|
+
// ❌ Bad
|
|
122
|
+
<AtomicProgress value={50} height={30} /> {/* Too thick */}
|
|
123
|
+
```
|
|
336
124
|
|
|
337
|
-
###
|
|
125
|
+
### Common Patterns
|
|
338
126
|
|
|
127
|
+
#### Basic Progress
|
|
339
128
|
```tsx
|
|
340
|
-
|
|
341
|
-
<AtomicProgress height={4} />
|
|
342
|
-
|
|
343
|
-
// Normal
|
|
344
|
-
<AtomicProgress height={8} />
|
|
345
|
-
|
|
346
|
-
// Kalın
|
|
347
|
-
<AtomicProgress height={16} />
|
|
129
|
+
<AtomicProgress value={50} />
|
|
348
130
|
```
|
|
349
131
|
|
|
350
|
-
|
|
351
|
-
|
|
132
|
+
#### With Percentage
|
|
352
133
|
```tsx
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
// Uyarı (turuncu)
|
|
360
|
-
<AtomicProgress color="#f59e0b" />
|
|
361
|
-
|
|
362
|
-
// Hata (kırmızı)
|
|
363
|
-
<AtomicProgress color="#ef4444" />
|
|
134
|
+
<AtomicProgress
|
|
135
|
+
value={75}
|
|
136
|
+
showPercentage
|
|
137
|
+
height={24}
|
|
138
|
+
/>
|
|
364
139
|
```
|
|
365
140
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
```tsx
|
|
369
|
-
// Yüzde
|
|
370
|
-
<AtomicProgress showPercentage height={24} />
|
|
371
|
-
|
|
372
|
-
// Değer
|
|
373
|
-
<AtomicProgress showValue height={24} />
|
|
141
|
+
## Props Reference
|
|
374
142
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
143
|
+
| Prop | Type | Required | Default | Description |
|
|
144
|
+
|------|------|----------|---------|-------------|
|
|
145
|
+
| `value` | `number` | Yes | - | Progress value (0-100) |
|
|
146
|
+
| `height` | `number` | No | `8` | Progress bar height |
|
|
147
|
+
| `color` | `string` | No | - | Progress color |
|
|
148
|
+
| `showPercentage` | `boolean` | No | `false` | Show percentage text |
|
|
149
|
+
| `showValue` | `boolean` | No | `false` | Show value text |
|
|
380
150
|
|
|
381
|
-
|
|
151
|
+
## Accessibility
|
|
382
152
|
|
|
383
153
|
- ✅ Progress bar role
|
|
384
154
|
- ✅ Accessibility label
|
|
385
155
|
- ✅ Accessibility value (min, max, now)
|
|
386
|
-
- ✅ Screen reader desteği
|
|
387
|
-
|
|
388
|
-
## Performans İpuçları
|
|
389
|
-
|
|
390
|
-
1. **Value Clamping**: Değer otomatik olarak 0-100 arası sınırlanır
|
|
391
|
-
2. **Avoid Re-renders**: `value` prop'unu stabilize edin
|
|
392
|
-
3. **Animation**: İlerleme animasyonu için Animated.Value kullanın
|
|
393
156
|
|
|
394
|
-
##
|
|
157
|
+
## Related Components
|
|
395
158
|
|
|
396
|
-
- [`AtomicSpinner`](./AtomicSpinner
|
|
397
|
-
- [`AtomicSkeleton`](./skeleton/AtomicSkeleton
|
|
398
|
-
- [`EmptyState`](./EmptyState/README.md) - Boş durum
|
|
159
|
+
- [`AtomicSpinner`](./AtomicSpinner.README.md) - Indeterminate loading
|
|
160
|
+
- [`AtomicSkeleton`](./skeleton/AtomicSkeleton.README.md) - Skeleton placeholder
|
|
399
161
|
|
|
400
|
-
##
|
|
162
|
+
## License
|
|
401
163
|
|
|
402
164
|
MIT
|