@masumdev/rn-ui 0.1.7 → 0.2.0
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/lib/commonjs/components/Accordion.js +28 -13
- package/lib/commonjs/components/Accordion.js.map +1 -1
- package/lib/commonjs/components/Alert.js +229 -73
- package/lib/commonjs/components/Alert.js.map +1 -1
- package/lib/commonjs/components/AlertDialog.js +143 -87
- package/lib/commonjs/components/AlertDialog.js.map +1 -1
- package/lib/commonjs/components/Avatar.js +31 -28
- package/lib/commonjs/components/Avatar.js.map +1 -1
- package/lib/commonjs/components/Badge.js +18 -7
- package/lib/commonjs/components/Badge.js.map +1 -1
- package/lib/commonjs/components/BottomSheet.js +63 -8
- package/lib/commonjs/components/BottomSheet.js.map +1 -1
- package/lib/commonjs/components/Breadcrumb.js +31 -9
- package/lib/commonjs/components/Breadcrumb.js.map +1 -1
- package/lib/commonjs/components/Button.js +22 -6
- package/lib/commonjs/components/Button.js.map +1 -1
- package/lib/commonjs/components/Calendar.js +113 -31
- package/lib/commonjs/components/Calendar.js.map +1 -1
- package/lib/commonjs/components/Card.js +8 -3
- package/lib/commonjs/components/Card.js.map +1 -1
- package/lib/commonjs/components/Carousel.js +67 -21
- package/lib/commonjs/components/Carousel.js.map +1 -1
- package/lib/commonjs/components/Checkbox.js +12 -7
- package/lib/commonjs/components/Checkbox.js.map +1 -1
- package/lib/commonjs/components/Collapsible.js +47 -36
- package/lib/commonjs/components/Collapsible.js.map +1 -1
- package/lib/commonjs/components/Combobox.js +110 -48
- package/lib/commonjs/components/Combobox.js.map +1 -1
- package/lib/commonjs/components/Command.js +121 -77
- package/lib/commonjs/components/Command.js.map +1 -1
- package/lib/commonjs/components/DropdownMenu.js +78 -25
- package/lib/commonjs/components/DropdownMenu.js.map +1 -1
- package/lib/commonjs/components/Empty.js +24 -10
- package/lib/commonjs/components/Empty.js.map +1 -1
- package/lib/commonjs/components/FormField.js +63 -13
- package/lib/commonjs/components/FormField.js.map +1 -1
- package/lib/commonjs/components/IconButton.js +22 -6
- package/lib/commonjs/components/IconButton.js.map +1 -1
- package/lib/commonjs/components/Input.js +11 -13
- package/lib/commonjs/components/Input.js.map +1 -1
- package/lib/commonjs/components/InputGroup.js +19 -10
- package/lib/commonjs/components/InputGroup.js.map +1 -1
- package/lib/commonjs/components/InputOTP.js +46 -15
- package/lib/commonjs/components/InputOTP.js.map +1 -1
- package/lib/commonjs/components/Popover.js +90 -23
- package/lib/commonjs/components/Popover.js.map +1 -1
- package/lib/commonjs/components/Progress.js +105 -6
- package/lib/commonjs/components/Progress.js.map +1 -1
- package/lib/commonjs/components/RadioGroup.js +109 -51
- package/lib/commonjs/components/RadioGroup.js.map +1 -1
- package/lib/commonjs/components/Rating.js +109 -95
- package/lib/commonjs/components/Rating.js.map +1 -1
- package/lib/commonjs/components/Select.js +109 -43
- package/lib/commonjs/components/Select.js.map +1 -1
- package/lib/commonjs/components/Sheet.js +217 -29
- package/lib/commonjs/components/Sheet.js.map +1 -1
- package/lib/commonjs/components/Stepper.js +119 -24
- package/lib/commonjs/components/Stepper.js.map +1 -1
- package/lib/commonjs/components/Switch.js +21 -11
- package/lib/commonjs/components/Switch.js.map +1 -1
- package/lib/commonjs/components/Tabs.js +159 -28
- package/lib/commonjs/components/Tabs.js.map +1 -1
- package/lib/commonjs/components/Timeline.js +35 -12
- package/lib/commonjs/components/Timeline.js.map +1 -1
- package/lib/commonjs/components/Toast.js +163 -38
- package/lib/commonjs/components/Toast.js.map +1 -1
- package/lib/commonjs/components/index.js +12 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/components/types.js +16 -0
- package/lib/commonjs/components/types.js.map +1 -1
- package/lib/commonjs/theme/tokens.js +7 -7
- package/lib/commonjs/theme/tokens.js.map +1 -1
- package/lib/commonjs/utils/haptics.js +42 -0
- package/lib/commonjs/utils/haptics.js.map +1 -0
- package/lib/commonjs/utils/index.js +7 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/components/Accordion.js +28 -13
- package/lib/module/components/Accordion.js.map +1 -1
- package/lib/module/components/Alert.js +229 -73
- package/lib/module/components/Alert.js.map +1 -1
- package/lib/module/components/AlertDialog.js +144 -88
- package/lib/module/components/AlertDialog.js.map +1 -1
- package/lib/module/components/Avatar.js +31 -28
- package/lib/module/components/Avatar.js.map +1 -1
- package/lib/module/components/Badge.js +18 -7
- package/lib/module/components/Badge.js.map +1 -1
- package/lib/module/components/BottomSheet.js +64 -4
- package/lib/module/components/BottomSheet.js.map +1 -1
- package/lib/module/components/Breadcrumb.js +31 -9
- package/lib/module/components/Breadcrumb.js.map +1 -1
- package/lib/module/components/Button.js +22 -6
- package/lib/module/components/Button.js.map +1 -1
- package/lib/module/components/Calendar.js +114 -32
- package/lib/module/components/Calendar.js.map +1 -1
- package/lib/module/components/Card.js +8 -3
- package/lib/module/components/Card.js.map +1 -1
- package/lib/module/components/Carousel.js +67 -21
- package/lib/module/components/Carousel.js.map +1 -1
- package/lib/module/components/Checkbox.js +12 -7
- package/lib/module/components/Checkbox.js.map +1 -1
- package/lib/module/components/Collapsible.js +49 -38
- package/lib/module/components/Collapsible.js.map +1 -1
- package/lib/module/components/Combobox.js +110 -48
- package/lib/module/components/Combobox.js.map +1 -1
- package/lib/module/components/Command.js +121 -77
- package/lib/module/components/Command.js.map +1 -1
- package/lib/module/components/DropdownMenu.js +79 -26
- package/lib/module/components/DropdownMenu.js.map +1 -1
- package/lib/module/components/Empty.js +24 -10
- package/lib/module/components/Empty.js.map +1 -1
- package/lib/module/components/FormField.js +63 -14
- package/lib/module/components/FormField.js.map +1 -1
- package/lib/module/components/IconButton.js +22 -6
- package/lib/module/components/IconButton.js.map +1 -1
- package/lib/module/components/Input.js +12 -14
- package/lib/module/components/Input.js.map +1 -1
- package/lib/module/components/InputGroup.js +19 -10
- package/lib/module/components/InputGroup.js.map +1 -1
- package/lib/module/components/InputOTP.js +46 -15
- package/lib/module/components/InputOTP.js.map +1 -1
- package/lib/module/components/Popover.js +90 -24
- package/lib/module/components/Popover.js.map +1 -1
- package/lib/module/components/Progress.js +106 -8
- package/lib/module/components/Progress.js.map +1 -1
- package/lib/module/components/RadioGroup.js +108 -51
- package/lib/module/components/RadioGroup.js.map +1 -1
- package/lib/module/components/Rating.js +109 -95
- package/lib/module/components/Rating.js.map +1 -1
- package/lib/module/components/Select.js +111 -45
- package/lib/module/components/Select.js.map +1 -1
- package/lib/module/components/Sheet.js +216 -24
- package/lib/module/components/Sheet.js.map +1 -1
- package/lib/module/components/Stepper.js +120 -25
- package/lib/module/components/Stepper.js.map +1 -1
- package/lib/module/components/Switch.js +21 -11
- package/lib/module/components/Switch.js.map +1 -1
- package/lib/module/components/Tabs.js +158 -29
- package/lib/module/components/Tabs.js.map +1 -1
- package/lib/module/components/Timeline.js +35 -12
- package/lib/module/components/Timeline.js.map +1 -1
- package/lib/module/components/Toast.js +164 -38
- package/lib/module/components/Toast.js.map +1 -1
- package/lib/module/components/index.js +2 -2
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/components/types.js +16 -0
- package/lib/module/components/types.js.map +1 -1
- package/lib/module/theme/tokens.js +7 -7
- package/lib/module/theme/tokens.js.map +1 -1
- package/lib/module/utils/haptics.js +38 -0
- package/lib/module/utils/haptics.js.map +1 -0
- package/lib/module/utils/index.js +1 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/commonjs/components/Accordion.d.ts +6 -3
- package/lib/typescript/commonjs/components/Accordion.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Alert.d.ts +4 -4
- package/lib/typescript/commonjs/components/Alert.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/AlertDialog.d.ts +5 -3
- package/lib/typescript/commonjs/components/AlertDialog.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Avatar.d.ts +9 -4
- package/lib/typescript/commonjs/components/Avatar.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Badge.d.ts +4 -4
- package/lib/typescript/commonjs/components/Badge.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/BottomSheet.d.ts +13 -4
- package/lib/typescript/commonjs/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Breadcrumb.d.ts +6 -5
- package/lib/typescript/commonjs/components/Breadcrumb.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Button.d.ts +3 -3
- package/lib/typescript/commonjs/components/Button.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Calendar.d.ts +9 -1
- package/lib/typescript/commonjs/components/Calendar.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Card.d.ts +3 -2
- package/lib/typescript/commonjs/components/Card.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Carousel.d.ts +4 -1
- package/lib/typescript/commonjs/components/Carousel.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Checkbox.d.ts +3 -3
- package/lib/typescript/commonjs/components/Checkbox.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Collapsible.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Combobox.d.ts +11 -6
- package/lib/typescript/commonjs/components/Combobox.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Command.d.ts +3 -0
- package/lib/typescript/commonjs/components/Command.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/DropdownMenu.d.ts +4 -2
- package/lib/typescript/commonjs/components/DropdownMenu.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Empty.d.ts +7 -4
- package/lib/typescript/commonjs/components/Empty.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/FormField.d.ts +12 -4
- package/lib/typescript/commonjs/components/FormField.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/IconButton.d.ts +3 -3
- package/lib/typescript/commonjs/components/IconButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Input.d.ts +2 -1
- package/lib/typescript/commonjs/components/Input.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/InputGroup.d.ts +3 -2
- package/lib/typescript/commonjs/components/InputGroup.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/InputOTP.d.ts +9 -4
- package/lib/typescript/commonjs/components/InputOTP.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Popover.d.ts +1 -1
- package/lib/typescript/commonjs/components/Popover.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Progress.d.ts +13 -1
- package/lib/typescript/commonjs/components/Progress.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/RadioGroup.d.ts +3 -2
- package/lib/typescript/commonjs/components/RadioGroup.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Rating.d.ts +3 -23
- package/lib/typescript/commonjs/components/Rating.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Select.d.ts +5 -4
- package/lib/typescript/commonjs/components/Select.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Sheet.d.ts +25 -6
- package/lib/typescript/commonjs/components/Sheet.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Stepper.d.ts +5 -3
- package/lib/typescript/commonjs/components/Stepper.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Switch.d.ts +3 -3
- package/lib/typescript/commonjs/components/Switch.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Tabs.d.ts +21 -4
- package/lib/typescript/commonjs/components/Tabs.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Timeline.d.ts +9 -3
- package/lib/typescript/commonjs/components/Timeline.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Toast.d.ts +3 -0
- package/lib/typescript/commonjs/components/Toast.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/index.d.ts +5 -5
- package/lib/typescript/commonjs/components/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/types.d.ts +35 -0
- package/lib/typescript/commonjs/components/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/haptics.d.ts +6 -0
- package/lib/typescript/commonjs/utils/haptics.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/index.d.ts +1 -0
- package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
- package/lib/typescript/module/components/Accordion.d.ts +6 -3
- package/lib/typescript/module/components/Accordion.d.ts.map +1 -1
- package/lib/typescript/module/components/Alert.d.ts +4 -4
- package/lib/typescript/module/components/Alert.d.ts.map +1 -1
- package/lib/typescript/module/components/AlertDialog.d.ts +5 -3
- package/lib/typescript/module/components/AlertDialog.d.ts.map +1 -1
- package/lib/typescript/module/components/Avatar.d.ts +9 -4
- package/lib/typescript/module/components/Avatar.d.ts.map +1 -1
- package/lib/typescript/module/components/Badge.d.ts +4 -4
- package/lib/typescript/module/components/Badge.d.ts.map +1 -1
- package/lib/typescript/module/components/BottomSheet.d.ts +13 -4
- package/lib/typescript/module/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/module/components/Breadcrumb.d.ts +6 -5
- package/lib/typescript/module/components/Breadcrumb.d.ts.map +1 -1
- package/lib/typescript/module/components/Button.d.ts +3 -3
- package/lib/typescript/module/components/Button.d.ts.map +1 -1
- package/lib/typescript/module/components/Calendar.d.ts +9 -1
- package/lib/typescript/module/components/Calendar.d.ts.map +1 -1
- package/lib/typescript/module/components/Card.d.ts +3 -2
- package/lib/typescript/module/components/Card.d.ts.map +1 -1
- package/lib/typescript/module/components/Carousel.d.ts +4 -1
- package/lib/typescript/module/components/Carousel.d.ts.map +1 -1
- package/lib/typescript/module/components/Checkbox.d.ts +3 -3
- package/lib/typescript/module/components/Checkbox.d.ts.map +1 -1
- package/lib/typescript/module/components/Collapsible.d.ts.map +1 -1
- package/lib/typescript/module/components/Combobox.d.ts +11 -6
- package/lib/typescript/module/components/Combobox.d.ts.map +1 -1
- package/lib/typescript/module/components/Command.d.ts +3 -0
- package/lib/typescript/module/components/Command.d.ts.map +1 -1
- package/lib/typescript/module/components/DropdownMenu.d.ts +4 -2
- package/lib/typescript/module/components/DropdownMenu.d.ts.map +1 -1
- package/lib/typescript/module/components/Empty.d.ts +7 -4
- package/lib/typescript/module/components/Empty.d.ts.map +1 -1
- package/lib/typescript/module/components/FormField.d.ts +12 -4
- package/lib/typescript/module/components/FormField.d.ts.map +1 -1
- package/lib/typescript/module/components/IconButton.d.ts +3 -3
- package/lib/typescript/module/components/IconButton.d.ts.map +1 -1
- package/lib/typescript/module/components/Input.d.ts +2 -1
- package/lib/typescript/module/components/Input.d.ts.map +1 -1
- package/lib/typescript/module/components/InputGroup.d.ts +3 -2
- package/lib/typescript/module/components/InputGroup.d.ts.map +1 -1
- package/lib/typescript/module/components/InputOTP.d.ts +9 -4
- package/lib/typescript/module/components/InputOTP.d.ts.map +1 -1
- package/lib/typescript/module/components/Popover.d.ts +1 -1
- package/lib/typescript/module/components/Popover.d.ts.map +1 -1
- package/lib/typescript/module/components/Progress.d.ts +13 -1
- package/lib/typescript/module/components/Progress.d.ts.map +1 -1
- package/lib/typescript/module/components/RadioGroup.d.ts +3 -2
- package/lib/typescript/module/components/RadioGroup.d.ts.map +1 -1
- package/lib/typescript/module/components/Rating.d.ts +3 -23
- package/lib/typescript/module/components/Rating.d.ts.map +1 -1
- package/lib/typescript/module/components/Select.d.ts +5 -4
- package/lib/typescript/module/components/Select.d.ts.map +1 -1
- package/lib/typescript/module/components/Sheet.d.ts +25 -6
- package/lib/typescript/module/components/Sheet.d.ts.map +1 -1
- package/lib/typescript/module/components/Stepper.d.ts +5 -3
- package/lib/typescript/module/components/Stepper.d.ts.map +1 -1
- package/lib/typescript/module/components/Switch.d.ts +3 -3
- package/lib/typescript/module/components/Switch.d.ts.map +1 -1
- package/lib/typescript/module/components/Tabs.d.ts +21 -4
- package/lib/typescript/module/components/Tabs.d.ts.map +1 -1
- package/lib/typescript/module/components/Timeline.d.ts +9 -3
- package/lib/typescript/module/components/Timeline.d.ts.map +1 -1
- package/lib/typescript/module/components/Toast.d.ts +3 -0
- package/lib/typescript/module/components/Toast.d.ts.map +1 -1
- package/lib/typescript/module/components/index.d.ts +5 -5
- package/lib/typescript/module/components/index.d.ts.map +1 -1
- package/lib/typescript/module/components/types.d.ts +35 -0
- package/lib/typescript/module/components/types.d.ts.map +1 -1
- package/lib/typescript/module/utils/haptics.d.ts +6 -0
- package/lib/typescript/module/utils/haptics.d.ts.map +1 -0
- package/lib/typescript/module/utils/index.d.ts +1 -0
- package/lib/typescript/module/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.triggerHaptic = triggerHaptic;
|
|
7
|
+
/**
|
|
8
|
+
* Safe haptic feedback utility for @masumdev/rn-ui.
|
|
9
|
+
* Attempts to invoke expo-haptics if available in runtime, gracefully falling back to a no-op if absent.
|
|
10
|
+
*/
|
|
11
|
+
function triggerHaptic(type = "light") {
|
|
12
|
+
try {
|
|
13
|
+
const Haptic = require("expo-haptics");
|
|
14
|
+
if (!Haptic) return;
|
|
15
|
+
switch (type) {
|
|
16
|
+
case "light":
|
|
17
|
+
Haptic.impactAsync?.(Haptic.ImpactFeedbackStyle?.Light);
|
|
18
|
+
break;
|
|
19
|
+
case "medium":
|
|
20
|
+
Haptic.impactAsync?.(Haptic.ImpactFeedbackStyle?.Medium);
|
|
21
|
+
break;
|
|
22
|
+
case "heavy":
|
|
23
|
+
Haptic.impactAsync?.(Haptic.ImpactFeedbackStyle?.Heavy);
|
|
24
|
+
break;
|
|
25
|
+
case "selection":
|
|
26
|
+
Haptic.selectionAsync?.();
|
|
27
|
+
break;
|
|
28
|
+
case "success":
|
|
29
|
+
Haptic.notificationAsync?.(Haptic.NotificationFeedbackType?.Success);
|
|
30
|
+
break;
|
|
31
|
+
case "warning":
|
|
32
|
+
Haptic.notificationAsync?.(Haptic.NotificationFeedbackType?.Warning);
|
|
33
|
+
break;
|
|
34
|
+
case "error":
|
|
35
|
+
Haptic.notificationAsync?.(Haptic.NotificationFeedbackType?.Error);
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
} catch (_err) {
|
|
39
|
+
// Graceful no-op when expo-haptics is absent in pure React Native or mock environments
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=haptics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["triggerHaptic","type","Haptic","require","impactAsync","ImpactFeedbackStyle","Light","Medium","Heavy","selectionAsync","notificationAsync","NotificationFeedbackType","Success","Warning","Error","_err"],"sourceRoot":"../../../src","sources":["utils/haptics.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACO,SAASA,aAAaA,CAC3BC,IAAkF,GAAG,OAAO,EAC5F;EACA,IAAI;IACF,MAAMC,MAAM,GAAGC,OAAO,CAAC,cAAc,CAAC;IACtC,IAAI,CAACD,MAAM,EAAE;IAEb,QAAQD,IAAI;MACV,KAAK,OAAO;QACVC,MAAM,CAACE,WAAW,GAAGF,MAAM,CAACG,mBAAmB,EAAEC,KAAK,CAAC;QACvD;MACF,KAAK,QAAQ;QACXJ,MAAM,CAACE,WAAW,GAAGF,MAAM,CAACG,mBAAmB,EAAEE,MAAM,CAAC;QACxD;MACF,KAAK,OAAO;QACVL,MAAM,CAACE,WAAW,GAAGF,MAAM,CAACG,mBAAmB,EAAEG,KAAK,CAAC;QACvD;MACF,KAAK,WAAW;QACdN,MAAM,CAACO,cAAc,GAAG,CAAC;QACzB;MACF,KAAK,SAAS;QACZP,MAAM,CAACQ,iBAAiB,GAAGR,MAAM,CAACS,wBAAwB,EAAEC,OAAO,CAAC;QACpE;MACF,KAAK,SAAS;QACZV,MAAM,CAACQ,iBAAiB,GAAGR,MAAM,CAACS,wBAAwB,EAAEE,OAAO,CAAC;QACpE;MACF,KAAK,OAAO;QACVX,MAAM,CAACQ,iBAAiB,GAAGR,MAAM,CAACS,wBAAwB,EAAEG,KAAK,CAAC;QAClE;IACJ;EACF,CAAC,CAAC,OAAOC,IAAI,EAAE;IACb;EAAA;AAEJ","ignoreList":[]}
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "triggerHaptic", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _haptics.triggerHaptic;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "withAlpha", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
|
@@ -10,4 +16,5 @@ Object.defineProperty(exports, "withAlpha", {
|
|
|
10
16
|
}
|
|
11
17
|
});
|
|
12
18
|
var _color = require("./color.js");
|
|
19
|
+
var _haptics = require("./haptics.js");
|
|
13
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_color","require"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_color","require","_haptics"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
|
4
4
|
import { Pressable, Text as RNText, View } from "react-native";
|
|
5
5
|
import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming } from "react-native-reanimated";
|
|
6
6
|
import { useTheme } from "../theme/index.js";
|
|
7
|
+
import { triggerHaptic } from "../utils/haptics.js";
|
|
7
8
|
import { renderIcon } from "./types.js";
|
|
8
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
10
|
function renderIndicator(indicator, expanded, color, size) {
|
|
@@ -96,12 +97,15 @@ function DefaultAccordionIndicator({
|
|
|
96
97
|
}
|
|
97
98
|
export function Accordion({
|
|
98
99
|
items,
|
|
100
|
+
variant = "outlined",
|
|
99
101
|
allowMultiple = false,
|
|
100
102
|
defaultOpenIds = [],
|
|
101
103
|
openIds,
|
|
102
104
|
onOpenChange,
|
|
103
105
|
disabled = false,
|
|
104
106
|
animated = true,
|
|
107
|
+
glass = false,
|
|
108
|
+
haptic = true,
|
|
105
109
|
animationDuration = 180,
|
|
106
110
|
animationComponents,
|
|
107
111
|
indicator,
|
|
@@ -117,7 +121,8 @@ export function Accordion({
|
|
|
117
121
|
components,
|
|
118
122
|
radii,
|
|
119
123
|
spacing,
|
|
120
|
-
typography
|
|
124
|
+
typography,
|
|
125
|
+
isDark
|
|
121
126
|
} = useTheme();
|
|
122
127
|
const [internalOpenIds, setInternalOpenIds] = useState(defaultOpenIds);
|
|
123
128
|
const activeOpenIds = openIds ?? internalOpenIds;
|
|
@@ -130,25 +135,35 @@ export function Accordion({
|
|
|
130
135
|
}, [onOpenChange, openIds]);
|
|
131
136
|
const AnimatedContent = animationComponents?.Content ?? DefaultAccordionContent;
|
|
132
137
|
const AnimatedIndicator = animationComponents?.Indicator ?? DefaultAccordionIndicator;
|
|
138
|
+
const isGlass = glass || variant === "glass";
|
|
139
|
+
const isFlat = variant === "flat";
|
|
140
|
+
const isGhost = variant === "ghost";
|
|
141
|
+
const glassBg = isDark ? "rgba(15, 27, 45, 0.60)" : "rgba(255, 255, 255, 0.75)";
|
|
133
142
|
const toggleItem = useCallback(item => {
|
|
134
143
|
if (disabled || item.disabled) return;
|
|
144
|
+
if (haptic) triggerHaptic("selection");
|
|
135
145
|
const expanded = openSet.has(item.id);
|
|
136
146
|
const nextOpenIds = expanded ? activeOpenIds.filter(id => id !== item.id) : allowMultiple ? [...activeOpenIds, item.id] : [item.id];
|
|
137
147
|
setNextOpenIds(nextOpenIds);
|
|
138
|
-
}, [activeOpenIds, allowMultiple, disabled, openSet, setNextOpenIds]);
|
|
148
|
+
}, [activeOpenIds, allowMultiple, disabled, haptic, openSet, setNextOpenIds]);
|
|
139
149
|
return /*#__PURE__*/_jsx(View, {
|
|
140
150
|
style: [{
|
|
141
|
-
gap: spacing.sm
|
|
151
|
+
gap: isGhost ? 0 : spacing.sm
|
|
142
152
|
}, style],
|
|
143
|
-
children: items.map(item => {
|
|
153
|
+
children: items.map((item, index) => {
|
|
144
154
|
const expanded = openSet.has(item.id);
|
|
145
155
|
const itemDisabled = disabled || item.disabled;
|
|
156
|
+
const itemBg = isGlass ? glassBg : isGhost ? colors.transparent : isFlat ? isDark ? "rgba(15, 28, 38, 0.6)" : colors.backgroundMuted : colors.surface;
|
|
157
|
+
const itemBorderColor = isGlass ? isDark ? "rgba(248, 250, 252, 0.20)" : "rgba(15, 23, 42, 0.14)" : isGhost ? colors.border : isFlat ? "transparent" : expanded ? colors.primary : colors.border;
|
|
158
|
+
const borderWidth = isGhost ? 0 : isFlat ? 0 : components.borderWidth.strong;
|
|
159
|
+
const borderBottomWidth = isGhost && index < items.length - 1 ? 1 : borderWidth;
|
|
146
160
|
return /*#__PURE__*/_jsxs(View, {
|
|
147
161
|
style: [{
|
|
148
|
-
backgroundColor:
|
|
149
|
-
borderRadius: radii.xl,
|
|
150
|
-
borderWidth
|
|
151
|
-
|
|
162
|
+
backgroundColor: itemBg,
|
|
163
|
+
borderRadius: isGhost ? 0 : radii.xl,
|
|
164
|
+
borderWidth,
|
|
165
|
+
borderBottomWidth,
|
|
166
|
+
borderColor: itemBorderColor,
|
|
152
167
|
overflow: "hidden",
|
|
153
168
|
opacity: itemDisabled ? 0.58 : 1
|
|
154
169
|
}, itemStyle],
|
|
@@ -167,7 +182,7 @@ export function Accordion({
|
|
|
167
182
|
flexDirection: "row",
|
|
168
183
|
alignItems: "center",
|
|
169
184
|
gap: spacing.md,
|
|
170
|
-
backgroundColor: pressed && !itemDisabled ? colors.backgroundMuted : colors.
|
|
185
|
+
backgroundColor: pressed && !itemDisabled ? colors.backgroundMuted : colors.transparent
|
|
171
186
|
}, headerStyle],
|
|
172
187
|
children: [renderIcon(item.icon, expanded ? colors.primary : colors.textMuted, 20), /*#__PURE__*/_jsxs(View, {
|
|
173
188
|
style: {
|
|
@@ -202,10 +217,10 @@ export function Accordion({
|
|
|
202
217
|
expanded: expanded,
|
|
203
218
|
duration: animationDuration,
|
|
204
219
|
style: [{
|
|
205
|
-
borderTopWidth: 1,
|
|
220
|
+
borderTopWidth: isGhost ? 0 : 1,
|
|
206
221
|
borderTopColor: colors.border,
|
|
207
222
|
padding: spacing.lg,
|
|
208
|
-
backgroundColor: colors.
|
|
223
|
+
backgroundColor: colors.transparent
|
|
209
224
|
}, contentStyle],
|
|
210
225
|
children: typeof item.content === "string" ? /*#__PURE__*/_jsx(RNText, {
|
|
211
226
|
style: [typography.body, {
|
|
@@ -215,10 +230,10 @@ export function Accordion({
|
|
|
215
230
|
}) : item.content
|
|
216
231
|
}) : expanded && /*#__PURE__*/_jsx(View, {
|
|
217
232
|
style: [{
|
|
218
|
-
borderTopWidth: 1,
|
|
233
|
+
borderTopWidth: isGhost ? 0 : 1,
|
|
219
234
|
borderTopColor: colors.border,
|
|
220
235
|
padding: spacing.lg,
|
|
221
|
-
backgroundColor: colors.
|
|
236
|
+
backgroundColor: colors.transparent
|
|
222
237
|
}, contentStyle],
|
|
223
238
|
children: typeof item.content === "string" ? /*#__PURE__*/_jsx(RNText, {
|
|
224
239
|
style: [typography.body, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","Pressable","Text","RNText","View","Animated","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useTheme","renderIcon","jsx","_jsx","jsxs","_jsxs","renderIndicator","indicator","expanded","color","size","style","fontSize","lineHeight","fontWeight","children","DefaultAccordionContent","duration","progress","contentHeight","setContentHeight","shouldRender","setShouldRender","value","finished","animatedStyle","height","opacity","overflow","position","left","right","onLayout","event","nativeEvent","layout","DefaultAccordionIndicator","transform","rotate","Accordion","items","allowMultiple","defaultOpenIds","openIds","onOpenChange","disabled","animated","animationDuration","animationComponents","itemStyle","headerStyle","titleStyle","subtitleStyle","contentStyle","colors","components","radii","spacing","typography","internalOpenIds","setInternalOpenIds","activeOpenIds","openSet","Set","setNextOpenIds","nextOpenIds","AnimatedContent","Content","AnimatedIndicator","Indicator","toggleItem","item","has","id","filter","gap","sm","map","itemDisabled","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","Pressable","Text","RNText","View","Animated","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useTheme","triggerHaptic","renderIcon","jsx","_jsx","jsxs","_jsxs","renderIndicator","indicator","expanded","color","size","style","fontSize","lineHeight","fontWeight","children","DefaultAccordionContent","duration","progress","contentHeight","setContentHeight","shouldRender","setShouldRender","value","finished","animatedStyle","height","opacity","overflow","position","left","right","onLayout","event","nativeEvent","layout","DefaultAccordionIndicator","transform","rotate","Accordion","items","variant","allowMultiple","defaultOpenIds","openIds","onOpenChange","disabled","animated","glass","haptic","animationDuration","animationComponents","itemStyle","headerStyle","titleStyle","subtitleStyle","contentStyle","colors","components","radii","spacing","typography","isDark","internalOpenIds","setInternalOpenIds","activeOpenIds","openSet","Set","setNextOpenIds","nextOpenIds","AnimatedContent","Content","AnimatedIndicator","Indicator","isGlass","isFlat","isGhost","glassBg","toggleItem","item","has","id","filter","gap","sm","map","index","itemDisabled","itemBg","transparent","backgroundMuted","surface","itemBorderColor","border","primary","borderWidth","strong","borderBottomWidth","length","backgroundColor","borderRadius","xl","borderColor","accessibilityRole","accessibilityState","onPress","pressed","padding","lg","flexDirection","alignItems","md","icon","textMuted","flex","xxs","title","subtitle","text","bodySmall","width","justifyContent","borderTopWidth","borderTopColor","content","body"],"sourceRoot":"../../../src","sources":["components/Accordion.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,55 +4,118 @@ import React from "react";
|
|
|
4
4
|
import { Pressable, View } from "react-native";
|
|
5
5
|
import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming } from "react-native-reanimated";
|
|
6
6
|
import { useTheme } from "../theme/index.js";
|
|
7
|
-
import {
|
|
7
|
+
import { withAlpha } from "../utils/index.js";
|
|
8
8
|
import { Text } from "./Text.js";
|
|
9
|
+
import { renderIcon } from "./types.js";
|
|
9
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
on: colors.onInfo
|
|
35
|
-
};
|
|
36
|
-
return {
|
|
37
|
-
base: colors.secondary,
|
|
38
|
-
soft: colors.secondarySoft,
|
|
39
|
-
on: colors.onSecondary
|
|
40
|
-
};
|
|
11
|
+
// Built-in default icons when icon prop is omitted
|
|
12
|
+
function DefaultInfoIcon({
|
|
13
|
+
color
|
|
14
|
+
}) {
|
|
15
|
+
return /*#__PURE__*/_jsx(View, {
|
|
16
|
+
style: {
|
|
17
|
+
width: 18,
|
|
18
|
+
height: 18,
|
|
19
|
+
borderRadius: 9,
|
|
20
|
+
borderWidth: 1.8,
|
|
21
|
+
borderColor: color,
|
|
22
|
+
alignItems: "center",
|
|
23
|
+
justifyContent: "center"
|
|
24
|
+
},
|
|
25
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
26
|
+
style: {
|
|
27
|
+
color,
|
|
28
|
+
fontSize: 11,
|
|
29
|
+
fontWeight: "700",
|
|
30
|
+
lineHeight: 12
|
|
31
|
+
},
|
|
32
|
+
children: "i"
|
|
33
|
+
})
|
|
34
|
+
});
|
|
41
35
|
}
|
|
42
|
-
function
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
36
|
+
function DefaultSuccessIcon({
|
|
37
|
+
color
|
|
38
|
+
}) {
|
|
39
|
+
return /*#__PURE__*/_jsx(View, {
|
|
40
|
+
style: {
|
|
41
|
+
width: 18,
|
|
42
|
+
height: 18,
|
|
43
|
+
borderRadius: 9,
|
|
44
|
+
backgroundColor: color,
|
|
45
|
+
alignItems: "center",
|
|
46
|
+
justifyContent: "center"
|
|
47
|
+
},
|
|
48
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
49
|
+
style: {
|
|
50
|
+
width: 8,
|
|
51
|
+
height: 4,
|
|
52
|
+
borderLeftWidth: 1.8,
|
|
53
|
+
borderBottomWidth: 1.8,
|
|
54
|
+
borderColor: "#FFFFFF",
|
|
55
|
+
transform: [{
|
|
56
|
+
rotate: "-45deg"
|
|
57
|
+
}],
|
|
58
|
+
marginTop: -1
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function DefaultWarningIcon({
|
|
64
|
+
color
|
|
65
|
+
}) {
|
|
66
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
67
|
+
style: {
|
|
68
|
+
color,
|
|
69
|
+
fontSize: 16,
|
|
70
|
+
fontWeight: "700",
|
|
71
|
+
lineHeight: 18
|
|
72
|
+
},
|
|
73
|
+
children: "\u26A0\uFE0F"
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function DefaultDangerIcon({
|
|
77
|
+
color
|
|
78
|
+
}) {
|
|
79
|
+
return /*#__PURE__*/_jsx(View, {
|
|
80
|
+
style: {
|
|
81
|
+
width: 18,
|
|
82
|
+
height: 18,
|
|
83
|
+
borderRadius: 9,
|
|
84
|
+
backgroundColor: color,
|
|
85
|
+
alignItems: "center",
|
|
86
|
+
justifyContent: "center"
|
|
87
|
+
},
|
|
88
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
89
|
+
style: {
|
|
90
|
+
color: "#FFFFFF",
|
|
91
|
+
fontSize: 11,
|
|
92
|
+
fontWeight: "700",
|
|
93
|
+
lineHeight: 12
|
|
94
|
+
},
|
|
95
|
+
children: "\u2715"
|
|
96
|
+
})
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function renderDefaultIcon(tone, color) {
|
|
100
|
+
if (tone === "success") return /*#__PURE__*/_jsx(DefaultSuccessIcon, {
|
|
101
|
+
color: color
|
|
102
|
+
});
|
|
103
|
+
if (tone === "warning") return /*#__PURE__*/_jsx(DefaultWarningIcon, {
|
|
104
|
+
color: color
|
|
105
|
+
});
|
|
106
|
+
if (tone === "danger") return /*#__PURE__*/_jsx(DefaultDangerIcon, {
|
|
107
|
+
color: color
|
|
108
|
+
});
|
|
109
|
+
return /*#__PURE__*/_jsx(DefaultInfoIcon, {
|
|
110
|
+
color: color
|
|
111
|
+
});
|
|
50
112
|
}
|
|
51
113
|
export function Alert({
|
|
52
114
|
title,
|
|
53
115
|
children,
|
|
54
116
|
tone = "info",
|
|
55
117
|
variant = "soft",
|
|
118
|
+
glass = false,
|
|
56
119
|
icon,
|
|
57
120
|
action,
|
|
58
121
|
dismissible = false,
|
|
@@ -69,16 +132,86 @@ export function Alert({
|
|
|
69
132
|
colors,
|
|
70
133
|
components,
|
|
71
134
|
radii,
|
|
72
|
-
spacing
|
|
135
|
+
spacing,
|
|
136
|
+
isDark
|
|
73
137
|
} = useTheme();
|
|
74
138
|
const [visible, setVisible] = React.useState(true);
|
|
75
139
|
const progress = useSharedValue(1);
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
140
|
+
|
|
141
|
+
// Deep rich solid colors for dark mode & light mode
|
|
142
|
+
const solidColors = {
|
|
143
|
+
primary: {
|
|
144
|
+
bg: isDark ? "#3730A3" : colors.primary,
|
|
145
|
+
text: "#FFFFFF"
|
|
146
|
+
},
|
|
147
|
+
success: {
|
|
148
|
+
bg: isDark ? "#065F46" : "#059669",
|
|
149
|
+
text: "#FFFFFF"
|
|
150
|
+
},
|
|
151
|
+
warning: {
|
|
152
|
+
bg: isDark ? "#92400E" : "#D97706",
|
|
153
|
+
text: "#FFFFFF"
|
|
154
|
+
},
|
|
155
|
+
danger: {
|
|
156
|
+
bg: isDark ? "#991B1B" : "#DC2626",
|
|
157
|
+
text: "#FFFFFF"
|
|
158
|
+
},
|
|
159
|
+
info: {
|
|
160
|
+
bg: isDark ? "#075985" : "#0284C7",
|
|
161
|
+
text: "#FFFFFF"
|
|
162
|
+
},
|
|
163
|
+
secondary: {
|
|
164
|
+
bg: isDark ? "#334155" : colors.secondary,
|
|
165
|
+
text: "#FFFFFF"
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
const toneBaseColor = {
|
|
169
|
+
primary: colors.primary,
|
|
170
|
+
success: colors.success,
|
|
171
|
+
warning: colors.warning,
|
|
172
|
+
danger: colors.danger,
|
|
173
|
+
info: colors.info,
|
|
174
|
+
secondary: colors.secondary
|
|
175
|
+
};
|
|
176
|
+
const currentToneColor = toneBaseColor[tone];
|
|
177
|
+
const effectiveVariant = glass ? "glass" : variant;
|
|
178
|
+
const glassBg = isDark ? "rgba(15, 27, 45, 0.70)" : "rgba(255, 255, 255, 0.85)";
|
|
179
|
+
let backgroundColor = colors.surface;
|
|
180
|
+
let borderColor = colors.border;
|
|
181
|
+
let titleTextColor = colors.text;
|
|
182
|
+
let bodyTextColor = colors.textMuted;
|
|
183
|
+
let iconColor = currentToneColor;
|
|
184
|
+
if (effectiveVariant === "solid") {
|
|
185
|
+
backgroundColor = solidColors[tone].bg;
|
|
186
|
+
borderColor = solidColors[tone].bg;
|
|
187
|
+
titleTextColor = solidColors[tone].text;
|
|
188
|
+
bodyTextColor = withAlpha(solidColors[tone].text, 0.88);
|
|
189
|
+
iconColor = solidColors[tone].text;
|
|
190
|
+
} else if (effectiveVariant === "soft") {
|
|
191
|
+
backgroundColor = isDark ? withAlpha(currentToneColor, 0.12) : withAlpha(currentToneColor, 0.08);
|
|
192
|
+
borderColor = isDark ? withAlpha(currentToneColor, 0.28) : withAlpha(currentToneColor, 0.22);
|
|
193
|
+
titleTextColor = isDark ? colors.text : colors.text;
|
|
194
|
+
bodyTextColor = colors.textMuted;
|
|
195
|
+
iconColor = currentToneColor;
|
|
196
|
+
} else if (effectiveVariant === "accent") {
|
|
197
|
+
backgroundColor = colors.surface;
|
|
198
|
+
borderColor = colors.border;
|
|
199
|
+
titleTextColor = colors.text;
|
|
200
|
+
bodyTextColor = colors.textMuted;
|
|
201
|
+
iconColor = currentToneColor;
|
|
202
|
+
} else if (effectiveVariant === "glass") {
|
|
203
|
+
backgroundColor = glassBg;
|
|
204
|
+
borderColor = withAlpha(currentToneColor, 0.35);
|
|
205
|
+
titleTextColor = colors.text;
|
|
206
|
+
bodyTextColor = colors.textMuted;
|
|
207
|
+
iconColor = currentToneColor;
|
|
208
|
+
} else if (effectiveVariant === "outline") {
|
|
209
|
+
backgroundColor = colors.transparent;
|
|
210
|
+
borderColor = currentToneColor;
|
|
211
|
+
titleTextColor = colors.text;
|
|
212
|
+
bodyTextColor = colors.textMuted;
|
|
213
|
+
iconColor = currentToneColor;
|
|
214
|
+
}
|
|
82
215
|
const animatedStyle = useAnimatedStyle(() => ({
|
|
83
216
|
opacity: progress.value,
|
|
84
217
|
transform: [{
|
|
@@ -86,7 +219,7 @@ export function Alert({
|
|
|
86
219
|
}]
|
|
87
220
|
}));
|
|
88
221
|
const handleClose = () => {
|
|
89
|
-
if (dismissible && animated) {
|
|
222
|
+
if ((dismissible || onClose) && animated) {
|
|
90
223
|
progress.value = withTiming(0, {
|
|
91
224
|
duration: animationDuration
|
|
92
225
|
}, finished => {
|
|
@@ -94,12 +227,13 @@ export function Alert({
|
|
|
94
227
|
runOnJS(setVisible)(false);
|
|
95
228
|
}
|
|
96
229
|
});
|
|
97
|
-
} else
|
|
230
|
+
} else {
|
|
98
231
|
setVisible(false);
|
|
99
232
|
}
|
|
100
233
|
onClose?.();
|
|
101
234
|
};
|
|
102
|
-
|
|
235
|
+
if (!visible) return null;
|
|
236
|
+
const content = /*#__PURE__*/_jsxs(View, {
|
|
103
237
|
accessibilityRole: "alert",
|
|
104
238
|
style: [{
|
|
105
239
|
backgroundColor,
|
|
@@ -108,18 +242,39 @@ export function Alert({
|
|
|
108
242
|
borderRadius: radii.xl,
|
|
109
243
|
padding: spacing.lg,
|
|
110
244
|
flexDirection: "row",
|
|
111
|
-
|
|
245
|
+
alignItems: "flex-start",
|
|
246
|
+
gap: spacing.md,
|
|
247
|
+
position: "relative",
|
|
248
|
+
overflow: "hidden"
|
|
249
|
+
}, effectiveVariant === "accent" && {
|
|
250
|
+
borderLeftWidth: 4,
|
|
251
|
+
borderLeftColor: currentToneColor
|
|
112
252
|
}, style],
|
|
113
|
-
children: [
|
|
253
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
254
|
+
style: {
|
|
255
|
+
marginTop: 2
|
|
256
|
+
},
|
|
257
|
+
children: icon ? renderIcon(icon, iconColor, 20) : renderDefaultIcon(tone, iconColor)
|
|
258
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
114
259
|
style: [{
|
|
115
260
|
flex: 1,
|
|
116
|
-
gap:
|
|
261
|
+
gap: 4
|
|
117
262
|
}, contentStyle],
|
|
118
|
-
children: [title ?
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
263
|
+
children: [title ? typeof title === "string" ? /*#__PURE__*/_jsx(Text, {
|
|
264
|
+
variant: "label",
|
|
265
|
+
weight: "600",
|
|
266
|
+
style: [{
|
|
267
|
+
color: titleTextColor
|
|
268
|
+
}, titleStyle],
|
|
269
|
+
children: title
|
|
270
|
+
}) : title : null, children ? typeof children === "string" ? /*#__PURE__*/_jsx(Text, {
|
|
271
|
+
variant: "bodySmall",
|
|
272
|
+
style: [{
|
|
273
|
+
color: bodyTextColor,
|
|
274
|
+
lineHeight: 20
|
|
275
|
+
}, textStyle],
|
|
276
|
+
children: children
|
|
277
|
+
}) : children : null, action ? /*#__PURE__*/_jsxs(Pressable, {
|
|
123
278
|
accessibilityRole: "button",
|
|
124
279
|
onPress: action.onPress,
|
|
125
280
|
style: ({
|
|
@@ -132,10 +287,11 @@ export function Alert({
|
|
|
132
287
|
marginTop: spacing.xs,
|
|
133
288
|
opacity: pressed ? 0.72 : 1
|
|
134
289
|
}),
|
|
135
|
-
children: [renderIcon(action.icon,
|
|
290
|
+
children: [renderIcon(action.icon, iconColor, 14), /*#__PURE__*/_jsx(Text, {
|
|
136
291
|
variant: "labelSmall",
|
|
292
|
+
weight: "600",
|
|
137
293
|
style: {
|
|
138
|
-
color:
|
|
294
|
+
color: iconColor
|
|
139
295
|
},
|
|
140
296
|
children: action.label
|
|
141
297
|
})]
|
|
@@ -144,34 +300,34 @@ export function Alert({
|
|
|
144
300
|
accessibilityRole: "button",
|
|
145
301
|
accessibilityLabel: "Close alert",
|
|
146
302
|
onPress: handleClose,
|
|
303
|
+
hitSlop: 8,
|
|
147
304
|
style: ({
|
|
148
305
|
pressed
|
|
149
306
|
}) => ({
|
|
150
|
-
width:
|
|
151
|
-
height:
|
|
152
|
-
borderRadius:
|
|
307
|
+
width: 24,
|
|
308
|
+
height: 24,
|
|
309
|
+
borderRadius: 12,
|
|
153
310
|
alignItems: "center",
|
|
154
311
|
justifyContent: "center",
|
|
155
|
-
|
|
312
|
+
backgroundColor: pressed ? withAlpha(iconColor, 0.15) : "transparent",
|
|
313
|
+
opacity: pressed ? 0.8 : 0.7
|
|
156
314
|
}),
|
|
157
|
-
children: closeIcon ? renderIcon(closeIcon,
|
|
158
|
-
variant: "label",
|
|
315
|
+
children: closeIcon ? renderIcon(closeIcon, iconColor, 16) : /*#__PURE__*/_jsx(Text, {
|
|
159
316
|
style: {
|
|
160
|
-
color:
|
|
317
|
+
color: iconColor,
|
|
318
|
+
fontSize: 14,
|
|
319
|
+
fontWeight: "600"
|
|
161
320
|
},
|
|
162
|
-
children: "
|
|
321
|
+
children: "\u2715"
|
|
163
322
|
})
|
|
164
323
|
}) : null]
|
|
165
324
|
});
|
|
166
|
-
if (!visible) {
|
|
167
|
-
return null;
|
|
168
|
-
}
|
|
169
325
|
if (animated) {
|
|
170
326
|
return /*#__PURE__*/_jsx(Animated.View, {
|
|
171
327
|
style: animatedStyle,
|
|
172
|
-
children:
|
|
328
|
+
children: content
|
|
173
329
|
});
|
|
174
330
|
}
|
|
175
|
-
return
|
|
331
|
+
return content;
|
|
176
332
|
}
|
|
177
333
|
//# sourceMappingURL=Alert.js.map
|