@kanso-labs/react-native-kanso-ui 0.9.0 → 0.11.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 (217) hide show
  1. package/README.md +4 -3
  2. package/dist/autocomplete/index.js +15 -1
  3. package/dist/autocomplete/index.js.map +1 -1
  4. package/dist/button/group.d.ts +5 -0
  5. package/dist/button/group.js +115 -0
  6. package/dist/button/group.js.map +1 -0
  7. package/dist/button/index.d.ts +4 -1
  8. package/dist/button/index.js +44 -22
  9. package/dist/button/index.js.map +1 -1
  10. package/dist/button/slots.js +2 -1
  11. package/dist/button/slots.js.map +1 -1
  12. package/dist/calendar/index.js +351 -182
  13. package/dist/calendar/index.js.map +1 -1
  14. package/dist/calendar/styles.js +33 -2
  15. package/dist/calendar/styles.js.map +1 -1
  16. package/dist/carousel/arrangement.d.ts +5 -0
  17. package/dist/carousel/arrangement.js +123 -0
  18. package/dist/carousel/arrangement.js.map +1 -0
  19. package/dist/chequer/index.js +95 -0
  20. package/dist/chequer/index.js.map +1 -0
  21. package/dist/collection/index.d.ts +157 -0
  22. package/dist/collection/index.js +1358 -0
  23. package/dist/collection/index.js.map +1 -0
  24. package/dist/color-thumb/index.js +56 -0
  25. package/dist/color-thumb/index.js.map +1 -0
  26. package/dist/components/button/index.d.ts +4 -2
  27. package/dist/components/button/index.js +227 -188
  28. package/dist/components/button/index.js.map +1 -1
  29. package/dist/components/button-group/index.d.ts +87 -0
  30. package/dist/components/button-group/index.js +275 -0
  31. package/dist/components/button-group/index.js.map +1 -0
  32. package/dist/components/calendar/index.d.ts +11 -3
  33. package/dist/components/calendar/index.js +60 -45
  34. package/dist/components/calendar/index.js.map +1 -1
  35. package/dist/components/carousel/index.d.ts +72 -0
  36. package/dist/components/carousel/index.js +496 -0
  37. package/dist/components/carousel/index.js.map +1 -0
  38. package/dist/components/checkbox-group/index.d.ts +3 -4
  39. package/dist/components/checkbox-group/index.js +1 -1
  40. package/dist/components/checkbox-group/index.js.map +1 -1
  41. package/dist/components/chip/index.d.ts +4 -1
  42. package/dist/components/chip/index.js +229 -161
  43. package/dist/components/chip/index.js.map +1 -1
  44. package/dist/components/color-area/index.d.ts +85 -0
  45. package/dist/components/color-area/index.js +630 -0
  46. package/dist/components/color-area/index.js.map +1 -0
  47. package/dist/components/color-field/index.d.ts +144 -0
  48. package/dist/components/color-field/index.js +516 -0
  49. package/dist/components/color-field/index.js.map +1 -0
  50. package/dist/components/color-picker/index.d.ts +74 -0
  51. package/dist/components/color-picker/index.js +317 -0
  52. package/dist/components/color-picker/index.js.map +1 -0
  53. package/dist/components/color-slider/index.d.ts +82 -0
  54. package/dist/components/color-slider/index.js +456 -0
  55. package/dist/components/color-slider/index.js.map +1 -0
  56. package/dist/components/color-swatch/index.d.ts +46 -0
  57. package/dist/components/color-swatch/index.js +127 -0
  58. package/dist/components/color-swatch/index.js.map +1 -0
  59. package/dist/components/color-swatch-picker/index.d.ts +81 -0
  60. package/dist/components/color-swatch-picker/index.js +287 -0
  61. package/dist/components/color-swatch-picker/index.js.map +1 -0
  62. package/dist/components/color-wheel/index.d.ts +71 -0
  63. package/dist/components/color-wheel/index.js +407 -0
  64. package/dist/components/color-wheel/index.js.map +1 -0
  65. package/dist/components/combo-box/index.d.ts +193 -0
  66. package/dist/components/combo-box/index.js +616 -0
  67. package/dist/components/combo-box/index.js.map +1 -0
  68. package/dist/components/date-field/index.d.ts +120 -0
  69. package/dist/components/date-field/index.js +111 -0
  70. package/dist/components/date-field/index.js.map +1 -0
  71. package/dist/components/date-picker/index.d.ts +130 -0
  72. package/dist/components/date-picker/index.js +310 -0
  73. package/dist/components/date-picker/index.js.map +1 -0
  74. package/dist/components/date-range-picker/index.d.ts +139 -0
  75. package/dist/components/date-range-picker/index.js +421 -0
  76. package/dist/components/date-range-picker/index.js.map +1 -0
  77. package/dist/components/dialog/index.d.ts +5 -5
  78. package/dist/components/dialog/index.js +5 -5
  79. package/dist/components/dialog/index.js.map +1 -1
  80. package/dist/components/disclosure/index.d.ts +94 -0
  81. package/dist/components/disclosure/index.js +365 -0
  82. package/dist/components/disclosure/index.js.map +1 -0
  83. package/dist/components/disclosure-group/index.d.ts +61 -0
  84. package/dist/components/disclosure-group/index.js +100 -0
  85. package/dist/components/disclosure-group/index.js.map +1 -0
  86. package/dist/components/drop-zone/index.d.ts +113 -0
  87. package/dist/components/drop-zone/index.js +304 -0
  88. package/dist/components/drop-zone/index.js.map +1 -0
  89. package/dist/components/fab/index.d.ts +1 -1
  90. package/dist/components/fab/index.js +91 -76
  91. package/dist/components/fab/index.js.map +1 -1
  92. package/dist/components/form/index.d.ts +3 -2
  93. package/dist/components/form/index.js.map +1 -1
  94. package/dist/components/icon-button/index.d.ts +4 -2
  95. package/dist/components/icon-button/index.js +204 -171
  96. package/dist/components/icon-button/index.js.map +1 -1
  97. package/dist/components/list/index.d.ts +15 -158
  98. package/dist/components/list/index.js +21 -1047
  99. package/dist/components/list/index.js.map +1 -1
  100. package/dist/components/list-box/index.d.ts +73 -0
  101. package/dist/components/list-box/index.js +82 -0
  102. package/dist/components/list-box/index.js.map +1 -0
  103. package/dist/components/loading-indicator/index.d.ts +32 -0
  104. package/dist/components/loading-indicator/index.js +174 -0
  105. package/dist/components/loading-indicator/index.js.map +1 -0
  106. package/dist/components/menu/index.d.ts +3 -3
  107. package/dist/components/menu/index.js +3 -3
  108. package/dist/components/menu/index.js.map +1 -1
  109. package/dist/components/navigation-tree/index.d.ts +117 -0
  110. package/dist/components/navigation-tree/index.js +135 -0
  111. package/dist/components/navigation-tree/index.js.map +1 -0
  112. package/dist/components/number-field/index.js +132 -143
  113. package/dist/components/number-field/index.js.map +1 -1
  114. package/dist/components/popover/index.d.ts +2 -2
  115. package/dist/components/popover/index.js +2 -2
  116. package/dist/components/popover/index.js.map +1 -1
  117. package/dist/components/range-calendar/index.d.ts +69 -0
  118. package/dist/components/range-calendar/index.js +144 -0
  119. package/dist/components/range-calendar/index.js.map +1 -0
  120. package/dist/components/search-view/index.d.ts +79 -0
  121. package/dist/components/search-view/index.js +571 -0
  122. package/dist/components/search-view/index.js.map +1 -0
  123. package/dist/components/select/index.d.ts +152 -0
  124. package/dist/components/select/index.js +419 -0
  125. package/dist/components/select/index.js.map +1 -0
  126. package/dist/components/sheet/index.d.ts +16 -7
  127. package/dist/components/sheet/index.js +157 -152
  128. package/dist/components/sheet/index.js.map +1 -1
  129. package/dist/components/slider/index.d.ts +111 -0
  130. package/dist/components/slider/index.js +673 -0
  131. package/dist/components/slider/index.js.map +1 -0
  132. package/dist/components/split-button/index.d.ts +77 -0
  133. package/dist/components/split-button/index.js +354 -0
  134. package/dist/components/split-button/index.js.map +1 -0
  135. package/dist/components/table/index.d.ts +391 -0
  136. package/dist/components/table/index.js +1708 -0
  137. package/dist/components/table/index.js.map +1 -0
  138. package/dist/components/tabs/index.d.ts +196 -0
  139. package/dist/components/tabs/index.js +1137 -0
  140. package/dist/components/tabs/index.js.map +1 -0
  141. package/dist/components/time-field/index.d.ts +43 -0
  142. package/dist/components/time-field/index.js +107 -0
  143. package/dist/components/time-field/index.js.map +1 -0
  144. package/dist/components/time-picker/index.d.ts +65 -0
  145. package/dist/components/time-picker/index.js +1168 -0
  146. package/dist/components/time-picker/index.js.map +1 -0
  147. package/dist/components/token-field/index.d.ts +105 -0
  148. package/dist/components/token-field/index.js +574 -0
  149. package/dist/components/token-field/index.js.map +1 -0
  150. package/dist/components/tooltip/index.d.ts +102 -0
  151. package/dist/components/tooltip/index.js +223 -0
  152. package/dist/components/tooltip/index.js.map +1 -0
  153. package/dist/components/tree/index.d.ts +112 -0
  154. package/dist/components/tree/index.js +157 -0
  155. package/dist/components/tree/index.js.map +1 -0
  156. package/dist/disclosure/chevron.js +75 -0
  157. package/dist/disclosure/chevron.js.map +1 -0
  158. package/dist/disclosure/index.js +7 -0
  159. package/dist/disclosure/index.js.map +1 -0
  160. package/dist/drop/index.d.ts +54 -0
  161. package/dist/drop/index.js +161 -0
  162. package/dist/drop/index.js.map +1 -0
  163. package/dist/field/chevron.js +74 -0
  164. package/dist/field/chevron.js.map +1 -0
  165. package/dist/field/index.d.ts +2 -1
  166. package/dist/field/index.js +359 -154
  167. package/dist/field/index.js.map +1 -1
  168. package/dist/field/styles.js +18 -1
  169. package/dist/field/styles.js.map +1 -1
  170. package/dist/files/index.d.ts +18 -0
  171. package/dist/files/index.js +107 -0
  172. package/dist/files/index.js.map +1 -0
  173. package/dist/form/index.d.ts +5 -2
  174. package/dist/form/index.js +64 -85
  175. package/dist/form/index.js.map +1 -1
  176. package/dist/glyphs/index.js +128 -1
  177. package/dist/glyphs/index.js.map +1 -1
  178. package/dist/i18n/index.js +36 -1
  179. package/dist/i18n/index.js.map +1 -1
  180. package/dist/i18n/messages.js +1734 -34
  181. package/dist/i18n/messages.js.map +1 -1
  182. package/dist/index.d.ts +37 -3
  183. package/dist/index.js +36 -3
  184. package/dist/indicator/paths.js +23 -1
  185. package/dist/indicator/paths.js.map +1 -1
  186. package/dist/modal/index.js +92 -77
  187. package/dist/modal/index.js.map +1 -1
  188. package/dist/number/keyboard.js +16 -0
  189. package/dist/number/keyboard.js.map +1 -0
  190. package/dist/overlay/anchored.js +68 -38
  191. package/dist/overlay/anchored.js.map +1 -1
  192. package/dist/overlay/keyboard.js +57 -0
  193. package/dist/overlay/keyboard.js.map +1 -0
  194. package/dist/overlay/panel.js +173 -19
  195. package/dist/overlay/panel.js.map +1 -1
  196. package/dist/overlay/placement.js +13 -1
  197. package/dist/overlay/placement.js.map +1 -1
  198. package/dist/picker/index.js +322 -0
  199. package/dist/picker/index.js.map +1 -0
  200. package/dist/press/index.d.ts +2 -0
  201. package/dist/press/index.js +102 -100
  202. package/dist/press/index.js.map +1 -1
  203. package/dist/row/index.js +77 -69
  204. package/dist/row/index.js.map +1 -1
  205. package/dist/row/styles.js +13 -2
  206. package/dist/row/styles.js.map +1 -1
  207. package/dist/segments/field.js +277 -0
  208. package/dist/segments/field.js.map +1 -0
  209. package/dist/segments/index.js +574 -0
  210. package/dist/segments/index.js.map +1 -0
  211. package/dist/segments/styles.js +24 -0
  212. package/dist/segments/styles.js.map +1 -0
  213. package/dist/slider/index.js +145 -0
  214. package/dist/slider/index.js.map +1 -0
  215. package/dist/swatch/index.js +56 -0
  216. package/dist/swatch/index.js.map +1 -0
  217. package/package.json +11 -2
