panelui-native 0.9.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.
Files changed (105) hide show
  1. package/README.md +5 -3
  2. package/lib/module/components/bottom-sheet/index.js +38 -2
  3. package/lib/module/components/bottom-sheet/index.js.map +1 -1
  4. package/lib/module/components/button/index.js +19 -1
  5. package/lib/module/components/button/index.js.map +1 -1
  6. package/lib/module/components/frame/index.js +128 -15
  7. package/lib/module/components/frame/index.js.map +1 -1
  8. package/lib/module/components/input/index.js +107 -15
  9. package/lib/module/components/input/index.js.map +1 -1
  10. package/lib/module/components/popover/index.js +22 -11
  11. package/lib/module/components/popover/index.js.map +1 -1
  12. package/lib/module/components/progress/index.js +52 -2
  13. package/lib/module/components/progress/index.js.map +1 -1
  14. package/lib/module/components/radio-group/index.js +34 -7
  15. package/lib/module/components/radio-group/index.js.map +1 -1
  16. package/lib/module/components/section-rail/index.js +355 -0
  17. package/lib/module/components/section-rail/index.js.map +1 -0
  18. package/lib/module/components/select/index.js +245 -56
  19. package/lib/module/components/select/index.js.map +1 -1
  20. package/lib/module/components/slider/index.js +355 -0
  21. package/lib/module/components/slider/index.js.map +1 -0
  22. package/lib/module/components/switch/index.js +10 -1
  23. package/lib/module/components/switch/index.js.map +1 -1
  24. package/lib/module/components/tabs/index.js +186 -16
  25. package/lib/module/components/tabs/index.js.map +1 -1
  26. package/lib/module/components/toggle-button/index.js +297 -0
  27. package/lib/module/components/toggle-button/index.js.map +1 -0
  28. package/lib/module/hooks/index.js +1 -0
  29. package/lib/module/hooks/index.js.map +1 -1
  30. package/lib/module/hooks/use-keyboard-avoidance.js +57 -8
  31. package/lib/module/hooks/use-keyboard-avoidance.js.map +1 -1
  32. package/lib/module/hooks/use-scroll-sections.js +89 -0
  33. package/lib/module/hooks/use-scroll-sections.js.map +1 -0
  34. package/lib/module/index.js +4 -1
  35. package/lib/module/index.js.map +1 -1
  36. package/lib/module/native/index.js.map +1 -1
  37. package/lib/module/primitives/keyboard-avoider.js +2 -0
  38. package/lib/module/primitives/keyboard-avoider.js.map +1 -1
  39. package/lib/module/utils/haptics.js +57 -0
  40. package/lib/module/utils/haptics.js.map +1 -0
  41. package/lib/typescript/src/components/bottom-sheet/index.d.ts.map +1 -1
  42. package/lib/typescript/src/components/button/index.d.ts +9 -4
  43. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  44. package/lib/typescript/src/components/frame/index.d.ts +47 -7
  45. package/lib/typescript/src/components/frame/index.d.ts.map +1 -1
  46. package/lib/typescript/src/components/input/index.d.ts +113 -2
  47. package/lib/typescript/src/components/input/index.d.ts.map +1 -1
  48. package/lib/typescript/src/components/popover/index.d.ts +7 -1
  49. package/lib/typescript/src/components/popover/index.d.ts.map +1 -1
  50. package/lib/typescript/src/components/progress/index.d.ts +33 -0
  51. package/lib/typescript/src/components/progress/index.d.ts.map +1 -1
  52. package/lib/typescript/src/components/radio-group/index.d.ts +7 -0
  53. package/lib/typescript/src/components/radio-group/index.d.ts.map +1 -1
  54. package/lib/typescript/src/components/section-rail/index.d.ts +115 -0
  55. package/lib/typescript/src/components/section-rail/index.d.ts.map +1 -0
  56. package/lib/typescript/src/components/select/index.d.ts +46 -7
  57. package/lib/typescript/src/components/select/index.d.ts.map +1 -1
  58. package/lib/typescript/src/components/slider/index.d.ts +203 -0
  59. package/lib/typescript/src/components/slider/index.d.ts.map +1 -0
  60. package/lib/typescript/src/components/switch/index.d.ts.map +1 -1
  61. package/lib/typescript/src/components/tabs/index.d.ts +46 -4
  62. package/lib/typescript/src/components/tabs/index.d.ts.map +1 -1
  63. package/lib/typescript/src/components/toggle-button/index.d.ts +244 -0
  64. package/lib/typescript/src/components/toggle-button/index.d.ts.map +1 -0
  65. package/lib/typescript/src/hooks/index.d.ts +1 -0
  66. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  67. package/lib/typescript/src/hooks/use-keyboard-avoidance.d.ts +10 -1
  68. package/lib/typescript/src/hooks/use-keyboard-avoidance.d.ts.map +1 -1
  69. package/lib/typescript/src/hooks/use-scroll-sections.d.ts +31 -0
  70. package/lib/typescript/src/hooks/use-scroll-sections.d.ts.map +1 -0
  71. package/lib/typescript/src/index.d.ts +6 -3
  72. package/lib/typescript/src/index.d.ts.map +1 -1
  73. package/lib/typescript/src/native/index.d.ts +16 -1
  74. package/lib/typescript/src/native/index.d.ts.map +1 -1
  75. package/lib/typescript/src/primitives/keyboard-avoider.d.ts +8 -1
  76. package/lib/typescript/src/primitives/keyboard-avoider.d.ts.map +1 -1
  77. package/lib/typescript/src/utils/haptics.d.ts +12 -0
  78. package/lib/typescript/src/utils/haptics.d.ts.map +1 -0
  79. package/package.json +5 -1
  80. package/src/components/bottom-sheet/index.tsx +38 -2
  81. package/src/components/button/index.tsx +26 -5
  82. package/src/components/frame/index.tsx +175 -29
  83. package/src/components/input/index.tsx +122 -16
  84. package/src/components/popover/index.tsx +49 -24
  85. package/src/components/progress/index.tsx +81 -1
  86. package/src/components/radio-group/index.tsx +55 -8
  87. package/src/components/section-rail/index.tsx +459 -0
  88. package/src/components/select/index.tsx +265 -52
  89. package/src/components/slider/index.tsx +371 -0
  90. package/src/components/switch/index.tsx +8 -1
  91. package/src/components/tabs/index.tsx +208 -28
  92. package/src/components/toggle-button/index.tsx +374 -0
  93. package/src/hooks/index.ts +5 -0
  94. package/src/hooks/use-keyboard-avoidance.ts +73 -7
  95. package/src/hooks/use-scroll-sections.ts +127 -0
  96. package/src/index.ts +37 -6
  97. package/src/native/index.ts +13 -1
  98. package/src/primitives/keyboard-avoider.tsx +9 -1
  99. package/src/utils/haptics.ts +63 -0
  100. package/theme.css +6 -2
  101. package/lib/module/components/inline-select/index.js +0 -284
  102. package/lib/module/components/inline-select/index.js.map +0 -1
  103. package/lib/typescript/src/components/inline-select/index.d.ts +0 -48
  104. package/lib/typescript/src/components/inline-select/index.d.ts.map +0 -1
  105. package/src/components/inline-select/index.tsx +0 -332
@@ -1,8 +1,27 @@
1
1
  "use strict";
2
2
 
3
- import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
4
- import { Pressable, View } from 'react-native';
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
- }), [resolvedValue, setValue, registerLayout, layouts]);
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: "absolute bottom-1 top-1 left-0 rounded-md bg-popover shadow-sm"
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
- return /*#__PURE__*/_jsxs(View, {
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('flex-row rounded-lg bg-muted p-1', className),
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__*/_jsx(Pressable, {
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('flex-1 items-center justify-center rounded-md py-1.5', className),
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: active ? 'text-foreground' : 'text-muted-foreground',
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
- if (context.value !== value) return null;
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
- entering: FadeIn.duration(150),
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","active","handleLayout","event","nativeEvent","accessibilityState","selected","onPress","onLayout","size","weight","TabsContent","entering","duration","Tabs","Object","assign","List","Trigger","Content"],"sourceRoot":"../../../../src","sources":["components/tabs/index.tsx"],"mappings":"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","ignoreList":[]}
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":[]}