@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.
Files changed (130) hide show
  1. package/dist/cjs/AnimationsPresenceDemo.js +3 -3
  2. package/dist/cjs/LucideIconsDemo.js +1 -1
  3. package/dist/cjs/ProgressDemo.js +2 -2
  4. package/dist/cjs/ProgressDemo.js.map +2 -2
  5. package/dist/cjs/SliderDemo.js +1 -1
  6. package/dist/cjs/SliderDemo.js.map +2 -2
  7. package/dist/cjs/TabsAdvancedDemo.js +138 -0
  8. package/dist/cjs/TabsAdvancedDemo.js.map +7 -0
  9. package/dist/cjs/TabsDemo.js +85 -0
  10. package/dist/cjs/TabsDemo.js.map +7 -0
  11. package/dist/cjs/TabsHighlightedDemo.js +188 -0
  12. package/dist/cjs/TabsHighlightedDemo.js.map +7 -0
  13. package/dist/cjs/TabsUnderlinedDemo.js +176 -0
  14. package/dist/cjs/TabsUnderlinedDemo.js.map +7 -0
  15. package/dist/cjs/UpdateThemeDemo.js +1 -1
  16. package/dist/cjs/index.js +6 -0
  17. package/dist/cjs/index.js.map +2 -2
  18. package/dist/esm/ProgressDemo.js +2 -2
  19. package/dist/esm/ProgressDemo.js.map +2 -2
  20. package/dist/esm/ProgressDemo.mjs +2 -2
  21. package/dist/esm/ProgressDemo.mjs.map +2 -2
  22. package/dist/esm/SliderDemo.js +1 -1
  23. package/dist/esm/SliderDemo.js.map +2 -2
  24. package/dist/esm/SliderDemo.mjs +1 -1
  25. package/dist/esm/SliderDemo.mjs.map +2 -2
  26. package/dist/esm/TabsAdvancedDemo.js +122 -0
  27. package/dist/esm/TabsAdvancedDemo.js.map +7 -0
  28. package/dist/esm/TabsAdvancedDemo.mjs +122 -0
  29. package/dist/esm/TabsAdvancedDemo.mjs.map +7 -0
  30. package/dist/esm/TabsDemo.js +61 -0
  31. package/dist/esm/TabsDemo.js.map +7 -0
  32. package/dist/esm/TabsDemo.mjs +61 -0
  33. package/dist/esm/TabsDemo.mjs.map +7 -0
  34. package/dist/esm/TabsHighlightedDemo.js +172 -0
  35. package/dist/esm/TabsHighlightedDemo.js.map +7 -0
  36. package/dist/esm/TabsHighlightedDemo.mjs +172 -0
  37. package/dist/esm/TabsHighlightedDemo.mjs.map +7 -0
  38. package/dist/esm/TabsUnderlinedDemo.js +160 -0
  39. package/dist/esm/TabsUnderlinedDemo.js.map +7 -0
  40. package/dist/esm/TabsUnderlinedDemo.mjs +160 -0
  41. package/dist/esm/TabsUnderlinedDemo.mjs.map +7 -0
  42. package/dist/esm/index.js +4 -0
  43. package/dist/esm/index.js.map +2 -2
  44. package/dist/esm/index.mjs +4 -0
  45. package/dist/esm/index.mjs.map +2 -2
  46. package/dist/jsx/ProgressDemo.js +2 -2
  47. package/dist/jsx/ProgressDemo.js.map +2 -2
  48. package/dist/jsx/ProgressDemo.mjs +2 -2
  49. package/dist/jsx/ProgressDemo.mjs.map +2 -2
  50. package/dist/jsx/SliderDemo.js +1 -1
  51. package/dist/jsx/SliderDemo.js.map +2 -2
  52. package/dist/jsx/SliderDemo.mjs +1 -1
  53. package/dist/jsx/SliderDemo.mjs.map +2 -2
  54. package/dist/jsx/TabsAdvancedDemo.js +103 -0
  55. package/dist/jsx/TabsAdvancedDemo.js.map +7 -0
  56. package/dist/jsx/TabsAdvancedDemo.mjs +103 -0
  57. package/dist/jsx/TabsAdvancedDemo.mjs.map +7 -0
  58. package/dist/jsx/TabsDemo.js +52 -0
  59. package/dist/jsx/TabsDemo.js.map +7 -0
  60. package/dist/jsx/TabsDemo.mjs +52 -0
  61. package/dist/jsx/TabsDemo.mjs.map +7 -0
  62. package/dist/jsx/TabsHighlightedDemo.js +141 -0
  63. package/dist/jsx/TabsHighlightedDemo.js.map +7 -0
  64. package/dist/jsx/TabsHighlightedDemo.mjs +141 -0
  65. package/dist/jsx/TabsHighlightedDemo.mjs.map +7 -0
  66. package/dist/jsx/TabsUnderlinedDemo.js +133 -0
  67. package/dist/jsx/TabsUnderlinedDemo.js.map +7 -0
  68. package/dist/jsx/TabsUnderlinedDemo.mjs +133 -0
  69. package/dist/jsx/TabsUnderlinedDemo.mjs.map +7 -0
  70. package/dist/jsx/index.js +4 -0
  71. package/dist/jsx/index.js.map +2 -2
  72. package/dist/jsx/index.mjs +4 -0
  73. package/dist/jsx/index.mjs.map +2 -2
  74. package/package.json +17 -18
  75. package/src/ProgressDemo.tsx +2 -2
  76. package/src/SliderDemo.tsx +1 -1
  77. package/src/TabsAdvancedDemo.tsx +148 -0
  78. package/src/TabsDemo.tsx +91 -0
  79. package/src/index.tsx +2 -0
  80. package/types/TabsAdvancedDemo.d.ts +3 -0
  81. package/types/TabsDemo.d.ts +3 -0
  82. package/types/index.d.ts +2 -0
  83. package/types/AccordionDemo.d.ts.map +0 -1
  84. package/types/AddThemeDemo.d.ts.map +0 -1
  85. package/types/AlertDialogDemo.d.ts.map +0 -1
  86. package/types/AnimationsDemo.d.ts.map +0 -1
  87. package/types/AnimationsEnterDemo.d.ts.map +0 -1
  88. package/types/AnimationsHoverDemo.d.ts.map +0 -1
  89. package/types/AnimationsPresenceDemo.d.ts.map +0 -1
  90. package/types/AnimationsTimingDemo.d.ts.map +0 -1
  91. package/types/AvatarDemo.d.ts.map +0 -1
  92. package/types/ButtonDemo.d.ts.map +0 -1
  93. package/types/CardDemo.d.ts.map +0 -1
  94. package/types/CheckboxDemo.d.ts.map +0 -1
  95. package/types/ColorsDemo.d.ts.map +0 -1
  96. package/types/DialogDemo.d.ts.map +0 -1
  97. package/types/DrawerDemo.d.ts.map +0 -1
  98. package/types/FeatherIconsDemo.d.ts.map +0 -1
  99. package/types/FormsDemo.d.ts.map +0 -1
  100. package/types/GroupDemo.d.ts.map +0 -1
  101. package/types/HeadingsDemo.d.ts.map +0 -1
  102. package/types/ImageDemo.d.ts.map +0 -1
  103. package/types/InputsDemo.d.ts.map +0 -1
  104. package/types/LabelDemo.d.ts.map +0 -1
  105. package/types/LinearGradientDemo.d.ts.map +0 -1
  106. package/types/ListItemDemo.d.ts.map +0 -1
  107. package/types/LucideIconsDemo.d.ts.map +0 -1
  108. package/types/MenuDemo.d.ts.map +0 -1
  109. package/types/PopoverDemo.d.ts.map +0 -1
  110. package/types/PopperDemo.d.ts.map +0 -1
  111. package/types/ProgressDemo.d.ts.map +0 -1
  112. package/types/RadioGroupDemo.d.ts.map +0 -1
  113. package/types/ScrollViewDemo.d.ts.map +0 -1
  114. package/types/SelectDemo.d.ts.map +0 -1
  115. package/types/SeparatorDemo.d.ts.map +0 -1
  116. package/types/ShapesDemo.d.ts.map +0 -1
  117. package/types/SheetDemo.d.ts.map +0 -1
  118. package/types/SliderDemo.d.ts.map +0 -1
  119. package/types/SpinnerDemo.d.ts.map +0 -1
  120. package/types/StacksDemo.d.ts.map +0 -1
  121. package/types/SwitchDemo.d.ts.map +0 -1
  122. package/types/TextDemo.d.ts.map +0 -1
  123. package/types/ThemeInverseDemo.d.ts.map +0 -1
  124. package/types/TokensDemo.d.ts.map +0 -1
  125. package/types/TooltipDemo.d.ts.map +0 -1
  126. package/types/UpdateThemeDemo.d.ts.map +0 -1
  127. package/types/conf.d.ts.map +0 -1
  128. package/types/index.d.ts.map +0 -1
  129. package/types/tamagui.config.d.ts.map +0 -1
  130. package/types/useOnIntersecting.d.ts.map +0 -1
@@ -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={10} l={20} $xxs={{ dsp: "none" }}>
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={10} l={20} $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>\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,GAAG,IAAI,GAAG,IAAI,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,MACN,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;",
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={10} l={20} $xxs={{ dsp: "none" }}>
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={10} l={20} $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>\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,GAAG,IAAI,GAAG,IAAI,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,MACN,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;",
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
  }
@@ -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 bordered circular elevate index={0} />
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 bordered circular elevate index={0} />\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,SAAS,SAAS,QAAQ,OAAO,GAAG;AAAA,KACjD;AAAA,EACH,EANC;AAQL;",
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
  }
@@ -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 bordered circular elevate index={0} />
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 bordered circular elevate index={0} />\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,SAAS,SAAS,QAAQ,OAAO,GAAG;AAAA,KACjD;AAAA,EACH,EANC;AAQL;",
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
+ }