@@ -3,12 +3,14 @@ import { useTheme } from "../../theme/scope.js";
3
3
  import { composeStyles, themedStyles } from "../../theme/styles.js";
4
4
  import { hitSlop, usePressFeedback } from "../../press/index.js";
5
5
  import { useTypeRole } from "../../typography/roles.js";
6
- import { AnimatedPressable, HEIGHTS, OUTLINE_WIDTHS, PRESSED_CORNERS, buttonStyles, toggleState, useButtonAction, useCorner, useSlotTrigger } from "../../button/index.js";
6
+ import { AnimatedPressable, HEIGHTS, OUTLINE_WIDTHS, PRESSED_CORNERS, buttonStyles, pressThen, toggleState, useButtonAction, useCorner, useSlotTrigger } from "../../button/index.js";
7
+ import { ButtonGroupItemContext, groupCornersOf, groupPressHandlers, groupSelectionOf, groupStyles, groupWidthThen, useGroupShift } from "../../button/group.js";
7
8
  import { palettesOf } from "../../button/palettes.js";
8
9
  import { BUSY, CONCEALED, PendingContent, PendingRing, pendingStyles, usePending } from "../../button/pending.js";
9
10
  import { c } from "react/compiler-runtime";
10
11
  import { StyleSheet, Text, useWindowDimensions } from "react-native";
