@herca/rn-kit 0.1.32 → 0.1.33
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/README.md +5 -3
- package/lib/module/Chip/README_CHIP_ITEM.md +73 -0
- package/lib/module/Select/README.md +26 -17
- package/lib/module/Select/Select.js +8 -2
- package/lib/module/Select/Select.js.map +1 -1
- package/lib/module/Skeleton/README.md +79 -0
- package/lib/module/Skeleton/Skeleton.js +73 -0
- package/lib/module/Skeleton/Skeleton.js.map +1 -0
- package/lib/module/Skeleton/type.js +4 -0
- package/lib/module/Skeleton/type.js.map +1 -0
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/Select/Select.d.ts +1 -1
- package/lib/typescript/src/Select/Select.d.ts.map +1 -1
- package/lib/typescript/src/Select/type.d.ts +2 -0
- package/lib/typescript/src/Select/type.d.ts.map +1 -1
- package/lib/typescript/src/Skeleton/Skeleton.d.ts +5 -0
- package/lib/typescript/src/Skeleton/Skeleton.d.ts.map +1 -0
- package/lib/typescript/src/Skeleton/type.d.ts +10 -0
- package/lib/typescript/src/Skeleton/type.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Chip/README_CHIP_ITEM.md +73 -0
- package/src/Select/README.md +26 -17
- package/src/Select/Select.tsx +8 -1
- package/src/Select/type.tsx +2 -0
- package/src/Skeleton/README.md +79 -0
- package/src/Skeleton/Skeleton.tsx +99 -0
- package/src/Skeleton/type.ts +10 -0
- package/src/index.tsx +4 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ UI Kit untuk pengembangan aplikasi internal **HerCa**.
|
|
|
4
4
|
|
|
5
5
|
Kit ini dirancang untuk mempercepat proses pengembangan antarmuka pengguna dengan pendekatan minimal terhadap penggunaan `style` manual. Beberapa komponen dibuat **fix dan konsisten** agar tampilan aplikasi memiliki nuansa yang seragam.
|
|
6
6
|
|
|
7
|
-
> **Catatan:** Jika menggunakan UI Kit ini, **tidak disarankan untuk menambahkan style atau melakukan kustomisasi manual**.
|
|
7
|
+
> **Catatan:** Jika menggunakan UI Kit ini, **tidak disarankan untuk menambahkan style atau melakukan kustomisasi manual**.
|
|
8
8
|
> Untuk kebutuhan kustomisasi, gunakan konfigurasi `Theme` yang telah disediakan.
|
|
9
9
|
|
|
10
10
|
---
|
|
@@ -107,6 +107,7 @@ Komponen untuk mengumpulkan input dari pengguna.
|
|
|
107
107
|
- [Checkbox](./src/CheckBox/README_CHECKBOX.md)
|
|
108
108
|
- [Checkbox List](./src/CheckBox/README_CHECKBOXLIST.md)
|
|
109
109
|
- [Chip-(Select)](./src/Chip/README.md)
|
|
110
|
+
- [ChipItem](./src/Chip/README_CHIP_ITEM.md)
|
|
110
111
|
- [CounterButton](./src/CounterButton/README.md)
|
|
111
112
|
- [DatePicker](./src/DatePicker/README_DATEPICKER.md)
|
|
112
113
|
- [DropDown](./src/DropDown/README.md)
|
|
@@ -142,7 +143,7 @@ Komponen untuk menyembunyikan atau menampilkan konten.
|
|
|
142
143
|
|
|
143
144
|
---
|
|
144
145
|
|
|
145
|
-
### 🔹 4. Feedback
|
|
146
|
+
### 🔹 4. Feedback
|
|
146
147
|
|
|
147
148
|
Komponen untuk memberikan umpan balik atau informasi kepada pengguna.
|
|
148
149
|
|
|
@@ -169,6 +170,7 @@ Komponen untuk menampilkan informasi atau elemen visual.
|
|
|
169
170
|
- [List](./src/List/README.md)
|
|
170
171
|
- [Timeline](./src/Timeline/README.md)
|
|
171
172
|
- [Typography](./src/Typography/README.md)
|
|
173
|
+
- [Skeleton](./src/Skeleton/README.md)
|
|
172
174
|
|
|
173
175
|
---
|
|
174
176
|
|
|
@@ -184,4 +186,4 @@ Silakan baca panduan kontribusi pada [CONTRIBUTING.md](CONTRIBUTING.md) untuk me
|
|
|
184
186
|
|
|
185
187
|
## 📄 Lisensi
|
|
186
188
|
|
|
187
|
-
MIT License
|
|
189
|
+
MIT License
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# 📦 Komponen `ChipItem` – React Native
|
|
2
|
+
|
|
3
|
+
Komponen `ChipItem` merupakan komponen presentasional dalam bentuk "chip" atau "pill" yang digunakan sebagai bagian dari list filter/select menggunakan UI gaya chip, baik single maupun multiple select.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🔧 Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
| -------------- | ------------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------------------------- |
|
|
11
|
+
| `item` | `ChipOptionProps` | **Required** | Data item yang akan ditampilkan, berisi label, value, dan optional `disabled` |
|
|
12
|
+
| `isSelected` | `(value: boolean) => boolean` | **Required** | Fungsi untuk menentukan apakah item saat ini sedang terpilih |
|
|
13
|
+
| `color` | `'default' \| 'success' \| 'danger' \| 'primary' \| 'warning' \| 'info' \| 'purple' \| 'orange'` | `'default'` | Warna tema chip berdasarkan `CHIP_COLOR_MAP` |
|
|
14
|
+
| `block` | `boolean` | `false` | Apakah chip harus mengisi lebar penuh jika ditampilkan secara vertikal |
|
|
15
|
+
| `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Ukuran padding dan font chip |
|
|
16
|
+
| `renderItem` | `(item: ChipOptionProps, selected: boolean, disabled: boolean) => ReactNode` | `undefined` | Fungsi untuk mengkustomisasi isi tampilan chip |
|
|
17
|
+
| `isHorizontal` | `boolean` | `false` | Jika true, maka `block` akan diabaikan agar chip tetap fleksibel secara horizontal |
|
|
18
|
+
| `onPress` | `(disabled: boolean, val: ChipOptionProps) => void` | `undefined` | Callback saat chip ditekan |
|
|
19
|
+
| `onLayout` | `(event: LayoutChangeEvent) => void` | `undefined` | Callback ketika layout chip dihitung oleh React Native |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 🎨 Style Behavior
|
|
24
|
+
|
|
25
|
+
- **Warna Dinamis**: Warna border, background, dan teks akan menyesuaikan status:
|
|
26
|
+
- Default
|
|
27
|
+
- Selected
|
|
28
|
+
- Disabled
|
|
29
|
+
|
|
30
|
+
- **Ukuran**:
|
|
31
|
+
- `'small'`: Padding kecil, font size 12
|
|
32
|
+
- `'medium'`: Default, font size 14
|
|
33
|
+
- `'large'`: Padding besar, font size 16
|
|
34
|
+
|
|
35
|
+
- **Block Mode**:
|
|
36
|
+
- Bila `block: true` dan `isHorizontal: false`, chip akan mengisi lebar penuh kontainer
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 💡 Contoh Penggunaan
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
<ChipItem
|
|
44
|
+
item={{ label: 'Marketing', value: 'marketing' }}
|
|
45
|
+
isSelected={() => true}
|
|
46
|
+
color="primary"
|
|
47
|
+
size="medium"
|
|
48
|
+
onPress={(disabled, val) => console.log('Pressed:', val)}
|
|
49
|
+
/>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🛠️ Tips
|
|
55
|
+
|
|
56
|
+
- Gunakan `renderItem` untuk mengganti isi chip dengan tampilan kustom.
|
|
57
|
+
- Pastikan `isSelected` di-define dengan benar agar state visual chip sesuai.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 🧱 Dependencies
|
|
62
|
+
|
|
63
|
+
- `Typography`
|
|
64
|
+
- `CHIP_COLOR_MAP`
|
|
65
|
+
- `Pressable` & `StyleSheet` dari React Native
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 🗂️ Related
|
|
70
|
+
|
|
71
|
+
- `Chip`
|
|
72
|
+
- `Select`
|
|
73
|
+
- `ChipOptionProps`
|
|
@@ -14,22 +14,23 @@ Komponen `Select` adalah komponen pemilihan data berbasis bottom sheet dengan du
|
|
|
14
14
|
|
|
15
15
|
## 📦 Props
|
|
16
16
|
|
|
17
|
-
| Prop
|
|
18
|
-
|
|
19
|
-
| `isOpen`
|
|
20
|
-
| `data`
|
|
21
|
-
| `multiple`
|
|
22
|
-
| `renderItem`
|
|
23
|
-
| `onSubmit`
|
|
24
|
-
| `onClose`
|
|
25
|
-
| `onSearch`
|
|
26
|
-
| `required`
|
|
27
|
-
| `loading`
|
|
28
|
-
| `delaySearch
|
|
29
|
-
| `height`
|
|
30
|
-
| `onRefresh`
|
|
31
|
-
| `header`
|
|
32
|
-
| `footer`
|
|
17
|
+
| Prop | Tipe | Default | Keterangan |
|
|
18
|
+
| ------------- | ----------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `isOpen` | `boolean` | `false` | Menentukan apakah bottom sheet terbuka |
|
|
20
|
+
| `data` | `ChipOptionProps[]` | - | Data pilihan untuk ditampilkan |
|
|
21
|
+
| `multiple` | `boolean` | `false` | Mengizinkan multiple selection |
|
|
22
|
+
| `renderItem` | `(item, selected, disabled) => React.ReactNode` | - | Kustom tampilan item |
|
|
23
|
+
| `onSubmit` | `(selected: ChipSelectedProps) => void` | - | Callback saat tombol submit ditekan |
|
|
24
|
+
| `onClose` | `(val: boolean) => void` | - | Callback saat bottom sheet ditutup |
|
|
25
|
+
| `onSearch` | `(val: string) => void` | - | Callback saat input pencarian berubah |
|
|
26
|
+
| `required` | `boolean` | `false` | Jika `true`, validasi input saat submit |
|
|
27
|
+
| `loading` | `boolean` | `false` | Menampilkan loading saat data di-fetch |
|
|
28
|
+
| `delaySearch` | `number` | `300` | Delay pencarian dalam milidetik |
|
|
29
|
+
| `height` | `BottomSheetHeighProps` | - | Ukuran tinggi BottomSheet |
|
|
30
|
+
| `onRefresh` | `() => void` | - | Callback saat pull-to-refresh dilakukan |
|
|
31
|
+
| `header` | ReactElement | – | Jika ingin chip mempunyai header. |
|
|
32
|
+
| `footer` | ReactElement | – | Jika ingin chip mempunyai footer. |
|
|
33
|
+
| `value` | ChipSelectedProps | – | Nilai pilihan yang dikontrol dari luar. Cocok untuk membuat komponen controlled. Akan mensinkronkan state internal selected dengan value setiap kali berubah. |
|
|
33
34
|
|
|
34
35
|
## 📌 Contoh Penggunaan
|
|
35
36
|
|
|
@@ -53,6 +54,7 @@ const MyScreen = () => {
|
|
|
53
54
|
<Button title="Pilih Data" onPress={() => setOpen(true)} />
|
|
54
55
|
<Select
|
|
55
56
|
isOpen={open}
|
|
57
|
+
value={selected}
|
|
56
58
|
data={data}
|
|
57
59
|
multiple={true}
|
|
58
60
|
onClose={() => setOpen(false)}
|
|
@@ -77,4 +79,11 @@ const MyScreen = () => {
|
|
|
77
79
|
- `Loading`
|
|
78
80
|
- `Toast` (untuk validasi/error)
|
|
79
81
|
|
|
80
|
-
- Jika ingin menambahkan animasi shimmer saat loading, bisa modifikasi komponen `Loading`.
|
|
82
|
+
- Jika ingin menambahkan animasi shimmer saat loading, bisa modifikasi komponen `Loading`.
|
|
83
|
+
|
|
84
|
+
## ⚠️ Behavior Penting
|
|
85
|
+
|
|
86
|
+
- Jika `multiple={false}` dan `required={true}`, maka:
|
|
87
|
+
- Item yang dipilih akan langsung dikirim ke `onSubmit`.
|
|
88
|
+
- BottomSheet akan langsung tertutup tanpa menekan tombol submit.
|
|
89
|
+
- Jika `required={false}`, user bisa membatalkan pilihan (deselect), dan mengirim data kosong.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useState } from 'react';
|
|
3
|
+
import { useCallback, useState, useEffect } from 'react';
|
|
4
4
|
import { Keyboard, StyleSheet, TouchableWithoutFeedback, View } from 'react-native';
|
|
5
5
|
import BottomSheet from "../BottomSheet/BottomSheet.js";
|
|
6
6
|
import Button from "../Button/Button.js";
|
|
@@ -27,7 +27,8 @@ export default function Select({
|
|
|
27
27
|
footer,
|
|
28
28
|
header,
|
|
29
29
|
onEndReached,
|
|
30
|
-
submitBtnLabel
|
|
30
|
+
submitBtnLabel,
|
|
31
|
+
value
|
|
31
32
|
}) {
|
|
32
33
|
// const [isOpenSelect, setIsOpenSelect] = useState<boolean | undefined>(false);
|
|
33
34
|
const [selected, setSelected] = useState();
|
|
@@ -66,6 +67,11 @@ export default function Select({
|
|
|
66
67
|
onSearch?.(val);
|
|
67
68
|
}, delaySearch);
|
|
68
69
|
};
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
if (value !== undefined) {
|
|
72
|
+
setSelected(value);
|
|
73
|
+
}
|
|
74
|
+
}, [value]);
|
|
69
75
|
return /*#__PURE__*/_jsx(BottomSheet, {
|
|
70
76
|
onClose: val => handleOnCloseBottom(val),
|
|
71
77
|
isOpen: isOpen,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useState","Keyboard","StyleSheet","TouchableWithoutFeedback","View","BottomSheet","Button","Chip","Input","Loading","useToast","useRef","jsx","_jsx","jsxs","_jsxs","Select","isOpen","data","renderItem","onClose","onSubmit","multiple","onSearch","required","loading","delaySearch","height","onRefresh","refreshing","footer","header","onEndReached","submitBtnLabel","selected","setSelected","searchQuery","setSearchQuery","show","handleOnCloseBottom","val","handleOnPresSubmitSelect","length","searchTimeout","handleOnSearch","current","clearTimeout","setTimeout","title","color","disabled","onPress","
|
|
1
|
+
{"version":3,"names":["useCallback","useState","useEffect","Keyboard","StyleSheet","TouchableWithoutFeedback","View","BottomSheet","Button","Chip","Input","Loading","useToast","useRef","jsx","_jsx","jsxs","_jsxs","Select","isOpen","data","renderItem","onClose","onSubmit","multiple","onSearch","required","loading","delaySearch","height","onRefresh","refreshing","footer","header","onEndReached","submitBtnLabel","value","selected","setSelected","searchQuery","setSearchQuery","show","handleOnCloseBottom","val","handleOnPresSubmitSelect","length","searchTimeout","handleOnSearch","current","clearTimeout","setTimeout","undefined","title","color","disabled","onPress","children","style","styles","container","containerSearch","dismiss","accessible","submitBehavior","icon","placeholder","onChangeText","containerChip","options","direction","scrollable","size","block","onSelect","item","isSame","Array","isArray","nextValue","create","marginBottom","gap","paddingBottom"],"sourceRoot":"../../../src","sources":["Select/Select.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 🦴 Skeleton Loader Component
|
|
2
|
+
|
|
3
|
+
Komponen `Skeleton` adalah placeholder UI yang menampilkan efek shimmer animasi, berguna untuk memberikan feedback loading saat data belum tersedia.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📦 Props
|
|
8
|
+
|
|
9
|
+
| Prop | Tipe | Default | Deskripsi |
|
|
10
|
+
| ----------------- | ---------------- | ---------------------------- | ---------------------------------------------------------------------------------- |
|
|
11
|
+
| `width` | `DimensionValue` | `"100%"` | Lebar dari skeleton block. Bisa berupa angka atau string (`'100%'`, `'50%'`, dsb). |
|
|
12
|
+
| `height` | `DimensionValue` | `50` | Tinggi dari skeleton block. |
|
|
13
|
+
| `rounded` | `number` | `8` | Radius border untuk membuat sudut membulat. |
|
|
14
|
+
| `backgroundColor` | `string` | `"#F0F0F0"` | Warna latar belakang dari blok skeleton. |
|
|
15
|
+
| `shimmerColor` | `string` | `"rgba(255, 255, 255, 0.7)"` | Warna efek shimmer yang bergerak. |
|
|
16
|
+
| `duration` | `number` | `1500` | Durasi animasi shimmer (dalam milidetik). |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 🧠 Cara Kerja
|
|
21
|
+
|
|
22
|
+
- Komponen menggunakan `Animated.Value` untuk menggerakkan efek shimmer dari kiri ke kanan secara loop.
|
|
23
|
+
- Lebar shimmer dihitung berdasarkan lebar aktual komponen yang didapat dari event `onLayout`.
|
|
24
|
+
- Shimmer bergerak dengan `translateX` menggunakan `interpolate()` untuk efek linear mulus.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 📌 Contoh Penggunaan
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
import React from 'react';
|
|
32
|
+
import { View } from 'react-native';
|
|
33
|
+
import Skeleton from './components/Skeleton';
|
|
34
|
+
|
|
35
|
+
const MyLoadingScreen = () => {
|
|
36
|
+
return (
|
|
37
|
+
<View style={{ padding: 16 }}>
|
|
38
|
+
<Skeleton height={20} width="60%" />
|
|
39
|
+
<View style={{ height: 16 }} />
|
|
40
|
+
<Skeleton height={20} width="80%" />
|
|
41
|
+
<View style={{ height: 16 }} />
|
|
42
|
+
<Skeleton height={100} width="100%" rounded={12} />
|
|
43
|
+
</View>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 🧱 Struktur Rendered
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
<View>
|
|
54
|
+
{' '}
|
|
55
|
+
// container
|
|
56
|
+
<Animated.View /> // shimmer yang bergerak horizontal
|
|
57
|
+
</View>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## ⚠️ Catatan
|
|
63
|
+
|
|
64
|
+
- Komponen ini **tidak menerima children**, hanya untuk placeholder visual.
|
|
65
|
+
- Efek shimmer akan selalu berjalan secara loop selama komponen hidup.
|
|
66
|
+
- Perhatikan performa jika digunakan secara masif di satu halaman.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 🛠 Tips
|
|
71
|
+
|
|
72
|
+
- Gunakan `Skeleton` dalam daftar (list, table, card) untuk meningkatkan UX saat loading.
|
|
73
|
+
- Dapat digabungkan dengan kondisi seperti:
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
{
|
|
77
|
+
isLoading ? <Skeleton height={50} /> : <ActualComponent data={data} />;
|
|
78
|
+
}
|
|
79
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useEffect, useRef } from 'react';
|
|
4
|
+
import { Animated, Easing, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
const Skeleton = ({
|
|
7
|
+
width = '100%',
|
|
8
|
+
height = 50,
|
|
9
|
+
rounded = 8,
|
|
10
|
+
backgroundColor = '#F0F0F0',
|
|
11
|
+
shimmerColor = 'rgba(255, 255, 255, 0.7)',
|
|
12
|
+
duration = 1500
|
|
13
|
+
}) => {
|
|
14
|
+
const shimmerAnimation = useRef(new Animated.Value(0)).current;
|
|
15
|
+
const skeletonWidth = useRef(0);
|
|
16
|
+
const handleLayout = event => {
|
|
17
|
+
skeletonWidth.current = event.nativeEvent.layout.width;
|
|
18
|
+
};
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
const animateShimmer = () => {
|
|
21
|
+
Animated.loop(Animated.sequence([Animated.timing(shimmerAnimation, {
|
|
22
|
+
toValue: 1,
|
|
23
|
+
duration: duration,
|
|
24
|
+
easing: Easing.linear,
|
|
25
|
+
useNativeDriver: true
|
|
26
|
+
}), Animated.timing(shimmerAnimation, {
|
|
27
|
+
toValue: 0,
|
|
28
|
+
duration: 0,
|
|
29
|
+
useNativeDriver: true
|
|
30
|
+
})])).start();
|
|
31
|
+
};
|
|
32
|
+
animateShimmer();
|
|
33
|
+
return () => {
|
|
34
|
+
shimmerAnimation.stopAnimation();
|
|
35
|
+
};
|
|
36
|
+
}, [shimmerAnimation, duration]);
|
|
37
|
+
const shimmerTranslate = shimmerAnimation.interpolate({
|
|
38
|
+
inputRange: [0, 1],
|
|
39
|
+
// Gunakan lebar skeleton untuk perhitungan yang presisi
|
|
40
|
+
outputRange: [-200, skeletonWidth.current + 200]
|
|
41
|
+
});
|
|
42
|
+
return /*#__PURE__*/_jsx(View, {
|
|
43
|
+
onLayout: handleLayout,
|
|
44
|
+
style: [styles.skeletonCard, {
|
|
45
|
+
width,
|
|
46
|
+
height,
|
|
47
|
+
backgroundColor,
|
|
48
|
+
borderRadius: rounded
|
|
49
|
+
}],
|
|
50
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
51
|
+
style: [styles.shimmer, {
|
|
52
|
+
backgroundColor: shimmerColor,
|
|
53
|
+
transform: [{
|
|
54
|
+
translateX: shimmerTranslate
|
|
55
|
+
}],
|
|
56
|
+
borderRadius: rounded
|
|
57
|
+
}]
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
export default Skeleton;
|
|
62
|
+
const styles = StyleSheet.create({
|
|
63
|
+
skeletonCard: {
|
|
64
|
+
overflow: 'hidden'
|
|
65
|
+
},
|
|
66
|
+
shimmer: {
|
|
67
|
+
...StyleSheet.absoluteFillObject,
|
|
68
|
+
width: '90%',
|
|
69
|
+
height: '100%',
|
|
70
|
+
opacity: 0.3
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=Skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","Animated","Easing","StyleSheet","View","jsx","_jsx","Skeleton","width","height","rounded","backgroundColor","shimmerColor","duration","shimmerAnimation","Value","current","skeletonWidth","handleLayout","event","nativeEvent","layout","animateShimmer","loop","sequence","timing","toValue","easing","linear","useNativeDriver","start","stopAnimation","shimmerTranslate","interpolate","inputRange","outputRange","onLayout","style","styles","skeletonCard","borderRadius","children","shimmer","transform","translateX","create","overflow","absoluteFillObject","opacity"],"sourceRoot":"../../../src","sources":["Skeleton/Skeleton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SACEC,QAAQ,EACRC,MAAM,EACNC,UAAU,EACVC,IAAI,QAIC,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtB,MAAMC,QAAiC,GAAGA,CAAC;EACzCC,KAAK,GAAG,MAAM;EACdC,MAAM,GAAG,EAAE;EACXC,OAAO,GAAG,CAAC;EACXC,eAAe,GAAG,SAAS;EAC3BC,YAAY,GAAG,0BAA0B;EACzCC,QAAQ,GAAG;AACb,CAAC,KAAK;EACJ,MAAMC,gBAAgB,GAAGd,MAAM,CAAC,IAAIC,QAAQ,CAACc,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAC9D,MAAMC,aAAa,GAAGjB,MAAM,CAAC,CAAC,CAAC;EAE/B,MAAMkB,YAAY,GAAIC,KAAwB,IAAK;IACjDF,aAAa,CAACD,OAAO,GAAGG,KAAK,CAACC,WAAW,CAACC,MAAM,CAACb,KAAK;EACxD,CAAC;EAEDT,SAAS,CAAC,MAAM;IACd,MAAMuB,cAAc,GAAGA,CAAA,KAAM;MAC3BrB,QAAQ,CAACsB,IAAI,CACXtB,QAAQ,CAACuB,QAAQ,CAAC,CAChBvB,QAAQ,CAACwB,MAAM,CAACX,gBAAgB,EAAE;QAChCY,OAAO,EAAE,CAAC;QACVb,QAAQ,EAAEA,QAAQ;QAClBc,MAAM,EAAEzB,MAAM,CAAC0B,MAAM;QACrBC,eAAe,EAAE;MACnB,CAAC,CAAC,EACF5B,QAAQ,CAACwB,MAAM,CAACX,gBAAgB,EAAE;QAChCY,OAAO,EAAE,CAAC;QACVb,QAAQ,EAAE,CAAC;QACXgB,eAAe,EAAE;MACnB,CAAC,CAAC,CACH,CACH,CAAC,CAACC,KAAK,CAAC,CAAC;IACX,CAAC;IAEDR,cAAc,CAAC,CAAC;IAEhB,OAAO,MAAM;MACXR,gBAAgB,CAACiB,aAAa,CAAC,CAAC;IAClC,CAAC;EACH,CAAC,EAAE,CAACjB,gBAAgB,EAAED,QAAQ,CAAC,CAAC;EAEhC,MAAMmB,gBAAgB,GAAGlB,gBAAgB,CAACmB,WAAW,CAAC;IACpDC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClB;IACAC,WAAW,EAAE,CAAC,CAAC,GAAG,EAAElB,aAAa,CAACD,OAAO,GAAG,GAAG;EACjD,CAAC,CAAC;EAEF,oBACEV,IAAA,CAACF,IAAI;IACHgC,QAAQ,EAAElB,YAAa;IACvBmB,KAAK,EAAE,CACLC,MAAM,CAACC,YAAY,EACnB;MACE/B,KAAK;MACLC,MAAM;MACNE,eAAe;MACf6B,YAAY,EAAE9B;IAChB,CAAC,CACD;IAAA+B,QAAA,eAEFnC,IAAA,CAACL,QAAQ,CAACG,IAAI;MACZiC,KAAK,EAAE,CACLC,MAAM,CAACI,OAAO,EACd;QACE/B,eAAe,EAAEC,YAAY;QAC7B+B,SAAS,EAAE,CAAC;UAAEC,UAAU,EAAEZ;QAAiB,CAAC,CAAC;QAC7CQ,YAAY,EAAE9B;MAChB,CAAC;IACD,CACH;EAAC,CACE,CAAC;AAEX,CAAC;AAED,eAAeH,QAAQ;AAEvB,MAAM+B,MAAM,GAAGnC,UAAU,CAAC0C,MAAM,CAAC;EAC/BN,YAAY,EAAE;IACZO,QAAQ,EAAE;EACZ,CAAC;EACDJ,OAAO,EAAE;IACP,GAAGvC,UAAU,CAAC4C,kBAAkB;IAChCvC,KAAK,EAAE,KAAK;IACZC,MAAM,EAAE,MAAM;IACduC,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["Skeleton/type.ts"],"mappings":"","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export { default as Gap } from "./Ui/Gap.js";
|
|
|
18
18
|
export { default as Grid } from "./Ui/Grid.js";
|
|
19
19
|
export { default as Col } from "./Ui/Col.js";
|
|
20
20
|
export { default as Chip } from "./Chip/Chip.js";
|
|
21
|
+
export { default as ChipItem } from "./Chip/ChipItem.js";
|
|
21
22
|
export { default as Footer } from "./Ui/Footer.js";
|
|
22
23
|
export { default as Devider } from "./Ui/Devider.js";
|
|
23
24
|
export { default as Select } from "./Select/Select.js";
|
|
@@ -60,4 +61,6 @@ export { default as TextArea } from "./Input/TextArea.js";
|
|
|
60
61
|
export { default as TextEditor } from "./TextEditor/TextEditor.js";
|
|
61
62
|
// export { default as PdfView } from './FileView/PdfView';
|
|
62
63
|
export { ToastProvider, useToast } from "./Toast/ToastContext.js";
|
|
64
|
+
export { default as Skeleton } from "./Skeleton/Skeleton.js";
|
|
65
|
+
export { default as CounterButton } from "./CounterButton/CounterButton.js";
|
|
63
66
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RnKit","multiply","a","b","default","Accordion","AccordionItem","Button","Color","Typography","BottomSheet","Container","Card","DropDown","Center","Gap","Grid","Col","Chip","Footer","Devider","Select","LabelForm","Input","InputPassword","InputFile","InputOtp","Switch","CheckBox","CheckBoxList","RadioButton","Icon","Modal","Label","List","ListItem","Loading","Avatar","AvatarGroup","Badge","Alert","Timeline","TimelineItem","Theme","Provider","useFooter","Drawing","Calendar","DatePicker","YearPicker","MonthPicker","TimePicker","Step","StepItem","Tab","TabItem","Toast","TextArea","TextEditor","ToastProvider","useToast"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,kBAAe;AAEjC,OAAO,SAASC,QAAQA,CAACC,CAAS,EAAEC,CAAS,EAAU;EACrD,OAAOH,KAAK,CAACC,QAAQ,CAACC,CAAC,EAAEC,CAAC,CAAC;AAC7B;AAEA,SAASC,OAAO,IAAIC,SAAS,QAAQ,0BAAuB;AAC5D,SAASD,OAAO,IAAIE,aAAa,QAAQ,8BAA2B;AAEpE,SAASF,OAAO,IAAIG,MAAM,QAAQ,oBAAiB;AACnD,SAASH,OAAO,IAAII,KAAK,QAAQ,kBAAe;AAEhD,SAASJ,OAAO,IAAIK,UAAU,QAAQ,4BAAyB;AAO/D,SAASL,OAAO,IAAIM,WAAW,QAAQ,8BAA2B;AAClE,SAASN,OAAO,IAAIO,SAAS,QAAQ,mBAAgB;AACrD,SAASP,OAAO,IAAIQ,IAAI,QAAQ,cAAW;AAC3C,SAASR,OAAO,IAAIS,QAAQ,QAAQ,wBAAqB;AACzD,SAAST,OAAO,IAAIU,MAAM,QAAQ,gBAAa;AAC/C,SAASV,OAAO,IAAIW,GAAG,QAAQ,aAAU;AACzC,SAASX,OAAO,IAAIY,IAAI,QAAQ,cAAW;AAC3C,SAASZ,OAAO,IAAIa,GAAG,QAAQ,aAAU;AACzC,SAASb,OAAO,IAAIc,IAAI,QAAQ,gBAAa;
|
|
1
|
+
{"version":3,"names":["RnKit","multiply","a","b","default","Accordion","AccordionItem","Button","Color","Typography","BottomSheet","Container","Card","DropDown","Center","Gap","Grid","Col","Chip","ChipItem","Footer","Devider","Select","LabelForm","Input","InputPassword","InputFile","InputOtp","Switch","CheckBox","CheckBoxList","RadioButton","Icon","Modal","Label","List","ListItem","Loading","Avatar","AvatarGroup","Badge","Alert","Timeline","TimelineItem","Theme","Provider","useFooter","Drawing","Calendar","DatePicker","YearPicker","MonthPicker","TimePicker","Step","StepItem","Tab","TabItem","Toast","TextArea","TextEditor","ToastProvider","useToast","Skeleton","CounterButton"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,kBAAe;AAEjC,OAAO,SAASC,QAAQA,CAACC,CAAS,EAAEC,CAAS,EAAU;EACrD,OAAOH,KAAK,CAACC,QAAQ,CAACC,CAAC,EAAEC,CAAC,CAAC;AAC7B;AAEA,SAASC,OAAO,IAAIC,SAAS,QAAQ,0BAAuB;AAC5D,SAASD,OAAO,IAAIE,aAAa,QAAQ,8BAA2B;AAEpE,SAASF,OAAO,IAAIG,MAAM,QAAQ,oBAAiB;AACnD,SAASH,OAAO,IAAII,KAAK,QAAQ,kBAAe;AAEhD,SAASJ,OAAO,IAAIK,UAAU,QAAQ,4BAAyB;AAO/D,SAASL,OAAO,IAAIM,WAAW,QAAQ,8BAA2B;AAClE,SAASN,OAAO,IAAIO,SAAS,QAAQ,mBAAgB;AACrD,SAASP,OAAO,IAAIQ,IAAI,QAAQ,cAAW;AAC3C,SAASR,OAAO,IAAIS,QAAQ,QAAQ,wBAAqB;AACzD,SAAST,OAAO,IAAIU,MAAM,QAAQ,gBAAa;AAC/C,SAASV,OAAO,IAAIW,GAAG,QAAQ,aAAU;AACzC,SAASX,OAAO,IAAIY,IAAI,QAAQ,cAAW;AAC3C,SAASZ,OAAO,IAAIa,GAAG,QAAQ,aAAU;AACzC,SAASb,OAAO,IAAIc,IAAI,QAAQ,gBAAa;AAC7C,SAASd,OAAO,IAAIe,QAAQ,QAAQ,oBAAiB;AAMrD,SAASf,OAAO,IAAIgB,MAAM,QAAQ,gBAAa;AAC/C,SAAShB,OAAO,IAAIiB,OAAO,QAAQ,iBAAc;AACjD,SAASjB,OAAO,IAAIkB,MAAM,QAAQ,oBAAiB;AAEnD,SAASlB,OAAO,IAAImB,SAAS,QAAQ,0BAAuB;AAC5D,SAASnB,OAAO,IAAIoB,KAAK,QAAQ,kBAAe;AAChD,SAASpB,OAAO,IAAIqB,aAAa,QAAQ,0BAAuB;AAChE,SAASrB,OAAO,IAAIsB,SAAS,QAAQ,sBAAmB;AACxD,SAAStB,OAAO,IAAIuB,QAAQ,QAAQ,qBAAkB;AACtD,SAASvB,OAAO,IAAIwB,MAAM,QAAQ,mBAAgB;AAClD,SAASxB,OAAO,IAAIyB,QAAQ,QAAQ,wBAAqB;AACzD,SAASzB,OAAO,IAAI0B,YAAY,QAAQ,4BAAyB;AACjE,SAAS1B,OAAO,IAAI2B,WAAW,QAAQ,8BAA2B;AAClE,SAAS3B,OAAO,IAAI4B,IAAI,QAAQ,gBAAa;AAE7C,SAAS5B,OAAO,IAAI6B,KAAK,QAAQ,kBAAe;AAChD,SAAS7B,OAAO,IAAI8B,KAAK,QAAQ,kBAAe;AAChD,SAAS9B,OAAO,IAAI+B,IAAI,QAAQ,gBAAa;AAC7C,SAAS/B,OAAO,IAAIgC,QAAQ,QAAQ,oBAAiB;AACrD,SAAShC,OAAO,IAAIiC,OAAO,QAAQ,sBAAmB;AACtD,SAASjC,OAAO,IAAIkC,MAAM,QAAQ,oBAAiB;AACnD,SAASlC,OAAO,IAAImC,WAAW,QAAQ,yBAAsB;AAC7D,SAASnC,OAAO,IAAIoC,KAAK,QAAQ,kBAAe;AAOhD,SAASpC,OAAO,IAAIqC,KAAK,QAAQ,kBAAe;AAChD,SAASrC,OAAO,IAAIsC,QAAQ,QAAQ,wBAAqB;AACzD,SAAStC,OAAO,IAAIuC,YAAY,QAAQ,4BAAyB;AACjE,SAASvC,OAAO,IAAIwC,KAAK,QAAQ,kBAAe;AAChD,SAASxC,OAAO,IAAIyC,QAAQ,QAAQ,wBAAqB;AACzD,SAASzC,OAAO,IAAI0C,SAAS,QAAQ,wBAAqB;AAC1D,SAAS1C,OAAO,IAAI2C,OAAO,QAAQ,sBAAmB;AACtD,SAAS3C,OAAO,IAAI4C,QAAQ,QAAQ,wBAAqB;AAEzD,SAAS5C,OAAO,IAAI6C,UAAU,QAAQ,4BAAyB;AAC/D,SAAS7C,OAAO,IAAI8C,UAAU,QAAQ,4BAAyB;AAC/D,SAAS9C,OAAO,IAAI+C,WAAW,QAAQ,6BAA0B;AACjE,SAAS/C,OAAO,IAAIgD,UAAU,QAAQ,4BAAyB;AAC/D,SAAShD,OAAO,IAAIiD,IAAI,QAAQ,gBAAa;AAC7C,SAASjD,OAAO,IAAIkD,QAAQ,QAAQ,oBAAiB;AACrD,SAASlD,OAAO,IAAImD,GAAG,QAAQ,cAAW;AAC1C,SAASnD,OAAO,IAAIoD,OAAO,QAAQ,kBAAe;AAClD,SAASpD,OAAO,IAAIqD,KAAK,QAAQ,kBAAe;AAChD,SAASrD,OAAO,IAAIsD,QAAQ,QAAQ,qBAAkB;AACtD,SAAStD,OAAO,IAAIuD,UAAU,QAAQ,4BAAyB;AAC/D;AACA,SAASC,aAAa,EAAEC,QAAQ,QAAQ,yBAAsB;AAC9D,SAASzD,OAAO,IAAI0D,QAAQ,QAAQ,wBAAqB;AAEzD,SAAS1D,OAAO,IAAI2D,aAAa,QAAQ,kCAA+B","ignoreList":[]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type SelectProps } from './type';
|
|
2
|
-
export default function Select({ isOpen, data, renderItem, onClose, onSubmit, multiple, onSearch, required, loading, delaySearch, height, onRefresh, refreshing, footer, header, onEndReached, submitBtnLabel, }: SelectProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export default function Select({ isOpen, data, renderItem, onClose, onSubmit, multiple, onSearch, required, loading, delaySearch, height, onRefresh, refreshing, footer, header, onEndReached, submitBtnLabel, value, }: SelectProps): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=Select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/Select/Select.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,MAAM,EACN,IAAI,EACJ,UAAU,EACV,OAAO,EACP,QAAQ,EACR,QAAgB,EAChB,QAAQ,EACR,QAAgB,EAChB,OAAe,EACf,WAAiB,EACjB,MAAM,EACN,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/Select/Select.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,MAAM,EACN,IAAI,EACJ,UAAU,EACV,OAAO,EACP,QAAQ,EACR,QAAgB,EAChB,QAAQ,EACR,QAAgB,EAChB,OAAe,EACf,WAAiB,EACjB,MAAM,EACN,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,YAAY,EACZ,cAAc,EACd,KAAK,GACN,EAAE,WAAW,2CA4Hb"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { ChipOnSelectProps, ChipOptionProps } from '../Chip/type';
|
|
3
3
|
import type { BottomSheetHeighProps } from '../BottomSheet/type';
|
|
4
|
+
import type { ChipSelectedProps } from '../Chip/type';
|
|
4
5
|
export interface SelectDataProps {
|
|
5
6
|
value: string | number;
|
|
6
7
|
label: string | number;
|
|
@@ -22,6 +23,7 @@ export interface SelectProps {
|
|
|
22
23
|
onEndReached?: () => void;
|
|
23
24
|
refreshing?: boolean;
|
|
24
25
|
submitBtnLabel?: string;
|
|
26
|
+
value?: ChipSelectedProps;
|
|
25
27
|
footer?: React.ComponentType<any> | React.ReactElement | null | undefined;
|
|
26
28
|
header?: React.ComponentType<any> | React.ReactElement | null | undefined;
|
|
27
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Select/type.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Select/type.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAClC,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,KACd,KAAK,CAAC,SAAS,CAAC;AAErB,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1E,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;CAC3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../../src/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAUjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwErC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DimensionValue } from 'react-native';
|
|
2
|
+
export interface SkeletonProps {
|
|
3
|
+
width?: DimensionValue;
|
|
4
|
+
height?: DimensionValue;
|
|
5
|
+
rounded?: number;
|
|
6
|
+
backgroundColor?: string;
|
|
7
|
+
shimmerColor?: string;
|
|
8
|
+
duration?: number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Skeleton/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -16,6 +16,7 @@ export { default as Gap } from './Ui/Gap';
|
|
|
16
16
|
export { default as Grid } from './Ui/Grid';
|
|
17
17
|
export { default as Col } from './Ui/Col';
|
|
18
18
|
export { default as Chip } from './Chip/Chip';
|
|
19
|
+
export { default as ChipItem } from './Chip/ChipItem';
|
|
19
20
|
export type { ChipSelectedProps, ChipOnSelectProps, ChipOptionProps, } from './Chip/type';
|
|
20
21
|
export { default as Footer } from './Ui/Footer';
|
|
21
22
|
export { default as Devider } from './Ui/Devider';
|
|
@@ -62,4 +63,7 @@ export { default as Toast } from './Toast/Toast';
|
|
|
62
63
|
export { default as TextArea } from './Input/TextArea';
|
|
63
64
|
export { default as TextEditor } from './TextEditor/TextEditor';
|
|
64
65
|
export { ToastProvider, useToast } from './Toast/ToastContext';
|
|
66
|
+
export { default as Skeleton } from './Skeleton/Skeleton';
|
|
67
|
+
export type { SkeletonProps } from './Skeleton/type';
|
|
68
|
+
export { default as CounterButton } from './CounterButton/CounterButton';
|
|
65
69
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# 📦 Komponen `ChipItem` – React Native
|
|
2
|
+
|
|
3
|
+
Komponen `ChipItem` merupakan komponen presentasional dalam bentuk "chip" atau "pill" yang digunakan sebagai bagian dari list filter/select menggunakan UI gaya chip, baik single maupun multiple select.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🔧 Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
| -------------- | ------------------------------------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------------------------- |
|
|
11
|
+
| `item` | `ChipOptionProps` | **Required** | Data item yang akan ditampilkan, berisi label, value, dan optional `disabled` |
|
|
12
|
+
| `isSelected` | `(value: boolean) => boolean` | **Required** | Fungsi untuk menentukan apakah item saat ini sedang terpilih |
|
|
13
|
+
| `color` | `'default' \| 'success' \| 'danger' \| 'primary' \| 'warning' \| 'info' \| 'purple' \| 'orange'` | `'default'` | Warna tema chip berdasarkan `CHIP_COLOR_MAP` |
|
|
14
|
+
| `block` | `boolean` | `false` | Apakah chip harus mengisi lebar penuh jika ditampilkan secara vertikal |
|
|
15
|
+
| `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Ukuran padding dan font chip |
|
|
16
|
+
| `renderItem` | `(item: ChipOptionProps, selected: boolean, disabled: boolean) => ReactNode` | `undefined` | Fungsi untuk mengkustomisasi isi tampilan chip |
|
|
17
|
+
| `isHorizontal` | `boolean` | `false` | Jika true, maka `block` akan diabaikan agar chip tetap fleksibel secara horizontal |
|
|
18
|
+
| `onPress` | `(disabled: boolean, val: ChipOptionProps) => void` | `undefined` | Callback saat chip ditekan |
|
|
19
|
+
| `onLayout` | `(event: LayoutChangeEvent) => void` | `undefined` | Callback ketika layout chip dihitung oleh React Native |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 🎨 Style Behavior
|
|
24
|
+
|
|
25
|
+
- **Warna Dinamis**: Warna border, background, dan teks akan menyesuaikan status:
|
|
26
|
+
- Default
|
|
27
|
+
- Selected
|
|
28
|
+
- Disabled
|
|
29
|
+
|
|
30
|
+
- **Ukuran**:
|
|
31
|
+
- `'small'`: Padding kecil, font size 12
|
|
32
|
+
- `'medium'`: Default, font size 14
|
|
33
|
+
- `'large'`: Padding besar, font size 16
|
|
34
|
+
|
|
35
|
+
- **Block Mode**:
|
|
36
|
+
- Bila `block: true` dan `isHorizontal: false`, chip akan mengisi lebar penuh kontainer
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 💡 Contoh Penggunaan
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
<ChipItem
|
|
44
|
+
item={{ label: 'Marketing', value: 'marketing' }}
|
|
45
|
+
isSelected={() => true}
|
|
46
|
+
color="primary"
|
|
47
|
+
size="medium"
|
|
48
|
+
onPress={(disabled, val) => console.log('Pressed:', val)}
|
|
49
|
+
/>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🛠️ Tips
|
|
55
|
+
|
|
56
|
+
- Gunakan `renderItem` untuk mengganti isi chip dengan tampilan kustom.
|
|
57
|
+
- Pastikan `isSelected` di-define dengan benar agar state visual chip sesuai.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 🧱 Dependencies
|
|
62
|
+
|
|
63
|
+
- `Typography`
|
|
64
|
+
- `CHIP_COLOR_MAP`
|
|
65
|
+
- `Pressable` & `StyleSheet` dari React Native
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 🗂️ Related
|
|
70
|
+
|
|
71
|
+
- `Chip`
|
|
72
|
+
- `Select`
|
|
73
|
+
- `ChipOptionProps`
|
package/src/Select/README.md
CHANGED
|
@@ -14,22 +14,23 @@ Komponen `Select` adalah komponen pemilihan data berbasis bottom sheet dengan du
|
|
|
14
14
|
|
|
15
15
|
## 📦 Props
|
|
16
16
|
|
|
17
|
-
| Prop
|
|
18
|
-
|
|
19
|
-
| `isOpen`
|
|
20
|
-
| `data`
|
|
21
|
-
| `multiple`
|
|
22
|
-
| `renderItem`
|
|
23
|
-
| `onSubmit`
|
|
24
|
-
| `onClose`
|
|
25
|
-
| `onSearch`
|
|
26
|
-
| `required`
|
|
27
|
-
| `loading`
|
|
28
|
-
| `delaySearch
|
|
29
|
-
| `height`
|
|
30
|
-
| `onRefresh`
|
|
31
|
-
| `header`
|
|
32
|
-
| `footer`
|
|
17
|
+
| Prop | Tipe | Default | Keterangan |
|
|
18
|
+
| ------------- | ----------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `isOpen` | `boolean` | `false` | Menentukan apakah bottom sheet terbuka |
|
|
20
|
+
| `data` | `ChipOptionProps[]` | - | Data pilihan untuk ditampilkan |
|
|
21
|
+
| `multiple` | `boolean` | `false` | Mengizinkan multiple selection |
|
|
22
|
+
| `renderItem` | `(item, selected, disabled) => React.ReactNode` | - | Kustom tampilan item |
|
|
23
|
+
| `onSubmit` | `(selected: ChipSelectedProps) => void` | - | Callback saat tombol submit ditekan |
|
|
24
|
+
| `onClose` | `(val: boolean) => void` | - | Callback saat bottom sheet ditutup |
|
|
25
|
+
| `onSearch` | `(val: string) => void` | - | Callback saat input pencarian berubah |
|
|
26
|
+
| `required` | `boolean` | `false` | Jika `true`, validasi input saat submit |
|
|
27
|
+
| `loading` | `boolean` | `false` | Menampilkan loading saat data di-fetch |
|
|
28
|
+
| `delaySearch` | `number` | `300` | Delay pencarian dalam milidetik |
|
|
29
|
+
| `height` | `BottomSheetHeighProps` | - | Ukuran tinggi BottomSheet |
|
|
30
|
+
| `onRefresh` | `() => void` | - | Callback saat pull-to-refresh dilakukan |
|
|
31
|
+
| `header` | ReactElement | – | Jika ingin chip mempunyai header. |
|
|
32
|
+
| `footer` | ReactElement | – | Jika ingin chip mempunyai footer. |
|
|
33
|
+
| `value` | ChipSelectedProps | – | Nilai pilihan yang dikontrol dari luar. Cocok untuk membuat komponen controlled. Akan mensinkronkan state internal selected dengan value setiap kali berubah. |
|
|
33
34
|
|
|
34
35
|
## 📌 Contoh Penggunaan
|
|
35
36
|
|
|
@@ -53,6 +54,7 @@ const MyScreen = () => {
|
|
|
53
54
|
<Button title="Pilih Data" onPress={() => setOpen(true)} />
|
|
54
55
|
<Select
|
|
55
56
|
isOpen={open}
|
|
57
|
+
value={selected}
|
|
56
58
|
data={data}
|
|
57
59
|
multiple={true}
|
|
58
60
|
onClose={() => setOpen(false)}
|
|
@@ -77,4 +79,11 @@ const MyScreen = () => {
|
|
|
77
79
|
- `Loading`
|
|
78
80
|
- `Toast` (untuk validasi/error)
|
|
79
81
|
|
|
80
|
-
- Jika ingin menambahkan animasi shimmer saat loading, bisa modifikasi komponen `Loading`.
|
|
82
|
+
- Jika ingin menambahkan animasi shimmer saat loading, bisa modifikasi komponen `Loading`.
|
|
83
|
+
|
|
84
|
+
## ⚠️ Behavior Penting
|
|
85
|
+
|
|
86
|
+
- Jika `multiple={false}` dan `required={true}`, maka:
|
|
87
|
+
- Item yang dipilih akan langsung dikirim ke `onSubmit`.
|
|
88
|
+
- BottomSheet akan langsung tertutup tanpa menekan tombol submit.
|
|
89
|
+
- Jika `required={false}`, user bisa membatalkan pilihan (deselect), dan mengirim data kosong.
|
package/src/Select/Select.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useState } from 'react';
|
|
1
|
+
import { useCallback, useState, useEffect } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
Keyboard,
|
|
4
4
|
StyleSheet,
|
|
@@ -32,6 +32,7 @@ export default function Select({
|
|
|
32
32
|
header,
|
|
33
33
|
onEndReached,
|
|
34
34
|
submitBtnLabel,
|
|
35
|
+
value,
|
|
35
36
|
}: SelectProps) {
|
|
36
37
|
// const [isOpenSelect, setIsOpenSelect] = useState<boolean | undefined>(false);
|
|
37
38
|
const [selected, setSelected] = useState<ChipSelectedProps>();
|
|
@@ -75,6 +76,12 @@ export default function Select({
|
|
|
75
76
|
}, delaySearch);
|
|
76
77
|
};
|
|
77
78
|
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
if (value !== undefined) {
|
|
81
|
+
setSelected(value);
|
|
82
|
+
}
|
|
83
|
+
}, [value]);
|
|
84
|
+
|
|
78
85
|
return (
|
|
79
86
|
<BottomSheet
|
|
80
87
|
onClose={(val: boolean) => handleOnCloseBottom(val)}
|
package/src/Select/type.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { ChipOnSelectProps, ChipOptionProps } from '../Chip/type';
|
|
3
3
|
import type { BottomSheetHeighProps } from '../BottomSheet/type';
|
|
4
|
+
import type { ChipSelectedProps } from '../Chip/type';
|
|
4
5
|
|
|
5
6
|
export interface SelectDataProps {
|
|
6
7
|
value: string | number;
|
|
@@ -29,6 +30,7 @@ export interface SelectProps {
|
|
|
29
30
|
onEndReached?: () => void;
|
|
30
31
|
refreshing?: boolean;
|
|
31
32
|
submitBtnLabel?: string;
|
|
33
|
+
value?: ChipSelectedProps;
|
|
32
34
|
footer?: React.ComponentType<any> | React.ReactElement | null | undefined;
|
|
33
35
|
header?: React.ComponentType<any> | React.ReactElement | null | undefined;
|
|
34
36
|
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 🦴 Skeleton Loader Component
|
|
2
|
+
|
|
3
|
+
Komponen `Skeleton` adalah placeholder UI yang menampilkan efek shimmer animasi, berguna untuk memberikan feedback loading saat data belum tersedia.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📦 Props
|
|
8
|
+
|
|
9
|
+
| Prop | Tipe | Default | Deskripsi |
|
|
10
|
+
| ----------------- | ---------------- | ---------------------------- | ---------------------------------------------------------------------------------- |
|
|
11
|
+
| `width` | `DimensionValue` | `"100%"` | Lebar dari skeleton block. Bisa berupa angka atau string (`'100%'`, `'50%'`, dsb). |
|
|
12
|
+
| `height` | `DimensionValue` | `50` | Tinggi dari skeleton block. |
|
|
13
|
+
| `rounded` | `number` | `8` | Radius border untuk membuat sudut membulat. |
|
|
14
|
+
| `backgroundColor` | `string` | `"#F0F0F0"` | Warna latar belakang dari blok skeleton. |
|
|
15
|
+
| `shimmerColor` | `string` | `"rgba(255, 255, 255, 0.7)"` | Warna efek shimmer yang bergerak. |
|
|
16
|
+
| `duration` | `number` | `1500` | Durasi animasi shimmer (dalam milidetik). |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 🧠 Cara Kerja
|
|
21
|
+
|
|
22
|
+
- Komponen menggunakan `Animated.Value` untuk menggerakkan efek shimmer dari kiri ke kanan secara loop.
|
|
23
|
+
- Lebar shimmer dihitung berdasarkan lebar aktual komponen yang didapat dari event `onLayout`.
|
|
24
|
+
- Shimmer bergerak dengan `translateX` menggunakan `interpolate()` untuk efek linear mulus.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 📌 Contoh Penggunaan
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
import React from 'react';
|
|
32
|
+
import { View } from 'react-native';
|
|
33
|
+
import Skeleton from './components/Skeleton';
|
|
34
|
+
|
|
35
|
+
const MyLoadingScreen = () => {
|
|
36
|
+
return (
|
|
37
|
+
<View style={{ padding: 16 }}>
|
|
38
|
+
<Skeleton height={20} width="60%" />
|
|
39
|
+
<View style={{ height: 16 }} />
|
|
40
|
+
<Skeleton height={20} width="80%" />
|
|
41
|
+
<View style={{ height: 16 }} />
|
|
42
|
+
<Skeleton height={100} width="100%" rounded={12} />
|
|
43
|
+
</View>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 🧱 Struktur Rendered
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
<View>
|
|
54
|
+
{' '}
|
|
55
|
+
// container
|
|
56
|
+
<Animated.View /> // shimmer yang bergerak horizontal
|
|
57
|
+
</View>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## ⚠️ Catatan
|
|
63
|
+
|
|
64
|
+
- Komponen ini **tidak menerima children**, hanya untuk placeholder visual.
|
|
65
|
+
- Efek shimmer akan selalu berjalan secara loop selama komponen hidup.
|
|
66
|
+
- Perhatikan performa jika digunakan secara masif di satu halaman.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 🛠 Tips
|
|
71
|
+
|
|
72
|
+
- Gunakan `Skeleton` dalam daftar (list, table, card) untuk meningkatkan UX saat loading.
|
|
73
|
+
- Dapat digabungkan dengan kondisi seperti:
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
{
|
|
77
|
+
isLoading ? <Skeleton height={50} /> : <ActualComponent data={data} />;
|
|
78
|
+
}
|
|
79
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Animated,
|
|
4
|
+
Easing,
|
|
5
|
+
StyleSheet,
|
|
6
|
+
View,
|
|
7
|
+
type LayoutChangeEvent,
|
|
8
|
+
type StyleProp,
|
|
9
|
+
type ViewStyle,
|
|
10
|
+
} from 'react-native';
|
|
11
|
+
import type { SkeletonProps } from './type';
|
|
12
|
+
|
|
13
|
+
const Skeleton: React.FC<SkeletonProps> = ({
|
|
14
|
+
width = '100%',
|
|
15
|
+
height = 50,
|
|
16
|
+
rounded = 8,
|
|
17
|
+
backgroundColor = '#F0F0F0',
|
|
18
|
+
shimmerColor = 'rgba(255, 255, 255, 0.7)',
|
|
19
|
+
duration = 1500,
|
|
20
|
+
}) => {
|
|
21
|
+
const shimmerAnimation = useRef(new Animated.Value(0)).current;
|
|
22
|
+
const skeletonWidth = useRef(0);
|
|
23
|
+
|
|
24
|
+
const handleLayout = (event: LayoutChangeEvent) => {
|
|
25
|
+
skeletonWidth.current = event.nativeEvent.layout.width;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
const animateShimmer = () => {
|
|
30
|
+
Animated.loop(
|
|
31
|
+
Animated.sequence([
|
|
32
|
+
Animated.timing(shimmerAnimation, {
|
|
33
|
+
toValue: 1,
|
|
34
|
+
duration: duration,
|
|
35
|
+
easing: Easing.linear,
|
|
36
|
+
useNativeDriver: true,
|
|
37
|
+
}),
|
|
38
|
+
Animated.timing(shimmerAnimation, {
|
|
39
|
+
toValue: 0,
|
|
40
|
+
duration: 0,
|
|
41
|
+
useNativeDriver: true,
|
|
42
|
+
}),
|
|
43
|
+
])
|
|
44
|
+
).start();
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
animateShimmer();
|
|
48
|
+
|
|
49
|
+
return () => {
|
|
50
|
+
shimmerAnimation.stopAnimation();
|
|
51
|
+
};
|
|
52
|
+
}, [shimmerAnimation, duration]);
|
|
53
|
+
|
|
54
|
+
const shimmerTranslate = shimmerAnimation.interpolate({
|
|
55
|
+
inputRange: [0, 1],
|
|
56
|
+
// Gunakan lebar skeleton untuk perhitungan yang presisi
|
|
57
|
+
outputRange: [-200, skeletonWidth.current + 200],
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<View
|
|
62
|
+
onLayout={handleLayout}
|
|
63
|
+
style={[
|
|
64
|
+
styles.skeletonCard,
|
|
65
|
+
{
|
|
66
|
+
width,
|
|
67
|
+
height,
|
|
68
|
+
backgroundColor,
|
|
69
|
+
borderRadius: rounded,
|
|
70
|
+
} as StyleProp<ViewStyle>,
|
|
71
|
+
]}
|
|
72
|
+
>
|
|
73
|
+
<Animated.View
|
|
74
|
+
style={[
|
|
75
|
+
styles.shimmer,
|
|
76
|
+
{
|
|
77
|
+
backgroundColor: shimmerColor,
|
|
78
|
+
transform: [{ translateX: shimmerTranslate }],
|
|
79
|
+
borderRadius: rounded,
|
|
80
|
+
},
|
|
81
|
+
]}
|
|
82
|
+
/>
|
|
83
|
+
</View>
|
|
84
|
+
);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export default Skeleton;
|
|
88
|
+
|
|
89
|
+
const styles = StyleSheet.create({
|
|
90
|
+
skeletonCard: {
|
|
91
|
+
overflow: 'hidden',
|
|
92
|
+
},
|
|
93
|
+
shimmer: {
|
|
94
|
+
...StyleSheet.absoluteFillObject,
|
|
95
|
+
width: '90%',
|
|
96
|
+
height: '100%',
|
|
97
|
+
opacity: 0.3,
|
|
98
|
+
},
|
|
99
|
+
});
|
package/src/index.tsx
CHANGED
|
@@ -26,6 +26,7 @@ export { default as Gap } from './Ui/Gap';
|
|
|
26
26
|
export { default as Grid } from './Ui/Grid';
|
|
27
27
|
export { default as Col } from './Ui/Col';
|
|
28
28
|
export { default as Chip } from './Chip/Chip';
|
|
29
|
+
export { default as ChipItem } from './Chip/ChipItem';
|
|
29
30
|
export type {
|
|
30
31
|
ChipSelectedProps,
|
|
31
32
|
ChipOnSelectProps,
|
|
@@ -82,3 +83,6 @@ export { default as TextArea } from './Input/TextArea';
|
|
|
82
83
|
export { default as TextEditor } from './TextEditor/TextEditor';
|
|
83
84
|
// export { default as PdfView } from './FileView/PdfView';
|
|
84
85
|
export { ToastProvider, useToast } from './Toast/ToastContext';
|
|
86
|
+
export { default as Skeleton } from './Skeleton/Skeleton';
|
|
87
|
+
export type { SkeletonProps } from './Skeleton/type';
|
|
88
|
+
export { default as CounterButton } from './CounterButton/CounterButton';
|