@sanity/ui 0.37.20 → 0.37.21

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 +1 -2
  9. package/lib/dts/src/hooks/index.d.ts.map +1 -1
  10. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts +1 -1
  11. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts.map +1 -1
  12. package/lib/dts/src/hooks/useResponsiveProp.d.ts +6 -0
  13. package/lib/dts/src/hooks/useResponsiveProp.d.ts.map +1 -0
  14. package/lib/dts/src/index.d.ts +0 -1
  15. package/lib/dts/src/index.d.ts.map +1 -1
  16. package/lib/dts/src/primitives/_selectable/selectable.d.ts +2 -1
  17. package/lib/dts/src/primitives/_selectable/selectable.d.ts.map +1 -1
  18. package/lib/dts/src/primitives/avatar/avatar.d.ts.map +1 -1
  19. package/lib/dts/src/primitives/avatar/avatarCounter.d.ts.map +1 -1
  20. package/lib/dts/src/primitives/avatar/avatarStack.d.ts.map +1 -1
  21. package/lib/dts/src/primitives/avatar/styles.d.ts.map +1 -1
  22. package/lib/dts/src/primitives/badge/badge.d.ts.map +1 -1
  23. package/lib/dts/src/primitives/box/box.d.ts.map +1 -1
  24. package/lib/dts/src/primitives/button/button.d.ts.map +1 -1
  25. package/lib/dts/src/primitives/card/card.d.ts.map +1 -1
  26. package/lib/dts/src/primitives/code/code.d.ts.map +1 -1
  27. package/lib/dts/src/primitives/container/container.d.ts.map +1 -1
  28. package/lib/dts/src/primitives/container/styles.d.ts.map +1 -1
  29. package/lib/dts/src/primitives/container/types.d.ts +1 -1
  30. package/lib/dts/src/primitives/container/types.d.ts.map +1 -1
  31. package/lib/dts/src/primitives/flex/flex.d.ts.map +1 -1
  32. package/lib/dts/src/primitives/grid/grid.d.ts.map +1 -1
  33. package/lib/dts/src/primitives/heading/heading.d.ts.map +1 -1
  34. package/lib/dts/src/primitives/inline/inline.d.ts.map +1 -1
  35. package/lib/dts/src/primitives/inline/styles.d.ts.map +1 -1
  36. package/lib/dts/src/primitives/inline/types.d.ts +1 -1
  37. package/lib/dts/src/primitives/inline/types.d.ts.map +1 -1
  38. package/lib/dts/src/primitives/kbd/kbd.d.ts.map +1 -1
  39. package/lib/dts/src/primitives/label/label.d.ts.map +1 -1
  40. package/lib/dts/src/primitives/popover/popover.d.ts.map +1 -1
  41. package/lib/dts/src/primitives/select/styles.d.ts +1 -5
  42. package/lib/dts/src/primitives/select/styles.d.ts.map +1 -1
  43. package/lib/dts/src/primitives/stack/stack.d.ts.map +1 -1
  44. package/lib/dts/src/primitives/stack/styles.d.ts +1 -1
  45. package/lib/dts/src/primitives/stack/styles.d.ts.map +1 -1
  46. package/lib/dts/src/primitives/text/text.d.ts.map +1 -1
  47. package/lib/dts/src/primitives/textArea/textArea.d.ts.map +1 -1
  48. package/lib/dts/src/primitives/textInput/textInput.d.ts.map +1 -1
  49. package/lib/dts/src/primitives/tooltip/tooltip.d.ts.map +1 -1
  50. package/lib/dts/src/primitives/types.d.ts +1 -1
  51. package/lib/dts/src/primitives/types.d.ts.map +1 -1
  52. package/lib/dts/src/styles/border/types.d.ts +5 -5
  53. package/lib/dts/src/styles/border/types.d.ts.map +1 -1
  54. package/lib/dts/src/styles/box/types.d.ts +4 -4
  55. package/lib/dts/src/styles/box/types.d.ts.map +1 -1
  56. package/lib/dts/src/styles/flex/flexItemStyle.d.ts.map +1 -1
  57. package/lib/dts/src/styles/flex/types.d.ts +6 -6
  58. package/lib/dts/src/styles/flex/types.d.ts.map +1 -1
  59. package/lib/dts/src/styles/font/responsiveFont.d.ts.map +1 -1
  60. package/lib/dts/src/styles/font/types.d.ts +3 -3
  61. package/lib/dts/src/styles/font/types.d.ts.map +1 -1
  62. package/lib/dts/src/styles/grid/types.d.ts +14 -14
  63. package/lib/dts/src/styles/grid/types.d.ts.map +1 -1
  64. package/lib/dts/src/styles/helpers.d.ts +4 -4
  65. package/lib/dts/src/styles/helpers.d.ts.map +1 -1
  66. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts +12 -12
  67. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts.map +1 -1
  68. package/lib/dts/src/styles/input/textInputStyle.d.ts +2 -7
  69. package/lib/dts/src/styles/input/textInputStyle.d.ts.map +1 -1
  70. package/lib/dts/src/styles/margin/types.d.ts +7 -7
  71. package/lib/dts/src/styles/margin/types.d.ts.map +1 -1
  72. package/lib/dts/src/styles/padding/types.d.ts +7 -7
  73. package/lib/dts/src/styles/padding/types.d.ts.map +1 -1
  74. package/lib/dts/src/styles/radius/types.d.ts +1 -1
  75. package/lib/dts/src/styles/radius/types.d.ts.map +1 -1
  76. package/lib/dts/src/styles/shadow/shadowStyle.d.ts.map +1 -1
  77. package/lib/dts/src/styles/shadow/types.d.ts +1 -1
  78. package/lib/dts/src/styles/shadow/types.d.ts.map +1 -1
  79. package/lib/dts/src/theme/studioTheme/color.d.ts.map +1 -1
  80. package/lib/dts/src/utils/elementQuery/elementQuery.d.ts.map +1 -1
  81. package/lib/dts/src/utils/index.d.ts +1 -0
  82. package/lib/dts/src/utils/index.d.ts.map +1 -1
  83. package/lib/dts/src/utils/resizeObserver.d.ts +6 -0
  84. package/lib/dts/src/utils/resizeObserver.d.ts.map +1 -0
  85. package/lib/dts/src/utils/virtualList/virtualList.d.ts.map +1 -1
  86. package/lib/sanity-ui.js +570 -731
  87. package/lib/sanity-ui.js.map +1 -1
  88. package/lib/sanity-ui.modern.js +591 -762
  89. package/lib/sanity-ui.modern.js.map +1 -1
  90. package/lib/sanity-ui.module.js +566 -725
  91. package/lib/sanity-ui.module.js.map +1 -1
  92. package/package.json +11 -11
  93. package/src/__workshop__/color/overview.tsx +11 -9
  94. package/src/components/autocomplete/__workshop__/async.tsx +12 -14
  95. package/src/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -36
  96. package/src/components/autocomplete/autocomplete.tsx +2 -2
  97. package/src/components/breadcrumbs/breadcrumbs.tsx +2 -3
  98. package/src/components/dialog/dialog.tsx +9 -17
  99. package/src/components/dialog/styles.ts +4 -4
  100. package/src/components/hotkeys/hotkeys.tsx +1 -3
  101. package/src/components/menu/__workshop__/constrainedInBoundary.tsx +14 -11
  102. package/src/components/menu/__workshop__/groups.tsx +1 -1
  103. package/src/components/menu/menuGroup.tsx +2 -3
  104. package/src/components/menu/menuItem.tsx +3 -3
  105. package/src/components/skeleton/skeleton.tsx +1 -10
  106. package/src/components/skeleton/textSkeleton.tsx +7 -7
  107. package/src/hooks/index.ts +1 -2
  108. package/src/hooks/useElementRect/useElementRect.ts +16 -4
  109. package/src/hooks/useResponsiveProp.ts +10 -0
  110. package/src/index.ts +0 -1
  111. package/src/primitives/_selectable/selectable.tsx +4 -5
  112. package/src/primitives/avatar/avatar.tsx +5 -7
  113. package/src/primitives/avatar/avatarCounter.tsx +11 -12
  114. package/src/primitives/avatar/avatarStack.tsx +10 -15
  115. package/src/primitives/avatar/styles.ts +2 -2
  116. package/src/primitives/badge/badge.tsx +2 -3
  117. package/src/primitives/box/box.tsx +25 -26
  118. package/src/primitives/button/button.tsx +10 -22
  119. package/src/primitives/card/card.tsx +7 -8
  120. package/src/primitives/checkbox/__workshop__/example.tsx +2 -4
  121. package/src/primitives/checkbox/__workshop__/props.tsx +2 -4
  122. package/src/primitives/checkbox/__workshop__/readOnly.tsx +2 -4
  123. package/src/primitives/code/__workshop__/props.tsx +1 -1
  124. package/src/primitives/code/code.tsx +1 -2
  125. package/src/primitives/container/container.tsx +1 -10
  126. package/src/primitives/container/styles.ts +2 -2
  127. package/src/primitives/container/types.ts +1 -1
  128. package/src/primitives/flex/flex.tsx +5 -6
  129. package/src/primitives/grid/__workshop__/responsive.tsx +12 -13
  130. package/src/primitives/grid/grid.tsx +8 -9
  131. package/src/primitives/heading/__workshop__/opticalAlignment.tsx +7 -19
  132. package/src/primitives/heading/heading.tsx +2 -3
  133. package/src/primitives/inline/inline.tsx +6 -12
  134. package/src/primitives/inline/styles.ts +2 -2
  135. package/src/primitives/inline/types.ts +1 -1
  136. package/src/primitives/kbd/kbd.tsx +1 -2
  137. package/src/primitives/label/label.tsx +3 -4
  138. package/src/primitives/popover/__workshop__/index.ts +5 -10
  139. package/src/primitives/popover/__workshop__/{MarginsStory.tsx → margins.tsx} +1 -1
  140. package/src/primitives/popover/__workshop__/{MatchReferenceWidthStory.tsx → matchReferenceWidth.tsx} +0 -0
  141. package/src/primitives/popover/__workshop__/{PlainStory.tsx → plain.tsx} +14 -12
  142. package/src/primitives/popover/__workshop__/{RecursiveStory.tsx → recursive.tsx} +1 -4
  143. package/src/primitives/popover/__workshop__/rightAligned.tsx +57 -0
  144. package/src/primitives/popover/popover.tsx +10 -29
  145. package/src/primitives/select/select.tsx +9 -9
  146. package/src/primitives/select/styles.ts +4 -10
  147. package/src/primitives/stack/stack.tsx +1 -2
  148. package/src/primitives/stack/styles.ts +3 -3
  149. package/src/primitives/text/__workshop__/opticalAlignment.tsx +5 -15
  150. package/src/primitives/text/text.tsx +2 -3
  151. package/src/primitives/textArea/__workshop__/plain.tsx +18 -23
  152. package/src/primitives/textArea/textArea.tsx +5 -21
  153. package/src/primitives/textInput/__workshop__/clearButton.tsx +8 -14
  154. package/src/primitives/textInput/__workshop__/index.ts +2 -2
  155. package/src/primitives/textInput/__workshop__/plain.tsx +32 -39
  156. package/src/primitives/textInput/__workshop__/tones.tsx +95 -234
  157. package/src/primitives/textInput/__workshop__/typed.tsx +2 -8
  158. package/src/primitives/textInput/textInput.tsx +12 -47
  159. package/src/primitives/tooltip/__workshop__/props.tsx +2 -7
  160. package/src/primitives/tooltip/tooltip.tsx +9 -19
  161. package/src/primitives/types.ts +1 -1
  162. package/src/styles/border/borderStyle.ts +6 -6
  163. package/src/styles/border/types.ts +5 -5
  164. package/src/styles/box/boxStyle.ts +5 -5
  165. package/src/styles/box/types.ts +4 -4
  166. package/src/styles/flex/flexItemStyle.ts +4 -5
  167. package/src/styles/flex/flexStyle.ts +6 -6
  168. package/src/styles/flex/types.ts +6 -6
  169. package/src/styles/font/responsiveFont.ts +4 -2
  170. package/src/styles/font/textAlignStyle.ts +2 -2
  171. package/src/styles/font/types.ts +3 -4
  172. package/src/styles/grid/gridItemStyle.ts +7 -7
  173. package/src/styles/grid/gridStyle.ts +9 -9
  174. package/src/styles/grid/types.ts +14 -14
  175. package/src/styles/helpers.ts +9 -9
  176. package/src/styles/input/responsiveInputPaddingStyle.ts +27 -24
  177. package/src/styles/input/textInputStyle.ts +80 -92
  178. package/src/styles/margin/marginStyle.ts +8 -8
  179. package/src/styles/margin/marginsStyle.test.ts +1 -1
  180. package/src/styles/margin/types.ts +7 -7
  181. package/src/styles/padding/paddingStyle.test.ts +1 -1
  182. package/src/styles/padding/paddingStyle.ts +8 -8
  183. package/src/styles/padding/types.ts +7 -7
  184. package/src/styles/radius/radiusStyle.ts +2 -2
  185. package/src/styles/radius/types.ts +1 -1
  186. package/src/styles/shadow/shadowStyle.ts +5 -2
  187. package/src/styles/shadow/types.ts +1 -1
  188. package/src/theme/studioTheme/color.ts +14 -15
  189. package/src/theme/studioTheme/fonts.ts +4 -4
  190. package/src/utils/elementQuery/elementQuery.tsx +18 -5
  191. package/src/utils/index.ts +1 -0
  192. package/src/utils/layer/layerProvider.tsx +2 -2
  193. package/src/{observers → utils}/resizeObserver.ts +3 -1
  194. package/src/utils/virtualList/virtualList.tsx +1 -3
  195. package/lib/dts/src/hooks/useArrayProp.d.ts +0 -7
  196. package/lib/dts/src/hooks/useArrayProp.d.ts.map +0 -1
  197. package/lib/dts/src/hooks/useElementSize.d.ts +0 -7
  198. package/lib/dts/src/hooks/useElementSize.d.ts.map +0 -1
  199. package/lib/dts/src/observers/elementSizeObserver.d.ts +0 -37
  200. package/lib/dts/src/observers/elementSizeObserver.d.ts.map +0 -1
  201. package/lib/dts/src/observers/index.d.ts +0 -3
  202. package/lib/dts/src/observers/index.d.ts.map +0 -1
  203. package/lib/dts/src/observers/resizeObserver.d.ts +0 -5
  204. package/lib/dts/src/observers/resizeObserver.d.ts.map +0 -1
  205. package/src/hooks/useArrayProp.ts +0 -23
  206. package/src/hooks/useElementSize.ts +0 -18
  207. package/src/observers/elementSizeObserver.ts +0 -116
  208. package/src/observers/index.ts +0 -2
  209. package/src/primitives/popover/__workshop__/RightAlignedStory.tsx +0 -60
  210. package/src/primitives/popover/__workshop__/TestStory.tsx +0 -79