11
- import Animated from "react-native-reanimated";
12
+ import Animated, { useSharedValue } from "react-native-reanimated";
13
+ import { use } from "react";
12
14
  import { jsx, jsxs } from "react/jsx-runtime";
13
15
  //#region src/components/button/index.tsx
14
16
  const DISABLED = {
@@ -161,12 +163,14 @@ const outlinedSizesOf = themedStyles((theme) => {
161
163
  * `style`, `ref` and `testID` land on the `Pressable`.
162
164
  */
163
165
  function Button(t0) {
164
- const $ = c(89);
166
+ const $ = c(100);
167
+ let accessibilityHint;
165
168
  let children;
166
169
  let defaultSelected;
167
170
  let delayLongPress;
168
171
  let href;
169
172
  let icon;
173
+ let id;
170
174
  let isSelected;
171
175
  let onBlur;
172
176
  let onChange;
@@ -179,6 +183,7 @@ function Button(t0) {
179
183
  let onPressIn;
180
184
  let onPressOut;
181
185
  let ownHitSlop;
186
+ let ownSize;
182
187
  let pendingLabel;
183
188
  let props;
184
189
  let ref;
@@ -189,146 +194,167 @@ function Button(t0) {
189
194
  let t3;
190
195
  let t4;
191
196
  let t5;
192
- let t6;
193
197
  let type;
194
198
  if ($[0] !== t0) {
195
- ({children, defaultSelected, delayLongPress, disableRipple: t1, hitSlop: ownHitSlop, href, icon, isDisabled: t2, isPending: t3, isSelected, onBlur, onChange, onFocus, onHoverIn, onHoverOut, onLayout, onLongPress, onPress, onPressIn, onPressOut, pendingLabel, ref, shape: t4, size: t5, slot, style, type, variant: t6, ...props} = t0);
199
+ ({accessibilityHint, children, defaultSelected, delayLongPress, disableRipple: t1, hitSlop: ownHitSlop, href, icon, id, isDisabled: t2, isPending: t3, isSelected, onBlur, onChange, onFocus, onHoverIn, onHoverOut, onLayout, onLongPress, onPress, onPressIn, onPressOut, pendingLabel, ref, shape: t4, size: ownSize, slot, style, type, variant: t5, ...props} = t0);
196
200
  $[0] = t0;
197
- $[1] = children;
198
- $[2] = defaultSelected;
199
- $[3] = delayLongPress;
200
- $[4] = href;
201
- $[5] = icon;
202
- $[6] = isSelected;
203
- $[7] = onBlur;
204
- $[8] = onChange;
205
- $[9] = onFocus;
206
- $[10] = onHoverIn;
207
- $[11] = onHoverOut;
208
- $[12] = onLayout;
209
- $[13] = onLongPress;
210
- $[14] = onPress;
211
- $[15] = onPressIn;
212
- $[16] = onPressOut;
213
- $[17] = ownHitSlop;
214
- $[18] = pendingLabel;
215
- $[19] = props;
216
- $[20] = ref;
217
- $[21] = slot;
218
- $[22] = style;
219
- $[23] = t1;
220
- $[24] = t2;
221
- $[25] = t3;
222
- $[26] = t4;
223
- $[27] = t5;
224
- $[28] = t6;
225
- $[29] = type;
201
+ $[1] = accessibilityHint;
202
+ $[2] = children;
203
+ $[3] = defaultSelected;
204
+ $[4] = delayLongPress;
205
+ $[5] = href;
206
+ $[6] = icon;
207
+ $[7] = id;
208
+ $[8] = isSelected;
209
+ $[9] = onBlur;
210
+ $[10] = onChange;
211
+ $[11] = onFocus;
212
+ $[12] = onHoverIn;
213
+ $[13] = onHoverOut;
214
+ $[14] = onLayout;
215
+ $[15] = onLongPress;
216
+ $[16] = onPress;
217
+ $[17] = onPressIn;
218
+ $[18] = onPressOut;
219
+ $[19] = ownHitSlop;
220
+ $[20] = ownSize;
221
+ $[21] = pendingLabel;
222
+ $[22] = props;
223
+ $[23] = ref;
224
+ $[24] = slot;
225
+ $[25] = style;
226
+ $[26] = t1;
227
+ $[27] = t2;
228
+ $[28] = t3;
229
+ $[29] = t4;
230
+ $[30] = t5;
231
+ $[31] = type;
226
232
  } else {
227
- children = $[1];
228
- defaultSelected = $[2];
229
- delayLongPress = $[3];
230
- href = $[4];
231
- icon = $[5];
232
- isSelected = $[6];
233
- onBlur = $[7];
234
- onChange = $[8];
235
- onFocus = $[9];
236
- onHoverIn = $[10];
237
- onHoverOut = $[11];
238
- onLayout = $[12];
239
- onLongPress = $[13];
240
- onPress = $[14];
241
- onPressIn = $[15];
242
- onPressOut = $[16];
243
- ownHitSlop = $[17];
244
- pendingLabel = $[18];
245
- props = $[19];
246
- ref = $[20];
247
- slot = $[21];
248
- style = $[22];
249
- t1 = $[23];
250
- t2 = $[24];
251
- t3 = $[25];
252
- t4 = $[26];
253
- t5 = $[27];
254
- t6 = $[28];
255
- type = $[29];
233
+ accessibilityHint = $[1];
234
+ children = $[2];
235
+ defaultSelected = $[3];
236
+ delayLongPress = $[4];
237
+ href = $[5];
238
+ icon = $[6];
239
+ id = $[7];
240
+ isSelected = $[8];
241
+ onBlur = $[9];
242
+ onChange = $[10];
243
+ onFocus = $[11];
244
+ onHoverIn = $[12];
245
+ onHoverOut = $[13];
246
+ onLayout = $[14];
247
+ onLongPress = $[15];
248
+ onPress = $[16];
249
+ onPressIn = $[17];
250
+ onPressOut = $[18];
251
+ ownHitSlop = $[19];
252
+ ownSize = $[20];
253
+ pendingLabel = $[21];
254
+ props = $[22];
255
+ ref = $[23];
256
+ slot = $[24];
257
+ style = $[25];
258
+ t1 = $[26];
259
+ t2 = $[27];
260
+ t3 = $[28];
261
+ t4 = $[29];
262
+ t5 = $[30];
263
+ type = $[31];
256
264
  }
257
265
  const disableRipple = t1 === void 0 ? false : t1;
258
- const isDisabled = t2 === void 0 ? false : t2;
266
+ const ownDisabled = t2 === void 0 ? false : t2;
259
267
  const isPending = t3 === void 0 ? false : t3;
260
268
  const shape = t4 === void 0 ? "round" : t4;
261
- const size = t5 === void 0 ? "md" : t5;
262
- const variant = t6 === void 0 ? "filled" : t6;
269
+ const variant = t5 === void 0 ? "filled" : t5;
263
270
  const theme = useTheme();
271
+ const group = use(ButtonGroupItemContext);
272
+ const size = ownSize ?? group?.size ?? "md";
273
+ const isDisabled = ownDisabled || group?.isDisabled === true;
274
+ const membership = groupSelectionOf(group, id);
264
275
  const role = useTypeRole(ROLES[size]);
265
276
  const { fontScale } = useWindowDimensions();
266
277
  const pending = href === void 0 && isPending;
267
278
  const ringLabel = usePending(pending, pendingLabel);
268
- const isToggle = variant !== "text" && (defaultSelected !== void 0 || isSelected !== void 0 || onChange !== void 0);
269
- const t7 = slot ?? "default";
270
- let t8;
271
- if ($[30] !== defaultSelected || $[31] !== href || $[32] !== isSelected || $[33] !== isToggle || $[34] !== onChange || $[35] !== onPress || $[36] !== t7 || $[37] !== type) {
272
- t8 = {
279
+ const isToggle = membership === void 0 && variant !== "text" && (defaultSelected !== void 0 || isSelected !== void 0 || onChange !== void 0);
280
+ const t6 = slot ?? "default";
281
+ let t7;
282
+ if ($[32] !== defaultSelected || $[33] !== href || $[34] !== isSelected || $[35] !== isToggle || $[36] !== onChange || $[37] !== onPress || $[38] !== t6 || $[39] !== type) {
283
+ t7 = {
273
284
  defaultSelected,
274
285
  href,
275
286
  isSelected,
276
287
  isToggle,
277
288
  onChange,
278
289
  onPress,
279
- slot: t7,
290
+ slot: t6,
280
291
  type
281
292
  };
282
- $[30] = defaultSelected;
283
- $[31] = href;
284
- $[32] = isSelected;
285
- $[33] = isToggle;
286
- $[34] = onChange;
287
- $[35] = onPress;
288
- $[36] = t7;
289
- $[37] = type;
290
- $[38] = t8;
291
- } else t8 = $[38];
292
- const action = useButtonAction(t8);
293
- let t9;
294
- if ($[39] !== delayLongPress || $[40] !== href || $[41] !== onHoverIn || $[42] !== onHoverOut || $[43] !== onLongPress || $[44] !== ref || $[45] !== slot) {
295
- t9 = {
293
+ $[32] = defaultSelected;
294
+ $[33] = href;
295
+ $[34] = isSelected;
296
+ $[35] = isToggle;
297
+ $[36] = onChange;
298
+ $[37] = onPress;
299
+ $[38] = t6;
300
+ $[39] = type;
301
+ $[40] = t7;
302
+ } else t7 = $[40];
303
+ const action = useButtonAction(t7);
304
+ let t8;
305
+ if ($[41] !== accessibilityHint || $[42] !== delayLongPress || $[43] !== href || $[44] !== onHoverIn || $[45] !== onHoverOut || $[46] !== onLongPress || $[47] !== onPressIn || $[48] !== onPressOut || $[49] !== ref || $[50] !== slot) {
306
+ t8 = {
307
+ accessibilityHint,
296
308
  delayLongPress,
297
309
  href,
298
310
  onHoverIn,
299
311
  onHoverOut,
300
312
  onLongPress,
313
+ onPressIn,
314
+ onPressOut,
301
315
  ref,
302
316
  slot
303
317
  };
304
- $[39] = delayLongPress;
305
- $[40] = href;
306
- $[41] = onHoverIn;
307
- $[42] = onHoverOut;
308
- $[43] = onLongPress;
309
- $[44] = ref;
310
- $[45] = slot;
311
- $[46] = t9;
312
- } else t9 = $[46];
313
- const t10 = useSlotTrigger(t9);
318
+ $[41] = accessibilityHint;
319
+ $[42] = delayLongPress;
320
+ $[43] = href;
321
+ $[44] = onHoverIn;
322
+ $[45] = onHoverOut;
323
+ $[46] = onLongPress;
324
+ $[47] = onPressIn;
325
+ $[48] = onPressOut;
326
+ $[49] = ref;
327
+ $[50] = slot;
328
+ $[51] = t8;
329
+ } else t8 = $[51];
330
+ const t9 = useSlotTrigger(t8);
314
331
  let hoverIn;
315
332
  let hoverOut;
316
333
  let longPress;
334
+ let pressIn;
335
+ let pressOut;
317
336
  let triggerProps;
318
- if ($[47] !== t10) {
319
- ({onHoverIn: hoverIn, onHoverOut: hoverOut, onLongPress: longPress, ...triggerProps} = t10);
320
- $[47] = t10;
321
- $[48] = hoverIn;
322
- $[49] = hoverOut;
323
- $[50] = longPress;
324
- $[51] = triggerProps;
337
+ if ($[52] !== t9) {
338
+ ({onHoverIn: hoverIn, onHoverOut: hoverOut, onLongPress: longPress, onPressIn: pressIn, onPressOut: pressOut, ...triggerProps} = t9);
339
+ $[52] = t9;
340
+ $[53] = hoverIn;
341
+ $[54] = hoverOut;
342
+ $[55] = longPress;
343
+ $[56] = pressIn;
344
+ $[57] = pressOut;
345
+ $[58] = triggerProps;
325
346
  } else {
326
- hoverIn = $[48];
327
- hoverOut = $[49];
328
- longPress = $[50];
329
- triggerProps = $[51];
347
+ hoverIn = $[53];
348
+ hoverOut = $[54];
349
+ longPress = $[55];
350
+ pressIn = $[56];
351
+ pressOut = $[57];
352
+ triggerProps = $[58];
330
353
  }
331
- const colors = palettesOf(theme)[isDisabled ? DISABLED[variant] : variant !== "text" && isToggle ? TOGGLE_PALETTES[variant][action.selected ? "selected" : "unselected"] : variant];
354
+ const toggles = variant !== "text" && (isToggle || membership !== void 0);
355
+ const selected = toggles && (membership?.selected ?? action.selected);
356
+ const colors = palettesOf(theme)[isDisabled ? DISABLED[variant] : variant !== "text" && toggles ? TOGGLE_PALETTES[variant][selected ? "selected" : "unselected"] : variant];
357
+ const width = useSharedValue(0);
332
358
  const feedback = usePressFeedback({
333
359
  color: colors.content,
334
360
  disabled: isDisabled,
@@ -337,121 +363,134 @@ function Button(t0) {
337
363
  onFocus,
338
364
  onHoverIn: hoverIn,
339
365
  onHoverOut: hoverOut,
340
- onPressIn,
341
- onPressOut,
366
+ ...groupPressHandlers(group, width, pressIn, pressOut),
367
+ held: group?.held,
342
368
  pending
343
369
  });
344
370
  const { radii } = theme;
345
- const resting = shape === "square" !== action.selected ? radii[SQUARE_CORNERS[size]] : radii.pill;
346
- const shaped = useCorner(feedback.pressed ? radii[PRESSED_CORNERS[size]] : resting, onLayout);
371
+ const resting = shape === "square" !== selected ? radii[SQUARE_CORNERS[size]] : radii.pill;
372
+ const shaped = useCorner(groupCornersOf(group, feedback, membership?.selected ?? action.selected) ?? (feedback.pressed ? radii[PRESSED_CORNERS[size]] : resting), groupWidthThen(group, width, onLayout));
373
+ const border = variant === "outlined" ? OUTLINE_WIDTHS[size] : 0;
374
+ let t10;
375
+ if ($[59] !== theme) {
376
+ t10 = inlinePaddings(theme);
377
+ $[59] = theme;
378
+ $[60] = t10;
379
+ } else t10 = $[60];
380
+ const shift = useGroupShift(group, t10[size] - border, "padding");
347
381
  const T0 = AnimatedPressable;
348
382
  const t11 = href === void 0 ? "button" : "link";
349
383
  let t12;
350
- if ($[52] !== action.selected || $[53] !== isToggle) {
384
+ if ($[61] !== action || $[62] !== isToggle) {
351
385
  t12 = isToggle ? toggleState(action.selected) : void 0;
352
- $[52] = action.selected;
353
- $[53] = isToggle;
354
- $[54] = t12;
355
- } else t12 = $[54];
356
- const t13 = pending ? BUSY : void 0;
357
- const t14 = feedback.handlers;
358
- let t15;
359
- if ($[55] !== ownHitSlop || $[56] !== size || $[57] !== theme.sizing) {
360
- t15 = ownHitSlop ?? hitSlop(theme.sizing[HEIGHTS[size]]);
361
- $[55] = ownHitSlop;
362
- $[56] = size;
363
- $[57] = theme.sizing;
364
- $[58] = t15;
365
- } else t15 = $[58];
366
- const t16 = shaped.onLayout;
367
- const t17 = pending ? void 0 : longPress;
368
- const t18 = pending ? void 0 : action.onPress;
369
- const t19 = composeStyles(styles.base, sizesOf(theme)[size], variant === "outlined" ? outlinedSizesOf(theme)[size] : void 0, colors.container, shadowOf(variant, feedback, isDisabled, theme), shaped.corner, feedback.ring, style);
370
- let t20;
371
- if ($[59] !== shaped.corner) {
372
- t20 = composeStyles(buttonStyles.clip, shaped.corner);
373
- $[59] = shaped.corner;
374
- $[60] = t20;
375
- } else t20 = $[60];
386
+ $[61] = action;
387
+ $[62] = isToggle;
388
+ $[63] = t12;
389
+ } else t12 = $[63];
390
+ const t13 = membership?.accessibility;
391
+ const t14 = pending ? BUSY : void 0;
392
+ const t15 = feedback.handlers;
393
+ let t16;
394
+ if ($[64] !== ownHitSlop || $[65] !== size || $[66] !== theme.sizing) {
395
+ t16 = ownHitSlop ?? hitSlop(theme.sizing[HEIGHTS[size]]);
396
+ $[64] = ownHitSlop;
397
+ $[65] = size;
398
+ $[66] = theme.sizing;
399
+ $[67] = t16;
400
+ } else t16 = $[67];
401
+ const t17 = shaped.onLayout;
402
+ const t18 = pending ? void 0 : longPress;
403
+ const t19 = pending ? void 0 : membership === void 0 ? action.onPress : pressThen(action.onPress, membership.toggle);
404
+ const t20 = composeStyles(styles.base, sizesOf(theme)[size], variant === "outlined" ? outlinedSizesOf(theme)[size] : void 0, group?.style, colors.container, shadowOf(variant, feedback, isDisabled, theme), shaped.corner, shift, group?.keepsTarget === true ? groupStyles.target : void 0, feedback.ring, style);
376
405
  let t21;
377
- if ($[61] !== feedback.layer || $[62] !== t20) {
378
- t21 = /* @__PURE__ */ jsx(Animated.View, {
379
- style: t20,
406
+ if ($[68] !== shaped.corner) {
407
+ t21 = composeStyles(buttonStyles.clip, shaped.corner);
408
+ $[68] = shaped.corner;
409
+ $[69] = t21;
410
+ } else t21 = $[69];
411
+ let t22;
412
+ if ($[70] !== feedback.layer || $[71] !== t21) {
413
+ t22 = /* @__PURE__ */ jsx(Animated.View, {
414
+ style: t21,
380
415
  children: feedback.layer
381
416
  });
382
- $[61] = feedback.layer;
383
- $[62] = t20;
384
- $[63] = t21;
385
- } else t21 = $[63];
386
- const t22 = icon === void 0 ? null : /* @__PURE__ */ jsx(PendingContent, {
417
+ $[70] = feedback.layer;
418
+ $[71] = t21;
419
+ $[72] = t22;
420
+ } else t22 = $[72];
421
+ const t23 = icon === void 0 ? null : /* @__PURE__ */ jsx(PendingContent, {
387
422
  isPending: pending,
388
423
  children: /* @__PURE__ */ jsx(IconStyleContext, {
389
424
  value: iconStyleOf(colors.content, size),
390
425
  children: icon
391
426
  })
392
427
  });
393
- const t23 = children === void 0 ? null : /* @__PURE__ */ jsx(Text, {
428
+ const t24 = children === void 0 ? null : /* @__PURE__ */ jsx(Text, {
394
429
  ...pending ? CONCEALED : void 0,
395
430
  style: composeStyles(role, styles.label, colors.label, pending ? pendingStyles.hidden : void 0),
396
431
  children
397
432
  });
398
- let t24;
399
- if ($[64] !== colors || $[65] !== fontScale || $[66] !== pending || $[67] !== ringLabel || $[68] !== size || $[69] !== theme.typography) {
400
- t24 = pending ? /* @__PURE__ */ jsx(PendingRing, {
433
+ let t25;
434
+ if ($[73] !== colors || $[74] !== fontScale || $[75] !== pending || $[76] !== ringLabel || $[77] !== size || $[78] !== theme.typography) {
435
+ t25 = pending ? /* @__PURE__ */ jsx(PendingRing, {
401
436
  color: colors.content,
402
437
  diameter: theme.typography[`${ROLES[size]}Size`] * fontScale,
403
438
  label: ringLabel
404
439
  }) : null;
405
- $[64] = colors;
406
- $[65] = fontScale;
407
- $[66] = pending;
408
- $[67] = ringLabel;
409
- $[68] = size;
410
- $[69] = theme.typography;
411
- $[70] = t24;
412
- } else t24 = $[70];
413
- let t25;
414
- if ($[71] !== T0 || $[72] !== feedback.handlers || $[73] !== isDisabled || $[74] !== props || $[75] !== shaped.onLayout || $[76] !== t11 || $[77] !== t12 || $[78] !== t13 || $[79] !== t15 || $[80] !== t17 || $[81] !== t18 || $[82] !== t19 || $[83] !== t21 || $[84] !== t22 || $[85] !== t23 || $[86] !== t24 || $[87] !== triggerProps) {
415
- t25 = /* @__PURE__ */ jsxs(T0, {
440
+ $[73] = colors;
441
+ $[74] = fontScale;
442
+ $[75] = pending;
443
+ $[76] = ringLabel;
444
+ $[77] = size;
445
+ $[78] = theme.typography;
446
+ $[79] = t25;
447
+ } else t25 = $[79];
448
+ let t26;
449
+ if ($[80] !== T0 || $[81] !== feedback.handlers || $[82] !== id || $[83] !== isDisabled || $[84] !== props || $[85] !== shaped.onLayout || $[86] !== t11 || $[87] !== t12 || $[88] !== t13 || $[89] !== t14 || $[90] !== t16 || $[91] !== t18 || $[92] !== t19 || $[93] !== t20 || $[94] !== t22 || $[95] !== t23 || $[96] !== t24 || $[97] !== t25 || $[98] !== triggerProps) {
450
+ t26 = /* @__PURE__ */ jsxs(T0, {
451
+ id,
416
452
  role: t11,
417
453
  ...t12,
418
454
  ...t13,
455
+ ...t14,
419
456
  ...props,
420
457
  ...triggerProps,
421
- ...t14,
458
+ ...t15,
422
459
  disabled: isDisabled,
423
- hitSlop: t15,
424
- onLayout: t16,
425
- onLongPress: t17,
426
- onPress: t18,
427
- style: t19,
460
+ hitSlop: t16,
461
+ onLayout: t17,
462
+ onLongPress: t18,
463
+ onPress: t19,
464
+ style: t20,
428
465
  children: [
429
- t21,
430
466
  t22,
431
467
  t23,
432
- t24
468
+ t24,
469
+ t25
433
470
  ]
434
471
  });
435
- $[71] = T0;
436
- $[72] = feedback.handlers;
437
- $[73] = isDisabled;
438
- $[74] = props;
439
- $[75] = shaped.onLayout;
440
- $[76] = t11;
441
- $[77] = t12;
442
- $[78] = t13;
443
- $[79] = t15;
444
- $[80] = t17;
445
- $[81] = t18;
446
- $[82] = t19;
447
- $[83] = t21;
448
- $[84] = t22;
449
- $[85] = t23;
450
- $[86] = t24;
451
- $[87] = triggerProps;
452
- $[88] = t25;
453
- } else t25 = $[88];
454
- return t25;
472
+ $[80] = T0;
473
+ $[81] = feedback.handlers;
474
+ $[82] = id;
475
+ $[83] = isDisabled;
476
+ $[84] = props;
477
+ $[85] = shaped.onLayout;
478
+ $[86] = t11;
479
+ $[87] = t12;
480
+ $[88] = t13;
481
+ $[89] = t14;
482
+ $[90] = t16;
483
+ $[91] = t18;
484
+ $[92] = t19;
485
+ $[93] = t20;
486
+ $[94] = t22;
487
+ $[95] = t23;
488
+ $[96] = t24;
489
+ $[97] = t25;
490
+ $[98] = triggerProps;
491
+ $[99] = t26;
492
+ } else t26 = $[99];
493
+ return t26;
455
494
  }
456
495
  function iconStyleOf(color, size) {
457
496
  return {