@sanity/ui 0.37.12 → 0.37.14-next.6

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 (269) hide show
  1. package/lib/dts/src/components/autocomplete/autocomplete.d.ts +2 -2
  2. package/lib/dts/src/components/autocomplete/autocomplete.d.ts.map +1 -1
  3. package/lib/dts/src/components/autocomplete/autocomplete.styles.d.ts +1 -1
  4. package/lib/dts/src/components/autocomplete/autocomplete.styles.d.ts.map +1 -1
  5. package/lib/dts/src/components/autocomplete/constants.d.ts +0 -4
  6. package/lib/dts/src/components/autocomplete/constants.d.ts.map +1 -1
  7. package/lib/dts/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  8. package/lib/dts/src/components/dialog/dialog.d.ts.map +1 -1
  9. package/lib/dts/src/components/dialog/styles.d.ts +1 -1
  10. package/lib/dts/src/components/dialog/styles.d.ts.map +1 -1
  11. package/lib/dts/src/components/hotkeys/hotkeys.d.ts.map +1 -1
  12. package/lib/dts/src/components/menu/menuButton.d.ts.map +1 -1
  13. package/lib/dts/src/components/menu/menuGroup.d.ts.map +1 -1
  14. package/lib/dts/src/components/menu/menuItem.d.ts.map +1 -1
  15. package/lib/dts/src/components/skeleton/skeleton.d.ts.map +1 -1
  16. package/lib/dts/src/constants.d.ts +10 -0
  17. package/lib/dts/src/constants.d.ts.map +1 -1
  18. package/lib/dts/src/hooks/_internal/useUnique.d.ts +2 -3
  19. package/lib/dts/src/hooks/_internal/useUnique.d.ts.map +1 -1
  20. package/lib/dts/src/hooks/index.d.ts +2 -1
  21. package/lib/dts/src/hooks/index.d.ts.map +1 -1
  22. package/lib/dts/src/hooks/useArrayProp.d.ts +7 -0
  23. package/lib/dts/src/hooks/useArrayProp.d.ts.map +1 -0
  24. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts +1 -1
  25. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts.map +1 -1
  26. package/lib/dts/src/hooks/useElementSize.d.ts +7 -0
  27. package/lib/dts/src/hooks/useElementSize.d.ts.map +1 -0
  28. package/lib/dts/src/index.d.ts +1 -0
  29. package/lib/dts/src/index.d.ts.map +1 -1
  30. package/lib/dts/src/observers/elementSizeObserver.d.ts +37 -0
  31. package/lib/dts/src/observers/elementSizeObserver.d.ts.map +1 -0
  32. package/lib/dts/src/observers/index.d.ts +3 -0
  33. package/lib/dts/src/observers/index.d.ts.map +1 -0
  34. package/lib/dts/src/observers/resizeObserver.d.ts +5 -0
  35. package/lib/dts/src/observers/resizeObserver.d.ts.map +1 -0
  36. package/lib/dts/src/primitives/_selectable/selectable.d.ts +1 -2
  37. package/lib/dts/src/primitives/_selectable/selectable.d.ts.map +1 -1
  38. package/lib/dts/src/primitives/avatar/avatar.d.ts.map +1 -1
  39. package/lib/dts/src/primitives/avatar/avatarCounter.d.ts +1 -0
  40. package/lib/dts/src/primitives/avatar/avatarCounter.d.ts.map +1 -1
  41. package/lib/dts/src/primitives/avatar/avatarStack.d.ts +1 -0
  42. package/lib/dts/src/primitives/avatar/avatarStack.d.ts.map +1 -1
  43. package/lib/dts/src/primitives/avatar/styles.d.ts.map +1 -1
  44. package/lib/dts/src/primitives/badge/badge.d.ts.map +1 -1
  45. package/lib/dts/src/primitives/box/box.d.ts.map +1 -1
  46. package/lib/dts/src/primitives/button/button.d.ts.map +1 -1
  47. package/lib/dts/src/primitives/card/card.d.ts.map +1 -1
  48. package/lib/dts/src/primitives/code/code.d.ts.map +1 -1
  49. package/lib/dts/src/primitives/container/container.d.ts.map +1 -1
  50. package/lib/dts/src/primitives/container/styles.d.ts.map +1 -1
  51. package/lib/dts/src/primitives/container/types.d.ts +1 -1
  52. package/lib/dts/src/primitives/container/types.d.ts.map +1 -1
  53. package/lib/dts/src/primitives/flex/flex.d.ts.map +1 -1
  54. package/lib/dts/src/primitives/grid/grid.d.ts.map +1 -1
  55. package/lib/dts/src/primitives/heading/heading.d.ts.map +1 -1
  56. package/lib/dts/src/primitives/inline/inline.d.ts.map +1 -1
  57. package/lib/dts/src/primitives/inline/styles.d.ts.map +1 -1
  58. package/lib/dts/src/primitives/inline/types.d.ts +1 -1
  59. package/lib/dts/src/primitives/inline/types.d.ts.map +1 -1
  60. package/lib/dts/src/primitives/kbd/kbd.d.ts.map +1 -1
  61. package/lib/dts/src/primitives/label/label.d.ts.map +1 -1
  62. package/lib/dts/src/primitives/popover/popover.d.ts +6 -5
  63. package/lib/dts/src/primitives/popover/popover.d.ts.map +1 -1
  64. package/lib/dts/src/primitives/popover/{arrow.d.ts → popoverArrow.d.ts} +1 -1
  65. package/lib/dts/src/primitives/popover/popoverArrow.d.ts.map +1 -0
  66. package/lib/dts/src/primitives/popover/popoverCard.d.ts +33 -0
  67. package/lib/dts/src/primitives/popover/popoverCard.d.ts.map +1 -0
  68. package/lib/dts/src/primitives/select/styles.d.ts +5 -1
  69. package/lib/dts/src/primitives/select/styles.d.ts.map +1 -1
  70. package/lib/dts/src/primitives/stack/stack.d.ts.map +1 -1
  71. package/lib/dts/src/primitives/stack/styles.d.ts +1 -1
  72. package/lib/dts/src/primitives/stack/styles.d.ts.map +1 -1
  73. package/lib/dts/src/primitives/text/text.d.ts.map +1 -1
  74. package/lib/dts/src/primitives/textArea/textArea.d.ts.map +1 -1
  75. package/lib/dts/src/primitives/textInput/textInput.d.ts.map +1 -1
  76. package/lib/dts/src/primitives/tooltip/tooltip.d.ts +2 -0
  77. package/lib/dts/src/primitives/tooltip/tooltip.d.ts.map +1 -1
  78. package/lib/dts/src/primitives/tooltip/tooltipArrow.d.ts.map +1 -1
  79. package/lib/dts/src/primitives/types.d.ts +1 -1
  80. package/lib/dts/src/primitives/types.d.ts.map +1 -1
  81. package/lib/dts/src/styles/border/types.d.ts +5 -5
  82. package/lib/dts/src/styles/border/types.d.ts.map +1 -1
  83. package/lib/dts/src/styles/box/types.d.ts +4 -4
  84. package/lib/dts/src/styles/box/types.d.ts.map +1 -1
  85. package/lib/dts/src/styles/flex/flexItemStyle.d.ts.map +1 -1
  86. package/lib/dts/src/styles/flex/types.d.ts +6 -6
  87. package/lib/dts/src/styles/flex/types.d.ts.map +1 -1
  88. package/lib/dts/src/styles/font/responsiveFont.d.ts +1 -1
  89. package/lib/dts/src/styles/font/responsiveFont.d.ts.map +1 -1
  90. package/lib/dts/src/styles/font/types.d.ts +3 -3
  91. package/lib/dts/src/styles/font/types.d.ts.map +1 -1
  92. package/lib/dts/src/styles/grid/types.d.ts +14 -14
  93. package/lib/dts/src/styles/grid/types.d.ts.map +1 -1
  94. package/lib/dts/src/styles/helpers.d.ts +4 -4
  95. package/lib/dts/src/styles/helpers.d.ts.map +1 -1
  96. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts +12 -12
  97. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts.map +1 -1
  98. package/lib/dts/src/styles/input/textInputStyle.d.ts +4 -1
  99. package/lib/dts/src/styles/input/textInputStyle.d.ts.map +1 -1
  100. package/lib/dts/src/styles/margin/types.d.ts +7 -7
  101. package/lib/dts/src/styles/margin/types.d.ts.map +1 -1
  102. package/lib/dts/src/styles/padding/types.d.ts +7 -7
  103. package/lib/dts/src/styles/padding/types.d.ts.map +1 -1
  104. package/lib/dts/src/styles/radius/types.d.ts +1 -1
  105. package/lib/dts/src/styles/radius/types.d.ts.map +1 -1
  106. package/lib/dts/src/styles/shadow/shadowStyle.d.ts.map +1 -1
  107. package/lib/dts/src/styles/shadow/types.d.ts +1 -1
  108. package/lib/dts/src/styles/shadow/types.d.ts.map +1 -1
  109. package/lib/dts/src/theme/lib/theme/fonts.d.ts +1 -3
  110. package/lib/dts/src/theme/lib/theme/fonts.d.ts.map +1 -1
  111. package/lib/dts/src/theme/studioTheme/fonts.d.ts.map +1 -1
  112. package/lib/dts/src/types/index.d.ts +2 -1
  113. package/lib/dts/src/types/index.d.ts.map +1 -1
  114. package/lib/dts/src/types/placement.d.ts +7 -0
  115. package/lib/dts/src/types/placement.d.ts.map +1 -0
  116. package/lib/dts/src/types/text.d.ts +5 -0
  117. package/lib/dts/src/types/text.d.ts.map +1 -0
  118. package/lib/dts/src/utils/elementQuery/elementQuery.d.ts.map +1 -1
  119. package/lib/dts/src/utils/index.d.ts +0 -1
  120. package/lib/dts/src/utils/index.d.ts.map +1 -1
  121. package/lib/dts/src/utils/virtualList/virtualList.d.ts.map +1 -1
  122. package/lib/sanity-ui.js +1214 -1054
  123. package/lib/sanity-ui.js.map +1 -1
  124. package/lib/{sanity-ui.modern.js → sanity-ui.modern.mjs} +1246 -1120
  125. package/lib/sanity-ui.modern.mjs.map +1 -0
  126. package/lib/sanity-ui.module.js +1106 -947
  127. package/lib/sanity-ui.module.js.map +1 -1
  128. package/package.json +11 -12
  129. package/src/__workshop__/color/overview.tsx +9 -11
  130. package/src/components/autocomplete/__workshop__/async.tsx +14 -12
  131. package/src/components/autocomplete/__workshop__/constrainedHeight.tsx +36 -0
  132. package/src/components/autocomplete/autocomplete.styles.tsx +0 -6
  133. package/src/components/autocomplete/autocomplete.tsx +14 -7
  134. package/src/components/autocomplete/constants.ts +3 -8
  135. package/src/components/breadcrumbs/breadcrumbs.tsx +3 -2
  136. package/src/components/dialog/dialog.tsx +17 -9
  137. package/src/components/dialog/styles.ts +3 -3
  138. package/src/components/hotkeys/hotkeys.tsx +3 -1
  139. package/src/components/menu/__workshop__/constrainedInBoundary.tsx +11 -14
  140. package/src/components/menu/__workshop__/groups.tsx +1 -1
  141. package/src/components/menu/menuButton.tsx +21 -13
  142. package/src/components/menu/menuGroup.tsx +3 -2
  143. package/src/components/menu/menuItem.tsx +4 -5
  144. package/src/components/skeleton/skeleton.tsx +10 -1
  145. package/src/components/skeleton/textSkeleton.tsx +7 -7
  146. package/src/constants.ts +17 -0
  147. package/src/hooks/_internal/useUnique.ts +4 -5
  148. package/src/hooks/index.ts +2 -1
  149. package/src/hooks/useArrayProp.ts +23 -0
  150. package/src/hooks/useElementRect/useElementRect.ts +4 -16
  151. package/src/hooks/useElementSize.ts +18 -0
  152. package/src/index.ts +1 -0
  153. package/src/observers/elementSizeObserver.ts +116 -0
  154. package/src/observers/index.ts +2 -0
  155. package/src/{utils → observers}/resizeObserver.ts +1 -4
  156. package/src/primitives/_selectable/selectable.tsx +5 -4
  157. package/src/primitives/avatar/avatar.tsx +7 -5
  158. package/src/primitives/avatar/avatarCounter.tsx +14 -12
  159. package/src/primitives/avatar/avatarStack.tsx +19 -13
  160. package/src/primitives/avatar/styles.ts +2 -2
  161. package/src/primitives/badge/badge.tsx +3 -2
  162. package/src/primitives/box/box.tsx +27 -26
  163. package/src/primitives/button/button.tsx +22 -10
  164. package/src/primitives/card/card.tsx +13 -11
  165. package/src/primitives/checkbox/__workshop__/example.tsx +4 -2
  166. package/src/primitives/checkbox/__workshop__/props.tsx +4 -2
  167. package/src/primitives/checkbox/__workshop__/readOnly.tsx +4 -2
  168. package/src/primitives/code/__workshop__/props.tsx +1 -1
  169. package/src/primitives/code/code.tsx +2 -1
  170. package/src/primitives/container/container.tsx +10 -1
  171. package/src/primitives/container/styles.ts +2 -2
  172. package/src/primitives/container/types.ts +1 -1
  173. package/src/primitives/flex/flex.tsx +6 -5
  174. package/src/primitives/grid/__workshop__/responsive.tsx +13 -12
  175. package/src/primitives/grid/grid.tsx +9 -8
  176. package/src/primitives/heading/__workshop__/opticalAlignment.tsx +19 -7
  177. package/src/primitives/heading/heading.tsx +3 -2
  178. package/src/primitives/inline/inline.tsx +12 -6
  179. package/src/primitives/inline/styles.ts +2 -2
  180. package/src/primitives/inline/types.ts +1 -1
  181. package/src/primitives/kbd/kbd.tsx +2 -1
  182. package/src/primitives/label/label.tsx +4 -3
  183. package/src/primitives/popover/__workshop__/{margins.tsx → MarginsStory.tsx} +1 -1
  184. package/src/primitives/popover/__workshop__/{matchReferenceWidth.tsx → MatchReferenceWidthStory.tsx} +0 -0
  185. package/src/primitives/popover/__workshop__/{plain.tsx → PlainStory.tsx} +13 -14
  186. package/src/primitives/popover/__workshop__/{recursive.tsx → RecursiveStory.tsx} +4 -1
  187. package/src/primitives/popover/__workshop__/RightAlignedStory.tsx +61 -0
  188. package/src/primitives/popover/__workshop__/TestStory.tsx +80 -0
  189. package/src/primitives/popover/__workshop__/index.ts +10 -5
  190. package/src/primitives/popover/popover.tsx +245 -193
  191. package/src/primitives/popover/{arrow.tsx → popoverArrow.tsx} +5 -5
  192. package/src/primitives/popover/popoverCard.tsx +160 -0
  193. package/src/primitives/select/select.tsx +9 -9
  194. package/src/primitives/select/styles.ts +10 -4
  195. package/src/primitives/stack/stack.tsx +2 -1
  196. package/src/primitives/stack/styles.ts +3 -3
  197. package/src/primitives/text/__workshop__/opticalAlignment.tsx +15 -5
  198. package/src/primitives/text/text.tsx +3 -2
  199. package/src/primitives/textArea/__workshop__/plain.tsx +23 -18
  200. package/src/primitives/textArea/textArea.tsx +17 -5
  201. package/src/primitives/textInput/__workshop__/clearButton.tsx +14 -8
  202. package/src/primitives/textInput/__workshop__/index.ts +2 -2
  203. package/src/primitives/textInput/__workshop__/plain.tsx +39 -32
  204. package/src/primitives/textInput/__workshop__/tones.tsx +97 -75
  205. package/src/primitives/textInput/__workshop__/typed.tsx +8 -2
  206. package/src/primitives/textInput/textInput.tsx +43 -12
  207. package/src/primitives/tooltip/__workshop__/props.tsx +7 -1
  208. package/src/primitives/tooltip/tooltip.tsx +162 -85
  209. package/src/primitives/tooltip/tooltipArrow.tsx +25 -10
  210. package/src/primitives/types.ts +1 -1
  211. package/src/styles/border/borderStyle.ts +6 -6
  212. package/src/styles/border/types.ts +5 -5
  213. package/src/styles/box/boxStyle.ts +5 -5
  214. package/src/styles/box/types.ts +4 -4
  215. package/src/styles/flex/flexItemStyle.ts +5 -4
  216. package/src/styles/flex/flexStyle.ts +6 -6
  217. package/src/styles/flex/types.ts +6 -6
  218. package/src/styles/font/responsiveFont.ts +7 -27
  219. package/src/styles/font/textAlignStyle.ts +2 -2
  220. package/src/styles/font/types.ts +4 -3
  221. package/src/styles/grid/gridItemStyle.ts +7 -7
  222. package/src/styles/grid/gridStyle.ts +9 -9
  223. package/src/styles/grid/types.ts +14 -14
  224. package/src/styles/helpers.ts +9 -9
  225. package/src/styles/input/responsiveInputPaddingStyle.ts +24 -27
  226. package/src/styles/input/textInputStyle.ts +89 -79
  227. package/src/styles/margin/marginStyle.ts +8 -8
  228. package/src/styles/margin/marginsStyle.test.ts +1 -1
  229. package/src/styles/margin/types.ts +7 -7
  230. package/src/styles/padding/paddingStyle.test.ts +1 -1
  231. package/src/styles/padding/paddingStyle.ts +8 -8
  232. package/src/styles/padding/types.ts +7 -7
  233. package/src/styles/radius/radiusStyle.ts +2 -2
  234. package/src/styles/radius/types.ts +1 -1
  235. package/src/styles/shadow/shadowStyle.ts +2 -5
  236. package/src/styles/shadow/types.ts +1 -1
  237. package/src/theme/lib/theme/fonts.ts +1 -3
  238. package/src/theme/studioTheme/fonts.ts +5 -9
  239. package/src/types/index.ts +2 -2
  240. package/src/types/placement.ts +18 -0
  241. package/src/types/text.ts +4 -0
  242. package/src/utils/elementQuery/elementQuery.tsx +5 -18
  243. package/src/utils/index.ts +0 -1
  244. package/src/utils/layer/layer.tsx +1 -1
  245. package/src/utils/layer/layerProvider.tsx +2 -2
  246. package/src/utils/virtualList/virtualList.tsx +8 -7
  247. package/lib/dts/src/hooks/useResponsiveProp.d.ts +0 -6
  248. package/lib/dts/src/hooks/useResponsiveProp.d.ts.map +0 -1
  249. package/lib/dts/src/primitives/popover/arrow.d.ts.map +0 -1
  250. package/lib/dts/src/primitives/popover/modifiers/getPopoverModifiers.d.ts +0 -4
  251. package/lib/dts/src/primitives/popover/modifiers/getPopoverModifiers.d.ts.map +0 -1
  252. package/lib/dts/src/primitives/popover/modifiers/index.d.ts +0 -2
  253. package/lib/dts/src/primitives/popover/modifiers/index.d.ts.map +0 -1
  254. package/lib/dts/src/primitives/popover/modifiers/types.d.ts +0 -18
  255. package/lib/dts/src/primitives/popover/modifiers/types.d.ts.map +0 -1
  256. package/lib/dts/src/primitives/popover/modifiers/usePopoverModifiers.d.ts +0 -4
  257. package/lib/dts/src/primitives/popover/modifiers/usePopoverModifiers.d.ts.map +0 -1
  258. package/lib/dts/src/types/common.d.ts +0 -11
  259. package/lib/dts/src/types/common.d.ts.map +0 -1
  260. package/lib/dts/src/utils/resizeObserver.d.ts +0 -6
  261. package/lib/dts/src/utils/resizeObserver.d.ts.map +0 -1
  262. package/lib/sanity-ui.modern.js.map +0 -1
  263. package/src/hooks/useResponsiveProp.ts +0 -10
  264. package/src/primitives/popover/__workshop__/rightAligned.tsx +0 -57
  265. package/src/primitives/popover/modifiers/getPopoverModifiers.ts +0 -137
  266. package/src/primitives/popover/modifiers/index.ts +0 -1
  267. package/src/primitives/popover/modifiers/types.ts +0 -18
  268. package/src/primitives/popover/modifiers/usePopoverModifiers.ts +0 -58
  269. package/src/types/common.ts +0 -12
