@sanity/ui 4.0.0-static.2 → 4.0.0-static.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 (74) hide show
  1. package/dist/css/index.css +2 -1
  2. package/dist/css/index.css.map +1 -0
  3. package/dist/css/index.d.ts +29 -1
  4. package/dist/css/index.js +17965 -50
  5. package/dist/css/index.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.js +14 -16
  8. package/dist/index.js.map +1 -1
  9. package/package.json +38 -48
  10. package/src/core/components/autocomplete/__workshop__/custom.tsx +14 -1
  11. package/src/core/components/autocomplete/__workshop__/example.tsx +12 -1
  12. package/src/core/components/dialog/__workshop__/position.tsx +9 -1
  13. package/src/core/components/dialog/__workshop__/props.tsx +2 -0
  14. package/src/core/components/menu/__workshop__/menuButton.tsx +6 -1
  15. package/src/core/components/menu/__workshop__/tones.tsx +7 -1
  16. package/src/core/components/menu/menu.tsx +1 -1
  17. package/src/core/components/menu/menuButton.tsx +10 -5
  18. package/src/core/components/menu/menuContext.ts +1 -1
  19. package/src/core/components/menu/menuGroup.tsx +7 -4
  20. package/src/core/components/menu/menuItem.tsx +1 -1
  21. package/src/core/components/toast/__workshop__/toast.tsx +2 -0
  22. package/src/core/primitives/avatar/__workshop__/asButton.tsx +8 -1
  23. package/src/core/primitives/avatar/__workshop__/stack.tsx +5 -1
  24. package/src/core/primitives/badge/__workshop__/props.tsx +12 -1
  25. package/src/core/primitives/box/__workshop__/props.tsx +6 -1
  26. package/src/core/primitives/button/__workshop__/props.tsx +22 -0
  27. package/src/core/primitives/button/__workshop__/stacked.tsx +16 -0
  28. package/src/core/primitives/card/__workshop__/props.tsx +10 -0
  29. package/src/core/primitives/card/__workshop__/selected.tsx +1 -1
  30. package/src/core/primitives/card/card.tsx +2 -2
  31. package/src/core/primitives/code/__workshop__/props.tsx +6 -1
  32. package/src/core/primitives/container/__workshop__/example.tsx +6 -1
  33. package/src/core/primitives/flex/__workshop__/example.tsx +7 -1
  34. package/src/core/primitives/heading/__workshop__/plain.tsx +12 -1
  35. package/src/core/primitives/inline/__workshop__/plain.tsx +5 -1
  36. package/src/core/primitives/label/__workshop__/plain.tsx +15 -1
  37. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +13 -1
  38. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +2 -0
  39. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +8 -0
  40. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +7 -1
  41. package/src/core/primitives/popover/__workshop__/TestStory.tsx +6 -0
  42. package/src/core/primitives/popover/popover.tsx +0 -1
  43. package/src/core/primitives/select/__workshop__/plain.tsx +4 -0
  44. package/src/core/primitives/skeleton/__workshop__/delay.tsx +9 -1
  45. package/src/core/primitives/skeleton/__workshop__/skeleton.tsx +9 -1
  46. package/src/core/primitives/spinner/__workshop__/Props.tsx +6 -1
  47. package/src/core/primitives/stack/__workshop__/plain.tsx +4 -1
  48. package/src/core/primitives/text/__workshop__/colored.tsx +8 -1
  49. package/src/core/primitives/text/__workshop__/example.tsx +15 -1
  50. package/src/core/primitives/textArea/__workshop__/plain.tsx +8 -0
  51. package/src/core/primitives/textInput/__workshop__/plain.tsx +34 -4
  52. package/src/core/primitives/textInput/__workshop__/typed.tsx +7 -1
  53. package/src/core/primitives/textInput/textInput.tsx +1 -1
  54. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +2 -0
  55. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +2 -0
  56. package/src/core/primitives/tooltip/__workshop__/props.tsx +12 -0
  57. package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +5 -0
  58. package/src/css/primitives/avatar/avatar.css.ts +9 -5
  59. package/src/css/primitives/card/__workshop__/color.tsx +9 -1
  60. package/src/css/primitives/card/card.css.ts +10 -0
  61. package/src/css/theme/buildCSSTheme.ts +4 -0
  62. package/src/css/types.ts +4 -0
  63. package/src/css/vars.css.ts +4 -0
  64. package/dist/_chunks-cjs/refractor.cjs +0 -22
  65. package/dist/_chunks-cjs/refractor.cjs.map +0 -1
  66. package/dist/css/index.cjs +0 -966
  67. package/dist/css/index.cjs.map +0 -1
  68. package/dist/css/index.d.cts +0 -1370
  69. package/dist/index.cjs +0 -4515
  70. package/dist/index.cjs.map +0 -1
  71. package/dist/index.d.cts +0 -2521
  72. package/dist/theme.cjs +0 -870
  73. package/dist/theme.cjs.map +0 -1
  74. package/dist/theme.d.cts +0 -499
