@sanity/ui 3.1.14 → 3.2.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 (45) hide show
  1. package/dist/_chunks-cjs/_visual-editing.js +269 -249
  2. package/dist/_chunks-cjs/_visual-editing.js.map +1 -1
  3. package/dist/_chunks-es/_visual-editing.mjs +269 -249
  4. package/dist/_chunks-es/_visual-editing.mjs.map +1 -1
  5. package/dist/_visual-editing.d.mts +66 -1
  6. package/dist/_visual-editing.d.ts +66 -1
  7. package/dist/index.d.mts +86 -1
  8. package/dist/index.d.ts +86 -1
  9. package/dist/index.js +97 -93
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +97 -93
  12. package/dist/index.mjs.map +1 -1
  13. package/package.json +1 -1
  14. package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +51 -0
  15. package/src/core/components/breadcrumbs/breadcrumbs.tsx +7 -3
  16. package/src/core/components/hotkeys/hotkeys.test.tsx +42 -0
  17. package/src/core/components/hotkeys/hotkeys.tsx +7 -3
  18. package/src/core/components/menu/menu.spacing.test.tsx +63 -0
  19. package/src/core/components/menu/menu.tsx +8 -2
  20. package/src/core/components/menu/menuGroup.spacing.test.tsx +69 -0
  21. package/src/core/components/menu/menuGroup.tsx +8 -2
  22. package/src/core/components/menu/menuItem.spacing.test.tsx +59 -0
  23. package/src/core/components/menu/menuItem.tsx +8 -2
  24. package/src/core/components/tab/tabList.test.tsx +48 -0
  25. package/src/core/components/tree/tree.test.tsx +55 -0
  26. package/src/core/components/tree/tree.tsx +10 -4
  27. package/src/core/components/tree/treeGroup.tsx +2 -2
  28. package/src/core/components/tree/treeItem.test.tsx +65 -0
  29. package/src/core/components/tree/treeItem.tsx +8 -2
  30. package/src/core/components/tree/types.ts +4 -0
  31. package/src/core/primitives/box/box.test.tsx +134 -0
  32. package/src/core/primitives/box/box.tsx +18 -6
  33. package/src/core/primitives/button/button.test.tsx +38 -0
  34. package/src/core/primitives/button/button.tsx +8 -3
  35. package/src/core/primitives/grid/grid.test.tsx +78 -0
  36. package/src/core/primitives/grid/grid.tsx +17 -4
  37. package/src/core/primitives/inline/inline.test.tsx +51 -0
  38. package/src/core/primitives/inline/inline.tsx +9 -3
  39. package/src/core/primitives/select/select.test.tsx +52 -0
  40. package/src/core/primitives/select/select.tsx +8 -2
  41. package/src/core/primitives/stack/stack.test.tsx +57 -0
  42. package/src/core/primitives/stack/stack.tsx +7 -2
  43. package/src/core/primitives/textInput/textInput.test.tsx +48 -0
  44. package/src/core/primitives/textInput/textInput.tsx +7 -2
  45. package/src/core/primitives/types.ts +33 -0
