@unif/react-native-design 0.20.0 → 0.21.1
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 +121 -12
- package/lib/module/components/business/AvatarWithRing/AvatarWithRing.js +4 -5
- package/lib/module/components/business/AvatarWithRing/AvatarWithRing.js.map +1 -1
- package/lib/module/components/business/AvatarWithRing/styles.js +10 -9
- package/lib/module/components/business/AvatarWithRing/styles.js.map +1 -1
- package/lib/module/components/business/VersionPill/VersionPill.js +32 -15
- package/lib/module/components/business/VersionPill/VersionPill.js.map +1 -1
- package/lib/module/components/business/VersionPill/content.js +30 -0
- package/lib/module/components/business/VersionPill/content.js.map +1 -0
- package/lib/module/components/business/VersionPill/styles.js +4 -0
- package/lib/module/components/business/VersionPill/styles.js.map +1 -1
- package/lib/module/components/business/useSvgId.js +17 -8
- package/lib/module/components/business/useSvgId.js.map +1 -1
- package/lib/module/components/ui/Avatar/Avatar.js +22 -29
- package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/ui/Button/Button.js +40 -23
- package/lib/module/components/ui/Button/Button.js.map +1 -1
- package/lib/module/components/ui/Button/ButtonBase.js +13 -13
- package/lib/module/components/ui/Button/ButtonBase.js.map +1 -1
- package/lib/module/components/ui/Carousel/Carousel.js +68 -40
- package/lib/module/components/ui/Carousel/Carousel.js.map +1 -1
- package/lib/module/components/ui/Carousel/behavior.js +60 -0
- package/lib/module/components/ui/Carousel/behavior.js.map +1 -0
- package/lib/module/components/ui/Carousel/styles.js +6 -8
- package/lib/module/components/ui/Carousel/styles.js.map +1 -1
- package/lib/module/components/ui/Cell/Cell.js +76 -65
- package/lib/module/components/ui/Cell/Cell.js.map +1 -1
- package/lib/module/components/ui/Cell/Leading.js +11 -5
- package/lib/module/components/ui/Cell/Leading.js.map +1 -1
- package/lib/module/components/ui/Cell/content.js +34 -0
- package/lib/module/components/ui/Cell/content.js.map +1 -0
- package/lib/module/components/ui/Checkbox/Checkbox.js +25 -8
- package/lib/module/components/ui/Checkbox/Checkbox.js.map +1 -1
- package/lib/module/components/ui/Confirm/ConfirmHost.js +49 -25
- package/lib/module/components/ui/Confirm/ConfirmHost.js.map +1 -1
- package/lib/module/components/ui/Confirm/confirm.js +15 -29
- package/lib/module/components/ui/Confirm/confirm.js.map +1 -1
- package/lib/module/components/ui/Confirm/labels.js +10 -0
- package/lib/module/components/ui/Confirm/labels.js.map +1 -0
- package/lib/module/components/ui/Confirm/store.js +113 -0
- package/lib/module/components/ui/Confirm/store.js.map +1 -0
- package/lib/module/components/ui/Confirm/styles.js +4 -0
- package/lib/module/components/ui/Confirm/styles.js.map +1 -1
- package/lib/module/components/ui/DrawerHeader/DrawerHeader.js +17 -25
- package/lib/module/components/ui/DrawerHeader/DrawerHeader.js.map +1 -1
- package/lib/module/components/ui/Grid/Grid.js +26 -9
- package/lib/module/components/ui/Grid/Grid.js.map +1 -1
- package/lib/module/components/ui/Grid/accessibility.js +13 -0
- package/lib/module/components/ui/Grid/accessibility.js.map +1 -0
- package/lib/module/components/ui/IconButton/IconButton.js +16 -3
- package/lib/module/components/ui/IconButton/IconButton.js.map +1 -1
- package/lib/module/components/ui/Input/Input.js +8 -5
- package/lib/module/components/ui/Input/Input.js.map +1 -1
- package/lib/module/components/ui/Logo/Logo.js +22 -4
- package/lib/module/components/ui/Logo/Logo.js.map +1 -1
- package/lib/module/components/ui/NavBar/NavBar.js +23 -14
- package/lib/module/components/ui/NavBar/NavBar.js.map +1 -1
- package/lib/module/components/ui/NavBar/isSlot.js +297 -4
- package/lib/module/components/ui/NavBar/isSlot.js.map +1 -1
- package/lib/module/components/ui/PasswordInput/PasswordInput.js +61 -66
- package/lib/module/components/ui/PasswordInput/PasswordInput.js.map +1 -1
- package/lib/module/components/ui/Pulse/Pulse.js +1 -1
- package/lib/module/components/ui/Pulse/Pulse.js.map +1 -1
- package/lib/module/components/ui/Pulse/PulseDot.js +5 -7
- package/lib/module/components/ui/Pulse/PulseDot.js.map +1 -1
- package/lib/module/components/ui/Pulse/index.js +1 -1
- package/lib/module/components/ui/Pulse/index.js.map +1 -1
- package/lib/module/components/ui/Pulse/normalizePulseOptions.js +45 -0
- package/lib/module/components/ui/Pulse/normalizePulseOptions.js.map +1 -0
- package/lib/module/components/ui/Pulse/usePulse.js +61 -24
- package/lib/module/components/ui/Pulse/usePulse.js.map +1 -1
- package/lib/module/components/ui/Pulse/usePulseDriver.js +44 -0
- package/lib/module/components/ui/Pulse/usePulseDriver.js.map +1 -0
- package/lib/module/components/ui/Pulse/usePulseDriver.web.js +67 -0
- package/lib/module/components/ui/Pulse/usePulseDriver.web.js.map +1 -0
- package/lib/module/components/ui/Radio/Radio.js +31 -14
- package/lib/module/components/ui/Radio/Radio.js.map +1 -1
- package/lib/module/components/ui/Radio/RadioGroup.js +15 -2
- package/lib/module/components/ui/Radio/RadioGroup.js.map +1 -1
- package/lib/module/components/ui/Reveal/Reveal.js +4 -3
- package/lib/module/components/ui/Reveal/Reveal.js.map +1 -1
- package/lib/module/components/ui/Reveal/Reveal.web.js +55 -32
- package/lib/module/components/ui/Reveal/Reveal.web.js.map +1 -1
- package/lib/module/components/ui/Reveal/webTransition.js +157 -0
- package/lib/module/components/ui/Reveal/webTransition.js.map +1 -0
- package/lib/module/components/ui/Search/Search.js +85 -58
- package/lib/module/components/ui/Search/Search.js.map +1 -1
- package/lib/module/components/ui/Segmented/Segmented.js +4 -2
- package/lib/module/components/ui/Segmented/Segmented.js.map +1 -1
- package/lib/module/components/ui/Skeleton/Skeleton.js +5 -7
- package/lib/module/components/ui/Skeleton/Skeleton.js.map +1 -1
- package/lib/module/components/ui/Spinner/Spinner.js +18 -11
- package/lib/module/components/ui/Spinner/Spinner.js.map +1 -1
- package/lib/module/components/ui/Spinner/Spinner.web.js +18 -14
- package/lib/module/components/ui/Spinner/Spinner.web.js.map +1 -1
- package/lib/module/components/ui/Spinner/shared.js +6 -0
- package/lib/module/components/ui/Spinner/shared.js.map +1 -1
- package/lib/module/components/ui/Stepper/Stepper.js +131 -99
- package/lib/module/components/ui/Stepper/Stepper.js.map +1 -1
- package/lib/module/components/ui/Stepper/StepperPressable.js +4 -0
- package/lib/module/components/ui/Stepper/StepperPressable.js.map +1 -0
- package/lib/module/components/ui/Stepper/StepperPressable.web.js +4 -0
- package/lib/module/components/ui/Stepper/StepperPressable.web.js.map +1 -0
- package/lib/module/components/ui/Stepper/accessibility.js +30 -0
- package/lib/module/components/ui/Stepper/accessibility.js.map +1 -0
- package/lib/module/components/ui/Stepper/accessibility.types.js +4 -0
- package/lib/module/components/ui/Stepper/accessibility.types.js.map +1 -0
- package/lib/module/components/ui/Stepper/accessibility.web.js +57 -0
- package/lib/module/components/ui/Stepper/accessibility.web.js.map +1 -0
- package/lib/module/components/ui/Stepper/layout.js +28 -0
- package/lib/module/components/ui/Stepper/layout.js.map +1 -0
- package/lib/module/components/ui/Stepper/normalizeStepper.js +53 -0
- package/lib/module/components/ui/Stepper/normalizeStepper.js.map +1 -0
- package/lib/module/components/ui/Stepper/styles.js +9 -2
- package/lib/module/components/ui/Stepper/styles.js.map +1 -1
- package/lib/module/components/ui/Switch/Switch.js +45 -19
- package/lib/module/components/ui/Switch/Switch.js.map +1 -1
- package/lib/module/components/ui/Switch/Switch.web.js +47 -20
- package/lib/module/components/ui/Switch/Switch.web.js.map +1 -1
- package/lib/module/components/ui/Switch/styles.js +12 -5
- package/lib/module/components/ui/Switch/styles.js.map +1 -1
- package/lib/module/components/ui/Tag/Tag.js +3 -2
- package/lib/module/components/ui/Tag/Tag.js.map +1 -1
- package/lib/module/components/ui/TextField/TextFieldBase.js +131 -86
- package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
- package/lib/module/components/ui/TextField/TextFieldSlot.js +82 -0
- package/lib/module/components/ui/TextField/TextFieldSlot.js.map +1 -0
- package/lib/module/components/ui/TextField/normalize.js +238 -0
- package/lib/module/components/ui/TextField/normalize.js.map +1 -0
- package/lib/module/components/ui/TextField/styles.js +31 -0
- package/lib/module/components/ui/TextField/styles.js.map +1 -1
- package/lib/module/components/ui/TextField/useErrorAnnouncement.js +27 -0
- package/lib/module/components/ui/TextField/useErrorAnnouncement.js.map +1 -0
- package/lib/module/components/ui/TextField/useTextFieldValue.js +66 -0
- package/lib/module/components/ui/TextField/useTextFieldValue.js.map +1 -0
- package/lib/module/components/ui/TextField/valueState.js +93 -0
- package/lib/module/components/ui/TextField/valueState.js.map +1 -0
- package/lib/module/components/ui/Textarea/Textarea.js +7 -3
- package/lib/module/components/ui/Textarea/Textarea.js.map +1 -1
- package/lib/module/components/ui/Thumbnail/Thumbnail.js +67 -48
- package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
- package/lib/module/components/ui/Thumbnail/normalize.js +58 -0
- package/lib/module/components/ui/Thumbnail/normalize.js.map +1 -0
- package/lib/module/components/ui/Thumbnail/styles.js +6 -11
- package/lib/module/components/ui/Thumbnail/styles.js.map +1 -1
- package/lib/module/components/ui/Toast/ToastHost.js +64 -21
- package/lib/module/components/ui/Toast/ToastHost.js.map +1 -1
- package/lib/module/components/ui/Toast/ToastHost.web.js +73 -24
- package/lib/module/components/ui/Toast/ToastHost.web.js.map +1 -1
- package/lib/module/components/ui/Toast/store.js +110 -0
- package/lib/module/components/ui/Toast/store.js.map +1 -0
- package/lib/module/components/ui/Toast/toast.js +17 -7
- package/lib/module/components/ui/Toast/toast.js.map +1 -1
- package/lib/module/components/ui/index.js.map +1 -1
- package/lib/module/components/ui/shared/ImageAttempt.js +28 -0
- package/lib/module/components/ui/shared/ImageAttempt.js.map +1 -0
- package/lib/module/components/ui/shared/a11y.js +21 -0
- package/lib/module/components/ui/shared/a11y.js.map +1 -0
- package/lib/module/components/ui/shared/accessibilityName.js +9 -0
- package/lib/module/components/ui/shared/accessibilityName.js.map +1 -0
- package/lib/module/components/ui/shared/selectImageAttemptSource.js +5 -0
- package/lib/module/components/ui/shared/selectImageAttemptSource.js.map +1 -0
- package/lib/module/components/ui/shared/selectImageAttemptSource.shared.js +13 -0
- package/lib/module/components/ui/shared/selectImageAttemptSource.shared.js.map +1 -0
- package/lib/module/components/ui/shared/selectImageAttemptSource.web.js +5 -0
- package/lib/module/components/ui/shared/selectImageAttemptSource.web.js.map +1 -0
- package/lib/module/icons/data.js +1 -1
- package/lib/module/icons/data.js.map +1 -1
- package/lib/module/theme/ThemeProvider.js +14 -4
- package/lib/module/theme/ThemeProvider.js.map +1 -1
- package/lib/module/theme/fontScale.js +13 -0
- package/lib/module/theme/fontScale.js.map +1 -0
- package/lib/module/theme/index.js +2 -4
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/themeContext.js +15 -0
- package/lib/module/theme/themeContext.js.map +1 -0
- package/lib/module/theme/themeDiagnostics.js +29 -0
- package/lib/module/theme/themeDiagnostics.js.map +1 -0
- package/lib/module/theme/usePrefersReducedMotion.js +11 -4
- package/lib/module/theme/usePrefersReducedMotion.js.map +1 -1
- package/lib/module/theme/usePrefersReducedMotion.web.js +5 -2
- package/lib/module/theme/usePrefersReducedMotion.web.js.map +1 -1
- package/lib/module/theme/useTheme.js +12 -25
- package/lib/module/theme/useTheme.js.map +1 -1
- package/lib/module/theme/useThemedStyles.js +9 -6
- package/lib/module/theme/useThemedStyles.js.map +1 -1
- package/lib/module/utils/imageSource.js +198 -0
- package/lib/module/utils/imageSource.js.map +1 -0
- package/lib/typescript/manual-tests/runtime-api/RuntimeApiScreen.d.ts +12 -0
- package/lib/typescript/manual-tests/runtime-api/RuntimeApiScreen.d.ts.map +1 -0
- package/lib/typescript/src/components/business/AvatarWithRing/AvatarWithRing.d.ts.map +1 -1
- package/lib/typescript/src/components/business/AvatarWithRing/styles.d.ts +8 -7
- package/lib/typescript/src/components/business/AvatarWithRing/styles.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/content.d.ts +19 -0
- package/lib/typescript/src/components/business/VersionPill/content.d.ts.map +1 -0
- package/lib/typescript/src/components/business/VersionPill/index.d.ts +1 -1
- package/lib/typescript/src/components/business/VersionPill/index.d.ts.map +1 -1
- package/lib/typescript/src/components/business/VersionPill/styles.d.ts +4 -0
- package/lib/typescript/src/components/business/VersionPill/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/business/VersionPill/types.d.ts +6 -2
- 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 +6 -5
- package/lib/typescript/src/components/business/useSvgId.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts +2 -2
- package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Avatar/types.d.ts +6 -2
- package/lib/typescript/src/components/ui/Avatar/types.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 +5 -3
- package/lib/typescript/src/components/ui/Button/ButtonBase.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Button/types.d.ts +5 -3
- package/lib/typescript/src/components/ui/Button/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Carousel/Carousel.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Carousel/behavior.d.ts +25 -0
- package/lib/typescript/src/components/ui/Carousel/behavior.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Carousel/styles.d.ts +4 -6
- package/lib/typescript/src/components/ui/Carousel/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Carousel/types.d.ts +14 -6
- package/lib/typescript/src/components/ui/Carousel/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Cell/Cell.d.ts +1 -1
- package/lib/typescript/src/components/ui/Cell/Cell.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Cell/Leading.d.ts +2 -3
- package/lib/typescript/src/components/ui/Cell/Leading.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Cell/content.d.ts +18 -0
- package/lib/typescript/src/components/ui/Cell/content.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Cell/index.d.ts +1 -1
- package/lib/typescript/src/components/ui/Cell/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Cell/types.d.ts +66 -30
- package/lib/typescript/src/components/ui/Cell/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Checkbox/Checkbox.d.ts +1 -1
- package/lib/typescript/src/components/ui/Checkbox/Checkbox.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Checkbox/types.d.ts +12 -3
- package/lib/typescript/src/components/ui/Checkbox/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/ConfirmHost.d.ts +6 -3
- package/lib/typescript/src/components/ui/Confirm/ConfirmHost.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/confirm.d.ts +10 -4
- package/lib/typescript/src/components/ui/Confirm/confirm.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/labels.d.ts +6 -0
- package/lib/typescript/src/components/ui/Confirm/labels.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Confirm/store.d.ts +44 -0
- package/lib/typescript/src/components/ui/Confirm/store.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Confirm/styles.d.ts +3 -0
- package/lib/typescript/src/components/ui/Confirm/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/types.d.ts +0 -9
- package/lib/typescript/src/components/ui/Confirm/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/DrawerHeader/DrawerHeader.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/DrawerHeader/types.d.ts +7 -1
- package/lib/typescript/src/components/ui/DrawerHeader/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Grid/Grid.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Grid/accessibility.d.ts +5 -0
- package/lib/typescript/src/components/ui/Grid/accessibility.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Grid/types.d.ts +2 -0
- package/lib/typescript/src/components/ui/Grid/types.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 +4 -2
- package/lib/typescript/src/components/ui/IconButton/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Input/Input.d.ts +5 -383
- package/lib/typescript/src/components/ui/Input/Input.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Input/index.d.ts +1 -0
- package/lib/typescript/src/components/ui/Input/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Input/types.d.ts +3 -17
- package/lib/typescript/src/components/ui/Input/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Logo/Logo.d.ts +2 -2
- package/lib/typescript/src/components/ui/Logo/Logo.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Logo/types.d.ts +2 -2
- package/lib/typescript/src/components/ui/Logo/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/NavBar/NavBar.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/NavBar/index.d.ts +1 -1
- package/lib/typescript/src/components/ui/NavBar/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/NavBar/isSlot.d.ts +24 -4
- package/lib/typescript/src/components/ui/NavBar/isSlot.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/NavBar/types.d.ts +8 -8
- package/lib/typescript/src/components/ui/NavBar/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/PasswordInput/PasswordInput.d.ts +6 -14
- package/lib/typescript/src/components/ui/PasswordInput/PasswordInput.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/PasswordInput/types.d.ts +4 -14
- package/lib/typescript/src/components/ui/PasswordInput/types.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/normalizePulseOptions.d.ts +32 -0
- package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts +10 -5
- package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Pulse/usePulseDriver.d.ts +11 -0
- package/lib/typescript/src/components/ui/Pulse/usePulseDriver.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts +18 -0
- package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Radio/Radio.d.ts +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 +2 -2
- package/lib/typescript/src/components/ui/Radio/RadioGroup.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Radio/types.d.ts +14 -3
- package/lib/typescript/src/components/ui/Radio/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Reveal/Reveal.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts +2 -8
- package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Reveal/types.d.ts +1 -1
- package/lib/typescript/src/components/ui/Reveal/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Reveal/webTransition.d.ts +38 -0
- package/lib/typescript/src/components/ui/Reveal/webTransition.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Search/Search.d.ts +4 -214
- package/lib/typescript/src/components/ui/Search/Search.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Search/types.d.ts +13 -6
- package/lib/typescript/src/components/ui/Search/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Segmented/Segmented.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts +3 -3
- package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Spinner/Spinner.d.ts +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 +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 -1
- package/lib/typescript/src/components/ui/Spinner/types.d.ts +1 -1
- package/lib/typescript/src/components/ui/Spinner/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Stepper/Stepper.d.ts +3 -3
- package/lib/typescript/src/components/ui/Stepper/Stepper.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Stepper/StepperPressable.d.ts +2 -0
- package/lib/typescript/src/components/ui/Stepper/StepperPressable.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Stepper/StepperPressable.web.d.ts +2 -0
- package/lib/typescript/src/components/ui/Stepper/StepperPressable.web.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Stepper/accessibility.d.ts +3 -0
- package/lib/typescript/src/components/ui/Stepper/accessibility.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Stepper/accessibility.types.d.ts +23 -0
- package/lib/typescript/src/components/ui/Stepper/accessibility.types.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Stepper/accessibility.web.d.ts +9 -0
- package/lib/typescript/src/components/ui/Stepper/accessibility.web.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Stepper/layout.d.ts +22 -0
- package/lib/typescript/src/components/ui/Stepper/layout.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Stepper/normalizeStepper.d.ts +31 -0
- package/lib/typescript/src/components/ui/Stepper/normalizeStepper.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Stepper/styles.d.ts +9 -2
- package/lib/typescript/src/components/ui/Stepper/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Stepper/types.d.ts +3 -1
- package/lib/typescript/src/components/ui/Stepper/types.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 +9 -3
- package/lib/typescript/src/components/ui/Switch/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Switch/types.d.ts +2 -2
- package/lib/typescript/src/components/ui/Switch/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Tag/Tag.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts +4 -401
- package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/TextFieldSlot.d.ts +13 -0
- package/lib/typescript/src/components/ui/TextField/TextFieldSlot.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/TextField/normalize.d.ts +51 -0
- package/lib/typescript/src/components/ui/TextField/normalize.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/TextField/styles.d.ts +30 -0
- package/lib/typescript/src/components/ui/TextField/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/types.d.ts +92 -18
- package/lib/typescript/src/components/ui/TextField/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/useErrorAnnouncement.d.ts +3 -0
- package/lib/typescript/src/components/ui/TextField/useErrorAnnouncement.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/TextField/useTextFieldValue.d.ts +18 -0
- package/lib/typescript/src/components/ui/TextField/useTextFieldValue.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/TextField/valueState.d.ts +50 -0
- package/lib/typescript/src/components/ui/TextField/valueState.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts +4 -382
- package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Textarea/index.d.ts +1 -0
- package/lib/typescript/src/components/ui/Textarea/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Textarea/types.d.ts +3 -14
- package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts +5 -12
- package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/index.d.ts +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts +13 -0
- package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts +4 -8
- package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/types.d.ts +21 -13
- package/lib/typescript/src/components/ui/Thumbnail/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/ToastHost.d.ts +6 -2
- package/lib/typescript/src/components/ui/Toast/ToastHost.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/ToastHost.web.d.ts +6 -3
- package/lib/typescript/src/components/ui/Toast/ToastHost.web.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/store.d.ts +39 -0
- package/lib/typescript/src/components/ui/Toast/store.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Toast/toast.d.ts +7 -2
- package/lib/typescript/src/components/ui/Toast/toast.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/types.d.ts +5 -3
- package/lib/typescript/src/components/ui/Toast/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/index.d.ts +4 -4
- package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/shared/ImageAttempt.d.ts +13 -0
- package/lib/typescript/src/components/ui/shared/ImageAttempt.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/a11y.d.ts +19 -0
- package/lib/typescript/src/components/ui/shared/a11y.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/accessibilityName.d.ts +3 -0
- package/lib/typescript/src/components/ui/shared/accessibilityName.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.d.ts +3 -0
- package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.shared.d.ts +4 -0
- package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.shared.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.web.d.ts +3 -0
- package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.web.d.ts.map +1 -0
- package/lib/typescript/src/theme/ThemeProvider.d.ts +2 -3
- package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theme/fontScale.d.ts +4 -0
- package/lib/typescript/src/theme/fontScale.d.ts.map +1 -0
- package/lib/typescript/src/theme/index.d.ts +2 -1
- package/lib/typescript/src/theme/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/themeContext.d.ts +6 -0
- package/lib/typescript/src/theme/themeContext.d.ts.map +1 -0
- package/lib/typescript/src/theme/themeDiagnostics.d.ts +6 -0
- package/lib/typescript/src/theme/themeDiagnostics.d.ts.map +1 -0
- package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts +8 -3
- package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts.map +1 -1
- package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts +5 -2
- package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts.map +1 -1
- package/lib/typescript/src/theme/useTheme.d.ts +1 -1
- package/lib/typescript/src/theme/useTheme.d.ts.map +1 -1
- package/lib/typescript/src/theme/useThemedStyles.d.ts +1 -1
- package/lib/typescript/src/theme/useThemedStyles.d.ts.map +1 -1
- package/lib/typescript/src/utils/imageSource.d.ts +20 -0
- package/lib/typescript/src/utils/imageSource.d.ts.map +1 -0
- package/lib/typescript/type-tests/public-api.d.ts +2 -0
- package/lib/typescript/type-tests/public-api.d.ts.map +1 -0
- package/lib/typescript/website/src/components/iconCatalogCategories.d.ts +11 -0
- package/lib/typescript/website/src/components/iconCatalogCategories.d.ts.map +1 -0
- package/package.json +30 -14
- package/src/components/business/AvatarWithRing/AvatarWithRing.tsx +11 -4
- package/src/components/business/AvatarWithRing/styles.ts +11 -9
- package/src/components/business/VersionPill/VersionPill.tsx +31 -25
- package/src/components/business/VersionPill/content.ts +47 -0
- package/src/components/business/VersionPill/index.ts +1 -1
- package/src/components/business/VersionPill/styles.ts +4 -0
- package/src/components/business/VersionPill/types.ts +7 -2
- package/src/components/business/index.ts +1 -1
- package/src/components/business/useSvgId.ts +29 -8
- package/src/components/ui/Avatar/Avatar.tsx +25 -34
- package/src/components/ui/Avatar/types.ts +6 -2
- package/src/components/ui/Button/Button.tsx +39 -20
- package/src/components/ui/Button/ButtonBase.tsx +21 -12
- package/src/components/ui/Button/types.ts +5 -3
- package/src/components/ui/Carousel/Carousel.tsx +102 -40
- package/src/components/ui/Carousel/behavior.ts +78 -0
- package/src/components/ui/Carousel/styles.ts +5 -7
- package/src/components/ui/Carousel/types.ts +18 -6
- package/src/components/ui/Cell/Cell.tsx +85 -74
- package/src/components/ui/Cell/Leading.tsx +14 -14
- package/src/components/ui/Cell/content.ts +53 -0
- package/src/components/ui/Cell/index.ts +7 -1
- package/src/components/ui/Cell/types.ts +64 -30
- package/src/components/ui/Checkbox/Checkbox.tsx +35 -8
- package/src/components/ui/Checkbox/types.ts +15 -3
- package/src/components/ui/Confirm/ConfirmHost.tsx +51 -26
- package/src/components/ui/Confirm/confirm.ts +17 -34
- package/src/components/ui/Confirm/labels.ts +14 -0
- package/src/components/ui/Confirm/store.ts +147 -0
- package/src/components/ui/Confirm/styles.ts +4 -0
- package/src/components/ui/Confirm/types.ts +2 -10
- package/src/components/ui/DrawerHeader/DrawerHeader.tsx +22 -27
- package/src/components/ui/DrawerHeader/types.ts +7 -1
- package/src/components/ui/Grid/Grid.tsx +44 -12
- package/src/components/ui/Grid/accessibility.ts +21 -0
- package/src/components/ui/Grid/types.ts +2 -0
- package/src/components/ui/IconButton/IconButton.tsx +20 -3
- package/src/components/ui/IconButton/types.ts +4 -2
- package/src/components/ui/Input/Input.tsx +16 -6
- package/src/components/ui/Input/index.ts +5 -0
- package/src/components/ui/Input/types.ts +12 -23
- package/src/components/ui/Logo/Logo.tsx +27 -4
- package/src/components/ui/Logo/types.ts +2 -2
- package/src/components/ui/NavBar/NavBar.tsx +27 -19
- package/src/components/ui/NavBar/index.ts +1 -1
- package/src/components/ui/NavBar/isSlot.ts +372 -5
- package/src/components/ui/NavBar/types.ts +9 -8
- package/src/components/ui/PasswordInput/PasswordInput.tsx +67 -69
- package/src/components/ui/PasswordInput/types.ts +12 -14
- package/src/components/ui/Pulse/PulseDot.tsx +5 -4
- package/src/components/ui/Pulse/normalizePulseOptions.ts +76 -0
- package/src/components/ui/Pulse/usePulse.ts +80 -34
- package/src/components/ui/Pulse/usePulseDriver.ts +49 -0
- package/src/components/ui/Pulse/usePulseDriver.web.ts +66 -0
- package/src/components/ui/Radio/Radio.tsx +44 -15
- package/src/components/ui/Radio/RadioGroup.tsx +21 -3
- package/src/components/ui/Radio/types.ts +17 -3
- package/src/components/ui/Reveal/Reveal.tsx +5 -3
- package/src/components/ui/Reveal/Reveal.web.tsx +72 -29
- package/src/components/ui/Reveal/types.ts +1 -1
- package/src/components/ui/Reveal/webTransition.ts +206 -0
- package/src/components/ui/Search/Search.tsx +127 -58
- package/src/components/ui/Search/types.ts +30 -9
- package/src/components/ui/Segmented/Segmented.tsx +10 -2
- package/src/components/ui/Skeleton/Skeleton.tsx +9 -5
- package/src/components/ui/Spinner/Spinner.tsx +25 -17
- package/src/components/ui/Spinner/Spinner.web.tsx +23 -18
- package/src/components/ui/Spinner/shared.ts +7 -0
- package/src/components/ui/Spinner/types.ts +1 -1
- package/src/components/ui/Stepper/Stepper.tsx +166 -86
- package/src/components/ui/Stepper/StepperPressable.tsx +1 -0
- package/src/components/ui/Stepper/StepperPressable.web.tsx +1 -0
- package/src/components/ui/Stepper/accessibility.ts +32 -0
- package/src/components/ui/Stepper/accessibility.types.ts +22 -0
- package/src/components/ui/Stepper/accessibility.web.ts +65 -0
- package/src/components/ui/Stepper/layout.ts +44 -0
- package/src/components/ui/Stepper/normalizeStepper.ts +85 -0
- package/src/components/ui/Stepper/styles.ts +9 -2
- package/src/components/ui/Stepper/types.ts +3 -1
- package/src/components/ui/Switch/Switch.tsx +54 -15
- package/src/components/ui/Switch/Switch.web.tsx +57 -19
- package/src/components/ui/Switch/styles.ts +11 -4
- package/src/components/ui/Switch/types.ts +2 -2
- package/src/components/ui/Tag/Tag.tsx +6 -2
- package/src/components/ui/TextField/TextFieldBase.tsx +175 -70
- package/src/components/ui/TextField/TextFieldSlot.tsx +91 -0
- package/src/components/ui/TextField/normalize.ts +280 -0
- package/src/components/ui/TextField/styles.ts +31 -0
- package/src/components/ui/TextField/types.ts +118 -22
- package/src/components/ui/TextField/useErrorAnnouncement.ts +27 -0
- package/src/components/ui/TextField/useTextFieldValue.ts +94 -0
- package/src/components/ui/TextField/valueState.ts +125 -0
- package/src/components/ui/Textarea/Textarea.tsx +11 -4
- package/src/components/ui/Textarea/index.ts +5 -0
- package/src/components/ui/Textarea/types.ts +14 -22
- package/src/components/ui/Thumbnail/Thumbnail.tsx +86 -51
- package/src/components/ui/Thumbnail/index.ts +5 -1
- package/src/components/ui/Thumbnail/normalize.ts +78 -0
- package/src/components/ui/Thumbnail/styles.ts +5 -10
- package/src/components/ui/Thumbnail/types.ts +43 -13
- package/src/components/ui/Toast/ToastHost.tsx +81 -22
- package/src/components/ui/Toast/ToastHost.web.tsx +91 -29
- package/src/components/ui/Toast/store.ts +148 -0
- package/src/components/ui/Toast/toast.ts +19 -10
- package/src/components/ui/Toast/types.ts +7 -3
- package/src/components/ui/index.ts +19 -4
- package/src/components/ui/shared/ImageAttempt.tsx +30 -0
- package/src/components/ui/shared/a11y.ts +18 -0
- package/src/components/ui/shared/accessibilityName.ts +6 -0
- package/src/components/ui/shared/selectImageAttemptSource.shared.ts +17 -0
- package/src/components/ui/shared/selectImageAttemptSource.ts +3 -0
- package/src/components/ui/shared/selectImageAttemptSource.web.ts +3 -0
- package/src/icons/data.ts +1 -1
- package/src/theme/ThemeProvider.tsx +18 -7
- package/src/theme/fontScale.ts +15 -0
- package/src/theme/index.ts +2 -3
- package/src/theme/themeContext.ts +24 -0
- package/src/theme/themeDiagnostics.ts +41 -0
- package/src/theme/usePrefersReducedMotion.ts +11 -4
- package/src/theme/usePrefersReducedMotion.web.ts +5 -2
- package/src/theme/useTheme.ts +19 -27
- package/src/theme/useThemedStyles.ts +12 -7
- package/src/utils/imageSource.ts +303 -0
- package/lib/module/components/ui/PasswordInput/styles.js +0 -12
- package/lib/module/components/ui/PasswordInput/styles.js.map +0 -1
- package/lib/module/components/ui/Pulse/usePulse.web.js +0 -76
- package/lib/module/components/ui/Pulse/usePulse.web.js.map +0 -1
- package/lib/typescript/src/components/ui/PasswordInput/styles.d.ts +0 -7
- package/lib/typescript/src/components/ui/PasswordInput/styles.d.ts.map +0 -1
- package/lib/typescript/src/components/ui/Pulse/usePulse.web.d.ts +0 -21
- package/lib/typescript/src/components/ui/Pulse/usePulse.web.d.ts.map +0 -1
- package/src/components/ui/PasswordInput/styles.ts +0 -7
- package/src/components/ui/Pulse/usePulse.web.ts +0 -74
|
@@ -16,6 +16,17 @@ export const makeStyles = c => StyleSheet.create({
|
|
|
16
16
|
paddingVertical: space[4],
|
|
17
17
|
alignItems: 'flex-start'
|
|
18
18
|
},
|
|
19
|
+
/** Search 的可见底色/边框绝不承载命中区域。 */
|
|
20
|
+
searchInteractiveRow: {
|
|
21
|
+
borderWidth: 0
|
|
22
|
+
},
|
|
23
|
+
searchVisibleSurface: {
|
|
24
|
+
position: 'absolute',
|
|
25
|
+
left: 0,
|
|
26
|
+
right: 0,
|
|
27
|
+
borderRadius: radius.md,
|
|
28
|
+
borderWidth: 1
|
|
29
|
+
},
|
|
19
30
|
wrapIdle: {
|
|
20
31
|
backgroundColor: c.surfaceContainerHigh,
|
|
21
32
|
borderColor: 'transparent'
|
|
@@ -47,6 +58,23 @@ export const makeStyles = c => StyleSheet.create({
|
|
|
47
58
|
inputMultiline: {
|
|
48
59
|
textAlignVertical: 'top'
|
|
49
60
|
},
|
|
61
|
+
slotDisplay: {
|
|
62
|
+
alignItems: 'center',
|
|
63
|
+
justifyContent: 'center',
|
|
64
|
+
minWidth: 18,
|
|
65
|
+
minHeight: 18
|
|
66
|
+
},
|
|
67
|
+
slotText: {
|
|
68
|
+
color: c.foregroundMuted,
|
|
69
|
+
fontSize: t.sm
|
|
70
|
+
},
|
|
71
|
+
// 固定命中框不走 r()/fontScale:它是手指可达性约束,不是视觉 token。
|
|
72
|
+
actionFrame: {
|
|
73
|
+
width: 44,
|
|
74
|
+
height: 44,
|
|
75
|
+
alignItems: 'center',
|
|
76
|
+
justifyContent: 'center'
|
|
77
|
+
},
|
|
50
78
|
errorMsg: {
|
|
51
79
|
fontSize: t.micro,
|
|
52
80
|
color: c.error,
|
|
@@ -56,6 +84,9 @@ export const makeStyles = c => StyleSheet.create({
|
|
|
56
84
|
},
|
|
57
85
|
containerDisabled: {
|
|
58
86
|
opacity: 0.5
|
|
87
|
+
},
|
|
88
|
+
rootCentered: {
|
|
89
|
+
justifyContent: 'center'
|
|
59
90
|
}
|
|
60
91
|
});
|
|
61
92
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","fw","radius","space","type","t","makeStyles","c","create","wrap","flexDirection","alignItems","gap","paddingHorizontal","borderRadius","md","borderWidth","wrapMultiline","paddingVertical","wrapIdle","backgroundColor","surfaceContainerHigh","borderColor","wrapActive","surface","wrapFocus","primary","wrapFilled","outline","wrapError","error","input","flex","minWidth","fontSize","body","color","foreground","padding","margin","outlineWidth","inputMultiline","textAlignVertical","errorMsg","micro","marginTop","fontWeight","regular","containerDisabled","opacity"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,IAAIC,CAAC,QAAQ,yBAAgB;AAG7D;AACA,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCP,UAAU,CAACQ,MAAM,CAAC;EAChBC,IAAI,EAAE;IACJC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAET,KAAK,CAAC,CAAC,CAAC;IACbU,iBAAiB,EAAEV,KAAK,CAAC,CAAC,CAAC;IAC3BW,YAAY,EAAEZ,MAAM,CAACa,EAAE;IACvBC,WAAW,EAAE;EACf,CAAC;EACDC,aAAa,EAAE;IACbC,eAAe,EAAEf,KAAK,CAAC,CAAC,CAAC;IACzBQ,UAAU,EAAE;EACd,CAAC;EACDQ,QAAQ,EAAE;IACRC,eAAe,
|
|
1
|
+
{"version":3,"names":["StyleSheet","fw","radius","space","type","t","makeStyles","c","create","wrap","flexDirection","alignItems","gap","paddingHorizontal","borderRadius","md","borderWidth","wrapMultiline","paddingVertical","searchInteractiveRow","searchVisibleSurface","position","left","right","wrapIdle","backgroundColor","surfaceContainerHigh","borderColor","wrapActive","surface","wrapFocus","primary","wrapFilled","outline","wrapError","error","input","flex","minWidth","fontSize","body","color","foreground","padding","margin","outlineWidth","inputMultiline","textAlignVertical","slotDisplay","justifyContent","minHeight","slotText","foregroundMuted","sm","actionFrame","width","height","errorMsg","micro","marginTop","fontWeight","regular","containerDisabled","opacity","rootCentered"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,IAAIC,CAAC,QAAQ,yBAAgB;AAG7D;AACA,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCP,UAAU,CAACQ,MAAM,CAAC;EAChBC,IAAI,EAAE;IACJC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAET,KAAK,CAAC,CAAC,CAAC;IACbU,iBAAiB,EAAEV,KAAK,CAAC,CAAC,CAAC;IAC3BW,YAAY,EAAEZ,MAAM,CAACa,EAAE;IACvBC,WAAW,EAAE;EACf,CAAC;EACDC,aAAa,EAAE;IACbC,eAAe,EAAEf,KAAK,CAAC,CAAC,CAAC;IACzBQ,UAAU,EAAE;EACd,CAAC;EACD;EACAQ,oBAAoB,EAAE;IACpBH,WAAW,EAAE;EACf,CAAC;EACDI,oBAAoB,EAAE;IACpBC,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRT,YAAY,EAAEZ,MAAM,CAACa,EAAE;IACvBC,WAAW,EAAE;EACf,CAAC;EACDQ,QAAQ,EAAE;IACRC,eAAe,EAAElB,CAAC,CAACmB,oBAAoB;IACvCC,WAAW,EAAE;EACf,CAAC;EACD;EACAC,UAAU,EAAE;IACVH,eAAe,EAAElB,CAAC,CAACsB;EACrB,CAAC;EACDC,SAAS,EAAE;IACTH,WAAW,EAAEpB,CAAC,CAACwB;EACjB,CAAC;EACDC,UAAU,EAAE;IACVL,WAAW,EAAEpB,CAAC,CAAC0B;EACjB,CAAC;EACDC,SAAS,EAAE;IACTP,WAAW,EAAEpB,CAAC,CAAC4B;EACjB,CAAC;EACDC,KAAK,EAAE;IACLC,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,CAAC;IACXC,QAAQ,EAAElC,CAAC,CAACmC,IAAI;IAChBC,KAAK,EAAElC,CAAC,CAACmC,UAAU;IACnBC,OAAO,EAAE,CAAC;IACVC,MAAM,EAAE,CAAC;IACT;IACAC,YAAY,EAAE;EAChB,CAAC;EACD;EACAC,cAAc,EAAE;IACdC,iBAAiB,EAAE;EACrB,CAAC;EACDC,WAAW,EAAE;IACXrC,UAAU,EAAE,QAAQ;IACpBsC,cAAc,EAAE,QAAQ;IACxBX,QAAQ,EAAE,EAAE;IACZY,SAAS,EAAE;EACb,CAAC;EACDC,QAAQ,EAAE;IACRV,KAAK,EAAElC,CAAC,CAAC6C,eAAe;IACxBb,QAAQ,EAAElC,CAAC,CAACgD;EACd,CAAC;EACD;EACAC,WAAW,EAAE;IACXC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACV7C,UAAU,EAAE,QAAQ;IACpBsC,cAAc,EAAE;EAClB,CAAC;EACDQ,QAAQ,EAAE;IACRlB,QAAQ,EAAElC,CAAC,CAACqD,KAAK;IACjBjB,KAAK,EAAElC,CAAC,CAAC4B,KAAK;IACdwB,SAAS,EAAExD,KAAK,CAAC,CAAC,CAAC;IACnBU,iBAAiB,EAAEV,KAAK,CAAC,CAAC,CAAC;IAC3ByD,UAAU,EAAE3D,EAAE,CAAC4D;EACjB,CAAC;EACDC,iBAAiB,EAAE;IACjBC,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZf,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useRef } from 'react';
|
|
4
|
+
import { AccessibilityInfo, Platform } from 'react-native';
|
|
5
|
+
|
|
6
|
+
/** iOS 不会像 Android live region 一样自动播报动态错误,仅播报真实的后续变更。 */
|
|
7
|
+
export function useErrorAnnouncement(error) {
|
|
8
|
+
const previousError = useRef('');
|
|
9
|
+
const didCommit = useRef(false);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
const nextError = error ?? '';
|
|
12
|
+
const previous = previousError.current;
|
|
13
|
+
previousError.current = nextError;
|
|
14
|
+
if (!didCommit.current) {
|
|
15
|
+
didCommit.current = true;
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
if (Platform.OS !== 'ios' || nextError === '' || nextError === previous) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const timer = setTimeout(() => {
|
|
22
|
+
AccessibilityInfo.announceForAccessibility(nextError);
|
|
23
|
+
}, 0);
|
|
24
|
+
return () => clearTimeout(timer);
|
|
25
|
+
}, [error]);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=useErrorAnnouncement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","AccessibilityInfo","Platform","useErrorAnnouncement","error","previousError","didCommit","nextError","previous","current","undefined","OS","timer","setTimeout","announceForAccessibility","clearTimeout"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/useErrorAnnouncement.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,iBAAiB,EAAEC,QAAQ,QAAQ,cAAc;;AAE1D;AACA,OAAO,SAASC,oBAAoBA,CAACC,KAAyB,EAAQ;EACpE,MAAMC,aAAa,GAAGL,MAAM,CAAC,EAAE,CAAC;EAChC,MAAMM,SAAS,GAAGN,MAAM,CAAC,KAAK,CAAC;EAE/BD,SAAS,CAAC,MAAM;IACd,MAAMQ,SAAS,GAAGH,KAAK,IAAI,EAAE;IAC7B,MAAMI,QAAQ,GAAGH,aAAa,CAACI,OAAO;IACtCJ,aAAa,CAACI,OAAO,GAAGF,SAAS;IAEjC,IAAI,CAACD,SAAS,CAACG,OAAO,EAAE;MACtBH,SAAS,CAACG,OAAO,GAAG,IAAI;MACxB,OAAOC,SAAS;IAClB;IACA,IAAIR,QAAQ,CAACS,EAAE,KAAK,KAAK,IAAIJ,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAKC,QAAQ,EAAE;MACvE,OAAOE,SAAS;IAClB;IAEA,MAAME,KAAK,GAAGC,UAAU,CAAC,MAAM;MAC7BZ,iBAAiB,CAACa,wBAAwB,CAACP,SAAS,CAAC;IACvD,CAAC,EAAE,CAAC,CAAC;IACL,OAAO,MAAMQ,YAAY,CAACH,KAAK,CAAC;EAClC,CAAC,EAAE,CAACR,KAAK,CAAC,CAAC;AACb","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { createLogger } from "../../../utils/logger/index.js";
|
|
5
|
+
import { applyTextChange, createValueState, reconcileValueState, resolveCanUpdate } from "./valueState.js";
|
|
6
|
+
const log = createLogger('TextField');
|
|
7
|
+
const DIAGNOSTIC_MESSAGE = {
|
|
8
|
+
'controlled-to-uncontrolled': '受控输入的 value 变成了 undefined。mode 已在首次 render 锁定为受控,本次沿用上一个合法值 —— 请始终传字符串(清空用 "")。',
|
|
9
|
+
'uncontrolled-to-controlled': '非受控输入后来收到了 value。mode 已在首次 render 锁定为非受控,该 value 被忽略 —— 请从一开始就同时传 value 与 onChangeText。',
|
|
10
|
+
'invalid-controlled-value': '受控输入的 value 必须是字符串。已保持最后一个合法值,不会切换到非受控 mode。'
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* 把纯值状态机接到 React 上。
|
|
14
|
+
*
|
|
15
|
+
* state 放在 ref 而不是 useState:mode 与受控值必须在**本次 render 内**就正确,
|
|
16
|
+
* 不能等下一次提交 —— 否则受控组件会先渲染一帧旧值。非受控写入用一个递增 tick
|
|
17
|
+
* 触发重渲染,值本身仍以 ref 为准。
|
|
18
|
+
*
|
|
19
|
+
* 诊断只在 effect 里打:render 期打日志在 StrictMode 双调用下会重复,
|
|
20
|
+
* 且违反 render 必须纯净的约束。
|
|
21
|
+
*/
|
|
22
|
+
export function useTextFieldValue({
|
|
23
|
+
value,
|
|
24
|
+
defaultValue,
|
|
25
|
+
onChangeText
|
|
26
|
+
}, scope) {
|
|
27
|
+
const stateRef = useRef(null);
|
|
28
|
+
if (stateRef.current === null) {
|
|
29
|
+
stateRef.current = createValueState(value, defaultValue);
|
|
30
|
+
}
|
|
31
|
+
const [, bumpTick] = useState(0);
|
|
32
|
+
const transition = reconcileValueState(stateRef.current, value);
|
|
33
|
+
stateRef.current = transition.state;
|
|
34
|
+
const mode = transition.state.mode;
|
|
35
|
+
const canUpdate = resolveCanUpdate(mode, onChangeText);
|
|
36
|
+
const diagnostic = transition.diagnostic;
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (diagnostic) log.warn(`${scope}: ${DIAGNOSTIC_MESSAGE[diagnostic]}`);
|
|
39
|
+
}, [diagnostic, scope]);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (!canUpdate) {
|
|
42
|
+
log.warn(`${scope}: 受控输入缺少 onChangeText,输入将无法生效。请补上回调,或改用非受控(不传 value)。`);
|
|
43
|
+
}
|
|
44
|
+
}, [canUpdate, scope]);
|
|
45
|
+
const handleChangeText = useCallback(next => {
|
|
46
|
+
const current = stateRef.current;
|
|
47
|
+
if (!current) return;
|
|
48
|
+
if (current.mode === 'uncontrolled') {
|
|
49
|
+
stateRef.current = applyTextChange(current, next);
|
|
50
|
+
bumpTick(tick => tick + 1);
|
|
51
|
+
onChangeText?.(next);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// 受控:内部永不写值,只把输入交给调用方。没有回调时直接 no-op ——
|
|
55
|
+
// 若照旧透传给原生,UI 会显示一个 state 里并不存在的值。
|
|
56
|
+
if (!canUpdate) return;
|
|
57
|
+
onChangeText?.(next);
|
|
58
|
+
}, [canUpdate, onChangeText]);
|
|
59
|
+
return {
|
|
60
|
+
mode,
|
|
61
|
+
value: transition.value,
|
|
62
|
+
canUpdate,
|
|
63
|
+
onChangeText: handleChangeText
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=useTextFieldValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","createLogger","applyTextChange","createValueState","reconcileValueState","resolveCanUpdate","log","DIAGNOSTIC_MESSAGE","useTextFieldValue","value","defaultValue","onChangeText","scope","stateRef","current","bumpTick","transition","state","mode","canUpdate","diagnostic","warn","handleChangeText","next","tick"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/useTextFieldValue.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAChE,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SACEC,eAAe,EACfC,gBAAgB,EAChBC,mBAAmB,EACnBC,gBAAgB,QACX,iBAAc;AAOrB,MAAMC,GAAG,GAAGL,YAAY,CAAC,WAAW,CAAC;AAErC,MAAMM,kBAAmD,GAAG;EAC1D,4BAA4B,EAC1B,iFAAiF;EACnF,4BAA4B,EAC1B,yFAAyF;EAC3F,0BAA0B,EACxB;AACJ,CAAC;AAQD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC/B;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAqC,CAAC,EAC7DC,KAAa,EACa;EAC1B,MAAMC,QAAQ,GAAGd,MAAM,CAAoB,IAAI,CAAC;EAChD,IAAIc,QAAQ,CAACC,OAAO,KAAK,IAAI,EAAE;IAC7BD,QAAQ,CAACC,OAAO,GAAGX,gBAAgB,CAACM,KAAK,EAAEC,YAAY,CAAC;EAC1D;EACA,MAAM,GAAGK,QAAQ,CAAC,GAAGf,QAAQ,CAAC,CAAC,CAAC;EAEhC,MAAMgB,UAAU,GAAGZ,mBAAmB,CAACS,QAAQ,CAACC,OAAO,EAAEL,KAAK,CAAC;EAC/DI,QAAQ,CAACC,OAAO,GAAGE,UAAU,CAACC,KAAK;EACnC,MAAMC,IAAI,GAAGF,UAAU,CAACC,KAAK,CAACC,IAAI;EAClC,MAAMC,SAAS,GAAGd,gBAAgB,CAACa,IAAI,EAAEP,YAAY,CAAC;EAEtD,MAAMS,UAAU,GAAGJ,UAAU,CAACI,UAAU;EACxCtB,SAAS,CAAC,MAAM;IACd,IAAIsB,UAAU,EAAEd,GAAG,CAACe,IAAI,CAAC,GAAGT,KAAK,KAAKL,kBAAkB,CAACa,UAAU,CAAC,EAAE,CAAC;EACzE,CAAC,EAAE,CAACA,UAAU,EAAER,KAAK,CAAC,CAAC;EAEvBd,SAAS,CAAC,MAAM;IACd,IAAI,CAACqB,SAAS,EAAE;MACdb,GAAG,CAACe,IAAI,CACN,GAAGT,KAAK,uDACV,CAAC;IACH;EACF,CAAC,EAAE,CAACO,SAAS,EAAEP,KAAK,CAAC,CAAC;EAEtB,MAAMU,gBAAgB,GAAGzB,WAAW,CACjC0B,IAAY,IAAK;IAChB,MAAMT,OAAO,GAAGD,QAAQ,CAACC,OAAO;IAChC,IAAI,CAACA,OAAO,EAAE;IACd,IAAIA,OAAO,CAACI,IAAI,KAAK,cAAc,EAAE;MACnCL,QAAQ,CAACC,OAAO,GAAGZ,eAAe,CAACY,OAAO,EAAES,IAAI,CAAC;MACjDR,QAAQ,CAAES,IAAI,IAAKA,IAAI,GAAG,CAAC,CAAC;MAC5Bb,YAAY,GAAGY,IAAI,CAAC;MACpB;IACF;IACA;IACA;IACA,IAAI,CAACJ,SAAS,EAAE;IAChBR,YAAY,GAAGY,IAAI,CAAC;EACtB,CAAC,EACD,CAACJ,SAAS,EAAER,YAAY,CAC1B,CAAC;EAED,OAAO;IACLO,IAAI;IACJT,KAAK,EAAEO,UAAU,CAACP,KAAK;IACvBU,SAAS;IACTR,YAAY,EAAEW;EAChB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TextField 家族的**纯值状态机** —— 无 React 依赖,可直接单测。
|
|
5
|
+
*
|
|
6
|
+
* 核心规则:**mode 在首次 render 锁定,之后永不切换**。
|
|
7
|
+
*
|
|
8
|
+
* 为什么 —— 受控 / 非受控中途互换是 React 里最难查的一类 bug:光标跳位、输入被回滚、
|
|
9
|
+
* 表单提交拿到过期值。与其在每次 render 猜测调用方意图,不如锁定一次并在偏离时报诊断。
|
|
10
|
+
*
|
|
11
|
+
* mode 判据是 `value !== undefined`,**不是** `'value' in props` 也不是
|
|
12
|
+
* `typeof value === 'string'`:前者会把 `<Input value={maybeUndefined} />` 这种
|
|
13
|
+
* 常见写法误判为受控(值一旦为 undefined 就锁死输入),后者对显式 `undefined` 与
|
|
14
|
+
* 缺省无法区分。显式 `undefined` 一律按非受控处理。
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export function createValueState(value, defaultValue) {
|
|
18
|
+
if (value !== undefined) {
|
|
19
|
+
const safeValue = typeof value === 'string' ? value : '';
|
|
20
|
+
return {
|
|
21
|
+
mode: 'controlled',
|
|
22
|
+
value: safeValue,
|
|
23
|
+
lastValidControlledValue: safeValue
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
mode: 'uncontrolled',
|
|
28
|
+
value: typeof defaultValue === 'string' ? defaultValue : ''
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 用本轮 render 的 `value` 与已锁定的 state 对账。返回新 state(不原地修改)、
|
|
34
|
+
* 本轮应当显示的值,以及偏离锁定 mode 时的诊断。
|
|
35
|
+
*/
|
|
36
|
+
export function reconcileValueState(state, incomingValue) {
|
|
37
|
+
if (state.mode === 'controlled') {
|
|
38
|
+
if (incomingValue === undefined) {
|
|
39
|
+
// 受控组件的 value 变成 undefined:保持受控,显示最后一个合法值。
|
|
40
|
+
// 若直接透传 undefined 给 TextInput,RN 会把它当成非受控并保留用户输入 —— 静默换 mode。
|
|
41
|
+
return {
|
|
42
|
+
state,
|
|
43
|
+
value: state.lastValidControlledValue,
|
|
44
|
+
diagnostic: 'controlled-to-uncontrolled'
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (typeof incomingValue !== 'string') {
|
|
48
|
+
return {
|
|
49
|
+
state,
|
|
50
|
+
value: state.lastValidControlledValue,
|
|
51
|
+
diagnostic: 'invalid-controlled-value'
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
state: {
|
|
56
|
+
mode: 'controlled',
|
|
57
|
+
value: incomingValue,
|
|
58
|
+
lastValidControlledValue: incomingValue
|
|
59
|
+
},
|
|
60
|
+
value: incomingValue
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (incomingValue !== undefined) {
|
|
64
|
+
// 非受控组件后来又传了 value:忽略它,继续用内部值,只报诊断。
|
|
65
|
+
return {
|
|
66
|
+
state,
|
|
67
|
+
value: state.value,
|
|
68
|
+
diagnostic: 'uncontrolled-to-controlled'
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
state,
|
|
73
|
+
value: state.value
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** 用户输入。只有非受控才写内部值;受控的值永远来自调用方。 */
|
|
78
|
+
export function applyTextChange(state, text) {
|
|
79
|
+
if (state.mode === 'controlled') return state;
|
|
80
|
+
return {
|
|
81
|
+
mode: 'uncontrolled',
|
|
82
|
+
value: text
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* 非受控恒可更新(内部持值);受控只有拿到 `onChangeText` 才可更新 ——
|
|
88
|
+
* 类型层已要求受控必须带回调,这里兜住未走类型的 JS 调用方。
|
|
89
|
+
*/
|
|
90
|
+
export function resolveCanUpdate(mode, onChangeText) {
|
|
91
|
+
return mode === 'uncontrolled' || typeof onChangeText === 'function';
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=valueState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createValueState","value","defaultValue","undefined","safeValue","mode","lastValidControlledValue","reconcileValueState","state","incomingValue","diagnostic","applyTextChange","text","resolveCanUpdate","onChangeText"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/valueState.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAkCA,OAAO,SAASA,gBAAgBA,CAC9BC,KAAc,EACdC,YAAqB,EACT;EACZ,IAAID,KAAK,KAAKE,SAAS,EAAE;IACvB,MAAMC,SAAS,GAAG,OAAOH,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,EAAE;IACxD,OAAO;MACLI,IAAI,EAAE,YAAY;MAClBJ,KAAK,EAAEG,SAAS;MAChBE,wBAAwB,EAAEF;IAC5B,CAAC;EACH;EACA,OAAO;IACLC,IAAI,EAAE,cAAc;IACpBJ,KAAK,EAAE,OAAOC,YAAY,KAAK,QAAQ,GAAGA,YAAY,GAAG;EAC3D,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASK,mBAAmBA,CACjCC,KAAiB,EACjBC,aAAsB,EACL;EACjB,IAAID,KAAK,CAACH,IAAI,KAAK,YAAY,EAAE;IAC/B,IAAII,aAAa,KAAKN,SAAS,EAAE;MAC/B;MACA;MACA,OAAO;QACLK,KAAK;QACLP,KAAK,EAAEO,KAAK,CAACF,wBAAwB;QACrCI,UAAU,EAAE;MACd,CAAC;IACH;IACA,IAAI,OAAOD,aAAa,KAAK,QAAQ,EAAE;MACrC,OAAO;QACLD,KAAK;QACLP,KAAK,EAAEO,KAAK,CAACF,wBAAwB;QACrCI,UAAU,EAAE;MACd,CAAC;IACH;IACA,OAAO;MACLF,KAAK,EAAE;QACLH,IAAI,EAAE,YAAY;QAClBJ,KAAK,EAAEQ,aAAa;QACpBH,wBAAwB,EAAEG;MAC5B,CAAC;MACDR,KAAK,EAAEQ;IACT,CAAC;EACH;EACA,IAAIA,aAAa,KAAKN,SAAS,EAAE;IAC/B;IACA,OAAO;MACLK,KAAK;MACLP,KAAK,EAAEO,KAAK,CAACP,KAAK;MAClBS,UAAU,EAAE;IACd,CAAC;EACH;EACA,OAAO;IAAEF,KAAK;IAAEP,KAAK,EAAEO,KAAK,CAACP;EAAM,CAAC;AACtC;;AAEA;AACA,OAAO,SAASU,eAAeA,CAACH,KAAiB,EAAEI,IAAY,EAAc;EAC3E,IAAIJ,KAAK,CAACH,IAAI,KAAK,YAAY,EAAE,OAAOG,KAAK;EAC7C,OAAO;IAAEH,IAAI,EAAE,cAAc;IAAEJ,KAAK,EAAEW;EAAK,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BR,IAAwB,EACxBS,YAAmD,EAC1C;EACT,OAAOT,IAAI,KAAK,cAAc,IAAI,OAAOS,YAAY,KAAK,UAAU;AACtE","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
4
|
import { TextFieldBase } from "../TextField/TextFieldBase.js";
|
|
5
|
+
import { sanitizeTextFieldWrapperProps } from "../TextField/normalize.js";
|
|
5
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
7
|
/**
|
|
7
8
|
* 多行文本输入框 —— 视觉与 Input 一致(idle/focus/filled/error/disabled)。
|
|
@@ -13,13 +14,16 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
13
14
|
*
|
|
14
15
|
* 实现层走 `<TextFieldBase multiline>`,本组件是薄 wrap。
|
|
15
16
|
*
|
|
16
|
-
* Ref:forwardRef<
|
|
17
|
+
* Ref:forwardRef<TextFieldHandle>,业务只可调 `focus()` / `blur()`。
|
|
17
18
|
*/
|
|
18
19
|
export const Textarea = /*#__PURE__*/forwardRef(function Textarea(props, ref) {
|
|
20
|
+
const {
|
|
21
|
+
props: safeProps
|
|
22
|
+
} = sanitizeTextFieldWrapperProps(props);
|
|
19
23
|
return /*#__PURE__*/_jsx(TextFieldBase, {
|
|
20
24
|
ref: ref,
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
...safeProps,
|
|
26
|
+
multiline: true
|
|
23
27
|
});
|
|
24
28
|
});
|
|
25
29
|
Textarea.displayName = 'Textarea';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","TextFieldBase","jsx","_jsx","Textarea","props","ref","multiline","displayName"],"sourceRoot":"../../../../../src","sources":["components/ui/Textarea/Textarea.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,aAAa,
|
|
1
|
+
{"version":3,"names":["forwardRef","TextFieldBase","sanitizeTextFieldWrapperProps","jsx","_jsx","Textarea","props","ref","safeProps","multiline","displayName"],"sourceRoot":"../../../../../src","sources":["components/ui/Textarea/Textarea.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,6BAA6B,QAAQ,2BAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAIvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,gBAAGL,UAAU,CAChC,SAASK,QAAQA,CAACC,KAAK,EAAEC,GAAG,EAAE;EAC5B,MAAM;IAAED,KAAK,EAAEE;EAAU,CAAC,GAAGN,6BAA6B,CACxDI,KACF,CAAC;EACD,oBACEF,IAAA,CAACH,aAAa;IAACM,GAAG,EAAEA,GAAI;IAAA,GAAMC,SAAS;IAAoBC,SAAS;EAAA,CAAE,CAAC;AAE3E,CACF,CAAC;AAEDJ,QAAQ,CAACK,WAAW,GAAG,UAAU","ignoreList":[]}
|
|
@@ -1,60 +1,79 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import {
|
|
5
|
-
import { useThemedStyles } from "../../../theme/index.js";
|
|
3
|
+
import React, { useEffect, createElement as _createElement } from 'react';
|
|
4
|
+
import { StyleSheet, View } from 'react-native';
|
|
5
|
+
import { useColors, useThemedStyles } from "../../../theme/index.js";
|
|
6
|
+
import { resolveImageSource } from "../../../utils/imageSource.js";
|
|
6
7
|
import { createLogger } from "../../../utils/logger/index.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
8
|
+
import { ImageAttempt } from "../shared/ImageAttempt.js";
|
|
9
|
+
import { A11Y_HIDDEN_PROPS } from "../shared/a11y.js";
|
|
10
|
+
import { sanitizeThumbnailImageStyle } from "./normalize.js";
|
|
11
|
+
import { makeStyles, sizingFor } from "./styles.js";
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
13
|
const log = createLogger('Thumbnail');
|
|
14
|
+
const hasOwn = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
|
|
10
15
|
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
resizeMode = 'cover',
|
|
29
|
-
accessibilityLabel,
|
|
30
|
-
testID
|
|
31
|
-
}) {
|
|
16
|
+
/**
|
|
17
|
+
* 稳定两层缩略图:outer 只管 caller layout,inner visual frame 固定尺寸并始终
|
|
18
|
+
* 保留 ring。无效 / 加载失败 source 只显示 frame placeholder,不改变布局结构。
|
|
19
|
+
*/
|
|
20
|
+
export function Thumbnail(props) {
|
|
21
|
+
const {
|
|
22
|
+
uri,
|
|
23
|
+
source,
|
|
24
|
+
size = 'md',
|
|
25
|
+
selected,
|
|
26
|
+
containerStyle,
|
|
27
|
+
imageStyle,
|
|
28
|
+
resizeMode = 'cover',
|
|
29
|
+
accessibilityLabel,
|
|
30
|
+
testID
|
|
31
|
+
} = props;
|
|
32
|
+
const colors = useColors();
|
|
32
33
|
const styles = useThemedStyles(makeStyles);
|
|
33
|
-
if (!uri && !source) {
|
|
34
|
-
// [L-18] uri/source 均未传:一次性告警,返回 null 而非空白区域。
|
|
35
|
-
// types 注释已说明二选一语义;此 warn 用于开发期快速定位漏传。
|
|
36
|
-
log.warn('Thumbnail: uri 和 source 均未提供,组件将渲染为 null');
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
34
|
const dim = sizingFor(size);
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
35
|
+
const hasUri = hasOwn(props, 'uri');
|
|
36
|
+
const hasSource = hasOwn(props, 'source');
|
|
37
|
+
const sourceCandidate = hasUri !== hasSource ? hasUri && typeof uri === 'string' ? {
|
|
38
|
+
uri: uri.trim()
|
|
39
|
+
} : source : undefined;
|
|
40
|
+
const resolvedSource = resolveImageSource(sourceCandidate);
|
|
41
|
+
const sanitizedImageStyle = sanitizeThumbnailImageStyle(imageStyle);
|
|
42
|
+
const diagnostics = [...(resolvedSource === undefined ? ['source'] : []), ...sanitizedImageStyle.diagnostics.map(field => field === 'style' ? 'imageStyle' : `imageStyle.${field}`)];
|
|
43
|
+
const diagnosticKey = diagnostics.join(',');
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (__DEV__ && diagnosticKey.length > 0) {
|
|
46
|
+
log.warn(`Thumbnail: 非法运行时输入(${diagnosticKey})已回退。`);
|
|
47
|
+
}
|
|
48
|
+
}, [diagnosticKey]);
|
|
49
|
+
const normalizedLabel = typeof accessibilityLabel === 'string' ? accessibilityLabel.trim() : undefined;
|
|
50
|
+
const imageAccessibilityProps = normalizedLabel && normalizedLabel.length > 0 ? {
|
|
51
|
+
accessible: true,
|
|
52
|
+
accessibilityLabel: normalizedLabel,
|
|
53
|
+
accessibilityRole: 'image'
|
|
54
|
+
} : A11Y_HIDDEN_PROPS;
|
|
55
|
+
const ringStyle = {
|
|
56
|
+
borderRadius: dim.borderRadius,
|
|
57
|
+
borderColor: selected ? colors.primary : 'transparent'
|
|
58
|
+
};
|
|
52
59
|
return /*#__PURE__*/_jsx(View, {
|
|
53
|
-
style:
|
|
54
|
-
borderRadius: dim.borderRadius + RING_EXTRA_RADIUS
|
|
55
|
-
}],
|
|
60
|
+
style: containerStyle,
|
|
56
61
|
testID: testID,
|
|
57
|
-
children:
|
|
62
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
63
|
+
style: [styles.visualFrame, dim],
|
|
64
|
+
children: [resolvedSource === undefined ? null : /*#__PURE__*/_createElement(ImageAttempt, {
|
|
65
|
+
...imageAccessibilityProps,
|
|
66
|
+
key: resolvedSource.key,
|
|
67
|
+
source: resolvedSource.source,
|
|
68
|
+
fallback: null,
|
|
69
|
+
style: [sanitizedImageStyle.style, StyleSheet.absoluteFill],
|
|
70
|
+
resizeMode: resizeMode
|
|
71
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
72
|
+
...A11Y_HIDDEN_PROPS,
|
|
73
|
+
pointerEvents: "none",
|
|
74
|
+
style: [StyleSheet.absoluteFill, styles.ring, ringStyle]
|
|
75
|
+
})]
|
|
76
|
+
})
|
|
58
77
|
});
|
|
59
78
|
}
|
|
60
79
|
//# sourceMappingURL=Thumbnail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useEffect","createElement","_createElement","StyleSheet","View","useColors","useThemedStyles","resolveImageSource","createLogger","ImageAttempt","A11Y_HIDDEN_PROPS","sanitizeThumbnailImageStyle","makeStyles","sizingFor","jsx","_jsx","jsxs","_jsxs","log","hasOwn","value","key","Object","prototype","hasOwnProperty","call","Thumbnail","props","uri","source","size","selected","containerStyle","imageStyle","resizeMode","accessibilityLabel","testID","colors","styles","dim","hasUri","hasSource","sourceCandidate","trim","undefined","resolvedSource","sanitizedImageStyle","diagnostics","map","field","diagnosticKey","join","__DEV__","length","warn","normalizedLabel","imageAccessibilityProps","accessible","accessibilityRole","ringStyle","borderRadius","borderColor","primary","style","children","visualFrame","fallback","absoluteFill","pointerEvents","ring"],"sourceRoot":"../../../../../src","sources":["components/ui/Thumbnail/Thumbnail.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAAC,aAAA,IAAAC,cAAA,QAAQ,OAAO;AACxC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC3D,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,YAAY,QAAQ,2BAAwB;AACrD,SAASC,iBAAiB,QAAQ,mBAAgB;AAClD,SAASC,2BAA2B,QAAQ,gBAAa;AACzD,SAASC,UAAU,EAAEC,SAAS,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGjD,MAAMC,GAAG,GAAGV,YAAY,CAAC,WAAW,CAAC;AACrC,MAAMW,MAAM,GAAGA,CAACC,KAAa,EAAEC,GAAgB,KAC7CC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACL,KAAK,EAAEC,GAAG,CAAC;;AAElD;AACA;AACA;AACA;AACA,OAAO,SAASK,SAASA,CAACC,KAAqB,EAAqB;EAClE,MAAM;IACJC,GAAG;IACHC,MAAM;IACNC,IAAI,GAAG,IAAI;IACXC,QAAQ;IACRC,cAAc;IACdC,UAAU;IACVC,UAAU,GAAG,OAAO;IACpBC,kBAAkB;IAClBC;EACF,CAAC,GAAGT,KAAK;EACT,MAAMU,MAAM,GAAGhC,SAAS,CAAC,CAAC;EAC1B,MAAMiC,MAAM,GAAGhC,eAAe,CAACM,UAAU,CAAC;EAC1C,MAAM2B,GAAG,GAAG1B,SAAS,CAACiB,IAAI,CAAC;EAC3B,MAAMU,MAAM,GAAGrB,MAAM,CAACQ,KAAK,EAAE,KAAK,CAAC;EACnC,MAAMc,SAAS,GAAGtB,MAAM,CAACQ,KAAK,EAAE,QAAQ,CAAC;EACzC,MAAMe,eAAe,GACnBF,MAAM,KAAKC,SAAS,GAChBD,MAAM,IAAI,OAAOZ,GAAG,KAAK,QAAQ,GAC/B;IAAEA,GAAG,EAAEA,GAAG,CAACe,IAAI,CAAC;EAAE,CAAC,GACnBd,MAAM,GACRe,SAAS;EACf,MAAMC,cAAc,GAAGtC,kBAAkB,CAACmC,eAAe,CAAC;EAC1D,MAAMI,mBAAmB,GAAGnC,2BAA2B,CAACsB,UAAU,CAAC;EACnE,MAAMc,WAAW,GAAG,CAClB,IAAIF,cAAc,KAAKD,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EACnD,GAAGE,mBAAmB,CAACC,WAAW,CAACC,GAAG,CAAEC,KAAK,IAC3CA,KAAK,KAAK,OAAO,GAAG,YAAY,GAAG,cAAcA,KAAK,EACxD,CAAC,CACF;EACD,MAAMC,aAAa,GAAGH,WAAW,CAACI,IAAI,CAAC,GAAG,CAAC;EAE3CnD,SAAS,CAAC,MAAM;IACd,IAAIoD,OAAO,IAAIF,aAAa,CAACG,MAAM,GAAG,CAAC,EAAE;MACvCnC,GAAG,CAACoC,IAAI,CAAC,sBAAsBJ,aAAa,OAAO,CAAC;IACtD;EACF,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnB,MAAMK,eAAe,GACnB,OAAOpB,kBAAkB,KAAK,QAAQ,GAClCA,kBAAkB,CAACQ,IAAI,CAAC,CAAC,GACzBC,SAAS;EACf,MAAMY,uBAAuB,GAC3BD,eAAe,IAAIA,eAAe,CAACF,MAAM,GAAG,CAAC,GACzC;IACEI,UAAU,EAAE,IAAI;IAChBtB,kBAAkB,EAAEoB,eAAe;IACnCG,iBAAiB,EAAE;EACrB,CAAC,GACDhD,iBAAiB;EACvB,MAAMiD,SAAS,GAAG;IAChBC,YAAY,EAAErB,GAAG,CAACqB,YAAY;IAC9BC,WAAW,EAAE9B,QAAQ,GAAGM,MAAM,CAACyB,OAAO,GAAG;EAC3C,CAAC;EAED,oBACE/C,IAAA,CAACX,IAAI;IAAC2D,KAAK,EAAE/B,cAAe;IAACI,MAAM,EAAEA,MAAO;IAAA4B,QAAA,eAC1C/C,KAAA,CAACb,IAAI;MAAC2D,KAAK,EAAE,CAACzB,MAAM,CAAC2B,WAAW,EAAE1B,GAAG,CAAE;MAAAyB,QAAA,GACpCnB,cAAc,KAAKD,SAAS,GAAG,IAAI,gBAClC1C,cAAA,CAACO,YAAY;QAAA,GACP+C,uBAAuB;QAC3BnC,GAAG,EAAEwB,cAAc,CAACxB,GAAI;QACxBQ,MAAM,EAAEgB,cAAc,CAAChB,MAAO;QAC9BqC,QAAQ,EAAE,IAAK;QACfH,KAAK,EAAE,CAACjB,mBAAmB,CAACiB,KAAK,EAAE5D,UAAU,CAACgE,YAAY,CAAE;QAC5DjC,UAAU,EAAEA;MAAW,CACxB,CACF,eACDnB,IAAA,CAACX,IAAI;QAAA,GACCM,iBAAiB;QACrB0D,aAAa,EAAC,MAAM;QACpBL,KAAK,EAAE,CAAC5D,UAAU,CAACgE,YAAY,EAAE7B,MAAM,CAAC+B,IAAI,EAAEV,SAAS;MAAE,CAC1D,CAAC;IAAA,CACE;EAAC,CACH,CAAC;AAEX","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { StyleSheet } from 'react-native';
|
|
4
|
+
const RESERVED_IMAGE_STYLE_KEYS = ['position', 'top', 'right', 'bottom', 'left', 'width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight'];
|
|
5
|
+
function invalidStyle() {
|
|
6
|
+
return {
|
|
7
|
+
style: {},
|
|
8
|
+
diagnostics: ['style']
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function isEmptyStyleInput(value) {
|
|
12
|
+
if (value === undefined || value === null || value === false) return true;
|
|
13
|
+
if (!Array.isArray(value)) return false;
|
|
14
|
+
return value.every(isEmptyStyleInput);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 先 flatten 再复制允许字段,兼容 registered / array style,同时不修改 caller。
|
|
19
|
+
* 任意异常或非对象产物都失败关闭,避免宽类型 JS 值穿透到原生 Image。
|
|
20
|
+
*/
|
|
21
|
+
export function sanitizeThumbnailImageStyle(style) {
|
|
22
|
+
try {
|
|
23
|
+
if (isEmptyStyleInput(style)) {
|
|
24
|
+
return {
|
|
25
|
+
style: {},
|
|
26
|
+
diagnostics: []
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
if (typeof style !== 'object' && typeof style !== 'number') {
|
|
30
|
+
return invalidStyle();
|
|
31
|
+
}
|
|
32
|
+
const flattened = StyleSheet.flatten(style);
|
|
33
|
+
if (flattened === undefined || flattened === null || flattened === false) {
|
|
34
|
+
return invalidStyle();
|
|
35
|
+
}
|
|
36
|
+
if (typeof flattened !== 'object' || Array.isArray(flattened)) {
|
|
37
|
+
return invalidStyle();
|
|
38
|
+
}
|
|
39
|
+
const source = flattened;
|
|
40
|
+
const reserved = new Set(RESERVED_IMAGE_STYLE_KEYS);
|
|
41
|
+
const foundReserved = new Set();
|
|
42
|
+
const sanitized = {};
|
|
43
|
+
for (const [key, value] of Object.entries(source)) {
|
|
44
|
+
if (reserved.has(key)) {
|
|
45
|
+
foundReserved.add(key);
|
|
46
|
+
} else {
|
|
47
|
+
sanitized[key] = value;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
style: sanitized,
|
|
52
|
+
diagnostics: RESERVED_IMAGE_STYLE_KEYS.filter(key => foundReserved.has(key))
|
|
53
|
+
};
|
|
54
|
+
} catch {
|
|
55
|
+
return invalidStyle();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","RESERVED_IMAGE_STYLE_KEYS","invalidStyle","style","diagnostics","isEmptyStyleInput","value","undefined","Array","isArray","every","sanitizeThumbnailImageStyle","flattened","flatten","source","reserved","Set","foundReserved","sanitized","key","Object","entries","has","add","filter"],"sourceRoot":"../../../../../src","sources":["components/ui/Thumbnail/normalize.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAIzC,MAAMC,yBAAyB,GAAG,CAChC,UAAU,EACV,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,CACH;AAOV,SAASC,YAAYA,CAAA,EAAiC;EACpD,OAAO;IAAEC,KAAK,EAAE,CAAC,CAAC;IAAEC,WAAW,EAAE,CAAC,OAAO;EAAE,CAAC;AAC9C;AAEA,SAASC,iBAAiBA,CAACC,KAAc,EAAW;EAClD,IAAIA,KAAK,KAAKC,SAAS,IAAID,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,KAAK,EAAE,OAAO,IAAI;EACzE,IAAI,CAACE,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,EAAE,OAAO,KAAK;EACvC,OAAOA,KAAK,CAACI,KAAK,CAACL,iBAAiB,CAAC;AACvC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,2BAA2BA,CACzCR,KAAiD,EACnB;EAC9B,IAAI;IACF,IAAIE,iBAAiB,CAACF,KAAK,CAAC,EAAE;MAC5B,OAAO;QAAEA,KAAK,EAAE,CAAC,CAAC;QAAEC,WAAW,EAAE;MAAG,CAAC;IACvC;IACA,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC1D,OAAOD,YAAY,CAAC,CAAC;IACvB;IAEA,MAAMU,SAAS,GAAGZ,UAAU,CAACa,OAAO,CAACV,KAAK,CAAY;IACtD,IAAIS,SAAS,KAAKL,SAAS,IAAIK,SAAS,KAAK,IAAI,IAAIA,SAAS,KAAK,KAAK,EAAE;MACxE,OAAOV,YAAY,CAAC,CAAC;IACvB;IACA,IAAI,OAAOU,SAAS,KAAK,QAAQ,IAAIJ,KAAK,CAACC,OAAO,CAACG,SAAS,CAAC,EAAE;MAC7D,OAAOV,YAAY,CAAC,CAAC;IACvB;IAEA,MAAMY,MAAM,GAAGF,SAAoC;IACnD,MAAMG,QAAQ,GAAG,IAAIC,GAAG,CAASf,yBAAyB,CAAC;IAC3D,MAAMgB,aAAa,GAAG,IAAID,GAAG,CAAS,CAAC;IACvC,MAAME,SAAkC,GAAG,CAAC,CAAC;IAC7C,KAAK,MAAM,CAACC,GAAG,EAAEb,KAAK,CAAC,IAAIc,MAAM,CAACC,OAAO,CAACP,MAAM,CAAC,EAAE;MACjD,IAAIC,QAAQ,CAACO,GAAG,CAACH,GAAG,CAAC,EAAE;QACrBF,aAAa,CAACM,GAAG,CAACJ,GAAG,CAAC;MACxB,CAAC,MAAM;QACLD,SAAS,CAACC,GAAG,CAAC,GAAGb,KAAK;MACxB;IACF;IAEA,OAAO;MACLH,KAAK,EAAEe,SAAgC;MACvCd,WAAW,EAAEH,yBAAyB,CAACuB,MAAM,CAAEL,GAAG,IAChDF,aAAa,CAACK,GAAG,CAACH,GAAG,CACvB;IACF,CAAC;EACH,CAAC,CAAC,MAAM;IACN,OAAOjB,YAAY,CAAC,CAAC;EACvB;AACF","ignoreList":[]}
|
|
@@ -2,21 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
4
|
import { r } from "../../../theme/index.js";
|
|
5
|
-
/** [L-94] ring 圆角外展量:border(2) + padding(1) = 3pt,让外圈圆角贴合内圆角。
|
|
6
|
-
* Thumbnail.tsx 侧用此常量替代魔数 `+ 3`。 */
|
|
7
|
-
export const RING_EXTRA_RADIUS = r(2) + r(1); // border + padding
|
|
8
|
-
|
|
9
5
|
/** Thumbnail 静态样式 ——
|
|
10
|
-
* - `
|
|
11
|
-
* - `ring
|
|
6
|
+
* - `visualFrame`:固定尺寸、裁切、加载失败 placeholder
|
|
7
|
+
* - `ring`:始终存在的 2pt visual overlay,selected 只切颜色 */
|
|
12
8
|
export const makeStyles = c => StyleSheet.create({
|
|
13
|
-
|
|
14
|
-
backgroundColor: c.surfaceContainer
|
|
9
|
+
visualFrame: {
|
|
10
|
+
backgroundColor: c.surfaceContainer,
|
|
11
|
+
overflow: 'hidden'
|
|
15
12
|
},
|
|
16
13
|
ring: {
|
|
17
|
-
borderWidth:
|
|
18
|
-
borderColor: c.primary,
|
|
19
|
-
padding: r(1)
|
|
14
|
+
borderWidth: 2
|
|
20
15
|
}
|
|
21
16
|
});
|
|
22
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","r","
|
|
1
|
+
{"version":3,"names":["StyleSheet","r","makeStyles","c","create","visualFrame","backgroundColor","surfaceContainer","overflow","ring","borderWidth","sizingFor","size","width","height","borderRadius"],"sourceRoot":"../../../../../src","sources":["components/ui/Thumbnail/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,CAAC,QAA0B,yBAAgB;AAGpD;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCH,UAAU,CAACI,MAAM,CAAC;EAChBC,WAAW,EAAE;IACXC,eAAe,EAAEH,CAAC,CAACI,gBAAgB;IACnCC,QAAQ,EAAE;EACZ,CAAC;EACDC,IAAI,EAAE;IACJC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;;AAEJ;AACA;AACA,OAAO,MAAMC,SAAS,GAAIC,IAAmB,IAAK;EAChD,QAAQA,IAAI;IACV,KAAK,IAAI;MACP,OAAO;QAAEC,KAAK,EAAEZ,CAAC,CAAC,EAAE,CAAC;QAAEa,MAAM,EAAEb,CAAC,CAAC,EAAE,CAAC;QAAEc,YAAY,EAAEd,CAAC,CAAC,CAAC;MAAE,CAAC;IAC5D,KAAK,IAAI;MACP,OAAO;QAAEY,KAAK,EAAEZ,CAAC,CAAC,GAAG,CAAC;QAAEa,MAAM,EAAEb,CAAC,CAAC,EAAE,CAAC;QAAEc,YAAY,EAAEd,CAAC,CAAC,EAAE;MAAE,CAAC;IAC9D,KAAK,IAAI;IACT;MACE;MACA,OAAO;QAAEY,KAAK,EAAEZ,CAAC,CAAC,GAAG,CAAC;QAAEa,MAAM,EAAEb,CAAC,CAAC,EAAE,CAAC;QAAEc,YAAY,EAAEd,CAAC,CAAC,CAAC;MAAE,CAAC;EAC/D;AACF,CAAC","ignoreList":[]}
|