@@ -1,44 +1,41 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {getResponsiveProp, rem, responsive} from '../helpers'
2
+ import {rem, _responsive} from '../helpers'
3
3
  import {ThemeProps} from '../types'
4
4
 
5
5
  export interface TextInputResponsivePaddingStyleProps {
6
- $fontSize?: number | number[]
6
+ $fontSize: number[]
7
7
  $iconLeft?: boolean
8
8
  $iconRight?: boolean
9
- $padding?: number | number[]
10
- $space?: number | number[]
9
+ $padding: number[]
10
+ $space: number[]
11
11
  }
12
12
 
13
13
  export function responsiveInputPaddingStyle(
14
14
  props: TextInputResponsivePaddingStyleProps & ThemeProps
15
15
  ): CSSObject[] {
16
- const {$iconLeft, $iconRight, theme} = props
16
+ const {$fontSize, $iconLeft, $iconRight, $padding, $space, theme} = props
17
17
  const {fonts, media, space: spaceScale} = theme.sanity
18
- const padding = getResponsiveProp(props.$padding, [0])
19
- const space = getResponsiveProp(props.$space, [0])
20
- const size = getResponsiveProp(props.$fontSize, [0])
21
- const len = Math.max(padding.length, space.length, size.length)
18
+ const len = Math.max($padding.length, $space.length, $fontSize.length)
22
19
  const _padding: number[] = []
23
20
  const _space: number[] = []
24
- const _size: number[] = []
21
+ const _fontSize: number[] = []
25
22
 
26
23
  for (let i = 0; i < len; i += 1) {
27
- _padding[i] = padding[i] === undefined ? _padding[i - 1] : padding[i]
28
- _space[i] = space[i] === undefined ? _space[i - 1] : space[i]
29
- _size[i] = size[i] === undefined ? _size[i - 1] : size[i]
24
+ _fontSize[i] = $fontSize[i] === undefined ? _fontSize[i - 1] : $fontSize[i]
25
+ _padding[i] = $padding[i] === undefined ? _padding[i - 1] : $padding[i]
26
+ _space[i] = $space[i] === undefined ? _space[i - 1] : $space[i]
30
27
  }
31
28
 
32
- return responsive(media, _padding, (_, i) => {
33
- const fontSize = fonts.text.sizes[_size[i]] || fonts.text.sizes[2]
34
- const emSize = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight
29
+ return _responsive(media, _padding, (_, i) => {
30
+ const size = fonts.text.sizes[_fontSize[i]] || fonts.text.sizes[2]
31
+ const emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight
35
32
  const p = spaceScale[_padding[i]]
36
33
  const s = spaceScale[_space[i]]
37
34
 
38
35
  const styles = {
39
- paddingTop: rem(p - fontSize.ascenderHeight),
36
+ paddingTop: rem(p - size.ascenderHeight),
40
37
  paddingRight: rem(p),
41
- paddingBottom: rem(p - fontSize.descenderHeight),
38
+ paddingBottom: rem(p - size.descenderHeight),
42
39
  paddingLeft: rem(p),
43
40
  }
44
41
 
@@ -51,9 +48,9 @@ export function responsiveInputPaddingStyle(
51
48
 
52
49
  export function responsiveInputPaddingIconsStyle(
53
50
  props: {
54
- padding?: number | number[]
55
- size?: number | number[]
56
- space?: number | number[]
51
+ $fontSize: number[]
52
+ $padding: number[]
53
+ $space: number[]
57
54
  } & ThemeProps
58
55
  ): CSSObject[] {
59
56
  return responsiveInputPaddingStyle({...props, $iconLeft: true, $iconRight: true})
@@ -61,9 +58,9 @@ export function responsiveInputPaddingIconsStyle(
61
58
 
62
59
  export function responsiveInputPaddingIconLeftStyle(
63
60
  props: {
64
- padding?: number | number[]
65
- size?: number | number[]
66
- space?: number | number[]
61
+ $fontSize: number[]
62
+ $padding: number[]
63
+ $space: number[]
67
64
  } & ThemeProps
68
65
  ): CSSObject[] {
69
66
  return responsiveInputPaddingStyle({...props, $iconLeft: true})
@@ -71,9 +68,9 @@ export function responsiveInputPaddingIconLeftStyle(
71
68
 
72
69
  export function responsiveInputPaddingIconRightStyle(
73
70
  props: {
74
- padding?: number | number[]
75
- size?: number | number[]
76
- space?: number | number[]
71
+ $fontSize: number[]
72
+ $padding: number[]
73
+ $space: number[]
77
74
  } & ThemeProps
78
75
  ): CSSObject[] {
79
76
  return responsiveInputPaddingStyle({...props, $iconRight: true})
@@ -1,14 +1,16 @@
1
1
  import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'
2
2
  import {ThemeFontWeightKey} from '../../theme'
3
+ import {CardTone} from '../../types'
3
4
  import {focusRingBorderStyle, focusRingStyle} from '../focusRing'
4
- import {getResponsiveProp, rem, responsive} from '../helpers'
5
+ import {rem, _responsive} from '../helpers'
5
6
  import {ThemeProps} from '../types'
6
7
 
7
8
  /**
8
9
  * @internal
9
10
  */
10
11
  export interface TextInputInputStyleProps {
11
- $fontSize?: number | number[]
12
+ $fontSize: number[]
13
+ $tone: CardTone
12
14
  $weight?: ThemeFontWeightKey
13
15
  }
14
16
 
@@ -19,6 +21,7 @@ export interface TextInputRepresentationStyleProps {
19
21
  $border?: boolean
20
22
  $hasPrefix?: boolean
21
23
  $hasSuffix?: boolean
24
+ $tone: CardTone
22
25
  }
23
26
 
24
27
  const ROOT_STYLE = css`
@@ -36,14 +39,11 @@ export function textInputRootStyle(): FlattenSimpleInterpolation {
36
39
  export function textInputBaseStyle(
37
40
  props: TextInputInputStyleProps & ThemeProps
38
41
  ): FlattenSimpleInterpolation {
39
- const {theme, $weight} = props
42
+ const {theme, $tone, $weight} = props
40
43
  const font = theme.sanity.fonts.text
41
44
  const color = theme.sanity.color.input
42
45
 
43
46
  return css`
44
- --input-fg-color: ${color.default.enabled.fg};
45
- --input-placeholder-color: ${color.default.enabled.placeholder};
46
-
47
47
  appearance: none;
48
48
  background: none;
49
49
  border: 0;
@@ -57,7 +57,6 @@ export function textInputBaseStyle(
57
57
  position: relative;
58
58
  z-index: 1;
59
59
  display: block;
60
- color: var(--input-fg-color);
61
60
 
62
61
  /* NOTE: This is a hack to disable Chrome’s autofill styles */
63
62
  &:-webkit-autofill,
@@ -69,37 +68,44 @@ export function textInputBaseStyle(
69
68
  transition-delay: 86400s /* 24h */;
70
69
  }
71
70
 
72
- &::placeholder {
73
- color: var(--input-placeholder-color);
74
- }
75
-
76
71
  /* &:is(textarea) */
77
72
  &[data-as='textarea'] {
78
73
  resize: none;
79
74
  }
80
75
 
81
- /* enabled */
82
- &:not(:invalid):not(:disabled):not(:read-only) {
76
+ color: var(--input-fg-color);
77
+
78
+ &::placeholder {
79
+ color: var(--input-placeholder-color);
80
+ }
81
+
82
+ &[data-tone='${$tone}'] {
83
83
  --input-fg-color: ${color.default.enabled.fg};
84
84
  --input-placeholder-color: ${color.default.enabled.placeholder};
85
- }
86
85
 
87
- /* disabled */
88
- &:not(:invalid):disabled {
89
- --input-fg-color: ${color.default.disabled.fg};
90
- --input-placeholder-color: ${color.default.disabled.placeholder};
91
- }
86
+ /* enabled */
87
+ &:not(:invalid):not(:disabled):not(:read-only) {
88
+ --input-fg-color: ${color.default.enabled.fg};
89
+ --input-placeholder-color: ${color.default.enabled.placeholder};
90
+ }
92
91
 
93
- /* invalid */
94
- &:invalid {
95
- --input-fg-color: ${color.invalid.enabled.fg};
96
- --input-placeholder-color: ${color.invalid.enabled.placeholder};
97
- }
92
+ /* disabled */
93
+ &:not(:invalid):disabled {
94
+ --input-fg-color: ${color.default.disabled.fg};
95
+ --input-placeholder-color: ${color.default.disabled.placeholder};
96
+ }
98
97
 
99
- /* readOnly */
100
- &:read-only {
101
- --input-fg-color: ${color.default.readOnly.fg};
102
- --input-placeholder-color: ${color.default.readOnly.placeholder};
98
+ /* invalid */
99
+ &:invalid {
100
+ --input-fg-color: ${color.invalid.enabled.fg};
101
+ --input-placeholder-color: ${color.invalid.enabled.placeholder};
102
+ }
103
+
104
+ /* readOnly */
105
+ &:read-only {
106
+ --input-fg-color: ${color.default.readOnly.fg};
107
+ --input-placeholder-color: ${color.default.readOnly.placeholder};
108
+ }
103
109
  }
104
110
  `
105
111
  }
@@ -108,7 +114,7 @@ export function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemePr
108
114
  const {theme} = props
109
115
  const {fonts, media} = theme.sanity
110
116
 
111
- return responsive(media, getResponsiveProp(props.$fontSize, [2]), (sizeIndex) => {
117
+ return _responsive(media, props.$fontSize, (sizeIndex) => {
112
118
  const size = fonts.text.sizes[sizeIndex] || fonts.text.sizes[2]
113
119
 
114
120
  return {
@@ -121,13 +127,11 @@ export function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemePr
121
127
  export function textInputRepresentationStyle(
122
128
  props: TextInputRepresentationStyleProps & ThemeProps
123
129
  ): FlattenSimpleInterpolation {
124
- const {$border, $hasPrefix, $hasSuffix, theme} = props
130
+ const {$border, $hasPrefix, $hasSuffix, $tone, theme} = props
125
131
  const {focusRing, input} = theme.sanity
126
132
  const color = theme.sanity.color.input
127
133
 
128
134
  return css`
129
- --card-bg-color: ${color.default.enabled.bg};
130
- --card-fg-color: ${color.default.enabled.fg};
131
135
  --input-box-shadow: none;
132
136
 
133
137
  position: absolute;
@@ -138,6 +142,7 @@ export function textInputRepresentationStyle(
138
142
  display: block;
139
143
  pointer-events: none;
140
144
  z-index: 0;
145
+
141
146
  background-color: var(--card-bg-color);
142
147
  box-shadow: var(--input-box-shadow);
143
148
 
@@ -146,65 +151,70 @@ export function textInputRepresentationStyle(
146
151
  border-top-right-radius: ${$hasSuffix ? 0 : undefined};
147
152
  border-bottom-right-radius: ${$hasSuffix ? 0 : undefined};
148
153
 
149
- /* enabled */
150
- *:not(:disabled) + && {
151
- --input-box-shadow: ${$border
152
- ? focusRingBorderStyle({color: color.default.enabled.border, width: input.border.width})
153
- : undefined};
154
- }
154
+ &[data-tone='${$tone}'] {
155
+ --card-bg-color: ${color.default.enabled.bg};
156
+ --card-fg-color: ${color.default.enabled.fg};
155
157
 
156
- /* invalid */
157
- *:not(:disabled):invalid + && {
158
- --card-bg-color: ${color.invalid.enabled.bg};
159
- --card-fg-color: ${color.invalid.enabled.fg};
160
- --input-box-shadow: ${$border
161
- ? focusRingBorderStyle({color: color.invalid.enabled.border, width: input.border.width})
162
- : 'none'};
163
- }
164
-
165
- /* focused */
166
- *:not(:disabled):focus + && {
167
- --input-box-shadow: ${focusRingStyle({
168
- border: $border
169
- ? {color: color.default.enabled.border, width: input.border.width}
170
- : undefined,
171
- focusRing,
172
- })};
173
- }
158
+ /* enabled */
159
+ *:not(:disabled) + & {
160
+ --input-box-shadow: ${$border
161
+ ? focusRingBorderStyle({color: color.default.enabled.border, width: input.border.width})
162
+ : undefined};
163
+ }
174
164
 
175
- /* disabled */
176
- *:disabled + && {
177
- --card-bg-color: ${color.default.disabled.bg};
178
- --card-fg-color: ${color.default.disabled.fg};
179
- --input-box-shadow: ${$border
180
- ? focusRingBorderStyle({
181
- color: color.default.disabled.border,
182
- width: input.border.width,
183
- })
184
- : 'none'};
185
- }
165
+ /* invalid */
166
+ *:not(:disabled):invalid + & {
167
+ --card-bg-color: ${color.invalid.enabled.bg};
168
+ --card-fg-color: ${color.invalid.enabled.fg};
169
+ --input-box-shadow: ${$border
170
+ ? focusRingBorderStyle({color: color.invalid.enabled.border, width: input.border.width})
171
+ : 'none'};
172
+ }
186
173
 
187
- /* hovered */
188
- @media (hover: hover) {
189
- *:not(:disabled):not(:read-only):not(:invalid):hover + && {
190
- --card-bg-color: ${color.default.hovered.bg};
191
- --card-fg-color: ${color.default.hovered.fg};
174
+ /* focused */
175
+ *:not(:disabled):focus + & {
176
+ --input-box-shadow: ${focusRingStyle({
177
+ border: $border
178
+ ? {color: color.default.enabled.border, width: input.border.width}
179
+ : undefined,
180
+ focusRing,
181
+ })};
192
182
  }
193
183
 
194
- *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + && {
184
+ /* disabled */
185
+ *:disabled + & {
186
+ --card-bg-color: ${color.default.disabled.bg} !important;
187
+ --card-fg-color: ${color.default.disabled.fg} !important;
195
188
  --input-box-shadow: ${$border
196
189
  ? focusRingBorderStyle({
197
- color: color.default.hovered.border,
190
+ color: color.default.disabled.border,
198
191
  width: input.border.width,
199
192
  })
200
193
  : 'none'};
201
194
  }
202
- }
203
195
 
204
- /* readOnly */
205
- *:read-only + && {
206
- --card-bg-color: ${color.default.readOnly.bg};
207
- --card-fg-color: ${color.default.readOnly.fg};
196
+ /* readOnly */
197
+ *:read-only + & {
198
+ --card-bg-color: ${color.default.readOnly.bg} !important;
199
+ --card-fg-color: ${color.default.readOnly.fg} !important;
200
+ }
201
+
202
+ /* hovered */
203
+ @media (hover: hover) {
204
+ *:not(:disabled):not(:read-only):not(:invalid):hover + & {
205
+ --card-bg-color: ${color.default.hovered.bg};
206
+ --card-fg-color: ${color.default.hovered.fg};
207
+ }
208
+
209
+ *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + & {
210
+ --input-box-shadow: ${$border
211
+ ? focusRingBorderStyle({
212
+ color: color.default.hovered.border,
213
+ width: input.border.width,
214
+ })
215
+ : 'none'};
216
+ }
217
+ }
208
218
  }
209
219
  `
210
220
  }
@@ -1,5 +1,5 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {getResponsiveProp, getResponsiveSpace} from '../helpers'
2
+ import {_getResponsiveSpace} from '../helpers'
3
3
  import {ThemeProps} from '../types'
4
4
  import {ResponsiveMarginStyleProps} from './types'
5
5
 
@@ -9,12 +9,12 @@ export function responsiveMarginStyle(
9
9
  const {theme} = props
10
10
 
11
11
  return [
12
- getResponsiveSpace(theme, ['margin'], getResponsiveProp(props.$margin)),
13
- getResponsiveSpace(theme, ['marginLeft', 'marginRight'], getResponsiveProp(props.$marginX)),
14
- getResponsiveSpace(theme, ['marginTop', 'marginBottom'], getResponsiveProp(props.$marginY)),
15
- getResponsiveSpace(theme, ['marginTop'], getResponsiveProp(props.$marginTop)),
16
- getResponsiveSpace(theme, ['marginRight'], getResponsiveProp(props.$marginRight)),
17
- getResponsiveSpace(theme, ['marginBottom'], getResponsiveProp(props.$marginBottom)),
18
- getResponsiveSpace(theme, ['marginLeft'], getResponsiveProp(props.$marginLeft)),
12
+ _getResponsiveSpace(theme, ['margin'], props.$margin),
13
+ _getResponsiveSpace(theme, ['marginLeft', 'marginRight'], props.$marginX),
14
+ _getResponsiveSpace(theme, ['marginTop', 'marginBottom'], props.$marginY),
15
+ _getResponsiveSpace(theme, ['marginTop'], props.$marginTop),
16
+ _getResponsiveSpace(theme, ['marginRight'], props.$marginRight),
17
+ _getResponsiveSpace(theme, ['marginBottom'], props.$marginBottom),
18
+ _getResponsiveSpace(theme, ['marginLeft'], props.$marginLeft),
19
19
  ].filter(Boolean) as CSSObject[][]
20
20
  }
@@ -6,7 +6,7 @@ const theme: Theme = {sanity: {...restTheme, color: color.light.default}}
6
6
 
7
7
  describe('styles/margin', () => {
8
8
  it('should 1', () => {
9
- const styles = responsiveMarginStyle({$margin: 0, theme})
9
+ const styles = responsiveMarginStyle({$margin: [0], theme})
10
10
 
11
11
  expect(styles).toEqual([[{margin: 0}]])
12
12
  })
@@ -1,9 +1,9 @@
1
1
  export interface ResponsiveMarginStyleProps {
2
- $margin?: number | number[]
3
- $marginX?: number | number[]
4
- $marginY?: number | number[]
5
- $marginTop?: number | number[]
6
- $marginRight?: number | number[]
7
- $marginBottom?: number | number[]
8
- $marginLeft?: number | number[]
2
+ $margin?: number[]
3
+ $marginX?: number[]
4
+ $marginY?: number[]
5
+ $marginTop?: number[]
6
+ $marginRight?: number[]
7
+ $marginBottom?: number[]
8
+ $marginLeft?: number[]
9
9
  }
@@ -6,7 +6,7 @@ const theme: Theme = {sanity: {...restTheme, color: color.light.default}}
6
6
 
7
7
  describe('styles/padding', () => {
8
8
  it('should 1', () => {
9
- const styles = responsivePaddingStyle({$padding: 0, theme})
9
+ const styles = responsivePaddingStyle({$padding: [0], theme})
10
10
 
11
11
  expect(styles).toEqual([[{padding: 0}]])
12
12
  })
@@ -1,5 +1,5 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {getResponsiveProp, getResponsiveSpace} from '../helpers'
2
+ import {_getResponsiveSpace} from '../helpers'
3
3
  import {ThemeProps} from '../types'
4
4
  import {ResponsivePaddingStyleProps} from './types'
5
5
 
@@ -9,12 +9,12 @@ export function responsivePaddingStyle(
9
9
  const {theme} = props
10
10
 
11
11
  return [
12
- getResponsiveSpace(theme, ['padding'], getResponsiveProp(props.$padding)),
13
- getResponsiveSpace(theme, ['paddingLeft', 'paddingRight'], getResponsiveProp(props.$paddingX)),
14
- getResponsiveSpace(theme, ['paddingTop', 'paddingBottom'], getResponsiveProp(props.$paddingY)),
15
- getResponsiveSpace(theme, ['paddingTop'], getResponsiveProp(props.$paddingTop)),
16
- getResponsiveSpace(theme, ['paddingRight'], getResponsiveProp(props.$paddingRight)),
17
- getResponsiveSpace(theme, ['paddingBottom'], getResponsiveProp(props.$paddingBottom)),
18
- getResponsiveSpace(theme, ['paddingLeft'], getResponsiveProp(props.$paddingLeft)),
12
+ _getResponsiveSpace(theme, ['padding'], props.$padding),
13
+ _getResponsiveSpace(theme, ['paddingLeft', 'paddingRight'], props.$paddingX),
14
+ _getResponsiveSpace(theme, ['paddingTop', 'paddingBottom'], props.$paddingY),
15
+ _getResponsiveSpace(theme, ['paddingTop'], props.$paddingTop),
16
+ _getResponsiveSpace(theme, ['paddingRight'], props.$paddingRight),
17
+ _getResponsiveSpace(theme, ['paddingBottom'], props.$paddingBottom),
18
+ _getResponsiveSpace(theme, ['paddingLeft'], props.$paddingLeft),
19
19
  ].filter(Boolean) as CSSObject[][]
20
20
  }
@@ -2,11 +2,11 @@
2
2
  * @internal
3
3
  */
4
4
  export interface ResponsivePaddingStyleProps {
5
- $padding?: number | number[]
6
- $paddingX?: number | number[]
7
- $paddingY?: number | number[]
8
- $paddingTop?: number | number[]
9
- $paddingRight?: number | number[]
10
- $paddingBottom?: number | number[]
11
- $paddingLeft?: number | number[]
5
+ $padding?: number[]
6
+ $paddingX?: number[]
7
+ $paddingY?: number[]
8
+ $paddingTop?: number[]
9
+ $paddingRight?: number[]
10
+ $paddingBottom?: number[]
11
+ $paddingLeft?: number[]
12
12
  }
@@ -1,5 +1,5 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {getResponsiveProp, rem, responsive} from '../helpers'
2
+ import {rem, _responsive} from '../helpers'
3
3
  import {ThemeProps} from '../types'
4
4
  import {ResponsiveRadiusStyleProps} from './types'
5
5
 
@@ -7,7 +7,7 @@ export function responsiveRadiusStyle(props: ResponsiveRadiusStyleProps & ThemeP
7
7
  const {theme} = props
8
8
  const {media, radius} = theme.sanity
9
9
 
10
- return responsive(media, getResponsiveProp(props.$radius), (radiusIndex) => ({
10
+ return _responsive(media, props.$radius, (radiusIndex) => ({
11
11
  borderRadius: rem(radius[radiusIndex]),
12
12
  }))
13
13
  }
@@ -2,5 +2,5 @@
2
2
  * @internal
3
3
  */
4
4
  export interface ResponsiveRadiusStyleProps {
5
- $radius?: number | number[]
5
+ $radius: number[]
6
6
  }
@@ -1,8 +1,7 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {getResponsiveProp} from '..'
3
2
  import {EMPTY_RECORD} from '../../constants'
4
3
  import {BoxShadow, ThemeShadow} from '../../theme'
5
- import {rem, responsive} from '../helpers'
4
+ import {rem, _responsive} from '../helpers'
6
5
  import {ThemeProps} from '../types'
7
6
  import {ResponsiveShadowStyleProps} from './types'
8
7
 
@@ -25,7 +24,5 @@ export function responsiveShadowStyle(props: ResponsiveShadowStyleProps & ThemeP
25
24
  const {theme} = props
26
25
  const {media, shadows} = theme.sanity
27
26
 
28
- return responsive(media, getResponsiveProp(props.$shadow), (shadow) =>
29
- shadowStyle(shadows[shadow])
30
- )
27
+ return _responsive(media, props.$shadow, (shadow) => shadowStyle(shadows[shadow]))
31
28
  }
@@ -2,5 +2,5 @@
2
2
  * @internal
3
3
  */
4
4
  export interface ResponsiveShadowStyleProps {
5
- $shadow?: number | number[]
5
+ $shadow: number[]
6
6
  }
@@ -37,9 +37,7 @@ export interface ThemeFont {
37
37
  family: string
38
38
  weights: ThemeFontWeight
39
39
  sizes: ThemeFontSize[]
40
- /**
41
- * @beta
42
- */
40
+ /** @deprecated No longer supported. */
43
41
  horizontalOffset?: number
44
42
  }
45
43
 
@@ -2,8 +2,7 @@ import {ThemeFonts} from '../lib/theme'
2
2
 
3
3
  export const fonts: ThemeFonts = {
4
4
  code: {
5
- family: '-apple-system-ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace',
6
- horizontalOffset: 0.075,
5
+ family: 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace',
7
6
  weights: {
8
7
  regular: 400,
9
8
  medium: 500,
@@ -56,7 +55,6 @@ export const fonts: ThemeFonts = {
56
55
  heading: {
57
56
  family:
58
57
  '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", Helvetica, Arial, system-ui, sans-serif',
59
- horizontalOffset: 0.075,
60
58
  weights: {
61
59
  regular: 700,
62
60
  medium: 800,
@@ -97,16 +95,16 @@ export const fonts: ThemeFonts = {
97
95
  letterSpacing: 0,
98
96
  },
99
97
  {
100
- ascenderHeight: 9,
101
- descenderHeight: 7,
98
+ ascenderHeight: 8,
99
+ descenderHeight: 8,
102
100
  fontSize: 33,
103
101
  iconSize: 49,
104
102
  lineHeight: 39,
105
103
  letterSpacing: 0,
106
104
  },
107
105
  {
108
- ascenderHeight: 10,
109
- descenderHeight: 8,
106
+ ascenderHeight: 9,
107
+ descenderHeight: 9,
110
108
  fontSize: 38,
111
109
  iconSize: 53,
112
110
  lineHeight: 45,
@@ -117,7 +115,6 @@ export const fonts: ThemeFonts = {
117
115
  label: {
118
116
  family:
119
117
  '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", system-ui, sans-serif',
120
- horizontalOffset: 0.075,
121
118
  weights: {
122
119
  regular: 600,
123
120
  medium: 700,
@@ -170,7 +167,6 @@ export const fonts: ThemeFonts = {
170
167
  text: {
171
168
  family:
172
169
  '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", Helvetica, Arial, system-ui, sans-serif',
173
- horizontalOffset: 0.075,
174
170
  weights: {
175
171
  regular: 400,
176
172
  medium: 500,
@@ -1,5 +1,3 @@
1
- export * from './common'
2
-
3
1
  export * from './avatar'
4
2
  export * from './badge'
5
3
  export * from './box'
@@ -9,5 +7,7 @@ export * from './dialog'
9
7
  export * from './flex'
10
8
  export * from './grid'
11
9
  export * from './gridItem'
10
+ export * from './placement'
12
11
  export * from './popover'
13
12
  export * from './selectable'
13
+ export * from './text'
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Placement of floating UI elements.
3
+ *
4
+ * @public
5
+ */
6
+ export type Placement =
7
+ | 'top'
8
+ | 'top-start'
9
+ | 'top-end'
10
+ | 'right'
11
+ | 'right-start'
12
+ | 'right-end'
13
+ | 'bottom'
14
+ | 'bottom-start'
15
+ | 'bottom-end'
16
+ | 'left'
17
+ | 'left-start'
18
+ | 'left-end'
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @public
3
+ */
4
+ export type TextAlign = 'left' | 'right' | 'center' | 'justify' | 'initial'