@tamagui/demos 1.13.3 → 1.13.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AddThemeDemo.js +1 -59
- package/dist/cjs/AddThemeDemo.js.map +2 -2
- package/dist/cjs/AlertDialogDemo.js +1 -76
- package/dist/cjs/AlertDialogDemo.js.map +2 -2
- package/dist/cjs/AnimationsDemo.js +1 -113
- package/dist/cjs/AnimationsDemo.js.map +2 -2
- package/dist/cjs/AnimationsEnterDemo.js +1 -63
- package/dist/cjs/AnimationsEnterDemo.js.map +2 -2
- package/dist/cjs/AnimationsHoverDemo.js +1 -49
- package/dist/cjs/AnimationsHoverDemo.js.map +2 -2
- package/dist/cjs/AnimationsPresenceDemo.js +1 -96
- package/dist/cjs/AnimationsPresenceDemo.js.map +2 -2
- package/dist/cjs/AnimationsTimingDemo.js +1 -49
- package/dist/cjs/AnimationsTimingDemo.js.map +2 -2
- package/dist/cjs/AvatarDemo.js +1 -53
- package/dist/cjs/AvatarDemo.js.map +2 -2
- package/dist/cjs/ButtonDemo.js +1 -48
- package/dist/cjs/ButtonDemo.js.map +2 -2
- package/dist/cjs/CardDemo.js +1 -69
- package/dist/cjs/CardDemo.js.map +2 -2
- package/dist/cjs/CheckboxDemo.js +1 -44
- package/dist/cjs/CheckboxDemo.js.map +2 -2
- package/dist/cjs/ColorsDemo.js +1 -112
- package/dist/cjs/ColorsDemo.js.map +2 -2
- package/dist/cjs/DialogDemo.js +1 -85
- package/dist/cjs/DialogDemo.js.map +2 -2
- package/dist/cjs/FormsDemo.js +1 -59
- package/dist/cjs/FormsDemo.js.map +2 -2
- package/dist/cjs/GroupDemo.js +1 -48
- package/dist/cjs/GroupDemo.js.map +2 -2
- package/dist/cjs/HeadingsDemo.js +1 -39
- package/dist/cjs/HeadingsDemo.js.map +2 -2
- package/dist/cjs/ImageDemo.js +1 -32
- package/dist/cjs/ImageDemo.js.map +2 -2
- package/dist/cjs/InputsDemo.js +1 -43
- package/dist/cjs/InputsDemo.js.map +2 -2
- package/dist/cjs/LabelDemo.js +1 -41
- package/dist/cjs/LabelDemo.js.map +2 -2
- package/dist/cjs/LinearGradientDemo.js +1 -56
- package/dist/cjs/LinearGradientDemo.js.map +2 -2
- package/dist/cjs/ListItemDemo.js +1 -70
- package/dist/cjs/ListItemDemo.js.map +2 -2
- package/dist/cjs/LucideIconsDemo.js +1 -66
- package/dist/cjs/LucideIconsDemo.js.map +2 -2
- package/dist/cjs/PopoverDemo.js +1 -92
- package/dist/cjs/PopoverDemo.js.map +2 -2
- package/dist/cjs/ProgressDemo.js +1 -71
- package/dist/cjs/ProgressDemo.js.map +2 -2
- package/dist/cjs/RadioGroupDemo.js +1 -43
- package/dist/cjs/RadioGroupDemo.js.map +2 -2
- package/dist/cjs/ScrollViewDemo.js +1 -41
- package/dist/cjs/ScrollViewDemo.js.map +2 -2
- package/dist/cjs/SelectDemo.js +1 -103
- package/dist/cjs/SelectDemo.js.map +2 -2
- package/dist/cjs/SeparatorDemo.js +1 -43
- package/dist/cjs/SeparatorDemo.js.map +2 -2
- package/dist/cjs/ShapesDemo.js +1 -35
- package/dist/cjs/ShapesDemo.js.map +2 -2
- package/dist/cjs/SheetDemo.js +1 -103
- package/dist/cjs/SheetDemo.js.map +2 -2
- package/dist/cjs/SliderDemo.js +1 -42
- package/dist/cjs/SliderDemo.js.map +2 -2
- package/dist/cjs/SpinnerDemo.js +1 -35
- package/dist/cjs/SpinnerDemo.js.map +2 -2
- package/dist/cjs/StacksDemo.js +1 -81
- package/dist/cjs/StacksDemo.js.map +2 -2
- package/dist/cjs/SwitchDemo.js +1 -55
- package/dist/cjs/SwitchDemo.js.map +2 -2
- package/dist/cjs/TabsAdvancedDemo.js +1 -282
- package/dist/cjs/TabsAdvancedDemo.js.map +2 -2
- package/dist/cjs/TabsDemo.js +1 -146
- package/dist/cjs/TabsDemo.js.map +2 -2
- package/dist/cjs/TextDemo.js +1 -39
- package/dist/cjs/TextDemo.js.map +2 -2
- package/dist/cjs/ThemeInverseDemo.js +1 -43
- package/dist/cjs/ThemeInverseDemo.js.map +2 -2
- package/dist/cjs/ToastDemo.js +1 -128
- package/dist/cjs/ToastDemo.js.map +3 -3
- package/dist/cjs/ToastDuplicateDemo.js +1 -77
- package/dist/cjs/ToastDuplicateDemo.js.map +2 -2
- package/dist/cjs/ToggleGroupDemo.js +1 -72
- package/dist/cjs/ToggleGroupDemo.js.map +2 -2
- package/dist/cjs/TokensDemo.js +1 -110
- package/dist/cjs/TokensDemo.js.map +2 -2
- package/dist/cjs/TooltipDemo.js +1 -79
- package/dist/cjs/TooltipDemo.js.map +2 -2
- package/dist/cjs/UpdateThemeDemo.js +1 -79
- package/dist/cjs/UpdateThemeDemo.js.map +2 -2
- package/dist/cjs/conf.js +1 -28
- package/dist/cjs/conf.js.map +2 -2
- package/dist/cjs/index.js +1 -159
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/tamagui.config.js +1 -27
- package/dist/cjs/tamagui.config.js.map +2 -2
- package/dist/cjs/useOnIntersecting.js +1 -92
- package/dist/cjs/useOnIntersecting.js.map +2 -2
- package/dist/esm/AddThemeDemo.js +1 -35
- package/dist/esm/AddThemeDemo.js.map +2 -2
- package/dist/esm/AddThemeDemo.mjs +1 -35
- package/dist/esm/AddThemeDemo.mjs.map +2 -2
- package/dist/esm/AlertDialogDemo.js +1 -52
- package/dist/esm/AlertDialogDemo.js.map +2 -2
- package/dist/esm/AlertDialogDemo.mjs +1 -52
- package/dist/esm/AlertDialogDemo.mjs.map +2 -2
- package/dist/esm/AnimationsDemo.js +1 -88
- package/dist/esm/AnimationsDemo.js.map +2 -2
- package/dist/esm/AnimationsDemo.mjs +1 -88
- package/dist/esm/AnimationsDemo.mjs.map +2 -2
- package/dist/esm/AnimationsEnterDemo.js +1 -39
- package/dist/esm/AnimationsEnterDemo.js.map +2 -2
- package/dist/esm/AnimationsEnterDemo.mjs +1 -39
- package/dist/esm/AnimationsEnterDemo.mjs.map +2 -2
- package/dist/esm/AnimationsHoverDemo.js +1 -25
- package/dist/esm/AnimationsHoverDemo.js.map +2 -2
- package/dist/esm/AnimationsHoverDemo.mjs +1 -25
- package/dist/esm/AnimationsHoverDemo.mjs.map +2 -2
- package/dist/esm/AnimationsPresenceDemo.js +1 -61
- package/dist/esm/AnimationsPresenceDemo.js.map +2 -2
- package/dist/esm/AnimationsPresenceDemo.mjs +1 -61
- package/dist/esm/AnimationsPresenceDemo.mjs.map +2 -2
- package/dist/esm/AnimationsTimingDemo.js +1 -25
- package/dist/esm/AnimationsTimingDemo.js.map +2 -2
- package/dist/esm/AnimationsTimingDemo.mjs +1 -25
- package/dist/esm/AnimationsTimingDemo.mjs.map +2 -2
- package/dist/esm/AvatarDemo.js +1 -29
- package/dist/esm/AvatarDemo.js.map +2 -2
- package/dist/esm/AvatarDemo.mjs +1 -29
- package/dist/esm/AvatarDemo.mjs.map +2 -2
- package/dist/esm/ButtonDemo.js +1 -24
- package/dist/esm/ButtonDemo.js.map +2 -2
- package/dist/esm/ButtonDemo.mjs +1 -24
- package/dist/esm/ButtonDemo.mjs.map +2 -2
- package/dist/esm/CardDemo.js +1 -45
- package/dist/esm/CardDemo.js.map +2 -2
- package/dist/esm/CardDemo.mjs +1 -45
- package/dist/esm/CardDemo.mjs.map +2 -2
- package/dist/esm/CheckboxDemo.js +1 -20
- package/dist/esm/CheckboxDemo.js.map +2 -2
- package/dist/esm/CheckboxDemo.mjs +1 -20
- package/dist/esm/CheckboxDemo.mjs.map +2 -2
- package/dist/esm/ColorsDemo.js +1 -97
- package/dist/esm/ColorsDemo.js.map +2 -2
- package/dist/esm/ColorsDemo.mjs +1 -97
- package/dist/esm/ColorsDemo.mjs.map +2 -2
- package/dist/esm/DialogDemo.js +1 -73
- package/dist/esm/DialogDemo.js.map +2 -2
- package/dist/esm/DialogDemo.mjs +1 -73
- package/dist/esm/DialogDemo.mjs.map +2 -2
- package/dist/esm/FormsDemo.js +1 -35
- package/dist/esm/FormsDemo.js.map +2 -2
- package/dist/esm/FormsDemo.mjs +1 -35
- package/dist/esm/FormsDemo.mjs.map +2 -2
- package/dist/esm/GroupDemo.js +1 -24
- package/dist/esm/GroupDemo.js.map +2 -2
- package/dist/esm/GroupDemo.mjs +1 -24
- package/dist/esm/GroupDemo.mjs.map +2 -2
- package/dist/esm/HeadingsDemo.js +1 -15
- package/dist/esm/HeadingsDemo.js.map +2 -2
- package/dist/esm/HeadingsDemo.mjs +1 -15
- package/dist/esm/HeadingsDemo.mjs.map +2 -2
- package/dist/esm/ImageDemo.js +1 -8
- package/dist/esm/ImageDemo.js.map +2 -2
- package/dist/esm/ImageDemo.mjs +1 -8
- package/dist/esm/ImageDemo.mjs.map +2 -2
- package/dist/esm/InputsDemo.js +1 -19
- package/dist/esm/InputsDemo.js.map +2 -2
- package/dist/esm/InputsDemo.mjs +1 -19
- package/dist/esm/InputsDemo.mjs.map +2 -2
- package/dist/esm/LabelDemo.js +1 -17
- package/dist/esm/LabelDemo.js.map +2 -2
- package/dist/esm/LabelDemo.mjs +1 -17
- package/dist/esm/LabelDemo.mjs.map +2 -2
- package/dist/esm/LinearGradientDemo.js +1 -32
- package/dist/esm/LinearGradientDemo.js.map +2 -2
- package/dist/esm/LinearGradientDemo.mjs +1 -32
- package/dist/esm/LinearGradientDemo.mjs.map +2 -2
- package/dist/esm/ListItemDemo.js +1 -46
- package/dist/esm/ListItemDemo.js.map +2 -2
- package/dist/esm/ListItemDemo.mjs +1 -46
- package/dist/esm/ListItemDemo.mjs.map +2 -2
- package/dist/esm/LucideIconsDemo.js +1 -32
- package/dist/esm/LucideIconsDemo.js.map +2 -2
- package/dist/esm/LucideIconsDemo.mjs +1 -32
- package/dist/esm/LucideIconsDemo.mjs.map +2 -2
- package/dist/esm/PopoverDemo.js +1 -75
- package/dist/esm/PopoverDemo.js.map +2 -2
- package/dist/esm/PopoverDemo.mjs +1 -75
- package/dist/esm/PopoverDemo.mjs.map +2 -2
- package/dist/esm/ProgressDemo.js +1 -47
- package/dist/esm/ProgressDemo.js.map +2 -2
- package/dist/esm/ProgressDemo.mjs +1 -47
- package/dist/esm/ProgressDemo.mjs.map +2 -2
- package/dist/esm/RadioGroupDemo.js +1 -19
- package/dist/esm/RadioGroupDemo.js.map +2 -2
- package/dist/esm/RadioGroupDemo.mjs +1 -19
- package/dist/esm/RadioGroupDemo.mjs.map +2 -2
- package/dist/esm/ScrollViewDemo.js +1 -17
- package/dist/esm/ScrollViewDemo.js.map +2 -2
- package/dist/esm/ScrollViewDemo.mjs +1 -17
- package/dist/esm/ScrollViewDemo.mjs.map +2 -2
- package/dist/esm/SelectDemo.js +1 -79
- package/dist/esm/SelectDemo.js.map +2 -2
- package/dist/esm/SelectDemo.mjs +1 -79
- package/dist/esm/SelectDemo.mjs.map +2 -2
- package/dist/esm/SeparatorDemo.js +1 -19
- package/dist/esm/SeparatorDemo.js.map +2 -2
- package/dist/esm/SeparatorDemo.mjs +1 -19
- package/dist/esm/SeparatorDemo.mjs.map +2 -2
- package/dist/esm/ShapesDemo.js +1 -11
- package/dist/esm/ShapesDemo.js.map +2 -2
- package/dist/esm/ShapesDemo.mjs +1 -11
- package/dist/esm/ShapesDemo.mjs.map +2 -2
- package/dist/esm/SheetDemo.js +1 -79
- package/dist/esm/SheetDemo.js.map +2 -2
- package/dist/esm/SheetDemo.mjs +1 -79
- package/dist/esm/SheetDemo.mjs.map +2 -2
- package/dist/esm/SliderDemo.js +1 -18
- package/dist/esm/SliderDemo.js.map +2 -2
- package/dist/esm/SliderDemo.mjs +1 -18
- package/dist/esm/SliderDemo.mjs.map +2 -2
- package/dist/esm/SpinnerDemo.js +1 -11
- package/dist/esm/SpinnerDemo.js.map +2 -2
- package/dist/esm/SpinnerDemo.mjs +1 -11
- package/dist/esm/SpinnerDemo.mjs.map +2 -2
- package/dist/esm/StacksDemo.js +1 -57
- package/dist/esm/StacksDemo.js.map +2 -2
- package/dist/esm/StacksDemo.mjs +1 -57
- package/dist/esm/StacksDemo.mjs.map +2 -2
- package/dist/esm/SwitchDemo.js +1 -31
- package/dist/esm/SwitchDemo.js.map +2 -2
- package/dist/esm/SwitchDemo.mjs +1 -31
- package/dist/esm/SwitchDemo.mjs.map +2 -2
- package/dist/esm/TabsAdvancedDemo.js +1 -268
- package/dist/esm/TabsAdvancedDemo.js.map +2 -2
- package/dist/esm/TabsAdvancedDemo.mjs +1 -268
- package/dist/esm/TabsAdvancedDemo.mjs.map +2 -2
- package/dist/esm/TabsDemo.js +1 -130
- package/dist/esm/TabsDemo.js.map +2 -2
- package/dist/esm/TabsDemo.mjs +1 -130
- package/dist/esm/TabsDemo.mjs.map +2 -2
- package/dist/esm/TextDemo.js +1 -15
- package/dist/esm/TextDemo.js.map +2 -2
- package/dist/esm/TextDemo.mjs +1 -15
- package/dist/esm/TextDemo.mjs.map +2 -2
- package/dist/esm/ThemeInverseDemo.js +1 -19
- package/dist/esm/ThemeInverseDemo.js.map +2 -2
- package/dist/esm/ThemeInverseDemo.mjs +1 -19
- package/dist/esm/ThemeInverseDemo.mjs.map +2 -2
- package/dist/esm/ToastDemo.js +1 -94
- package/dist/esm/ToastDemo.js.map +3 -3
- package/dist/esm/ToastDemo.mjs +1 -94
- package/dist/esm/ToastDemo.mjs.map +3 -3
- package/dist/esm/ToastDuplicateDemo.js +1 -43
- package/dist/esm/ToastDuplicateDemo.js.map +2 -2
- package/dist/esm/ToastDuplicateDemo.mjs +1 -43
- package/dist/esm/ToastDuplicateDemo.mjs.map +2 -2
- package/dist/esm/ToggleGroupDemo.js +1 -48
- package/dist/esm/ToggleGroupDemo.js.map +2 -2
- package/dist/esm/ToggleGroupDemo.mjs +1 -48
- package/dist/esm/ToggleGroupDemo.mjs.map +2 -2
- package/dist/esm/TokensDemo.js +1 -86
- package/dist/esm/TokensDemo.js.map +2 -2
- package/dist/esm/TokensDemo.mjs +1 -86
- package/dist/esm/TokensDemo.mjs.map +2 -2
- package/dist/esm/TooltipDemo.js +1 -68
- package/dist/esm/TooltipDemo.js.map +2 -2
- package/dist/esm/TooltipDemo.mjs +1 -68
- package/dist/esm/TooltipDemo.mjs.map +2 -2
- package/dist/esm/UpdateThemeDemo.js +1 -53
- package/dist/esm/UpdateThemeDemo.js.map +2 -2
- package/dist/esm/UpdateThemeDemo.mjs +1 -53
- package/dist/esm/UpdateThemeDemo.mjs.map +2 -2
- package/dist/esm/conf.js +1 -4
- package/dist/esm/conf.js.map +1 -1
- package/dist/esm/conf.mjs +1 -4
- package/dist/esm/conf.mjs.map +1 -1
- package/dist/esm/index.js +1 -91
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/index.mjs +1 -91
- package/dist/esm/index.mjs.map +2 -2
- package/dist/esm/tamagui.config.js +1 -5
- package/dist/esm/tamagui.config.js.map +2 -2
- package/dist/esm/tamagui.config.mjs +1 -5
- package/dist/esm/tamagui.config.mjs.map +2 -2
- package/dist/esm/useOnIntersecting.js +1 -67
- package/dist/esm/useOnIntersecting.js.map +2 -2
- package/dist/esm/useOnIntersecting.mjs +1 -67
- package/dist/esm/useOnIntersecting.mjs.map +2 -2
- package/dist/jsx/AddThemeDemo.js +1 -30
- package/dist/jsx/AddThemeDemo.js.map +2 -2
- package/dist/jsx/AddThemeDemo.mjs +1 -30
- package/dist/jsx/AddThemeDemo.mjs.map +2 -2
- package/dist/jsx/AlertDialogDemo.js +1 -44
- package/dist/jsx/AlertDialogDemo.js.map +2 -2
- package/dist/jsx/AlertDialogDemo.mjs +1 -44
- package/dist/jsx/AlertDialogDemo.mjs.map +2 -2
- package/dist/jsx/AnimationsDemo.js +1 -80
- package/dist/jsx/AnimationsDemo.js.map +2 -2
- package/dist/jsx/AnimationsDemo.mjs +1 -80
- package/dist/jsx/AnimationsDemo.mjs.map +2 -2
- package/dist/jsx/AnimationsEnterDemo.js +1 -34
- package/dist/jsx/AnimationsEnterDemo.js.map +2 -2
- package/dist/jsx/AnimationsEnterDemo.mjs +1 -34
- package/dist/jsx/AnimationsEnterDemo.mjs.map +2 -2
- package/dist/jsx/AnimationsHoverDemo.js +1 -20
- package/dist/jsx/AnimationsHoverDemo.js.map +2 -2
- package/dist/jsx/AnimationsHoverDemo.mjs +1 -20
- package/dist/jsx/AnimationsHoverDemo.mjs.map +2 -2
- package/dist/jsx/AnimationsPresenceDemo.js +1 -54
- package/dist/jsx/AnimationsPresenceDemo.js.map +2 -2
- package/dist/jsx/AnimationsPresenceDemo.mjs +1 -54
- package/dist/jsx/AnimationsPresenceDemo.mjs.map +2 -2
- package/dist/jsx/AnimationsTimingDemo.js +1 -20
- package/dist/jsx/AnimationsTimingDemo.js.map +2 -2
- package/dist/jsx/AnimationsTimingDemo.mjs +1 -20
- package/dist/jsx/AnimationsTimingDemo.mjs.map +2 -2
- package/dist/jsx/AvatarDemo.js +1 -22
- package/dist/jsx/AvatarDemo.js.map +2 -2
- package/dist/jsx/AvatarDemo.mjs +1 -22
- package/dist/jsx/AvatarDemo.mjs.map +2 -2
- package/dist/jsx/ButtonDemo.js +1 -23
- package/dist/jsx/ButtonDemo.js.map +2 -2
- package/dist/jsx/ButtonDemo.mjs +1 -23
- package/dist/jsx/ButtonDemo.mjs.map +2 -2
- package/dist/jsx/CardDemo.js +1 -38
- package/dist/jsx/CardDemo.js.map +2 -2
- package/dist/jsx/CardDemo.mjs +1 -38
- package/dist/jsx/CardDemo.mjs.map +2 -2
- package/dist/jsx/CheckboxDemo.js +1 -19
- package/dist/jsx/CheckboxDemo.js.map +2 -2
- package/dist/jsx/CheckboxDemo.mjs +1 -19
- package/dist/jsx/CheckboxDemo.mjs.map +2 -2
- package/dist/jsx/ColorsDemo.js +1 -85
- package/dist/jsx/ColorsDemo.js.map +2 -2
- package/dist/jsx/ColorsDemo.mjs +1 -85
- package/dist/jsx/ColorsDemo.mjs.map +2 -2
- package/dist/jsx/DialogDemo.js +1 -65
- package/dist/jsx/DialogDemo.js.map +2 -2
- package/dist/jsx/DialogDemo.mjs +1 -65
- package/dist/jsx/DialogDemo.mjs.map +2 -2
- package/dist/jsx/FormsDemo.js +1 -30
- package/dist/jsx/FormsDemo.js.map +2 -2
- package/dist/jsx/FormsDemo.mjs +1 -30
- package/dist/jsx/FormsDemo.mjs.map +2 -2
- package/dist/jsx/GroupDemo.js +1 -23
- package/dist/jsx/GroupDemo.js.map +2 -2
- package/dist/jsx/GroupDemo.mjs +1 -23
- package/dist/jsx/GroupDemo.mjs.map +2 -2
- package/dist/jsx/HeadingsDemo.js +1 -14
- package/dist/jsx/HeadingsDemo.js.map +2 -2
- package/dist/jsx/HeadingsDemo.mjs +1 -14
- package/dist/jsx/HeadingsDemo.mjs.map +2 -2
- package/dist/jsx/ImageDemo.js +1 -7
- package/dist/jsx/ImageDemo.js.map +2 -2
- package/dist/jsx/ImageDemo.mjs +1 -7
- package/dist/jsx/ImageDemo.mjs.map +2 -2
- package/dist/jsx/InputsDemo.js +1 -18
- package/dist/jsx/InputsDemo.js.map +2 -2
- package/dist/jsx/InputsDemo.mjs +1 -18
- package/dist/jsx/InputsDemo.mjs.map +2 -2
- package/dist/jsx/LabelDemo.js +1 -16
- package/dist/jsx/LabelDemo.js.map +2 -2
- package/dist/jsx/LabelDemo.mjs +1 -16
- package/dist/jsx/LabelDemo.mjs.map +2 -2
- package/dist/jsx/LinearGradientDemo.js +1 -25
- package/dist/jsx/LinearGradientDemo.js.map +2 -2
- package/dist/jsx/LinearGradientDemo.mjs +1 -25
- package/dist/jsx/LinearGradientDemo.mjs.map +2 -2
- package/dist/jsx/ListItemDemo.js +1 -39
- package/dist/jsx/ListItemDemo.js.map +2 -2
- package/dist/jsx/ListItemDemo.mjs +1 -39
- package/dist/jsx/ListItemDemo.mjs.map +2 -2
- package/dist/jsx/LucideIconsDemo.js +1 -31
- package/dist/jsx/LucideIconsDemo.js.map +2 -2
- package/dist/jsx/LucideIconsDemo.mjs +1 -31
- package/dist/jsx/LucideIconsDemo.mjs.map +2 -2
- package/dist/jsx/PopoverDemo.js +1 -66
- package/dist/jsx/PopoverDemo.js.map +2 -2
- package/dist/jsx/PopoverDemo.mjs +1 -66
- package/dist/jsx/PopoverDemo.mjs.map +2 -2
- package/dist/jsx/ProgressDemo.js +1 -42
- package/dist/jsx/ProgressDemo.js.map +2 -2
- package/dist/jsx/ProgressDemo.mjs +1 -42
- package/dist/jsx/ProgressDemo.mjs.map +2 -2
- package/dist/jsx/RadioGroupDemo.js +1 -18
- package/dist/jsx/RadioGroupDemo.js.map +2 -2
- package/dist/jsx/RadioGroupDemo.mjs +1 -18
- package/dist/jsx/RadioGroupDemo.mjs.map +2 -2
- package/dist/jsx/ScrollViewDemo.js +1 -16
- package/dist/jsx/ScrollViewDemo.js.map +2 -2
- package/dist/jsx/ScrollViewDemo.mjs +1 -16
- package/dist/jsx/ScrollViewDemo.mjs.map +2 -2
- package/dist/jsx/SelectDemo.js +1 -72
- package/dist/jsx/SelectDemo.js.map +2 -2
- package/dist/jsx/SelectDemo.mjs +1 -72
- package/dist/jsx/SelectDemo.mjs.map +2 -2
- package/dist/jsx/SeparatorDemo.js +1 -18
- package/dist/jsx/SeparatorDemo.js.map +2 -2
- package/dist/jsx/SeparatorDemo.mjs +1 -18
- package/dist/jsx/SeparatorDemo.mjs.map +2 -2
- package/dist/jsx/ShapesDemo.js +1 -10
- package/dist/jsx/ShapesDemo.js.map +2 -2
- package/dist/jsx/ShapesDemo.mjs +1 -10
- package/dist/jsx/ShapesDemo.mjs.map +2 -2
- package/dist/jsx/SheetDemo.js +1 -65
- package/dist/jsx/SheetDemo.js.map +2 -2
- package/dist/jsx/SheetDemo.mjs +1 -65
- package/dist/jsx/SheetDemo.mjs.map +2 -2
- package/dist/jsx/SliderDemo.js +1 -17
- package/dist/jsx/SliderDemo.js.map +2 -2
- package/dist/jsx/SliderDemo.mjs +1 -17
- package/dist/jsx/SliderDemo.mjs.map +2 -2
- package/dist/jsx/SpinnerDemo.js +1 -10
- package/dist/jsx/SpinnerDemo.js.map +2 -2
- package/dist/jsx/SpinnerDemo.mjs +1 -10
- package/dist/jsx/SpinnerDemo.mjs.map +2 -2
- package/dist/jsx/StacksDemo.js +1 -45
- package/dist/jsx/StacksDemo.js.map +2 -2
- package/dist/jsx/StacksDemo.mjs +1 -45
- package/dist/jsx/StacksDemo.mjs.map +2 -2
- package/dist/jsx/SwitchDemo.js +1 -26
- package/dist/jsx/SwitchDemo.js.map +2 -2
- package/dist/jsx/SwitchDemo.mjs +1 -26
- package/dist/jsx/SwitchDemo.mjs.map +2 -2
- package/dist/jsx/TabsAdvancedDemo.js +1 -219
- package/dist/jsx/TabsAdvancedDemo.js.map +2 -2
- package/dist/jsx/TabsAdvancedDemo.mjs +1 -219
- package/dist/jsx/TabsAdvancedDemo.mjs.map +2 -2
- package/dist/jsx/TabsDemo.js +1 -105
- package/dist/jsx/TabsDemo.js.map +2 -2
- package/dist/jsx/TabsDemo.mjs +1 -105
- package/dist/jsx/TabsDemo.mjs.map +2 -2
- package/dist/jsx/TextDemo.js +1 -14
- package/dist/jsx/TextDemo.js.map +2 -2
- package/dist/jsx/TextDemo.mjs +1 -14
- package/dist/jsx/TextDemo.mjs.map +2 -2
- package/dist/jsx/ThemeInverseDemo.js +1 -18
- package/dist/jsx/ThemeInverseDemo.js.map +2 -2
- package/dist/jsx/ThemeInverseDemo.mjs +1 -18
- package/dist/jsx/ThemeInverseDemo.mjs.map +2 -2
- package/dist/jsx/ToastDemo.js +1 -74
- package/dist/jsx/ToastDemo.js.map +3 -3
- package/dist/jsx/ToastDemo.mjs +1 -74
- package/dist/jsx/ToastDemo.mjs.map +3 -3
- package/dist/jsx/ToastDuplicateDemo.js +1 -34
- package/dist/jsx/ToastDuplicateDemo.js.map +2 -2
- package/dist/jsx/ToastDuplicateDemo.mjs +1 -34
- package/dist/jsx/ToastDuplicateDemo.mjs.map +2 -2
- package/dist/jsx/ToggleGroupDemo.js +1 -39
- package/dist/jsx/ToggleGroupDemo.js.map +2 -2
- package/dist/jsx/ToggleGroupDemo.mjs +1 -39
- package/dist/jsx/ToggleGroupDemo.mjs.map +2 -2
- package/dist/jsx/TokensDemo.js +1 -77
- package/dist/jsx/TokensDemo.js.map +2 -2
- package/dist/jsx/TokensDemo.mjs +1 -77
- package/dist/jsx/TokensDemo.mjs.map +2 -2
- package/dist/jsx/TooltipDemo.js +1 -63
- package/dist/jsx/TooltipDemo.js.map +2 -2
- package/dist/jsx/TooltipDemo.mjs +1 -63
- package/dist/jsx/TooltipDemo.mjs.map +2 -2
- package/dist/jsx/UpdateThemeDemo.js +1 -48
- package/dist/jsx/UpdateThemeDemo.js.map +2 -2
- package/dist/jsx/UpdateThemeDemo.mjs +1 -48
- package/dist/jsx/UpdateThemeDemo.mjs.map +2 -2
- package/dist/jsx/conf.js +1 -4
- package/dist/jsx/conf.js.map +1 -1
- package/dist/jsx/conf.mjs +1 -4
- package/dist/jsx/conf.mjs.map +1 -1
- package/dist/jsx/index.js +1 -91
- package/dist/jsx/index.js.map +2 -2
- package/dist/jsx/index.mjs +1 -91
- package/dist/jsx/index.mjs.map +2 -2
- package/dist/jsx/tamagui.config.js +1 -5
- package/dist/jsx/tamagui.config.js.map +2 -2
- package/dist/jsx/tamagui.config.mjs +1 -5
- package/dist/jsx/tamagui.config.mjs.map +2 -2
- package/dist/jsx/useOnIntersecting.js +1 -67
- package/dist/jsx/useOnIntersecting.js.map +2 -2
- package/dist/jsx/useOnIntersecting.mjs +1 -67
- package/dist/jsx/useOnIntersecting.mjs.map +2 -2
- package/package.json +18 -18
- package/src/ToastDemo.tsx +4 -4
|
@@ -1,269 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import {
|
|
4
|
-
AnimatePresence,
|
|
5
|
-
Button,
|
|
6
|
-
H5,
|
|
7
|
-
SizableText,
|
|
8
|
-
Stack,
|
|
9
|
-
Tabs,
|
|
10
|
-
XStack,
|
|
11
|
-
YStack,
|
|
12
|
-
styled
|
|
13
|
-
} from "tamagui";
|
|
14
|
-
const demos = ["background", "underline"];
|
|
15
|
-
const demosTitle = {
|
|
16
|
-
background: "Background Indicator",
|
|
17
|
-
underline: "Underline Indicator"
|
|
18
|
-
};
|
|
19
|
-
const TabsAdvancedDemo = () => {
|
|
20
|
-
const [demoIndex, setDemoIndex] = useState(0);
|
|
21
|
-
const demo = demos[demoIndex];
|
|
22
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23
|
-
demo === "underline" ? /* @__PURE__ */ jsx(TabsAdvancedUnderline, {}) : /* @__PURE__ */ jsx(TabsAdvancedBackground, {}),
|
|
24
|
-
/* @__PURE__ */ jsx(XStack, { ai: "center", space: true, pos: "absolute", b: "$3", l: "$4", $xxs: { dsp: "none" }, children: /* @__PURE__ */ jsx(Button, { size: "$2", onPress: () => setDemoIndex((x) => (x + 1) % demos.length), children: demosTitle[demo] }) })
|
|
25
|
-
] });
|
|
26
|
-
};
|
|
27
|
-
const TabsAdvancedBackground = () => {
|
|
28
|
-
const [tabState, setTabState] = useState({
|
|
29
|
-
activeAt: null,
|
|
30
|
-
currentTab: "tab1",
|
|
31
|
-
intentAt: null,
|
|
32
|
-
prevActiveAt: null
|
|
33
|
-
});
|
|
34
|
-
const setCurrentTab = (currentTab2) => setTabState({ ...tabState, currentTab: currentTab2 });
|
|
35
|
-
const setIntentIndicator = (intentAt2) => setTabState({ ...tabState, intentAt: intentAt2 });
|
|
36
|
-
const setActiveIndicator = (activeAt2) => setTabState({ ...tabState, prevActiveAt: tabState.activeAt, activeAt: activeAt2 });
|
|
37
|
-
const { activeAt, intentAt, prevActiveAt, currentTab } = tabState;
|
|
38
|
-
const direction = (() => {
|
|
39
|
-
if (!activeAt || !prevActiveAt || activeAt.x === prevActiveAt.x) {
|
|
40
|
-
return 0;
|
|
41
|
-
}
|
|
42
|
-
return activeAt.x > prevActiveAt.x ? -1 : 1;
|
|
43
|
-
})();
|
|
44
|
-
const enterVariant = direction === 1 ? "isLeft" : direction === -1 ? "isRight" : "defaultFade";
|
|
45
|
-
const exitVariant = direction === 1 ? "isRight" : direction === -1 ? "isLeft" : "defaultFade";
|
|
46
|
-
const handleOnInteraction = (type, layout) => {
|
|
47
|
-
if (type === "select") {
|
|
48
|
-
setActiveIndicator(layout);
|
|
49
|
-
} else {
|
|
50
|
-
setIntentIndicator(layout);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
return /* @__PURE__ */ jsxs(
|
|
54
|
-
Tabs,
|
|
55
|
-
{
|
|
56
|
-
value: currentTab,
|
|
57
|
-
onValueChange: setCurrentTab,
|
|
58
|
-
orientation: "horizontal",
|
|
59
|
-
size: "$4",
|
|
60
|
-
padding: "$2",
|
|
61
|
-
height: 150,
|
|
62
|
-
flexDirection: "column",
|
|
63
|
-
activationMode: "manual",
|
|
64
|
-
backgroundColor: "$background",
|
|
65
|
-
borderRadius: "$4",
|
|
66
|
-
position: "relative",
|
|
67
|
-
children: [
|
|
68
|
-
/* @__PURE__ */ jsxs(YStack, { children: [
|
|
69
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: intentAt && /* @__PURE__ */ jsx(
|
|
70
|
-
TabsRovingIndicator,
|
|
71
|
-
{
|
|
72
|
-
borderRadius: "$4",
|
|
73
|
-
width: intentAt.width,
|
|
74
|
-
height: intentAt.height,
|
|
75
|
-
x: intentAt.x,
|
|
76
|
-
y: intentAt.y
|
|
77
|
-
}
|
|
78
|
-
) }),
|
|
79
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: activeAt && /* @__PURE__ */ jsx(
|
|
80
|
-
TabsRovingIndicator,
|
|
81
|
-
{
|
|
82
|
-
borderRadius: "$4",
|
|
83
|
-
theme: "active",
|
|
84
|
-
width: activeAt.width,
|
|
85
|
-
height: activeAt.height,
|
|
86
|
-
x: activeAt.x,
|
|
87
|
-
y: activeAt.y
|
|
88
|
-
}
|
|
89
|
-
) }),
|
|
90
|
-
/* @__PURE__ */ jsxs(
|
|
91
|
-
Tabs.List,
|
|
92
|
-
{
|
|
93
|
-
disablePassBorderRadius: true,
|
|
94
|
-
loop: false,
|
|
95
|
-
"aria-label": "Manage your account",
|
|
96
|
-
space: "$2",
|
|
97
|
-
backgroundColor: "transparent",
|
|
98
|
-
children: [
|
|
99
|
-
/* @__PURE__ */ jsx(Tabs.Tab, { unstyled: true, value: "tab1", onInteraction: handleOnInteraction, children: /* @__PURE__ */ jsx(SizableText, { children: "Profile" }) }),
|
|
100
|
-
/* @__PURE__ */ jsx(Tabs.Tab, { unstyled: true, value: "tab2", onInteraction: handleOnInteraction, children: /* @__PURE__ */ jsx(SizableText, { children: "Connections" }) }),
|
|
101
|
-
/* @__PURE__ */ jsx(Tabs.Tab, { unstyled: true, value: "tab3", onInteraction: handleOnInteraction, children: /* @__PURE__ */ jsx(SizableText, { children: "Notifications" }) })
|
|
102
|
-
]
|
|
103
|
-
}
|
|
104
|
-
)
|
|
105
|
-
] }),
|
|
106
|
-
/* @__PURE__ */ jsx(
|
|
107
|
-
AnimatePresence,
|
|
108
|
-
{
|
|
109
|
-
exitBeforeEnter: true,
|
|
110
|
-
enterVariant,
|
|
111
|
-
exitVariant,
|
|
112
|
-
children: /* @__PURE__ */ jsx(AnimatedYStack, { animation: "100ms", x: 0, opacity: 1, flex: 1, children: /* @__PURE__ */ jsx(Tabs.Content, { value: currentTab, forceMount: true, flex: 1, justifyContent: "center", children: /* @__PURE__ */ jsx(H5, { textAlign: "center", children: currentTab }) }) }, currentTab)
|
|
113
|
-
}
|
|
114
|
-
)
|
|
115
|
-
]
|
|
116
|
-
}
|
|
117
|
-
);
|
|
118
|
-
};
|
|
119
|
-
const TabsAdvancedUnderline = () => {
|
|
120
|
-
const [tabState, setTabState] = useState({
|
|
121
|
-
activeAt: null,
|
|
122
|
-
currentTab: "tab1",
|
|
123
|
-
intentAt: null,
|
|
124
|
-
prevActiveAt: null
|
|
125
|
-
});
|
|
126
|
-
const setCurrentTab = (currentTab2) => setTabState({ ...tabState, currentTab: currentTab2 });
|
|
127
|
-
const setIntentIndicator = (intentAt2) => setTabState({ ...tabState, intentAt: intentAt2 });
|
|
128
|
-
const setActiveIndicator = (activeAt2) => setTabState({ ...tabState, prevActiveAt: tabState.activeAt, activeAt: activeAt2 });
|
|
129
|
-
const { activeAt, intentAt, prevActiveAt, currentTab } = tabState;
|
|
130
|
-
const direction = (() => {
|
|
131
|
-
if (!activeAt || !prevActiveAt || activeAt.x === prevActiveAt.x) {
|
|
132
|
-
return 0;
|
|
133
|
-
}
|
|
134
|
-
return activeAt.x > prevActiveAt.x ? -1 : 1;
|
|
135
|
-
})();
|
|
136
|
-
const enterVariant = direction === 1 ? "isLeft" : direction === -1 ? "isRight" : "defaultFade";
|
|
137
|
-
const exitVariant = direction === 1 ? "isRight" : direction === -1 ? "isLeft" : "defaultFade";
|
|
138
|
-
const handleOnInteraction = (type, layout) => {
|
|
139
|
-
if (type === "select") {
|
|
140
|
-
setActiveIndicator(layout);
|
|
141
|
-
} else {
|
|
142
|
-
setIntentIndicator(layout);
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
return /* @__PURE__ */ jsxs(
|
|
146
|
-
Tabs,
|
|
147
|
-
{
|
|
148
|
-
value: currentTab,
|
|
149
|
-
onValueChange: setCurrentTab,
|
|
150
|
-
orientation: "horizontal",
|
|
151
|
-
size: "$4",
|
|
152
|
-
height: 150,
|
|
153
|
-
flexDirection: "column",
|
|
154
|
-
activationMode: "manual",
|
|
155
|
-
backgroundColor: "$background",
|
|
156
|
-
borderRadius: "$4",
|
|
157
|
-
children: [
|
|
158
|
-
/* @__PURE__ */ jsxs(YStack, { children: [
|
|
159
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: intentAt && /* @__PURE__ */ jsx(
|
|
160
|
-
TabsRovingIndicator,
|
|
161
|
-
{
|
|
162
|
-
width: intentAt.width,
|
|
163
|
-
height: "$0.5",
|
|
164
|
-
x: intentAt.x,
|
|
165
|
-
bottom: 0
|
|
166
|
-
}
|
|
167
|
-
) }),
|
|
168
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: activeAt && /* @__PURE__ */ jsx(
|
|
169
|
-
TabsRovingIndicator,
|
|
170
|
-
{
|
|
171
|
-
theme: "active",
|
|
172
|
-
active: true,
|
|
173
|
-
width: activeAt.width,
|
|
174
|
-
height: "$0.5",
|
|
175
|
-
x: activeAt.x,
|
|
176
|
-
bottom: 0
|
|
177
|
-
}
|
|
178
|
-
) }),
|
|
179
|
-
/* @__PURE__ */ jsxs(
|
|
180
|
-
Tabs.List,
|
|
181
|
-
{
|
|
182
|
-
disablePassBorderRadius: true,
|
|
183
|
-
loop: false,
|
|
184
|
-
"aria-label": "Manage your account",
|
|
185
|
-
borderBottomLeftRadius: 0,
|
|
186
|
-
borderBottomRightRadius: 0,
|
|
187
|
-
paddingBottom: "$1.5",
|
|
188
|
-
borderColor: "$color3",
|
|
189
|
-
borderBottomWidth: "$0.5",
|
|
190
|
-
backgroundColor: "transparent",
|
|
191
|
-
children: [
|
|
192
|
-
/* @__PURE__ */ jsx(
|
|
193
|
-
Tabs.Tab,
|
|
194
|
-
{
|
|
195
|
-
unstyled: true,
|
|
196
|
-
padding: "$5",
|
|
197
|
-
value: "tab1",
|
|
198
|
-
onInteraction: handleOnInteraction,
|
|
199
|
-
children: /* @__PURE__ */ jsx(SizableText, { children: "Profile" })
|
|
200
|
-
}
|
|
201
|
-
),
|
|
202
|
-
/* @__PURE__ */ jsx(
|
|
203
|
-
Tabs.Tab,
|
|
204
|
-
{
|
|
205
|
-
unstyled: true,
|
|
206
|
-
padding: "$5",
|
|
207
|
-
value: "tab2",
|
|
208
|
-
onInteraction: handleOnInteraction,
|
|
209
|
-
children: /* @__PURE__ */ jsx(SizableText, { children: "Connections" })
|
|
210
|
-
}
|
|
211
|
-
),
|
|
212
|
-
/* @__PURE__ */ jsx(
|
|
213
|
-
Tabs.Tab,
|
|
214
|
-
{
|
|
215
|
-
unstyled: true,
|
|
216
|
-
padding: "$5",
|
|
217
|
-
value: "tab3",
|
|
218
|
-
onInteraction: handleOnInteraction,
|
|
219
|
-
children: /* @__PURE__ */ jsx(SizableText, { children: "Notifications" })
|
|
220
|
-
}
|
|
221
|
-
)
|
|
222
|
-
]
|
|
223
|
-
}
|
|
224
|
-
)
|
|
225
|
-
] }),
|
|
226
|
-
/* @__PURE__ */ jsx(
|
|
227
|
-
AnimatePresence,
|
|
228
|
-
{
|
|
229
|
-
exitBeforeEnter: true,
|
|
230
|
-
enterVariant,
|
|
231
|
-
exitVariant,
|
|
232
|
-
children: /* @__PURE__ */ jsx(AnimatedYStack, { animation: "100ms", x: 0, opacity: 1, flex: 1, children: /* @__PURE__ */ jsx(Tabs.Content, { value: currentTab, forceMount: true, flex: 1, justifyContent: "center", children: /* @__PURE__ */ jsx(H5, { textAlign: "center", children: currentTab }) }) }, currentTab)
|
|
233
|
-
}
|
|
234
|
-
)
|
|
235
|
-
]
|
|
236
|
-
}
|
|
237
|
-
);
|
|
238
|
-
};
|
|
239
|
-
const TabsRovingIndicator = styled(Stack, {
|
|
240
|
-
position: "absolute",
|
|
241
|
-
backgroundColor: "$color5",
|
|
242
|
-
opacity: 0.7,
|
|
243
|
-
animation: "100ms",
|
|
244
|
-
enterStyle: {
|
|
245
|
-
opacity: 0
|
|
246
|
-
},
|
|
247
|
-
exitStyle: {
|
|
248
|
-
opacity: 0
|
|
249
|
-
},
|
|
250
|
-
variants: {
|
|
251
|
-
active: {
|
|
252
|
-
true: {
|
|
253
|
-
backgroundColor: "$color8",
|
|
254
|
-
opacity: 0.6
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
const AnimatedYStack = styled(YStack, {
|
|
260
|
-
variants: {
|
|
261
|
-
isLeft: { true: { x: -25, opacity: 0 } },
|
|
262
|
-
isRight: { true: { x: 25, opacity: 0 } },
|
|
263
|
-
defaultFade: { true: { opacity: 0 } }
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
export {
|
|
267
|
-
TabsAdvancedDemo
|
|
268
|
-
};
|
|
1
|
+
import{Fragment as V,jsx as t,jsxs as u}from"react/jsx-runtime";import{useState as f}from"react";import{AnimatePresence as T,Button as C,H5 as $,SizableText as v,Stack as L,Tabs as i,XStack as R,YStack as y,styled as k}from"tamagui";const S=["background","underline"],P={background:"Background Indicator",underline:"Underline Indicator"},D=()=>{const[a,o]=f(0),b=S[a];return u(V,{children:[b==="underline"?t(B,{}):t(z,{}),t(R,{ai:"center",space:!0,pos:"absolute",b:"$3",l:"$4",$xxs:{dsp:"none"},children:t(C,{size:"$2",onPress:()=>o(A=>(A+1)%S.length),children:P[b]})})]})},z=()=>{const[a,o]=f({activeAt:null,currentTab:"tab1",intentAt:null,prevActiveAt:null}),b=n=>o({...a,currentTab:n}),A=n=>o({...a,intentAt:n}),h=n=>o({...a,prevActiveAt:a.activeAt,activeAt:n}),{activeAt:e,intentAt:r,prevActiveAt:l,currentTab:s}=a,c=(()=>!e||!l||e.x===l.x?0:e.x>l.x?-1:1)(),m=c===1?"isLeft":c===-1?"isRight":"defaultFade",p=c===1?"isRight":c===-1?"isLeft":"defaultFade",d=(n,x)=>{n==="select"?h(x):A(x)};return u(i,{value:s,onValueChange:b,orientation:"horizontal",size:"$4",padding:"$2",height:150,flexDirection:"column",activationMode:"manual",backgroundColor:"$background",borderRadius:"$4",position:"relative",children:[u(y,{children:[t(T,{children:r&&t(g,{borderRadius:"$4",width:r.width,height:r.height,x:r.x,y:r.y})}),t(T,{children:e&&t(g,{borderRadius:"$4",theme:"active",width:e.width,height:e.height,x:e.x,y:e.y})}),u(i.List,{disablePassBorderRadius:!0,loop:!1,"aria-label":"Manage your account",space:"$2",backgroundColor:"transparent",children:[t(i.Tab,{unstyled:!0,value:"tab1",onInteraction:d,children:t(v,{children:"Profile"})}),t(i.Tab,{unstyled:!0,value:"tab2",onInteraction:d,children:t(v,{children:"Connections"})}),t(i.Tab,{unstyled:!0,value:"tab3",onInteraction:d,children:t(v,{children:"Notifications"})})]})]}),t(T,{exitBeforeEnter:!0,enterVariant:m,exitVariant:p,children:t(I,{animation:"100ms",x:0,opacity:1,flex:1,children:t(i.Content,{value:s,forceMount:!0,flex:1,justifyContent:"center",children:t($,{textAlign:"center",children:s})})},s)})]})},B=()=>{const[a,o]=f({activeAt:null,currentTab:"tab1",intentAt:null,prevActiveAt:null}),b=n=>o({...a,currentTab:n}),A=n=>o({...a,intentAt:n}),h=n=>o({...a,prevActiveAt:a.activeAt,activeAt:n}),{activeAt:e,intentAt:r,prevActiveAt:l,currentTab:s}=a,c=(()=>!e||!l||e.x===l.x?0:e.x>l.x?-1:1)(),m=c===1?"isLeft":c===-1?"isRight":"defaultFade",p=c===1?"isRight":c===-1?"isLeft":"defaultFade",d=(n,x)=>{n==="select"?h(x):A(x)};return u(i,{value:s,onValueChange:b,orientation:"horizontal",size:"$4",height:150,flexDirection:"column",activationMode:"manual",backgroundColor:"$background",borderRadius:"$4",children:[u(y,{children:[t(T,{children:r&&t(g,{width:r.width,height:"$0.5",x:r.x,bottom:0})}),t(T,{children:e&&t(g,{theme:"active",active:!0,width:e.width,height:"$0.5",x:e.x,bottom:0})}),u(i.List,{disablePassBorderRadius:!0,loop:!1,"aria-label":"Manage your account",borderBottomLeftRadius:0,borderBottomRightRadius:0,paddingBottom:"$1.5",borderColor:"$color3",borderBottomWidth:"$0.5",backgroundColor:"transparent",children:[t(i.Tab,{unstyled:!0,padding:"$5",value:"tab1",onInteraction:d,children:t(v,{children:"Profile"})}),t(i.Tab,{unstyled:!0,padding:"$5",value:"tab2",onInteraction:d,children:t(v,{children:"Connections"})}),t(i.Tab,{unstyled:!0,padding:"$5",value:"tab3",onInteraction:d,children:t(v,{children:"Notifications"})})]})]}),t(T,{exitBeforeEnter:!0,enterVariant:m,exitVariant:p,children:t(I,{animation:"100ms",x:0,opacity:1,flex:1,children:t(i.Content,{value:s,forceMount:!0,flex:1,justifyContent:"center",children:t($,{textAlign:"center",children:s})})},s)})]})},g=k(L,{position:"absolute",backgroundColor:"$color5",opacity:.7,animation:"100ms",enterStyle:{opacity:0},exitStyle:{opacity:0},variants:{active:{true:{backgroundColor:"$color8",opacity:.6}}}}),I=k(y,{variants:{isLeft:{true:{x:-25,opacity:0}},isRight:{true:{x:25,opacity:0}},defaultFade:{true:{opacity:0}}}});export{D as TabsAdvancedDemo};
|
|
269
2
|
//# sourceMappingURL=TabsAdvancedDemo.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/TabsAdvancedDemo.tsx"],
|
|
4
4
|
"sourcesContent": ["import { useState } from 'react'\nimport {\n AnimatePresence,\n Button,\n H5,\n SizableText,\n Stack,\n TabLayout,\n Tabs,\n TabsTabProps,\n XStack,\n YStack,\n styled,\n} from 'tamagui'\n\nconst demos = ['background', 'underline'] as const\nconst demosTitle: Record<(typeof demos)[number], string> = {\n background: 'Background Indicator',\n underline: 'Underline Indicator',\n}\n\nexport const TabsAdvancedDemo = () => {\n const [demoIndex, setDemoIndex] = useState(0)\n const demo = demos[demoIndex]\n return (\n <>\n {demo === 'underline' ? <TabsAdvancedUnderline /> : <TabsAdvancedBackground />}\n\n <XStack ai=\"center\" space pos=\"absolute\" b=\"$3\" l=\"$4\" $xxs={{ dsp: 'none' }}>\n <Button size=\"$2\" onPress={() => setDemoIndex((x) => (x + 1) % demos.length)}>\n {demosTitle[demo]}\n </Button>\n </XStack>\n </>\n )\n}\n\nconst TabsAdvancedBackground = () => {\n const [tabState, setTabState] = useState<{\n currentTab: string\n /**\n * Layout of the Tab user might intend to select (hovering / focusing)\n */\n intentAt: TabLayout | null\n /**\n * Layout of the Tab user selected\n */\n activeAt: TabLayout | null\n /**\n * Used to get the direction of activation for animating the active indicator\n */\n prevActiveAt: TabLayout | null\n }>({\n activeAt: null,\n currentTab: 'tab1',\n intentAt: null,\n prevActiveAt: null,\n })\n\n const setCurrentTab = (currentTab: string) => setTabState({ ...tabState, currentTab })\n const setIntentIndicator = (intentAt) => setTabState({ ...tabState, intentAt })\n const setActiveIndicator = (activeAt) =>\n setTabState({ ...tabState, prevActiveAt: tabState.activeAt, activeAt })\n const { activeAt, intentAt, prevActiveAt, currentTab } = tabState\n\n /**\n * -1: from left\n * 0: n/a\n * 1: from right\n */\n const direction = (() => {\n if (!activeAt || !prevActiveAt || activeAt.x === prevActiveAt.x) {\n return 0\n }\n return activeAt.x > prevActiveAt.x ? -1 : 1\n })()\n\n const enterVariant =\n direction === 1 ? 'isLeft' : direction === -1 ? 'isRight' : 'defaultFade'\n const exitVariant =\n direction === 1 ? 'isRight' : direction === -1 ? 'isLeft' : 'defaultFade'\n\n const handleOnInteraction: TabsTabProps['onInteraction'] = (type, layout) => {\n if (type === 'select') {\n setActiveIndicator(layout)\n } else {\n setIntentIndicator(layout)\n }\n }\n\n return (\n <Tabs\n value={currentTab}\n onValueChange={setCurrentTab}\n orientation=\"horizontal\"\n size=\"$4\"\n padding=\"$2\"\n height={150}\n flexDirection=\"column\"\n activationMode=\"manual\"\n backgroundColor=\"$background\"\n borderRadius=\"$4\"\n position=\"relative\"\n >\n <YStack>\n <AnimatePresence>\n {intentAt && (\n <TabsRovingIndicator\n borderRadius=\"$4\"\n width={intentAt.width}\n height={intentAt.height}\n x={intentAt.x}\n y={intentAt.y}\n />\n )}\n </AnimatePresence>\n <AnimatePresence>\n {activeAt && (\n <TabsRovingIndicator\n borderRadius=\"$4\"\n theme=\"active\"\n width={activeAt.width}\n height={activeAt.height}\n x={activeAt.x}\n y={activeAt.y}\n />\n )}\n </AnimatePresence>\n\n <Tabs.List\n disablePassBorderRadius\n loop={false}\n aria-label=\"Manage your account\"\n space=\"$2\"\n backgroundColor=\"transparent\"\n >\n <Tabs.Tab unstyled value=\"tab1\" onInteraction={handleOnInteraction}>\n <SizableText>Profile</SizableText>\n </Tabs.Tab>\n <Tabs.Tab unstyled value=\"tab2\" onInteraction={handleOnInteraction}>\n <SizableText>Connections</SizableText>\n </Tabs.Tab>\n <Tabs.Tab unstyled value=\"tab3\" onInteraction={handleOnInteraction}>\n <SizableText>Notifications</SizableText>\n </Tabs.Tab>\n </Tabs.List>\n </YStack>\n\n <AnimatePresence\n exitBeforeEnter\n enterVariant={enterVariant}\n exitVariant={exitVariant}\n >\n <AnimatedYStack key={currentTab} animation=\"100ms\" x={0} opacity={1} flex={1}>\n <Tabs.Content value={currentTab} forceMount flex={1} justifyContent=\"center\">\n <H5 textAlign=\"center\">{currentTab}</H5>\n </Tabs.Content>\n </AnimatedYStack>\n </AnimatePresence>\n </Tabs>\n )\n}\n\nconst TabsAdvancedUnderline = () => {\n const [tabState, setTabState] = useState<{\n currentTab: string\n /**\n * Layout of the Tab user might intend to select (hovering / focusing)\n */\n intentAt: TabLayout | null\n /**\n * Layout of the Tab user selected\n */\n activeAt: TabLayout | null\n /**\n * Used to get the direction of activation for animating the active indicator\n */\n prevActiveAt: TabLayout | null\n }>({\n activeAt: null,\n currentTab: 'tab1',\n intentAt: null,\n prevActiveAt: null,\n })\n\n const setCurrentTab = (currentTab: string) => setTabState({ ...tabState, currentTab })\n const setIntentIndicator = (intentAt) => setTabState({ ...tabState, intentAt })\n const setActiveIndicator = (activeAt) =>\n setTabState({ ...tabState, prevActiveAt: tabState.activeAt, activeAt })\n const { activeAt, intentAt, prevActiveAt, currentTab } = tabState\n\n /**\n * -1: from left\n * 0: n/a\n * 1: from right\n */\n const direction = (() => {\n if (!activeAt || !prevActiveAt || activeAt.x === prevActiveAt.x) {\n return 0\n }\n return activeAt.x > prevActiveAt.x ? -1 : 1\n })()\n\n const enterVariant =\n direction === 1 ? 'isLeft' : direction === -1 ? 'isRight' : 'defaultFade'\n const exitVariant =\n direction === 1 ? 'isRight' : direction === -1 ? 'isLeft' : 'defaultFade'\n\n const handleOnInteraction: TabsTabProps['onInteraction'] = (type, layout) => {\n if (type === 'select') {\n setActiveIndicator(layout)\n } else {\n setIntentIndicator(layout)\n }\n }\n\n return (\n <Tabs\n value={currentTab}\n onValueChange={setCurrentTab}\n orientation=\"horizontal\"\n size=\"$4\"\n height={150}\n flexDirection=\"column\"\n activationMode=\"manual\"\n backgroundColor=\"$background\"\n borderRadius=\"$4\"\n >\n <YStack>\n <AnimatePresence>\n {intentAt && (\n <TabsRovingIndicator\n width={intentAt.width}\n height=\"$0.5\"\n x={intentAt.x}\n bottom={0}\n />\n )}\n </AnimatePresence>\n <AnimatePresence>\n {activeAt && (\n <TabsRovingIndicator\n theme=\"active\"\n active\n width={activeAt.width}\n height=\"$0.5\"\n x={activeAt.x}\n bottom={0}\n />\n )}\n </AnimatePresence>\n <Tabs.List\n disablePassBorderRadius\n loop={false}\n aria-label=\"Manage your account\"\n borderBottomLeftRadius={0}\n borderBottomRightRadius={0}\n paddingBottom=\"$1.5\"\n borderColor=\"$color3\"\n borderBottomWidth=\"$0.5\"\n backgroundColor=\"transparent\"\n >\n <Tabs.Tab\n unstyled\n padding=\"$5\"\n value=\"tab1\"\n onInteraction={handleOnInteraction}\n >\n <SizableText>Profile</SizableText>\n </Tabs.Tab>\n <Tabs.Tab\n unstyled\n padding=\"$5\"\n value=\"tab2\"\n onInteraction={handleOnInteraction}\n >\n <SizableText>Connections</SizableText>\n </Tabs.Tab>\n <Tabs.Tab\n unstyled\n padding=\"$5\"\n value=\"tab3\"\n onInteraction={handleOnInteraction}\n >\n <SizableText>Notifications</SizableText>\n </Tabs.Tab>\n </Tabs.List>\n </YStack>\n\n <AnimatePresence\n exitBeforeEnter\n enterVariant={enterVariant}\n exitVariant={exitVariant}\n >\n <AnimatedYStack key={currentTab} animation=\"100ms\" x={0} opacity={1} flex={1}>\n <Tabs.Content value={currentTab} forceMount flex={1} justifyContent=\"center\">\n <H5 textAlign=\"center\">{currentTab}</H5>\n </Tabs.Content>\n </AnimatedYStack>\n </AnimatePresence>\n </Tabs>\n )\n}\n\nconst TabsRovingIndicator = styled(Stack, {\n position: 'absolute',\n backgroundColor: '$color5',\n opacity: 0.7,\n animation: '100ms',\n enterStyle: {\n opacity: 0,\n },\n exitStyle: {\n opacity: 0,\n },\n variants: {\n active: {\n true: {\n backgroundColor: '$color8',\n opacity: 0.6,\n },\n },\n },\n})\n\nconst AnimatedYStack = styled(YStack, {\n variants: {\n isLeft: { true: { x: -25, opacity: 0 } },\n isRight: { true: { x: 25, opacity: 0 } },\n defaultFade: { true: { opacity: 0 } },\n } as const,\n})\n"],
|
|
5
|
-
"mappings": "AAyBI,
|
|
6
|
-
"names": ["currentTab", "intentAt", "activeAt"]
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Fragment", "jsx", "jsxs", "useState", "AnimatePresence", "Button", "H5", "SizableText", "Stack", "Tabs", "XStack", "YStack", "styled", "demos", "demosTitle", "TabsAdvancedDemo", "demoIndex", "setDemoIndex", "demo", "TabsAdvancedUnderline", "TabsAdvancedBackground", "x", "tabState", "setTabState", "setCurrentTab", "currentTab", "setIntentIndicator", "intentAt", "setActiveIndicator", "activeAt", "prevActiveAt", "direction", "enterVariant", "exitVariant", "handleOnInteraction", "type", "layout", "TabsRovingIndicator", "AnimatedYStack"]
|
|
7
7
|
}
|
|
@@ -1,269 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import {
|
|
4
|
-
AnimatePresence,
|
|
5
|
-
Button,
|
|
6
|
-
H5,
|
|
7
|
-
SizableText,
|
|
8
|
-
Stack,
|
|
9
|
-
Tabs,
|
|
10
|
-
XStack,
|
|
11
|
-
YStack,
|
|
12
|
-
styled
|
|
13
|
-
} from "tamagui";
|
|
14
|
-
const demos = ["background", "underline"];
|
|
15
|
-
const demosTitle = {
|
|
16
|
-
background: "Background Indicator",
|
|
17
|
-
underline: "Underline Indicator"
|
|
18
|
-
};
|
|
19
|
-
const TabsAdvancedDemo = () => {
|
|
20
|
-
const [demoIndex, setDemoIndex] = useState(0);
|
|
21
|
-
const demo = demos[demoIndex];
|
|
22
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23
|
-
demo === "underline" ? /* @__PURE__ */ jsx(TabsAdvancedUnderline, {}) : /* @__PURE__ */ jsx(TabsAdvancedBackground, {}),
|
|
24
|
-
/* @__PURE__ */ jsx(XStack, { ai: "center", space: true, pos: "absolute", b: "$3", l: "$4", $xxs: { dsp: "none" }, children: /* @__PURE__ */ jsx(Button, { size: "$2", onPress: () => setDemoIndex((x) => (x + 1) % demos.length), children: demosTitle[demo] }) })
|
|
25
|
-
] });
|
|
26
|
-
};
|
|
27
|
-
const TabsAdvancedBackground = () => {
|
|
28
|
-
const [tabState, setTabState] = useState({
|
|
29
|
-
activeAt: null,
|
|
30
|
-
currentTab: "tab1",
|
|
31
|
-
intentAt: null,
|
|
32
|
-
prevActiveAt: null
|
|
33
|
-
});
|
|
34
|
-
const setCurrentTab = (currentTab2) => setTabState({ ...tabState, currentTab: currentTab2 });
|
|
35
|
-
const setIntentIndicator = (intentAt2) => setTabState({ ...tabState, intentAt: intentAt2 });
|
|
36
|
-
const setActiveIndicator = (activeAt2) => setTabState({ ...tabState, prevActiveAt: tabState.activeAt, activeAt: activeAt2 });
|
|
37
|
-
const { activeAt, intentAt, prevActiveAt, currentTab } = tabState;
|
|
38
|
-
const direction = (() => {
|
|
39
|
-
if (!activeAt || !prevActiveAt || activeAt.x === prevActiveAt.x) {
|
|
40
|
-
return 0;
|
|
41
|
-
}
|
|
42
|
-
return activeAt.x > prevActiveAt.x ? -1 : 1;
|
|
43
|
-
})();
|
|
44
|
-
const enterVariant = direction === 1 ? "isLeft" : direction === -1 ? "isRight" : "defaultFade";
|
|
45
|
-
const exitVariant = direction === 1 ? "isRight" : direction === -1 ? "isLeft" : "defaultFade";
|
|
46
|
-
const handleOnInteraction = (type, layout) => {
|
|
47
|
-
if (type === "select") {
|
|
48
|
-
setActiveIndicator(layout);
|
|
49
|
-
} else {
|
|
50
|
-
setIntentIndicator(layout);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
return /* @__PURE__ */ jsxs(
|
|
54
|
-
Tabs,
|
|
55
|
-
{
|
|
56
|
-
value: currentTab,
|
|
57
|
-
onValueChange: setCurrentTab,
|
|
58
|
-
orientation: "horizontal",
|
|
59
|
-
size: "$4",
|
|
60
|
-
padding: "$2",
|
|
61
|
-
height: 150,
|
|
62
|
-
flexDirection: "column",
|
|
63
|
-
activationMode: "manual",
|
|
64
|
-
backgroundColor: "$background",
|
|
65
|
-
borderRadius: "$4",
|
|
66
|
-
position: "relative",
|
|
67
|
-
children: [
|
|
68
|
-
/* @__PURE__ */ jsxs(YStack, { children: [
|
|
69
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: intentAt && /* @__PURE__ */ jsx(
|
|
70
|
-
TabsRovingIndicator,
|
|
71
|
-
{
|
|
72
|
-
borderRadius: "$4",
|
|
73
|
-
width: intentAt.width,
|
|
74
|
-
height: intentAt.height,
|
|
75
|
-
x: intentAt.x,
|
|
76
|
-
y: intentAt.y
|
|
77
|
-
}
|
|
78
|
-
) }),
|
|
79
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: activeAt && /* @__PURE__ */ jsx(
|
|
80
|
-
TabsRovingIndicator,
|
|
81
|
-
{
|
|
82
|
-
borderRadius: "$4",
|
|
83
|
-
theme: "active",
|
|
84
|
-
width: activeAt.width,
|
|
85
|
-
height: activeAt.height,
|
|
86
|
-
x: activeAt.x,
|
|
87
|
-
y: activeAt.y
|
|
88
|
-
}
|
|
89
|
-
) }),
|
|
90
|
-
/* @__PURE__ */ jsxs(
|
|
91
|
-
Tabs.List,
|
|
92
|
-
{
|
|
93
|
-
disablePassBorderRadius: true,
|
|
94
|
-
loop: false,
|
|
95
|
-
"aria-label": "Manage your account",
|
|
96
|
-
space: "$2",
|
|
97
|
-
backgroundColor: "transparent",
|
|
98
|
-
children: [
|
|
99
|
-
/* @__PURE__ */ jsx(Tabs.Tab, { unstyled: true, value: "tab1", onInteraction: handleOnInteraction, children: /* @__PURE__ */ jsx(SizableText, { children: "Profile" }) }),
|
|
100
|
-
/* @__PURE__ */ jsx(Tabs.Tab, { unstyled: true, value: "tab2", onInteraction: handleOnInteraction, children: /* @__PURE__ */ jsx(SizableText, { children: "Connections" }) }),
|
|
101
|
-
/* @__PURE__ */ jsx(Tabs.Tab, { unstyled: true, value: "tab3", onInteraction: handleOnInteraction, children: /* @__PURE__ */ jsx(SizableText, { children: "Notifications" }) })
|
|
102
|
-
]
|
|
103
|
-
}
|
|
104
|
-
)
|
|
105
|
-
] }),
|
|
106
|
-
/* @__PURE__ */ jsx(
|
|
107
|
-
AnimatePresence,
|
|
108
|
-
{
|
|
109
|
-
exitBeforeEnter: true,
|
|
110
|
-
enterVariant,
|
|
111
|
-
exitVariant,
|
|
112
|
-
children: /* @__PURE__ */ jsx(AnimatedYStack, { animation: "100ms", x: 0, opacity: 1, flex: 1, children: /* @__PURE__ */ jsx(Tabs.Content, { value: currentTab, forceMount: true, flex: 1, justifyContent: "center", children: /* @__PURE__ */ jsx(H5, { textAlign: "center", children: currentTab }) }) }, currentTab)
|
|
113
|
-
}
|
|
114
|
-
)
|
|
115
|
-
]
|
|
116
|
-
}
|
|
117
|
-
);
|
|
118
|
-
};
|
|
119
|
-
const TabsAdvancedUnderline = () => {
|
|
120
|
-
const [tabState, setTabState] = useState({
|
|
121
|
-
activeAt: null,
|
|
122
|
-
currentTab: "tab1",
|
|
123
|
-
intentAt: null,
|
|
124
|
-
prevActiveAt: null
|
|
125
|
-
});
|
|
126
|
-
const setCurrentTab = (currentTab2) => setTabState({ ...tabState, currentTab: currentTab2 });
|
|
127
|
-
const setIntentIndicator = (intentAt2) => setTabState({ ...tabState, intentAt: intentAt2 });
|
|
128
|
-
const setActiveIndicator = (activeAt2) => setTabState({ ...tabState, prevActiveAt: tabState.activeAt, activeAt: activeAt2 });
|
|
129
|
-
const { activeAt, intentAt, prevActiveAt, currentTab } = tabState;
|
|
130
|
-
const direction = (() => {
|
|
131
|
-
if (!activeAt || !prevActiveAt || activeAt.x === prevActiveAt.x) {
|
|
132
|
-
return 0;
|
|
133
|
-
}
|
|
134
|
-
return activeAt.x > prevActiveAt.x ? -1 : 1;
|
|
135
|
-
})();
|
|
136
|
-
const enterVariant = direction === 1 ? "isLeft" : direction === -1 ? "isRight" : "defaultFade";
|
|
137
|
-
const exitVariant = direction === 1 ? "isRight" : direction === -1 ? "isLeft" : "defaultFade";
|
|
138
|
-
const handleOnInteraction = (type, layout) => {
|
|
139
|
-
if (type === "select") {
|
|
140
|
-
setActiveIndicator(layout);
|
|
141
|
-
} else {
|
|
142
|
-
setIntentIndicator(layout);
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
return /* @__PURE__ */ jsxs(
|
|
146
|
-
Tabs,
|
|
147
|
-
{
|
|
148
|
-
value: currentTab,
|
|
149
|
-
onValueChange: setCurrentTab,
|
|
150
|
-
orientation: "horizontal",
|
|
151
|
-
size: "$4",
|
|
152
|
-
height: 150,
|
|
153
|
-
flexDirection: "column",
|
|
154
|
-
activationMode: "manual",
|
|
155
|
-
backgroundColor: "$background",
|
|
156
|
-
borderRadius: "$4",
|
|
157
|
-
children: [
|
|
158
|
-
/* @__PURE__ */ jsxs(YStack, { children: [
|
|
159
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: intentAt && /* @__PURE__ */ jsx(
|
|
160
|
-
TabsRovingIndicator,
|
|
161
|
-
{
|
|
162
|
-
width: intentAt.width,
|
|
163
|
-
height: "$0.5",
|
|
164
|
-
x: intentAt.x,
|
|
165
|
-
bottom: 0
|
|
166
|
-
}
|
|
167
|
-
) }),
|
|
168
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: activeAt && /* @__PURE__ */ jsx(
|
|
169
|
-
TabsRovingIndicator,
|
|
170
|
-
{
|
|
171
|
-
theme: "active",
|
|
172
|
-
active: true,
|
|
173
|
-
width: activeAt.width,
|
|
174
|
-
height: "$0.5",
|
|
175
|
-
x: activeAt.x,
|
|
176
|
-
bottom: 0
|
|
177
|
-
}
|
|
178
|
-
) }),
|
|
179
|
-
/* @__PURE__ */ jsxs(
|
|
180
|
-
Tabs.List,
|
|
181
|
-
{
|
|
182
|
-
disablePassBorderRadius: true,
|
|
183
|
-
loop: false,
|
|
184
|
-
"aria-label": "Manage your account",
|
|
185
|
-
borderBottomLeftRadius: 0,
|
|
186
|
-
borderBottomRightRadius: 0,
|
|
187
|
-
paddingBottom: "$1.5",
|
|
188
|
-
borderColor: "$color3",
|
|
189
|
-
borderBottomWidth: "$0.5",
|
|
190
|
-
backgroundColor: "transparent",
|
|
191
|
-
children: [
|
|
192
|
-
/* @__PURE__ */ jsx(
|
|
193
|
-
Tabs.Tab,
|
|
194
|
-
{
|
|
195
|
-
unstyled: true,
|
|
196
|
-
padding: "$5",
|
|
197
|
-
value: "tab1",
|
|
198
|
-
onInteraction: handleOnInteraction,
|
|
199
|
-
children: /* @__PURE__ */ jsx(SizableText, { children: "Profile" })
|
|
200
|
-
}
|
|
201
|
-
),
|
|
202
|
-
/* @__PURE__ */ jsx(
|
|
203
|
-
Tabs.Tab,
|
|
204
|
-
{
|
|
205
|
-
unstyled: true,
|
|
206
|
-
padding: "$5",
|
|
207
|
-
value: "tab2",
|
|
208
|
-
onInteraction: handleOnInteraction,
|
|
209
|
-
children: /* @__PURE__ */ jsx(SizableText, { children: "Connections" })
|
|
210
|
-
}
|
|
211
|
-
),
|
|
212
|
-
/* @__PURE__ */ jsx(
|
|
213
|
-
Tabs.Tab,
|
|
214
|
-
{
|
|
215
|
-
unstyled: true,
|
|
216
|
-
padding: "$5",
|
|
217
|
-
value: "tab3",
|
|
218
|
-
onInteraction: handleOnInteraction,
|
|
219
|
-
children: /* @__PURE__ */ jsx(SizableText, { children: "Notifications" })
|
|
220
|
-
}
|
|
221
|
-
)
|
|
222
|
-
]
|
|
223
|
-
}
|
|
224
|
-
)
|
|
225
|
-
] }),
|
|
226
|
-
/* @__PURE__ */ jsx(
|
|
227
|
-
AnimatePresence,
|
|
228
|
-
{
|
|
229
|
-
exitBeforeEnter: true,
|
|
230
|
-
enterVariant,
|
|
231
|
-
exitVariant,
|
|
232
|
-
children: /* @__PURE__ */ jsx(AnimatedYStack, { animation: "100ms", x: 0, opacity: 1, flex: 1, children: /* @__PURE__ */ jsx(Tabs.Content, { value: currentTab, forceMount: true, flex: 1, justifyContent: "center", children: /* @__PURE__ */ jsx(H5, { textAlign: "center", children: currentTab }) }) }, currentTab)
|
|
233
|
-
}
|
|
234
|
-
)
|
|
235
|
-
]
|
|
236
|
-
}
|
|
237
|
-
);
|
|
238
|
-
};
|
|
239
|
-
const TabsRovingIndicator = styled(Stack, {
|
|
240
|
-
position: "absolute",
|
|
241
|
-
backgroundColor: "$color5",
|
|
242
|
-
opacity: 0.7,
|
|
243
|
-
animation: "100ms",
|
|
244
|
-
enterStyle: {
|
|
245
|
-
opacity: 0
|
|
246
|
-
},
|
|
247
|
-
exitStyle: {
|
|
248
|
-
opacity: 0
|
|
249
|
-
},
|
|
250
|
-
variants: {
|
|
251
|
-
active: {
|
|
252
|
-
true: {
|
|
253
|
-
backgroundColor: "$color8",
|
|
254
|
-
opacity: 0.6
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
const AnimatedYStack = styled(YStack, {
|
|
260
|
-
variants: {
|
|
261
|
-
isLeft: { true: { x: -25, opacity: 0 } },
|
|
262
|
-
isRight: { true: { x: 25, opacity: 0 } },
|
|
263
|
-
defaultFade: { true: { opacity: 0 } }
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
export {
|
|
267
|
-
TabsAdvancedDemo
|
|
268
|
-
};
|
|
1
|
+
import{Fragment as V,jsx as t,jsxs as u}from"react/jsx-runtime";import{useState as f}from"react";import{AnimatePresence as T,Button as C,H5 as $,SizableText as v,Stack as L,Tabs as i,XStack as R,YStack as y,styled as k}from"tamagui";const S=["background","underline"],P={background:"Background Indicator",underline:"Underline Indicator"},D=()=>{const[a,o]=f(0),b=S[a];return u(V,{children:[b==="underline"?t(B,{}):t(z,{}),t(R,{ai:"center",space:!0,pos:"absolute",b:"$3",l:"$4",$xxs:{dsp:"none"},children:t(C,{size:"$2",onPress:()=>o(A=>(A+1)%S.length),children:P[b]})})]})},z=()=>{const[a,o]=f({activeAt:null,currentTab:"tab1",intentAt:null,prevActiveAt:null}),b=n=>o({...a,currentTab:n}),A=n=>o({...a,intentAt:n}),h=n=>o({...a,prevActiveAt:a.activeAt,activeAt:n}),{activeAt:e,intentAt:r,prevActiveAt:l,currentTab:s}=a,c=(()=>!e||!l||e.x===l.x?0:e.x>l.x?-1:1)(),m=c===1?"isLeft":c===-1?"isRight":"defaultFade",p=c===1?"isRight":c===-1?"isLeft":"defaultFade",d=(n,x)=>{n==="select"?h(x):A(x)};return u(i,{value:s,onValueChange:b,orientation:"horizontal",size:"$4",padding:"$2",height:150,flexDirection:"column",activationMode:"manual",backgroundColor:"$background",borderRadius:"$4",position:"relative",children:[u(y,{children:[t(T,{children:r&&t(g,{borderRadius:"$4",width:r.width,height:r.height,x:r.x,y:r.y})}),t(T,{children:e&&t(g,{borderRadius:"$4",theme:"active",width:e.width,height:e.height,x:e.x,y:e.y})}),u(i.List,{disablePassBorderRadius:!0,loop:!1,"aria-label":"Manage your account",space:"$2",backgroundColor:"transparent",children:[t(i.Tab,{unstyled:!0,value:"tab1",onInteraction:d,children:t(v,{children:"Profile"})}),t(i.Tab,{unstyled:!0,value:"tab2",onInteraction:d,children:t(v,{children:"Connections"})}),t(i.Tab,{unstyled:!0,value:"tab3",onInteraction:d,children:t(v,{children:"Notifications"})})]})]}),t(T,{exitBeforeEnter:!0,enterVariant:m,exitVariant:p,children:t(I,{animation:"100ms",x:0,opacity:1,flex:1,children:t(i.Content,{value:s,forceMount:!0,flex:1,justifyContent:"center",children:t($,{textAlign:"center",children:s})})},s)})]})},B=()=>{const[a,o]=f({activeAt:null,currentTab:"tab1",intentAt:null,prevActiveAt:null}),b=n=>o({...a,currentTab:n}),A=n=>o({...a,intentAt:n}),h=n=>o({...a,prevActiveAt:a.activeAt,activeAt:n}),{activeAt:e,intentAt:r,prevActiveAt:l,currentTab:s}=a,c=(()=>!e||!l||e.x===l.x?0:e.x>l.x?-1:1)(),m=c===1?"isLeft":c===-1?"isRight":"defaultFade",p=c===1?"isRight":c===-1?"isLeft":"defaultFade",d=(n,x)=>{n==="select"?h(x):A(x)};return u(i,{value:s,onValueChange:b,orientation:"horizontal",size:"$4",height:150,flexDirection:"column",activationMode:"manual",backgroundColor:"$background",borderRadius:"$4",children:[u(y,{children:[t(T,{children:r&&t(g,{width:r.width,height:"$0.5",x:r.x,bottom:0})}),t(T,{children:e&&t(g,{theme:"active",active:!0,width:e.width,height:"$0.5",x:e.x,bottom:0})}),u(i.List,{disablePassBorderRadius:!0,loop:!1,"aria-label":"Manage your account",borderBottomLeftRadius:0,borderBottomRightRadius:0,paddingBottom:"$1.5",borderColor:"$color3",borderBottomWidth:"$0.5",backgroundColor:"transparent",children:[t(i.Tab,{unstyled:!0,padding:"$5",value:"tab1",onInteraction:d,children:t(v,{children:"Profile"})}),t(i.Tab,{unstyled:!0,padding:"$5",value:"tab2",onInteraction:d,children:t(v,{children:"Connections"})}),t(i.Tab,{unstyled:!0,padding:"$5",value:"tab3",onInteraction:d,children:t(v,{children:"Notifications"})})]})]}),t(T,{exitBeforeEnter:!0,enterVariant:m,exitVariant:p,children:t(I,{animation:"100ms",x:0,opacity:1,flex:1,children:t(i.Content,{value:s,forceMount:!0,flex:1,justifyContent:"center",children:t($,{textAlign:"center",children:s})})},s)})]})},g=k(L,{position:"absolute",backgroundColor:"$color5",opacity:.7,animation:"100ms",enterStyle:{opacity:0},exitStyle:{opacity:0},variants:{active:{true:{backgroundColor:"$color8",opacity:.6}}}}),I=k(y,{variants:{isLeft:{true:{x:-25,opacity:0}},isRight:{true:{x:25,opacity:0}},defaultFade:{true:{opacity:0}}}});export{D as TabsAdvancedDemo};
|
|
269
2
|
//# sourceMappingURL=TabsAdvancedDemo.mjs.map
|