@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
@@ -1,12 +1,12 @@
1
1
  import { useId } from '@reach/auto-id';
2
- import React, { useState, useRef, useEffect, createContext, useContext, useMemo, useLayoutEffect, forwardRef, useCallback, cloneElement, isValidElement, createElement, useReducer, Children, Fragment, memo } from 'react';
2
+ import React, { useMemo, useState, useRef, useEffect, createContext, useContext, useLayoutEffect, forwardRef, useCallback, cloneElement, isValidElement, createElement, useReducer, Children, Fragment, memo } from 'react';
3
3
  import ReactIs, { isElement, isFragment, isValidElementType } from 'react-is';
4
4
  import styled, { ThemeProvider as ThemeProvider$1, useTheme as useTheme$1, css, keyframes } from 'styled-components';
5
+ import { ResizeObserver } from '@juggle/resize-observer';
5
6
  import { white as white$1, black as black$1, hues } from '@sanity/color';
6
7
  import { SpinnerIcon, CheckmarkIcon, RemoveIcon, SelectIcon, CloseIcon, ChevronDownIcon, ChevronRightIcon, ToggleArrowRightIcon } from '@sanity/icons';
7
8
  import Refractor from 'react-refractor';
8
9
  import { usePopper } from 'react-popper';
9
- import { ResizeObserver as ResizeObserver$1 } from '@juggle/resize-observer';
10
10
  import ReactDOM from 'react-dom';
11
11
  import maxSizeModifier from 'popper-max-size-modifier';
12
12
  import { AnimatePresence, motion } from 'framer-motion';
@@ -110,6 +110,215 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
110
110
  var EMPTY_ARRAY = [];
111
111
  var EMPTY_RECORD = {};
112
112
 
