@sanity/ui 0.37.10 → 0.37.13

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 (242) hide show
  1. package/lib/dts/src/components/autocomplete/autocomplete.d.ts +2 -2
  2. package/lib/dts/src/components/autocomplete/autocomplete.d.ts.map +1 -1
  3. package/lib/dts/src/components/autocomplete/autocomplete.styles.d.ts.map +1 -1
  4. package/lib/dts/src/components/autocomplete/constants.d.ts +0 -4
  5. package/lib/dts/src/components/autocomplete/constants.d.ts.map +1 -1
  6. package/lib/dts/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  7. package/lib/dts/src/components/dialog/dialog.d.ts.map +1 -1
  8. package/lib/dts/src/components/dialog/styles.d.ts +1 -1
  9. package/lib/dts/src/components/dialog/styles.d.ts.map +1 -1
  10. package/lib/dts/src/components/hotkeys/hotkeys.d.ts.map +1 -1
  11. package/lib/dts/src/components/menu/menuButton.d.ts.map +1 -1
  12. package/lib/dts/src/components/menu/menuGroup.d.ts.map +1 -1
  13. package/lib/dts/src/components/menu/menuItem.d.ts.map +1 -1
  14. package/lib/dts/src/components/skeleton/skeleton.d.ts.map +1 -1
  15. package/lib/dts/src/hooks/_internal/useUnique.d.ts +2 -3
  16. package/lib/dts/src/hooks/_internal/useUnique.d.ts.map +1 -1
  17. package/lib/dts/src/hooks/index.d.ts +2 -1
  18. package/lib/dts/src/hooks/index.d.ts.map +1 -1
  19. package/lib/dts/src/hooks/useArrayProp.d.ts +7 -0
  20. package/lib/dts/src/hooks/useArrayProp.d.ts.map +1 -0
  21. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts +1 -1
  22. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts.map +1 -1
  23. package/lib/dts/src/hooks/useElementSize.d.ts +7 -0
  24. package/lib/dts/src/hooks/useElementSize.d.ts.map +1 -0
  25. package/lib/dts/src/index.d.ts +1 -0
  26. package/lib/dts/src/index.d.ts.map +1 -1
  27. package/lib/dts/src/observers/elementSizeObserver.d.ts +37 -0
  28. package/lib/dts/src/observers/elementSizeObserver.d.ts.map +1 -0
  29. package/lib/dts/src/observers/index.d.ts +3 -0
  30. package/lib/dts/src/observers/index.d.ts.map +1 -0
  31. package/lib/dts/src/observers/resizeObserver.d.ts +5 -0
  32. package/lib/dts/src/observers/resizeObserver.d.ts.map +1 -0
  33. package/lib/dts/src/primitives/_selectable/selectable.d.ts +1 -2
  34. package/lib/dts/src/primitives/_selectable/selectable.d.ts.map +1 -1
  35. package/lib/dts/src/primitives/avatar/avatar.d.ts.map +1 -1
  36. package/lib/dts/src/primitives/avatar/avatarCounter.d.ts +1 -0
  37. package/lib/dts/src/primitives/avatar/avatarCounter.d.ts.map +1 -1
  38. package/lib/dts/src/primitives/avatar/avatarStack.d.ts +1 -0
  39. package/lib/dts/src/primitives/avatar/avatarStack.d.ts.map +1 -1
  40. package/lib/dts/src/primitives/avatar/styles.d.ts.map +1 -1
  41. package/lib/dts/src/primitives/badge/badge.d.ts.map +1 -1
  42. package/lib/dts/src/primitives/box/box.d.ts.map +1 -1
  43. package/lib/dts/src/primitives/button/button.d.ts.map +1 -1
  44. package/lib/dts/src/primitives/card/card.d.ts.map +1 -1
  45. package/lib/dts/src/primitives/code/code.d.ts.map +1 -1
  46. package/lib/dts/src/primitives/container/container.d.ts.map +1 -1
  47. package/lib/dts/src/primitives/container/styles.d.ts.map +1 -1
  48. package/lib/dts/src/primitives/container/types.d.ts +1 -1
  49. package/lib/dts/src/primitives/container/types.d.ts.map +1 -1
  50. package/lib/dts/src/primitives/flex/flex.d.ts.map +1 -1
  51. package/lib/dts/src/primitives/grid/grid.d.ts.map +1 -1
  52. package/lib/dts/src/primitives/heading/heading.d.ts.map +1 -1
  53. package/lib/dts/src/primitives/inline/inline.d.ts.map +1 -1
  54. package/lib/dts/src/primitives/inline/styles.d.ts.map +1 -1
  55. package/lib/dts/src/primitives/inline/types.d.ts +1 -1
  56. package/lib/dts/src/primitives/inline/types.d.ts.map +1 -1
  57. package/lib/dts/src/primitives/kbd/kbd.d.ts.map +1 -1
  58. package/lib/dts/src/primitives/label/label.d.ts.map +1 -1
  59. package/lib/dts/src/primitives/popover/popover.d.ts.map +1 -1
  60. package/lib/dts/src/primitives/select/styles.d.ts +5 -1
  61. package/lib/dts/src/primitives/select/styles.d.ts.map +1 -1
  62. package/lib/dts/src/primitives/stack/stack.d.ts.map +1 -1
  63. package/lib/dts/src/primitives/stack/styles.d.ts +1 -1
  64. package/lib/dts/src/primitives/stack/styles.d.ts.map +1 -1
  65. package/lib/dts/src/primitives/text/text.d.ts.map +1 -1
  66. package/lib/dts/src/primitives/textArea/textArea.d.ts.map +1 -1
  67. package/lib/dts/src/primitives/textInput/textInput.d.ts.map +1 -1
  68. package/lib/dts/src/primitives/tooltip/tooltip.d.ts.map +1 -1
  69. package/lib/dts/src/primitives/types.d.ts +1 -1
  70. package/lib/dts/src/primitives/types.d.ts.map +1 -1
  71. package/lib/dts/src/styles/border/types.d.ts +5 -5
  72. package/lib/dts/src/styles/border/types.d.ts.map +1 -1
  73. package/lib/dts/src/styles/box/types.d.ts +4 -4
  74. package/lib/dts/src/styles/box/types.d.ts.map +1 -1
  75. package/lib/dts/src/styles/flex/flexItemStyle.d.ts.map +1 -1
  76. package/lib/dts/src/styles/flex/types.d.ts +6 -6
  77. package/lib/dts/src/styles/flex/types.d.ts.map +1 -1
  78. package/lib/dts/src/styles/font/responsiveFont.d.ts +1 -1
  79. package/lib/dts/src/styles/font/responsiveFont.d.ts.map +1 -1
  80. package/lib/dts/src/styles/font/types.d.ts +3 -3
  81. package/lib/dts/src/styles/font/types.d.ts.map +1 -1
  82. package/lib/dts/src/styles/grid/types.d.ts +14 -14
  83. package/lib/dts/src/styles/grid/types.d.ts.map +1 -1
  84. package/lib/dts/src/styles/helpers.d.ts +4 -4
  85. package/lib/dts/src/styles/helpers.d.ts.map +1 -1
  86. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts +12 -12
  87. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts.map +1 -1
  88. package/lib/dts/src/styles/input/textInputStyle.d.ts +4 -1
  89. package/lib/dts/src/styles/input/textInputStyle.d.ts.map +1 -1
  90. package/lib/dts/src/styles/margin/types.d.ts +7 -7
  91. package/lib/dts/src/styles/margin/types.d.ts.map +1 -1
  92. package/lib/dts/src/styles/padding/types.d.ts +7 -7
  93. package/lib/dts/src/styles/padding/types.d.ts.map +1 -1
  94. package/lib/dts/src/styles/radius/types.d.ts +1 -1
  95. package/lib/dts/src/styles/radius/types.d.ts.map +1 -1
  96. package/lib/dts/src/styles/shadow/shadowStyle.d.ts.map +1 -1
  97. package/lib/dts/src/styles/shadow/types.d.ts +1 -1
  98. package/lib/dts/src/styles/shadow/types.d.ts.map +1 -1
  99. package/lib/dts/src/theme/lib/theme/fonts.d.ts +1 -3
  100. package/lib/dts/src/theme/lib/theme/fonts.d.ts.map +1 -1
  101. package/lib/dts/src/theme/studioTheme/fonts.d.ts.map +1 -1
  102. package/lib/dts/src/types/index.d.ts +2 -1
  103. package/lib/dts/src/types/index.d.ts.map +1 -1
  104. package/lib/dts/src/types/placement.d.ts +7 -0
  105. package/lib/dts/src/types/placement.d.ts.map +1 -0
  106. package/lib/dts/src/types/text.d.ts +5 -0
  107. package/lib/dts/src/types/text.d.ts.map +1 -0
  108. package/lib/dts/src/utils/elementQuery/elementQuery.d.ts.map +1 -1
  109. package/lib/dts/src/utils/index.d.ts +0 -1
  110. package/lib/dts/src/utils/index.d.ts.map +1 -1
  111. package/lib/dts/src/utils/virtualList/virtualList.d.ts.map +1 -1
  112. package/lib/sanity-ui.js +738 -627
  113. package/lib/sanity-ui.js.map +1 -1
  114. package/lib/{sanity-ui.modern.js → sanity-ui.modern.mjs} +736 -616
  115. package/lib/sanity-ui.modern.mjs.map +1 -0
  116. package/lib/sanity-ui.module.js +732 -623
  117. package/lib/sanity-ui.module.js.map +1 -1
  118. package/package.json +11 -11
  119. package/src/__workshop__/color/overview.tsx +9 -11
  120. package/src/components/autocomplete/__workshop__/async.tsx +14 -12
  121. package/src/components/autocomplete/__workshop__/constrainedHeight.tsx +36 -0
  122. package/src/components/autocomplete/autocomplete.styles.tsx +0 -1
  123. package/src/components/autocomplete/autocomplete.tsx +14 -7
  124. package/src/components/autocomplete/constants.ts +0 -5
  125. package/src/components/breadcrumbs/breadcrumbs.tsx +3 -2
  126. package/src/components/dialog/dialog.tsx +17 -9
  127. package/src/components/dialog/styles.ts +3 -3
  128. package/src/components/hotkeys/hotkeys.tsx +3 -1
  129. package/src/components/menu/__workshop__/constrainedInBoundary.tsx +11 -14
  130. package/src/components/menu/__workshop__/groups.tsx +1 -1
  131. package/src/components/menu/menuButton.tsx +21 -13
  132. package/src/components/menu/menuGroup.tsx +3 -2
  133. package/src/components/menu/menuItem.tsx +4 -5
  134. package/src/components/skeleton/skeleton.tsx +10 -1
  135. package/src/components/skeleton/textSkeleton.tsx +7 -7
  136. package/src/hooks/_internal/useUnique.ts +4 -5
  137. package/src/hooks/index.ts +2 -1
  138. package/src/hooks/useArrayProp.ts +23 -0
  139. package/src/hooks/useElementRect/useElementRect.ts +4 -16
  140. package/src/hooks/useElementSize.ts +18 -0
  141. package/src/index.ts +1 -0
  142. package/src/observers/elementSizeObserver.ts +116 -0
  143. package/src/observers/index.ts +2 -0
  144. package/src/{utils → observers}/resizeObserver.ts +1 -4
  145. package/src/primitives/_selectable/selectable.tsx +5 -4
  146. package/src/primitives/avatar/avatar.tsx +7 -5
  147. package/src/primitives/avatar/avatarCounter.tsx +14 -12
  148. package/src/primitives/avatar/avatarStack.tsx +19 -13
  149. package/src/primitives/avatar/styles.ts +2 -2
  150. package/src/primitives/badge/badge.tsx +3 -2
  151. package/src/primitives/box/box.tsx +27 -26
  152. package/src/primitives/button/button.tsx +22 -10
  153. package/src/primitives/card/card.tsx +13 -11
  154. package/src/primitives/checkbox/__workshop__/example.tsx +4 -2
  155. package/src/primitives/checkbox/__workshop__/props.tsx +4 -2
  156. package/src/primitives/checkbox/__workshop__/readOnly.tsx +4 -2
  157. package/src/primitives/code/__workshop__/props.tsx +1 -1
  158. package/src/primitives/code/code.tsx +2 -1
  159. package/src/primitives/container/container.tsx +10 -1
  160. package/src/primitives/container/styles.ts +2 -2
  161. package/src/primitives/container/types.ts +1 -1
  162. package/src/primitives/flex/flex.tsx +6 -5
  163. package/src/primitives/grid/__workshop__/responsive.tsx +13 -12
  164. package/src/primitives/grid/grid.tsx +9 -8
  165. package/src/primitives/heading/__workshop__/opticalAlignment.tsx +19 -7
  166. package/src/primitives/heading/heading.tsx +3 -2
  167. package/src/primitives/inline/inline.tsx +12 -6
  168. package/src/primitives/inline/styles.ts +2 -2
  169. package/src/primitives/inline/types.ts +1 -1
  170. package/src/primitives/kbd/kbd.tsx +2 -1
  171. package/src/primitives/label/label.tsx +4 -3
  172. package/src/primitives/popover/__workshop__/{margins.tsx → MarginsStory.tsx} +1 -1
  173. package/src/primitives/popover/__workshop__/{matchReferenceWidth.tsx → MatchReferenceWidthStory.tsx} +0 -0
  174. package/src/primitives/popover/__workshop__/{plain.tsx → PlainStory.tsx} +12 -14
  175. package/src/primitives/popover/__workshop__/{recursive.tsx → RecursiveStory.tsx} +4 -1
  176. package/src/primitives/popover/__workshop__/RightAlignedStory.tsx +60 -0
  177. package/src/primitives/popover/__workshop__/TestStory.tsx +79 -0
  178. package/src/primitives/popover/__workshop__/index.ts +10 -5
  179. package/src/primitives/popover/popover.tsx +5 -3
  180. package/src/primitives/select/select.tsx +9 -9
  181. package/src/primitives/select/styles.ts +10 -4
  182. package/src/primitives/stack/stack.tsx +2 -1
  183. package/src/primitives/stack/styles.ts +3 -3
  184. package/src/primitives/text/__workshop__/opticalAlignment.tsx +15 -5
  185. package/src/primitives/text/text.tsx +3 -2
  186. package/src/primitives/textArea/__workshop__/plain.tsx +23 -18
  187. package/src/primitives/textArea/textArea.tsx +17 -5
  188. package/src/primitives/textInput/__workshop__/clearButton.tsx +14 -8
  189. package/src/primitives/textInput/__workshop__/index.ts +2 -2
  190. package/src/primitives/textInput/__workshop__/plain.tsx +39 -32
  191. package/src/primitives/textInput/__workshop__/tones.tsx +97 -75
  192. package/src/primitives/textInput/__workshop__/typed.tsx +8 -2
  193. package/src/primitives/textInput/textInput.tsx +43 -12
  194. package/src/primitives/tooltip/__workshop__/props.tsx +5 -1
  195. package/src/primitives/tooltip/tooltip.tsx +3 -2
  196. package/src/primitives/types.ts +1 -1
  197. package/src/styles/border/borderStyle.ts +6 -6
  198. package/src/styles/border/types.ts +5 -5
  199. package/src/styles/box/boxStyle.ts +5 -5
  200. package/src/styles/box/types.ts +4 -4
  201. package/src/styles/flex/flexItemStyle.ts +5 -4
  202. package/src/styles/flex/flexStyle.ts +6 -6
  203. package/src/styles/flex/types.ts +6 -6
  204. package/src/styles/font/responsiveFont.ts +7 -27
  205. package/src/styles/font/textAlignStyle.ts +2 -2
  206. package/src/styles/font/types.ts +4 -3
  207. package/src/styles/grid/gridItemStyle.ts +7 -7
  208. package/src/styles/grid/gridStyle.ts +9 -9
  209. package/src/styles/grid/types.ts +14 -14
  210. package/src/styles/helpers.ts +9 -9
  211. package/src/styles/input/responsiveInputPaddingStyle.ts +24 -27
  212. package/src/styles/input/textInputStyle.ts +89 -79
  213. package/src/styles/margin/marginStyle.ts +8 -8
  214. package/src/styles/margin/marginsStyle.test.ts +1 -1
  215. package/src/styles/margin/types.ts +7 -7
  216. package/src/styles/padding/paddingStyle.test.ts +1 -1
  217. package/src/styles/padding/paddingStyle.ts +8 -8
  218. package/src/styles/padding/types.ts +7 -7
  219. package/src/styles/radius/radiusStyle.ts +2 -2
  220. package/src/styles/radius/types.ts +1 -1
  221. package/src/styles/shadow/shadowStyle.ts +2 -5
  222. package/src/styles/shadow/types.ts +1 -1
  223. package/src/theme/lib/theme/fonts.ts +1 -3
  224. package/src/theme/studioTheme/fonts.ts +5 -9
  225. package/src/types/index.ts +2 -2
  226. package/src/types/placement.ts +18 -0
  227. package/src/types/text.ts +4 -0
  228. package/src/utils/elementQuery/elementQuery.tsx +5 -18
  229. package/src/utils/index.ts +0 -1
  230. package/src/utils/layer/layer.tsx +1 -1
  231. package/src/utils/layer/layerProvider.tsx +2 -2
  232. package/src/utils/virtualList/virtualList.tsx +8 -7
  233. package/lib/dts/src/hooks/useResponsiveProp.d.ts +0 -6
  234. package/lib/dts/src/hooks/useResponsiveProp.d.ts.map +0 -1
  235. package/lib/dts/src/types/common.d.ts +0 -11
  236. package/lib/dts/src/types/common.d.ts.map +0 -1
  237. package/lib/dts/src/utils/resizeObserver.d.ts +0 -6
  238. package/lib/dts/src/utils/resizeObserver.d.ts.map +0 -1
  239. package/lib/sanity-ui.modern.js.map +0 -1
  240. package/src/hooks/useResponsiveProp.ts +0 -10
  241. package/src/primitives/popover/__workshop__/rightAligned.tsx +0 -57
  242. package/src/types/common.ts +0 -12
package/lib/sanity-ui.js CHANGED
@@ -2,11 +2,11 @@ var autoId = require('@reach/auto-id');
2
2
  var React = require('react');
3
3
  var ReactIs = require('react-is');
4
4
  var styled = require('styled-components');
5
+ var resizeObserver = require('@juggle/resize-observer');
5
6
  var color$1 = require('@sanity/color');
6
7
  var icons = require('@sanity/icons');
7
8
  var Refractor = require('react-refractor');
8
9
  var reactPopper = require('react-popper');
9
- var resizeObserver = require('@juggle/resize-observer');
10
10
  var ReactDOM = require('react-dom');
11
11
  var maxSizeModifier = require('popper-max-size-modifier');
12
12
  var framerMotion = require('framer-motion');
@@ -117,7 +117,216 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
117
117
  }
118
118
 
119
119
  var EMPTY_ARRAY = [];
