@situaction/traquiste-mobile 1.0.0-next.5 → 1.1.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/README.md +60 -90
- package/build/components/AssociationTag/AssociationTag.d.ts +19 -0
- package/build/components/AssociationTag/AssociationTag.d.ts.map +1 -0
- package/build/components/AssociationTag/AssociationTag.js +29 -0
- package/build/components/AssociationTag/AssociationTag.js.map +1 -0
- package/build/components/AssociationTag/AssociationTag.styles.d.ts +21 -0
- package/build/components/AssociationTag/AssociationTag.styles.d.ts.map +1 -0
- package/build/components/AssociationTag/AssociationTag.styles.js +26 -0
- package/build/components/AssociationTag/AssociationTag.styles.js.map +1 -0
- package/build/components/AssociationTag/index.d.ts +3 -0
- package/build/components/AssociationTag/index.d.ts.map +1 -0
- package/build/components/AssociationTag/index.js +2 -0
- package/build/components/AssociationTag/index.js.map +1 -0
- package/build/components/BottomSheet/BottomSheet.d.ts +36 -0
- package/build/components/BottomSheet/BottomSheet.d.ts.map +1 -0
- package/build/components/BottomSheet/BottomSheet.js +76 -0
- package/build/components/BottomSheet/BottomSheet.js.map +1 -0
- package/build/components/BottomSheet/BottomSheet.styles.d.ts +32 -0
- package/build/components/BottomSheet/BottomSheet.styles.d.ts.map +1 -0
- package/build/components/BottomSheet/BottomSheet.styles.js +31 -0
- package/build/components/BottomSheet/BottomSheet.styles.js.map +1 -0
- package/build/components/BottomSheet/index.d.ts +3 -0
- package/build/components/BottomSheet/index.d.ts.map +1 -0
- package/build/components/BottomSheet/index.js +2 -0
- package/build/components/BottomSheet/index.js.map +1 -0
- package/build/components/Button/Button.d.ts +5 -1
- package/build/components/Button/Button.d.ts.map +1 -1
- package/build/components/Button/Button.js +11 -5
- package/build/components/Button/Button.js.map +1 -1
- package/build/components/ButtonAction/ButtonAction.d.ts +5 -1
- package/build/components/ButtonAction/ButtonAction.d.ts.map +1 -1
- package/build/components/ButtonAction/ButtonAction.js +2 -2
- package/build/components/ButtonAction/ButtonAction.js.map +1 -1
- package/build/components/ButtonMap/ButtonMap.d.ts +5 -1
- package/build/components/ButtonMap/ButtonMap.d.ts.map +1 -1
- package/build/components/ButtonMap/ButtonMap.js +11 -9
- package/build/components/ButtonMap/ButtonMap.js.map +1 -1
- package/build/components/ButtonMenu/ButtonMenu.d.ts +7 -2
- package/build/components/ButtonMenu/ButtonMenu.d.ts.map +1 -1
- package/build/components/ButtonMenu/ButtonMenu.js +15 -15
- package/build/components/ButtonMenu/ButtonMenu.js.map +1 -1
- package/build/components/Calendar/Calendar.d.ts +4 -0
- package/build/components/Calendar/Calendar.d.ts.map +1 -0
- package/build/components/Calendar/Calendar.i18n.d.ts +34 -0
- package/build/components/Calendar/Calendar.i18n.d.ts.map +1 -0
- package/build/components/Calendar/Calendar.i18n.js +34 -0
- package/build/components/Calendar/Calendar.i18n.js.map +1 -0
- package/build/components/Calendar/Calendar.js +172 -0
- package/build/components/Calendar/Calendar.js.map +1 -0
- package/build/components/Calendar/Calendar.styles.d.ts +254 -0
- package/build/components/Calendar/Calendar.styles.d.ts.map +1 -0
- package/build/components/Calendar/Calendar.styles.js +231 -0
- package/build/components/Calendar/Calendar.styles.js.map +1 -0
- package/build/components/Calendar/Calendar.types.d.ts +62 -0
- package/build/components/Calendar/Calendar.types.d.ts.map +1 -0
- package/build/components/Calendar/Calendar.types.js +2 -0
- package/build/components/Calendar/Calendar.types.js.map +1 -0
- package/build/components/Calendar/CalendarDay.d.ts +4 -0
- package/build/components/Calendar/CalendarDay.d.ts.map +1 -0
- package/build/components/Calendar/CalendarDay.js +52 -0
- package/build/components/Calendar/CalendarDay.js.map +1 -0
- package/build/components/Calendar/CalendarHeader.d.ts +4 -0
- package/build/components/Calendar/CalendarHeader.d.ts.map +1 -0
- package/build/components/Calendar/CalendarHeader.js +16 -0
- package/build/components/Calendar/CalendarHeader.js.map +1 -0
- package/build/components/Calendar/CalendarLegend.d.ts +3 -0
- package/build/components/Calendar/CalendarLegend.d.ts.map +1 -0
- package/build/components/Calendar/CalendarLegend.js +38 -0
- package/build/components/Calendar/CalendarLegend.js.map +1 -0
- package/build/components/Calendar/CalendarYearPicker.d.ts +19 -0
- package/build/components/Calendar/CalendarYearPicker.d.ts.map +1 -0
- package/build/components/Calendar/CalendarYearPicker.js +158 -0
- package/build/components/Calendar/CalendarYearPicker.js.map +1 -0
- package/build/components/Calendar/index.d.ts +5 -0
- package/build/components/Calendar/index.d.ts.map +1 -0
- package/build/components/Calendar/index.js +3 -0
- package/build/components/Calendar/index.js.map +1 -0
- package/build/components/Card/Card.d.ts +25 -0
- package/build/components/Card/Card.d.ts.map +1 -0
- package/build/components/Card/Card.js +31 -0
- package/build/components/Card/Card.js.map +1 -0
- package/build/components/Card/Card.styles.d.ts +15 -0
- package/build/components/Card/Card.styles.d.ts.map +1 -0
- package/build/components/Card/Card.styles.js +18 -0
- package/build/components/Card/Card.styles.js.map +1 -0
- package/build/components/Card/index.d.ts +3 -0
- package/build/components/Card/index.d.ts.map +1 -0
- package/build/components/Card/index.js +2 -0
- package/build/components/Card/index.js.map +1 -0
- package/build/components/CardEquip/CardEquip.d.ts +60 -0
- package/build/components/CardEquip/CardEquip.d.ts.map +1 -0
- package/build/components/CardEquip/CardEquip.js +106 -0
- package/build/components/CardEquip/CardEquip.js.map +1 -0
- package/build/components/CardEquip/CardEquip.styles.d.ts +125 -0
- package/build/components/CardEquip/CardEquip.styles.d.ts.map +1 -0
- package/build/components/CardEquip/CardEquip.styles.js +139 -0
- package/build/components/CardEquip/CardEquip.styles.js.map +1 -0
- package/build/components/CardEquip/index.d.ts +3 -0
- package/build/components/CardEquip/index.d.ts.map +1 -0
- package/build/components/CardEquip/index.js +2 -0
- package/build/components/CardEquip/index.js.map +1 -0
- package/build/components/CardProfile/CardProfile.d.ts +55 -0
- package/build/components/CardProfile/CardProfile.d.ts.map +1 -0
- package/build/components/CardProfile/CardProfile.js +74 -0
- package/build/components/CardProfile/CardProfile.js.map +1 -0
- package/build/components/CardProfile/CardProfile.styles.d.ts +62 -0
- package/build/components/CardProfile/CardProfile.styles.d.ts.map +1 -0
- package/build/components/CardProfile/CardProfile.styles.js +65 -0
- package/build/components/CardProfile/CardProfile.styles.js.map +1 -0
- package/build/components/CardProfile/index.d.ts +3 -0
- package/build/components/CardProfile/index.d.ts.map +1 -0
- package/build/components/CardProfile/index.js +2 -0
- package/build/components/CardProfile/index.js.map +1 -0
- package/build/components/Checkbox/Checkbox.d.ts +28 -0
- package/build/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/build/components/Checkbox/Checkbox.js +78 -0
- package/build/components/Checkbox/Checkbox.js.map +1 -0
- package/build/components/Checkbox/Checkbox.styles.d.ts +34 -0
- package/build/components/Checkbox/Checkbox.styles.d.ts.map +1 -0
- package/build/components/Checkbox/Checkbox.styles.js +39 -0
- package/build/components/Checkbox/Checkbox.styles.js.map +1 -0
- package/build/components/Checkbox/Checkbox.types.d.ts +25 -0
- package/build/components/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/build/components/Checkbox/Checkbox.types.js +5 -0
- package/build/components/Checkbox/Checkbox.types.js.map +1 -0
- package/build/components/Checkbox/index.d.ts +3 -0
- package/build/components/Checkbox/index.d.ts.map +1 -0
- package/build/components/Checkbox/index.js +2 -0
- package/build/components/Checkbox/index.js.map +1 -0
- package/build/components/Cluster/Cluster.d.ts +23 -0
- package/build/components/Cluster/Cluster.d.ts.map +1 -0
- package/build/components/Cluster/Cluster.js +34 -0
- package/build/components/Cluster/Cluster.js.map +1 -0
- package/build/components/Cluster/Cluster.styles.d.ts +33 -0
- package/build/components/Cluster/Cluster.styles.d.ts.map +1 -0
- package/build/components/Cluster/Cluster.styles.js +34 -0
- package/build/components/Cluster/Cluster.styles.js.map +1 -0
- package/build/components/Cluster/index.d.ts +3 -0
- package/build/components/Cluster/index.d.ts.map +1 -0
- package/build/components/Cluster/index.js +2 -0
- package/build/components/Cluster/index.js.map +1 -0
- package/build/components/ColorPicker/ColorPicker.d.ts +20 -0
- package/build/components/ColorPicker/ColorPicker.d.ts.map +1 -0
- package/build/components/ColorPicker/ColorPicker.js +17 -0
- package/build/components/ColorPicker/ColorPicker.js.map +1 -0
- package/build/components/ColorPicker/ColorPicker.styles.d.ts +10 -0
- package/build/components/ColorPicker/ColorPicker.styles.d.ts.map +1 -0
- package/build/components/ColorPicker/ColorPicker.styles.js +11 -0
- package/build/components/ColorPicker/ColorPicker.styles.js.map +1 -0
- package/build/components/ColorPicker/index.d.ts +3 -0
- package/build/components/ColorPicker/index.d.ts.map +1 -0
- package/build/components/ColorPicker/index.js +2 -0
- package/build/components/ColorPicker/index.js.map +1 -0
- package/build/components/ColorSwatch/ColorSwatch.d.ts +20 -0
- package/build/components/ColorSwatch/ColorSwatch.d.ts.map +1 -0
- package/build/components/ColorSwatch/ColorSwatch.js +35 -0
- package/build/components/ColorSwatch/ColorSwatch.js.map +1 -0
- package/build/components/ColorSwatch/ColorSwatch.styles.d.ts +16 -0
- package/build/components/ColorSwatch/ColorSwatch.styles.d.ts.map +1 -0
- package/build/components/ColorSwatch/ColorSwatch.styles.js +19 -0
- package/build/components/ColorSwatch/ColorSwatch.styles.js.map +1 -0
- package/build/components/ColorSwatch/index.d.ts +3 -0
- package/build/components/ColorSwatch/index.d.ts.map +1 -0
- package/build/components/ColorSwatch/index.js +2 -0
- package/build/components/ColorSwatch/index.js.map +1 -0
- package/build/components/FileCard/FileCard.d.ts +29 -0
- package/build/components/FileCard/FileCard.d.ts.map +1 -0
- package/build/components/FileCard/FileCard.js +66 -0
- package/build/components/FileCard/FileCard.js.map +1 -0
- package/build/components/FileCard/FileCard.styles.d.ts +54 -0
- package/build/components/FileCard/FileCard.styles.d.ts.map +1 -0
- package/build/components/FileCard/FileCard.styles.js +56 -0
- package/build/components/FileCard/FileCard.styles.js.map +1 -0
- package/build/components/FileCard/index.d.ts +3 -0
- package/build/components/FileCard/index.d.ts.map +1 -0
- package/build/components/FileCard/index.js +2 -0
- package/build/components/FileCard/index.js.map +1 -0
- package/build/components/FilterChip/FilterChip.d.ts +5 -1
- package/build/components/FilterChip/FilterChip.d.ts.map +1 -1
- package/build/components/FilterChip/FilterChip.js +12 -11
- package/build/components/FilterChip/FilterChip.js.map +1 -1
- package/build/components/FilterNav/FilterNav.d.ts +53 -0
- package/build/components/FilterNav/FilterNav.d.ts.map +1 -0
- package/build/components/FilterNav/FilterNav.js +39 -0
- package/build/components/FilterNav/FilterNav.js.map +1 -0
- package/build/components/FilterNav/FilterNav.styles.d.ts +10 -0
- package/build/components/FilterNav/FilterNav.styles.d.ts.map +1 -0
- package/build/components/FilterNav/FilterNav.styles.js +11 -0
- package/build/components/FilterNav/FilterNav.styles.js.map +1 -0
- package/build/components/FilterNav/index.d.ts +3 -0
- package/build/components/FilterNav/index.d.ts.map +1 -0
- package/build/components/FilterNav/index.js +2 -0
- package/build/components/FilterNav/index.js.map +1 -0
- package/build/components/ImgPicker/ImgPicker.d.ts +47 -0
- package/build/components/ImgPicker/ImgPicker.d.ts.map +1 -0
- package/build/components/ImgPicker/ImgPicker.js +49 -0
- package/build/components/ImgPicker/ImgPicker.js.map +1 -0
- package/build/components/ImgPicker/ImgPicker.styles.d.ts +18 -0
- package/build/components/ImgPicker/ImgPicker.styles.d.ts.map +1 -0
- package/build/components/ImgPicker/ImgPicker.styles.js +19 -0
- package/build/components/ImgPicker/ImgPicker.styles.js.map +1 -0
- package/build/components/ImgPicker/index.d.ts +3 -0
- package/build/components/ImgPicker/index.d.ts.map +1 -0
- package/build/components/ImgPicker/index.js +2 -0
- package/build/components/ImgPicker/index.js.map +1 -0
- package/build/components/InlineInfo/InlineInfo.d.ts +60 -0
- package/build/components/InlineInfo/InlineInfo.d.ts.map +1 -0
- package/build/components/InlineInfo/InlineInfo.js +115 -0
- package/build/components/InlineInfo/InlineInfo.js.map +1 -0
- package/build/components/InlineInfo/InlineInfo.styles.d.ts +42 -0
- package/build/components/InlineInfo/InlineInfo.styles.d.ts.map +1 -0
- package/build/components/InlineInfo/InlineInfo.styles.js +50 -0
- package/build/components/InlineInfo/InlineInfo.styles.js.map +1 -0
- package/build/components/InlineInfo/index.d.ts +3 -0
- package/build/components/InlineInfo/index.d.ts.map +1 -0
- package/build/components/InlineInfo/index.js +2 -0
- package/build/components/InlineInfo/index.js.map +1 -0
- package/build/components/Input/Input.d.ts +57 -0
- package/build/components/Input/Input.d.ts.map +1 -0
- package/build/components/Input/Input.js +104 -0
- package/build/components/Input/Input.js.map +1 -0
- package/build/components/Input/Input.styles.d.ts +34 -0
- package/build/components/Input/Input.styles.d.ts.map +1 -0
- package/build/components/Input/Input.styles.js +35 -0
- package/build/components/Input/Input.styles.js.map +1 -0
- package/build/components/Input/index.d.ts +3 -0
- package/build/components/Input/index.d.ts.map +1 -0
- package/build/components/Input/index.js +2 -0
- package/build/components/Input/index.js.map +1 -0
- package/build/components/ListItem/ListItem.d.ts +42 -0
- package/build/components/ListItem/ListItem.d.ts.map +1 -0
- package/build/components/ListItem/ListItem.js +66 -0
- package/build/components/ListItem/ListItem.js.map +1 -0
- package/build/components/ListItem/ListItem.styles.d.ts +66 -0
- package/build/components/ListItem/ListItem.styles.d.ts.map +1 -0
- package/build/components/ListItem/ListItem.styles.js +70 -0
- package/build/components/ListItem/ListItem.styles.js.map +1 -0
- package/build/components/ListItem/index.d.ts +3 -0
- package/build/components/ListItem/index.d.ts.map +1 -0
- package/build/components/ListItem/index.js +2 -0
- package/build/components/ListItem/index.js.map +1 -0
- package/build/components/MapPin/MapPin.d.ts +61 -0
- package/build/components/MapPin/MapPin.d.ts.map +1 -0
- package/build/components/MapPin/MapPin.js +118 -0
- package/build/components/MapPin/MapPin.js.map +1 -0
- package/build/components/MapPin/MapPin.styles.d.ts +93 -0
- package/build/components/MapPin/MapPin.styles.d.ts.map +1 -0
- package/build/components/MapPin/MapPin.styles.js +101 -0
- package/build/components/MapPin/MapPin.styles.js.map +1 -0
- package/build/components/MapPin/index.d.ts +3 -0
- package/build/components/MapPin/index.d.ts.map +1 -0
- package/build/components/MapPin/index.js +2 -0
- package/build/components/MapPin/index.js.map +1 -0
- package/build/components/MediaPicker/MediaPicker.d.ts +74 -0
- package/build/components/MediaPicker/MediaPicker.d.ts.map +1 -0
- package/build/components/MediaPicker/MediaPicker.js +43 -0
- package/build/components/MediaPicker/MediaPicker.js.map +1 -0
- package/build/components/MediaPicker/MediaPicker.styles.d.ts +30 -0
- package/build/components/MediaPicker/MediaPicker.styles.d.ts.map +1 -0
- package/build/components/MediaPicker/MediaPicker.styles.js +31 -0
- package/build/components/MediaPicker/MediaPicker.styles.js.map +1 -0
- package/build/components/MediaPicker/index.d.ts +3 -0
- package/build/components/MediaPicker/index.d.ts.map +1 -0
- package/build/components/MediaPicker/index.js +2 -0
- package/build/components/MediaPicker/index.js.map +1 -0
- package/build/components/PhotoCard/PhotoCard.d.ts +28 -0
- package/build/components/PhotoCard/PhotoCard.d.ts.map +1 -0
- package/build/components/PhotoCard/PhotoCard.js +53 -0
- package/build/components/PhotoCard/PhotoCard.js.map +1 -0
- package/build/components/PhotoCard/PhotoCard.styles.d.ts +47 -0
- package/build/components/PhotoCard/PhotoCard.styles.d.ts.map +1 -0
- package/build/components/PhotoCard/PhotoCard.styles.js +45 -0
- package/build/components/PhotoCard/PhotoCard.styles.js.map +1 -0
- package/build/components/PhotoCard/index.d.ts +3 -0
- package/build/components/PhotoCard/index.d.ts.map +1 -0
- package/build/components/PhotoCard/index.js +2 -0
- package/build/components/PhotoCard/index.js.map +1 -0
- package/build/components/ProgressStep/ProgressStep.d.ts +9 -0
- package/build/components/ProgressStep/ProgressStep.d.ts.map +1 -0
- package/build/components/ProgressStep/ProgressStep.js +23 -0
- package/build/components/ProgressStep/ProgressStep.js.map +1 -0
- package/build/components/ProgressStep/ProgressStep.styles.d.ts +12 -0
- package/build/components/ProgressStep/ProgressStep.styles.d.ts.map +1 -0
- package/build/components/ProgressStep/ProgressStep.styles.js +13 -0
- package/build/components/ProgressStep/ProgressStep.styles.js.map +1 -0
- package/build/components/ProgressStep/index.d.ts +3 -0
- package/build/components/ProgressStep/index.d.ts.map +1 -0
- package/build/components/ProgressStep/index.js +2 -0
- package/build/components/ProgressStep/index.js.map +1 -0
- package/build/components/RadioButton/RadioButton.d.ts +29 -0
- package/build/components/RadioButton/RadioButton.d.ts.map +1 -0
- package/build/components/RadioButton/RadioButton.js +71 -0
- package/build/components/RadioButton/RadioButton.js.map +1 -0
- package/build/components/RadioButton/RadioButton.styles.d.ts +27 -0
- package/build/components/RadioButton/RadioButton.styles.d.ts.map +1 -0
- package/build/components/RadioButton/RadioButton.styles.js +30 -0
- package/build/components/RadioButton/RadioButton.styles.js.map +1 -0
- package/build/components/RadioButton/index.d.ts +3 -0
- package/build/components/RadioButton/index.d.ts.map +1 -0
- package/build/components/RadioButton/index.js +2 -0
- package/build/components/RadioButton/index.js.map +1 -0
- package/build/components/SearchBar/SearchBar.d.ts +33 -0
- package/build/components/SearchBar/SearchBar.d.ts.map +1 -0
- package/build/components/SearchBar/SearchBar.js +83 -0
- package/build/components/SearchBar/SearchBar.js.map +1 -0
- package/build/components/SearchBar/SearchBar.styles.d.ts +19 -0
- package/build/components/SearchBar/SearchBar.styles.d.ts.map +1 -0
- package/build/components/SearchBar/SearchBar.styles.js +21 -0
- package/build/components/SearchBar/SearchBar.styles.js.map +1 -0
- package/build/components/SearchBar/index.d.ts +3 -0
- package/build/components/SearchBar/index.d.ts.map +1 -0
- package/build/components/SearchBar/index.js +2 -0
- package/build/components/SearchBar/index.js.map +1 -0
- package/build/components/Spinner/Spinner.d.ts +12 -0
- package/build/components/Spinner/Spinner.d.ts.map +1 -0
- package/build/components/Spinner/Spinner.js +80 -0
- package/build/components/Spinner/Spinner.js.map +1 -0
- package/build/components/Spinner/Spinner.styles.d.ts +21 -0
- package/build/components/Spinner/Spinner.styles.d.ts.map +1 -0
- package/build/components/Spinner/Spinner.styles.js +22 -0
- package/build/components/Spinner/Spinner.styles.js.map +1 -0
- package/build/components/Spinner/index.d.ts +3 -0
- package/build/components/Spinner/index.d.ts.map +1 -0
- package/build/components/Spinner/index.js +2 -0
- package/build/components/Spinner/index.js.map +1 -0
- package/build/components/StepSheet/StepSheet.d.ts +77 -0
- package/build/components/StepSheet/StepSheet.d.ts.map +1 -0
- package/build/components/StepSheet/StepSheet.js +30 -0
- package/build/components/StepSheet/StepSheet.js.map +1 -0
- package/build/components/StepSheet/StepSheet.styles.d.ts +6 -0
- package/build/components/StepSheet/StepSheet.styles.d.ts.map +1 -0
- package/build/components/StepSheet/StepSheet.styles.js +7 -0
- package/build/components/StepSheet/StepSheet.styles.js.map +1 -0
- package/build/components/StepSheet/index.d.ts +3 -0
- package/build/components/StepSheet/index.d.ts.map +1 -0
- package/build/components/StepSheet/index.js +2 -0
- package/build/components/StepSheet/index.js.map +1 -0
- package/build/components/Stepper/Stepper.d.ts +50 -0
- package/build/components/Stepper/Stepper.d.ts.map +1 -0
- package/build/components/Stepper/Stepper.js +48 -0
- package/build/components/Stepper/Stepper.js.map +1 -0
- package/build/components/Stepper/Stepper.styles.d.ts +27 -0
- package/build/components/Stepper/Stepper.styles.d.ts.map +1 -0
- package/build/components/Stepper/Stepper.styles.js +28 -0
- package/build/components/Stepper/Stepper.styles.js.map +1 -0
- package/build/components/Stepper/index.d.ts +3 -0
- package/build/components/Stepper/index.d.ts.map +1 -0
- package/build/components/Stepper/index.js +2 -0
- package/build/components/Stepper/index.js.map +1 -0
- package/build/components/Switch/Switch.d.ts +29 -0
- package/build/components/Switch/Switch.d.ts.map +1 -0
- package/build/components/Switch/Switch.js +83 -0
- package/build/components/Switch/Switch.js.map +1 -0
- package/build/components/Switch/Switch.styles.d.ts +29 -0
- package/build/components/Switch/Switch.styles.d.ts.map +1 -0
- package/build/components/Switch/Switch.styles.js +26 -0
- package/build/components/Switch/Switch.styles.js.map +1 -0
- package/build/components/Switch/index.d.ts +3 -0
- package/build/components/Switch/index.d.ts.map +1 -0
- package/build/components/Switch/index.js +2 -0
- package/build/components/Switch/index.js.map +1 -0
- package/build/components/Tab/Tab.d.ts +50 -0
- package/build/components/Tab/Tab.d.ts.map +1 -0
- package/build/components/Tab/Tab.js +117 -0
- package/build/components/Tab/Tab.js.map +1 -0
- package/build/components/Tab/Tab.styles.d.ts +55 -0
- package/build/components/Tab/Tab.styles.d.ts.map +1 -0
- package/build/components/Tab/Tab.styles.js +60 -0
- package/build/components/Tab/Tab.styles.js.map +1 -0
- package/build/components/Tab/index.d.ts +3 -0
- package/build/components/Tab/index.d.ts.map +1 -0
- package/build/components/Tab/index.js +2 -0
- package/build/components/Tab/index.js.map +1 -0
- package/build/components/Tag/Tag.d.ts +4 -0
- package/build/components/Tag/Tag.d.ts.map +1 -0
- package/build/components/Tag/Tag.js +40 -0
- package/build/components/Tag/Tag.js.map +1 -0
- package/build/components/Tag/Tag.styles.d.ts +33 -0
- package/build/components/Tag/Tag.styles.d.ts.map +1 -0
- package/build/components/Tag/Tag.styles.js +43 -0
- package/build/components/Tag/Tag.styles.js.map +1 -0
- package/build/components/Tag/Tag.types.d.ts +23 -0
- package/build/components/Tag/Tag.types.d.ts.map +1 -0
- package/build/components/Tag/Tag.types.js +2 -0
- package/build/components/Tag/Tag.types.js.map +1 -0
- package/build/components/Tag/index.d.ts +3 -0
- package/build/components/Tag/index.d.ts.map +1 -0
- package/build/components/Tag/index.js +2 -0
- package/build/components/Tag/index.js.map +1 -0
- package/build/components/navigation/GeneralNav/GeneralNav.d.ts +19 -0
- package/build/components/navigation/GeneralNav/GeneralNav.d.ts.map +1 -0
- package/build/components/navigation/GeneralNav/GeneralNav.js +27 -0
- package/build/components/navigation/GeneralNav/GeneralNav.js.map +1 -0
- package/build/components/navigation/GeneralNav/GeneralNav.styles.d.ts +33 -0
- package/build/components/navigation/GeneralNav/GeneralNav.styles.d.ts.map +1 -0
- package/build/components/navigation/GeneralNav/GeneralNav.styles.js +35 -0
- package/build/components/navigation/GeneralNav/GeneralNav.styles.js.map +1 -0
- package/build/components/navigation/GeneralNav/index.d.ts +3 -0
- package/build/components/navigation/GeneralNav/index.d.ts.map +1 -0
- package/build/components/navigation/GeneralNav/index.js +2 -0
- package/build/components/navigation/GeneralNav/index.js.map +1 -0
- package/build/components/navigation/MobileCanva/MobileCanva.d.ts +11 -0
- package/build/components/navigation/MobileCanva/MobileCanva.d.ts.map +1 -0
- package/build/components/navigation/MobileCanva/MobileCanva.js +45 -0
- package/build/components/navigation/MobileCanva/MobileCanva.js.map +1 -0
- package/build/components/navigation/MobileCanva/MobileCanva.styles.d.ts +93 -0
- package/build/components/navigation/MobileCanva/MobileCanva.styles.d.ts.map +1 -0
- package/build/components/navigation/MobileCanva/MobileCanva.styles.js +94 -0
- package/build/components/navigation/MobileCanva/MobileCanva.styles.js.map +1 -0
- package/build/components/navigation/MobileCanva/MobileCanva.types.d.ts +21 -0
- package/build/components/navigation/MobileCanva/MobileCanva.types.d.ts.map +1 -0
- package/build/components/navigation/MobileCanva/MobileCanva.types.js +2 -0
- package/build/components/navigation/MobileCanva/MobileCanva.types.js.map +1 -0
- package/build/components/navigation/MobileCanva/index.d.ts +3 -0
- package/build/components/navigation/MobileCanva/index.d.ts.map +1 -0
- package/build/components/navigation/MobileCanva/index.js +2 -0
- package/build/components/navigation/MobileCanva/index.js.map +1 -0
- package/build/components/navigation/PageNav/PageNav.d.ts +46 -0
- package/build/components/navigation/PageNav/PageNav.d.ts.map +1 -0
- package/build/components/navigation/PageNav/PageNav.js +48 -0
- package/build/components/navigation/PageNav/PageNav.js.map +1 -0
- package/build/components/navigation/PageNav/PageNav.styles.d.ts +60 -0
- package/build/components/navigation/PageNav/PageNav.styles.d.ts.map +1 -0
- package/build/components/navigation/PageNav/PageNav.styles.js +60 -0
- package/build/components/navigation/PageNav/PageNav.styles.js.map +1 -0
- package/build/components/navigation/PageNav/index.d.ts +3 -0
- package/build/components/navigation/PageNav/index.d.ts.map +1 -0
- package/build/components/navigation/PageNav/index.js +2 -0
- package/build/components/navigation/PageNav/index.js.map +1 -0
- package/build/components/navigation/TabBar/TabBar.d.ts +22 -0
- package/build/components/navigation/TabBar/TabBar.d.ts.map +1 -0
- package/build/components/navigation/TabBar/TabBar.js +13 -0
- package/build/components/navigation/TabBar/TabBar.js.map +1 -0
- package/build/components/navigation/TabBar/TabBar.styles.d.ts +14 -0
- package/build/components/navigation/TabBar/TabBar.styles.d.ts.map +1 -0
- package/build/components/navigation/TabBar/TabBar.styles.js +16 -0
- package/build/components/navigation/TabBar/TabBar.styles.js.map +1 -0
- package/build/components/navigation/TabBar/index.d.ts +3 -0
- package/build/components/navigation/TabBar/index.d.ts.map +1 -0
- package/build/components/navigation/TabBar/index.js +2 -0
- package/build/components/navigation/TabBar/index.js.map +1 -0
- package/build/context/BottomSheetContext.d.ts +42 -0
- package/build/context/BottomSheetContext.d.ts.map +1 -0
- package/build/context/BottomSheetContext.js +51 -0
- package/build/context/BottomSheetContext.js.map +1 -0
- package/build/context/ThemeContext.d.ts +6 -2
- package/build/context/ThemeContext.d.ts.map +1 -1
- package/build/context/ThemeContext.js +5 -3
- package/build/context/ThemeContext.js.map +1 -1
- package/build/index.d.ts +75 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +37 -0
- package/build/index.js.map +1 -1
- package/build/theme/tokens/dark.d.ts.map +1 -1
- package/build/theme/tokens/dark.js +263 -10
- package/build/theme/tokens/dark.js.map +1 -1
- package/build/theme/tokens/light.d.ts.map +1 -1
- package/build/theme/tokens/light.js +252 -7
- package/build/theme/tokens/light.js.map +1 -1
- package/build/theme/type.d.ts +398 -0
- package/build/theme/type.d.ts.map +1 -1
- package/build/theme/type.js.map +1 -1
- package/package.json +8 -5
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
2
|
+
export interface SearchBarProps {
|
|
3
|
+
/** Controlled value */
|
|
4
|
+
value: string;
|
|
5
|
+
/** Text change handler */
|
|
6
|
+
onChangeText: (text: string) => void;
|
|
7
|
+
/** Placeholder — defaults to "Rechercher..." */
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
/** Called when the X clear button is pressed */
|
|
10
|
+
onClear?: () => void;
|
|
11
|
+
/** Called on keyboard search/submit action */
|
|
12
|
+
onSubmitEditing?: () => void;
|
|
13
|
+
/** Called when the input gains focus */
|
|
14
|
+
onFocus?: () => void;
|
|
15
|
+
/** Called when the input loses focus */
|
|
16
|
+
onBlur?: () => void;
|
|
17
|
+
/** Show a spinner at the right instead of the clear button */
|
|
18
|
+
loading?: boolean;
|
|
19
|
+
/** Disabled — no interaction, muted colors */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* default: always shows the full bar.
|
|
23
|
+
* icon: shows only the magnifying glass; expands to full bar on press,
|
|
24
|
+
* collapses back to icon on blur when value is empty.
|
|
25
|
+
*/
|
|
26
|
+
variant?: 'default' | 'icon';
|
|
27
|
+
/** Additional styles on the outer container */
|
|
28
|
+
style?: StyleProp<ViewStyle>;
|
|
29
|
+
/** Test ID for automated testing */
|
|
30
|
+
testID?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare const SearchBar: ({ value, onChangeText, placeholder, onClear, onSubmitEditing, onFocus, onBlur, loading, disabled, variant, style, testID, }: SearchBarProps) => import("react").JSX.Element;
|
|
33
|
+
//# sourceMappingURL=SearchBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/components/SearchBar/SearchBar.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAWzD,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,eAAO,MAAM,SAAS,GAAI,6HAavB,cAAc,gCA2GhB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearchBar — controlled search input.
|
|
3
|
+
* MagnifyingGlass icon (duotone) left, flex:1 TextInput, X clear button when non-empty.
|
|
4
|
+
* 4 visual states: default · focused · typing · disabled.
|
|
5
|
+
* variant="icon": renders as icon-only button, expands to full bar on press, collapses on blur when empty.
|
|
6
|
+
* The "Annuler" button is positioned by the parent (outside this component).
|
|
7
|
+
*/
|
|
8
|
+
import { useRef, useState } from 'react';
|
|
9
|
+
import { Pressable, TextInput, View } from 'react-native';
|
|
10
|
+
import { MagnifyingGlass, X } from 'phosphor-react-native';
|
|
11
|
+
import { useTheme } from '../../context/ThemeContext';
|
|
12
|
+
import { Spinner } from '../Spinner';
|
|
13
|
+
import { Button } from '../Button';
|
|
14
|
+
import { styles } from './SearchBar.styles';
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Component
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
export const SearchBar = ({ value, onChangeText, placeholder = 'Rechercher...', onClear, onSubmitEditing, onFocus, onBlur, loading = false, disabled = false, variant = 'default', style, testID, }) => {
|
|
19
|
+
const [focused, setFocused] = useState(false);
|
|
20
|
+
const [expanded, setExpanded] = useState(false);
|
|
21
|
+
const { colors, fontFamily } = useTheme();
|
|
22
|
+
const inputRef = useRef(null);
|
|
23
|
+
const t = disabled
|
|
24
|
+
? colors.searchBar.disabled
|
|
25
|
+
: focused
|
|
26
|
+
? colors.searchBar.focused
|
|
27
|
+
: colors.searchBar.default;
|
|
28
|
+
const showClear = value.length > 0 && !loading && !disabled;
|
|
29
|
+
const showLoading = loading && !disabled;
|
|
30
|
+
const handleFocus = () => {
|
|
31
|
+
setFocused(true);
|
|
32
|
+
onFocus?.();
|
|
33
|
+
};
|
|
34
|
+
const handleBlur = () => {
|
|
35
|
+
setFocused(false);
|
|
36
|
+
if (variant === 'icon' && value.length === 0) {
|
|
37
|
+
setExpanded(false);
|
|
38
|
+
}
|
|
39
|
+
onBlur?.();
|
|
40
|
+
};
|
|
41
|
+
const handleClear = () => {
|
|
42
|
+
onChangeText('');
|
|
43
|
+
onClear?.();
|
|
44
|
+
if (variant === 'icon') {
|
|
45
|
+
setExpanded(false);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const handleIconPress = () => {
|
|
49
|
+
setExpanded(true);
|
|
50
|
+
// Focus after state update
|
|
51
|
+
setTimeout(() => inputRef.current?.focus(), 0);
|
|
52
|
+
};
|
|
53
|
+
// Icon-only collapsed state
|
|
54
|
+
if (variant === 'icon' && !expanded) {
|
|
55
|
+
return (<Button variant="tertiary" size="M" content="icon-only-rounded" iconLeft={<MagnifyingGlass weight="duotone"/>} onPress={handleIconPress} style={style}/>);
|
|
56
|
+
}
|
|
57
|
+
return (<View style={[
|
|
58
|
+
styles.container,
|
|
59
|
+
{
|
|
60
|
+
backgroundColor: t.background,
|
|
61
|
+
borderColor: t.border,
|
|
62
|
+
},
|
|
63
|
+
style,
|
|
64
|
+
]} testID={testID}>
|
|
65
|
+
{/* Loupe icon — always present */}
|
|
66
|
+
<MagnifyingGlass size={20} weight="duotone" color={t.icon}/>
|
|
67
|
+
|
|
68
|
+
{/* Text input */}
|
|
69
|
+
<TextInput ref={inputRef} value={value} onChangeText={disabled ? undefined : onChangeText} onFocus={disabled ? undefined : handleFocus} onBlur={disabled ? undefined : handleBlur} onSubmitEditing={onSubmitEditing} placeholder={placeholder} placeholderTextColor={t.placeholder} editable={!disabled} returnKeyType="search" autoCorrect={false} autoCapitalize="none" style={[
|
|
70
|
+
styles.input,
|
|
71
|
+
{ color: t.text, fontFamily },
|
|
72
|
+
]}/>
|
|
73
|
+
|
|
74
|
+
{/* X clear button — visible when value non-empty */}
|
|
75
|
+
{showClear && (<Pressable onPress={handleClear} hitSlop={8} accessibilityRole="button" accessibilityLabel="Effacer la recherche">
|
|
76
|
+
<X size={16} weight="bold" color={colors.searchBar.clearIcon}/>
|
|
77
|
+
</Pressable>)}
|
|
78
|
+
|
|
79
|
+
{/* Loading spinner — replaces clear when loading */}
|
|
80
|
+
{showLoading && <Spinner mode="loading" size="s"/>}
|
|
81
|
+
</View>);
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=SearchBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../../../src/components/SearchBar/SearchBar.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * SearchBar — controlled search input.\n * MagnifyingGlass icon (duotone) left, flex:1 TextInput, X clear button when non-empty.\n * 4 visual states: default · focused · typing · disabled.\n * variant=\"icon\": renders as icon-only button, expands to full bar on press, collapses on blur when empty.\n * The \"Annuler\" button is positioned by the parent (outside this component).\n */\nimport { useRef, useState } from 'react';\nimport { Pressable, TextInput, View } from 'react-native';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { MagnifyingGlass, X } from 'phosphor-react-native';\nimport { useTheme } from '../../context/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { Button } from '../Button';\nimport { styles } from './SearchBar.styles';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface SearchBarProps {\n /** Controlled value */\n value: string;\n /** Text change handler */\n onChangeText: (text: string) => void;\n /** Placeholder — defaults to \"Rechercher...\" */\n placeholder?: string;\n /** Called when the X clear button is pressed */\n onClear?: () => void;\n /** Called on keyboard search/submit action */\n onSubmitEditing?: () => void;\n /** Called when the input gains focus */\n onFocus?: () => void;\n /** Called when the input loses focus */\n onBlur?: () => void;\n /** Show a spinner at the right instead of the clear button */\n loading?: boolean;\n /** Disabled — no interaction, muted colors */\n disabled?: boolean;\n /**\n * default: always shows the full bar.\n * icon: shows only the magnifying glass; expands to full bar on press,\n * collapses back to icon on blur when value is empty.\n */\n variant?: 'default' | 'icon';\n /** Additional styles on the outer container */\n style?: StyleProp<ViewStyle>;\n /** Test ID for automated testing */\n testID?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport const SearchBar = ({\n value,\n onChangeText,\n placeholder = 'Rechercher...',\n onClear,\n onSubmitEditing,\n onFocus,\n onBlur,\n loading = false,\n disabled = false,\n variant = 'default',\n style,\n testID,\n}: SearchBarProps) => {\n const [focused, setFocused] = useState(false);\n const [expanded, setExpanded] = useState(false);\n const { colors, fontFamily } = useTheme();\n const inputRef = useRef<TextInput>(null);\n\n const t = disabled\n ? colors.searchBar.disabled\n : focused\n ? colors.searchBar.focused\n : colors.searchBar.default;\n\n const showClear = value.length > 0 && !loading && !disabled;\n const showLoading = loading && !disabled;\n\n const handleFocus = () => {\n setFocused(true);\n onFocus?.();\n };\n\n const handleBlur = () => {\n setFocused(false);\n if (variant === 'icon' && value.length === 0) {\n setExpanded(false);\n }\n onBlur?.();\n };\n\n const handleClear = () => {\n onChangeText('');\n onClear?.();\n if (variant === 'icon') {\n setExpanded(false);\n }\n };\n\n const handleIconPress = () => {\n setExpanded(true);\n // Focus after state update\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n // Icon-only collapsed state\n if (variant === 'icon' && !expanded) {\n return (\n <Button\n variant=\"tertiary\"\n size=\"M\"\n content=\"icon-only-rounded\"\n iconLeft={<MagnifyingGlass weight=\"duotone\" />}\n onPress={handleIconPress}\n style={style}\n />\n );\n }\n\n return (\n <View\n style={[\n styles.container,\n {\n backgroundColor: t.background,\n borderColor: t.border,\n },\n style,\n ]}\n testID={testID}\n >\n {/* Loupe icon — always present */}\n <MagnifyingGlass size={20} weight=\"duotone\" color={t.icon} />\n\n {/* Text input */}\n <TextInput\n ref={inputRef}\n value={value}\n onChangeText={disabled ? undefined : onChangeText}\n onFocus={disabled ? undefined : handleFocus}\n onBlur={disabled ? undefined : handleBlur}\n onSubmitEditing={onSubmitEditing}\n placeholder={placeholder}\n placeholderTextColor={t.placeholder}\n editable={!disabled}\n returnKeyType=\"search\"\n autoCorrect={false}\n autoCapitalize=\"none\"\n style={[\n styles.input,\n { color: t.text, fontFamily },\n ]}\n />\n\n {/* X clear button — visible when value non-empty */}\n {showClear && (\n <Pressable\n onPress={handleClear}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Effacer la recherche\"\n >\n <X size={16} weight=\"bold\" color={colors.searchBar.clearIcon} />\n </Pressable>\n )}\n\n {/* Loading spinner — replaces clear when loading */}\n {showLoading && <Spinner mode=\"loading\" size=\"s\" />}\n </View>\n );\n};\n\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const styles: {
|
|
2
|
+
container: {
|
|
3
|
+
flexDirection: "row";
|
|
4
|
+
alignItems: "center";
|
|
5
|
+
borderWidth: number;
|
|
6
|
+
borderRadius: number;
|
|
7
|
+
paddingHorizontal: number;
|
|
8
|
+
paddingVertical: number;
|
|
9
|
+
gap: number;
|
|
10
|
+
};
|
|
11
|
+
input: {
|
|
12
|
+
flex: number;
|
|
13
|
+
fontSize: number;
|
|
14
|
+
fontWeight: "500";
|
|
15
|
+
padding: number;
|
|
16
|
+
margin: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=SearchBar.styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchBar.styles.d.ts","sourceRoot":"","sources":["../../../src/components/SearchBar/SearchBar.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAkBjB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { StyleSheet } from 'react-native';
|
|
2
|
+
export const styles = StyleSheet.create({
|
|
3
|
+
container: {
|
|
4
|
+
flexDirection: 'row',
|
|
5
|
+
alignItems: 'center',
|
|
6
|
+
borderWidth: 1,
|
|
7
|
+
borderRadius: 9999,
|
|
8
|
+
paddingHorizontal: 10,
|
|
9
|
+
paddingVertical: 10,
|
|
10
|
+
gap: 8,
|
|
11
|
+
},
|
|
12
|
+
input: {
|
|
13
|
+
flex: 1,
|
|
14
|
+
fontSize: 14,
|
|
15
|
+
fontWeight: '500',
|
|
16
|
+
// Remove default RN padding so the container controls spacing
|
|
17
|
+
padding: 0,
|
|
18
|
+
margin: 0,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=SearchBar.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchBar.styles.js","sourceRoot":"","sources":["../../../src/components/SearchBar/SearchBar.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,IAAI;QAClB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,GAAG,EAAE,CAAC;KACP;IACD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,8DAA8D;QAC9D,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;KACV;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n borderWidth: 1,\n borderRadius: 9999,\n paddingHorizontal: 10,\n paddingVertical: 10,\n gap: 8,\n },\n input: {\n flex: 1,\n fontSize: 14,\n fontWeight: '500',\n // Remove default RN padding so the container controls spacing\n padding: 0,\n margin: 0,\n },\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SearchBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SearchBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export { SearchBar } from './SearchBar';\nexport type { SearchBarProps } from './SearchBar';\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type SpinnerSize = 's' | 'm' | 'l' | 'xl';
|
|
2
|
+
export type SpinnerMode = 'idle' | 'loading' | 'finish';
|
|
3
|
+
export interface SpinnerProps {
|
|
4
|
+
/** Display mode — idle: full ring, loading: animated arc, finish: colored ring + check */
|
|
5
|
+
mode?: SpinnerMode;
|
|
6
|
+
/** Box size — s: 16px, m: 20px, l: 24px, xl: 28px (circle is 4px smaller) */
|
|
7
|
+
size?: SpinnerSize;
|
|
8
|
+
/** Test ID for automated testing */
|
|
9
|
+
testID?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const Spinner: ({ mode, size, testID, }: SpinnerProps) => import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=Spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"AAeA,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,0FAA0F;IAC1F,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmBD,eAAO,MAAM,OAAO,GAAI,yBAIrB,YAAY,gCA4Ed,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spinner — animated loading indicator with three modes.
|
|
3
|
+
* idle: full track ring. loading: animated arc. finish: colored ring + check icon.
|
|
4
|
+
* Four sizes (s/m/l/xl).
|
|
5
|
+
*/
|
|
6
|
+
import { useEffect, useRef } from 'react';
|
|
7
|
+
import { Animated, Easing, View } from 'react-native';
|
|
8
|
+
import { Check } from 'phosphor-react-native';
|
|
9
|
+
import { useTheme } from '../../context/ThemeContext';
|
|
10
|
+
import { styles } from './Spinner.styles';
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Size config
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
const SIZE_CONFIG = {
|
|
15
|
+
s: { box: 16, circle: 12, strokeWidth: 2, iconSize: 8 },
|
|
16
|
+
m: { box: 20, circle: 16, strokeWidth: 2, iconSize: 12 },
|
|
17
|
+
l: { box: 24, circle: 20, strokeWidth: 2, iconSize: 14 },
|
|
18
|
+
xl: { box: 28, circle: 24, strokeWidth: 2, iconSize: 16 },
|
|
19
|
+
};
|
|
20
|
+
const ANIMATION_DURATION = 900;
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Component
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
export const Spinner = ({ mode = 'loading', size = 'm', testID, }) => {
|
|
25
|
+
const { colors } = useTheme();
|
|
26
|
+
const cfg = SIZE_CONFIG[size];
|
|
27
|
+
const spinAnim = useRef(new Animated.Value(0)).current;
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
const anim = Animated.loop(Animated.timing(spinAnim, {
|
|
30
|
+
toValue: 1,
|
|
31
|
+
duration: ANIMATION_DURATION,
|
|
32
|
+
easing: Easing.linear,
|
|
33
|
+
useNativeDriver: true,
|
|
34
|
+
}));
|
|
35
|
+
anim.start();
|
|
36
|
+
return () => anim.stop();
|
|
37
|
+
}, [spinAnim]);
|
|
38
|
+
const rotate = spinAnim.interpolate({
|
|
39
|
+
inputRange: [0, 1],
|
|
40
|
+
outputRange: ['0deg', '360deg'],
|
|
41
|
+
});
|
|
42
|
+
const ringBase = {
|
|
43
|
+
width: cfg.circle,
|
|
44
|
+
height: cfg.circle,
|
|
45
|
+
borderRadius: cfg.circle / 2,
|
|
46
|
+
borderWidth: cfg.strokeWidth,
|
|
47
|
+
};
|
|
48
|
+
return (<View style={styles.wrapper} accessibilityRole="progressbar" accessibilityLiveRegion="polite" testID={testID}>
|
|
49
|
+
{/* Box — centers the circle container */}
|
|
50
|
+
<View style={{ width: cfg.box, height: cfg.box, alignItems: 'center', justifyContent: 'center' }}>
|
|
51
|
+
{/* Circle container — rings are absolute within this */}
|
|
52
|
+
<View style={{ width: cfg.circle, height: cfg.circle }}>
|
|
53
|
+
{/* Track ring — always visible in idle and loading */}
|
|
54
|
+
{mode !== 'finish' && (<View style={[styles.ring, { ...ringBase, borderColor: colors.spinner.track }]}/>)}
|
|
55
|
+
|
|
56
|
+
{mode === 'loading' && (<Animated.View style={[
|
|
57
|
+
styles.ring,
|
|
58
|
+
{
|
|
59
|
+
...ringBase,
|
|
60
|
+
borderTopColor: colors.spinner.arc,
|
|
61
|
+
borderRightColor: colors.spinner.arc,
|
|
62
|
+
borderBottomColor: 'transparent',
|
|
63
|
+
borderLeftColor: 'transparent',
|
|
64
|
+
transform: [{ rotate }],
|
|
65
|
+
},
|
|
66
|
+
]}/>)}
|
|
67
|
+
|
|
68
|
+
{mode === 'finish' && (<>
|
|
69
|
+
{/* Full arc-colored ring */}
|
|
70
|
+
<View style={[styles.ring, { ...ringBase, borderColor: colors.spinner.arc }]}/>
|
|
71
|
+
{/* Check icon — centered absolutely */}
|
|
72
|
+
<View style={styles.iconCenter}>
|
|
73
|
+
<Check size={cfg.iconSize} weight="bold" color={colors.spinner.arc}/>
|
|
74
|
+
</View>
|
|
75
|
+
</>)}
|
|
76
|
+
</View>
|
|
77
|
+
</View>
|
|
78
|
+
</View>);
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=Spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Spinner — animated loading indicator with three modes.\n * idle: full track ring. loading: animated arc. finish: colored ring + check icon.\n * Four sizes (s/m/l/xl).\n */\nimport { useEffect, useRef } from 'react';\nimport { Animated, Easing, View } from 'react-native';\nimport { Check } from 'phosphor-react-native';\nimport { useTheme } from '../../context/ThemeContext';\nimport { styles } from './Spinner.styles';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type SpinnerSize = 's' | 'm' | 'l' | 'xl';\nexport type SpinnerMode = 'idle' | 'loading' | 'finish';\n\nexport interface SpinnerProps {\n /** Display mode — idle: full ring, loading: animated arc, finish: colored ring + check */\n mode?: SpinnerMode;\n /** Box size — s: 16px, m: 20px, l: 24px, xl: 28px (circle is 4px smaller) */\n size?: SpinnerSize;\n /** Test ID for automated testing */\n testID?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Size config\n// ---------------------------------------------------------------------------\n\nconst SIZE_CONFIG: Record<SpinnerSize, { box: number; circle: number; strokeWidth: number; iconSize: number }> = {\n s: { box: 16, circle: 12, strokeWidth: 2, iconSize: 8 },\n m: { box: 20, circle: 16, strokeWidth: 2, iconSize: 12 },\n l: { box: 24, circle: 20, strokeWidth: 2, iconSize: 14 },\n xl: { box: 28, circle: 24, strokeWidth: 2, iconSize: 16 },\n};\n\nconst ANIMATION_DURATION = 900;\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport const Spinner = ({\n mode = 'loading',\n size = 'm',\n testID,\n}: SpinnerProps) => {\n const { colors } = useTheme();\n const cfg = SIZE_CONFIG[size];\n const spinAnim = useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n const anim = Animated.loop(\n Animated.timing(spinAnim, {\n toValue: 1,\n duration: ANIMATION_DURATION,\n easing: Easing.linear,\n useNativeDriver: true,\n }),\n );\n anim.start();\n return () => anim.stop();\n }, [spinAnim]);\n\n const rotate = spinAnim.interpolate({\n inputRange: [0, 1],\n outputRange: ['0deg', '360deg'],\n });\n\n const ringBase = {\n width: cfg.circle,\n height: cfg.circle,\n borderRadius: cfg.circle / 2,\n borderWidth: cfg.strokeWidth,\n };\n\n return (\n <View\n style={styles.wrapper}\n accessibilityRole=\"progressbar\"\n accessibilityLiveRegion=\"polite\"\n testID={testID}\n >\n {/* Box — centers the circle container */}\n <View style={{ width: cfg.box, height: cfg.box, alignItems: 'center', justifyContent: 'center' }}>\n {/* Circle container — rings are absolute within this */}\n <View style={{ width: cfg.circle, height: cfg.circle }}>\n {/* Track ring — always visible in idle and loading */}\n {mode !== 'finish' && (\n <View style={[styles.ring, { ...ringBase, borderColor: colors.spinner.track }]} />\n )}\n\n {mode === 'loading' && (\n <Animated.View\n style={[\n styles.ring,\n {\n ...ringBase,\n borderTopColor: colors.spinner.arc,\n borderRightColor: colors.spinner.arc,\n borderBottomColor: 'transparent',\n borderLeftColor: 'transparent',\n transform: [{ rotate }],\n },\n ]}\n />\n )}\n\n {mode === 'finish' && (\n <>\n {/* Full arc-colored ring */}\n <View style={[styles.ring, { ...ringBase, borderColor: colors.spinner.arc }]} />\n {/* Check icon — centered absolutely */}\n <View style={styles.iconCenter}>\n <Check size={cfg.iconSize} weight=\"bold\" color={colors.spinner.arc} />\n </View>\n </>\n )}\n </View>\n </View>\n </View>\n );\n};\n\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const styles: {
|
|
2
|
+
wrapper: {
|
|
3
|
+
alignItems: "center";
|
|
4
|
+
justifyContent: "center";
|
|
5
|
+
};
|
|
6
|
+
ring: {
|
|
7
|
+
position: "absolute";
|
|
8
|
+
top: number;
|
|
9
|
+
left: number;
|
|
10
|
+
};
|
|
11
|
+
iconCenter: {
|
|
12
|
+
position: "absolute";
|
|
13
|
+
top: number;
|
|
14
|
+
left: number;
|
|
15
|
+
right: number;
|
|
16
|
+
bottom: number;
|
|
17
|
+
alignItems: "center";
|
|
18
|
+
justifyContent: "center";
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=Spinner.styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAmBjB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { StyleSheet } from 'react-native';
|
|
2
|
+
export const styles = StyleSheet.create({
|
|
3
|
+
wrapper: {
|
|
4
|
+
alignItems: 'center',
|
|
5
|
+
justifyContent: 'center',
|
|
6
|
+
},
|
|
7
|
+
ring: {
|
|
8
|
+
position: 'absolute',
|
|
9
|
+
top: 0,
|
|
10
|
+
left: 0,
|
|
11
|
+
},
|
|
12
|
+
iconCenter: {
|
|
13
|
+
position: 'absolute',
|
|
14
|
+
top: 0,
|
|
15
|
+
left: 0,
|
|
16
|
+
right: 0,
|
|
17
|
+
bottom: 0,
|
|
18
|
+
alignItems: 'center',
|
|
19
|
+
justifyContent: 'center',
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=Spinner.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.styles.js","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE;QACP,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;KACR;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n wrapper: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n ring: {\n position: 'absolute',\n top: 0,\n left: 0,\n },\n iconCenter: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export { Spinner } from './Spinner';\nexport type { SpinnerProps, SpinnerSize } from './Spinner';\n"]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StepSheet — BottomSheet wizard.
|
|
3
|
+
* Composes BottomSheet + PageNav + Stepper into a single step-by-step sheet.
|
|
4
|
+
* Stepper's onCancel is auto-wired to close the sheet.
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { ButtonVariant } from '../Button';
|
|
8
|
+
import type { RightAction } from '../navigation/PageNav/PageNav';
|
|
9
|
+
export type { RightAction };
|
|
10
|
+
export interface StepSheetProps {
|
|
11
|
+
/** Whether the sheet is open */
|
|
12
|
+
isOpen: boolean;
|
|
13
|
+
/** Called when the sheet closes */
|
|
14
|
+
onClose?: () => void;
|
|
15
|
+
/** Called when the sheet opens */
|
|
16
|
+
onOpen?: () => void;
|
|
17
|
+
/** Initial height as a fraction of screen height @default 0.9 */
|
|
18
|
+
size?: number;
|
|
19
|
+
/** Allow sliding up to expand to full screen @default true */
|
|
20
|
+
expandable?: boolean;
|
|
21
|
+
/** Allow sliding down to close @default true */
|
|
22
|
+
closeable?: boolean;
|
|
23
|
+
/** Show dark backdrop @default true */
|
|
24
|
+
backdrop?: boolean;
|
|
25
|
+
/** Block background interactions without visible backdrop @default false */
|
|
26
|
+
blockBackground?: boolean;
|
|
27
|
+
/** Close on backdrop press @default false */
|
|
28
|
+
closeOnBackdropPress?: boolean;
|
|
29
|
+
/** Auto-size based on content height @default false */
|
|
30
|
+
autoSize?: boolean;
|
|
31
|
+
/** Keyboard behavior when the keyboard opens */
|
|
32
|
+
keyboardBehavior?: 'extend' | 'fillParent' | 'interactive';
|
|
33
|
+
/** Keyboard blur behavior @default 'restore' */
|
|
34
|
+
keyboardBlurBehavior?: 'none' | 'restore';
|
|
35
|
+
/** Sheet title — centered in the header */
|
|
36
|
+
title?: string;
|
|
37
|
+
/** Title size @default 'l' */
|
|
38
|
+
titleSize?: 's' | 'm' | 'l';
|
|
39
|
+
/** Optional icon shown left of the title */
|
|
40
|
+
titleIcon?: React.ReactElement;
|
|
41
|
+
/** Optional content rendered after the title */
|
|
42
|
+
titleChildren?: React.ReactNode;
|
|
43
|
+
/** Left action buttons in the PageNav header */
|
|
44
|
+
leftActions?: RightAction[];
|
|
45
|
+
/** Right action buttons in the PageNav header */
|
|
46
|
+
rightActions?: RightAction[];
|
|
47
|
+
/** Variant applied to all PageNav buttons @default 'ghost' */
|
|
48
|
+
buttonVariant?: ButtonVariant;
|
|
49
|
+
/** Optional content rendered below the PageNav header row (34px slot) */
|
|
50
|
+
navChildren?: React.ReactNode;
|
|
51
|
+
/** Ordered list of step content to render */
|
|
52
|
+
steps: React.ReactNode[];
|
|
53
|
+
/** Called when the user confirms on the last step */
|
|
54
|
+
onConfirm: () => void;
|
|
55
|
+
/**
|
|
56
|
+
* Called before advancing to the next step.
|
|
57
|
+
* Return false to block navigation.
|
|
58
|
+
*/
|
|
59
|
+
onStepNext?: (stepIndex: number) => boolean | Promise<boolean>;
|
|
60
|
+
/** Disables the confirm/next button while an async operation is pending */
|
|
61
|
+
isLoading?: boolean;
|
|
62
|
+
/** @default 'Annuler' */
|
|
63
|
+
labelCancel?: string;
|
|
64
|
+
/** @default 'Précédent' */
|
|
65
|
+
labelBack?: string;
|
|
66
|
+
/** @default 'Suivant' */
|
|
67
|
+
labelNext?: string;
|
|
68
|
+
/** @default 'Confirmer' */
|
|
69
|
+
labelConfirm?: string;
|
|
70
|
+
/** Button sizing mode @default 'stretch' */
|
|
71
|
+
buttonLayout?: 'stretch' | 'fit';
|
|
72
|
+
/** Hide back button on the last step so confirm fills full width @default false */
|
|
73
|
+
hideBackOnLastStep?: boolean;
|
|
74
|
+
}
|
|
75
|
+
export declare function StepSheet({ isOpen, onClose, onOpen, size, expandable, closeable, backdrop, blockBackground, closeOnBackdropPress, autoSize, keyboardBehavior, keyboardBlurBehavior, title, titleSize, titleIcon, titleChildren, leftActions, rightActions, buttonVariant, navChildren, steps, onConfirm, onStepNext, isLoading, labelCancel, labelBack, labelNext, labelConfirm, buttonLayout, hideBackOnLastStep, }: StepSheetProps): React.JSX.Element;
|
|
76
|
+
export default StepSheet;
|
|
77
|
+
//# sourceMappingURL=StepSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepSheet.d.ts","sourceRoot":"","sources":["../../../src/components/StepSheet/StepSheet.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StepSheet — BottomSheet wizard.
|
|
3
|
+
* Composes BottomSheet + PageNav + Stepper into a single step-by-step sheet.
|
|
4
|
+
* Stepper's onCancel is auto-wired to close the sheet.
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { View } from 'react-native';
|
|
8
|
+
import { BottomSheet } from '../BottomSheet';
|
|
9
|
+
import { styles } from './StepSheet.styles';
|
|
10
|
+
import { PageNav } from '../navigation/PageNav';
|
|
11
|
+
import { Stepper } from '../Stepper';
|
|
12
|
+
export function StepSheet({
|
|
13
|
+
// BottomSheet
|
|
14
|
+
isOpen, onClose, onOpen, size = 0.9, expandable = true, closeable = true, backdrop = true, blockBackground = false, closeOnBackdropPress = false, autoSize = false, keyboardBehavior, keyboardBlurBehavior = 'restore',
|
|
15
|
+
// PageNav
|
|
16
|
+
title, titleSize, titleIcon, titleChildren, leftActions, rightActions, buttonVariant, navChildren,
|
|
17
|
+
// Stepper
|
|
18
|
+
steps, onConfirm, onStepNext, isLoading, labelCancel, labelBack, labelNext, labelConfirm, buttonLayout, hideBackOnLastStep, }) {
|
|
19
|
+
return (<BottomSheet isOpen={isOpen} onClose={onClose} onOpen={onOpen} size={size} expandable={expandable} closeable={closeable} backdrop={backdrop} blockBackground={blockBackground} closeOnBackdropPress={closeOnBackdropPress} autoSize={autoSize} keyboardBehavior={keyboardBehavior} keyboardBlurBehavior={keyboardBlurBehavior}>
|
|
20
|
+
<View style={styles.root}>
|
|
21
|
+
<PageNav title={title} titleSize={titleSize} titleIcon={titleIcon} titleChildren={titleChildren} leftActions={leftActions} rightActions={rightActions} buttonVariant={buttonVariant}>
|
|
22
|
+
{navChildren}
|
|
23
|
+
</PageNav>
|
|
24
|
+
|
|
25
|
+
<Stepper steps={steps} onCancel={onClose ?? (() => { })} onConfirm={onConfirm} onStepNext={onStepNext} isLoading={isLoading} bottomInset={0} labelCancel={labelCancel} labelBack={labelBack} labelNext={labelNext} labelConfirm={labelConfirm} buttonLayout={buttonLayout} hideBackOnLastStep={hideBackOnLastStep}/>
|
|
26
|
+
</View>
|
|
27
|
+
</BottomSheet>);
|
|
28
|
+
}
|
|
29
|
+
export default StepSheet;
|
|
30
|
+
//# sourceMappingURL=StepSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepSheet.js","sourceRoot":"","sources":["../../../src/components/StepSheet/StepSheet.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA6ErC,MAAM,UAAU,SAAS,CAAC;AACxB,cAAc;AACd,MAAM,EACN,OAAO,EACP,MAAM,EACN,IAAI,GAAG,GAAG,EACV,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,IAAI,EACf,eAAe,GAAG,KAAK,EACvB,oBAAoB,GAAG,KAAK,EAC5B,QAAQ,GAAG,KAAK,EAChB,gBAAgB,EAChB,oBAAoB,GAAG,SAAS;AAChC,UAAU;AACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW;AACX,UAAU;AACV,KAAK,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACH;IACf,OAAO,CACL,CAAC,WAAW,CACV,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,eAAe,CAAC,CAAC,eAAe,CAAC,CACjC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,CAC3C,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CACnC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,CAE3C;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACvB;QAAA,CAAC,OAAO,CACN,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,aAAa,CAAC,CAAC,aAAa,CAAC,CAE7B;UAAA,CAAC,WAAW,CACd;QAAA,EAAE,OAAO,CAET;;QAAA,CAAC,OAAO,CACN,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAChC,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,WAAW,CAAC,CAAC,CAAC,CAAC,CACf,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,EAE3C;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,WAAW,CAAC,CACf,CAAC;AACJ,CAAC;AAED,eAAe,SAAS,CAAC","sourcesContent":["/**\n * StepSheet — BottomSheet wizard.\n * Composes BottomSheet + PageNav + Stepper into a single step-by-step sheet.\n * Stepper's onCancel is auto-wired to close the sheet.\n */\nimport React from 'react';\nimport { View } from 'react-native';\nimport { BottomSheet } from '../BottomSheet';\nimport { styles } from './StepSheet.styles';\nimport { PageNav } from '../navigation/PageNav';\nimport { Stepper } from '../Stepper';\nimport type { ButtonVariant } from '../Button';\nimport type { RightAction } from '../navigation/PageNav/PageNav';\n\nexport type { RightAction };\n\nexport interface StepSheetProps {\n // --- BottomSheet ---\n /** Whether the sheet is open */\n isOpen: boolean;\n /** Called when the sheet closes */\n onClose?: () => void;\n /** Called when the sheet opens */\n onOpen?: () => void;\n /** Initial height as a fraction of screen height @default 0.9 */\n size?: number;\n /** Allow sliding up to expand to full screen @default true */\n expandable?: boolean;\n /** Allow sliding down to close @default true */\n closeable?: boolean;\n /** Show dark backdrop @default true */\n backdrop?: boolean;\n /** Block background interactions without visible backdrop @default false */\n blockBackground?: boolean;\n /** Close on backdrop press @default false */\n closeOnBackdropPress?: boolean;\n /** Auto-size based on content height @default false */\n autoSize?: boolean;\n /** Keyboard behavior when the keyboard opens */\n keyboardBehavior?: 'extend' | 'fillParent' | 'interactive';\n /** Keyboard blur behavior @default 'restore' */\n keyboardBlurBehavior?: 'none' | 'restore';\n\n // --- PageNav ---\n /** Sheet title — centered in the header */\n title?: string;\n /** Title size @default 'l' */\n titleSize?: 's' | 'm' | 'l';\n /** Optional icon shown left of the title */\n titleIcon?: React.ReactElement;\n /** Optional content rendered after the title */\n titleChildren?: React.ReactNode;\n /** Left action buttons in the PageNav header */\n leftActions?: RightAction[];\n /** Right action buttons in the PageNav header */\n rightActions?: RightAction[];\n /** Variant applied to all PageNav buttons @default 'ghost' */\n buttonVariant?: ButtonVariant;\n /** Optional content rendered below the PageNav header row (34px slot) */\n navChildren?: React.ReactNode;\n\n // --- Stepper ---\n /** Ordered list of step content to render */\n steps: React.ReactNode[];\n /** Called when the user confirms on the last step */\n onConfirm: () => void;\n /**\n * Called before advancing to the next step.\n * Return false to block navigation.\n */\n onStepNext?: (stepIndex: number) => boolean | Promise<boolean>;\n /** Disables the confirm/next button while an async operation is pending */\n isLoading?: boolean;\n /** @default 'Annuler' */\n labelCancel?: string;\n /** @default 'Précédent' */\n labelBack?: string;\n /** @default 'Suivant' */\n labelNext?: string;\n /** @default 'Confirmer' */\n labelConfirm?: string;\n /** Button sizing mode @default 'stretch' */\n buttonLayout?: 'stretch' | 'fit';\n /** Hide back button on the last step so confirm fills full width @default false */\n hideBackOnLastStep?: boolean;\n}\n\nexport function StepSheet({\n // BottomSheet\n isOpen,\n onClose,\n onOpen,\n size = 0.9,\n expandable = true,\n closeable = true,\n backdrop = true,\n blockBackground = false,\n closeOnBackdropPress = false,\n autoSize = false,\n keyboardBehavior,\n keyboardBlurBehavior = 'restore',\n // PageNav\n title,\n titleSize,\n titleIcon,\n titleChildren,\n leftActions,\n rightActions,\n buttonVariant,\n navChildren,\n // Stepper\n steps,\n onConfirm,\n onStepNext,\n isLoading,\n labelCancel,\n labelBack,\n labelNext,\n labelConfirm,\n buttonLayout,\n hideBackOnLastStep,\n}: StepSheetProps) {\n return (\n <BottomSheet\n isOpen={isOpen}\n onClose={onClose}\n onOpen={onOpen}\n size={size}\n expandable={expandable}\n closeable={closeable}\n backdrop={backdrop}\n blockBackground={blockBackground}\n closeOnBackdropPress={closeOnBackdropPress}\n autoSize={autoSize}\n keyboardBehavior={keyboardBehavior}\n keyboardBlurBehavior={keyboardBlurBehavior}\n >\n <View style={styles.root}>\n <PageNav\n title={title}\n titleSize={titleSize}\n titleIcon={titleIcon}\n titleChildren={titleChildren}\n leftActions={leftActions}\n rightActions={rightActions}\n buttonVariant={buttonVariant}\n >\n {navChildren}\n </PageNav>\n\n <Stepper\n steps={steps}\n onCancel={onClose ?? (() => {})}\n onConfirm={onConfirm}\n onStepNext={onStepNext}\n isLoading={isLoading}\n bottomInset={0}\n labelCancel={labelCancel}\n labelBack={labelBack}\n labelNext={labelNext}\n labelConfirm={labelConfirm}\n buttonLayout={buttonLayout}\n hideBackOnLastStep={hideBackOnLastStep}\n />\n </View>\n </BottomSheet>\n );\n}\n\nexport default StepSheet;\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepSheet.styles.d.ts","sourceRoot":"","sources":["../../../src/components/StepSheet/StepSheet.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;CAIjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepSheet.styles.js","sourceRoot":"","sources":["../../../src/components/StepSheet/StepSheet.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC;KACR;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n root: {\n flex: 1,\n },\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StepSheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/StepSheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export { StepSheet } from './StepSheet';\nexport type { StepSheetProps } from './StepSheet';"]}
|