@tamagui/demos 1.86.5 → 1.87.0-1705782099858

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 (67) hide show
  1. package/dist/cjs/AnimationsPresenceDemo.js +30 -13
  2. package/dist/cjs/AnimationsPresenceDemo.js.map +2 -2
  3. package/dist/cjs/AnimationsPresenceDemo.native.js +30 -13
  4. package/dist/cjs/AnimationsPresenceDemo.native.js.map +2 -2
  5. package/dist/cjs/CheckboxHeadlessDemo.js +53 -0
  6. package/dist/cjs/CheckboxHeadlessDemo.js.map +6 -0
  7. package/dist/cjs/CheckboxHeadlessDemo.native.js +54 -0
  8. package/dist/cjs/CheckboxHeadlessDemo.native.js.map +6 -0
  9. package/dist/cjs/CheckboxUnstyledDemo.js +57 -0
  10. package/dist/cjs/CheckboxUnstyledDemo.js.map +6 -0
  11. package/dist/cjs/CheckboxUnstyledDemo.native.js +58 -0
  12. package/dist/cjs/CheckboxUnstyledDemo.native.js.map +6 -0
  13. package/dist/cjs/SwitchHeadlessDemo.js +83 -0
  14. package/dist/cjs/SwitchHeadlessDemo.js.map +6 -0
  15. package/dist/cjs/SwitchHeadlessDemo.native.js +84 -0
  16. package/dist/cjs/SwitchHeadlessDemo.native.js.map +6 -0
  17. package/dist/cjs/SwitchUnstyledDemo.js +73 -0
  18. package/dist/cjs/SwitchUnstyledDemo.js.map +6 -0
  19. package/dist/cjs/SwitchUnstyledDemo.native.js +74 -0
  20. package/dist/cjs/SwitchUnstyledDemo.native.js.map +6 -0
  21. package/dist/esm/AnimationsPresenceDemo.js +30 -13
  22. package/dist/esm/AnimationsPresenceDemo.js.map +2 -2
  23. package/dist/esm/AnimationsPresenceDemo.native.js +30 -13
  24. package/dist/esm/AnimationsPresenceDemo.native.js.map +2 -2
  25. package/dist/esm/CheckboxHeadlessDemo.js +40 -0
  26. package/dist/esm/CheckboxHeadlessDemo.js.map +6 -0
  27. package/dist/esm/CheckboxHeadlessDemo.native.js +40 -0
  28. package/dist/esm/CheckboxHeadlessDemo.native.js.map +6 -0
  29. package/dist/esm/CheckboxUnstyledDemo.js +40 -0
  30. package/dist/esm/CheckboxUnstyledDemo.js.map +6 -0
  31. package/dist/esm/CheckboxUnstyledDemo.native.js +40 -0
  32. package/dist/esm/CheckboxUnstyledDemo.native.js.map +6 -0
  33. package/dist/esm/SwitchHeadlessDemo.js +67 -0
  34. package/dist/esm/SwitchHeadlessDemo.js.map +6 -0
  35. package/dist/esm/SwitchHeadlessDemo.native.js +67 -0
  36. package/dist/esm/SwitchHeadlessDemo.native.js.map +6 -0
  37. package/dist/esm/SwitchUnstyledDemo.js +55 -0
  38. package/dist/esm/SwitchUnstyledDemo.js.map +6 -0
  39. package/dist/esm/SwitchUnstyledDemo.native.js +55 -0
  40. package/dist/esm/SwitchUnstyledDemo.native.js.map +6 -0
  41. package/dist/jsx/AnimationsPresenceDemo.js +29 -12
  42. package/dist/jsx/AnimationsPresenceDemo.js.map +2 -2
  43. package/dist/jsx/AnimationsPresenceDemo.native.js +29 -12
  44. package/dist/jsx/AnimationsPresenceDemo.native.js.map +2 -2
  45. package/dist/jsx/CheckboxHeadlessDemo.js +35 -0
  46. package/dist/jsx/CheckboxHeadlessDemo.js.map +6 -0
  47. package/dist/jsx/CheckboxHeadlessDemo.native.js +35 -0
  48. package/dist/jsx/CheckboxHeadlessDemo.native.js.map +6 -0
  49. package/dist/jsx/CheckboxUnstyledDemo.js +39 -0
  50. package/dist/jsx/CheckboxUnstyledDemo.js.map +6 -0
  51. package/dist/jsx/CheckboxUnstyledDemo.native.js +39 -0
  52. package/dist/jsx/CheckboxUnstyledDemo.native.js.map +6 -0
  53. package/dist/jsx/SwitchHeadlessDemo.js +59 -0
  54. package/dist/jsx/SwitchHeadlessDemo.js.map +6 -0
  55. package/dist/jsx/SwitchHeadlessDemo.native.js +59 -0
  56. package/dist/jsx/SwitchHeadlessDemo.native.js.map +6 -0
  57. package/dist/jsx/SwitchUnstyledDemo.js +54 -0
  58. package/dist/jsx/SwitchUnstyledDemo.js.map +6 -0
  59. package/dist/jsx/SwitchUnstyledDemo.native.js +54 -0
  60. package/dist/jsx/SwitchUnstyledDemo.native.js.map +6 -0
  61. package/package.json +18 -18
  62. package/src/AnimationsPresenceDemo.tsx +33 -18
  63. package/types/AnimationsPresenceDemo.d.ts.map +1 -1
  64. package/types/CheckboxHeadlessDemo.d.ts.map +1 -0
  65. package/types/CheckboxUnstyledDemo.d.ts.map +1 -0
  66. package/types/SwitchHeadlessDemo.d.ts.map +1 -0
  67. package/types/SwitchUnstyledDemo.d.ts.map +1 -0