120
- var EMPTY_RECORD$1 = {};
120
+ var EMPTY_RECORD = {};
121
+
122
+ /**
123
+ * @internal
124
+ */
125
+
126
+ function _fillCSSObject(keys, value) {
127
+ return keys.reduce(function (style, key) {
128
+ style[key] = value;
129
+ return style;
130
+ }, {});
131
+ }
132
+ /**
133
+ * @public
134
+ */
135
+
136
+ function rem(pixelValue) {
137
+ if (pixelValue === 0) return 0;
138
+ return pixelValue / 16 + "rem";
139
+ }
140
+ /**
141
+ * @internal
142
+ */
143
+
144
+ function _responsive(media, values, callback) {
145
+ var statements = values.map(callback);
146
+ return statements.map(function (statement, mediaIndex) {
147
+ var _ref;
148
+
149
+ if (mediaIndex === 0) return statement;
150
+ return _ref = {}, _ref["@media screen and (min-width: " + media[mediaIndex - 1] + "px)"] = statement, _ref;
151
+ });
152
+ }
153
+ /**
154
+ * @internal
155
+ */
156
+
157
+ function _getArrayProp(val, defaultVal) {
158
+ if (val === undefined) return defaultVal || EMPTY_ARRAY;
159
+ return Array.isArray(val) ? val : [val];
160
+ }
161
+ /**
162
+ * @internal
163
+ */
164
+
165
+ function _getResponsiveSpace(theme, props, spaceIndexes) {
166
+ if (spaceIndexes === void 0) {
167
+ spaceIndexes = EMPTY_ARRAY;
168
+ }
169
+
170
+ if (!Array.isArray(spaceIndexes)) {
171
+ throw new Error('the property must be array of numbers');
172
+ }
173
+
174
+ if (spaceIndexes.length === 0) {
175
+ return null;
176
+ }
177
+
178
+ return _responsive(theme.sanity.media, spaceIndexes, function (spaceIndex) {
179
+ return _fillCSSObject(props, rem(theme.sanity.space[spaceIndex]));
180
+ });
181
+ }
182
+
183
+ /**
184
+ * A utility function getting responsive font styles.
185
+ * @internal
186
+ */
187
+
188
+ function responsiveFont(fontKey, props) {
189
+ var $size = props.$size,
190
+ $weight = props.$weight,
191
+ theme = props.theme;
192
+ var _theme$sanity = theme.sanity,
193
+ fonts = _theme$sanity.fonts,
194
+ media = _theme$sanity.media;
195
+ var _fonts$fontKey = fonts[fontKey],
196
+ family = _fonts$fontKey.family,
197
+ sizes = _fonts$fontKey.sizes,
198
+ weights = _fonts$fontKey.weights;
199
+ var fontWeight = $weight && weights[$weight] || weights.regular; // @todo: make this configurable
200
+
201
+ var defaultSize = sizes[2];
202
+ var base = {
203
+ position: 'relative',
204
+ fontFamily: family,
205
+ fontWeight: fontWeight,
206
+ padding: '1px 0',
207
+ margin: 0,
208
+ '&:before': {
209
+ content: '""',
210
+ display: 'block',
211
+ height: 0
212
+ },
213
+ '&:after': {
214
+ content: '""',
215
+ display: 'block',
216
+ height: 0
217
+ },
218
+ '& > code, & > span': {
219
+ display: 'block'
220
+ },
221
+ '&:not([hidden])': {
222
+ display: 'block'
223
+ }
224
+ };
225
+
226
+ var resp = _responsive(media, $size, function (sizeIndex) {
227
+ return fontSize(sizes[sizeIndex] || defaultSize);
228
+ });
229
+
230
+ return [base].concat(resp);
231
+ }
232
+ function fontSize(size) {
233
+ var ascenderHeight = size.ascenderHeight,
234
+ descenderHeight = size.descenderHeight,
235
+ fontSize = size.fontSize,
236
+ iconSize = size.iconSize,
237
+ letterSpacing = size.letterSpacing,
238
+ lineHeight = size.lineHeight;
239
+ var negHeight = ascenderHeight + descenderHeight;
240
+ var capHeight = lineHeight - negHeight;
241
+ var iconOffset = (capHeight - iconSize) / 2;
242
+ var customIconSize = Math.floor(fontSize * 1.125 / 2) * 2 + 1;
243
+ var customIconOffset = (capHeight - customIconSize) / 2;
244
+ return {
245
+ fontSize: rem(fontSize),
246
+ lineHeight: "calc(" + lineHeight + " / " + fontSize + ")",
247
+ letterSpacing: rem(letterSpacing),
248
+ transform: "translateY(" + rem(descenderHeight) + ")",
249
+ '&:before': {
250
+ marginTop: "calc(" + rem(0 - negHeight) + " - 1px)"
251
+ },
252
+ '&:after': {
253
+ marginBottom: '-1px'
254
+ },
255
+ '& svg:not([data-sanity-icon])': {
256
+ fontSize: "calc(" + customIconSize + " / 16 * 1rem)",
257
+ margin: rem(customIconOffset)
258
+ },
259
+ '& [data-sanity-icon]': {
260
+ fontSize: "calc(" + iconSize + " / 16 * 1rem)",
261
+ margin: rem(iconOffset)
262
+ }
263
+ };
264
+ }
265
+
266
+ /**
267
+ * Get responsive CSS for the `code` font style.
268
+ * @internal
269
+ */
270
+
271
+ function responsiveCodeFontStyle(props) {
272
+ return responsiveFont('code', props);
273
+ }
274
+
275
+ /**
276
+ * Get responsive CSS for the `heading` font style.
277
+ * @internal
278
+ */
279
+
280
+ function responsiveHeadingFont(props) {
281
+ return responsiveFont('heading', props);
282
+ }
283
+
284
+ /**
285
+ * Get responsive CSS for the `label` font style.
286
+ * @internal
287
+ */
288
+
289
+ function responsiveLabelFont(props) {
290
+ return responsiveFont('label', props);
291
+ }
292
+
293
+ /**
294
+ * Get responsive text align styles.
295
+ * @internal
296
+ */
297
+
298
+ function responsiveTextAlignStyle(props) {
299
+ var theme = props.theme;
300
+ return _responsive(theme.sanity.media, props.$align, function (textAlign) {
301
+ return {
302
+ textAlign: textAlign
303
+ };
304
+ });
305
+ }
306
+
307
+ /**
308
+ * Get responsive CSS for the `text` font style.
309
+ * @internal
310
+ */
311
+
312
+ function responsiveTextFont(props) {
313
+ return responsiveFont('text', props);
314
+ }
315
+
316
+ /**
317
+ * This API might change. DO NOT USE IN PRODUCTION.
318
+ * @beta
319
+ */
320
+
321
+ function useArrayProp(val, defaultVal) {
322
+ var __perf_hash__ = JSON.stringify(val != null ? val : defaultVal);
323
+
324
+ return React.useMemo(function () {
325
+ return _getArrayProp(val, defaultVal);
326
+ }, // Improve performance: Keep object identify for a given hash of the value
327
+ // eslint-disable-next-line react-hooks/exhaustive-deps
328
+ [__perf_hash__]);
329
+ }
121
330
 
122
331
  function _getElements(element, elementsArg) {
123
332
  var ret = [element];
@@ -220,26 +429,110 @@ function useClickOutside(listener, elementsArg, boundaryElement) {
220
429
  }
221
430
 
222
431
  /**
223
- * Subscribe to the rect of a DOM element.
432
+ * @internal
433
+ */
434
+
435
+ var _ResizeObserver = typeof window !== 'undefined' && window.ResizeObserver ? window.ResizeObserver : resizeObserver.ResizeObserver;
436
+
437
+ // NOTE: this should NOT have size effects
438
+
439
+ /**
440
+ * @internal
441
+ */
442
+
443
+ var _elementSizeObserver = _createElementSizeObserver();
444
+
445
+ function _createElementRectValueListener() {
446
+ return {
447
+ subscribe: function subscribe(element, subscriber) {
448
+ var resizeObserver = new _ResizeObserver(function (_ref) {
449
+ var entry = _ref[0];
450
+ subscriber({
451
+ _contentRect: entry.contentRect,
452
+ border: {
453
+ width: entry.borderBoxSize[0].inlineSize,
454
+ height: entry.borderBoxSize[0].blockSize
455
+ },
456
+ content: {
457
+ width: entry.contentRect.width,
458
+ height: entry.contentRect.height
459
+ }
460
+ });
461
+ });
462
+ resizeObserver.observe(element);
463
+ return function () {
464
+ resizeObserver.unobserve(element);
465
+ resizeObserver.disconnect();
466
+ };
467
+ }
468
+ };
469
+ }
470
+
471
+ function _createElementSizeObserver() {
472
+ var disposeCache = new WeakMap();
473
+ var subscribersCache = new WeakMap();
474
+ return {
475
+ subscribe: function subscribe(element, subscriber) {
476
+ var subscribers = subscribersCache.get(element) || [];
477
+ var dispose = disposeCache.get(element);
478
+
479
+ if (!subscribersCache.has(element)) {
480
+ subscribersCache.set(element, subscribers);
481
+
482
+ var listener = _createElementRectValueListener(); // listen
483
+
484
+
485
+ dispose = listener.subscribe(element, function (elementRect) {
486
+ for (var _iterator = _createForOfIteratorHelperLoose(subscribers), _step; !(_step = _iterator()).done;) {
487
+ var sub = _step.value;
488
+ sub(elementRect);
489
+ }
490
+ });
491
+ }
492
+
493
+ subscribers.push(subscriber);
494
+ return function () {
495
+ // dispose
496
+ var idx = subscribers.indexOf(subscriber);
497
+
498
+ if (idx > -1) {
499
+ subscribers.splice(idx, 1);
500
+ }
501
+
502
+ if (subscribers.length === 0) {
503
+ // unlisten
504
+ if (dispose) dispose();
505
+ }
506
+ };
507
+ }
508
+ };
509
+ }
510
+
511
+ /**
512
+ * Subscribe to the size of a DOM element.
224
513
  * @beta
225
514
  */
226
515
 
227
- function useElementRect(element) {
516
+ function useElementSize(element) {
228
517
  var _useState = React.useState(null),
229
- rect = _useState[0],
230
- setRect = _useState[1];
518
+ size = _useState[0],
519
+ setSize = _useState[1];
231
520
 
232
521
  React.useEffect(function () {
233
522
  if (!element) return undefined;
234
- var ro = new ResizeObserver(function (entries) {
235
- setRect(entries[0].contentRect);
236
- });
237
- ro.observe(element);
238
- return function () {
239
- return ro.disconnect();
240
- };
523
+ return _elementSizeObserver.subscribe(element, setSize);
241
524
  }, [element]);
242
- return rect;
525
+ return size;
526
+ }
527
+
528
+ /**
529
+ * Subscribe to the rect of a DOM element.
530
+ * @deprecated Use `useElementSize` instead
531
+ */
532
+
533
+ function useElementRect(element) {
534
+ var elementSize = useElementSize(element);
535
+ return (elementSize == null ? void 0 : elementSize._contentRect) || null;
243
536
  }
244
537
 
245
538
  /**
@@ -2328,8 +2621,7 @@ var color = createColorTheme({
2328
2621
 
2329
2622
  var fonts = {
2330
2623
  code: {
2331
- family: '-apple-system-ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace',
2332
- horizontalOffset: 0.075,
2624
+ family: 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace',
2333
2625
  weights: {
2334
2626
  regular: 400,
2335
2627
  medium: 500,
@@ -2375,7 +2667,6 @@ var fonts = {
2375
2667
  },
2376
2668
  heading: {
2377
2669
  family: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", Helvetica, Arial, system-ui, sans-serif',
2378
- horizontalOffset: 0.075,
2379
2670
  weights: {
2380
2671
  regular: 700,
2381
2672
  medium: 800,
@@ -2411,15 +2702,15 @@ var fonts = {
2411
2702
  lineHeight: 33,
2412
2703
  letterSpacing: 0
2413
2704
  }, {
2414
- ascenderHeight: 9,
2415
- descenderHeight: 7,
2705
+ ascenderHeight: 8,
2706
+ descenderHeight: 8,
2416
2707
  fontSize: 33,
2417
2708
  iconSize: 49,
2418
2709
  lineHeight: 39,
2419
2710
  letterSpacing: 0
2420
2711
  }, {
2421
- ascenderHeight: 10,
2422
- descenderHeight: 8,
2712
+ ascenderHeight: 9,
2713
+ descenderHeight: 9,
2423
2714
  fontSize: 38,
2424
2715
  iconSize: 53,
2425
2716
  lineHeight: 45,
@@ -2428,7 +2719,6 @@ var fonts = {
2428
2719
  },
2429
2720
  label: {
2430
2721
  family: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", system-ui, sans-serif',
2431
- horizontalOffset: 0.075,
2432
2722
  weights: {
2433
2723
  regular: 600,
2434
2724
  medium: 700,
@@ -2474,7 +2764,6 @@ var fonts = {
2474
2764
  },
2475
2765
  text: {
2476
2766
  family: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", Helvetica, Arial, system-ui, sans-serif',
2477
- horizontalOffset: 0.075,
2478
2767
  weights: {
2479
2768
  regular: 400,
2480
2769
  medium: 500,
@@ -2793,353 +3082,142 @@ function _createMediaManager(media) {
2793
3082
 
2794
3083
  var handleChange = function handleChange() {
2795
3084
  if (mq.matches) subscriber(index);
2796
- };
2797
-
2798
- if (mq.addEventListener) {
2799
- mq.addEventListener('change', handleChange);
2800
- } else {
2801
- mq.addListener(handleChange);
2802
- }
2803
-
2804
- disposeFns.push(function () {
2805
- if (mq.removeEventListener) {
2806
- mq.removeEventListener('change', handleChange);
2807
- } else {
2808
- mq.removeListener(handleChange);
2809
- }
2810
- });
2811
- };
2812
-
2813
- for (var _iterator2 = _createForOfIteratorHelperLoose(sizes), _step2; !(_step2 = _iterator2()).done;) {
2814
- _loop();
2815
- }
2816
-
2817
- return function () {
2818
- for (var _iterator3 = _createForOfIteratorHelperLoose(disposeFns), _step3; !(_step3 = _iterator3()).done;) {
2819
- var disposeFn = _step3.value;
2820
- disposeFn();
2821
- }
2822
- };
2823
- };
2824
-
2825
- return {
2826
- getCurrentIndex: getCurrentIndex,
2827
- subscribe: subscribe
2828
- };
2829
- }
2830
- /**
2831
- * @internal
2832
- */
2833
-
2834
-
2835
- function _getMediaManager(media) {
2836
- var manager = MEDIA_MANAGER_CACHE.get(media);
2837
-
2838
- if (!manager) {
2839
- manager = _createMediaManager(media);
2840
- MEDIA_MANAGER_CACHE.set(media, manager);
2841
- }
2842
-
2843
- return manager;
2844
- }
2845
-
2846
- /**
2847
- * This API might change. DO NOT USE IN PRODUCTION.
2848
- * @beta
2849
- */
2850
-
2851
- function useMediaIndex() {
2852
- var theme = useTheme();
2853
- var media = theme.sanity.media;
2854
- var manager = React.useMemo(function () {
2855
- return _getMediaManager(media);
2856
- }, [media]);
2857
-
2858
- var _useState = React.useState(manager.getCurrentIndex),
2859
- index = _useState[0],
2860
- setIndex = _useState[1];
2861
-
2862
- React.useEffect(function () {
2863
- return manager.subscribe(setIndex);
2864
- }, [manager]);
2865
- return index;
2866
- }
2867
-
2868
- /**
2869
- * @public
2870
- */
2871
-
2872
- function usePrefersDark() {
2873
- var mq = React.useMemo(function () {
2874
- if (typeof window === 'undefined') return undefined;
2875
- return window.matchMedia('(prefers-color-scheme: dark)');
2876
- }, []);
2877
-
2878
- var _useState = React.useState((mq == null ? void 0 : mq.matches) || false),
2879
- dark = _useState[0],
2880
- setDark = _useState[1];
2881
-
2882
- React.useEffect(function () {
2883
- if (!mq) return undefined;
2884
- setDark(mq.matches);
2885
-
2886
- var handleChange = function handleChange() {
2887
- return setDark(mq.matches);
2888
- };
2889
-
2890
- mq.addEventListener('change', handleChange);
2891
- return function () {
2892
- return mq.removeEventListener('change', handleChange);
2893
- };
2894
- }, [mq]);
2895
- return dark;
2896
- }
2897
-
2898
- /**
2899
- * @beta
2900
- */
2901
-
2902
- var useIsomorphicEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
2903
-
2904
- /**
2905
- * @beta
2906
- */
2907
-
2908
- function useForwardedRef(ref) {
2909
- var innerRef = React.useRef(null);
2910
- useIsomorphicEffect(function () {
2911
- if (!ref) return;
2912
-
2913
- if (typeof ref === 'function') {
2914
- ref(innerRef.current);
2915
- } else {
2916
- ref.current = innerRef.current;
2917
- }
2918
- });
2919
- return innerRef;
2920
- }
2921
-
2922
- /**
2923
- * @beta
2924
- */
2925
-
2926
- function useCustomValidity(ref, customValidity) {
2927
- React.useEffect(function () {
2928
- if (ref.current) {
2929
- ref.current.setCustomValidity(customValidity || '');
2930
- }
2931
- }, [customValidity, ref]);
2932
- }
2933
-
2934
- /**
2935
- * @internal
2936
- */
2937
-
2938
- function fillCSSObject(propKeys, value) {
2939
- return propKeys.reduce(function (obj, propKey) {
2940
- obj[propKey] = value;
2941
- return obj;
2942
- }, {});
2943
- }
2944
- /**
2945
- * @public
2946
- */
2947
-
2948
- function rem(pixelValue) {
2949
- if (pixelValue === 0) return 0;
2950
- return pixelValue / 16 + "rem";
2951
- }
2952
- /**
2953
- * @internal
2954
- */
2955
-
2956
- function responsive(media, values, callback) {
2957
- var statements = values.map(callback);
2958
- return statements.map(function (statement, mediaIndex) {
2959
- var _ref;
2960
-
2961
- if (mediaIndex === 0) return statement;
2962
- return _ref = {}, _ref["@media screen and (min-width: " + media[mediaIndex - 1] + "px)"] = statement, _ref;
2963
- });
2964
- }
2965
- /**
2966
- * @internal
2967
- */
2968
-
2969
- function getResponsiveProp(val, defaultVal) {
2970
- if (val === undefined) return defaultVal || EMPTY_ARRAY;
2971
- return Array.isArray(val) ? val : [val];
2972
- }
2973
- /**
2974
- * @internal
2975
- */
2976
-
2977
- function getResponsiveSpace(theme, props, spaceIndexes) {
2978
- if (spaceIndexes === void 0) {
2979
- spaceIndexes = EMPTY_ARRAY;
2980
- }
2981
-
2982
- if (!Array.isArray(spaceIndexes)) {
2983
- throw new Error('the property must be array of numbers');
2984
- }
2985
-
2986
- if (spaceIndexes.length === 0) {
2987
- return null;
2988
- }
2989
-
2990
- return responsive(theme.sanity.media, spaceIndexes, function (spaceIndex) {
2991
- return fillCSSObject(props, rem(theme.sanity.space[spaceIndex]));
2992
- });
2993
- }
2994
-
2995
- /**
2996
- * A utility function getting responsive font styles.
2997
- * @internal
2998
- */
2999
-
3000
- function responsiveFont(fontKey, props) {
3001
- var $size = props.$size,
3002
- $weight = props.$weight,
3003
- theme = props.theme;
3004
- var _theme$sanity = theme.sanity,
3005
- fonts = _theme$sanity.fonts,
3006
- media = _theme$sanity.media;
3007
- var _fonts$fontKey = fonts[fontKey],
3008
- family = _fonts$fontKey.family,
3009
- sizes = _fonts$fontKey.sizes,
3010
- weights = _fonts$fontKey.weights,
3011
- horizontalOffset = _fonts$fontKey.horizontalOffset;
3012
- var fontWeight = $weight && weights[$weight] || weights.regular; // @todo: make this configurable
3013
-
3014
- var defaultSize = sizes[2];
3015
- var base = {
3016
- position: 'relative',
3017
- fontFamily: family,
3018
- fontWeight: fontWeight,
3019
- padding: '1px',
3020
- margin: 0,
3021
- '&:before': {
3022
- content: '""',
3023
- display: 'block',
3024
- height: 0
3025
- },
3026
- '&:after': {
3027
- content: '""',
3028
- display: 'block',
3029
- height: 0
3030
- },
3031
- '& > code, & > span': {
3032
- display: 'block'
3033
- },
3034
- '&:not([hidden])': {
3035
- display: 'block'
3036
- }
3037
- };
3038
- var resp = responsive(media, getResponsiveProp($size), function (sizeIndex) {
3039
- return fontSize(sizes[sizeIndex] || defaultSize, horizontalOffset);
3040
- });
3041
- return [base].concat(resp);
3042
- }
3043
- function fontSize(size, horizontalOffset) {
3044
- var ascenderHeight = size.ascenderHeight,
3045
- descenderHeight = size.descenderHeight,
3046
- fontSize = size.fontSize,
3047
- iconSize = size.iconSize,
3048
- letterSpacing = size.letterSpacing,
3049
- lineHeight = size.lineHeight;
3050
- var negHeight = ascenderHeight + descenderHeight;
3051
- var capHeight = lineHeight - negHeight;
3052
- var iconOffset = (capHeight - iconSize) / 2;
3053
- var customIconSize = Math.floor(fontSize * 1.125 / 2) * 2 + 1;
3054
- var customIconOffset = (capHeight - customIconSize) / 2;
3055
- return {
3056
- fontSize: rem(fontSize),
3057
- lineHeight: "calc(" + lineHeight + " / " + fontSize + ")",
3058
- letterSpacing: rem(letterSpacing),
3059
- transform: "translateY(" + rem(descenderHeight) + ")",
3060
- '&:before': {
3061
- marginTop: "calc(" + rem(0 - negHeight) + " - 1px)"
3062
- },
3063
- '&:after': {
3064
- marginBottom: '-1px'
3065
- },
3066
- '& > code, & > span': {
3067
- margin: horizontalOffset ? "0 calc(" + rem(0 - horizontalOffset * fontSize) + " - 1px)" : '0 -1px'
3068
- },
3069
- '& svg:not([data-sanity-icon])': {
3070
- fontSize: "calc(" + customIconSize + " / 16 * 1rem)",
3071
- margin: [// top & bottom
3072
- rem(customIconOffset), // left & right
3073
- horizontalOffset ? "calc(" + rem(customIconOffset) + " + " + rem(horizontalOffset * fontSize) + ")" : rem(customIconOffset)].join(' ')
3074
- },
3075
- '& [data-sanity-icon]': {
3076
- fontSize: "calc(" + iconSize + " / 16 * 1rem)",
3077
- margin: [// top & bottom
3078
- rem(iconOffset), // left & right
3079
- horizontalOffset ? "calc(" + rem(iconOffset) + " + " + rem(horizontalOffset * fontSize) + ")" : rem(iconOffset)].join(' ')
3085
+ };
3086
+
3087
+ if (mq.addEventListener) {
3088
+ mq.addEventListener('change', handleChange);
3089
+ } else {
3090
+ mq.addListener(handleChange);
3091
+ }
3092
+
3093
+ disposeFns.push(function () {
3094
+ if (mq.removeEventListener) {
3095
+ mq.removeEventListener('change', handleChange);
3096
+ } else {
3097
+ mq.removeListener(handleChange);
3098
+ }
3099
+ });
3100
+ };
3101
+
3102
+ for (var _iterator2 = _createForOfIteratorHelperLoose(sizes), _step2; !(_step2 = _iterator2()).done;) {
3103
+ _loop();
3080
3104
  }
3105
+
3106
+ return function () {
3107
+ for (var _iterator3 = _createForOfIteratorHelperLoose(disposeFns), _step3; !(_step3 = _iterator3()).done;) {
3108
+ var disposeFn = _step3.value;
3109
+ disposeFn();
3110
+ }
3111
+ };
3081
3112
  };
3082
- }
3083
3113
 
3114
+ return {
3115
+ getCurrentIndex: getCurrentIndex,
3116
+ subscribe: subscribe
3117
+ };
3118
+ }
3084
3119
  /**
3085
- * Get responsive CSS for the `code` font style.
3086
3120
  * @internal
3087
3121
  */
