@kanso-labs/react-native-kanso-ui 0.8.0 → 0.10.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 (253) 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/badge/index.js +9 -70
  5. package/dist/badge/index.js.map +1 -1
  6. package/dist/button/group.d.ts +5 -0
  7. package/dist/button/group.js +115 -0
  8. package/dist/button/group.js.map +1 -0
  9. package/dist/button/index.d.ts +4 -1
  10. package/dist/button/index.js +45 -23
  11. package/dist/button/index.js.map +1 -1
  12. package/dist/button/palettes.d.ts +2 -0
  13. package/dist/button/slots.js +2 -1
  14. package/dist/button/slots.js.map +1 -1
  15. package/dist/calendar/index.js +351 -182
  16. package/dist/calendar/index.js.map +1 -1
  17. package/dist/calendar/styles.js +33 -2
  18. package/dist/calendar/styles.js.map +1 -1
  19. package/dist/carousel/arrangement.d.ts +5 -0
  20. package/dist/carousel/arrangement.js +123 -0
  21. package/dist/carousel/arrangement.js.map +1 -0
  22. package/dist/chequer/index.js +95 -0
  23. package/dist/chequer/index.js.map +1 -0
  24. package/dist/collection/index.d.ts +157 -0
  25. package/dist/collection/index.js +1331 -0
  26. package/dist/collection/index.js.map +1 -0
  27. package/dist/color-thumb/index.js +56 -0
  28. package/dist/color-thumb/index.js.map +1 -0
  29. package/dist/components/badge/index.d.ts +48 -0
  30. package/dist/components/badge/index.js +122 -0
  31. package/dist/components/badge/index.js.map +1 -0
  32. package/dist/{badge → components/badge}/styles.js +10 -6
  33. package/dist/components/badge/styles.js.map +1 -0
  34. package/dist/components/breadcrumbs/index.d.ts +66 -0
  35. package/dist/components/breadcrumbs/index.js +285 -0
  36. package/dist/components/breadcrumbs/index.js.map +1 -0
  37. package/dist/components/button/index.d.ts +4 -2
  38. package/dist/components/button/index.js +227 -188
  39. package/dist/components/button/index.js.map +1 -1
  40. package/dist/components/button-group/index.d.ts +87 -0
  41. package/dist/components/button-group/index.js +275 -0
  42. package/dist/components/button-group/index.js.map +1 -0
  43. package/dist/components/calendar/index.d.ts +11 -3
  44. package/dist/components/calendar/index.js +60 -45
  45. package/dist/components/calendar/index.js.map +1 -1
  46. package/dist/components/carousel/index.d.ts +72 -0
  47. package/dist/components/carousel/index.js +496 -0
  48. package/dist/components/carousel/index.js.map +1 -0
  49. package/dist/components/checkbox/index.d.ts +7 -1
  50. package/dist/components/checkbox/index.js +183 -138
  51. package/dist/components/checkbox/index.js.map +1 -1
  52. package/dist/components/checkbox-group/index.d.ts +92 -0
  53. package/dist/components/checkbox-group/index.js +306 -0
  54. package/dist/components/checkbox-group/index.js.map +1 -0
  55. package/dist/components/code/index.d.ts +25 -0
  56. package/dist/components/code/index.js +87 -0
  57. package/dist/components/code/index.js.map +1 -0
  58. package/dist/components/color-area/index.d.ts +85 -0
  59. package/dist/components/color-area/index.js +630 -0
  60. package/dist/components/color-area/index.js.map +1 -0
  61. package/dist/components/color-field/index.d.ts +144 -0
  62. package/dist/components/color-field/index.js +516 -0
  63. package/dist/components/color-field/index.js.map +1 -0
  64. package/dist/components/color-picker/index.d.ts +74 -0
  65. package/dist/components/color-picker/index.js +317 -0
  66. package/dist/components/color-picker/index.js.map +1 -0
  67. package/dist/components/color-slider/index.d.ts +82 -0
  68. package/dist/components/color-slider/index.js +456 -0
  69. package/dist/components/color-slider/index.js.map +1 -0
  70. package/dist/components/color-swatch/index.d.ts +46 -0
  71. package/dist/components/color-swatch/index.js +127 -0
  72. package/dist/components/color-swatch/index.js.map +1 -0
  73. package/dist/components/color-swatch-picker/index.d.ts +81 -0
  74. package/dist/components/color-swatch-picker/index.js +287 -0
  75. package/dist/components/color-swatch-picker/index.js.map +1 -0
  76. package/dist/components/color-wheel/index.d.ts +71 -0
  77. package/dist/components/color-wheel/index.js +407 -0
  78. package/dist/components/color-wheel/index.js.map +1 -0
  79. package/dist/components/combo-box/index.d.ts +193 -0
  80. package/dist/components/combo-box/index.js +616 -0
  81. package/dist/components/combo-box/index.js.map +1 -0
  82. package/dist/components/container/index.d.ts +47 -0
  83. package/dist/components/container/index.js +85 -0
  84. package/dist/components/container/index.js.map +1 -0
  85. package/dist/components/date-field/index.d.ts +120 -0
  86. package/dist/components/date-field/index.js +111 -0
  87. package/dist/components/date-field/index.js.map +1 -0
  88. package/dist/components/date-picker/index.d.ts +130 -0
  89. package/dist/components/date-picker/index.js +310 -0
  90. package/dist/components/date-picker/index.js.map +1 -0
  91. package/dist/components/date-range-picker/index.d.ts +139 -0
  92. package/dist/components/date-range-picker/index.js +421 -0
  93. package/dist/components/date-range-picker/index.js.map +1 -0
  94. package/dist/components/disclosure/index.d.ts +94 -0
  95. package/dist/components/disclosure/index.js +365 -0
  96. package/dist/components/disclosure/index.js.map +1 -0
  97. package/dist/components/disclosure-group/index.d.ts +61 -0
  98. package/dist/components/disclosure-group/index.js +100 -0
  99. package/dist/components/disclosure-group/index.js.map +1 -0
  100. package/dist/components/drop-zone/index.d.ts +113 -0
  101. package/dist/components/drop-zone/index.js +304 -0
  102. package/dist/components/drop-zone/index.js.map +1 -0
  103. package/dist/components/fab/index.d.ts +80 -0
  104. package/dist/components/fab/index.js +246 -0
  105. package/dist/components/fab/index.js.map +1 -0
  106. package/dist/components/fab-menu/index.d.ts +120 -0
  107. package/dist/components/fab-menu/index.js +640 -0
  108. package/dist/components/fab-menu/index.js.map +1 -0
  109. package/dist/components/feed/index.d.ts +57 -0
  110. package/dist/components/feed/index.js +167 -0
  111. package/dist/components/feed/index.js.map +1 -0
  112. package/dist/components/form/index.d.ts +3 -2
  113. package/dist/components/form/index.js.map +1 -1
  114. package/dist/components/icon-button/index.d.ts +4 -2
  115. package/dist/components/icon-button/index.js +204 -171
  116. package/dist/components/icon-button/index.js.map +1 -1
  117. package/dist/components/keycap/index.d.ts +27 -0
  118. package/dist/components/keycap/index.js +136 -0
  119. package/dist/components/keycap/index.js.map +1 -0
  120. package/dist/components/list/index.d.ts +15 -158
  121. package/dist/components/list/index.js +21 -1047
  122. package/dist/components/list/index.js.map +1 -1
  123. package/dist/components/list-box/index.d.ts +73 -0
  124. package/dist/components/list-box/index.js +82 -0
  125. package/dist/components/list-box/index.js.map +1 -0
  126. package/dist/components/loading-indicator/index.d.ts +32 -0
  127. package/dist/components/loading-indicator/index.js +174 -0
  128. package/dist/components/loading-indicator/index.js.map +1 -0
  129. package/dist/components/menu/index.js +1 -1
  130. package/dist/components/navigation-tree/index.d.ts +117 -0
  131. package/dist/components/navigation-tree/index.js +135 -0
  132. package/dist/components/navigation-tree/index.js.map +1 -0
  133. package/dist/components/number-field/index.js +132 -143
  134. package/dist/components/number-field/index.js.map +1 -1
  135. package/dist/components/range-calendar/index.d.ts +69 -0
  136. package/dist/components/range-calendar/index.js +144 -0
  137. package/dist/components/range-calendar/index.js.map +1 -0
  138. package/dist/components/search-view/index.d.ts +78 -0
  139. package/dist/components/search-view/index.js +570 -0
  140. package/dist/components/search-view/index.js.map +1 -0
  141. package/dist/components/select/index.d.ts +152 -0
  142. package/dist/components/select/index.js +419 -0
  143. package/dist/components/select/index.js.map +1 -0
  144. package/dist/components/separator/index.d.ts +3 -2
  145. package/dist/components/separator/index.js +29 -26
  146. package/dist/components/separator/index.js.map +1 -1
  147. package/dist/components/slider/index.d.ts +111 -0
  148. package/dist/components/slider/index.js +673 -0
  149. package/dist/components/slider/index.js.map +1 -0
  150. package/dist/components/split-button/index.d.ts +77 -0
  151. package/dist/components/split-button/index.js +354 -0
  152. package/dist/components/split-button/index.js.map +1 -0
  153. package/dist/components/supporting-pane/index.d.ts +44 -0
  154. package/dist/components/supporting-pane/index.js +109 -0
  155. package/dist/components/supporting-pane/index.js.map +1 -0
  156. package/dist/components/tabs/index.d.ts +196 -0
  157. package/dist/components/tabs/index.js +1137 -0
  158. package/dist/components/tabs/index.js.map +1 -0
  159. package/dist/components/text/index.d.ts +1 -1
  160. package/dist/components/text/index.js +49 -21
  161. package/dist/components/text/index.js.map +1 -1
  162. package/dist/components/text-area/index.d.ts +145 -0
  163. package/dist/components/text-area/index.js +231 -0
  164. package/dist/components/text-area/index.js.map +1 -0
  165. package/dist/components/time-field/index.d.ts +43 -0
  166. package/dist/components/time-field/index.js +107 -0
  167. package/dist/components/time-field/index.js.map +1 -0
  168. package/dist/components/time-picker/index.d.ts +65 -0
  169. package/dist/components/time-picker/index.js +1168 -0
  170. package/dist/components/time-picker/index.js.map +1 -0
  171. package/dist/components/toolbar/index.d.ts +53 -0
  172. package/dist/components/toolbar/index.js +185 -0
  173. package/dist/components/toolbar/index.js.map +1 -0
  174. package/dist/components/tooltip/index.d.ts +101 -0
  175. package/dist/components/tooltip/index.js +223 -0
  176. package/dist/components/tooltip/index.js.map +1 -0
  177. package/dist/components/tree/index.d.ts +112 -0
  178. package/dist/components/tree/index.js +157 -0
  179. package/dist/components/tree/index.js.map +1 -0
  180. package/dist/control/group.js +23 -0
  181. package/dist/control/group.js.map +1 -0
  182. package/dist/disclosure/chevron.js +75 -0
  183. package/dist/disclosure/chevron.js.map +1 -0
  184. package/dist/disclosure/index.js +7 -0
  185. package/dist/disclosure/index.js.map +1 -0
  186. package/dist/drop/index.d.ts +54 -0
  187. package/dist/drop/index.js +161 -0
  188. package/dist/drop/index.js.map +1 -0
  189. package/dist/fab/index.d.ts +19 -0
  190. package/dist/fab/index.js +147 -0
  191. package/dist/fab/index.js.map +1 -0
  192. package/dist/field/chevron.js +74 -0
  193. package/dist/field/chevron.js.map +1 -0
  194. package/dist/field/index.d.ts +2 -1
  195. package/dist/field/index.js +350 -153
  196. package/dist/field/index.js.map +1 -1
  197. package/dist/field/styles.js +27 -0
  198. package/dist/field/styles.js.map +1 -1
  199. package/dist/files/index.d.ts +18 -0
  200. package/dist/files/index.js +107 -0
  201. package/dist/files/index.js.map +1 -0
  202. package/dist/form/index.d.ts +6 -4
  203. package/dist/form/index.js +64 -85
  204. package/dist/form/index.js.map +1 -1
  205. package/dist/glyphs/index.js +92 -1
  206. package/dist/glyphs/index.js.map +1 -1
  207. package/dist/i18n/index.js +20 -1
  208. package/dist/i18n/index.js.map +1 -1
  209. package/dist/i18n/messages.js +1394 -34
  210. package/dist/i18n/messages.js.map +1 -1
  211. package/dist/index.d.ts +51 -6
  212. package/dist/index.js +47 -4
  213. package/dist/indicator/paths.js +23 -1
  214. package/dist/indicator/paths.js.map +1 -1
  215. package/dist/modal/index.js +96 -68
  216. package/dist/modal/index.js.map +1 -1
  217. package/dist/navigation/index.js +8 -5
  218. package/dist/navigation/index.js.map +1 -1
  219. package/dist/number/keyboard.js +16 -0
  220. package/dist/number/keyboard.js.map +1 -0
  221. package/dist/overlay/anchored.js +68 -38
  222. package/dist/overlay/anchored.js.map +1 -1
  223. package/dist/overlay/keyboard.js +57 -0
  224. package/dist/overlay/keyboard.js.map +1 -0
  225. package/dist/overlay/panel.js +173 -19
  226. package/dist/overlay/panel.js.map +1 -1
  227. package/dist/overlay/placement.js +16 -2
  228. package/dist/overlay/placement.js.map +1 -1
  229. package/dist/picker/index.js +322 -0
  230. package/dist/picker/index.js.map +1 -0
  231. package/dist/press/index.d.ts +2 -0
  232. package/dist/press/index.js +102 -100
  233. package/dist/press/index.js.map +1 -1
  234. package/dist/row/index.js +77 -69
  235. package/dist/row/index.js.map +1 -1
  236. package/dist/row/styles.js +13 -2
  237. package/dist/row/styles.js.map +1 -1
  238. package/dist/segments/field.js +277 -0
  239. package/dist/segments/field.js.map +1 -0
  240. package/dist/segments/index.js +574 -0
  241. package/dist/segments/index.js.map +1 -0
  242. package/dist/segments/styles.js +24 -0
  243. package/dist/segments/styles.js.map +1 -0
  244. package/dist/separator/index.js +7 -0
  245. package/dist/separator/index.js.map +1 -0
  246. package/dist/slider/index.js +145 -0
  247. package/dist/slider/index.js.map +1 -0
  248. package/dist/swatch/index.js +56 -0
  249. package/dist/swatch/index.js.map +1 -0
  250. package/dist/typography/size.js +14 -0
  251. package/dist/typography/size.js.map +1 -0
  252. package/package.json +11 -2
  253. package/dist/badge/styles.js.map +0 -1
@@ -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 {