@sanity/ui 0.37.21 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/lib/dts/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  2. package/lib/dts/src/components/dialog/dialog.d.ts.map +1 -1
  3. package/lib/dts/src/components/dialog/styles.d.ts +1 -1
  4. package/lib/dts/src/components/dialog/styles.d.ts.map +1 -1
  5. package/lib/dts/src/components/hotkeys/hotkeys.d.ts.map +1 -1
  6. package/lib/dts/src/components/menu/menuGroup.d.ts.map +1 -1
  7. package/lib/dts/src/components/skeleton/skeleton.d.ts.map +1 -1
  8. package/lib/dts/src/hooks/index.d.ts +2 -1
  9. package/lib/dts/src/hooks/index.d.ts.map +1 -1
  10. package/lib/dts/src/hooks/useArrayProp.d.ts +7 -0
  11. package/lib/dts/src/hooks/useArrayProp.d.ts.map +1 -0
  12. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts +1 -1
  13. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts.map +1 -1
  14. package/lib/dts/src/hooks/useElementSize.d.ts +7 -0
  15. package/lib/dts/src/hooks/useElementSize.d.ts.map +1 -0
  16. package/lib/dts/src/index.d.ts +1 -0
  17. package/lib/dts/src/index.d.ts.map +1 -1
  18. package/lib/dts/src/observers/elementSizeObserver.d.ts +37 -0
  19. package/lib/dts/src/observers/elementSizeObserver.d.ts.map +1 -0
  20. package/lib/dts/src/observers/index.d.ts +3 -0
  21. package/lib/dts/src/observers/index.d.ts.map +1 -0
  22. package/lib/dts/src/observers/resizeObserver.d.ts +5 -0
  23. package/lib/dts/src/observers/resizeObserver.d.ts.map +1 -0
  24. package/lib/dts/src/primitives/_selectable/selectable.d.ts +1 -2
  25. package/lib/dts/src/primitives/_selectable/selectable.d.ts.map +1 -1
  26. package/lib/dts/src/primitives/avatar/avatar.d.ts.map +1 -1
  27. package/lib/dts/src/primitives/avatar/avatarCounter.d.ts.map +1 -1
  28. package/lib/dts/src/primitives/avatar/avatarStack.d.ts.map +1 -1
  29. package/lib/dts/src/primitives/avatar/styles.d.ts.map +1 -1
  30. package/lib/dts/src/primitives/badge/badge.d.ts.map +1 -1
  31. package/lib/dts/src/primitives/box/box.d.ts.map +1 -1
  32. package/lib/dts/src/primitives/button/button.d.ts.map +1 -1
  33. package/lib/dts/src/primitives/card/card.d.ts.map +1 -1
  34. package/lib/dts/src/primitives/code/code.d.ts.map +1 -1
  35. package/lib/dts/src/primitives/container/container.d.ts.map +1 -1
  36. package/lib/dts/src/primitives/container/styles.d.ts.map +1 -1
  37. package/lib/dts/src/primitives/container/types.d.ts +1 -1
  38. package/lib/dts/src/primitives/container/types.d.ts.map +1 -1
  39. package/lib/dts/src/primitives/flex/flex.d.ts.map +1 -1
  40. package/lib/dts/src/primitives/grid/grid.d.ts.map +1 -1
  41. package/lib/dts/src/primitives/heading/heading.d.ts.map +1 -1
  42. package/lib/dts/src/primitives/inline/inline.d.ts.map +1 -1
  43. package/lib/dts/src/primitives/inline/styles.d.ts.map +1 -1
  44. package/lib/dts/src/primitives/inline/types.d.ts +1 -1
  45. package/lib/dts/src/primitives/inline/types.d.ts.map +1 -1
  46. package/lib/dts/src/primitives/kbd/kbd.d.ts.map +1 -1
  47. package/lib/dts/src/primitives/label/label.d.ts.map +1 -1
  48. package/lib/dts/src/primitives/popover/popover.d.ts.map +1 -1
  49. package/lib/dts/src/primitives/select/styles.d.ts +5 -1
  50. package/lib/dts/src/primitives/select/styles.d.ts.map +1 -1
  51. package/lib/dts/src/primitives/stack/stack.d.ts.map +1 -1
  52. package/lib/dts/src/primitives/stack/styles.d.ts +1 -1
  53. package/lib/dts/src/primitives/stack/styles.d.ts.map +1 -1
  54. package/lib/dts/src/primitives/text/text.d.ts.map +1 -1
  55. package/lib/dts/src/primitives/textArea/textArea.d.ts.map +1 -1
  56. package/lib/dts/src/primitives/textInput/textInput.d.ts.map +1 -1
  57. package/lib/dts/src/primitives/tooltip/tooltip.d.ts.map +1 -1
  58. package/lib/dts/src/primitives/types.d.ts +1 -1
  59. package/lib/dts/src/primitives/types.d.ts.map +1 -1
  60. package/lib/dts/src/styles/border/types.d.ts +5 -5
  61. package/lib/dts/src/styles/border/types.d.ts.map +1 -1
  62. package/lib/dts/src/styles/box/types.d.ts +4 -4
  63. package/lib/dts/src/styles/box/types.d.ts.map +1 -1
  64. package/lib/dts/src/styles/flex/flexItemStyle.d.ts.map +1 -1
  65. package/lib/dts/src/styles/flex/types.d.ts +6 -6
  66. package/lib/dts/src/styles/flex/types.d.ts.map +1 -1
  67. package/lib/dts/src/styles/font/responsiveFont.d.ts.map +1 -1
  68. package/lib/dts/src/styles/font/types.d.ts +3 -3
  69. package/lib/dts/src/styles/font/types.d.ts.map +1 -1
  70. package/lib/dts/src/styles/grid/types.d.ts +14 -14
  71. package/lib/dts/src/styles/grid/types.d.ts.map +1 -1
  72. package/lib/dts/src/styles/helpers.d.ts +4 -4
  73. package/lib/dts/src/styles/helpers.d.ts.map +1 -1
  74. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts +12 -12
  75. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts.map +1 -1
  76. package/lib/dts/src/styles/input/textInputStyle.d.ts +7 -2
  77. package/lib/dts/src/styles/input/textInputStyle.d.ts.map +1 -1
  78. package/lib/dts/src/styles/margin/types.d.ts +7 -7
  79. package/lib/dts/src/styles/margin/types.d.ts.map +1 -1
  80. package/lib/dts/src/styles/padding/types.d.ts +7 -7
  81. package/lib/dts/src/styles/padding/types.d.ts.map +1 -1
  82. package/lib/dts/src/styles/radius/types.d.ts +1 -1
  83. package/lib/dts/src/styles/radius/types.d.ts.map +1 -1
  84. package/lib/dts/src/styles/shadow/shadowStyle.d.ts.map +1 -1
  85. package/lib/dts/src/styles/shadow/types.d.ts +1 -1
  86. package/lib/dts/src/styles/shadow/types.d.ts.map +1 -1
  87. package/lib/dts/src/theme/studioTheme/color.d.ts.map +1 -1
  88. package/lib/dts/src/utils/elementQuery/elementQuery.d.ts.map +1 -1
  89. package/lib/dts/src/utils/index.d.ts +0 -1
  90. package/lib/dts/src/utils/index.d.ts.map +1 -1
  91. package/lib/dts/src/utils/virtualList/virtualList.d.ts.map +1 -1
  92. package/lib/sanity-ui.js +734 -573
  93. package/lib/sanity-ui.js.map +1 -1
  94. package/lib/sanity-ui.modern.js +763 -592
  95. package/lib/sanity-ui.modern.js.map +1 -1
  96. package/lib/sanity-ui.module.js +728 -569
  97. package/lib/sanity-ui.module.js.map +1 -1
  98. package/package.json +11 -11
  99. package/src/__workshop__/color/overview.tsx +9 -11
  100. package/src/components/autocomplete/__workshop__/async.tsx +14 -12
  101. package/src/components/autocomplete/__workshop__/constrainedHeight.tsx +36 -0
  102. package/src/components/autocomplete/autocomplete.tsx +2 -2
  103. package/src/components/breadcrumbs/breadcrumbs.tsx +3 -2
  104. package/src/components/dialog/dialog.tsx +17 -9
  105. package/src/components/dialog/styles.ts +4 -4
  106. package/src/components/hotkeys/hotkeys.tsx +3 -1
  107. package/src/components/menu/__workshop__/constrainedInBoundary.tsx +11 -14
  108. package/src/components/menu/__workshop__/groups.tsx +1 -1
  109. package/src/components/menu/menuGroup.tsx +3 -2
  110. package/src/components/menu/menuItem.tsx +3 -3
  111. package/src/components/skeleton/skeleton.tsx +10 -1
  112. package/src/components/skeleton/textSkeleton.tsx +7 -7
  113. package/src/hooks/index.ts +2 -1
  114. package/src/hooks/useArrayProp.ts +23 -0
  115. package/src/hooks/useElementRect/useElementRect.ts +4 -16
  116. package/src/hooks/useElementSize.ts +18 -0
  117. package/src/index.ts +1 -0
  118. package/src/observers/elementSizeObserver.ts +116 -0
  119. package/src/observers/index.ts +2 -0
  120. package/src/{utils → observers}/resizeObserver.ts +1 -3
  121. package/src/primitives/_selectable/selectable.tsx +5 -4
  122. package/src/primitives/avatar/avatar.tsx +7 -5
  123. package/src/primitives/avatar/avatarCounter.tsx +12 -11
  124. package/src/primitives/avatar/avatarStack.tsx +15 -10
  125. package/src/primitives/avatar/styles.ts +2 -2
  126. package/src/primitives/badge/badge.tsx +3 -2
  127. package/src/primitives/box/box.tsx +26 -25
  128. package/src/primitives/button/button.tsx +22 -10
  129. package/src/primitives/card/card.tsx +8 -7
  130. package/src/primitives/checkbox/__workshop__/example.tsx +4 -2
  131. package/src/primitives/checkbox/__workshop__/props.tsx +4 -2
  132. package/src/primitives/checkbox/__workshop__/readOnly.tsx +4 -2
  133. package/src/primitives/code/__workshop__/props.tsx +1 -1
  134. package/src/primitives/code/code.tsx +2 -1
  135. package/src/primitives/container/container.tsx +10 -1
  136. package/src/primitives/container/styles.ts +2 -2
  137. package/src/primitives/container/types.ts +1 -1
  138. package/src/primitives/flex/flex.tsx +6 -5
  139. package/src/primitives/grid/__workshop__/responsive.tsx +13 -12
  140. package/src/primitives/grid/grid.tsx +9 -8
  141. package/src/primitives/heading/__workshop__/opticalAlignment.tsx +19 -7
  142. package/src/primitives/heading/heading.tsx +3 -2
  143. package/src/primitives/inline/inline.tsx +12 -6
  144. package/src/primitives/inline/styles.ts +2 -2
  145. package/src/primitives/inline/types.ts +1 -1
  146. package/src/primitives/kbd/kbd.tsx +2 -1
  147. package/src/primitives/label/label.tsx +4 -3
  148. package/src/primitives/popover/__workshop__/{margins.tsx → MarginsStory.tsx} +1 -1
  149. package/src/primitives/popover/__workshop__/{matchReferenceWidth.tsx → MatchReferenceWidthStory.tsx} +0 -0
  150. package/src/primitives/popover/__workshop__/{plain.tsx → PlainStory.tsx} +12 -14
  151. package/src/primitives/popover/__workshop__/{recursive.tsx → RecursiveStory.tsx} +4 -1
  152. package/src/primitives/popover/__workshop__/RightAlignedStory.tsx +60 -0
  153. package/src/primitives/popover/__workshop__/TestStory.tsx +79 -0
  154. package/src/primitives/popover/__workshop__/index.ts +10 -5
  155. package/src/primitives/popover/popover.tsx +29 -10
  156. package/src/primitives/select/select.tsx +9 -9
  157. package/src/primitives/select/styles.ts +10 -4
  158. package/src/primitives/stack/stack.tsx +2 -1
  159. package/src/primitives/stack/styles.ts +3 -3
  160. package/src/primitives/text/__workshop__/opticalAlignment.tsx +15 -5
  161. package/src/primitives/text/text.tsx +3 -2
  162. package/src/primitives/textArea/__workshop__/plain.tsx +23 -18
  163. package/src/primitives/textArea/textArea.tsx +21 -5
  164. package/src/primitives/textInput/__workshop__/clearButton.tsx +14 -8
  165. package/src/primitives/textInput/__workshop__/index.ts +2 -2
  166. package/src/primitives/textInput/__workshop__/plain.tsx +39 -32
  167. package/src/primitives/textInput/__workshop__/tones.tsx +234 -95
  168. package/src/primitives/textInput/__workshop__/typed.tsx +8 -2
  169. package/src/primitives/textInput/textInput.tsx +47 -12
  170. package/src/primitives/tooltip/__workshop__/props.tsx +7 -2
  171. package/src/primitives/tooltip/tooltip.tsx +19 -9
  172. package/src/primitives/types.ts +1 -1
  173. package/src/styles/border/borderStyle.ts +6 -6
  174. package/src/styles/border/types.ts +5 -5
  175. package/src/styles/box/boxStyle.ts +5 -5
  176. package/src/styles/box/types.ts +4 -4
  177. package/src/styles/flex/flexItemStyle.ts +5 -4
  178. package/src/styles/flex/flexStyle.ts +6 -6
  179. package/src/styles/flex/types.ts +6 -6
  180. package/src/styles/font/responsiveFont.ts +2 -4
  181. package/src/styles/font/textAlignStyle.ts +2 -2
  182. package/src/styles/font/types.ts +4 -3
  183. package/src/styles/grid/gridItemStyle.ts +7 -7
  184. package/src/styles/grid/gridStyle.ts +9 -9
  185. package/src/styles/grid/types.ts +14 -14
  186. package/src/styles/helpers.ts +9 -9
  187. package/src/styles/input/responsiveInputPaddingStyle.ts +24 -27
  188. package/src/styles/input/textInputStyle.ts +92 -80
  189. package/src/styles/margin/marginStyle.ts +8 -8
  190. package/src/styles/margin/marginsStyle.test.ts +1 -1
  191. package/src/styles/margin/types.ts +7 -7
  192. package/src/styles/padding/paddingStyle.test.ts +1 -1
  193. package/src/styles/padding/paddingStyle.ts +8 -8
  194. package/src/styles/padding/types.ts +7 -7
  195. package/src/styles/radius/radiusStyle.ts +2 -2
  196. package/src/styles/radius/types.ts +1 -1
  197. package/src/styles/shadow/shadowStyle.ts +2 -5
  198. package/src/styles/shadow/types.ts +1 -1
  199. package/src/theme/studioTheme/color.ts +15 -14
  200. package/src/theme/studioTheme/fonts.ts +4 -4
  201. package/src/utils/elementQuery/elementQuery.tsx +5 -18
  202. package/src/utils/index.ts +0 -1
  203. package/src/utils/layer/layerProvider.tsx +2 -2
  204. package/src/utils/virtualList/virtualList.tsx +3 -1
  205. package/lib/dts/src/hooks/useResponsiveProp.d.ts +0 -6
  206. package/lib/dts/src/hooks/useResponsiveProp.d.ts.map +0 -1
  207. package/lib/dts/src/utils/resizeObserver.d.ts +0 -6
  208. package/lib/dts/src/utils/resizeObserver.d.ts.map +0 -1
  209. package/src/hooks/useResponsiveProp.ts +0 -10
  210. package/src/primitives/popover/__workshop__/rightAligned.tsx +0 -57
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');
@@ -119,6 +119,215 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
119
119
  var EMPTY_ARRAY = [];