@@ -14,24 +14,24 @@ import {
14
14
  * @internal
15
15
  */
16
16
  export interface ResponsiveGridStyleProps {
17
- $autoRows: GridAutoRows[]
18
- $autoCols: GridAutoCols[]
19
- $autoFlow: GridAutoFlow[]
20
- $columns: number[]
21
- $gap: number[]
22
- $gapX: number[]
23
- $gapY: number[]
24
- $rows: number[]
17
+ $autoRows?: GridAutoRows | GridAutoRows[]
18
+ $autoCols?: GridAutoCols | GridAutoCols[]
19
+ $autoFlow?: GridAutoFlow | GridAutoFlow[]
20
+ $columns?: number | number[]
21
+ $gap?: number | number[]
22
+ $gapX?: number | number[]
23
+ $gapY?: number | number[]
24
+ $rows?: number | number[]
25
25
  }
26
26
 
27
27
  /**
28
28
  * @internal
29
29
  */
30
30
  export interface ResponsiveGridItemStyleProps {
31
- $column: GridItemColumn[]
32
- $columnStart: GridItemColumnStart[]
33
- $columnEnd: GridItemColumnEnd[]
34
- $row: GridItemRow[]
35
- $rowStart: GridItemRowStart[]
36
- $rowEnd: GridItemRowEnd[]
31
+ $column?: GridItemColumn | GridItemColumn[]
32
+ $columnStart?: GridItemColumnStart | GridItemColumnStart[]
33
+ $columnEnd?: GridItemColumnEnd | GridItemColumnEnd[]
34
+ $row?: GridItemRow | GridItemRow[]
35
+ $rowStart?: GridItemRowStart | GridItemRowStart[]
36
+ $rowEnd?: GridItemRowEnd | GridItemRowEnd[]
37
37
  }
@@ -5,11 +5,11 @@ import {Theme} from '../theme'
5
5
  /**
6
6
  * @internal
7
7
  */
8
- export function _fillCSSObject(keys: string[], value: string | number | CSSObject): CSSObject {
9
- return keys.reduce<CSSObject>((style, key) => {
10
- style[key] = value
8
+ export function fillCSSObject(propKeys: string[], value: unknown): CSSObject {
9
+ return propKeys.reduce((obj: CSSObject, propKey) => {
10
+ obj[propKey] = value as any
11
11
 
12
- return style
12
+ return obj
13
13
  }, {})
14
14
  }
15
15
 
@@ -25,7 +25,7 @@ export function rem(pixelValue: number): string | 0 {
25
25
  /**
26
26
  * @internal
27
27
  */
28
- export function _responsive<T>(
28
+ export function responsive<T>(
29
29
  media: number[],
30
30
  values: T[],
31
31
  callback: (value: T, index: number, array: T[]) => CSSObject
@@ -42,7 +42,7 @@ export function _responsive<T>(
42
42
  /**
43
43
  * @internal
44
44
  */
45
- export function _getArrayProp<T = number>(val: T | T[] | undefined, defaultVal?: T[]): T[] {
45
+ export function getResponsiveProp<T = number>(val: T | T[] | undefined, defaultVal?: T[]): T[] {
46
46
  if (val === undefined) return defaultVal || EMPTY_ARRAY
47
47
 
48
48
  return Array.isArray(val) ? val : [val]
@@ -51,7 +51,7 @@ export function _getArrayProp<T = number>(val: T | T[] | undefined, defaultVal?:
51
51
  /**
52
52
  * @internal
53
53
  */
54
- export function _getResponsiveSpace(
54
+ export function getResponsiveSpace(
55
55
  theme: Theme,
56
56
  props: string[],
57
57
  spaceIndexes: number[] = EMPTY_ARRAY
@@ -64,7 +64,7 @@ export function _getResponsiveSpace(
64
64
  return null
65
65
  }
66
66
 
67
- return _responsive(theme.sanity.media, spaceIndexes, (spaceIndex) =>
68
- _fillCSSObject(props, rem(theme.sanity.space[spaceIndex]))
67
+ return responsive(theme.sanity.media, spaceIndexes, (spaceIndex) =>
68
+ fillCSSObject(props, rem(theme.sanity.space[spaceIndex]))
69
69
  )
70
70
  }
@@ -1,41 +1,44 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {rem, _responsive} from '../helpers'
2
+ import {getResponsiveProp, rem, responsive} from '../helpers'
3
3
  import {ThemeProps} from '../types'
4
4
 
5
5
  export interface TextInputResponsivePaddingStyleProps {
6
- $fontSize: number[]
6
+ $fontSize?: number | number[]
7
7
  $iconLeft?: boolean
8
8
  $iconRight?: boolean
9
- $padding: number[]
10
- $space: number[]
9
+ $padding?: number | number[]
10
+ $space?: number | number[]
11
11
  }
12
12
 
13
13
  export function responsiveInputPaddingStyle(
14
14
  props: TextInputResponsivePaddingStyleProps & ThemeProps
15
15
  ): CSSObject[] {
16
- const {$fontSize, $iconLeft, $iconRight, $padding, $space, theme} = props
16
+ const {$iconLeft, $iconRight, theme} = props
17
17
  const {fonts, media, space: spaceScale} = theme.sanity
18
- const len = Math.max($padding.length, $space.length, $fontSize.length)
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)
19
22
  const _padding: number[] = []
20
23
  const _space: number[] = []
21
- const _fontSize: number[] = []
24
+ const _size: number[] = []
22
25
 
23
26
  for (let i = 0; i < len; i += 1) {
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]
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]
27
30
  }
28
31
 
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
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
32
35
  const p = spaceScale[_padding[i]]
33
36
  const s = spaceScale[_space[i]]
34
37
 
35
38
  const styles = {
36
- paddingTop: rem(p - size.ascenderHeight),
39
+ paddingTop: rem(p - fontSize.ascenderHeight),
37
40
  paddingRight: rem(p),
38
- paddingBottom: rem(p - size.descenderHeight),
41
+ paddingBottom: rem(p - fontSize.descenderHeight),
39
42
  paddingLeft: rem(p),
40
43
  }
41
44
 
@@ -48,9 +51,9 @@ export function responsiveInputPaddingStyle(
48
51
 
49
52
  export function responsiveInputPaddingIconsStyle(
50
53
  props: {
51
- $fontSize: number[]
52
- $padding: number[]
53
- $space: number[]
54
+ padding?: number | number[]
55
+ size?: number | number[]
56
+ space?: number | number[]
54
57
  } & ThemeProps
55
58
  ): CSSObject[] {
56
59
  return responsiveInputPaddingStyle({...props, $iconLeft: true, $iconRight: true})
@@ -58,9 +61,9 @@ export function responsiveInputPaddingIconsStyle(
58
61
 
59
62
  export function responsiveInputPaddingIconLeftStyle(
60
63
  props: {
61
- $fontSize: number[]
62
- $padding: number[]
63
- $space: number[]
64
+ padding?: number | number[]
65
+ size?: number | number[]
66
+ space?: number | number[]
64
67
  } & ThemeProps
65
68
  ): CSSObject[] {
66
69
  return responsiveInputPaddingStyle({...props, $iconLeft: true})
@@ -68,9 +71,9 @@ export function responsiveInputPaddingIconLeftStyle(
68
71
 
69
72
  export function responsiveInputPaddingIconRightStyle(
70
73
  props: {
71
- $fontSize: number[]
72
- $padding: number[]
73
- $space: number[]
74
+ padding?: number | number[]
75
+ size?: number | number[]
76
+ space?: number | number[]
74
77
  } & ThemeProps
75
78
  ): CSSObject[] {
76
79
  return responsiveInputPaddingStyle({...props, $iconRight: true})
@@ -1,17 +1,14 @@
1
1
  import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'
2
- import {ThemeColorSchemeKey, ThemeFontWeightKey} from '../../theme'
3
- import {CardTone} from '../../types'
2
+ import {ThemeFontWeightKey} from '../../theme'
4
3
  import {focusRingBorderStyle, focusRingStyle} from '../focusRing'
5
- import {rem, _responsive} from '../helpers'
4
+ import {getResponsiveProp, rem, responsive} from '../helpers'
6
5
  import {ThemeProps} from '../types'
7
6
 
8
7
  /**
9
8
  * @internal
10
9
  */
11
10
  export interface TextInputInputStyleProps {
12
- $fontSize: number[]
13
- $scheme: ThemeColorSchemeKey
14
- $tone: CardTone
11
+ $fontSize?: number | number[]
15
12
  $weight?: ThemeFontWeightKey
16
13
  }
17
14
 
@@ -22,8 +19,6 @@ export interface TextInputRepresentationStyleProps {
22
19
  $border?: boolean
23
20
  $hasPrefix?: boolean
24
21
  $hasSuffix?: boolean
25
- $scheme: ThemeColorSchemeKey
26
- $tone: CardTone
27
22
  }
28
23
 
29
24
  const ROOT_STYLE = css`
@@ -41,11 +36,14 @@ export function textInputRootStyle(): FlattenSimpleInterpolation {
41
36
  export function textInputBaseStyle(
42
37
  props: TextInputInputStyleProps & ThemeProps
43
38
  ): FlattenSimpleInterpolation {
44
- const {theme, $scheme, $tone, $weight} = props
39
+ const {theme, $weight} = props
45
40
  const font = theme.sanity.fonts.text
46
41
  const color = theme.sanity.color.input
47
42
 
48
43
  return css`
44
+ --input-fg-color: ${color.default.enabled.fg};
45
+ --input-placeholder-color: ${color.default.enabled.placeholder};
46
+
49
47
  appearance: none;
50
48
  background: none;
51
49
  border: 0;
@@ -59,6 +57,7 @@ export function textInputBaseStyle(
59
57
  position: relative;
60
58
  z-index: 1;
61
59
  display: block;
60
+ color: var(--input-fg-color);
62
61
 
63
62
  /* NOTE: This is a hack to disable Chrome’s autofill styles */
64
63
  &:-webkit-autofill,
@@ -70,44 +69,37 @@ export function textInputBaseStyle(
70
69
  transition-delay: 86400s /* 24h */;
71
70
  }
72
71
 
72
+ &::placeholder {
73
+ color: var(--input-placeholder-color);
74
+ }
75
+
73
76
  /* &:is(textarea) */
74
77
  &[data-as='textarea'] {
75
78
  resize: none;
76
79
  }
77
80
 
78
- color: var(--input-fg-color);
79
-
80
- &::placeholder {
81
- color: var(--input-placeholder-color);
82
- }
83
-
84
- &[data-scheme='${$scheme}'][data-tone='${$tone}'] {
81
+ /* enabled */
82
+ &:not(:invalid):not(:disabled):not(:read-only) {
85
83
  --input-fg-color: ${color.default.enabled.fg};
86
84
  --input-placeholder-color: ${color.default.enabled.placeholder};
85
+ }
87
86
 
88
- /* enabled */
89
- &:not(:invalid):not(:disabled):not(:read-only) {
90
- --input-fg-color: ${color.default.enabled.fg};
91
- --input-placeholder-color: ${color.default.enabled.placeholder};
92
- }
93
-
94
- /* disabled */
95
- &:not(:invalid):disabled {
96
- --input-fg-color: ${color.default.disabled.fg};
97
- --input-placeholder-color: ${color.default.disabled.placeholder};
98
- }
87
+ /* disabled */
88
+ &:not(:invalid):disabled {
89
+ --input-fg-color: ${color.default.disabled.fg};
90
+ --input-placeholder-color: ${color.default.disabled.placeholder};
91
+ }
99
92
 
100
- /* invalid */
101
- &:invalid {
102
- --input-fg-color: ${color.invalid.enabled.fg};
103
- --input-placeholder-color: ${color.invalid.enabled.placeholder};
104
- }
93
+ /* invalid */
94
+ &:invalid {
95
+ --input-fg-color: ${color.invalid.enabled.fg};
96
+ --input-placeholder-color: ${color.invalid.enabled.placeholder};
97
+ }
105
98
 
106
- /* readOnly */
107
- &:read-only {
108
- --input-fg-color: ${color.default.readOnly.fg};
109
- --input-placeholder-color: ${color.default.readOnly.placeholder};
110
- }
99
+ /* readOnly */
100
+ &:read-only {
101
+ --input-fg-color: ${color.default.readOnly.fg};
102
+ --input-placeholder-color: ${color.default.readOnly.placeholder};
111
103
  }
112
104
  `
113
105
  }
@@ -116,7 +108,7 @@ export function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemePr
116
108
  const {theme} = props
117
109
  const {fonts, media} = theme.sanity
118
110
 
119
- return _responsive(media, props.$fontSize, (sizeIndex) => {
111
+ return responsive(media, getResponsiveProp(props.$fontSize, [2]), (sizeIndex) => {
120
112
  const size = fonts.text.sizes[sizeIndex] || fonts.text.sizes[2]
121
113
 
122
114
  return {
@@ -129,11 +121,13 @@ export function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemePr
129
121
  export function textInputRepresentationStyle(
130
122
  props: TextInputRepresentationStyleProps & ThemeProps
131
123
  ): FlattenSimpleInterpolation {
132
- const {$border, $hasPrefix, $hasSuffix, $scheme, $tone, theme} = props
124
+ const {$border, $hasPrefix, $hasSuffix, theme} = props
133
125
  const {focusRing, input} = theme.sanity
134
126
  const color = theme.sanity.color.input
135
127
 
136
128
  return css`
129
+ --card-bg-color: ${color.default.enabled.bg};
130
+ --card-fg-color: ${color.default.enabled.fg};
137
131
  --input-box-shadow: none;
138
132
 
139
133
  position: absolute;
@@ -144,7 +138,6 @@ export function textInputRepresentationStyle(
144
138
  display: block;
145
139
  pointer-events: none;
146
140
  z-index: 0;
147
-
148
141
  background-color: var(--card-bg-color);
149
142
  box-shadow: var(--input-box-shadow);
150
143
 
@@ -153,70 +146,65 @@ export function textInputRepresentationStyle(
153
146
  border-top-right-radius: ${$hasSuffix ? 0 : undefined};
154
147
  border-bottom-right-radius: ${$hasSuffix ? 0 : undefined};
155
148
 
156
- &[data-scheme='${$scheme}'][data-tone='${$tone}'] {
157
- --card-bg-color: ${color.default.enabled.bg};
158
- --card-fg-color: ${color.default.enabled.fg};
149
+ /* enabled */
150
+ *:not(:disabled) + && {
151
+ --input-box-shadow: ${$border
152
+ ? focusRingBorderStyle({color: color.default.enabled.border, width: input.border.width})
153
+ : undefined};
154
+ }
159
155
 
160
- /* enabled */
161
- *:not(:disabled) + & {
162
- --input-box-shadow: ${$border
163
- ? focusRingBorderStyle({color: color.default.enabled.border, width: input.border.width})
164
- : undefined};
165
- }
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
+ }
166
164
 
167
- /* invalid */
168
- *:not(:disabled):invalid + & {
169
- --card-bg-color: ${color.invalid.enabled.bg};
170
- --card-fg-color: ${color.invalid.enabled.fg};
171
- --input-box-shadow: ${$border
172
- ? focusRingBorderStyle({color: color.invalid.enabled.border, width: input.border.width})
173
- : 'none'};
174
- }
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
+ }
174
+
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
+ }
175
186
 
176
- /* focused */
177
- *:not(:disabled):focus + & {
178
- --input-box-shadow: ${focusRingStyle({
179
- border: $border
180
- ? {color: color.default.enabled.border, width: input.border.width}
181
- : undefined,
182
- focusRing,
183
- })};
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};
184
192
  }
185
193
 
186
- /* disabled */
187
- *:disabled + & {
188
- --card-bg-color: ${color.default.disabled.bg} !important;
189
- --card-fg-color: ${color.default.disabled.fg} !important;
194
+ *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + && {
190
195
  --input-box-shadow: ${$border
191
196
  ? focusRingBorderStyle({
192
- color: color.default.disabled.border,
197
+ color: color.default.hovered.border,
193
198
  width: input.border.width,
194
199
  })
195
200
  : 'none'};
196
201
  }
202
+ }
197
203
 
198
- /* readOnly */
199
- *:read-only + & {
200
- --card-bg-color: ${color.default.readOnly.bg} !important;
201
- --card-fg-color: ${color.default.readOnly.fg} !important;
202
- }
203
-
204
- /* hovered */
205
- @media (hover: hover) {
206
- *:not(:disabled):not(:read-only):not(:invalid):hover + & {
207
- --card-bg-color: ${color.default.hovered.bg};
208
- --card-fg-color: ${color.default.hovered.fg};
209
- }
210
-
211
- *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + & {
212
- --input-box-shadow: ${$border
213
- ? focusRingBorderStyle({
214
- color: color.default.hovered.border,
215
- width: input.border.width,
216
- })
217
- : 'none'};
218
- }
219
- }
204
+ /* readOnly */
205
+ *:read-only + && {
206
+ --card-bg-color: ${color.default.readOnly.bg};
207
+ --card-fg-color: ${color.default.readOnly.fg};
220
208
  }
221
209
  `
222
210
  }
@@ -1,5 +1,5 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {_getResponsiveSpace} from '../helpers'
2
+ import {getResponsiveProp, 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'], 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),
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)),
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[]
3
- $marginX?: number[]
4
- $marginY?: number[]
5
- $marginTop?: number[]
6
- $marginRight?: number[]
7
- $marginBottom?: number[]
8
- $marginLeft?: number[]
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[]
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 {_getResponsiveSpace} from '../helpers'
2
+ import {getResponsiveProp, 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'], 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),
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)),
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[]
6
- $paddingX?: number[]
7
- $paddingY?: number[]
8
- $paddingTop?: number[]
9
- $paddingRight?: number[]
10
- $paddingBottom?: number[]
11
- $paddingLeft?: number[]
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[]
12
12
  }
@@ -1,5 +1,5 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {rem, _responsive} from '../helpers'
2
+ import {getResponsiveProp, 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, props.$radius, (radiusIndex) => ({
10
+ return responsive(media, getResponsiveProp(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[]
5
+ $radius?: number | number[]
6
6
  }
@@ -1,7 +1,8 @@
1
1
  import {CSSObject} from 'styled-components'
2
+ import {getResponsiveProp} from '..'
2
3
  import {EMPTY_RECORD} from '../../constants'
3
4
  import {BoxShadow, ThemeShadow} from '../../theme'
4
- import {rem, _responsive} from '../helpers'
5
+ import {rem, responsive} from '../helpers'
5
6
  import {ThemeProps} from '../types'
6
7
  import {ResponsiveShadowStyleProps} from './types'
7
8
 
@@ -24,5 +25,7 @@ export function responsiveShadowStyle(props: ResponsiveShadowStyleProps & ThemeP
24
25
  const {theme} = props
25
26
  const {media, shadows} = theme.sanity
26
27
 
27
- return _responsive(media, props.$shadow, (shadow) => shadowStyle(shadows[shadow]))
28
+ return responsive(media, getResponsiveProp(props.$shadow), (shadow) =>
29
+ shadowStyle(shadows[shadow])
30
+ )
28
31
  }
@@ -2,5 +2,5 @@
2
2
  * @internal
3
3
  */
4
4
  export interface ResponsiveShadowStyleProps {
5
- $shadow: number[]
5
+ $shadow?: number | number[]
6
6
  }