@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,5 +1,5 @@
1
1
  import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'
2
- import {getResponsiveProp, rem, responsive, ThemeProps} from '../../styles'
2
+ import {rem, _responsive, ThemeProps} from '../../styles'
3
3
  import {
4
4
  focusRingBorderStyle,
5
5
  focusRingStyle,
@@ -100,17 +100,23 @@ function textSize(size: ThemeFontSize) {
100
100
  return {fontSize: rem(size.fontSize), lineHeight: rem(size.lineHeight)}
101
101
  }
102
102
 
103
- function inputTextSizeStyle(props: {$fontSize?: number | number[]} & ThemeProps) {
103
+ function inputTextSizeStyle(props: {$fontSize: number[]} & ThemeProps) {
104
104
  const {theme, $fontSize} = props
105
105
  const {sizes} = theme.sanity.fonts.text
106
106
 
107
- return responsive(theme.sanity.media, getResponsiveProp($fontSize), (sizeIndex) =>
107
+ return _responsive(theme.sanity.media, $fontSize, (sizeIndex) =>
108
108
  textSize(sizes[sizeIndex] || sizes[2])
109
109
  )
110
110
  }
111
111
 
112
112
  function inputStyle(): Array<
113
- | ((props: ResponsiveRadiusStyleProps & ThemeProps) => CSSObject[])
113
+ | ((
114
+ props: ResponsiveRadiusStyleProps & {
115
+ $fontSize: number[]
116
+ $padding: number[]
117
+ $space: number[]
118
+ } & ThemeProps
119
+ ) => CSSObject[])
114
120
  | ((props: ThemeProps) => FlattenSimpleInterpolation)
115
121
  > {
116
122
  return [
@@ -1,5 +1,6 @@
1
1
  import React, {forwardRef} from 'react'
2
2
  import styled from 'styled-components'
3
+ import {useArrayProp} from '../../hooks'
3
4
  import {Box, BoxProps} from '../box'
4
5
  import {stackBaseStyle, responsiveStackSpaceStyle, ResponsiveStackSpaceStyleProps} from './styles'
5
6
 
@@ -27,7 +28,7 @@ export const Stack = forwardRef(function Stack(
27
28
  data-as={typeof as === 'string' ? as : undefined}
28
29
  data-ui="Stack"
29
30
  {...restProps}
30
- $space={space}
31
+ $space={useArrayProp(space)}
31
32
  forwardedAs={as}
32
33
  ref={ref}
33
34
  />
@@ -1,8 +1,8 @@
1
1
  import {CSSObject} from 'styled-components'
2
- import {getResponsiveProp, rem, responsive, ThemeProps} from '../../styles'
2
+ import {rem, _responsive, ThemeProps} from '../../styles'
3
3
 
4
4
  export interface ResponsiveStackSpaceStyleProps {
5
- $space?: number | number[]
5
+ $space: number[]
6
6
  }
7
7
 
8
8
  const BASE_STYLE: CSSObject = {
@@ -26,7 +26,7 @@ export function responsiveStackSpaceStyle(
26
26
  const {theme} = props
27
27
  const {media, space} = theme.sanity
28
28
 
29
- return responsive(media, getResponsiveProp(props.$space), (spaceIndex) => ({
29
+ return _responsive(media, props.$space, (spaceIndex) => ({
30
30
  gridGap: rem(space[spaceIndex]),
31
31
  }))
32
32
  }
@@ -8,31 +8,41 @@ export default function OpticalAlignment() {
8
8
  <Stack space={1}>
9
9
  <Flex>
10
10
  <Card padding={0} scheme="dark">
11
- <Text size={4}>Hamburgefonstiv M</Text>
11
+ <Text accent size={4}>
12
+ Hamburgefonstiv M
13
+ </Text>
12
14
  </Card>
13
15
  </Flex>
14
16
 
15
17
  <Flex>
16
18
  <Card padding={0} scheme="dark">
17
- <Text size={3}>Hamburgefonstiv M</Text>
19
+ <Text accent size={3}>
20
+ Hamburgefonstiv M
21
+ </Text>
18
22
  </Card>
19
23
  </Flex>
20
24
 
21
25
  <Flex>
22
26
  <Card padding={0} scheme="dark">
23
- <Text size={2}>Hamburgefonstiv M</Text>
27
+ <Text accent size={2}>
28
+ Hamburgefonstiv M
29
+ </Text>
24
30
  </Card>
25
31
  </Flex>
26
32
 
27
33
  <Flex>
28
34
  <Card padding={0} scheme="dark">
29
- <Text size={1}>Hamburgefonstiv M</Text>
35
+ <Text accent size={1}>
36
+ Hamburgefonstiv M
37
+ </Text>
30
38
  </Card>
31
39
  </Flex>
32
40
 
33
41
  <Flex>
34
42
  <Card padding={0} scheme="dark">
35
- <Text size={0}>Hamburgefonstiv M</Text>
43
+ <Text accent size={0}>
44
+ Hamburgefonstiv M
45
+ </Text>
36
46
  </Card>
37
47
  </Flex>
38
48
 
@@ -1,5 +1,6 @@
1
1
  import React, {forwardRef} from 'react'
2
2
  import styled from 'styled-components'
3
+ import {useArrayProp} from '../../hooks'
3
4
  import {
4
5
  ResponsiveFontStyleProps,
5
6
  responsiveTextAlignStyle,
@@ -69,10 +70,10 @@ export const Text = forwardRef(function Text(
69
70
  data-ui="Text"
70
71
  {...restProps}
71
72
  $accent={accent}
72
- $align={align}
73
+ $align={useArrayProp(align)}
73
74
  $muted={muted}
74
75
  ref={ref}
75
- $size={size}
76
+ $size={useArrayProp(size)}
76
77
  $weight={weight}
77
78
  >
78
79
  <span>{children}</span>
@@ -1,7 +1,8 @@
1
- import {Container, Flex, Stack, Text, TextArea} from '@sanity/ui'
1
+ import {Card, Container, Flex, Stack, Text, TextArea} from '@sanity/ui'
2
2
  import {useBoolean, useSelect, useText} from '@sanity/ui-workshop'
3
3
  import React from 'react'
4
4
  import {
5
+ WORKSHOP_CARD_TONE_OPTIONS,
5
6
  WORKSHOP_FONT_WEIGHT_OPTIONS,
6
7
  WORKSHOP_RADIUS_OPTIONS,
7
8
  WORKSHOP_SPACE_OPTIONS,
@@ -9,6 +10,8 @@ import {
9
10
  } from '../../../__workshop__/constants'
10
11
 
11
12
  export default function PlainStory() {
13
+ const tone = useSelect('Tone', WORKSHOP_CARD_TONE_OPTIONS)
14
+
12
15
  const border = useBoolean('Border', true, 'Props')
13
16
  const customValidity = useText('Custom validity', '', 'Props') || undefined
14
17
  const disabled = useBoolean('Disabled', false, 'Props')
@@ -22,23 +25,25 @@ export default function PlainStory() {
22
25
  return (
23
26
  <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
24
27
  <Container width={0}>
25
- <Stack space={3}>
26
- <Text as="label" htmlFor="text-area-example" size={1} weight="semibold">
27
- TextArea
28
- </Text>
29
- <TextArea
30
- border={border}
31
- customValidity={customValidity}
32
- disabled={disabled}
33
- fontSize={fontSize}
34
- id="text-area-example"
35
- padding={padding}
36
- placeholder={placeholder}
37
- radius={radius}
38
- readOnly={readOnly}
39
- weight={weight}
40
- />
41
- </Stack>
28
+ <Card padding={3} tone={tone}>
29
+ <Stack space={3}>
30
+ <Text as="label" htmlFor="text-area-example" size={1} weight="semibold">
31
+ TextArea
32
+ </Text>
33
+ <TextArea
34
+ border={border}
35
+ customValidity={customValidity}
36
+ disabled={disabled}
37
+ fontSize={fontSize}
38
+ id="text-area-example"
39
+ padding={padding}
40
+ placeholder={placeholder}
41
+ radius={radius}
42
+ readOnly={readOnly}
43
+ weight={weight}
44
+ />
45
+ </Stack>
46
+ </Card>
42
47
  </Container>
43
48
  </Flex>
44
49
  )
@@ -1,6 +1,6 @@
1
1
  import React, {forwardRef} from 'react'
2
2
  import styled from 'styled-components'
3
- import {useForwardedRef, useCustomValidity} from '../../hooks'
3
+ import {useForwardedRef, useCustomValidity, useArrayProp} from '../../hooks'
4
4
  import {
5
5
  responsiveInputPaddingStyle,
6
6
  responsiveRadiusStyle,
@@ -13,7 +13,7 @@ import {
13
13
  textInputFontSizeStyle,
14
14
  textInputRepresentationStyle,
15
15
  } from '../../styles/internal'
16
- import {ThemeFontWeightKey} from '../../theme'
16
+ import {ThemeFontWeightKey, useRootTheme} from '../../theme'
17
17
  import {ResponsiveRadiusProps} from '../types'
18
18
 
19
19
  /**
@@ -61,11 +61,14 @@ export const TextArea = forwardRef(function TextArea(
61
61
  fontSize = 2,
62
62
  padding = 3,
63
63
  radius = 1,
64
+ weight,
64
65
  ...restProps
65
66
  } = props
66
67
 
67
68
  const ref = useForwardedRef(forwardedRef)
68
69
 
70
+ const rootTheme = useRootTheme()
71
+
69
72
  useCustomValidity(ref, customValidity)
70
73
 
71
74
  return (
@@ -73,13 +76,26 @@ export const TextArea = forwardRef(function TextArea(
73
76
  <InputRoot>
74
77
  <Input
75
78
  data-as="textarea"
79
+ data-scheme={rootTheme.scheme}
80
+ data-tone={rootTheme.tone}
76
81
  {...restProps}
77
- $fontSize={fontSize}
78
- $padding={padding}
82
+ $fontSize={useArrayProp(fontSize)}
83
+ $padding={useArrayProp(padding)}
84
+ $scheme={rootTheme.scheme}
85
+ $space={useArrayProp(0)}
86
+ $tone={rootTheme.tone}
87
+ $weight={weight}
79
88
  disabled={disabled}
80
89
  ref={ref}
81
90
  />
82
- <Presentation $border={border} $radius={radius} />
91
+ <Presentation
92
+ $border={border}
93
+ $radius={useArrayProp(radius)}
94
+ $scheme={rootTheme.scheme}
95
+ $tone={rootTheme.tone}
96
+ data-scheme={rootTheme.scheme}
97
+ data-tone={rootTheme.tone}
98
+ />
83
99
  </InputRoot>
84
100
  </Root>
85
101
  )
@@ -1,7 +1,10 @@
1
- import {TextInput} from '@sanity/ui'
1
+ import {Box, TextInput} from '@sanity/ui'
2
+ import {useText} from '@sanity/ui-workshop'
2
3
  import React, {useCallback, useState} from 'react'
3
4
 
4
5
  export default function ClearButtonStory() {
6
+ const customValidity = useText('Custom validitiy')
7
+
5
8
  const [value, setValue] = useState('')
6
9
 
7
10
  const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {
@@ -13,12 +16,15 @@ export default function ClearButtonStory() {
13
16
  }, [])
14
17
 
15
18
  return (
16
- <TextInput
17
- clearButton
18
- onChange={handleChange}
19
- onClear={handleClear}
20
- placeholder="Enter text"
21
- value={value}
22
- />
19
+ <Box padding={4}>
20
+ <TextInput
21
+ clearButton
22
+ customValidity={customValidity}
23
+ onChange={handleChange}
24
+ onClear={handleClear}
25
+ placeholder="Enter text"
26
+ value={value}
27
+ />
28
+ </Box>
23
29
  )
24
30
  }
@@ -13,8 +13,8 @@ export default defineScope('primitives/text-input', 'TextInput', [
13
13
  component: lazy(() => import('./customValidity')),
14
14
  },
15
15
  {
16
- name: 'types',
17
- title: 'Types',
16
+ name: 'typed',
17
+ title: 'Typed',
18
18
  component: lazy(() => import('./typed')),
19
19
  },
20
20
  {
@@ -30,15 +30,33 @@ const typingPerfTest: PerfTestProps<HTMLInputElement> = {
30
30
  export default function PlainStory() {
31
31
  const {ref, Wrapper} = usePerfTest(typingPerfTest)
32
32
 
33
+ return (
34
+ <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
35
+ <Container width={0}>
36
+ <Stack space={3}>
37
+ <Text as="label" htmlFor="text-input-example" size={1} weight="semibold">
38
+ TextInput
39
+ </Text>
40
+ <Wrapper>
41
+ <TextInputTest inputRef={ref} />
42
+ </Wrapper>
43
+ </Stack>
44
+ </Container>
45
+ </Flex>
46
+ )
47
+ }
48
+
49
+ function TextInputTest(props: {inputRef: React.Ref<HTMLInputElement>}) {
50
+ const {inputRef: ref} = props
33
51
  const border = useBoolean('Border', true, 'Props')
34
52
  const customValidity = useText('Custom validity', '', 'Props') || undefined
35
53
  const disabled = useBoolean('Disabled', false, 'Props')
36
54
  const fontSize = useSelect('Font size', WORKSHOP_TEXT_FONT_SIZE_OPTIONS, 2, 'Props')
37
- const icon = useSelect('Icon', WORKSHOP_ICON_SYMBOL_OPTIONS, 'add-circle', 'Props') as IconSymbol
55
+ const icon = useSelect('Icon', WORKSHOP_ICON_SYMBOL_OPTIONS, 'search', 'Props') as IconSymbol
38
56
  const iconRight = useSelect(
39
57
  'Icon (right)',
40
58
  WORKSHOP_ICON_SYMBOL_OPTIONS,
41
- 'add-circle',
59
+ 'close',
42
60
  'Props'
43
61
  ) as IconSymbol
44
62
  const padding = useSelect('Padding', WORKSHOP_SPACE_OPTIONS, 3, 'Props')
@@ -56,35 +74,24 @@ export default function PlainStory() {
56
74
  )
57
75
 
58
76
  return (
59
- <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
60
- <Container width={0}>
61
- <Stack space={3}>
62
- <Text as="label" htmlFor="text-input-example" size={1} weight="semibold">
63
- TextInput
64
- </Text>
65
- <Wrapper>
66
- <TextInput
67
- border={border}
68
- customValidity={customValidity}
69
- disabled={disabled}
70
- fontSize={fontSize}
71
- icon={icon && icons[icon]}
72
- iconRight={iconRight && icons[iconRight]}
73
- id="text-input-example"
74
- name="email"
75
- onChange={handleChange}
76
- padding={padding}
77
- placeholder={placeholder}
78
- radius={radius}
79
- readOnly={readOnly}
80
- ref={ref}
81
- space={space}
82
- value={value}
83
- weight={weight}
84
- />
85
- </Wrapper>
86
- </Stack>
87
- </Container>
88
- </Flex>
77
+ <TextInput
78
+ border={border}
79
+ customValidity={customValidity}
80
+ disabled={disabled}
81
+ fontSize={fontSize}
82
+ icon={icon && icons[icon]}
83
+ iconRight={iconRight && icons[iconRight]}
84
+ id="text-input-example"
85
+ name="email"
86
+ onChange={handleChange}
87
+ padding={padding}
88
+ placeholder={placeholder}
89
+ radius={radius}
90
+ readOnly={readOnly}
91
+ ref={ref}
92
+ space={space}
93
+ value={value}
94
+ weight={weight}
95
+ />
89
96
  )
90
97
  }