@tamagui/demos 1.86.6 → 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.
- package/dist/cjs/AnimationsPresenceDemo.js +30 -13
- package/dist/cjs/AnimationsPresenceDemo.js.map +2 -2
- package/dist/cjs/AnimationsPresenceDemo.native.js +30 -13
- package/dist/cjs/AnimationsPresenceDemo.native.js.map +2 -2
- package/dist/cjs/CheckboxHeadlessDemo.js +53 -0
- package/dist/cjs/CheckboxHeadlessDemo.js.map +6 -0
- package/dist/cjs/CheckboxHeadlessDemo.native.js +54 -0
- package/dist/cjs/CheckboxHeadlessDemo.native.js.map +6 -0
- package/dist/cjs/CheckboxUnstyledDemo.js +57 -0
- package/dist/cjs/CheckboxUnstyledDemo.js.map +6 -0
- package/dist/cjs/CheckboxUnstyledDemo.native.js +58 -0
- package/dist/cjs/CheckboxUnstyledDemo.native.js.map +6 -0
- package/dist/cjs/SwitchHeadlessDemo.js +83 -0
- package/dist/cjs/SwitchHeadlessDemo.js.map +6 -0
- package/dist/cjs/SwitchHeadlessDemo.native.js +84 -0
- package/dist/cjs/SwitchHeadlessDemo.native.js.map +6 -0
- package/dist/cjs/SwitchUnstyledDemo.js +73 -0
- package/dist/cjs/SwitchUnstyledDemo.js.map +6 -0
- package/dist/cjs/SwitchUnstyledDemo.native.js +74 -0
- package/dist/cjs/SwitchUnstyledDemo.native.js.map +6 -0
- package/dist/esm/AnimationsPresenceDemo.js +30 -13
- package/dist/esm/AnimationsPresenceDemo.js.map +2 -2
- package/dist/esm/AnimationsPresenceDemo.native.js +30 -13
- package/dist/esm/AnimationsPresenceDemo.native.js.map +2 -2
- package/dist/esm/CheckboxHeadlessDemo.js +40 -0
- package/dist/esm/CheckboxHeadlessDemo.js.map +6 -0
- package/dist/esm/CheckboxHeadlessDemo.native.js +40 -0
- package/dist/esm/CheckboxHeadlessDemo.native.js.map +6 -0
- package/dist/esm/CheckboxUnstyledDemo.js +40 -0
- package/dist/esm/CheckboxUnstyledDemo.js.map +6 -0
- package/dist/esm/CheckboxUnstyledDemo.native.js +40 -0
- package/dist/esm/CheckboxUnstyledDemo.native.js.map +6 -0
- package/dist/esm/SwitchHeadlessDemo.js +67 -0
- package/dist/esm/SwitchHeadlessDemo.js.map +6 -0
- package/dist/esm/SwitchHeadlessDemo.native.js +67 -0
- package/dist/esm/SwitchHeadlessDemo.native.js.map +6 -0
- package/dist/esm/SwitchUnstyledDemo.js +55 -0
- package/dist/esm/SwitchUnstyledDemo.js.map +6 -0
- package/dist/esm/SwitchUnstyledDemo.native.js +55 -0
- package/dist/esm/SwitchUnstyledDemo.native.js.map +6 -0
- package/dist/jsx/AnimationsPresenceDemo.js +29 -12
- package/dist/jsx/AnimationsPresenceDemo.js.map +2 -2
- package/dist/jsx/AnimationsPresenceDemo.native.js +29 -12
- package/dist/jsx/AnimationsPresenceDemo.native.js.map +2 -2
- package/dist/jsx/CheckboxHeadlessDemo.js +35 -0
- package/dist/jsx/CheckboxHeadlessDemo.js.map +6 -0
- package/dist/jsx/CheckboxHeadlessDemo.native.js +35 -0
- package/dist/jsx/CheckboxHeadlessDemo.native.js.map +6 -0
- package/dist/jsx/CheckboxUnstyledDemo.js +39 -0
- package/dist/jsx/CheckboxUnstyledDemo.js.map +6 -0
- package/dist/jsx/CheckboxUnstyledDemo.native.js +39 -0
- package/dist/jsx/CheckboxUnstyledDemo.native.js.map +6 -0
- package/dist/jsx/SwitchHeadlessDemo.js +59 -0
- package/dist/jsx/SwitchHeadlessDemo.js.map +6 -0
- package/dist/jsx/SwitchHeadlessDemo.native.js +59 -0
- package/dist/jsx/SwitchHeadlessDemo.native.js.map +6 -0
- package/dist/jsx/SwitchUnstyledDemo.js +54 -0
- package/dist/jsx/SwitchUnstyledDemo.js.map +6 -0
- package/dist/jsx/SwitchUnstyledDemo.native.js +54 -0
- package/dist/jsx/SwitchUnstyledDemo.native.js.map +6 -0
- package/package.json +18 -18
- package/src/AnimationsPresenceDemo.tsx +33 -18
- package/types/AnimationsPresenceDemo.d.ts.map +1 -1
- package/types/CheckboxHeadlessDemo.d.ts.map +1 -0
- package/types/CheckboxUnstyledDemo.d.ts.map +1 -0
- package/types/SwitchHeadlessDemo.d.ts.map +1 -0
- 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),
|
|
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
|
-
|
|
11
|
-
|
|
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,
|
|
16
|
-
setPage([page +
|
|
17
|
-
}
|
|
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
|
|
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,
|
|
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),
|
|
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
|
-
|
|
11
|
-
|
|
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,
|
|
16
|
-
setPage([page +
|
|
17
|
-
}
|
|
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
|
|
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,
|
|
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
|
+
}
|