3088
3122
 
3089
- function responsiveCodeFontStyle(props) {
3090
- return responsiveFont('code', props);
3123
+
3124
+ function _getMediaManager(media) {
3125
+ var manager = MEDIA_MANAGER_CACHE.get(media);
3126
+
3127
+ if (!manager) {
3128
+ manager = _createMediaManager(media);
3129
+ MEDIA_MANAGER_CACHE.set(media, manager);
3130
+ }
3131
+
3132
+ return manager;
3091
3133
  }
3092
3134
 
3093
3135
  /**
3094
- * Get responsive CSS for the `heading` font style.
3095
- * @internal
3136
+ * This API might change. DO NOT USE IN PRODUCTION.
3137
+ * @beta
3096
3138
  */
3097
3139
 
3098
- function responsiveHeadingFont(props) {
3099
- return responsiveFont('heading', props);
3140
+ function useMediaIndex() {
3141
+ var theme = useTheme();
3142
+ var media = theme.sanity.media;
3143
+ var manager = React.useMemo(function () {
3144
+ return _getMediaManager(media);
3145
+ }, [media]);
3146
+
3147
+ var _useState = React.useState(manager.getCurrentIndex),
3148
+ index = _useState[0],
3149
+ setIndex = _useState[1];
3150
+
3151
+ React.useEffect(function () {
3152
+ return manager.subscribe(setIndex);
3153
+ }, [manager]);
3154
+ return index;
3100
3155
  }
3101
3156
 
3102
3157
  /**
3103
- * Get responsive CSS for the `label` font style.
3104
- * @internal
3158
+ * @public
3105
3159
  */
3106
3160
 
3107
- function responsiveLabelFont(props) {
3108
- return responsiveFont('label', props);
3161
+ function usePrefersDark() {
3162
+ var mq = React.useMemo(function () {
3163
+ if (typeof window === 'undefined') return undefined;
3164
+ return window.matchMedia('(prefers-color-scheme: dark)');
3165
+ }, []);
3166
+
3167
+ var _useState = React.useState((mq == null ? void 0 : mq.matches) || false),
3168
+ dark = _useState[0],
3169
+ setDark = _useState[1];
3170
+
3171
+ React.useEffect(function () {
3172
+ if (!mq) return undefined;
3173
+ setDark(mq.matches);
3174
+
3175
+ var handleChange = function handleChange() {
3176
+ return setDark(mq.matches);
3177
+ };
3178
+
3179
+ mq.addEventListener('change', handleChange);
3180
+ return function () {
3181
+ return mq.removeEventListener('change', handleChange);
3182
+ };
3183
+ }, [mq]);
3184
+ return dark;
3109
3185
  }
3110
3186
 
3111
3187
  /**
3112
- * Get responsive text align styles.
3113
- * @internal
3188
+ * @beta
3114
3189
  */
3115
3190
 
3116
- function responsiveTextAlignStyle(props) {
3117
- var theme = props.theme;
3118
- return responsive(theme.sanity.media, getResponsiveProp(props.$align), function (textAlign) {
3119
- return {
3120
- textAlign: textAlign
3121
- };
3122
- });
3123
- }
3191
+ var useIsomorphicEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
3124
3192
 
3125
3193
  /**
3126
- * Get responsive CSS for the `text` font style.
3127
- * @internal
3194
+ * @beta
3128
3195
  */
3129
3196
 
3130
- function responsiveTextFont(props) {
3131
- return responsiveFont('text', props);
3197
+ function useForwardedRef(ref) {
3198
+ var innerRef = React.useRef(null);
3199
+ useIsomorphicEffect(function () {
3200
+ if (!ref) return;
3201
+
3202
+ if (typeof ref === 'function') {
3203
+ ref(innerRef.current);
3204
+ } else {
3205
+ ref.current = innerRef.current;
3206
+ }
3207
+ });
3208
+ return innerRef;
3132
3209
  }
3133
3210
 
3134
3211
  /**
3135
- * This API might change. DO NOT USE IN PRODUCTION.
3136
3212
  * @beta
3137
3213
  */
3138
3214
 
3139
- function useResponsiveProp(val, defaultVal) {
3140
- return React.useMemo(function () {
3141
- return getResponsiveProp(val, defaultVal);
3142
- }, [defaultVal, val]);
3215
+ function useCustomValidity(ref, customValidity) {
3216
+ React.useEffect(function () {
3217
+ if (ref.current) {
3218
+ ref.current.setCustomValidity(customValidity || '');
3219
+ }
3220
+ }, [customValidity, ref]);
3143
3221
  }
3144
3222
 
3145
3223
  var BORDER_VALUE = '1px solid var(--card-border-color)';
@@ -3150,7 +3228,7 @@ function responsiveBorderStyle() {
3150
3228
  function border(props) {
3151
3229
  var theme = props.theme;
3152
3230
  var media = theme.sanity.media;
3153
- return responsive(media, getResponsiveProp(props.$border), function (value) {
3231
+ return _responsive(media, props.$border, function (value) {
3154
3232
  return value ? {
3155
3233
  '&&': {
3156
3234
  border: BORDER_VALUE
@@ -3166,7 +3244,7 @@ function border(props) {
3166
3244
  function borderTop(props) {
3167
3245
  var theme = props.theme;
3168
3246
  var media = theme.sanity.media;
3169
- return responsive(media, getResponsiveProp(props.$borderTop), function (value) {
3247
+ return _responsive(media, props.$borderTop, function (value) {
3170
3248
  return value ? {
3171
3249
  '&&': {
3172
3250
  borderTop: BORDER_VALUE
@@ -3182,7 +3260,7 @@ function borderTop(props) {
3182
3260
  function borderRight(props) {
3183
3261
  var theme = props.theme;
3184
3262
  var media = theme.sanity.media;
3185
- return responsive(media, getResponsiveProp(props.$borderRight), function (value) {
3263
+ return _responsive(media, props.$borderRight, function (value) {
3186
3264
  return value ? {
3187
3265
  '&&': {
3188
3266
  borderRight: BORDER_VALUE
@@ -3198,7 +3276,7 @@ function borderRight(props) {
3198
3276
  function borderBottom(props) {
3199
3277
  var theme = props.theme;
3200
3278
  var media = theme.sanity.media;
3201
- return responsive(media, getResponsiveProp(props.$borderBottom), function (value) {
3279
+ return _responsive(media, props.$borderBottom, function (value) {
3202
3280
  return value ? {
3203
3281
  '&&': {
3204
3282
  borderBottom: BORDER_VALUE
@@ -3214,7 +3292,7 @@ function borderBottom(props) {
3214
3292
  function borderLeft(props) {
3215
3293
  var theme = props.theme;
3216
3294
  var media = theme.sanity.media;
3217
- return responsive(media, getResponsiveProp(props.$borderLeft), function (value) {
3295
+ return _responsive(media, props.$borderLeft, function (value) {
3218
3296
  return value ? {
3219
3297
  '&&': {
3220
3298
  borderLeft: BORDER_VALUE
@@ -3250,7 +3328,7 @@ function responsiveBoxStyle() {
3250
3328
  function responsiveBoxDisplayStyle(props) {
3251
3329
  var theme = props.theme;
3252
3330
  var media = theme.sanity.media;
3253
- return responsive(media, getResponsiveProp(props.$display), function (display) {
3331
+ return _responsive(media, props.$display, function (display) {
3254
3332
  return {
3255
3333
  '&:not([hidden])': {
3256
3334
  display: display
@@ -3262,7 +3340,7 @@ function responsiveBoxDisplayStyle(props) {
3262
3340
  function responsiveBoxSizingStyle(props) {
3263
3341
  var theme = props.theme;
3264
3342
  var media = theme.sanity.media;
3265
- return responsive(media, getResponsiveProp(props.$sizing), function (sizing) {
3343
+ return _responsive(media, props.$sizing, function (sizing) {
3266
3344
  return {
3267
3345
  boxSizing: BOX_SIZING[sizing]
3268
3346
  };
@@ -3272,7 +3350,7 @@ function responsiveBoxSizingStyle(props) {
3272
3350
  function responsiveBoxHeightStyle(props) {
3273
3351
  var theme = props.theme;
3274
3352
  var media = theme.sanity.media;
3275
- return responsive(media, getResponsiveProp(props.$height), function (height) {
3353
+ return _responsive(media, props.$height, function (height) {
3276
3354
  return {
3277
3355
  height: BOX_HEIGHT[height]
3278
3356
  };
@@ -3282,7 +3360,7 @@ function responsiveBoxHeightStyle(props) {
3282
3360
  function responsiveBoxOverflowStyle(props) {
3283
3361
  var theme = props.theme;
3284
3362
  var media = theme.sanity.media;
3285
- return responsive(media, getResponsiveProp(props.$overflow), function (overflow) {
3363
+ return _responsive(media, props.$overflow, function (overflow) {
3286
3364
  return {
3287
3365
  overflow: overflow
3288
3366
  };
@@ -3300,7 +3378,7 @@ function responsiveFlexStyle() {
3300
3378
  function responsiveFlexAlignStyle(props) {
3301
3379
  var theme = props.theme;
3302
3380
  var media = theme.sanity.media;
3303
- return responsive(media, getResponsiveProp(props.$align), function (align) {
3381
+ return _responsive(media, props.$align, function (align) {
3304
3382
  return {
3305
3383
  alignItems: align
3306
3384
  };
@@ -3312,7 +3390,7 @@ function responsiveFlexGapStyle(props) {
3312
3390
  var _theme$sanity = theme.sanity,
3313
3391
  media = _theme$sanity.media,
3314
3392
  space = _theme$sanity.space;
3315
- return responsive(media, getResponsiveProp(props.$gap), function (gap) {
3393
+ return _responsive(media, props.$gap, function (gap) {
3316
3394
  return {
3317
3395
  gap: gap ? rem(space[gap]) : undefined
3318
3396
  };
@@ -3322,7 +3400,7 @@ function responsiveFlexGapStyle(props) {
3322
3400
  function responsiveFlexWrapStyle(props) {
3323
3401
  var theme = props.theme;
3324
3402
  var media = theme.sanity.media;
3325
- return responsive(media, getResponsiveProp(props.$wrap), function (wrap) {
3403
+ return _responsive(media, props.$wrap, function (wrap) {
3326
3404
  return {
3327
3405
  flexWrap: wrap
3328
3406
  };
@@ -3331,7 +3409,7 @@ function responsiveFlexWrapStyle(props) {
3331
3409
  function responsiveFlexJustifyStyle(props) {
3332
3410
  var theme = props.theme;
3333
3411
  var media = theme.sanity.media;
3334
- return responsive(media, getResponsiveProp(props.$justify), function (justify) {
3412
+ return _responsive(media, props.$justify, function (justify) {
3335
3413
  return {
3336
3414
  justifyContent: justify
3337
3415
  };
@@ -3340,7 +3418,7 @@ function responsiveFlexJustifyStyle(props) {
3340
3418
  function responsiveFlexDirectionStyle(props) {
3341
3419
  var theme = props.theme;
3342
3420
  var media = theme.sanity.media;
3343
- return responsive(media, getResponsiveProp(props.$direction), function (direction) {
3421
+ return _responsive(media, props.$direction, function (direction) {
3344
3422
  return {
3345
3423
  flexDirection: direction
3346
3424
  };
@@ -3357,7 +3435,8 @@ function flexItemStyle() {
3357
3435
  function responsiveFlexItemStyle(props) {
3358
3436
  var theme = props.theme;
3359
3437
  var media = theme.sanity.media;
3360
- return responsive(media, getResponsiveProp(props.$flex), function (flex) {
3438
+ if (!props.$flex) return EMPTY_ARRAY;
3439
+ return _responsive(media, props.$flex, function (flex) {
3361
3440
  return {
3362
3441
  flex: flex
3363
3442
  };
@@ -3404,7 +3483,7 @@ function responsiveGridStyle() {
3404
3483
  function responsiveGridAutoFlowStyle(props) {
3405
3484
  var theme = props.theme;
3406
3485
  var media = theme.sanity.media;
3407
- return responsive(media, getResponsiveProp(props.$autoFlow), function (autoFlow) {
3486
+ return _responsive(media, props.$autoFlow, function (autoFlow) {
3408
3487
  return {
3409
3488
  gridAutoFlow: autoFlow
3410
3489
  };
@@ -3414,7 +3493,7 @@ function responsiveGridAutoFlowStyle(props) {
3414
3493
  function responsiveGridAutoRowsStyle(props) {
3415
3494
  var theme = props.theme;
3416
3495
  var media = theme.sanity.media;
3417
- return responsive(media, getResponsiveProp(props.$autoRows), function (autoRows) {
3496
+ return _responsive(media, props.$autoRows, function (autoRows) {
3418
3497
  return {
3419
3498
  gridAutoRows: autoRows && GRID_AUTO_ROWS[autoRows]
3420
3499
  };
@@ -3424,7 +3503,7 @@ function responsiveGridAutoRowsStyle(props) {
3424
3503
  function responsiveGridAutoColsStyle(props) {
3425
3504
  var theme = props.theme;
3426
3505
  var media = theme.sanity.media;
3427
- return responsive(media, getResponsiveProp(props.$autoCols), function (autoCols) {
3506
+ return _responsive(media, props.$autoCols, function (autoCols) {
3428
3507
  return {
3429
3508
  gridAutoColumns: autoCols && GRID_AUTO_COLUMS[autoCols]
3430
3509
  };
@@ -3434,7 +3513,7 @@ function responsiveGridAutoColsStyle(props) {
3434
3513
  function responsiveGridColumnsStyle(props) {
3435
3514
  var theme = props.theme;
3436
3515
  var media = theme.sanity.media;
3437
- return responsive(media, getResponsiveProp(props.$columns), function (columns) {
3516
+ return _responsive(media, props.$columns, function (columns) {
3438
3517
  return {
3439
3518
  gridTemplateColumns: columns && "repeat(" + columns + ",minmax(0,1fr));"
3440
3519
  };
@@ -3444,7 +3523,7 @@ function responsiveGridColumnsStyle(props) {
3444
3523
  function responsiveGridRowsStyle(props) {
3445
3524
  var theme = props.theme;
3446
3525
  var media = theme.sanity.media;
3447
- return responsive(media, getResponsiveProp(props.$rows), function (rows) {
3526
+ return _responsive(media, props.$rows, function (rows) {
3448
3527
  return {
3449
3528
  gridTemplateRows: rows && "repeat(" + rows + ",minmax(0,1fr));"
3450
3529
  };
@@ -3456,7 +3535,7 @@ function responsiveGridGapStyle(props) {
3456
3535
  var _theme$sanity = theme.sanity,
3457
3536
  media = _theme$sanity.media,
3458
3537
  space = _theme$sanity.space;
3459
- return responsive(media, getResponsiveProp(props.$gap), function (gap) {
3538
+ return _responsive(media, props.$gap, function (gap) {
3460
3539
  return {
3461
3540
  gridGap: gap ? rem(space[gap]) : undefined
3462
3541
  };
@@ -3468,7 +3547,7 @@ function responsiveGridGapXStyle(props) {
3468
3547
  var _theme$sanity2 = theme.sanity,
3469
3548
  media = _theme$sanity2.media,
3470
3549
  space = _theme$sanity2.space;
3471
- return responsive(media, getResponsiveProp(props.$gapX), function (gapX) {
3550
+ return _responsive(media, props.$gapX, function (gapX) {
3472
3551
  return {
3473
3552
  columnGap: gapX ? rem(space[gapX]) : undefined
3474
3553
  };
@@ -3480,7 +3559,7 @@ function responsiveGridGapYStyle(props) {
3480
3559
  var _theme$sanity3 = theme.sanity,
3481
3560
  media = _theme$sanity3.media,
3482
3561
  space = _theme$sanity3.space;
3483
- return responsive(media, getResponsiveProp(props.$gapY), function (gapY) {
3562
+ return _responsive(media, props.$gapY, function (gapY) {
3484
3563
  return {
3485
3564
  rowGap: gapY ? rem(space[gapY]) : undefined
3486
3565
  };
@@ -3502,7 +3581,7 @@ var GRID_ITEM_COLUMN = {
3502
3581
  function responsiveGridItemRowStyle(props) {
3503
3582
  var theme = props.theme;
3504
3583
  var media = theme.sanity.media;
3505
- return responsive(media, getResponsiveProp(props.$row), function (row) {
3584
+ return _responsive(media, props.$row, function (row) {
3506
3585
  if (typeof row === 'number') {
3507
3586
  return {
3508
3587
  gridRow: "span " + row + " / span " + row
@@ -3518,7 +3597,7 @@ function responsiveGridItemRowStyle(props) {
3518
3597
  function responsiveGridItemRowStartStyle(props) {
3519
3598
  var theme = props.theme;
3520
3599
  var media = theme.sanity.media;
3521
- return responsive(media, getResponsiveProp(props.$rowStart), function (rowStart) {
3600
+ return _responsive(media, props.$rowStart, function (rowStart) {
3522
3601
  return {
3523
3602
  gridRowStart: rowStart
3524
3603
  };
@@ -3528,7 +3607,7 @@ function responsiveGridItemRowStartStyle(props) {
3528
3607
  function responsiveGridItemRowEndStyle(props) {
3529
3608
  var theme = props.theme;
3530
3609
  var media = theme.sanity.media;
3531
- return responsive(media, getResponsiveProp(props.$rowEnd), function (rowEnd) {
3610
+ return _responsive(media, props.$rowEnd, function (rowEnd) {
3532
3611
  return {
3533
3612
  gridRowEnd: rowEnd
3534
3613
  };
@@ -3538,7 +3617,7 @@ function responsiveGridItemRowEndStyle(props) {
3538
3617
  function responsiveGridItemColumnStyle(props) {
3539
3618
  var theme = props.theme;
3540
3619
  var media = theme.sanity.media;
3541
- return responsive(media, getResponsiveProp(props.$column), function (column) {
3620
+ return _responsive(media, props.$column, function (column) {
3542
3621
  if (typeof column === 'number') {
3543
3622
  return {
3544
3623
  gridColumn: "span " + column + " / span " + column
@@ -3554,7 +3633,7 @@ function responsiveGridItemColumnStyle(props) {
3554
3633
  function responsiveGridItemColumnStartStyle(props) {
3555
3634
  var theme = props.theme;
3556
3635
  var media = theme.sanity.media;
3557
- return responsive(media, getResponsiveProp(props.$columnStart), function (columnStart) {
3636
+ return _responsive(media, props.$columnStart, function (columnStart) {
3558
3637
  return {
3559
3638
  gridColumnStart: columnStart
3560
3639
  };
@@ -3564,7 +3643,7 @@ function responsiveGridItemColumnStartStyle(props) {
3564
3643
  function responsiveGridItemColumnEndStyle(props) {
3565
3644
  var theme = props.theme;
3566
3645
  var media = theme.sanity.media;
3567
- return responsive(media, getResponsiveProp(props.$columnEnd), function (columnEnd) {
3646
+ return _responsive(media, props.$columnEnd, function (columnEnd) {
3568
3647
  return {
3569
3648
  gridColumnEnd: columnEnd
3570
3649
  };
@@ -3572,36 +3651,36 @@ function responsiveGridItemColumnEndStyle(props) {
3572
3651
  }
3573
3652
 
3574
3653
  function responsiveInputPaddingStyle(props) {
3575
- var $iconLeft = props.$iconLeft,
3654
+ var $fontSize = props.$fontSize,
3655
+ $iconLeft = props.$iconLeft,
3576
3656
  $iconRight = props.$iconRight,
3657
+ $padding = props.$padding,
3658
+ $space = props.$space,
3577
3659
  theme = props.theme;
3578
3660
  var _theme$sanity = theme.sanity,
3579
3661
  fonts = _theme$sanity.fonts,
3580
3662
  media = _theme$sanity.media,
3581
3663
  spaceScale = _theme$sanity.space;
3582
- var padding = getResponsiveProp(props.$padding, [0]);
3583
- var space = getResponsiveProp(props.$space, [0]);
3584
- var size = getResponsiveProp(props.$fontSize, [0]);
3585
- var len = Math.max(padding.length, space.length, size.length);
3664
+ var len = Math.max($padding.length, $space.length, $fontSize.length);
3586
3665
  var _padding = [];
3587
3666
  var _space = [];
3588
- var _size = [];
3667
+ var _fontSize = [];
3589
3668
 
3590
3669
  for (var i = 0; i < len; i += 1) {
3591
- _padding[i] = padding[i] === undefined ? _padding[i - 1] : padding[i];
3592
- _space[i] = space[i] === undefined ? _space[i - 1] : space[i];
3593
- _size[i] = size[i] === undefined ? _size[i - 1] : size[i];
3670
+ _fontSize[i] = $fontSize[i] === undefined ? _fontSize[i - 1] : $fontSize[i];
3671
+ _padding[i] = $padding[i] === undefined ? _padding[i - 1] : $padding[i];
3672
+ _space[i] = $space[i] === undefined ? _space[i - 1] : $space[i];
3594
3673
  }
3595
3674
 
3596
- return responsive(media, _padding, function (_, i) {
3597
- var fontSize = fonts.text.sizes[_size[i]] || fonts.text.sizes[2];
3598
- var emSize = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight;
3675
+ return _responsive(media, _padding, function (_, i) {
3676
+ var size = fonts.text.sizes[_fontSize[i]] || fonts.text.sizes[2];
3677
+ var emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight;
3599
3678
  var p = spaceScale[_padding[i]];
3600
3679
  var s = spaceScale[_space[i]];
3601
3680
  var styles = {
3602
- paddingTop: rem(p - fontSize.ascenderHeight),
3681
+ paddingTop: rem(p - size.ascenderHeight),
3603
3682
  paddingRight: rem(p),
3604
- paddingBottom: rem(p - fontSize.descenderHeight),
3683
+ paddingBottom: rem(p - size.descenderHeight),
3605
3684
  paddingLeft: rem(p)
3606
3685
  };
3607
3686
  if ($iconRight) styles.paddingRight = rem(p + emSize + s);
@@ -3622,17 +3701,18 @@ function textInputRootStyle() {
3622
3701
  }
3623
3702
  function textInputBaseStyle(props) {
3624
3703
  var theme = props.theme,
3704
+ $tone = props.$tone,
3625
3705
  $weight = props.$weight;
3626
3706
  var font = theme.sanity.fonts.text;
3627
3707
  var color = theme.sanity.color.input;
3628
- return styled.css(_templateObject2$n || (_templateObject2$n = _taggedTemplateLiteralLoose(["\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n\n appearance: none;\n background: none;\n border: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ", ";\n font-weight: ", ";\n margin: 0;\n position: relative;\n z-index: 1;\n display: block;\n color: var(--input-fg-color);\n\n /* NOTE: This is a hack to disable Chrome\u2019s autofill styles */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: var(--input-fg-color) !important;\n transition: background-color 5000s;\n transition-delay: 86400s /* 24h */;\n }\n\n &::placeholder {\n color: var(--input-placeholder-color);\n }\n\n /* &:is(textarea) */\n &[data-as='textarea'] {\n resize: none;\n }\n\n /* enabled */\n &:not(:invalid):not(:disabled):not(:read-only) {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n }\n\n /* disabled */\n &:not(:invalid):disabled {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n }\n\n /* invalid */\n &:invalid {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n }\n\n /* readOnly */\n &:read-only {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n }\n "])), color["default"].enabled.fg, color["default"].enabled.placeholder, font.family, $weight && font.weights[$weight] || font.weights.regular, color["default"].enabled.fg, color["default"].enabled.placeholder, color["default"].disabled.fg, color["default"].disabled.placeholder, color.invalid.enabled.fg, color.invalid.enabled.placeholder, color["default"].readOnly.fg, color["default"].readOnly.placeholder);
3708
+ return styled.css(_templateObject2$n || (_templateObject2$n = _taggedTemplateLiteralLoose(["\n appearance: none;\n background: none;\n border: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ", ";\n font-weight: ", ";\n margin: 0;\n position: relative;\n z-index: 1;\n display: block;\n\n /* NOTE: This is a hack to disable Chrome\u2019s autofill styles */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: var(--input-fg-color) !important;\n transition: background-color 5000s;\n transition-delay: 86400s /* 24h */;\n }\n\n /* &:is(textarea) */\n &[data-as='textarea'] {\n resize: none;\n }\n\n color: var(--input-fg-color);\n\n &::placeholder {\n color: var(--input-placeholder-color);\n }\n\n &[data-tone='", "'] {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n\n /* enabled */\n &:not(:invalid):not(:disabled):not(:read-only) {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n }\n\n /* disabled */\n &:not(:invalid):disabled {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n }\n\n /* invalid */\n &:invalid {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n }\n\n /* readOnly */\n &:read-only {\n --input-fg-color: ", ";\n --input-placeholder-color: ", ";\n }\n }\n "])), font.family, $weight && font.weights[$weight] || font.weights.regular, $tone, color["default"].enabled.fg, color["default"].enabled.placeholder, color["default"].enabled.fg, color["default"].enabled.placeholder, color["default"].disabled.fg, color["default"].disabled.placeholder, color.invalid.enabled.fg, color.invalid.enabled.placeholder, color["default"].readOnly.fg, color["default"].readOnly.placeholder);
3629
3709
  }
3630
3710
  function textInputFontSizeStyle(props) {
3631
3711
  var theme = props.theme;
3632
3712
  var _theme$sanity = theme.sanity,
3633
3713
  fonts = _theme$sanity.fonts,
3634
3714
  media = _theme$sanity.media;
3635
- return responsive(media, getResponsiveProp(props.$fontSize, [2]), function (sizeIndex) {
3715
+ return _responsive(media, props.$fontSize, function (sizeIndex) {
3636
3716
  var size = fonts.text.sizes[sizeIndex] || fonts.text.sizes[2];
3637
3717
  return {
3638
3718
  fontSize: rem(size.fontSize),
@@ -3644,12 +3724,13 @@ function textInputRepresentationStyle(props) {
3644
3724
  var $border = props.$border,
3645
3725
  $hasPrefix = props.$hasPrefix,
3646
3726
  $hasSuffix = props.$hasSuffix,
3727
+ $tone = props.$tone,
3647
3728
  theme = props.theme;
3648
3729
  var _theme$sanity2 = theme.sanity,
3649
3730
  focusRing = _theme$sanity2.focusRing,
3650
3731
  input = _theme$sanity2.input;
3651
3732
  var color = theme.sanity.color.input;
3652
- return styled.css(_templateObject3$e || (_templateObject3$e = _taggedTemplateLiteralLoose(["\n --card-bg-color: ", ";\n --card-fg-color: ", ";\n --input-box-shadow: none;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: block;\n pointer-events: none;\n z-index: 0;\n background-color: var(--card-bg-color);\n box-shadow: var(--input-box-shadow);\n\n border-top-left-radius: ", ";\n border-bottom-left-radius: ", ";\n border-top-right-radius: ", ";\n border-bottom-right-radius: ", ";\n\n /* enabled */\n *:not(:disabled) + && {\n --input-box-shadow: ", ";\n }\n\n /* invalid */\n *:not(:disabled):invalid + && {\n --card-bg-color: ", ";\n --card-fg-color: ", ";\n --input-box-shadow: ", ";\n }\n\n /* focused */\n *:not(:disabled):focus + && {\n --input-box-shadow: ", ";\n }\n\n /* disabled */\n *:disabled + && {\n --card-bg-color: ", ";\n --card-fg-color: ", ";\n --input-box-shadow: ", ";\n }\n\n /* hovered */\n @media (hover: hover) {\n *:not(:disabled):not(:read-only):not(:invalid):hover + && {\n --card-bg-color: ", ";\n --card-fg-color: ", ";\n }\n\n *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + && {\n --input-box-shadow: ", ";\n }\n }\n\n /* readOnly */\n *:read-only + && {\n --card-bg-color: ", ";\n --card-fg-color: ", ";\n }\n "])), color["default"].enabled.bg, color["default"].enabled.fg, $hasPrefix ? 0 : undefined, $hasPrefix ? 0 : undefined, $hasSuffix ? 0 : undefined, $hasSuffix ? 0 : undefined, $border ? focusRingBorderStyle({
3733
+ return styled.css(_templateObject3$e || (_templateObject3$e = _taggedTemplateLiteralLoose(["\n --input-box-shadow: none;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: block;\n pointer-events: none;\n z-index: 0;\n\n background-color: var(--card-bg-color);\n box-shadow: var(--input-box-shadow);\n\n border-top-left-radius: ", ";\n border-bottom-left-radius: ", ";\n border-top-right-radius: ", ";\n border-bottom-right-radius: ", ";\n\n &[data-tone='", "'] {\n --card-bg-color: ", ";\n --card-fg-color: ", ";\n\n /* enabled */\n *:not(:disabled) + & {\n --input-box-shadow: ", ";\n }\n\n /* invalid */\n *:not(:disabled):invalid + & {\n --card-bg-color: ", ";\n --card-fg-color: ", ";\n --input-box-shadow: ", ";\n }\n\n /* focused */\n *:not(:disabled):focus + & {\n --input-box-shadow: ", ";\n }\n\n /* disabled */\n *:disabled + & {\n --card-bg-color: ", " !important;\n --card-fg-color: ", " !important;\n --input-box-shadow: ", ";\n }\n\n /* readOnly */\n *:read-only + & {\n --card-bg-color: ", " !important;\n --card-fg-color: ", " !important;\n }\n\n /* hovered */\n @media (hover: hover) {\n *:not(:disabled):not(:read-only):not(:invalid):hover + & {\n --card-bg-color: ", ";\n --card-fg-color: ", ";\n }\n\n *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + & {\n --input-box-shadow: ", ";\n }\n }\n }\n "])), $hasPrefix ? 0 : undefined, $hasPrefix ? 0 : undefined, $hasSuffix ? 0 : undefined, $hasSuffix ? 0 : undefined, $tone, color["default"].enabled.bg, color["default"].enabled.fg, $border ? focusRingBorderStyle({
3653
3734
  color: color["default"].enabled.border,
3654
3735
  width: input.border.width
3655
3736
  }) : undefined, color.invalid.enabled.bg, color.invalid.enabled.fg, $border ? focusRingBorderStyle({
@@ -3664,20 +3745,20 @@ function textInputRepresentationStyle(props) {
3664
3745
  }), color["default"].disabled.bg, color["default"].disabled.fg, $border ? focusRingBorderStyle({
3665
3746
  color: color["default"].disabled.border,
3666
3747
  width: input.border.width
3667
- }) : 'none', color["default"].hovered.bg, color["default"].hovered.fg, $border ? focusRingBorderStyle({
3748
+ }) : 'none', color["default"].readOnly.bg, color["default"].readOnly.fg, color["default"].hovered.bg, color["default"].hovered.fg, $border ? focusRingBorderStyle({
3668
3749
  color: color["default"].hovered.border,
3669
3750
  width: input.border.width
3670
- }) : 'none', color["default"].readOnly.bg, color["default"].readOnly.fg);
3751
+ }) : 'none');
3671
3752
  }
3672
3753
 
3673
3754
  function responsiveMarginStyle(props) {
3674
3755
  var theme = props.theme;
3675
- return [getResponsiveSpace(theme, ['margin'], getResponsiveProp(props.$margin)), getResponsiveSpace(theme, ['marginLeft', 'marginRight'], getResponsiveProp(props.$marginX)), getResponsiveSpace(theme, ['marginTop', 'marginBottom'], getResponsiveProp(props.$marginY)), getResponsiveSpace(theme, ['marginTop'], getResponsiveProp(props.$marginTop)), getResponsiveSpace(theme, ['marginRight'], getResponsiveProp(props.$marginRight)), getResponsiveSpace(theme, ['marginBottom'], getResponsiveProp(props.$marginBottom)), getResponsiveSpace(theme, ['marginLeft'], getResponsiveProp(props.$marginLeft))].filter(Boolean);
3756
+ return [_getResponsiveSpace(theme, ['margin'], props.$margin), _getResponsiveSpace(theme, ['marginLeft', 'marginRight'], props.$marginX), _getResponsiveSpace(theme, ['marginTop', 'marginBottom'], props.$marginY), _getResponsiveSpace(theme, ['marginTop'], props.$marginTop), _getResponsiveSpace(theme, ['marginRight'], props.$marginRight), _getResponsiveSpace(theme, ['marginBottom'], props.$marginBottom), _getResponsiveSpace(theme, ['marginLeft'], props.$marginLeft)].filter(Boolean);
3676
3757
  }
3677
3758
 
3678
3759
  function responsivePaddingStyle(props) {
3679
3760
  var theme = props.theme;
3680
- return [getResponsiveSpace(theme, ['padding'], getResponsiveProp(props.$padding)), getResponsiveSpace(theme, ['paddingLeft', 'paddingRight'], getResponsiveProp(props.$paddingX)), getResponsiveSpace(theme, ['paddingTop', 'paddingBottom'], getResponsiveProp(props.$paddingY)), getResponsiveSpace(theme, ['paddingTop'], getResponsiveProp(props.$paddingTop)), getResponsiveSpace(theme, ['paddingRight'], getResponsiveProp(props.$paddingRight)), getResponsiveSpace(theme, ['paddingBottom'], getResponsiveProp(props.$paddingBottom)), getResponsiveSpace(theme, ['paddingLeft'], getResponsiveProp(props.$paddingLeft))].filter(Boolean);
3761
+ return [_getResponsiveSpace(theme, ['padding'], props.$padding), _getResponsiveSpace(theme, ['paddingLeft', 'paddingRight'], props.$paddingX), _getResponsiveSpace(theme, ['paddingTop', 'paddingBottom'], props.$paddingY), _getResponsiveSpace(theme, ['paddingTop'], props.$paddingTop), _getResponsiveSpace(theme, ['paddingRight'], props.$paddingRight), _getResponsiveSpace(theme, ['paddingBottom'], props.$paddingBottom), _getResponsiveSpace(theme, ['paddingLeft'], props.$paddingLeft)].filter(Boolean);
3681
3762
  }
3682
3763
 
3683
3764
  function responsiveRadiusStyle(props) {
@@ -3685,7 +3766,7 @@ function responsiveRadiusStyle(props) {
3685
3766
  var _theme$sanity = theme.sanity,
3686
3767
  media = _theme$sanity.media,
3687
3768
  radius = _theme$sanity.radius;
3688
- return responsive(media, getResponsiveProp(props.$radius), function (radiusIndex) {
3769
+ return _responsive(media, props.$radius, function (radiusIndex) {
3689
3770
  return {
3690
3771
  borderRadius: rem(radius[radiusIndex])
3691
3772
  };
@@ -3697,7 +3778,7 @@ function toBoxShadow(shadow, color) {
3697
3778
  }
3698
3779
 
3699
3780
  function shadowStyle(shadow) {
3700
- if (!shadow) return EMPTY_RECORD$1;
3781
+ if (!shadow) return EMPTY_RECORD;
3701
3782
  var outline = "0 0 0 " + rem(1) + " var(--card-shadow-outline-color)";
3702
3783
  var umbra = toBoxShadow(shadow.umbra, 'var(--card-shadow-umbra-color)');
3703
3784
  var penumbra = toBoxShadow(shadow.penumbra, 'var(--card-shadow-penumbra-color)');
@@ -3712,7 +3793,7 @@ function responsiveShadowStyle(props) {
3712
3793
  var _theme$sanity = theme.sanity,
3713
3794
  media = _theme$sanity.media,
3714
3795
  shadows = _theme$sanity.shadows;
3715
- return responsive(media, getResponsiveProp(props.$shadow), function (shadow) {
3796
+ return _responsive(media, props.$shadow, function (shadow) {
3716
3797
  return shadowStyle(shadows[shadow]);
3717
3798
  });
3718
3799
  }
@@ -3758,10 +3839,10 @@ var Text = /*#__PURE__*/React.forwardRef(function Text(props, ref) {
3758
3839
  "data-ui": "Text"
3759
3840
  }, restProps, {
3760
3841
  "$accent": accent,
3761
- "$align": align,
3842
+ "$align": useArrayProp(align),
3762
3843
  "$muted": muted,
3763
3844
  ref: ref,
3764
- "$size": size,
3845
+ "$size": useArrayProp(size),
3765
3846
  "$weight": weight
3766
3847
  }), /*#__PURE__*/React__default["default"].createElement("span", null, children));
3767
3848
  });
@@ -3857,7 +3938,7 @@ function responsiveAvatarSizeStyle(props) {
3857
3938
  var _theme$sanity = theme.sanity,
3858
3939
  avatar = _theme$sanity.avatar,
3859
3940
  media = _theme$sanity.media;
3860
- return responsive(media, props.$size, function (size) {
3941
+ return _responsive(media, props.$size, function (size) {
3861
3942
  var avatarSize = avatar.sizes[size] || avatar.sizes[0];
3862
3943
  return {
3863
3944
  width: rem(avatarSize.size),
@@ -3928,11 +4009,12 @@ var Avatar = /*#__PURE__*/React.forwardRef(function Avatar(props, ref) {
3928
4009
  animateArrowFrom = props.animateArrowFrom,
3929
4010
  _props$status = props.status,
3930
4011
  status = _props$status === void 0 ? 'online' : _props$status,
3931
- sizeProp = props.size,
4012
+ _props$size = props.size,
4013
+ sizeProp = _props$size === void 0 ? 0 : _props$size,
3932
4014
  restProps = _objectWithoutPropertiesLoose(props, _excluded$F);
3933
4015
 
3934
4016
  var as = ReactIs__default["default"].isValidElementType(asProp) ? asProp : 'div';
3935
- var size = useResponsiveProp(sizeProp, [0]);
4017
+ var size = useArrayProp(sizeProp);
3936
4018
  var theme = useTheme();
3937
4019
  var color = theme.sanity.color.spot[colorKey] || theme.sanity.color.spot.gray; // @todo: remove this
3938
4020
 
@@ -3972,6 +4054,11 @@ var Avatar = /*#__PURE__*/React.forwardRef(function Avatar(props, ref) {
3972
4054
  onImageLoadError(new Error('Avatar: the image failed to load'));
3973
4055
  }
3974
4056
  }, [onImageLoadError]);
4057
+ var initialsSize = React.useMemo(function () {
4058
+ return size.map(function (s) {
4059
+ return s === 0 ? 0 : s + 1;
4060
+ });
4061
+ }, [size]);
3975
4062
  return /*#__PURE__*/React__default["default"].createElement(Root$D, _extends({
3976
4063
  as: as,
3977
4064
  "data-as": typeof as === 'string' ? as : undefined,
@@ -4025,22 +4112,20 @@ var Avatar = /*#__PURE__*/React.forwardRef(function Avatar(props, ref) {
4025
4112
  vectorEffect: "non-scaling-stroke"
4026
4113
  })), (imageFailed || !src) && initials && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Initials, null, /*#__PURE__*/React__default["default"].createElement(Text, {
4027
4114
  as: "span",
4028
- size: size.map(function (s) {
4029
- return s === 0 ? 0 : s + 1;
4030
- })
4115
+ size: initialsSize
4031
4116
  }, /*#__PURE__*/React__default["default"].createElement("strong", null, initials)))));
4032
4117
  });
4033
4118
 
4034
4119
  var _templateObject$A;
4035
4120
 
4036
- function responsiveAvatarCounterSizeStyle(props) {
4121
+ function _responsiveAvatarCounterSizeStyle(props) {
4037
4122
  var theme = props.theme;
4038
4123
  var _theme$sanity = theme.sanity,
4039
4124
  avatar = _theme$sanity.avatar,
4040
4125
  media = _theme$sanity.media;
4041
- return responsive(media, props.$size, function (size) {
4126
+ return _responsive(media, props.$size, function (size) {
4042
4127
  var avatarSize = avatar.sizes[size];
4043
- if (!avatarSize) return EMPTY_RECORD$1;
4128
+ if (!avatarSize) return EMPTY_RECORD;
4044
4129
  return {
4045
4130
  borderRadius: rem(avatarSize.size / 2),
4046
4131
  minWidth: rem(avatarSize.size),
@@ -4049,12 +4134,12 @@ function responsiveAvatarCounterSizeStyle(props) {
4049
4134
  });
4050
4135
  }
4051
4136
 
4052
- function avatarCounterBaseStyle(props) {
4137
+ function _avatarCounterBaseStyle(props) {
4053
4138
  var theme = props.theme;
4054
4139
  return styled.css(_templateObject$A || (_templateObject$A = _taggedTemplateLiteralLoose(["\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n user-select: none;\n color: inherit;\n color: var(--card-fg-color);\n background: var(--card-bg-color);\n box-shadow: 0 0 0 1px var(--card-bg-color), inset 0 0 0 1.5px var(--card-hairline-hard-color);\n padding: 0 ", ";\n\n &:not([hidden]) {\n display: flex;\n }\n "])), rem(theme.sanity.space[2]));
4055
4140
  }
4056
4141
 
4057
- var Root$C = styled__default["default"].div(responsiveAvatarCounterSizeStyle, avatarCounterBaseStyle);
4142
+ var Root$C = styled__default["default"].div(_responsiveAvatarCounterSizeStyle, _avatarCounterBaseStyle);
4058
4143
  /**
4059
4144
  * @public
4060
4145
  */
@@ -4062,18 +4147,20 @@ var Root$C = styled__default["default"].div(responsiveAvatarCounterSizeStyle, av
4062
4147
  var AvatarCounter = /*#__PURE__*/React.forwardRef(function AvatarCounter(props, ref) {
4063
4148
  var count = props.count,
4064
4149
  _props$size = props.size,
4065
- sizeProp = _props$size === void 0 ? 0 : _props$size,
4066
- tone = props.tone;
4067
- var size = useResponsiveProp(sizeProp, [0]);
4150
+ sizeProp = _props$size === void 0 ? 0 : _props$size;
4151
+ var size = useArrayProp(sizeProp);
4152
+ var counterSize = React.useMemo(function () {
4153
+ return size.map(function (s) {
4154
+ return s === 0 ? 0 : s + 1;
4155
+ });
4156
+ }, [size]);
4068
4157
  return /*#__PURE__*/React__default["default"].createElement(Root$C, {
4069
4158
  "$size": size,
4070
- "data-tone": tone,
4159
+ "data-ui": "AvatarCounter",
4071
4160
  ref: ref
4072
4161
  }, /*#__PURE__*/React__default["default"].createElement(Text, {
4073
4162
  as: "span",
4074
- size: size.map(function (s) {
4075
- return s === 0 ? 0 : s + 1;
4076
- })
4163
+ size: counterSize
4077
4164
  }, /*#__PURE__*/React__default["default"].createElement("strong", null, count)));
4078
4165
  });
4079
4166
 
@@ -4084,7 +4171,7 @@ function childrenToElementArray(children) {
4084
4171
  });
4085
4172
  }
4086
4173
 
4087
- var _excluded$E = ["children", "maxLength", "size", "tone"];
4174
+ var _excluded$E = ["children", "maxLength", "size"];
4088
4175
 
4089
4176
  var _templateObject$z;
4090
4177
  var BASE_STYLES = styled.css(_templateObject$z || (_templateObject$z = _taggedTemplateLiteralLoose(["\n white-space: nowrap;\n\n & > div {\n vertical-align: top;\n\n &:not([hidden]) {\n display: inline-block;\n }\n }\n"])));
@@ -4098,9 +4185,9 @@ function responsiveAvatarStackSizeStyle(props) {
4098
4185
  var _theme$sanity = theme.sanity,
4099
4186
  avatar = _theme$sanity.avatar,
4100
4187
  media = _theme$sanity.media;
4101
- return responsive(media, getResponsiveProp(props.size), function (size) {
4188
+ return _responsive(media, props.$size, function (size) {
4102
4189
  var avatarSize = avatar.sizes[size];
4103
- if (!avatarSize) return EMPTY_RECORD$1;
4190
+ if (!avatarSize) return EMPTY_RECORD;
4104
4191
  return {
4105
4192
  '& > div + div': {
4106
4193
  marginLeft: rem(avatarSize.distance)
@@ -4119,14 +4206,14 @@ var AvatarStack = /*#__PURE__*/React.forwardRef(function AvatarStack(props, ref)
4119
4206
  _props$maxLength = props.maxLength,
4120
4207
  maxLengthProp = _props$maxLength === void 0 ? 4 : _props$maxLength,
4121
4208
  _props$size = props.size,
4122
- size = _props$size === void 0 ? 0 : _props$size,
4123
- tone = props.tone,
4209
+ sizeProp = _props$size === void 0 ? 0 : _props$size,
4124
4210
  restProps = _objectWithoutPropertiesLoose(props, _excluded$E);
4125
4211
 
4126
- var maxLength = Math.max(maxLengthProp, 0);
4127
4212
  var children = childrenToElementArray(childrenProp).filter(function (child) {
4128
4213
  return typeof child !== 'string';
4129
4214
  });
4215
+ var maxLength = Math.max(maxLengthProp, 0);
4216
+ var size = useArrayProp(sizeProp);
4130
4217
  var len = children.length;
4131
4218
  var visibleCount = maxLength - 1;
4132
4219
  var extraCount = len - visibleCount;
@@ -4135,20 +4222,17 @@ var AvatarStack = /*#__PURE__*/React.forwardRef(function AvatarStack(props, ref)
4135
4222
  "data-ui": "AvatarStack"
4136
4223
  }, restProps, {
4137
4224
  ref: ref,
4138
- size: size
4225
+ "$size": size
4139
4226
  }), len === 0 && /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(AvatarCounter, {
4140
- count: len,
4141
- tone: tone
4227
+ count: len
4142
4228
  })), len !== 0 && extraCount > 1 && /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(AvatarCounter, {
4143
4229
  count: extraCount,
4144
- size: size,
4145
- tone: tone
4230
+ size: size
4146
4231
  })), visibleChildren.map(function (child, childIndex) {
4147
4232
  return /*#__PURE__*/React__default["default"].createElement("div", {
4148
4233
  key: String(childIndex)
4149
4234
  }, /*#__PURE__*/React.cloneElement(child, {
4150
- size: size,
4151
- tone: tone
4235
+ size: size
4152
4236
  }));
4153
4237
  }));
4154
4238
  });
@@ -4193,34 +4277,34 @@ var Box = /*#__PURE__*/React.forwardRef(function Box(props, ref) {
4193
4277
  restProps = _objectWithoutPropertiesLoose(props, _excluded$D);
4194
4278
 
4195
4279
  return /*#__PURE__*/React__default["default"].createElement(Root$A, _extends({
4196
- "data-as": asProp,
4280
+ "data-as": typeof asProp === 'string' ? asProp : undefined,
4197
4281
  "data-ui": "Box"
4198
4282
  }, restProps, {
4199
- "$column": column,
4200
- "$columnStart": columnStart,
4201
- "$columnEnd": columnEnd,
4202
- "$display": display,
4203
- "$flex": flex,
4204
- "$height": height,
4205
- "$margin": margin,
4206
- "$marginX": marginX,
4207
- "$marginY": marginY,
4208
- "$marginTop": marginTop,
4209
- "$marginRight": marginRight,
4210
- "$marginBottom": marginBottom,
4211
- "$marginLeft": marginLeft,
4212
- "$overflow": overflow,
4213
- "$padding": padding,
4214
- "$paddingX": paddingX,
4215
- "$paddingY": paddingY,
4216
- "$paddingTop": paddingTop,
4217
- "$paddingRight": paddingRight,
4218
- "$paddingBottom": paddingBottom,
4219
- "$paddingLeft": paddingLeft,
4220
- "$row": row,
4221
- "$rowStart": rowStart,
4222
- "$rowEnd": rowEnd,
4223
- "$sizing": sizing,
4283
+ "$column": useArrayProp(column),
4284
+ "$columnStart": useArrayProp(columnStart),
4285
+ "$columnEnd": useArrayProp(columnEnd),
4286
+ "$display": useArrayProp(display),
4287
+ "$flex": useArrayProp(flex),
4288
+ "$height": useArrayProp(height),
4289
+ "$margin": useArrayProp(margin),
4290
+ "$marginX": useArrayProp(marginX),
4291
+ "$marginY": useArrayProp(marginY),
4292
+ "$marginTop": useArrayProp(marginTop),
4293
+ "$marginRight": useArrayProp(marginRight),
4294
+ "$marginBottom": useArrayProp(marginBottom),
4295
+ "$marginLeft": useArrayProp(marginLeft),
4296
+ "$overflow": useArrayProp(overflow),
4297
+ "$padding": useArrayProp(padding),
4298
+ "$paddingX": useArrayProp(paddingX),
4299
+ "$paddingY": useArrayProp(paddingY),
4300
+ "$paddingTop": useArrayProp(paddingTop),
4301
+ "$paddingRight": useArrayProp(paddingRight),
4302
+ "$paddingBottom": useArrayProp(paddingBottom),
4303
+ "$paddingLeft": useArrayProp(paddingLeft),
4304
+ "$row": useArrayProp(row),
4305
+ "$rowStart": useArrayProp(rowStart),
4306
+ "$rowEnd": useArrayProp(rowEnd),
4307
+ "$sizing": useArrayProp(sizing),
4224
4308
  as: asProp,
4225
4309
  ref: ref
4226
4310
  }), props.children);
@@ -4268,9 +4352,9 @@ var Label = /*#__PURE__*/React.forwardRef(function Label(props, ref) {
4268
4352
  "data-ui": "Label"
4269
4353
  }, restProps, {
4270
4354
  "$accent": accent,
4271
- "$align": align,
4355
+ "$align": useArrayProp(align),
4272
4356
  "$muted": muted,
4273
- "$size": size,
4357
+ "$size": useArrayProp(size),
4274
4358
  "$weight": weight,
4275
4359
  ref: ref
4276
4360
  }), children);
@@ -4317,8 +4401,8 @@ var Badge = /*#__PURE__*/React.forwardRef(function Badge(props, ref) {
4317
4401
  }, restProps, {
4318
4402
  "$mode": mode,
4319
4403
  "$tone": tone,
4320
- "$radius": radius,
4321
- padding: padding,
4404
+ "$radius": useArrayProp(radius),
4405
+ padding: useArrayProp(padding),
4322
4406
  ref: ref
4323
4407
  }), /*#__PURE__*/React__default["default"].createElement(Label, {
4324
4408
  size: fontSize
@@ -4344,11 +4428,11 @@ var Flex = /*#__PURE__*/React.forwardRef(function Flex(props, ref) {
4344
4428
  return /*#__PURE__*/React__default["default"].createElement(Root$x, _extends({
4345
4429
  "data-ui": "Flex"
4346
4430
  }, restProps, {
4347
- "$align": align,
4348
- "$direction": direction,
4349
- "$gap": gap,
4350
- "$justify": justify,
4351
- "$wrap": wrap,
4431
+ "$align": useArrayProp(align),
4432
+ "$direction": useArrayProp(direction),
4433
+ "$gap": useArrayProp(gap),
4434
+ "$justify": useArrayProp(justify),
4435
+ "$wrap": useArrayProp(wrap),
4352
4436
  forwardedAs: as,
4353
4437
  ref: ref
4354
4438
  }));
@@ -4477,23 +4561,23 @@ var Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {
4477
4561
  icon = props.icon,
4478
4562
  iconRight = props.iconRight,
4479
4563
  _props$justify = props.justify,
4480
- justify = _props$justify === void 0 ? 'center' : _props$justify,
4564
+ justifyProp = _props$justify === void 0 ? 'center' : _props$justify,
4481
4565
  loading = props.loading,
4482
4566
  _props$mode = props.mode,
4483
4567
  mode = _props$mode === void 0 ? 'default' : _props$mode,
4484
4568
  _props$padding = props.padding,
4485
- padding = _props$padding === void 0 ? 3 : _props$padding,
4486
- paddingX = props.paddingX,
4487
- paddingY = props.paddingY,
4488
- paddingTop = props.paddingTop,
4489
- paddingBottom = props.paddingBottom,
4490
- paddingLeft = props.paddingLeft,
4491
- paddingRight = props.paddingRight,
4569
+ paddingProp = _props$padding === void 0 ? 3 : _props$padding,
4570
+ paddingXProp = props.paddingX,
4571
+ paddingYProp = props.paddingY,
4572
+ paddingTopProp = props.paddingTop,
4573
+ paddingBottomProp = props.paddingBottom,
4574
+ paddingLeftProp = props.paddingLeft,
4575
+ paddingRightProp = props.paddingRight,
4492
4576
  _props$radius = props.radius,
4493
- radius = _props$radius === void 0 ? 2 : _props$radius,
4577
+ radiusProp = _props$radius === void 0 ? 2 : _props$radius,
4494
4578
  selected = props.selected,
4495
4579
  _props$space = props.space,
4496
- space = _props$space === void 0 ? 3 : _props$space,
4580
+ spaceProp = _props$space === void 0 ? 3 : _props$space,
4497
4581
  text = props.text,
4498
4582
  textAlign = props.textAlign,
4499
4583
  _props$tone = props.tone,
@@ -4502,6 +4586,16 @@ var Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {
4502
4586
  type = _props$type === void 0 ? 'button' : _props$type,
4503
4587
  restProps = _objectWithoutPropertiesLoose(props, _excluded$z);
4504
4588
 
4589
+ var justify = useArrayProp(justifyProp);
4590
+ var padding = useArrayProp(paddingProp);
4591
+ var paddingX = useArrayProp(paddingXProp);
4592
+ var paddingY = useArrayProp(paddingYProp);
4593
+ var paddingTop = useArrayProp(paddingTopProp);
4594
+ var paddingBottom = useArrayProp(paddingBottomProp);
4595
+ var paddingLeft = useArrayProp(paddingLeftProp);
4596
+ var paddingRight = useArrayProp(paddingRightProp);
4597
+ var radius = useArrayProp(radiusProp);
4598
+ var space = useArrayProp(spaceProp);
4505
4599
  var theme = useTheme();
4506
4600
  var boxProps = React.useMemo(function () {
4507
4601
  return {
@@ -4584,16 +4678,14 @@ function cardColorStyle(props) {
4584
4678
  }) : undefined, $focusRing ? focusRingBorderStyle(border) : undefined, (_theme$sanity$styles = theme.sanity.styles) == null ? void 0 : (_theme$sanity$styles$ = _theme$sanity$styles.card) == null ? void 0 : _theme$sanity$styles$.root);
4585
4679
  }
4586
4680
 
4587
- var _excluded$y = ["pressed", "__unstable_checkered", "__unstable_focusRing", "as", "border", "borderTop", "borderRight", "borderBottom", "borderLeft", "radius", "scheme", "selected", "shadow", "tone"];
4681
+ var _excluded$y = ["__unstable_checkered", "__unstable_focusRing", "as", "border", "borderTop", "borderRight", "borderBottom", "borderLeft", "pressed", "radius", "scheme", "selected", "shadow", "tone"];
4588
4682
  var Root$u = styled__default["default"](Box)(responsiveBorderStyle, responsiveRadiusStyle, responsiveShadowStyle, cardStyle);
4589
4683
  /**
4590
4684
  * @public
4591
4685
  */
4592
4686
 
4593
4687
  var Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
4594
- var _props$pressed = props.pressed,
4595
- pressed = _props$pressed === void 0 ? false : _props$pressed,
4596
- _props$__unstable_che = props.__unstable_checkered,
4688
+ var _props$__unstable_che = props.__unstable_checkered,
4597
4689
  checkered = _props$__unstable_che === void 0 ? false : _props$__unstable_che,
4598
4690
  _props$__unstable_foc = props.__unstable_focusRing,
4599
4691
  focusRing = _props$__unstable_foc === void 0 ? false : _props$__unstable_foc,
@@ -4603,6 +4695,7 @@ var Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
4603
4695
  borderRight = props.borderRight,
4604
4696
  borderBottom = props.borderBottom,
4605
4697
  borderLeft = props.borderLeft,
4698
+ pressed = props.pressed,
4606
4699
  _props$radius = props.radius,
4607
4700
  radius = _props$radius === void 0 ? 0 : _props$radius,
4608
4701
  scheme = props.scheme,
@@ -4620,23 +4713,23 @@ var Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
4620
4713
  tone: tone
4621
4714
  }, /*#__PURE__*/React__default["default"].createElement(Root$u, _extends({
4622
4715
  "data-as": typeof as === 'string' ? as : undefined,
4623
- "data-checkered": checkered ? '' : undefined,
4624
- "data-pressed": pressed ? '' : undefined,
4625
4716
  "data-scheme": rootTheme.scheme,
4626
- "data-selected": selected ? '' : undefined,
4627
4717
  "data-ui": "Card",
4628
4718
  "data-tone": tone
4629
4719
  }, restProps, {
4630
- "$border": border,
4631
- "$borderTop": borderTop,
4632
- "$borderRight": borderRight,
4633
- "$borderBottom": borderBottom,
4634
- "$borderLeft": borderLeft,
4720
+ "$border": useArrayProp(border),
4721
+ "$borderTop": useArrayProp(borderTop),
4722
+ "$borderRight": useArrayProp(borderRight),
4723
+ "$borderBottom": useArrayProp(borderBottom),
4724
+ "$borderLeft": useArrayProp(borderLeft),
4635
4725
  "$checkered": checkered,
4636
4726
  "$focusRing": focusRing,
4637
- "$radius": radius,
4638
- "$shadow": shadow,
4727
+ "$radius": useArrayProp(radius),
4728
+ "$shadow": useArrayProp(shadow),
4639
4729
  "$tone": tone,
4730
+ "data-checkered": checkered ? '' : undefined,
4731
+ "data-pressed": pressed ? '' : undefined,
4732
+ "data-selected": selected ? '' : undefined,
4640
4733
  forwardedAs: as,
4641
4734
  ref: ref,
4642
4735
  selected: selected
@@ -4855,7 +4948,7 @@ var Code = /*#__PURE__*/React.forwardRef(function Code(props, ref) {
4855
4948
  return /*#__PURE__*/React__default["default"].createElement(Root$s, _extends({
4856
4949
  "data-ui": "Code"
4857
4950
  }, restProps, {
4858
- "$size": size,
4951
+ "$size": useArrayProp(size),
4859
4952
  "$weight": weight,
4860
4953
  ref: ref
4861
4954
  }), !(language && registered) && /*#__PURE__*/React__default["default"].createElement("code", null, children), language && registered && /*#__PURE__*/React__default["default"].createElement(Refractor__default["default"], {
@@ -4877,7 +4970,7 @@ function responsiveContainerWidthStyle(props) {
4877
4970
  var _theme$sanity = theme.sanity,
4878
4971
  container = _theme$sanity.container,
4879
4972
  media = _theme$sanity.media;
4880
- return responsive(media, getResponsiveProp(props.$width), function (val) {
4973
+ return _responsive(media, props.$width, function (val) {
4881
4974
  return {
4882
4975
  maxWidth: val === 'auto' ? 'none' : rem(container[val])
4883
4976
  };
@@ -4899,7 +4992,7 @@ var Container = /*#__PURE__*/React.forwardRef(function Container(props, ref) {
4899
4992
  return /*#__PURE__*/React__default["default"].createElement(Root$r, _extends({
4900
4993
  "data-ui": "Container"
4901
4994
  }, restProps, {
4902
- "$width": width,
4995
+ "$width": useArrayProp(width),
4903
4996
  forwardedAs: as,
4904
4997
  ref: ref
4905
4998
  }));
@@ -4928,14 +5021,14 @@ var Grid = /*#__PURE__*/React.forwardRef(function Grid(props, ref) {
4928
5021
  "data-as": typeof as === 'string' ? as : undefined,
4929
5022
  "data-ui": "Grid"
4930
5023
  }, restProps, {
4931
- "$autoRows": autoRows,
4932
- "$autoCols": autoCols,
4933
- "$autoFlow": autoFlow,
4934
- "$columns": columns,
4935
- "$gap": gap,
4936
- "$gapX": gapX,
4937
- "$gapY": gapY,
4938
- "$rows": rows,
5024
+ "$autoRows": useArrayProp(autoRows),
5025
+ "$autoCols": useArrayProp(autoCols),
5026
+ "$autoFlow": useArrayProp(autoFlow),
5027
+ "$columns": useArrayProp(columns),
5028
+ "$gap": useArrayProp(gap),
5029
+ "$gapX": useArrayProp(gapX),
5030
+ "$gapY": useArrayProp(gapY),
5031
+ "$rows": useArrayProp(rows),
4939
5032
  forwardedAs: as,
4940
5033
  ref: ref
4941
5034
  }), children);
@@ -4981,9 +5074,9 @@ var Heading = /*#__PURE__*/React.forwardRef(function Heading(props, ref) {
4981
5074
  "data-ui": "Heading"
4982
5075
  }, restProps, {
4983
5076
  "$accent": accent,
4984
- "$align": align,
5077
+ "$align": useArrayProp(align),
4985
5078
  "$muted": muted,
4986
- "$size": size,
5079
+ "$size": useArrayProp(size),
4987
5080
  "$weight": weight,
4988
5081
  ref: ref
4989
5082
  }), /*#__PURE__*/React__default["default"].createElement("span", null, children));
@@ -5003,7 +5096,7 @@ function inlineBaseStyle() {
5003
5096
  }
5004
5097
  function inlineSpaceStyle(props) {
5005
5098
  var theme = props.theme;
5006
- return responsive(theme.sanity.media, getResponsiveProp(props.$space), function (spaceIndex) {
5099
+ return _responsive(theme.sanity.media, props.$space, function (spaceIndex) {
5007
5100
  var space = rem(theme.sanity.space[spaceIndex]);
5008
5101
  return {
5009
5102
  margin: "-" + space + " 0 0 -" + space,
@@ -5026,18 +5119,20 @@ var Inline = /*#__PURE__*/React.forwardRef(function Inline(props, ref) {
5026
5119
  space = props.space,
5027
5120
  restProps = _objectWithoutPropertiesLoose(props, _excluded$s);
5028
5121
 
5029
- var children = childrenToElementArray(childrenProp).filter(Boolean);
5122
+ var children = React.useMemo(function () {
5123
+ return childrenToElementArray(childrenProp).filter(Boolean).map(function (child, idx) {
5124
+ return /*#__PURE__*/React__default["default"].createElement("div", {
5125
+ key: idx
5126
+ }, child);
5127
+ });
5128
+ }, [childrenProp]);
5030
5129
  return /*#__PURE__*/React__default["default"].createElement(Root$o, _extends({
5031
5130
  "data-ui": "Inline"
5032
5131
  }, restProps, {
5033
- "$space": space,
5132
+ "$space": useArrayProp(space),
5034
5133
  forwardedAs: as,
5035
5134
  ref: ref
5036
- }), children.map(function (child, idx) {
5037
- return /*#__PURE__*/React__default["default"].createElement("div", {
5038
- key: idx
5039
- }, child);
5040
- }));
5135
+ }), children);
5041
5136
  });
5042
5137
 
5043
5138
  var _excluded$r = ["children", "fontSize", "padding", "radius"];
@@ -5066,7 +5161,7 @@ var KBD = /*#__PURE__*/React.forwardRef(function KBD(props, ref) {
5066
5161
  return /*#__PURE__*/React__default["default"].createElement(Root$n, _extends({
5067
5162
  "data-ui": "KBD"
5068
5163
  }, restProps, {
5069
- "$radius": radius,
5164
+ "$radius": useArrayProp(radius),
5070
5165
  ref: ref
5071
5166
  }), /*#__PURE__*/React__default["default"].createElement(Box, {
5072
5167
  as: "span",
@@ -5120,12 +5215,6 @@ function useBoundaryElement() {
5120
5215
  return value || DEFAULT_VALUE;
5121
5216
  }
5122
5217
 
5123
- /**
5124
- * @internal
5125
- */
5126
-
5127
- var RO = typeof window !== 'undefined' && window.ResizeObserver ? window.ResizeObserver : resizeObserver.ResizeObserver;
5128
-
5129
5218
  function findMaxBreakpoints(media, width) {
5130
5219
  var ret = [];
5131
5220
 
@@ -5167,31 +5256,18 @@ var ElementQuery = /*#__PURE__*/React.forwardRef(function ElementQuery(props, re
5167
5256
  media = _props$media === void 0 ? theme.sanity.media : _props$media,
5168
5257
  restProps = _objectWithoutPropertiesLoose(props, _excluded$q);
5169
5258
 
5170
- var _useState = React.useState(function () {
5171
- return window.innerWidth;
5172
- }),
5173
- width = _useState[0],
5174
- setWidth = _useState[1];
5175
-
5176
5259
  var forwardedRef = useForwardedRef(ref);
5177
5260
 
5178
- var _useState2 = React.useState(null),
5179
- element = _useState2[0],
5180
- setElement = _useState2[1];
5181
-
5182
- React.useEffect(function () {
5183
- if (!element) return;
5261
+ var _useState = React.useState(null),
5262
+ element = _useState[0],
5263
+ setElement = _useState[1];
5184
5264
 
5185
- var handleResizeEntries = function handleResizeEntries(entries) {
5186
- setWidth(entries[0].contentRect.width);
5187
- };
5265
+ var elementSize = useElementSize(element);
5266
+ var width = React.useMemo(function () {
5267
+ var _elementSize$border$w;
5188
5268
 
5189
- var ro = new RO(handleResizeEntries);
5190
- ro.observe(element);
5191
- return function () {
5192
- return ro.disconnect();
5193
- };
5194
- }, [element]);
5269
+ return (_elementSize$border$w = elementSize == null ? void 0 : elementSize.border.width) != null ? _elementSize$border$w : window.innerWidth;
5270
+ }, [elementSize]);
5195
5271
  var max = React.useMemo(function () {
5196
5272
  return findMaxBreakpoints(media, width);
5197
5273
  }, [media, width]);
@@ -5297,7 +5373,7 @@ function LayerProvider(props) {
5297
5373
  _props$zOffset = props.zOffset,
5298
5374
  zOffsetProp = _props$zOffset === void 0 ? 0 : _props$zOffset;
5299
5375
  var parent = React.useContext(LayerContext);
5300
- var zOffset = useResponsiveProp(zOffsetProp);
5376
+ var zOffset = useArrayProp(zOffsetProp);
5301
5377
  var maxMediaIndex = zOffset.length - 1;
5302
5378
  var mediaIndex = Math.min(useMediaIndex(), maxMediaIndex);
5303
5379
  var zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex];
@@ -5343,13 +5419,14 @@ var Root$m = styled__default["default"].div(_templateObject$n || (_templateObjec
5343
5419
  var LayerChildren = /*#__PURE__*/React.forwardRef(function LayerChildren(props, ref) {
5344
5420
  var children = props.children,
5345
5421
  _props$style = props.style,
5346
- style = _props$style === void 0 ? EMPTY_RECORD$1 : _props$style,
5422
+ style = _props$style === void 0 ? EMPTY_RECORD : _props$style,
5347
5423
  restProps = _objectWithoutPropertiesLoose(props, _excluded$p);
5348
5424
 
5349
5425
  var _useLayer = useLayer(),
5350
5426
  zIndex = _useLayer.zIndex;
5351
5427
 
5352
5428
  return /*#__PURE__*/React__default["default"].createElement(Root$m, _extends({}, restProps, {
5429
+ "data-ui": "Layer",
5353
5430
  ref: ref,
5354
5431
  style: _extends({}, style, {
5355
5432
  zIndex: zIndex
@@ -5442,14 +5519,14 @@ function Portal(props) {
5442
5519
  function useUnique(value) {
5443
5520
  var valueRef = React.useRef(value);
5444
5521
 
5445
- if (!isEqual(valueRef.current, value)) {
5522
+ if (!_isEqual(valueRef.current, value)) {
5446
5523
  valueRef.current = value;
5447
5524
  }
5448
5525
 
5449
5526
  return valueRef.current;
5450
5527
  }
5451
5528
 
5452
- function isEqual(objA, objB) {
5529
+ function _isEqual(objA, objB) {
5453
5530
  if (!objA || !objB) {
5454
5531
  return objA === objB;
5455
5532
  }
@@ -5738,17 +5815,16 @@ var VirtualList = /*#__PURE__*/React.forwardRef(function VirtualList(props, ref)
5738
5815
  scrollEl.addEventListener('scroll', _handleScroll, {
5739
5816
  passive: true
5740
5817
  });
5741
- var ro = new ResizeObserver(function (entries) {
5742
- setScrollHeight(entries[0].contentRect.height);
5818
+
5819
+ var disposeElementSizeListener = _elementSizeObserver.subscribe(scrollEl, function (scrollElementSize) {
5820
+ setScrollHeight(scrollElementSize.content.height);
5743
5821
  });
5744
- ro.observe(scrollEl);
5745
5822
 
5746
5823
  _handleScroll();
5747
5824
 
5748
5825
  return function () {
5749
5826
  scrollEl.removeEventListener('scroll', _handleScroll);
5750
- ro.unobserve(scrollEl);
5751
- ro.disconnect();
5827
+ disposeElementSizeListener();
5752
5828
  };
5753
5829
  }
5754
5830
 
@@ -6049,13 +6125,13 @@ var Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {
6049
6125
  shadow = _props$shadow === void 0 ? 3 : _props$shadow,
6050
6126
  scheme = props.scheme,
6051
6127
  _props$style = props.style,
6052
- style = _props$style === void 0 ? EMPTY_RECORD$1 : _props$style,
6128
+ style = _props$style === void 0 ? EMPTY_RECORD : _props$style,
6053
6129
  tether = props.tether,
6054
6130
  tetherOffset = props.tetherOffset,
6055
6131
  _props$tone = props.tone,
6056
6132
  tone = _props$tone === void 0 ? 'inherit' : _props$tone,
6057
6133
  _props$width = props.width,
6058
- width = _props$width === void 0 ? 0 : _props$width,
6134
+ widthProp = _props$width === void 0 ? 0 : _props$width,
6059
6135
  _props$zOffset = props.zOffset,
6060
6136
  zOffset = _props$zOffset === void 0 ? (_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.popover.zOffset : _props$zOffset,
6061
6137
  restProps = _objectWithoutPropertiesLoose(props, _excluded$n);
@@ -6076,6 +6152,7 @@ var Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {
6076
6152
  setArrowElement = _useState3[1];
6077
6153
 
6078
6154
  var popperReferenceElement = referenceElementProp || referenceElement;
6155
+ var width = useArrayProp(widthProp);
6079
6156
  var modifiers = usePopoverModifiers({
6080
6157
  allowedAutoPlacements: allowedAutoPlacements,
6081
6158
  arrow: arrow,
@@ -6138,13 +6215,13 @@ var Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {
6138
6215
  zOffset: zOffset
6139
6216
  }, attributes.popper), /*#__PURE__*/React__default["default"].createElement(PopoverCard, {
6140
6217
  "$constrainSize": constrainSize,
6218
+ "$width": width,
6141
6219
  "data-ui": "PopoverCard",
6142
6220
  padding: padding,
6143
6221
  radius: radius,
6144
6222
  scheme: scheme,
6145
6223
  shadow: shadow,
6146
- tone: tone,
6147
- width: width
6224
+ tone: tone
6148
6225
  }, arrow && /*#__PURE__*/React__default["default"].createElement(PopoverArrow, {
6149
6226
  ref: setArrowElement,
6150
6227
  style: styles.arrow
@@ -6263,7 +6340,7 @@ function inputTextSizeStyle(props) {
6263
6340
  var theme = props.theme,
6264
6341
  $fontSize = props.$fontSize;
6265
6342
  var sizes = theme.sanity.fonts.text.sizes;
6266
- return responsive(theme.sanity.media, getResponsiveProp($fontSize), function (sizeIndex) {
6343
+ return _responsive(theme.sanity.media, $fontSize, function (sizeIndex) {
6267
6344
  return textSize(sizes[sizeIndex] || sizes[2]);
6268
6345
  });
6269
6346
  }
@@ -6315,10 +6392,10 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(props, forwardedRef)
6315
6392
  "data-read-only": !disabled && readOnly ? '' : undefined,
6316
6393
  "data-ui": "Select"
6317
6394
  }, restProps, {
6318
- "$fontSize": fontSize,
6319
- "$padding": padding,
6320
- "$radius": radius,
6321
- "$space": space,
6395
+ "$fontSize": useArrayProp(fontSize),
6396
+ "$padding": useArrayProp(padding),
6397
+ "$radius": useArrayProp(radius),
6398
+ "$space": useArrayProp(space),
6322
6399
  disabled: disabled || readOnly,
6323
6400
  ref: ref
6324
6401
  }), children), /*#__PURE__*/React__default["default"].createElement(IconBox, {
@@ -6346,7 +6423,7 @@ function responsiveStackSpaceStyle(props) {
6346
6423
  var _theme$sanity = theme.sanity,
6347
6424
  media = _theme$sanity.media,
6348
6425
  space = _theme$sanity.space;
6349
- return responsive(media, getResponsiveProp(props.$space), function (spaceIndex) {
6426
+ return _responsive(media, props.$space, function (spaceIndex) {
6350
6427
  return {
6351
6428
  gridGap: rem(space[spaceIndex])
6352
6429
  };
@@ -6368,13 +6445,13 @@ var Stack = /*#__PURE__*/React.forwardRef(function Stack(props, ref) {
6368
6445
  "data-as": typeof as === 'string' ? as : undefined,
6369
6446
  "data-ui": "Stack"
6370
6447
  }, restProps, {
6371
- "$space": space,
6448
+ "$space": useArrayProp(space),
6372
6449
  forwardedAs: as,
6373
6450
  ref: ref
6374
6451
  }));
6375
6452
  });
6376
6453
 
6377
- var _templateObject$g, _templateObject2$b, _templateObject3$6, _templateObject4$4, _templateObject5$3, _templateObject6$1, _templateObject7;
6454
+ var _templateObject$g, _templateObject2$b, _templateObject3$6, _templateObject4$4, _templateObject5$3, _templateObject6$2, _templateObject7;
6378
6455
  /* Root */
6379
6456
 
6380
6457
  function switchBaseStyles() {
@@ -6418,7 +6495,7 @@ function switchThumbStyles(props) {
6418
6495
  var checkedOffset = trackWidth - trackPadding * 2 - size;
6419
6496
  var indeterminateOffset = trackWidth / 2 - size / 2 - trackPadding;
6420
6497
  var checked = $indeterminate !== true && props.$checked === true;
6421
- return styled.css(_templateObject5$3 || (_templateObject5$3 = _taggedTemplateLiteralLoose(["\n &:not([hidden]) {\n display: block;\n }\n position: absolute;\n left: ", ";\n top: ", ";\n height: ", ";\n width: ", ";\n border-radius: ", ";\n transition-property: transform;\n transition-duration: ", "ms;\n transition-timing-function: ", ";\n background: var(--switch-fg-color);\n transform: translate3d(0, 0, 0);\n\n ", "\n\n ", "\n "])), rem(trackPadding), rem(trackPadding), rem(size), rem(size), rem(size / 2), input["switch"].transitionDurationMs, input["switch"].transitionTimingFunction, checked && styled.css(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteralLoose(["\n transform: translate3d(", "px, 0, 0);\n "])), checkedOffset), $indeterminate && styled.css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n transform: translate3d(", "px, 0, 0);\n "])), indeterminateOffset));
6498
+ return styled.css(_templateObject5$3 || (_templateObject5$3 = _taggedTemplateLiteralLoose(["\n &:not([hidden]) {\n display: block;\n }\n position: absolute;\n left: ", ";\n top: ", ";\n height: ", ";\n width: ", ";\n border-radius: ", ";\n transition-property: transform;\n transition-duration: ", "ms;\n transition-timing-function: ", ";\n background: var(--switch-fg-color);\n transform: translate3d(0, 0, 0);\n\n ", "\n\n ", "\n "])), rem(trackPadding), rem(trackPadding), rem(size), rem(size), rem(size / 2), input["switch"].transitionDurationMs, input["switch"].transitionTimingFunction, checked && styled.css(_templateObject6$2 || (_templateObject6$2 = _taggedTemplateLiteralLoose(["\n transform: translate3d(", "px, 0, 0);\n "])), checkedOffset), $indeterminate && styled.css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n transform: translate3d(", "px, 0, 0);\n "])), indeterminateOffset));
6422
6499
  }
6423
6500
 
6424
6501
  var _excluded$j = ["checked", "className", "disabled", "indeterminate", "readOnly", "style"];
@@ -6467,7 +6544,7 @@ var Switch = /*#__PURE__*/React.forwardRef(function Switch(props, forwardedRef)
6467
6544
  })));
6468
6545
  });
6469
6546
 
6470
- var _excluded$i = ["border", "customValidity", "disabled", "fontSize", "padding", "radius"];
6547
+ var _excluded$i = ["border", "customValidity", "disabled", "fontSize", "padding", "radius", "weight"];
6471
6548
 
6472
6549
  var _templateObject$f;
6473
6550
  var Root$d = styled__default["default"].span(textInputRootStyle);
@@ -6490,32 +6567,42 @@ var TextArea = /*#__PURE__*/React.forwardRef(function TextArea(props, forwardedR
6490
6567
  padding = _props$padding === void 0 ? 3 : _props$padding,
6491
6568
  _props$radius = props.radius,
6492
6569
  radius = _props$radius === void 0 ? 1 : _props$radius,
6570
+ weight = props.weight,
6493
6571
  restProps = _objectWithoutPropertiesLoose(props, _excluded$i);
6494
6572
 
6495
6573
  var ref = useForwardedRef(forwardedRef);
6574
+ var rootTheme = useRootTheme();
6496
6575
  useCustomValidity(ref, customValidity);
6497
6576
  return /*#__PURE__*/React__default["default"].createElement(Root$d, {
6498
6577
  "data-ui": "TextArea"
6499
6578
  }, /*#__PURE__*/React__default["default"].createElement(InputRoot$1, null, /*#__PURE__*/React__default["default"].createElement(Input$1, _extends({
6500
- "data-as": "textarea"
6579
+ "data-as": "textarea",
6580
+ "data-tone": rootTheme.tone
6501
6581
  }, restProps, {
6502
- "$fontSize": fontSize,
6503
- "$padding": padding,
6582
+ "$fontSize": useArrayProp(fontSize),
6583
+ "$padding": useArrayProp(padding),
6584
+ "$space": useArrayProp(0),
6585
+ "$tone": rootTheme.tone,
6586
+ "$weight": weight,
6504
6587
  disabled: disabled,
6505
6588
  ref: ref
6506
6589
  })), /*#__PURE__*/React__default["default"].createElement(Presentation$1, {
6507
6590
  "$border": border,
6508
- "$radius": radius
6591
+ "$radius": useArrayProp(radius),
6592
+ "$tone": rootTheme.tone,
6593
+ "data-tone": rootTheme.tone
6509
6594
  })));
6510
6595
  });
6511
6596
 
6512
- var _excluded$h = ["border", "clearButton", "disabled", "fontSize", "icon", "iconRight", "onClear", "padding", "prefix", "radius", "readOnly", "space", "suffix", "customValidity", "type"];
6597
+ var _excluded$h = ["border", "clearButton", "disabled", "fontSize", "icon", "iconRight", "onClear", "padding", "prefix", "radius", "readOnly", "space", "suffix", "customValidity", "type", "weight"];
6513
6598
 
6514
- var _templateObject$e, _templateObject2$a, _templateObject3$5, _templateObject4$3, _templateObject5$2;
6599
+ var _templateObject$e, _templateObject2$a, _templateObject3$5, _templateObject4$3, _templateObject5$2, _templateObject6$1;
6515
6600
  var CLEAR_BUTTON_BOX_STYLE = {
6516
6601
  zIndex: 2
6517
6602
  };
6518
- var Root$c = styled__default["default"].span(textInputRootStyle);
6603
+ var Root$c = styled__default["default"](Card).attrs({
6604
+ forwardedAs: 'span'
6605
+ })(textInputRootStyle);
6519
6606
  var InputRoot = styled__default["default"].span(_templateObject$e || (_templateObject$e = _taggedTemplateLiteralLoose(["\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n"])));
6520
6607
  var Prefix = styled__default["default"](Card).attrs({
6521
6608
  forwardedAs: 'span'
@@ -6526,7 +6613,8 @@ var Suffix = styled__default["default"](Card).attrs({
6526
6613
  var Input = styled__default["default"].input(responsiveInputPaddingStyle, textInputBaseStyle, textInputFontSizeStyle);
6527
6614
  var Presentation = styled__default["default"].span(responsiveRadiusStyle, textInputRepresentationStyle);
6528
6615
  var LeftBox = styled__default["default"](Box)(_templateObject4$3 || (_templateObject4$3 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n"])));
6529
- var RightCard = styled__default["default"](Card)(_templateObject5$2 || (_templateObject5$2 = _taggedTemplateLiteralLoose(["\n background-color: transparent;\n position: absolute;\n top: 0;\n right: 0;\n"])));
6616
+ var RightBox = styled__default["default"](Box)(_templateObject5$2 || (_templateObject5$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n right: 0;\n"])));
6617
+ var RightCard = styled__default["default"](Card)(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteralLoose(["\n background-color: transparent;\n position: absolute;\n top: 0;\n right: 0;\n"])));
6530
6618
  /**
6531
6619
  * @public
6532
6620
  */
@@ -6538,7 +6626,7 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6538
6626
  _props$disabled = props.disabled,
6539
6627
  disabled = _props$disabled === void 0 ? false : _props$disabled,
6540
6628
  _props$fontSize = props.fontSize,
6541
- fontSize = _props$fontSize === void 0 ? 2 : _props$fontSize,
6629
+ fontSizeProp = _props$fontSize === void 0 ? 2 : _props$fontSize,
6542
6630
  icon = props.icon,
6543
6631
  iconRight = props.iconRight,
6544
6632
  onClear = props.onClear,
@@ -6549,16 +6637,20 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6549
6637
  radiusProp = _props$radius === void 0 ? 1 : _props$radius,
6550
6638
  readOnly = props.readOnly,
6551
6639
  _props$space = props.space,
6552
- space = _props$space === void 0 ? 3 : _props$space,
6640
+ spaceProp = _props$space === void 0 ? 3 : _props$space,
6553
6641
  suffix = props.suffix,
6554
6642
  customValidity = props.customValidity,
6555
6643
  _props$type = props.type,
6556
6644
  type = _props$type === void 0 ? 'text' : _props$type,
6645
+ weight = props.weight,
6557
6646
  restProps = _objectWithoutPropertiesLoose(props, _excluded$h);
6558
6647
 
6559
6648
  var ref = useForwardedRef(forwardedRef);
6560
- var padding = useResponsiveProp(paddingProp);
6561
- var radius = useResponsiveProp(radiusProp); // Transient properties
6649
+ var rootTheme = useRootTheme();
6650
+ var fontSize = useArrayProp(fontSizeProp);
6651
+ var padding = useArrayProp(paddingProp);
6652
+ var radius = useArrayProp(radiusProp);
6653
+ var space = useArrayProp(spaceProp); // Transient properties
6562
6654
 
6563
6655
  var $hasClearButton = Boolean(clearButton);
6564
6656
  var $hasIcon = Boolean(icon);
@@ -6597,17 +6689,19 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6597
6689
  "$border": border,
6598
6690
  "$hasPrefix": $hasPrefix,
6599
6691
  "$hasSuffix": $hasSuffix,
6600
- "$radius": radius
6692
+ "$radius": radius,
6693
+ "$tone": rootTheme.tone,
6694
+ "data-tone": rootTheme.tone
6601
6695
  }, icon && /*#__PURE__*/React__default["default"].createElement(LeftBox, {
6602
6696
  padding: padding
6603
6697
  }, /*#__PURE__*/React__default["default"].createElement(Text, {
6604
6698
  size: fontSize
6605
- }, /*#__PURE__*/React.isValidElement(icon) && icon, ReactIs.isValidElementType(icon) && /*#__PURE__*/React.createElement(icon))), !$hasClearButton && iconRight && /*#__PURE__*/React__default["default"].createElement(RightCard, {
6699
+ }, /*#__PURE__*/React.isValidElement(icon) && icon, ReactIs.isValidElementType(icon) && /*#__PURE__*/React.createElement(icon))), !$hasClearButton && iconRight && /*#__PURE__*/React__default["default"].createElement(RightBox, {
6606
6700
  padding: padding
6607
6701
  }, /*#__PURE__*/React__default["default"].createElement(Text, {
6608
6702
  size: fontSize
6609
6703
  }, /*#__PURE__*/React.isValidElement(iconRight) && iconRight, ReactIs.isValidElementType(iconRight) && /*#__PURE__*/React.createElement(iconRight))));
6610
- }, [border, fontSize, icon, iconRight, padding, radius, $hasClearButton, $hasPrefix, $hasSuffix]); // Render clear button (memoized)
6704
+ }, [border, fontSize, icon, iconRight, padding, radius, rootTheme.tone, $hasClearButton, $hasPrefix, $hasSuffix]); // Render clear button (memoized)
6611
6705
 
6612
6706
  var clearButtonBoxPadding = React.useMemo(function () {
6613
6707
  return padding.map(function (v) {
@@ -6626,7 +6720,7 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6626
6720
  });
6627
6721
  }, [padding]);
6628
6722
  var clearButtonProps = React.useMemo(function () {
6629
- return typeof clearButton === 'object' ? clearButton : EMPTY_RECORD$1;
6723
+ return typeof clearButton === 'object' ? clearButton : EMPTY_RECORD;
6630
6724
  }, [clearButton]);
6631
6725
  var clearButtonNode = React.useMemo(function () {
6632
6726
  return !disabled && !readOnly && clearButton && /*#__PURE__*/React__default["default"].createElement(RightCard, {
@@ -6658,15 +6752,19 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6658
6752
  }, /*#__PURE__*/React__default["default"].createElement("span", null, suffix));
6659
6753
  }, [radius, suffix]);
6660
6754
  return /*#__PURE__*/React__default["default"].createElement(Root$c, {
6661
- "data-ui": "TextInput"
6755
+ "data-ui": "TextInput",
6756
+ tone: rootTheme.tone
6662
6757
  }, prefixNode, /*#__PURE__*/React__default["default"].createElement(InputRoot, null, /*#__PURE__*/React__default["default"].createElement(Input, _extends({
6663
- "data-as": "input"
6758
+ "data-as": "input",
6759
+ "data-tone": rootTheme.tone
6664
6760
  }, restProps, {
6761
+ "$fontSize": fontSize,
6665
6762
  "$iconLeft": $hasIcon,
6666
6763
  "$iconRight": $hasIconRight || $hasClearButton,
6667
6764
  "$padding": padding,
6668
6765
  "$space": space,
6669
- "$fontSize": fontSize,
6766
+ "$tone": rootTheme.tone,
6767
+ "$weight": weight,
6670
6768
  disabled: disabled,
6671
6769
  readOnly: readOnly,
6672
6770
  ref: ref,
@@ -6714,7 +6812,7 @@ var Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(props, ref) {
6714
6812
  children = props.children,
6715
6813
  content = props.content,
6716
6814
  disabled = props.disabled,
6717
- fallbackPlacements = props.fallbackPlacements,
6815
+ fallbackPlacementsProp = props.fallbackPlacements,
6718
6816
  _props$placement = props.placement,
6719
6817
  placement = _props$placement === void 0 ? 'bottom' : _props$placement,
6720
6818
  portal = props.portal,
@@ -6723,6 +6821,7 @@ var Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(props, ref) {
6723
6821
  zOffset = _props$zOffset === void 0 ? (_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.tooltip.zOffset : _props$zOffset,
6724
6822
  restProps = _objectWithoutPropertiesLoose(props, _excluded$g);
6725
6823
 
6824
+ var fallbackPlacements = useArrayProp(fallbackPlacementsProp);
6726
6825
  var forwardedRef = useForwardedRef(ref);
6727
6826
 
6728
6827
  var _useState = React.useState(null),
@@ -6860,7 +6959,7 @@ var _templateObject$b, _templateObject2$8, _templateObject3$3, _templateObject4$
6860
6959
  * @internal
6861
6960
  */
6862
6961
 
6863
- var Root$9 = styled__default["default"].div(_templateObject$b || (_templateObject$b = _taggedTemplateLiteralLoose(["\n /* position: relative; */\n line-height: 0;\n"])));
6962
+ var Root$9 = styled__default["default"].div(_templateObject$b || (_templateObject$b = _taggedTemplateLiteralLoose(["\n line-height: 0;\n"])));
6864
6963
  /**
6865
6964
  * @internal
6866
6965
  */
@@ -6981,11 +7080,6 @@ function autocompleteReducer(state, msg) {
6981
7080
  /**
6982
7081
  * @internal
6983
7082
  */
6984
- var EMPTY_RECORD = {};
6985
- /**
6986
- * @internal
6987
- */
6988
-
6989
7083
  var AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = ['Control', 'Shift', 'Alt', 'Enter', 'Home', 'End', 'PageUp', 'PageDown', 'Meta', 'Tab', 'CapsLock'];
6990
7084
  /**
6991
7085
  * @internal
@@ -7097,7 +7191,7 @@ var InnerAutocomplete = /*#__PURE__*/React.forwardRef(function InnerAutocomplete
7097
7191
  var popoverMouseWithinRef = React.useRef(false);
7098
7192
  var listBoxId = id + "-listbox";
7099
7193
  var options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY;
7100
- var padding = useResponsiveProp(paddingProp);
7194
+ var padding = useArrayProp(paddingProp);
7101
7195
  var currentOption = React.useMemo(function () {
7102
7196
  return value !== null ? options.find(function (o) {
7103
7197
  return o.value === value;
@@ -7441,6 +7535,7 @@ var InnerAutocomplete = /*#__PURE__*/React.forwardRef(function InnerAutocomplete
7441
7535
  var content = React.useMemo(function () {
7442
7536
  if (filteredOptions.length === 0) return null;
7443
7537
  return /*#__PURE__*/React__default["default"].createElement(ListBox, _extends({
7538
+ "data-ui": "AutoComplete__results",
7444
7539
  onKeyDown: handleListBoxKeyDown,
7445
7540
  padding: 1
7446
7541
  }, listBox, {
@@ -7448,6 +7543,7 @@ var InnerAutocomplete = /*#__PURE__*/React.forwardRef(function InnerAutocomplete
7448
7543
  }), /*#__PURE__*/React__default["default"].createElement(Stack, {
7449
7544
  as: "ul",
7450
7545
  "aria-multiselectable": false,
7546
+ "data-ui": "AutoComplete__resultsList",
7451
7547
  id: listBoxId,
7452
7548
  ref: listBoxElementRef,
7453
7549
  role: "listbox",
@@ -7527,9 +7623,11 @@ var Breadcrumbs = /*#__PURE__*/React.forwardRef(function Breadcrumbs(props, ref)
7527
7623
  maxLength = props.maxLength,
7528
7624
  separator = props.separator,
7529
7625
  _props$space = props.space,
7530
- space = _props$space === void 0 ? 2 : _props$space,
7626
+ spaceRaw = _props$space === void 0 ? 2 : _props$space,
7531
7627
  restProps = _objectWithoutPropertiesLoose(props, _excluded$e);
7532
7628
 
7629
+ var space = useArrayProp(spaceRaw);
7630
+
7533
7631
  var _useState = React.useState(false),
7534
7632
  open = _useState[0],
7535
7633
  setOpen = _useState[1];
@@ -7625,7 +7723,7 @@ function dialogStyle(_ref) {
7625
7723
  function responsiveDialogPositionStyle(props) {
7626
7724
  var theme = props.theme;
7627
7725
  var media = theme.sanity.media;
7628
- return responsive(media, getResponsiveProp(props.$position), function (position) {
7726
+ return _responsive(media, props.$position, function (position) {
7629
7727
  return {
7630
7728
  '&&': {
7631
7729
  position: position
@@ -7673,10 +7771,13 @@ var DialogCard = /*#__PURE__*/React.forwardRef(function DialogCard(props, ref) {
7673
7771
  id = props.id,
7674
7772
  onClickOutside = props.onClickOutside,
7675
7773
  onClose = props.onClose,
7676
- radius = props.radius,
7774
+ radiusProp = props.radius,
7677
7775
  scheme = props.scheme,
7678
- shadow = props.shadow,
7679
- width = props.width;
7776
+ shadowProp = props.shadow,
7777
+ widthProp = props.width;
7778
+ var radius = useArrayProp(radiusProp);
7779
+ var shadow = useArrayProp(shadowProp);
7780
+ var width = useArrayProp(widthProp);
7680
7781
  var forwardedRef = useForwardedRef(ref);
7681
7782
 
7682
7783
  var _useState = React.useState(null),
@@ -7763,7 +7864,7 @@ var Dialog = /*#__PURE__*/React.forwardRef(function Dialog(props, ref) {
7763
7864
  _props$__unstable_hid = props.__unstable_hideCloseButton,
7764
7865
  hideCloseButton = _props$__unstable_hid === void 0 ? false : _props$__unstable_hid,
7765
7866
  _props$cardRadius = props.cardRadius,
7766
- cardRadius = _props$cardRadius === void 0 ? 3 : _props$cardRadius,
7867
+ cardRadiusProp = _props$cardRadius === void 0 ? 3 : _props$cardRadius,
7767
7868
  _props$cardShadow = props.cardShadow,
7768
7869
  cardShadow = _props$cardShadow === void 0 ? 4 : _props$cardShadow,
7769
7870
  children = props.children,
@@ -7774,17 +7875,22 @@ var Dialog = /*#__PURE__*/React.forwardRef(function Dialog(props, ref) {
7774
7875
  onClickOutside = props.onClickOutside,
7775
7876
  onClose = props.onClose,
7776
7877
  _props$padding = props.padding,
7777
- padding = _props$padding === void 0 ? 4 : _props$padding,
7878
+ paddingProp = _props$padding === void 0 ? 4 : _props$padding,
7778
7879
  portal = props.portal,
7779
7880
  _props$position = props.position,
7780
- position = _props$position === void 0 ? dialog.position || 'fixed' : _props$position,
7881
+ positionProp = _props$position === void 0 ? dialog.position || 'fixed' : _props$position,
7781
7882
  scheme = props.scheme,
7782
7883
  _props$width = props.width,
7783
- width = _props$width === void 0 ? 0 : _props$width,
7884
+ widthProp = _props$width === void 0 ? 0 : _props$width,
7784
7885
  _props$zOffset = props.zOffset,
7785
- zOffset = _props$zOffset === void 0 ? dialog.zOffset || ((_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.dialog.zOffset) : _props$zOffset,
7886
+ zOffsetProp = _props$zOffset === void 0 ? dialog.zOffset || ((_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.dialog.zOffset) : _props$zOffset,
7786
7887
  restProps = _objectWithoutPropertiesLoose(props, _excluded$d);
7787
7888
 
7889
+ var cardRadius = useArrayProp(cardRadiusProp);
7890
+ var padding = useArrayProp(paddingProp);
7891
+ var position = useArrayProp(positionProp);
7892
+ var width = useArrayProp(widthProp);
7893
+ var zOffset = useArrayProp(zOffsetProp);
7788
7894
  var preDivRef = React.useRef(null);
7789
7895
  var postDivRef = React.useRef(null);
7790
7896
  var cardRef = React.useRef(null);
@@ -7879,9 +7985,11 @@ var Hotkeys = /*#__PURE__*/React.forwardRef(function Hotkeys(props, ref) {
7879
7985
  padding = props.padding,
7880
7986
  radius = props.radius,
7881
7987
  _props$space = props.space,
7882
- space = _props$space === void 0 ? 1 : _props$space,
7988
+ spaceProp = _props$space === void 0 ? 1 : _props$space,
7883
7989
  restProps = _objectWithoutPropertiesLoose(props, _excluded$c);
7884
7990
 
7991
+ var space = useArrayProp(spaceProp);
7992
+
7885
7993
  if (!keys || keys.length === 0) {
7886
7994
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null);
7887
7995
  }
@@ -8292,17 +8400,18 @@ var Menu = /*#__PURE__*/React.forwardRef(function Menu(props, ref) {
8292
8400
  var MenuButton = /*#__PURE__*/React.forwardRef(function MenuButton(props, ref) {
8293
8401
  var _props$__unstable_dis = props.__unstable_disableRestoreFocusOnClose,
8294
8402
  disableRestoreFocusOnClose = _props$__unstable_dis === void 0 ? false : _props$__unstable_dis,
8295
- boundaryElement = props.boundaryElement,
8403
+ deprecated_boundaryElement = props.boundaryElement,
8296
8404
  buttonProp = props.button,
8297
8405
  id = props.id,
8298
8406
  menuProp = props.menu,
8299
8407
  onClose = props.onClose,
8300
- placement = props.placement,
8301
- popoverScheme = props.popoverScheme,
8302
- portal = props.portal,
8408
+ deprecated_placement = props.placement,
8409
+ deprecated_popoverScheme = props.popoverScheme,
8410
+ _props$portal = props.portal,
8411
+ deprecated_portal = _props$portal === void 0 ? true : _props$portal,
8303
8412
  popover = props.popover,
8304
- popoverRadius = props.popoverRadius,
8305
- preventOverflow = props.preventOverflow;
8413
+ deprecated_popoverRadius = props.popoverRadius,
8414
+ deprecated_preventOverflow = props.preventOverflow;
8306
8415
 
8307
8416
  var _useState = React.useState(false),
8308
8417
  open = _useState[0],
@@ -8450,14 +8559,14 @@ var MenuButton = /*#__PURE__*/React.forwardRef(function MenuButton(props, ref) {
8450
8559
  }, [buttonProp, handleButtonClick, handleButtonKeyDown, id, open, setButtonRef]);
8451
8560
  var popoverProps = React.useMemo(function () {
8452
8561
  return _extends({
8453
- boundaryElement: boundaryElement,
8454
- placement: placement,
8455
- portal: portal,
8456
- radius: popoverRadius,
8457
- overflow: preventOverflow,
8458
- scheme: popoverScheme
8562
+ boundaryElement: deprecated_boundaryElement,
8563
+ placement: deprecated_placement,
8564
+ portal: deprecated_portal,
8565
+ radius: deprecated_popoverRadius,
8566
+ preventOverflow: deprecated_preventOverflow,
8567
+ scheme: deprecated_popoverScheme
8459
8568
  }, popover || {});
8460
- }, [boundaryElement, placement, popover, popoverRadius, portal, preventOverflow, popoverScheme]);
8569
+ }, [deprecated_boundaryElement, deprecated_preventOverflow, deprecated_placement, popover, deprecated_popoverRadius, deprecated_portal, deprecated_popoverScheme]);
8461
8570
  return /*#__PURE__*/React__default["default"].createElement(Popover, _extends({}, popoverProps, {
8462
8571
  content: menu,
8463
8572
  "data-ui": "MenuButton__popover",
@@ -8494,7 +8603,7 @@ function selectableColorStyle(props) {
8494
8603
  * @internal
8495
8604
  */
8496
8605
 
8497
- var Selectable = styled__default["default"](Box)(responsiveBorderStyle, responsiveRadiusStyle, selectableBaseStyle, selectableColorStyle);
8606
+ var Selectable = styled__default["default"](Box)(responsiveRadiusStyle, selectableBaseStyle, selectableColorStyle);
8498
8607
 
8499
8608
  function useMenu() {
8500
8609
  var value = React.useContext(MenuContext);
@@ -8527,8 +8636,7 @@ function MenuGroup(props) {
8527
8636
  onClick = props.onClick,
8528
8637
  _props$padding = props.padding,
8529
8638
  padding = _props$padding === void 0 ? 3 : _props$padding,
8530
- _props$popover = props.popover,
8531
- popover = _props$popover === void 0 ? {} : _props$popover,
8639
+ popover = props.popover,
8532
8640
  _props$radius = props.radius,
8533
8641
  radius = _props$radius === void 0 ? 2 : _props$radius,
8534
8642
  _props$space = props.space,
@@ -8642,7 +8750,7 @@ function MenuGroup(props) {
8642
8750
  "aria-pressed": as === 'button' ? withinMenu : undefined,
8643
8751
  "data-pressed": as !== 'button' ? withinMenu : undefined,
8644
8752
  "data-selected": !withinMenu && active ? '' : undefined,
8645
- "$radius": radius,
8753
+ "$radius": useArrayProp(radius),
8646
8754
  "$tone": tone,
8647
8755
  onClick: handleClick,
8648
8756
  onKeyDown: handleKeyDown,
@@ -8741,21 +8849,20 @@ var MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(props, forwardedR
8741
8849
  setRootElement(el);
8742
8850
  }, [ref]);
8743
8851
  return /*#__PURE__*/React__default["default"].createElement(Selectable, _extends({
8744
- "data-as": as,
8745
- "data-ui": "MenuItem",
8746
- forwardedAs: as
8852
+ "data-ui": "MenuItem"
8747
8853
  }, restProps, {
8748
8854
  "aria-pressed": as === 'button' && pressed,
8749
8855
  "data-pressed": as !== 'button' && pressed ? '' : undefined,
8750
8856
  "data-selected": active ? '' : undefined,
8751
8857
  "data-disabled": disabled ? '' : undefined,
8752
- "$radius": radius,
8858
+ forwardedAs: as,
8859
+ "$radius": useArrayProp(radius),
8860
+ "$padding": useArrayProp(0),
8753
8861
  "$tone": tone,
8754
8862
  disabled: disabled,
8755
8863
  onClick: handleClick,
8756
8864
  onMouseEnter: onItemMouseEnter,
8757
8865
  onMouseLeave: onItemMouseLeave,
8758
- padding: 0,
8759
8866
  ref: setRef,
8760
8867
  role: "menuitem",
8761
8868
  tabIndex: -1,
@@ -8837,7 +8944,7 @@ var Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(props, ref) {
8837
8944
  }, [delay]);
8838
8945
  return /*#__PURE__*/React__default["default"].createElement(Root$4, _extends({}, restProps, {
8839
8946
  "$animated": animated,
8840
- "$radius": radius,
8947
+ "$radius": useArrayProp(radius),
8841
8948
  "$visible": visible,
8842
8949
  ref: ref
8843
8950
  }));
@@ -8853,13 +8960,15 @@ var Root$3 = styled__default["default"](Skeleton)(function (_ref) {
8853
8960
  theme = _ref.theme;
8854
8961
  var media = theme.sanity.media;
8855
8962
  var font = theme.sanity.fonts[$style];
8856
- var styles = responsive(media, $size, function (sizeIndex) {
8963
+
8964
+ var styles = _responsive(media, $size, function (sizeIndex) {
8857
8965
  var fontSize = font.sizes[sizeIndex];
8858
8966
  var capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight;
8859
8967
  return {
8860
8968
  height: capHeight
8861
8969
  };
8862
8970
  });
8971
+
8863
8972
  return styles;
8864
8973
  });
8865
8974
  /**
@@ -8872,7 +8981,7 @@ var TextSkeleton = /*#__PURE__*/React.forwardRef(function TextSkeleton(props, re
8872
8981
  size = _props$size === void 0 ? 2 : _props$size,
8873
8982
  restProps = _objectWithoutPropertiesLoose(props, _excluded$7);
8874
8983
 
8875
- var $size = useResponsiveProp(size);
8984
+ var $size = useArrayProp(size);
8876
8985
  return /*#__PURE__*/React__default["default"].createElement(Root$3, _extends({}, restProps, {
8877
8986
  "$size": $size,
8878
8987
  ref: ref,
@@ -8889,7 +8998,7 @@ var LabelSkeleton = /*#__PURE__*/React.forwardRef(function TextSkeleton(props, r
8889
8998
  size = _props$size2 === void 0 ? 2 : _props$size2,
8890
8999
  restProps = _objectWithoutPropertiesLoose(props, _excluded2);
8891
9000
 
8892
- var $size = useResponsiveProp(size);
9001
+ var $size = useArrayProp(size);
8893
9002
  return /*#__PURE__*/React__default["default"].createElement(Root$3, _extends({}, restProps, {
8894
9003
  "$size": $size,
8895
9004
  ref: ref,
@@ -8906,7 +9015,7 @@ var HeadingSkeleton = /*#__PURE__*/React.forwardRef(function TextSkeleton(props,
8906
9015
  size = _props$size3 === void 0 ? 2 : _props$size3,
8907
9016
  restProps = _objectWithoutPropertiesLoose(props, _excluded3);
8908
9017
 
8909
- var $size = useResponsiveProp(size);
9018
+ var $size = useArrayProp(size);
8910
9019
  return /*#__PURE__*/React__default["default"].createElement(Root$3, _extends({}, restProps, {
8911
9020
  "$size": $size,
8912
9021
  ref: ref,
@@ -8923,7 +9032,7 @@ var CodeSkeleton = /*#__PURE__*/React.forwardRef(function TextSkeleton(props, re
8923
9032
  size = _props$size4 === void 0 ? 2 : _props$size4,
8924
9033
  restProps = _objectWithoutPropertiesLoose(props, _excluded4);
8925
9034
 
8926
- var $size = useResponsiveProp(size);
9035
+ var $size = useArrayProp(size);
8927
9036
  return /*#__PURE__*/React__default["default"].createElement(Root$3, _extends({}, restProps, {
8928
9037
  "$size": $size,
8929
9038
  ref: ref,
@@ -9836,7 +9945,6 @@ exports.Popover = Popover;
9836
9945
  exports.Portal = Portal;
9837
9946
  exports.PortalProvider = PortalProvider;
9838
9947
  exports.Radio = Radio;
9839
- exports.ResizeObserver = RO;
9840
9948
  exports.Select = Select;
9841
9949
  exports.Skeleton = Skeleton;
9842
9950
  exports.Spinner = Spinner;
@@ -9858,18 +9966,21 @@ exports.Tooltip = Tooltip;
9858
9966
  exports.Tree = Tree;
9859
9967
  exports.TreeItem = TreeItem;
9860
9968
  exports.VirtualList = VirtualList;
9969
+ exports._ResizeObserver = _ResizeObserver;
9970
+ exports._elementSizeObserver = _elementSizeObserver;
9971
+ exports._fillCSSObject = _fillCSSObject;
9972
+ exports._getArrayProp = _getArrayProp;
9973
+ exports._getResponsiveSpace = _getResponsiveSpace;
9861
9974
  exports._hasFocus = _hasFocus;
9862
9975
  exports._isEnterToClickElement = _isEnterToClickElement;
9863
9976
  exports._isScrollable = _isScrollable;
9864
9977
  exports._raf = _raf;
9865
9978
  exports._raf2 = _raf2;
9979
+ exports._responsive = _responsive;
9866
9980
  exports.attemptFocus = attemptFocus;
9867
9981
  exports.createColorTheme = createColorTheme;
9868
- exports.fillCSSObject = fillCSSObject;
9869
9982
  exports.focusFirstDescendant = focusFirstDescendant;
9870
9983
  exports.focusLastDescendant = focusLastDescendant;
9871
- exports.getResponsiveProp = getResponsiveProp;
9872
- exports.getResponsiveSpace = getResponsiveSpace;
9873
9984
  exports.hexToRgb = hexToRgb;
9874
9985
  exports.hslToRgb = hslToRgb;
9875
9986
  exports.isFocusable = isFocusable;
@@ -9882,7 +9993,6 @@ exports.isHTMLTextAreaElement = isHTMLTextAreaElement;
9882
9993
  exports.multiply = multiply$1;
9883
9994
  exports.parseColor = parseColor;
9884
9995
  exports.rem = rem;
9885
- exports.responsive = responsive;
9886
9996
  exports.responsiveCodeFontStyle = responsiveCodeFontStyle;
9887
9997
  exports.responsiveHeadingFont = responsiveHeadingFont;
9888
9998
  exports.responsiveLabelFont = responsiveLabelFont;
@@ -9893,18 +10003,19 @@ exports.rgbToHsl = rgbToHsl;
9893
10003
  exports.rgba = rgba;
9894
10004
  exports.screen = screen$1;
9895
10005
  exports.studioTheme = studioTheme;
10006
+ exports.useArrayProp = useArrayProp;
9896
10007
  exports.useBoundaryElement = useBoundaryElement;
9897
10008
  exports.useClickOutside = useClickOutside;
9898
10009
  exports.useCustomValidity = useCustomValidity;
9899
10010
  exports.useDialog = useDialog;
9900
10011
  exports.useElementRect = useElementRect;
10012
+ exports.useElementSize = useElementSize;
9901
10013
  exports.useForwardedRef = useForwardedRef;
9902
10014
  exports.useGlobalKeyDown = useGlobalKeyDown;
9903
10015
  exports.useLayer = useLayer;
9904
10016
  exports.useMediaIndex = useMediaIndex;
9905
10017
  exports.usePortal = usePortal;
9906
10018
  exports.usePrefersDark = usePrefersDark;
9907
- exports.useResponsiveProp = useResponsiveProp;
9908
10019
  exports.useRootTheme = useRootTheme;
9909
10020
  exports.useTheme = useTheme;
9910
10021
  exports.useToast = useToast;