@ledgerhq/lumen-ui-rnative 0.1.47 → 0.1.49
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/dist/module/i18n/locales/de.json +1 -3
- package/dist/module/i18n/locales/en.json +1 -3
- package/dist/module/i18n/locales/es.json +1 -3
- package/dist/module/i18n/locales/fr.json +1 -3
- package/dist/module/i18n/locales/ja.json +1 -3
- package/dist/module/i18n/locales/ko.json +1 -3
- package/dist/module/i18n/locales/pt.json +1 -3
- package/dist/module/i18n/locales/ru.json +1 -3
- package/dist/module/i18n/locales/th.json +1 -3
- package/dist/module/i18n/locales/tr.json +1 -3
- package/dist/module/i18n/locales/zh.json +1 -3
- package/dist/module/lib/Animations/Pulse/Pulse.js +3 -3
- package/dist/module/lib/Animations/Pulse/Pulse.js.map +1 -1
- package/dist/module/lib/Animations/Pulse/Pulse.mdx +0 -1
- package/dist/module/lib/Animations/Spin/Spin.js +3 -3
- package/dist/module/lib/Animations/Spin/Spin.js.map +1 -1
- package/dist/module/lib/Animations/Spin/Spin.mdx +0 -1
- package/dist/module/lib/Components/AddressInput/AddressInput.figma.js +36 -0
- package/dist/module/lib/Components/AddressInput/AddressInput.figma.js.map +1 -0
- package/dist/module/lib/Components/AddressInput/AddressInput.mdx +0 -183
- package/dist/module/lib/Components/AmountDisplay/AmountDisplay.figma.js +31 -0
- package/dist/module/lib/Components/AmountDisplay/AmountDisplay.figma.js.map +1 -0
- package/dist/module/lib/Components/AmountDisplay/AmountDisplay.mdx +0 -90
- package/dist/module/lib/Components/AmountInput/AmountInput.figma.js +70 -0
- package/dist/module/lib/Components/AmountInput/AmountInput.figma.js.map +1 -0
- package/dist/module/lib/Components/AmountInput/AmountInput.js +3 -1
- package/dist/module/lib/Components/AmountInput/AmountInput.js.map +1 -1
- package/dist/module/lib/Components/AmountInput/AmountInput.mdx +0 -190
- package/dist/module/lib/Components/AmountInput/AmountInput.stories.js +15 -0
- package/dist/module/lib/Components/AmountInput/AmountInput.stories.js.map +1 -1
- package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.js +1 -1
- package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.js.map +1 -1
- package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.js +20 -1
- package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.js.map +1 -1
- package/dist/module/lib/Components/Avatar/Avatar.figma.js +15 -12
- package/dist/module/lib/Components/Avatar/Avatar.figma.js.map +1 -1
- package/dist/module/lib/Components/Avatar/Avatar.js +4 -27
- package/dist/module/lib/Components/Avatar/Avatar.js.map +1 -1
- package/dist/module/lib/Components/Avatar/Avatar.mdx +53 -69
- package/dist/module/lib/Components/Avatar/Avatar.stories.js +27 -33
- package/dist/module/lib/Components/Avatar/Avatar.stories.js.map +1 -1
- package/dist/module/lib/Components/Avatar/Avatar.test.js +21 -39
- package/dist/module/lib/Components/Avatar/Avatar.test.js.map +1 -1
- package/dist/module/lib/Components/Banner/Banner.figma.js +107 -0
- package/dist/module/lib/Components/Banner/Banner.figma.js.map +1 -0
- package/dist/module/lib/Components/Banner/Banner.mdx +0 -86
- package/dist/module/lib/Components/BottomSheet/BottomSheet.figma.js +49 -0
- package/dist/module/lib/Components/BottomSheet/BottomSheet.figma.js.map +1 -0
- package/dist/module/lib/Components/BottomSheet/BottomSheet.mdx +0 -119
- package/dist/module/lib/Components/Button/Button.figma.js +45 -0
- package/dist/module/lib/Components/Button/Button.figma.js.map +1 -0
- package/dist/module/lib/Components/Button/Button.mdx +25 -224
- package/dist/module/lib/Components/Button/Button.stories.js +4 -36
- package/dist/module/lib/Components/Button/Button.stories.js.map +1 -1
- package/dist/module/lib/Components/Card/Card.figma.js +143 -0
- package/dist/module/lib/Components/Card/Card.figma.js.map +1 -0
- package/dist/module/lib/Components/Card/Card.mdx +0 -160
- package/dist/module/lib/Components/CardButton/CardButton.figma.js +38 -0
- package/dist/module/lib/Components/CardButton/CardButton.figma.js.map +1 -0
- package/dist/module/lib/Components/CardButton/CardButton.mdx +0 -48
- package/dist/module/lib/Components/Checkbox/Checkbox.figma.js +48 -0
- package/dist/module/lib/Components/Checkbox/Checkbox.figma.js.map +1 -0
- package/dist/module/lib/Components/Checkbox/Checkbox.mdx +0 -73
- package/dist/module/lib/Components/ContentBanner/ContentBanner.figma.js +91 -0
- package/dist/module/lib/Components/ContentBanner/ContentBanner.figma.js.map +1 -0
- package/dist/module/lib/Components/ContentBanner/ContentBanner.mdx +0 -2
- package/dist/module/lib/Components/CryptoIcon/CryptoIcon.figma.js +17 -0
- package/dist/module/lib/Components/CryptoIcon/CryptoIcon.figma.js.map +1 -0
- package/dist/module/lib/Components/DescriptionItem/DescriptionItem.figma.js +29 -0
- package/dist/module/lib/Components/DescriptionItem/DescriptionItem.figma.js.map +1 -0
- package/dist/module/lib/Components/Divider/Divider.figma.js +10 -0
- package/dist/module/lib/Components/Divider/Divider.figma.js.map +1 -0
- package/dist/module/lib/Components/Divider/Divider.mdx +0 -2
- package/dist/module/lib/Components/DotCount/DotCount.figma.js +29 -0
- package/dist/module/lib/Components/DotCount/DotCount.figma.js.map +1 -0
- package/dist/module/lib/Components/DotIndicator/DotIndicator.figma.js +29 -0
- package/dist/module/lib/Components/DotIndicator/DotIndicator.figma.js.map +1 -0
- package/dist/module/lib/Components/DotIndicator/DotIndicator.stories.js +6 -3
- package/dist/module/lib/Components/DotIndicator/DotIndicator.stories.js.map +1 -1
- package/dist/module/lib/Components/DotIndicator/getDotIndicatorProps.js +17 -0
- package/dist/module/lib/Components/DotIndicator/getDotIndicatorProps.js.map +1 -0
- package/dist/module/lib/Components/DotIndicator/getDotIndicatorProps.test.js +17 -0
- package/dist/module/lib/Components/DotIndicator/getDotIndicatorProps.test.js.map +1 -0
- package/dist/module/lib/Components/DotIndicator/index.js +1 -0
- package/dist/module/lib/Components/DotIndicator/index.js.map +1 -1
- package/dist/module/lib/Components/Icon/Icon.figma.js +1840 -0
- package/dist/module/lib/Components/Icon/Icon.figma.js.map +1 -0
- package/dist/module/lib/Components/Icon/Icon.mdx +0 -62
- package/dist/module/lib/Components/IconButton/IconButton.figma.js +42 -0
- package/dist/module/lib/Components/IconButton/IconButton.figma.js.map +1 -0
- package/dist/module/lib/Components/IconButton/IconButton.mdx +0 -68
- package/dist/module/lib/Components/InteractiveIcon/InteractiveIcon.figma.js +51 -0
- package/dist/module/lib/Components/InteractiveIcon/InteractiveIcon.figma.js.map +1 -0
- package/dist/module/lib/Components/InteractiveIcon/InteractiveIcon.mdx +0 -107
- package/dist/module/lib/Components/Link/Link.figma.js +41 -0
- package/dist/module/lib/Components/Link/Link.figma.js.map +1 -0
- package/dist/module/lib/Components/Link/Link.mdx +0 -102
- package/dist/module/lib/Components/ListItem/ListItem.figma.js +416 -0
- package/dist/module/lib/Components/ListItem/ListItem.figma.js.map +1 -0
- package/dist/module/lib/Components/ListItem/ListItem.mdx +0 -129
- package/dist/module/lib/Components/MediaBanner/MediaBanner.figma.js +25 -0
- package/dist/module/lib/Components/MediaBanner/MediaBanner.figma.js.map +1 -0
- package/dist/module/lib/Components/MediaBanner/MediaBanner.mdx +0 -3
- package/dist/module/lib/Components/MediaButton/MediaButton.figma.js +72 -0
- package/dist/module/lib/Components/MediaButton/MediaButton.figma.js.map +1 -0
- package/dist/module/lib/Components/MediaCard/MediaCard.figma.js +28 -0
- package/dist/module/lib/Components/MediaCard/MediaCard.figma.js.map +1 -0
- package/dist/module/lib/Components/MediaCard/MediaCard.mdx +0 -2
- package/dist/module/lib/Components/MediaImage/MediaImage.mdx +0 -1
- package/dist/module/lib/Components/MediaTag/MediaTag.figma.js +100 -0
- package/dist/module/lib/Components/MediaTag/MediaTag.figma.js.map +1 -0
- package/dist/module/lib/Components/MediaTag/MediaTag.mdx +0 -2
- package/dist/module/lib/Components/NavBar/NavBar.figma.js +79 -0
- package/dist/module/lib/Components/NavBar/NavBar.figma.js.map +1 -0
- package/dist/module/lib/Components/NavBar/NavBar.mdx +0 -2
- package/dist/module/lib/Components/OptionList/OptionList.js +16 -1
- package/dist/module/lib/Components/OptionList/OptionList.js.map +1 -1
- package/dist/module/lib/Components/OptionList/OptionList.mdx +45 -90
- package/dist/module/lib/Components/OptionList/OptionList.stories.js +61 -1
- package/dist/module/lib/Components/OptionList/OptionList.stories.js.map +1 -1
- package/dist/module/lib/Components/OptionList/OptionList.test.js +43 -1
- package/dist/module/lib/Components/OptionList/OptionList.test.js.map +1 -1
- package/dist/module/lib/Components/OptionList/useOptionList/useOptionListItems.js.map +1 -1
- package/dist/module/lib/Components/PageIndicator/PageIndicator.figma.js +13 -0
- package/dist/module/lib/Components/PageIndicator/PageIndicator.figma.js.map +1 -0
- package/dist/module/lib/Components/PageIndicator/PageIndicator.mdx +0 -2
- package/dist/module/lib/Components/SearchInput/SearchInput.figma.js +31 -0
- package/dist/module/lib/Components/SearchInput/SearchInput.figma.js.map +1 -0
- package/dist/module/lib/Components/SearchInput/SearchInput.mdx +0 -199
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.figma.js +35 -0
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.figma.js.map +1 -0
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.js +7 -1
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.mdx +28 -1
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.stories.js +24 -1
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.stories.js.map +1 -1
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.test.js +28 -1
- package/dist/module/lib/Components/SegmentedControl/SegmentedControl.test.js.map +1 -1
- package/dist/module/lib/Components/Skeleton/Skeleton.figma.js +18 -0
- package/dist/module/lib/Components/Skeleton/Skeleton.figma.js.map +1 -0
- package/dist/module/lib/Components/Skeleton/Skeleton.mdx +0 -71
- package/dist/module/lib/Components/Spinner/Spinner.figma.js +13 -0
- package/dist/module/lib/Components/Spinner/Spinner.figma.js.map +1 -0
- package/dist/module/lib/Components/Spinner/Spinner.mdx +0 -100
- package/dist/module/lib/Components/Spot/Spot.figma.js +37 -0
- package/dist/module/lib/Components/Spot/Spot.figma.js.map +1 -0
- package/dist/module/lib/Components/Spot/Spot.mdx +0 -94
- package/dist/module/lib/Components/Stepper/Stepper.figma.js +13 -0
- package/dist/module/lib/Components/Stepper/Stepper.figma.js.map +1 -0
- package/dist/module/lib/Components/Stepper/Stepper.mdx +0 -67
- package/dist/module/lib/Components/Subheader/Subheader.figma.js +67 -0
- package/dist/module/lib/Components/Subheader/Subheader.figma.js.map +1 -0
- package/dist/module/lib/Components/Subheader/Subheader.mdx +0 -116
- package/dist/module/lib/Components/Switch/Switch.figma.js +58 -0
- package/dist/module/lib/Components/Switch/Switch.figma.js.map +1 -0
- package/dist/module/lib/Components/Switch/Switch.mdx +0 -39
- package/dist/module/lib/Components/TabBar/TabBar.figma.js +98 -0
- package/dist/module/lib/Components/TabBar/TabBar.figma.js.map +1 -0
- package/dist/module/lib/Components/TabBar/TabBar.js +7 -4
- package/dist/module/lib/Components/TabBar/TabBar.js.map +1 -1
- package/dist/module/lib/Components/TabBar/TabBar.mdx +29 -5
- package/dist/module/lib/Components/TabBar/TabBar.stories.js +35 -1
- package/dist/module/lib/Components/TabBar/TabBar.stories.js.map +1 -1
- package/dist/module/lib/Components/TabBar/TabBar.test.js +28 -1
- package/dist/module/lib/Components/TabBar/TabBar.test.js.map +1 -1
- package/dist/module/lib/Components/TabBar/index.js +2 -1
- package/dist/module/lib/Components/TabBar/index.js.map +1 -1
- package/dist/module/lib/Components/Tag/Tag.figma.js +41 -0
- package/dist/module/lib/Components/Tag/Tag.figma.js.map +1 -0
- package/dist/module/lib/Components/Tag/Tag.mdx +0 -2
- package/dist/module/lib/Components/TextInput/TextInput.figma.js +37 -0
- package/dist/module/lib/Components/TextInput/TextInput.figma.js.map +1 -0
- package/dist/module/lib/Components/TextInput/TextInput.mdx +0 -178
- package/dist/module/lib/Components/Tile/Tile.figma.js +111 -0
- package/dist/module/lib/Components/Tile/Tile.figma.js.map +1 -0
- package/dist/module/lib/Components/Tile/Tile.mdx +0 -53
- package/dist/module/lib/Components/TileButton/TileButton.figma.js +23 -0
- package/dist/module/lib/Components/TileButton/TileButton.figma.js.map +1 -0
- package/dist/module/lib/Components/TileButton/TileButton.mdx +0 -40
- package/dist/module/lib/Components/Tooltip/Tooltip.figma.js +26 -0
- package/dist/module/lib/Components/Tooltip/Tooltip.figma.js.map +1 -0
- package/dist/module/lib/Components/Tooltip/Tooltip.mdx +0 -183
- package/dist/module/lib/Components/Trend/Trend.figma.js +29 -0
- package/dist/module/lib/Components/Trend/Trend.figma.js.map +1 -0
- package/dist/module/lib/Components/Trend/Trend.mdx +0 -2
- package/dist/module/lib/Components/Utility/Text/Text.mdx +0 -1
- package/dist/module/lib/Symbols/Icons/ChevronAscending.js +1 -1
- package/dist/module/lib/Symbols/Icons/ChevronDescending.js +1 -1
- package/dist/module/lib/Symbols/Icons/Contact.js +50 -0
- package/dist/module/lib/Symbols/Icons/Contact.js.map +1 -0
- package/dist/module/lib/Symbols/index.js +1 -0
- package/dist/module/lib/Symbols/index.js.map +1 -1
- package/dist/typescript/src/lib/Animations/Pulse/Pulse.d.ts.map +1 -1
- package/dist/typescript/src/lib/Animations/Spin/Spin.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts +1 -1
- package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/AmountInput/types.d.ts +8 -0
- package/dist/typescript/src/lib/Components/AmountInput/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.d.ts +1 -0
- package/dist/typescript/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Avatar/Avatar.d.ts +1 -4
- package/dist/typescript/src/lib/Components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Avatar/types.d.ts +0 -6
- package/dist/typescript/src/lib/Components/Avatar/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/DotIndicator/getDotIndicatorProps.d.ts +24 -0
- package/dist/typescript/src/lib/Components/DotIndicator/getDotIndicatorProps.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/DotIndicator/index.d.ts +1 -0
- package/dist/typescript/src/lib/Components/DotIndicator/index.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/OptionList/OptionList.d.ts +18 -4
- package/dist/typescript/src/lib/Components/OptionList/OptionList.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/OptionList/types.d.ts +16 -15
- package/dist/typescript/src/lib/Components/OptionList/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/OptionList/useOptionList/useOptionListItems.d.ts +9 -9
- package/dist/typescript/src/lib/Components/OptionList/useOptionList/useOptionListItems.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/SegmentedControl/SegmentedControl.d.ts +8 -3
- package/dist/typescript/src/lib/Components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/SegmentedControl/types.d.ts +6 -5
- package/dist/typescript/src/lib/Components/SegmentedControl/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/TabBar/TabBar.d.ts +7 -2
- package/dist/typescript/src/lib/Components/TabBar/TabBar.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/TabBar/index.d.ts +2 -2
- package/dist/typescript/src/lib/Components/TabBar/index.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/TabBar/types.d.ts +17 -16
- package/dist/typescript/src/lib/Components/TabBar/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Symbols/Icons/Contact.d.ts +35 -0
- package/dist/typescript/src/lib/Symbols/Icons/Contact.d.ts.map +1 -0
- package/dist/typescript/src/lib/Symbols/index.d.ts +1 -0
- package/dist/typescript/src/lib/Symbols/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/i18n/locales/de.json +1 -3
- package/src/i18n/locales/en.json +1 -3
- package/src/i18n/locales/es.json +1 -3
- package/src/i18n/locales/fr.json +1 -3
- package/src/i18n/locales/ja.json +1 -3
- package/src/i18n/locales/ko.json +1 -3
- package/src/i18n/locales/pt.json +1 -3
- package/src/i18n/locales/ru.json +1 -3
- package/src/i18n/locales/th.json +1 -3
- package/src/i18n/locales/tr.json +1 -3
- package/src/i18n/locales/zh.json +1 -3
- package/src/lib/Animations/Pulse/Pulse.mdx +0 -1
- package/src/lib/Animations/Pulse/Pulse.tsx +8 -1
- package/src/lib/Animations/Spin/Spin.mdx +0 -1
- package/src/lib/Animations/Spin/Spin.tsx +8 -1
- package/src/lib/Components/AddressInput/AddressInput.figma.tsx +39 -0
- package/src/lib/Components/AddressInput/AddressInput.mdx +0 -183
- package/src/lib/Components/AmountDisplay/AmountDisplay.figma.tsx +37 -0
- package/src/lib/Components/AmountDisplay/AmountDisplay.mdx +0 -90
- package/src/lib/Components/AmountInput/AmountInput.figma.tsx +78 -0
- package/src/lib/Components/AmountInput/AmountInput.mdx +0 -190
- package/src/lib/Components/AmountInput/AmountInput.stories.tsx +14 -0
- package/src/lib/Components/AmountInput/AmountInput.tsx +2 -0
- package/src/lib/Components/AmountInput/types.ts +8 -0
- package/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.ts +20 -0
- package/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.ts +2 -0
- package/src/lib/Components/Avatar/Avatar.figma.tsx +24 -14
- package/src/lib/Components/Avatar/Avatar.mdx +53 -69
- package/src/lib/Components/Avatar/Avatar.stories.tsx +16 -50
- package/src/lib/Components/Avatar/Avatar.test.tsx +12 -32
- package/src/lib/Components/Avatar/Avatar.tsx +4 -34
- package/src/lib/Components/Avatar/types.ts +0 -6
- package/src/lib/Components/Banner/Banner.figma.tsx +115 -0
- package/src/lib/Components/Banner/Banner.mdx +0 -86
- package/src/lib/Components/BottomSheet/BottomSheet.figma.tsx +52 -0
- package/src/lib/Components/BottomSheet/BottomSheet.mdx +0 -119
- package/src/lib/Components/Button/Button.figma.tsx +57 -0
- package/src/lib/Components/Button/Button.mdx +25 -224
- package/src/lib/Components/Button/Button.stories.tsx +3 -35
- package/src/lib/Components/Card/Card.figma.tsx +149 -0
- package/src/lib/Components/Card/Card.mdx +0 -160
- package/src/lib/Components/CardButton/CardButton.figma.tsx +49 -0
- package/src/lib/Components/CardButton/CardButton.mdx +0 -48
- package/src/lib/Components/Checkbox/Checkbox.figma.tsx +54 -0
- package/src/lib/Components/Checkbox/Checkbox.mdx +0 -73
- package/src/lib/Components/ContentBanner/ContentBanner.figma.tsx +108 -0
- package/src/lib/Components/ContentBanner/ContentBanner.mdx +0 -2
- package/src/lib/Components/CryptoIcon/CryptoIcon.figma.tsx +20 -0
- package/src/lib/Components/DescriptionItem/DescriptionItem.figma.tsx +36 -0
- package/src/lib/Components/Divider/Divider.figma.tsx +11 -0
- package/src/lib/Components/Divider/Divider.mdx +0 -2
- package/src/lib/Components/DotCount/DotCount.figma.tsx +32 -0
- package/src/lib/Components/DotIndicator/DotIndicator.figma.tsx +32 -0
- package/src/lib/Components/DotIndicator/DotIndicator.stories.tsx +4 -1
- package/src/lib/Components/DotIndicator/getDotIndicatorProps.test.ts +15 -0
- package/src/lib/Components/DotIndicator/getDotIndicatorProps.ts +10 -0
- package/src/lib/Components/DotIndicator/index.ts +1 -0
- package/src/lib/Components/Icon/Icon.figma.tsx +3085 -0
- package/src/lib/Components/Icon/Icon.mdx +0 -62
- package/src/lib/Components/IconButton/IconButton.figma.tsx +53 -0
- package/src/lib/Components/IconButton/IconButton.mdx +0 -68
- package/src/lib/Components/InteractiveIcon/InteractiveIcon.figma.tsx +52 -0
- package/src/lib/Components/InteractiveIcon/InteractiveIcon.mdx +0 -107
- package/src/lib/Components/Link/Link.figma.tsx +53 -0
- package/src/lib/Components/Link/Link.mdx +0 -102
- package/src/lib/Components/ListItem/ListItem.figma.tsx +431 -0
- package/src/lib/Components/ListItem/ListItem.mdx +0 -129
- package/src/lib/Components/MediaBanner/MediaBanner.figma.tsx +32 -0
- package/src/lib/Components/MediaBanner/MediaBanner.mdx +0 -3
- package/src/lib/Components/MediaButton/MediaButton.figma.tsx +60 -0
- package/src/lib/Components/MediaCard/MediaCard.figma.tsx +27 -0
- package/src/lib/Components/MediaCard/MediaCard.mdx +0 -2
- package/src/lib/Components/MediaImage/MediaImage.mdx +0 -1
- package/src/lib/Components/MediaTag/MediaTag.figma.tsx +116 -0
- package/src/lib/Components/MediaTag/MediaTag.mdx +0 -2
- package/src/lib/Components/NavBar/NavBar.figma.tsx +84 -0
- package/src/lib/Components/NavBar/NavBar.mdx +0 -2
- package/src/lib/Components/OptionList/OptionList.mdx +45 -90
- package/src/lib/Components/OptionList/OptionList.stories.tsx +63 -0
- package/src/lib/Components/OptionList/OptionList.test.tsx +40 -0
- package/src/lib/Components/OptionList/OptionList.tsx +57 -10
- package/src/lib/Components/OptionList/types.ts +34 -15
- package/src/lib/Components/OptionList/useOptionList/useOptionListItems.ts +28 -13
- package/src/lib/Components/PageIndicator/PageIndicator.figma.tsx +11 -0
- package/src/lib/Components/PageIndicator/PageIndicator.mdx +0 -2
- package/src/lib/Components/SearchInput/SearchInput.figma.tsx +34 -0
- package/src/lib/Components/SearchInput/SearchInput.mdx +0 -199
- package/src/lib/Components/SegmentedControl/SegmentedControl.figma.tsx +34 -0
- package/src/lib/Components/SegmentedControl/SegmentedControl.mdx +28 -1
- package/src/lib/Components/SegmentedControl/SegmentedControl.stories.tsx +34 -1
- package/src/lib/Components/SegmentedControl/SegmentedControl.test.tsx +32 -1
- package/src/lib/Components/SegmentedControl/SegmentedControl.tsx +22 -5
- package/src/lib/Components/SegmentedControl/types.ts +11 -5
- package/src/lib/Components/Skeleton/Skeleton.figma.tsx +17 -0
- package/src/lib/Components/Skeleton/Skeleton.mdx +0 -71
- package/src/lib/Components/Spinner/Spinner.figma.tsx +12 -0
- package/src/lib/Components/Spinner/Spinner.mdx +0 -100
- package/src/lib/Components/Spot/Spot.figma.tsx +50 -0
- package/src/lib/Components/Spot/Spot.mdx +0 -94
- package/src/lib/Components/Stepper/Stepper.figma.tsx +11 -0
- package/src/lib/Components/Stepper/Stepper.mdx +0 -67
- package/src/lib/Components/Subheader/Subheader.figma.tsx +72 -0
- package/src/lib/Components/Subheader/Subheader.mdx +0 -116
- package/src/lib/Components/Switch/Switch.figma.tsx +66 -0
- package/src/lib/Components/Switch/Switch.mdx +0 -39
- package/src/lib/Components/TabBar/TabBar.figma.tsx +70 -0
- package/src/lib/Components/TabBar/TabBar.mdx +29 -5
- package/src/lib/Components/TabBar/TabBar.stories.tsx +34 -1
- package/src/lib/Components/TabBar/TabBar.test.tsx +23 -1
- package/src/lib/Components/TabBar/TabBar.tsx +17 -9
- package/src/lib/Components/TabBar/index.ts +2 -2
- package/src/lib/Components/TabBar/types.ts +19 -17
- package/src/lib/Components/Tag/Tag.figma.tsx +52 -0
- package/src/lib/Components/Tag/Tag.mdx +0 -2
- package/src/lib/Components/TextInput/TextInput.figma.tsx +40 -0
- package/src/lib/Components/TextInput/TextInput.mdx +0 -178
- package/src/lib/Components/Tile/Tile.figma.tsx +113 -0
- package/src/lib/Components/Tile/Tile.mdx +0 -53
- package/src/lib/Components/TileButton/TileButton.figma.tsx +35 -0
- package/src/lib/Components/TileButton/TileButton.mdx +0 -40
- package/src/lib/Components/Tooltip/Tooltip.figma.tsx +30 -0
- package/src/lib/Components/Tooltip/Tooltip.mdx +0 -183
- package/src/lib/Components/Trend/Trend.figma.tsx +28 -0
- package/src/lib/Components/Trend/Trend.mdx +0 -2
- package/src/lib/Components/Utility/Text/Text.mdx +0 -1
- package/src/lib/Symbols/Icons/ChevronAscending.tsx +1 -1
- package/src/lib/Symbols/Icons/ChevronDescending.tsx +1 -1
- package/src/lib/Symbols/Icons/Contact.tsx +45 -0
- package/src/lib/Symbols/index.ts +1 -0
- package/dist/typescript/src/lib/Components/Avatar/Avatar.figma.d.ts +0 -2
- package/dist/typescript/src/lib/Components/Avatar/Avatar.figma.d.ts.map +0 -1
- package/dist/typescript/src/lib/Components/OptionList/OptionList.figma.d.ts +0 -2
- package/dist/typescript/src/lib/Components/OptionList/OptionList.figma.d.ts.map +0 -1
|
@@ -6,6 +6,7 @@ type FormatOptions = {
|
|
|
6
6
|
thousandsSeparator: boolean;
|
|
7
7
|
maxIntegerLength: number;
|
|
8
8
|
maxDecimalLength: number;
|
|
9
|
+
decimalSeparator: '.' | ',';
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
type UseAmountInputFormattingArgs = {
|
|
@@ -32,6 +33,7 @@ export const useAmountInputFormatting = ({
|
|
|
32
33
|
formatOptions.thousandsSeparator,
|
|
33
34
|
formatOptions.maxIntegerLength,
|
|
34
35
|
formatOptions.maxDecimalLength,
|
|
36
|
+
formatOptions.decimalSeparator,
|
|
35
37
|
],
|
|
36
38
|
);
|
|
37
39
|
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import figma from '@figma/code-connect';
|
|
2
|
+
import { DotIndicator, getDotIndicatorProps } from '../DotIndicator';
|
|
2
3
|
import { Avatar } from './Avatar';
|
|
3
4
|
|
|
4
5
|
figma.connect(
|
|
5
6
|
Avatar,
|
|
6
7
|
'https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7?node-id=11097-8',
|
|
7
8
|
{
|
|
8
|
-
imports: [
|
|
9
|
+
imports: [
|
|
10
|
+
"import { Avatar, DotIndicator, getDotIndicatorProps } from '@ledgerhq/lumen-ui-rnative'",
|
|
11
|
+
],
|
|
9
12
|
props: {
|
|
10
13
|
appearance: figma.enum('appearance', {
|
|
11
14
|
gray: 'gray',
|
|
@@ -17,19 +20,26 @@ figma.connect(
|
|
|
17
20
|
lg: 'lg',
|
|
18
21
|
xl: 'xl',
|
|
19
22
|
}),
|
|
20
|
-
showNotification: figma.boolean('show-notification',
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
showNotification: figma.boolean('show-notification'),
|
|
24
|
+
},
|
|
25
|
+
example: (props) => {
|
|
26
|
+
const avatar = (
|
|
27
|
+
<Avatar
|
|
28
|
+
src='https://example-image.com'
|
|
29
|
+
appearance={props.appearance}
|
|
30
|
+
size={props.size}
|
|
31
|
+
alt="John Doe's Avatar"
|
|
32
|
+
/>
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
return props.showNotification &&
|
|
36
|
+
(props.size === 'sm' || props.size === 'md') ? (
|
|
37
|
+
<DotIndicator {...getDotIndicatorProps('avatar', props.size)}>
|
|
38
|
+
{avatar}
|
|
39
|
+
</DotIndicator>
|
|
40
|
+
) : (
|
|
41
|
+
avatar
|
|
42
|
+
);
|
|
24
43
|
},
|
|
25
|
-
example: (props) => (
|
|
26
|
-
<Avatar
|
|
27
|
-
src='https://example-image.com'
|
|
28
|
-
appearance={props.appearance}
|
|
29
|
-
size={props.size}
|
|
30
|
-
alt="John Doe's Avatar"
|
|
31
|
-
showNotification={props.showNotification}
|
|
32
|
-
/>
|
|
33
|
-
),
|
|
34
44
|
},
|
|
35
45
|
);
|
|
@@ -2,8 +2,6 @@ import { Meta, Canvas, Controls } from '@storybook/addon-docs/blocks';
|
|
|
2
2
|
import * as AvatarStories from './Avatar.stories';
|
|
3
3
|
import { Avatar } from './Avatar';
|
|
4
4
|
import { CustomTabs, Tab } from '../../../../.storybook/components';
|
|
5
|
-
import { DoVsDontRow, DoBlockItem, DontBlockItem } from '../../../../.storybook/components/DoVsDont';
|
|
6
|
-
import CommonRulesDoAndDont from '../../../../.storybook/components/DoVsDont/CommonRulesDoAndDont.mdx';
|
|
7
5
|
import { Box } from '../Utility';
|
|
8
6
|
|
|
9
7
|
<Meta title='Core/Avatar' of={AvatarStories} />
|
|
@@ -60,11 +58,22 @@ The Avatar component handles two primary states automatically:
|
|
|
60
58
|
|
|
61
59
|
### Notification Indicator
|
|
62
60
|
|
|
63
|
-
|
|
61
|
+
To show a status or alert dot, wrap the Avatar in a `DotIndicator` and derive the dot props from the avatar size with the `getDotIndicatorProps` helper:
|
|
64
62
|
|
|
65
|
-
|
|
63
|
+
```tsx
|
|
64
|
+
import { Avatar, DotIndicator, getDotIndicatorProps } from '@ledgerhq/lumen-ui-rnative';
|
|
65
|
+
|
|
66
|
+
<DotIndicator
|
|
67
|
+
{...getDotIndicatorProps('avatar', 'md')}
|
|
68
|
+
accessibilityLabel="New notifications"
|
|
69
|
+
>
|
|
70
|
+
<Avatar src="https://example.com/photo.jpg" size="md" />
|
|
71
|
+
</DotIndicator>;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
> The notification dot is only supported on the `sm` and `md` sizes.
|
|
66
75
|
|
|
67
|
-
>
|
|
76
|
+
> When the dot conveys state to the user, pass an `accessibilityLabel` to `DotIndicator`.
|
|
68
77
|
|
|
69
78
|
<Canvas of={AvatarStories.NotificationShowcase} />
|
|
70
79
|
|
|
@@ -116,21 +125,23 @@ function MyComponent() {
|
|
|
116
125
|
|
|
117
126
|
### With Notification
|
|
118
127
|
|
|
119
|
-
|
|
128
|
+
Wrap the Avatar in a `DotIndicator` to show a status or alert dot, using `getDotIndicatorProps` to match the dot to the avatar size:
|
|
120
129
|
|
|
121
130
|
```tsx
|
|
122
|
-
import { Avatar } from '@ledgerhq/lumen-ui-rnative';
|
|
131
|
+
import { Avatar, DotIndicator, getDotIndicatorProps } from '@ledgerhq/lumen-ui-rnative';
|
|
123
132
|
|
|
124
133
|
function MyComponent() {
|
|
125
|
-
const hasNotifications = true;
|
|
126
|
-
|
|
127
134
|
return (
|
|
128
|
-
<
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
135
|
+
<DotIndicator
|
|
136
|
+
{...getDotIndicatorProps('avatar', 'md')}
|
|
137
|
+
accessibilityLabel="New notifications"
|
|
138
|
+
>
|
|
139
|
+
<Avatar
|
|
140
|
+
src="https://example.com/photo.jpg"
|
|
141
|
+
size="md"
|
|
142
|
+
alt="User profile"
|
|
143
|
+
/>
|
|
144
|
+
</DotIndicator>
|
|
134
145
|
);
|
|
135
146
|
}
|
|
136
147
|
```
|
|
@@ -159,7 +170,7 @@ function MyComponent() {
|
|
|
159
170
|
Avatars are commonly used as interactive triggers for navigation or actions. Wrap the Avatar in a `Pressable` component:
|
|
160
171
|
|
|
161
172
|
```tsx
|
|
162
|
-
import { Avatar } from '@ledgerhq/lumen-ui-rnative';
|
|
173
|
+
import { Avatar, DotIndicator, getDotIndicatorProps } from '@ledgerhq/lumen-ui-rnative';
|
|
163
174
|
import { Pressable, Linking } from 'react-native';
|
|
164
175
|
|
|
165
176
|
function UserProfile() {
|
|
@@ -177,12 +188,12 @@ function UserProfile() {
|
|
|
177
188
|
backgroundColor: pressed ? 'rgba(0, 0, 0, 0.05)' : 'transparent',
|
|
178
189
|
})}
|
|
179
190
|
>
|
|
180
|
-
<
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
191
|
+
<DotIndicator
|
|
192
|
+
{...getDotIndicatorProps('avatar', 'md')}
|
|
193
|
+
accessibilityLabel="New notifications"
|
|
194
|
+
>
|
|
195
|
+
<Avatar src="https://example.com/photo.jpg" size="md" alt="User menu" />
|
|
196
|
+
</DotIndicator>
|
|
186
197
|
</Pressable>
|
|
187
198
|
);
|
|
188
199
|
}
|
|
@@ -193,6 +204,7 @@ function UserProfile() {
|
|
|
193
204
|
- Use `borderRadius: 9999` to maintain circular touch area
|
|
194
205
|
- Add opacity changes for visual feedback on press
|
|
195
206
|
- Provide appropriate `alt` text for accessibility
|
|
207
|
+
- Pass an `accessibilityLabel` to `DotIndicator` so the notification state is announced by screen readers
|
|
196
208
|
|
|
197
209
|
### Custom Styling
|
|
198
210
|
|
|
@@ -221,7 +233,7 @@ You can also use the `style` prop for escape-hatch styling when needed:
|
|
|
221
233
|
Here's a comprehensive example showing all Avatar features in a user profile context:
|
|
222
234
|
|
|
223
235
|
```tsx
|
|
224
|
-
import { Avatar, Box, Text } from '@ledgerhq/lumen-ui-rnative';
|
|
236
|
+
import { Avatar, Box, Text, DotIndicator, getDotIndicatorProps } from '@ledgerhq/lumen-ui-rnative';
|
|
225
237
|
import { Pressable } from 'react-native';
|
|
226
238
|
import { useState } from 'react';
|
|
227
239
|
|
|
@@ -237,6 +249,14 @@ function UserProfileHeader() {
|
|
|
237
249
|
// Navigate to profile or show menu
|
|
238
250
|
};
|
|
239
251
|
|
|
252
|
+
const avatar = (
|
|
253
|
+
<Avatar
|
|
254
|
+
src={user.avatar}
|
|
255
|
+
size="md"
|
|
256
|
+
alt={`${user.name} profile picture`}
|
|
257
|
+
/>
|
|
258
|
+
);
|
|
259
|
+
|
|
240
260
|
return (
|
|
241
261
|
<Box lx={{ flexDirection: 'row', alignItems: 'center', gap: 's12', padding: 's16' }}>
|
|
242
262
|
<Pressable
|
|
@@ -247,12 +267,16 @@ function UserProfileHeader() {
|
|
|
247
267
|
backgroundColor: pressed ? 'rgba(0, 0, 0, 0.05)' : 'transparent',
|
|
248
268
|
})}
|
|
249
269
|
>
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
270
|
+
{user.hasNotifications ? (
|
|
271
|
+
<DotIndicator
|
|
272
|
+
{...getDotIndicatorProps('avatar', 'md')}
|
|
273
|
+
accessibilityLabel="You have new notifications"
|
|
274
|
+
>
|
|
275
|
+
{avatar}
|
|
276
|
+
</DotIndicator>
|
|
277
|
+
) : (
|
|
278
|
+
avatar
|
|
279
|
+
)}
|
|
256
280
|
</Pressable>
|
|
257
281
|
<Box lx={{ flexDirection: 'column' }}>
|
|
258
282
|
<Text>{user.name}</Text>
|
|
@@ -267,46 +291,6 @@ function UserProfileHeader() {
|
|
|
267
291
|
}
|
|
268
292
|
```
|
|
269
293
|
|
|
270
|
-
## Do's and Don'ts
|
|
271
|
-
|
|
272
|
-
The following guidelines ensure consistent usage of the Avatar component and maintain design system principles.
|
|
273
|
-
|
|
274
|
-
<Box lx={{ flexDirection: 'column', gap: 's24' }}>
|
|
275
|
-
<DoVsDontRow>
|
|
276
|
-
<DoBlockItem
|
|
277
|
-
title='Provide descriptive alt text'
|
|
278
|
-
description='Use meaningful alt text for better accessibility and screen reader support'
|
|
279
|
-
>
|
|
280
|
-
|
|
281
|
-
{/* prettier-ignore */}
|
|
282
|
-
```tsx
|
|
283
|
-
<Avatar
|
|
284
|
-
src="https://example.com/photo.jpg"
|
|
285
|
-
alt="John Doe profile picture"
|
|
286
|
-
size="md"
|
|
287
|
-
/>
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
</DoBlockItem>
|
|
291
|
-
<DontBlockItem
|
|
292
|
-
title="Don't omit alt text"
|
|
293
|
-
description='Missing alt text reduces accessibility for screen reader users'
|
|
294
|
-
>
|
|
295
|
-
|
|
296
|
-
{/* prettier-ignore */}
|
|
297
|
-
```tsx
|
|
298
|
-
<Avatar
|
|
299
|
-
src="https://example.com/photo.jpg"
|
|
300
|
-
size="md"
|
|
301
|
-
/>
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
</DontBlockItem>
|
|
305
|
-
|
|
306
|
-
</DoVsDontRow>
|
|
307
|
-
|
|
308
|
-
<CommonRulesDoAndDont />
|
|
309
|
-
</Box>
|
|
310
294
|
|
|
311
295
|
## Platform Considerations
|
|
312
296
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react-native-web-vite';
|
|
2
2
|
import { View, Text, Pressable, Linking } from 'react-native';
|
|
3
3
|
|
|
4
|
+
import { DotIndicator, getDotIndicatorProps } from '../DotIndicator';
|
|
4
5
|
import { Box } from '../Utility';
|
|
5
6
|
import { Avatar } from './Avatar';
|
|
6
7
|
|
|
@@ -30,13 +31,12 @@ export const Base: Story = {
|
|
|
30
31
|
src: exampleSrc,
|
|
31
32
|
alt: 'avatar',
|
|
32
33
|
size: 'md',
|
|
33
|
-
showNotification: false,
|
|
34
34
|
},
|
|
35
35
|
render: (args) => <Avatar {...args} />,
|
|
36
36
|
parameters: {
|
|
37
37
|
docs: {
|
|
38
38
|
source: {
|
|
39
|
-
code: `<Avatar src="https://example.com" size="md" alt="avatar"
|
|
39
|
+
code: `<Avatar src="https://example.com" size="md" alt="avatar" />`,
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
42
|
},
|
|
@@ -52,39 +52,19 @@ export const SizeShowcase: Story = {
|
|
|
52
52
|
}}
|
|
53
53
|
>
|
|
54
54
|
<View style={{ alignItems: 'center', justifyContent: 'flex-end' }}>
|
|
55
|
-
<Avatar
|
|
56
|
-
src={exampleSrc}
|
|
57
|
-
alt='avatar'
|
|
58
|
-
size='sm'
|
|
59
|
-
showNotification={false}
|
|
60
|
-
/>
|
|
55
|
+
<Avatar src={exampleSrc} alt='avatar' size='sm' />
|
|
61
56
|
<Text style={{ marginTop: 4 }}>sm</Text>
|
|
62
57
|
</View>
|
|
63
58
|
<View style={{ alignItems: 'center', justifyContent: 'flex-end' }}>
|
|
64
|
-
<Avatar
|
|
65
|
-
src={exampleSrc}
|
|
66
|
-
alt='avatar'
|
|
67
|
-
size='md'
|
|
68
|
-
showNotification={false}
|
|
69
|
-
/>
|
|
59
|
+
<Avatar src={exampleSrc} alt='avatar' size='md' />
|
|
70
60
|
<Text style={{ marginTop: 4 }}>md</Text>
|
|
71
61
|
</View>
|
|
72
62
|
<View style={{ alignItems: 'center', justifyContent: 'flex-end' }}>
|
|
73
|
-
<Avatar
|
|
74
|
-
src={exampleSrc}
|
|
75
|
-
alt='avatar'
|
|
76
|
-
size='lg'
|
|
77
|
-
showNotification={false}
|
|
78
|
-
/>
|
|
63
|
+
<Avatar src={exampleSrc} alt='avatar' size='lg' />
|
|
79
64
|
<Text style={{ marginTop: 4 }}>lg</Text>
|
|
80
65
|
</View>
|
|
81
66
|
<View style={{ alignItems: 'center', justifyContent: 'flex-end' }}>
|
|
82
|
-
<Avatar
|
|
83
|
-
src={exampleSrc}
|
|
84
|
-
alt='avatar'
|
|
85
|
-
size='xl'
|
|
86
|
-
showNotification={false}
|
|
87
|
-
/>
|
|
67
|
+
<Avatar src={exampleSrc} alt='avatar' size='xl' />
|
|
88
68
|
<Text style={{ marginTop: 4 }}>xl</Text>
|
|
89
69
|
</View>
|
|
90
70
|
</Box>
|
|
@@ -95,18 +75,8 @@ const AppearanceShowcaseRender = () => {
|
|
|
95
75
|
return (
|
|
96
76
|
<Box lx={{ gap: 's8' }}>
|
|
97
77
|
<Box lx={{ flexDirection: 'row', gap: 's16', padding: 's8' }}>
|
|
98
|
-
<Avatar
|
|
99
|
-
|
|
100
|
-
size='md'
|
|
101
|
-
appearance='gray'
|
|
102
|
-
showNotification={false}
|
|
103
|
-
/>
|
|
104
|
-
<Avatar
|
|
105
|
-
alt='transparent fallback'
|
|
106
|
-
size='md'
|
|
107
|
-
appearance='transparent'
|
|
108
|
-
showNotification={false}
|
|
109
|
-
/>
|
|
78
|
+
<Avatar alt='gray fallback' size='md' appearance='gray' />
|
|
79
|
+
<Avatar alt='transparent fallback' size='md' appearance='transparent' />
|
|
110
80
|
</Box>
|
|
111
81
|
<Box lx={{ flexDirection: 'row', gap: 's16', padding: 's8' }}>
|
|
112
82
|
<Avatar
|
|
@@ -114,14 +84,12 @@ const AppearanceShowcaseRender = () => {
|
|
|
114
84
|
alt='gray with image'
|
|
115
85
|
size='md'
|
|
116
86
|
appearance='gray'
|
|
117
|
-
showNotification={false}
|
|
118
87
|
/>
|
|
119
88
|
<Avatar
|
|
120
89
|
src={exampleSrc}
|
|
121
90
|
alt='transparent with image'
|
|
122
91
|
size='md'
|
|
123
92
|
appearance='transparent'
|
|
124
|
-
showNotification={false}
|
|
125
93
|
/>
|
|
126
94
|
</Box>
|
|
127
95
|
</Box>
|
|
@@ -137,13 +105,12 @@ export const FallbackShowcase: Story = {
|
|
|
137
105
|
src: 'https://brokenLink.random',
|
|
138
106
|
size: 'md',
|
|
139
107
|
alt: 'Fallback example',
|
|
140
|
-
showNotification: false,
|
|
141
108
|
},
|
|
142
109
|
render: (args) => <Avatar {...args} />,
|
|
143
110
|
parameters: {
|
|
144
111
|
docs: {
|
|
145
112
|
source: {
|
|
146
|
-
code: `<Avatar src="https://brokenLink.random" size="md" alt="Fallback example"
|
|
113
|
+
code: `<Avatar src="https://brokenLink.random" size="md" alt="Fallback example" />`,
|
|
147
114
|
},
|
|
148
115
|
},
|
|
149
116
|
},
|
|
@@ -157,13 +124,10 @@ export const NotificationShowcase: Story = {
|
|
|
157
124
|
gap: 's16',
|
|
158
125
|
}}
|
|
159
126
|
>
|
|
160
|
-
<Avatar
|
|
161
|
-
|
|
162
|
-
alt='avatar'
|
|
163
|
-
|
|
164
|
-
showNotification={false}
|
|
165
|
-
/>
|
|
166
|
-
<Avatar src={exampleSrc} alt='avatar' size='md' showNotification={true} />
|
|
127
|
+
<Avatar src={exampleSrc} alt='avatar' size='md' />
|
|
128
|
+
<DotIndicator {...getDotIndicatorProps('avatar', 'md')}>
|
|
129
|
+
<Avatar src={exampleSrc} alt='avatar' size='md' />
|
|
130
|
+
</DotIndicator>
|
|
167
131
|
</Box>
|
|
168
132
|
),
|
|
169
133
|
};
|
|
@@ -181,7 +145,9 @@ export const InteractiveShowcase: Story = {
|
|
|
181
145
|
backgroundColor: pressed ? 'rgba(0, 0, 0, 0.05)' : 'transparent',
|
|
182
146
|
})}
|
|
183
147
|
>
|
|
184
|
-
<
|
|
148
|
+
<DotIndicator {...getDotIndicatorProps('avatar', 'md')}>
|
|
149
|
+
<Avatar src={exampleSrc} size='md' />
|
|
150
|
+
</DotIndicator>
|
|
185
151
|
</Pressable>
|
|
186
152
|
),
|
|
187
153
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from '@jest/globals';
|
|
2
2
|
import { ledgerLiveThemes } from '@ledgerhq/lumen-design-core';
|
|
3
3
|
import { render, waitFor } from '@testing-library/react-native';
|
|
4
|
+
import { DotIndicator, getDotIndicatorProps } from '../DotIndicator';
|
|
4
5
|
import { ThemeProvider } from '../ThemeProvider/ThemeProvider';
|
|
5
6
|
import { Avatar } from './Avatar';
|
|
6
7
|
|
|
@@ -182,10 +183,12 @@ describe('Avatar Component', () => {
|
|
|
182
183
|
});
|
|
183
184
|
});
|
|
184
185
|
|
|
185
|
-
it('should
|
|
186
|
+
it('should render a notification indicator when wrapped in DotIndicator', () => {
|
|
186
187
|
const { getByTestId, toJSON } = render(
|
|
187
188
|
<TestWrapper>
|
|
188
|
-
<
|
|
189
|
+
<DotIndicator {...getDotIndicatorProps('avatar', 'md')}>
|
|
190
|
+
<Avatar testID='avatar-id' size='md' />
|
|
191
|
+
</DotIndicator>
|
|
189
192
|
</TestWrapper>,
|
|
190
193
|
);
|
|
191
194
|
|
|
@@ -196,21 +199,12 @@ describe('Avatar Component', () => {
|
|
|
196
199
|
expect(getByTestId('avatar-id')).toBeTruthy();
|
|
197
200
|
});
|
|
198
201
|
|
|
199
|
-
it('should
|
|
200
|
-
const { toJSON } = render(
|
|
201
|
-
<TestWrapper>
|
|
202
|
-
<Avatar testID='avatar-id' />
|
|
203
|
-
</TestWrapper>,
|
|
204
|
-
);
|
|
205
|
-
|
|
206
|
-
const tree = toJSON();
|
|
207
|
-
expect(tree.props.testID).toBe('avatar-id');
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
it('should apply correct notification indicator size based on avatar size', () => {
|
|
202
|
+
it('should style the notification indicator based on the avatar size', () => {
|
|
211
203
|
const { toJSON, rerender } = render(
|
|
212
204
|
<TestWrapper>
|
|
213
|
-
<
|
|
205
|
+
<DotIndicator {...getDotIndicatorProps('avatar', 'sm')}>
|
|
206
|
+
<Avatar testID='avatar-id' size='sm' />
|
|
207
|
+
</DotIndicator>
|
|
214
208
|
</TestWrapper>,
|
|
215
209
|
);
|
|
216
210
|
|
|
@@ -219,7 +213,9 @@ describe('Avatar Component', () => {
|
|
|
219
213
|
|
|
220
214
|
rerender(
|
|
221
215
|
<TestWrapper>
|
|
222
|
-
<
|
|
216
|
+
<DotIndicator {...getDotIndicatorProps('avatar', 'md')}>
|
|
217
|
+
<Avatar testID='avatar-id' size='md' />
|
|
218
|
+
</DotIndicator>
|
|
223
219
|
</TestWrapper>,
|
|
224
220
|
);
|
|
225
221
|
|
|
@@ -227,22 +223,6 @@ describe('Avatar Component', () => {
|
|
|
227
223
|
expect(dot.props.style.height).toBe(sizes.s12);
|
|
228
224
|
});
|
|
229
225
|
|
|
230
|
-
it.each(['lg', 'xl'] as const)(
|
|
231
|
-
'should not render the notification indicator on size=%s even when showNotification is true',
|
|
232
|
-
(size) => {
|
|
233
|
-
const { toJSON } = render(
|
|
234
|
-
<TestWrapper>
|
|
235
|
-
<Avatar testID='avatar-id' size={size} showNotification />
|
|
236
|
-
</TestWrapper>,
|
|
237
|
-
);
|
|
238
|
-
|
|
239
|
-
const tree = toJSON();
|
|
240
|
-
expect(tree.props.testID).toBe('avatar-id');
|
|
241
|
-
expect(tree.props.accessibilityRole).toBe('image');
|
|
242
|
-
expect(tree.props.accessibilityLabel).toBe('avatar');
|
|
243
|
-
},
|
|
244
|
-
);
|
|
245
|
-
|
|
246
226
|
it('should apply custom styles', () => {
|
|
247
227
|
const customStyle = { borderWidth: 2 };
|
|
248
228
|
const { getByTestId } = render(
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { Image, StyleSheet } from 'react-native';
|
|
3
3
|
import { useCommonTranslation } from '../../../i18n';
|
|
4
4
|
import { useStyleSheet } from '../../../styles';
|
|
5
5
|
import { User } from '../../Symbols';
|
|
6
|
-
import { DotIndicator } from '../DotIndicator';
|
|
7
6
|
import { Box } from '../Utility';
|
|
8
7
|
import type { AvatarProps } from './types';
|
|
9
8
|
|
|
@@ -17,13 +16,6 @@ const fallbackSizes = {
|
|
|
17
16
|
xl: 40,
|
|
18
17
|
} as const;
|
|
19
18
|
|
|
20
|
-
const dotSizeMap: Partial<
|
|
21
|
-
Record<Size, NonNullable<React.ComponentProps<typeof DotIndicator>['size']>>
|
|
22
|
-
> = {
|
|
23
|
-
sm: 'lg',
|
|
24
|
-
md: 'xl',
|
|
25
|
-
};
|
|
26
|
-
|
|
27
19
|
const useStyles = ({
|
|
28
20
|
appearance,
|
|
29
21
|
size,
|
|
@@ -80,9 +72,6 @@ const useStyles = ({
|
|
|
80
72
|
* import { Avatar } from '@ledgerhq/lumen-ui-rnative';
|
|
81
73
|
*
|
|
82
74
|
* <Avatar src="https://example.com/photo.jpg" size="md" />
|
|
83
|
-
*
|
|
84
|
-
* // With notification indicator
|
|
85
|
-
* <Avatar src="https://example.com/photo.jpg" showNotification />
|
|
86
75
|
*/
|
|
87
76
|
export const Avatar = ({
|
|
88
77
|
lx,
|
|
@@ -91,8 +80,6 @@ export const Avatar = ({
|
|
|
91
80
|
alt = 'avatar',
|
|
92
81
|
appearance = 'transparent',
|
|
93
82
|
size = 'md',
|
|
94
|
-
showNotification: showNotificationProp = false,
|
|
95
|
-
testID,
|
|
96
83
|
ref,
|
|
97
84
|
...props
|
|
98
85
|
}: AvatarProps) => {
|
|
@@ -101,15 +88,7 @@ export const Avatar = ({
|
|
|
101
88
|
const shouldFallback = !src || error;
|
|
102
89
|
const styles = useStyles({ appearance, size });
|
|
103
90
|
|
|
104
|
-
const resolvedAlt = alt || t('components.avatar.
|
|
105
|
-
|
|
106
|
-
// dot indicator is not visible on larger sizes, regardless of the `showNotification` prop
|
|
107
|
-
const showNotification =
|
|
108
|
-
showNotificationProp && (size === 'sm' || size === 'md');
|
|
109
|
-
|
|
110
|
-
const accessibilityLabel = showNotification
|
|
111
|
-
? `${resolvedAlt}, ${t('components.avatar.notificationAriaLabel')}`
|
|
112
|
-
: resolvedAlt;
|
|
91
|
+
const resolvedAlt = alt || t('components.avatar.defaultAriaLabel');
|
|
113
92
|
|
|
114
93
|
useEffect(() => {
|
|
115
94
|
setError(false);
|
|
@@ -121,8 +100,7 @@ export const Avatar = ({
|
|
|
121
100
|
lx={lx}
|
|
122
101
|
style={StyleSheet.flatten([styles.root, style])}
|
|
123
102
|
accessibilityRole='image'
|
|
124
|
-
accessibilityLabel={
|
|
125
|
-
testID={showNotification ? undefined : testID}
|
|
103
|
+
accessibilityLabel={resolvedAlt}
|
|
126
104
|
{...props}
|
|
127
105
|
>
|
|
128
106
|
{shouldFallback ? (
|
|
@@ -143,13 +121,5 @@ export const Avatar = ({
|
|
|
143
121
|
</Box>
|
|
144
122
|
);
|
|
145
123
|
|
|
146
|
-
if (showNotification) {
|
|
147
|
-
return (
|
|
148
|
-
<DotIndicator size={dotSizeMap[size]} appearance='red' testID={testID}>
|
|
149
|
-
{avatarContent}
|
|
150
|
-
</DotIndicator>
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
124
|
return avatarContent;
|
|
155
125
|
};
|
|
@@ -23,10 +23,4 @@ export type AvatarProps = {
|
|
|
23
23
|
* @default md
|
|
24
24
|
*/
|
|
25
25
|
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
26
|
-
/**
|
|
27
|
-
* Whether to show the notifications indicator.
|
|
28
|
-
* @optional
|
|
29
|
-
* @default false
|
|
30
|
-
*/
|
|
31
|
-
showNotification?: boolean;
|
|
32
26
|
} & Omit<StyledViewProps, 'children'>;
|