@@ -5,6 +5,7 @@ import {useCallback, useState} from 'react'
5
5
  import {WORKSHOP_TEXT_INPUT_TYPE_OPTIONS} from '$workshop'
6
6
 
7
7
  export default function TypedStory(): React.JSX.Element {
8
+ // @ts-expect-error - TODO: fix this
8
9
  const type = useSelect('Type', WORKSHOP_TEXT_INPUT_TYPE_OPTIONS, 'text')
9
10
 
10
11
  const [value, setValue] = useState('')
@@ -16,7 +17,12 @@ export default function TypedStory(): React.JSX.Element {
16
17
  return (
17
18
  <Box padding={4}>
18
19
  <Container width={1}>
19
- <TextInput onChange={handleChange} type={type} value={value} />
20
+ <TextInput
21
+ onChange={handleChange}
22
+ // @ts-expect-error - TODO: fix this
23
+ type={type}
24
+ value={value}
25
+ />
20
26
  </Container>
21
27
  </Box>
22
28
  )
@@ -99,7 +99,7 @@ export function TextInput<E extends TextInputElementType = typeof DEFAULT_TEXT_I
99
99
  suffix,
100
100
  customValidity,
101
101
  type = 'text',
102
- weight: _width, // eslint-disable-line @typescript-eslint/no-unused-vars
102
+ weight: _width,
103
103
  width,
104
104
  ...rest
105
105
  } = props as TextInputProps<typeof DEFAULT_TEXT_INPUT_ELEMENT>
@@ -25,6 +25,7 @@ export default function CustomPortalStory(): React.JSX.Element {
25
25
  'Content',
26
26
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mollis consectetur malesuada. Sed lobortis est dolor, eget imperdiet velit placerat et. Aenean posuere mi non aliquet iaculis. Donec fermentum pulvinar purus at sagittis. Ut tincidunt massa odio, sed finibus justo ullamcorper id. Nam venenatis justo non ligula elementum cursus. Pellentesque laoreet justo in mollis sagittis. In lacinia ornare ultrices. Suspendisse potenti.',
27
27
  )
28
+ // @ts-expect-error - TODO: fix this
28
29
  const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'top')
29
30
  const portal = useSelect('Portal', PORTAL_OPTIONS)
30
31
  const useBoundaryElement = useBoolean('Use boundary element', true)
@@ -60,6 +61,7 @@ export default function CustomPortalStory(): React.JSX.Element {
60
61
  boundaryElement={useBoundaryElement ? boundaryElement : null}
61
62
  content={content ? <Text size={1}>{content}</Text> : undefined}
62
63
  padding={2}
64
+ // @ts-expect-error - TODO: fix this
63
65
  placement={placement}
64
66
  portal={portal}
65
67
  >
@@ -9,6 +9,7 @@ export default function OverflowingBoundaryStory(): React.JSX.Element {
9
9
  'Content',
10
10
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mollis consectetur malesuada. Sed lobortis est dolor, eget imperdiet velit placerat et. Aenean posuere mi non aliquet iaculis. Donec fermentum pulvinar purus at sagittis. Ut tincidunt massa odio, sed finibus justo ullamcorper id. Nam venenatis justo non ligula elementum cursus. Pellentesque laoreet justo in mollis sagittis. In lacinia ornare ultrices. Suspendisse potenti.',
11
11
  )
12
+ // @ts-expect-error - TODO: fix this
12
13
  const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'top')
13
14
  const portal = useBoolean('Portal', false)
14
15
  const useBoundaryElement = useBoolean('Use boundary element', true)
