@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
|
@@ -3,7 +3,11 @@ import { useState } from 'react';
|
|
|
3
3
|
import { Coins, Nft, TransferHorizontal } from '../../Symbols';
|
|
4
4
|
import { DotCount } from '../DotCount';
|
|
5
5
|
import { Box } from '../Utility';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
createSegmentedControl,
|
|
8
|
+
SegmentedControl,
|
|
9
|
+
SegmentedControlButton,
|
|
10
|
+
} from './SegmentedControl';
|
|
7
11
|
|
|
8
12
|
const meta = {
|
|
9
13
|
id: 'rnative-segmentedcontrol',
|
|
@@ -171,3 +175,32 @@ export const WithTrailingContent: Story = {
|
|
|
171
175
|
);
|
|
172
176
|
},
|
|
173
177
|
};
|
|
178
|
+
|
|
179
|
+
type View = 'preview' | 'raw' | 'blame';
|
|
180
|
+
const TypedSegmentedControl = createSegmentedControl<View>();
|
|
181
|
+
|
|
182
|
+
export const TypesafeFactory: Story = {
|
|
183
|
+
args: {} as React.ComponentProps<typeof SegmentedControl>,
|
|
184
|
+
render: (args) => {
|
|
185
|
+
const [view, setView] = useState<View>('preview');
|
|
186
|
+
|
|
187
|
+
return (
|
|
188
|
+
<TypedSegmentedControl.SegmentedControl
|
|
189
|
+
{...args}
|
|
190
|
+
selectedValue={view}
|
|
191
|
+
onSelectedChange={setView}
|
|
192
|
+
accessibilityLabel='File view'
|
|
193
|
+
>
|
|
194
|
+
<TypedSegmentedControl.SegmentedControlButton value='preview'>
|
|
195
|
+
Preview
|
|
196
|
+
</TypedSegmentedControl.SegmentedControlButton>
|
|
197
|
+
<TypedSegmentedControl.SegmentedControlButton value='raw'>
|
|
198
|
+
Raw
|
|
199
|
+
</TypedSegmentedControl.SegmentedControlButton>
|
|
200
|
+
<TypedSegmentedControl.SegmentedControlButton value='blame'>
|
|
201
|
+
Blame
|
|
202
|
+
</TypedSegmentedControl.SegmentedControlButton>
|
|
203
|
+
</TypedSegmentedControl.SegmentedControl>
|
|
204
|
+
);
|
|
205
|
+
},
|
|
206
|
+
};
|
|
@@ -3,7 +3,11 @@ import { ledgerLiveThemes } from '@ledgerhq/lumen-design-core';
|
|
|
3
3
|
import { render, fireEvent } from '@testing-library/react-native';
|
|
4
4
|
import { DotCount } from '../DotCount';
|
|
5
5
|
import { ThemeProvider } from '../ThemeProvider/ThemeProvider';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
SegmentedControl,
|
|
8
|
+
SegmentedControlButton,
|
|
9
|
+
createSegmentedControl,
|
|
10
|
+
} from './SegmentedControl';
|
|
7
11
|
|
|
8
12
|
const TestWrapper = ({ children }: { children: React.ReactNode }) => (
|
|
9
13
|
<ThemeProvider themes={ledgerLiveThemes} colorScheme='dark' locale='en'>
|
|
@@ -172,4 +176,31 @@ describe('SegmentedControl', () => {
|
|
|
172
176
|
expect(onSelectedChange).toHaveBeenCalledWith('preview');
|
|
173
177
|
});
|
|
174
178
|
});
|
|
179
|
+
|
|
180
|
+
describe('createSegmentedControl', () => {
|
|
181
|
+
it('returns typed components that render and select like the originals', () => {
|
|
182
|
+
const {
|
|
183
|
+
SegmentedControl: TypedControl,
|
|
184
|
+
SegmentedControlButton: TypedButton,
|
|
185
|
+
} = createSegmentedControl<'send' | 'receive'>();
|
|
186
|
+
const onSelectedChange = jest.fn();
|
|
187
|
+
|
|
188
|
+
const { getByText } = render(
|
|
189
|
+
<TestWrapper>
|
|
190
|
+
<TypedControl
|
|
191
|
+
selectedValue='send'
|
|
192
|
+
onSelectedChange={onSelectedChange}
|
|
193
|
+
accessibilityLabel='Transaction type'
|
|
194
|
+
>
|
|
195
|
+
<TypedButton value='send'>Send</TypedButton>
|
|
196
|
+
<TypedButton value='receive'>Receive</TypedButton>
|
|
197
|
+
</TypedControl>
|
|
198
|
+
</TestWrapper>,
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
fireEvent.press(getByText('Receive'));
|
|
202
|
+
|
|
203
|
+
expect(onSelectedChange).toHaveBeenCalledWith('receive');
|
|
204
|
+
});
|
|
205
|
+
});
|
|
175
206
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useDisabledContext } from '@ledgerhq/lumen-utils-shared';
|
|
2
|
+
import type { ReactElement } from 'react';
|
|
2
3
|
import type { LayoutChangeEvent } from 'react-native';
|
|
3
4
|
import Animated from 'react-native-reanimated';
|
|
4
5
|
import { useStyleSheet } from '../../../styles';
|
|
@@ -11,20 +12,23 @@ import {
|
|
|
11
12
|
import type {
|
|
12
13
|
SegmentedControlButtonProps,
|
|
13
14
|
SegmentedControlProps,
|
|
15
|
+
SegmentedControlValue,
|
|
14
16
|
} from './types';
|
|
15
17
|
import {
|
|
16
18
|
usePillLayout,
|
|
17
19
|
useSegmentedControlSelectedIndex,
|
|
18
20
|
} from './usePillLayout';
|
|
19
21
|
|
|
20
|
-
export function SegmentedControlButton
|
|
22
|
+
export function SegmentedControlButton<
|
|
23
|
+
T extends SegmentedControlValue = SegmentedControlValue,
|
|
24
|
+
>({
|
|
21
25
|
value,
|
|
22
26
|
children,
|
|
23
27
|
icon: Icon,
|
|
24
28
|
trailingContent,
|
|
25
29
|
onPress,
|
|
26
30
|
...props
|
|
27
|
-
}: SegmentedControlButtonProps) {
|
|
31
|
+
}: SegmentedControlButtonProps<T>) {
|
|
28
32
|
const {
|
|
29
33
|
selectedValue,
|
|
30
34
|
onSelectedChange,
|
|
@@ -126,7 +130,9 @@ function useButtonStyles({
|
|
|
126
130
|
return { ...styles, typography, textColor };
|
|
127
131
|
}
|
|
128
132
|
|
|
129
|
-
export function SegmentedControl
|
|
133
|
+
export function SegmentedControl<
|
|
134
|
+
T extends SegmentedControlValue = SegmentedControlValue,
|
|
135
|
+
>({
|
|
130
136
|
selectedValue,
|
|
131
137
|
onSelectedChange,
|
|
132
138
|
accessibilityLabel,
|
|
@@ -135,7 +141,7 @@ export function SegmentedControl({
|
|
|
135
141
|
appearance = 'background',
|
|
136
142
|
tabLayout = 'fixed',
|
|
137
143
|
...props
|
|
138
|
-
}: SegmentedControlProps) {
|
|
144
|
+
}: SegmentedControlProps<T>) {
|
|
139
145
|
const disabled = useDisabledContext({
|
|
140
146
|
consumerName: 'SegmentedControl',
|
|
141
147
|
mergeWith: { disabled: disabledProp },
|
|
@@ -160,7 +166,7 @@ export function SegmentedControl({
|
|
|
160
166
|
<SegmentedControlContextProvider
|
|
161
167
|
value={{
|
|
162
168
|
selectedValue,
|
|
163
|
-
onSelectedChange,
|
|
169
|
+
onSelectedChange: onSelectedChange as (value: string) => void,
|
|
164
170
|
disabled,
|
|
165
171
|
tabLayout,
|
|
166
172
|
registerButtonLayout,
|
|
@@ -220,3 +226,14 @@ function useRootStyles({
|
|
|
220
226
|
[disabled, appearance, tabLayout],
|
|
221
227
|
);
|
|
222
228
|
}
|
|
229
|
+
|
|
230
|
+
export function createSegmentedControl<
|
|
231
|
+
T extends SegmentedControlValue = never,
|
|
232
|
+
>(): {
|
|
233
|
+
SegmentedControl: (props: SegmentedControlProps<T>) => ReactElement;
|
|
234
|
+
SegmentedControlButton: (
|
|
235
|
+
props: SegmentedControlButtonProps<T>,
|
|
236
|
+
) => ReactElement;
|
|
237
|
+
} {
|
|
238
|
+
return { SegmentedControl, SegmentedControlButton };
|
|
239
|
+
}
|
|
@@ -3,15 +3,19 @@ import type { LumenTextStyle, StyledPressableProps } from '../../../styles';
|
|
|
3
3
|
import type { IconSize } from '../Icon';
|
|
4
4
|
import type { BoxProps } from '../Utility';
|
|
5
5
|
|
|
6
|
-
export type
|
|
6
|
+
export type SegmentedControlValue = string;
|
|
7
|
+
|
|
8
|
+
export type SegmentedControlProps<
|
|
9
|
+
T extends SegmentedControlValue = SegmentedControlValue,
|
|
10
|
+
> = {
|
|
7
11
|
/**
|
|
8
12
|
* The value of the currently selected segment (drives the sliding pill).
|
|
9
13
|
*/
|
|
10
|
-
selectedValue:
|
|
14
|
+
selectedValue: T;
|
|
11
15
|
/**
|
|
12
16
|
* Callback when the selected segment value changes.
|
|
13
17
|
*/
|
|
14
|
-
onSelectedChange: (value:
|
|
18
|
+
onSelectedChange: (value: T) => void;
|
|
15
19
|
/**
|
|
16
20
|
* When true, the entire control is disabled (no interaction, selected uses muted styling).
|
|
17
21
|
*/
|
|
@@ -43,11 +47,13 @@ type IconComponent = ComponentType<{
|
|
|
43
47
|
color?: LumenTextStyle['color'];
|
|
44
48
|
}>;
|
|
45
49
|
|
|
46
|
-
export type SegmentedControlButtonProps
|
|
50
|
+
export type SegmentedControlButtonProps<
|
|
51
|
+
T extends SegmentedControlValue = SegmentedControlValue,
|
|
52
|
+
> = {
|
|
47
53
|
/**
|
|
48
54
|
* Value for this segment (must be unique among siblings).
|
|
49
55
|
*/
|
|
50
|
-
value:
|
|
56
|
+
value: T;
|
|
51
57
|
/**
|
|
52
58
|
* Button label (e.g. "Preview", "Raw").
|
|
53
59
|
*/
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import figma from '@figma/code-connect';
|
|
2
|
+
import { Skeleton } from './Skeleton';
|
|
3
|
+
|
|
4
|
+
figma.connect(
|
|
5
|
+
Skeleton,
|
|
6
|
+
'https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7?node-id=8004-10676',
|
|
7
|
+
{
|
|
8
|
+
imports: ["import { Skeleton } from '@ledgerhq/lumen-ui-rnative'"],
|
|
9
|
+
props: {
|
|
10
|
+
component: figma.enum('appearance', {
|
|
11
|
+
'list-item': 'list-item',
|
|
12
|
+
tile: 'tile',
|
|
13
|
+
}),
|
|
14
|
+
},
|
|
15
|
+
example: (props) => <Skeleton component={props.component} />,
|
|
16
|
+
},
|
|
17
|
+
);
|
|
@@ -4,11 +4,7 @@ import { Skeleton } from './Skeleton';
|
|
|
4
4
|
import {
|
|
5
5
|
CustomTabs,
|
|
6
6
|
Tab,
|
|
7
|
-
DoVsDontRow,
|
|
8
|
-
DoBlockItem,
|
|
9
|
-
DontBlockItem,
|
|
10
7
|
} from '../../../../.storybook/components';
|
|
11
|
-
import CommonRulesDoAndDont from '../../../../.storybook/components/DoVsDont/CommonRulesDoAndDont.mdx';
|
|
12
8
|
|
|
13
9
|
<Meta title='Core/Skeleton' of={SkeletonStories} />
|
|
14
10
|
|
|
@@ -128,73 +124,6 @@ import { Box, Skeleton } from '@ledgerhq/lumen-ui-rnative';
|
|
|
128
124
|
</Box>
|
|
129
125
|
```
|
|
130
126
|
|
|
131
|
-
## Do's and Don'ts
|
|
132
|
-
|
|
133
|
-
<div className='flex flex-col gap-24'>
|
|
134
|
-
<DoVsDontRow>
|
|
135
|
-
<DoBlockItem
|
|
136
|
-
title='Use component prop for common patterns'
|
|
137
|
-
description='Use pre-built variants for consistent loading states'
|
|
138
|
-
>
|
|
139
|
-
|
|
140
|
-
{/* prettier-ignore */}
|
|
141
|
-
```tsx
|
|
142
|
-
<Skeleton component='list-item' />
|
|
143
|
-
<Skeleton component='tile' />
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
</DoBlockItem>
|
|
147
|
-
<DontBlockItem
|
|
148
|
-
title="Don't manually recreate common patterns"
|
|
149
|
-
description='Avoid recreating patterns that already exist as component variants'
|
|
150
|
-
>
|
|
151
|
-
|
|
152
|
-
{/* prettier-ignore */}
|
|
153
|
-
```tsx
|
|
154
|
-
import { Box, Skeleton } from '@ledgerhq/lumen-ui-rnative';
|
|
155
|
-
|
|
156
|
-
<Box lx={{ flexDirection: 'row', alignItems: 'center', gap: 's16' }}>
|
|
157
|
-
<Skeleton lx={{ width: 's48', height: 's48', borderRadius: 'full' }} />
|
|
158
|
-
<Box lx={{ flex: 1, flexDirection: 'column', gap: 's8' }}>
|
|
159
|
-
<Skeleton lx={{ height: 's12', width: 's176' }} />
|
|
160
|
-
<Skeleton lx={{ height: 's12', width: 's112' }} />
|
|
161
|
-
</Box>
|
|
162
|
-
</Box>
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
</DontBlockItem>
|
|
166
|
-
|
|
167
|
-
</DoVsDontRow>
|
|
168
|
-
|
|
169
|
-
<DoVsDontRow>
|
|
170
|
-
<DoBlockItem
|
|
171
|
-
title='Use lx prop for sizing'
|
|
172
|
-
description='Use design system size tokens for consistent sizing'
|
|
173
|
-
>
|
|
174
|
-
|
|
175
|
-
{/* prettier-ignore */}
|
|
176
|
-
```tsx
|
|
177
|
-
<Skeleton lx={{ height: 's16', width: 's256' }} />
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
</DoBlockItem>
|
|
181
|
-
<DontBlockItem
|
|
182
|
-
title="Don't use arbitrary style values"
|
|
183
|
-
description='Avoid using the style prop or arbitrary values'
|
|
184
|
-
>
|
|
185
|
-
|
|
186
|
-
{/* prettier-ignore */}
|
|
187
|
-
```tsx
|
|
188
|
-
<Skeleton style={{ height: 16, width: 200 }} />
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
</DontBlockItem>
|
|
192
|
-
|
|
193
|
-
</DoVsDontRow>
|
|
194
|
-
|
|
195
|
-
</div>
|
|
196
|
-
|
|
197
|
-
<CommonRulesDoAndDont />
|
|
198
127
|
|
|
199
128
|
</Tab>
|
|
200
129
|
</CustomTabs>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import figma from '@figma/code-connect';
|
|
2
|
+
import { Spinner } from './Spinner';
|
|
3
|
+
|
|
4
|
+
figma.connect(
|
|
5
|
+
Spinner,
|
|
6
|
+
'https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7?node-id=9023-3681',
|
|
7
|
+
{
|
|
8
|
+
imports: ["import { Spinner } from '@ledgerhq/lumen-ui-rnative'"],
|
|
9
|
+
// @ts-expect-error — placeholder value, replace with a valid IconSize
|
|
10
|
+
example: () => <Spinner size='<insert-size>' />,
|
|
11
|
+
},
|
|
12
|
+
);
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Meta, Canvas, Controls } from '@storybook/addon-docs/blocks';
|
|
2
2
|
import { CustomTabs, Tab } from '../../../../.storybook/components';
|
|
3
3
|
import * as SpinnerStories from './Spinner.stories';
|
|
4
|
-
import { DoVsDontRow, DoBlockItem, DontBlockItem } from '../../../../.storybook/components/DoVsDont';
|
|
5
|
-
import CommonRulesDoAndDont from '../../../../.storybook/components/DoVsDont/CommonRulesDoAndDont.mdx';
|
|
6
4
|
import { Box } from '../Utility/Box';
|
|
7
5
|
import { Text } from '../Utility/Text';
|
|
8
6
|
|
|
@@ -116,104 +114,6 @@ function MyComponent() {
|
|
|
116
114
|
}
|
|
117
115
|
```
|
|
118
116
|
|
|
119
|
-
## Do's and Don'ts
|
|
120
|
-
|
|
121
|
-
<Box lx={{ gap: 's24' }}>
|
|
122
|
-
<DoVsDontRow>
|
|
123
|
-
<DoBlockItem
|
|
124
|
-
title='Match spinner size to context'
|
|
125
|
-
description='Use appropriate spinner sizes based on the context and prominence'
|
|
126
|
-
>
|
|
127
|
-
|
|
128
|
-
{/* prettier-ignore */}
|
|
129
|
-
```tsx
|
|
130
|
-
// Small inline loading
|
|
131
|
-
<Spinner size={12} />
|
|
132
|
-
|
|
133
|
-
// Prominent loading state
|
|
134
|
-
<Spinner size={40} />
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
</DoBlockItem>
|
|
138
|
-
<DontBlockItem
|
|
139
|
-
title="Don't override spinner size"
|
|
140
|
-
description='Avoid using style or additional props to override spinner dimensions'
|
|
141
|
-
>
|
|
142
|
-
|
|
143
|
-
{/* prettier-ignore */}
|
|
144
|
-
```tsx
|
|
145
|
-
// Small inline loading
|
|
146
|
-
<Spinner size={12} style={{ width: 6, height: 6 }} />
|
|
147
|
-
|
|
148
|
-
// Prominent loading state
|
|
149
|
-
<Spinner size={40} width={32} height={32} />
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
</DontBlockItem>
|
|
153
|
-
|
|
154
|
-
</DoVsDontRow>
|
|
155
|
-
|
|
156
|
-
<DoVsDontRow>
|
|
157
|
-
<DoBlockItem
|
|
158
|
-
title='Provide context with descriptive text'
|
|
159
|
-
description='Pair spinners with text to give users context about what is loading'
|
|
160
|
-
>
|
|
161
|
-
|
|
162
|
-
{/* prettier-ignore */}
|
|
163
|
-
```tsx
|
|
164
|
-
<Box lx={{ flexDirection: 'row', alignItems: 'center', gap: 's8' }}>
|
|
165
|
-
<Spinner size={16} />
|
|
166
|
-
<Text>Syncing wallet...</Text>
|
|
167
|
-
</Box>
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
</DoBlockItem>
|
|
171
|
-
<DontBlockItem
|
|
172
|
-
title="Don't show spinners without context"
|
|
173
|
-
description='Avoid showing spinners alone without descriptive text'
|
|
174
|
-
>
|
|
175
|
-
|
|
176
|
-
{/* prettier-ignore */}
|
|
177
|
-
```tsx
|
|
178
|
-
<Box lx={{ flexDirection: 'row', alignItems: 'center', gap: 's8' }}>
|
|
179
|
-
<Spinner size={16} />
|
|
180
|
-
</Box>
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
</DontBlockItem>
|
|
184
|
-
|
|
185
|
-
</DoVsDontRow>
|
|
186
|
-
|
|
187
|
-
<DoVsDontRow>
|
|
188
|
-
<DoBlockItem
|
|
189
|
-
title='Use standard sizes from the design system'
|
|
190
|
-
description='Stick to predefined size values like 12, 16, 20, 24, 40'
|
|
191
|
-
>
|
|
192
|
-
|
|
193
|
-
{/* prettier-ignore */}
|
|
194
|
-
```tsx
|
|
195
|
-
<Spinner size={16} />
|
|
196
|
-
<Spinner size={24} />
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
</DoBlockItem>
|
|
200
|
-
<DontBlockItem
|
|
201
|
-
title="Don't use non-standard sizes"
|
|
202
|
-
description='Avoid arbitrary size values that are not part of the design system'
|
|
203
|
-
>
|
|
204
|
-
|
|
205
|
-
{/* prettier-ignore */}
|
|
206
|
-
```tsx
|
|
207
|
-
<Spinner size={22} />
|
|
208
|
-
<Spinner size={35} />
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
</DontBlockItem>
|
|
212
|
-
|
|
213
|
-
</DoVsDontRow>
|
|
214
|
-
|
|
215
|
-
<CommonRulesDoAndDont />
|
|
216
|
-
</Box>
|
|
217
117
|
|
|
218
118
|
</Tab>
|
|
219
119
|
</CustomTabs>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import figma from '@figma/code-connect';
|
|
2
|
+
import { Placeholder } from '../../Symbols';
|
|
3
|
+
import { Spot } from './Spot';
|
|
4
|
+
import type { SpotAppearance } from './types';
|
|
5
|
+
|
|
6
|
+
figma.connect(
|
|
7
|
+
Spot,
|
|
8
|
+
'https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7?node-id=6786%3A4738',
|
|
9
|
+
{
|
|
10
|
+
imports: [
|
|
11
|
+
"import { Spot } from '@ledgerhq/lumen-ui-rnative'",
|
|
12
|
+
"import { Placeholder } from '@ledgerhq/lumen-ui-rnative/symbols'",
|
|
13
|
+
],
|
|
14
|
+
props: {
|
|
15
|
+
disabled: figma.enum('state', {
|
|
16
|
+
disabled: true,
|
|
17
|
+
}),
|
|
18
|
+
appearance: figma.enum('appearance', {
|
|
19
|
+
'interface-icon': 'icon',
|
|
20
|
+
loader: 'loader',
|
|
21
|
+
number: 'number',
|
|
22
|
+
'info-muted': 'info',
|
|
23
|
+
warning: 'warning',
|
|
24
|
+
error: 'error',
|
|
25
|
+
check: 'check',
|
|
26
|
+
bluetooth: 'bluetooth',
|
|
27
|
+
}),
|
|
28
|
+
icon: figma.enum('appearance', {
|
|
29
|
+
'interface-icon': Placeholder,
|
|
30
|
+
}),
|
|
31
|
+
number: figma.enum('appearance', {
|
|
32
|
+
number: 1,
|
|
33
|
+
}),
|
|
34
|
+
},
|
|
35
|
+
example: (props: {
|
|
36
|
+
disabled: boolean;
|
|
37
|
+
appearance: SpotAppearance;
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
+
icon: any;
|
|
40
|
+
number: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
|
|
41
|
+
}) => (
|
|
42
|
+
<Spot
|
|
43
|
+
appearance={props.appearance}
|
|
44
|
+
icon={props.icon}
|
|
45
|
+
number={props.number}
|
|
46
|
+
disabled={props.disabled}
|
|
47
|
+
/>
|
|
48
|
+
),
|
|
49
|
+
},
|
|
50
|
+
);
|
|
@@ -3,8 +3,6 @@ import * as SpotStories from './Spot.stories';
|
|
|
3
3
|
import { Spot } from './Spot';
|
|
4
4
|
import { Box } from '../Utility';
|
|
5
5
|
import { CustomTabs, Tab } from '../../../../.storybook/components';
|
|
6
|
-
import { DoVsDontRow, DoBlockItem, DontBlockItem } from '../../../../.storybook/components/DoVsDont';
|
|
7
|
-
import CommonRulesDoAndDont from '../../../../.storybook/components/DoVsDont/CommonRulesDoAndDont.mdx';
|
|
8
6
|
|
|
9
7
|
<Meta title='Core/Spot' of={SpotStories} />
|
|
10
8
|
|
|
@@ -171,98 +169,6 @@ function StatusIndicators() {
|
|
|
171
169
|
}
|
|
172
170
|
```
|
|
173
171
|
|
|
174
|
-
## Do's and Don'ts
|
|
175
|
-
|
|
176
|
-
<Box lx={{ flexDirection: 'column', gap: 's24' }}>
|
|
177
|
-
<DoVsDontRow>
|
|
178
|
-
<DoBlockItem
|
|
179
|
-
title='Use required props for discriminated types'
|
|
180
|
-
description='Icon appearance requires icon prop, number appearance requires number prop'
|
|
181
|
-
>
|
|
182
|
-
|
|
183
|
-
{/* prettier-ignore */}
|
|
184
|
-
```tsx
|
|
185
|
-
import { Settings } from '@ledgerhq/lumen-ui-rnative/symbols';
|
|
186
|
-
|
|
187
|
-
<Spot appearance='icon' icon={Settings} />
|
|
188
|
-
<Spot appearance='number' number={5} />
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
</DoBlockItem>
|
|
192
|
-
<DontBlockItem
|
|
193
|
-
title="Don't omit required props"
|
|
194
|
-
description='Discriminated union types require their specific props'
|
|
195
|
-
>
|
|
196
|
-
|
|
197
|
-
{/* prettier-ignore */}
|
|
198
|
-
```tsx
|
|
199
|
-
import { Settings } from '@ledgerhq/lumen-ui-rnative/symbols';
|
|
200
|
-
|
|
201
|
-
<Spot appearance='icon' /> // Missing required 'icon' prop
|
|
202
|
-
<Spot appearance='number' /> // Missing required 'number' prop
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
</DontBlockItem>
|
|
206
|
-
|
|
207
|
-
</DoVsDontRow>
|
|
208
|
-
|
|
209
|
-
<DoVsDontRow>
|
|
210
|
-
<DoBlockItem
|
|
211
|
-
title='Use valid number values'
|
|
212
|
-
description='Number appearance only accepts values from 0 to 9'
|
|
213
|
-
>
|
|
214
|
-
|
|
215
|
-
{/* prettier-ignore */}
|
|
216
|
-
```tsx
|
|
217
|
-
<Spot appearance='number' number={5} />
|
|
218
|
-
<Spot appearance='number' number={0} />
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
</DoBlockItem>
|
|
222
|
-
<DontBlockItem
|
|
223
|
-
title="Don't pass invalid number values"
|
|
224
|
-
description='Only values 0-9 are allowed for number appearance'
|
|
225
|
-
>
|
|
226
|
-
|
|
227
|
-
{/* prettier-ignore */}
|
|
228
|
-
```tsx
|
|
229
|
-
<Spot appearance='number' number={10} />
|
|
230
|
-
<Spot appearance='number' number={-1} />
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
</DontBlockItem>
|
|
234
|
-
|
|
235
|
-
</DoVsDontRow>
|
|
236
|
-
|
|
237
|
-
<DoVsDontRow>
|
|
238
|
-
<DoBlockItem
|
|
239
|
-
title='Use Spot for status indication only'
|
|
240
|
-
description='Spots are designed to display status, not to be interactive elements'
|
|
241
|
-
>
|
|
242
|
-
|
|
243
|
-
{/* prettier-ignore */}
|
|
244
|
-
```tsx
|
|
245
|
-
<Spot appearance='check' />
|
|
246
|
-
<Spot appearance='error' />
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
</DoBlockItem>
|
|
250
|
-
<DontBlockItem
|
|
251
|
-
title="Don't make spots interactive"
|
|
252
|
-
description='Avoid adding press handlers or making spots clickable'
|
|
253
|
-
>
|
|
254
|
-
|
|
255
|
-
{/* prettier-ignore */}
|
|
256
|
-
```tsx
|
|
257
|
-
<Spot appearance='check' onPress={handlePress} />
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
</DontBlockItem>
|
|
261
|
-
|
|
262
|
-
</DoVsDontRow>
|
|
263
|
-
|
|
264
|
-
<CommonRulesDoAndDont />
|
|
265
|
-
</Box>
|
|
266
172
|
|
|
267
173
|
</Tab>
|
|
268
174
|
</CustomTabs>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import figma from '@figma/code-connect';
|
|
2
|
+
import { Stepper } from './Stepper';
|
|
3
|
+
|
|
4
|
+
figma.connect(
|
|
5
|
+
Stepper,
|
|
6
|
+
'https://www.figma.com/design/JxaLVMTWirCpU0rsbZ30k7/2.-Components-Library?node-id=11439-7755',
|
|
7
|
+
{
|
|
8
|
+
imports: ["import { Stepper } from '@ledgerhq/lumen-ui-rnative'"],
|
|
9
|
+
example: () => <Stepper currentStep={2} totalSteps={4} />,
|
|
10
|
+
},
|
|
11
|
+
);
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Meta, Canvas, Controls } from '@storybook/addon-docs/blocks';
|
|
2
2
|
import { CustomTabs, Tab } from '../../../../.storybook/components';
|
|
3
3
|
import * as StepperStories from './Stepper.stories';
|
|
4
|
-
import { DoVsDontRow, DoBlockItem, DontBlockItem } from '../../../../.storybook/components/DoVsDont';
|
|
5
|
-
import CommonRulesDoAndDont from '../../../../.storybook/components/DoVsDont/CommonRulesDoAndDont.mdx';
|
|
6
4
|
import { Box } from '../Utility/Box';
|
|
7
5
|
import { Text } from '../Utility/Text';
|
|
8
6
|
|
|
@@ -143,71 +141,6 @@ function LocalizedStepper() {
|
|
|
143
141
|
}
|
|
144
142
|
```
|
|
145
143
|
|
|
146
|
-
## Do's and Don'ts
|
|
147
|
-
|
|
148
|
-
<Box lx={{ gap: 's24' }}>
|
|
149
|
-
<DoVsDontRow>
|
|
150
|
-
<DoBlockItem
|
|
151
|
-
title='Provide meaningful step counts'
|
|
152
|
-
description='Use realistic total steps that match your flow'
|
|
153
|
-
>
|
|
154
|
-
|
|
155
|
-
{/* prettier-ignore */}
|
|
156
|
-
```tsx
|
|
157
|
-
<Stepper currentStep={3} totalSteps={5} />
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
</DoBlockItem>
|
|
161
|
-
<DontBlockItem
|
|
162
|
-
title="Don't use for single-step processes"
|
|
163
|
-
description='Steppers are for multi-step workflows only'
|
|
164
|
-
>
|
|
165
|
-
|
|
166
|
-
{/* prettier-ignore */}
|
|
167
|
-
```tsx
|
|
168
|
-
<Stepper currentStep={1} totalSteps={1} />
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
</DontBlockItem>
|
|
172
|
-
|
|
173
|
-
</DoVsDontRow>
|
|
174
|
-
|
|
175
|
-
<DoVsDontRow>
|
|
176
|
-
<DoBlockItem
|
|
177
|
-
title='Use disabled for paused steppers'
|
|
178
|
-
description='Reserve disabled for steppers that are not actively progressing'
|
|
179
|
-
>
|
|
180
|
-
|
|
181
|
-
{/* prettier-ignore */}
|
|
182
|
-
```tsx
|
|
183
|
-
<Stepper
|
|
184
|
-
currentStep={2}
|
|
185
|
-
totalSteps={4}
|
|
186
|
-
disabled
|
|
187
|
-
/>
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
</DoBlockItem>
|
|
191
|
-
<DontBlockItem
|
|
192
|
-
title="Don't disable active steps"
|
|
193
|
-
description='Active steps in progress should not be disabled'
|
|
194
|
-
>
|
|
195
|
-
|
|
196
|
-
{/* prettier-ignore */}
|
|
197
|
-
```tsx
|
|
198
|
-
<Stepper
|
|
199
|
-
currentStep={2}
|
|
200
|
-
totalSteps={4}
|
|
201
|
-
disabled // Wrong for active step
|
|
202
|
-
/>
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
</DontBlockItem>
|
|
206
|
-
|
|
207
|
-
</DoVsDontRow>
|
|
208
|
-
|
|
209
|
-
<CommonRulesDoAndDont />
|
|
210
|
-
</Box>
|
|
211
144
|
|
|
212
145
|
</Tab>
|
|
213
146
|
</CustomTabs>
|