@tamagui/demos 2.0.0-1768326993354 → 2.0.0-1768530912818
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/AccordionDemo.cjs +1 -0
- package/dist/cjs/AccordionDemo.js +1 -1
- package/dist/cjs/AccordionDemo.js.map +1 -1
- package/dist/cjs/AccordionDemo.native.js +3 -1
- package/dist/cjs/AccordionDemo.native.js.map +1 -1
- package/dist/cjs/ContextMenuDemo.cjs +179 -98
- package/dist/cjs/ContextMenuDemo.js +140 -87
- package/dist/cjs/ContextMenuDemo.js.map +1 -1
- package/dist/cjs/ContextMenuDemo.native.js +180 -100
- package/dist/cjs/ContextMenuDemo.native.js.map +1 -1
- package/dist/cjs/DialogDemo.cjs +1 -0
- package/dist/cjs/DialogDemo.js +1 -1
- package/dist/cjs/DialogDemo.js.map +1 -1
- package/dist/cjs/DialogDemo.native.js +1 -0
- package/dist/cjs/LabelDemo.cjs +1 -1
- package/dist/cjs/LabelDemo.js +1 -1
- package/dist/cjs/LabelDemo.js.map +1 -1
- package/dist/cjs/LabelDemo.native.js +1 -1
- package/dist/cjs/MenuDemo.cjs +213 -111
- package/dist/cjs/MenuDemo.js +204 -131
- package/dist/cjs/MenuDemo.js.map +1 -1
- package/dist/cjs/MenuDemo.native.js +214 -113
- package/dist/cjs/MenuDemo.native.js.map +1 -1
- package/dist/cjs/PopoverDemo.cjs +1 -1
- package/dist/cjs/PopoverDemo.js +1 -1
- package/dist/cjs/PopoverDemo.js.map +1 -1
- package/dist/cjs/PopoverDemo.native.js +1 -1
- package/dist/cjs/PopoverDemo.native.js.map +1 -1
- package/dist/cjs/SwitchDemo.cjs +1 -1
- package/dist/cjs/SwitchDemo.js +1 -1
- package/dist/cjs/SwitchDemo.js.map +1 -1
- package/dist/cjs/SwitchDemo.native.js +1 -1
- package/dist/cjs/SwitchUnstyledDemo.cjs +1 -1
- package/dist/cjs/SwitchUnstyledDemo.js +1 -1
- package/dist/cjs/SwitchUnstyledDemo.js.map +1 -1
- package/dist/cjs/SwitchUnstyledDemo.native.js +1 -1
- package/dist/cjs/ToastDemo.cjs +29 -17
- package/dist/cjs/ToastDemo.js +14 -9
- package/dist/cjs/ToastDemo.js.map +1 -1
- package/dist/cjs/ToastDemo.native.js +29 -17
- package/dist/cjs/ToastDemo.native.js.map +1 -1
- package/dist/cjs/tamagui.config.cjs +4 -1
- package/dist/cjs/tamagui.config.js +4 -1
- package/dist/cjs/tamagui.config.js.map +1 -1
- package/dist/cjs/tamagui.config.native.js +4 -1
- package/dist/cjs/tamagui.config.native.js.map +1 -1
- package/dist/esm/AccordionDemo.js +1 -1
- package/dist/esm/AccordionDemo.js.map +1 -1
- package/dist/esm/AccordionDemo.mjs +1 -0
- package/dist/esm/AccordionDemo.mjs.map +1 -1
- package/dist/esm/AccordionDemo.native.js +3 -1
- package/dist/esm/AccordionDemo.native.js.map +1 -1
- package/dist/esm/ContextMenuDemo.js +141 -88
- package/dist/esm/ContextMenuDemo.js.map +1 -1
- package/dist/esm/ContextMenuDemo.mjs +180 -99
- package/dist/esm/ContextMenuDemo.mjs.map +1 -1
- package/dist/esm/ContextMenuDemo.native.js +180 -100
- package/dist/esm/ContextMenuDemo.native.js.map +1 -1
- package/dist/esm/DialogDemo.js +1 -1
- package/dist/esm/DialogDemo.js.map +1 -1
- package/dist/esm/DialogDemo.mjs +1 -0
- package/dist/esm/DialogDemo.mjs.map +1 -1
- package/dist/esm/DialogDemo.native.js +1 -0
- package/dist/esm/LabelDemo.js +1 -1
- package/dist/esm/LabelDemo.js.map +1 -1
- package/dist/esm/LabelDemo.mjs +1 -1
- package/dist/esm/LabelDemo.mjs.map +1 -1
- package/dist/esm/LabelDemo.native.js +1 -1
- package/dist/esm/MenuDemo.js +213 -133
- package/dist/esm/MenuDemo.js.map +1 -1
- package/dist/esm/MenuDemo.mjs +214 -112
- package/dist/esm/MenuDemo.mjs.map +1 -1
- package/dist/esm/MenuDemo.native.js +215 -114
- package/dist/esm/MenuDemo.native.js.map +1 -1
- package/dist/esm/PopoverDemo.js +1 -1
- package/dist/esm/PopoverDemo.js.map +1 -1
- package/dist/esm/PopoverDemo.mjs +1 -1
- package/dist/esm/PopoverDemo.mjs.map +1 -1
- package/dist/esm/PopoverDemo.native.js +1 -1
- package/dist/esm/PopoverDemo.native.js.map +1 -1
- package/dist/esm/SwitchDemo.js +1 -1
- package/dist/esm/SwitchDemo.js.map +1 -1
- package/dist/esm/SwitchDemo.mjs +1 -1
- package/dist/esm/SwitchDemo.mjs.map +1 -1
- package/dist/esm/SwitchDemo.native.js +1 -1
- package/dist/esm/SwitchUnstyledDemo.js +1 -1
- package/dist/esm/SwitchUnstyledDemo.js.map +1 -1
- package/dist/esm/SwitchUnstyledDemo.mjs +1 -1
- package/dist/esm/SwitchUnstyledDemo.mjs.map +1 -1
- package/dist/esm/SwitchUnstyledDemo.native.js +1 -1
- package/dist/esm/ToastDemo.js +14 -9
- package/dist/esm/ToastDemo.js.map +1 -1
- package/dist/esm/ToastDemo.mjs +29 -17
- package/dist/esm/ToastDemo.mjs.map +1 -1
- package/dist/esm/ToastDemo.native.js +29 -17
- package/dist/esm/ToastDemo.native.js.map +1 -1
- package/dist/esm/tamagui.config.js +5 -2
- package/dist/esm/tamagui.config.js.map +1 -1
- package/dist/esm/tamagui.config.mjs +5 -2
- package/dist/esm/tamagui.config.mjs.map +1 -1
- package/dist/esm/tamagui.config.native.js +5 -2
- package/dist/esm/tamagui.config.native.js.map +1 -1
- package/package.json +34 -34
- package/src/AccordionDemo.tsx +2 -1
- package/src/ContextMenuDemo.tsx +119 -98
- package/src/DialogDemo.tsx +1 -1
- package/src/LabelDemo.tsx +1 -1
- package/src/MenuDemo.tsx +150 -106
- package/src/PopoverDemo.tsx +1 -1
- package/src/SwitchDemo.tsx +1 -1
- package/src/SwitchUnstyledDemo.tsx +1 -1
- package/src/ToastDemo.tsx +20 -13
- package/src/tamagui.config.ts +5 -2
package/src/ContextMenuDemo.tsx
CHANGED
|
@@ -1,29 +1,12 @@
|
|
|
1
1
|
import { ContextMenu } from '@tamagui/context-menu'
|
|
2
2
|
import { Calendar, Check, ChevronRight } from '@tamagui/lucide-icons'
|
|
3
3
|
import React from 'react'
|
|
4
|
-
import {
|
|
4
|
+
import { Text, YStack } from 'tamagui'
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Note: you'll want to use createMenu() to customize further.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
const Item = styled(ContextMenu.Item, {
|
|
11
|
-
py: 4,
|
|
12
|
-
hoverStyle: {
|
|
13
|
-
bg: '$color2',
|
|
14
|
-
},
|
|
15
|
-
pressStyle: {
|
|
16
|
-
bg: '$color3',
|
|
17
|
-
},
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
const ItemTitle = styled(ContextMenu.ItemTitle, {
|
|
21
|
-
color: '$color11',
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
Item.displayName = 'Item'
|
|
25
|
-
ItemTitle.displayName = 'ItemTitle'
|
|
26
|
-
|
|
27
10
|
export function ContextMenuDemo() {
|
|
28
11
|
const [bookmarksChecked, setBookmarksChecked] = React.useState(true)
|
|
29
12
|
const [native, setNative] = React.useState(true)
|
|
@@ -33,7 +16,7 @@ export function ContextMenuDemo() {
|
|
|
33
16
|
}
|
|
34
17
|
|
|
35
18
|
return (
|
|
36
|
-
<ContextMenu allowFlip native={native} placement="
|
|
19
|
+
<ContextMenu allowFlip native={native} placement="bottom-start" offset={14}>
|
|
37
20
|
<ContextMenu.Trigger asChild>
|
|
38
21
|
<Text text="center" select={null}>
|
|
39
22
|
Right Click or longPress
|
|
@@ -42,22 +25,18 @@ export function ContextMenuDemo() {
|
|
|
42
25
|
|
|
43
26
|
<ContextMenu.Portal zIndex={100}>
|
|
44
27
|
<ContextMenu.Content
|
|
45
|
-
|
|
28
|
+
p="$1.5"
|
|
29
|
+
minW={180}
|
|
46
30
|
borderWidth={1}
|
|
47
|
-
items="flex-start"
|
|
48
31
|
borderColor="$borderColor"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
opacity: {
|
|
56
|
-
overshootClamping: true,
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
]}
|
|
32
|
+
transformOrigin="left top"
|
|
33
|
+
enterStyle={{ scale: 0.9, opacity: 0, y: -5 }}
|
|
34
|
+
exitStyle={{ scale: 0.95, opacity: 0, y: -3 }}
|
|
35
|
+
elevation="$3"
|
|
36
|
+
transition="menu"
|
|
60
37
|
>
|
|
38
|
+
<ContextMenu.Arrow size="$4" borderWidth={1} borderColor="$borderColor" />
|
|
39
|
+
|
|
61
40
|
<ContextMenu.Preview>
|
|
62
41
|
{() => {
|
|
63
42
|
return (
|
|
@@ -73,50 +52,64 @@ export function ContextMenuDemo() {
|
|
|
73
52
|
)
|
|
74
53
|
}}
|
|
75
54
|
</ContextMenu.Preview>
|
|
76
|
-
<ContextMenu.Item
|
|
55
|
+
<ContextMenu.Item
|
|
56
|
+
onSelect={onSelect}
|
|
57
|
+
key="about-notes"
|
|
58
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
59
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
60
|
+
>
|
|
77
61
|
<ContextMenu.ItemTitle>About Notes</ContextMenu.ItemTitle>
|
|
78
62
|
</ContextMenu.Item>
|
|
79
63
|
<ContextMenu.Separator />
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
64
|
+
|
|
65
|
+
<ContextMenu.Item
|
|
66
|
+
onSelect={onSelect}
|
|
67
|
+
key="settings"
|
|
68
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
69
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
70
|
+
>
|
|
71
|
+
<ContextMenu.ItemTitle>Settings</ContextMenu.ItemTitle>
|
|
72
|
+
</ContextMenu.Item>
|
|
73
|
+
<ContextMenu.Item
|
|
74
|
+
onSelect={onSelect}
|
|
75
|
+
justify="space-between"
|
|
76
|
+
textValue="Calendar"
|
|
77
|
+
key="accounts"
|
|
78
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
79
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
80
|
+
>
|
|
81
|
+
<ContextMenu.ItemTitle>Calendar</ContextMenu.ItemTitle>
|
|
82
|
+
<ContextMenu.ItemIcon
|
|
83
|
+
androidIconName="ic_menu_today"
|
|
84
|
+
ios={{
|
|
85
|
+
name: 'calendar',
|
|
86
|
+
}}
|
|
90
87
|
>
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
androidIconName="ic_menu_today"
|
|
96
|
-
ios={{
|
|
97
|
-
name: 'calendar',
|
|
98
|
-
}}
|
|
99
|
-
>
|
|
100
|
-
<Calendar color="gray" size="$1" />
|
|
101
|
-
</ContextMenu.ItemIcon>
|
|
102
|
-
</ContextMenu.Item>
|
|
103
|
-
</ContextMenu.Group>
|
|
88
|
+
<Calendar color="gray" size={14} />
|
|
89
|
+
</ContextMenu.ItemIcon>
|
|
90
|
+
</ContextMenu.Item>
|
|
91
|
+
|
|
104
92
|
<ContextMenu.Separator />
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
93
|
+
|
|
94
|
+
<ContextMenu.Item
|
|
95
|
+
onSelect={onSelect}
|
|
96
|
+
key="close-notes"
|
|
97
|
+
disabled
|
|
98
|
+
textValue="Locked Notes"
|
|
99
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
100
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
101
|
+
>
|
|
102
|
+
<ContextMenu.ItemTitle color="gray">Locked Notes</ContextMenu.ItemTitle>
|
|
103
|
+
</ContextMenu.Item>
|
|
104
|
+
<ContextMenu.Item
|
|
105
|
+
destructive
|
|
106
|
+
onSelect={onSelect}
|
|
107
|
+
key="delete-all"
|
|
108
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
109
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
110
|
+
>
|
|
111
|
+
<ContextMenu.ItemTitle color="red">Delete all</ContextMenu.ItemTitle>
|
|
112
|
+
</ContextMenu.Item>
|
|
120
113
|
<ContextMenu.Separator />
|
|
121
114
|
{/* Submenu */}
|
|
122
115
|
<ContextMenu.Sub placement="right-start">
|
|
@@ -124,33 +117,61 @@ export function ContextMenuDemo() {
|
|
|
124
117
|
key="actions-trigger"
|
|
125
118
|
justify="space-between"
|
|
126
119
|
textValue="Actions"
|
|
120
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
121
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
127
122
|
>
|
|
128
123
|
<ContextMenu.ItemTitle>Actions</ContextMenu.ItemTitle>
|
|
129
|
-
<ChevronRight size="$
|
|
124
|
+
<ChevronRight size={12} color="$color10" />
|
|
130
125
|
</ContextMenu.SubTrigger>
|
|
131
126
|
<ContextMenu.Portal zIndex={200}>
|
|
132
127
|
<ContextMenu.SubContent
|
|
133
|
-
enterStyle={{
|
|
134
|
-
exitStyle={{
|
|
135
|
-
transition=
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
px={0}
|
|
128
|
+
enterStyle={{ scale: 0.9, opacity: 0, x: -5 }}
|
|
129
|
+
exitStyle={{ scale: 0.95, opacity: 0, x: -3 }}
|
|
130
|
+
transition="menu"
|
|
131
|
+
transformOrigin="left top"
|
|
132
|
+
elevation="$3"
|
|
133
|
+
minW={160}
|
|
134
|
+
bg="$background"
|
|
135
|
+
p="$1.5"
|
|
136
|
+
borderWidth={1}
|
|
137
|
+
borderColor="$borderColor"
|
|
144
138
|
>
|
|
145
|
-
<
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
</
|
|
139
|
+
<ContextMenu.Label
|
|
140
|
+
color="$color10"
|
|
141
|
+
fontWeight="400"
|
|
142
|
+
fontSize={14}
|
|
143
|
+
alignSelf="flex-start"
|
|
144
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5 }}
|
|
145
|
+
>
|
|
146
|
+
Note settings
|
|
147
|
+
</ContextMenu.Label>
|
|
148
|
+
<ContextMenu.Item
|
|
149
|
+
onSelect={onSelect}
|
|
150
|
+
key="create-note"
|
|
151
|
+
textValue="Create note"
|
|
152
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
153
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
154
|
+
>
|
|
155
|
+
<ContextMenu.ItemTitle>Create note</ContextMenu.ItemTitle>
|
|
156
|
+
</ContextMenu.Item>
|
|
157
|
+
<ContextMenu.Item
|
|
158
|
+
onSelect={onSelect}
|
|
159
|
+
key="delete-all"
|
|
160
|
+
textValue="Delete all notes"
|
|
161
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
162
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
163
|
+
>
|
|
164
|
+
<ContextMenu.ItemTitle>Delete all notes</ContextMenu.ItemTitle>
|
|
165
|
+
</ContextMenu.Item>
|
|
166
|
+
<ContextMenu.Item
|
|
167
|
+
onSelect={onSelect}
|
|
168
|
+
key="sync-all"
|
|
169
|
+
textValue="Sync notes"
|
|
170
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
171
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
172
|
+
>
|
|
173
|
+
<ContextMenu.ItemTitle>Sync notes</ContextMenu.ItemTitle>
|
|
174
|
+
</ContextMenu.Item>
|
|
154
175
|
</ContextMenu.SubContent>
|
|
155
176
|
</ContextMenu.Portal>
|
|
156
177
|
</ContextMenu.Sub>
|
|
@@ -159,28 +180,28 @@ export function ContextMenuDemo() {
|
|
|
159
180
|
key="show-hidden"
|
|
160
181
|
checked={bookmarksChecked}
|
|
161
182
|
onCheckedChange={setBookmarksChecked}
|
|
162
|
-
gap="$2"
|
|
163
183
|
justify="space-between"
|
|
184
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
185
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
164
186
|
>
|
|
165
187
|
<ContextMenu.ItemTitle>Mark as read</ContextMenu.ItemTitle>
|
|
166
188
|
<ContextMenu.ItemIndicator>
|
|
167
|
-
<Check size="$
|
|
189
|
+
<Check size={12} color="$color10" />
|
|
168
190
|
</ContextMenu.ItemIndicator>
|
|
169
191
|
</ContextMenu.CheckboxItem>
|
|
170
192
|
<ContextMenu.CheckboxItem
|
|
171
193
|
key="show-other-notes"
|
|
172
194
|
checked={native}
|
|
173
195
|
onCheckedChange={setNative}
|
|
174
|
-
gap="$2"
|
|
175
196
|
justify="space-between"
|
|
197
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
198
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
176
199
|
>
|
|
177
200
|
<ContextMenu.ItemTitle>Enable Native</ContextMenu.ItemTitle>
|
|
178
201
|
<ContextMenu.ItemIndicator>
|
|
179
|
-
<Check size="$
|
|
202
|
+
<Check size={12} color="$color10" />
|
|
180
203
|
</ContextMenu.ItemIndicator>
|
|
181
204
|
</ContextMenu.CheckboxItem>
|
|
182
|
-
|
|
183
|
-
<ContextMenu.Arrow size={'$2'} />
|
|
184
205
|
</ContextMenu.Content>
|
|
185
206
|
</ContextMenu.Portal>
|
|
186
207
|
</ContextMenu>
|
package/src/DialogDemo.tsx
CHANGED
|
@@ -117,7 +117,7 @@ function DialogInstance({ disableAdapt }: { disableAdapt?: boolean }) {
|
|
|
117
117
|
<XStack flex={1}>
|
|
118
118
|
<SelectDemoContents
|
|
119
119
|
trigger={
|
|
120
|
-
<Select.Trigger flex={1} iconAfter={ChevronDown}>
|
|
120
|
+
<Select.Trigger flex={1} iconAfter={ChevronDown} borderRadius="$4">
|
|
121
121
|
<Select.Value placeholder="Something" />
|
|
122
122
|
</Select.Trigger>
|
|
123
123
|
}
|
package/src/LabelDemo.tsx
CHANGED
package/src/MenuDemo.tsx
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
Backpack,
|
|
3
|
+
Calendar,
|
|
4
|
+
Check,
|
|
5
|
+
ChevronRight,
|
|
6
|
+
FilePlus,
|
|
7
|
+
Trash2,
|
|
8
|
+
RefreshCw,
|
|
9
|
+
} from '@tamagui/lucide-icons'
|
|
3
10
|
import { Menu } from '@tamagui/menu'
|
|
4
11
|
import React from 'react'
|
|
5
|
-
import { Button } from 'tamagui'
|
|
12
|
+
import { Button, useIsTouchDevice } from 'tamagui'
|
|
6
13
|
|
|
7
14
|
/**
|
|
8
15
|
* Menu Demo using Tamagui Menu component.
|
|
@@ -14,27 +21,11 @@ import { Button } from 'tamagui'
|
|
|
14
21
|
* Note: you'll want to use createMenu() to customize further.
|
|
15
22
|
*/
|
|
16
23
|
|
|
17
|
-
const Item = styled(Menu.Item, {
|
|
18
|
-
py: 4,
|
|
19
|
-
|
|
20
|
-
hoverStyle: {
|
|
21
|
-
bg: '$color2',
|
|
22
|
-
},
|
|
23
|
-
pressStyle: {
|
|
24
|
-
bg: '$color3',
|
|
25
|
-
},
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
const ItemTitle = styled(Menu.ItemTitle, {
|
|
29
|
-
color: '$color11',
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
Item.displayName = 'Item'
|
|
33
|
-
ItemTitle.displayName = 'ItemTitle'
|
|
34
|
-
|
|
35
24
|
export function MenuDemo() {
|
|
36
25
|
const [bookmarksChecked, setBookmarksChecked] = React.useState(true)
|
|
37
26
|
const [native, setNative] = React.useState(true)
|
|
27
|
+
const [subMenuOpen, setSubMenuOpen] = React.useState(false)
|
|
28
|
+
const isTouchDevice = useIsTouchDevice()
|
|
38
29
|
|
|
39
30
|
// Note: `item` is the Event on web, undefined on native
|
|
40
31
|
const onSelect = (item) => {
|
|
@@ -43,115 +34,166 @@ export function MenuDemo() {
|
|
|
43
34
|
|
|
44
35
|
return (
|
|
45
36
|
<>
|
|
46
|
-
<Menu
|
|
47
|
-
offset={{
|
|
48
|
-
crossAxis: 25,
|
|
49
|
-
}}
|
|
50
|
-
allowFlip
|
|
51
|
-
placement="bottom-start"
|
|
52
|
-
>
|
|
37
|
+
<Menu allowFlip placement="bottom-start" offset={8}>
|
|
53
38
|
<Menu.Trigger asChild>
|
|
54
|
-
<Button
|
|
39
|
+
<Button size="$3" circular icon={Backpack} scaleIcon={1.2} />
|
|
55
40
|
</Menu.Trigger>
|
|
56
41
|
|
|
57
42
|
<Menu.Portal zIndex={100}>
|
|
58
43
|
<Menu.Content
|
|
59
|
-
|
|
44
|
+
p="$1.5"
|
|
45
|
+
minW={180}
|
|
60
46
|
borderWidth={1}
|
|
61
|
-
items="flex-start"
|
|
62
47
|
borderColor="$borderColor"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
opacity: {
|
|
69
|
-
overshootClamping: true,
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
]}
|
|
48
|
+
transformOrigin="left top"
|
|
49
|
+
enterStyle={{ scale: 0.9, opacity: 0, y: -5 }}
|
|
50
|
+
exitStyle={{ scale: 0.95, opacity: 0, y: -3 }}
|
|
51
|
+
transition="menu"
|
|
52
|
+
elevation="$3"
|
|
73
53
|
>
|
|
74
|
-
<Menu.
|
|
54
|
+
<Menu.Arrow size="$4" borderWidth={1} borderColor="$borderColor" />
|
|
55
|
+
|
|
56
|
+
<Menu.Item
|
|
57
|
+
onSelect={onSelect}
|
|
58
|
+
key="about-notes"
|
|
59
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
60
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
61
|
+
>
|
|
75
62
|
<Menu.ItemTitle>About Notes</Menu.ItemTitle>
|
|
76
63
|
</Menu.Item>
|
|
77
64
|
|
|
78
65
|
<Menu.Separator />
|
|
79
66
|
|
|
80
|
-
<Menu.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
67
|
+
<Menu.Item
|
|
68
|
+
onSelect={onSelect}
|
|
69
|
+
key="settings"
|
|
70
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
71
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
72
|
+
>
|
|
73
|
+
<Menu.ItemTitle>Settings</Menu.ItemTitle>
|
|
74
|
+
</Menu.Item>
|
|
75
|
+
<Menu.Item
|
|
76
|
+
onSelect={onSelect}
|
|
77
|
+
key="accounts"
|
|
78
|
+
justify="space-between"
|
|
79
|
+
// when title is nested inside a React element then you need to use `textValue`
|
|
80
|
+
textValue="Calendar"
|
|
81
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
82
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
83
|
+
>
|
|
84
|
+
<Menu.ItemTitle>Calendar</Menu.ItemTitle>
|
|
85
|
+
<Menu.ItemIcon
|
|
86
|
+
androidIconName="ic_menu_today"
|
|
87
|
+
ios={{
|
|
88
|
+
name: 'calendar',
|
|
89
|
+
hierarchicalColor: '#000',
|
|
90
|
+
pointSize: 20,
|
|
91
|
+
}}
|
|
90
92
|
>
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
ios={{
|
|
95
|
-
name: 'calendar',
|
|
96
|
-
hierarchicalColor: '#000',
|
|
97
|
-
pointSize: 20,
|
|
98
|
-
}}
|
|
99
|
-
>
|
|
100
|
-
<Calendar color="gray" size={14} />
|
|
101
|
-
</Menu.ItemIcon>
|
|
102
|
-
</Menu.Item>
|
|
103
|
-
</Menu.Group>
|
|
93
|
+
<Calendar color="gray" size={14} />
|
|
94
|
+
</Menu.ItemIcon>
|
|
95
|
+
</Menu.Item>
|
|
104
96
|
|
|
105
97
|
<Menu.Separator />
|
|
106
98
|
|
|
107
|
-
<Menu.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
99
|
+
<Menu.Item
|
|
100
|
+
onSelect={onSelect}
|
|
101
|
+
key="close-notes"
|
|
102
|
+
disabled
|
|
103
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
104
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
105
|
+
>
|
|
106
|
+
<Menu.ItemTitle color="gray">Locked Notes</Menu.ItemTitle>
|
|
107
|
+
</Menu.Item>
|
|
108
|
+
<Menu.Item
|
|
109
|
+
onSelect={onSelect}
|
|
110
|
+
destructive
|
|
111
|
+
key="delete-all"
|
|
112
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
113
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
114
|
+
>
|
|
115
|
+
<Menu.ItemTitle color="red">Delete all</Menu.ItemTitle>
|
|
116
|
+
</Menu.Item>
|
|
115
117
|
|
|
116
118
|
<Menu.Separator />
|
|
117
119
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
+
<Menu.Sub
|
|
121
|
+
open={subMenuOpen}
|
|
122
|
+
placement={isTouchDevice ? 'bottom' : 'right-start'}
|
|
123
|
+
onOpenChange={setSubMenuOpen}
|
|
124
|
+
>
|
|
120
125
|
<Menu.SubTrigger
|
|
121
126
|
justify="space-between"
|
|
122
127
|
key="actions-trigger"
|
|
123
128
|
textValue="Actions"
|
|
129
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
130
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
124
131
|
>
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
<ChevronRight size="$1" />
|
|
128
|
-
</>
|
|
132
|
+
<Menu.ItemTitle>Actions</Menu.ItemTitle>
|
|
133
|
+
<ChevronRight size={12} color="$color10" />
|
|
129
134
|
</Menu.SubTrigger>
|
|
130
135
|
|
|
131
136
|
<Menu.Portal zIndex={200}>
|
|
132
137
|
<Menu.SubContent
|
|
133
|
-
enterStyle={{
|
|
134
|
-
exitStyle={{
|
|
135
|
-
transition=
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
px={0}
|
|
138
|
+
enterStyle={{ scale: 0.9, opacity: 0, x: -5 }}
|
|
139
|
+
exitStyle={{ scale: 0.95, opacity: 0, x: -3 }}
|
|
140
|
+
transition="menu"
|
|
141
|
+
transformOrigin="left top"
|
|
142
|
+
elevation="$3"
|
|
143
|
+
minW={160}
|
|
144
|
+
bg="$background"
|
|
145
|
+
p="$1.5"
|
|
146
|
+
borderWidth={1}
|
|
147
|
+
borderColor="$borderColor"
|
|
144
148
|
>
|
|
145
|
-
<Menu.Label
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
149
|
+
<Menu.Label
|
|
150
|
+
color="$color10"
|
|
151
|
+
fontWeight="400"
|
|
152
|
+
fontSize={14}
|
|
153
|
+
alignSelf="flex-start"
|
|
154
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5 }}
|
|
155
|
+
>
|
|
156
|
+
Note settings
|
|
157
|
+
</Menu.Label>
|
|
158
|
+
<Menu.Item
|
|
159
|
+
onSelect={onSelect}
|
|
160
|
+
key="create-note"
|
|
161
|
+
textValue="Create note"
|
|
162
|
+
justify="space-between"
|
|
163
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
164
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
165
|
+
>
|
|
166
|
+
<Menu.ItemTitle>Create note</Menu.ItemTitle>
|
|
167
|
+
<Menu.ItemIcon>
|
|
168
|
+
<FilePlus size={14} color="$color10" />
|
|
169
|
+
</Menu.ItemIcon>
|
|
170
|
+
</Menu.Item>
|
|
171
|
+
<Menu.Item
|
|
172
|
+
onSelect={onSelect}
|
|
173
|
+
key="delete-all"
|
|
174
|
+
textValue="Delete all notes"
|
|
175
|
+
justify="space-between"
|
|
176
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
177
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
178
|
+
>
|
|
179
|
+
<Menu.ItemTitle>Delete all notes</Menu.ItemTitle>
|
|
180
|
+
<Menu.ItemIcon>
|
|
181
|
+
<Trash2 size={14} color="$color10" />
|
|
182
|
+
</Menu.ItemIcon>
|
|
183
|
+
</Menu.Item>
|
|
184
|
+
<Menu.Item
|
|
185
|
+
onSelect={onSelect}
|
|
186
|
+
key="sync-all"
|
|
187
|
+
textValue="Sync notes"
|
|
188
|
+
justify="space-between"
|
|
189
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
190
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
191
|
+
>
|
|
192
|
+
<Menu.ItemTitle>Sync notes</Menu.ItemTitle>
|
|
193
|
+
<Menu.ItemIcon>
|
|
194
|
+
<RefreshCw size={14} color="$color10" />
|
|
195
|
+
</Menu.ItemIcon>
|
|
196
|
+
</Menu.Item>
|
|
155
197
|
</Menu.SubContent>
|
|
156
198
|
</Menu.Portal>
|
|
157
199
|
</Menu.Sub>
|
|
@@ -162,26 +204,28 @@ export function MenuDemo() {
|
|
|
162
204
|
key="show-hidden"
|
|
163
205
|
checked={bookmarksChecked}
|
|
164
206
|
onCheckedChange={setBookmarksChecked}
|
|
165
|
-
|
|
207
|
+
justify="space-between"
|
|
208
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
209
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
166
210
|
>
|
|
167
211
|
<Menu.ItemTitle>Mark as read</Menu.ItemTitle>
|
|
168
212
|
<Menu.ItemIndicator>
|
|
169
|
-
<Check size="$
|
|
213
|
+
<Check size={12} color="$color10" />
|
|
170
214
|
</Menu.ItemIndicator>
|
|
171
215
|
</Menu.CheckboxItem>
|
|
172
216
|
<Menu.CheckboxItem
|
|
173
217
|
key="show-other-notes"
|
|
174
218
|
checked={native}
|
|
175
219
|
onCheckedChange={setNative}
|
|
176
|
-
|
|
220
|
+
justify="space-between"
|
|
221
|
+
style={{ paddingHorizontal: 8, paddingVertical: 5, borderRadius: 4 }}
|
|
222
|
+
hoverStyle={{ bg: '$backgroundHover' }}
|
|
177
223
|
>
|
|
178
224
|
<Menu.ItemTitle>Enable Native</Menu.ItemTitle>
|
|
179
225
|
<Menu.ItemIndicator>
|
|
180
|
-
<Check size="$
|
|
226
|
+
<Check size={12} color="$color10" />
|
|
181
227
|
</Menu.ItemIndicator>
|
|
182
228
|
</Menu.CheckboxItem>
|
|
183
|
-
|
|
184
|
-
<Menu.Arrow size={'$2'} />
|
|
185
229
|
</Menu.Content>
|
|
186
230
|
</Menu.Portal>
|
|
187
231
|
</Menu>
|
package/src/PopoverDemo.tsx
CHANGED
package/src/SwitchDemo.tsx
CHANGED
|
@@ -29,7 +29,7 @@ export function SwitchWithLabel(props: { size: SizeTokens; defaultChecked?: bool
|
|
|
29
29
|
</Label>
|
|
30
30
|
<Separator minH={20} vertical />
|
|
31
31
|
<Switch id={id} size={props.size} defaultChecked={props.defaultChecked}>
|
|
32
|
-
<Switch.Thumb transition="
|
|
32
|
+
<Switch.Thumb transition="quickest" />
|
|
33
33
|
</Switch>
|
|
34
34
|
</XStack>
|
|
35
35
|
)
|