panelui-native 0.7.0 → 0.12.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/README.md +5 -3
- package/lib/module/components/attachment/index.js +219 -0
- package/lib/module/components/attachment/index.js.map +1 -0
- package/lib/module/components/bottom-sheet/index.js +53 -3
- package/lib/module/components/bottom-sheet/index.js.map +1 -1
- package/lib/module/components/button/index.js +19 -1
- package/lib/module/components/button/index.js.map +1 -1
- package/lib/module/components/dialog/index.js +6 -2
- package/lib/module/components/dialog/index.js.map +1 -1
- package/lib/module/components/empty-state/index.js +94 -17
- package/lib/module/components/empty-state/index.js.map +1 -1
- package/lib/module/components/frame/index.js +128 -15
- package/lib/module/components/frame/index.js.map +1 -1
- package/lib/module/components/input/index.js +107 -15
- package/lib/module/components/input/index.js.map +1 -1
- package/lib/module/components/line-chart/index.js +1024 -0
- package/lib/module/components/line-chart/index.js.map +1 -0
- package/lib/module/components/marker/index.js +190 -0
- package/lib/module/components/marker/index.js.map +1 -0
- package/lib/module/components/message/index.js +24 -8
- package/lib/module/components/message/index.js.map +1 -1
- package/lib/module/components/message-scroller/index.js +451 -0
- package/lib/module/components/message-scroller/index.js.map +1 -0
- package/lib/module/components/popover/index.js +511 -0
- package/lib/module/components/popover/index.js.map +1 -0
- package/lib/module/components/progress/index.js +52 -2
- package/lib/module/components/progress/index.js.map +1 -1
- package/lib/module/components/radio-group/index.js +132 -17
- package/lib/module/components/radio-group/index.js.map +1 -1
- package/lib/module/components/section-rail/index.js +355 -0
- package/lib/module/components/section-rail/index.js.map +1 -0
- package/lib/module/components/select/index.js +245 -56
- package/lib/module/components/select/index.js.map +1 -1
- package/lib/module/components/separator/index.js +91 -0
- package/lib/module/components/separator/index.js.map +1 -0
- package/lib/module/components/slider/index.js +355 -0
- package/lib/module/components/slider/index.js.map +1 -0
- package/lib/module/components/surface/index.js +21 -2
- package/lib/module/components/surface/index.js.map +1 -1
- package/lib/module/components/switch/index.js +10 -1
- package/lib/module/components/switch/index.js.map +1 -1
- package/lib/module/components/tabs/index.js +186 -16
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/toggle-button/index.js +297 -0
- package/lib/module/components/toggle-button/index.js.map +1 -0
- package/lib/module/hooks/index.js +1 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/use-keyboard-avoidance.js +57 -8
- package/lib/module/hooks/use-keyboard-avoidance.js.map +1 -1
- package/lib/module/hooks/use-scroll-sections.js +89 -0
- package/lib/module/hooks/use-scroll-sections.js.map +1 -0
- package/lib/module/icons/index.js +69 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js +11 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/native/index.js.map +1 -1
- package/lib/module/primitives/keyboard-avoider.js +2 -0
- package/lib/module/primitives/keyboard-avoider.js.map +1 -1
- package/lib/module/primitives/scrim.js +72 -0
- package/lib/module/primitives/scrim.js.map +1 -0
- package/lib/module/utils/haptics.js +57 -0
- package/lib/module/utils/haptics.js.map +1 -0
- package/lib/typescript/src/components/attachment/index.d.ts +93 -0
- package/lib/typescript/src/components/attachment/index.d.ts.map +1 -0
- package/lib/typescript/src/components/bottom-sheet/index.d.ts +6 -1
- package/lib/typescript/src/components/bottom-sheet/index.d.ts.map +1 -1
- package/lib/typescript/src/components/button/index.d.ts +9 -4
- package/lib/typescript/src/components/button/index.d.ts.map +1 -1
- package/lib/typescript/src/components/dialog/index.d.ts +7 -1
- package/lib/typescript/src/components/dialog/index.d.ts.map +1 -1
- package/lib/typescript/src/components/empty-state/index.d.ts +152 -2
- package/lib/typescript/src/components/empty-state/index.d.ts.map +1 -1
- package/lib/typescript/src/components/frame/index.d.ts +47 -7
- package/lib/typescript/src/components/frame/index.d.ts.map +1 -1
- package/lib/typescript/src/components/input/index.d.ts +113 -2
- package/lib/typescript/src/components/input/index.d.ts.map +1 -1
- package/lib/typescript/src/components/line-chart/index.d.ts +247 -0
- package/lib/typescript/src/components/line-chart/index.d.ts.map +1 -0
- package/lib/typescript/src/components/marker/index.d.ts +137 -0
- package/lib/typescript/src/components/marker/index.d.ts.map +1 -0
- package/lib/typescript/src/components/message/index.d.ts +8 -1
- package/lib/typescript/src/components/message/index.d.ts.map +1 -1
- package/lib/typescript/src/components/message-scroller/index.d.ts +150 -0
- package/lib/typescript/src/components/message-scroller/index.d.ts.map +1 -0
- package/lib/typescript/src/components/popover/index.d.ts +136 -0
- package/lib/typescript/src/components/popover/index.d.ts.map +1 -0
- package/lib/typescript/src/components/progress/index.d.ts +33 -0
- package/lib/typescript/src/components/progress/index.d.ts.map +1 -1
- package/lib/typescript/src/components/radio-group/index.d.ts +39 -0
- package/lib/typescript/src/components/radio-group/index.d.ts.map +1 -1
- package/lib/typescript/src/components/section-rail/index.d.ts +115 -0
- package/lib/typescript/src/components/section-rail/index.d.ts.map +1 -0
- package/lib/typescript/src/components/select/index.d.ts +46 -7
- package/lib/typescript/src/components/select/index.d.ts.map +1 -1
- package/lib/typescript/src/components/separator/index.d.ts +47 -0
- package/lib/typescript/src/components/separator/index.d.ts.map +1 -0
- package/lib/typescript/src/components/slider/index.d.ts +203 -0
- package/lib/typescript/src/components/slider/index.d.ts.map +1 -0
- package/lib/typescript/src/components/surface/index.d.ts +51 -2
- package/lib/typescript/src/components/surface/index.d.ts.map +1 -1
- package/lib/typescript/src/components/switch/index.d.ts.map +1 -1
- package/lib/typescript/src/components/tabs/index.d.ts +46 -4
- package/lib/typescript/src/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/src/components/toggle-button/index.d.ts +244 -0
- package/lib/typescript/src/components/toggle-button/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +1 -0
- package/lib/typescript/src/hooks/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/use-keyboard-avoidance.d.ts +10 -1
- package/lib/typescript/src/hooks/use-keyboard-avoidance.d.ts.map +1 -1
- package/lib/typescript/src/hooks/use-scroll-sections.d.ts +31 -0
- package/lib/typescript/src/hooks/use-scroll-sections.d.ts.map +1 -0
- package/lib/typescript/src/icons/index.d.ts +6 -0
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +13 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/native/index.d.ts +16 -1
- package/lib/typescript/src/native/index.d.ts.map +1 -1
- package/lib/typescript/src/primitives/keyboard-avoider.d.ts +8 -1
- package/lib/typescript/src/primitives/keyboard-avoider.d.ts.map +1 -1
- package/lib/typescript/src/primitives/scrim.d.ts +21 -0
- package/lib/typescript/src/primitives/scrim.d.ts.map +1 -0
- package/lib/typescript/src/utils/haptics.d.ts +12 -0
- package/lib/typescript/src/utils/haptics.d.ts.map +1 -0
- package/package.json +9 -1
- package/src/components/attachment/index.tsx +279 -0
- package/src/components/bottom-sheet/index.tsx +58 -2
- package/src/components/button/index.tsx +26 -5
- package/src/components/dialog/index.tsx +10 -1
- package/src/components/empty-state/index.tsx +60 -14
- package/src/components/frame/index.tsx +175 -29
- package/src/components/input/index.tsx +122 -16
- package/src/components/line-chart/index.tsx +1224 -0
- package/src/components/marker/index.tsx +194 -0
- package/src/components/message/index.tsx +29 -5
- package/src/components/message-scroller/index.tsx +574 -0
- package/src/components/popover/index.tsx +624 -0
- package/src/components/progress/index.tsx +81 -1
- package/src/components/radio-group/index.tsx +156 -18
- package/src/components/section-rail/index.tsx +459 -0
- package/src/components/select/index.tsx +265 -52
- package/src/components/separator/index.tsx +97 -0
- package/src/components/slider/index.tsx +371 -0
- package/src/components/surface/index.tsx +29 -3
- package/src/components/switch/index.tsx +8 -1
- package/src/components/tabs/index.tsx +208 -28
- package/src/components/toggle-button/index.tsx +374 -0
- package/src/hooks/index.ts +5 -0
- package/src/hooks/use-keyboard-avoidance.ts +73 -7
- package/src/hooks/use-scroll-sections.ts +127 -0
- package/src/icons/index.tsx +48 -0
- package/src/index.ts +97 -6
- package/src/native/index.ts +13 -1
- package/src/primitives/keyboard-avoider.tsx +9 -1
- package/src/primitives/scrim.tsx +95 -0
- package/src/utils/haptics.ts +63 -0
- package/theme.css +64 -2
- package/lib/module/components/inline-select/index.js +0 -284
- package/lib/module/components/inline-select/index.js.map +0 -1
- package/lib/typescript/src/components/inline-select/index.d.ts +0 -48
- package/lib/typescript/src/components/inline-select/index.d.ts.map +0 -1
- package/src/components/inline-select/index.tsx +0 -332
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Tabs — segmented navigation between panels.
|
|
5
|
+
*
|
|
6
|
+
* The active tab is marked by one indicator that slides between measured
|
|
7
|
+
* trigger positions rather than by a style on each trigger. That is what makes
|
|
8
|
+
* the movement continuous: there is a single thing travelling, so a switch two
|
|
9
|
+
* tabs away reads as one gesture instead of two states swapping.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <Tabs defaultValue="account">
|
|
13
|
+
* <Tabs.List>
|
|
14
|
+
* <Tabs.Trigger value="account">Account</Tabs.Trigger>
|
|
15
|
+
* <Tabs.Trigger value="team" badge={<Badge>3</Badge>}>Team</Tabs.Trigger>
|
|
16
|
+
* </Tabs.List>
|
|
17
|
+
* <Tabs.Content value="account">…</Tabs.Content>
|
|
18
|
+
* </Tabs>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
22
|
+
import { Pressable, ScrollView, View } from 'react-native';
|
|
5
23
|
import Animated, { FadeIn, useAnimatedStyle, useSharedValue, withSpring } from 'react-native-reanimated';
|
|
24
|
+
import { tv } from 'tailwind-variants';
|
|
6
25
|
import { Text } from "../../primitives/text.js";
|
|
7
26
|
import { cn } from "../../utils/cn.js";
|
|
8
27
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -11,6 +30,71 @@ const SPRING = {
|
|
|
11
30
|
stiffness: 300,
|
|
12
31
|
mass: 0.7
|
|
13
32
|
};
|
|
33
|
+
const tabsVariants = tv({
|
|
34
|
+
slots: {
|
|
35
|
+
list: 'flex-row',
|
|
36
|
+
indicator: 'absolute left-0',
|
|
37
|
+
trigger: 'items-center justify-center',
|
|
38
|
+
label: ''
|
|
39
|
+
},
|
|
40
|
+
variants: {
|
|
41
|
+
variant: {
|
|
42
|
+
// A raised chip travelling inside a recessed track.
|
|
43
|
+
segmented: {
|
|
44
|
+
list: 'rounded-lg bg-muted p-1',
|
|
45
|
+
indicator: 'bottom-1 top-1 rounded-md bg-popover shadow-sm',
|
|
46
|
+
trigger: 'rounded-md py-1.5'
|
|
47
|
+
},
|
|
48
|
+
// No track at all — the indicator is a rule under the active tab, and
|
|
49
|
+
// the row sits on a hairline so inactive tabs still have a baseline.
|
|
50
|
+
underline: {
|
|
51
|
+
list: 'gap-1 border-b border-border',
|
|
52
|
+
indicator: '-bottom-px h-0.5 rounded-full bg-foreground',
|
|
53
|
+
trigger: 'py-2.5'
|
|
54
|
+
},
|
|
55
|
+
// Filled chip on the page rather than in a track; the active label
|
|
56
|
+
// inverts against it.
|
|
57
|
+
pill: {
|
|
58
|
+
list: 'gap-1',
|
|
59
|
+
indicator: 'bottom-0 top-0 rounded-full bg-primary',
|
|
60
|
+
trigger: 'rounded-full py-2'
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
active: {
|
|
64
|
+
true: {
|
|
65
|
+
label: 'text-foreground'
|
|
66
|
+
},
|
|
67
|
+
false: {
|
|
68
|
+
label: 'text-muted-foreground'
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
disabled: {
|
|
72
|
+
true: {
|
|
73
|
+
trigger: 'opacity-[0.44]'
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
/** Intrinsic width in a scroller, equal shares when the row is fixed. */
|
|
77
|
+
scrollable: {
|
|
78
|
+
true: {
|
|
79
|
+
trigger: 'px-4'
|
|
80
|
+
},
|
|
81
|
+
false: {
|
|
82
|
+
trigger: 'flex-1'
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
compoundVariants: [{
|
|
87
|
+
variant: 'pill',
|
|
88
|
+
active: true,
|
|
89
|
+
class: {
|
|
90
|
+
label: 'text-primary-foreground'
|
|
91
|
+
}
|
|
92
|
+
}],
|
|
93
|
+
defaultVariants: {
|
|
94
|
+
variant: 'segmented',
|
|
95
|
+
scrollable: false
|
|
96
|
+
}
|
|
97
|
+
});
|
|
14
98
|
const TabsContext = /*#__PURE__*/createContext(null);
|
|
15
99
|
function useTabs(component) {
|
|
16
100
|
const context = useContext(TabsContext);
|
|
@@ -24,11 +108,16 @@ function TabsRoot({
|
|
|
24
108
|
value,
|
|
25
109
|
onValueChange,
|
|
26
110
|
defaultValue,
|
|
111
|
+
variant = 'segmented',
|
|
112
|
+
keepMounted = false,
|
|
27
113
|
children,
|
|
28
114
|
...props
|
|
29
115
|
}) {
|
|
30
116
|
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
31
117
|
const [layouts, setLayouts] = useState({});
|
|
118
|
+
// Published by the List rather than the root, because it is the List that
|
|
119
|
+
// decides whether it scrolls — but the Triggers below it need to know.
|
|
120
|
+
const [scrollable, setScrollable] = useState(false);
|
|
32
121
|
const isControlled = value !== undefined;
|
|
33
122
|
const resolvedValue = isControlled ? value : internalValue;
|
|
34
123
|
const setValue = useCallback(next => {
|
|
@@ -51,8 +140,12 @@ function TabsRoot({
|
|
|
51
140
|
value: resolvedValue,
|
|
52
141
|
setValue,
|
|
53
142
|
registerLayout,
|
|
54
|
-
layouts
|
|
55
|
-
|
|
143
|
+
layouts,
|
|
144
|
+
variant,
|
|
145
|
+
scrollable,
|
|
146
|
+
setScrollable,
|
|
147
|
+
keepMounted
|
|
148
|
+
}), [resolvedValue, setValue, registerLayout, layouts, variant, scrollable, keepMounted]);
|
|
56
149
|
return /*#__PURE__*/_jsx(TabsContext.Provider, {
|
|
57
150
|
value: context,
|
|
58
151
|
children: /*#__PURE__*/_jsx(View, {
|
|
@@ -65,12 +158,18 @@ function TabsRoot({
|
|
|
65
158
|
function TabsIndicator() {
|
|
66
159
|
const {
|
|
67
160
|
value,
|
|
68
|
-
layouts
|
|
161
|
+
layouts,
|
|
162
|
+
variant
|
|
69
163
|
} = useTabs('Tabs.List');
|
|
70
164
|
const x = useSharedValue(0);
|
|
71
165
|
const width = useSharedValue(0);
|
|
72
166
|
const initialized = useSharedValue(0);
|
|
73
167
|
const layout = layouts[value];
|
|
168
|
+
const {
|
|
169
|
+
indicator
|
|
170
|
+
} = tabsVariants({
|
|
171
|
+
variant
|
|
172
|
+
});
|
|
74
173
|
|
|
75
174
|
// In an effect, not the render body: touching a shared value during render
|
|
76
175
|
// is a Reanimated strict-mode violation, and the write can be lost or
|
|
@@ -96,28 +195,79 @@ function TabsIndicator() {
|
|
|
96
195
|
}));
|
|
97
196
|
return /*#__PURE__*/_jsx(Animated.View, {
|
|
98
197
|
style: style,
|
|
99
|
-
className:
|
|
198
|
+
className: indicator()
|
|
100
199
|
});
|
|
101
200
|
}
|
|
102
201
|
function TabsList({
|
|
103
202
|
className,
|
|
203
|
+
scrollable = false,
|
|
104
204
|
children,
|
|
105
205
|
...props
|
|
106
206
|
}) {
|
|
107
|
-
|
|
207
|
+
const {
|
|
208
|
+
variant,
|
|
209
|
+
setScrollable,
|
|
210
|
+
value,
|
|
211
|
+
layouts
|
|
212
|
+
} = useTabs('Tabs.List');
|
|
213
|
+
const {
|
|
214
|
+
list
|
|
215
|
+
} = tabsVariants({
|
|
216
|
+
variant
|
|
217
|
+
});
|
|
218
|
+
const scroller = useRef(null);
|
|
219
|
+
useEffect(() => {
|
|
220
|
+
setScrollable(scrollable);
|
|
221
|
+
}, [scrollable, setScrollable]);
|
|
222
|
+
|
|
223
|
+
// Bring the active tab into view when it changes from elsewhere — a
|
|
224
|
+
// controlled switch, or a swipe on the panel below.
|
|
225
|
+
const activeLayout = layouts[value];
|
|
226
|
+
useEffect(() => {
|
|
227
|
+
if (!scrollable || !activeLayout) return;
|
|
228
|
+
scroller.current?.scrollTo({
|
|
229
|
+
// Land the tab a little in from the edge rather than flush against it,
|
|
230
|
+
// so it does not read as the last one in the row.
|
|
231
|
+
x: Math.max(activeLayout.x - 24, 0),
|
|
232
|
+
animated: true
|
|
233
|
+
});
|
|
234
|
+
}, [scrollable, activeLayout?.x, activeLayout]);
|
|
235
|
+
const row = /*#__PURE__*/_jsxs(View, {
|
|
108
236
|
accessibilityRole: "tablist",
|
|
109
|
-
className: cn(
|
|
237
|
+
className: cn(list(), className),
|
|
110
238
|
...props,
|
|
111
239
|
children: [/*#__PURE__*/_jsx(TabsIndicator, {}), children]
|
|
112
240
|
});
|
|
241
|
+
if (!scrollable) return row;
|
|
242
|
+
return /*#__PURE__*/_jsx(ScrollView, {
|
|
243
|
+
ref: scroller,
|
|
244
|
+
horizontal: true,
|
|
245
|
+
showsHorizontalScrollIndicator: false
|
|
246
|
+
// The row measures itself, and the indicator is positioned against it,
|
|
247
|
+
// so the scroller must not stretch it to the viewport width.
|
|
248
|
+
,
|
|
249
|
+
contentContainerStyle: {
|
|
250
|
+
flexGrow: 0
|
|
251
|
+
},
|
|
252
|
+
children: row
|
|
253
|
+
});
|
|
113
254
|
}
|
|
114
255
|
function TabsTrigger({
|
|
115
256
|
className,
|
|
116
257
|
value,
|
|
258
|
+
icon,
|
|
259
|
+
badge,
|
|
260
|
+
disabled = false,
|
|
117
261
|
children
|
|
118
262
|
}) {
|
|
119
263
|
const context = useTabs('Tabs.Trigger');
|
|
120
264
|
const active = context.value === value;
|
|
265
|
+
const slots = tabsVariants({
|
|
266
|
+
variant: context.variant,
|
|
267
|
+
active,
|
|
268
|
+
disabled,
|
|
269
|
+
scrollable: context.scrollable
|
|
270
|
+
});
|
|
121
271
|
const handleLayout = useCallback(event => {
|
|
122
272
|
const {
|
|
123
273
|
x,
|
|
@@ -128,32 +278,52 @@ function TabsTrigger({
|
|
|
128
278
|
width
|
|
129
279
|
});
|
|
130
280
|
}, [context, value]);
|
|
131
|
-
return /*#__PURE__*/
|
|
281
|
+
return /*#__PURE__*/_jsxs(Pressable, {
|
|
132
282
|
accessibilityRole: "tab",
|
|
133
283
|
accessibilityState: {
|
|
134
|
-
selected: active
|
|
284
|
+
selected: active,
|
|
285
|
+
disabled
|
|
135
286
|
},
|
|
287
|
+
disabled: disabled,
|
|
136
288
|
onPress: () => context.setValue(value),
|
|
137
289
|
onLayout: handleLayout,
|
|
138
|
-
className: cn(
|
|
139
|
-
children: typeof children === 'string' ? /*#__PURE__*/_jsx(Text, {
|
|
290
|
+
className: cn(slots.trigger(), (icon || badge) && 'flex-row gap-1.5', className),
|
|
291
|
+
children: [icon, typeof children === 'string' ? /*#__PURE__*/_jsx(Text, {
|
|
140
292
|
size: "sm",
|
|
141
293
|
weight: "medium",
|
|
142
|
-
className:
|
|
294
|
+
className: slots.label(),
|
|
143
295
|
children: children
|
|
144
|
-
}) : children
|
|
296
|
+
}) : children, badge]
|
|
145
297
|
});
|
|
146
298
|
}
|
|
147
299
|
function TabsContent({
|
|
148
300
|
className,
|
|
149
301
|
value,
|
|
150
302
|
children,
|
|
303
|
+
style,
|
|
151
304
|
...props
|
|
152
305
|
}) {
|
|
153
306
|
const context = useTabs('Tabs.Content');
|
|
154
|
-
|
|
307
|
+
const active = context.value === value;
|
|
308
|
+
if (!active && !context.keepMounted) return null;
|
|
309
|
+
|
|
310
|
+
/*
|
|
311
|
+
* Hidden rather than unmounted under `keepMounted`, and hidden thoroughly:
|
|
312
|
+
* `display: none` takes it out of layout, and the accessibility props take
|
|
313
|
+
* it out of the reading order too. A screen reader walking through three
|
|
314
|
+
* panels of a tab set it cannot see is worse than no tabs at all.
|
|
315
|
+
*/
|
|
155
316
|
return /*#__PURE__*/_jsx(Animated.View, {
|
|
156
|
-
|
|
317
|
+
// Only worth animating when the panel is genuinely arriving. A kept
|
|
318
|
+
// panel is already there; fading it in every time it is revealed would
|
|
319
|
+
// undo the point of keeping it.
|
|
320
|
+
entering: context.keepMounted ? undefined : FadeIn.duration(150),
|
|
321
|
+
style: [!active && {
|
|
322
|
+
display: 'none'
|
|
323
|
+
}, style],
|
|
324
|
+
pointerEvents: active ? 'auto' : 'none',
|
|
325
|
+
accessibilityElementsHidden: !active,
|
|
326
|
+
importantForAccessibility: active ? 'auto' : 'no-hide-descendants',
|
|
157
327
|
className: className,
|
|
158
328
|
...props,
|
|
159
329
|
children: children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useCallback","useContext","useEffect","useMemo","useState","Pressable","View","Animated","FadeIn","useAnimatedStyle","useSharedValue","withSpring","Text","cn","jsx","_jsx","jsxs","_jsxs","SPRING","damping","stiffness","mass","TabsContext","useTabs","component","context","Error","TabsRoot","className","value","onValueChange","defaultValue","children","props","internalValue","setInternalValue","layouts","setLayouts","isControlled","undefined","resolvedValue","setValue","next","registerLayout","tab","layout","current","existing","x","width","Provider","TabsIndicator","initialized","style","opacity","transform","translateX","TabsList","accessibilityRole","TabsTrigger","
|
|
1
|
+
{"version":3,"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","Pressable","ScrollView","View","Animated","FadeIn","useAnimatedStyle","useSharedValue","withSpring","tv","Text","cn","jsx","_jsx","jsxs","_jsxs","SPRING","damping","stiffness","mass","tabsVariants","slots","list","indicator","trigger","label","variants","variant","segmented","underline","pill","active","true","false","disabled","scrollable","compoundVariants","class","defaultVariants","TabsContext","useTabs","component","context","Error","TabsRoot","className","value","onValueChange","defaultValue","keepMounted","children","props","internalValue","setInternalValue","layouts","setLayouts","setScrollable","isControlled","undefined","resolvedValue","setValue","next","registerLayout","tab","layout","current","existing","x","width","Provider","TabsIndicator","initialized","style","opacity","transform","translateX","TabsList","scroller","activeLayout","scrollTo","Math","max","animated","row","accessibilityRole","ref","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","flexGrow","TabsTrigger","icon","badge","handleLayout","event","nativeEvent","accessibilityState","selected","onPress","onLayout","size","weight","TabsContent","entering","duration","display","pointerEvents","accessibilityElementsHidden","importantForAccessibility","Tabs","Object","assign","List","Trigger","Content"],"sourceRoot":"../../../../src","sources":["components/tabs/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ToggleButton — a button that stays down.
|
|
5
|
+
*
|
|
6
|
+
* The difference from Button is the whole point: a button does something and
|
|
7
|
+
* springs back, a toggle button *is* something afterwards. So the selected
|
|
8
|
+
* state is the loud one — a filled accent surface — and the resting state is
|
|
9
|
+
* quiet, either a soft fill or nothing at all.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <ToggleButton defaultSelected>Like</ToggleButton>
|
|
13
|
+
*
|
|
14
|
+
* <ToggleButton iconOnly accessibilityLabel="Bold">
|
|
15
|
+
* <BoldIcon size={16} />
|
|
16
|
+
* </ToggleButton>
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* `ToggleButtonGroup` takes over the state for a set of them — a segmented
|
|
20
|
+
* toolbar in `multiple` mode, an either-or choice in `single`. Inside a group
|
|
21
|
+
* each button needs an `id`, which is the value the group reports.
|
|
22
|
+
*
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <ToggleButtonGroup selectionMode="multiple" value={marks} onValueChange={setMarks}>
|
|
25
|
+
* <ToggleButton id="bold" iconOnly accessibilityLabel="Bold">…</ToggleButton>
|
|
26
|
+
* <ToggleButton id="italic" iconOnly accessibilityLabel="Italic">…</ToggleButton>
|
|
27
|
+
* </ToggleButtonGroup>
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
import { createContext, forwardRef, useCallback, useContext, useMemo, useState } from 'react';
|
|
31
|
+
import { View } from 'react-native';
|
|
32
|
+
import { tv } from 'tailwind-variants';
|
|
33
|
+
import { useCSSVariable } from 'uniwind';
|
|
34
|
+
import { IconColorProvider } from "../../icons/index.js";
|
|
35
|
+
import { AnimatedPressable } from "../../primitives/animated-pressable.js";
|
|
36
|
+
import { Text } from "../../primitives/text.js";
|
|
37
|
+
import { cn } from "../../utils/cn.js";
|
|
38
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
39
|
+
const toggleVariants = tv({
|
|
40
|
+
slots: {
|
|
41
|
+
root: 'flex-row items-center justify-center gap-2 rounded-lg border border-transparent',
|
|
42
|
+
label: 'font-medium'
|
|
43
|
+
},
|
|
44
|
+
variants: {
|
|
45
|
+
variant: {
|
|
46
|
+
/** A soft fill at rest, so the control is visible before you touch it. */
|
|
47
|
+
default: {
|
|
48
|
+
root: 'bg-secondary'
|
|
49
|
+
},
|
|
50
|
+
/** Nothing at rest — for a dense toolbar where six fills would be noise. */
|
|
51
|
+
ghost: {
|
|
52
|
+
root: 'bg-transparent'
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
size: {
|
|
56
|
+
sm: {
|
|
57
|
+
root: 'h-9 gap-1.5 px-2.5',
|
|
58
|
+
label: 'text-sm'
|
|
59
|
+
},
|
|
60
|
+
md: {
|
|
61
|
+
root: 'h-11 px-4',
|
|
62
|
+
label: 'text-base'
|
|
63
|
+
},
|
|
64
|
+
lg: {
|
|
65
|
+
root: 'h-12 px-6',
|
|
66
|
+
label: 'text-lg'
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
selected: {
|
|
70
|
+
true: {
|
|
71
|
+
root: 'border-primary/24 bg-accent',
|
|
72
|
+
label: 'text-accent-foreground'
|
|
73
|
+
},
|
|
74
|
+
false: {
|
|
75
|
+
label: 'text-muted-foreground'
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
iconOnly: {
|
|
79
|
+
true: {
|
|
80
|
+
root: 'px-0'
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
disabled: {
|
|
84
|
+
true: {
|
|
85
|
+
root: 'opacity-[0.64]'
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
compoundVariants: [
|
|
90
|
+
// Square, and sized from the height so the icon sits in the middle.
|
|
91
|
+
{
|
|
92
|
+
iconOnly: true,
|
|
93
|
+
size: 'sm',
|
|
94
|
+
class: {
|
|
95
|
+
root: 'w-9'
|
|
96
|
+
}
|
|
97
|
+
}, {
|
|
98
|
+
iconOnly: true,
|
|
99
|
+
size: 'md',
|
|
100
|
+
class: {
|
|
101
|
+
root: 'w-11'
|
|
102
|
+
}
|
|
103
|
+
}, {
|
|
104
|
+
iconOnly: true,
|
|
105
|
+
size: 'lg',
|
|
106
|
+
class: {
|
|
107
|
+
root: 'w-12'
|
|
108
|
+
}
|
|
109
|
+
}],
|
|
110
|
+
defaultVariants: {
|
|
111
|
+
variant: 'default',
|
|
112
|
+
size: 'md'
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
/* -------------------------------------------------------------------------- */
|
|
117
|
+
/* Group */
|
|
118
|
+
/* -------------------------------------------------------------------------- */
|
|
119
|
+
|
|
120
|
+
const ToggleGroupContext = /*#__PURE__*/createContext(null);
|
|
121
|
+
const ToggleButtonGroup = /*#__PURE__*/forwardRef(({
|
|
122
|
+
className,
|
|
123
|
+
selectionMode = 'multiple',
|
|
124
|
+
value,
|
|
125
|
+
defaultValue = [],
|
|
126
|
+
onValueChange,
|
|
127
|
+
disabled = false,
|
|
128
|
+
variant,
|
|
129
|
+
size,
|
|
130
|
+
children,
|
|
131
|
+
...props
|
|
132
|
+
}, ref) => {
|
|
133
|
+
const isControlled = value !== undefined;
|
|
134
|
+
const [internal, setInternal] = useState(defaultValue);
|
|
135
|
+
const selection = isControlled ? value : internal;
|
|
136
|
+
const toggle = useCallback(id => {
|
|
137
|
+
const has = selection.includes(id);
|
|
138
|
+
const next = selectionMode === 'single' ?
|
|
139
|
+
// Pressing the selected one again clears it. A toolbar filter you
|
|
140
|
+
// cannot turn off is a trap.
|
|
141
|
+
has ? [] : [id] : has ? selection.filter(item => item !== id) : [...selection, id];
|
|
142
|
+
if (!isControlled) setInternal(next);
|
|
143
|
+
onValueChange?.(next);
|
|
144
|
+
}, [selection, selectionMode, isControlled, onValueChange]);
|
|
145
|
+
const context = useMemo(() => ({
|
|
146
|
+
isSelected: id => selection.includes(id),
|
|
147
|
+
toggle,
|
|
148
|
+
disabled,
|
|
149
|
+
variant,
|
|
150
|
+
size
|
|
151
|
+
}), [selection, toggle, disabled, variant, size]);
|
|
152
|
+
return /*#__PURE__*/_jsx(ToggleGroupContext.Provider, {
|
|
153
|
+
value: context,
|
|
154
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
155
|
+
ref: ref
|
|
156
|
+
// `radiogroup` for an either-or choice, `toolbar` for a set of
|
|
157
|
+
// independent marks — the two are read out differently, and which
|
|
158
|
+
// one applies is exactly what selectionMode says.
|
|
159
|
+
,
|
|
160
|
+
accessibilityRole: selectionMode === 'single' ? 'radiogroup' : 'toolbar',
|
|
161
|
+
className: cn('flex-row items-center gap-1.5', className),
|
|
162
|
+
...props,
|
|
163
|
+
children: children
|
|
164
|
+
})
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
ToggleButtonGroup.displayName = 'ToggleButtonGroup';
|
|
168
|
+
|
|
169
|
+
/* -------------------------------------------------------------------------- */
|
|
170
|
+
/* Button */
|
|
171
|
+
/* -------------------------------------------------------------------------- */
|
|
172
|
+
|
|
173
|
+
const ToggleStateContext = /*#__PURE__*/createContext(null);
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* The toggle's own state, for anything rendered inside it — an icon that
|
|
177
|
+
* changes shape when selected, a count that only shows when it is on.
|
|
178
|
+
*/
|
|
179
|
+
export function useToggleButton() {
|
|
180
|
+
const state = useContext(ToggleStateContext);
|
|
181
|
+
if (!state) {
|
|
182
|
+
throw new Error('useToggleButton must be used within a <ToggleButton>');
|
|
183
|
+
}
|
|
184
|
+
return state;
|
|
185
|
+
}
|
|
186
|
+
const ToggleButtonRoot = /*#__PURE__*/forwardRef(({
|
|
187
|
+
children,
|
|
188
|
+
className,
|
|
189
|
+
labelClassName,
|
|
190
|
+
id,
|
|
191
|
+
selected: selectedProp,
|
|
192
|
+
defaultSelected = false,
|
|
193
|
+
onSelectedChange,
|
|
194
|
+
disabled,
|
|
195
|
+
variant,
|
|
196
|
+
size,
|
|
197
|
+
iconOnly = false,
|
|
198
|
+
selectedClassName,
|
|
199
|
+
unselectedClassName,
|
|
200
|
+
onPress,
|
|
201
|
+
...props
|
|
202
|
+
}, ref) => {
|
|
203
|
+
const group = useContext(ToggleGroupContext);
|
|
204
|
+
const [internal, setInternal] = useState(defaultSelected);
|
|
205
|
+
|
|
206
|
+
/*
|
|
207
|
+
* Three sources of truth, in order: the group owns it if there is one,
|
|
208
|
+
* then a `selected` prop, then local state. The group comes first because
|
|
209
|
+
* a button inside one that also took a `selected` prop would fight it, and
|
|
210
|
+
* the group is the thing that knows about the other buttons.
|
|
211
|
+
*/
|
|
212
|
+
const selected = group && id ? group.isSelected(id) : selectedProp ?? internal;
|
|
213
|
+
const isDisabled = disabled || (group?.disabled ?? false);
|
|
214
|
+
const slots = toggleVariants({
|
|
215
|
+
variant: variant ?? group?.variant,
|
|
216
|
+
size: size ?? group?.size,
|
|
217
|
+
selected,
|
|
218
|
+
iconOnly,
|
|
219
|
+
disabled: isDisabled
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
// Icons inside inherit this, so they follow the surface they sit on
|
|
223
|
+
// instead of every caller hardcoding a hex that is wrong in one theme.
|
|
224
|
+
const onColor = useCSSVariable('--color-accent-foreground');
|
|
225
|
+
const offColor = useCSSVariable('--color-muted-foreground');
|
|
226
|
+
const tint = selected ? onColor : offColor;
|
|
227
|
+
const handlePress = useCallback(event => {
|
|
228
|
+
onPress?.(event);
|
|
229
|
+
if (group && id) {
|
|
230
|
+
group.toggle(id);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
const next = !selected;
|
|
234
|
+
if (selectedProp === undefined) setInternal(next);
|
|
235
|
+
onSelectedChange?.(next);
|
|
236
|
+
}, [onPress, group, id, selected, selectedProp, onSelectedChange]);
|
|
237
|
+
const state = useMemo(() => ({
|
|
238
|
+
selected,
|
|
239
|
+
disabled: isDisabled
|
|
240
|
+
}), [selected, isDisabled]);
|
|
241
|
+
return /*#__PURE__*/_jsx(ToggleStateContext.Provider, {
|
|
242
|
+
value: state,
|
|
243
|
+
children: /*#__PURE__*/_jsx(IconColorProvider, {
|
|
244
|
+
color: typeof tint === 'string' ? tint : undefined,
|
|
245
|
+
children: /*#__PURE__*/_jsx(AnimatedPressable, {
|
|
246
|
+
ref: ref,
|
|
247
|
+
accessibilityRole: "button"
|
|
248
|
+
// `checked` is what a screen reader reads out as "on"/"off"; the
|
|
249
|
+
// selected state is the entire point of this control, so it is
|
|
250
|
+
// not left to be inferred from the colour.
|
|
251
|
+
,
|
|
252
|
+
accessibilityState: {
|
|
253
|
+
checked: selected,
|
|
254
|
+
disabled: isDisabled,
|
|
255
|
+
selected
|
|
256
|
+
},
|
|
257
|
+
"aria-pressed": selected,
|
|
258
|
+
disabled: isDisabled,
|
|
259
|
+
onPress: handlePress,
|
|
260
|
+
className: cn(slots.root({
|
|
261
|
+
className
|
|
262
|
+
}), selected ? selectedClassName : unselectedClassName),
|
|
263
|
+
...props,
|
|
264
|
+
children: typeof children === 'string' ? /*#__PURE__*/_jsx(Text, {
|
|
265
|
+
className: slots.label({
|
|
266
|
+
className: labelClassName
|
|
267
|
+
}),
|
|
268
|
+
children: children
|
|
269
|
+
}) : children
|
|
270
|
+
})
|
|
271
|
+
})
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
ToggleButtonRoot.displayName = 'ToggleButton';
|
|
275
|
+
/**
|
|
276
|
+
* The label, when the button holds more than a string — an icon beside text.
|
|
277
|
+
* It reads the selected state itself, so composing the two does not mean
|
|
278
|
+
* threading the colour through by hand.
|
|
279
|
+
*/
|
|
280
|
+
function ToggleButtonLabel({
|
|
281
|
+
className,
|
|
282
|
+
children
|
|
283
|
+
}) {
|
|
284
|
+
const {
|
|
285
|
+
selected
|
|
286
|
+
} = useToggleButton();
|
|
287
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
288
|
+
className: cn('font-medium', selected ? 'text-accent-foreground' : 'text-muted-foreground', className),
|
|
289
|
+
children: children
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
ToggleButtonLabel.displayName = 'ToggleButton.Label';
|
|
293
|
+
export const ToggleButton = Object.assign(ToggleButtonRoot, {
|
|
294
|
+
Label: ToggleButtonLabel
|
|
295
|
+
});
|
|
296
|
+
export { ToggleButtonGroup };
|
|
297
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","forwardRef","useCallback","useContext","useMemo","useState","View","tv","useCSSVariable","IconColorProvider","AnimatedPressable","Text","cn","jsx","_jsx","toggleVariants","slots","root","label","variants","variant","default","ghost","size","sm","md","lg","selected","true","false","iconOnly","disabled","compoundVariants","class","defaultVariants","ToggleGroupContext","ToggleButtonGroup","className","selectionMode","value","defaultValue","onValueChange","children","props","ref","isControlled","undefined","internal","setInternal","selection","toggle","id","has","includes","next","filter","item","context","isSelected","Provider","accessibilityRole","displayName","ToggleStateContext","useToggleButton","state","Error","ToggleButtonRoot","labelClassName","selectedProp","defaultSelected","onSelectedChange","selectedClassName","unselectedClassName","onPress","group","isDisabled","onColor","offColor","tint","handlePress","event","color","accessibilityState","checked","ToggleButtonLabel","ToggleButton","Object","assign","Label"],"sourceRoot":"../../../../src","sources":["components/toggle-button/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ export { useDisclosure } from "./use-disclosure.js";
|
|
|
5
5
|
export { useBreakpoint, BREAKPOINTS } from "./use-breakpoint.js";
|
|
6
6
|
export { useKeyboard } from "./use-keyboard.js";
|
|
7
7
|
export { useKeyboardAvoidance } from "./use-keyboard-avoidance.js";
|
|
8
|
+
export { useScrollSections } from "./use-scroll-sections.js";
|
|
8
9
|
export { useDebouncedValue } from "./use-debounced-value.js";
|
|
9
10
|
export { usePrevious } from "./use-previous.js";
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCopyToClipboard","useDisclosure","useBreakpoint","BREAKPOINTS","useKeyboard","useKeyboardAvoidance","useDebouncedValue","usePrevious"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,SACEA,kBAAkB,QAGb,4BAAyB;AAChC,SACEC,aAAa,QAGR,qBAAkB;AACzB,SACEC,aAAa,EACbC,WAAW,QAGN,qBAAkB;AACzB,SAASC,WAAW,QAAgC,mBAAgB;AACpE,SACEC,oBAAoB,QAGf,6BAA0B;AACjC,SAASC,iBAAiB,QAAQ,0BAAuB;AACzD,SAASC,WAAW,QAAQ,mBAAgB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCopyToClipboard","useDisclosure","useBreakpoint","BREAKPOINTS","useKeyboard","useKeyboardAvoidance","useScrollSections","useDebouncedValue","usePrevious"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,SACEA,kBAAkB,QAGb,4BAAyB;AAChC,SACEC,aAAa,QAGR,qBAAkB;AACzB,SACEC,aAAa,EACbC,WAAW,QAGN,qBAAkB;AACzB,SAASC,WAAW,QAAgC,mBAAgB;AACpE,SACEC,oBAAoB,QAGf,6BAA0B;AACjC,SACEC,iBAAiB,QAGZ,0BAAuB;AAC9B,SAASC,iBAAiB,QAAQ,0BAAuB;AACzD,SAASC,WAAW,QAAQ,mBAAgB","ignoreList":[]}
|