120
120
  var EMPTY_RECORD = {};
121
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
+ }
330
+
122
331
  function _getElements(element, elementsArg) {
123
332
  var ret = [element];
124
333
 
@@ -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
  /**
@@ -1691,18 +1984,20 @@ var color = createColorTheme({
1691
1984
  name = _ref.name;
1692
1985
 
1693
1986
  if (name === 'default') {
1694
- var _skeletonFrom = dark ? color$1.hues.gray[900].hex : color$1.hues.gray[100].hex;
1987
+ var _tints = color$1.hues.gray;
1988
+
1989
+ var _skeletonFrom = dark ? _tints[900].hex : _tints[100].hex;
1695
1990
 
1696
1991
  return {
1697
1992
  fg: dark ? color$1.white.hex : color$1.black.hex,
1698
1993
  bg: dark ? color$1.black.hex : color$1.white.hex,
1699
- border: color$1.hues.gray[dark ? 800 : 200].hex,
1994
+ border: _tints[dark ? 800 : 200].hex,
1700
1995
  focusRing: color$1.hues.blue[dark ? 500 : 500].hex,
1701
1996
  shadow: {
1702
- outline: rgba(color$1.hues.gray[500].hex, 0.4),
1703
- umbra: rgba(dark ? color$1.black.hex : color$1.hues.gray[500].hex, 0.2),
1704
- penumbra: rgba(dark ? color$1.black.hex : color$1.hues.gray[500].hex, 0.14),
1705
- ambient: rgba(dark ? color$1.black.hex : color$1.hues.gray[500].hex, 0.12)
1997
+ outline: rgba(_tints[500].hex, 0.4),
1998
+ umbra: dark ? rgba(_tints[950].hex, 0.4) : rgba(_tints[500].hex, 0.2),
1999
+ penumbra: dark ? rgba(_tints[950].hex, 0.28) : rgba(_tints[500].hex, 0.14),
2000
+ ambient: dark ? rgba(_tints[950].hex, 0.24) : rgba(_tints[500].hex, 0.12)
1706
2001
  },
1707
2002
  skeleton: {
1708
2003
  from: _skeletonFrom,
@@ -1712,18 +2007,18 @@ var color = createColorTheme({
1712
2007
  }
1713
2008
 
1714
2009
  if (name === 'transparent') {
1715
- var _tints = tones["default"];
1716
- var _skeletonFrom2 = _tints[dark ? 800 : 200].hex;
2010
+ var _tints2 = tones["default"];
2011
+ var _skeletonFrom2 = _tints2[dark ? 800 : 200].hex;
1717
2012
  return {
1718
- fg: _tints[dark ? 100 : 900].hex,
1719
- bg: _tints[dark ? 950 : 50].hex,
1720
- border: _tints[dark ? 800 : 300].hex,
2013
+ fg: _tints2[dark ? 100 : 900].hex,
2014
+ bg: _tints2[dark ? 950 : 50].hex,
2015
+ border: _tints2[dark ? 800 : 300].hex,
1721
2016
  focusRing: color$1.hues.blue[500].hex,
1722
2017
  shadow: {
1723
- outline: rgba(_tints[500].hex, dark ? 0.2 : 0.4),
1724
- umbra: rgba(dark ? color$1.black.hex : _tints[500].hex, 0.2),
1725
- penumbra: rgba(dark ? color$1.black.hex : _tints[500].hex, 0.14),
1726
- ambient: rgba(dark ? color$1.black.hex : _tints[500].hex, 0.12)
2018
+ outline: rgba(_tints2[500].hex, 0.4),
2019
+ umbra: dark ? rgba(_tints2[900].hex, 0.4) : rgba(_tints2[500].hex, 0.2),
2020
+ penumbra: dark ? rgba(_tints2[900].hex, 0.28) : rgba(_tints2[500].hex, 0.14),
2021
+ ambient: dark ? rgba(_tints2[900].hex, 0.24) : rgba(_tints2[500].hex, 0.12)
1727
2022
  },
1728
2023
  skeleton: {
1729
2024
  from: _skeletonFrom2,
@@ -1740,10 +2035,10 @@ var color = createColorTheme({
1740
2035
  border: tints[dark ? 800 : 200].hex,
1741
2036
  focusRing: tints[500].hex,
1742
2037
  shadow: {
1743
- outline: rgba(tints[500].hex, dark ? 0.2 : 0.4),
1744
- umbra: rgba(dark ? color$1.black.hex : tints[500].hex, 0.2),
1745
- penumbra: rgba(dark ? color$1.black.hex : tints[500].hex, 0.14),
1746
- ambient: rgba(dark ? color$1.black.hex : tints[500].hex, 0.12)
2038
+ outline: rgba(tints[500].hex, 0.4),
2039
+ umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),
2040
+ penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),
2041
+ ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12)
1747
2042
  },
1748
2043
  skeleton: {
1749
2044
  from: skeletonFrom,
@@ -2409,15 +2704,15 @@ var fonts = {
2409
2704
  lineHeight: 33,
2410
2705
  letterSpacing: 0
2411
2706
  }, {
2412
- ascenderHeight: 9,
2413
- descenderHeight: 7,
2707
+ ascenderHeight: 8,
2708
+ descenderHeight: 8,
2414
2709
  fontSize: 33,
2415
2710
  iconSize: 49,
2416
2711
  lineHeight: 39,
2417
2712
  letterSpacing: 0
2418
2713
  }, {
2419
- ascenderHeight: 10,
2420
- descenderHeight: 8,
2714
+ ascenderHeight: 9,
2715
+ descenderHeight: 9,
2421
2716
  fontSize: 38,
2422
2717
  iconSize: 53,
2423
2718
  lineHeight: 45,
@@ -2805,329 +3100,126 @@ function _createMediaManager(media) {
2805
3100
  }
2806
3101
  });
2807
3102
  };
2808
-
2809
- for (var _iterator2 = _createForOfIteratorHelperLoose(sizes), _step2; !(_step2 = _iterator2()).done;) {
2810
- _loop();
2811
- }
2812
-
2813
- return function () {
2814
- for (var _iterator3 = _createForOfIteratorHelperLoose(disposeFns), _step3; !(_step3 = _iterator3()).done;) {
2815
- var disposeFn = _step3.value;
2816
- disposeFn();
2817
- }
2818
- };
2819
- };
2820
-
2821
- return {
2822
- getCurrentIndex: getCurrentIndex,
2823
- subscribe: subscribe
2824
- };
2825
- }
2826
- /**
2827
- * @internal
2828
- */
2829
-
2830
-
2831
- function _getMediaManager(media) {
2832
- var manager = MEDIA_MANAGER_CACHE.get(media);
2833
-
2834
- if (!manager) {
2835
- manager = _createMediaManager(media);
2836
- MEDIA_MANAGER_CACHE.set(media, manager);
2837
- }
2838
-
2839
- return manager;
2840
- }
2841
-
2842
- /**
2843
- * This API might change. DO NOT USE IN PRODUCTION.
2844
- * @beta
2845
- */
2846
-
2847
- function useMediaIndex() {
2848
- var theme = useTheme();
2849
- var media = theme.sanity.media;
2850
- var manager = React.useMemo(function () {
2851
- return _getMediaManager(media);
2852
- }, [media]);
2853
-
2854
- var _useState = React.useState(manager.getCurrentIndex),
2855
- index = _useState[0],
2856
- setIndex = _useState[1];
2857
-
2858
- React.useEffect(function () {
2859
- return manager.subscribe(setIndex);
2860
- }, [manager]);
2861
- return index;
2862
- }
2863
-
2864
- /**
2865
- * @public
2866
- */
2867
-
2868
- function usePrefersDark() {
2869
- var mq = React.useMemo(function () {
2870
- if (typeof window === 'undefined') return undefined;
2871
- return window.matchMedia('(prefers-color-scheme: dark)');
2872
- }, []);
2873
-
2874
- var _useState = React.useState((mq == null ? void 0 : mq.matches) || false),
2875
- dark = _useState[0],
2876
- setDark = _useState[1];
2877
-
2878
- React.useEffect(function () {
2879
- if (!mq) return undefined;
2880
- setDark(mq.matches);
2881
-
2882
- var handleChange = function handleChange() {
2883
- return setDark(mq.matches);
2884
- };
2885
-
2886
- mq.addEventListener('change', handleChange);
2887
- return function () {
2888
- return mq.removeEventListener('change', handleChange);
2889
- };
2890
- }, [mq]);
2891
- return dark;
2892
- }
2893
-
2894
- /**
2895
- * @beta
2896
- */
2897
-
2898
- var useIsomorphicEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
2899
-
2900
- /**
2901
- * @beta
2902
- */
2903
-
2904
- function useForwardedRef(ref) {
2905
- var innerRef = React.useRef(null);
2906
- useIsomorphicEffect(function () {
2907
- if (!ref) return;
2908
-
2909
- if (typeof ref === 'function') {
2910
- ref(innerRef.current);
2911
- } else {
2912
- ref.current = innerRef.current;
2913
- }
2914
- });
2915
- return innerRef;
2916
- }
2917
-
2918
- /**
2919
- * @beta
2920
- */
2921
-
2922
- function useCustomValidity(ref, customValidity) {
2923
- React.useEffect(function () {
2924
- if (ref.current) {
2925
- ref.current.setCustomValidity(customValidity || '');
2926
- }
2927
- }, [customValidity, ref]);
2928
- }
2929
-
2930
- /**
2931
- * @internal
2932
- */
2933
-
2934
- function fillCSSObject(propKeys, value) {
2935
- return propKeys.reduce(function (obj, propKey) {
2936
- obj[propKey] = value;
2937
- return obj;
2938
- }, {});
2939
- }
2940
- /**
2941
- * @public
2942
- */
2943
-
2944
- function rem(pixelValue) {
2945
- if (pixelValue === 0) return 0;
2946
- return pixelValue / 16 + "rem";
2947
- }
2948
- /**
2949
- * @internal
2950
- */
2951
-
2952
- function responsive(media, values, callback) {
2953
- var statements = values.map(callback);
2954
- return statements.map(function (statement, mediaIndex) {
2955
- var _ref;
2956
-
2957
- if (mediaIndex === 0) return statement;
2958
- return _ref = {}, _ref["@media screen and (min-width: " + media[mediaIndex - 1] + "px)"] = statement, _ref;
2959
- });
2960
- }
2961
- /**
2962
- * @internal
2963
- */
2964
-
2965
- function getResponsiveProp(val, defaultVal) {
2966
- if (val === undefined) return defaultVal || EMPTY_ARRAY;
2967
- return Array.isArray(val) ? val : [val];
2968
- }
2969
- /**
2970
- * @internal
2971
- */
2972
-
2973
- function getResponsiveSpace(theme, props, spaceIndexes) {
2974
- if (spaceIndexes === void 0) {
2975
- spaceIndexes = EMPTY_ARRAY;
2976
- }
2977
-
2978
- if (!Array.isArray(spaceIndexes)) {
2979
- throw new Error('the property must be array of numbers');
2980
- }
2981
-
2982
- if (spaceIndexes.length === 0) {
2983
- return null;
2984
- }
2985
-
2986
- return responsive(theme.sanity.media, spaceIndexes, function (spaceIndex) {
2987
- return fillCSSObject(props, rem(theme.sanity.space[spaceIndex]));
2988
- });
2989
- }
2990
-
2991
- /**
2992
- * A utility function getting responsive font styles.
2993
- * @internal
2994
- */
2995
-
2996
- function responsiveFont(fontKey, props) {
2997
- var $size = props.$size,
2998
- $weight = props.$weight,
2999
- theme = props.theme;
3000
- var _theme$sanity = theme.sanity,
3001
- fonts = _theme$sanity.fonts,
3002
- media = _theme$sanity.media;
3003
- var _fonts$fontKey = fonts[fontKey],
3004
- family = _fonts$fontKey.family,
3005
- sizes = _fonts$fontKey.sizes,
3006
- weights = _fonts$fontKey.weights;
3007
- var fontWeight = $weight && weights[$weight] || weights.regular; // @todo: make this configurable
3008
-
3009
- var defaultSize = sizes[2];
3010
- var base = {
3011
- position: 'relative',
3012
- fontFamily: family,
3013
- fontWeight: fontWeight,
3014
- padding: '1px 0',
3015
- margin: 0,
3016
- '&:before': {
3017
- content: '""',
3018
- display: 'block',
3019
- height: 0
3020
- },
3021
- '&:after': {
3022
- content: '""',
3023
- display: 'block',
3024
- height: 0
3025
- },
3026
- '& > code, & > span': {
3027
- display: 'block'
3028
- },
3029
- '&:not([hidden])': {
3030
- display: 'block'
3103
+
3104
+ for (var _iterator2 = _createForOfIteratorHelperLoose(sizes), _step2; !(_step2 = _iterator2()).done;) {
3105
+ _loop();
3031
3106
  }
3107
+
3108
+ return function () {
3109
+ for (var _iterator3 = _createForOfIteratorHelperLoose(disposeFns), _step3; !(_step3 = _iterator3()).done;) {
3110
+ var disposeFn = _step3.value;
3111
+ disposeFn();
3112
+ }
3113
+ };
3032
3114
  };
3033
- var resp = responsive(media, getResponsiveProp($size), function (sizeIndex) {
3034
- return fontSize(sizes[sizeIndex] || defaultSize);
3035
- });
3036
- return [base].concat(resp);
3037
- }
3038
- function fontSize(size) {
3039
- var ascenderHeight = size.ascenderHeight,
3040
- descenderHeight = size.descenderHeight,
3041
- fontSize = size.fontSize,
3042
- iconSize = size.iconSize,
3043
- letterSpacing = size.letterSpacing,
3044
- lineHeight = size.lineHeight;
3045
- var negHeight = ascenderHeight + descenderHeight;
3046
- var capHeight = lineHeight - negHeight;
3047
- var iconOffset = (capHeight - iconSize) / 2;
3048
- var customIconSize = Math.floor(fontSize * 1.125 / 2) * 2 + 1;
3049
- var customIconOffset = (capHeight - customIconSize) / 2;
3115
+
3050
3116
  return {
3051
- fontSize: rem(fontSize),
3052
- lineHeight: "calc(" + lineHeight + " / " + fontSize + ")",
3053
- letterSpacing: rem(letterSpacing),
3054
- transform: "translateY(" + rem(descenderHeight) + ")",
3055
- '&:before': {
3056
- marginTop: "calc(" + rem(0 - negHeight) + " - 1px)"
3057
- },
3058
- '&:after': {
3059
- marginBottom: '-1px'
3060
- },
3061
- '& svg:not([data-sanity-icon])': {
3062
- fontSize: "calc(" + customIconSize + " / 16 * 1rem)",
3063
- margin: rem(customIconOffset)
3064
- },
3065
- '& [data-sanity-icon]': {
3066
- fontSize: "calc(" + iconSize + " / 16 * 1rem)",
3067
- margin: rem(iconOffset)
3068
- }
3117
+ getCurrentIndex: getCurrentIndex,
3118
+ subscribe: subscribe
3069
3119
  };
3070
3120
  }
3071
-
3072
3121
  /**
3073
- * Get responsive CSS for the `code` font style.
3074
3122
  * @internal
3075
3123
  */
3076
3124
 
3077
- function responsiveCodeFontStyle(props) {
3078
- return responsiveFont('code', props);
3125
+
3126
+ function _getMediaManager(media) {
3127
+ var manager = MEDIA_MANAGER_CACHE.get(media);
3128
+
3129
+ if (!manager) {
3130
+ manager = _createMediaManager(media);
3131
+ MEDIA_MANAGER_CACHE.set(media, manager);
3132
+ }
3133
+
3134
+ return manager;
3079
3135
  }
3080
3136
 
3081
3137
  /**
3082
- * Get responsive CSS for the `heading` font style.
3083
- * @internal
3138
+ * This API might change. DO NOT USE IN PRODUCTION.
3139
+ * @beta
3084
3140
  */
3085
3141
 
3086
- function responsiveHeadingFont(props) {
3087
- return responsiveFont('heading', props);
3142
+ function useMediaIndex() {
3143
+ var theme = useTheme();
3144
+ var media = theme.sanity.media;
3145
+ var manager = React.useMemo(function () {
3146
+ return _getMediaManager(media);
3147
+ }, [media]);
3148
+
3149
+ var _useState = React.useState(manager.getCurrentIndex),
3150
+ index = _useState[0],
3151
+ setIndex = _useState[1];
3152
+
3153
+ React.useEffect(function () {
3154
+ return manager.subscribe(setIndex);
3155
+ }, [manager]);
3156
+ return index;
3088
3157
  }
3089
3158
 
3090
3159
  /**
3091
- * Get responsive CSS for the `label` font style.
3092
- * @internal
3160
+ * @public
3093
3161
  */
3094
3162
 
3095
- function responsiveLabelFont(props) {
3096
- return responsiveFont('label', props);
3163
+ function usePrefersDark() {
3164
+ var mq = React.useMemo(function () {
3165
+ if (typeof window === 'undefined') return undefined;
3166
+ return window.matchMedia('(prefers-color-scheme: dark)');
3167
+ }, []);
3168
+
3169
+ var _useState = React.useState((mq == null ? void 0 : mq.matches) || false),
3170
+ dark = _useState[0],
3171
+ setDark = _useState[1];
3172
+
3173
+ React.useEffect(function () {
3174
+ if (!mq) return undefined;
3175
+ setDark(mq.matches);
3176
+
3177
+ var handleChange = function handleChange() {
3178
+ return setDark(mq.matches);
3179
+ };
3180
+
3181
+ mq.addEventListener('change', handleChange);
3182
+ return function () {
3183
+ return mq.removeEventListener('change', handleChange);
3184
+ };
3185
+ }, [mq]);
3186
+ return dark;
3097
3187
  }
3098
3188
 
3099
3189
  /**
3100
- * Get responsive text align styles.
3101
- * @internal
3190
+ * @beta
3102
3191
  */
3103
3192
 
3104
- function responsiveTextAlignStyle(props) {
3105
- var theme = props.theme;
3106
- return responsive(theme.sanity.media, getResponsiveProp(props.$align), function (textAlign) {
3107
- return {
3108
- textAlign: textAlign
3109
- };
3110
- });
3111
- }
3193
+ var useIsomorphicEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
3112
3194
 
3113
3195
  /**
3114
- * Get responsive CSS for the `text` font style.
3115
- * @internal
3196
+ * @beta
3116
3197
  */
3117
3198
 
3118
- function responsiveTextFont(props) {
3119
- return responsiveFont('text', props);
3199
+ function useForwardedRef(ref) {
3200
+ var innerRef = React.useRef(null);
3201
+ useIsomorphicEffect(function () {
3202
+ if (!ref) return;
3203
+
3204
+ if (typeof ref === 'function') {
3205
+ ref(innerRef.current);
3206
+ } else {
3207
+ ref.current = innerRef.current;
3208
+ }
3209
+ });
3210
+ return innerRef;
3120
3211
  }
3121
3212
 
3122
3213
  /**
3123
- * This API might change. DO NOT USE IN PRODUCTION.
3124
3214
  * @beta
3125
3215
  */
3126
3216
 
3127
- function useResponsiveProp(val, defaultVal) {
3128
- return React.useMemo(function () {
3129
- return getResponsiveProp(val, defaultVal);
3130
- }, [defaultVal, val]);
3217
+ function useCustomValidity(ref, customValidity) {
3218
+ React.useEffect(function () {
3219
+ if (ref.current) {
3220
+ ref.current.setCustomValidity(customValidity || '');
3221
+ }
3222
+ }, [customValidity, ref]);
3131
3223
  }
3132
3224
 
3133
3225
  var BORDER_VALUE = '1px solid var(--card-border-color)';
@@ -3138,7 +3230,7 @@ function responsiveBorderStyle() {
3138
3230
  function border(props) {
3139
3231
  var theme = props.theme;
3140
3232
  var media = theme.sanity.media;
3141
- return responsive(media, getResponsiveProp(props.$border), function (value) {
3233
+ return _responsive(media, props.$border, function (value) {
3142
3234
  return value ? {
3143
3235
  '&&': {
3144
3236
  border: BORDER_VALUE
@@ -3154,7 +3246,7 @@ function border(props) {
3154
3246
  function borderTop(props) {
3155
3247
  var theme = props.theme;
3156
3248
  var media = theme.sanity.media;
3157
- return responsive(media, getResponsiveProp(props.$borderTop), function (value) {
3249
+ return _responsive(media, props.$borderTop, function (value) {
3158
3250
  return value ? {
3159
3251
  '&&': {
3160
3252
  borderTop: BORDER_VALUE
@@ -3170,7 +3262,7 @@ function borderTop(props) {
3170
3262
  function borderRight(props) {
3171
3263
  var theme = props.theme;
3172
3264
  var media = theme.sanity.media;
3173
- return responsive(media, getResponsiveProp(props.$borderRight), function (value) {
3265
+ return _responsive(media, props.$borderRight, function (value) {
3174
3266
  return value ? {
3175
3267
  '&&': {
3176
3268
  borderRight: BORDER_VALUE
@@ -3186,7 +3278,7 @@ function borderRight(props) {
3186
3278
  function borderBottom(props) {
3187
3279
  var theme = props.theme;
3188
3280
  var media = theme.sanity.media;
3189
- return responsive(media, getResponsiveProp(props.$borderBottom), function (value) {
3281
+ return _responsive(media, props.$borderBottom, function (value) {
3190
3282
  return value ? {
3191
3283
  '&&': {
3192
3284
  borderBottom: BORDER_VALUE
@@ -3202,7 +3294,7 @@ function borderBottom(props) {
3202
3294
  function borderLeft(props) {
3203
3295
  var theme = props.theme;
3204
3296
  var media = theme.sanity.media;
3205
- return responsive(media, getResponsiveProp(props.$borderLeft), function (value) {
3297
+ return _responsive(media, props.$borderLeft, function (value) {
3206
3298
  return value ? {
3207
3299
  '&&': {
3208
3300
  borderLeft: BORDER_VALUE
@@ -3238,7 +3330,7 @@ function responsiveBoxStyle() {
3238
3330
  function responsiveBoxDisplayStyle(props) {
3239
3331
  var theme = props.theme;
3240
3332
  var media = theme.sanity.media;
3241
- return responsive(media, getResponsiveProp(props.$display), function (display) {
3333
+ return _responsive(media, props.$display, function (display) {
3242
3334
  return {
3243
3335
  '&:not([hidden])': {
3244
3336
  display: display
@@ -3250,7 +3342,7 @@ function responsiveBoxDisplayStyle(props) {
3250
3342
  function responsiveBoxSizingStyle(props) {
3251
3343
  var theme = props.theme;
3252
3344
  var media = theme.sanity.media;
3253
- return responsive(media, getResponsiveProp(props.$sizing), function (sizing) {
3345
+ return _responsive(media, props.$sizing, function (sizing) {
3254
3346
  return {
3255
3347
  boxSizing: BOX_SIZING[sizing]
3256
3348
  };
@@ -3260,7 +3352,7 @@ function responsiveBoxSizingStyle(props) {
3260
3352
  function responsiveBoxHeightStyle(props) {
3261
3353
  var theme = props.theme;
3262
3354
  var media = theme.sanity.media;
3263
- return responsive(media, getResponsiveProp(props.$height), function (height) {
3355
+ return _responsive(media, props.$height, function (height) {
3264
3356
  return {
3265
3357
  height: BOX_HEIGHT[height]
3266
3358
  };
@@ -3270,7 +3362,7 @@ function responsiveBoxHeightStyle(props) {
3270
3362
  function responsiveBoxOverflowStyle(props) {
3271
3363
  var theme = props.theme;
3272
3364
  var media = theme.sanity.media;
3273
- return responsive(media, getResponsiveProp(props.$overflow), function (overflow) {
3365
+ return _responsive(media, props.$overflow, function (overflow) {
3274
3366
  return {
3275
3367
  overflow: overflow
3276
3368
  };
@@ -3288,7 +3380,7 @@ function responsiveFlexStyle() {
3288
3380
  function responsiveFlexAlignStyle(props) {
3289
3381
  var theme = props.theme;
3290
3382
  var media = theme.sanity.media;
3291
- return responsive(media, getResponsiveProp(props.$align), function (align) {
3383
+ return _responsive(media, props.$align, function (align) {
3292
3384
  return {
3293
3385
  alignItems: align
3294
3386
  };
@@ -3300,7 +3392,7 @@ function responsiveFlexGapStyle(props) {
3300
3392
  var _theme$sanity = theme.sanity,
3301
3393
  media = _theme$sanity.media,
3302
3394
  space = _theme$sanity.space;
3303
- return responsive(media, getResponsiveProp(props.$gap), function (gap) {
3395
+ return _responsive(media, props.$gap, function (gap) {
3304
3396
  return {
3305
3397
  gap: gap ? rem(space[gap]) : undefined
3306
3398
  };
@@ -3310,7 +3402,7 @@ function responsiveFlexGapStyle(props) {
3310
3402
  function responsiveFlexWrapStyle(props) {
3311
3403
  var theme = props.theme;
3312
3404
  var media = theme.sanity.media;
3313
- return responsive(media, getResponsiveProp(props.$wrap), function (wrap) {
3405
+ return _responsive(media, props.$wrap, function (wrap) {
3314
3406
  return {
3315
3407
  flexWrap: wrap
3316
3408
  };
@@ -3319,7 +3411,7 @@ function responsiveFlexWrapStyle(props) {
3319
3411
  function responsiveFlexJustifyStyle(props) {
3320
3412
  var theme = props.theme;
3321
3413
  var media = theme.sanity.media;
3322
- return responsive(media, getResponsiveProp(props.$justify), function (justify) {
3414
+ return _responsive(media, props.$justify, function (justify) {
3323
3415
  return {
3324
3416
  justifyContent: justify
3325
3417
  };
@@ -3328,7 +3420,7 @@ function responsiveFlexJustifyStyle(props) {
3328
3420
  function responsiveFlexDirectionStyle(props) {
3329
3421
  var theme = props.theme;
3330
3422
  var media = theme.sanity.media;
3331
- return responsive(media, getResponsiveProp(props.$direction), function (direction) {
3423
+ return _responsive(media, props.$direction, function (direction) {
3332
3424
  return {
3333
3425
  flexDirection: direction
3334
3426
  };
@@ -3345,7 +3437,8 @@ function flexItemStyle() {
3345
3437
  function responsiveFlexItemStyle(props) {
3346
3438
  var theme = props.theme;
3347
3439
  var media = theme.sanity.media;
3348
- return responsive(media, getResponsiveProp(props.$flex), function (flex) {
3440
+ if (!props.$flex) return EMPTY_ARRAY;
3441
+ return _responsive(media, props.$flex, function (flex) {
3349
3442
  return {
3350
3443
  flex: flex
3351
3444
  };
@@ -3392,7 +3485,7 @@ function responsiveGridStyle() {
3392
3485
  function responsiveGridAutoFlowStyle(props) {
3393
3486
  var theme = props.theme;
3394
3487
  var media = theme.sanity.media;
3395
- return responsive(media, getResponsiveProp(props.$autoFlow), function (autoFlow) {
3488
+ return _responsive(media, props.$autoFlow, function (autoFlow) {
3396
3489
  return {
3397
3490
  gridAutoFlow: autoFlow
3398
3491
  };
@@ -3402,7 +3495,7 @@ function responsiveGridAutoFlowStyle(props) {
3402
3495
  function responsiveGridAutoRowsStyle(props) {
3403
3496
  var theme = props.theme;
3404
3497
  var media = theme.sanity.media;
3405
- return responsive(media, getResponsiveProp(props.$autoRows), function (autoRows) {
3498
+ return _responsive(media, props.$autoRows, function (autoRows) {
3406
3499
  return {
3407
3500
  gridAutoRows: autoRows && GRID_AUTO_ROWS[autoRows]
3408
3501
  };
@@ -3412,7 +3505,7 @@ function responsiveGridAutoRowsStyle(props) {
3412
3505
  function responsiveGridAutoColsStyle(props) {
3413
3506
  var theme = props.theme;
3414
3507
  var media = theme.sanity.media;
3415
- return responsive(media, getResponsiveProp(props.$autoCols), function (autoCols) {
3508
+ return _responsive(media, props.$autoCols, function (autoCols) {
3416
3509
  return {
3417
3510
  gridAutoColumns: autoCols && GRID_AUTO_COLUMS[autoCols]
3418
3511
  };
@@ -3422,7 +3515,7 @@ function responsiveGridAutoColsStyle(props) {
3422
3515
  function responsiveGridColumnsStyle(props) {
3423
3516
  var theme = props.theme;
3424
3517
  var media = theme.sanity.media;
3425
- return responsive(media, getResponsiveProp(props.$columns), function (columns) {
3518
+ return _responsive(media, props.$columns, function (columns) {
3426
3519
  return {
3427
3520
  gridTemplateColumns: columns && "repeat(" + columns + ",minmax(0,1fr));"
3428
3521
  };
@@ -3432,7 +3525,7 @@ function responsiveGridColumnsStyle(props) {
3432
3525
  function responsiveGridRowsStyle(props) {
3433
3526
  var theme = props.theme;
3434
3527
  var media = theme.sanity.media;
3435
- return responsive(media, getResponsiveProp(props.$rows), function (rows) {
3528
+ return _responsive(media, props.$rows, function (rows) {
3436
3529
  return {
3437
3530
  gridTemplateRows: rows && "repeat(" + rows + ",minmax(0,1fr));"
3438
3531
  };
@@ -3444,7 +3537,7 @@ function responsiveGridGapStyle(props) {
3444
3537
  var _theme$sanity = theme.sanity,
3445
3538
  media = _theme$sanity.media,
3446
3539
  space = _theme$sanity.space;
3447
- return responsive(media, getResponsiveProp(props.$gap), function (gap) {
3540
+ return _responsive(media, props.$gap, function (gap) {
3448
3541
  return {
3449
3542
  gridGap: gap ? rem(space[gap]) : undefined
3450
3543
  };
@@ -3456,7 +3549,7 @@ function responsiveGridGapXStyle(props) {
3456
3549
  var _theme$sanity2 = theme.sanity,
3457
3550
  media = _theme$sanity2.media,
3458
3551
  space = _theme$sanity2.space;
3459
- return responsive(media, getResponsiveProp(props.$gapX), function (gapX) {
3552
+ return _responsive(media, props.$gapX, function (gapX) {
3460
3553
  return {
3461
3554
  columnGap: gapX ? rem(space[gapX]) : undefined
3462
3555
  };
@@ -3468,7 +3561,7 @@ function responsiveGridGapYStyle(props) {
3468
3561
  var _theme$sanity3 = theme.sanity,
3469
3562
  media = _theme$sanity3.media,
3470
3563
  space = _theme$sanity3.space;
3471
- return responsive(media, getResponsiveProp(props.$gapY), function (gapY) {
3564
+ return _responsive(media, props.$gapY, function (gapY) {
3472
3565
  return {
3473
3566
  rowGap: gapY ? rem(space[gapY]) : undefined
3474
3567
  };
@@ -3490,7 +3583,7 @@ var GRID_ITEM_COLUMN = {
3490
3583
  function responsiveGridItemRowStyle(props) {
3491
3584
  var theme = props.theme;
3492
3585
  var media = theme.sanity.media;
3493
- return responsive(media, getResponsiveProp(props.$row), function (row) {
3586
+ return _responsive(media, props.$row, function (row) {
3494
3587
  if (typeof row === 'number') {
3495
3588
  return {
3496
3589
  gridRow: "span " + row + " / span " + row
@@ -3506,7 +3599,7 @@ function responsiveGridItemRowStyle(props) {
3506
3599
  function responsiveGridItemRowStartStyle(props) {
3507
3600
  var theme = props.theme;
3508
3601
  var media = theme.sanity.media;
3509
- return responsive(media, getResponsiveProp(props.$rowStart), function (rowStart) {
3602
+ return _responsive(media, props.$rowStart, function (rowStart) {
3510
3603
  return {
3511
3604
  gridRowStart: rowStart
3512
3605
  };
@@ -3516,7 +3609,7 @@ function responsiveGridItemRowStartStyle(props) {
3516
3609
  function responsiveGridItemRowEndStyle(props) {
3517
3610
  var theme = props.theme;
3518
3611
  var media = theme.sanity.media;
3519
- return responsive(media, getResponsiveProp(props.$rowEnd), function (rowEnd) {
3612
+ return _responsive(media, props.$rowEnd, function (rowEnd) {
3520
3613
  return {
3521
3614
  gridRowEnd: rowEnd
3522
3615
  };
@@ -3526,7 +3619,7 @@ function responsiveGridItemRowEndStyle(props) {
3526
3619
  function responsiveGridItemColumnStyle(props) {
3527
3620
  var theme = props.theme;
3528
3621
  var media = theme.sanity.media;
3529
- return responsive(media, getResponsiveProp(props.$column), function (column) {
3622
+ return _responsive(media, props.$column, function (column) {
3530
3623
  if (typeof column === 'number') {
3531
3624
  return {
3532
3625
  gridColumn: "span " + column + " / span " + column
@@ -3542,7 +3635,7 @@ function responsiveGridItemColumnStyle(props) {
3542
3635
  function responsiveGridItemColumnStartStyle(props) {
3543
3636
  var theme = props.theme;
3544
3637
  var media = theme.sanity.media;
3545
- return responsive(media, getResponsiveProp(props.$columnStart), function (columnStart) {
3638
+ return _responsive(media, props.$columnStart, function (columnStart) {
3546
3639
  return {
3547
3640
  gridColumnStart: columnStart
3548
3641
  };
@@ -3552,7 +3645,7 @@ function responsiveGridItemColumnStartStyle(props) {
3552
3645
  function responsiveGridItemColumnEndStyle(props) {
3553
3646
  var theme = props.theme;
3554
3647
  var media = theme.sanity.media;
3555
- return responsive(media, getResponsiveProp(props.$columnEnd), function (columnEnd) {
3648
+ return _responsive(media, props.$columnEnd, function (columnEnd) {
3556
3649
  return {
3557
3650
  gridColumnEnd: columnEnd
3558
3651
  };
@@ -3560,36 +3653,36 @@ function responsiveGridItemColumnEndStyle(props) {
3560
3653
  }
3561
3654
 
3562
3655
  function responsiveInputPaddingStyle(props) {
3563
- var $iconLeft = props.$iconLeft,
3656
+ var $fontSize = props.$fontSize,
3657
+ $iconLeft = props.$iconLeft,
3564
3658
  $iconRight = props.$iconRight,
3659
+ $padding = props.$padding,
3660
+ $space = props.$space,
3565
3661
  theme = props.theme;
3566
3662
  var _theme$sanity = theme.sanity,
3567
3663
  fonts = _theme$sanity.fonts,
3568
3664
  media = _theme$sanity.media,
3569
3665
  spaceScale = _theme$sanity.space;
3570
- var padding = getResponsiveProp(props.$padding, [0]);
3571
- var space = getResponsiveProp(props.$space, [0]);
3572
- var size = getResponsiveProp(props.$fontSize, [0]);
3573
- var len = Math.max(padding.length, space.length, size.length);
3666
+ var len = Math.max($padding.length, $space.length, $fontSize.length);
3574
3667
  var _padding = [];
3575
3668
  var _space = [];
3576
- var _size = [];
3669
+ var _fontSize = [];
3577
3670
 
3578
3671
  for (var i = 0; i < len; i += 1) {
3579
- _padding[i] = padding[i] === undefined ? _padding[i - 1] : padding[i];
3580
- _space[i] = space[i] === undefined ? _space[i - 1] : space[i];
3581
- _size[i] = size[i] === undefined ? _size[i - 1] : size[i];
3672
+ _fontSize[i] = $fontSize[i] === undefined ? _fontSize[i - 1] : $fontSize[i];
3673
+ _padding[i] = $padding[i] === undefined ? _padding[i - 1] : $padding[i];
3674
+ _space[i] = $space[i] === undefined ? _space[i - 1] : $space[i];
3582
3675
  }
3583
3676
 
3584
- return responsive(media, _padding, function (_, i) {
3585
- var fontSize = fonts.text.sizes[_size[i]] || fonts.text.sizes[2];
3586
- var emSize = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight;
3677
+ return _responsive(media, _padding, function (_, i) {
3678
+ var size = fonts.text.sizes[_fontSize[i]] || fonts.text.sizes[2];
3679
+ var emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight;
3587
3680
  var p = spaceScale[_padding[i]];
3588
3681
  var s = spaceScale[_space[i]];
3589
3682
  var styles = {
3590
- paddingTop: rem(p - fontSize.ascenderHeight),
3683
+ paddingTop: rem(p - size.ascenderHeight),
3591
3684
  paddingRight: rem(p),
3592
- paddingBottom: rem(p - fontSize.descenderHeight),
3685
+ paddingBottom: rem(p - size.descenderHeight),
3593
3686
  paddingLeft: rem(p)
3594
3687
  };
3595
3688
  if ($iconRight) styles.paddingRight = rem(p + emSize + s);
@@ -3610,17 +3703,19 @@ function textInputRootStyle() {
3610
3703
  }
3611
3704
  function textInputBaseStyle(props) {
3612
3705
  var theme = props.theme,
3706
+ $scheme = props.$scheme,
3707
+ $tone = props.$tone,
3613
3708
  $weight = props.$weight;
3614
3709
  var font = theme.sanity.fonts.text;
3615
3710
  var color = theme.sanity.color.input;
3616
- 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);
3711
+ 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-scheme='", "'][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, $scheme, $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);
3617
3712
  }
3618
3713
  function textInputFontSizeStyle(props) {
3619
3714
  var theme = props.theme;
3620
3715
  var _theme$sanity = theme.sanity,
3621
3716
  fonts = _theme$sanity.fonts,
3622
3717
  media = _theme$sanity.media;
3623
- return responsive(media, getResponsiveProp(props.$fontSize, [2]), function (sizeIndex) {
3718
+ return _responsive(media, props.$fontSize, function (sizeIndex) {
3624
3719
  var size = fonts.text.sizes[sizeIndex] || fonts.text.sizes[2];
3625
3720
  return {
3626
3721
  fontSize: rem(size.fontSize),
@@ -3632,12 +3727,14 @@ function textInputRepresentationStyle(props) {
3632
3727
  var $border = props.$border,
3633
3728
  $hasPrefix = props.$hasPrefix,
3634
3729
  $hasSuffix = props.$hasSuffix,
3730
+ $scheme = props.$scheme,
3731
+ $tone = props.$tone,
3635
3732
  theme = props.theme;
3636
3733
  var _theme$sanity2 = theme.sanity,
3637
3734
  focusRing = _theme$sanity2.focusRing,
3638
3735
  input = _theme$sanity2.input;
3639
3736
  var color = theme.sanity.color.input;
3640
- 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({
3737
+ 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-scheme='", "'][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, $scheme, $tone, color["default"].enabled.bg, color["default"].enabled.fg, $border ? focusRingBorderStyle({
3641
3738
  color: color["default"].enabled.border,
3642
3739
  width: input.border.width
3643
3740
  }) : undefined, color.invalid.enabled.bg, color.invalid.enabled.fg, $border ? focusRingBorderStyle({
@@ -3652,20 +3749,20 @@ function textInputRepresentationStyle(props) {
3652
3749
  }), color["default"].disabled.bg, color["default"].disabled.fg, $border ? focusRingBorderStyle({
3653
3750
  color: color["default"].disabled.border,
3654
3751
  width: input.border.width
3655
- }) : 'none', color["default"].hovered.bg, color["default"].hovered.fg, $border ? focusRingBorderStyle({
3752
+ }) : 'none', color["default"].readOnly.bg, color["default"].readOnly.fg, color["default"].hovered.bg, color["default"].hovered.fg, $border ? focusRingBorderStyle({
3656
3753
  color: color["default"].hovered.border,
3657
3754
  width: input.border.width
3658
- }) : 'none', color["default"].readOnly.bg, color["default"].readOnly.fg);
3755
+ }) : 'none');
3659
3756
  }
3660
3757
 
3661
3758
  function responsiveMarginStyle(props) {
3662
3759
  var theme = props.theme;
3663
- 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);
3760
+ 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);
3664
3761
  }
3665
3762
 
3666
3763
  function responsivePaddingStyle(props) {
3667
3764
  var theme = props.theme;
3668
- 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);
3765
+ 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);
3669
3766
  }
3670
3767
 
3671
3768
  function responsiveRadiusStyle(props) {
@@ -3673,7 +3770,7 @@ function responsiveRadiusStyle(props) {
3673
3770
  var _theme$sanity = theme.sanity,
3674
3771
  media = _theme$sanity.media,
3675
3772
  radius = _theme$sanity.radius;
3676
- return responsive(media, getResponsiveProp(props.$radius), function (radiusIndex) {
3773
+ return _responsive(media, props.$radius, function (radiusIndex) {
3677
3774
  return {
3678
3775
  borderRadius: rem(radius[radiusIndex])
3679
3776
  };
@@ -3700,7 +3797,7 @@ function responsiveShadowStyle(props) {
3700
3797
  var _theme$sanity = theme.sanity,
3701
3798
  media = _theme$sanity.media,
3702
3799
  shadows = _theme$sanity.shadows;
3703
- return responsive(media, getResponsiveProp(props.$shadow), function (shadow) {
3800
+ return _responsive(media, props.$shadow, function (shadow) {
3704
3801
  return shadowStyle(shadows[shadow]);
3705
3802
  });
3706
3803
  }
@@ -3746,10 +3843,10 @@ var Text = /*#__PURE__*/React.forwardRef(function Text(props, ref) {
3746
3843
  "data-ui": "Text"
3747
3844
  }, restProps, {
3748
3845
  "$accent": accent,
3749
- "$align": align,
3846
+ "$align": useArrayProp(align),
3750
3847
  "$muted": muted,
3751
3848
  ref: ref,
3752
- "$size": size,
3849
+ "$size": useArrayProp(size),
3753
3850
  "$weight": weight
3754
3851
  }), /*#__PURE__*/React__default["default"].createElement("span", null, children));
3755
3852
  });
@@ -3845,7 +3942,7 @@ function responsiveAvatarSizeStyle(props) {
3845
3942
  var _theme$sanity = theme.sanity,
3846
3943
  avatar = _theme$sanity.avatar,
3847
3944
  media = _theme$sanity.media;
3848
- return responsive(media, props.$size, function (size) {
3945
+ return _responsive(media, props.$size, function (size) {
3849
3946
  var avatarSize = avatar.sizes[size] || avatar.sizes[0];
3850
3947
  return {
3851
3948
  width: rem(avatarSize.size),
@@ -3916,11 +4013,12 @@ var Avatar = /*#__PURE__*/React.forwardRef(function Avatar(props, ref) {
3916
4013
  animateArrowFrom = props.animateArrowFrom,
3917
4014
  _props$status = props.status,
3918
4015
  status = _props$status === void 0 ? 'online' : _props$status,
3919
- sizeProp = props.size,
4016
+ _props$size = props.size,
4017
+ sizeProp = _props$size === void 0 ? 0 : _props$size,
3920
4018
  restProps = _objectWithoutPropertiesLoose(props, _excluded$F);
3921
4019
 
3922
4020
  var as = ReactIs__default["default"].isValidElementType(asProp) ? asProp : 'div';
3923
- var size = useResponsiveProp(sizeProp, [0]);
4021
+ var size = useArrayProp(sizeProp);
3924
4022
  var theme = useTheme();
3925
4023
  var color = theme.sanity.color.spot[colorKey] || theme.sanity.color.spot.gray; // @todo: remove this
3926
4024
 
@@ -3960,6 +4058,11 @@ var Avatar = /*#__PURE__*/React.forwardRef(function Avatar(props, ref) {
3960
4058
  onImageLoadError(new Error('Avatar: the image failed to load'));
3961
4059
  }
3962
4060
  }, [onImageLoadError]);
4061
+ var initialsSize = React.useMemo(function () {
4062
+ return size.map(function (s) {
4063
+ return s === 0 ? 0 : s + 1;
4064
+ });
4065
+ }, [size]);
3963
4066
  return /*#__PURE__*/React__default["default"].createElement(Root$D, _extends({
3964
4067
  as: as,
3965
4068
  "data-as": typeof as === 'string' ? as : undefined,
@@ -4013,20 +4116,18 @@ var Avatar = /*#__PURE__*/React.forwardRef(function Avatar(props, ref) {
4013
4116
  vectorEffect: "non-scaling-stroke"
4014
4117
  })), (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, {
4015
4118
  as: "span",
4016
- size: size.map(function (s) {
4017
- return s === 0 ? 0 : s + 1;
4018
- })
4119
+ size: initialsSize
4019
4120
  }, /*#__PURE__*/React__default["default"].createElement("strong", null, initials)))));
4020
4121
  });
4021
4122
 
4022
4123
  var _templateObject$A;
4023
4124
 
4024
- function responsiveAvatarCounterSizeStyle(props) {
4125
+ function _responsiveAvatarCounterSizeStyle(props) {
4025
4126
  var theme = props.theme;
4026
4127
  var _theme$sanity = theme.sanity,
4027
4128
  avatar = _theme$sanity.avatar,
4028
4129
  media = _theme$sanity.media;
4029
- return responsive(media, props.$size, function (size) {
4130
+ return _responsive(media, props.$size, function (size) {
4030
4131
  var avatarSize = avatar.sizes[size];
4031
4132
  if (!avatarSize) return EMPTY_RECORD;
4032
4133
  return {
@@ -4037,12 +4138,12 @@ function responsiveAvatarCounterSizeStyle(props) {
4037
4138
  });
4038
4139
  }
4039
4140
 
4040
- function avatarCounterBaseStyle(props) {
4141
+ function _avatarCounterBaseStyle(props) {
4041
4142
  var theme = props.theme;
4042
4143
  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]));
4043
4144
  }
4044
4145
 
4045
- var Root$C = styled__default["default"].div(responsiveAvatarCounterSizeStyle, avatarCounterBaseStyle);
4146
+ var Root$C = styled__default["default"].div(_responsiveAvatarCounterSizeStyle, _avatarCounterBaseStyle);
4046
4147
  /**
4047
4148
  * @public
4048
4149
  */
@@ -4051,15 +4152,19 @@ var AvatarCounter = /*#__PURE__*/React.forwardRef(function AvatarCounter(props,
4051
4152
  var count = props.count,
4052
4153
  _props$size = props.size,
4053
4154
  sizeProp = _props$size === void 0 ? 0 : _props$size;
4054
- var size = useResponsiveProp(sizeProp, [0]);
4155
+ var size = useArrayProp(sizeProp);
4156
+ var counterSize = React.useMemo(function () {
4157
+ return size.map(function (s) {
4158
+ return s === 0 ? 0 : s + 1;
4159
+ });
4160
+ }, [size]);
4055
4161
  return /*#__PURE__*/React__default["default"].createElement(Root$C, {
4056
4162
  "$size": size,
4163
+ "data-ui": "AvatarCounter",
4057
4164
  ref: ref
4058
4165
  }, /*#__PURE__*/React__default["default"].createElement(Text, {
4059
4166
  as: "span",
4060
- size: size.map(function (s) {
4061
- return s === 0 ? 0 : s + 1;
4062
- })
4167
+ size: counterSize
4063
4168
  }, /*#__PURE__*/React__default["default"].createElement("strong", null, count)));
4064
4169
  });
4065
4170
 
@@ -4070,7 +4175,7 @@ function childrenToElementArray(children) {
4070
4175
  });
4071
4176
  }
4072
4177
 
4073
- var _excluded$E = ["children", "maxLength", "size", "tone"];
4178
+ var _excluded$E = ["children", "maxLength", "size"];
4074
4179
 
4075
4180
  var _templateObject$z;
4076
4181
  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"])));
@@ -4084,7 +4189,7 @@ function responsiveAvatarStackSizeStyle(props) {
4084
4189
  var _theme$sanity = theme.sanity,
4085
4190
  avatar = _theme$sanity.avatar,
4086
4191
  media = _theme$sanity.media;
4087
- return responsive(media, getResponsiveProp(props.size), function (size) {
4192
+ return _responsive(media, props.$size, function (size) {
4088
4193
  var avatarSize = avatar.sizes[size];
4089
4194
  if (!avatarSize) return EMPTY_RECORD;
4090
4195
  return {
@@ -4105,13 +4210,14 @@ var AvatarStack = /*#__PURE__*/React.forwardRef(function AvatarStack(props, ref)
4105
4210
  _props$maxLength = props.maxLength,
4106
4211
  maxLengthProp = _props$maxLength === void 0 ? 4 : _props$maxLength,
4107
4212
  _props$size = props.size,
4108
- size = _props$size === void 0 ? 0 : _props$size,
4213
+ sizeProp = _props$size === void 0 ? 0 : _props$size,
4109
4214
  restProps = _objectWithoutPropertiesLoose(props, _excluded$E);
4110
4215
 
4111
- var maxLength = Math.max(maxLengthProp, 0);
4112
4216
  var children = childrenToElementArray(childrenProp).filter(function (child) {
4113
4217
  return typeof child !== 'string';
4114
4218
  });
4219
+ var maxLength = Math.max(maxLengthProp, 0);
4220
+ var size = useArrayProp(sizeProp);
4115
4221
  var len = children.length;
4116
4222
  var visibleCount = maxLength - 1;
4117
4223
  var extraCount = len - visibleCount;
@@ -4120,7 +4226,7 @@ var AvatarStack = /*#__PURE__*/React.forwardRef(function AvatarStack(props, ref)
4120
4226
  "data-ui": "AvatarStack"
4121
4227
  }, restProps, {
4122
4228
  ref: ref,
4123
- size: size
4229
+ "$size": size
4124
4230
  }), len === 0 && /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(AvatarCounter, {
4125
4231
  count: len
4126
4232
  })), len !== 0 && extraCount > 1 && /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(AvatarCounter, {
@@ -4178,31 +4284,31 @@ var Box = /*#__PURE__*/React.forwardRef(function Box(props, ref) {
4178
4284
  "data-as": typeof asProp === 'string' ? asProp : undefined,
4179
4285
  "data-ui": "Box"
4180
4286
  }, restProps, {
4181
- "$column": column,
4182
- "$columnStart": columnStart,
4183
- "$columnEnd": columnEnd,
4184
- "$display": display,
4185
- "$flex": flex,
4186
- "$height": height,
4187
- "$margin": margin,
4188
- "$marginX": marginX,
4189
- "$marginY": marginY,
4190
- "$marginTop": marginTop,
4191
- "$marginRight": marginRight,
4192
- "$marginBottom": marginBottom,
4193
- "$marginLeft": marginLeft,
4194
- "$overflow": overflow,
4195
- "$padding": padding,
4196
- "$paddingX": paddingX,
4197
- "$paddingY": paddingY,
4198
- "$paddingTop": paddingTop,
4199
- "$paddingRight": paddingRight,
4200
- "$paddingBottom": paddingBottom,
4201
- "$paddingLeft": paddingLeft,
4202
- "$row": row,
4203
- "$rowStart": rowStart,
4204
- "$rowEnd": rowEnd,
4205
- "$sizing": sizing,
4287
+ "$column": useArrayProp(column),
4288
+ "$columnStart": useArrayProp(columnStart),
4289
+ "$columnEnd": useArrayProp(columnEnd),
4290
+ "$display": useArrayProp(display),
4291
+ "$flex": useArrayProp(flex),
4292
+ "$height": useArrayProp(height),
4293
+ "$margin": useArrayProp(margin),
4294
+ "$marginX": useArrayProp(marginX),
4295
+ "$marginY": useArrayProp(marginY),
4296
+ "$marginTop": useArrayProp(marginTop),
4297
+ "$marginRight": useArrayProp(marginRight),
4298
+ "$marginBottom": useArrayProp(marginBottom),
4299
+ "$marginLeft": useArrayProp(marginLeft),
4300
+ "$overflow": useArrayProp(overflow),
4301
+ "$padding": useArrayProp(padding),
4302
+ "$paddingX": useArrayProp(paddingX),
4303
+ "$paddingY": useArrayProp(paddingY),
4304
+ "$paddingTop": useArrayProp(paddingTop),
4305
+ "$paddingRight": useArrayProp(paddingRight),
4306
+ "$paddingBottom": useArrayProp(paddingBottom),
4307
+ "$paddingLeft": useArrayProp(paddingLeft),
4308
+ "$row": useArrayProp(row),
4309
+ "$rowStart": useArrayProp(rowStart),
4310
+ "$rowEnd": useArrayProp(rowEnd),
4311
+ "$sizing": useArrayProp(sizing),
4206
4312
  as: asProp,
4207
4313
  ref: ref
4208
4314
  }), props.children);
@@ -4250,9 +4356,9 @@ var Label = /*#__PURE__*/React.forwardRef(function Label(props, ref) {
4250
4356
  "data-ui": "Label"
4251
4357
  }, restProps, {
4252
4358
  "$accent": accent,
4253
- "$align": align,
4359
+ "$align": useArrayProp(align),
4254
4360
  "$muted": muted,
4255
- "$size": size,
4361
+ "$size": useArrayProp(size),
4256
4362
  "$weight": weight,
4257
4363
  ref: ref
4258
4364
  }), children);
@@ -4299,8 +4405,8 @@ var Badge = /*#__PURE__*/React.forwardRef(function Badge(props, ref) {
4299
4405
  }, restProps, {
4300
4406
  "$mode": mode,
4301
4407
  "$tone": tone,
4302
- "$radius": radius,
4303
- padding: padding,
4408
+ "$radius": useArrayProp(radius),
4409
+ padding: useArrayProp(padding),
4304
4410
  ref: ref
4305
4411
  }), /*#__PURE__*/React__default["default"].createElement(Label, {
4306
4412
  size: fontSize
@@ -4326,11 +4432,11 @@ var Flex = /*#__PURE__*/React.forwardRef(function Flex(props, ref) {
4326
4432
  return /*#__PURE__*/React__default["default"].createElement(Root$x, _extends({
4327
4433
  "data-ui": "Flex"
4328
4434
  }, restProps, {
4329
- "$align": align,
4330
- "$direction": direction,
4331
- "$gap": gap,
4332
- "$justify": justify,
4333
- "$wrap": wrap,
4435
+ "$align": useArrayProp(align),
4436
+ "$direction": useArrayProp(direction),
4437
+ "$gap": useArrayProp(gap),
4438
+ "$justify": useArrayProp(justify),
4439
+ "$wrap": useArrayProp(wrap),
4334
4440
  forwardedAs: as,
4335
4441
  ref: ref
4336
4442
  }));
@@ -4459,23 +4565,23 @@ var Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {
4459
4565
  icon = props.icon,
4460
4566
  iconRight = props.iconRight,
4461
4567
  _props$justify = props.justify,
4462
- justify = _props$justify === void 0 ? 'center' : _props$justify,
4568
+ justifyProp = _props$justify === void 0 ? 'center' : _props$justify,
4463
4569
  loading = props.loading,
4464
4570
  _props$mode = props.mode,
4465
4571
  mode = _props$mode === void 0 ? 'default' : _props$mode,
4466
4572
  _props$padding = props.padding,
4467
- padding = _props$padding === void 0 ? 3 : _props$padding,
4468
- paddingX = props.paddingX,
4469
- paddingY = props.paddingY,
4470
- paddingTop = props.paddingTop,
4471
- paddingBottom = props.paddingBottom,
4472
- paddingLeft = props.paddingLeft,
4473
- paddingRight = props.paddingRight,
4573
+ paddingProp = _props$padding === void 0 ? 3 : _props$padding,
4574
+ paddingXProp = props.paddingX,
4575
+ paddingYProp = props.paddingY,
4576
+ paddingTopProp = props.paddingTop,
4577
+ paddingBottomProp = props.paddingBottom,
4578
+ paddingLeftProp = props.paddingLeft,
4579
+ paddingRightProp = props.paddingRight,
4474
4580
  _props$radius = props.radius,
4475
- radius = _props$radius === void 0 ? 2 : _props$radius,
4581
+ radiusProp = _props$radius === void 0 ? 2 : _props$radius,
4476
4582
  selected = props.selected,
4477
4583
  _props$space = props.space,
4478
- space = _props$space === void 0 ? 3 : _props$space,
4584
+ spaceProp = _props$space === void 0 ? 3 : _props$space,
4479
4585
  text = props.text,
4480
4586
  textAlign = props.textAlign,
4481
4587
  _props$tone = props.tone,
@@ -4484,6 +4590,16 @@ var Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {
4484
4590
  type = _props$type === void 0 ? 'button' : _props$type,
4485
4591
  restProps = _objectWithoutPropertiesLoose(props, _excluded$z);
4486
4592
 
4593
+ var justify = useArrayProp(justifyProp);
4594
+ var padding = useArrayProp(paddingProp);
4595
+ var paddingX = useArrayProp(paddingXProp);
4596
+ var paddingY = useArrayProp(paddingYProp);
4597
+ var paddingTop = useArrayProp(paddingTopProp);
4598
+ var paddingBottom = useArrayProp(paddingBottomProp);
4599
+ var paddingLeft = useArrayProp(paddingLeftProp);
4600
+ var paddingRight = useArrayProp(paddingRightProp);
4601
+ var radius = useArrayProp(radiusProp);
4602
+ var space = useArrayProp(spaceProp);
4487
4603
  var theme = useTheme();
4488
4604
  var boxProps = React.useMemo(function () {
4489
4605
  return {
@@ -4605,15 +4721,15 @@ var Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
4605
4721
  "data-ui": "Card",
4606
4722
  "data-tone": tone
4607
4723
  }, restProps, {
4608
- "$border": border,
4609
- "$borderTop": borderTop,
4610
- "$borderRight": borderRight,
4611
- "$borderBottom": borderBottom,
4612
- "$borderLeft": borderLeft,
4724
+ "$border": useArrayProp(border),
4725
+ "$borderTop": useArrayProp(borderTop),
4726
+ "$borderRight": useArrayProp(borderRight),
4727
+ "$borderBottom": useArrayProp(borderBottom),
4728
+ "$borderLeft": useArrayProp(borderLeft),
4613
4729
  "$checkered": checkered,
4614
4730
  "$focusRing": focusRing,
4615
- "$radius": radius,
4616
- "$shadow": shadow,
4731
+ "$radius": useArrayProp(radius),
4732
+ "$shadow": useArrayProp(shadow),
4617
4733
  "$tone": tone,
4618
4734
  "data-checkered": checkered ? '' : undefined,
4619
4735
  "data-pressed": pressed ? '' : undefined,
@@ -4836,7 +4952,7 @@ var Code = /*#__PURE__*/React.forwardRef(function Code(props, ref) {
4836
4952
  return /*#__PURE__*/React__default["default"].createElement(Root$s, _extends({
4837
4953
  "data-ui": "Code"
4838
4954
  }, restProps, {
4839
- "$size": size,
4955
+ "$size": useArrayProp(size),
4840
4956
  "$weight": weight,
4841
4957
  ref: ref
4842
4958
  }), !(language && registered) && /*#__PURE__*/React__default["default"].createElement("code", null, children), language && registered && /*#__PURE__*/React__default["default"].createElement(Refractor__default["default"], {
@@ -4858,7 +4974,7 @@ function responsiveContainerWidthStyle(props) {
4858
4974
  var _theme$sanity = theme.sanity,
4859
4975
  container = _theme$sanity.container,
4860
4976
  media = _theme$sanity.media;
4861
- return responsive(media, getResponsiveProp(props.$width), function (val) {
4977
+ return _responsive(media, props.$width, function (val) {
4862
4978
  return {
4863
4979
  maxWidth: val === 'auto' ? 'none' : rem(container[val])
4864
4980
  };
@@ -4880,7 +4996,7 @@ var Container = /*#__PURE__*/React.forwardRef(function Container(props, ref) {
4880
4996
  return /*#__PURE__*/React__default["default"].createElement(Root$r, _extends({
4881
4997
  "data-ui": "Container"
4882
4998
  }, restProps, {
4883
- "$width": width,
4999
+ "$width": useArrayProp(width),
4884
5000
  forwardedAs: as,
4885
5001
  ref: ref
4886
5002
  }));
@@ -4909,14 +5025,14 @@ var Grid = /*#__PURE__*/React.forwardRef(function Grid(props, ref) {
4909
5025
  "data-as": typeof as === 'string' ? as : undefined,
4910
5026
  "data-ui": "Grid"
4911
5027
  }, restProps, {
4912
- "$autoRows": autoRows,
4913
- "$autoCols": autoCols,
4914
- "$autoFlow": autoFlow,
4915
- "$columns": columns,
4916
- "$gap": gap,
4917
- "$gapX": gapX,
4918
- "$gapY": gapY,
4919
- "$rows": rows,
5028
+ "$autoRows": useArrayProp(autoRows),
5029
+ "$autoCols": useArrayProp(autoCols),
5030
+ "$autoFlow": useArrayProp(autoFlow),
5031
+ "$columns": useArrayProp(columns),
5032
+ "$gap": useArrayProp(gap),
5033
+ "$gapX": useArrayProp(gapX),
5034
+ "$gapY": useArrayProp(gapY),
5035
+ "$rows": useArrayProp(rows),
4920
5036
  forwardedAs: as,
4921
5037
  ref: ref
4922
5038
  }), children);
@@ -4962,9 +5078,9 @@ var Heading = /*#__PURE__*/React.forwardRef(function Heading(props, ref) {
4962
5078
  "data-ui": "Heading"
4963
5079
  }, restProps, {
4964
5080
  "$accent": accent,
4965
- "$align": align,
5081
+ "$align": useArrayProp(align),
4966
5082
  "$muted": muted,
4967
- "$size": size,
5083
+ "$size": useArrayProp(size),
4968
5084
  "$weight": weight,
4969
5085
  ref: ref
4970
5086
  }), /*#__PURE__*/React__default["default"].createElement("span", null, children));
@@ -4984,7 +5100,7 @@ function inlineBaseStyle() {
4984
5100
  }
4985
5101
  function inlineSpaceStyle(props) {
4986
5102
  var theme = props.theme;
4987
- return responsive(theme.sanity.media, getResponsiveProp(props.$space), function (spaceIndex) {
5103
+ return _responsive(theme.sanity.media, props.$space, function (spaceIndex) {
4988
5104
  var space = rem(theme.sanity.space[spaceIndex]);
4989
5105
  return {
4990
5106
  margin: "-" + space + " 0 0 -" + space,
@@ -5007,18 +5123,20 @@ var Inline = /*#__PURE__*/React.forwardRef(function Inline(props, ref) {
5007
5123
  space = props.space,
5008
5124
  restProps = _objectWithoutPropertiesLoose(props, _excluded$s);
5009
5125
 
5010
- var children = childrenToElementArray(childrenProp).filter(Boolean);
5126
+ var children = React.useMemo(function () {
5127
+ return childrenToElementArray(childrenProp).filter(Boolean).map(function (child, idx) {
5128
+ return /*#__PURE__*/React__default["default"].createElement("div", {
5129
+ key: idx
5130
+ }, child);
5131
+ });
5132
+ }, [childrenProp]);
5011
5133
  return /*#__PURE__*/React__default["default"].createElement(Root$o, _extends({
5012
5134
  "data-ui": "Inline"
5013
5135
  }, restProps, {
5014
- "$space": space,
5136
+ "$space": useArrayProp(space),
5015
5137
  forwardedAs: as,
5016
5138
  ref: ref
5017
- }), children.map(function (child, idx) {
5018
- return /*#__PURE__*/React__default["default"].createElement("div", {
5019
- key: idx
5020
- }, child);
5021
- }));
5139
+ }), children);
5022
5140
  });
5023
5141
 
5024
5142
  var _excluded$r = ["children", "fontSize", "padding", "radius"];
@@ -5047,7 +5165,7 @@ var KBD = /*#__PURE__*/React.forwardRef(function KBD(props, ref) {
5047
5165
  return /*#__PURE__*/React__default["default"].createElement(Root$n, _extends({
5048
5166
  "data-ui": "KBD"
5049
5167
  }, restProps, {
5050
- "$radius": radius,
5168
+ "$radius": useArrayProp(radius),
5051
5169
  ref: ref
5052
5170
  }), /*#__PURE__*/React__default["default"].createElement(Box, {
5053
5171
  as: "span",
@@ -5101,12 +5219,6 @@ function useBoundaryElement() {
5101
5219
  return value || DEFAULT_VALUE;
5102
5220
  }
5103
5221
 
5104
- /**
5105
- * @internal
5106
- */
5107
-
5108
- var RO = typeof window !== 'undefined' && window.ResizeObserver ? window.ResizeObserver : resizeObserver.ResizeObserver;
5109
-
5110
5222
  function findMaxBreakpoints(media, width) {
5111
5223
  var ret = [];
5112
5224
 
@@ -5148,31 +5260,18 @@ var ElementQuery = /*#__PURE__*/React.forwardRef(function ElementQuery(props, re
5148
5260
  media = _props$media === void 0 ? theme.sanity.media : _props$media,
5149
5261
  restProps = _objectWithoutPropertiesLoose(props, _excluded$q);
5150
5262
 
5151
- var _useState = React.useState(function () {
5152
- return window.innerWidth;
5153
- }),
5154
- width = _useState[0],
5155
- setWidth = _useState[1];
5156
-
5157
5263
  var forwardedRef = useForwardedRef(ref);
5158
5264
 
5159
- var _useState2 = React.useState(null),
5160
- element = _useState2[0],
5161
- setElement = _useState2[1];
5162
-
5163
- React.useEffect(function () {
5164
- if (!element) return;
5265
+ var _useState = React.useState(null),
5266
+ element = _useState[0],
5267
+ setElement = _useState[1];
5165
5268
 
5166
- var handleResizeEntries = function handleResizeEntries(entries) {
5167
- setWidth(entries[0].contentRect.width);
5168
- };
5269
+ var elementSize = useElementSize(element);
5270
+ var width = React.useMemo(function () {
5271
+ var _elementSize$border$w;
5169
5272
 
5170
- var ro = new RO(handleResizeEntries);
5171
- ro.observe(element);
5172
- return function () {
5173
- return ro.disconnect();
5174
- };
5175
- }, [element]);
5273
+ return (_elementSize$border$w = elementSize == null ? void 0 : elementSize.border.width) != null ? _elementSize$border$w : window.innerWidth;
5274
+ }, [elementSize]);
5176
5275
  var max = React.useMemo(function () {
5177
5276
  return findMaxBreakpoints(media, width);
5178
5277
  }, [media, width]);
@@ -5278,7 +5377,7 @@ function LayerProvider(props) {
5278
5377
  _props$zOffset = props.zOffset,
5279
5378
  zOffsetProp = _props$zOffset === void 0 ? 0 : _props$zOffset;
5280
5379
  var parent = React.useContext(LayerContext);
5281
- var zOffset = useResponsiveProp(zOffsetProp);
5380
+ var zOffset = useArrayProp(zOffsetProp);
5282
5381
  var maxMediaIndex = zOffset.length - 1;
5283
5382
  var mediaIndex = Math.min(useMediaIndex(), maxMediaIndex);
5284
5383
  var zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex];
@@ -5720,7 +5819,7 @@ var VirtualList = /*#__PURE__*/React.forwardRef(function VirtualList(props, ref)
5720
5819
  scrollEl.addEventListener('scroll', _handleScroll, {
5721
5820
  passive: true
5722
5821
  });
5723
- var ro = new ResizeObserver(function (entries) {
5822
+ var ro = new _ResizeObserver(function (entries) {
5724
5823
  setScrollHeight(entries[0].contentRect.height);
5725
5824
  });
5726
5825
  ro.observe(scrollEl);
@@ -6037,7 +6136,7 @@ var Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {
6037
6136
  _props$tone = props.tone,
6038
6137
  tone = _props$tone === void 0 ? 'inherit' : _props$tone,
6039
6138
  _props$width = props.width,
6040
- width = _props$width === void 0 ? 0 : _props$width,
6139
+ widthProp = _props$width === void 0 ? 0 : _props$width,
6041
6140
  _props$zOffset = props.zOffset,
6042
6141
  zOffset = _props$zOffset === void 0 ? (_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.popover.zOffset : _props$zOffset,
6043
6142
  restProps = _objectWithoutPropertiesLoose(props, _excluded$n);
@@ -6058,6 +6157,7 @@ var Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {
6058
6157
  setArrowElement = _useState3[1];
6059
6158
 
6060
6159
  var popperReferenceElement = referenceElementProp || referenceElement;
6160
+ var width = useArrayProp(matchReferenceWidth ? 'auto' : widthProp);
6061
6161
  var modifiers = usePopoverModifiers({
6062
6162
  allowedAutoPlacements: allowedAutoPlacements,
6063
6163
  arrow: arrow,
@@ -6098,13 +6198,21 @@ var Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {
6098
6198
  var popoverStyle = React.useMemo(function () {
6099
6199
  return _extends({}, style, styles.popper);
6100
6200
  }, [style, styles]);
6201
+ var updateTimeoutRef = React.useRef(null);
6101
6202
  React.useEffect(function () {
6102
- if (forceUpdate) {
6103
- try {
6104
- forceUpdate();
6105
- } catch (_) {// ignore caught error
6106
- }
6203
+ if (updateTimeoutRef.current) {
6204
+ clearTimeout(updateTimeoutRef.current);
6205
+ updateTimeoutRef.current = null;
6107
6206
  }
6207
+
6208
+ updateTimeoutRef.current = setTimeout(function () {
6209
+ if (forceUpdate) {
6210
+ try {
6211
+ forceUpdate();
6212
+ } catch (_) {// ignore caught error
6213
+ }
6214
+ }
6215
+ }, 0);
6108
6216
  }, [content, forceUpdate, open, popperReferenceElement]);
6109
6217
 
6110
6218
  if (disabled) {
@@ -6120,13 +6228,13 @@ var Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {
6120
6228
  zOffset: zOffset
6121
6229
  }, attributes.popper), /*#__PURE__*/React__default["default"].createElement(PopoverCard, {
6122
6230
  "$constrainSize": constrainSize,
6231
+ "$width": width,
6123
6232
  "data-ui": "PopoverCard",
6124
6233
  padding: padding,
6125
6234
  radius: radius,
6126
6235
  scheme: scheme,
6127
6236
  shadow: shadow,
6128
- tone: tone,
6129
- width: width
6237
+ tone: tone
6130
6238
  }, arrow && /*#__PURE__*/React__default["default"].createElement(PopoverArrow, {
6131
6239
  ref: setArrowElement,
6132
6240
  style: styles.arrow
@@ -6245,7 +6353,7 @@ function inputTextSizeStyle(props) {
6245
6353
  var theme = props.theme,
6246
6354
  $fontSize = props.$fontSize;
6247
6355
  var sizes = theme.sanity.fonts.text.sizes;
6248
- return responsive(theme.sanity.media, getResponsiveProp($fontSize), function (sizeIndex) {
6356
+ return _responsive(theme.sanity.media, $fontSize, function (sizeIndex) {
6249
6357
  return textSize(sizes[sizeIndex] || sizes[2]);
6250
6358
  });
6251
6359
  }
@@ -6297,10 +6405,10 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(props, forwardedRef)
6297
6405
  "data-read-only": !disabled && readOnly ? '' : undefined,
6298
6406
  "data-ui": "Select"
6299
6407
  }, restProps, {
6300
- "$fontSize": fontSize,
6301
- "$padding": padding,
6302
- "$radius": radius,
6303
- "$space": space,
6408
+ "$fontSize": useArrayProp(fontSize),
6409
+ "$padding": useArrayProp(padding),
6410
+ "$radius": useArrayProp(radius),
6411
+ "$space": useArrayProp(space),
6304
6412
  disabled: disabled || readOnly,
6305
6413
  ref: ref
6306
6414
  }), children), /*#__PURE__*/React__default["default"].createElement(IconBox, {
@@ -6328,7 +6436,7 @@ function responsiveStackSpaceStyle(props) {
6328
6436
  var _theme$sanity = theme.sanity,
6329
6437
  media = _theme$sanity.media,
6330
6438
  space = _theme$sanity.space;
6331
- return responsive(media, getResponsiveProp(props.$space), function (spaceIndex) {
6439
+ return _responsive(media, props.$space, function (spaceIndex) {
6332
6440
  return {
6333
6441
  gridGap: rem(space[spaceIndex])
6334
6442
  };
@@ -6350,13 +6458,13 @@ var Stack = /*#__PURE__*/React.forwardRef(function Stack(props, ref) {
6350
6458
  "data-as": typeof as === 'string' ? as : undefined,
6351
6459
  "data-ui": "Stack"
6352
6460
  }, restProps, {
6353
- "$space": space,
6461
+ "$space": useArrayProp(space),
6354
6462
  forwardedAs: as,
6355
6463
  ref: ref
6356
6464
  }));
6357
6465
  });
6358
6466
 
6359
- var _templateObject$g, _templateObject2$b, _templateObject3$6, _templateObject4$4, _templateObject5$3, _templateObject6$1, _templateObject7;
6467
+ var _templateObject$g, _templateObject2$b, _templateObject3$6, _templateObject4$4, _templateObject5$3, _templateObject6$2, _templateObject7;
6360
6468
  /* Root */
6361
6469
 
6362
6470
  function switchBaseStyles() {
@@ -6400,7 +6508,7 @@ function switchThumbStyles(props) {
6400
6508
  var checkedOffset = trackWidth - trackPadding * 2 - size;
6401
6509
  var indeterminateOffset = trackWidth / 2 - size / 2 - trackPadding;
6402
6510
  var checked = $indeterminate !== true && props.$checked === true;
6403
- 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));
6511
+ 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));
6404
6512
  }
6405
6513
 
6406
6514
  var _excluded$j = ["checked", "className", "disabled", "indeterminate", "readOnly", "style"];
@@ -6449,7 +6557,7 @@ var Switch = /*#__PURE__*/React.forwardRef(function Switch(props, forwardedRef)
6449
6557
  })));
6450
6558
  });
6451
6559
 
6452
- var _excluded$i = ["border", "customValidity", "disabled", "fontSize", "padding", "radius"];
6560
+ var _excluded$i = ["border", "customValidity", "disabled", "fontSize", "padding", "radius", "weight"];
6453
6561
 
6454
6562
  var _templateObject$f;
6455
6563
  var Root$d = styled__default["default"].span(textInputRootStyle);
@@ -6472,32 +6580,46 @@ var TextArea = /*#__PURE__*/React.forwardRef(function TextArea(props, forwardedR
6472
6580
  padding = _props$padding === void 0 ? 3 : _props$padding,
6473
6581
  _props$radius = props.radius,
6474
6582
  radius = _props$radius === void 0 ? 1 : _props$radius,
6583
+ weight = props.weight,
6475
6584
  restProps = _objectWithoutPropertiesLoose(props, _excluded$i);
6476
6585
 
6477
6586
  var ref = useForwardedRef(forwardedRef);
6587
+ var rootTheme = useRootTheme();
6478
6588
  useCustomValidity(ref, customValidity);
6479
6589
  return /*#__PURE__*/React__default["default"].createElement(Root$d, {
6480
6590
  "data-ui": "TextArea"
6481
6591
  }, /*#__PURE__*/React__default["default"].createElement(InputRoot$1, null, /*#__PURE__*/React__default["default"].createElement(Input$1, _extends({
6482
- "data-as": "textarea"
6592
+ "data-as": "textarea",
6593
+ "data-scheme": rootTheme.scheme,
6594
+ "data-tone": rootTheme.tone
6483
6595
  }, restProps, {
6484
- "$fontSize": fontSize,
6485
- "$padding": padding,
6596
+ "$fontSize": useArrayProp(fontSize),
6597
+ "$padding": useArrayProp(padding),
6598
+ "$scheme": rootTheme.scheme,
6599
+ "$space": useArrayProp(0),
6600
+ "$tone": rootTheme.tone,
6601
+ "$weight": weight,
6486
6602
  disabled: disabled,
6487
6603
  ref: ref
6488
6604
  })), /*#__PURE__*/React__default["default"].createElement(Presentation$1, {
6489
6605
  "$border": border,
6490
- "$radius": radius
6606
+ "$radius": useArrayProp(radius),
6607
+ "$scheme": rootTheme.scheme,
6608
+ "$tone": rootTheme.tone,
6609
+ "data-scheme": rootTheme.scheme,
6610
+ "data-tone": rootTheme.tone
6491
6611
  })));
6492
6612
  });
6493
6613
 
6494
- var _excluded$h = ["border", "clearButton", "disabled", "fontSize", "icon", "iconRight", "onClear", "padding", "prefix", "radius", "readOnly", "space", "suffix", "customValidity", "type"];
6614
+ var _excluded$h = ["border", "clearButton", "disabled", "fontSize", "icon", "iconRight", "onClear", "padding", "prefix", "radius", "readOnly", "space", "suffix", "customValidity", "type", "weight"];
6495
6615
 
6496
- var _templateObject$e, _templateObject2$a, _templateObject3$5, _templateObject4$3, _templateObject5$2;
6616
+ var _templateObject$e, _templateObject2$a, _templateObject3$5, _templateObject4$3, _templateObject5$2, _templateObject6$1;
6497
6617
  var CLEAR_BUTTON_BOX_STYLE = {
6498
6618
  zIndex: 2
6499
6619
  };
6500
- var Root$c = styled__default["default"].span(textInputRootStyle);
6620
+ var Root$c = styled__default["default"](Card).attrs({
6621
+ forwardedAs: 'span'
6622
+ })(textInputRootStyle);
6501
6623
  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"])));
6502
6624
  var Prefix = styled__default["default"](Card).attrs({
6503
6625
  forwardedAs: 'span'
@@ -6508,7 +6630,8 @@ var Suffix = styled__default["default"](Card).attrs({
6508
6630
  var Input = styled__default["default"].input(responsiveInputPaddingStyle, textInputBaseStyle, textInputFontSizeStyle);
6509
6631
  var Presentation = styled__default["default"].span(responsiveRadiusStyle, textInputRepresentationStyle);
6510
6632
  var LeftBox = styled__default["default"](Box)(_templateObject4$3 || (_templateObject4$3 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n"])));
6511
- 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"])));
6633
+ var RightBox = styled__default["default"](Box)(_templateObject5$2 || (_templateObject5$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n right: 0;\n"])));
6634
+ 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"])));
6512
6635
  /**
6513
6636
  * @public
6514
6637
  */
@@ -6520,7 +6643,7 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6520
6643
  _props$disabled = props.disabled,
6521
6644
  disabled = _props$disabled === void 0 ? false : _props$disabled,
6522
6645
  _props$fontSize = props.fontSize,
6523
- fontSize = _props$fontSize === void 0 ? 2 : _props$fontSize,
6646
+ fontSizeProp = _props$fontSize === void 0 ? 2 : _props$fontSize,
6524
6647
  icon = props.icon,
6525
6648
  iconRight = props.iconRight,
6526
6649
  onClear = props.onClear,
@@ -6531,16 +6654,20 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6531
6654
  radiusProp = _props$radius === void 0 ? 1 : _props$radius,
6532
6655
  readOnly = props.readOnly,
6533
6656
  _props$space = props.space,
6534
- space = _props$space === void 0 ? 3 : _props$space,
6657
+ spaceProp = _props$space === void 0 ? 3 : _props$space,
6535
6658
  suffix = props.suffix,
6536
6659
  customValidity = props.customValidity,
6537
6660
  _props$type = props.type,
6538
6661
  type = _props$type === void 0 ? 'text' : _props$type,
6662
+ weight = props.weight,
6539
6663
  restProps = _objectWithoutPropertiesLoose(props, _excluded$h);
6540
6664
 
6541
6665
  var ref = useForwardedRef(forwardedRef);
6542
- var padding = useResponsiveProp(paddingProp);
6543
- var radius = useResponsiveProp(radiusProp); // Transient properties
6666
+ var rootTheme = useRootTheme();
6667
+ var fontSize = useArrayProp(fontSizeProp);
6668
+ var padding = useArrayProp(paddingProp);
6669
+ var radius = useArrayProp(radiusProp);
6670
+ var space = useArrayProp(spaceProp); // Transient properties
6544
6671
 
6545
6672
  var $hasClearButton = Boolean(clearButton);
6546
6673
  var $hasIcon = Boolean(icon);
@@ -6579,17 +6706,21 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6579
6706
  "$border": border,
6580
6707
  "$hasPrefix": $hasPrefix,
6581
6708
  "$hasSuffix": $hasSuffix,
6582
- "$radius": radius
6709
+ "$radius": radius,
6710
+ "$scheme": rootTheme.scheme,
6711
+ "$tone": rootTheme.tone,
6712
+ "data-scheme": rootTheme.scheme,
6713
+ "data-tone": rootTheme.tone
6583
6714
  }, icon && /*#__PURE__*/React__default["default"].createElement(LeftBox, {
6584
6715
  padding: padding
6585
6716
  }, /*#__PURE__*/React__default["default"].createElement(Text, {
6586
6717
  size: fontSize
6587
- }, /*#__PURE__*/React.isValidElement(icon) && icon, ReactIs.isValidElementType(icon) && /*#__PURE__*/React.createElement(icon))), !$hasClearButton && iconRight && /*#__PURE__*/React__default["default"].createElement(RightCard, {
6718
+ }, /*#__PURE__*/React.isValidElement(icon) && icon, ReactIs.isValidElementType(icon) && /*#__PURE__*/React.createElement(icon))), !$hasClearButton && iconRight && /*#__PURE__*/React__default["default"].createElement(RightBox, {
6588
6719
  padding: padding
6589
6720
  }, /*#__PURE__*/React__default["default"].createElement(Text, {
6590
6721
  size: fontSize
6591
6722
  }, /*#__PURE__*/React.isValidElement(iconRight) && iconRight, ReactIs.isValidElementType(iconRight) && /*#__PURE__*/React.createElement(iconRight))));
6592
- }, [border, fontSize, icon, iconRight, padding, radius, $hasClearButton, $hasPrefix, $hasSuffix]); // Render clear button (memoized)
6723
+ }, [border, fontSize, icon, iconRight, padding, radius, rootTheme, $hasClearButton, $hasPrefix, $hasSuffix]); // Render clear button (memoized)
6593
6724
 
6594
6725
  var clearButtonBoxPadding = React.useMemo(function () {
6595
6726
  return padding.map(function (v) {
@@ -6640,15 +6771,21 @@ var TextInput = /*#__PURE__*/React.forwardRef(function TextInput(props, forwarde
6640
6771
  }, /*#__PURE__*/React__default["default"].createElement("span", null, suffix));
6641
6772
  }, [radius, suffix]);
6642
6773
  return /*#__PURE__*/React__default["default"].createElement(Root$c, {
6643
- "data-ui": "TextInput"
6774
+ "data-ui": "TextInput",
6775
+ tone: rootTheme.tone
6644
6776
  }, prefixNode, /*#__PURE__*/React__default["default"].createElement(InputRoot, null, /*#__PURE__*/React__default["default"].createElement(Input, _extends({
6645
- "data-as": "input"
6777
+ "data-as": "input",
6778
+ "data-scheme": rootTheme.scheme,
6779
+ "data-tone": rootTheme.tone
6646
6780
  }, restProps, {
6781
+ "$fontSize": fontSize,
6647
6782
  "$iconLeft": $hasIcon,
6648
6783
  "$iconRight": $hasIconRight || $hasClearButton,
6649
6784
  "$padding": padding,
6785
+ "$scheme": rootTheme.scheme,
6650
6786
  "$space": space,
6651
- "$fontSize": fontSize,
6787
+ "$tone": rootTheme.tone,
6788
+ "$weight": weight,
6652
6789
  disabled: disabled,
6653
6790
  readOnly: readOnly,
6654
6791
  ref: ref,
@@ -6696,7 +6833,7 @@ var Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(props, ref) {
6696
6833
  children = props.children,
6697
6834
  content = props.content,
6698
6835
  disabled = props.disabled,
6699
- fallbackPlacements = props.fallbackPlacements,
6836
+ fallbackPlacementsProp = props.fallbackPlacements,
6700
6837
  _props$placement = props.placement,
6701
6838
  placement = _props$placement === void 0 ? 'bottom' : _props$placement,
6702
6839
  portal = props.portal,
@@ -6705,6 +6842,7 @@ var Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(props, ref) {
6705
6842
  zOffset = _props$zOffset === void 0 ? (_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.tooltip.zOffset : _props$zOffset,
6706
6843
  restProps = _objectWithoutPropertiesLoose(props, _excluded$g);
6707
6844
 
6845
+ var fallbackPlacements = useArrayProp(fallbackPlacementsProp);
6708
6846
  var forwardedRef = useForwardedRef(ref);
6709
6847
 
6710
6848
  var _useState = React.useState(null),
@@ -6786,13 +6924,21 @@ var Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(props, ref) {
6786
6924
  window.removeEventListener('mousemove', handleWindowMouseMove);
6787
6925
  };
6788
6926
  }, [isOpen, referenceElement]);
6927
+ var updateTimeoutRef = React.useRef(null);
6789
6928
  React.useEffect(function () {
6790
- if (forceUpdate) {
6791
- try {
6792
- forceUpdate();
6793
- } catch (_) {// ignore caught error
6794
- }
6929
+ if (updateTimeoutRef.current) {
6930
+ clearTimeout(updateTimeoutRef.current);
6931
+ updateTimeoutRef.current = null;
6795
6932
  }
6933
+
6934
+ updateTimeoutRef.current = setTimeout(function () {
6935
+ if (forceUpdate) {
6936
+ try {
6937
+ forceUpdate();
6938
+ } catch (_) {// ignore caught error
6939
+ }
6940
+ }
6941
+ }, 0);
6796
6942
  }, [forceUpdate, content]); // Close when `disabled` changes to `true`
6797
6943
 
6798
6944
  React.useEffect(function () {
@@ -7074,7 +7220,7 @@ var InnerAutocomplete = /*#__PURE__*/React.forwardRef(function InnerAutocomplete
7074
7220
  var popoverMouseWithinRef = React.useRef(false);
7075
7221
  var listBoxId = id + "-listbox";
7076
7222
  var options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY;
7077
- var padding = useResponsiveProp(paddingProp);
7223
+ var padding = useArrayProp(paddingProp);
7078
7224
  var currentOption = React.useMemo(function () {
7079
7225
  return value !== null ? options.find(function (o) {
7080
7226
  return o.value === value;
@@ -7506,9 +7652,11 @@ var Breadcrumbs = /*#__PURE__*/React.forwardRef(function Breadcrumbs(props, ref)
7506
7652
  maxLength = props.maxLength,
7507
7653
  separator = props.separator,
7508
7654
  _props$space = props.space,
7509
- space = _props$space === void 0 ? 2 : _props$space,
7655
+ spaceRaw = _props$space === void 0 ? 2 : _props$space,
7510
7656
  restProps = _objectWithoutPropertiesLoose(props, _excluded$e);
7511
7657
 
7658
+ var space = useArrayProp(spaceRaw);
7659
+
7512
7660
  var _useState = React.useState(false),
7513
7661
  open = _useState[0],
7514
7662
  setOpen = _useState[1];
@@ -7598,13 +7746,13 @@ function dialogStyle(_ref) {
7598
7746
  alignItems: 'center',
7599
7747
  justifyContent: 'center',
7600
7748
  outline: 'none',
7601
- background: color.shadow.penumbra
7749
+ background: color.shadow.umbra
7602
7750
  };
7603
7751
  }
7604
7752
  function responsiveDialogPositionStyle(props) {
7605
7753
  var theme = props.theme;
7606
7754
  var media = theme.sanity.media;
7607
- return responsive(media, getResponsiveProp(props.$position), function (position) {
7755
+ return _responsive(media, props.$position, function (position) {
7608
7756
  return {
7609
7757
  '&&': {
7610
7758
  position: position
@@ -7652,10 +7800,13 @@ var DialogCard = /*#__PURE__*/React.forwardRef(function DialogCard(props, ref) {
7652
7800
  id = props.id,
7653
7801
  onClickOutside = props.onClickOutside,
7654
7802
  onClose = props.onClose,
7655
- radius = props.radius,
7803
+ radiusProp = props.radius,
7656
7804
  scheme = props.scheme,
7657
- shadow = props.shadow,
7658
- width = props.width;
7805
+ shadowProp = props.shadow,
7806
+ widthProp = props.width;
7807
+ var radius = useArrayProp(radiusProp);
7808
+ var shadow = useArrayProp(shadowProp);
7809
+ var width = useArrayProp(widthProp);
7659
7810
  var forwardedRef = useForwardedRef(ref);
7660
7811
 
7661
7812
  var _useState = React.useState(null),
@@ -7742,7 +7893,7 @@ var Dialog = /*#__PURE__*/React.forwardRef(function Dialog(props, ref) {
7742
7893
  _props$__unstable_hid = props.__unstable_hideCloseButton,
7743
7894
  hideCloseButton = _props$__unstable_hid === void 0 ? false : _props$__unstable_hid,
7744
7895
  _props$cardRadius = props.cardRadius,
7745
- cardRadius = _props$cardRadius === void 0 ? 3 : _props$cardRadius,
7896
+ cardRadiusProp = _props$cardRadius === void 0 ? 3 : _props$cardRadius,
7746
7897
  _props$cardShadow = props.cardShadow,
7747
7898
  cardShadow = _props$cardShadow === void 0 ? 4 : _props$cardShadow,
7748
7899
  children = props.children,
@@ -7753,17 +7904,22 @@ var Dialog = /*#__PURE__*/React.forwardRef(function Dialog(props, ref) {
7753
7904
  onClickOutside = props.onClickOutside,
7754
7905
  onClose = props.onClose,
7755
7906
  _props$padding = props.padding,
7756
- padding = _props$padding === void 0 ? 4 : _props$padding,
7907
+ paddingProp = _props$padding === void 0 ? 4 : _props$padding,
7757
7908
  portal = props.portal,
7758
7909
  _props$position = props.position,
7759
- position = _props$position === void 0 ? dialog.position || 'fixed' : _props$position,
7910
+ positionProp = _props$position === void 0 ? dialog.position || 'fixed' : _props$position,
7760
7911
  scheme = props.scheme,
7761
7912
  _props$width = props.width,
7762
- width = _props$width === void 0 ? 0 : _props$width,
7913
+ widthProp = _props$width === void 0 ? 0 : _props$width,
7763
7914
  _props$zOffset = props.zOffset,
7764
- zOffset = _props$zOffset === void 0 ? dialog.zOffset || ((_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.dialog.zOffset) : _props$zOffset,
7915
+ zOffsetProp = _props$zOffset === void 0 ? dialog.zOffset || ((_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.dialog.zOffset) : _props$zOffset,
7765
7916
  restProps = _objectWithoutPropertiesLoose(props, _excluded$d);
7766
7917
 
7918
+ var cardRadius = useArrayProp(cardRadiusProp);
7919
+ var padding = useArrayProp(paddingProp);
7920
+ var position = useArrayProp(positionProp);
7921
+ var width = useArrayProp(widthProp);
7922
+ var zOffset = useArrayProp(zOffsetProp);
7767
7923
  var preDivRef = React.useRef(null);
7768
7924
  var postDivRef = React.useRef(null);
7769
7925
  var cardRef = React.useRef(null);
@@ -7858,9 +8014,11 @@ var Hotkeys = /*#__PURE__*/React.forwardRef(function Hotkeys(props, ref) {
7858
8014
  padding = props.padding,
7859
8015
  radius = props.radius,
7860
8016
  _props$space = props.space,
7861
- space = _props$space === void 0 ? 1 : _props$space,
8017
+ spaceProp = _props$space === void 0 ? 1 : _props$space,
7862
8018
  restProps = _objectWithoutPropertiesLoose(props, _excluded$c);
7863
8019
 
8020
+ var space = useArrayProp(spaceProp);
8021
+
7864
8022
  if (!keys || keys.length === 0) {
7865
8023
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null);
7866
8024
  }
@@ -8474,7 +8632,7 @@ function selectableColorStyle(props) {
8474
8632
  * @internal
8475
8633
  */
8476
8634
 
8477
- var Selectable = styled__default["default"](Box)(responsiveBorderStyle, responsiveRadiusStyle, selectableBaseStyle, selectableColorStyle);
8635
+ var Selectable = styled__default["default"](Box)(responsiveRadiusStyle, selectableBaseStyle, selectableColorStyle);
8478
8636
 
8479
8637
  function useMenu() {
8480
8638
  var value = React.useContext(MenuContext);
@@ -8507,8 +8665,7 @@ function MenuGroup(props) {
8507
8665
  onClick = props.onClick,
8508
8666
  _props$padding = props.padding,
8509
8667
  padding = _props$padding === void 0 ? 3 : _props$padding,
8510
- _props$popover = props.popover,
8511
- popover = _props$popover === void 0 ? {} : _props$popover,
8668
+ popover = props.popover,
8512
8669
  _props$radius = props.radius,
8513
8670
  radius = _props$radius === void 0 ? 2 : _props$radius,
8514
8671
  _props$space = props.space,
@@ -8622,7 +8779,7 @@ function MenuGroup(props) {
8622
8779
  "aria-pressed": as === 'button' ? withinMenu : undefined,
8623
8780
  "data-pressed": as !== 'button' ? withinMenu : undefined,
8624
8781
  "data-selected": !withinMenu && active ? '' : undefined,
8625
- "$radius": radius,
8782
+ "$radius": useArrayProp(radius),
8626
8783
  "$tone": tone,
8627
8784
  onClick: handleClick,
8628
8785
  onKeyDown: handleKeyDown,
@@ -8728,13 +8885,13 @@ var MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(props, forwardedR
8728
8885
  "data-selected": active ? '' : undefined,
8729
8886
  "data-disabled": disabled ? '' : undefined,
8730
8887
  forwardedAs: as,
8731
- "$radius": radius,
8888
+ "$radius": useArrayProp(radius),
8889
+ "$padding": useArrayProp(0),
8732
8890
  "$tone": tone,
8733
8891
  disabled: disabled,
8734
8892
  onClick: handleClick,
8735
8893
  onMouseEnter: onItemMouseEnter,
8736
8894
  onMouseLeave: onItemMouseLeave,
8737
- padding: 0,
8738
8895
  ref: setRef,
8739
8896
  role: "menuitem",
8740
8897
  tabIndex: -1,
@@ -8816,7 +8973,7 @@ var Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(props, ref) {
8816
8973
  }, [delay]);
8817
8974
  return /*#__PURE__*/React__default["default"].createElement(Root$4, _extends({}, restProps, {
8818
8975
  "$animated": animated,
8819
- "$radius": radius,
8976
+ "$radius": useArrayProp(radius),
8820
8977
  "$visible": visible,
8821
8978
  ref: ref
8822
8979
  }));
@@ -8832,13 +8989,15 @@ var Root$3 = styled__default["default"](Skeleton)(function (_ref) {
8832
8989
  theme = _ref.theme;
8833
8990
  var media = theme.sanity.media;
8834
8991
  var font = theme.sanity.fonts[$style];
8835
- var styles = responsive(media, $size, function (sizeIndex) {
8992
+
8993
+ var styles = _responsive(media, $size, function (sizeIndex) {
8836
8994
  var fontSize = font.sizes[sizeIndex];
8837
8995
  var capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight;
8838
8996
  return {
8839
8997
  height: capHeight
8840
8998
  };
8841
8999
  });
9000
+
8842
9001
  return styles;
8843
9002
  });
8844
9003
  /**
@@ -8851,7 +9010,7 @@ var TextSkeleton = /*#__PURE__*/React.forwardRef(function TextSkeleton(props, re
8851
9010
  size = _props$size === void 0 ? 2 : _props$size,
8852
9011
  restProps = _objectWithoutPropertiesLoose(props, _excluded$7);
8853
9012
 
8854
- var $size = useResponsiveProp(size);
9013
+ var $size = useArrayProp(size);
8855
9014
  return /*#__PURE__*/React__default["default"].createElement(Root$3, _extends({}, restProps, {
8856
9015
  "$size": $size,
8857
9016
  ref: ref,
@@ -8868,7 +9027,7 @@ var LabelSkeleton = /*#__PURE__*/React.forwardRef(function TextSkeleton(props, r
8868
9027
  size = _props$size2 === void 0 ? 2 : _props$size2,
8869
9028
  restProps = _objectWithoutPropertiesLoose(props, _excluded2);
8870
9029
 
8871
- var $size = useResponsiveProp(size);
9030
+ var $size = useArrayProp(size);
8872
9031
  return /*#__PURE__*/React__default["default"].createElement(Root$3, _extends({}, restProps, {
8873
9032
  "$size": $size,
8874
9033
  ref: ref,
@@ -8885,7 +9044,7 @@ var HeadingSkeleton = /*#__PURE__*/React.forwardRef(function TextSkeleton(props,
8885
9044
  size = _props$size3 === void 0 ? 2 : _props$size3,
8886
9045
  restProps = _objectWithoutPropertiesLoose(props, _excluded3);
8887
9046
 
8888
- var $size = useResponsiveProp(size);
9047
+ var $size = useArrayProp(size);
8889
9048
  return /*#__PURE__*/React__default["default"].createElement(Root$3, _extends({}, restProps, {
8890
9049
  "$size": $size,
8891
9050
  ref: ref,
@@ -8902,7 +9061,7 @@ var CodeSkeleton = /*#__PURE__*/React.forwardRef(function TextSkeleton(props, re
8902
9061
  size = _props$size4 === void 0 ? 2 : _props$size4,
8903
9062
  restProps = _objectWithoutPropertiesLoose(props, _excluded4);
8904
9063
 
8905
- var $size = useResponsiveProp(size);
9064
+ var $size = useArrayProp(size);
8906
9065
  return /*#__PURE__*/React__default["default"].createElement(Root$3, _extends({}, restProps, {
8907
9066
  "$size": $size,
8908
9067
  ref: ref,
@@ -9815,7 +9974,6 @@ exports.Popover = Popover;
9815
9974
  exports.Portal = Portal;
9816
9975
  exports.PortalProvider = PortalProvider;
9817
9976
  exports.Radio = Radio;
9818
- exports.ResizeObserver = RO;
9819
9977
  exports.Select = Select;
9820
9978
  exports.Skeleton = Skeleton;
9821
9979
  exports.Spinner = Spinner;
@@ -9837,18 +9995,21 @@ exports.Tooltip = Tooltip;
9837
9995
  exports.Tree = Tree;
9838
9996
  exports.TreeItem = TreeItem;
9839
9997
  exports.VirtualList = VirtualList;
9998
+ exports._ResizeObserver = _ResizeObserver;
9999
+ exports._elementSizeObserver = _elementSizeObserver;
10000
+ exports._fillCSSObject = _fillCSSObject;
10001
+ exports._getArrayProp = _getArrayProp;
10002
+ exports._getResponsiveSpace = _getResponsiveSpace;
9840
10003
  exports._hasFocus = _hasFocus;
9841
10004
  exports._isEnterToClickElement = _isEnterToClickElement;
9842
10005
  exports._isScrollable = _isScrollable;
9843
10006
  exports._raf = _raf;
9844
10007
  exports._raf2 = _raf2;
10008
+ exports._responsive = _responsive;
9845
10009
  exports.attemptFocus = attemptFocus;
9846
10010
  exports.createColorTheme = createColorTheme;
9847
- exports.fillCSSObject = fillCSSObject;
9848
10011
  exports.focusFirstDescendant = focusFirstDescendant;
9849
10012
  exports.focusLastDescendant = focusLastDescendant;
9850
- exports.getResponsiveProp = getResponsiveProp;
9851
- exports.getResponsiveSpace = getResponsiveSpace;
9852
10013
  exports.hexToRgb = hexToRgb;
9853
10014
  exports.hslToRgb = hslToRgb;
9854
10015
  exports.isFocusable = isFocusable;
@@ -9861,7 +10022,6 @@ exports.isHTMLTextAreaElement = isHTMLTextAreaElement;
9861
10022
  exports.multiply = multiply$1;
9862
10023
  exports.parseColor = parseColor;
9863
10024
  exports.rem = rem;
9864
- exports.responsive = responsive;
9865
10025
  exports.responsiveCodeFontStyle = responsiveCodeFontStyle;
9866
10026
  exports.responsiveHeadingFont = responsiveHeadingFont;
9867
10027
  exports.responsiveLabelFont = responsiveLabelFont;
@@ -9872,18 +10032,19 @@ exports.rgbToHsl = rgbToHsl;
9872
10032
  exports.rgba = rgba;
9873
10033
  exports.screen = screen$1;
9874
10034
  exports.studioTheme = studioTheme;
10035
+ exports.useArrayProp = useArrayProp;
9875
10036
  exports.useBoundaryElement = useBoundaryElement;
9876
10037
  exports.useClickOutside = useClickOutside;
9877
10038
  exports.useCustomValidity = useCustomValidity;
9878
10039
  exports.useDialog = useDialog;
9879
10040
  exports.useElementRect = useElementRect;
10041
+ exports.useElementSize = useElementSize;
9880
10042
  exports.useForwardedRef = useForwardedRef;
9881
10043
  exports.useGlobalKeyDown = useGlobalKeyDown;
9882
10044
  exports.useLayer = useLayer;
9883
10045
  exports.useMediaIndex = useMediaIndex;
9884
10046
  exports.usePortal = usePortal;
9885
10047
  exports.usePrefersDark = usePrefersDark;
9886
- exports.useResponsiveProp = useResponsiveProp;
9887
10048
  exports.useRootTheme = useRootTheme;
9888
10049
  exports.useTheme = useTheme;
9889
10050
  exports.useToast = useToast;