@unif/react-native-design 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- package/lib/module/components/business/AvatarWithRing/AvatarWithRing.js +6 -4
- package/lib/module/components/business/AvatarWithRing/AvatarWithRing.js.map +1 -1
- package/lib/module/components/business/AvatarWithRing/styles.js +15 -3
- package/lib/module/components/business/AvatarWithRing/styles.js.map +1 -1
- package/lib/module/components/business/Decorations/GradientWash.js +50 -36
- package/lib/module/components/business/Decorations/GradientWash.js.map +1 -1
- package/lib/module/components/business/Decorations/RadialHalo.js +10 -4
- package/lib/module/components/business/Decorations/RadialHalo.js.map +1 -1
- package/lib/module/components/business/Decorations/ScreenBackdrop.js +22 -14
- package/lib/module/components/business/Decorations/ScreenBackdrop.js.map +1 -1
- package/lib/module/components/business/Decorations/index.js +3 -0
- package/lib/module/components/business/Decorations/index.js.map +1 -1
- package/lib/module/components/business/GlassStats/GlassStats.js +7 -4
- package/lib/module/components/business/GlassStats/GlassStats.js.map +1 -1
- package/lib/module/components/business/GlassStats/types.js +2 -0
- package/lib/module/components/business/VersionPill/VersionPill.js +23 -5
- package/lib/module/components/business/VersionPill/VersionPill.js.map +1 -1
- package/lib/module/components/business/VersionPill/styles.js +1 -1
- package/lib/module/components/business/index.js.map +1 -1
- package/lib/module/components/business/useSvgId.js +20 -0
- package/lib/module/components/business/useSvgId.js.map +1 -0
- package/lib/module/components/ui/Avatar/Avatar.js +13 -8
- package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/ui/Avatar/styles.js +7 -7
- package/lib/module/components/ui/Avatar/styles.js.map +1 -1
- package/lib/module/components/ui/BlurLayer/BlurLayer.js +5 -1
- package/lib/module/components/ui/BlurLayer/BlurLayer.js.map +1 -1
- package/lib/module/components/ui/BlurLayer/BlurLayer.web.js +7 -1
- package/lib/module/components/ui/BlurLayer/BlurLayer.web.js.map +1 -1
- package/lib/module/components/ui/Button/Button.js +2 -1
- package/lib/module/components/ui/Button/Button.js.map +1 -1
- package/lib/module/components/ui/Button/ButtonBase.js +36 -2
- package/lib/module/components/ui/Button/ButtonBase.js.map +1 -1
- package/lib/module/components/ui/Button/styles.js +27 -25
- package/lib/module/components/ui/Button/styles.js.map +1 -1
- package/lib/module/components/ui/Card/Card.js +17 -8
- package/lib/module/components/ui/Card/Card.js.map +1 -1
- package/lib/module/components/ui/Card/styles.js +6 -1
- package/lib/module/components/ui/Card/styles.js.map +1 -1
- package/lib/module/components/ui/Carousel/Carousel.js +36 -6
- package/lib/module/components/ui/Carousel/Carousel.js.map +1 -1
- package/lib/module/components/ui/Cell/Cell.js +23 -5
- package/lib/module/components/ui/Cell/Cell.js.map +1 -1
- package/lib/module/components/ui/Cell/Leading.js +2 -2
- package/lib/module/components/ui/Cell/Leading.js.map +1 -1
- package/lib/module/components/ui/Cell/List.js +10 -5
- package/lib/module/components/ui/Cell/List.js.map +1 -1
- package/lib/module/components/ui/Cell/styles.js +7 -6
- package/lib/module/components/ui/Cell/styles.js.map +1 -1
- package/lib/module/components/ui/Checkbox/Checkbox.js +10 -8
- package/lib/module/components/ui/Checkbox/Checkbox.js.map +1 -1
- package/lib/module/components/ui/Checkbox/styles.js +9 -1
- package/lib/module/components/ui/Checkbox/styles.js.map +1 -1
- package/lib/module/components/ui/Chip/Chip.js +19 -5
- package/lib/module/components/ui/Chip/Chip.js.map +1 -1
- package/lib/module/components/ui/Confirm/ConfirmHost.js +28 -11
- package/lib/module/components/ui/Confirm/ConfirmHost.js.map +1 -1
- package/lib/module/components/ui/Confirm/confirm.js +6 -0
- package/lib/module/components/ui/Confirm/confirm.js.map +1 -1
- package/lib/module/components/ui/DrawerHeader/DrawerHeader.js +14 -9
- package/lib/module/components/ui/DrawerHeader/DrawerHeader.js.map +1 -1
- package/lib/module/components/ui/DrawerHeader/styles.js +10 -6
- package/lib/module/components/ui/DrawerHeader/styles.js.map +1 -1
- package/lib/module/components/ui/Empty/Empty.js +5 -4
- package/lib/module/components/ui/Empty/Empty.js.map +1 -1
- package/lib/module/components/ui/EntryCard/EntryCard.js +5 -3
- package/lib/module/components/ui/EntryCard/EntryCard.js.map +1 -1
- package/lib/module/components/ui/EntryCard/styles.js +4 -4
- package/lib/module/components/ui/EntryCard/styles.js.map +1 -1
- package/lib/module/components/ui/Form/FormRow.js +1 -0
- package/lib/module/components/ui/Form/FormRow.js.map +1 -1
- package/lib/module/components/ui/Form/styles.js +3 -1
- package/lib/module/components/ui/Form/styles.js.map +1 -1
- package/lib/module/components/ui/Grid/Grid.js +39 -24
- package/lib/module/components/ui/Grid/Grid.js.map +1 -1
- package/lib/module/components/ui/Grid/styles.js +35 -46
- package/lib/module/components/ui/Grid/styles.js.map +1 -1
- package/lib/module/components/ui/Icon/Icon.js +46 -29
- package/lib/module/components/ui/Icon/Icon.js.map +1 -1
- package/lib/module/components/ui/IconButton/IconButton.js +2 -0
- package/lib/module/components/ui/IconButton/IconButton.js.map +1 -1
- package/lib/module/components/ui/Logo/Logo.js +2 -1
- package/lib/module/components/ui/Logo/Logo.js.map +1 -1
- package/lib/module/components/ui/NavBar/NavBar.js +15 -3
- package/lib/module/components/ui/NavBar/NavBar.js.map +1 -1
- package/lib/module/components/ui/PasswordInput/PasswordInput.js +43 -14
- package/lib/module/components/ui/PasswordInput/PasswordInput.js.map +1 -1
- package/lib/module/components/ui/PasswordInput/styles.js +1 -1
- package/lib/module/components/ui/Pulse/Pulse.js +2 -1
- package/lib/module/components/ui/Pulse/Pulse.js.map +1 -1
- package/lib/module/components/ui/Pulse/PulseDot.js +8 -10
- package/lib/module/components/ui/Pulse/PulseDot.js.map +1 -1
- package/lib/module/components/ui/Pulse/types.js +2 -0
- package/lib/module/components/ui/Pulse/usePulse.web.js +51 -30
- package/lib/module/components/ui/Pulse/usePulse.web.js.map +1 -1
- package/lib/module/components/ui/Radio/Radio.js +19 -5
- package/lib/module/components/ui/Radio/Radio.js.map +1 -1
- package/lib/module/components/ui/Radio/RadioGroup.js +10 -6
- package/lib/module/components/ui/Radio/RadioGroup.js.map +1 -1
- package/lib/module/components/ui/Radio/styles.js +10 -3
- package/lib/module/components/ui/Radio/styles.js.map +1 -1
- package/lib/module/components/ui/Reveal/Reveal.web.js +18 -3
- package/lib/module/components/ui/Reveal/Reveal.web.js.map +1 -1
- package/lib/module/components/ui/Search/Search.js +26 -10
- package/lib/module/components/ui/Search/Search.js.map +1 -1
- package/lib/module/components/ui/Segmented/Segmented.js +40 -30
- package/lib/module/components/ui/Segmented/Segmented.js.map +1 -1
- package/lib/module/components/ui/Segmented/styles.js +4 -2
- package/lib/module/components/ui/Segmented/styles.js.map +1 -1
- package/lib/module/components/ui/Skeleton/Skeleton.js +9 -8
- package/lib/module/components/ui/Skeleton/Skeleton.js.map +1 -1
- package/lib/module/components/ui/Spinner/Spinner.js +15 -16
- package/lib/module/components/ui/Spinner/Spinner.js.map +1 -1
- package/lib/module/components/ui/Spinner/Spinner.web.js +10 -14
- package/lib/module/components/ui/Spinner/Spinner.web.js.map +1 -1
- package/lib/module/components/ui/Spinner/shared.js +31 -0
- package/lib/module/components/ui/Spinner/shared.js.map +1 -0
- package/lib/module/components/ui/StatusDot/StatusDot.js +21 -4
- package/lib/module/components/ui/StatusDot/StatusDot.js.map +1 -1
- package/lib/module/components/ui/StatusDot/styles.js +1 -1
- package/lib/module/components/ui/StatusDot/types.js +2 -0
- package/lib/module/components/ui/Stepper/Stepper.js +46 -10
- package/lib/module/components/ui/Stepper/Stepper.js.map +1 -1
- package/lib/module/components/ui/Switch/Switch.js +6 -11
- package/lib/module/components/ui/Switch/Switch.js.map +1 -1
- package/lib/module/components/ui/Switch/Switch.web.js +2 -8
- package/lib/module/components/ui/Switch/Switch.web.js.map +1 -1
- package/lib/module/components/ui/Switch/styles.js +12 -3
- package/lib/module/components/ui/Switch/styles.js.map +1 -1
- package/lib/module/components/ui/TabBar/TabBar.js +10 -6
- package/lib/module/components/ui/TabBar/TabBar.js.map +1 -1
- package/lib/module/components/ui/TabBar/styles.js +28 -39
- package/lib/module/components/ui/TabBar/styles.js.map +1 -1
- package/lib/module/components/ui/Tabs/Tabs.js +19 -5
- package/lib/module/components/ui/Tabs/Tabs.js.map +1 -1
- package/lib/module/components/ui/Tabs/styles.js +6 -2
- package/lib/module/components/ui/Tabs/styles.js.map +1 -1
- package/lib/module/components/ui/Tabs/types.js +2 -0
- package/lib/module/components/ui/Tag/styles.js +15 -14
- package/lib/module/components/ui/Tag/styles.js.map +1 -1
- package/lib/module/components/ui/TextField/TextFieldBase.js +24 -6
- package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
- package/lib/module/components/ui/Thumbnail/Thumbnail.js +11 -3
- package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
- package/lib/module/components/ui/Thumbnail/styles.js +6 -2
- package/lib/module/components/ui/Thumbnail/styles.js.map +1 -1
- package/lib/module/components/ui/Toast/ToastHost.js +16 -5
- package/lib/module/components/ui/Toast/ToastHost.js.map +1 -1
- package/lib/module/components/ui/Toast/ToastHost.web.js +21 -4
- package/lib/module/components/ui/Toast/ToastHost.web.js.map +1 -1
- package/lib/module/components/ui/Toast/styles.js +2 -0
- package/lib/module/components/ui/Toast/styles.js.map +1 -1
- package/lib/module/components/ui/Toast/toast.js +23 -3
- package/lib/module/components/ui/Toast/toast.js.map +1 -1
- package/lib/module/components/ui/shared/badgeStyles.js +31 -0
- package/lib/module/components/ui/shared/badgeStyles.js.map +1 -0
- package/lib/module/icons/data.js +43 -18
- package/lib/module/icons/data.js.map +1 -1
- package/lib/module/theme/colors.js +28 -10
- package/lib/module/theme/colors.js.map +1 -1
- package/lib/module/theme/index.js +6 -2
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/scale.js +9 -1
- package/lib/module/theme/scale.js.map +1 -1
- package/lib/module/theme/shadow.js +24 -41
- package/lib/module/theme/shadow.js.map +1 -1
- package/lib/module/theme/tokens.js +10 -5
- package/lib/module/theme/tokens.js.map +1 -1
- package/lib/module/theme/usePrefersReducedMotion.js +12 -0
- package/lib/module/theme/usePrefersReducedMotion.js.map +1 -0
- package/lib/module/theme/usePrefersReducedMotion.web.js +25 -0
- package/lib/module/theme/usePrefersReducedMotion.web.js.map +1 -0
- package/lib/module/theme/useTheme.js +13 -0
- package/lib/module/theme/useTheme.js.map +1 -1
- package/lib/module/utils/logger/logger.js +5 -1
- package/lib/module/utils/logger/logger.js.map +1 -1
- package/lib/module/utils/testID/testID.js +6 -3
- package/lib/module/utils/testID/testID.js.map +1 -1
- package/lib/typescript/src/components/business/AvatarWithRing/AvatarWithRing.d.ts +1 -1
- package/lib/typescript/src/components/business/AvatarWithRing/AvatarWithRing.d.ts.map +1 -1
- package/lib/typescript/src/components/business/AvatarWithRing/styles.d.ts +5 -5
- package/lib/typescript/src/components/business/AvatarWithRing/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/business/AvatarWithRing/types.d.ts +3 -1
- package/lib/typescript/src/components/business/AvatarWithRing/types.d.ts.map +1 -1
- package/lib/typescript/src/components/business/Decorations/GradientWash.d.ts +25 -0
- package/lib/typescript/src/components/business/Decorations/GradientWash.d.ts.map +1 -1
- package/lib/typescript/src/components/business/Decorations/RadialHalo.d.ts.map +1 -1
- package/lib/typescript/src/components/business/Decorations/ScreenBackdrop.d.ts +1 -1
- package/lib/typescript/src/components/business/Decorations/ScreenBackdrop.d.ts.map +1 -1
- package/lib/typescript/src/components/business/Decorations/index.d.ts +1 -1
- package/lib/typescript/src/components/business/Decorations/index.d.ts.map +1 -1
- package/lib/typescript/src/components/business/Decorations/types.d.ts +2 -0
- package/lib/typescript/src/components/business/Decorations/types.d.ts.map +1 -1
- package/lib/typescript/src/components/business/GlassStats/GlassStats.d.ts +1 -1
- package/lib/typescript/src/components/business/GlassStats/GlassStats.d.ts.map +1 -1
- package/lib/typescript/src/components/business/GlassStats/styles.d.ts +2 -2
- package/lib/typescript/src/components/business/GlassStats/types.d.ts +5 -0
- package/lib/typescript/src/components/business/GlassStats/types.d.ts.map +1 -1
- package/lib/typescript/src/components/business/VersionPill/VersionPill.d.ts +1 -1
- package/lib/typescript/src/components/business/VersionPill/VersionPill.d.ts.map +1 -1
- package/lib/typescript/src/components/business/VersionPill/styles.d.ts +1 -1
- package/lib/typescript/src/components/business/VersionPill/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/business/VersionPill/types.d.ts +13 -1
- package/lib/typescript/src/components/business/VersionPill/types.d.ts.map +1 -1
- package/lib/typescript/src/components/business/index.d.ts +1 -1
- package/lib/typescript/src/components/business/index.d.ts.map +1 -1
- package/lib/typescript/src/components/business/useSvgId.d.ts +12 -0
- package/lib/typescript/src/components/business/useSvgId.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts +1 -1
- package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Avatar/styles.d.ts +1 -1
- package/lib/typescript/src/components/ui/Avatar/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Avatar/types.d.ts +3 -1
- package/lib/typescript/src/components/ui/Avatar/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.d.ts +1 -1
- package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.web.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Button/Button.d.ts +1 -1
- package/lib/typescript/src/components/ui/Button/Button.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Button/ButtonBase.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Button/styles.d.ts +2 -1
- package/lib/typescript/src/components/ui/Button/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Button/types.d.ts +1 -1
- package/lib/typescript/src/components/ui/Button/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Card/Card.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Card/styles.d.ts +2 -0
- package/lib/typescript/src/components/ui/Card/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Card/types.d.ts +4 -4
- package/lib/typescript/src/components/ui/Card/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Carousel/Carousel.d.ts +4 -11
- package/lib/typescript/src/components/ui/Carousel/Carousel.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Carousel/index.d.ts +1 -1
- package/lib/typescript/src/components/ui/Carousel/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Carousel/types.d.ts +4 -0
- package/lib/typescript/src/components/ui/Carousel/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Cell/Cell.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Cell/List.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Cell/styles.d.ts +1 -1
- package/lib/typescript/src/components/ui/Cell/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Cell/types.d.ts +5 -2
- package/lib/typescript/src/components/ui/Cell/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Checkbox/Checkbox.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Checkbox/styles.d.ts +6 -0
- package/lib/typescript/src/components/ui/Checkbox/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Chip/Chip.d.ts +4 -3
- package/lib/typescript/src/components/ui/Chip/Chip.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Chip/types.d.ts +2 -0
- package/lib/typescript/src/components/ui/Chip/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/ConfirmHost.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/confirm.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/types.d.ts +4 -2
- package/lib/typescript/src/components/ui/Confirm/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/DrawerHeader/DrawerHeader.d.ts +1 -1
- package/lib/typescript/src/components/ui/DrawerHeader/DrawerHeader.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/DrawerHeader/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/DrawerHeader/types.d.ts +3 -1
- package/lib/typescript/src/components/ui/DrawerHeader/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Empty/Empty.d.ts +2 -2
- package/lib/typescript/src/components/ui/Empty/Empty.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Empty/types.d.ts +3 -0
- package/lib/typescript/src/components/ui/Empty/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/EntryCard/EntryCard.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/EntryCard/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/EntryCard/types.d.ts +2 -2
- package/lib/typescript/src/components/ui/EntryCard/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Form/FormRow.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Form/styles.d.ts +1 -0
- package/lib/typescript/src/components/ui/Form/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Form/types.d.ts +7 -2
- package/lib/typescript/src/components/ui/Form/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Grid/Grid.d.ts +1 -1
- package/lib/typescript/src/components/ui/Grid/Grid.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Grid/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Grid/types.d.ts +4 -1
- package/lib/typescript/src/components/ui/Grid/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Icon/Icon.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/IconButton/IconButton.d.ts +1 -1
- package/lib/typescript/src/components/ui/IconButton/IconButton.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/IconButton/types.d.ts +7 -2
- package/lib/typescript/src/components/ui/IconButton/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Input/Input.d.ts +16 -16
- package/lib/typescript/src/components/ui/Input/types.d.ts +3 -2
- package/lib/typescript/src/components/ui/Input/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Logo/Logo.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/NavBar/NavBar.d.ts +8 -1
- package/lib/typescript/src/components/ui/NavBar/NavBar.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/NavBar/types.d.ts +5 -1
- package/lib/typescript/src/components/ui/NavBar/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/PasswordInput/PasswordInput.d.ts +13 -5
- package/lib/typescript/src/components/ui/PasswordInput/PasswordInput.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/PasswordInput/styles.d.ts +1 -1
- package/lib/typescript/src/components/ui/PasswordInput/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/PasswordInput/types.d.ts +7 -2
- package/lib/typescript/src/components/ui/PasswordInput/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Pulse/Pulse.d.ts +1 -1
- package/lib/typescript/src/components/ui/Pulse/Pulse.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts +1 -1
- package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Pulse/types.d.ts +5 -0
- package/lib/typescript/src/components/ui/Pulse/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Pulse/usePulse.web.d.ts +12 -8
- package/lib/typescript/src/components/ui/Pulse/usePulse.web.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Radio/Radio.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Radio/RadioGroup.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Radio/styles.d.ts +4 -2
- package/lib/typescript/src/components/ui/Radio/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts +9 -0
- package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Search/Search.d.ts +16 -15
- package/lib/typescript/src/components/ui/Search/Search.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Search/types.d.ts +3 -1
- package/lib/typescript/src/components/ui/Search/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Segmented/Segmented.d.ts +1 -1
- package/lib/typescript/src/components/ui/Segmented/Segmented.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Segmented/styles.d.ts +1 -1
- package/lib/typescript/src/components/ui/Segmented/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Segmented/types.d.ts +2 -0
- package/lib/typescript/src/components/ui/Segmented/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts +3 -2
- package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Spinner/Spinner.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Spinner/Spinner.web.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Spinner/shared.d.ts +5 -0
- package/lib/typescript/src/components/ui/Spinner/shared.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/StatusDot/StatusDot.d.ts +1 -5
- package/lib/typescript/src/components/ui/StatusDot/StatusDot.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/StatusDot/styles.d.ts +1 -1
- package/lib/typescript/src/components/ui/StatusDot/types.d.ts +13 -1
- package/lib/typescript/src/components/ui/StatusDot/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Stepper/Stepper.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Switch/Switch.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Switch/Switch.web.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Switch/styles.d.ts +7 -1
- package/lib/typescript/src/components/ui/Switch/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TabBar/TabBar.d.ts +2 -2
- package/lib/typescript/src/components/ui/TabBar/TabBar.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TabBar/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TabBar/types.d.ts +3 -0
- package/lib/typescript/src/components/ui/TabBar/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Tabs/Tabs.d.ts +1 -1
- package/lib/typescript/src/components/ui/Tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Tabs/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Tabs/types.d.ts +9 -1
- package/lib/typescript/src/components/ui/Tabs/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Tag/styles.d.ts +2 -1
- package/lib/typescript/src/components/ui/Tag/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Tag/types.d.ts +6 -2
- package/lib/typescript/src/components/ui/Tag/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts +16 -16
- package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts +16 -16
- package/lib/typescript/src/components/ui/Textarea/types.d.ts +2 -1
- package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts +3 -0
- package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/ToastHost.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/ToastHost.web.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/toast.d.ts +0 -5
- package/lib/typescript/src/components/ui/Toast/toast.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/types.d.ts +1 -1
- package/lib/typescript/src/components/ui/Toast/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/shared/badgeStyles.d.ts +27 -0
- package/lib/typescript/src/components/ui/shared/badgeStyles.d.ts.map +1 -0
- package/lib/typescript/src/icons/data.d.ts.map +1 -1
- package/lib/typescript/src/icons/types.d.ts +18 -12
- package/lib/typescript/src/icons/types.d.ts.map +1 -1
- package/lib/typescript/src/theme/colors.d.ts +9 -3
- package/lib/typescript/src/theme/colors.d.ts.map +1 -1
- package/lib/typescript/src/theme/index.d.ts +3 -2
- package/lib/typescript/src/theme/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/scale.d.ts.map +1 -1
- package/lib/typescript/src/theme/shadow.d.ts +8 -8
- package/lib/typescript/src/theme/shadow.d.ts.map +1 -1
- package/lib/typescript/src/theme/tokens.d.ts +7 -3
- package/lib/typescript/src/theme/tokens.d.ts.map +1 -1
- package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts +8 -0
- package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts.map +1 -0
- package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts +6 -0
- package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts.map +1 -0
- package/lib/typescript/src/theme/useTheme.d.ts.map +1 -1
- package/lib/typescript/src/utils/logger/logger.d.ts.map +1 -1
- package/lib/typescript/src/utils/testID/testID.d.ts +6 -3
- package/lib/typescript/src/utils/testID/testID.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/components/business/AvatarWithRing/AvatarWithRing.tsx +5 -4
- package/src/components/business/AvatarWithRing/styles.ts +21 -3
- package/src/components/business/AvatarWithRing/types.ts +3 -1
- package/src/components/business/Decorations/GradientWash.tsx +46 -22
- package/src/components/business/Decorations/RadialHalo.tsx +8 -4
- package/src/components/business/Decorations/ScreenBackdrop.tsx +23 -5
- package/src/components/business/Decorations/index.ts +4 -0
- package/src/components/business/Decorations/types.ts +2 -0
- package/src/components/business/GlassStats/GlassStats.tsx +8 -4
- package/src/components/business/GlassStats/types.ts +6 -0
- package/src/components/business/VersionPill/VersionPill.tsx +46 -6
- package/src/components/business/VersionPill/styles.ts +1 -1
- package/src/components/business/VersionPill/types.ts +13 -1
- package/src/components/business/index.ts +1 -0
- package/src/components/business/useSvgId.ts +17 -0
- package/src/components/ui/Avatar/Avatar.tsx +17 -10
- package/src/components/ui/Avatar/styles.ts +7 -7
- package/src/components/ui/Avatar/types.ts +3 -1
- package/src/components/ui/BlurLayer/BlurLayer.tsx +4 -1
- package/src/components/ui/BlurLayer/BlurLayer.web.tsx +7 -1
- package/src/components/ui/Button/Button.tsx +2 -1
- package/src/components/ui/Button/ButtonBase.tsx +26 -2
- package/src/components/ui/Button/styles.ts +27 -25
- package/src/components/ui/Button/types.ts +1 -1
- package/src/components/ui/Card/Card.tsx +17 -7
- package/src/components/ui/Card/styles.ts +5 -0
- package/src/components/ui/Card/types.ts +4 -4
- package/src/components/ui/Carousel/Carousel.tsx +44 -15
- package/src/components/ui/Carousel/index.ts +1 -1
- package/src/components/ui/Carousel/types.ts +5 -0
- package/src/components/ui/Cell/Cell.tsx +28 -6
- package/src/components/ui/Cell/Leading.tsx +2 -2
- package/src/components/ui/Cell/List.tsx +14 -8
- package/src/components/ui/Cell/styles.ts +8 -5
- package/src/components/ui/Cell/types.ts +5 -2
- package/src/components/ui/Checkbox/Checkbox.tsx +18 -5
- package/src/components/ui/Checkbox/styles.ts +8 -0
- package/src/components/ui/Chip/Chip.tsx +20 -5
- package/src/components/ui/Chip/types.ts +2 -0
- package/src/components/ui/Confirm/ConfirmHost.tsx +26 -10
- package/src/components/ui/Confirm/confirm.ts +8 -0
- package/src/components/ui/Confirm/types.ts +4 -2
- package/src/components/ui/DrawerHeader/DrawerHeader.tsx +18 -12
- package/src/components/ui/DrawerHeader/styles.ts +10 -6
- package/src/components/ui/DrawerHeader/types.ts +3 -1
- package/src/components/ui/Empty/Empty.tsx +5 -4
- package/src/components/ui/Empty/types.ts +3 -0
- package/src/components/ui/EntryCard/EntryCard.tsx +5 -3
- package/src/components/ui/EntryCard/styles.ts +13 -4
- package/src/components/ui/EntryCard/types.ts +2 -2
- package/src/components/ui/Form/FormRow.tsx +7 -1
- package/src/components/ui/Form/styles.ts +2 -0
- package/src/components/ui/Form/types.ts +7 -2
- package/src/components/ui/Grid/Grid.tsx +42 -25
- package/src/components/ui/Grid/styles.ts +8 -20
- package/src/components/ui/Grid/types.ts +4 -1
- package/src/components/ui/Icon/Icon.tsx +42 -27
- package/src/components/ui/IconButton/IconButton.tsx +2 -0
- package/src/components/ui/IconButton/types.ts +8 -2
- package/src/components/ui/Input/types.ts +3 -2
- package/src/components/ui/Logo/Logo.tsx +2 -1
- package/src/components/ui/NavBar/NavBar.tsx +16 -2
- package/src/components/ui/NavBar/types.ts +5 -1
- package/src/components/ui/PasswordInput/PasswordInput.tsx +77 -43
- package/src/components/ui/PasswordInput/styles.ts +1 -1
- package/src/components/ui/PasswordInput/types.ts +7 -2
- package/src/components/ui/Pulse/Pulse.tsx +2 -1
- package/src/components/ui/Pulse/PulseDot.tsx +7 -6
- package/src/components/ui/Pulse/types.ts +6 -0
- package/src/components/ui/Pulse/usePulse.web.ts +50 -33
- package/src/components/ui/Radio/Radio.tsx +29 -6
- package/src/components/ui/Radio/RadioGroup.tsx +10 -3
- package/src/components/ui/Radio/styles.ts +9 -2
- package/src/components/ui/Reveal/Reveal.web.tsx +18 -3
- package/src/components/ui/Search/Search.tsx +22 -9
- package/src/components/ui/Search/types.ts +7 -1
- package/src/components/ui/Segmented/Segmented.tsx +8 -3
- package/src/components/ui/Segmented/styles.ts +4 -2
- package/src/components/ui/Segmented/types.ts +2 -0
- package/src/components/ui/Skeleton/Skeleton.tsx +9 -8
- package/src/components/ui/Spinner/Spinner.tsx +17 -17
- package/src/components/ui/Spinner/Spinner.web.tsx +7 -15
- package/src/components/ui/Spinner/shared.ts +37 -0
- package/src/components/ui/StatusDot/StatusDot.tsx +21 -3
- package/src/components/ui/StatusDot/styles.ts +1 -1
- package/src/components/ui/StatusDot/types.ts +14 -1
- package/src/components/ui/Stepper/Stepper.tsx +45 -10
- package/src/components/ui/Switch/Switch.tsx +4 -10
- package/src/components/ui/Switch/Switch.web.tsx +2 -8
- package/src/components/ui/Switch/styles.ts +10 -1
- package/src/components/ui/TabBar/TabBar.tsx +14 -6
- package/src/components/ui/TabBar/styles.ts +9 -21
- package/src/components/ui/TabBar/types.ts +3 -0
- package/src/components/ui/Tabs/Tabs.tsx +24 -5
- package/src/components/ui/Tabs/styles.ts +6 -2
- package/src/components/ui/Tabs/types.ts +10 -1
- package/src/components/ui/Tag/styles.ts +18 -10
- package/src/components/ui/Tag/types.ts +6 -2
- package/src/components/ui/TextField/TextFieldBase.tsx +31 -6
- package/src/components/ui/Textarea/types.ts +2 -1
- package/src/components/ui/Thumbnail/Thumbnail.tsx +14 -3
- package/src/components/ui/Thumbnail/styles.ts +6 -2
- package/src/components/ui/Toast/ToastHost.tsx +16 -8
- package/src/components/ui/Toast/ToastHost.web.tsx +26 -4
- package/src/components/ui/Toast/styles.ts +2 -0
- package/src/components/ui/Toast/toast.ts +35 -2
- package/src/components/ui/Toast/types.ts +1 -1
- package/src/components/ui/shared/badgeStyles.ts +36 -0
- package/src/icons/data.ts +27 -0
- package/src/icons/types.ts +25 -10
- package/src/theme/colors.ts +29 -10
- package/src/theme/index.ts +10 -1
- package/src/theme/scale.ts +5 -1
- package/src/theme/shadow.ts +33 -24
- package/src/theme/tokens.ts +10 -5
- package/src/theme/usePrefersReducedMotion.ts +9 -0
- package/src/theme/usePrefersReducedMotion.web.ts +27 -0
- package/src/theme/useTheme.ts +15 -0
- package/src/utils/logger/logger.ts +5 -1
- package/src/utils/testID/testID.ts +6 -3
- package/lib/module/components/index.js +0 -5
- package/lib/module/components/index.js.map +0 -1
- package/lib/typescript/src/components/index.d.ts +0 -3
- package/lib/typescript/src/components/index.d.ts.map +0 -1
- package/src/components/index.ts +0 -2
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Unif 设计系统 —— theme(设计令牌)+ 组件 + 图标 + utils,面向 Rea
|
|
|
10
10
|
## 特性
|
|
11
11
|
|
|
12
12
|
- **运行时主题**:`useColors()` 角色 token 跟随系统 light/dark 自动切换;`useThemedStyles` + 模块顶层 `makeStyles` 缓存样式,绝不内联 hex。
|
|
13
|
-
- **40+ 组件**:Button、Card、Cell、NavBar、
|
|
13
|
+
- **40+ 组件**:Button、Card、Cell、NavBar、Toast 等原子组件 + AvatarWithRing、GlassStats 等通用复合组件,全部从包根 barrel 导出,无需深路径。
|
|
14
14
|
- **a11y 内建**:交互组件预设 `accessibilityRole`;`IconButton` 的 `accessibilityLabel` 为类型必填。
|
|
15
15
|
- **图标集 + 严格 TS**:`IconName` 闭集类型、`<Icon>` 自动继承主题色;`strict` + `noUncheckedIndexedAccess`,类型随包发布。
|
|
16
16
|
|
|
@@ -29,7 +29,6 @@ yarn add react-native-svg \
|
|
|
29
29
|
react-native-worklets \
|
|
30
30
|
react-native-safe-area-context \
|
|
31
31
|
react-native-reanimated-carousel \
|
|
32
|
-
@gorhom/bottom-sheet \
|
|
33
32
|
@sbaiahmed1/react-native-blur
|
|
34
33
|
```
|
|
35
34
|
|
|
@@ -72,8 +71,8 @@ export const App = () => (
|
|
|
72
71
|
- **文档站**(快速开始 · 组件 API · 设计令牌 · 设计原则):https://unif-design.github.io/react-native-design/
|
|
73
72
|
- **AI / LLM**(纯 Markdown,按需 fetch,别凭记忆猜 API):
|
|
74
73
|
[llms.txt 索引](https://unif-design.github.io/react-native-design/llms.txt) · [llms-full.txt 全文](https://unif-design.github.io/react-native-design/llms-full.txt)
|
|
75
|
-
- **Agent Skill** `
|
|
76
|
-
`/plugin marketplace add unif-design/
|
|
74
|
+
- **Agent Skill** `unif-design`(覆盖组件 API、token 规则、与原生 RN 的关键差异):
|
|
75
|
+
`/plugin marketplace add unif-design/skills` → `/plugin install unif@unif-skills`
|
|
77
76
|
|
|
78
77
|
## 兼容性
|
|
79
78
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, {
|
|
3
|
+
import React, { useMemo } from 'react';
|
|
4
4
|
import { StyleSheet, Text, View } from 'react-native';
|
|
5
5
|
import Svg, { Defs, LinearGradient as SvgLinearGradient, Rect, Stop } from 'react-native-svg';
|
|
6
6
|
import { avatarGradient, useTheme } from "../../../theme/index.js";
|
|
7
|
+
import { useSvgId } from "../useSvgId.js";
|
|
7
8
|
import { makeAvatarStyles } from "./styles.js";
|
|
8
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
10
|
/**
|
|
@@ -17,20 +18,21 @@ export function AvatarWithRing({
|
|
|
17
18
|
label,
|
|
18
19
|
size = 64,
|
|
19
20
|
ringColor,
|
|
20
|
-
style
|
|
21
|
+
style,
|
|
22
|
+
testID
|
|
21
23
|
}) {
|
|
22
24
|
const {
|
|
23
25
|
colors: c,
|
|
24
26
|
shadow
|
|
25
27
|
} = useTheme();
|
|
26
|
-
const
|
|
27
|
-
const id = `av-${autoId.replace(/[^a-zA-Z0-9_-]/g, '')}`;
|
|
28
|
+
const id = useSvgId('av');
|
|
28
29
|
const {
|
|
29
30
|
inner,
|
|
30
31
|
styles
|
|
31
32
|
} = useMemo(() => makeAvatarStyles(size, ringColor ?? c.avatarRing, shadow.brandAvatar, c), [size, ringColor, c, shadow.brandAvatar]);
|
|
32
33
|
return /*#__PURE__*/_jsx(View, {
|
|
33
34
|
style: [styles.shell, style],
|
|
35
|
+
testID: testID,
|
|
34
36
|
children: /*#__PURE__*/_jsxs(View, {
|
|
35
37
|
style: styles.avatarCore,
|
|
36
38
|
children: [/*#__PURE__*/_jsxs(Svg, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useMemo","StyleSheet","Text","View","Svg","Defs","LinearGradient","SvgLinearGradient","Rect","Stop","avatarGradient","useTheme","useSvgId","makeAvatarStyles","jsx","_jsx","jsxs","_jsxs","AvatarWithRing","label","size","ringColor","style","testID","colors","c","shadow","id","inner","styles","avatarRing","brandAvatar","shell","children","avatarCore","width","height","absoluteFill","x1","y1","x2","y2","gradientUnits","offset","stopColor","fill","lineHeight"],"sourceRoot":"../../../../../src","sources":["components/business/AvatarWithRing/AvatarWithRing.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,OAAOC,GAAG,IACRC,IAAI,EACJC,cAAc,IAAIC,iBAAiB,EACnCC,IAAI,EACJC,IAAI,QACC,kBAAkB;AACzB,SAASC,cAAc,EAAEC,QAAQ,QAAQ,yBAAgB;AACzD,SAASC,QAAQ,QAAQ,gBAAa;AACtC,SAASC,gBAAgB,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAC;EAC7BC,KAAK;EACLC,IAAI,GAAG,EAAE;EACTC,SAAS;EACTC,KAAK;EACLC;AACmB,CAAC,EAAqB;EACzC,MAAM;IAAEC,MAAM,EAAEC,CAAC;IAAEC;EAAO,CAAC,GAAGf,QAAQ,CAAC,CAAC;EACxC,MAAMgB,EAAE,GAAGf,QAAQ,CAAC,IAAI,CAAC;EACzB,MAAM;IAAEgB,KAAK;IAAEC;EAAO,CAAC,GAAG7B,OAAO,CAC/B,MACEa,gBAAgB,CAACO,IAAI,EAAEC,SAAS,IAAII,CAAC,CAACK,UAAU,EAAEJ,MAAM,CAACK,WAAW,EAAEN,CAAC,CAAC,EAC1E,CAACL,IAAI,EAAEC,SAAS,EAAEI,CAAC,EAAEC,MAAM,CAACK,WAAW,CACzC,CAAC;EACD,oBACEhB,IAAA,CAACZ,IAAI;IAACmB,KAAK,EAAE,CAACO,MAAM,CAACG,KAAK,EAAEV,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAU,QAAA,eACjDhB,KAAA,CAACd,IAAI;MAACmB,KAAK,EAAEO,MAAM,CAACK,UAAW;MAAAD,QAAA,gBAC7BhB,KAAA,CAACb,GAAG;QAAC+B,KAAK,EAAEP,KAAM;QAACQ,MAAM,EAAER,KAAM;QAACN,KAAK,EAAErB,UAAU,CAACoC,YAAa;QAAAJ,QAAA,gBAC/DlB,IAAA,CAACV,IAAI;UAAA4B,QAAA,eAGHhB,KAAA,CAACV,iBAAiB;YAChBoB,EAAE,EAAEA,EAAG;YACPW,EAAE,EAAE,CAAE;YACNC,EAAE,EAAE,CAAE;YACNC,EAAE,EAAEZ,KAAM;YACVa,EAAE,EAAEb,KAAM;YACVc,aAAa,EAAC,gBAAgB;YAAAT,QAAA,gBAE9BlB,IAAA,CAACN,IAAI;cAACkC,MAAM,EAAE,CAAE;cAACC,SAAS,EAAElC,cAAc,CAAC,CAAC;YAAE,CAAE,CAAC,eACjDK,IAAA,CAACN,IAAI;cAACkC,MAAM,EAAE,CAAE;cAACC,SAAS,EAAElC,cAAc,CAAC,CAAC;YAAE,CAAE,CAAC;UAAA,CAChC;QAAC,CAChB,CAAC,eACPK,IAAA,CAACP,IAAI;UAAC2B,KAAK,EAAEP,KAAM;UAACQ,MAAM,EAAER,KAAM;UAACiB,IAAI,EAAE,QAAQlB,EAAE;QAAI,CAAE,CAAC;MAAA,CACvD,CAAC,eACNZ,IAAA,CAACb,IAAI;QAACoB,KAAK,EAAE,CAACO,MAAM,CAACV,KAAK,EAAE;UAAE2B,UAAU,EAAElB;QAAM,CAAC,CAAE;QAAAK,QAAA,EAAEd;MAAK,CAAO,CAAC;IAAA,CAC9D;EAAC,CACH,CAAC;AAEX","ignoreList":[]}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
4
|
import { fw, r } from "../../../theme/index.js";
|
|
5
|
+
import { createLogger } from "../../../utils/logger/index.js";
|
|
6
|
+
const log = createLogger('AvatarWithRing');
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* 头像样式工厂 —— **非标 maker 签名**:`(size, ringColor, shadowStyle, c)` 4 参,
|
|
@@ -23,9 +25,19 @@ import { fw, r } from "../../../theme/index.js";
|
|
|
23
25
|
* - avatarCore:inner×inner 圆,在 shell 内 flex center,内部放 SVG 渐变 + label
|
|
24
26
|
*/
|
|
25
27
|
export const makeAvatarStyles = (size, ringColor, shadowStyle, c) => {
|
|
26
|
-
|
|
28
|
+
// 防御非法 size:NaN / 负数 / 0 会导致 inner 为负传入 SVG。
|
|
29
|
+
// 最小合理值 = ringWidth*2 + 1(至少 1pt 圆心可见)。
|
|
30
|
+
// ringWidth 下限为 2(见下方 Math.max),所以 size 至少要大于 4pt。
|
|
31
|
+
const MIN_SIZE = 5;
|
|
32
|
+
const safeSize = Number.isFinite(size) && size >= MIN_SIZE ? size : (() => {
|
|
33
|
+
if (__DEV__) {
|
|
34
|
+
log.warn(`AvatarWithRing: size=${size} 无效(须 ≥ ${MIN_SIZE}),已钳制为 ${MIN_SIZE}。`);
|
|
35
|
+
}
|
|
36
|
+
return MIN_SIZE;
|
|
37
|
+
})();
|
|
38
|
+
const dim = r(safeSize);
|
|
27
39
|
const half = dim / 2;
|
|
28
|
-
const ringWidth = Math.max(2, r(Math.round(
|
|
40
|
+
const ringWidth = Math.max(2, r(Math.round(safeSize * 0.0625)));
|
|
29
41
|
const inner = dim - ringWidth * 2;
|
|
30
42
|
const innerHalf = inner / 2;
|
|
31
43
|
const styles = StyleSheet.create({
|
|
@@ -47,7 +59,7 @@ export const makeAvatarStyles = (size, ringColor, shadowStyle, c) => {
|
|
|
47
59
|
justifyContent: 'center'
|
|
48
60
|
},
|
|
49
61
|
label: {
|
|
50
|
-
fontSize: r(Math.round(
|
|
62
|
+
fontSize: r(Math.round(safeSize * 0.4)),
|
|
51
63
|
fontWeight: fw.bold,
|
|
52
64
|
color: c.onPrimary,
|
|
53
65
|
letterSpacing: -0.5,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","fw","r","makeAvatarStyles","size","ringColor","shadowStyle","c","dim","half","ringWidth","Math","max","round","inner","innerHalf","styles","create","shell","width","height","borderRadius","backgroundColor","alignItems","justifyContent","avatarCore","overflow","label","fontSize","fontWeight","bold","color","onPrimary","letterSpacing","textAlign"],"sourceRoot":"../../../../../src","sources":["components/business/AvatarWithRing/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAwB,cAAc;AACzD,SAASC,EAAE,EAAEC,CAAC,QAA0B,yBAAgB;;
|
|
1
|
+
{"version":3,"names":["StyleSheet","fw","r","createLogger","log","makeAvatarStyles","size","ringColor","shadowStyle","c","MIN_SIZE","safeSize","Number","isFinite","__DEV__","warn","dim","half","ringWidth","Math","max","round","inner","innerHalf","styles","create","shell","width","height","borderRadius","backgroundColor","alignItems","justifyContent","avatarCore","overflow","label","fontSize","fontWeight","bold","color","onPrimary","letterSpacing","textAlign"],"sourceRoot":"../../../../../src","sources":["components/business/AvatarWithRing/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAwB,cAAc;AACzD,SAASC,EAAE,EAAEC,CAAC,QAA0B,yBAAgB;AACxD,SAASC,YAAY,QAAQ,gCAAuB;AAEpD,MAAMC,GAAG,GAAGD,YAAY,CAAC,gBAAgB,CAAC;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,gBAAgB,GAAGA,CAC9BC,IAAY,EACZC,SAAiB,EACjBC,WAAsB,EACtBC,CAAc,KACX;EACH;EACA;EACA;EACA,MAAMC,QAAQ,GAAG,CAAC;EAClB,MAAMC,QAAQ,GACZC,MAAM,CAACC,QAAQ,CAACP,IAAI,CAAC,IAAIA,IAAI,IAAII,QAAQ,GACrCJ,IAAI,GACJ,CAAC,MAAM;IACL,IAAIQ,OAAO,EAAE;MACXV,GAAG,CAACW,IAAI,CACN,wBAAwBT,IAAI,WAAWI,QAAQ,UAAUA,QAAQ,GACnE,CAAC;IACH;IACA,OAAOA,QAAQ;EACjB,CAAC,EAAE,CAAC;EACV,MAAMM,GAAG,GAAGd,CAAC,CAACS,QAAQ,CAAC;EACvB,MAAMM,IAAI,GAAGD,GAAG,GAAG,CAAC;EACpB,MAAME,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAElB,CAAC,CAACiB,IAAI,CAACE,KAAK,CAACV,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;EAC/D,MAAMW,KAAK,GAAGN,GAAG,GAAGE,SAAS,GAAG,CAAC;EACjC,MAAMK,SAAS,GAAGD,KAAK,GAAG,CAAC;EAC3B,MAAME,MAAM,GAAGxB,UAAU,CAACyB,MAAM,CAAC;IAC/BC,KAAK,EAAE;MACLC,KAAK,EAAEX,GAAG;MACVY,MAAM,EAAEZ,GAAG;MACXa,YAAY,EAAEZ,IAAI;MAClBa,eAAe,EAAEvB,SAAS;MAC1B,GAAGC,WAAW;MACduB,UAAU,EAAE,QAAQ;MACpBC,cAAc,EAAE;IAClB,CAAC;IACDC,UAAU,EAAE;MACVN,KAAK,EAAEL,KAAK;MACZM,MAAM,EAAEN,KAAK;MACbO,YAAY,EAAEN,SAAS;MACvBW,QAAQ,EAAE,QAAQ;MAClBH,UAAU,EAAE,QAAQ;MACpBC,cAAc,EAAE;IAClB,CAAC;IACDG,KAAK,EAAE;MACLC,QAAQ,EAAElC,CAAC,CAACiB,IAAI,CAACE,KAAK,CAACV,QAAQ,GAAG,GAAG,CAAC,CAAC;MACvC0B,UAAU,EAAEpC,EAAE,CAACqC,IAAI;MACnBC,KAAK,EAAE9B,CAAC,CAAC+B,SAAS;MAClBC,aAAa,EAAE,CAAC,GAAG;MACnBC,SAAS,EAAE;IACb;EACF,CAAC,CAAC;EACF,OAAO;IAAExB,SAAS;IAAEF,GAAG;IAAEM,KAAK;IAAEE;EAAO,CAAC;AAC1C,CAAC","ignoreList":[]}
|
|
@@ -1,9 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React
|
|
3
|
+
import React from 'react';
|
|
4
4
|
import { View } from 'react-native';
|
|
5
5
|
import Svg, { Defs, LinearGradient as SvgLinearGradient, Rect, Stop } from 'react-native-svg';
|
|
6
|
+
import { useSvgId } from "../useSvgId.js";
|
|
6
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
/** 解析 rgba(r,g,b,a) 或 #RRGGBBAA 字符串拆出 alpha,返回 { color: rgb/hex, opacity }。
|
|
9
|
+
* 非支持格式(rgb / hex / named / hsl 等)原样返回 + opacity=1。
|
|
10
|
+
*
|
|
11
|
+
* 支持格式:
|
|
12
|
+
* - 逗号式 rgba(r,g,b,a) → 拆出 alpha
|
|
13
|
+
* - 8 位 hex #RRGGBBAA → 末两位转 alpha
|
|
14
|
+
* - 其它(rgb / hex6 / named) → 原样 + opacity=1
|
|
15
|
+
*
|
|
16
|
+
* Why:react-native-svg `<Stop stopColor>` 接 rgba 时 alpha 可能被忽略
|
|
17
|
+
* (stopColor 只解析 RGB,需要 stopOpacity 分离),拆分后跨平台一致。 */
|
|
18
|
+
export function parseRgba(color) {
|
|
19
|
+
// 逗号式 rgba(r,g,b,a)
|
|
20
|
+
const mRgba = color.match(/^rgba\(([^)]+)\)$/);
|
|
21
|
+
if (mRgba?.[1]) {
|
|
22
|
+
const parts = mRgba[1].split(',').map(s => s.trim());
|
|
23
|
+
if (parts.length === 4) {
|
|
24
|
+
const alphaStr = parts[3];
|
|
25
|
+
if (alphaStr !== undefined) {
|
|
26
|
+
const alpha = parseFloat(alphaStr);
|
|
27
|
+
if (!Number.isNaN(alpha)) {
|
|
28
|
+
return {
|
|
29
|
+
color: `rgb(${parts.slice(0, 3).join(',')})`,
|
|
30
|
+
opacity: alpha
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// 8 位 hex #RRGGBBAA
|
|
37
|
+
const mHex8 = color.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);
|
|
38
|
+
if (mHex8?.[1] && mHex8[2] && mHex8[3] && mHex8[4]) {
|
|
39
|
+
const alpha = parseInt(mHex8[4], 16) / 255;
|
|
40
|
+
return {
|
|
41
|
+
color: `#${mHex8[1]}${mHex8[2]}${mHex8[3]}`,
|
|
42
|
+
opacity: alpha
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
color,
|
|
47
|
+
opacity: 1
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
7
51
|
/**
|
|
8
52
|
* 垂直线性渐变 wash —— 全宽矩形 + 顶到底的 SVG LinearGradient。
|
|
9
53
|
*
|
|
@@ -13,48 +57,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
57
|
*
|
|
14
58
|
* `pointerEvents="none"` 透传,装饰层不捕事件。
|
|
15
59
|
*
|
|
16
|
-
* gradientId
|
|
17
|
-
* 不是合法 SVG id 字符,sanitize 后再用。
|
|
60
|
+
* gradientId 不传时由 useSvgId 自动生成唯一合法 id(消毒 React 19 useId 的冒号)。
|
|
18
61
|
*/
|
|
19
|
-
/** 解析 rgba(r,g,b,a) 字符串拆出 alpha,返回 { color: rgb(...), opacity }。
|
|
20
|
-
* 非 rgba 输入(hex / rgb / named)原样返回 + opacity=1。
|
|
21
|
-
*
|
|
22
|
-
* Why:react-native-svg `<Stop stopColor>` 接 rgba 时 alpha 可能被忽略
|
|
23
|
-
* (stopColor 只解析 RGB,需要 stopOpacity 分离),拆分后跨平台一致。 */
|
|
24
|
-
function parseRgba(color) {
|
|
25
|
-
const m = color.match(/^rgba\(([^)]+)\)$/);
|
|
26
|
-
if (!m || !m[1]) return {
|
|
27
|
-
color,
|
|
28
|
-
opacity: 1
|
|
29
|
-
};
|
|
30
|
-
const parts = m[1].split(',').map(s => s.trim());
|
|
31
|
-
if (parts.length !== 4) return {
|
|
32
|
-
color,
|
|
33
|
-
opacity: 1
|
|
34
|
-
};
|
|
35
|
-
const alphaStr = parts[3];
|
|
36
|
-
if (alphaStr === undefined) return {
|
|
37
|
-
color,
|
|
38
|
-
opacity: 1
|
|
39
|
-
};
|
|
40
|
-
const alpha = parseFloat(alphaStr);
|
|
41
|
-
if (Number.isNaN(alpha)) return {
|
|
42
|
-
color,
|
|
43
|
-
opacity: 1
|
|
44
|
-
};
|
|
45
|
-
return {
|
|
46
|
-
color: `rgb(${parts.slice(0, 3).join(',')})`,
|
|
47
|
-
opacity: alpha
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
62
|
export function GradientWash(props) {
|
|
51
63
|
const {
|
|
52
64
|
height,
|
|
53
65
|
style,
|
|
54
66
|
gradientId
|
|
55
67
|
} = props;
|
|
56
|
-
const
|
|
57
|
-
const id = gradientId ?? `gw-${autoId.replace(/[^a-zA-Z0-9_-]/g, '')}`;
|
|
68
|
+
const id = useSvgId('gw', gradientId);
|
|
58
69
|
const stops = props.stops ?? [{
|
|
59
70
|
offset: 0,
|
|
60
71
|
color: props.color,
|
|
@@ -82,6 +93,9 @@ export function GradientWash(props) {
|
|
|
82
93
|
gradientUnits: "userSpaceOnUse",
|
|
83
94
|
children: stops.map((s, i) => {
|
|
84
95
|
const parsed = parseRgba(s.color);
|
|
96
|
+
// s.opacity 显式传入时优先;未传(undefined)时使用 parseRgba 解出的值。
|
|
97
|
+
// 注:这里是替换而非相乘 —— stops 里的 opacity 字段语义是"最终不透明度",
|
|
98
|
+
// 若需要与解析色 alpha 相乘请在构建 stops 时预先合并。
|
|
85
99
|
const opacity = s.opacity ?? parsed.opacity;
|
|
86
100
|
return /*#__PURE__*/_jsx(Stop, {
|
|
87
101
|
offset: s.offset,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","View","Svg","Defs","LinearGradient","SvgLinearGradient","Rect","Stop","useSvgId","jsx","_jsx","jsxs","_jsxs","parseRgba","color","mRgba","match","parts","split","map","s","trim","length","alphaStr","undefined","alpha","parseFloat","Number","isNaN","slice","join","opacity","mHex8","parseInt","GradientWash","props","height","style","gradientId","id","stops","offset","fromOpacity","toOpacity","pointerEvents","children","width","x1","y1","x2","y2","gradientUnits","i","parsed","stopColor","stopOpacity","fill"],"sourceRoot":"../../../../../src","sources":["components/business/Decorations/GradientWash.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React
|
|
3
|
+
import React from 'react';
|
|
4
4
|
import { View } from 'react-native';
|
|
5
5
|
import Svg, { Defs, Ellipse, RadialGradient as SvgRadialGradient, Stop } from 'react-native-svg';
|
|
6
|
+
import { useSvgId } from "../useSvgId.js";
|
|
7
|
+
import { parseRgba } from "./GradientWash.js";
|
|
6
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
9
|
const DEFAULT_MAX_OPACITY = 0.16;
|
|
8
10
|
const buildStops = maxOpacity => [{
|
|
@@ -35,13 +37,17 @@ export function RadialHalo({
|
|
|
35
37
|
}) {
|
|
36
38
|
const w = size;
|
|
37
39
|
const h = height ?? size;
|
|
38
|
-
const
|
|
39
|
-
const id = gradientId ?? `rh-${autoId.replace(/[^a-zA-Z0-9_-]/g, '')}`;
|
|
40
|
+
const id = useSvgId('rh', gradientId);
|
|
40
41
|
const resolvedStops = stops ?? buildStops(maxOpacity);
|
|
41
42
|
const cx = w / 2;
|
|
42
43
|
const cy = h / 2;
|
|
43
44
|
// farthest-corner:r = 中心到最远角的距离
|
|
44
45
|
const r = Math.sqrt(cx * cx + cy * cy);
|
|
46
|
+
// parseRgba:react-native-svg stopColor 只解析 RGB,rgba/8位hex 的 alpha 会被忽略;
|
|
47
|
+
// 拆分为 stopColor(rgb/hex6) + stopOpacity 后跨平台一致(与 GradientWash 同理)。
|
|
48
|
+
const {
|
|
49
|
+
color: stopColor
|
|
50
|
+
} = parseRgba(color);
|
|
45
51
|
return /*#__PURE__*/_jsx(View, {
|
|
46
52
|
pointerEvents: "none",
|
|
47
53
|
style: [{
|
|
@@ -62,7 +68,7 @@ export function RadialHalo({
|
|
|
62
68
|
gradientUnits: "userSpaceOnUse",
|
|
63
69
|
children: resolvedStops.map((s, i) => /*#__PURE__*/_jsx(Stop, {
|
|
64
70
|
offset: s.offset,
|
|
65
|
-
stopColor:
|
|
71
|
+
stopColor: stopColor,
|
|
66
72
|
stopOpacity: s.opacity
|
|
67
73
|
}, `${s.offset}-${i}`))
|
|
68
74
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","View","Svg","Defs","Ellipse","RadialGradient","SvgRadialGradient","Stop","useSvgId","parseRgba","jsx","_jsx","jsxs","_jsxs","DEFAULT_MAX_OPACITY","buildStops","maxOpacity","offset","opacity","RadialHalo","size","height","color","stops","style","gradientId","w","h","id","resolvedStops","cx","cy","r","Math","sqrt","stopColor","pointerEvents","width","children","fx","fy","gradientUnits","map","s","i","stopOpacity","rx","ry","fill"],"sourceRoot":"../../../../../src","sources":["components/business/Decorations/RadialHalo.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AACnC,OAAOC,GAAG,IACRC,IAAI,EACJC,OAAO,EACPC,cAAc,IAAIC,iBAAiB,EACnCC,IAAI,QACC,kBAAkB;AACzB,SAASC,QAAQ,QAAQ,gBAAa;AACtC,SAASC,SAAS,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG3C,MAAMC,mBAAmB,GAAG,IAAI;AAEhC,MAAMC,UAAU,GAAIC,UAAkB,IAAK,CACzC;EAAEC,MAAM,EAAE,CAAC;EAAEC,OAAO,EAAEF;AAAW,CAAC,EAClC;EAAEC,MAAM,EAAE,IAAI;EAAEC,OAAO,EAAE;AAAE,CAAC,EAC5B;EAAED,MAAM,EAAE,CAAC;EAAEC,OAAO,EAAE;AAAE,CAAC,CAC1B;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,IAAI;EACJC,MAAM;EACNC,KAAK;EACLN,UAAU,GAAGF,mBAAmB;EAChCS,KAAK;EACLC,KAAK;EACLC;AACe,CAAC,EAAqB;EACrC,MAAMC,CAAC,GAAGN,IAAI;EACd,MAAMO,CAAC,GAAGN,MAAM,IAAID,IAAI;EACxB,MAAMQ,EAAE,GAAGpB,QAAQ,CAAC,IAAI,EAAEiB,UAAU,CAAC;EACrC,MAAMI,aAAa,GAAGN,KAAK,IAAIR,UAAU,CAACC,UAAU,CAAC;EACrD,MAAMc,EAAE,GAAGJ,CAAC,GAAG,CAAC;EAChB,MAAMK,EAAE,GAAGJ,CAAC,GAAG,CAAC;EAChB;EACA,MAAMK,CAAC,GAAGC,IAAI,CAACC,IAAI,CAACJ,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,CAAC;EACtC;EACA;EACA,MAAM;IAAET,KAAK,EAAEa;EAAU,CAAC,GAAG1B,SAAS,CAACa,KAAK,CAAC;EAC7C,oBACEX,IAAA,CAACV,IAAI;IAACmC,aAAa,EAAC,MAAM;IAACZ,KAAK,EAAE,CAAC;MAAEa,KAAK,EAAEX,CAAC;MAAEL,MAAM,EAAEM;IAAE,CAAC,EAAEH,KAAK,CAAE;IAAAc,QAAA,eACjEzB,KAAA,CAACX,GAAG;MAACmC,KAAK,EAAEX,CAAE;MAACL,MAAM,EAAEM,CAAE;MAAAW,QAAA,gBACvB3B,IAAA,CAACR,IAAI;QAAAmC,QAAA,eAGH3B,IAAA,CAACL,iBAAiB;UAChBsB,EAAE,EAAEA,EAAG;UACPE,EAAE,EAAEA,EAAG;UACPC,EAAE,EAAEA,EAAG;UACPC,CAAC,EAAEA,CAAE;UACLO,EAAE,EAAET,EAAG;UACPU,EAAE,EAAET,EAAG;UACPU,aAAa,EAAC,gBAAgB;UAAAH,QAAA,EAE7BT,aAAa,CAACa,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBACtBjC,IAAA,CAACJ,IAAI;YAEHU,MAAM,EAAE0B,CAAC,CAAC1B,MAAO;YACjBkB,SAAS,EAAEA,SAAU;YACrBU,WAAW,EAAEF,CAAC,CAACzB;UAAQ,GAHlB,GAAGyB,CAAC,CAAC1B,MAAM,IAAI2B,CAAC,EAItB,CACF;QAAC,CACe;MAAC,CAChB,CAAC,eACPjC,IAAA,CAACP,OAAO;QAAC0B,EAAE,EAAEA,EAAG;QAACC,EAAE,EAAEA,EAAG;QAACe,EAAE,EAAEhB,EAAG;QAACiB,EAAE,EAAEhB,EAAG;QAACiB,IAAI,EAAE,QAAQpB,EAAE;MAAI,CAAE,CAAC;IAAA,CAC7D;EAAC,CACF,CAAC;AAEX","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { StyleSheet, useWindowDimensions, View } from 'react-native';
|
|
5
|
-
import { useColors, useTheme, warmOrangePalette } from "../../../theme/index.js";
|
|
5
|
+
import { r, useColors, useTheme, warmOrangePalette } from "../../../theme/index.js";
|
|
6
6
|
import { GradientWash } from "./GradientWash.js";
|
|
7
7
|
import { RadialHalo } from "./RadialHalo.js";
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -24,23 +24,25 @@ const PRESETS = {
|
|
|
24
24
|
warmOrange: {
|
|
25
25
|
light: buildStops(warmOrangePalette.light, WARM_ORANGE_OFFSETS),
|
|
26
26
|
dark: buildStops(warmOrangePalette.dark, WARM_ORANGE_OFFSETS),
|
|
27
|
-
halos: [
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
halos: [
|
|
28
|
+
// [L-88] halo 几何走 r() 对齐缩放纪律;maxOpacity / centerX 是无单位值,不缩放。
|
|
29
|
+
{
|
|
30
|
+
size: r(520),
|
|
31
|
+
height: r(420),
|
|
30
32
|
maxOpacity: 0.22,
|
|
31
|
-
top: -120,
|
|
33
|
+
top: r(-120),
|
|
32
34
|
centerX: true
|
|
33
35
|
}, {
|
|
34
|
-
size: 560,
|
|
35
|
-
height: 380,
|
|
36
|
+
size: r(560),
|
|
37
|
+
height: r(380),
|
|
36
38
|
maxOpacity: 0.18,
|
|
37
|
-
bottom: -160,
|
|
39
|
+
bottom: r(-160),
|
|
38
40
|
centerX: true
|
|
39
41
|
}, {
|
|
40
|
-
size: 220,
|
|
42
|
+
size: r(220),
|
|
41
43
|
maxOpacity: 0.16,
|
|
42
|
-
top: 180,
|
|
43
|
-
right: -80
|
|
44
|
+
top: r(180),
|
|
45
|
+
right: r(-80)
|
|
44
46
|
}]
|
|
45
47
|
}
|
|
46
48
|
};
|
|
@@ -68,7 +70,8 @@ export function ScreenBackdrop({
|
|
|
68
70
|
stops,
|
|
69
71
|
halos,
|
|
70
72
|
children,
|
|
71
|
-
style
|
|
73
|
+
style,
|
|
74
|
+
testID
|
|
72
75
|
}) {
|
|
73
76
|
const c = useColors();
|
|
74
77
|
const {
|
|
@@ -89,6 +92,7 @@ export function ScreenBackdrop({
|
|
|
89
92
|
style: [backdropStyles.root, {
|
|
90
93
|
backgroundColor: c.background
|
|
91
94
|
}, style],
|
|
95
|
+
testID: testID,
|
|
92
96
|
children: [resolvedStops ? /*#__PURE__*/_jsx(GradientWash, {
|
|
93
97
|
height: winH,
|
|
94
98
|
stops: isDark ? resolvedStops.dark : resolvedStops.light,
|
|
@@ -100,8 +104,12 @@ export function ScreenBackdrop({
|
|
|
100
104
|
size: h.size,
|
|
101
105
|
height: h.height,
|
|
102
106
|
color: h.color ?? c.primary,
|
|
103
|
-
maxOpacity: h.maxOpacity
|
|
104
|
-
gradientId
|
|
107
|
+
maxOpacity: h.maxOpacity
|
|
108
|
+
// [L-60] 不传 gradientId —— 让 RadialHalo 走自己的 useSvgId(useId) 默认值。
|
|
109
|
+
// 实例内同名在多 ScreenBackdrop 同挂(keep-mounted 栈、导航页)时会导致
|
|
110
|
+
// web DOM SVG 的 url(#id) 命中文档首个同名渐变,造成跨实例渐变串台。
|
|
111
|
+
// useId 保证每次挂载唯一,「实例内多 halo 不同 id」也由 useSvgId 前缀+'rh' 保证。
|
|
112
|
+
,
|
|
105
113
|
style: [backdropStyles.haloAbsolute, {
|
|
106
114
|
top: h.top,
|
|
107
115
|
bottom: h.bottom,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","useWindowDimensions","View","useColors","useTheme","warmOrangePalette","GradientWash","RadialHalo","jsx","_jsx","jsxs","_jsxs","buildStops","palette","offsets","map","color","i","offset","length","opacity","WARM_ORANGE_OFFSETS","PRESETS","warmOrange","light","dark","halos","size","height","maxOpacity","top","centerX","bottom","right","ScreenBackdrop","preset","stops","children","style","c","scheme","width","winW","winH","isDark","cfg","undefined","resolvedStops","resolvedHalos","backdropStyles","root","backgroundColor","background","gradient","h","left","primary","
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","useWindowDimensions","View","r","useColors","useTheme","warmOrangePalette","GradientWash","RadialHalo","jsx","_jsx","jsxs","_jsxs","buildStops","palette","offsets","map","color","i","offset","length","opacity","WARM_ORANGE_OFFSETS","PRESETS","warmOrange","light","dark","halos","size","height","maxOpacity","top","centerX","bottom","right","ScreenBackdrop","preset","stops","children","style","testID","c","scheme","width","winW","winH","isDark","cfg","undefined","resolvedStops","resolvedHalos","backdropStyles","root","backgroundColor","background","gradient","h","left","primary","haloAbsolute","create","flex","position","overflow"],"sourceRoot":"../../../../../src","sources":["components/business/Decorations/ScreenBackdrop.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
// Decorations 族:GradientWash / RadialHalo / ScreenBackdrop 三件强内聚,
|
|
4
|
+
// 共享 GradientStop 类型 + parseRgba 工具 —— 刻意共居一目录、共享 types.ts,
|
|
5
|
+
// 不拆单组件目录;CLAUDE.md 组件约定的族式聚合例外。
|
|
3
6
|
export { GradientWash } from "./GradientWash.js";
|
|
4
7
|
export { RadialHalo } from "./RadialHalo.js";
|
|
5
8
|
export { ScreenBackdrop } from "./ScreenBackdrop.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GradientWash","RadialHalo","ScreenBackdrop"],"sourceRoot":"../../../../../src","sources":["components/business/Decorations/index.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,cAAc,QAAQ,qBAAkB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["GradientWash","RadialHalo","ScreenBackdrop"],"sourceRoot":"../../../../../src","sources":["components/business/Decorations/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,cAAc,QAAQ,qBAAkB","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { Text, View } from 'react-native';
|
|
5
|
-
import { BlurLayer } from "../../ui/index.js";
|
|
5
|
+
import { BlurLayer } from "../../ui/BlurLayer/index.js";
|
|
6
6
|
import { useThemedStyles } from "../../../theme/index.js";
|
|
7
7
|
import { makeGlassStatsStyles } from "./styles.js";
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -13,7 +13,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
* blurType 跟 scheme 自动切。
|
|
14
14
|
*/
|
|
15
15
|
export function GlassStats({
|
|
16
|
-
items
|
|
16
|
+
items,
|
|
17
|
+
style,
|
|
18
|
+
testID
|
|
17
19
|
}) {
|
|
18
20
|
const styles = useThemedStyles(makeGlassStatsStyles);
|
|
19
21
|
return (
|
|
@@ -22,7 +24,8 @@ export function GlassStats({
|
|
|
22
24
|
// 会裁掉 outer shadow);内层 glass 承担 overflow:hidden + border 裁圆角。
|
|
23
25
|
// 单层 overflow + shadow 在 iOS 上 shadow 完全不可见。
|
|
24
26
|
_jsx(View, {
|
|
25
|
-
style: styles.glassShell,
|
|
27
|
+
style: [styles.glassShell, style],
|
|
28
|
+
testID: testID,
|
|
26
29
|
children: /*#__PURE__*/_jsxs(View, {
|
|
27
30
|
style: styles.glass,
|
|
28
31
|
children: [/*#__PURE__*/_jsx(BlurLayer, {
|
|
@@ -45,7 +48,7 @@ export function GlassStats({
|
|
|
45
48
|
children: label
|
|
46
49
|
})]
|
|
47
50
|
})]
|
|
48
|
-
}, label))
|
|
51
|
+
}, `${label}-${i}`))
|
|
49
52
|
})]
|
|
50
53
|
})
|
|
51
54
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Text","View","BlurLayer","useThemedStyles","makeGlassStatsStyles","jsx","_jsx","jsxs","_jsxs","GlassStats","items","
|
|
1
|
+
{"version":3,"names":["React","Text","View","BlurLayer","useThemedStyles","makeGlassStatsStyles","jsx","_jsx","jsxs","_jsxs","GlassStats","items","style","testID","styles","glassShell","children","glass","intensity","topHighlight","pointerEvents","inner","map","count","label","i","Fragment","sep","col","countText","labelText"],"sourceRoot":"../../../../../src","sources":["components/business/GlassStats/GlassStats.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,SAAS,QAAQ,6BAAoB;AAC9C,SAASC,eAAe,QAAQ,yBAAgB;AAChD,SAASC,oBAAoB,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGhD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,KAAK;EACLC,KAAK;EACLC;AACe,CAAC,EAAqB;EACrC,MAAMC,MAAM,GAAGV,eAAe,CAACC,oBAAoB,CAAC;EACpD;IAAA;IACE;IACA;IACA;IACAE,IAAA,CAACL,IAAI;MAACU,KAAK,EAAE,CAACE,MAAM,CAACC,UAAU,EAAEH,KAAK,CAAE;MAACC,MAAM,EAAEA,MAAO;MAAAG,QAAA,eACtDP,KAAA,CAACP,IAAI;QAACU,KAAK,EAAEE,MAAM,CAACG,KAAM;QAAAD,QAAA,gBACxBT,IAAA,CAACJ,SAAS;UAACe,SAAS,EAAC;QAAM,CAAE,CAAC,eAE9BX,IAAA,CAACL,IAAI;UAACU,KAAK,EAAEE,MAAM,CAACK,YAAa;UAACC,aAAa,EAAC;QAAM,CAAE,CAAC,eACzDb,IAAA,CAACL,IAAI;UAACU,KAAK,EAAEE,MAAM,CAACO,KAAM;UAAAL,QAAA,EACvBL,KAAK,CAACW,GAAG,CAAC,CAAC,CAACC,KAAK,EAAEC,KAAK,CAAC,EAAEC,CAAC,kBAC3BhB,KAAA,CAACT,KAAK,CAAC0B,QAAQ;YAAAV,QAAA,GACZS,CAAC,GAAG,CAAC,gBAAGlB,IAAA,CAACL,IAAI;cAACU,KAAK,EAAEE,MAAM,CAACa;YAAI,CAAE,CAAC,GAAG,IAAI,eAC3ClB,KAAA,CAACP,IAAI;cAACU,KAAK,EAAEE,MAAM,CAACc,GAAI;cAAAZ,QAAA,gBACtBT,IAAA,CAACN,IAAI;gBAACW,KAAK,EAAEE,MAAM,CAACe,SAAU;gBAAAb,QAAA,EAAEO;cAAK,CAAO,CAAC,eAC7ChB,IAAA,CAACN,IAAI;gBAACW,KAAK,EAAEE,MAAM,CAACgB,SAAU;gBAAAd,QAAA,EAAEQ;cAAK,CAAO,CAAC;YAAA,CACzC,CAAC;UAAA,GALY,GAAGA,KAAK,IAAIC,CAAC,EAMlB,CACjB;QAAC,CACE,CAAC;MAAA,CACH;IAAC,CACH;EAAC;AAEX","ignoreList":[]}
|
|
@@ -10,27 +10,45 @@ export function VersionPill({
|
|
|
10
10
|
version,
|
|
11
11
|
build,
|
|
12
12
|
statusColor,
|
|
13
|
-
|
|
13
|
+
versionPrefix = '版本 ',
|
|
14
|
+
buildPrefix = 'build ',
|
|
15
|
+
style,
|
|
16
|
+
testID
|
|
14
17
|
}) {
|
|
15
18
|
const c = useColors();
|
|
16
19
|
const styles = useThemedStyles(makeVersionPillStyles);
|
|
17
20
|
const dotColor = statusColor ?? c.success;
|
|
21
|
+
// build 的「省略」契约:undefined / null / "" 均视为空;字符串 "0" 不省略。
|
|
22
|
+
const hasBuild = build != null && build !== '';
|
|
23
|
+
// 状态点用颜色传达语义,SR 无法感知;整个 pill 作为分组提供无障碍合并读出。
|
|
24
|
+
const a11yLabel = hasBuild ? `${versionPrefix}${version},${buildPrefix}${build}` : `${versionPrefix}${version}`;
|
|
18
25
|
return /*#__PURE__*/_jsxs(View, {
|
|
26
|
+
accessible: true,
|
|
27
|
+
accessibilityLabel: a11yLabel,
|
|
19
28
|
style: [styles.pill, style],
|
|
29
|
+
testID: testID,
|
|
20
30
|
children: [/*#__PURE__*/_jsx(View, {
|
|
21
31
|
style: [styles.dot, {
|
|
22
32
|
backgroundColor: dotColor
|
|
23
|
-
}]
|
|
33
|
+
}],
|
|
34
|
+
accessibilityElementsHidden: true,
|
|
35
|
+
importantForAccessibility: "no"
|
|
24
36
|
}), /*#__PURE__*/_jsxs(Text, {
|
|
25
37
|
style: styles.version,
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
accessibilityElementsHidden: true,
|
|
39
|
+
importantForAccessibility: "no",
|
|
40
|
+
children: [versionPrefix, version]
|
|
41
|
+
}), hasBuild ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
28
42
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
29
43
|
style: styles.sep,
|
|
44
|
+
accessibilityElementsHidden: true,
|
|
45
|
+
importantForAccessibility: "no",
|
|
30
46
|
children: "\xB7"
|
|
31
47
|
}), /*#__PURE__*/_jsxs(Text, {
|
|
32
48
|
style: styles.build,
|
|
33
|
-
|
|
49
|
+
accessibilityElementsHidden: true,
|
|
50
|
+
importantForAccessibility: "no",
|
|
51
|
+
children: [buildPrefix, build]
|
|
34
52
|
})]
|
|
35
53
|
}) : null]
|
|
36
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Text","View","useColors","useThemedStyles","makeVersionPillStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","VersionPill","version","build","statusColor","style","c","styles","dotColor","success","pill","children","dot","backgroundColor","sep"],"sourceRoot":"../../../../../src","sources":["components/business/VersionPill/VersionPill.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC3D,SAASC,qBAAqB,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAGjD;AACA,OAAO,SAASC,WAAWA,CAAC;EAC1BC,OAAO;EACPC,KAAK;EACLC,WAAW;EACXC;AACgB,CAAC,EAAqB;EACtC,MAAMC,CAAC,
|
|
1
|
+
{"version":3,"names":["React","Text","View","useColors","useThemedStyles","makeVersionPillStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","VersionPill","version","build","statusColor","versionPrefix","buildPrefix","style","testID","c","styles","dotColor","success","hasBuild","a11yLabel","accessible","accessibilityLabel","pill","children","dot","backgroundColor","accessibilityElementsHidden","importantForAccessibility","sep"],"sourceRoot":"../../../../../src","sources":["components/business/VersionPill/VersionPill.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC3D,SAASC,qBAAqB,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAGjD;AACA,OAAO,SAASC,WAAWA,CAAC;EAC1BC,OAAO;EACPC,KAAK;EACLC,WAAW;EACXC,aAAa,GAAG,KAAK;EACrBC,WAAW,GAAG,QAAQ;EACtBC,KAAK;EACLC;AACgB,CAAC,EAAqB;EACtC,MAAMC,CAAC,GAAGjB,SAAS,CAAC,CAAC;EACrB,MAAMkB,MAAM,GAAGjB,eAAe,CAACC,qBAAqB,CAAC;EACrD,MAAMiB,QAAQ,GAAGP,WAAW,IAAIK,CAAC,CAACG,OAAO;EACzC;EACA,MAAMC,QAAQ,GAAGV,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE;EAC9C;EACA,MAAMW,SAAS,GAAGD,QAAQ,GACtB,GAAGR,aAAa,GAAGH,OAAO,IAAII,WAAW,GAAGH,KAAK,EAAE,GACnD,GAAGE,aAAa,GAAGH,OAAO,EAAE;EAChC,oBACEJ,KAAA,CAACP,IAAI;IACHwB,UAAU;IACVC,kBAAkB,EAAEF,SAAU;IAC9BP,KAAK,EAAE,CAACG,MAAM,CAACO,IAAI,EAAEV,KAAK,CAAE;IAC5BC,MAAM,EAAEA,MAAO;IAAAU,QAAA,gBAGftB,IAAA,CAACL,IAAI;MACHgB,KAAK,EAAE,CAACG,MAAM,CAACS,GAAG,EAAE;QAAEC,eAAe,EAAET;MAAS,CAAC,CAAE;MACnDU,2BAA2B;MAC3BC,yBAAyB,EAAC;IAAI,CAC/B,CAAC,eACFxB,KAAA,CAACR,IAAI;MACHiB,KAAK,EAAEG,MAAM,CAACR,OAAQ;MACtBmB,2BAA2B;MAC3BC,yBAAyB,EAAC,IAAI;MAAAJ,QAAA,GAE7Bb,aAAa,EACbH,OAAO;IAAA,CACJ,CAAC,EACNW,QAAQ,gBACPf,KAAA,CAAAE,SAAA;MAAAkB,QAAA,gBAEEtB,IAAA,CAACN,IAAI;QACHiB,KAAK,EAAEG,MAAM,CAACa,GAAI;QAClBF,2BAA2B;QAC3BC,yBAAyB,EAAC,IAAI;QAAAJ,QAAA,EAC/B;MAED,CAAM,CAAC,eACPpB,KAAA,CAACR,IAAI;QACHiB,KAAK,EAAEG,MAAM,CAACP,KAAM;QACpBkB,2BAA2B;QAC3BC,yBAAyB,EAAC,IAAI;QAAAJ,QAAA,GAE7BZ,WAAW,EACXH,KAAK;MAAA,CACF,CAAC;IAAA,CACP,CAAC,GACD,IAAI;EAAA,CACJ,CAAC;AAEX","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ import { StyleSheet } from 'react-native';
|
|
|
4
4
|
import { fontMono, r, radius, space, type } from "../../../theme/index.js";
|
|
5
5
|
|
|
6
6
|
/** VersionPill 样式工厂 —— hairline 描边 + surface 底胶囊。
|
|
7
|
-
* 字号走 type.microPlus(11.5)
|
|
7
|
+
* 字号走 type.microPlus(11.5),现仓内仅 VersionPill 消费。 */
|
|
8
8
|
export const makeVersionPillStyles = c => StyleSheet.create({
|
|
9
9
|
pill: {
|
|
10
10
|
flexDirection: 'row',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GradientWash","RadialHalo","ScreenBackdrop","GlassStats","AvatarWithRing","VersionPill"],"sourceRoot":"../../../../src","sources":["components/business/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,SAASA,YAAY,EAAEC,UAAU,EAAEC,cAAc,QAAQ,wBAAe;
|
|
1
|
+
{"version":3,"names":["GradientWash","RadialHalo","ScreenBackdrop","GlassStats","AvatarWithRing","VersionPill"],"sourceRoot":"../../../../src","sources":["components/business/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,SAASA,YAAY,EAAEC,UAAU,EAAEC,cAAc,QAAQ,wBAAe;AAUxE,SAASC,UAAU,QAAQ,uBAAc;AAGzC,SAASC,cAAc,QAAQ,2BAAkB;AAGjD,SAASC,WAAW,QAAQ,wBAAe","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useId } from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* SVG 渐变 id 生成 hook —— 消毒 React 19 useId 中的冒号字符。
|
|
7
|
+
*
|
|
8
|
+
* Why:React 19 的 useId() 返回含冒号(`:r0:`)的字符串,不是合法的 SVG id 字符
|
|
9
|
+
* (XML NCName 规则),直接用在 `<LinearGradient id>` / `<RadialGradient id>`
|
|
10
|
+
* 会导致 SVG 引用失败。sanitize 后拼上 prefix 保证唯一且合法。
|
|
11
|
+
*
|
|
12
|
+
* @param prefix 短前缀,区分同屏多 gradient(如 "gw" / "rh" / "av")。
|
|
13
|
+
* @param override 可选:外部传入的 gradientId;有值时直接返回,跳过 useId 分配。
|
|
14
|
+
*/
|
|
15
|
+
export function useSvgId(prefix, override) {
|
|
16
|
+
const autoId = useId();
|
|
17
|
+
if (override !== undefined) return override;
|
|
18
|
+
return `${prefix}-${autoId.replace(/[^a-zA-Z0-9_-]/g, '')}`;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=useSvgId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useId","useSvgId","prefix","override","autoId","undefined","replace"],"sourceRoot":"../../../../src","sources":["components/business/useSvgId.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,OAAO;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAACC,MAAc,EAAEC,QAAiB,EAAU;EAClE,MAAMC,MAAM,GAAGJ,KAAK,CAAC,CAAC;EACtB,IAAIG,QAAQ,KAAKE,SAAS,EAAE,OAAOF,QAAQ;EAC3C,OAAO,GAAGD,MAAM,IAAIE,MAAM,CAACE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE;AAC7D","ignoreList":[]}
|