@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
|
@@ -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": "AAAA,
|
|
6
|
-
"names": ["currentTab", "intentAt", "activeAt"]
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["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,220 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
AnimatePresence,
|
|
4
|
-
Button,
|
|
5
|
-
H5,
|
|
6
|
-
SizableText,
|
|
7
|
-
Stack,
|
|
8
|
-
Tabs,
|
|
9
|
-
XStack,
|
|
10
|
-
YStack,
|
|
11
|
-
styled
|
|
12
|
-
} from "tamagui";
|
|
13
|
-
const demos = ["background", "underline"];
|
|
14
|
-
const demosTitle = {
|
|
15
|
-
background: "Background Indicator",
|
|
16
|
-
underline: "Underline Indicator"
|
|
17
|
-
};
|
|
18
|
-
const TabsAdvancedDemo = () => {
|
|
19
|
-
const [demoIndex, setDemoIndex] = useState(0);
|
|
20
|
-
const demo = demos[demoIndex];
|
|
21
|
-
return <>
|
|
22
|
-
{demo === "underline" ? <TabsAdvancedUnderline /> : <TabsAdvancedBackground />}
|
|
23
|
-
<XStack ai="center" space pos="absolute" b="$3" l="$4" $xxs={{ dsp: "none" }}><Button size="$2" onPress={() => setDemoIndex((x) => (x + 1) % demos.length)}>{demosTitle[demo]}</Button></XStack>
|
|
24
|
-
</>;
|
|
25
|
-
};
|
|
26
|
-
const TabsAdvancedBackground = () => {
|
|
27
|
-
const [tabState, setTabState] = useState({
|
|
28
|
-
activeAt: null,
|
|
29
|
-
currentTab: "tab1",
|
|
30
|
-
intentAt: null,
|
|
31
|
-
prevActiveAt: null
|
|
32
|
-
});
|
|
33
|
-
const setCurrentTab = (currentTab2) => setTabState({ ...tabState, currentTab: currentTab2 });
|
|
34
|
-
const setIntentIndicator = (intentAt2) => setTabState({ ...tabState, intentAt: intentAt2 });
|
|
35
|
-
const setActiveIndicator = (activeAt2) => setTabState({ ...tabState, prevActiveAt: tabState.activeAt, activeAt: activeAt2 });
|
|
36
|
-
const { activeAt, intentAt, prevActiveAt, currentTab } = tabState;
|
|
37
|
-
const direction = (() => {
|
|
38
|
-
if (!activeAt || !prevActiveAt || activeAt.x === prevActiveAt.x) {
|
|
39
|
-
return 0;
|
|
40
|
-
}
|
|
41
|
-
return activeAt.x > prevActiveAt.x ? -1 : 1;
|
|
42
|
-
})();
|
|
43
|
-
const enterVariant = direction === 1 ? "isLeft" : direction === -1 ? "isRight" : "defaultFade";
|
|
44
|
-
const exitVariant = direction === 1 ? "isRight" : direction === -1 ? "isLeft" : "defaultFade";
|
|
45
|
-
const handleOnInteraction = (type, layout) => {
|
|
46
|
-
if (type === "select") {
|
|
47
|
-
setActiveIndicator(layout);
|
|
48
|
-
} else {
|
|
49
|
-
setIntentIndicator(layout);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
return <Tabs
|
|
53
|
-
value={currentTab}
|
|
54
|
-
onValueChange={setCurrentTab}
|
|
55
|
-
orientation="horizontal"
|
|
56
|
-
size="$4"
|
|
57
|
-
padding="$2"
|
|
58
|
-
height={150}
|
|
59
|
-
flexDirection="column"
|
|
60
|
-
activationMode="manual"
|
|
61
|
-
backgroundColor="$background"
|
|
62
|
-
borderRadius="$4"
|
|
63
|
-
position="relative"
|
|
64
|
-
>
|
|
65
|
-
<YStack>
|
|
66
|
-
<AnimatePresence>{intentAt && <TabsRovingIndicator
|
|
67
|
-
borderRadius="$4"
|
|
68
|
-
width={intentAt.width}
|
|
69
|
-
height={intentAt.height}
|
|
70
|
-
x={intentAt.x}
|
|
71
|
-
y={intentAt.y}
|
|
72
|
-
/>}</AnimatePresence>
|
|
73
|
-
<AnimatePresence>{activeAt && <TabsRovingIndicator
|
|
74
|
-
borderRadius="$4"
|
|
75
|
-
theme="active"
|
|
76
|
-
width={activeAt.width}
|
|
77
|
-
height={activeAt.height}
|
|
78
|
-
x={activeAt.x}
|
|
79
|
-
y={activeAt.y}
|
|
80
|
-
/>}</AnimatePresence>
|
|
81
|
-
<Tabs.List
|
|
82
|
-
disablePassBorderRadius
|
|
83
|
-
loop={false}
|
|
84
|
-
aria-label="Manage your account"
|
|
85
|
-
space="$2"
|
|
86
|
-
backgroundColor="transparent"
|
|
87
|
-
>
|
|
88
|
-
<Tabs.Tab unstyled value="tab1" onInteraction={handleOnInteraction}><SizableText>Profile</SizableText></Tabs.Tab>
|
|
89
|
-
<Tabs.Tab unstyled value="tab2" onInteraction={handleOnInteraction}><SizableText>Connections</SizableText></Tabs.Tab>
|
|
90
|
-
<Tabs.Tab unstyled value="tab3" onInteraction={handleOnInteraction}><SizableText>Notifications</SizableText></Tabs.Tab>
|
|
91
|
-
</Tabs.List>
|
|
92
|
-
</YStack>
|
|
93
|
-
<AnimatePresence
|
|
94
|
-
exitBeforeEnter
|
|
95
|
-
enterVariant={enterVariant}
|
|
96
|
-
exitVariant={exitVariant}
|
|
97
|
-
><AnimatedYStack key={currentTab} animation="100ms" x={0} opacity={1} flex={1}><Tabs.Content value={currentTab} forceMount flex={1} justifyContent="center"><H5 textAlign="center">{currentTab}</H5></Tabs.Content></AnimatedYStack></AnimatePresence>
|
|
98
|
-
</Tabs>;
|
|
99
|
-
};
|
|
100
|
-
const TabsAdvancedUnderline = () => {
|
|
101
|
-
const [tabState, setTabState] = useState({
|
|
102
|
-
activeAt: null,
|
|
103
|
-
currentTab: "tab1",
|
|
104
|
-
intentAt: null,
|
|
105
|
-
prevActiveAt: null
|
|
106
|
-
});
|
|
107
|
-
const setCurrentTab = (currentTab2) => setTabState({ ...tabState, currentTab: currentTab2 });
|
|
108
|
-
const setIntentIndicator = (intentAt2) => setTabState({ ...tabState, intentAt: intentAt2 });
|
|
109
|
-
const setActiveIndicator = (activeAt2) => setTabState({ ...tabState, prevActiveAt: tabState.activeAt, activeAt: activeAt2 });
|
|
110
|
-
const { activeAt, intentAt, prevActiveAt, currentTab } = tabState;
|
|
111
|
-
const direction = (() => {
|
|
112
|
-
if (!activeAt || !prevActiveAt || activeAt.x === prevActiveAt.x) {
|
|
113
|
-
return 0;
|
|
114
|
-
}
|
|
115
|
-
return activeAt.x > prevActiveAt.x ? -1 : 1;
|
|
116
|
-
})();
|
|
117
|
-
const enterVariant = direction === 1 ? "isLeft" : direction === -1 ? "isRight" : "defaultFade";
|
|
118
|
-
const exitVariant = direction === 1 ? "isRight" : direction === -1 ? "isLeft" : "defaultFade";
|
|
119
|
-
const handleOnInteraction = (type, layout) => {
|
|
120
|
-
if (type === "select") {
|
|
121
|
-
setActiveIndicator(layout);
|
|
122
|
-
} else {
|
|
123
|
-
setIntentIndicator(layout);
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
return <Tabs
|
|
127
|
-
value={currentTab}
|
|
128
|
-
onValueChange={setCurrentTab}
|
|
129
|
-
orientation="horizontal"
|
|
130
|
-
size="$4"
|
|
131
|
-
height={150}
|
|
132
|
-
flexDirection="column"
|
|
133
|
-
activationMode="manual"
|
|
134
|
-
backgroundColor="$background"
|
|
135
|
-
borderRadius="$4"
|
|
136
|
-
>
|
|
137
|
-
<YStack>
|
|
138
|
-
<AnimatePresence>{intentAt && <TabsRovingIndicator
|
|
139
|
-
width={intentAt.width}
|
|
140
|
-
height="$0.5"
|
|
141
|
-
x={intentAt.x}
|
|
142
|
-
bottom={0}
|
|
143
|
-
/>}</AnimatePresence>
|
|
144
|
-
<AnimatePresence>{activeAt && <TabsRovingIndicator
|
|
145
|
-
theme="active"
|
|
146
|
-
active
|
|
147
|
-
width={activeAt.width}
|
|
148
|
-
height="$0.5"
|
|
149
|
-
x={activeAt.x}
|
|
150
|
-
bottom={0}
|
|
151
|
-
/>}</AnimatePresence>
|
|
152
|
-
<Tabs.List
|
|
153
|
-
disablePassBorderRadius
|
|
154
|
-
loop={false}
|
|
155
|
-
aria-label="Manage your account"
|
|
156
|
-
borderBottomLeftRadius={0}
|
|
157
|
-
borderBottomRightRadius={0}
|
|
158
|
-
paddingBottom="$1.5"
|
|
159
|
-
borderColor="$color3"
|
|
160
|
-
borderBottomWidth="$0.5"
|
|
161
|
-
backgroundColor="transparent"
|
|
162
|
-
>
|
|
163
|
-
<Tabs.Tab
|
|
164
|
-
unstyled
|
|
165
|
-
padding="$5"
|
|
166
|
-
value="tab1"
|
|
167
|
-
onInteraction={handleOnInteraction}
|
|
168
|
-
><SizableText>Profile</SizableText></Tabs.Tab>
|
|
169
|
-
<Tabs.Tab
|
|
170
|
-
unstyled
|
|
171
|
-
padding="$5"
|
|
172
|
-
value="tab2"
|
|
173
|
-
onInteraction={handleOnInteraction}
|
|
174
|
-
><SizableText>Connections</SizableText></Tabs.Tab>
|
|
175
|
-
<Tabs.Tab
|
|
176
|
-
unstyled
|
|
177
|
-
padding="$5"
|
|
178
|
-
value="tab3"
|
|
179
|
-
onInteraction={handleOnInteraction}
|
|
180
|
-
><SizableText>Notifications</SizableText></Tabs.Tab>
|
|
181
|
-
</Tabs.List>
|
|
182
|
-
</YStack>
|
|
183
|
-
<AnimatePresence
|
|
184
|
-
exitBeforeEnter
|
|
185
|
-
enterVariant={enterVariant}
|
|
186
|
-
exitVariant={exitVariant}
|
|
187
|
-
><AnimatedYStack key={currentTab} animation="100ms" x={0} opacity={1} flex={1}><Tabs.Content value={currentTab} forceMount flex={1} justifyContent="center"><H5 textAlign="center">{currentTab}</H5></Tabs.Content></AnimatedYStack></AnimatePresence>
|
|
188
|
-
</Tabs>;
|
|
189
|
-
};
|
|
190
|
-
const TabsRovingIndicator = styled(Stack, {
|
|
191
|
-
position: "absolute",
|
|
192
|
-
backgroundColor: "$color5",
|
|
193
|
-
opacity: 0.7,
|
|
194
|
-
animation: "100ms",
|
|
195
|
-
enterStyle: {
|
|
196
|
-
opacity: 0
|
|
197
|
-
},
|
|
198
|
-
exitStyle: {
|
|
199
|
-
opacity: 0
|
|
200
|
-
},
|
|
201
|
-
variants: {
|
|
202
|
-
active: {
|
|
203
|
-
true: {
|
|
204
|
-
backgroundColor: "$color8",
|
|
205
|
-
opacity: 0.6
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
const AnimatedYStack = styled(YStack, {
|
|
211
|
-
variants: {
|
|
212
|
-
isLeft: { true: { x: -25, opacity: 0 } },
|
|
213
|
-
isRight: { true: { x: 25, opacity: 0 } },
|
|
214
|
-
defaultFade: { true: { opacity: 0 } }
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
export {
|
|
218
|
-
TabsAdvancedDemo
|
|
219
|
-
};
|
|
1
|
+
import{useState as B}from"react";import{AnimatePresence as $,Button as H,H5 as M,SizableText as S,Stack as j,Tabs as T,XStack as E,YStack as V,styled as Y}from"tamagui";const F=["background","underline"],N={background:"Background Indicator",underline:"Underline Indicator"},J=()=>{const[n,v]=B(0),p=F[n];return<>{p==="underline"?<U/>:<O/>}<E ai="center"space pos="absolute"b="$3"l="$4"$xxs={{dsp:"none"}}><H size="$2"onPress={()=>v(I=>(I+1)%F.length)}>{N[p]}</H></E></>},O=()=>{const[n,v]=B({activeAt:null,currentTab:"tab1",intentAt:null,prevActiveAt:null}),p=e=>v({...n,currentTab:e}),I=e=>v({...n,intentAt:e}),R=e=>v({...n,prevActiveAt:n.activeAt,activeAt:e}),{activeAt:t,intentAt:x,prevActiveAt:h,currentTab:A}=n,g=(()=>!t||!h||t.x===h.x?0:t.x>h.x?-1:1)(),P=g===1?"isLeft":g===-1?"isRight":"defaultFade",z=g===1?"isRight":g===-1?"isLeft":"defaultFade",m=(e,C)=>{e==="select"?R(C):I(C)};return<T value={A}onValueChange={p}orientation="horizontal"size="$4"padding="$2"height={150}flexDirection="column"activationMode="manual"backgroundColor="$background"borderRadius="$4"position="relative"><V><$>{x&&<L borderRadius="$4"width={x.width}height={x.height}x={x.x}y={x.y}/>}</$><$>{t&&<L borderRadius="$4"theme="active"width={t.width}height={t.height}x={t.x}y={t.y}/>}</$><T.List disablePassBorderRadius loop={!1}aria-label="Manage your account"space="$2"backgroundColor="transparent"><T.Tab unstyled value="tab1"onInteraction={m}><S>Profile</S></T.Tab><T.Tab unstyled value="tab2"onInteraction={m}><S>Connections</S></T.Tab><T.Tab unstyled value="tab3"onInteraction={m}><S>Notifications</S></T.Tab></T.List></V><$ exitBeforeEnter enterVariant={P}exitVariant={z}><D key={A}animation="100ms"x={0}opacity={1}flex={1}><T.Content value={A}forceMount flex={1}justifyContent="center"><M textAlign="center">{A}</M></T.Content></D></$></T>},U=()=>{const[n,v]=B({activeAt:null,currentTab:"tab1",intentAt:null,prevActiveAt:null}),p=e=>v({...n,currentTab:e}),I=e=>v({...n,intentAt:e}),R=e=>v({...n,prevActiveAt:n.activeAt,activeAt:e}),{activeAt:t,intentAt:x,prevActiveAt:h,currentTab:A}=n,g=(()=>!t||!h||t.x===h.x?0:t.x>h.x?-1:1)(),P=g===1?"isLeft":g===-1?"isRight":"defaultFade",z=g===1?"isRight":g===-1?"isLeft":"defaultFade",m=(e,C)=>{e==="select"?R(C):I(C)};return<T value={A}onValueChange={p}orientation="horizontal"size="$4"height={150}flexDirection="column"activationMode="manual"backgroundColor="$background"borderRadius="$4"><V><$>{x&&<L width={x.width}height="$0.5"x={x.x}bottom={0}/>}</$><$>{t&&<L theme="active"active width={t.width}height="$0.5"x={t.x}bottom={0}/>}</$><T.List disablePassBorderRadius loop={!1}aria-label="Manage your account"borderBottomLeftRadius={0}borderBottomRightRadius={0}paddingBottom="$1.5"borderColor="$color3"borderBottomWidth="$0.5"backgroundColor="transparent"><T.Tab unstyled padding="$5"value="tab1"onInteraction={m}><S>Profile</S></T.Tab><T.Tab unstyled padding="$5"value="tab2"onInteraction={m}><S>Connections</S></T.Tab><T.Tab unstyled padding="$5"value="tab3"onInteraction={m}><S>Notifications</S></T.Tab></T.List></V><$ exitBeforeEnter enterVariant={P}exitVariant={z}><D key={A}animation="100ms"x={0}opacity={1}flex={1}><T.Content value={A}forceMount flex={1}justifyContent="center"><M textAlign="center">{A}</M></T.Content></D></$></T>},L=Y(j,{position:"absolute",backgroundColor:"$color5",opacity:.7,animation:"100ms",enterStyle:{opacity:0},exitStyle:{opacity:0},variants:{active:{true:{backgroundColor:"$color8",opacity:.6}}}}),D=Y(V,{variants:{isLeft:{true:{x:-25,opacity:0}},isRight:{true:{x:25,opacity:0}},defaultFade:{true:{opacity:0}}}});export{J as TabsAdvancedDemo};
|
|
220
2
|
//# sourceMappingURL=TabsAdvancedDemo.mjs.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": "AAAA,
|
|
6
|
-
"names": ["currentTab", "intentAt", "activeAt"]
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["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
|
}
|
package/dist/jsx/TabsDemo.js
CHANGED
|
@@ -1,106 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
Button,
|
|
4
|
-
H5,
|
|
5
|
-
Separator,
|
|
6
|
-
SizableText,
|
|
7
|
-
Tabs,
|
|
8
|
-
XStack,
|
|
9
|
-
YStack
|
|
10
|
-
} from "tamagui";
|
|
11
|
-
const demos = ["horizontal", "vertical"];
|
|
12
|
-
const demosTitle = {
|
|
13
|
-
horizontal: "Horizontal",
|
|
14
|
-
vertical: "Vertical"
|
|
15
|
-
};
|
|
16
|
-
function TabsDemo() {
|
|
17
|
-
const [demoIndex, setDemoIndex] = useState(0);
|
|
18
|
-
const demo = demos[demoIndex];
|
|
19
|
-
return (
|
|
20
|
-
// web only fix for position relative
|
|
21
|
-
<YStack paddingHorizontal="$4" position="unset">
|
|
22
|
-
{demo === "horizontal" ? <HorizontalTabs /> : <VerticalTabs />}
|
|
23
|
-
<XStack
|
|
24
|
-
alignItems="center"
|
|
25
|
-
space
|
|
26
|
-
position="absolute"
|
|
27
|
-
bottom="$3"
|
|
28
|
-
left="$4"
|
|
29
|
-
$xxs={{ display: "none" }}
|
|
30
|
-
><Button size="$2" onPress={() => setDemoIndex((x) => (x + 1) % demos.length)}>{demosTitle[demo]}</Button></XStack>
|
|
31
|
-
</YStack>
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
const HorizontalTabs = () => {
|
|
35
|
-
return <Tabs
|
|
36
|
-
defaultValue="tab1"
|
|
37
|
-
orientation="horizontal"
|
|
38
|
-
flexDirection="column"
|
|
39
|
-
width={400}
|
|
40
|
-
height={150}
|
|
41
|
-
borderRadius="$4"
|
|
42
|
-
borderWidth="$0.25"
|
|
43
|
-
overflow="hidden"
|
|
44
|
-
borderColor="$borderColor"
|
|
45
|
-
>
|
|
46
|
-
<Tabs.List
|
|
47
|
-
separator={<Separator vertical />}
|
|
48
|
-
disablePassBorderRadius="bottom"
|
|
49
|
-
aria-label="Manage your account"
|
|
50
|
-
>
|
|
51
|
-
<Tabs.Tab flex={1} value="tab1"><SizableText fontFamily="$body">Profile</SizableText></Tabs.Tab>
|
|
52
|
-
<Tabs.Tab flex={1} value="tab2"><SizableText fontFamily="$body">Connections</SizableText></Tabs.Tab>
|
|
53
|
-
<Tabs.Tab flex={1} value="tab3"><SizableText fontFamily="$body">Notifications</SizableText></Tabs.Tab>
|
|
54
|
-
</Tabs.List>
|
|
55
|
-
<Separator />
|
|
56
|
-
<TabsContent value="tab1"><H5>Profile</H5></TabsContent>
|
|
57
|
-
<TabsContent value="tab2"><H5>Connections</H5></TabsContent>
|
|
58
|
-
<TabsContent value="tab3"><H5>Notifications</H5></TabsContent>
|
|
59
|
-
</Tabs>;
|
|
60
|
-
};
|
|
61
|
-
const VerticalTabs = () => {
|
|
62
|
-
return <Tabs
|
|
63
|
-
defaultValue="tab1"
|
|
64
|
-
flexDirection="row"
|
|
65
|
-
orientation="vertical"
|
|
66
|
-
width={400}
|
|
67
|
-
borderRadius="$4"
|
|
68
|
-
borderWidth="$0.25"
|
|
69
|
-
overflow="hidden"
|
|
70
|
-
borderColor="$borderColor"
|
|
71
|
-
>
|
|
72
|
-
<Tabs.List
|
|
73
|
-
disablePassBorderRadius="end"
|
|
74
|
-
aria-label="Manage your account"
|
|
75
|
-
separator={<Separator />}
|
|
76
|
-
>
|
|
77
|
-
<Tabs.Tab value="tab1"><SizableText>Profile</SizableText></Tabs.Tab>
|
|
78
|
-
<Tabs.Tab value="tab2"><SizableText>Connections</SizableText></Tabs.Tab>
|
|
79
|
-
<Tabs.Tab value="tab3"><SizableText>Notifications</SizableText></Tabs.Tab>
|
|
80
|
-
</Tabs.List>
|
|
81
|
-
<Separator vertical />
|
|
82
|
-
<TabsContent value="tab1"><H5 textAlign="center">Profile</H5></TabsContent>
|
|
83
|
-
<TabsContent value="tab2"><H5 textAlign="center">Connections</H5></TabsContent>
|
|
84
|
-
<TabsContent value="tab3"><H5 textAlign="center">Notifications</H5></TabsContent>
|
|
85
|
-
</Tabs>;
|
|
86
|
-
};
|
|
87
|
-
const TabsContent = (props) => {
|
|
88
|
-
return <Tabs.Content
|
|
89
|
-
backgroundColor="$background"
|
|
90
|
-
key="tab3"
|
|
91
|
-
padding="$2"
|
|
92
|
-
alignItems="center"
|
|
93
|
-
justifyContent="center"
|
|
94
|
-
flex={1}
|
|
95
|
-
borderColor="$background"
|
|
96
|
-
borderRadius="$2"
|
|
97
|
-
borderTopLeftRadius={0}
|
|
98
|
-
borderTopRightRadius={0}
|
|
99
|
-
borderWidth="$2"
|
|
100
|
-
{...props}
|
|
101
|
-
>{props.children}</Tabs.Content>;
|
|
102
|
-
};
|
|
103
|
-
export {
|
|
104
|
-
TabsDemo
|
|
105
|
-
};
|
|
1
|
+
import{useState as B}from"react";import{Button as D,H5 as C,Separator as P,SizableText as $,Tabs as T,XStack as I,YStack as N}from"tamagui";const k=["horizontal","vertical"],V={horizontal:"Horizontal",vertical:"Vertical"};function Y(){const[H,w]=B(0),R=k[H];return<N paddingHorizontal="$4"position="unset">{R==="horizontal"?<A/>:<F/>}<I alignItems="center"space position="absolute"bottom="$3"left="$4"$xxs={{display:"none"}}><D size="$2"onPress={()=>w(L=>(L+1)%k.length)}>{V[R]}</D></I></N>}const A=()=><T defaultValue="tab1"orientation="horizontal"flexDirection="column"width={400}height={150}borderRadius="$4"borderWidth="$0.25"overflow="hidden"borderColor="$borderColor"><T.List separator={<P vertical/>}disablePassBorderRadius="bottom"aria-label="Manage your account"><T.Tab flex={1}value="tab1"><$ fontFamily="$body">Profile</$></T.Tab><T.Tab flex={1}value="tab2"><$ fontFamily="$body">Connections</$></T.Tab><T.Tab flex={1}value="tab3"><$ fontFamily="$body">Notifications</$></T.Tab></T.List><P/><S value="tab1"><C>Profile</C></S><S value="tab2"><C>Connections</C></S><S value="tab3"><C>Notifications</C></S></T>,F=()=><T defaultValue="tab1"flexDirection="row"orientation="vertical"width={400}borderRadius="$4"borderWidth="$0.25"overflow="hidden"borderColor="$borderColor"><T.List disablePassBorderRadius="end"aria-label="Manage your account"separator={<P/>}><T.Tab value="tab1"><$>Profile</$></T.Tab><T.Tab value="tab2"><$>Connections</$></T.Tab><T.Tab value="tab3"><$>Notifications</$></T.Tab></T.List><P vertical/><S value="tab1"><C textAlign="center">Profile</C></S><S value="tab2"><C textAlign="center">Connections</C></S><S value="tab3"><C textAlign="center">Notifications</C></S></T>,S=H=><T.Content backgroundColor="$background"key="tab3"padding="$2"alignItems="center"justifyContent="center"flex={1}borderColor="$background"borderRadius="$2"borderTopLeftRadius={0}borderTopRightRadius={0}borderWidth="$2"{...H}>{H.children}</T.Content>;export{Y as TabsDemo};
|
|
106
2
|
//# sourceMappingURL=TabsDemo.js.map
|
package/dist/jsx/TabsDemo.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/TabsDemo.tsx"],
|
|
4
4
|
"sourcesContent": ["import { useState } from 'react'\nimport {\n Button,\n H5,\n Separator,\n SizableText,\n Tabs,\n TabsContentProps,\n XStack,\n YStack,\n} from 'tamagui'\n\nconst demos = ['horizontal', 'vertical'] as const\nconst demosTitle: Record<(typeof demos)[number], string> = {\n horizontal: 'Horizontal',\n vertical: 'Vertical',\n}\n\nexport function TabsDemo() {\n const [demoIndex, setDemoIndex] = useState(0)\n const demo = demos[demoIndex]\n\n return (\n // web only fix for position relative\n <YStack paddingHorizontal=\"$4\" position={'unset' as any}>\n {demo === 'horizontal' ? <HorizontalTabs /> : <VerticalTabs />}\n\n <XStack\n alignItems=\"center\"\n space\n position=\"absolute\"\n bottom=\"$3\"\n left=\"$4\"\n $xxs={{ display: 'none' }}\n >\n <Button size=\"$2\" onPress={() => setDemoIndex((x) => (x + 1) % demos.length)}>\n {demosTitle[demo]}\n </Button>\n </XStack>\n </YStack>\n )\n}\n\nconst HorizontalTabs = () => {\n return (\n <Tabs\n defaultValue=\"tab1\"\n orientation=\"horizontal\"\n flexDirection=\"column\"\n width={400}\n height={150}\n borderRadius=\"$4\"\n borderWidth=\"$0.25\"\n overflow=\"hidden\"\n borderColor=\"$borderColor\"\n >\n <Tabs.List\n separator={<Separator vertical />}\n disablePassBorderRadius=\"bottom\"\n aria-label=\"Manage your account\"\n >\n <Tabs.Tab flex={1} value=\"tab1\">\n <SizableText fontFamily=\"$body\">Profile</SizableText>\n </Tabs.Tab>\n <Tabs.Tab flex={1} value=\"tab2\">\n <SizableText fontFamily=\"$body\">Connections</SizableText>\n </Tabs.Tab>\n <Tabs.Tab flex={1} value=\"tab3\">\n <SizableText fontFamily=\"$body\">Notifications</SizableText>\n </Tabs.Tab>\n </Tabs.List>\n <Separator />\n <TabsContent value=\"tab1\">\n <H5>Profile</H5>\n </TabsContent>\n\n <TabsContent value=\"tab2\">\n <H5>Connections</H5>\n </TabsContent>\n\n <TabsContent value=\"tab3\">\n <H5>Notifications</H5>\n </TabsContent>\n </Tabs>\n )\n}\n\nconst VerticalTabs = () => {\n return (\n <Tabs\n defaultValue=\"tab1\"\n flexDirection=\"row\"\n orientation=\"vertical\"\n width={400}\n borderRadius=\"$4\"\n borderWidth=\"$0.25\"\n overflow=\"hidden\"\n borderColor=\"$borderColor\"\n >\n <Tabs.List\n disablePassBorderRadius=\"end\"\n aria-label=\"Manage your account\"\n separator={<Separator />}\n >\n <Tabs.Tab value=\"tab1\">\n <SizableText>Profile</SizableText>\n </Tabs.Tab>\n <Tabs.Tab value=\"tab2\">\n <SizableText>Connections</SizableText>\n </Tabs.Tab>\n <Tabs.Tab value=\"tab3\">\n <SizableText>Notifications</SizableText>\n </Tabs.Tab>\n </Tabs.List>\n <Separator vertical />\n <TabsContent value=\"tab1\">\n <H5 textAlign=\"center\">Profile</H5>\n </TabsContent>\n <TabsContent value=\"tab2\">\n <H5 textAlign=\"center\">Connections</H5>\n </TabsContent>\n <TabsContent value=\"tab3\">\n <H5 textAlign=\"center\">Notifications</H5>\n </TabsContent>\n </Tabs>\n )\n}\n\nconst TabsContent = (props: TabsContentProps) => {\n return (\n <Tabs.Content\n backgroundColor=\"$background\"\n key=\"tab3\"\n padding=\"$2\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flex={1}\n borderColor=\"$background\"\n borderRadius=\"$2\"\n borderTopLeftRadius={0}\n borderTopRightRadius={0}\n borderWidth=\"$2\"\n {...props}\n >\n {props.children}\n </Tabs.Content>\n )\n}\n"],
|
|
5
|
-
"mappings": "AAAA,
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useState", "Button", "H5", "Separator", "SizableText", "Tabs", "XStack", "YStack", "demos", "demosTitle", "TabsDemo", "demoIndex", "setDemoIndex", "demo", "HorizontalTabs", "VerticalTabs", "x", "TabsContent", "props"]
|
|
7
7
|
}
|