@tamagui/demos 2.0.0-1768427228811 → 2.0.0-1768586279389
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/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/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/ToastDemo.cjs +3 -3
- package/dist/cjs/ToastDemo.js +3 -3
- package/dist/cjs/ToastDemo.js.map +1 -1
- package/dist/cjs/ToastDemo.native.js +3 -3
- 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/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/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/ToastDemo.js +3 -3
- package/dist/esm/ToastDemo.js.map +1 -1
- package/dist/esm/ToastDemo.mjs +3 -3
- package/dist/esm/ToastDemo.mjs.map +1 -1
- package/dist/esm/ToastDemo.native.js +3 -3
- 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/ContextMenuDemo.tsx +119 -98
- package/src/DialogDemo.tsx +1 -1
- package/src/MenuDemo.tsx +150 -106
- package/src/ToastDemo.tsx +3 -3
- package/src/tamagui.config.ts +5 -2
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/ToastDemo.tsx
CHANGED
|
@@ -30,11 +30,11 @@ const CurrentToast = () => {
|
|
|
30
30
|
key={currentToast.id}
|
|
31
31
|
duration={currentToast.duration}
|
|
32
32
|
viewportName={currentToast.viewportName}
|
|
33
|
-
enterStyle={{ opacity: 0, scale: 0.95, y:
|
|
34
|
-
exitStyle={{ opacity: 0, scale: 0.95, y:
|
|
33
|
+
enterStyle={{ opacity: 0, scale: 0.95, y: -80 }}
|
|
34
|
+
exitStyle={{ opacity: 0, scale: 0.95, y: -80 }}
|
|
35
35
|
opacity={1}
|
|
36
36
|
scale={1}
|
|
37
|
-
y={
|
|
37
|
+
y={-50}
|
|
38
38
|
transition="quicker"
|
|
39
39
|
bg="$color2"
|
|
40
40
|
boxShadow="0px 2px 4px rgba(0,0,0,0.12), 0px 8px 24px rgba(0,0,0,0.08)"
|
package/src/tamagui.config.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { createTamagui } from 'tamagui'
|
|
2
|
-
import { config } from '@tamagui/tamagui-dev-config'
|
|
2
|
+
import { config, animationsMotion } from '@tamagui/tamagui-dev-config'
|
|
3
3
|
|
|
4
|
-
const tamaConf = createTamagui(
|
|
4
|
+
const tamaConf = createTamagui({
|
|
5
|
+
...config,
|
|
6
|
+
animations: animationsMotion,
|
|
7
|
+
})
|
|
5
8
|
|
|
6
9
|
export type Conf = typeof tamaConf
|
|
7
10
|
|