@@ -56,6 +57,7 @@ export default function OverflowingBoundaryStory(): React.JSX.Element {
56
57
  <Tooltip
57
58
  content={<Text size={1}>{content}</Text>}
58
59
  padding={2}
60
+ // @ts-expect-error - TODO: fix this
59
61
  placement={placement}
60
62
  portal={portal}
61
63
  >
@@ -11,11 +11,14 @@ import {
11
11
  export default function PropsStory(): React.JSX.Element {
12
12
  const arrow = useBoolean('Arrow', false)
13
13
  const content = useText('Content', 'Tooltip content')
14
+ // @ts-expect-error - TODO: fix this
14
15
  const padding = useSelect('Padding', WORKSHOP_SPACE_OPTIONS, 2)
16
+ // @ts-expect-error - TODO: fix this
15
17
  const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'top')
16
18
  const portal = useBoolean('Portal', true)
17
19
  const openDelay = useNumber('Open Delay', 200)
18
20
  const closeDelay = useNumber('Close Delay', 200)
21
+ // @ts-expect-error - TODO: fix this
19
22
  const shadow = useSelect('Shadow', WORKSHOP_SHADOW_OPTIONS, 2)
20
23
 
21
24
  return (
@@ -41,9 +44,12 @@ export default function PropsStory(): React.JSX.Element {
41
44
  <Tooltip
42
45
  arrow={arrow}
43
46
  content={<Text size={1}>{content}</Text>}
47
+ // @ts-expect-error - TODO: fix this
44
48
  padding={padding}
49
+ // @ts-expect-error - TODO: fix this
45
50
  placement={placement}
46
51
  portal={portal}
52
+ // @ts-expect-error - TODO: fix this
47
53
  shadow={shadow}
48
54
  delay={{
49
55
  open: openDelay,
@@ -81,9 +87,12 @@ export default function PropsStory(): React.JSX.Element {
81
87
  close: 100,
82
88
  }}
83
89
  content={<Text size={1}>{content}</Text>}
90
+ // @ts-expect-error - TODO: fix this
84
91
  padding={padding}
92
+ // @ts-expect-error - TODO: fix this
85
93
  placement={placement}
86
94
  portal={portal}
95
+ // @ts-expect-error - TODO: fix this
87
96
  shadow={shadow}
88
97
  >
89
98
  <Button mode="bleed" text="Hover me" />
@@ -96,9 +105,12 @@ export default function PropsStory(): React.JSX.Element {
96
105
  close: 100,
97
106
  }}
98
107
  content={<Text size={1}>{content}</Text>}
108
+ // @ts-expect-error - TODO: fix this
99
109
  padding={padding}
110
+ // @ts-expect-error - TODO: fix this
100
111
  placement={placement}
101
112
  portal={portal}
113
+ // @ts-expect-error - TODO: fix this
102
114
  shadow={shadow}
103
115
  >
104
116
  <Button mode="bleed" text="Or me" />
@@ -9,6 +9,7 @@ export default function ResizableBoundaryStory(): React.JSX.Element {
9
9
  'Content',
10
10
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mollis consectetur malesuada. Sed lobortis est dolor, eget imperdiet velit placerat et. Aenean posuere mi non aliquet iaculis. Donec fermentum pulvinar purus at sagittis. Ut tincidunt massa odio, sed finibus justo ullamcorper id. Nam venenatis justo non ligula elementum cursus. Pellentesque laoreet justo in mollis sagittis. In lacinia ornare ultrices. Suspendisse potenti.',
11
11
  )
12
+ // @ts-expect-error - TODO: fix this
12
13
  const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'right')
13
14
  const portal = useBoolean('Portal', true)
14
15
  const useBoundaryElement = useBoolean('Use boundary element', true)
@@ -38,6 +39,7 @@ export default function ResizableBoundaryStory(): React.JSX.Element {
38
39
  <Tooltip
39
40
  content={<Text size={1}>{content}</Text>}
40
41
  padding={2}
42
+ // @ts-expect-error - TODO: fix this
41
43
  placement={placement}
42
44
  portal={portal}
43
45
  >
@@ -46,6 +48,7 @@ export default function ResizableBoundaryStory(): React.JSX.Element {
46
48
  <Tooltip
47
49
  content={<Text size={1}>{content}</Text>}
48
50
  padding={2}
51
+ // @ts-expect-error - TODO: fix this
49
52
  placement={placement}
50
53
  portal={portal}
51
54
  >
@@ -58,6 +61,7 @@ export default function ResizableBoundaryStory(): React.JSX.Element {
58
61
  <Tooltip
59
62
  content={<Text size={1}>{content}</Text>}
60
63
  padding={2}
64
+ // @ts-expect-error - TODO: fix this
61
65
  placement={placement}
62
66
  portal={portal}
63
67
  >
@@ -70,6 +74,7 @@ export default function ResizableBoundaryStory(): React.JSX.Element {
70
74
  <Tooltip
71
75
  content={<Text size={1}>{content}</Text>}
72
76
  padding={2}
77
+ // @ts-expect-error - TODO: fix this
73
78
  placement={placement}
74
79
  portal={portal}
75
80
  >
@@ -137,11 +137,15 @@ export const image: string = _style(layers.primitives, {
137
137
  })
138
138
 
139
139
  globalStyle(`${image} img`, {
140
- display: 'block',
141
- width: '100%',
142
- height: '100%',
143
- objectFit: 'cover',
144
- borderRadius: 'inherit',
140
+ '@layer': {
141
+ [layers.primitives]: {
142
+ display: 'block',
143
+ width: '100%',
144
+ height: '100%',
145
+ objectFit: 'cover',
146
+ borderRadius: 'inherit',
147
+ },
148
+ },
145
149
  })
146
150
 
147
151
  export const imageOutline: string = _style(layers.primitives, {
@@ -20,10 +20,18 @@ interface ColorRecordNode extends Record<string, ColorNode> {}
20
20
  type ColorNode = string | ColorRecordNode
21
21
 
22
22
  export default function ColorStory(): React.JSX.Element {
23
+ // @ts-expect-error - TODO: fix this
23
24
  const tone = useSelect('Tone', WORKSHOP_CARD_TONE_OPTIONS, 'default')
24
25
 
25
26
  return (
26
- <Card display="flex" flexDirection="column" gap={4} padding={4} tone={tone}>
27
+ <Card
28
+ display="flex"
29
+ flexDirection="column"
30
+ gap={4}
31
+ padding={4}
32
+ // @ts-expect-error - TODO: fix this
33
+ tone={tone}
34
+ >
27
35
  {Object.entries(vars.color).map(([key, value]) => {
28
36
  if (key === 'palette') {
29
37
  return null
@@ -134,6 +134,16 @@ export const root: string = _style(layers.primitives, {
134
134
  [vars.color.muted.fg]: vars.color.tinted.default.border[2],
135
135
  },
136
136
  },
137
+
138
+ 'a&[data-focus-ring]:focus, button&[data-focus-ring]:focus': {
139
+ outline: `${vars.card.focusRing.width} solid ${vars.color.focusRing}`,
140
+ outlineOffset: vars.card.focusRing.offset,
141
+ },
142
+
143
+ 'a&[data-focus-ring]:focus:not(:focus-visible), button&[data-focus-ring]:focus:not(:focus-visible)':
144
+ {
145
+ outline: 'none',
146
+ },
137
147
  },
138
148
  })
139
149
 
@@ -79,6 +79,10 @@ export function buildCSSTheme(options?: CSSThemeOptions): ThemeTokens {
79
79
  border: {
80
80
  width: px(theme.card.border.width),
81
81
  },
82
+ focusRing: {
83
+ offset: px(theme.card.focusRing.offset),
84
+ width: px(theme.card.focusRing.width),
85
+ },
82
86
  shadow: {
83
87
  outline: px(theme.card.shadow.outline),
84
88
  },
package/src/css/types.ts CHANGED
@@ -183,6 +183,10 @@ export type CoreThemeTokens = {
183
183
  border: {
184
184
  width: string
185
185
  }
186
+ focusRing: {
187
+ offset: string
188
+ width: string
189
+ }
186
190
  shadow: {
187
191
  outline: string
188
192
  }
@@ -74,6 +74,10 @@ const themeTokens: CoreThemeTokens = {
74
74
  border: {
75
75
  width: '',
76
76
  },
77
+ focusRing: {
78
+ offset: '',
79
+ width: '',
80
+ },
77
81
  shadow: {
78
82
  outline: '',
79
83
  },
@@ -1,22 +0,0 @@
1
- "use strict";
2
- var jsxRuntime = require("react/jsx-runtime"), compilerRuntime = require("react/compiler-runtime"), reactRefractor = require("react-refractor");
3
- function LazyRefractor(props) {
4
- const $ = compilerRuntime.c(13), {
5
- language: languageProp,
6
- value
7
- } = props, language = typeof languageProp == "string" ? languageProp : void 0;
8
- let t0;
9
- $[0] !== language ? (t0 = language ? reactRefractor.hasLanguage(language) : !1, $[0] = language, $[1] = t0) : t0 = $[1];
10
- const registered = t0;
11
- let t1;
12
- $[2] !== language || $[3] !== registered || $[4] !== value ? (t1 = !(language && registered) && /* @__PURE__ */ jsxRuntime.jsx("code", { children: value }), $[2] = language, $[3] = registered, $[4] = value, $[5] = t1) : t1 = $[5];
13
- let t2;
14
- $[6] !== language || $[7] !== registered || $[8] !== value ? (t2 = language && registered && /* @__PURE__ */ jsxRuntime.jsx(reactRefractor.Refractor, { inline: !0, language, value: String(value) }), $[6] = language, $[7] = registered, $[8] = value, $[9] = t2) : t2 = $[9];
15
- let t3;
16
- return $[10] !== t1 || $[11] !== t2 ? (t3 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
17
- t1,
18
- t2
19
- ] }), $[10] = t1, $[11] = t2, $[12] = t3) : t3 = $[12], t3;
20
- }
21
- exports.default = LazyRefractor;
22
- //# sourceMappingURL=refractor.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refractor.cjs","sources":["../../src/core/primitives/code/refractor.tsx"],"sourcesContent":["import {hasLanguage, Refractor} from 'react-refractor'\n\nexport default function LazyRefractor(\n props: Partial<Pick<React.ComponentProps<typeof Refractor>, 'language'>> & {\n value: React.ReactNode\n },\n): React.JSX.Element {\n const {language: languageProp, value} = props\n const language = typeof languageProp === 'string' ? languageProp : undefined\n const registered = language ? hasLanguage(language) : false\n\n return (\n <>\n {!(language && registered) && <code>{value}</code>}\n {language && registered && <Refractor inline language={language} value={String(value)} />}\n </>\n )\n}\n"],"names":["LazyRefractor","props","$","_c","language","languageProp","value","undefined","t0","hasLanguage","registered","t1","t2","Refractor","String","t3"],"mappings":";;AAEA,SAAeA,cAAAC,OAAA;AAAA,QAAAC,IAAAC,kBAAA,EAAA,GAKb;AAAA,IAAAC,UAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAwCL,OACxCG,WAAiB,OAAOC,gBAAiB,WAAWA,eAAYE;AAAY,MAAAC;AAAAN,WAAAE,YACzDI,KAAAJ,WAAWK,eAAAA,YAAYL,QAAQ,IAAC,IAAQF,OAAAE,UAAAF,OAAAM,MAAAA,KAAAN,EAAA,CAAA;AAA3D,QAAAQ,aAAmBF;AAAwC,MAAAG;AAAAT,IAAA,CAAA,MAAAE,YAAAF,SAAAQ,cAAAR,EAAA,CAAA,MAAAI,SAItDK,KAAA,EAAEP,YAAYM,wDAAsBJ,UAAAA,MAAAA,CAAM,GAAOJ,OAAAE,UAAAF,OAAAQ,YAAAR,OAAAI,OAAAJ,OAAAS,MAAAA,KAAAT,EAAA,CAAA;AAAA,MAAAU;AAAAV,IAAA,CAAA,MAAAE,YAAAF,SAAAQ,cAAAR,EAAA,CAAA,MAAAI,SACjDM,KAAAR,YAAYM,6CAAeG,eAAAA,WAAA,EAAU,QAAA,IAAiBT,UAAiB,OAAAU,OAAOR,KAAK,EAAA,CAAC,GAAIJ,OAAAE,UAAAF,OAAAQ,YAAAR,OAAAI,OAAAJ,OAAAU,MAAAA,KAAAV,EAAA,CAAA;AAAA,MAAAa;AAAA,SAAAb,EAAA,EAAA,MAAAS,MAAAT,UAAAU,MAF3FG,4DACGJ,UAAAA;AAAAA,IAAAA;AAAAA,IACAC;AAAAA,EAAAA,EAAAA,CAAwF,GACxFV,QAAAS,IAAAT,QAAAU,IAAAV,QAAAa,MAAAA,KAAAb,EAAA,EAAA,GAHHa;AAGG;;"}