@herca/rn-kit 0.1.6 → 0.1.8

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 (61) hide show
  1. package/README.md +29 -3
  2. package/lib/module/Accordion/README.md +1 -0
  3. package/lib/module/Alert/README.md +1 -0
  4. package/lib/module/Avatar/README_AVATAR.md +1 -1
  5. package/lib/module/Avatar/README_AVATARGROUP.md +3 -1
  6. package/lib/module/BottomSheet/README.md +1 -1
  7. package/lib/module/Button/README.md +3 -1
  8. package/lib/module/Calendar/README.md +1 -0
  9. package/lib/module/Chip/README.md +2 -1
  10. package/lib/module/Color/README.md +97 -46
  11. package/lib/module/DatePicker/{README.md → README_DATEPICKER.md} +1 -0
  12. package/lib/module/DatePicker/README_MONTHPICKER.md +90 -0
  13. package/lib/module/DatePicker/README_TIMEPICKER.md +83 -0
  14. package/lib/module/DatePicker/README_YEARPICKER.md +106 -0
  15. package/lib/module/DropDown/DropDown.js +49 -45
  16. package/lib/module/DropDown/DropDown.js.map +1 -1
  17. package/lib/module/DropDown/README.md +108 -0
  18. package/lib/module/Label/README.md +65 -0
  19. package/lib/module/Provider/Provider.js +2 -0
  20. package/lib/module/Provider/Provider.js.map +1 -1
  21. package/lib/module/RadioButton/README.md +2 -1
  22. package/lib/module/Timeline/Timeline.js +7 -1
  23. package/lib/module/Timeline/Timeline.js.map +1 -1
  24. package/lib/module/Timeline/TimelineItem.js +15 -5
  25. package/lib/module/Timeline/TimelineItem.js.map +1 -1
  26. package/lib/module/Ui/README_DEVIDER.md +62 -0
  27. package/lib/module/Ui/README_FOOTER.md +0 -0
  28. package/lib/typescript/src/DropDown/DropDown.d.ts.map +1 -1
  29. package/lib/typescript/src/DropDown/type.d.ts +1 -1
  30. package/lib/typescript/src/DropDown/type.d.ts.map +1 -1
  31. package/lib/typescript/src/Provider/Provider.d.ts +2 -2
  32. package/lib/typescript/src/Provider/Provider.d.ts.map +1 -1
  33. package/lib/typescript/src/Provider/type.d.ts +2 -2
  34. package/lib/typescript/src/Provider/type.d.ts.map +1 -1
  35. package/lib/typescript/src/Timeline/TimelineItem.d.ts +1 -1
  36. package/lib/typescript/src/Timeline/TimelineItem.d.ts.map +1 -1
  37. package/package.json +1 -1
  38. package/src/Accordion/README.md +1 -0
  39. package/src/Alert/README.md +1 -0
  40. package/src/Avatar/README_AVATAR.md +1 -1
  41. package/src/Avatar/README_AVATARGROUP.md +3 -1
  42. package/src/BottomSheet/README.md +1 -1
  43. package/src/Button/README.md +3 -1
  44. package/src/Calendar/README.md +1 -0
  45. package/src/Chip/README.md +2 -1
  46. package/src/Color/README.md +97 -46
  47. package/src/DatePicker/{README.md → README_DATEPICKER.md} +1 -0
  48. package/src/DatePicker/README_MONTHPICKER.md +90 -0
  49. package/src/DatePicker/README_TIMEPICKER.md +83 -0
  50. package/src/DatePicker/README_YEARPICKER.md +106 -0
  51. package/src/DropDown/DropDown.tsx +54 -58
  52. package/src/DropDown/README.md +108 -0
  53. package/src/DropDown/type.tsx +1 -1
  54. package/src/Label/README.md +65 -0
  55. package/src/Provider/Provider.tsx +4 -2
  56. package/src/Provider/type.tsx +2 -2
  57. package/src/RadioButton/README.md +2 -1
  58. package/src/Timeline/Timeline.tsx +8 -2
  59. package/src/Timeline/TimelineItem.tsx +16 -3
  60. package/src/Ui/README_DEVIDER.md +62 -0
  61. package/src/Ui/README_FOOTER.md +0 -0
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  import { useState, useRef } from 'react';
4
- import { View, Text, TouchableOpacity, StyleSheet, ScrollView, useWindowDimensions, findNodeHandle, UIManager } from 'react-native';
4
+ import { View, Text, TouchableOpacity, Pressable, StyleSheet, ScrollView, useWindowDimensions, findNodeHandle, UIManager, Modal } from 'react-native';
5
5
  import Color from "../Color/Color.js";
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
7
  const Dropdown = ({
8
8
  options,
9
9
  maxHeight = 200,
@@ -12,16 +12,28 @@ const Dropdown = ({
12
12
  }) => {
13
13
  const [isOpen, setIsOpen] = useState(false);
14
14
  const [selected, setSelected] = useState();
15
- const [dropdownPosition, setDropdownPosition] = useState('left');
15
+ const [align, setAlign] = useState('left');
16
+ const [buttonLayout, setButtonLayout] = useState({
17
+ x: 0,
18
+ y: 0,
19
+ width: 0,
20
+ height: 0
21
+ });
16
22
  const buttonRef = useRef(null);
17
23
  const windowWidth = useWindowDimensions().width;
18
24
  const handleToggle = () => {
19
25
  if (!isOpen) {
20
26
  const handle = findNodeHandle(buttonRef.current);
21
27
  if (handle) {
22
- UIManager.measureInWindow(handle, (x, _y, width, _height) => {
28
+ UIManager.measureInWindow(handle, (x, y, width, height) => {
23
29
  const middle = windowWidth / 2;
24
- setDropdownPosition(x + width / 2 > middle ? 'right' : 'left');
30
+ setAlign(x + width / 2 > middle ? 'right' : 'left');
31
+ setButtonLayout({
32
+ x,
33
+ y,
34
+ width,
35
+ height
36
+ });
25
37
  setIsOpen(true);
26
38
  });
27
39
  }
@@ -34,56 +46,54 @@ const Dropdown = ({
34
46
  setIsOpen(false);
35
47
  onSelect?.(value.value);
36
48
  };
37
- return /*#__PURE__*/_jsxs(View, {
38
- style: styles.container,
49
+ return /*#__PURE__*/_jsxs(_Fragment, {
39
50
  children: [/*#__PURE__*/_jsx(TouchableOpacity, {
40
51
  ref: buttonRef,
41
- style: styles.dropdownButton,
42
52
  onPress: handleToggle,
43
- children: renderButton ? renderButton : /*#__PURE__*/_jsx(Text, {
44
- children: selected || 'Select an option'
45
- })
46
- }), isOpen && /*#__PURE__*/_jsx(View, {
47
- style: [styles.dropdownList, dropdownPosition === 'left' ? styles.left : styles.right],
48
- children: /*#__PURE__*/_jsx(ScrollView, {
49
- nestedScrollEnabled: true,
50
- style: {
51
- maxHeight
52
- },
53
- children: options.map((item, index) => /*#__PURE__*/_jsx(TouchableOpacity, {
54
- onPress: () => handlePressOption(item),
55
- style: [styles.option, selected === item.value ? styles.optionSelected : null],
56
- children: /*#__PURE__*/_jsx(Text, {
57
- children: item.label
58
- })
59
- }, index))
60
- })
53
+ children: renderButton
54
+ }), isOpen && /*#__PURE__*/_jsxs(Modal, {
55
+ transparent: true,
56
+ animationType: "none",
57
+ visible: true,
58
+ children: [/*#__PURE__*/_jsx(Pressable, {
59
+ style: StyleSheet.absoluteFillObject,
60
+ onPress: () => setIsOpen(false)
61
+ }), /*#__PURE__*/_jsx(View, {
62
+ style: [styles.dropdownList, {
63
+ top: buttonLayout.y + buttonLayout.height,
64
+ left: align === 'left' ? buttonLayout.x : undefined,
65
+ right: align === 'right' ? windowWidth - (buttonLayout.x + buttonLayout.width) : undefined
66
+ }],
67
+ children: /*#__PURE__*/_jsx(ScrollView, {
68
+ nestedScrollEnabled: true,
69
+ style: {
70
+ maxHeight
71
+ },
72
+ children: options.map((item, idx) => /*#__PURE__*/_jsx(TouchableOpacity, {
73
+ onPress: () => handlePressOption(item),
74
+ style: [styles.option, selected === item.value && styles.optionSelected],
75
+ children: /*#__PURE__*/_jsx(Text, {
76
+ children: item.label
77
+ })
78
+ }, idx))
79
+ })
80
+ })]
61
81
  })]
62
82
  });
63
83
  };
64
84
  export default Dropdown;
65
85
  const styles = StyleSheet.create({
66
- container: {
67
- // width: 200, // or flexible
68
- },
69
- dropdownButton: {
70
- // borderWidth: 1,
71
- // borderColor: '#ccc',
72
- // padding: 12,
73
- // borderRadius: 6,
74
- // backgroundColor: '#fff',
75
- },
86
+ button: {},
76
87
  dropdownList: {
77
88
  position: 'absolute',
78
- marginTop: 18,
79
89
  padding: 8,
80
- zIndex: 9999,
90
+ zIndex: 10,
81
91
  gap: 4,
82
92
  borderWidth: 1,
83
93
  borderColor: Color.gray[50],
84
94
  borderRadius: 8,
85
95
  backgroundColor: Color.base.white100,
86
- width: 100
96
+ width: 120
87
97
  },
88
98
  option: {
89
99
  gap: 8,
@@ -96,12 +106,6 @@ const styles = StyleSheet.create({
96
106
  optionSelected: {
97
107
  backgroundColor: Color.primary[50],
98
108
  borderColor: Color.primary[300]
99
- },
100
- left: {
101
- left: 0
102
- },
103
- right: {
104
- right: 0
105
109
  }
106
110
  });
107
111
  //# sourceMappingURL=DropDown.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useRef","View","Text","TouchableOpacity","StyleSheet","ScrollView","useWindowDimensions","findNodeHandle","UIManager","Color","jsx","_jsx","jsxs","_jsxs","Dropdown","options","maxHeight","onSelect","renderButton","isOpen","setIsOpen","selected","setSelected","dropdownPosition","setDropdownPosition","buttonRef","windowWidth","width","handleToggle","handle","current","measureInWindow","x","_y","_height","middle","handlePressOption","value","style","styles","container","children","ref","dropdownButton","onPress","dropdownList","left","right","nestedScrollEnabled","map","item","index","option","optionSelected","label","create","position","marginTop","padding","zIndex","gap","borderWidth","borderColor","gray","borderRadius","backgroundColor","base","white100","paddingVertical","paddingHorizontal","primary"],"sourceRoot":"../../../src","sources":["DropDown/DropDown.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useState","useRef","View","Text","TouchableOpacity","Pressable","StyleSheet","ScrollView","useWindowDimensions","findNodeHandle","UIManager","Modal","Color","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Dropdown","options","maxHeight","onSelect","renderButton","isOpen","setIsOpen","selected","setSelected","align","setAlign","buttonLayout","setButtonLayout","x","y","width","height","buttonRef","windowWidth","handleToggle","handle","current","measureInWindow","middle","handlePressOption","value","children","ref","onPress","transparent","animationType","visible","style","absoluteFillObject","styles","dropdownList","top","left","undefined","right","nestedScrollEnabled","map","item","idx","option","optionSelected","label","create","button","position","padding","zIndex","gap","borderWidth","borderColor","gray","borderRadius","backgroundColor","base","white100","paddingVertical","paddingHorizontal","primary"],"sourceRoot":"../../../src","sources":["DropDown/DropDown.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ # Dropdown
2
+
3
+ **Dropdown** merupakan komponen menu pilihan (select) berbasis **React Native** yang menampilkan daftar opsi di atas modal transparan. Komponen ini otomatis men‐posisikan daftar ke kiri atau ke kanan bergantung pada posisi tombol pemicu agar tidak terpotong layar.
4
+
5
+ ---
6
+
7
+ ## Instalasi
8
+
9
+ Komponen ini mengandalkan dependensi internal:
10
+
11
+ * `Color` – sistem warna.
12
+ * `ChipOptionProps` – tipe opsi.
13
+
14
+ Serta modul standar React Native: `Modal`, `ScrollView`, dll. Tidak memerlukan library eksternal.
15
+
16
+ ---
17
+
18
+ ## API Reference
19
+
20
+ | Prop | Tipe | Default | Deskripsi |
21
+ | -------------- | ----------------------------------- | ----------- | ------------------------------------------------------------------- |
22
+ | `options` | `ChipOptionProps[]` | `[]` | Daftar objek `{ label, value }` yang akan ditampilkan sebagai opsi. |
23
+ | `maxHeight` | `number` | `200` | Tinggi maksimum daftar sebelum dapat di‐scroll. |
24
+ | `onSelect` | `(value: string \| number) => void` | `undefined` | Callback saat pengguna memilih opsi. |
25
+ | `renderButton` | `React.ReactNode` | **(wajib)** | Elemen yang dipakai sebagai tombol pemicu dropdown. |
26
+
27
+ ### Struktur `ChipOptionProps`
28
+
29
+ ```ts
30
+ interface ChipOptionProps {
31
+ label: string;
32
+ value: string | number;
33
+ }
34
+ ```
35
+
36
+ ---
37
+
38
+ ## Cara Kerja Singkat
39
+
40
+ 1. **Posisi & Alignment**
41
+
42
+ * Saat tombol ditekan, komponen mengukur posisi tombol (`UIManager.measureInWindow`).
43
+ * Jika titik tengah tombol berada di sisi kanan layar, daftar disejajarkan ke kanan; sebaliknya ke kiri.
44
+ 2. **Modal & Pressable Overlay**
45
+
46
+ * Daftar opsi dibungkus `Modal` transparan.
47
+ * `Pressable` penuh layar di belakang daftar menangani klik di luar untuk menutup menu.
48
+ 3. **Scroll & Batas Tinggi**
49
+
50
+ * Daftar opsi di dalam `ScrollView` dengan properti `nestedScrollEnabled` agar tetap dapat di‐scroll di dalam modalsheet lain.
51
+ 4. **Highlight Opsi Terpilih**
52
+
53
+ * Opsi aktif diberi style `optionSelected` – background `Color.primary[50]` & border `Color.primary[300]`.
54
+
55
+ ---
56
+
57
+ ## Contoh Penggunaan
58
+
59
+ ```tsx
60
+ import { useState } from 'react';
61
+ import { View, Text } from 'react-native';
62
+ import Dropdown from '@/components/Dropdown/Dropdown';
63
+
64
+ const options = [
65
+ { label: 'Apple', value: 'apple' },
66
+ { label: 'Banana', value: 'banana' },
67
+ { label: 'Cherry', value: 'cherry' },
68
+ ];
69
+
70
+ export default function DropdownExample() {
71
+ const [fruit, setFruit] = useState<string | number>('apple');
72
+
73
+ return (
74
+ <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
75
+ <Dropdown
76
+ options={options}
77
+ maxHeight={150}
78
+ onSelect={(val) => setFruit(val)}
79
+ renderButton={
80
+ <View style={{ padding: 12, borderWidth: 1, borderRadius: 8 }}>
81
+ <Text>{options.find((o) => o.value === fruit)?.label}</Text>
82
+ </View>
83
+ }
84
+ />
85
+ </View>
86
+ );
87
+ }
88
+ ```
89
+
90
+ ---
91
+
92
+ ## Kustomisasi Tampilan
93
+
94
+ | Style Key | Fungsi | Cara Ubah |
95
+ | ---------------- | ---------------------- | ------------------------------------------------- |
96
+ | `dropdownList` | Container daftar opsi. | Ubah `width`, `borderRadius`, `borderColor`, dll. |
97
+ | `option` | Setiap baris opsi. | Ubah `padding` atau `gap` sesuai kebutuhan. |
98
+ | `optionSelected` | Style opsi terpilih. | Sesuaikan warna highlight dengan brand. |
99
+
100
+ ---
101
+
102
+ ## Tips Implementasi
103
+
104
+ * **Kontrol Render Button**: Anda bebas menggunakan komponen apa pun sebagai `renderButton` (ikon, input field, card, dll.). Dropdown akan menggunakan posisi & ukuran elemen ini.
105
+ * **Close on Scroll Parent**: Jika dropdown dipakai dalam layar yang di‐scroll, pertimbangkan menutup dropdown saat parent di‐scroll untuk mencegah posisi meleset.
106
+ * **Validasi**: Komponen tidak memaksa nilai default. Anda dapat men‐set `selected` manual via `useState` agar kontrol tetap ter‐sinkron.
107
+
108
+ ---
@@ -0,0 +1,65 @@
1
+ # Label
2
+
3
+ **Label** adalah komponen kecil berbentuk badge untuk menampilkan status, kategori, atau metadata ringkas. Komponen ini mendukung ikon, variasi warna, dan konten kustom.
4
+
5
+ ## API Reference
6
+
7
+ | Prop | Tipe | Default | Deskripsi |
8
+ | ---------- | ------------------------------------------------------------------------------------------------ | ----------- | ------------------------------------------------------------------------------ |
9
+ | `label` | `string` | `''` | Teks yang ditampilkan jika `children` tidak disediakan. |
10
+ | `children` | `React.ReactNode` | `undefined` | Menampilkan elemen kustom sebagai isi label. Jika ada, `label` akan diabaikan. |
11
+ | `color` | `'default' \| 'success' \| 'danger' \| 'primary' \| 'warning' \| 'info' \| 'purple' \| 'orange'` | `'default'` | Variasi warna latar dan teks. |
12
+ | `icon` | `IconNameProps` | `undefined` | Menampilkan ikon di sebelah kiri teks. |
13
+ | `size` | `'small' \| 'medium'` | `'medium'` | (Belum digunakan – untuk ekspansi ukuran ke depan.) |
14
+
15
+ ---
16
+
17
+ ## Warna yang Didukung
18
+
19
+ | Warna | Background | Teks |
20
+ | --------- | ------------------- | -------------------- |
21
+ | `default` | `Color.gray[50]` | `Color.gray[900]` |
22
+ | `success` | `Color.success[50]` | `Color.success[300]` |
23
+ | `danger` | `Color.danger[50]` | `Color.danger[300]` |
24
+ | `primary` | `Color.primary[50]` | `Color.primary[300]` |
25
+ | `warning` | `Color.warning[50]` | `Color.warning[300]` |
26
+ | `info` | `Color.info[50]` | `Color.info[300]` |
27
+ | `purple` | `Color.purple[50]` | `Color.purple[300]` |
28
+ | `orange` | `Color.orange[50]` | `Color.orange[300]` |
29
+
30
+ ---
31
+
32
+ ## Contoh Penggunaan
33
+
34
+ ### Label Sederhana
35
+
36
+ ```tsx
37
+ <Label label="Active" color="success" />
38
+ ```
39
+
40
+ ### Label dengan Ikon
41
+
42
+ ```tsx
43
+ <Label label="Error" color="danger" icon="AlertCircle" />
44
+ ```
45
+
46
+ ### Kustom Isi (Children)
47
+
48
+ ```tsx
49
+ <Label color="primary">
50
+ <View style={{ flexDirection: 'row', alignItems: 'center' }}>
51
+ <Icon name="Check" color={Color.primary[300]} size={12} />
52
+ <Text style={{ color: Color.primary[300], marginLeft: 4 }}>Custom</Text>
53
+ </View>
54
+ </Label>
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Catatan Tambahan
60
+
61
+ * Jika Anda memberikan `children`, maka `label` dan `icon` akan diabaikan.
62
+ * Komponen ini menggunakan `alignSelf: 'flex-start'` agar ukuran label tidak penuh.
63
+ * Prop `size` belum aktif, namun sudah disiapkan jika ke depan ingin mendukung skala `small`/`large`.
64
+
65
+ ---
@@ -5,6 +5,7 @@ import { createContext, useContext, useState } from 'react';
5
5
  import { StyleSheet, View } from 'react-native';
6
6
  import LayoutWithFooter from "./LayoutWithFooter.js";
7
7
  import RequiredUpdateAppsProvider from "./RequiredUpdateAppsProvider.js";
8
+ import Color from "../Color/Color.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  const FooterContext = /*#__PURE__*/createContext(undefined);
10
11
  export default function Provider({
@@ -37,6 +38,7 @@ export const useFooter = () => {
37
38
  };
38
39
  const styles = StyleSheet.create({
39
40
  container: {
41
+ backgroundColor: Color.base.white100,
40
42
  flex: 1
41
43
  }
42
44
  });
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useContext","useState","StyleSheet","View","LayoutWithFooter","RequiredUpdateAppsProvider","jsx","_jsx","jsxs","_jsxs","FooterContext","undefined","Provider","children","requiredUpdated","updateConfig","footer","setFooter","style","styles","container","value","useFooter","context","Error","create","flex"],"sourceRoot":"../../../src","sources":["Provider/Provider.tsx"],"mappings":";;AAAA;AACA,SAASA,aAAa,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,OAAO;AAC3D,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,0BAA0B,MAAM,iCAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAetE,MAAMC,aAAa,gBAAGX,aAAa,CAAgCY,SAAS,CAAC;AAE7E,eAAe,SAASC,QAAQA,CAAC;EAC/BC,QAAQ;EACRC,eAAe,GAAG,KAAK;EACvBC;AACa,CAAC,EAAE;EAChB,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGhB,QAAQ,CAAC,IAAI,CAAC;EAE1C,oBACEQ,KAAA,CAACN,IAAI;IAACe,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAP,QAAA,GAC3BC,eAAe,gBACdP,IAAA,CAACF,0BAA0B;MAAA,GAAKU;IAAY,CAAG,CAAC,GAC9C,IAAI,eACRR,IAAA,CAACG,aAAa,CAACE,QAAQ;MAACS,KAAK,EAAE;QAAEL,MAAM;QAAEC;MAAU,CAAE;MAAAJ,QAAA,eACnDN,IAAA,CAACH,gBAAgB;QAAAS,QAAA,EAAEA;MAAQ,CAAmB;IAAC,CACzB,CAAC;EAAA,CACrB,CAAC;AAEX;AAEA,OAAO,MAAMS,SAAS,GAAGA,CAAA,KAAM;EAC7B,MAAMC,OAAO,GAAGvB,UAAU,CAACU,aAAa,CAAC;EACzC,IAAIa,OAAO,KAAKZ,SAAS,EAAE;IACzB,MAAM,IAAIa,KAAK,CAAC,iDAAiD,CAAC;EACpE;EACA,OAAOD,OAAO;AAChB,CAAC;AAED,MAAMJ,MAAM,GAAGjB,UAAU,CAACuB,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createContext","useContext","useState","StyleSheet","View","LayoutWithFooter","RequiredUpdateAppsProvider","Color","jsx","_jsx","jsxs","_jsxs","FooterContext","undefined","Provider","children","requiredUpdated","updateConfig","footer","setFooter","style","styles","container","value","useFooter","context","Error","create","backgroundColor","base","white100","flex"],"sourceRoot":"../../../src","sources":["Provider/Provider.tsx"],"mappings":";;AAAA;AACA,SAASA,aAAa,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,OAAO;AAC3D,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,0BAA0B,MAAM,iCAA8B;AAGrE,OAAOC,KAAK,MAAM,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAanC,MAAMC,aAAa,gBAAGZ,aAAa,CAAgCa,SAAS,CAAC;AAE7E,eAAe,SAASC,QAAQA,CAAC;EAC/BC,QAAQ;EACRC,eAAe,GAAG,KAAK;EACvBC;AACa,CAAC,EAAE;EAChB,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGjB,QAAQ,CAAC,IAAI,CAAC;EAE1C,oBACES,KAAA,CAACP,IAAI;IAACgB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAP,QAAA,GAC3BC,eAAe,gBACdP,IAAA,CAACH,0BAA0B;MAAA,GAAKW;IAAY,CAAG,CAAC,GAC9C,IAAI,eACRR,IAAA,CAACG,aAAa,CAACE,QAAQ;MAACS,KAAK,EAAE;QAAEL,MAAM;QAAEC;MAAU,CAAE;MAAAJ,QAAA,eACnDN,IAAA,CAACJ,gBAAgB;QAAAU,QAAA,EAAEA;MAAQ,CAAmB;IAAC,CACzB,CAAC;EAAA,CACrB,CAAC;AAEX;AAEA,OAAO,MAAMS,SAAS,GAAGA,CAAA,KAAM;EAC7B,MAAMC,OAAO,GAAGxB,UAAU,CAACW,aAAa,CAAC;EACzC,IAAIa,OAAO,KAAKZ,SAAS,EAAE;IACzB,MAAM,IAAIa,KAAK,CAAC,iDAAiD,CAAC;EACpE;EACA,OAAOD,OAAO;AAChB,CAAC;AAED,MAAMJ,MAAM,GAAGlB,UAAU,CAACwB,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,eAAe,EAAErB,KAAK,CAACsB,IAAI,CAACC,QAAQ;IACpCC,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  # 📦 RadioButton – Komponen React Native
2
2
 
3
3
  Komponen `RadioButton` ini digunakan untuk menampilkan daftar pilihan dalam bentuk radio button di aplikasi React Native.
4
- ![Deskripsi Alt](../../assets/doc/RadioButton/RadioButton.png)
4
+ <img src="../../assets/doc/RadioButton/RadioButton.png" width=200>
5
+
5
6
 
6
7
  ## 📄 Import
7
8
 
@@ -1,12 +1,18 @@
1
1
  "use strict";
2
2
 
3
- import { View } from 'react-native';
3
+ import { StyleSheet, View } from 'react-native';
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  export default function Timeline({
6
6
  children
7
7
  }) {
8
8
  return /*#__PURE__*/_jsx(View, {
9
+ style: styles.gap14,
9
10
  children: children
10
11
  });
11
12
  }
13
+ const styles = StyleSheet.create({
14
+ gap14: {
15
+ gap: 14
16
+ }
17
+ });
12
18
  //# sourceMappingURL=Timeline.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["View","jsx","_jsx","Timeline","children"],"sourceRoot":"../../../src","sources":["Timeline/Timeline.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMpC,eAAe,SAASC,QAAQA,CAAC;EAAEC;AAAmB,CAAC,EAAE;EACvD,oBAAOF,IAAA,CAACF,IAAI;IAAAI,QAAA,EAAEA;EAAQ,CAAO,CAAC;AAChC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","View","jsx","_jsx","Timeline","children","style","styles","gap14","create","gap"],"sourceRoot":"../../../src","sources":["Timeline/Timeline.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMhD,eAAe,SAASC,QAAQA,CAAC;EAAEC;AAAmB,CAAC,EAAE;EACvD,oBAAOF,IAAA,CAACF,IAAI;IAACK,KAAK,EAAEC,MAAM,CAACC,KAAM;IAAAH,QAAA,EAAEA;EAAQ,CAAO,CAAC;AACrD;AAEA,MAAME,MAAM,GAAGP,UAAU,CAACS,MAAM,CAAC;EAC/BD,KAAK,EAAE;IACLE,GAAG,EAAE;EACP;AACF,CAAC,CAAC","ignoreList":[]}
@@ -17,6 +17,18 @@ export default function TimelineItem({
17
17
  color = 'primary'
18
18
  }) {
19
19
  const [contentHeight, setContentHeight] = useState(0);
20
+ const renderDashes = count => {
21
+ return Array.from({
22
+ length: count
23
+ }).map((_, index) => /*#__PURE__*/_jsx(View, {
24
+ style: {
25
+ width: 1,
26
+ height: 4,
27
+ backgroundColor: Color.gray[400],
28
+ marginVertical: 2
29
+ }
30
+ }, index));
31
+ };
20
32
  return /*#__PURE__*/_jsxs(View, {
21
33
  style: styles.container,
22
34
  children: [/*#__PURE__*/_jsxs(View, {
@@ -25,9 +37,7 @@ export default function TimelineItem({
25
37
  name: "RadioButton",
26
38
  color: COLOR_MAP[color]
27
39
  }), /*#__PURE__*/_jsx(View, {
28
- style: [styles.border, {
29
- height: contentHeight - 20
30
- }]
40
+ children: renderDashes(Math.floor((contentHeight - 20) / 6))
31
41
  })]
32
42
  }), /*#__PURE__*/_jsx(View, {
33
43
  style: styles.flex,
@@ -54,10 +64,10 @@ const styles = StyleSheet.create({
54
64
  },
55
65
  border: {
56
66
  width: 1,
67
+ borderWidth: 1,
57
68
  borderLeftWidth: 1,
58
69
  borderLeftColor: Color.gray[400],
59
- borderStyle: 'dashed',
60
- marginTop: 4
70
+ borderStyle: 'dashed'
61
71
  },
62
72
  flex: {
63
73
  flex: 1
@@ -1 +1 @@
1
- {"version":3,"names":["useState","StyleSheet","View","Color","Icon","jsx","_jsx","jsxs","_jsxs","COLOR_MAP","warning","primary","success","purple","danger","TimelineItem","children","color","contentHeight","setContentHeight","style","styles","container","contentLeft","name","border","height","flex","onLayout","e","nativeEvent","layout","create","flexDirection","alignItems","marginRight","width","borderLeftWidth","borderLeftColor","gray","borderStyle","marginTop"],"sourceRoot":"../../../src","sources":["Timeline/TimelineItem.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,OAAOC,KAAK,MAAM,mBAAgB;AAClC,SAASC,IAAI,QAAQ,kBAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE/B,MAAMC,SAAS,GAAG;EAChBC,OAAO,EAAEP,KAAK,CAACO,OAAO,CAAC,GAAG,CAAC;EAC3BC,OAAO,EAAER,KAAK,CAACQ,OAAO,CAAC,GAAG,CAAC;EAC3BC,OAAO,EAAET,KAAK,CAACS,OAAO,CAAC,GAAG,CAAC;EAC3BC,MAAM,EAAEV,KAAK,CAACU,MAAM,CAAC,GAAG,CAAC;EACzBC,MAAM,EAAEX,KAAK,CAACW,MAAM,CAAC,GAAG;AAC1B,CAAC;AAQD,eAAe,SAASC,YAAYA,CAAC;EACnCC,QAAQ;EACRC,KAAK,GAAG;AACS,CAAC,EAAE;EACpB,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGnB,QAAQ,CAAC,CAAC,CAAC;EAErD,oBACEQ,KAAA,CAACN,IAAI;IAACkB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAN,QAAA,gBAC5BR,KAAA,CAACN,IAAI;MAACkB,KAAK,EAAEC,MAAM,CAACE,WAAY;MAAAP,QAAA,gBAC9BV,IAAA,CAACF,IAAI;QAACoB,IAAI,EAAC,aAAa;QAACP,KAAK,EAAER,SAAS,CAACQ,KAAK;MAAE,CAAE,CAAC,eACpDX,IAAA,CAACJ,IAAI;QAACkB,KAAK,EAAE,CAACC,MAAM,CAACI,MAAM,EAAE;UAAEC,MAAM,EAAER,aAAa,GAAG;QAAG,CAAC;MAAE,CAAE,CAAC;IAAA,CAC5D,CAAC,eACPZ,IAAA,CAACJ,IAAI;MACHkB,KAAK,EAAEC,MAAM,CAACM,IAAK;MACnBC,QAAQ,EAAGC,CAAC,IAAK;QACf,MAAM;UAAEH;QAAO,CAAC,GAAGG,CAAC,CAACC,WAAW,CAACC,MAAM;QACvCZ,gBAAgB,CAACO,MAAM,CAAC;MAC1B,CAAE;MAAAV,QAAA,eAEFV,IAAA,CAACJ,IAAI;QAAAc,QAAA,EAAEA;MAAQ,CAAO;IAAC,CACnB,CAAC;EAAA,CACH,CAAC;AAEX;AACA,MAAMK,MAAM,GAAGpB,UAAU,CAAC+B,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACTW,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACDX,WAAW,EAAE;IACXW,UAAU,EAAE,QAAQ;IACpBC,WAAW,EAAE;EACf,CAAC;EACDV,MAAM,EAAE;IACNW,KAAK,EAAE,CAAC;IACRC,eAAe,EAAE,CAAC;IAClBC,eAAe,EAAEnC,KAAK,CAACoC,IAAI,CAAC,GAAG,CAAC;IAChCC,WAAW,EAAE,QAAQ;IACrBC,SAAS,EAAE;EACb,CAAC;EACDd,IAAI,EAAE;IACJA,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useState","StyleSheet","View","Color","Icon","jsx","_jsx","jsxs","_jsxs","COLOR_MAP","warning","primary","success","purple","danger","TimelineItem","children","color","contentHeight","setContentHeight","renderDashes","count","Array","from","length","map","_","index","style","width","height","backgroundColor","gray","marginVertical","styles","container","contentLeft","name","Math","floor","flex","onLayout","e","nativeEvent","layout","create","flexDirection","alignItems","marginRight","border","borderWidth","borderLeftWidth","borderLeftColor","borderStyle"],"sourceRoot":"../../../src","sources":["Timeline/TimelineItem.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,OAAOC,KAAK,MAAM,mBAAgB;AAClC,SAASC,IAAI,QAAQ,kBAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE/B,MAAMC,SAAS,GAAG;EAChBC,OAAO,EAAEP,KAAK,CAACO,OAAO,CAAC,GAAG,CAAC;EAC3BC,OAAO,EAAER,KAAK,CAACQ,OAAO,CAAC,GAAG,CAAC;EAC3BC,OAAO,EAAET,KAAK,CAACS,OAAO,CAAC,GAAG,CAAC;EAC3BC,MAAM,EAAEV,KAAK,CAACU,MAAM,CAAC,GAAG,CAAC;EACzBC,MAAM,EAAEX,KAAK,CAACW,MAAM,CAAC,GAAG;AAC1B,CAAC;AAQD,eAAe,SAASC,YAAYA,CAAC;EACnCC,QAAQ;EACRC,KAAK,GAAG;AACS,CAAC,EAAE;EACpB,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGnB,QAAQ,CAAC,CAAC,CAAC;EACrD,MAAMoB,YAAY,GAAIC,KAAa,IAAK;IACtC,OAAOC,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEH;IAAM,CAAC,CAAC,CAACI,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,kBAChDrB,IAAA,CAACJ,IAAI;MAEH0B,KAAK,EAAE;QACLC,KAAK,EAAE,CAAC;QACRC,MAAM,EAAE,CAAC;QACTC,eAAe,EAAE5B,KAAK,CAAC6B,IAAI,CAAC,GAAG,CAAC;QAChCC,cAAc,EAAE;MAClB;IAAE,GANGN,KAON,CACF,CAAC;EACJ,CAAC;EAED,oBACEnB,KAAA,CAACN,IAAI;IAAC0B,KAAK,EAAEM,MAAM,CAACC,SAAU;IAAAnB,QAAA,gBAC5BR,KAAA,CAACN,IAAI;MAAC0B,KAAK,EAAEM,MAAM,CAACE,WAAY;MAAApB,QAAA,gBAC9BV,IAAA,CAACF,IAAI;QAACiC,IAAI,EAAC,aAAa;QAACpB,KAAK,EAAER,SAAS,CAACQ,KAAK;MAAE,CAAE,CAAC,eACpDX,IAAA,CAACJ,IAAI;QAAAc,QAAA,EAAEI,YAAY,CAACkB,IAAI,CAACC,KAAK,CAAC,CAACrB,aAAa,GAAG,EAAE,IAAI,CAAC,CAAC;MAAC,CAAO,CAAC;IAAA,CAC7D,CAAC,eACPZ,IAAA,CAACJ,IAAI;MACH0B,KAAK,EAAEM,MAAM,CAACM,IAAK;MACnBC,QAAQ,EAAGC,CAAC,IAAK;QACf,MAAM;UAAEZ;QAAO,CAAC,GAAGY,CAAC,CAACC,WAAW,CAACC,MAAM;QACvCzB,gBAAgB,CAACW,MAAM,CAAC;MAC1B,CAAE;MAAAd,QAAA,eAEFV,IAAA,CAACJ,IAAI;QAAAc,QAAA,EAAEA;MAAQ,CAAO;IAAC,CACnB,CAAC;EAAA,CACH,CAAC;AAEX;AACA,MAAMkB,MAAM,GAAGjC,UAAU,CAAC4C,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACTW,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACDX,WAAW,EAAE;IACXW,UAAU,EAAE,QAAQ;IACpBC,WAAW,EAAE;EACf,CAAC;EACDC,MAAM,EAAE;IACNpB,KAAK,EAAE,CAAC;IACRqB,WAAW,EAAE,CAAC;IACdC,eAAe,EAAE,CAAC;IAClBC,eAAe,EAAEjD,KAAK,CAAC6B,IAAI,CAAC,GAAG,CAAC;IAChCqB,WAAW,EAAE;EACf,CAAC;EACDb,IAAI,EAAE;IACJA,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,62 @@
1
+ # Divider
2
+
3
+ **Divider** adalah komponen garis horizontal sederhana yang digunakan untuk memisahkan konten secara visual dalam antarmuka pengguna.
4
+
5
+ ---
6
+
7
+ ## Instalasi
8
+
9
+ Komponen ini tidak memerlukan dependensi eksternal. Hanya menggunakan:
10
+
11
+ * `Color` – untuk warna garis.
12
+ * `View` dan `StyleSheet` dari `react-native`.
13
+
14
+ ---
15
+
16
+ ## API Reference
17
+
18
+ Tidak memiliki properti (props) khusus. Komponen ini dapat digunakan langsung dan bisa dikustomisasi melalui `style` eksternal jika diperlukan.
19
+
20
+ ---
21
+
22
+ ## Contoh Penggunaan
23
+
24
+ ### Divider Default
25
+
26
+ ```tsx
27
+ import Divider from '@/components/Divider/Divider';
28
+
29
+ <View>
30
+ <Text>Bagian Atas</Text>
31
+ <Divider />
32
+ <Text>Bagian Bawah</Text>
33
+ </View>
34
+ ```
35
+
36
+ ### Divider dengan Margin
37
+
38
+ ```tsx
39
+ <View style={{ marginVertical: 12 }}>
40
+ <Divider />
41
+ </View>
42
+ ```
43
+
44
+ ### Divider yang Dikustomisasi
45
+
46
+ ```tsx
47
+ <Divider style={{ backgroundColor: 'red', height: 2 }} />
48
+ ```
49
+
50
+ > Catatan: Untuk mengubah gaya `Divider`, bungkus komponen dengan `View` tambahan atau tambahkan prop `style` melalui wrapper jika perlu.
51
+
52
+ ---
53
+
54
+ ## Style Default
55
+
56
+ ```ts
57
+ {
58
+ height: 1,
59
+ backgroundColor: Color.gray[200],
60
+ }
61
+ ```
62
+
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"DropDown.d.ts","sourceRoot":"","sources":["../../../../src/DropDown/DropDown.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG5C,QAAA,MAAM,QAAQ,GAAI,iDAKf,aAAa,4CAsEf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"DropDown.d.ts","sourceRoot":"","sources":["../../../../src/DropDown/DropDown.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG5C,QAAA,MAAM,QAAQ,GAAI,iDAKf,aAAa,4CAgFf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -4,6 +4,6 @@ export interface DropDownProps {
4
4
  options: ChipOptionProps[];
5
5
  maxHeight?: number;
6
6
  onSelect?: (value: string | number) => void;
7
- renderButton?: React.ReactNode;
7
+ renderButton: React.ReactNode;
8
8
  }
9
9
  //# sourceMappingURL=type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/DropDown/type.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/DropDown/type.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;CAC/B"}
@@ -6,8 +6,8 @@ interface FooterContextType {
6
6
  }
7
7
  interface ProviderProps {
8
8
  children: ReactNode;
9
- requiredUpdated: boolean;
10
- updateConfig: RequiredUpdateAppsProviderProps;
9
+ requiredUpdated?: boolean;
10
+ updateConfig?: RequiredUpdateAppsProviderProps;
11
11
  }
12
12
  export default function Provider({ children, requiredUpdated, updateConfig, }: ProviderProps): import("react/jsx-runtime").JSX.Element;
13
13
  export declare const useFooter: () => FooterContextType;
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/Provider/Provider.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,QAAQ,CAAC;AAE9D,UAAU,iBAAiB;IACzB,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACjC;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,+BAA+B,CAAC;CAC/C;AAID,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,QAAQ,EACR,eAAuB,EACvB,YAAY,GACb,EAAE,aAAa,2CAaf;AAED,eAAO,MAAM,SAAS,yBAMrB,CAAC"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/Provider/Provider.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,QAAQ,CAAC;AAG9D,UAAU,iBAAiB;IACzB,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACjC;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,+BAA+B,CAAC;CAChD;AAID,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,QAAQ,EACR,eAAuB,EACvB,YAAY,GACb,EAAE,aAAa,2CAaf;AAED,eAAO,MAAM,SAAS,yBAMrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export interface RequiredUpdateAppsProviderProps {
2
- title: string;
3
- description: string;
2
+ title?: string;
3
+ description?: string;
4
4
  buttonText?: string;
5
5
  onUpdate?: (value: boolean) => void;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Provider/type.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Provider/type.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,+BAA+B;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC"}
@@ -8,7 +8,7 @@ declare const COLOR_MAP: {
8
8
  type ColorKey = keyof typeof COLOR_MAP;
9
9
  interface TimelineItemProps {
10
10
  children: React.ReactNode;
11
- color: ColorKey;
11
+ color?: ColorKey;
12
12
  }
13
13
  export default function TimelineItem({ children, color, }: TimelineItemProps): import("react/jsx-runtime").JSX.Element;
14
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineItem.d.ts","sourceRoot":"","sources":["../../../../src/Timeline/TimelineItem.tsx"],"names":[],"mappings":"AAKA,QAAA,MAAM,SAAS;;;;;;CAMd,CAAC;AACF,KAAK,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAC;AAEvC,UAAU,iBAAiB;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,QAAQ,EACR,KAAiB,GAClB,EAAE,iBAAiB,2CAoBnB"}
1
+ {"version":3,"file":"TimelineItem.d.ts","sourceRoot":"","sources":["../../../../src/Timeline/TimelineItem.tsx"],"names":[],"mappings":"AAKA,QAAA,MAAM,SAAS;;;;;;CAMd,CAAC;AACF,KAAK,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAC;AAEvC,UAAU,iBAAiB;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,QAAQ,EACR,KAAiB,GAClB,EAAE,iBAAiB,2CAiCnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herca/rn-kit",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "React Native UI Kit",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,6 +1,7 @@
1
1
  # 📂 Accordion
2
2
 
3
3
  Komponen **Accordion** digunakan untuk menyembunyikan atau menampilkan konten secara dinamis. Biasanya digunakan untuk struktur seperti FAQ atau daftar konten bertingkat.
4
+
4
5
  <img src="../../assets/doc/Accordion/Accordion.gif" alt="Deskripsi Alt" width="200" />
5
6
 
6
7
  ## 📦 USAGE
@@ -1,6 +1,7 @@
1
1
  # 📢 Alert Component
2
2
 
3
3
  Komponen `Alert` digunakan untuk menampilkan pesan notifikasi dengan ikon, judul, dan pesan yang dapat dikustomisasi warnanya sesuai konteks (seperti *success*, *info*, *warning*, dll).
4
+
4
5
  <img src="../../assets/doc/Alert/Alert.png" alt="Deskripsi Alt" width="200" />
5
6
 
6
7
  ## ✨ Fitur