@ledgerhq/lumen-ui-rnative 0.1.48 → 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.mdx +0 -190
- 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.mdx +0 -90
- 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.mdx +0 -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.mdx +0 -5
- 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/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/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/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 +0 -90
- 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 +0 -1
- 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 +0 -5
- 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
|
@@ -2,8 +2,6 @@ import { Meta, Canvas, Controls } from '@storybook/addon-docs/blocks';
|
|
|
2
2
|
import * as AmountInputStories from './AmountInput.stories';
|
|
3
3
|
import { AmountInput } from './AmountInput';
|
|
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
|
|
|
8
6
|
<Meta title='Core/AmountInput' of={AmountInputStories} />
|
|
9
7
|
|
|
@@ -277,194 +275,6 @@ Use the `editable` prop to disable the input:
|
|
|
277
275
|
<AmountInput value='1000' currencyText='USD' editable={false} />
|
|
278
276
|
```
|
|
279
277
|
|
|
280
|
-
## Do's and Don'ts
|
|
281
|
-
|
|
282
|
-
<div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>
|
|
283
|
-
<DoVsDontRow>
|
|
284
|
-
<DoBlockItem
|
|
285
|
-
title='Use integer-only for whole number scenarios'
|
|
286
|
-
description='Disable decimals for quantities, counts, or other whole number inputs'
|
|
287
|
-
>
|
|
288
|
-
|
|
289
|
-
{/* prettier-ignore */}
|
|
290
|
-
```tsx
|
|
291
|
-
import { AmountInput } from '@ledgerhq/lumen-ui-rnative';
|
|
292
|
-
import { useState } from 'react';
|
|
293
|
-
|
|
294
|
-
const [quantity, setQuantity] = useState('');
|
|
295
|
-
|
|
296
|
-
// Use integer-only for whole number scenarios (quantity, age, etc.)
|
|
297
|
-
<AmountInput
|
|
298
|
-
value={quantity}
|
|
299
|
-
onChangeText={setQuantity}
|
|
300
|
-
currencyText='items'
|
|
301
|
-
allowDecimals={false}
|
|
302
|
-
maxIntegerLength={4}
|
|
303
|
-
/>
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
</DoBlockItem>
|
|
307
|
-
<DontBlockItem
|
|
308
|
-
title="Don't allow decimals for count-based inputs"
|
|
309
|
-
description='Items, quantities, and counts should always be whole numbers'
|
|
310
|
-
>
|
|
311
|
-
|
|
312
|
-
{/* prettier-ignore */}
|
|
313
|
-
```tsx
|
|
314
|
-
import { AmountInput } from '@ledgerhq/lumen-ui-rnative';
|
|
315
|
-
import { useState } from 'react';
|
|
316
|
-
|
|
317
|
-
const [quantity, setQuantity] = useState('');
|
|
318
|
-
|
|
319
|
-
<AmountInput
|
|
320
|
-
value={quantity}
|
|
321
|
-
onChangeText={setQuantity}
|
|
322
|
-
currencyText='items'
|
|
323
|
-
allowDecimals={true}
|
|
324
|
-
maxIntegerLength={4}
|
|
325
|
-
/>
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
</DontBlockItem>
|
|
329
|
-
|
|
330
|
-
</DoVsDontRow>
|
|
331
|
-
|
|
332
|
-
<DoVsDontRow>
|
|
333
|
-
<DoBlockItem
|
|
334
|
-
title='Always use controlled input pattern'
|
|
335
|
-
description='AmountInput requires both value and onChangeText props'
|
|
336
|
-
>
|
|
337
|
-
|
|
338
|
-
{/* prettier-ignore */}
|
|
339
|
-
```tsx
|
|
340
|
-
import { AmountInput } from '@ledgerhq/lumen-ui-rnative';
|
|
341
|
-
import { useState } from 'react';
|
|
342
|
-
|
|
343
|
-
const [value, setValue] = useState('');
|
|
344
|
-
|
|
345
|
-
<AmountInput
|
|
346
|
-
value={value}
|
|
347
|
-
onChangeText={setValue}
|
|
348
|
-
currencyText='USD'
|
|
349
|
-
/>
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
</DoBlockItem>
|
|
353
|
-
<DontBlockItem
|
|
354
|
-
title="Don't use uncontrolled pattern"
|
|
355
|
-
description='AmountInput does not support defaultValue - always use controlled pattern'
|
|
356
|
-
>
|
|
357
|
-
|
|
358
|
-
{/* prettier-ignore */}
|
|
359
|
-
```tsx
|
|
360
|
-
import { AmountInput } from '@ledgerhq/lumen-ui-rnative';
|
|
361
|
-
import { useState } from 'react';
|
|
362
|
-
|
|
363
|
-
const [value, setValue] = useState('');
|
|
364
|
-
|
|
365
|
-
<AmountInput
|
|
366
|
-
defaultValue='0.00'
|
|
367
|
-
currencyText='USD'
|
|
368
|
-
/>
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
</DontBlockItem>
|
|
372
|
-
|
|
373
|
-
</DoVsDontRow>
|
|
374
|
-
|
|
375
|
-
<DoVsDontRow>
|
|
376
|
-
<DoBlockItem
|
|
377
|
-
title='Use isInvalid for error states'
|
|
378
|
-
description='Use the isInvalid prop to indicate validation errors'
|
|
379
|
-
>
|
|
380
|
-
|
|
381
|
-
{/* prettier-ignore */}
|
|
382
|
-
```tsx
|
|
383
|
-
import { AmountInput } from '@ledgerhq/lumen-ui-rnative';
|
|
384
|
-
import { useState } from 'react';
|
|
385
|
-
|
|
386
|
-
const [value, setValue] = useState('');
|
|
387
|
-
const [hasError, setHasError] = useState(false);
|
|
388
|
-
|
|
389
|
-
<AmountInput
|
|
390
|
-
value={value}
|
|
391
|
-
onChangeText={setValue}
|
|
392
|
-
currencyText='USD'
|
|
393
|
-
isInvalid={hasError}
|
|
394
|
-
/>
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
</DoBlockItem>
|
|
398
|
-
<DontBlockItem
|
|
399
|
-
title="Don't use custom error props"
|
|
400
|
-
description='Use the isInvalid prop for error styling. AmountInput does not accept ad-hoc validation props.'
|
|
401
|
-
>
|
|
402
|
-
|
|
403
|
-
{/* prettier-ignore */}
|
|
404
|
-
```tsx
|
|
405
|
-
import { AmountInput } from '@ledgerhq/lumen-ui-rnative';
|
|
406
|
-
import { useState } from 'react';
|
|
407
|
-
|
|
408
|
-
const [value, setValue] = useState('');
|
|
409
|
-
const [hasError, setHasError] = useState(false);
|
|
410
|
-
|
|
411
|
-
<AmountInput
|
|
412
|
-
value={value}
|
|
413
|
-
onChangeText={setValue}
|
|
414
|
-
currencyText='USD'
|
|
415
|
-
status={hasError ? 'error' : undefined}
|
|
416
|
-
helperText={hasError ? 'Invalid amount' : undefined}
|
|
417
|
-
/>
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
</DontBlockItem>
|
|
421
|
-
|
|
422
|
-
</DoVsDontRow>
|
|
423
|
-
|
|
424
|
-
<DoVsDontRow>
|
|
425
|
-
<DoBlockItem
|
|
426
|
-
title='Use appropriate length limits'
|
|
427
|
-
description='Set maxIntegerLength and maxDecimalLength based on your use case'
|
|
428
|
-
>
|
|
429
|
-
|
|
430
|
-
{/* prettier-ignore */}
|
|
431
|
-
```tsx
|
|
432
|
-
import { AmountInput } from '@ledgerhq/lumen-ui-rnative';
|
|
433
|
-
|
|
434
|
-
<AmountInput
|
|
435
|
-
value={amount}
|
|
436
|
-
onChangeText={setAmount}
|
|
437
|
-
currencyText='$'
|
|
438
|
-
maxIntegerLength={9}
|
|
439
|
-
maxDecimalLength={2}
|
|
440
|
-
/>
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
</DoBlockItem>
|
|
444
|
-
<DontBlockItem
|
|
445
|
-
title="Don't use overly restrictive or excessive limits"
|
|
446
|
-
description='Length limits should match real-world requirements'
|
|
447
|
-
>
|
|
448
|
-
|
|
449
|
-
{/* prettier-ignore */}
|
|
450
|
-
```tsx
|
|
451
|
-
import { AmountInput } from '@ledgerhq/lumen-ui-rnative';
|
|
452
|
-
|
|
453
|
-
<AmountInput
|
|
454
|
-
value={amount}
|
|
455
|
-
onChangeText={setAmount}
|
|
456
|
-
currencyText='$'
|
|
457
|
-
maxIntegerLength={1}
|
|
458
|
-
maxDecimalLength={25}
|
|
459
|
-
/>
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
</DontBlockItem>
|
|
463
|
-
|
|
464
|
-
</DoVsDontRow>
|
|
465
|
-
|
|
466
|
-
<CommonRulesDoAndDont />
|
|
467
|
-
</div>
|
|
468
278
|
|
|
469
279
|
## Platform Considerations
|
|
470
280
|
|
|
@@ -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(
|