@tamagui/demos 1.96.0 → 1.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/NewInputsDemo.js +46 -0
- package/dist/cjs/NewInputsDemo.js.map +6 -0
- package/dist/cjs/NewInputsDemo.native.js +67 -0
- package/dist/cjs/NewInputsDemo.native.js.map +6 -0
- package/dist/cjs/RadioGroupHeadlessDemo.js +109 -0
- package/dist/cjs/RadioGroupHeadlessDemo.js.map +6 -0
- package/dist/cjs/RadioGroupHeadlessDemo.native.js +168 -0
- package/dist/cjs/RadioGroupHeadlessDemo.native.js.map +6 -0
- package/dist/cjs/RadioGroupUnstyledDemo.js +107 -0
- package/dist/cjs/RadioGroupUnstyledDemo.js.map +6 -0
- package/dist/cjs/RadioGroupUnstyledDemo.native.js +139 -0
- package/dist/cjs/RadioGroupUnstyledDemo.native.js.map +6 -0
- package/dist/cjs/SelectDemo.js +0 -22
- package/dist/cjs/SelectDemo.js.map +1 -1
- package/dist/cjs/SelectDemo.native.js +0 -66
- package/dist/cjs/SelectDemo.native.js.map +1 -1
- package/dist/cjs/TokensDemo.js +4 -2
- package/dist/cjs/TokensDemo.js.map +1 -1
- package/dist/cjs/TokensDemo.native.js +5 -5
- package/dist/cjs/TokensDemo.native.js.map +2 -2
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +6 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/NewInputsDemo.js +32 -0
- package/dist/esm/NewInputsDemo.js.map +6 -0
- package/dist/esm/NewInputsDemo.mjs +37 -0
- package/dist/esm/NewInputsDemo.native.js +48 -0
- package/dist/esm/NewInputsDemo.native.js.map +6 -0
- package/dist/esm/RadioGroupHeadlessDemo.js +102 -0
- package/dist/esm/RadioGroupHeadlessDemo.js.map +6 -0
- package/dist/esm/RadioGroupHeadlessDemo.mjs +133 -0
- package/dist/esm/RadioGroupHeadlessDemo.native.js +152 -0
- package/dist/esm/RadioGroupHeadlessDemo.native.js.map +6 -0
- package/dist/esm/RadioGroupUnstyledDemo.js +93 -0
- package/dist/esm/RadioGroupUnstyledDemo.js.map +6 -0
- package/dist/esm/RadioGroupUnstyledDemo.mjs +118 -0
- package/dist/esm/RadioGroupUnstyledDemo.native.js +121 -0
- package/dist/esm/RadioGroupUnstyledDemo.native.js.map +6 -0
- package/dist/esm/SelectDemo.js +0 -22
- package/dist/esm/SelectDemo.js.map +1 -1
- package/dist/esm/SelectDemo.mjs +0 -44
- package/dist/esm/SelectDemo.native.js +0 -66
- package/dist/esm/SelectDemo.native.js.map +1 -1
- package/dist/esm/TokensDemo.js +4 -2
- package/dist/esm/TokensDemo.js.map +1 -1
- package/dist/esm/TokensDemo.mjs +4 -4
- package/dist/esm/TokensDemo.native.js +5 -5
- package/dist/esm/TokensDemo.native.js.map +2 -2
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/index.native.js +3 -0
- package/dist/esm/index.native.js.map +1 -1
- package/dist/jsx/NewInputsDemo.js +32 -0
- package/dist/jsx/NewInputsDemo.js.map +6 -0
- package/dist/jsx/NewInputsDemo.mjs +37 -0
- package/dist/jsx/NewInputsDemo.native.js +48 -0
- package/dist/jsx/NewInputsDemo.native.js.map +6 -0
- package/dist/jsx/RadioGroupHeadlessDemo.js +102 -0
- package/dist/jsx/RadioGroupHeadlessDemo.js.map +6 -0
- package/dist/jsx/RadioGroupHeadlessDemo.mjs +133 -0
- package/dist/jsx/RadioGroupHeadlessDemo.native.js +152 -0
- package/dist/jsx/RadioGroupHeadlessDemo.native.js.map +6 -0
- package/dist/jsx/RadioGroupUnstyledDemo.js +93 -0
- package/dist/jsx/RadioGroupUnstyledDemo.js.map +6 -0
- package/dist/jsx/RadioGroupUnstyledDemo.mjs +118 -0
- package/dist/jsx/RadioGroupUnstyledDemo.native.js +121 -0
- package/dist/jsx/RadioGroupUnstyledDemo.native.js.map +6 -0
- package/dist/jsx/SelectDemo.js +0 -22
- package/dist/jsx/SelectDemo.js.map +1 -1
- package/dist/jsx/SelectDemo.mjs +0 -44
- package/dist/jsx/SelectDemo.native.js +0 -66
- package/dist/jsx/SelectDemo.native.js.map +1 -1
- package/dist/jsx/TokensDemo.js +4 -2
- package/dist/jsx/TokensDemo.js.map +1 -1
- package/dist/jsx/TokensDemo.mjs +4 -4
- package/dist/jsx/TokensDemo.native.js +5 -5
- package/dist/jsx/TokensDemo.native.js.map +2 -2
- package/dist/jsx/index.js +3 -0
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +3 -0
- package/dist/jsx/index.native.js +3 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/package.json +18 -19
- package/src/NewInputsDemo.tsx +30 -0
- package/src/RadioGroupHeadlessDemo.tsx +133 -0
- package/src/RadioGroupUnstyledDemo.tsx +126 -0
- package/src/SelectDemo.tsx +0 -22
- package/src/TokensDemo.tsx +7 -5
- package/src/index.tsx +3 -0
- package/types/CheckboxUnstyledDemo.d.ts +4 -4
- package/types/NewInputsDemo.d.ts +2 -0
- package/types/NewInputsDemo.d.ts.map +1 -0
- package/types/RadioGroupHeadlessDemo.d.ts +2 -0
- package/types/RadioGroupHeadlessDemo.d.ts.map +1 -0
- package/types/RadioGroupUnstyledDemo.d.ts +2 -0
- package/types/RadioGroupUnstyledDemo.d.ts.map +1 -0
- package/types/SwitchUnstyledDemo.d.ts +4 -4
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useRadioGroup,
|
|
3
|
+
useRadioGroupItem,
|
|
4
|
+
useRadioGroupItemIndicator
|
|
5
|
+
} from "@tamagui/radio-headless";
|
|
6
|
+
import { RovingFocusGroup } from "@tamagui/roving-focus";
|
|
7
|
+
import { createContext } from "react";
|
|
8
|
+
import { StyleSheet, View, Pressable, Text } from "react-native-web";
|
|
9
|
+
import { isWeb, useTheme } from "tamagui";
|
|
10
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
const RadioGroupContext = createContext({}), RadioGroupItemContext = createContext({
|
|
12
|
+
checked: !1,
|
|
13
|
+
disabled: !1
|
|
14
|
+
});
|
|
15
|
+
function RadioGroupHeadlessDemo() {
|
|
16
|
+
const { providerValue, frameAttrs, rovingFocusGroupAttrs } = useRadioGroup({
|
|
17
|
+
orientation: "vertical",
|
|
18
|
+
name: "form",
|
|
19
|
+
defaultValue: "3"
|
|
20
|
+
});
|
|
21
|
+
return /* @__PURE__ */ jsx(RadioGroupContext.Provider, { value: providerValue, children: /* @__PURE__ */ jsx(RovingFocusGroup, { ...rovingFocusGroupAttrs, children: /* @__PURE__ */ jsxs(View, { style: styles.radioGroup, ...frameAttrs, children: [
|
|
22
|
+
/* @__PURE__ */ jsx(RadioGroupItem, { value: "2", id: "2", label: "First Value" }),
|
|
23
|
+
/* @__PURE__ */ jsx(RadioGroupItem, { value: "3", id: "3", label: "Second Value" }),
|
|
24
|
+
/* @__PURE__ */ jsx(RadioGroupItem, { value: "4", id: "4", label: "Third Value" })
|
|
25
|
+
] }) }) });
|
|
26
|
+
}
|
|
27
|
+
function RadioGroupItem(props) {
|
|
28
|
+
const theme = useTheme(), { value, id, label } = props, {
|
|
29
|
+
providerValue,
|
|
30
|
+
native,
|
|
31
|
+
bubbleInput,
|
|
32
|
+
rovingFocusGroupAttrs,
|
|
33
|
+
frameAttrs,
|
|
34
|
+
isFormControl,
|
|
35
|
+
checked
|
|
36
|
+
} = useRadioGroupItem({
|
|
37
|
+
radioGroupContext: RadioGroupContext,
|
|
38
|
+
value,
|
|
39
|
+
id
|
|
40
|
+
});
|
|
41
|
+
return /* @__PURE__ */ jsx(RadioGroupItemContext.Provider, { value: providerValue, children: isWeb && native ? bubbleInput : /* @__PURE__ */ jsxs(View, { style: styles.radioGroupItemContainer, children: [
|
|
42
|
+
/* @__PURE__ */ jsx(RovingFocusGroup.Item, { ...rovingFocusGroupAttrs, children: /* @__PURE__ */ jsx(
|
|
43
|
+
Pressable,
|
|
44
|
+
{
|
|
45
|
+
style: {
|
|
46
|
+
...styles.radioGroupItem,
|
|
47
|
+
borderColor: theme.borderColor.get(),
|
|
48
|
+
...checked ? { borderWidth: 4 } : { backgroundColor: theme.background.get() }
|
|
49
|
+
},
|
|
50
|
+
...frameAttrs,
|
|
51
|
+
onFocus: frameAttrs.onFocus,
|
|
52
|
+
children: /* @__PURE__ */ jsx(RadioGroupItemIndicator, {})
|
|
53
|
+
}
|
|
54
|
+
) }),
|
|
55
|
+
/* @__PURE__ */ jsx(Text, { style: { color: theme.color.get() }, children: label }),
|
|
56
|
+
isFormControl && bubbleInput
|
|
57
|
+
] }) });
|
|
58
|
+
}
|
|
59
|
+
function RadioGroupItemIndicator() {
|
|
60
|
+
const theme = useTheme(), params = useRadioGroupItemIndicator({
|
|
61
|
+
radioGroupItemContext: RadioGroupItemContext,
|
|
62
|
+
disabled: !1
|
|
63
|
+
});
|
|
64
|
+
return params.checked ? /* @__PURE__ */ jsx(
|
|
65
|
+
View,
|
|
66
|
+
{
|
|
67
|
+
style: {
|
|
68
|
+
...styles.radioGroupItemIndicator,
|
|
69
|
+
backgroundColor: theme.color.get()
|
|
70
|
+
},
|
|
71
|
+
...params
|
|
72
|
+
}
|
|
73
|
+
) : null;
|
|
74
|
+
}
|
|
75
|
+
const styles = StyleSheet.create({
|
|
76
|
+
radioGroup: {
|
|
77
|
+
flexDirection: "column",
|
|
78
|
+
gap: 20,
|
|
79
|
+
alignItems: "flex-start"
|
|
80
|
+
},
|
|
81
|
+
radioGroupItem: {
|
|
82
|
+
borderWidth: 2,
|
|
83
|
+
width: 30,
|
|
84
|
+
height: 30,
|
|
85
|
+
justifyContent: "center",
|
|
86
|
+
alignItems: "center"
|
|
87
|
+
},
|
|
88
|
+
radioGroupItemIndicator: {
|
|
89
|
+
width: "35%",
|
|
90
|
+
height: "35%"
|
|
91
|
+
},
|
|
92
|
+
radioGroupItemContainer: {
|
|
93
|
+
justifyContent: "center",
|
|
94
|
+
alignItems: "center",
|
|
95
|
+
flexDirection: "row",
|
|
96
|
+
gap: 12
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
export {
|
|
100
|
+
RadioGroupHeadlessDemo
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=RadioGroupHeadlessDemo.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/RadioGroupHeadlessDemo.tsx"],
|
|
4
|
+
"mappings": "AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,YAAY,MAAM,WAAW,YAAY;AAClD,SAAS,OAAO,gBAAgB;AAiBxB,SACE,KADF;AAfR,MAAM,oBAAoB,cAAsC,CAAC,CAAC,GAC5D,wBAAwB,cAA0C;AAAA,EACtE,SAAS;AAAA,EACT,UAAU;AACZ,CAAC;AAEM,SAAS,yBAAyB;AACvC,QAAM,EAAE,eAAe,YAAY,sBAAsB,IAAI,cAAc;AAAA,IACzE,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc;AAAA,EAChB,CAAC;AACD,SACE,oBAAC,kBAAkB,UAAlB,EAA2B,OAAO,eACjC,8BAAC,oBAAkB,GAAG,uBACpB,+BAAC,QAAK,OAAO,OAAO,YAAa,GAAG,YAClC;AAAA,wBAAC,kBAAe,OAAM,KAAI,IAAG,KAAI,OAAM,eAAc;AAAA,IACrD,oBAAC,kBAAe,OAAM,KAAI,IAAG,KAAI,OAAM,gBAAe;AAAA,IACtD,oBAAC,kBAAe,OAAM,KAAI,IAAG,KAAI,OAAM,eAAc;AAAA,KACvD,GACF,GACF;AAEJ;AAEA,SAAS,eAAe,OAIrB;AACD,QAAM,QAAQ,SAAS,GACjB,EAAE,OAAO,IAAI,MAAM,IAAI,OACvB;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,kBAAkB;AAAA,IACpB,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,eACpC,mBAAS,SACR,cAEA,qBAAC,QAAK,OAAO,OAAO,yBAClB;AAAA,wBAAC,iBAAiB,MAAjB,EAAuB,GAAG,uBACzB;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,GAAG,OAAO;AAAA,UACL,aAAa,MAAM,YAAY,IAAI;AAAA,UACxC,GAAI,UACA,EAAE,aAAa,EAAE,IACjB,EAAE,iBAAiB,MAAM,WAAW,IAAI,EAAE;AAAA,QAChD;AAAA,QACC,GAAG;AAAA,QACJ,SAAS,WAAW;AAAA,QAEpB,8BAAC,2BAAwB;AAAA;AAAA,IAC3B,GACF;AAAA,IACA,oBAAC,QAAK,OAAO,EAAE,OAAO,MAAM,MAAM,IAAI,EAAE,GAAI,iBAAM;AAAA,IACjD,iBAAiB;AAAA,KACpB,GAEJ;AAEJ;AAEA,SAAS,0BAA0B;AACjC,QAAM,QAAQ,SAAS,GACjB,SAAS,2BAA2B;AAAA,IACxC,uBAAuB;AAAA,IACvB,UAAU;AAAA,EACZ,CAAC;AACD,SAAI,OAAO,UAEP;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,GAAG,OAAO;AAAA,QACV,iBAAiB,MAAM,MAAM,IAAI;AAAA,MACnC;AAAA,MACC,GAAG;AAAA;AAAA,EACN,IAGG;AACT;AAEA,MAAM,SAAS,WAAW,OAAO;AAAA,EAC/B,YAAY;AAAA,IACV,eAAe;AAAA,IACf,KAAK;AAAA,IACL,YAAY;AAAA,EACd;AAAA,EACA,gBAAgB;AAAA,IACd,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,YAAY;AAAA,EACd;AAAA,EACA,yBAAyB;AAAA,IACvB,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA,yBAAyB;AAAA,IACvB,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,KAAK;AAAA,EACP;AACF,CAAC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { useRadioGroup, useRadioGroupItem, useRadioGroupItemIndicator } from "@tamagui/radio-headless";
|
|
2
|
+
import { RovingFocusGroup } from "@tamagui/roving-focus";
|
|
3
|
+
import { createContext } from "react";
|
|
4
|
+
import { StyleSheet, View, Pressable, Text } from "react-native-web";
|
|
5
|
+
import { isWeb, useTheme } from "tamagui";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
const RadioGroupContext = createContext({}),
|
|
8
|
+
RadioGroupItemContext = createContext({
|
|
9
|
+
checked: !1,
|
|
10
|
+
disabled: !1
|
|
11
|
+
});
|
|
12
|
+
function RadioGroupHeadlessDemo() {
|
|
13
|
+
const {
|
|
14
|
+
providerValue,
|
|
15
|
+
frameAttrs,
|
|
16
|
+
rovingFocusGroupAttrs
|
|
17
|
+
} = useRadioGroup({
|
|
18
|
+
orientation: "vertical",
|
|
19
|
+
name: "form",
|
|
20
|
+
defaultValue: "3"
|
|
21
|
+
});
|
|
22
|
+
return /* @__PURE__ */jsx(RadioGroupContext.Provider, {
|
|
23
|
+
value: providerValue,
|
|
24
|
+
children: /* @__PURE__ */jsx(RovingFocusGroup, {
|
|
25
|
+
...rovingFocusGroupAttrs,
|
|
26
|
+
children: /* @__PURE__ */jsxs(View, {
|
|
27
|
+
style: styles.radioGroup,
|
|
28
|
+
...frameAttrs,
|
|
29
|
+
children: [/* @__PURE__ */jsx(RadioGroupItem, {
|
|
30
|
+
value: "2",
|
|
31
|
+
id: "2",
|
|
32
|
+
label: "First Value"
|
|
33
|
+
}), /* @__PURE__ */jsx(RadioGroupItem, {
|
|
34
|
+
value: "3",
|
|
35
|
+
id: "3",
|
|
36
|
+
label: "Second Value"
|
|
37
|
+
}), /* @__PURE__ */jsx(RadioGroupItem, {
|
|
38
|
+
value: "4",
|
|
39
|
+
id: "4",
|
|
40
|
+
label: "Third Value"
|
|
41
|
+
})]
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function RadioGroupItem(props) {
|
|
47
|
+
const theme = useTheme(),
|
|
48
|
+
{
|
|
49
|
+
value,
|
|
50
|
+
id,
|
|
51
|
+
label
|
|
52
|
+
} = props,
|
|
53
|
+
{
|
|
54
|
+
providerValue,
|
|
55
|
+
native,
|
|
56
|
+
bubbleInput,
|
|
57
|
+
rovingFocusGroupAttrs,
|
|
58
|
+
frameAttrs,
|
|
59
|
+
isFormControl,
|
|
60
|
+
checked
|
|
61
|
+
} = useRadioGroupItem({
|
|
62
|
+
radioGroupContext: RadioGroupContext,
|
|
63
|
+
value,
|
|
64
|
+
id
|
|
65
|
+
});
|
|
66
|
+
return /* @__PURE__ */jsx(RadioGroupItemContext.Provider, {
|
|
67
|
+
value: providerValue,
|
|
68
|
+
children: isWeb && native ? bubbleInput : /* @__PURE__ */jsxs(View, {
|
|
69
|
+
style: styles.radioGroupItemContainer,
|
|
70
|
+
children: [/* @__PURE__ */jsx(RovingFocusGroup.Item, {
|
|
71
|
+
...rovingFocusGroupAttrs,
|
|
72
|
+
children: /* @__PURE__ */jsx(Pressable, {
|
|
73
|
+
style: {
|
|
74
|
+
...styles.radioGroupItem,
|
|
75
|
+
borderColor: theme.borderColor.get(),
|
|
76
|
+
...(checked ? {
|
|
77
|
+
borderWidth: 4
|
|
78
|
+
} : {
|
|
79
|
+
backgroundColor: theme.background.get()
|
|
80
|
+
})
|
|
81
|
+
},
|
|
82
|
+
...frameAttrs,
|
|
83
|
+
onFocus: frameAttrs.onFocus,
|
|
84
|
+
children: /* @__PURE__ */jsx(RadioGroupItemIndicator, {})
|
|
85
|
+
})
|
|
86
|
+
}), /* @__PURE__ */jsx(Text, {
|
|
87
|
+
style: {
|
|
88
|
+
color: theme.color.get()
|
|
89
|
+
},
|
|
90
|
+
children: label
|
|
91
|
+
}), isFormControl && bubbleInput]
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function RadioGroupItemIndicator() {
|
|
96
|
+
const theme = useTheme(),
|
|
97
|
+
params = useRadioGroupItemIndicator({
|
|
98
|
+
radioGroupItemContext: RadioGroupItemContext,
|
|
99
|
+
disabled: !1
|
|
100
|
+
});
|
|
101
|
+
return params.checked ? /* @__PURE__ */jsx(View, {
|
|
102
|
+
style: {
|
|
103
|
+
...styles.radioGroupItemIndicator,
|
|
104
|
+
backgroundColor: theme.color.get()
|
|
105
|
+
},
|
|
106
|
+
...params
|
|
107
|
+
}) : null;
|
|
108
|
+
}
|
|
109
|
+
const styles = StyleSheet.create({
|
|
110
|
+
radioGroup: {
|
|
111
|
+
flexDirection: "column",
|
|
112
|
+
gap: 20,
|
|
113
|
+
alignItems: "flex-start"
|
|
114
|
+
},
|
|
115
|
+
radioGroupItem: {
|
|
116
|
+
borderWidth: 2,
|
|
117
|
+
width: 30,
|
|
118
|
+
height: 30,
|
|
119
|
+
justifyContent: "center",
|
|
120
|
+
alignItems: "center"
|
|
121
|
+
},
|
|
122
|
+
radioGroupItemIndicator: {
|
|
123
|
+
width: "35%",
|
|
124
|
+
height: "35%"
|
|
125
|
+
},
|
|
126
|
+
radioGroupItemContainer: {
|
|
127
|
+
justifyContent: "center",
|
|
128
|
+
alignItems: "center",
|
|
129
|
+
flexDirection: "row",
|
|
130
|
+
gap: 12
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
export { RadioGroupHeadlessDemo };
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRadioGroup, useRadioGroupItem, useRadioGroupItemIndicator } from "@tamagui/radio-headless";
|
|
3
|
+
import { RovingFocusGroup } from "@tamagui/roving-focus";
|
|
4
|
+
import { createContext } from "react";
|
|
5
|
+
import { StyleSheet, View, Pressable, Text } from "react-native";
|
|
6
|
+
import { isWeb, useTheme } from "tamagui";
|
|
7
|
+
function _define_property(obj, key, value) {
|
|
8
|
+
return key in obj ? Object.defineProperty(obj, key, {
|
|
9
|
+
value,
|
|
10
|
+
enumerable: !0,
|
|
11
|
+
configurable: !0,
|
|
12
|
+
writable: !0
|
|
13
|
+
}) : obj[key] = value, obj;
|
|
14
|
+
}
|
|
15
|
+
function _object_spread(target) {
|
|
16
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
17
|
+
var source = arguments[i] != null ? arguments[i] : {}, ownKeys2 = Object.keys(source);
|
|
18
|
+
typeof Object.getOwnPropertySymbols == "function" && (ownKeys2 = ownKeys2.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
19
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
20
|
+
}))), ownKeys2.forEach(function(key) {
|
|
21
|
+
_define_property(target, key, source[key]);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return target;
|
|
25
|
+
}
|
|
26
|
+
function ownKeys(object, enumerableOnly) {
|
|
27
|
+
var keys = Object.keys(object);
|
|
28
|
+
if (Object.getOwnPropertySymbols) {
|
|
29
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
30
|
+
enumerableOnly && (symbols = symbols.filter(function(sym) {
|
|
31
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
32
|
+
})), keys.push.apply(keys, symbols);
|
|
33
|
+
}
|
|
34
|
+
return keys;
|
|
35
|
+
}
|
|
36
|
+
function _object_spread_props(target, source) {
|
|
37
|
+
return source = source ?? {}, Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
|
|
38
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
39
|
+
}), target;
|
|
40
|
+
}
|
|
41
|
+
var RadioGroupContext = /* @__PURE__ */ createContext({}), RadioGroupItemContext = /* @__PURE__ */ createContext({
|
|
42
|
+
checked: !1,
|
|
43
|
+
disabled: !1
|
|
44
|
+
});
|
|
45
|
+
function RadioGroupHeadlessDemo() {
|
|
46
|
+
var _useRadioGroup = useRadioGroup({
|
|
47
|
+
orientation: "vertical",
|
|
48
|
+
name: "form",
|
|
49
|
+
defaultValue: "3"
|
|
50
|
+
}), providerValue = _useRadioGroup.providerValue, frameAttrs = _useRadioGroup.frameAttrs, rovingFocusGroupAttrs = _useRadioGroup.rovingFocusGroupAttrs;
|
|
51
|
+
return /* @__PURE__ */ _jsx(RadioGroupContext.Provider, {
|
|
52
|
+
value: providerValue,
|
|
53
|
+
children: /* @__PURE__ */ _jsx(RovingFocusGroup, _object_spread_props(_object_spread({}, rovingFocusGroupAttrs), {
|
|
54
|
+
children: /* @__PURE__ */ _jsxs(View, _object_spread_props(_object_spread({
|
|
55
|
+
style: styles.radioGroup
|
|
56
|
+
}, frameAttrs), {
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ _jsx(RadioGroupItem, {
|
|
59
|
+
value: "2",
|
|
60
|
+
id: "2",
|
|
61
|
+
label: "First Value"
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ _jsx(RadioGroupItem, {
|
|
64
|
+
value: "3",
|
|
65
|
+
id: "3",
|
|
66
|
+
label: "Second Value"
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ _jsx(RadioGroupItem, {
|
|
69
|
+
value: "4",
|
|
70
|
+
id: "4",
|
|
71
|
+
label: "Third Value"
|
|
72
|
+
})
|
|
73
|
+
]
|
|
74
|
+
}))
|
|
75
|
+
}))
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function RadioGroupItem(props) {
|
|
79
|
+
var theme = useTheme(), value = props.value, id = props.id, label = props.label, _useRadioGroupItem = useRadioGroupItem({
|
|
80
|
+
radioGroupContext: RadioGroupContext,
|
|
81
|
+
value,
|
|
82
|
+
id
|
|
83
|
+
}), providerValue = _useRadioGroupItem.providerValue, native = _useRadioGroupItem.native, bubbleInput = _useRadioGroupItem.bubbleInput, rovingFocusGroupAttrs = _useRadioGroupItem.rovingFocusGroupAttrs, frameAttrs = _useRadioGroupItem.frameAttrs, isFormControl = _useRadioGroupItem.isFormControl, checked = _useRadioGroupItem.checked;
|
|
84
|
+
return /* @__PURE__ */ _jsx(RadioGroupItemContext.Provider, {
|
|
85
|
+
value: providerValue,
|
|
86
|
+
children: isWeb && native ? bubbleInput : /* @__PURE__ */ _jsxs(View, {
|
|
87
|
+
style: styles.radioGroupItemContainer,
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ _jsx(RovingFocusGroup.Item, _object_spread_props(_object_spread({}, rovingFocusGroupAttrs), {
|
|
90
|
+
children: /* @__PURE__ */ _jsx(Pressable, _object_spread_props(_object_spread({
|
|
91
|
+
style: _object_spread({}, styles.radioGroupItem, {
|
|
92
|
+
borderColor: theme.borderColor.get()
|
|
93
|
+
}, checked ? {
|
|
94
|
+
borderWidth: 4
|
|
95
|
+
} : {
|
|
96
|
+
backgroundColor: theme.background.get()
|
|
97
|
+
})
|
|
98
|
+
}, frameAttrs), {
|
|
99
|
+
onFocus: frameAttrs.onFocus,
|
|
100
|
+
children: /* @__PURE__ */ _jsx(RadioGroupItemIndicator, {})
|
|
101
|
+
}))
|
|
102
|
+
})),
|
|
103
|
+
/* @__PURE__ */ _jsx(Text, {
|
|
104
|
+
style: {
|
|
105
|
+
color: theme.color.get()
|
|
106
|
+
},
|
|
107
|
+
children: label
|
|
108
|
+
}),
|
|
109
|
+
isFormControl && bubbleInput
|
|
110
|
+
]
|
|
111
|
+
})
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function RadioGroupItemIndicator() {
|
|
115
|
+
var theme = useTheme(), params = useRadioGroupItemIndicator({
|
|
116
|
+
radioGroupItemContext: RadioGroupItemContext,
|
|
117
|
+
disabled: !1
|
|
118
|
+
});
|
|
119
|
+
return params.checked ? /* @__PURE__ */ _jsx(View, _object_spread({
|
|
120
|
+
style: _object_spread_props(_object_spread({}, styles.radioGroupItemIndicator), {
|
|
121
|
+
backgroundColor: theme.color.get()
|
|
122
|
+
})
|
|
123
|
+
}, params)) : null;
|
|
124
|
+
}
|
|
125
|
+
var styles = StyleSheet.create({
|
|
126
|
+
radioGroup: {
|
|
127
|
+
flexDirection: "column",
|
|
128
|
+
gap: 20,
|
|
129
|
+
alignItems: "flex-start"
|
|
130
|
+
},
|
|
131
|
+
radioGroupItem: {
|
|
132
|
+
borderWidth: 2,
|
|
133
|
+
width: 30,
|
|
134
|
+
height: 30,
|
|
135
|
+
justifyContent: "center",
|
|
136
|
+
alignItems: "center"
|
|
137
|
+
},
|
|
138
|
+
radioGroupItemIndicator: {
|
|
139
|
+
width: "35%",
|
|
140
|
+
height: "35%"
|
|
141
|
+
},
|
|
142
|
+
radioGroupItemContainer: {
|
|
143
|
+
justifyContent: "center",
|
|
144
|
+
alignItems: "center",
|
|
145
|
+
flexDirection: "row",
|
|
146
|
+
gap: 12
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
export {
|
|
150
|
+
RadioGroupHeadlessDemo
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=RadioGroupHeadlessDemo.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/Users/n8/tamagui/packages/demos/src/RadioGroupHeadlessDemo.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["useRadioGroup", "useRadioGroupItem", "useRadioGroupItemIndicator", "RovingFocusGroup", "createContext", "StyleSheet", "View", "Pressable", "Text", "isWeb", "useTheme", "RadioGroupContext", "RadioGroupItemContext", "checked", "disabled", "RadioGroupHeadlessDemo", "orientation", "name", "defaultValue", "providerValue", "frameAttrs", "rovingFocusGroupAttrs", "Provider", "value", "style", "styles", "radioGroup", "RadioGroupItem", "id", "label", "props", "theme", "radioGroupContext", "native", "bubbleInput", "isFormControl", "radioGroupItemContainer", "Item", "radioGroupItem", "borderColor", "get", "borderWidth", "backgroundColor", "background", "onFocus", "RadioGroupItemIndicator", "color", "params", "radioGroupItemContext", "radioGroupItemIndicator", "create", "flexDirection", "gap", "alignItems", "width", "height", "justifyContent"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Label, ThemeableStack, XStack, YStack, styled } from "tamagui";
|
|
2
|
+
import { createRadioGroup } from "@tamagui/radio-group";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
const RADIO_GROUP_ITEM_NAME = "RadioGroupItem", RadioGroupItemFrame = styled(ThemeableStack, {
|
|
5
|
+
name: RADIO_GROUP_ITEM_NAME,
|
|
6
|
+
tag: "button",
|
|
7
|
+
borderRadius: 1e3,
|
|
8
|
+
backgroundColor: "$background",
|
|
9
|
+
alignItems: "center",
|
|
10
|
+
justifyContent: "center",
|
|
11
|
+
borderWidth: 1,
|
|
12
|
+
borderColor: "$borderColor",
|
|
13
|
+
padding: 0,
|
|
14
|
+
hoverStyle: {
|
|
15
|
+
borderColor: "$borderColorHover",
|
|
16
|
+
backgroundColor: "$backgroundHover"
|
|
17
|
+
},
|
|
18
|
+
focusStyle: {
|
|
19
|
+
borderColor: "$borderColorHover",
|
|
20
|
+
backgroundColor: "$backgroundHover"
|
|
21
|
+
},
|
|
22
|
+
focusVisibleStyle: {
|
|
23
|
+
outlineStyle: "solid",
|
|
24
|
+
outlineWidth: 2,
|
|
25
|
+
outlineColor: "$outlineColor"
|
|
26
|
+
},
|
|
27
|
+
pressStyle: {
|
|
28
|
+
borderColor: "$borderColorFocus",
|
|
29
|
+
backgroundColor: "$backgroundFocus"
|
|
30
|
+
},
|
|
31
|
+
variants: {
|
|
32
|
+
disabled: {
|
|
33
|
+
true: {
|
|
34
|
+
pointerEvents: "none",
|
|
35
|
+
userSelect: "none",
|
|
36
|
+
cursor: "not-allowed",
|
|
37
|
+
hoverStyle: {
|
|
38
|
+
borderColor: "$borderColor",
|
|
39
|
+
backgroundColor: "$background"
|
|
40
|
+
},
|
|
41
|
+
pressStyle: {
|
|
42
|
+
borderColor: "$borderColor",
|
|
43
|
+
backgroundColor: "$background"
|
|
44
|
+
},
|
|
45
|
+
focusVisibleStyle: {
|
|
46
|
+
outlineWidth: 0
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}), RADIO_GROUP_INDICATOR_NAME = "RadioGroupIndicator", RadioGroupIndicatorFrame = styled(ThemeableStack, {
|
|
52
|
+
name: RADIO_GROUP_INDICATOR_NAME,
|
|
53
|
+
width: "53%",
|
|
54
|
+
height: "53%",
|
|
55
|
+
borderRadius: 1e3,
|
|
56
|
+
backgroundColor: "$color",
|
|
57
|
+
pressTheme: !0
|
|
58
|
+
}), RADIO_GROUP_NAME = "RadioGroup", RadioGroupFrame = styled(ThemeableStack, {
|
|
59
|
+
name: RADIO_GROUP_NAME,
|
|
60
|
+
variants: {
|
|
61
|
+
orientation: {
|
|
62
|
+
horizontal: {
|
|
63
|
+
flexDirection: "row",
|
|
64
|
+
spaceDirection: "horizontal"
|
|
65
|
+
},
|
|
66
|
+
vertical: {
|
|
67
|
+
flexDirection: "column",
|
|
68
|
+
spaceDirection: "vertical"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}), RadioGroup = createRadioGroup({
|
|
73
|
+
Frame: RadioGroupFrame,
|
|
74
|
+
Indicator: RadioGroupIndicatorFrame,
|
|
75
|
+
Item: RadioGroupItemFrame
|
|
76
|
+
});
|
|
77
|
+
function RadioGroupUnstyledDemo() {
|
|
78
|
+
return /* @__PURE__ */ jsx(RadioGroup, { "aria-labelledby": "Select one item", defaultValue: "3", name: "form", children: /* @__PURE__ */ jsxs(YStack, { width: 200, alignItems: "center", space: "$2", children: [
|
|
79
|
+
/* @__PURE__ */ jsx(RadioGroupItemWithLabel, { value: "2", label: "Option One" }),
|
|
80
|
+
/* @__PURE__ */ jsx(RadioGroupItemWithLabel, { value: "3", label: "Option Two" })
|
|
81
|
+
] }) });
|
|
82
|
+
}
|
|
83
|
+
function RadioGroupItemWithLabel(props) {
|
|
84
|
+
const id = `radiogroup-${props.value}`;
|
|
85
|
+
return /* @__PURE__ */ jsxs(XStack, { width: 300, alignItems: "center", gap: "$4", children: [
|
|
86
|
+
/* @__PURE__ */ jsx(RadioGroup.Item, { value: props.value, id, children: /* @__PURE__ */ jsx(RadioGroup.Indicator, {}) }),
|
|
87
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: id, children: props.label })
|
|
88
|
+
] });
|
|
89
|
+
}
|
|
90
|
+
export {
|
|
91
|
+
RadioGroupUnstyledDemo
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=RadioGroupUnstyledDemo.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/RadioGroupUnstyledDemo.tsx"],
|
|
4
|
+
"mappings": "AACA,SAAS,OAAO,gBAAgB,QAAQ,QAAQ,cAAc;AAE9D,SAAS,wBAAwB;AAoG3B,SACE,KADF;AAlGN,MAAM,wBAAwB,kBAExB,sBAAsB,OAAO,gBAAgB;AAAA,EACjD,MAAM;AAAA,EACN,KAAK;AAAA,EAEL,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AAAA,EAET,YAAY;AAAA,IACV,aAAa;AAAA,IACb,iBAAiB;AAAA,EACnB;AAAA,EAEA,YAAY;AAAA,IACV,aAAa;AAAA,IACb,iBAAiB;AAAA,EACnB;AAAA,EAEA,mBAAmB;AAAA,IACjB,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAAA,EAEA,YAAY;AAAA,IACV,aAAa;AAAA,IACb,iBAAiB;AAAA,EACnB;AAAA,EAEA,UAAU;AAAA,IACR,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,QAAQ;AAAA,QAER,YAAY;AAAA,UACV,aAAa;AAAA,UACb,iBAAiB;AAAA,QACnB;AAAA,QAEA,YAAY;AAAA,UACV,aAAa;AAAA,UACb,iBAAiB;AAAA,QACnB;AAAA,QAEA,mBAAmB;AAAA,UACjB,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAU,GAEJ,6BAA6B,uBAE7B,2BAA2B,OAAO,gBAAgB;AAAA,EACtD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,YAAY;AACd,CAAC,GAEK,mBAAmB,cAEnB,kBAAkB,OAAO,gBAAgB;AAAA,EAC7C,MAAM;AAAA,EACN,UAAU;AAAA,IACR,aAAa;AAAA,MACX,YAAY;AAAA,QACV,eAAe;AAAA,QACf,gBAAgB;AAAA,MAClB;AAAA,MACA,UAAU;AAAA,QACR,eAAe;AAAA,QACf,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF,CAAC,GAEK,aAAa,iBAAiB;AAAA,EAClC,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AACR,CAAC;AAEM,SAAS,yBAAyB;AACvC,SACE,oBAAC,cAAW,mBAAgB,mBAAkB,cAAa,KAAI,MAAK,QAClE,+BAAC,UAAO,OAAO,KAAK,YAAW,UAAS,OAAM,MAC5C;AAAA,wBAAC,2BAAwB,OAAM,KAAI,OAAM,cAAa;AAAA,IACtD,oBAAC,2BAAwB,OAAM,KAAI,OAAM,cAAa;AAAA,KACxD,GACF;AAEJ;AAEA,SAAS,wBAAwB,OAG9B;AACD,QAAM,KAAK,cAAc,MAAM,KAAK;AACpC,SACE,qBAAC,UAAO,OAAO,KAAK,YAAW,UAAS,KAAI,MAC1C;AAAA,wBAAC,WAAW,MAAX,EAAgB,OAAO,MAAM,OAAO,IACnC,8BAAC,WAAW,WAAX,EAAqB,GACxB;AAAA,IAEA,oBAAC,SAAM,SAAS,IAAK,gBAAM,OAAM;AAAA,KACnC;AAEJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Label, ThemeableStack, XStack, YStack, styled } from "tamagui";
|
|
2
|
+
import { createRadioGroup } from "@tamagui/radio-group";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
const RADIO_GROUP_ITEM_NAME = "RadioGroupItem",
|
|
5
|
+
RadioGroupItemFrame = styled(ThemeableStack, {
|
|
6
|
+
name: RADIO_GROUP_ITEM_NAME,
|
|
7
|
+
tag: "button",
|
|
8
|
+
borderRadius: 1e3,
|
|
9
|
+
backgroundColor: "$background",
|
|
10
|
+
alignItems: "center",
|
|
11
|
+
justifyContent: "center",
|
|
12
|
+
borderWidth: 1,
|
|
13
|
+
borderColor: "$borderColor",
|
|
14
|
+
padding: 0,
|
|
15
|
+
hoverStyle: {
|
|
16
|
+
borderColor: "$borderColorHover",
|
|
17
|
+
backgroundColor: "$backgroundHover"
|
|
18
|
+
},
|
|
19
|
+
focusStyle: {
|
|
20
|
+
borderColor: "$borderColorHover",
|
|
21
|
+
backgroundColor: "$backgroundHover"
|
|
22
|
+
},
|
|
23
|
+
focusVisibleStyle: {
|
|
24
|
+
outlineStyle: "solid",
|
|
25
|
+
outlineWidth: 2,
|
|
26
|
+
outlineColor: "$outlineColor"
|
|
27
|
+
},
|
|
28
|
+
pressStyle: {
|
|
29
|
+
borderColor: "$borderColorFocus",
|
|
30
|
+
backgroundColor: "$backgroundFocus"
|
|
31
|
+
},
|
|
32
|
+
variants: {
|
|
33
|
+
disabled: {
|
|
34
|
+
true: {
|
|
35
|
+
pointerEvents: "none",
|
|
36
|
+
userSelect: "none",
|
|
37
|
+
cursor: "not-allowed",
|
|
38
|
+
hoverStyle: {
|
|
39
|
+
borderColor: "$borderColor",
|
|
40
|
+
backgroundColor: "$background"
|
|
41
|
+
},
|
|
42
|
+
pressStyle: {
|
|
43
|
+
borderColor: "$borderColor",
|
|
44
|
+
backgroundColor: "$background"
|
|
45
|
+
},
|
|
46
|
+
focusVisibleStyle: {
|
|
47
|
+
outlineWidth: 0
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}),
|
|
53
|
+
RADIO_GROUP_INDICATOR_NAME = "RadioGroupIndicator",
|
|
54
|
+
RadioGroupIndicatorFrame = styled(ThemeableStack, {
|
|
55
|
+
name: RADIO_GROUP_INDICATOR_NAME,
|
|
56
|
+
width: "53%",
|
|
57
|
+
height: "53%",
|
|
58
|
+
borderRadius: 1e3,
|
|
59
|
+
backgroundColor: "$color",
|
|
60
|
+
pressTheme: !0
|
|
61
|
+
}),
|
|
62
|
+
RADIO_GROUP_NAME = "RadioGroup",
|
|
63
|
+
RadioGroupFrame = styled(ThemeableStack, {
|
|
64
|
+
name: RADIO_GROUP_NAME,
|
|
65
|
+
variants: {
|
|
66
|
+
orientation: {
|
|
67
|
+
horizontal: {
|
|
68
|
+
flexDirection: "row",
|
|
69
|
+
spaceDirection: "horizontal"
|
|
70
|
+
},
|
|
71
|
+
vertical: {
|
|
72
|
+
flexDirection: "column",
|
|
73
|
+
spaceDirection: "vertical"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}),
|
|
78
|
+
RadioGroup = createRadioGroup({
|
|
79
|
+
Frame: RadioGroupFrame,
|
|
80
|
+
Indicator: RadioGroupIndicatorFrame,
|
|
81
|
+
Item: RadioGroupItemFrame
|
|
82
|
+
});
|
|
83
|
+
function RadioGroupUnstyledDemo() {
|
|
84
|
+
return /* @__PURE__ */jsx(RadioGroup, {
|
|
85
|
+
"aria-labelledby": "Select one item",
|
|
86
|
+
defaultValue: "3",
|
|
87
|
+
name: "form",
|
|
88
|
+
children: /* @__PURE__ */jsxs(YStack, {
|
|
89
|
+
width: 200,
|
|
90
|
+
alignItems: "center",
|
|
91
|
+
space: "$2",
|
|
92
|
+
children: [/* @__PURE__ */jsx(RadioGroupItemWithLabel, {
|
|
93
|
+
value: "2",
|
|
94
|
+
label: "Option One"
|
|
95
|
+
}), /* @__PURE__ */jsx(RadioGroupItemWithLabel, {
|
|
96
|
+
value: "3",
|
|
97
|
+
label: "Option Two"
|
|
98
|
+
})]
|
|
99
|
+
})
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function RadioGroupItemWithLabel(props) {
|
|
103
|
+
const id = `radiogroup-${props.value}`;
|
|
104
|
+
return /* @__PURE__ */jsxs(XStack, {
|
|
105
|
+
width: 300,
|
|
106
|
+
alignItems: "center",
|
|
107
|
+
gap: "$4",
|
|
108
|
+
children: [/* @__PURE__ */jsx(RadioGroup.Item, {
|
|
109
|
+
value: props.value,
|
|
110
|
+
id,
|
|
111
|
+
children: /* @__PURE__ */jsx(RadioGroup.Indicator, {})
|
|
112
|
+
}), /* @__PURE__ */jsx(Label, {
|
|
113
|
+
htmlFor: id,
|
|
114
|
+
children: props.label
|
|
115
|
+
})]
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
export { RadioGroupUnstyledDemo };
|