@@ -0,0 +1,57 @@
1
+ /** @jest-environment jsdom */
2
+
3
+ import {render} from '../../../../test'
4
+ import {Stack} from './stack'
5
+ import {responsiveStackSpaceStyle} from './styles'
6
+
7
+ jest.mock('./styles', () => {
8
+ const actual = jest.requireActual('./styles')
9
+
10
+ return {
11
+ ...actual,
12
+ responsiveStackSpaceStyle: jest.fn(actual.responsiveStackSpaceStyle),
13
+ }
14
+ })
15
+
16
+ describe('primitives/stack', () => {
17
+ const mockedResponsiveStackSpaceStyle = jest.mocked(responsiveStackSpaceStyle)
18
+ beforeEach(() => {
19
+ mockedResponsiveStackSpaceStyle.mockClear()
20
+ })
21
+
22
+ it('should support `space` and `gap` with the same behavior', () => {
23
+ render(
24
+ <Stack space={2}>
25
+ <span>One</span>
26
+ <span>Two</span>
27
+ </Stack>,
28
+ )
29
+
30
+ expect(mockedResponsiveStackSpaceStyle).toHaveBeenCalledWith(
31
+ expect.objectContaining({$space: [2]}),
32
+ )
33
+ mockedResponsiveStackSpaceStyle.mockClear()
34
+ render(
35
+ <Stack gap={2}>
36
+ <span>One</span>
37
+ <span>Two</span>
38
+ </Stack>,
39
+ )
40
+
41
+ expect(mockedResponsiveStackSpaceStyle).toHaveBeenCalledWith(
42
+ expect.objectContaining({$space: [2]}),
43
+ )
44
+ })
45
+
46
+ it('should prefer `gap` over `space` when both are provided', () => {
47
+ render(
48
+ <Stack gap={3} space={1}>
49
+ <span>One</span>
50
+ <span>Two</span>
51
+ </Stack>,
52
+ )
53
+ expect(mockedResponsiveStackSpaceStyle).toHaveBeenCalledWith(
54
+ expect.objectContaining({$space: [3]}),
55
+ )
56
+ })
57
+ })
@@ -10,6 +10,10 @@ import {responsiveStackSpaceStyle, ResponsiveStackSpaceStyleProps, stackBaseStyl
10
10
  */
11
11
  export interface StackProps extends BoxProps {
12
12
  as?: React.ElementType | keyof React.JSX.IntrinsicElements
13
+ gap?: number | number[]
14
+ /**
15
+ * @deprecated Use `gap` instead. `space` will be removed in v4.
16
+ */
13
17
  space?: number | number[]
14
18
  }
15
19
 
@@ -27,14 +31,15 @@ export const Stack = forwardRef(function Stack(
27
31
  props: StackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,
28
32
  ref: React.ForwardedRef<HTMLDivElement>,
29
33
  ) {
30
- const {as, space, ...restProps} = props
34
+ const {as, gap, space: deprecated_space, ...restProps} = props
35
+ const spacing = gap === undefined ? deprecated_space : gap
31
36
 
32
37
  return (
33
38
  <StyledStack
34
39
  data-as={typeof as === 'string' ? as : undefined}
35
40
  data-ui="Stack"
36
41
  {...restProps}
37
- $space={_getArrayProp(space)}
42
+ $space={_getArrayProp(spacing)}
38
43
  forwardedAs={as}
39
44
  ref={ref}
40
45
  />
@@ -0,0 +1,48 @@
1
+ /** @jest-environment jsdom */
2
+
3
+ import {render} from '../../../../test'
4
+ import {responsiveInputPaddingStyle} from '../../styles/internal'
5
+ import {TextInput} from './textInput'
6
+
7
+ jest.mock('../../styles/internal', () => {
8
+ const actual = jest.requireActual('../../styles/internal')
9
+
10
+ return {
11
+ ...actual,
12
+ responsiveInputPaddingStyle: jest.fn(actual.responsiveInputPaddingStyle),
13
+ }
14
+ })
15
+
16
+ describe('primitives/textInput', () => {
17
+ const mockedResponsiveInputPaddingStyle = jest.mocked(responsiveInputPaddingStyle)
18
+
19
+ beforeEach(() => {
20
+ mockedResponsiveInputPaddingStyle.mockClear()
21
+ })
22
+
23
+ it('should support `space` and `gap` with the same behavior', () => {
24
+ render(<TextInput icon={() => null} space={2} />)
25
+
26
+ expect(mockedResponsiveInputPaddingStyle).toHaveBeenCalledWith(
27
+ expect.objectContaining({$space: [2]}),
28
+ )
29
+
30
+ mockedResponsiveInputPaddingStyle.mockClear()
31
+ render(<TextInput gap={2} icon={() => null} />)
32
+
33
+ expect(mockedResponsiveInputPaddingStyle).toHaveBeenCalledWith(
34
+ expect.objectContaining({$space: [2]}),
35
+ )
36
+ })
37
+
38
+ it('should prefer `gap` over `space` when both are provided', () => {
39
+ render(<TextInput gap={3} icon={() => null} space={1} />)
40
+
41
+ expect(mockedResponsiveInputPaddingStyle).toHaveBeenCalledWith(
42
+ expect.objectContaining({$space: [3]}),
43
+ )
44
+ expect(mockedResponsiveInputPaddingStyle).not.toHaveBeenCalledWith(
45
+ expect.objectContaining({$space: [1]}),
46
+ )
47
+ })
48
+ })
@@ -74,7 +74,11 @@ export interface TextInputProps {
74
74
  padding?: number | number[]
75
75
  prefix?: React.ReactNode
76
76
  radius?: Radius | Radius[]
77
+ /**
78
+ * @deprecated Use `gap` instead. `space` will be removed in v4.
79
+ */
77
80
  space?: number | number[]
81
+ gap?: number | number[]
78
82
  suffix?: React.ReactNode
79
83
  type?: TextInputType
80
84
  weight?: ThemeFontWeightKey
@@ -162,6 +166,7 @@ export const TextInput = forwardRef(function TextInput(
162
166
  clearButton,
163
167
  disabled = false,
164
168
  fontSize: fontSizeProp = 2,
169
+ gap,
165
170
  icon: IconComponent,
166
171
  iconRight: IconRightComponent,
167
172
  onClear,
@@ -169,7 +174,7 @@ export const TextInput = forwardRef(function TextInput(
169
174
  prefix,
170
175
  radius: radiusProp = 2,
171
176
  readOnly,
172
- space: spaceProp = 3,
177
+ space: deprecated_space = 3,
173
178
  suffix,
174
179
  customValidity,
175
180
  type = 'text',
@@ -183,7 +188,7 @@ export const TextInput = forwardRef(function TextInput(
183
188
  const fontSize = _getArrayProp(fontSizeProp)
184
189
  const padding = _getArrayProp(paddingProp)
185
190
  const radius = _getArrayProp(radiusProp)
186
- const space = _getArrayProp(spaceProp)
191
+ const space = _getArrayProp(gap === undefined ? deprecated_space : gap)
187
192
 
188
193
  // Transient properties
189
194
  const $hasClearButton = Boolean(clearButton)
@@ -66,22 +66,55 @@ export interface ResponsiveGridProps {
66
66
  autoRows?: GridAutoRows | GridAutoRows[]
67
67
  autoCols?: GridAutoCols | GridAutoCols[]
68
68
  autoFlow?: GridAutoFlow | GridAutoFlow[]
69
+
70
+ /**
71
+ * @deprecated Use `gridTemplateColumns` instead. `columns` will be removed in v4.
72
+ */
69
73
  columns?: number | number[]
74
+ gridTemplateColumns?: number | number[]
70
75
  gap?: number | number[]
71
76
  gapX?: number | number[]
72
77
  gapY?: number | number[]
78
+ /**
79
+ * @deprecated Use `gridTemplateRows` instead. `rows` will be removed in v4.
80
+ */
73
81
  rows?: number | number[]
82
+ gridTemplateRows?: number | number[]
74
83
  }
75
84
 
76
85
  /**
77
86
  * @public
78
87
  */
79
88
  export interface ResponsiveGridItemProps {
89
+ gridColumn?: GridItemColumn | GridItemColumn[]
90
+ /**
91
+ * @deprecated Use `gridColumn` instead. `column` will be removed in v4.
92
+ */
80
93
  column?: GridItemColumn | GridItemColumn[]
94
+ gridColumnStart?: GridItemColumnStart | GridItemColumnStart[]
95
+ /**
96
+ * @deprecated Use `gridColumnStart` instead. `columnStart` will be removed in v4.
97
+ */
81
98
  columnStart?: GridItemColumnStart | GridItemColumnStart[]
99
+ gridColumnEnd?: GridItemColumnEnd | GridItemColumnEnd[]
100
+ /**
101
+ * @deprecated Use `gridColumnEnd` instead. `columnEnd` will be removed in v4.
102
+ */
82
103
  columnEnd?: GridItemColumnEnd | GridItemColumnEnd[]
104
+ gridRow?: GridItemRow | GridItemRow[]
105
+ /**
106
+ * @deprecated Use `gridRow` instead. `row` will be removed in v4.
107
+ */
83
108
  row?: GridItemRow | GridItemRow[]
109
+ gridRowStart?: GridItemRowStart | GridItemRowStart[]
110
+ /**
111
+ * @deprecated Use `gridRowStart` instead. `rowStart` will be removed in v4.
112
+ */
84
113
  rowStart?: GridItemRowStart | GridItemRowStart[]
114
+ gridRowEnd?: GridItemRowEnd | GridItemRowEnd[]
115
+ /**
116
+ * @deprecated Use `gridRowEnd` instead. `rowEnd` will be removed in v4.
117
+ */
85
118
  rowEnd?: GridItemRowEnd | GridItemRowEnd[]
86
119
  }
87
120