@@ -0,0 +1,67 @@
1
+ import { useSwitch } from "@tamagui/switch-headless";
2
+ import { forwardRef, useEffect, useRef, useState } from "react";
3
+ import { Animated, Pressable } from "react-native";
4
+ import { Label, XStack, YStack } from "tamagui";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ function SwitchHeadlessDemo() {
7
+ return /* @__PURE__ */ jsx(YStack, { width: 200, alignItems: "center", space: "$3", children: /* @__PURE__ */ jsxs(XStack, { space: "$3", alignItems: "center", children: [
8
+ /* @__PURE__ */ jsx(Label, { htmlFor: "headless", children: "Headless" }),
9
+ /* @__PURE__ */ jsx(HeadlessSwitch, { defaultChecked: !0, id: "headless" })
10
+ ] }) });
11
+ }
12
+ const HeadlessSwitch = forwardRef((props, ref) => {
13
+ const [checked, setChecked] = useState(props.defaultChecked || !1), { switchProps, switchRef, bubbleInput } = useSwitch(
14
+ props,
15
+ [checked, setChecked],
16
+ ref
17
+ ), animation = useRef(new Animated.Value(checked ? 1 : 0)).current;
18
+ return useEffect(() => {
19
+ Animated.timing(animation, {
20
+ toValue: checked ? 1 : 0,
21
+ duration: 100,
22
+ useNativeDriver: !0
23
+ }).start();
24
+ }, [checked]), /* @__PURE__ */ jsxs(Fragment, { children: [
25
+ /* @__PURE__ */ jsx(
26
+ Pressable,
27
+ {
28
+ style: {
29
+ width: 40,
30
+ height: 20,
31
+ borderRadius: 100,
32
+ backgroundColor: checked ? "lightblue" : "silver"
33
+ },
34
+ ref: switchRef,
35
+ ...switchProps,
36
+ children: /* @__PURE__ */ jsx(
37
+ Animated.View,
38
+ {
39
+ style: [
40
+ {
41
+ backgroundColor: "black",
42
+ borderRadius: 100,
43
+ width: 20,
44
+ height: 20
45
+ },
46
+ {
47
+ transform: [
48
+ {
49
+ translateX: animation.interpolate({
50
+ inputRange: [0, 1],
51
+ outputRange: [0, 20]
52
+ })
53
+ }
54
+ ]
55
+ }
56
+ ]
57
+ }
58
+ )
59
+ }
60
+ ),
61
+ bubbleInput
62
+ ] });
63
+ });
64
+ export {
65
+ SwitchHeadlessDemo
66
+ };
67
+ //# sourceMappingURL=SwitchHeadlessDemo.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SwitchHeadlessDemo.tsx"],
4
+ "mappings": "AAAA,SAA6C,iBAAiB;AAC9D,SAAS,YAAY,WAAW,QAAQ,gBAAgB;AACxD,SAAS,UAAU,iBAAuB;AAC1C,SAAS,OAAO,QAAQ,cAAc;AAKhC,SA2BF,UA1BI,KADF;AAHC,SAAS,qBAAqB;AACnC,SACE,oBAAC,UAAO,OAAO,KAAK,YAAW,UAAS,OAAM,MAC5C,+BAAC,UAAO,OAAM,MAAK,YAAW,UAC5B;AAAA,wBAAC,SAAM,SAAQ,YAAW,sBAAQ;AAAA,IAClC,oBAAC,kBAAe,gBAAc,IAAC,IAAG,YAAW;AAAA,KAC/C,GACF;AAEJ;AAEA,MAAM,iBAAiB,WAAsC,CAAC,OAAO,QAAQ;AAC3E,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,MAAM,kBAAkB,EAAK,GAC9D,EAAE,aAAa,WAAW,YAAY,IAAI;AAAA,IAC9C;AAAA,IACA,CAAC,SAAS,UAAU;AAAA,IACpB;AAAA,EACF,GAEM,YAAY,OAAO,IAAI,SAAS,MAAM,UAAU,IAAI,CAAC,CAAC,EAAE;AAE9D,mBAAU,MAAM;AACd,aAAS,OAAO,WAAW;AAAA,MACzB,SAAS,UAAU,IAAI;AAAA,MACvB,UAAU;AAAA,MACV,iBAAiB;AAAA,IACnB,CAAC,EAAE,MAAM;AAAA,EACX,GAAG,CAAC,OAAO,CAAC,GAGV,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,iBAAiB,UAAU,cAAc;AAAA,QAC3C;AAAA,QACA,KAAK;AAAA,QACJ,GAAG;AAAA,QAEJ;AAAA,UAAC,SAAS;AAAA,UAAT;AAAA,YACC,OAAO;AAAA,cACL;AAAA,gBACE,iBAAiB;AAAA,gBACjB,cAAc;AAAA,gBACd,OAAO;AAAA,gBACP,QAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,WAAW;AAAA,kBACT;AAAA,oBACE,YAAY,UAAU,YAAY;AAAA,sBAChC,YAAY,CAAC,GAAG,CAAC;AAAA,sBACjB,aAAa,CAAC,GAAG,EAAE;AAAA,oBACrB,CAAC;AAAA,kBACH;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACC;AAAA,KACH;AAEJ,CAAC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,55 @@
1
+ import { Stack, styled } from "@tamagui/core";
2
+ import { SwitchStyledContext, createSwitch } from "@tamagui/switch";
3
+ import { Label, XStack, YStack } from "tamagui";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ const Frame = styled(Stack, {
6
+ context: SwitchStyledContext,
7
+ width: 40,
8
+ height: 20,
9
+ borderRadius: 20,
10
+ variants: {
11
+ checked: {
12
+ true: {
13
+ backgroundColor: "lightblue"
14
+ },
15
+ false: {
16
+ backgroundColor: "silver"
17
+ }
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ checked: !1
22
+ }
23
+ }), Thumb = styled(Stack, {
24
+ context: SwitchStyledContext,
25
+ width: 20,
26
+ height: 20,
27
+ backgroundColor: "black",
28
+ borderRadius: 20,
29
+ variants: {
30
+ checked: {
31
+ true: {
32
+ opacity: 0.8
33
+ },
34
+ false: {
35
+ opacity: 0.5
36
+ }
37
+ }
38
+ }
39
+ }), Switch = createSwitch({
40
+ // @ts-ignore
41
+ Frame,
42
+ // @ts-ignore
43
+ Thumb
44
+ });
45
+ function SwitchUnstyledDemo() {
46
+ return /* @__PURE__ */ jsx(YStack, { width: 200, alignItems: "center", space: "$3", children: /* @__PURE__ */ jsxs(XStack, { space: "$3", alignItems: "center", children: [
47
+ /* @__PURE__ */ jsx(Label, { htmlFor: "unstyled-switch", children: "Unstyled" }),
48
+ /* @__PURE__ */ jsx(Switch, { defaultChecked: !0, id: "unstyled-switch", children: /* @__PURE__ */ jsx(Switch.Thumb, { animation: "quick" }) })
49
+ ] }) });
50
+ }
51
+ export {
52
+ Switch,
53
+ SwitchUnstyledDemo
54
+ };
55
+ //# sourceMappingURL=SwitchUnstyledDemo.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SwitchUnstyledDemo.tsx"],
4
+ "mappings": "AAAA,SAAS,OAAO,cAAc;AAC9B,SAAS,qBAAqB,oBAAoB;AAClD,SAAS,OAAO,QAAQ,cAAc;AAoDhC,SACE,KADF;AAlDN,MAAM,QAAQ,OAAO,OAAO;AAAA,EAC1B,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,UAAU;AAAA,IACR,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,MACA,OAAO;AAAA,QACL,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC,GAEK,QAAQ,OAAO,OAAO;AAAA,EAC1B,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,cAAc;AAAA,EAEd,UAAU;AAAA,IACR,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF,CAAC,GAGY,SAAS,aAAa;AAAA;AAAA,EAEjC;AAAA;AAAA,EAEA;AACF,CAAC;AAEM,SAAS,qBAAqB;AACnC,SACE,oBAAC,UAAO,OAAO,KAAK,YAAW,UAAS,OAAM,MAC5C,+BAAC,UAAO,OAAM,MAAK,YAAW,UAC5B;AAAA,wBAAC,SAAM,SAAQ,mBAAkB,sBAAQ;AAAA,IACzC,oBAAC,UAAO,gBAAc,IAAC,IAAG,mBACxB,8BAAC,OAAO,OAAP,EAAa,WAAU,SAAQ,GAClC;AAAA,KACF,GACF;AAEJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,55 @@
1
+ import { Stack, styled } from "@tamagui/core";
2
+ import { SwitchStyledContext, createSwitch } from "@tamagui/switch";
3
+ import { Label, XStack, YStack } from "tamagui";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ const Frame = styled(Stack, {
6
+ context: SwitchStyledContext,
7
+ width: 40,
8
+ height: 20,
9
+ borderRadius: 20,
10
+ variants: {
11
+ checked: {
12
+ true: {
13
+ backgroundColor: "lightblue"
14
+ },
15
+ false: {
16
+ backgroundColor: "silver"
17
+ }
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ checked: !1
22
+ }
23
+ }), Thumb = styled(Stack, {
24
+ context: SwitchStyledContext,
25
+ width: 20,
26
+ height: 20,
27
+ backgroundColor: "black",
28
+ borderRadius: 20,
29
+ variants: {
30
+ checked: {
31
+ true: {
32
+ opacity: 0.8
33
+ },
34
+ false: {
35
+ opacity: 0.5
36
+ }
37
+ }
38
+ }
39
+ }), Switch = createSwitch({
40
+ // @ts-ignore
41
+ Frame,
42
+ // @ts-ignore
43
+ Thumb
44
+ });
45
+ function SwitchUnstyledDemo() {
46
+ return /* @__PURE__ */ jsx(YStack, { width: 200, alignItems: "center", space: "$3", children: /* @__PURE__ */ jsxs(XStack, { space: "$3", alignItems: "center", children: [
47
+ /* @__PURE__ */ jsx(Label, { htmlFor: "unstyled-switch", children: "Unstyled" }),
48
+ /* @__PURE__ */ jsx(Switch, { defaultChecked: !0, id: "unstyled-switch", children: /* @__PURE__ */ jsx(Switch.Thumb, { animation: "quick" }) })
49
+ ] }) });
50
+ }
51
+ export {
52
+ Switch,
53
+ SwitchUnstyledDemo
54
+ };
55
+ //# sourceMappingURL=SwitchUnstyledDemo.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SwitchUnstyledDemo.tsx"],
4
+ "mappings": "AAAA,SAAS,OAAO,cAAc;AAC9B,SAAS,qBAAqB,oBAAoB;AAClD,SAAS,OAAO,QAAQ,cAAc;AAoDhC,SACE,KADF;AAlDN,MAAM,QAAQ,OAAO,OAAO;AAAA,EAC1B,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,UAAU;AAAA,IACR,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,MACA,OAAO;AAAA,QACL,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC,GAEK,QAAQ,OAAO,OAAO;AAAA,EAC1B,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,cAAc;AAAA,EAEd,UAAU;AAAA,IACR,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF,CAAC,GAGY,SAAS,aAAa;AAAA;AAAA,EAEjC;AAAA;AAAA,EAEA;AACF,CAAC;AAEM,SAAS,qBAAqB;AACnC,SACE,oBAAC,UAAO,OAAO,KAAK,YAAW,UAAS,OAAM,MAC5C,+BAAC,UAAO,OAAM,MAAK,YAAW,UAC5B;AAAA,wBAAC,SAAM,SAAQ,mBAAkB,sBAAQ;AAAA,IACzC,oBAAC,UAAO,gBAAc,IAAC,IAAG,mBACxB,8BAAC,OAAO,OAAP,EAAa,WAAU,SAAQ,GAClC;AAAA,KACF,GACF;AAEJ;",
5
+ "names": []
6
+ }
@@ -5,16 +5,35 @@ import { Button, Image, XStack, YStack, styled } from "tamagui";
5
5
  import photo1 from "../../public/photo1.jpg";
6
6
  import photo2 from "../../public/photo2.jpg";
7
7
  import photo3 from "../../public/photo3.jpg";
8
- const images = [photo1, photo2, photo3].map((x) => x.src || x), YStackEnterable = styled(YStack, {
8
+ const images = [photo1, photo2, photo3].map((x) => x.src || x), GalleryItem = styled(YStack, {
9
+ zIndex: 1,
10
+ x: 0,
11
+ opacity: 1,
12
+ fullscreen: !0,
9
13
  variants: {
10
- isLeft: { true: { x: -300, opacity: 0 } },
11
- isRight: { true: { x: 300, opacity: 0 } }
14
+ // 1 = right, 0 = nowhere, -1 = left
15
+ going: {
16
+ ":number": (going) => ({
17
+ enterStyle: {
18
+ x: going > 0 ? 1e3 : -1e3,
19
+ opacity: 0
20
+ },
21
+ exitStyle: {
22
+ zIndex: 0,
23
+ x: going < 0 ? 1e3 : -1e3,
24
+ opacity: 0
25
+ }
26
+ })
27
+ }
12
28
  }
13
- });
29
+ }), wrap = (min, max, v) => {
30
+ const rangeSize = max - min;
31
+ return ((v - min) % rangeSize + rangeSize) % rangeSize + min;
32
+ };
14
33
  function AnimationsPresenceDemo() {
15
- const [[page, direction], setPage] = useState([0, 0]), imageIndex = wrap(0, images.length, page), paginate = (newDirection) => {
16
- setPage([page + newDirection, newDirection]);
17
- }, enterVariant = direction === 1 || direction === 0 ? "isRight" : "isLeft", exitVariant = direction === 1 ? "isLeft" : "isRight";
34
+ const [[page, going], setPage] = useState([0, 0]), imageIndex = wrap(0, images.length, page), paginate = (going2) => {
35
+ setPage([page + going2, going2]);
36
+ };
18
37
  return <XStack
19
38
  overflow="hidden"
20
39
  backgroundColor="#000"
@@ -23,7 +42,7 @@ function AnimationsPresenceDemo() {
23
42
  width="100%"
24
43
  alignItems="center"
25
44
  >
26
- <AnimatePresence enterVariant={enterVariant} exitVariant={exitVariant}><YStackEnterable key={page} animation="bouncy" fullscreen x={0} opacity={1}><Image source={{ uri: images[imageIndex], width: 780, height: 300 }} /></YStackEnterable></AnimatePresence>
45
+ <AnimatePresence initial={!1} custom={{ going }}><GalleryItem key={page} animation="slowest" going={going}><Image source={{ uri: images[imageIndex], width: 780, height: 300 }} /></GalleryItem></AnimatePresence>
27
46
  <Button
28
47
  accessibilityLabel="Carousel left"
29
48
  icon={ArrowLeft}
@@ -33,6 +52,7 @@ function AnimationsPresenceDemo() {
33
52
  circular
34
53
  elevate
35
54
  onPress={() => paginate(-1)}
55
+ zi={100}
36
56
  />
37
57
  <Button
38
58
  accessibilityLabel="Carousel right"
@@ -43,13 +63,10 @@ function AnimationsPresenceDemo() {
43
63
  circular
44
64
  elevate
45
65
  onPress={() => paginate(1)}
66
+ zi={100}
46
67
  />
47
68
  </XStack>;
48
69
  }
49
- const wrap = (min, max, v) => {
50
- const rangeSize = max - min;
51
- return ((v - min) % rangeSize + rangeSize) % rangeSize + min;
52
- };
53
70
  export {
54
71
  AnimationsPresenceDemo,
55
72
  images
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/AnimationsPresenceDemo.tsx"],
4
- "mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,WAAW,kBAAkB;AACtC,SAAS,gBAAgB;AACzB,SAAS,QAAQ,OAAO,QAAQ,QAAQ,cAAc;AAGtD,OAAO,YAAY;AAEnB,OAAO,YAAY;AAEnB,OAAO,YAAY;AAEZ,MAAM,SAAS,CAAC,QAAQ,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAE9D,kBAAkB,OAAO,QAAQ;AAAA,EACrC,UAAU;AAAA,IACR,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,EAAE,EAAE;AAAA,IACxC,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,SAAS,EAAE,EAAE;AAAA,EAC1C;AACF,CAAC;AAEM,SAAS,yBAAyB;AACvC,QAAM,CAAC,CAAC,MAAM,SAAS,GAAG,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAE9C,aAAa,KAAK,GAAG,OAAO,QAAQ,IAAI,GAExC,WAAW,CAAC,iBAAyB;AACzC,YAAQ,CAAC,OAAO,cAAc,YAAY,CAAC;AAAA,EAC7C,GAEM,eAAe,cAAc,KAAK,cAAc,IAAI,YAAY,UAChE,cAAc,cAAc,IAAI,WAAW;AAEjD,SACE,CAAC;AAAA,IACC,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA;AAAA,IAEX,CAAC,gBAAgB,cAAc,cAAc,aAAa,aACxD,CAAC,gBAAgB,KAAK,MAAM,UAAU,SAAS,WAAW,GAAG,GAAG,SAAS,GACvE,CAAC,MAAM,QAAQ,EAAE,KAAK,OAAO,UAAU,GAAG,OAAO,KAAK,QAAQ,IAAI,GAAG,EACvE,EAFC,gBAGH,EAJC;AAAA,IAMD,CAAC;AAAA,MACC,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,EAAE;AAAA,IAC5B;AAAA,IACA,CAAC;AAAA,MACC,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,CAAC;AAAA,IAC3B;AAAA,EACF,EAlCC;AAoCL;AAEA,MAAM,OAAO,CAAC,KAAa,KAAa,MAAc;AACpD,QAAM,YAAY,MAAM;AACxB,WAAW,IAAI,OAAO,YAAa,aAAa,YAAa;AAC/D;",
5
- "names": []
4
+ "mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,WAAW,kBAAkB;AACtC,SAAS,gBAAgB;AACzB,SAAS,QAAQ,OAAO,QAAQ,QAAQ,cAAc;AAGtD,OAAO,YAAY;AAEnB,OAAO,YAAY;AAEnB,OAAO,YAAY;AAEZ,MAAM,SAAS,CAAC,QAAQ,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAE9D,cAAc,OAAO,QAAQ;AAAA,EACjC,QAAQ;AAAA,EACR,GAAG;AAAA,EACH,SAAS;AAAA,EACT,YAAY;AAAA,EAEZ,UAAU;AAAA;AAAA,IAER,OAAO;AAAA,MACL,WAAW,CAAC,WAAW;AAAA,QACrB,YAAY;AAAA,UACV,GAAG,QAAQ,IAAI,MAAO;AAAA,UACtB,SAAS;AAAA,QACX;AAAA,QACA,WAAW;AAAA,UACT,QAAQ;AAAA,UACR,GAAG,QAAQ,IAAI,MAAO;AAAA,UACtB,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC,GAEK,OAAO,CAAC,KAAa,KAAa,MAAc;AACpD,QAAM,YAAY,MAAM;AACxB,WAAW,IAAI,OAAO,YAAa,aAAa,YAAa;AAC/D;AAEO,SAAS,yBAAyB;AACvC,QAAM,CAAC,CAAC,MAAM,KAAK,GAAG,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAE1C,aAAa,KAAK,GAAG,OAAO,QAAQ,IAAI,GACxC,WAAW,CAACA,WAAkB;AAClC,YAAQ,CAAC,OAAOA,QAAOA,MAAK,CAAC;AAAA,EAC/B;AAEA,SACE,CAAC;AAAA,IACC,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA;AAAA,IAEX,CAAC,gBAAgB,SAAS,IAAO,QAAQ,EAAE,MAAM,GAC/C,CAAC,YAAY,KAAK,MAAM,UAAU,UAAU,OAAO,OACjD,CAAC,MAAM,QAAQ,EAAE,KAAK,OAAO,UAAU,GAAG,OAAO,KAAK,QAAQ,IAAI,GAAG,EACvE,EAFC,YAGH,EAJC;AAAA,IAMD,CAAC;AAAA,MACC,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,EAAE;AAAA,MAC1B,IAAI;AAAA,IACN;AAAA,IACA,CAAC;AAAA,MACC,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,CAAC;AAAA,MACzB,IAAI;AAAA,IACN;AAAA,EACF,EApCC;AAsCL;",
5
+ "names": ["going"]
6
6
  }
@@ -5,16 +5,35 @@ import { Button, Image, XStack, YStack, styled } from "tamagui";
5
5
  import photo1 from "../../public/photo1.jpg";
6
6
  import photo2 from "../../public/photo2.jpg";
7
7
  import photo3 from "../../public/photo3.jpg";
8
- const images = [photo1, photo2, photo3].map((x) => x.src || x), YStackEnterable = styled(YStack, {
8
+ const images = [photo1, photo2, photo3].map((x) => x.src || x), GalleryItem = styled(YStack, {
9
+ zIndex: 1,
10
+ x: 0,
11
+ opacity: 1,
12
+ fullscreen: !0,
9
13
  variants: {
10
- isLeft: { true: { x: -300, opacity: 0 } },
11
- isRight: { true: { x: 300, opacity: 0 } }
14
+ // 1 = right, 0 = nowhere, -1 = left
15
+ going: {
16
+ ":number": (going) => ({
17
+ enterStyle: {
18
+ x: going > 0 ? 1e3 : -1e3,
19
+ opacity: 0
20
+ },
21
+ exitStyle: {
22
+ zIndex: 0,
23
+ x: going < 0 ? 1e3 : -1e3,
24
+ opacity: 0
25
+ }
26
+ })
27
+ }
12
28
  }
13
- });
29
+ }), wrap = (min, max, v) => {
30
+ const rangeSize = max - min;
31
+ return ((v - min) % rangeSize + rangeSize) % rangeSize + min;
32
+ };
14
33
  function AnimationsPresenceDemo() {
15
- const [[page, direction], setPage] = useState([0, 0]), imageIndex = wrap(0, images.length, page), paginate = (newDirection) => {
16
- setPage([page + newDirection, newDirection]);
17
- }, enterVariant = direction === 1 || direction === 0 ? "isRight" : "isLeft", exitVariant = direction === 1 ? "isLeft" : "isRight";
34
+ const [[page, going], setPage] = useState([0, 0]), imageIndex = wrap(0, images.length, page), paginate = (going2) => {
35
+ setPage([page + going2, going2]);
36
+ };
18
37
  return <XStack
19
38
  overflow="hidden"
20
39
  backgroundColor="#000"
@@ -23,7 +42,7 @@ function AnimationsPresenceDemo() {
23
42
  width="100%"
24
43
  alignItems="center"
25
44
  >
26
- <AnimatePresence enterVariant={enterVariant} exitVariant={exitVariant}><YStackEnterable key={page} animation="bouncy" fullscreen x={0} opacity={1}><Image source={{ uri: images[imageIndex], width: 780, height: 300 }} /></YStackEnterable></AnimatePresence>
45
+ <AnimatePresence initial={!1} custom={{ going }}><GalleryItem key={page} animation="slowest" going={going}><Image source={{ uri: images[imageIndex], width: 780, height: 300 }} /></GalleryItem></AnimatePresence>
27
46
  <Button
28
47
  accessibilityLabel="Carousel left"
29
48
  icon={ArrowLeft}
@@ -33,6 +52,7 @@ function AnimationsPresenceDemo() {
33
52
  circular
34
53
  elevate
35
54
  onPress={() => paginate(-1)}
55
+ zi={100}
36
56
  />
37
57
  <Button
38
58
  accessibilityLabel="Carousel right"
@@ -43,13 +63,10 @@ function AnimationsPresenceDemo() {
43
63
  circular
44
64
  elevate
45
65
  onPress={() => paginate(1)}
66
+ zi={100}
46
67
  />
47
68
  </XStack>;
48
69
  }
49
- const wrap = (min, max, v) => {
50
- const rangeSize = max - min;
51
- return ((v - min) % rangeSize + rangeSize) % rangeSize + min;
52
- };
53
70
  export {
54
71
  AnimationsPresenceDemo,
55
72
  images
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/AnimationsPresenceDemo.tsx"],
4
- "mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,WAAW,kBAAkB;AACtC,SAAS,gBAAgB;AACzB,SAAS,QAAQ,OAAO,QAAQ,QAAQ,cAAc;AAGtD,OAAO,YAAY;AAEnB,OAAO,YAAY;AAEnB,OAAO,YAAY;AAEZ,MAAM,SAAS,CAAC,QAAQ,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAE9D,kBAAkB,OAAO,QAAQ;AAAA,EACrC,UAAU;AAAA,IACR,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,EAAE,EAAE;AAAA,IACxC,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,SAAS,EAAE,EAAE;AAAA,EAC1C;AACF,CAAC;AAEM,SAAS,yBAAyB;AACvC,QAAM,CAAC,CAAC,MAAM,SAAS,GAAG,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAE9C,aAAa,KAAK,GAAG,OAAO,QAAQ,IAAI,GAExC,WAAW,CAAC,iBAAyB;AACzC,YAAQ,CAAC,OAAO,cAAc,YAAY,CAAC;AAAA,EAC7C,GAEM,eAAe,cAAc,KAAK,cAAc,IAAI,YAAY,UAChE,cAAc,cAAc,IAAI,WAAW;AAEjD,SACE,CAAC;AAAA,IACC,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA;AAAA,IAEX,CAAC,gBAAgB,cAAc,cAAc,aAAa,aACxD,CAAC,gBAAgB,KAAK,MAAM,UAAU,SAAS,WAAW,GAAG,GAAG,SAAS,GACvE,CAAC,MAAM,QAAQ,EAAE,KAAK,OAAO,UAAU,GAAG,OAAO,KAAK,QAAQ,IAAI,GAAG,EACvE,EAFC,gBAGH,EAJC;AAAA,IAMD,CAAC;AAAA,MACC,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,EAAE;AAAA,IAC5B;AAAA,IACA,CAAC;AAAA,MACC,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,CAAC;AAAA,IAC3B;AAAA,EACF,EAlCC;AAoCL;AAEA,MAAM,OAAO,CAAC,KAAa,KAAa,MAAc;AACpD,QAAM,YAAY,MAAM;AACxB,WAAW,IAAI,OAAO,YAAa,aAAa,YAAa;AAC/D;",
5
- "names": []
4
+ "mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,WAAW,kBAAkB;AACtC,SAAS,gBAAgB;AACzB,SAAS,QAAQ,OAAO,QAAQ,QAAQ,cAAc;AAGtD,OAAO,YAAY;AAEnB,OAAO,YAAY;AAEnB,OAAO,YAAY;AAEZ,MAAM,SAAS,CAAC,QAAQ,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAE9D,cAAc,OAAO,QAAQ;AAAA,EACjC,QAAQ;AAAA,EACR,GAAG;AAAA,EACH,SAAS;AAAA,EACT,YAAY;AAAA,EAEZ,UAAU;AAAA;AAAA,IAER,OAAO;AAAA,MACL,WAAW,CAAC,WAAW;AAAA,QACrB,YAAY;AAAA,UACV,GAAG,QAAQ,IAAI,MAAO;AAAA,UACtB,SAAS;AAAA,QACX;AAAA,QACA,WAAW;AAAA,UACT,QAAQ;AAAA,UACR,GAAG,QAAQ,IAAI,MAAO;AAAA,UACtB,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC,GAEK,OAAO,CAAC,KAAa,KAAa,MAAc;AACpD,QAAM,YAAY,MAAM;AACxB,WAAW,IAAI,OAAO,YAAa,aAAa,YAAa;AAC/D;AAEO,SAAS,yBAAyB;AACvC,QAAM,CAAC,CAAC,MAAM,KAAK,GAAG,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAE1C,aAAa,KAAK,GAAG,OAAO,QAAQ,IAAI,GACxC,WAAW,CAACA,WAAkB;AAClC,YAAQ,CAAC,OAAOA,QAAOA,MAAK,CAAC;AAAA,EAC/B;AAEA,SACE,CAAC;AAAA,IACC,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA;AAAA,IAEX,CAAC,gBAAgB,SAAS,IAAO,QAAQ,EAAE,MAAM,GAC/C,CAAC,YAAY,KAAK,MAAM,UAAU,UAAU,OAAO,OACjD,CAAC,MAAM,QAAQ,EAAE,KAAK,OAAO,UAAU,GAAG,OAAO,KAAK,QAAQ,IAAI,GAAG,EACvE,EAFC,YAGH,EAJC;AAAA,IAMD,CAAC;AAAA,MACC,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,EAAE;AAAA,MAC1B,IAAI;AAAA,IACN;AAAA,IACA,CAAC;AAAA,MACC,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,CAAC;AAAA,MACzB,IAAI;AAAA,IACN;AAAA,EACF,EApCC;AAsCL;",
5
+ "names": ["going"]
6
6
  }
@@ -0,0 +1,35 @@
1
+ import {
2
+ useCheckbox
3
+ } from "@tamagui/checkbox-headless";
4
+ import { Check, Minus } from "@tamagui/lucide-icons";
5
+ import { forwardRef, useState } from "react";
6
+ import { Pressable } from "react-native-web";
7
+ import { Label, XStack, YStack } from "tamagui";
8
+ function CheckboxHeadlessDemo() {
9
+ return <YStack width={200} alignItems="center" space="$3"><XStack space="$3" alignItems="center">
10
+ <HeadlessCheckbox defaultChecked="indeterminate" id="headless" />
11
+ <Label htmlFor="headless">Headless</Label>
12
+ </XStack></YStack>;
13
+ }
14
+ const HeadlessCheckbox = forwardRef((props, ref) => {
15
+ const [checked, setChecked] = useState(props.defaultChecked || !1), { checkboxProps, bubbleInput } = useCheckbox(props, [checked, setChecked], ref);
16
+ return <Pressable
17
+ style={{
18
+ width: 20,
19
+ height: 20,
20
+ borderRadius: 4,
21
+ justifyContent: "center",
22
+ alignItems: "center",
23
+ backgroundColor: checked === !0 ? "lightblue" : "silver"
24
+ }}
25
+ {...checkboxProps}
26
+ >
27
+ {checked === "indeterminate" && <Minus width={18} height={18} />}
28
+ {checked === !0 && <Check width={18} height={18} />}
29
+ {bubbleInput}
30
+ </Pressable>;
31
+ });
32
+ export {
33
+ CheckboxHeadlessDemo
34
+ };
35
+ //# sourceMappingURL=CheckboxHeadlessDemo.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/CheckboxHeadlessDemo.tsx"],
4
+ "mappings": "AAAA;AAAA,EAEE;AAAA,OACK;AACP,SAAS,OAAO,aAAa;AAC7B,SAAS,YAAY,gBAAgB;AACrC,SAAS,iBAAuB;AAChC,SAAS,OAAO,QAAQ,cAAc;AAE/B,SAAS,uBAAuB;AACrC,SACE,CAAC,OAAO,OAAO,KAAK,WAAW,SAAS,MAAM,KAC5C,CAAC,OAAO,MAAM,KAAK,WAAW;AAAA,IAC5B,CAAC,iBAAiB,eAAe,gBAAgB,GAAG,WAAW;AAAA,IAE/D,CAAC,MAAM,QAAQ,WAAW,QAAQ,EAAjC;AAAA,EACH,EAJC,OAKH,EANC;AAQL;AAEA,MAAM,mBAAmB,WAAwC,CAAC,OAAO,QAAQ;AAC/E,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,MAAM,kBAAkB,EAAK,GAC9D,EAAE,eAAe,YAAY,IAAI,YAAY,OAAO,CAAC,SAAS,UAAU,GAAG,GAAG;AAEpF,SACE,CAAC;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,iBAAiB,YAAY,KAAO,cAAc;AAAA,IACpD;AAAA,QACI;AAAA;AAAA,KAEH,YAAY,mBAAmB,CAAC,MAAM,OAAO,IAAI,QAAQ,IAAI;AAAA,KAC7D,YAAY,MAAQ,CAAC,MAAM,OAAO,IAAI,QAAQ,IAAI;AAAA,KAClD;AAAA,EACH,EAdC;AAgBL,CAAC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,35 @@
1
+ import {
2
+ useCheckbox
3
+ } from "@tamagui/checkbox-headless";
4
+ import { Check, Minus } from "@tamagui/lucide-icons";
5
+ import { forwardRef, useState } from "react";
6
+ import { Pressable } from "react-native";
7
+ import { Label, XStack, YStack } from "tamagui";
8
+ function CheckboxHeadlessDemo() {
9
+ return <YStack width={200} alignItems="center" space="$3"><XStack space="$3" alignItems="center">
10
+ <HeadlessCheckbox defaultChecked="indeterminate" id="headless" />
11
+ <Label htmlFor="headless">Headless</Label>
12
+ </XStack></YStack>;
13
+ }
14
+ const HeadlessCheckbox = forwardRef((props, ref) => {
15
+ const [checked, setChecked] = useState(props.defaultChecked || !1), { checkboxProps, bubbleInput } = useCheckbox(props, [checked, setChecked], ref);
16
+ return <Pressable
17
+ style={{
18
+ width: 20,
19
+ height: 20,
20
+ borderRadius: 4,
21
+ justifyContent: "center",
22
+ alignItems: "center",
23
+ backgroundColor: checked === !0 ? "lightblue" : "silver"
24
+ }}
25
+ {...checkboxProps}
26
+ >
27
+ {checked === "indeterminate" && <Minus width={18} height={18} />}
28
+ {checked === !0 && <Check width={18} height={18} />}
29
+ {bubbleInput}
30
+ </Pressable>;
31
+ });
32
+ export {
33
+ CheckboxHeadlessDemo
34
+ };
35
+ //# sourceMappingURL=CheckboxHeadlessDemo.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/CheckboxHeadlessDemo.tsx"],
4
+ "mappings": "AAAA;AAAA,EAEE;AAAA,OACK;AACP,SAAS,OAAO,aAAa;AAC7B,SAAS,YAAY,gBAAgB;AACrC,SAAS,iBAAuB;AAChC,SAAS,OAAO,QAAQ,cAAc;AAE/B,SAAS,uBAAuB;AACrC,SACE,CAAC,OAAO,OAAO,KAAK,WAAW,SAAS,MAAM,KAC5C,CAAC,OAAO,MAAM,KAAK,WAAW;AAAA,IAC5B,CAAC,iBAAiB,eAAe,gBAAgB,GAAG,WAAW;AAAA,IAE/D,CAAC,MAAM,QAAQ,WAAW,QAAQ,EAAjC;AAAA,EACH,EAJC,OAKH,EANC;AAQL;AAEA,MAAM,mBAAmB,WAAwC,CAAC,OAAO,QAAQ;AAC/E,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,MAAM,kBAAkB,EAAK,GAC9D,EAAE,eAAe,YAAY,IAAI,YAAY,OAAO,CAAC,SAAS,UAAU,GAAG,GAAG;AAEpF,SACE,CAAC;AAAA,IACC,OAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,iBAAiB,YAAY,KAAO,cAAc;AAAA,IACpD;AAAA,QACI;AAAA;AAAA,KAEH,YAAY,mBAAmB,CAAC,MAAM,OAAO,IAAI,QAAQ,IAAI;AAAA,KAC7D,YAAY,MAAQ,CAAC,MAAM,OAAO,IAAI,QAAQ,IAAI;AAAA,KAClD;AAAA,EACH,EAdC;AAgBL,CAAC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,39 @@
1
+ import { createCheckbox } from "@tamagui/checkbox";
2
+ import { Stack, styled } from "@tamagui/core";
3
+ import { Check } from "@tamagui/lucide-icons";
4
+ import { Label, XStack, YStack } from "tamagui";
5
+ const Frame = styled(Stack, {
6
+ borderWidth: 1,
7
+ borderColor: "$borderColor",
8
+ borderRadius: 5,
9
+ alignItems: "center",
10
+ justifyContent: "center",
11
+ variants: {
12
+ checked: {
13
+ indeterminate: {},
14
+ true: {
15
+ backgroundColor: "$color5"
16
+ },
17
+ false: {
18
+ backgroundColor: "$color3"
19
+ }
20
+ }
21
+ },
22
+ defaultVariants: {
23
+ checked: !1
24
+ }
25
+ }), Indicator = styled(Stack, {}), Checkbox = createCheckbox({
26
+ Frame,
27
+ Indicator
28
+ });
29
+ function CheckboxUnstyledDemo() {
30
+ return <YStack width={200} alignItems="center" gap="$3"><XStack gap="$3" alignItems="center">
31
+ <Checkbox defaultChecked id="unstyled"><Checkbox.Indicator><Check /></Checkbox.Indicator></Checkbox>
32
+ <Label htmlFor="unstyled">Unstyled</Label>
33
+ </XStack></YStack>;
34
+ }
35
+ export {
36
+ Checkbox,
37
+ CheckboxUnstyledDemo
38
+ };
39
+ //# sourceMappingURL=CheckboxUnstyledDemo.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/CheckboxUnstyledDemo.tsx"],
4
+ "mappings": "AAAA,SAAgC,sBAAsB;AACtD,SAAS,OAAO,cAAc;AAC9B,SAAS,aAAa;AACtB,SAAS,OAAO,QAAQ,cAAc;AAEtC,MAAM,QAAQ,OAAO,OAAO;AAAA,EAC1B,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,UAAU;AAAA,IACR,SAAS;AAAA,MACP,eAAe,CAAC;AAAA,MAChB,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,MACA,OAAO;AAAA,QACL,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC,GAEK,YAAY,OAAO,OAAO,CAAC,CAAC,GAErB,WAAW,eAAe;AAAA,EACrC;AAAA,EACA;AACF,CAAC;AAEM,SAAS,uBAAuB;AACrC,SACE,CAAC,OAAO,OAAO,KAAK,WAAW,SAAS,IAAI,KAC1C,CAAC,OAAO,IAAI,KAAK,WAAW;AAAA,IAC1B,CAAC,SAAS,eAAe,GAAG,WAC1B,CAAC,SAAS,UACR,CAAC,MAAM,EACT,EAFC,SAAS,UAGZ,EAJC;AAAA,IAKD,CAAC,MAAM,QAAQ,WAAW,QAAQ,EAAjC;AAAA,EACH,EAPC,OAQH,EATC;AAWL;",
5
+ "names": []
6
+ }
@@ -0,0 +1,39 @@
1
+ import { createCheckbox } from "@tamagui/checkbox";
2
+ import { Stack, styled } from "@tamagui/core";
3
+ import { Check } from "@tamagui/lucide-icons";
4
+ import { Label, XStack, YStack } from "tamagui";
5
+ const Frame = styled(Stack, {
6
+ borderWidth: 1,
7
+ borderColor: "$borderColor",
8
+ borderRadius: 5,
9
+ alignItems: "center",
10
+ justifyContent: "center",
11
+ variants: {
12
+ checked: {
13
+ indeterminate: {},
14
+ true: {
15
+ backgroundColor: "$color5"
16
+ },
17
+ false: {
18
+ backgroundColor: "$color3"
19
+ }
20
+ }
21
+ },
22
+ defaultVariants: {
23
+ checked: !1
24
+ }
25
+ }), Indicator = styled(Stack, {}), Checkbox = createCheckbox({
26
+ Frame,
27
+ Indicator
28
+ });
29
+ function CheckboxUnstyledDemo() {
30
+ return <YStack width={200} alignItems="center" gap="$3"><XStack gap="$3" alignItems="center">
31
+ <Checkbox defaultChecked id="unstyled"><Checkbox.Indicator><Check /></Checkbox.Indicator></Checkbox>
32
+ <Label htmlFor="unstyled">Unstyled</Label>
33
+ </XStack></YStack>;
34
+ }
35
+ export {
36
+ Checkbox,
37
+ CheckboxUnstyledDemo
38
+ };
39
+ //# sourceMappingURL=CheckboxUnstyledDemo.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/CheckboxUnstyledDemo.tsx"],
4
+ "mappings": "AAAA,SAAgC,sBAAsB;AACtD,SAAS,OAAO,cAAc;AAC9B,SAAS,aAAa;AACtB,SAAS,OAAO,QAAQ,cAAc;AAEtC,MAAM,QAAQ,OAAO,OAAO;AAAA,EAC1B,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,UAAU;AAAA,IACR,SAAS;AAAA,MACP,eAAe,CAAC;AAAA,MAChB,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,MACA,OAAO;AAAA,QACL,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC,GAEK,YAAY,OAAO,OAAO,CAAC,CAAC,GAErB,WAAW,eAAe;AAAA,EACrC;AAAA,EACA;AACF,CAAC;AAEM,SAAS,uBAAuB;AACrC,SACE,CAAC,OAAO,OAAO,KAAK,WAAW,SAAS,IAAI,KAC1C,CAAC,OAAO,IAAI,KAAK,WAAW;AAAA,IAC1B,CAAC,SAAS,eAAe,GAAG,WAC1B,CAAC,SAAS,UACR,CAAC,MAAM,EACT,EAFC,SAAS,UAGZ,EAJC;AAAA,IAKD,CAAC,MAAM,QAAQ,WAAW,QAAQ,EAAjC;AAAA,EACH,EAPC,OAQH,EATC;AAWL;",
5
+ "names": []
6
+ }
@@ -0,0 +1,59 @@
1
+ import { useSwitch } from "@tamagui/switch-headless";
2
+ import { forwardRef, useEffect, useRef, useState } from "react";
3
+ import { Animated, Pressable } from "react-native-web";
4
+ import { Label, XStack, YStack } from "tamagui";
5
+ function SwitchHeadlessDemo() {
6
+ return <YStack width={200} alignItems="center" space="$3"><XStack space="$3" alignItems="center">
7
+ <Label htmlFor="headless">Headless</Label>
8
+ <HeadlessSwitch defaultChecked id="headless" />
9
+ </XStack></YStack>;
10
+ }
11
+ const HeadlessSwitch = forwardRef((props, ref) => {
12
+ const [checked, setChecked] = useState(props.defaultChecked || !1), { switchProps, switchRef, bubbleInput } = useSwitch(
13
+ props,
14
+ [checked, setChecked],
15
+ ref
16
+ ), animation = useRef(new Animated.Value(checked ? 1 : 0)).current;
17
+ return useEffect(() => {
18
+ Animated.timing(animation, {
19
+ toValue: checked ? 1 : 0,
20
+ duration: 100,
21
+ useNativeDriver: !0
22
+ }).start();
23
+ }, [checked]), <>
24
+ <Pressable
25
+ style={{
26
+ width: 40,
27
+ height: 20,
28
+ borderRadius: 100,
29
+ backgroundColor: checked ? "lightblue" : "silver"
30
+ }}
31
+ ref={switchRef}
32
+ {...switchProps}
33
+ ><Animated.View
34
+ style={[
35
+ {
36
+ backgroundColor: "black",
37
+ borderRadius: 100,
38
+ width: 20,
39
+ height: 20
40
+ },
41
+ {
42
+ transform: [
43
+ {
44
+ translateX: animation.interpolate({
45
+ inputRange: [0, 1],
46
+ outputRange: [0, 20]
47
+ })
48
+ }
49
+ ]
50
+ }
51
+ ]}
52
+ /></Pressable>
53
+ {bubbleInput}
54
+ </>;
55
+ });
56
+ export {
57
+ SwitchHeadlessDemo
58
+ };
59
+ //# sourceMappingURL=SwitchHeadlessDemo.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SwitchHeadlessDemo.tsx"],
4
+ "mappings": "AAAA,SAA6C,iBAAiB;AAC9D,SAAS,YAAY,WAAW,QAAQ,gBAAgB;AACxD,SAAS,UAAU,iBAAuB;AAC1C,SAAS,OAAO,QAAQ,cAAc;AAE/B,SAAS,qBAAqB;AACnC,SACE,CAAC,OAAO,OAAO,KAAK,WAAW,SAAS,MAAM,KAC5C,CAAC,OAAO,MAAM,KAAK,WAAW;AAAA,IAC5B,CAAC,MAAM,QAAQ,WAAW,QAAQ,EAAjC;AAAA,IACD,CAAC,eAAe,eAAe,GAAG,WAAW;AAAA,EAC/C,EAHC,OAIH,EALC;AAOL;AAEA,MAAM,iBAAiB,WAAsC,CAAC,OAAO,QAAQ;AAC3E,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,MAAM,kBAAkB,EAAK,GAC9D,EAAE,aAAa,WAAW,YAAY,IAAI;AAAA,IAC9C;AAAA,IACA,CAAC,SAAS,UAAU;AAAA,IACpB;AAAA,EACF,GAEM,YAAY,OAAO,IAAI,SAAS,MAAM,UAAU,IAAI,CAAC,CAAC,EAAE;AAE9D,mBAAU,MAAM;AACd,aAAS,OAAO,WAAW;AAAA,MACzB,SAAS,UAAU,IAAI;AAAA,MACvB,UAAU;AAAA,MACV,iBAAiB;AAAA,IACnB,CAAC,EAAE,MAAM;AAAA,EACX,GAAG,CAAC,OAAO,CAAC,GAGV;AAAA,IACE,CAAC;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,iBAAiB,UAAU,cAAc;AAAA,MAC3C;AAAA,MACA,KAAK;AAAA,UACD;AAAA,KAEJ,CAAC,SAAS;AAAA,MACR,OAAO;AAAA,QACL;AAAA,UACE,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,OAAO;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,WAAW;AAAA,YACT;AAAA,cACE,YAAY,UAAU,YAAY;AAAA,gBAChC,YAAY,CAAC,GAAG,CAAC;AAAA,gBACjB,aAAa,CAAC,GAAG,EAAE;AAAA,cACrB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,EACF,EA9BC;AAAA,KA+BA;AAAA,EACH;AAEJ,CAAC;",
5
+ "names": []
6
+ }