@tamagui/demos 1.6.3 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/TabsAdvancedDemo.d.ts.map +1 -0
- package/types/TabsDemo.d.ts +3 -0
- package/types/TabsDemo.d.ts.map +1 -0
- package/types/TabsHighlightedDemo.d.ts.map +1 -0
- package/types/TabsUnderlinedDemo.d.ts.map +1 -0
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -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": "AAAA,SAAS,QAAQ,gBAAgB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,mBAAmB,MAAM;AACpC,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,MAAM;AAGnD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAkC,IAAI;AAGpF,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAkC,IAAI;AACpF,QAAM,+BAA+B,OAAgC,IAAI;AAEzE,QAAM,iCAAiC,CAAC,YAAqC;AAC3E,iCAA6B,UAAU;AACvC,uBAAmB,OAAO;AAAA,EAC5B;AAOA,QAAM,aAAa,MAAM;AACvB,QACE,CAAC,mBACD,CAAC,6BAA6B,WAC9B,gBAAgB,MAAM,6BAA6B,QAAQ,GAC3D;AACA,aAAO;AAAA,IACT;AACA,WAAO,gBAAgB,IAAI,6BAA6B,QAAQ,IAAI,KAAK;AAAA,EAC3E,GAAG;AAEH,QAAM,eACJ,cAAc,IAAI,WAAW,cAAc,KAAK,YAAY;AAC9D,QAAM,cACJ,cAAc,IAAI,YAAY,cAAc,KAAK,WAAW;AAE9D,QAAM,sBAAyD,CAAC,MAAM,WAAW;AAC/E,QAAI,SAAS,UAAU;AACrB,qCAA+B,MAAM;AAAA,IACvC,OAAO;AACL,yBAAmB,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,SACE,CAAC;AAAA,IACC,OAAO;AAAA,IACP,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,GAAG;AAAA,IACH,KAAK;AAAA,IACL,EAAE;AAAA,IACF,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,eAAe;AAAA;AAAA,IAEf,CAAC,OAAO,YAAY,UAAU,kBAAkB,OAC9C,CAAC,KAAK;AAAA,MACJ,MAAM;AAAA,MACN,WAAW;AAAA,MACX;AAAA,MACA,SAAS;AAAA,MACT,GAAG;AAAA;AAAA,OAEF,mBACC,CAAC;AAAA,QACC,OAAO,gBAAgB;AAAA,QACvB,QAAQ,gBAAgB;AAAA,QACxB,GAAG,gBAAgB;AAAA,QACnB,GAAG,gBAAgB;AAAA,MACrB;AAAA,OAGD,mBACC,CAAC;AAAA,QACC,MAAM;AAAA,QACN;AAAA,QACA,OAAO,gBAAgB;AAAA,QACvB,OAAO;AAAA,QACP,GAAG,gBAAgB;AAAA,QACnB,cAAc;AAAA,QACd,QAAQ;AAAA,MACV;AAAA,MAGF,CAAC,KAAK,QAAQ,MAAM,OAAO,eAAe,qBACxC,CAAC,YAAY,OAAO,EAAnB,YACH,EAFC,KAAK;AAAA,MAGN,CAAC,KAAK,QAAQ,MAAM,OAAO,eAAe,qBACxC,CAAC,YAAY,WAAW,EAAvB,YACH,EAFC,KAAK;AAAA,MAGN,CAAC,KAAK,QAAQ,MAAM,OAAO,eAAe,qBACxC,CAAC,YAAY,aAAa,EAAzB,YACH,EAFC,KAAK;AAAA,IAGR,EArCC,KAAK,KAsCR,EAvCC;AAAA,IAyCD,CAAC;AAAA,MACC;AAAA,MACA,cAAc;AAAA,MACd,aAAa;AAAA,KAEb,CAAC,eAAe,KAAK,YAAY,UAAU,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAChE,CAAC,KAAK,QAAQ,OAAO,YAAY,WAAW,GAAG,GAAG,GAAG,SACnD,CAAC,GAAG,GAAG,UAAU,WAAW,EAA3B,GACH,EAFC,KAAK,QAGR,EAJC,eAKH,EAVC;AAAA,EAWH,EA/DC;AAiEL;AAEA,MAAM,sBAAsB,OAAO,OAAO;AAAA,EACxC,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,cAAc;AAAA,EAEd,UAAU;AAAA,IACR,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAED,MAAM,iBAAiB,OAAO,QAAQ;AAAA,EACpC,UAAU;AAAA,IACR,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,SAAS,EAAE,EAAE;AAAA,IACvC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,EAAE;AAAA,IACvC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;AAAA,EACtC;AACF,CAAC;",
|
|
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
|
+
}
|