113
+ /**
114
+ * @internal
115
+ */
116
+
117
+ function _fillCSSObject(keys, value) {
118
+ return keys.reduce(function (style, key) {
119
+ style[key] = value;
120
+ return style;
121
+ }, {});
122
+ }
123
+ /**
124
+ * @public
125
+ */
126
+
127
+ function rem(pixelValue) {
128
+ if (pixelValue === 0) return 0;
129
+ return pixelValue / 16 + "rem";
130
+ }
131
+ /**
132
+ * @internal
133
+ */
134
+
135
+ function _responsive(media, values, callback) {
136
+ var statements = values.map(callback);
137
+ return statements.map(function (statement, mediaIndex) {
138
+ var _ref;
139
+
140
+ if (mediaIndex === 0) return statement;
141
+ return _ref = {}, _ref["@media screen and (min-width: " + media[mediaIndex - 1] + "px)"] = statement, _ref;
142
+ });
143
+ }
144
+ /**
145
+ * @internal
146
+ */
147
+
148
+ function _getArrayProp(val, defaultVal) {
149
+ if (val === undefined) return defaultVal || EMPTY_ARRAY;
150
+ return Array.isArray(val) ? val : [val];
151
+ }
152
+ /**
153
+ * @internal
154
+ */
155
+
156
+ function _getResponsiveSpace(theme, props, spaceIndexes) {
157
+ if (spaceIndexes === void 0) {
158
+ spaceIndexes = EMPTY_ARRAY;
159
+ }
160
+
161
+ if (!Array.isArray(spaceIndexes)) {
162
+ throw new Error('the property must be array of numbers');
163
+ }
164
+
165
+ if (spaceIndexes.length === 0) {
166
+ return null;
167
+ }
168
+
169
+ return _responsive(theme.sanity.media, spaceIndexes, function (spaceIndex) {
170
+ return _fillCSSObject(props, rem(theme.sanity.space[spaceIndex]));
171
+ });
172
+ }
173
+
174
+ /**
175
+ * A utility function getting responsive font styles.
176
+ * @internal
177
+ */
178
+
179
+ function responsiveFont(fontKey, props) {
180
+ var $size = props.$size,
181
+ $weight = props.$weight,
182
+ theme = props.theme;
183
+ var _theme$sanity = theme.sanity,
184
+ fonts = _theme$sanity.fonts,
185
+ media = _theme$sanity.media;
186
+ var _fonts$fontKey = fonts[fontKey],
187
+ family = _fonts$fontKey.family,
188
+ sizes = _fonts$fontKey.sizes,
189
+ weights = _fonts$fontKey.weights;
190
+ var fontWeight = $weight && weights[$weight] || weights.regular; // @todo: make this configurable
191
+
192
+ var defaultSize = sizes[2];
193
+ var base = {
194
+ position: 'relative',
195
+ fontFamily: family,
196
+ fontWeight: fontWeight,
197
+ padding: '1px 0',
198
+ margin: 0,
199
+ '&:before': {
200
+ content: '""',
201
+ display: 'block',
202
+ height: 0
203
+ },
204
+ '&:after': {
205
+ content: '""',
206
+ display: 'block',
207
+ height: 0
208
+ },
209
+ '& > code, & > span': {
210
+ display: 'block'
211
+ },
212
+ '&:not([hidden])': {
213
+ display: 'block'
214
+ }
215
+ };
216
+
217
+ var resp = _responsive(media, $size, function (sizeIndex) {
218
+ return fontSize(sizes[sizeIndex] || defaultSize);
219
+ });
220
+
221
+ return [base].concat(resp);
222
+ }
223
+ function fontSize(size) {
224
+ var ascenderHeight = size.ascenderHeight,
225
+ descenderHeight = size.descenderHeight,
226
+ fontSize = size.fontSize,
227
+ iconSize = size.iconSize,
228
+ letterSpacing = size.letterSpacing,
229
+ lineHeight = size.lineHeight;
230
+ var negHeight = ascenderHeight + descenderHeight;
231
+ var capHeight = lineHeight - negHeight;
232
+ var iconOffset = (capHeight - iconSize) / 2;
233
+ var customIconSize = Math.floor(fontSize * 1.125 / 2) * 2 + 1;
234
+ var customIconOffset = (capHeight - customIconSize) / 2;
235
+ return {
236
+ fontSize: rem(fontSize),
237
+ lineHeight: "calc(" + lineHeight + " / " + fontSize + ")",
238
+ letterSpacing: rem(letterSpacing),
239
+ transform: "translateY(" + rem(descenderHeight) + ")",
240
+ '&:before': {
241
+ marginTop: "calc(" + rem(0 - negHeight) + " - 1px)"
242
+ },
243
+ '&:after': {
244
+ marginBottom: '-1px'
245
+ },
246
+ '& svg:not([data-sanity-icon])': {
247
+ fontSize: "calc(" + customIconSize + " / 16 * 1rem)",
248
+ margin: rem(customIconOffset)
249
+ },
250
+ '& [data-sanity-icon]': {
251
+ fontSize: "calc(" + iconSize + " / 16 * 1rem)",
252
+ margin: rem(iconOffset)
253
+ }
254
+ };
255
+ }
256
+
257
+ /**
258
+ * Get responsive CSS for the `code` font style.
259
+ * @internal
260
+ */
261
+
262
+ function responsiveCodeFontStyle(props) {
263
+ return responsiveFont('code', props);
264
+ }
265
+
266
+ /**
267
+ * Get responsive CSS for the `heading` font style.
268
+ * @internal
269
+ */
270
+
271
+ function responsiveHeadingFont(props) {
272
+ return responsiveFont('heading', props);
273
+ }
274
+
275
+ /**
276
+ * Get responsive CSS for the `label` font style.
277
+ * @internal
278
+ */
279
+
280
+ function responsiveLabelFont(props) {
281
+ return responsiveFont('label', props);
282
+ }
283
+
284
+ /**
285
+ * Get responsive text align styles.
286
+ * @internal
287
+ */
288
+
289
+ function responsiveTextAlignStyle(props) {
290
+ var theme = props.theme;
291
+ return _responsive(theme.sanity.media, props.$align, function (textAlign) {
292
+ return {
293
+ textAlign: textAlign
294
+ };
295
+ });
296
+ }
297
+
298
+ /**
299
+ * Get responsive CSS for the `text` font style.
300
+ * @internal
301
+ */
302
+
303
+ function responsiveTextFont(props) {
304
+ return responsiveFont('text', props);
305
+ }
306
+
307
+ /**
308
+ * This API might change. DO NOT USE IN PRODUCTION.
309
+ * @beta
310
+ */
311
+
312
+ function useArrayProp(val, defaultVal) {
313
+ var __perf_hash__ = JSON.stringify(val != null ? val : defaultVal);
314
+
315
+ return useMemo(function () {
316
+ return _getArrayProp(val, defaultVal);
317
+ }, // Improve performance: Keep object identify for a given hash of the value
318
+ // eslint-disable-next-line react-hooks/exhaustive-deps
319
+ [__perf_hash__]);
320
+ }
321
+
113
322
  function _getElements(element, elementsArg) {
114
323
  var ret = [element];
115
324
 
@@ -211,26 +420,110 @@ function useClickOutside(listener, elementsArg, boundaryElement) {
211
420
  }
212
421
 
213
422
  /**
214
- * Subscribe to the rect of a DOM element.
423
+ * @internal
424
+ */
425
+
426
+ var _ResizeObserver = typeof window !== 'undefined' && window.ResizeObserver ? window.ResizeObserver : ResizeObserver;
427
+
428
+ // NOTE: this should NOT have size effects
429
+
430
+ /**
431
+ * @internal
432
+ */
433
+
434
+ var _elementSizeObserver = _createElementSizeObserver();
435
+
436
+ function _createElementRectValueListener() {
437
+ return {
438
+ subscribe: function subscribe(element, subscriber) {
439
+ var resizeObserver = new _ResizeObserver(function (_ref) {
440
+ var entry = _ref[0];
441
+ subscriber({
442
+ _contentRect: entry.contentRect,
443
+ border: {
444
+ width: entry.borderBoxSize[0].inlineSize,
445
+ height: entry.borderBoxSize[0].blockSize
446
+ },
447
+ content: {
448
+ width: entry.contentRect.width,
449
+ height: entry.contentRect.height
450
+ }
451
+ });
452
+ });
453
+ resizeObserver.observe(element);
454
+ return function () {
455
+ resizeObserver.unobserve(element);
456
+ resizeObserver.disconnect();
457
+ };
458
+ }
459
+ };
460
+ }
461
+
462
+ function _createElementSizeObserver() {
463
+ var disposeCache = new WeakMap();
464
+ var subscribersCache = new WeakMap();
465
+ return {
466
+ subscribe: function subscribe(element, subscriber) {
467
+ var subscribers = subscribersCache.get(element) || [];
468
+ var dispose = disposeCache.get(element);
469
+
470
+ if (!subscribersCache.has(element)) {
471
+ subscribersCache.set(element, subscribers);
472
+
473
+ var listener = _createElementRectValueListener(); // listen
474
+
475
+
476
+ dispose = listener.subscribe(element, function (elementRect) {
477
+ for (var _iterator = _createForOfIteratorHelperLoose(subscribers), _step; !(_step = _iterator()).done;) {
478
+ var sub = _step.value;
479
+ sub(elementRect);
480
+ }
481
+ });
482
+ }
483
+
484
+ subscribers.push(subscriber);
485
+ return function () {
486
+ // dispose
487
+ var idx = subscribers.indexOf(subscriber);
488
+
489
+ if (idx > -1) {
490
+ subscribers.splice(idx, 1);
491
+ }
492
+
493
+ if (subscribers.length === 0) {
494
+ // unlisten
495
+ if (dispose) dispose();
496
+ }
497
+ };
498
+ }
499
+ };
500
+ }
501
+
502
+ /**
503
+ * Subscribe to the size of a DOM element.
215
504
  * @beta
216
505
  */
217
506
 
218
- function useElementRect(element) {
507
+ function useElementSize(element) {
219
508
  var _useState = useState(null),
220
- rect = _useState[0],
221
- setRect = _useState[1];
509
+ size = _useState[0],
510
+ setSize = _useState[1];
222
511
 
223
512
  useEffect(function () {
224
513
  if (!element) return undefined;
225
- var ro = new ResizeObserver(function (entries) {
226
- setRect(entries[0].contentRect);
227
- });
228
- ro.observe(element);
229
- return function () {
230
- return ro.disconnect();
231
- };
514
+ return _elementSizeObserver.subscribe(element, setSize);
232
515
  }, [element]);
233
- return rect;
516
+ return size;
517
+ }
518
+
519
+ /**
520
+ * Subscribe to the rect of a DOM element.
521
+ * @deprecated Use `useElementSize` instead
522
+ */
523
+
524
+ function useElementRect(element) {
525
+ var elementSize = useElementSize(element);
526
+ return (elementSize == null ? void 0 : elementSize._contentRect) || null;
234
527
  }
235
528
 
236
529
  /**
@@ -1682,18 +1975,20 @@ var color = createColorTheme({
1682
1975
  name = _ref.name;
1683
1976
 
1684
1977
  if (name === 'default') {
1685
- var _skeletonFrom = dark ? hues.gray[900].hex : hues.gray[100].hex;
1978
+ var _tints = hues.gray;
1979
+
1980
+ var _skeletonFrom = dark ? _tints[900].hex : _tints[100].hex;
1686
1981
 
1687
1982
  return {
1688
1983
  fg: dark ? white$1.hex : black$1.hex,
1689
1984
  bg: dark ? black$1.hex : white$1.hex,
1690
- border: hues.gray[dark ? 800 : 200].hex,
1985
+ border: _tints[dark ? 800 : 200].hex,
1691
1986
  focusRing: hues.blue[dark ? 500 : 500].hex,
1692
1987
  shadow: {
1693
- outline: rgba(hues.gray[500].hex, 0.4),
1694
- umbra: rgba(dark ? black$1.hex : hues.gray[500].hex, 0.2),
1695
- penumbra: rgba(dark ? black$1.hex : hues.gray[500].hex, 0.14),
1696
- ambient: rgba(dark ? black$1.hex : hues.gray[500].hex, 0.12)
1988
+ outline: rgba(_tints[500].hex, 0.4),
1989
+ umbra: dark ? rgba(_tints[950].hex, 0.4) : rgba(_tints[500].hex, 0.2),
1990
+ penumbra: dark ? rgba(_tints[950].hex, 0.28) : rgba(_tints[500].hex, 0.14),
1991
+ ambient: dark ? rgba(_tints[950].hex, 0.24) : rgba(_tints[500].hex, 0.12)
1697
1992
  },
1698
1993
  skeleton: {
1699
1994
  from: _skeletonFrom,
@@ -1703,18 +1998,18 @@ var color = createColorTheme({
1703
1998
  }
1704
1999
 
1705
2000
  if (name === 'transparent') {
1706
- var _tints = tones["default"];
1707
- var _skeletonFrom2 = _tints[dark ? 800 : 200].hex;
2001
+ var _tints2 = tones["default"];
2002
+ var _skeletonFrom2 = _tints2[dark ? 800 : 200].hex;
1708
2003
  return {
1709
- fg: _tints[dark ? 100 : 900].hex,
1710
- bg: _tints[dark ? 950 : 50].hex,
1711
- border: _tints[dark ? 800 : 300].hex,
2004
+ fg: _tints2[dark ? 100 : 900].hex,
2005
+ bg: _tints2[dark ? 950 : 50].hex,
2006
+ border: _tints2[dark ? 800 : 300].hex,
1712
2007
  focusRing: hues.blue[500].hex,
1713
2008
  shadow: {
1714
- outline: rgba(_tints[500].hex, dark ? 0.2 : 0.4),
1715
- umbra: rgba(dark ? black$1.hex : _tints[500].hex, 0.2),
1716
- penumbra: rgba(dark ? black$1.hex : _tints[500].hex, 0.14),
1717
- ambient: rgba(dark ? black$1.hex : _tints[500].hex, 0.12)
2009
+ outline: rgba(_tints2[500].hex, 0.4),
2010
+ umbra: dark ? rgba(_tints2[900].hex, 0.4) : rgba(_tints2[500].hex, 0.2),
2011
+ penumbra: dark ? rgba(_tints2[900].hex, 0.28) : rgba(_tints2[500].hex, 0.14),
2012
+ ambient: dark ? rgba(_tints2[900].hex, 0.24) : rgba(_tints2[500].hex, 0.12)
1718
2013
  },
1719
2014
  skeleton: {
1720
2015
  from: _skeletonFrom2,
@@ -1731,10 +2026,10 @@ var color = createColorTheme({
1731
2026
  border: tints[dark ? 800 : 200].hex,
1732
2027
  focusRing: tints[500].hex,
1733
2028
  shadow: {
1734
- outline: rgba(tints[500].hex, dark ? 0.2 : 0.4),
1735
- umbra: rgba(dark ? black$1.hex : tints[500].hex, 0.2),
1736
- penumbra: rgba(dark ? black$1.hex : tints[500].hex, 0.14),
1737
- ambient: rgba(dark ? black$1.hex : tints[500].hex, 0.12)
2029
+ outline: rgba(tints[500].hex, 0.4),
2030
+ umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),
2031
+ penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),
2032
+ ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12)
1738
2033
  },
1739
2034
  skeleton: {
1740
2035
  from: skeletonFrom,
@@ -2400,15 +2695,15 @@ var fonts = {
2400
2695
  lineHeight: 33,
2401
2696
  letterSpacing: 0
2402
2697
  }, {
2403
- ascenderHeight: 9,
2404
- descenderHeight: 7,
2698
+ ascenderHeight: 8,
2699
+ descenderHeight: 8,
2405
2700
  fontSize: 33,
2406
2701
  iconSize: 49,
2407
2702
  lineHeight: 39,
2408
2703
  letterSpacing: 0
2409
2704
  }, {
2410
- ascenderHeight: 10,
2411
- descenderHeight: 8,
2705
+ ascenderHeight: 9,
2706
+ descenderHeight: 9,
2412
2707
  fontSize: 38,
2413
2708
  iconSize: 53,
2414
2709
  lineHeight: 45,
@@ -2796,329 +3091,126 @@ function _createMediaManager(media) {
2796
3091
  }
2797
3092
  });
2798
3093
  };
2799
-
2800
- for (var _iterator2 = _createForOfIteratorHelperLoose(sizes), _step2; !(_step2 = _iterator2()).done;) {
2801
- _loop();
2802
- }
2803
-
2804
- return function () {
2805
- for (var _iterator3 = _createForOfIteratorHelperLoose(disposeFns), _step3; !(_step3 = _iterator3()).done;) {
2806
- var disposeFn = _step3.value;
2807
- disposeFn();
2808
- }
2809
- };
2810
- };
2811
-
2812
- return {
2813
- getCurrentIndex: getCurrentIndex,
2814
- subscribe: subscribe
2815
- };
2816
- }
2817
- /**
2818
- * @internal
2819
- */
2820
-
2821
-
2822
- function _getMediaManager(media) {
2823
- var manager = MEDIA_MANAGER_CACHE.get(media);
2824
-
2825
- if (!manager) {
2826
- manager = _createMediaManager(media);
2827
- MEDIA_MANAGER_CACHE.set(media, manager);
2828
- }
2829
-
2830
- return manager;
2831
- }
2832
-
2833
- /**
2834
- * This API might change. DO NOT USE IN PRODUCTION.
2835
- * @beta
2836
- */
2837
-
2838
- function useMediaIndex() {
2839
- var theme = useTheme();
2840
- var media = theme.sanity.media;
2841
- var manager = useMemo(function () {
2842
- return _getMediaManager(media);
2843
- }, [media]);
2844
-
2845
- var _useState = useState(manager.getCurrentIndex),
2846
- index = _useState[0],
2847
- setIndex = _useState[1];
2848
-
2849
- useEffect(function () {
2850
- return manager.subscribe(setIndex);
2851
- }, [manager]);
2852
- return index;
2853
- }
2854
-
2855
- /**
2856
- * @public
2857
- */
2858
-
2859
- function usePrefersDark() {
2860
- var mq = useMemo(function () {
2861
- if (typeof window === 'undefined') return undefined;
2862
- return window.matchMedia('(prefers-color-scheme: dark)');
2863
- }, []);
2864
-
2865
- var _useState = useState((mq == null ? void 0 : mq.matches) || false),
2866
- dark = _useState[0],
2867
- setDark = _useState[1];
2868
-
2869
- useEffect(function () {
2870
- if (!mq) return undefined;
2871
- setDark(mq.matches);
2872
-
2873
- var handleChange = function handleChange() {
2874
- return setDark(mq.matches);
2875
- };
2876
-
2877
- mq.addEventListener('change', handleChange);
2878
- return function () {
2879
- return mq.removeEventListener('change', handleChange);
2880
- };
2881
- }, [mq]);
2882
- return dark;
2883
- }
2884
-
2885
- /**
2886
- * @beta
2887
- */
2888
-
2889
- var useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;
2890
-
2891
- /**
2892
- * @beta
2893
- */
2894
-
2895
- function useForwardedRef(ref) {
2896
- var innerRef = useRef(null);
2897
- useIsomorphicEffect(function () {
2898
- if (!ref) return;
2899
-
2900
- if (typeof ref === 'function') {
2901
- ref(innerRef.current);
2902
- } else {
2903
- ref.current = innerRef.current;
2904
- }
2905
- });
2906
- return innerRef;
2907
- }
2908
-
2909
- /**
2910
- * @beta
2911
- */
2912
-
2913
- function useCustomValidity(ref, customValidity) {
2914
- useEffect(function () {
2915
- if (ref.current) {
2916
- ref.current.setCustomValidity(customValidity || '');
2917
- }
2918
- }, [customValidity, ref]);
2919
- }
2920
-
2921
- /**
2922
- * @internal
2923
- */
2924
-
2925
- function fillCSSObject(propKeys, value) {
2926
- return propKeys.reduce(function (obj, propKey) {
2927
- obj[propKey] = value;
2928
- return obj;
2929
- }, {});
2930
- }
2931
- /**
2932
- * @public
2933
- */
2934
-
2935
- function rem(pixelValue) {
2936
- if (pixelValue === 0) return 0;
2937
- return pixelValue / 16 + "rem";
2938
- }
2939
- /**
2940
- * @internal
2941
- */
2942
-
2943
- function responsive(media, values, callback) {
2944
- var statements = values.map(callback);
2945
- return statements.map(function (statement, mediaIndex) {
2946
- var _ref;
2947
-
2948
- if (mediaIndex === 0) return statement;
2949
- return _ref = {}, _ref["@media screen and (min-width: " + media[mediaIndex - 1] + "px)"] = statement, _ref;
2950
- });
2951
- }
2952
- /**
2953
- * @internal
2954
- */
2955
-
2956
- function getResponsiveProp(val, defaultVal) {
2957
- if (val === undefined) return defaultVal || EMPTY_ARRAY;
2958
- return Array.isArray(val) ? val : [val];
2959
- }
2960
- /**
2961
- * @internal
2962
- */
2963
-
2964
- function getResponsiveSpace(theme, props, spaceIndexes) {
2965
- if (spaceIndexes === void 0) {
2966
- spaceIndexes = EMPTY_ARRAY;
2967
- }
2968
-
2969
- if (!Array.isArray(spaceIndexes)) {
2970
- throw new Error('the property must be array of numbers');
2971
- }
2972
-
2973
- if (spaceIndexes.length === 0) {
2974
- return null;
2975
- }
2976
-
2977
- return responsive(theme.sanity.media, spaceIndexes, function (spaceIndex) {
2978
- return fillCSSObject(props, rem(theme.sanity.space[spaceIndex]));
2979
- });
2980
- }
2981
-
2982
- /**
2983
- * A utility function getting responsive font styles.
2984
- * @internal
2985
- */
2986
-
2987
- function responsiveFont(fontKey, props) {
2988
- var $size = props.$size,
2989
- $weight = props.$weight,
2990
- theme = props.theme;
2991
- var _theme$sanity = theme.sanity,
2992
- fonts = _theme$sanity.fonts,
2993
- media = _theme$sanity.media;
2994
- var _fonts$fontKey = fonts[fontKey],
2995
- family = _fonts$fontKey.family,
2996
- sizes = _fonts$fontKey.sizes,
2997
- weights = _fonts$fontKey.weights;
2998
- var fontWeight = $weight && weights[$weight] || weights.regular; // @todo: make this configurable
2999
-
3000
- var defaultSize = sizes[2];
3001
- var base = {
3002
- position: 'relative',
3003
- fontFamily: family,
3004
- fontWeight: fontWeight,
3005
- padding: '1px 0',
3006
- margin: 0,
3007
- '&:before': {
3008
- content: '""',
3009
- display: 'block',
3010
- height: 0
3011
- },
3012
- '&:after': {
3013
- content: '""',
3014
- display: 'block',
3015
- height: 0
3016
- },
3017
- '& > code, & > span': {
3018
- display: 'block'
3019
- },
3020
- '&:not([hidden])': {
3021
- display: 'block'
3094
+
3095
+ for (var _iterator2 = _createForOfIteratorHelperLoose(sizes), _step2; !(_step2 = _iterator2()).done;) {
3096
+ _loop();
3022
3097
  }
3098
+
3099
+ return function () {
3100
+ for (var _iterator3 = _createForOfIteratorHelperLoose(disposeFns), _step3; !(_step3 = _iterator3()).done;) {
3101
+ var disposeFn = _step3.value;
3102
+ disposeFn();
3103
+ }
3104
+ };
3023
3105
  };
3024
- var resp = responsive(media, getResponsiveProp($size), function (sizeIndex) {
3025
- return fontSize(sizes[sizeIndex] || defaultSize);
3026
- });
3027
- return [base].concat(resp);
3028
- }
3029
- function fontSize(size) {
3030
- var ascenderHeight = size.ascenderHeight,
3031
- descenderHeight = size.descenderHeight,
3032
- fontSize = size.fontSize,
3033
- iconSize = size.iconSize,
3034
- letterSpacing = size.letterSpacing,
3035
- lineHeight = size.lineHeight;
3036
- var negHeight = ascenderHeight + descenderHeight;
3037
- var capHeight = lineHeight - negHeight;
3038
- var iconOffset = (capHeight - iconSize) / 2;
3039
- var customIconSize = Math.floor(fontSize * 1.125 / 2) * 2 + 1;
3040
- var customIconOffset = (capHeight - customIconSize) / 2;
3106
+
3041
3107
  return {
3042
- fontSize: rem(fontSize),
3043
- lineHeight: "calc(" + lineHeight + " / " + fontSize + ")",
3044
- letterSpacing: rem(letterSpacing),
3045
- transform: "translateY(" + rem(descenderHeight) + ")",
3046
- '&:before': {
3047
- marginTop: "calc(" + rem(0 - negHeight) + " - 1px)"
3048
- },
3049
- '&:after': {
3050
- marginBottom: '-1px'
3051
- },
3052
- '& svg:not([data-sanity-icon])': {
3053
- fontSize: "calc(" + customIconSize + " / 16 * 1rem)",
3054
- margin: rem(customIconOffset)
3055
- },
3056
- '& [data-sanity-icon]': {
3057
- fontSize: "calc(" + iconSize + " / 16 * 1rem)",
3058
- margin: rem(iconOffset)
3059
- }
3108
+ getCurrentIndex: getCurrentIndex,
3109
+ subscribe: subscribe
3060
3110
  };
3061
3111
  }
3062
-
3063
3112
  /**
3064
- * Get responsive CSS for the `code` font style.
3065
3113
  * @internal
3066
3114
  */
3067
3115
 
3068
- function responsiveCodeFontStyle(props) {
3069
- return responsiveFont('code', props);
3116
+
3117
+ function _getMediaManager(media) {
3118
+ var manager = MEDIA_MANAGER_CACHE.get(media);
3119
+
3120
+ if (!manager) {
3121
+ manager = _createMediaManager(media);
3122
+ MEDIA_MANAGER_CACHE.set(media, manager);
3123
+ }
3124
+
3125
+ return manager;
3070
3126
  }
3071
3127
 
3072
3128
  /**
3073
- * Get responsive CSS for the `heading` font style.
3074
- * @internal
3129
+ * This API might change. DO NOT USE IN PRODUCTION.
3130
+ * @beta
3075
3131
  */
3076
3132
 
3077
- function responsiveHeadingFont(props) {
3078
- return responsiveFont('heading', props);
3133
+ function useMediaIndex() {
3134
+ var theme = useTheme();
3135
+ var media = theme.sanity.media;
3136
+ var manager = useMemo(function () {
3137
+ return _getMediaManager(media);
3138
+ }, [media]);
3139
+
3140
+ var _useState = useState(manager.getCurrentIndex),
3141
+ index = _useState[0],
3142
+ setIndex = _useState[1];
3143
+
3144
+ useEffect(function () {
3145
+ return manager.subscribe(setIndex);
3146
+ }, [manager]);
3147
+ return index;
3079
3148
  }
3080
3149
 
3081
3150
  /**
3082
- * Get responsive CSS for the `label` font style.
3083
- * @internal
3151
+ * @public
3084
3152
  */
3085
3153
 
3086
- function responsiveLabelFont(props) {
3087
- return responsiveFont('label', props);
3154
+ function usePrefersDark() {
3155
+ var mq = useMemo(function () {
3156
+ if (typeof window === 'undefined') return undefined;
3157
+ return window.matchMedia('(prefers-color-scheme: dark)');
3158
+ }, []);
3159
+
3160
+ var _useState = useState((mq == null ? void 0 : mq.matches) || false),
3161
+ dark = _useState[0],
3162
+ setDark = _useState[1];
3163
+
3164
+ useEffect(function () {
3165
+ if (!mq) return undefined;
3166
+ setDark(mq.matches);
3167
+
3168
+ var handleChange = function handleChange() {
3169
+ return setDark(mq.matches);
3170
+ };
3171
+
3172
+ mq.addEventListener('change', handleChange);
3173
+ return function () {
3174
+ return mq.removeEventListener('change', handleChange);
3175
+ };
3176
+ }, [mq]);
3177
+ return dark;
3088
3178
  }
3089
3179
 
3090
3180
  /**
3091
- * Get responsive text align styles.
3092
- * @internal
3181
+ * @beta
3093
3182
  */
3094
3183
 
3095
- function responsiveTextAlignStyle(props) {
3096
- var theme = props.theme;
3097
- return responsive(theme.sanity.media, getResponsiveProp(props.$align), function (textAlign) {
3098
- return {
3099
- textAlign: textAlign
3100
- };
3101
- });
3102
- }
3184
+ var useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;
3103
3185
 
3104
3186
  /**
3105
- * Get responsive CSS for the `text` font style.
3106
- * @internal
3187
+ * @beta
3107
3188
  */
3108
3189
 
3109
- function responsiveTextFont(props) {
3110
- return responsiveFont('text', props);
3190
+ function useForwardedRef(ref) {
3191
+ var innerRef = useRef(null);
3192
+ useIsomorphicEffect(function () {
3193
+ if (!ref) return;
3194
+
3195
+ if (typeof ref === 'function') {
3196
+ ref(innerRef.current);
3197
+ } else {
3198
+ ref.current = innerRef.current;
3199
+ }
3200
+ });
3201
+ return innerRef;
3111
3202
  }
3112
3203
 
3113
3204
  /**
3114
- * This API might change. DO NOT USE IN PRODUCTION.
3115
3205
  * @beta
3116
3206
  */
3117
3207
 
3118
- function useResponsiveProp(val, defaultVal) {
3119
- return useMemo(function () {
3120
- return getResponsiveProp(val, defaultVal);
3121
- }, [defaultVal, val]);
3208
+ function useCustomValidity(ref, customValidity) {
3209
+ useEffect(function () {
3210
+ if (ref.current) {
3211
+ ref.current.setCustomValidity(customValidity || '');
3212
+ }
3213
+ }, [customValidity, ref]);
3122
3214
  }
3123
3215
 
3124
3216
  var BORDER_VALUE = '1px solid var(--card-border-color)';
@@ -3129,7 +3221,7 @@ function responsiveBorderStyle() {
3129
3221
  function border(props) {
3130
3222
  var theme = props.theme;
3131
3223
  var media = theme.sanity.media;
3132
- return responsive(media, getResponsiveProp(props.$border), function (value) {
3224
+ return _responsive(media, props.$border, function (value) {
3133
3225
  return value ? {
3134
3226
  '&&': {
3135
3227
  border: BORDER_VALUE
@@ -3145,7 +3237,7 @@ function border(props) {
3145
3237
  function borderTop(props) {
3146
3238
  var theme = props.theme;
3147
3239
  var media = theme.sanity.media;
3148
- return responsive(media, getResponsiveProp(props.$borderTop), function (value) {
3240
+ return _responsive(media, props.$borderTop, function (value) {
3149
3241
  return value ? {
3150
3242
  '&&': {
3151
3243
  borderTop: BORDER_VALUE
@@ -3161,7 +3253,7 @@ function borderTop(props) {
3161
3253
  function borderRight(props) {
3162
3254
  var theme = props.theme;
3163
3255
  var media = theme.sanity.media;
3164
- return responsive(media, getResponsiveProp(props.$borderRight), function (value) {
3256
+ return _responsive(media, props.$borderRight, function (value) {
3165
3257
  return value ? {
3166
3258
  '&&': {
3167
3259
  borderRight: BORDER_VALUE
@@ -3177,7 +3269,7 @@ function borderRight(props) {
3177
3269
  function borderBottom(props) {
3178
3270
  var theme = props.theme;
3179
3271
  var media = theme.sanity.media;
3180
- return responsive(media, getResponsiveProp(props.$borderBottom), function (value) {
3272
+ return _responsive(media, props.$borderBottom, function (value) {
3181
3273
  return value ? {
3182
3274
  '&&': {
3183
3275
  borderBottom: BORDER_VALUE
@@ -3193,7 +3285,7 @@ function borderBottom(props) {
3193
3285
  function borderLeft(props) {
3194
3286
  var theme = props.theme;
3195
3287
  var media = theme.sanity.media;
3196
- return responsive(media, getResponsiveProp(props.$borderLeft), function (value) {
3288
+ return _responsive(media, props.$borderLeft, function (value) {
3197
3289
  return value ? {
3198
3290
  '&&': {
3199
3291
  borderLeft: BORDER_VALUE
@@ -3229,7 +3321,7 @@ function responsiveBoxStyle() {
3229
3321
  function responsiveBoxDisplayStyle(props) {
3230
3322
  var theme = props.theme;
3231
3323
  var media = theme.sanity.media;
3232
- return responsive(media, getResponsiveProp(props.$display), function (display) {
3324
+ return _responsive(media, props.$display, function (display) {
3233
3325
  return {
3234
3326
  '&:not([hidden])': {
3235
3327
  display: display
@@ -3241,7 +3333,7 @@ function responsiveBoxDisplayStyle(props) {
3241
3333
  function responsiveBoxSizingStyle(props) {
3242
3334
  var theme = props.theme;
3243
3335
  var media = theme.sanity.media;
3244
- return responsive(media, getResponsiveProp(props.$sizing), function (sizing) {
3336
+ return _responsive(media, props.$sizing, function (sizing) {
3245
3337
  return {
3246
3338
  boxSizing: BOX_SIZING[sizing]
3247
3339
  };
@@ -3251,7 +3343,7 @@ function responsiveBoxSizingStyle(props) {
3251
3343
  function responsiveBoxHeightStyle(props) {
3252
3344
  var theme = props.theme;
3253
3345
  var media = theme.sanity.media;
3254
- return responsive(media, getResponsiveProp(props.$height), function (height) {
3346
+ return _responsive(media, props.$height, function (height) {
3255
3347
  return {
3256
3348
  height: BOX_HEIGHT[height]
3257
3349
  };
@@ -3261,7 +3353,7 @@ function responsiveBoxHeightStyle(props) {
3261
3353
  function responsiveBoxOverflowStyle(props) {
3262
3354
  var theme = props.theme;
3263
3355
  var media = theme.sanity.media;
3264
- return responsive(media, getResponsiveProp(props.$overflow), function (overflow) {
3356
+ return _responsive(media, props.$overflow, function (overflow) {
3265
3357
  return {
3266
3358
  overflow: overflow
3267
3359
  };
@@ -3279,7 +3371,7 @@ function responsiveFlexStyle() {
3279
3371
  function responsiveFlexAlignStyle(props) {
3280
3372
  var theme = props.theme;
3281
3373
  var media = theme.sanity.media;
3282
- return responsive(media, getResponsiveProp(props.$align), function (align) {
3374
+ return _responsive(media, props.$align, function (align) {
3283
3375
  return {
3284
3376
  alignItems: align
3285
3377
  };
@@ -3291,7 +3383,7 @@ function responsiveFlexGapStyle(props) {
3291
3383
  var _theme$sanity = theme.sanity,
3292
3384
  media = _theme$sanity.media,
3293
3385
  space = _theme$sanity.space;
3294
- return responsive(media, getResponsiveProp(props.$gap), function (gap) {
3386
+ return _responsive(media, props.$gap, function (gap) {
3295
3387
  return {
3296
3388
  gap: gap ? rem(space[gap]) : undefined
3297
3389
  };
@@ -3301,7 +3393,7 @@ function responsiveFlexGapStyle(props) {
3301
3393
  function responsiveFlexWrapStyle(props) {
3302
3394
  var theme = props.theme;
3303
3395
  var media = theme.sanity.media;
3304
- return responsive(media, getResponsiveProp(props.$wrap), function (wrap) {
3396
+ return _responsive(media, props.$wrap, function (wrap) {
3305
3397
  return {
3306
3398
  flexWrap: wrap
3307
3399
  };
@@ -3310,7 +3402,7 @@ function responsiveFlexWrapStyle(props) {
3310
3402
  function responsiveFlexJustifyStyle(props) {
3311
3403
  var theme = props.theme;
3312
3404
  var media = theme.sanity.media;
3313
- return responsive(media, getResponsiveProp(props.$justify), function (justify) {
3405
+ return _responsive(media, props.$justify, function (justify) {
3314
3406
  return {
3315
3407
  justifyContent: justify
3316
3408
  };
@@ -3319,7 +3411,7 @@ function responsiveFlexJustifyStyle(props) {
3319
3411
  function responsiveFlexDirectionStyle(props) {
3320
3412
  var theme = props.theme;
3321
3413
  var media = theme.sanity.media;
3322
- return responsive(media, getResponsiveProp(props.$direction), function (direction) {
3414
+ return _responsive(media, props.$direction, function (direction) {
3323
3415
  return {
3324
3416
  flexDirection: direction
3325
3417
  };
@@ -3336,7 +3428,8 @@ function flexItemStyle() {
3336
3428
  function responsiveFlexItemStyle(props) {
3337
3429
  var theme = props.theme;
3338
3430
  var media = theme.sanity.media;
3339
- return responsive(media, getResponsiveProp(props.$flex), function (flex) {
3431
+ if (!props.$flex) return EMPTY_ARRAY;
3432
+ return _responsive(media, props.$flex, function (flex) {
3340
3433
  return {
3341
3434
  flex: flex
3342
3435
  };
@@ -3383,7 +3476,7 @@ function responsiveGridStyle() {
3383
3476
  function responsiveGridAutoFlowStyle(props) {
3384
3477
  var theme = props.theme;
3385
3478
  var media = theme.sanity.media;
3386
- return responsive(media, getResponsiveProp(props.$autoFlow), function (autoFlow) {
3479
+ return _responsive(media, props.$autoFlow, function (autoFlow) {
3387
3480
  return {
3388
3481
  gridAutoFlow: autoFlow
3389
3482
  };
@@ -3393,7 +3486,7 @@ function responsiveGridAutoFlowStyle(props) {
3393
3486
  function responsiveGridAutoRowsStyle(props) {
3394
3487
  var theme = props.theme;
3395
3488
  var media = theme.sanity.media;
3396
- return responsive(media, getResponsiveProp(props.$autoRows), function (autoRows) {
3489
+ return _responsive(media, props.$autoRows, function (autoRows) {
3397
3490
  return {
3398
3491
  gridAutoRows: autoRows && GRID_AUTO_ROWS[autoRows]
3399
3492
  };
@@ -3403,7 +3496,7 @@ function responsiveGridAutoRowsStyle(props) {
3403
3496
  function responsiveGridAutoColsStyle(props) {
3404
3497
  var theme = props.theme;
3405
3498
  var media = theme.sanity.media;
3406
- return responsive(media, getResponsiveProp(props.$autoCols), function (autoCols) {
3499
+ return _responsive(media, props.$autoCols, function (autoCols) {
3407
3500
  return {
3408
3501
  gridAutoColumns: autoCols && GRID_AUTO_COLUMS[autoCols]
3409
3502
  };
@@ -3413,7 +3506,7 @@ function responsiveGridAutoColsStyle(props) {
3413
3506
  function responsiveGridColumnsStyle(props) {
3414
3507
  var theme = props.theme;
3415
3508
  var media = theme.sanity.media;
3416
- return responsive(media, getResponsiveProp(props.$columns), function (columns) {
3509
+ return _responsive(media, props.$columns, function (columns) {
3417
3510
  return {
3418
3511
  gridTemplateColumns: columns && "repeat(" + columns + ",minmax(0,1fr));"
3419
3512
  };
@@ -3423,7 +3516,7 @@ function responsiveGridColumnsStyle(props) {
3423
3516
  function responsiveGridRowsStyle(props) {
3424
3517
  var theme = props.theme;
3425
3518
  var media = theme.sanity.media;
3426
- return responsive(media, getResponsiveProp(props.$rows), function (rows) {
3519
+ return _responsive(media, props.$rows, function (rows) {
3427
3520
  return {
3428
3521
  gridTemplateRows: rows && "repeat(" + rows + ",minmax(0,1fr));"
3429
3522
  };
@@ -3435,7 +3528,7 @@ function responsiveGridGapStyle(props) {
3435
3528
  var _theme$sanity = theme.sanity,
3436
3529
  media = _theme$sanity.media,
3437
3530
  space = _theme$sanity.space;
3438
- return responsive(media, getResponsiveProp(props.$gap), function (gap) {
3531
+ return _responsive(media, props.$gap, function (gap) {
3439
3532
  return {
3440
3533
  gridGap: gap ? rem(space[gap]) : undefined
3441
3534
  };
@@ -3447,7 +3540,7 @@ function responsiveGridGapXStyle(props) {
3447
3540
  var _theme$sanity2 = theme.sanity,
3448
3541
  media = _theme$sanity2.media,
3449
3542
  space = _theme$sanity2.space;
3450
- return responsive(media, getResponsiveProp(props.$gapX), function (gapX) {
3543
+ return _responsive(media, props.$gapX, function (gapX) {
3451
3544
  return {
3452
3545
  columnGap: gapX ? rem(space[gapX]) : undefined
3453
3546
  };
@@ -3459,7 +3552,7 @@ function responsiveGridGapYStyle(props) {
3459
3552
  var _theme$sanity3 = theme.sanity,
3460
3553
  media = _theme$sanity3.media,
3461
3554
  space = _theme$sanity3.space;
3462
- return responsive(media, getResponsiveProp(props.$gapY), function (gapY) {
3555
+ return _responsive(media, props.$gapY, function (gapY) {
3463
3556
  return {
3464
3557
  rowGap: gapY ? rem(space[gapY]) : undefined
3465
3558
  };
@@ -3481,7 +3574,7 @@ var GRID_ITEM_COLUMN = {
3481
3574
  function responsiveGridItemRowStyle(props) {
3482
3575
  var theme = props.theme;
3483
3576
  var media = theme.sanity.media;
3484
- return responsive(media, getResponsiveProp(props.$row), function (row) {
3577
+ return _responsive(media, props.$row, function (row) {
3485
3578
  if (typeof row === 'number') {
3486
3579
  return {
3487
3580
  gridRow: "span " + row + " / span " + row
@@ -3497,7 +3590,7 @@ function responsiveGridItemRowStyle(props) {
3497
3590
  function responsiveGridItemRowStartStyle(props) {
3498
3591
  var theme = props.theme;
3499
3592
  var media = theme.sanity.media;
3500
- return responsive(media, getResponsiveProp(props.$rowStart), function (rowStart) {
3593
+ return _responsive(media, props.$rowStart, function (rowStart) {
3501
3594
  return {
3502
3595
  gridRowStart: rowStart
3503
3596
  };
@@ -3507,7 +3600,7 @@ function responsiveGridItemRowStartStyle(props) {
3507
3600
  function responsiveGridItemRowEndStyle(props) {
3508
3601
  var theme = props.theme;
3509
3602
  var media = theme.sanity.media;
3510
- return responsive(media, getResponsiveProp(props.$rowEnd), function (rowEnd) {
3603
+ return _responsive(media, props.$rowEnd, function (rowEnd) {
3511
3604
  return {
3512
3605
  gridRowEnd: rowEnd
3513
3606
  };
@@ -3517,7 +3610,7 @@ function responsiveGridItemRowEndStyle(props) {
3517
3610
  function responsiveGridItemColumnStyle(props) {
3518
3611
  var theme = props.theme;
3519
3612
  var media = theme.sanity.media;
3520
- return responsive(media, getResponsiveProp(props.$column), function (column) {
3613
+ return _responsive(media, props.$column, function (column) {
3521
3614
  if (typeof column === 'number') {
3522
3615
  return {
3523
3616
  gridColumn: "span " + column + " / span " + column
@@ -3533,7 +3626,7 @@ function responsiveGridItemColumnStyle(props) {
3533
3626
  function responsiveGridItemColumnStartStyle(props) {
3534
3627
  var theme = props.theme;
3535
3628
  var media = theme.sanity.media;
3536
- return responsive(media, getResponsiveProp(props.$columnStart), function (columnStart) {
3629
+ return _responsive(media, props.$columnStart, function (columnStart) {
3537
3630
  return {
3538
3631
  gridColumnStart: columnStart
3539
3632
  };
@@ -3543,7 +3636,7 @@ function responsiveGridItemColumnStartStyle(props) {
3543
3636
  function responsiveGridItemColumnEndStyle(props) {
3544
3637
  var theme = props.theme;
3545
3638
  var media = theme.sanity.media;
3546
- return responsive(media, getResponsiveProp(props.$columnEnd), function (columnEnd) {
3639
+ return _responsive(media, props.$columnEnd, function (columnEnd) {
3547
3640
  return {
3548
3641
  gridColumnEnd: columnEnd
3549
3642
  };
@@ -3551,36 +3644,36 @@ function responsiveGridItemColumnEndStyle(props) {
3551
3644
  }
3552
3645
 
3553
3646
  function responsiveInputPaddingStyle(props) {
3554
- var $iconLeft = props.$iconLeft,
3647
+ var $fontSize = props.$fontSize,
3648
+ $iconLeft = props.$iconLeft,
3555
3649
  $iconRight = props.$iconRight,
3650
+ $padding = props.$padding,
3651
+ $space = props.$space,
3556
3652
  theme = props.theme;
3557
3653
  var _theme$sanity = theme.sanity,
3558
3654
  fonts = _theme$sanity.fonts,
3559
3655
  media = _theme$sanity.media,
3560
3656
  spaceScale = _theme$sanity.space;
3561
- var padding = getResponsiveProp(props.$padding, [0]);
3562
- var space = getResponsiveProp(props.$space, [0]);
3563
- var size = getResponsiveProp(props.$fontSize, [0]);
3564
- var len = Math.max(padding.length, space.length, size.length);
3657
+ var len = Math.max($padding.length, $space.length, $fontSize.length);
3565
3658
  var _padding = [];
3566
3659
  var _space = [];
3567
- var _size = [];
3660
+ var _fontSize = [];
3568
3661
 
3569
3662
  for (var i = 0; i < len; i += 1) {
3570
- _padding[i] = padding[i] === undefined ? _padding[i - 1] : padding[i];
3571
- _space[i] = space[i] === undefined ? _space[i - 1] : space[i];
3572
- _size[i] = size[i] === undefined ? _size[i - 1] : size[i];
3663
+ _fontSize[i] = $fontSize[i] === undefined ? _fontSize[i - 1] : $fontSize[i];
3664
+ _padding[i] = $padding[i] === undefined ? _padding[i - 1] : $padding[i];
3665
+ _space[i] = $space[i] === undefined ? _space[i - 1] : $space[i];
3573
3666
  }
3574
3667
 
3575
- return responsive(media, _padding, function (_, i) {
3576
- var fontSize = fonts.text.sizes[_size[i]] || fonts.text.sizes[2];
3577
- var emSize = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight;
3668
+ return _responsive(media, _padding, function (_, i) {
3669
+ var size = fonts.text.sizes[_fontSize[i]] || fonts.text.sizes[2];
3670
+ var emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight;
3578
3671
  var p = spaceScale[_padding[i]];
3579
3672
  var s = spaceScale[_space[i]];
3580
3673
  var styles = {
3581
- paddingTop: rem(p - fontSize.ascenderHeight),
3674
+ paddingTop: rem(p - size.ascenderHeight),
3582
3675
  paddingRight: rem(p),
3583
- paddingBottom: rem(p - fontSize.descenderHeight),
3676
+ paddingBottom: rem(p - size.descenderHeight),
3584
3677
  paddingLeft: rem(p)
3585
3678
  };
3586
3679
  if ($iconRight) styles.paddingRight = rem(p + emSize + s);
@@ -3601,17 +3694,19 @@ function textInputRootStyle() {
3601
3694
  }
3602
3695
  function textInputBaseStyle(props) {
3603
3696
  var theme = props.theme,
3697
+ $scheme = props.$scheme,
3698
+ $tone = props.$tone,
3604
3699
  $weight = props.$weight;
3605
3700
  var font = theme.sanity.fonts.text;
3606
3701
  var color = theme.sanity.color.input;
3607
- return 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);
3702
+ return 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);
3608
3703
  }
3609
3704
  function textInputFontSizeStyle(props) {
3610
3705
  var theme = props.theme;
3611
3706
  var _theme$sanity = theme.sanity,
3612
3707
  fonts = _theme$sanity.fonts,
3613
3708
  media = _theme$sanity.media;
3614
- return responsive(media, getResponsiveProp(props.$fontSize, [2]), function (sizeIndex) {
3709
+ return _responsive(media, props.$fontSize, function (sizeIndex) {
3615
3710
  var size = fonts.text.sizes[sizeIndex] || fonts.text.sizes[2];
3616
3711
  return {
3617
3712
  fontSize: rem(size.fontSize),
@@ -3623,12 +3718,14 @@ function textInputRepresentationStyle(props) {
3623
3718
  var $border = props.$border,
3624
3719
  $hasPrefix = props.$hasPrefix,
3625
3720
  $hasSuffix = props.$hasSuffix,
3721
+ $scheme = props.$scheme,
3722
+ $tone = props.$tone,
3626
3723
  theme = props.theme;
3627
3724
  var _theme$sanity2 = theme.sanity,
3628
3725
  focusRing = _theme$sanity2.focusRing,
3629
3726
  input = _theme$sanity2.input;
3630
3727
  var color = theme.sanity.color.input;
3631
- return 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({
3728
+ return 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({
3632
3729
  color: color["default"].enabled.border,
3633
3730
  width: input.border.width
3634
3731
  }) : undefined, color.invalid.enabled.bg, color.invalid.enabled.fg, $border ? focusRingBorderStyle({
@@ -3643,20 +3740,20 @@ function textInputRepresentationStyle(props) {
3643
3740
  }), color["default"].disabled.bg, color["default"].disabled.fg, $border ? focusRingBorderStyle({
3644
3741
  color: color["default"].disabled.border,
3645
3742
  width: input.border.width
3646
- }) : 'none', color["default"].hovered.bg, color["default"].hovered.fg, $border ? focusRingBorderStyle({
3743
+ }) : 'none', color["default"].readOnly.bg, color["default"].readOnly.fg, color["default"].hovered.bg, color["default"].hovered.fg, $border ? focusRingBorderStyle({
3647
3744
  color: color["default"].hovered.border,
3648
3745
  width: input.border.width
3649
- }) : 'none', color["default"].readOnly.bg, color["default"].readOnly.fg);
3746
+ }) : 'none');
3650
3747
  }
3651
3748
 
3652
3749
  function responsiveMarginStyle(props) {
3653
3750
  var theme = props.theme;
3654
- 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);
3751
+ 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);
3655
3752
  }
3656
3753
 
3657
3754
  function responsivePaddingStyle(props) {
3658
3755
  var theme = props.theme;
3659
- 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);
3756
+ 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);
3660
3757
  }
3661
3758
 
3662
3759
  function responsiveRadiusStyle(props) {
@@ -3664,7 +3761,7 @@ function responsiveRadiusStyle(props) {
3664
3761
  var _theme$sanity = theme.sanity,
3665
3762
  media = _theme$sanity.media,
3666
3763
  radius = _theme$sanity.radius;
3667
- return responsive(media, getResponsiveProp(props.$radius), function (radiusIndex) {
3764
+ return _responsive(media, props.$radius, function (radiusIndex) {
3668
3765
  return {
3669
3766
  borderRadius: rem(radius[radiusIndex])
3670
3767
  };
@@ -3691,7 +3788,7 @@ function responsiveShadowStyle(props) {
3691
3788
  var _theme$sanity = theme.sanity,
3692
3789
  media = _theme$sanity.media,
3693
3790
  shadows = _theme$sanity.shadows;
3694
- return responsive(media, getResponsiveProp(props.$shadow), function (shadow) {
3791
+ return _responsive(media, props.$shadow, function (shadow) {
3695
3792
  return shadowStyle(shadows[shadow]);
3696
3793
  });
3697
3794
  }
@@ -3737,10 +3834,10 @@ var Text = /*#__PURE__*/forwardRef(function Text(props, ref) {
3737
3834
  "data-ui": "Text"
3738
3835
  }, restProps, {
3739
3836
  "$accent": accent,
3740
- "$align": align,
3837
+ "$align": useArrayProp(align),
3741
3838
  "$muted": muted,
3742
3839
  ref: ref,
3743
- "$size": size,
3840
+ "$size": useArrayProp(size),
3744
3841
  "$weight": weight
3745
3842
  }), /*#__PURE__*/React.createElement("span", null, children));
3746
3843
  });
@@ -3836,7 +3933,7 @@ function responsiveAvatarSizeStyle(props) {
3836
3933
  var _theme$sanity = theme.sanity,
3837
3934
  avatar = _theme$sanity.avatar,
3838
3935
  media = _theme$sanity.media;
3839
- return responsive(media, props.$size, function (size) {
3936
+ return _responsive(media, props.$size, function (size) {
3840
3937
  var avatarSize = avatar.sizes[size] || avatar.sizes[0];
3841
3938
  return {
3842
3939
  width: rem(avatarSize.size),
@@ -3907,11 +4004,12 @@ var Avatar = /*#__PURE__*/forwardRef(function Avatar(props, ref) {
3907
4004
  animateArrowFrom = props.animateArrowFrom,
3908
4005
  _props$status = props.status,
3909
4006
  status = _props$status === void 0 ? 'online' : _props$status,
3910
- sizeProp = props.size,
4007
+ _props$size = props.size,
4008
+ sizeProp = _props$size === void 0 ? 0 : _props$size,
3911
4009
  restProps = _objectWithoutPropertiesLoose(props, _excluded$F);
3912
4010
 
3913
4011
  var as = ReactIs.isValidElementType(asProp) ? asProp : 'div';
3914
- var size = useResponsiveProp(sizeProp, [0]);
4012
+ var size = useArrayProp(sizeProp);
3915
4013
  var theme = useTheme();
3916
4014
  var color = theme.sanity.color.spot[colorKey] || theme.sanity.color.spot.gray; // @todo: remove this
3917
4015
 
@@ -3951,6 +4049,11 @@ var Avatar = /*#__PURE__*/forwardRef(function Avatar(props, ref) {
3951
4049
  onImageLoadError(new Error('Avatar: the image failed to load'));
3952
4050
  }
3953
4051
  }, [onImageLoadError]);
4052
+ var initialsSize = useMemo(function () {
4053
+ return size.map(function (s) {
4054
+ return s === 0 ? 0 : s + 1;
4055
+ });
4056
+ }, [size]);
3954
4057
  return /*#__PURE__*/React.createElement(Root$D, _extends({
3955
4058
  as: as,
3956
4059
  "data-as": typeof as === 'string' ? as : undefined,
@@ -4004,20 +4107,18 @@ var Avatar = /*#__PURE__*/forwardRef(function Avatar(props, ref) {
4004
4107
  vectorEffect: "non-scaling-stroke"
4005
4108
  })), (imageFailed || !src) && initials && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Initials, null, /*#__PURE__*/React.createElement(Text, {
4006
4109
  as: "span",
4007
- size: size.map(function (s) {
4008
- return s === 0 ? 0 : s + 1;
4009
- })
4110
+ size: initialsSize
4010
4111
  }, /*#__PURE__*/React.createElement("strong", null, initials)))));
4011
4112
  });
4012
4113
 
4013
4114
  var _templateObject$A;
4014
4115
 
4015
- function responsiveAvatarCounterSizeStyle(props) {
4116
+ function _responsiveAvatarCounterSizeStyle(props) {
4016
4117
  var theme = props.theme;
4017
4118
  var _theme$sanity = theme.sanity,
4018
4119
  avatar = _theme$sanity.avatar,
4019
4120
  media = _theme$sanity.media;
4020
- return responsive(media, props.$size, function (size) {
4121
+ return _responsive(media, props.$size, function (size) {
4021
4122
  var avatarSize = avatar.sizes[size];
4022
4123
  if (!avatarSize) return EMPTY_RECORD;
4023
4124
  return {
@@ -4028,12 +4129,12 @@ function responsiveAvatarCounterSizeStyle(props) {
4028
4129
  });
4029
4130
  }
4030
4131
 
4031
- function avatarCounterBaseStyle(props) {
4132
+ function _avatarCounterBaseStyle(props) {
4032
4133
  var theme = props.theme;
4033
4134
  return 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]));
4034
4135
  }
4035
4136
 
4036
- var Root$C = styled.div(responsiveAvatarCounterSizeStyle, avatarCounterBaseStyle);
4137
+ var Root$C = styled.div(_responsiveAvatarCounterSizeStyle, _avatarCounterBaseStyle);
4037
4138
  /**
4038
4139
  * @public
4039
4140
  */
@@ -4042,15 +4143,19 @@ var AvatarCounter = /*#__PURE__*/forwardRef(function AvatarCounter(props, ref) {
4042
4143
  var count = props.count,
4043
4144
  _props$size = props.size,
4044
4145
  sizeProp = _props$size === void 0 ? 0 : _props$size;
4045
- var size = useResponsiveProp(sizeProp, [0]);
4146
+ var size = useArrayProp(sizeProp);
4147
+ var counterSize = useMemo(function () {
4148
+ return size.map(function (s) {
4149
+ return s === 0 ? 0 : s + 1;
4150
+ });
4151
+ }, [size]);
4046
4152
  return /*#__PURE__*/React.createElement(Root$C, {
4047
4153
  "$size": size,
4154
+ "data-ui": "AvatarCounter",
4048
4155
  ref: ref
4049
4156
  }, /*#__PURE__*/React.createElement(Text, {
4050
4157
  as: "span",
4051
- size: size.map(function (s) {
4052
- return s === 0 ? 0 : s + 1;
4053
- })
4158
+ size: counterSize
4054
4159
  }, /*#__PURE__*/React.createElement("strong", null, count)));
4055
4160
  });
4056
4161
 
@@ -4061,7 +4166,7 @@ function childrenToElementArray(children) {
4061
4166
  });
4062
4167
  }
4063
4168
 
4064
- var _excluded$E = ["children", "maxLength", "size", "tone"];
4169
+ var _excluded$E = ["children", "maxLength", "size"];
4065
4170
 
4066
4171
  var _templateObject$z;
4067
4172
  var BASE_STYLES = 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"])));
@@ -4075,7 +4180,7 @@ function responsiveAvatarStackSizeStyle(props) {
4075
4180
  var _theme$sanity = theme.sanity,
4076
4181
  avatar = _theme$sanity.avatar,
4077
4182
  media = _theme$sanity.media;
4078
- return responsive(media, getResponsiveProp(props.size), function (size) {
4183
+ return _responsive(media, props.$size, function (size) {
4079
4184
  var avatarSize = avatar.sizes[size];
4080
4185
  if (!avatarSize) return EMPTY_RECORD;
4081
4186
  return {
@@ -4096,13 +4201,14 @@ var AvatarStack = /*#__PURE__*/forwardRef(function AvatarStack(props, ref) {
4096
4201
  _props$maxLength = props.maxLength,
4097
4202
  maxLengthProp = _props$maxLength === void 0 ? 4 : _props$maxLength,
4098
4203
  _props$size = props.size,
4099
- size = _props$size === void 0 ? 0 : _props$size,
4204
+ sizeProp = _props$size === void 0 ? 0 : _props$size,
4100
4205
  restProps = _objectWithoutPropertiesLoose(props, _excluded$E);
4101
4206
 
4102
- var maxLength = Math.max(maxLengthProp, 0);
4103
4207
  var children = childrenToElementArray(childrenProp).filter(function (child) {
4104
4208
  return typeof child !== 'string';
4105
4209
  });
4210
+ var maxLength = Math.max(maxLengthProp, 0);
4211
+ var size = useArrayProp(sizeProp);
4106
4212
  var len = children.length;
4107
4213
  var visibleCount = maxLength - 1;
4108
4214
  var extraCount = len - visibleCount;
@@ -4111,7 +4217,7 @@ var AvatarStack = /*#__PURE__*/forwardRef(function AvatarStack(props, ref) {
4111
4217
  "data-ui": "AvatarStack"
4112
4218
  }, restProps, {
4113
4219
  ref: ref,
4114
- size: size
4220
+ "$size": size
4115
4221
  }), len === 0 && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(AvatarCounter, {
4116
4222
  count: len
4117
4223
  })), len !== 0 && extraCount > 1 && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(AvatarCounter, {
@@ -4169,31 +4275,31 @@ var Box = /*#__PURE__*/forwardRef(function Box(props, ref) {
4169
4275
  "data-as": typeof asProp === 'string' ? asProp : undefined,
4170
4276
  "data-ui": "Box"
4171
4277
  }, restProps, {
4172
- "$column": column,
4173
- "$columnStart": columnStart,
4174
- "$columnEnd": columnEnd,
4175
- "$display": display,
4176
- "$flex": flex,
4177
- "$height": height,
4178
- "$margin": margin,
4179
- "$marginX": marginX,
4180
- "$marginY": marginY,
4181
- "$marginTop": marginTop,
4182
- "$marginRight": marginRight,
4183
- "$marginBottom": marginBottom,
4184
- "$marginLeft": marginLeft,
4185
- "$overflow": overflow,
4186
- "$padding": padding,
4187
- "$paddingX": paddingX,
4188
- "$paddingY": paddingY,
4189
- "$paddingTop": paddingTop,
4190
- "$paddingRight": paddingRight,
4191
- "$paddingBottom": paddingBottom,
4192
- "$paddingLeft": paddingLeft,
4193
- "$row": row,
4194
- "$rowStart": rowStart,
4195
- "$rowEnd": rowEnd,
4196
- "$sizing": sizing,
4278
+ "$column": useArrayProp(column),
4279
+ "$columnStart": useArrayProp(columnStart),
4280
+ "$columnEnd": useArrayProp(columnEnd),
4281
+ "$display": useArrayProp(display),
4282
+ "$flex": useArrayProp(flex),
4283
+ "$height": useArrayProp(height),
4284
+ "$margin": useArrayProp(margin),
4285
+ "$marginX": useArrayProp(marginX),
4286
+ "$marginY": useArrayProp(marginY),
4287
+ "$marginTop": useArrayProp(marginTop),
4288
+ "$marginRight": useArrayProp(marginRight),
4289
+ "$marginBottom": useArrayProp(marginBottom),
4290
+ "$marginLeft": useArrayProp(marginLeft),
4291
+ "$overflow": useArrayProp(overflow),
4292
+ "$padding": useArrayProp(padding),
4293
+ "$paddingX": useArrayProp(paddingX),
4294
+ "$paddingY": useArrayProp(paddingY),
4295
+ "$paddingTop": useArrayProp(paddingTop),
4296
+ "$paddingRight": useArrayProp(paddingRight),
4297
+ "$paddingBottom": useArrayProp(paddingBottom),
4298
+ "$paddingLeft": useArrayProp(paddingLeft),
4299
+ "$row": useArrayProp(row),
4300
+ "$rowStart": useArrayProp(rowStart),
4301
+ "$rowEnd": useArrayProp(rowEnd),
4302
+ "$sizing": useArrayProp(sizing),
4197
4303
  as: asProp,
4198
4304
  ref: ref
4199
4305
  }), props.children);
@@ -4241,9 +4347,9 @@ var Label = /*#__PURE__*/forwardRef(function Label(props, ref) {
4241
4347
  "data-ui": "Label"
4242
4348
  }, restProps, {
4243
4349
  "$accent": accent,
4244
- "$align": align,
4350
+ "$align": useArrayProp(align),
4245
4351
  "$muted": muted,
4246
- "$size": size,
4352
+ "$size": useArrayProp(size),
4247
4353
  "$weight": weight,
4248
4354
  ref: ref
4249
4355
  }), children);
@@ -4290,8 +4396,8 @@ var Badge = /*#__PURE__*/forwardRef(function Badge(props, ref) {
4290
4396
  }, restProps, {
4291
4397
  "$mode": mode,
4292
4398
  "$tone": tone,
4293
- "$radius": radius,
4294
- padding: padding,
4399
+ "$radius": useArrayProp(radius),
4400
+ padding: useArrayProp(padding),
4295
4401
  ref: ref
4296
4402
  }), /*#__PURE__*/React.createElement(Label, {
4297
4403
  size: fontSize
@@ -4317,11 +4423,11 @@ var Flex = /*#__PURE__*/forwardRef(function Flex(props, ref) {
4317
4423
  return /*#__PURE__*/React.createElement(Root$x, _extends({
4318
4424
  "data-ui": "Flex"
4319
4425
  }, restProps, {
4320
- "$align": align,
4321
- "$direction": direction,
4322
- "$gap": gap,
4323
- "$justify": justify,
4324
- "$wrap": wrap,
4426
+ "$align": useArrayProp(align),
4427
+ "$direction": useArrayProp(direction),
4428
+ "$gap": useArrayProp(gap),
4429
+ "$justify": useArrayProp(justify),
4430
+ "$wrap": useArrayProp(wrap),
4325
4431
  forwardedAs: as,
4326
4432
  ref: ref
4327
4433
  }));
@@ -4450,23 +4556,23 @@ var Button = /*#__PURE__*/forwardRef(function Button(props, ref) {
4450
4556
  icon = props.icon,
4451
4557
  iconRight = props.iconRight,
4452
4558
  _props$justify = props.justify,
4453
- justify = _props$justify === void 0 ? 'center' : _props$justify,
4559
+ justifyProp = _props$justify === void 0 ? 'center' : _props$justify,
4454
4560
  loading = props.loading,
4455
4561
  _props$mode = props.mode,
4456
4562
  mode = _props$mode === void 0 ? 'default' : _props$mode,
4457
4563
  _props$padding = props.padding,
4458
- padding = _props$padding === void 0 ? 3 : _props$padding,
4459
- paddingX = props.paddingX,
4460
- paddingY = props.paddingY,
4461
- paddingTop = props.paddingTop,
4462
- paddingBottom = props.paddingBottom,
4463
- paddingLeft = props.paddingLeft,
4464
- paddingRight = props.paddingRight,
4564
+ paddingProp = _props$padding === void 0 ? 3 : _props$padding,
4565
+ paddingXProp = props.paddingX,
4566
+ paddingYProp = props.paddingY,
4567
+ paddingTopProp = props.paddingTop,
4568
+ paddingBottomProp = props.paddingBottom,
4569
+ paddingLeftProp = props.paddingLeft,
4570
+ paddingRightProp = props.paddingRight,
4465
4571
  _props$radius = props.radius,
4466
- radius = _props$radius === void 0 ? 2 : _props$radius,
4572
+ radiusProp = _props$radius === void 0 ? 2 : _props$radius,
4467
4573
  selected = props.selected,
4468
4574
  _props$space = props.space,
4469
- space = _props$space === void 0 ? 3 : _props$space,
4575
+ spaceProp = _props$space === void 0 ? 3 : _props$space,
4470
4576
  text = props.text,
4471
4577
  textAlign = props.textAlign,
4472
4578
  _props$tone = props.tone,
@@ -4475,6 +4581,16 @@ var Button = /*#__PURE__*/forwardRef(function Button(props, ref) {
4475
4581
  type = _props$type === void 0 ? 'button' : _props$type,
4476
4582
  restProps = _objectWithoutPropertiesLoose(props, _excluded$z);
4477
4583
 
4584
+ var justify = useArrayProp(justifyProp);
4585
+ var padding = useArrayProp(paddingProp);
4586
+ var paddingX = useArrayProp(paddingXProp);
4587
+ var paddingY = useArrayProp(paddingYProp);
4588
+ var paddingTop = useArrayProp(paddingTopProp);
4589
+ var paddingBottom = useArrayProp(paddingBottomProp);
4590
+ var paddingLeft = useArrayProp(paddingLeftProp);
4591
+ var paddingRight = useArrayProp(paddingRightProp);
4592
+ var radius = useArrayProp(radiusProp);
4593
+ var space = useArrayProp(spaceProp);
4478
4594
  var theme = useTheme();
4479
4595
  var boxProps = useMemo(function () {
4480
4596
  return {
@@ -4596,15 +4712,15 @@ var Card = /*#__PURE__*/forwardRef(function Card(props, ref) {
4596
4712
  "data-ui": "Card",
4597
4713
  "data-tone": tone
4598
4714
  }, restProps, {
4599
- "$border": border,
4600
- "$borderTop": borderTop,
4601
- "$borderRight": borderRight,
4602
- "$borderBottom": borderBottom,
4603
- "$borderLeft": borderLeft,
4715
+ "$border": useArrayProp(border),
4716
+ "$borderTop": useArrayProp(borderTop),
4717
+ "$borderRight": useArrayProp(borderRight),
4718
+ "$borderBottom": useArrayProp(borderBottom),
4719
+ "$borderLeft": useArrayProp(borderLeft),
4604
4720
  "$checkered": checkered,
4605
4721
  "$focusRing": focusRing,
4606
- "$radius": radius,
4607
- "$shadow": shadow,
4722
+ "$radius": useArrayProp(radius),
4723
+ "$shadow": useArrayProp(shadow),
4608
4724
  "$tone": tone,
4609
4725
  "data-checkered": checkered ? '' : undefined,
4610
4726
  "data-pressed": pressed ? '' : undefined,
@@ -4827,7 +4943,7 @@ var Code = /*#__PURE__*/forwardRef(function Code(props, ref) {
4827
4943
  return /*#__PURE__*/React.createElement(Root$s, _extends({
4828
4944
  "data-ui": "Code"
4829
4945
  }, restProps, {
4830
- "$size": size,
4946
+ "$size": useArrayProp(size),
4831
4947
  "$weight": weight,
4832
4948
  ref: ref
4833
4949
  }), !(language && registered) && /*#__PURE__*/React.createElement("code", null, children), language && registered && /*#__PURE__*/React.createElement(Refractor, {
@@ -4849,7 +4965,7 @@ function responsiveContainerWidthStyle(props) {
4849
4965
  var _theme$sanity = theme.sanity,
4850
4966
  container = _theme$sanity.container,
4851
4967
  media = _theme$sanity.media;
4852
- return responsive(media, getResponsiveProp(props.$width), function (val) {
4968
+ return _responsive(media, props.$width, function (val) {
4853
4969
  return {
4854
4970
  maxWidth: val === 'auto' ? 'none' : rem(container[val])
4855
4971
  };
@@ -4871,7 +4987,7 @@ var Container = /*#__PURE__*/forwardRef(function Container(props, ref) {
4871
4987
  return /*#__PURE__*/React.createElement(Root$r, _extends({
4872
4988
  "data-ui": "Container"
4873
4989
  }, restProps, {
4874
- "$width": width,
4990
+ "$width": useArrayProp(width),
4875
4991
  forwardedAs: as,
4876
4992
  ref: ref
4877
4993
  }));
@@ -4900,14 +5016,14 @@ var Grid = /*#__PURE__*/forwardRef(function Grid(props, ref) {
4900
5016
  "data-as": typeof as === 'string' ? as : undefined,
4901
5017
  "data-ui": "Grid"
4902
5018
  }, restProps, {
4903
- "$autoRows": autoRows,
4904
- "$autoCols": autoCols,
4905
- "$autoFlow": autoFlow,
4906
- "$columns": columns,
4907
- "$gap": gap,
4908
- "$gapX": gapX,
4909
- "$gapY": gapY,
4910
- "$rows": rows,
5019
+ "$autoRows": useArrayProp(autoRows),
5020
+ "$autoCols": useArrayProp(autoCols),
5021
+ "$autoFlow": useArrayProp(autoFlow),
5022
+ "$columns": useArrayProp(columns),
5023
+ "$gap": useArrayProp(gap),
5024
+ "$gapX": useArrayProp(gapX),
5025
+ "$gapY": useArrayProp(gapY),
5026
+ "$rows": useArrayProp(rows),
4911
5027
  forwardedAs: as,
4912
5028
  ref: ref
4913
5029
  }), children);
@@ -4953,9 +5069,9 @@ var Heading = /*#__PURE__*/forwardRef(function Heading(props, ref) {
4953
5069
  "data-ui": "Heading"
4954
5070
  }, restProps, {
4955
5071
  "$accent": accent,
4956
- "$align": align,
5072
+ "$align": useArrayProp(align),
4957
5073
  "$muted": muted,
4958
- "$size": size,
5074
+ "$size": useArrayProp(size),
4959
5075
  "$weight": weight,
4960
5076
  ref: ref
4961
5077
  }), /*#__PURE__*/React.createElement("span", null, children));
@@ -4975,7 +5091,7 @@ function inlineBaseStyle() {
4975
5091
  }
4976
5092
  function inlineSpaceStyle(props) {
4977
5093
  var theme = props.theme;
4978
- return responsive(theme.sanity.media, getResponsiveProp(props.$space), function (spaceIndex) {
5094
+ return _responsive(theme.sanity.media, props.$space, function (spaceIndex) {
4979
5095
  var space = rem(theme.sanity.space[spaceIndex]);
4980
5096
  return {
4981
5097
  margin: "-" + space + " 0 0 -" + space,
@@ -4998,18 +5114,20 @@ var Inline = /*#__PURE__*/forwardRef(function Inline(props, ref) {
4998
5114
  space = props.space,
4999
5115
  restProps = _objectWithoutPropertiesLoose(props, _excluded$s);
5000
5116
 
5001
- var children = childrenToElementArray(childrenProp).filter(Boolean);
5117
+ var children = useMemo(function () {
5118
+ return childrenToElementArray(childrenProp).filter(Boolean).map(function (child, idx) {
5119
+ return /*#__PURE__*/React.createElement("div", {
5120
+ key: idx
5121
+ }, child);
5122
+ });
5123
+ }, [childrenProp]);
5002
5124
  return /*#__PURE__*/React.createElement(Root$o, _extends({
5003
5125
  "data-ui": "Inline"
5004
5126
  }, restProps, {
5005
- "$space": space,
5127
+ "$space": useArrayProp(space),
5006
5128
  forwardedAs: as,
5007
5129
  ref: ref
5008
- }), children.map(function (child, idx) {
5009
- return /*#__PURE__*/React.createElement("div", {
5010
- key: idx
5011
- }, child);
5012
- }));
5130
+ }), children);
5013
5131
  });
5014
5132
 
5015
5133
  var _excluded$r = ["children", "fontSize", "padding", "radius"];
@@ -5038,7 +5156,7 @@ var KBD = /*#__PURE__*/forwardRef(function KBD(props, ref) {
5038
5156
  return /*#__PURE__*/React.createElement(Root$n, _extends({
5039
5157
  "data-ui": "KBD"
5040
5158
  }, restProps, {
5041
- "$radius": radius,
5159
+ "$radius": useArrayProp(radius),
5042
5160
  ref: ref
5043
5161
  }), /*#__PURE__*/React.createElement(Box, {
5044
5162
  as: "span",
@@ -5092,12 +5210,6 @@ function useBoundaryElement() {
5092
5210
  return value || DEFAULT_VALUE;
5093
5211
  }
5094
5212
 
5095
- /**
5096
- * @internal
5097
- */
5098
-
5099
- var RO = typeof window !== 'undefined' && window.ResizeObserver ? window.ResizeObserver : ResizeObserver$1;
5100
-
5101
5213
  function findMaxBreakpoints(media, width) {
5102
5214
  var ret = [];
5103
5215
 
@@ -5139,31 +5251,18 @@ var ElementQuery = /*#__PURE__*/forwardRef(function ElementQuery(props, ref) {
5139
5251
  media = _props$media === void 0 ? theme.sanity.media : _props$media,
5140
5252
  restProps = _objectWithoutPropertiesLoose(props, _excluded$q);
5141
5253
 
5142
- var _useState = useState(function () {
5143
- return window.innerWidth;
5144
- }),
5145
- width = _useState[0],
5146
- setWidth = _useState[1];
5147
-
5148
5254
  var forwardedRef = useForwardedRef(ref);
5149
5255
 
5150
- var _useState2 = useState(null),
5151
- element = _useState2[0],
5152
- setElement = _useState2[1];
5153
-
5154
- useEffect(function () {
5155
- if (!element) return;
5256
+ var _useState = useState(null),
5257
+ element = _useState[0],
5258
+ setElement = _useState[1];
5156
5259
 
5157
- var handleResizeEntries = function handleResizeEntries(entries) {
5158
- setWidth(entries[0].contentRect.width);
5159
- };
5260
+ var elementSize = useElementSize(element);
5261
+ var width = useMemo(function () {
5262
+ var _elementSize$border$w;
5160
5263
 
5161
- var ro = new RO(handleResizeEntries);
5162
- ro.observe(element);
5163
- return function () {
5164
- return ro.disconnect();
5165
- };
5166
- }, [element]);
5264
+ return (_elementSize$border$w = elementSize == null ? void 0 : elementSize.border.width) != null ? _elementSize$border$w : window.innerWidth;
5265
+ }, [elementSize]);
5167
5266
  var max = useMemo(function () {
5168
5267
  return findMaxBreakpoints(media, width);
5169
5268
  }, [media, width]);
@@ -5269,7 +5368,7 @@ function LayerProvider(props) {
5269
5368
  _props$zOffset = props.zOffset,
5270
5369
  zOffsetProp = _props$zOffset === void 0 ? 0 : _props$zOffset;
5271
5370
  var parent = useContext(LayerContext);
5272
- var zOffset = useResponsiveProp(zOffsetProp);
5371
+ var zOffset = useArrayProp(zOffsetProp);
5273
5372
  var maxMediaIndex = zOffset.length - 1;
5274
5373
  var mediaIndex = Math.min(useMediaIndex(), maxMediaIndex);
5275
5374
  var zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex];
@@ -5711,7 +5810,7 @@ var VirtualList = /*#__PURE__*/forwardRef(function VirtualList(props, ref) {
5711
5810
  scrollEl.addEventListener('scroll', _handleScroll, {
5712
5811
  passive: true
5713
5812
  });
5714
- var ro = new ResizeObserver(function (entries) {
5813
+ var ro = new _ResizeObserver(function (entries) {
5715
5814
  setScrollHeight(entries[0].contentRect.height);
5716
5815
  });
5717
5816
  ro.observe(scrollEl);
@@ -6028,7 +6127,7 @@ var Popover = /*#__PURE__*/forwardRef(function Popover(props, ref) {
6028
6127
  _props$tone = props.tone,
6029
6128
  tone = _props$tone === void 0 ? 'inherit' : _props$tone,
6030
6129
  _props$width = props.width,
6031
- width = _props$width === void 0 ? 0 : _props$width,
6130
+ widthProp = _props$width === void 0 ? 0 : _props$width,
6032
6131
  _props$zOffset = props.zOffset,
6033
6132
  zOffset = _props$zOffset === void 0 ? (_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.popover.zOffset : _props$zOffset,
6034
6133
  restProps = _objectWithoutPropertiesLoose(props, _excluded$n);
@@ -6049,6 +6148,7 @@ var Popover = /*#__PURE__*/forwardRef(function Popover(props, ref) {
6049
6148
  setArrowElement = _useState3[1];
6050
6149
 
6051
6150
  var popperReferenceElement = referenceElementProp || referenceElement;
6151
+ var width = useArrayProp(matchReferenceWidth ? 'auto' : widthProp);
6052
6152
  var modifiers = usePopoverModifiers({
6053
6153
  allowedAutoPlacements: allowedAutoPlacements,
6054
6154
  arrow: arrow,
@@ -6089,13 +6189,21 @@ var Popover = /*#__PURE__*/forwardRef(function Popover(props, ref) {
6089
6189
  var popoverStyle = useMemo(function () {
6090
6190
  return _extends({}, style, styles.popper);
6091
6191
  }, [style, styles]);
6192
+ var updateTimeoutRef = useRef(null);
6092
6193
  useEffect(function () {
6093
- if (forceUpdate) {
6094
- try {
6095
- forceUpdate();
6096
- } catch (_) {// ignore caught error
6097
- }
6194
+ if (updateTimeoutRef.current) {
6195
+ clearTimeout(updateTimeoutRef.current);
6196
+ updateTimeoutRef.current = null;
6098
6197
  }
6198
+
6199
+ updateTimeoutRef.current = setTimeout(function () {
6200
+ if (forceUpdate) {
6201
+ try {
6202
+ forceUpdate();
6203
+ } catch (_) {// ignore caught error
6204
+ }
6205
+ }
6206
+ }, 0);
6099
6207
  }, [content, forceUpdate, open, popperReferenceElement]);
6100
6208
 
6101
6209
  if (disabled) {
@@ -6111,13 +6219,13 @@ var Popover = /*#__PURE__*/forwardRef(function Popover(props, ref) {
6111
6219
  zOffset: zOffset
6112
6220
  }, attributes.popper), /*#__PURE__*/React.createElement(PopoverCard, {
6113
6221
  "$constrainSize": constrainSize,
6222
+ "$width": width,
6114
6223
  "data-ui": "PopoverCard",
6115
6224
  padding: padding,
6116
6225
  radius: radius,
6117
6226
  scheme: scheme,
6118
6227
  shadow: shadow,
6119
- tone: tone,
6120
- width: width
6228
+ tone: tone
6121
6229
  }, arrow && /*#__PURE__*/React.createElement(PopoverArrow, {
6122
6230
  ref: setArrowElement,
6123
6231
  style: styles.arrow
@@ -6236,7 +6344,7 @@ function inputTextSizeStyle(props) {
6236
6344
  var theme = props.theme,
6237
6345
  $fontSize = props.$fontSize;
6238
6346
  var sizes = theme.sanity.fonts.text.sizes;
6239
- return responsive(theme.sanity.media, getResponsiveProp($fontSize), function (sizeIndex) {
6347
+ return _responsive(theme.sanity.media, $fontSize, function (sizeIndex) {
6240
6348
  return textSize(sizes[sizeIndex] || sizes[2]);
6241
6349
  });
6242
6350
  }
@@ -6288,10 +6396,10 @@ var Select = /*#__PURE__*/forwardRef(function Select(props, forwardedRef) {
6288
6396
  "data-read-only": !disabled && readOnly ? '' : undefined,
6289
6397
  "data-ui": "Select"
6290
6398
  }, restProps, {
6291
- "$fontSize": fontSize,
6292
- "$padding": padding,
6293
- "$radius": radius,
6294
- "$space": space,
6399
+ "$fontSize": useArrayProp(fontSize),
6400
+ "$padding": useArrayProp(padding),
6401
+ "$radius": useArrayProp(radius),
6402
+ "$space": useArrayProp(space),
6295
6403
  disabled: disabled || readOnly,
6296
6404
  ref: ref
6297
6405
  }), children), /*#__PURE__*/React.createElement(IconBox, {
@@ -6319,7 +6427,7 @@ function responsiveStackSpaceStyle(props) {
6319
6427
  var _theme$sanity = theme.sanity,
6320
6428
  media = _theme$sanity.media,
6321
6429
  space = _theme$sanity.space;
6322
- return responsive(media, getResponsiveProp(props.$space), function (spaceIndex) {
6430
+ return _responsive(media, props.$space, function (spaceIndex) {
6323
6431
  return {
6324
6432
  gridGap: rem(space[spaceIndex])
6325
6433
  };
@@ -6341,13 +6449,13 @@ var Stack = /*#__PURE__*/forwardRef(function Stack(props, ref) {
6341
6449
  "data-as": typeof as === 'string' ? as : undefined,
6342
6450
  "data-ui": "Stack"
6343
6451
  }, restProps, {
6344
- "$space": space,
6452
+ "$space": useArrayProp(space),
6345
6453
  forwardedAs: as,
6346
6454
  ref: ref
6347
6455
  }));
6348
6456
  });
6349
6457
 
6350
- var _templateObject$g, _templateObject2$b, _templateObject3$6, _templateObject4$4, _templateObject5$3, _templateObject6$1, _templateObject7;
6458
+ var _templateObject$g, _templateObject2$b, _templateObject3$6, _templateObject4$4, _templateObject5$3, _templateObject6$2, _templateObject7;
6351
6459
  /* Root */
6352
6460
 
6353
6461
  function switchBaseStyles() {
@@ -6391,7 +6499,7 @@ function switchThumbStyles(props) {
6391
6499
  var checkedOffset = trackWidth - trackPadding * 2 - size;
6392
6500
  var indeterminateOffset = trackWidth / 2 - size / 2 - trackPadding;
6393
6501
  var checked = $indeterminate !== true && props.$checked === true;
6394
- return 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 && css(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteralLoose(["\n transform: translate3d(", "px, 0, 0);\n "])), checkedOffset), $indeterminate && css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n transform: translate3d(", "px, 0, 0);\n "])), indeterminateOffset));
6502
+ return 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 && css(_templateObject6$2 || (_templateObject6$2 = _taggedTemplateLiteralLoose(["\n transform: translate3d(", "px, 0, 0);\n "])), checkedOffset), $indeterminate && css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n transform: translate3d(", "px, 0, 0);\n "])), indeterminateOffset));
6395
6503
  }
6396
6504
 
6397
6505
  var _excluded$j = ["checked", "className", "disabled", "indeterminate", "readOnly", "style"];
@@ -6440,7 +6548,7 @@ var Switch = /*#__PURE__*/forwardRef(function Switch(props, forwardedRef) {
6440
6548
  })));
6441
6549
  });
6442
6550
 
6443
- var _excluded$i = ["border", "customValidity", "disabled", "fontSize", "padding", "radius"];
6551
+ var _excluded$i = ["border", "customValidity", "disabled", "fontSize", "padding", "radius", "weight"];
6444
6552
 
6445
6553
  var _templateObject$f;
6446
6554
  var Root$d = styled.span(textInputRootStyle);
@@ -6463,32 +6571,46 @@ var TextArea = /*#__PURE__*/forwardRef(function TextArea(props, forwardedRef) {
6463
6571
  padding = _props$padding === void 0 ? 3 : _props$padding,
6464
6572
  _props$radius = props.radius,
6465
6573
  radius = _props$radius === void 0 ? 1 : _props$radius,
6574
+ weight = props.weight,
6466
6575
  restProps = _objectWithoutPropertiesLoose(props, _excluded$i);
6467
6576
 
6468
6577
  var ref = useForwardedRef(forwardedRef);
6578
+ var rootTheme = useRootTheme();
6469
6579
  useCustomValidity(ref, customValidity);
6470
6580
  return /*#__PURE__*/React.createElement(Root$d, {
6471
6581
  "data-ui": "TextArea"
6472
6582
  }, /*#__PURE__*/React.createElement(InputRoot$1, null, /*#__PURE__*/React.createElement(Input$1, _extends({
6473
- "data-as": "textarea"
6583
+ "data-as": "textarea",
6584
+ "data-scheme": rootTheme.scheme,
6585
+ "data-tone": rootTheme.tone
6474
6586
  }, restProps, {
6475
- "$fontSize": fontSize,
6476
- "$padding": padding,
6587
+ "$fontSize": useArrayProp(fontSize),
6588
+ "$padding": useArrayProp(padding),
6589
+ "$scheme": rootTheme.scheme,
6590
+ "$space": useArrayProp(0),
6591
+ "$tone": rootTheme.tone,
6592
+ "$weight": weight,
6477
6593
  disabled: disabled,
6478
6594
  ref: ref
6479
6595
  })), /*#__PURE__*/React.createElement(Presentation$1, {
6480
6596
  "$border": border,
6481
- "$radius": radius
6597
+ "$radius": useArrayProp(radius),
6598
+ "$scheme": rootTheme.scheme,
6599
+ "$tone": rootTheme.tone,
6600
+ "data-scheme": rootTheme.scheme,
6601
+ "data-tone": rootTheme.tone
6482
6602
  })));
6483
6603
  });
6484
6604
 
6485
- var _excluded$h = ["border", "clearButton", "disabled", "fontSize", "icon", "iconRight", "onClear", "padding", "prefix", "radius", "readOnly", "space", "suffix", "customValidity", "type"];
6605
+ var _excluded$h = ["border", "clearButton", "disabled", "fontSize", "icon", "iconRight", "onClear", "padding", "prefix", "radius", "readOnly", "space", "suffix", "customValidity", "type", "weight"];
6486
6606
 
6487
- var _templateObject$e, _templateObject2$a, _templateObject3$5, _templateObject4$3, _templateObject5$2;
6607
+ var _templateObject$e, _templateObject2$a, _templateObject3$5, _templateObject4$3, _templateObject5$2, _templateObject6$1;
6488
6608
  var CLEAR_BUTTON_BOX_STYLE = {
6489
6609
  zIndex: 2
6490
6610
  };
6491
- var Root$c = styled.span(textInputRootStyle);
6611
+ var Root$c = styled(Card).attrs({
6612
+ forwardedAs: 'span'
6613
+ })(textInputRootStyle);
6492
6614
  var InputRoot = styled.span(_templateObject$e || (_templateObject$e = _taggedTemplateLiteralLoose(["\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n"])));
6493
6615
  var Prefix = styled(Card).attrs({
6494
6616
  forwardedAs: 'span'
@@ -6499,7 +6621,8 @@ var Suffix = styled(Card).attrs({
6499
6621
  var Input = styled.input(responsiveInputPaddingStyle, textInputBaseStyle, textInputFontSizeStyle);
6500
6622
  var Presentation = styled.span(responsiveRadiusStyle, textInputRepresentationStyle);
6501
6623
  var LeftBox = styled(Box)(_templateObject4$3 || (_templateObject4$3 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n"])));
6502
- var RightCard = styled(Card)(_templateObject5$2 || (_templateObject5$2 = _taggedTemplateLiteralLoose(["\n background-color: transparent;\n position: absolute;\n top: 0;\n right: 0;\n"])));
6624
+ var RightBox = styled(Box)(_templateObject5$2 || (_templateObject5$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n right: 0;\n"])));
6625
+ var RightCard = styled(Card)(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteralLoose(["\n background-color: transparent;\n position: absolute;\n top: 0;\n right: 0;\n"])));
6503
6626
  /**
6504
6627
  * @public
6505
6628
  */
@@ -6511,7 +6634,7 @@ var TextInput = /*#__PURE__*/forwardRef(function TextInput(props, forwardedRef)
6511
6634
  _props$disabled = props.disabled,
6512
6635
  disabled = _props$disabled === void 0 ? false : _props$disabled,
6513
6636
  _props$fontSize = props.fontSize,
6514
- fontSize = _props$fontSize === void 0 ? 2 : _props$fontSize,
6637
+ fontSizeProp = _props$fontSize === void 0 ? 2 : _props$fontSize,
6515
6638
  icon = props.icon,
6516
6639
  iconRight = props.iconRight,
6517
6640
  onClear = props.onClear,
@@ -6522,16 +6645,20 @@ var TextInput = /*#__PURE__*/forwardRef(function TextInput(props, forwardedRef)
6522
6645
  radiusProp = _props$radius === void 0 ? 1 : _props$radius,
6523
6646
  readOnly = props.readOnly,
6524
6647
  _props$space = props.space,
6525
- space = _props$space === void 0 ? 3 : _props$space,
6648
+ spaceProp = _props$space === void 0 ? 3 : _props$space,
6526
6649
  suffix = props.suffix,
6527
6650
  customValidity = props.customValidity,
6528
6651
  _props$type = props.type,
6529
6652
  type = _props$type === void 0 ? 'text' : _props$type,
6653
+ weight = props.weight,
6530
6654
  restProps = _objectWithoutPropertiesLoose(props, _excluded$h);
6531
6655
 
6532
6656
  var ref = useForwardedRef(forwardedRef);
6533
- var padding = useResponsiveProp(paddingProp);
6534
- var radius = useResponsiveProp(radiusProp); // Transient properties
6657
+ var rootTheme = useRootTheme();
6658
+ var fontSize = useArrayProp(fontSizeProp);
6659
+ var padding = useArrayProp(paddingProp);
6660
+ var radius = useArrayProp(radiusProp);
6661
+ var space = useArrayProp(spaceProp); // Transient properties
6535
6662
 
6536
6663
  var $hasClearButton = Boolean(clearButton);
6537
6664
  var $hasIcon = Boolean(icon);
@@ -6570,17 +6697,21 @@ var TextInput = /*#__PURE__*/forwardRef(function TextInput(props, forwardedRef)
6570
6697
  "$border": border,
6571
6698
  "$hasPrefix": $hasPrefix,
6572
6699
  "$hasSuffix": $hasSuffix,
6573
- "$radius": radius
6700
+ "$radius": radius,
6701
+ "$scheme": rootTheme.scheme,
6702
+ "$tone": rootTheme.tone,
6703
+ "data-scheme": rootTheme.scheme,
6704
+ "data-tone": rootTheme.tone
6574
6705
  }, icon && /*#__PURE__*/React.createElement(LeftBox, {
6575
6706
  padding: padding
6576
6707
  }, /*#__PURE__*/React.createElement(Text, {
6577
6708
  size: fontSize
6578
- }, /*#__PURE__*/isValidElement(icon) && icon, isValidElementType(icon) && /*#__PURE__*/createElement(icon))), !$hasClearButton && iconRight && /*#__PURE__*/React.createElement(RightCard, {
6709
+ }, /*#__PURE__*/isValidElement(icon) && icon, isValidElementType(icon) && /*#__PURE__*/createElement(icon))), !$hasClearButton && iconRight && /*#__PURE__*/React.createElement(RightBox, {
6579
6710
  padding: padding
6580
6711
  }, /*#__PURE__*/React.createElement(Text, {
6581
6712
  size: fontSize
6582
6713
  }, /*#__PURE__*/isValidElement(iconRight) && iconRight, isValidElementType(iconRight) && /*#__PURE__*/createElement(iconRight))));
6583
- }, [border, fontSize, icon, iconRight, padding, radius, $hasClearButton, $hasPrefix, $hasSuffix]); // Render clear button (memoized)
6714
+ }, [border, fontSize, icon, iconRight, padding, radius, rootTheme, $hasClearButton, $hasPrefix, $hasSuffix]); // Render clear button (memoized)
6584
6715
 
6585
6716
  var clearButtonBoxPadding = useMemo(function () {
6586
6717
  return padding.map(function (v) {
@@ -6631,15 +6762,21 @@ var TextInput = /*#__PURE__*/forwardRef(function TextInput(props, forwardedRef)
6631
6762
  }, /*#__PURE__*/React.createElement("span", null, suffix));
6632
6763
  }, [radius, suffix]);
6633
6764
  return /*#__PURE__*/React.createElement(Root$c, {
6634
- "data-ui": "TextInput"
6765
+ "data-ui": "TextInput",
6766
+ tone: rootTheme.tone
6635
6767
  }, prefixNode, /*#__PURE__*/React.createElement(InputRoot, null, /*#__PURE__*/React.createElement(Input, _extends({
6636
- "data-as": "input"
6768
+ "data-as": "input",
6769
+ "data-scheme": rootTheme.scheme,
6770
+ "data-tone": rootTheme.tone
6637
6771
  }, restProps, {
6772
+ "$fontSize": fontSize,
6638
6773
  "$iconLeft": $hasIcon,
6639
6774
  "$iconRight": $hasIconRight || $hasClearButton,
6640
6775
  "$padding": padding,
6776
+ "$scheme": rootTheme.scheme,
6641
6777
  "$space": space,
6642
- "$fontSize": fontSize,
6778
+ "$tone": rootTheme.tone,
6779
+ "$weight": weight,
6643
6780
  disabled: disabled,
6644
6781
  readOnly: readOnly,
6645
6782
  ref: ref,
@@ -6687,7 +6824,7 @@ var Tooltip = /*#__PURE__*/forwardRef(function Tooltip(props, ref) {
6687
6824
  children = props.children,
6688
6825
  content = props.content,
6689
6826
  disabled = props.disabled,
6690
- fallbackPlacements = props.fallbackPlacements,
6827
+ fallbackPlacementsProp = props.fallbackPlacements,
6691
6828
  _props$placement = props.placement,
6692
6829
  placement = _props$placement === void 0 ? 'bottom' : _props$placement,
6693
6830
  portal = props.portal,
@@ -6696,6 +6833,7 @@ var Tooltip = /*#__PURE__*/forwardRef(function Tooltip(props, ref) {
6696
6833
  zOffset = _props$zOffset === void 0 ? (_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.tooltip.zOffset : _props$zOffset,
6697
6834
  restProps = _objectWithoutPropertiesLoose(props, _excluded$g);
6698
6835
 
6836
+ var fallbackPlacements = useArrayProp(fallbackPlacementsProp);
6699
6837
  var forwardedRef = useForwardedRef(ref);
6700
6838
 
6701
6839
  var _useState = useState(null),
@@ -6777,13 +6915,21 @@ var Tooltip = /*#__PURE__*/forwardRef(function Tooltip(props, ref) {
6777
6915
  window.removeEventListener('mousemove', handleWindowMouseMove);
6778
6916
  };
6779
6917
  }, [isOpen, referenceElement]);
6918
+ var updateTimeoutRef = useRef(null);
6780
6919
  useEffect(function () {
6781
- if (forceUpdate) {
6782
- try {
6783
- forceUpdate();
6784
- } catch (_) {// ignore caught error
6785
- }
6920
+ if (updateTimeoutRef.current) {
6921
+ clearTimeout(updateTimeoutRef.current);
6922
+ updateTimeoutRef.current = null;
6786
6923
  }
6924
+
6925
+ updateTimeoutRef.current = setTimeout(function () {
6926
+ if (forceUpdate) {
6927
+ try {
6928
+ forceUpdate();
6929
+ } catch (_) {// ignore caught error
6930
+ }
6931
+ }
6932
+ }, 0);
6787
6933
  }, [forceUpdate, content]); // Close when `disabled` changes to `true`
6788
6934
 
6789
6935
  useEffect(function () {
@@ -7065,7 +7211,7 @@ var InnerAutocomplete = /*#__PURE__*/forwardRef(function InnerAutocomplete(props
7065
7211
  var popoverMouseWithinRef = useRef(false);
7066
7212
  var listBoxId = id + "-listbox";
7067
7213
  var options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY;
7068
- var padding = useResponsiveProp(paddingProp);
7214
+ var padding = useArrayProp(paddingProp);
7069
7215
  var currentOption = useMemo(function () {
7070
7216
  return value !== null ? options.find(function (o) {
7071
7217
  return o.value === value;
@@ -7497,9 +7643,11 @@ var Breadcrumbs = /*#__PURE__*/forwardRef(function Breadcrumbs(props, ref) {
7497
7643
  maxLength = props.maxLength,
7498
7644
  separator = props.separator,
7499
7645
  _props$space = props.space,
7500
- space = _props$space === void 0 ? 2 : _props$space,
7646
+ spaceRaw = _props$space === void 0 ? 2 : _props$space,
7501
7647
  restProps = _objectWithoutPropertiesLoose(props, _excluded$e);
7502
7648
 
7649
+ var space = useArrayProp(spaceRaw);
7650
+
7503
7651
  var _useState = useState(false),
7504
7652
  open = _useState[0],
7505
7653
  setOpen = _useState[1];
@@ -7589,13 +7737,13 @@ function dialogStyle(_ref) {
7589
7737
  alignItems: 'center',
7590
7738
  justifyContent: 'center',
7591
7739
  outline: 'none',
7592
- background: color.shadow.penumbra
7740
+ background: color.shadow.umbra
7593
7741
  };
7594
7742
  }
7595
7743
  function responsiveDialogPositionStyle(props) {
7596
7744
  var theme = props.theme;
7597
7745
  var media = theme.sanity.media;
7598
- return responsive(media, getResponsiveProp(props.$position), function (position) {
7746
+ return _responsive(media, props.$position, function (position) {
7599
7747
  return {
7600
7748
  '&&': {
7601
7749
  position: position
@@ -7643,10 +7791,13 @@ var DialogCard = /*#__PURE__*/forwardRef(function DialogCard(props, ref) {
7643
7791
  id = props.id,
7644
7792
  onClickOutside = props.onClickOutside,
7645
7793
  onClose = props.onClose,
7646
- radius = props.radius,
7794
+ radiusProp = props.radius,
7647
7795
  scheme = props.scheme,
7648
- shadow = props.shadow,
7649
- width = props.width;
7796
+ shadowProp = props.shadow,
7797
+ widthProp = props.width;
7798
+ var radius = useArrayProp(radiusProp);
7799
+ var shadow = useArrayProp(shadowProp);
7800
+ var width = useArrayProp(widthProp);
7650
7801
  var forwardedRef = useForwardedRef(ref);
7651
7802
 
7652
7803
  var _useState = useState(null),
@@ -7733,7 +7884,7 @@ var Dialog = /*#__PURE__*/forwardRef(function Dialog(props, ref) {
7733
7884
  _props$__unstable_hid = props.__unstable_hideCloseButton,
7734
7885
  hideCloseButton = _props$__unstable_hid === void 0 ? false : _props$__unstable_hid,
7735
7886
  _props$cardRadius = props.cardRadius,
7736
- cardRadius = _props$cardRadius === void 0 ? 3 : _props$cardRadius,
7887
+ cardRadiusProp = _props$cardRadius === void 0 ? 3 : _props$cardRadius,
7737
7888
  _props$cardShadow = props.cardShadow,
7738
7889
  cardShadow = _props$cardShadow === void 0 ? 4 : _props$cardShadow,
7739
7890
  children = props.children,
@@ -7744,17 +7895,22 @@ var Dialog = /*#__PURE__*/forwardRef(function Dialog(props, ref) {
7744
7895
  onClickOutside = props.onClickOutside,
7745
7896
  onClose = props.onClose,
7746
7897
  _props$padding = props.padding,
7747
- padding = _props$padding === void 0 ? 4 : _props$padding,
7898
+ paddingProp = _props$padding === void 0 ? 4 : _props$padding,
7748
7899
  portal = props.portal,
7749
7900
  _props$position = props.position,
7750
- position = _props$position === void 0 ? dialog.position || 'fixed' : _props$position,
7901
+ positionProp = _props$position === void 0 ? dialog.position || 'fixed' : _props$position,
7751
7902
  scheme = props.scheme,
7752
7903
  _props$width = props.width,
7753
- width = _props$width === void 0 ? 0 : _props$width,
7904
+ widthProp = _props$width === void 0 ? 0 : _props$width,
7754
7905
  _props$zOffset = props.zOffset,
7755
- zOffset = _props$zOffset === void 0 ? dialog.zOffset || ((_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.dialog.zOffset) : _props$zOffset,
7906
+ zOffsetProp = _props$zOffset === void 0 ? dialog.zOffset || ((_theme$sanity$layer = theme.sanity.layer) == null ? void 0 : _theme$sanity$layer.dialog.zOffset) : _props$zOffset,
7756
7907
  restProps = _objectWithoutPropertiesLoose(props, _excluded$d);
7757
7908
 
7909
+ var cardRadius = useArrayProp(cardRadiusProp);
7910
+ var padding = useArrayProp(paddingProp);
7911
+ var position = useArrayProp(positionProp);
7912
+ var width = useArrayProp(widthProp);
7913
+ var zOffset = useArrayProp(zOffsetProp);
7758
7914
  var preDivRef = useRef(null);
7759
7915
  var postDivRef = useRef(null);
7760
7916
  var cardRef = useRef(null);
@@ -7849,9 +8005,11 @@ var Hotkeys = /*#__PURE__*/forwardRef(function Hotkeys(props, ref) {
7849
8005
  padding = props.padding,
7850
8006
  radius = props.radius,
7851
8007
  _props$space = props.space,
7852
- space = _props$space === void 0 ? 1 : _props$space,
8008
+ spaceProp = _props$space === void 0 ? 1 : _props$space,
7853
8009
  restProps = _objectWithoutPropertiesLoose(props, _excluded$c);
7854
8010
 
8011
+ var space = useArrayProp(spaceProp);
8012
+
7855
8013
  if (!keys || keys.length === 0) {
7856
8014
  return /*#__PURE__*/React.createElement(React.Fragment, null);
7857
8015
  }
@@ -8465,7 +8623,7 @@ function selectableColorStyle(props) {
8465
8623
  * @internal
8466
8624
  */
8467
8625
 
8468
- var Selectable = styled(Box)(responsiveBorderStyle, responsiveRadiusStyle, selectableBaseStyle, selectableColorStyle);
8626
+ var Selectable = styled(Box)(responsiveRadiusStyle, selectableBaseStyle, selectableColorStyle);
8469
8627
 
8470
8628
  function useMenu() {
8471
8629
  var value = useContext(MenuContext);
@@ -8498,8 +8656,7 @@ function MenuGroup(props) {
8498
8656
  onClick = props.onClick,
8499
8657
  _props$padding = props.padding,
8500
8658
  padding = _props$padding === void 0 ? 3 : _props$padding,
8501
- _props$popover = props.popover,
8502
- popover = _props$popover === void 0 ? {} : _props$popover,
8659
+ popover = props.popover,
8503
8660
  _props$radius = props.radius,
8504
8661
  radius = _props$radius === void 0 ? 2 : _props$radius,
8505
8662
  _props$space = props.space,
@@ -8613,7 +8770,7 @@ function MenuGroup(props) {
8613
8770
  "aria-pressed": as === 'button' ? withinMenu : undefined,
8614
8771
  "data-pressed": as !== 'button' ? withinMenu : undefined,
8615
8772
  "data-selected": !withinMenu && active ? '' : undefined,
8616
- "$radius": radius,
8773
+ "$radius": useArrayProp(radius),
8617
8774
  "$tone": tone,
8618
8775
  onClick: handleClick,
8619
8776
  onKeyDown: handleKeyDown,
@@ -8719,13 +8876,13 @@ var MenuItem = /*#__PURE__*/forwardRef(function MenuItem(props, forwardedRef) {
8719
8876
  "data-selected": active ? '' : undefined,
8720
8877
  "data-disabled": disabled ? '' : undefined,
8721
8878
  forwardedAs: as,
8722
- "$radius": radius,
8879
+ "$radius": useArrayProp(radius),
8880
+ "$padding": useArrayProp(0),
8723
8881
  "$tone": tone,
8724
8882
  disabled: disabled,
8725
8883
  onClick: handleClick,
8726
8884
  onMouseEnter: onItemMouseEnter,
8727
8885
  onMouseLeave: onItemMouseLeave,
8728
- padding: 0,
8729
8886
  ref: setRef,
8730
8887
  role: "menuitem",
8731
8888
  tabIndex: -1,
@@ -8807,7 +8964,7 @@ var Skeleton = /*#__PURE__*/forwardRef(function Skeleton(props, ref) {
8807
8964
  }, [delay]);
8808
8965
  return /*#__PURE__*/React.createElement(Root$4, _extends({}, restProps, {
8809
8966
  "$animated": animated,
8810
- "$radius": radius,
8967
+ "$radius": useArrayProp(radius),
8811
8968
  "$visible": visible,
8812
8969
  ref: ref
8813
8970
  }));
@@ -8823,13 +8980,15 @@ var Root$3 = styled(Skeleton)(function (_ref) {
8823
8980
  theme = _ref.theme;
8824
8981
  var media = theme.sanity.media;
8825
8982
  var font = theme.sanity.fonts[$style];
8826
- var styles = responsive(media, $size, function (sizeIndex) {
8983
+
8984
+ var styles = _responsive(media, $size, function (sizeIndex) {
8827
8985
  var fontSize = font.sizes[sizeIndex];
8828
8986
  var capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight;
8829
8987
  return {
8830
8988
  height: capHeight
8831
8989
  };
8832
8990
  });
8991
+
8833
8992
  return styles;
8834
8993
  });
8835
8994
  /**
@@ -8842,7 +9001,7 @@ var TextSkeleton = /*#__PURE__*/forwardRef(function TextSkeleton(props, ref) {
8842
9001
  size = _props$size === void 0 ? 2 : _props$size,
8843
9002
  restProps = _objectWithoutPropertiesLoose(props, _excluded$7);
8844
9003
 
8845
- var $size = useResponsiveProp(size);
9004
+ var $size = useArrayProp(size);
8846
9005
  return /*#__PURE__*/React.createElement(Root$3, _extends({}, restProps, {
8847
9006
  "$size": $size,
8848
9007
  ref: ref,
@@ -8859,7 +9018,7 @@ var LabelSkeleton = /*#__PURE__*/forwardRef(function TextSkeleton(props, ref) {
8859
9018
  size = _props$size2 === void 0 ? 2 : _props$size2,
8860
9019
  restProps = _objectWithoutPropertiesLoose(props, _excluded2);
8861
9020
 
8862
- var $size = useResponsiveProp(size);
9021
+ var $size = useArrayProp(size);
8863
9022
  return /*#__PURE__*/React.createElement(Root$3, _extends({}, restProps, {
8864
9023
  "$size": $size,
8865
9024
  ref: ref,
@@ -8876,7 +9035,7 @@ var HeadingSkeleton = /*#__PURE__*/forwardRef(function TextSkeleton(props, ref)
8876
9035
  size = _props$size3 === void 0 ? 2 : _props$size3,
8877
9036
  restProps = _objectWithoutPropertiesLoose(props, _excluded3);
8878
9037
 
8879
- var $size = useResponsiveProp(size);
9038
+ var $size = useArrayProp(size);
8880
9039
  return /*#__PURE__*/React.createElement(Root$3, _extends({}, restProps, {
8881
9040
  "$size": $size,
8882
9041
  ref: ref,
@@ -8893,7 +9052,7 @@ var CodeSkeleton = /*#__PURE__*/forwardRef(function TextSkeleton(props, ref) {
8893
9052
  size = _props$size4 === void 0 ? 2 : _props$size4,
8894
9053
  restProps = _objectWithoutPropertiesLoose(props, _excluded4);
8895
9054
 
8896
- var $size = useResponsiveProp(size);
9055
+ var $size = useArrayProp(size);
8897
9056
  return /*#__PURE__*/React.createElement(Root$3, _extends({}, restProps, {
8898
9057
  "$size": $size,
8899
9058
  ref: ref,
@@ -9767,5 +9926,5 @@ var TreeItem = /*#__PURE__*/memo(function TreeItem(props) {
9767
9926
  }, children)));
9768
9927
  });
9769
9928
 
9770
- export { Autocomplete, Avatar, AvatarCounter, AvatarStack, Badge, BoundaryElementProvider, Box, Breadcrumbs, Button, Card, Checkbox, Code, CodeSkeleton, Container, Dialog, DialogContext, DialogProvider, ElementQuery, ErrorBoundary, Flex, Grid, Heading, HeadingSkeleton, Hotkeys, Inline, KBD, Label, LabelSkeleton, Layer, LayerProvider, Menu, MenuButton, MenuDivider, MenuGroup, MenuItem, Popover, Portal, PortalProvider, Radio, RO as ResizeObserver, Select, Skeleton, Spinner, SrOnly, Stack, Switch, Tab, TabList, TabPanel, Text, TextArea, TextInput, TextSkeleton, ThemeColorProvider, ThemeProvider, Toast, ToastProvider, Tooltip, Tree, TreeItem, VirtualList, _hasFocus, _isEnterToClickElement, _isScrollable, _raf, _raf2, attemptFocus, createColorTheme, fillCSSObject, focusFirstDescendant, focusLastDescendant, getResponsiveProp, getResponsiveSpace, hexToRgb, hslToRgb, isFocusable, isHTMLAnchorElement, isHTMLButtonElement, isHTMLElement, isHTMLInputElement, isHTMLSelectElement, isHTMLTextAreaElement, multiply$1 as multiply, parseColor, rem, responsive, responsiveCodeFontStyle, responsiveHeadingFont, responsiveLabelFont, responsiveTextAlignStyle, responsiveTextFont, rgbToHex, rgbToHsl, rgba, screen$1 as screen, studioTheme, useBoundaryElement, useClickOutside, useCustomValidity, useDialog, useElementRect, useForwardedRef, useGlobalKeyDown, useLayer, useMediaIndex, usePortal, usePrefersDark, useResponsiveProp, useRootTheme, useTheme, useToast, useTree };
9929
+ export { Autocomplete, Avatar, AvatarCounter, AvatarStack, Badge, BoundaryElementProvider, Box, Breadcrumbs, Button, Card, Checkbox, Code, CodeSkeleton, Container, Dialog, DialogContext, DialogProvider, ElementQuery, ErrorBoundary, Flex, Grid, Heading, HeadingSkeleton, Hotkeys, Inline, KBD, Label, LabelSkeleton, Layer, LayerProvider, Menu, MenuButton, MenuDivider, MenuGroup, MenuItem, Popover, Portal, PortalProvider, Radio, Select, Skeleton, Spinner, SrOnly, Stack, Switch, Tab, TabList, TabPanel, Text, TextArea, TextInput, TextSkeleton, ThemeColorProvider, ThemeProvider, Toast, ToastProvider, Tooltip, Tree, TreeItem, VirtualList, _ResizeObserver, _elementSizeObserver, _fillCSSObject, _getArrayProp, _getResponsiveSpace, _hasFocus, _isEnterToClickElement, _isScrollable, _raf, _raf2, _responsive, attemptFocus, createColorTheme, focusFirstDescendant, focusLastDescendant, hexToRgb, hslToRgb, isFocusable, isHTMLAnchorElement, isHTMLButtonElement, isHTMLElement, isHTMLInputElement, isHTMLSelectElement, isHTMLTextAreaElement, multiply$1 as multiply, parseColor, rem, responsiveCodeFontStyle, responsiveHeadingFont, responsiveLabelFont, responsiveTextAlignStyle, responsiveTextFont, rgbToHex, rgbToHsl, rgba, screen$1 as screen, studioTheme, useArrayProp, useBoundaryElement, useClickOutside, useCustomValidity, useDialog, useElementRect, useElementSize, useForwardedRef, useGlobalKeyDown, useLayer, useMediaIndex, usePortal, usePrefersDark, useRootTheme, useTheme, useToast, useTree };
9771
9930
  //# sourceMappingURL=sanity-ui.module.js.map