@tamagui/demos 1.6.2 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AnimationsPresenceDemo.js +3 -3
- package/dist/cjs/LucideIconsDemo.js +1 -1
- package/dist/cjs/ProgressDemo.js +2 -2
- package/dist/cjs/ProgressDemo.js.map +2 -2
- package/dist/cjs/SliderDemo.js +1 -1
- package/dist/cjs/SliderDemo.js.map +2 -2
- package/dist/cjs/TabsAdvancedDemo.js +138 -0
- package/dist/cjs/TabsAdvancedDemo.js.map +7 -0
- package/dist/cjs/TabsDemo.js +85 -0
- package/dist/cjs/TabsDemo.js.map +7 -0
- package/dist/cjs/TabsHighlightedDemo.js +188 -0
- package/dist/cjs/TabsHighlightedDemo.js.map +7 -0
- package/dist/cjs/TabsUnderlinedDemo.js +176 -0
- package/dist/cjs/TabsUnderlinedDemo.js.map +7 -0
- package/dist/cjs/UpdateThemeDemo.js +1 -1
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/esm/ProgressDemo.js +2 -2
- package/dist/esm/ProgressDemo.js.map +2 -2
- package/dist/esm/ProgressDemo.mjs +2 -2
- package/dist/esm/ProgressDemo.mjs.map +2 -2
- package/dist/esm/SliderDemo.js +1 -1
- package/dist/esm/SliderDemo.js.map +2 -2
- package/dist/esm/SliderDemo.mjs +1 -1
- package/dist/esm/SliderDemo.mjs.map +2 -2
- package/dist/esm/TabsAdvancedDemo.js +122 -0
- package/dist/esm/TabsAdvancedDemo.js.map +7 -0
- package/dist/esm/TabsAdvancedDemo.mjs +122 -0
- package/dist/esm/TabsAdvancedDemo.mjs.map +7 -0
- package/dist/esm/TabsDemo.js +61 -0
- package/dist/esm/TabsDemo.js.map +7 -0
- package/dist/esm/TabsDemo.mjs +61 -0
- package/dist/esm/TabsDemo.mjs.map +7 -0
- package/dist/esm/TabsHighlightedDemo.js +172 -0
- package/dist/esm/TabsHighlightedDemo.js.map +7 -0
- package/dist/esm/TabsHighlightedDemo.mjs +172 -0
- package/dist/esm/TabsHighlightedDemo.mjs.map +7 -0
- package/dist/esm/TabsUnderlinedDemo.js +160 -0
- package/dist/esm/TabsUnderlinedDemo.js.map +7 -0
- package/dist/esm/TabsUnderlinedDemo.mjs +160 -0
- package/dist/esm/TabsUnderlinedDemo.mjs.map +7 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/index.mjs +4 -0
- package/dist/esm/index.mjs.map +2 -2
- package/dist/jsx/ProgressDemo.js +2 -2
- package/dist/jsx/ProgressDemo.js.map +2 -2
- package/dist/jsx/ProgressDemo.mjs +2 -2
- package/dist/jsx/ProgressDemo.mjs.map +2 -2
- package/dist/jsx/SliderDemo.js +1 -1
- package/dist/jsx/SliderDemo.js.map +2 -2
- package/dist/jsx/SliderDemo.mjs +1 -1
- package/dist/jsx/SliderDemo.mjs.map +2 -2
- package/dist/jsx/TabsAdvancedDemo.js +103 -0
- package/dist/jsx/TabsAdvancedDemo.js.map +7 -0
- package/dist/jsx/TabsAdvancedDemo.mjs +103 -0
- package/dist/jsx/TabsAdvancedDemo.mjs.map +7 -0
- package/dist/jsx/TabsDemo.js +52 -0
- package/dist/jsx/TabsDemo.js.map +7 -0
- package/dist/jsx/TabsDemo.mjs +52 -0
- package/dist/jsx/TabsDemo.mjs.map +7 -0
- package/dist/jsx/TabsHighlightedDemo.js +141 -0
- package/dist/jsx/TabsHighlightedDemo.js.map +7 -0
- package/dist/jsx/TabsHighlightedDemo.mjs +141 -0
- package/dist/jsx/TabsHighlightedDemo.mjs.map +7 -0
- package/dist/jsx/TabsUnderlinedDemo.js +133 -0
- package/dist/jsx/TabsUnderlinedDemo.js.map +7 -0
- package/dist/jsx/TabsUnderlinedDemo.mjs +133 -0
- package/dist/jsx/TabsUnderlinedDemo.mjs.map +7 -0
- package/dist/jsx/index.js +4 -0
- package/dist/jsx/index.js.map +2 -2
- package/dist/jsx/index.mjs +4 -0
- package/dist/jsx/index.mjs.map +2 -2
- package/package.json +17 -18
- package/src/ProgressDemo.tsx +2 -2
- package/src/SliderDemo.tsx +1 -1
- package/src/TabsAdvancedDemo.tsx +148 -0
- package/src/TabsDemo.tsx +91 -0
- package/src/index.tsx +2 -0
- package/types/TabsAdvancedDemo.d.ts +3 -0
- package/types/TabsDemo.d.ts +3 -0
- package/types/index.d.ts +2 -0
- package/types/AccordionDemo.d.ts.map +0 -1
- package/types/AddThemeDemo.d.ts.map +0 -1
- package/types/AlertDialogDemo.d.ts.map +0 -1
- package/types/AnimationsDemo.d.ts.map +0 -1
- package/types/AnimationsEnterDemo.d.ts.map +0 -1
- package/types/AnimationsHoverDemo.d.ts.map +0 -1
- package/types/AnimationsPresenceDemo.d.ts.map +0 -1
- package/types/AnimationsTimingDemo.d.ts.map +0 -1
- package/types/AvatarDemo.d.ts.map +0 -1
- package/types/ButtonDemo.d.ts.map +0 -1
- package/types/CardDemo.d.ts.map +0 -1
- package/types/CheckboxDemo.d.ts.map +0 -1
- package/types/ColorsDemo.d.ts.map +0 -1
- package/types/DialogDemo.d.ts.map +0 -1
- package/types/DrawerDemo.d.ts.map +0 -1
- package/types/FeatherIconsDemo.d.ts.map +0 -1
- package/types/FormsDemo.d.ts.map +0 -1
- package/types/GroupDemo.d.ts.map +0 -1
- package/types/HeadingsDemo.d.ts.map +0 -1
- package/types/ImageDemo.d.ts.map +0 -1
- package/types/InputsDemo.d.ts.map +0 -1
- package/types/LabelDemo.d.ts.map +0 -1
- package/types/LinearGradientDemo.d.ts.map +0 -1
- package/types/ListItemDemo.d.ts.map +0 -1
- package/types/LucideIconsDemo.d.ts.map +0 -1
- package/types/MenuDemo.d.ts.map +0 -1
- package/types/PopoverDemo.d.ts.map +0 -1
- package/types/PopperDemo.d.ts.map +0 -1
- package/types/ProgressDemo.d.ts.map +0 -1
- package/types/RadioGroupDemo.d.ts.map +0 -1
- package/types/ScrollViewDemo.d.ts.map +0 -1
- package/types/SelectDemo.d.ts.map +0 -1
- package/types/SeparatorDemo.d.ts.map +0 -1
- package/types/ShapesDemo.d.ts.map +0 -1
- package/types/SheetDemo.d.ts.map +0 -1
- package/types/SliderDemo.d.ts.map +0 -1
- package/types/SpinnerDemo.d.ts.map +0 -1
- package/types/StacksDemo.d.ts.map +0 -1
- package/types/SwitchDemo.d.ts.map +0 -1
- package/types/TextDemo.d.ts.map +0 -1
- package/types/ThemeInverseDemo.d.ts.map +0 -1
- package/types/TokensDemo.d.ts.map +0 -1
- package/types/TooltipDemo.d.ts.map +0 -1
- package/types/UpdateThemeDemo.d.ts.map +0 -1
- package/types/conf.d.ts.map +0 -1
- package/types/index.d.ts.map +0 -1
- package/types/tamagui.config.d.ts.map +0 -1
- package/types/useOnIntersecting.d.ts.map +0 -1
package/dist/jsx/ProgressDemo.js
CHANGED
|
@@ -18,7 +18,7 @@ function ProgressDemo() {
|
|
|
18
18
|
</Paragraph>
|
|
19
19
|
<Progress size={sizeProp} value={progress}><Progress.Indicator animation="bouncy" /></Progress>
|
|
20
20
|
</YStack>
|
|
21
|
-
<XStack ai="center" space pos="absolute" b=
|
|
21
|
+
<XStack ai="center" space pos="absolute" b="$3" l="$4" $xxs={{ dsp: "none" }}>
|
|
22
22
|
<Slider
|
|
23
23
|
size="$2"
|
|
24
24
|
w={130}
|
|
@@ -30,7 +30,7 @@ function ProgressDemo() {
|
|
|
30
30
|
setSize(val);
|
|
31
31
|
}}
|
|
32
32
|
>
|
|
33
|
-
<Slider.Track><Slider.TrackActive /></Slider.Track>
|
|
33
|
+
<Slider.Track bw={1} boc="$color5"><Slider.TrackActive /></Slider.Track>
|
|
34
34
|
<Slider.Thumb circular index={0} />
|
|
35
35
|
</Slider>
|
|
36
36
|
<Button size="$2" onPress={() => setProgress((prev) => (prev + 20) % 100)}>Load</Button>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/ProgressDemo.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useEffect, useState } from 'react'\nimport { Button, Paragraph, Progress, SizeTokens, Slider, XStack, YStack } from 'tamagui'\n\nexport function ProgressDemo() {\n const [size, setSize] = useState(4)\n const [progress, setProgress] = useState(20)\n const sizeProp = `$${size}` as SizeTokens\n\n useEffect(() => {\n const timer = setTimeout(() => setProgress(60), 1000)\n return () => {\n clearTimeout(timer)\n }\n }, [])\n\n return (\n <>\n <YStack h={60} ai=\"center\" space>\n <Paragraph h={30} o={0.5}>\n Size: {size}\n </Paragraph>\n <Progress size={sizeProp} value={progress}>\n <Progress.Indicator animation=\"bouncy\" />\n </Progress>\n </YStack>\n\n <XStack ai=\"center\" space pos=\"absolute\" b
|
|
5
|
-
"mappings": "AAAA,SAAS,WAAW,gBAAgB;AACpC,SAAS,QAAQ,WAAW,UAAsB,QAAQ,QAAQ,cAAc;AAEzE,SAAS,eAAe;AAC7B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,CAAC;AAClC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,EAAE;AAC3C,QAAM,WAAW,IAAI;AAErB,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,YAAY,EAAE,GAAG,GAAI;AACpD,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SACE;AAAA,IACE,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS;AAAA,MACzB,CAAC,UAAU,GAAG,IAAI,GAAG;AAAA,SAAK;AAAA,SACjB;AAAA,MACT,EAFC;AAAA,MAGD,CAAC,SAAS,MAAM,UAAU,OAAO,UAC/B,CAAC,SAAS,UAAU,UAAU,SAAS,EACzC,EAFC;AAAA,IAGH,EAPC;AAAA,IASD,CAAC,OAAO,GAAG,SAAS,MAAM,IAAI,WAAW,
|
|
4
|
+
"sourcesContent": ["import { useEffect, useState } from 'react'\nimport { Button, Paragraph, Progress, SizeTokens, Slider, XStack, YStack } from 'tamagui'\n\nexport function ProgressDemo() {\n const [size, setSize] = useState(4)\n const [progress, setProgress] = useState(20)\n const sizeProp = `$${size}` as SizeTokens\n\n useEffect(() => {\n const timer = setTimeout(() => setProgress(60), 1000)\n return () => {\n clearTimeout(timer)\n }\n }, [])\n\n return (\n <>\n <YStack h={60} ai=\"center\" space>\n <Paragraph h={30} o={0.5}>\n Size: {size}\n </Paragraph>\n <Progress size={sizeProp} value={progress}>\n <Progress.Indicator animation=\"bouncy\" />\n </Progress>\n </YStack>\n\n <XStack ai=\"center\" space pos=\"absolute\" b=\"$3\" l=\"$4\" $xxs={{ dsp: 'none' }}>\n <Slider\n size=\"$2\"\n w={130}\n defaultValue={[4]}\n min={2}\n max={6}\n step={1}\n onValueChange={([val]) => {\n setSize(val)\n }}\n >\n <Slider.Track bw={1} boc=\"$color5\">\n <Slider.TrackActive />\n </Slider.Track>\n <Slider.Thumb circular index={0} />\n </Slider>\n\n <Button size=\"$2\" onPress={() => setProgress((prev) => (prev + 20) % 100)}>\n Load\n </Button>\n </XStack>\n </>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,WAAW,gBAAgB;AACpC,SAAS,QAAQ,WAAW,UAAsB,QAAQ,QAAQ,cAAc;AAEzE,SAAS,eAAe;AAC7B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,CAAC;AAClC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,EAAE;AAC3C,QAAM,WAAW,IAAI;AAErB,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,YAAY,EAAE,GAAG,GAAI;AACpD,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SACE;AAAA,IACE,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS;AAAA,MACzB,CAAC,UAAU,GAAG,IAAI,GAAG;AAAA,SAAK;AAAA,SACjB;AAAA,MACT,EAFC;AAAA,MAGD,CAAC,SAAS,MAAM,UAAU,OAAO,UAC/B,CAAC,SAAS,UAAU,UAAU,SAAS,EACzC,EAFC;AAAA,IAGH,EAPC;AAAA,IASD,CAAC,OAAO,GAAG,SAAS,MAAM,IAAI,WAAW,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO;AAAA,MACzE,CAAC;AAAA,QACC,KAAK;AAAA,QACL,GAAG;AAAA,QACH,cAAc,CAAC,CAAC;AAAA,QAChB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,eAAe,CAAC,CAAC,GAAG,MAAM;AACxB,kBAAQ,GAAG;AAAA,QACb;AAAA;AAAA,QAEA,CAAC,OAAO,MAAM,IAAI,GAAG,IAAI,UACvB,CAAC,OAAO,YAAY,EACtB,EAFC,OAAO;AAAA,QAGR,CAAC,OAAO,MAAM,SAAS,OAAO,GAAG;AAAA,MACnC,EAfC;AAAA,MAiBD,CAAC,OAAO,KAAK,KAAK,SAAS,MAAM,YAAY,CAAC,UAAU,OAAO,MAAM,GAAG,GAAG,IAE3E,EAFC;AAAA,IAGH,EArBC;AAAA,EAsBH;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -18,7 +18,7 @@ function ProgressDemo() {
|
|
|
18
18
|
</Paragraph>
|
|
19
19
|
<Progress size={sizeProp} value={progress}><Progress.Indicator animation="bouncy" /></Progress>
|
|
20
20
|
</YStack>
|
|
21
|
-
<XStack ai="center" space pos="absolute" b=
|
|
21
|
+
<XStack ai="center" space pos="absolute" b="$3" l="$4" $xxs={{ dsp: "none" }}>
|
|
22
22
|
<Slider
|
|
23
23
|
size="$2"
|
|
24
24
|
w={130}
|
|
@@ -30,7 +30,7 @@ function ProgressDemo() {
|
|
|
30
30
|
setSize(val);
|
|
31
31
|
}}
|
|
32
32
|
>
|
|
33
|
-
<Slider.Track><Slider.TrackActive /></Slider.Track>
|
|
33
|
+
<Slider.Track bw={1} boc="$color5"><Slider.TrackActive /></Slider.Track>
|
|
34
34
|
<Slider.Thumb circular index={0} />
|
|
35
35
|
</Slider>
|
|
36
36
|
<Button size="$2" onPress={() => setProgress((prev) => (prev + 20) % 100)}>Load</Button>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/ProgressDemo.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useEffect, useState } from 'react'\nimport { Button, Paragraph, Progress, SizeTokens, Slider, XStack, YStack } from 'tamagui'\n\nexport function ProgressDemo() {\n const [size, setSize] = useState(4)\n const [progress, setProgress] = useState(20)\n const sizeProp = `$${size}` as SizeTokens\n\n useEffect(() => {\n const timer = setTimeout(() => setProgress(60), 1000)\n return () => {\n clearTimeout(timer)\n }\n }, [])\n\n return (\n <>\n <YStack h={60} ai=\"center\" space>\n <Paragraph h={30} o={0.5}>\n Size: {size}\n </Paragraph>\n <Progress size={sizeProp} value={progress}>\n <Progress.Indicator animation=\"bouncy\" />\n </Progress>\n </YStack>\n\n <XStack ai=\"center\" space pos=\"absolute\" b
|
|
5
|
-
"mappings": "AAAA,SAAS,WAAW,gBAAgB;AACpC,SAAS,QAAQ,WAAW,UAAsB,QAAQ,QAAQ,cAAc;AAEzE,SAAS,eAAe;AAC7B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,CAAC;AAClC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,EAAE;AAC3C,QAAM,WAAW,IAAI;AAErB,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,YAAY,EAAE,GAAG,GAAI;AACpD,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SACE;AAAA,IACE,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS;AAAA,MACzB,CAAC,UAAU,GAAG,IAAI,GAAG;AAAA,SAAK;AAAA,SACjB;AAAA,MACT,EAFC;AAAA,MAGD,CAAC,SAAS,MAAM,UAAU,OAAO,UAC/B,CAAC,SAAS,UAAU,UAAU,SAAS,EACzC,EAFC;AAAA,IAGH,EAPC;AAAA,IASD,CAAC,OAAO,GAAG,SAAS,MAAM,IAAI,WAAW,
|
|
4
|
+
"sourcesContent": ["import { useEffect, useState } from 'react'\nimport { Button, Paragraph, Progress, SizeTokens, Slider, XStack, YStack } from 'tamagui'\n\nexport function ProgressDemo() {\n const [size, setSize] = useState(4)\n const [progress, setProgress] = useState(20)\n const sizeProp = `$${size}` as SizeTokens\n\n useEffect(() => {\n const timer = setTimeout(() => setProgress(60), 1000)\n return () => {\n clearTimeout(timer)\n }\n }, [])\n\n return (\n <>\n <YStack h={60} ai=\"center\" space>\n <Paragraph h={30} o={0.5}>\n Size: {size}\n </Paragraph>\n <Progress size={sizeProp} value={progress}>\n <Progress.Indicator animation=\"bouncy\" />\n </Progress>\n </YStack>\n\n <XStack ai=\"center\" space pos=\"absolute\" b=\"$3\" l=\"$4\" $xxs={{ dsp: 'none' }}>\n <Slider\n size=\"$2\"\n w={130}\n defaultValue={[4]}\n min={2}\n max={6}\n step={1}\n onValueChange={([val]) => {\n setSize(val)\n }}\n >\n <Slider.Track bw={1} boc=\"$color5\">\n <Slider.TrackActive />\n </Slider.Track>\n <Slider.Thumb circular index={0} />\n </Slider>\n\n <Button size=\"$2\" onPress={() => setProgress((prev) => (prev + 20) % 100)}>\n Load\n </Button>\n </XStack>\n </>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,WAAW,gBAAgB;AACpC,SAAS,QAAQ,WAAW,UAAsB,QAAQ,QAAQ,cAAc;AAEzE,SAAS,eAAe;AAC7B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,CAAC;AAClC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,EAAE;AAC3C,QAAM,WAAW,IAAI;AAErB,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,YAAY,EAAE,GAAG,GAAI;AACpD,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SACE;AAAA,IACE,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS;AAAA,MACzB,CAAC,UAAU,GAAG,IAAI,GAAG;AAAA,SAAK;AAAA,SACjB;AAAA,MACT,EAFC;AAAA,MAGD,CAAC,SAAS,MAAM,UAAU,OAAO,UAC/B,CAAC,SAAS,UAAU,UAAU,SAAS,EACzC,EAFC;AAAA,IAGH,EAPC;AAAA,IASD,CAAC,OAAO,GAAG,SAAS,MAAM,IAAI,WAAW,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO;AAAA,MACzE,CAAC;AAAA,QACC,KAAK;AAAA,QACL,GAAG;AAAA,QACH,cAAc,CAAC,CAAC;AAAA,QAChB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,eAAe,CAAC,CAAC,GAAG,MAAM;AACxB,kBAAQ,GAAG;AAAA,QACb;AAAA;AAAA,QAEA,CAAC,OAAO,MAAM,IAAI,GAAG,IAAI,UACvB,CAAC,OAAO,YAAY,EACtB,EAFC,OAAO;AAAA,QAGR,CAAC,OAAO,MAAM,SAAS,OAAO,GAAG;AAAA,MACnC,EAfC;AAAA,MAiBD,CAAC,OAAO,KAAK,KAAK,SAAS,MAAM,YAAY,CAAC,UAAU,OAAO,MAAM,GAAG,GAAG,IAE3E,EAFC;AAAA,IAGH,EArBC;AAAA,EAsBH;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/jsx/SliderDemo.js
CHANGED
|
@@ -8,7 +8,7 @@ function SliderDemo() {
|
|
|
8
8
|
function SimpleSlider({ children, ...props }) {
|
|
9
9
|
return <Slider defaultValue={[50]} max={100} step={1} {...props}>
|
|
10
10
|
<Slider.Track><Slider.TrackActive /></Slider.Track>
|
|
11
|
-
<Slider.Thumb
|
|
11
|
+
<Slider.Thumb index={0} circular elevate />
|
|
12
12
|
{children}
|
|
13
13
|
</Slider>;
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/SliderDemo.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Slider, SliderProps, Spacer, XStack } from 'tamagui'\n\nexport function SliderDemo() {\n return (\n <XStack height={200} ai=\"center\" space=\"$8\">\n <SimpleSlider height={200} orientation=\"vertical\" />\n <SimpleSlider width={200} />\n </XStack>\n )\n}\n\nfunction SimpleSlider({ children, ...props }: SliderProps) {\n return (\n <Slider defaultValue={[50]} max={100} step={1} {...props}>\n <Slider.Track>\n <Slider.TrackActive />\n </Slider.Track>\n <Slider.Thumb
|
|
5
|
-
"mappings": "AAAA,SAAS,QAA6B,cAAc;AAE7C,SAAS,aAAa;AAC3B,SACE,CAAC,OAAO,QAAQ,KAAK,GAAG,SAAS,MAAM;AAAA,IACrC,CAAC,aAAa,QAAQ,KAAK,YAAY,WAAW;AAAA,IAClD,CAAC,aAAa,OAAO,KAAK;AAAA,EAC5B,EAHC;AAKL;AAEA,SAAS,aAAa,EAAE,UAAU,GAAG,MAAM,GAAgB;AACzD,SACE,CAAC,OAAO,cAAc,CAAC,EAAE,GAAG,KAAK,KAAK,MAAM,OAAO;AAAA,IACjD,CAAC,OAAO,MACN,CAAC,OAAO,YAAY,EACtB,EAFC,OAAO;AAAA,IAGR,CAAC,OAAO,MAAM,
|
|
4
|
+
"sourcesContent": ["import { Slider, SliderProps, Spacer, XStack } from 'tamagui'\n\nexport function SliderDemo() {\n return (\n <XStack height={200} ai=\"center\" space=\"$8\">\n <SimpleSlider height={200} orientation=\"vertical\" />\n <SimpleSlider width={200} />\n </XStack>\n )\n}\n\nfunction SimpleSlider({ children, ...props }: SliderProps) {\n return (\n <Slider defaultValue={[50]} max={100} step={1} {...props}>\n <Slider.Track>\n <Slider.TrackActive />\n </Slider.Track>\n <Slider.Thumb index={0} circular elevate />\n {children}\n </Slider>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,QAA6B,cAAc;AAE7C,SAAS,aAAa;AAC3B,SACE,CAAC,OAAO,QAAQ,KAAK,GAAG,SAAS,MAAM;AAAA,IACrC,CAAC,aAAa,QAAQ,KAAK,YAAY,WAAW;AAAA,IAClD,CAAC,aAAa,OAAO,KAAK;AAAA,EAC5B,EAHC;AAKL;AAEA,SAAS,aAAa,EAAE,UAAU,GAAG,MAAM,GAAgB;AACzD,SACE,CAAC,OAAO,cAAc,CAAC,EAAE,GAAG,KAAK,KAAK,MAAM,OAAO;AAAA,IACjD,CAAC,OAAO,MACN,CAAC,OAAO,YAAY,EACtB,EAFC,OAAO;AAAA,IAGR,CAAC,OAAO,MAAM,OAAO,GAAG,SAAS,QAAQ;AAAA,KACxC;AAAA,EACH,EANC;AAQL;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/jsx/SliderDemo.mjs
CHANGED
|
@@ -8,7 +8,7 @@ function SliderDemo() {
|
|
|
8
8
|
function SimpleSlider({ children, ...props }) {
|
|
9
9
|
return <Slider defaultValue={[50]} max={100} step={1} {...props}>
|
|
10
10
|
<Slider.Track><Slider.TrackActive /></Slider.Track>
|
|
11
|
-
<Slider.Thumb
|
|
11
|
+
<Slider.Thumb index={0} circular elevate />
|
|
12
12
|
{children}
|
|
13
13
|
</Slider>;
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/SliderDemo.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Slider, SliderProps, Spacer, XStack } from 'tamagui'\n\nexport function SliderDemo() {\n return (\n <XStack height={200} ai=\"center\" space=\"$8\">\n <SimpleSlider height={200} orientation=\"vertical\" />\n <SimpleSlider width={200} />\n </XStack>\n )\n}\n\nfunction SimpleSlider({ children, ...props }: SliderProps) {\n return (\n <Slider defaultValue={[50]} max={100} step={1} {...props}>\n <Slider.Track>\n <Slider.TrackActive />\n </Slider.Track>\n <Slider.Thumb
|
|
5
|
-
"mappings": "AAAA,SAAS,QAA6B,cAAc;AAE7C,SAAS,aAAa;AAC3B,SACE,CAAC,OAAO,QAAQ,KAAK,GAAG,SAAS,MAAM;AAAA,IACrC,CAAC,aAAa,QAAQ,KAAK,YAAY,WAAW;AAAA,IAClD,CAAC,aAAa,OAAO,KAAK;AAAA,EAC5B,EAHC;AAKL;AAEA,SAAS,aAAa,EAAE,UAAU,GAAG,MAAM,GAAgB;AACzD,SACE,CAAC,OAAO,cAAc,CAAC,EAAE,GAAG,KAAK,KAAK,MAAM,OAAO;AAAA,IACjD,CAAC,OAAO,MACN,CAAC,OAAO,YAAY,EACtB,EAFC,OAAO;AAAA,IAGR,CAAC,OAAO,MAAM,
|
|
4
|
+
"sourcesContent": ["import { Slider, SliderProps, Spacer, XStack } from 'tamagui'\n\nexport function SliderDemo() {\n return (\n <XStack height={200} ai=\"center\" space=\"$8\">\n <SimpleSlider height={200} orientation=\"vertical\" />\n <SimpleSlider width={200} />\n </XStack>\n )\n}\n\nfunction SimpleSlider({ children, ...props }: SliderProps) {\n return (\n <Slider defaultValue={[50]} max={100} step={1} {...props}>\n <Slider.Track>\n <Slider.TrackActive />\n </Slider.Track>\n <Slider.Thumb index={0} circular elevate />\n {children}\n </Slider>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,QAA6B,cAAc;AAE7C,SAAS,aAAa;AAC3B,SACE,CAAC,OAAO,QAAQ,KAAK,GAAG,SAAS,MAAM;AAAA,IACrC,CAAC,aAAa,QAAQ,KAAK,YAAY,WAAW;AAAA,IAClD,CAAC,aAAa,OAAO,KAAK;AAAA,EAC5B,EAHC;AAKL;AAEA,SAAS,aAAa,EAAE,UAAU,GAAG,MAAM,GAAgB;AACzD,SACE,CAAC,OAAO,cAAc,CAAC,EAAE,GAAG,KAAK,KAAK,MAAM,OAAO;AAAA,IACjD,CAAC,OAAO,MACN,CAAC,OAAO,YAAY,EACtB,EAFC,OAAO;AAAA,IAGR,CAAC,OAAO,MAAM,OAAO,GAAG,SAAS,QAAQ;AAAA,KACxC;AAAA,EACH,EANC;AAQL;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { useRef, useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
AnimatePresence,
|
|
4
|
+
H5,
|
|
5
|
+
SizableText,
|
|
6
|
+
Stack,
|
|
7
|
+
Tabs,
|
|
8
|
+
YStack,
|
|
9
|
+
styled
|
|
10
|
+
} from "tamagui";
|
|
11
|
+
const TabsAdvancedDemo = () => {
|
|
12
|
+
const [currentTab, setCurrentTab] = useState("tab1");
|
|
13
|
+
const [IntentIndicator, setIntentIndicator] = useState(null);
|
|
14
|
+
const [selectIndicator, setSelectIndicator] = useState(null);
|
|
15
|
+
const prevSelectionIndicatorLayout = useRef(null);
|
|
16
|
+
const handleUpdateSelectionIndicator = (newSize) => {
|
|
17
|
+
prevSelectionIndicatorLayout.current = selectIndicator;
|
|
18
|
+
setSelectIndicator(newSize);
|
|
19
|
+
};
|
|
20
|
+
const direction = (() => {
|
|
21
|
+
if (!selectIndicator || !prevSelectionIndicatorLayout.current || selectIndicator.x === prevSelectionIndicatorLayout.current.x) {
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
return selectIndicator.x > prevSelectionIndicatorLayout.current.x ? -1 : 1;
|
|
25
|
+
})();
|
|
26
|
+
const enterVariant = direction === 1 ? "isLeft" : direction === -1 ? "isRight" : "defaultFade";
|
|
27
|
+
const exitVariant = direction === 1 ? "isRight" : direction === -1 ? "isLeft" : "defaultFade";
|
|
28
|
+
const handleOnInteraction = (type, layout) => {
|
|
29
|
+
if (type === "select") {
|
|
30
|
+
handleUpdateSelectionIndicator(layout);
|
|
31
|
+
} else {
|
|
32
|
+
setIntentIndicator(layout);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return <Tabs
|
|
36
|
+
value={currentTab}
|
|
37
|
+
onValueChange={setCurrentTab}
|
|
38
|
+
orientation="horizontal"
|
|
39
|
+
br="$4"
|
|
40
|
+
size="$3"
|
|
41
|
+
p="$2"
|
|
42
|
+
height={150}
|
|
43
|
+
flexDirection="column"
|
|
44
|
+
activationMode="manual"
|
|
45
|
+
>
|
|
46
|
+
<YStack borderColor="$color3" borderBottomWidth="$0.5"><Tabs.List
|
|
47
|
+
loop={false}
|
|
48
|
+
aria-label="Manage your account"
|
|
49
|
+
disablePassBorderRadius
|
|
50
|
+
overflow="visible"
|
|
51
|
+
pb="$1.5"
|
|
52
|
+
>
|
|
53
|
+
{IntentIndicator && <TabsRovingIndicator
|
|
54
|
+
width={IntentIndicator.width}
|
|
55
|
+
height={IntentIndicator.height}
|
|
56
|
+
x={IntentIndicator.x}
|
|
57
|
+
y={IntentIndicator.y}
|
|
58
|
+
/>}
|
|
59
|
+
{selectIndicator && <TabsRovingIndicator
|
|
60
|
+
theme="active"
|
|
61
|
+
active
|
|
62
|
+
width={selectIndicator.width}
|
|
63
|
+
height="$0.25"
|
|
64
|
+
x={selectIndicator.x}
|
|
65
|
+
borderRadius={0}
|
|
66
|
+
bottom={-3}
|
|
67
|
+
/>}
|
|
68
|
+
<Tabs.Trigger value="tab1" onInteraction={handleOnInteraction}><SizableText>Profile</SizableText></Tabs.Trigger>
|
|
69
|
+
<Tabs.Trigger value="tab2" onInteraction={handleOnInteraction}><SizableText>Connections</SizableText></Tabs.Trigger>
|
|
70
|
+
<Tabs.Trigger value="tab3" onInteraction={handleOnInteraction}><SizableText>Notifications</SizableText></Tabs.Trigger>
|
|
71
|
+
</Tabs.List></YStack>
|
|
72
|
+
<AnimatePresence
|
|
73
|
+
exitBeforeEnter
|
|
74
|
+
enterVariant={enterVariant}
|
|
75
|
+
exitVariant={exitVariant}
|
|
76
|
+
><AnimatedYStack key={currentTab} animation="100ms" x={0} o={1} f={1}><Tabs.Content value={currentTab} forceMount f={1} jc="center"><H5 ta="center">{currentTab}</H5></Tabs.Content></AnimatedYStack></AnimatePresence>
|
|
77
|
+
</Tabs>;
|
|
78
|
+
};
|
|
79
|
+
const TabsRovingIndicator = styled(Stack, {
|
|
80
|
+
position: "absolute",
|
|
81
|
+
backgroundColor: "$color5",
|
|
82
|
+
opacity: 1,
|
|
83
|
+
animation: "100ms",
|
|
84
|
+
borderRadius: "$4",
|
|
85
|
+
variants: {
|
|
86
|
+
active: {
|
|
87
|
+
true: {
|
|
88
|
+
backgroundColor: "$color8"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
const AnimatedYStack = styled(YStack, {
|
|
94
|
+
variants: {
|
|
95
|
+
isLeft: { true: { x: -25, opacity: 0 } },
|
|
96
|
+
isRight: { true: { x: 25, opacity: 0 } },
|
|
97
|
+
defaultFade: { true: { opacity: 0 } }
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
export {
|
|
101
|
+
TabsAdvancedDemo
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=TabsAdvancedDemo.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/TabsAdvancedDemo.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useRef, useState } from 'react'\nimport {\n AnimatePresence,\n H5,\n SizableText,\n Stack,\n TabTriggerLayout,\n Tabs,\n TabsTriggerProps,\n YStack,\n styled,\n} from 'tamagui'\n\nexport const TabsAdvancedDemo = () => {\n const [currentTab, setCurrentTab] = useState('tab1')\n\n // Layout of the trigger user might intend to select (hovering / focusing)\n const [IntentIndicator, setIntentIndicator] = useState<TabTriggerLayout | null>(null)\n\n // Layout of the trigger user selected\n const [selectIndicator, setSelectIndicator] = useState<TabTriggerLayout | null>(null)\n const prevSelectionIndicatorLayout = useRef<TabTriggerLayout | null>(null)\n\n const handleUpdateSelectionIndicator = (newSize: TabTriggerLayout | null) => {\n prevSelectionIndicatorLayout.current = selectIndicator\n setSelectIndicator(newSize)\n }\n\n /**\n * -1: from left\n * 0: n/a\n * 1: from right\n */\n const direction = (() => {\n if (\n !selectIndicator ||\n !prevSelectionIndicatorLayout.current ||\n selectIndicator.x === prevSelectionIndicatorLayout.current.x\n ) {\n return 0\n }\n return selectIndicator.x > prevSelectionIndicatorLayout.current.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: TabsTriggerProps['onInteraction'] = (type, layout) => {\n if (type === 'select') {\n handleUpdateSelectionIndicator(layout)\n } else {\n setIntentIndicator(layout)\n }\n }\n\n return (\n <Tabs\n value={currentTab}\n onValueChange={setCurrentTab}\n orientation=\"horizontal\"\n br=\"$4\"\n size=\"$3\"\n p=\"$2\"\n height={150}\n flexDirection=\"column\"\n activationMode=\"manual\"\n >\n <YStack borderColor=\"$color3\" borderBottomWidth=\"$0.5\">\n <Tabs.List\n loop={false}\n aria-label=\"Manage your account\"\n disablePassBorderRadius\n overflow=\"visible\"\n pb=\"$1.5\"\n >\n {IntentIndicator && (\n <TabsRovingIndicator\n width={IntentIndicator.width}\n height={IntentIndicator.height}\n x={IntentIndicator.x}\n y={IntentIndicator.y}\n />\n )}\n\n {selectIndicator && (\n <TabsRovingIndicator\n theme=\"active\"\n active\n width={selectIndicator.width}\n height=\"$0.25\"\n x={selectIndicator.x}\n borderRadius={0}\n bottom={-3}\n />\n )}\n\n <Tabs.Trigger value=\"tab1\" onInteraction={handleOnInteraction}>\n <SizableText>Profile</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger value=\"tab2\" onInteraction={handleOnInteraction}>\n <SizableText>Connections</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger value=\"tab3\" onInteraction={handleOnInteraction}>\n <SizableText>Notifications</SizableText>\n </Tabs.Trigger>\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} o={1} f={1}>\n <Tabs.Content value={currentTab} forceMount f={1} jc=\"center\">\n <H5 ta=\"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: 1,\n animation: '100ms',\n borderRadius: '$4',\n\n variants: {\n active: {\n true: {\n backgroundColor: '$color8',\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": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { useRef, useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
AnimatePresence,
|
|
4
|
+
H5,
|
|
5
|
+
SizableText,
|
|
6
|
+
Stack,
|
|
7
|
+
Tabs,
|
|
8
|
+
YStack,
|
|
9
|
+
styled
|
|
10
|
+
} from "tamagui";
|
|
11
|
+
const TabsAdvancedDemo = () => {
|
|
12
|
+
const [currentTab, setCurrentTab] = useState("tab1");
|
|
13
|
+
const [IntentIndicator, setIntentIndicator] = useState(null);
|
|
14
|
+
const [selectIndicator, setSelectIndicator] = useState(null);
|
|
15
|
+
const prevSelectionIndicatorLayout = useRef(null);
|
|
16
|
+
const handleUpdateSelectionIndicator = (newSize) => {
|
|
17
|
+
prevSelectionIndicatorLayout.current = selectIndicator;
|
|
18
|
+
setSelectIndicator(newSize);
|
|
19
|
+
};
|
|
20
|
+
const direction = (() => {
|
|
21
|
+
if (!selectIndicator || !prevSelectionIndicatorLayout.current || selectIndicator.x === prevSelectionIndicatorLayout.current.x) {
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
return selectIndicator.x > prevSelectionIndicatorLayout.current.x ? -1 : 1;
|
|
25
|
+
})();
|
|
26
|
+
const enterVariant = direction === 1 ? "isLeft" : direction === -1 ? "isRight" : "defaultFade";
|
|
27
|
+
const exitVariant = direction === 1 ? "isRight" : direction === -1 ? "isLeft" : "defaultFade";
|
|
28
|
+
const handleOnInteraction = (type, layout) => {
|
|
29
|
+
if (type === "select") {
|
|
30
|
+
handleUpdateSelectionIndicator(layout);
|
|
31
|
+
} else {
|
|
32
|
+
setIntentIndicator(layout);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return <Tabs
|
|
36
|
+
value={currentTab}
|
|
37
|
+
onValueChange={setCurrentTab}
|
|
38
|
+
orientation="horizontal"
|
|
39
|
+
br="$4"
|
|
40
|
+
size="$3"
|
|
41
|
+
p="$2"
|
|
42
|
+
height={150}
|
|
43
|
+
flexDirection="column"
|
|
44
|
+
activationMode="manual"
|
|
45
|
+
>
|
|
46
|
+
<YStack borderColor="$color3" borderBottomWidth="$0.5"><Tabs.List
|
|
47
|
+
loop={false}
|
|
48
|
+
aria-label="Manage your account"
|
|
49
|
+
disablePassBorderRadius
|
|
50
|
+
overflow="visible"
|
|
51
|
+
pb="$1.5"
|
|
52
|
+
>
|
|
53
|
+
{IntentIndicator && <TabsRovingIndicator
|
|
54
|
+
width={IntentIndicator.width}
|
|
55
|
+
height={IntentIndicator.height}
|
|
56
|
+
x={IntentIndicator.x}
|
|
57
|
+
y={IntentIndicator.y}
|
|
58
|
+
/>}
|
|
59
|
+
{selectIndicator && <TabsRovingIndicator
|
|
60
|
+
theme="active"
|
|
61
|
+
active
|
|
62
|
+
width={selectIndicator.width}
|
|
63
|
+
height="$0.25"
|
|
64
|
+
x={selectIndicator.x}
|
|
65
|
+
borderRadius={0}
|
|
66
|
+
bottom={-3}
|
|
67
|
+
/>}
|
|
68
|
+
<Tabs.Trigger value="tab1" onInteraction={handleOnInteraction}><SizableText>Profile</SizableText></Tabs.Trigger>
|
|
69
|
+
<Tabs.Trigger value="tab2" onInteraction={handleOnInteraction}><SizableText>Connections</SizableText></Tabs.Trigger>
|
|
70
|
+
<Tabs.Trigger value="tab3" onInteraction={handleOnInteraction}><SizableText>Notifications</SizableText></Tabs.Trigger>
|
|
71
|
+
</Tabs.List></YStack>
|
|
72
|
+
<AnimatePresence
|
|
73
|
+
exitBeforeEnter
|
|
74
|
+
enterVariant={enterVariant}
|
|
75
|
+
exitVariant={exitVariant}
|
|
76
|
+
><AnimatedYStack key={currentTab} animation="100ms" x={0} o={1} f={1}><Tabs.Content value={currentTab} forceMount f={1} jc="center"><H5 ta="center">{currentTab}</H5></Tabs.Content></AnimatedYStack></AnimatePresence>
|
|
77
|
+
</Tabs>;
|
|
78
|
+
};
|
|
79
|
+
const TabsRovingIndicator = styled(Stack, {
|
|
80
|
+
position: "absolute",
|
|
81
|
+
backgroundColor: "$color5",
|
|
82
|
+
opacity: 1,
|
|
83
|
+
animation: "100ms",
|
|
84
|
+
borderRadius: "$4",
|
|
85
|
+
variants: {
|
|
86
|
+
active: {
|
|
87
|
+
true: {
|
|
88
|
+
backgroundColor: "$color8"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
const AnimatedYStack = styled(YStack, {
|
|
94
|
+
variants: {
|
|
95
|
+
isLeft: { true: { x: -25, opacity: 0 } },
|
|
96
|
+
isRight: { true: { x: 25, opacity: 0 } },
|
|
97
|
+
defaultFade: { true: { opacity: 0 } }
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
export {
|
|
101
|
+
TabsAdvancedDemo
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=TabsAdvancedDemo.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/TabsAdvancedDemo.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useRef, useState } from 'react'\nimport {\n AnimatePresence,\n H5,\n SizableText,\n Stack,\n TabTriggerLayout,\n Tabs,\n TabsTriggerProps,\n YStack,\n styled,\n} from 'tamagui'\n\nexport const TabsAdvancedDemo = () => {\n const [currentTab, setCurrentTab] = useState('tab1')\n\n // Layout of the trigger user might intend to select (hovering / focusing)\n const [IntentIndicator, setIntentIndicator] = useState<TabTriggerLayout | null>(null)\n\n // Layout of the trigger user selected\n const [selectIndicator, setSelectIndicator] = useState<TabTriggerLayout | null>(null)\n const prevSelectionIndicatorLayout = useRef<TabTriggerLayout | null>(null)\n\n const handleUpdateSelectionIndicator = (newSize: TabTriggerLayout | null) => {\n prevSelectionIndicatorLayout.current = selectIndicator\n setSelectIndicator(newSize)\n }\n\n /**\n * -1: from left\n * 0: n/a\n * 1: from right\n */\n const direction = (() => {\n if (\n !selectIndicator ||\n !prevSelectionIndicatorLayout.current ||\n selectIndicator.x === prevSelectionIndicatorLayout.current.x\n ) {\n return 0\n }\n return selectIndicator.x > prevSelectionIndicatorLayout.current.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: TabsTriggerProps['onInteraction'] = (type, layout) => {\n if (type === 'select') {\n handleUpdateSelectionIndicator(layout)\n } else {\n setIntentIndicator(layout)\n }\n }\n\n return (\n <Tabs\n value={currentTab}\n onValueChange={setCurrentTab}\n orientation=\"horizontal\"\n br=\"$4\"\n size=\"$3\"\n p=\"$2\"\n height={150}\n flexDirection=\"column\"\n activationMode=\"manual\"\n >\n <YStack borderColor=\"$color3\" borderBottomWidth=\"$0.5\">\n <Tabs.List\n loop={false}\n aria-label=\"Manage your account\"\n disablePassBorderRadius\n overflow=\"visible\"\n pb=\"$1.5\"\n >\n {IntentIndicator && (\n <TabsRovingIndicator\n width={IntentIndicator.width}\n height={IntentIndicator.height}\n x={IntentIndicator.x}\n y={IntentIndicator.y}\n />\n )}\n\n {selectIndicator && (\n <TabsRovingIndicator\n theme=\"active\"\n active\n width={selectIndicator.width}\n height=\"$0.25\"\n x={selectIndicator.x}\n borderRadius={0}\n bottom={-3}\n />\n )}\n\n <Tabs.Trigger value=\"tab1\" onInteraction={handleOnInteraction}>\n <SizableText>Profile</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger value=\"tab2\" onInteraction={handleOnInteraction}>\n <SizableText>Connections</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger value=\"tab3\" onInteraction={handleOnInteraction}>\n <SizableText>Notifications</SizableText>\n </Tabs.Trigger>\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} o={1} f={1}>\n <Tabs.Content value={currentTab} forceMount f={1} jc=\"center\">\n <H5 ta=\"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: 1,\n animation: '100ms',\n borderRadius: '$4',\n\n variants: {\n active: {\n true: {\n backgroundColor: '$color8',\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": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { Button, H5, SizableText, Tabs, XStack } from "tamagui";
|
|
3
|
+
const demos = ["horizontal", "vertical"];
|
|
4
|
+
function TabsDemo() {
|
|
5
|
+
const [demoIndex, setDemoIndex] = useState(0);
|
|
6
|
+
const demo = demos[demoIndex];
|
|
7
|
+
return <>
|
|
8
|
+
{demo === "horizontal" ? <HorizontalTabs /> : <VerticalTabs />}
|
|
9
|
+
<XStack ai="center" space pos="absolute" b="$3" l="$4" $xxs={{ dsp: "none" }}><Button size="$2" onPress={() => setDemoIndex((x) => (x + 1) % demos.length)}>{demo}</Button></XStack>
|
|
10
|
+
</>;
|
|
11
|
+
}
|
|
12
|
+
const HorizontalTabs = () => {
|
|
13
|
+
return <Tabs
|
|
14
|
+
defaultValue="tab1"
|
|
15
|
+
orientation="horizontal"
|
|
16
|
+
flexDirection="column"
|
|
17
|
+
width={400}
|
|
18
|
+
height={150}
|
|
19
|
+
br="$4"
|
|
20
|
+
>
|
|
21
|
+
<Tabs.List disablePassBorderRadius="bottom" aria-label="Manage your account">
|
|
22
|
+
<Tabs.Trigger theme="Button" f={1} value="tab1"><SizableText fontFamily="$body">Profile</SizableText></Tabs.Trigger>
|
|
23
|
+
<Tabs.Trigger theme="Button" f={1} value="tab2"><SizableText fontFamily="$body">Connections</SizableText></Tabs.Trigger>
|
|
24
|
+
<Tabs.Trigger theme="Button" f={1} value="tab3"><SizableText fontFamily="$body">Notifications</SizableText></Tabs.Trigger>
|
|
25
|
+
</Tabs.List>
|
|
26
|
+
<Tabs.Content value="tab1" key="tab1" p="$5" ai="center" jc="center" f={1}><H5>Profile</H5></Tabs.Content>
|
|
27
|
+
<Tabs.Content value="tab2" key="tab2" p="$5" ai="center" jc="center" f={1}><H5>Connections</H5></Tabs.Content>
|
|
28
|
+
<Tabs.Content value="tab3" key="tab3" p="$5" ai="center" jc="center" f={1}><H5>Notifications</H5></Tabs.Content>
|
|
29
|
+
</Tabs>;
|
|
30
|
+
};
|
|
31
|
+
const VerticalTabs = () => {
|
|
32
|
+
return <Tabs
|
|
33
|
+
defaultValue="tab1"
|
|
34
|
+
flexDirection="row"
|
|
35
|
+
orientation="vertical"
|
|
36
|
+
width={400}
|
|
37
|
+
br="$4"
|
|
38
|
+
>
|
|
39
|
+
<Tabs.List disablePassBorderRadius="end" aria-label="Manage your account">
|
|
40
|
+
<Tabs.Trigger theme="Button" value="tab1"><SizableText fontFamily="$body">Profile</SizableText></Tabs.Trigger>
|
|
41
|
+
<Tabs.Trigger theme="Button" value="tab2"><SizableText fontFamily="$body">Connections</SizableText></Tabs.Trigger>
|
|
42
|
+
<Tabs.Trigger theme="Button" value="tab3"><SizableText fontFamily="$body">Notifications</SizableText></Tabs.Trigger>
|
|
43
|
+
</Tabs.List>
|
|
44
|
+
<Tabs.Content value="tab1" key="tab1" p="$2" ai="center" jc="center" f={1}><H5 ta="center">Profile</H5></Tabs.Content>
|
|
45
|
+
<Tabs.Content value="tab2" key="tab2" p="$2" ai="center" jc="center" f={1}><H5 ta="center">Connections</H5></Tabs.Content>
|
|
46
|
+
<Tabs.Content value="tab3" key="tab3" p="$2" ai="center" jc="center" f={1}><H5 ta="center">Notifications</H5></Tabs.Content>
|
|
47
|
+
</Tabs>;
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
TabsDemo
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=TabsDemo.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/TabsDemo.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useState } from 'react'\nimport { Button, H5, SizableText, Tabs, XStack } from 'tamagui'\n\nconst demos = ['horizontal', 'vertical'] as const\n\nexport function TabsDemo() {\n const [demoIndex, setDemoIndex] = useState(0)\n const demo = demos[demoIndex]\n\n return (\n <>\n {demo === 'horizontal' ? <HorizontalTabs /> : <VerticalTabs />}\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 {demo}\n </Button>\n </XStack>\n </>\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 br=\"$4\"\n >\n <Tabs.List disablePassBorderRadius=\"bottom\" aria-label=\"Manage your account\">\n <Tabs.Trigger theme=\"Button\" f={1} value=\"tab1\">\n <SizableText fontFamily=\"$body\">Profile</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger theme=\"Button\" f={1} value=\"tab2\">\n <SizableText fontFamily=\"$body\">Connections</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger theme=\"Button\" f={1} value=\"tab3\">\n <SizableText fontFamily=\"$body\">Notifications</SizableText>\n </Tabs.Trigger>\n </Tabs.List>\n\n <Tabs.Content value=\"tab1\" key=\"tab1\" p=\"$5\" ai=\"center\" jc=\"center\" f={1}>\n <H5>Profile</H5>\n </Tabs.Content>\n\n <Tabs.Content value=\"tab2\" key=\"tab2\" p=\"$5\" ai=\"center\" jc=\"center\" f={1}>\n <H5>Connections</H5>\n </Tabs.Content>\n\n <Tabs.Content value=\"tab3\" key=\"tab3\" p=\"$5\" ai=\"center\" jc=\"center\" f={1}>\n <H5>Notifications</H5>\n </Tabs.Content>\n </Tabs>\n )\n}\n\nconst VerticalTabs = () => {\n return (\n <Tabs\n defaultValue=\"tab1\"\n flexDirection=\"row\"\n orientation=\"vertical\"\n width={400}\n br=\"$4\"\n >\n <Tabs.List disablePassBorderRadius=\"end\" aria-label=\"Manage your account\">\n <Tabs.Trigger theme=\"Button\" value=\"tab1\">\n <SizableText fontFamily=\"$body\">Profile</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger theme=\"Button\" value=\"tab2\">\n <SizableText fontFamily=\"$body\">Connections</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger theme=\"Button\" value=\"tab3\">\n <SizableText fontFamily=\"$body\">Notifications</SizableText>\n </Tabs.Trigger>\n </Tabs.List>\n <Tabs.Content value=\"tab1\" key=\"tab1\" p=\"$2\" ai=\"center\" jc=\"center\" f={1}>\n <H5 ta=\"center\">Profile</H5>\n </Tabs.Content>\n <Tabs.Content value=\"tab2\" key=\"tab2\" p=\"$2\" ai=\"center\" jc=\"center\" f={1}>\n <H5 ta=\"center\">Connections</H5>\n </Tabs.Content>\n <Tabs.Content value=\"tab3\" key=\"tab3\" p=\"$2\" ai=\"center\" jc=\"center\" f={1}>\n <H5 ta=\"center\">Notifications</H5>\n </Tabs.Content>\n </Tabs>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { Button, H5, SizableText, Tabs, XStack } from "tamagui";
|
|
3
|
+
const demos = ["horizontal", "vertical"];
|
|
4
|
+
function TabsDemo() {
|
|
5
|
+
const [demoIndex, setDemoIndex] = useState(0);
|
|
6
|
+
const demo = demos[demoIndex];
|
|
7
|
+
return <>
|
|
8
|
+
{demo === "horizontal" ? <HorizontalTabs /> : <VerticalTabs />}
|
|
9
|
+
<XStack ai="center" space pos="absolute" b="$3" l="$4" $xxs={{ dsp: "none" }}><Button size="$2" onPress={() => setDemoIndex((x) => (x + 1) % demos.length)}>{demo}</Button></XStack>
|
|
10
|
+
</>;
|
|
11
|
+
}
|
|
12
|
+
const HorizontalTabs = () => {
|
|
13
|
+
return <Tabs
|
|
14
|
+
defaultValue="tab1"
|
|
15
|
+
orientation="horizontal"
|
|
16
|
+
flexDirection="column"
|
|
17
|
+
width={400}
|
|
18
|
+
height={150}
|
|
19
|
+
br="$4"
|
|
20
|
+
>
|
|
21
|
+
<Tabs.List disablePassBorderRadius="bottom" aria-label="Manage your account">
|
|
22
|
+
<Tabs.Trigger theme="Button" f={1} value="tab1"><SizableText fontFamily="$body">Profile</SizableText></Tabs.Trigger>
|
|
23
|
+
<Tabs.Trigger theme="Button" f={1} value="tab2"><SizableText fontFamily="$body">Connections</SizableText></Tabs.Trigger>
|
|
24
|
+
<Tabs.Trigger theme="Button" f={1} value="tab3"><SizableText fontFamily="$body">Notifications</SizableText></Tabs.Trigger>
|
|
25
|
+
</Tabs.List>
|
|
26
|
+
<Tabs.Content value="tab1" key="tab1" p="$5" ai="center" jc="center" f={1}><H5>Profile</H5></Tabs.Content>
|
|
27
|
+
<Tabs.Content value="tab2" key="tab2" p="$5" ai="center" jc="center" f={1}><H5>Connections</H5></Tabs.Content>
|
|
28
|
+
<Tabs.Content value="tab3" key="tab3" p="$5" ai="center" jc="center" f={1}><H5>Notifications</H5></Tabs.Content>
|
|
29
|
+
</Tabs>;
|
|
30
|
+
};
|
|
31
|
+
const VerticalTabs = () => {
|
|
32
|
+
return <Tabs
|
|
33
|
+
defaultValue="tab1"
|
|
34
|
+
flexDirection="row"
|
|
35
|
+
orientation="vertical"
|
|
36
|
+
width={400}
|
|
37
|
+
br="$4"
|
|
38
|
+
>
|
|
39
|
+
<Tabs.List disablePassBorderRadius="end" aria-label="Manage your account">
|
|
40
|
+
<Tabs.Trigger theme="Button" value="tab1"><SizableText fontFamily="$body">Profile</SizableText></Tabs.Trigger>
|
|
41
|
+
<Tabs.Trigger theme="Button" value="tab2"><SizableText fontFamily="$body">Connections</SizableText></Tabs.Trigger>
|
|
42
|
+
<Tabs.Trigger theme="Button" value="tab3"><SizableText fontFamily="$body">Notifications</SizableText></Tabs.Trigger>
|
|
43
|
+
</Tabs.List>
|
|
44
|
+
<Tabs.Content value="tab1" key="tab1" p="$2" ai="center" jc="center" f={1}><H5 ta="center">Profile</H5></Tabs.Content>
|
|
45
|
+
<Tabs.Content value="tab2" key="tab2" p="$2" ai="center" jc="center" f={1}><H5 ta="center">Connections</H5></Tabs.Content>
|
|
46
|
+
<Tabs.Content value="tab3" key="tab3" p="$2" ai="center" jc="center" f={1}><H5 ta="center">Notifications</H5></Tabs.Content>
|
|
47
|
+
</Tabs>;
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
TabsDemo
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=TabsDemo.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/TabsDemo.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useState } from 'react'\nimport { Button, H5, SizableText, Tabs, XStack } from 'tamagui'\n\nconst demos = ['horizontal', 'vertical'] as const\n\nexport function TabsDemo() {\n const [demoIndex, setDemoIndex] = useState(0)\n const demo = demos[demoIndex]\n\n return (\n <>\n {demo === 'horizontal' ? <HorizontalTabs /> : <VerticalTabs />}\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 {demo}\n </Button>\n </XStack>\n </>\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 br=\"$4\"\n >\n <Tabs.List disablePassBorderRadius=\"bottom\" aria-label=\"Manage your account\">\n <Tabs.Trigger theme=\"Button\" f={1} value=\"tab1\">\n <SizableText fontFamily=\"$body\">Profile</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger theme=\"Button\" f={1} value=\"tab2\">\n <SizableText fontFamily=\"$body\">Connections</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger theme=\"Button\" f={1} value=\"tab3\">\n <SizableText fontFamily=\"$body\">Notifications</SizableText>\n </Tabs.Trigger>\n </Tabs.List>\n\n <Tabs.Content value=\"tab1\" key=\"tab1\" p=\"$5\" ai=\"center\" jc=\"center\" f={1}>\n <H5>Profile</H5>\n </Tabs.Content>\n\n <Tabs.Content value=\"tab2\" key=\"tab2\" p=\"$5\" ai=\"center\" jc=\"center\" f={1}>\n <H5>Connections</H5>\n </Tabs.Content>\n\n <Tabs.Content value=\"tab3\" key=\"tab3\" p=\"$5\" ai=\"center\" jc=\"center\" f={1}>\n <H5>Notifications</H5>\n </Tabs.Content>\n </Tabs>\n )\n}\n\nconst VerticalTabs = () => {\n return (\n <Tabs\n defaultValue=\"tab1\"\n flexDirection=\"row\"\n orientation=\"vertical\"\n width={400}\n br=\"$4\"\n >\n <Tabs.List disablePassBorderRadius=\"end\" aria-label=\"Manage your account\">\n <Tabs.Trigger theme=\"Button\" value=\"tab1\">\n <SizableText fontFamily=\"$body\">Profile</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger theme=\"Button\" value=\"tab2\">\n <SizableText fontFamily=\"$body\">Connections</SizableText>\n </Tabs.Trigger>\n <Tabs.Trigger theme=\"Button\" value=\"tab3\">\n <SizableText fontFamily=\"$body\">Notifications</SizableText>\n </Tabs.Trigger>\n </Tabs.List>\n <Tabs.Content value=\"tab1\" key=\"tab1\" p=\"$2\" ai=\"center\" jc=\"center\" f={1}>\n <H5 ta=\"center\">Profile</H5>\n </Tabs.Content>\n <Tabs.Content value=\"tab2\" key=\"tab2\" p=\"$2\" ai=\"center\" jc=\"center\" f={1}>\n <H5 ta=\"center\">Connections</H5>\n </Tabs.Content>\n <Tabs.Content value=\"tab3\" key=\"tab3\" p=\"$2\" ai=\"center\" jc=\"center\" f={1}>\n <H5 ta=\"center\">Notifications</H5>\n </Tabs.Content>\n </Tabs>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|