@sanity/ui 4.0.0-static.4 → 4.0.0-static.40

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 (341) hide show
  1. package/dist/_chunks-es/{refractor.js → Refractor.js} +1 -1
  2. package/dist/_chunks-es/{refractor.js.map → Refractor.js.map} +1 -1
  3. package/dist/css/index.css +2 -1
  4. package/dist/css/index.css.map +1 -0
  5. package/dist/css/index.d.ts +51 -7
  6. package/dist/css/index.js +17979 -55
  7. package/dist/css/index.js.map +1 -1
  8. package/dist/index.d.ts +26 -38
  9. package/dist/index.js +1744 -1127
  10. package/dist/index.js.map +1 -1
  11. package/exports/css/index.css +1 -0
  12. package/package.json +39 -51
  13. package/src/core/Root.tsx +1 -1
  14. package/src/core/RootProvider.tsx +5 -5
  15. package/src/core/__workshop__/index.ts +1 -1
  16. package/src/core/components/autocomplete/{autocomplete.tsx → Autocomplete.tsx} +90 -58
  17. package/src/core/components/autocomplete/__workshop__/{custom.tsx → Custom.tsx} +14 -1
  18. package/src/core/components/autocomplete/__workshop__/{example.tsx → Example.tsx} +12 -1
  19. package/src/core/components/autocomplete/__workshop__/index.ts +6 -6
  20. package/src/core/components/autocomplete/types.ts +1 -1
  21. package/src/core/components/breadcrumbs/{breadcrumbs.tsx → Breadcrumbs.tsx} +80 -47
  22. package/src/core/components/breadcrumbs/__workshop__/index.ts +1 -1
  23. package/src/core/components/dialog/{dialog.tsx → Dialog.tsx} +20 -11
  24. package/src/core/components/dialog/{dialogCard.tsx → DialogCard.tsx} +9 -9
  25. package/src/core/components/dialog/{dialogContext.ts → DialogContext.ts} +1 -1
  26. package/src/core/components/dialog/{dialogProvider.tsx → DialogProvider.tsx} +2 -2
  27. package/src/core/components/dialog/__workshop__/{panes.tsx → Panes.tsx} +9 -21
  28. package/src/core/components/dialog/__workshop__/{position.tsx → Position.tsx} +9 -1
  29. package/src/core/components/dialog/__workshop__/{props.tsx → Props.tsx} +2 -0
  30. package/src/core/components/dialog/__workshop__/index.ts +10 -10
  31. package/src/core/components/dialog/__workshop__/styles.css.ts +18 -0
  32. package/src/core/components/dialog/useDialog.ts +3 -3
  33. package/src/core/components/hotkeys/{hotkeys.tsx → Hotkeys.tsx} +2 -2
  34. package/src/core/components/hotkeys/__workshop__/index.ts +1 -1
  35. package/src/core/components/menu/{menu.test.tsx → Menu.test.tsx} +9 -13
  36. package/src/core/components/menu/{menu.tsx → Menu.tsx} +19 -24
  37. package/src/core/components/menu/{menuButton.tsx → MenuButton.tsx} +14 -9
  38. package/src/core/components/menu/{menuContext.ts → MenuContext.ts} +3 -4
  39. package/src/core/components/menu/{menuGroup.tsx → MenuGroup.tsx} +16 -11
  40. package/src/core/components/menu/{menuItem.tsx → MenuItem.tsx} +7 -9
  41. package/src/core/components/menu/__workshop__/DataProps.tsx +27 -0
  42. package/src/core/components/menu/__workshop__/{menuButton.tsx → MenuButton.tsx} +6 -1
  43. package/src/core/components/menu/__workshop__/{tones.tsx → Tones.tsx} +7 -1
  44. package/src/core/components/menu/__workshop__/index.ts +22 -17
  45. package/src/core/components/menu/useMenu.ts +5 -5
  46. package/src/core/components/menu/useMenuController.ts +5 -5
  47. package/src/core/components/tab/{tab.tsx → Tab.tsx} +1 -1
  48. package/src/core/components/tab/{tabList.tsx → TabList.tsx} +2 -2
  49. package/src/core/components/tab/{tabPanel.tsx → TabPanel.tsx} +1 -1
  50. package/src/core/components/tab/__workshop__/index.ts +1 -1
  51. package/src/core/components/toast/{toast.test.tsx → Toast.test.tsx} +7 -7
  52. package/src/core/components/toast/{toast.tsx → Toast.tsx} +6 -6
  53. package/src/core/components/toast/{toastContext.ts → ToastContext.ts} +1 -1
  54. package/src/core/components/toast/{toastLayer.tsx → ToastLayer.tsx} +1 -1
  55. package/src/core/components/toast/{toastProvider.tsx → ToastProvider.tsx} +7 -7
  56. package/src/core/components/toast/__workshop__/{toast.tsx → Toast.tsx} +2 -0
  57. package/src/core/components/toast/__workshop__/index.ts +2 -2
  58. package/src/core/components/toast/useToast.ts +3 -3
  59. package/src/core/components/tree/{tree.tsx → Tree.tsx} +4 -4
  60. package/src/core/components/tree/{treeContext.ts → TreeContext.ts} +1 -1
  61. package/src/core/components/tree/{treeGroup.tsx → TreeGroup.tsx} +1 -1
  62. package/src/core/components/tree/{treeItem.tsx → TreeItem.tsx} +28 -25
  63. package/src/core/components/tree/__workshop__/index.ts +4 -4
  64. package/src/core/components/tree/useTree.ts +3 -3
  65. package/src/core/components/virtualList/{virtualList.tsx → VirtualList.tsx} +87 -45
  66. package/src/core/components/virtualList/__workshop__/index.ts +4 -4
  67. package/src/core/helpers/props.ts +0 -9
  68. package/src/core/hooks/useGlobalKeyDown.ts +11 -4
  69. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +1 -1
  70. package/src/core/hooks/useResponsiveProp.ts +4 -17
  71. package/src/core/index.ts +68 -66
  72. package/src/core/lib/createGlobalScopedContext.ts +5 -3
  73. package/src/core/primitives/avatar/{avatar.tsx → Avatar.tsx} +7 -6
  74. package/src/core/primitives/avatar/{avatarCounter.tsx → AvatarCounter.tsx} +2 -2
  75. package/src/core/primitives/avatar/{avatarStack.tsx → AvatarStack.tsx} +3 -3
  76. package/src/core/primitives/avatar/__workshop__/{asButton.tsx → AsButton.tsx} +8 -1
  77. package/src/core/primitives/avatar/__workshop__/PropsStory.tsx +22 -0
  78. package/src/core/primitives/avatar/__workshop__/{stack.tsx → Stack.tsx} +5 -1
  79. package/src/core/primitives/avatar/__workshop__/index.ts +9 -4
  80. package/src/core/primitives/badge/{badge.test.tsx → Badge.test.tsx} +1 -1
  81. package/src/core/primitives/badge/{badge.tsx → Badge.tsx} +2 -2
  82. package/src/core/primitives/badge/__workshop__/{props.tsx → Props.tsx} +12 -1
  83. package/src/core/primitives/badge/__workshop__/index.ts +2 -2
  84. package/src/core/primitives/box/__workshop__/{props.tsx → Props.tsx} +6 -1
  85. package/src/core/primitives/box/__workshop__/index.ts +2 -2
  86. package/src/core/primitives/button/{button.test.tsx → Button.test.tsx} +1 -1
  87. package/src/core/primitives/button/{button.tsx → Button.tsx} +12 -11
  88. package/src/core/primitives/button/__workshop__/DataProps.tsx +22 -0
  89. package/src/core/primitives/button/__workshop__/{props.tsx → Props.tsx} +22 -0
  90. package/src/core/primitives/button/__workshop__/SanityUploadButton.tsx +21 -0
  91. package/src/core/primitives/button/__workshop__/{stacked.tsx → Stacked.tsx} +16 -0
  92. package/src/core/primitives/button/__workshop__/Styled1.tsx +11 -0
  93. package/src/core/primitives/button/__workshop__/index.ts +15 -15
  94. package/src/core/primitives/button/__workshop__/styles.css.ts +30 -0
  95. package/src/core/primitives/card/{card.tsx → Card.tsx} +10 -10
  96. package/src/core/primitives/card/{cardContext.ts → CardContext.ts} +1 -1
  97. package/src/core/primitives/card/{cardProvider.tsx → CardProvider.tsx} +3 -12
  98. package/src/core/primitives/card/__workshop__/DataProps.tsx +30 -0
  99. package/src/core/primitives/card/__workshop__/{props.tsx → Props.tsx} +10 -0
  100. package/src/core/primitives/card/__workshop__/{selected.tsx → Selected.tsx} +1 -1
  101. package/src/core/primitives/card/__workshop__/{styled.tsx → Styled.tsx} +2 -5
  102. package/src/core/primitives/card/__workshop__/index.ts +10 -9
  103. package/src/core/primitives/card/useCard.ts +11 -6
  104. package/src/core/primitives/checkbox/__workshop__/index.ts +4 -4
  105. package/src/core/primitives/code/{code.tsx → Code.tsx} +26 -2
  106. package/src/core/primitives/code/__workshop__/{props.tsx → Props.tsx} +6 -1
  107. package/src/core/primitives/code/__workshop__/index.ts +2 -2
  108. package/src/core/primitives/container/{container.tsx → Container.tsx} +1 -1
  109. package/src/core/primitives/container/__workshop__/{example.tsx → Example.tsx} +6 -1
  110. package/src/core/primitives/container/__workshop__/index.ts +1 -1
  111. package/src/core/primitives/flex/{flex.tsx → Flex.tsx} +1 -1
  112. package/src/core/primitives/flex/__workshop__/{example.tsx → Example.tsx} +14 -16
  113. package/src/core/primitives/flex/__workshop__/index.ts +2 -2
  114. package/src/core/primitives/flex/__workshop__/styles.css.ts +12 -0
  115. package/src/core/primitives/grid/{grid.tsx → Grid.tsx} +1 -1
  116. package/src/core/primitives/grid/__workshop__/index.ts +1 -1
  117. package/src/core/primitives/heading/{heading.tsx → Heading.tsx} +16 -0
  118. package/src/core/primitives/heading/__workshop__/{plain.tsx → Plain.tsx} +12 -1
  119. package/src/core/primitives/heading/__workshop__/index.ts +2 -2
  120. package/src/core/primitives/inline/{inline.tsx → Inline.tsx} +2 -1
  121. package/src/core/primitives/inline/__workshop__/{plain.tsx → Plain.tsx} +5 -1
  122. package/src/core/primitives/inline/__workshop__/index.ts +1 -1
  123. package/src/core/primitives/kbd/{kbd.tsx → Kbd.tsx} +2 -2
  124. package/src/core/primitives/kbd/__workshop__/index.ts +1 -1
  125. package/src/core/primitives/label/{label.tsx → Label.tsx} +16 -0
  126. package/src/core/primitives/label/__workshop__/{plain.tsx → Plain.tsx} +15 -1
  127. package/src/core/primitives/label/__workshop__/index.ts +2 -2
  128. package/src/core/primitives/layer/{layer.test.tsx → Layer.test.tsx} +7 -7
  129. package/src/core/primitives/layer/{layer.tsx → Layer.tsx} +3 -3
  130. package/src/core/primitives/layer/{layerCard.tsx → LayerCard.tsx} +2 -2
  131. package/src/core/primitives/layer/{layerContext.ts → LayerContext.ts} +1 -1
  132. package/src/core/primitives/layer/{layerProvider.tsx → LayerProvider.tsx} +6 -6
  133. package/src/core/primitives/layer/__workshop__/index.ts +3 -3
  134. package/src/core/primitives/layer/useLayer.ts +3 -3
  135. package/src/core/primitives/popover/{popover.tsx → Popover.tsx} +170 -150
  136. package/src/core/primitives/popover/{popoverLayer.tsx → PopoverLayer.tsx} +3 -3
  137. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +13 -1
  138. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +2 -0
  139. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +8 -0
  140. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +7 -1
  141. package/src/core/primitives/popover/__workshop__/TestStory.tsx +6 -0
  142. package/src/core/primitives/popover/floating-ui/size.ts +17 -16
  143. package/src/core/primitives/radio/{radio.tsx → Radio.tsx} +2 -2
  144. package/src/core/primitives/radio/__workshop__/index.ts +2 -2
  145. package/src/core/primitives/select/{select.tsx → Select.tsx} +7 -5
  146. package/src/core/primitives/select/__workshop__/{plain.tsx → Plain.tsx} +4 -0
  147. package/src/core/primitives/select/__workshop__/index.ts +2 -2
  148. package/src/core/primitives/selectable/{selectable.tsx → Selectable.tsx} +2 -2
  149. package/src/core/primitives/selectable/__workshop__/DataProps.tsx +27 -0
  150. package/src/core/primitives/selectable/__workshop__/index.ts +14 -0
  151. package/src/core/primitives/skeleton/{codeSkeleton.tsx → CodeSkeleton.tsx} +1 -1
  152. package/src/core/primitives/skeleton/{headingSkeleton.tsx → HeadingSkeleton.tsx} +1 -1
  153. package/src/core/primitives/skeleton/{labelSkeleton.tsx → LabelSkeleton.tsx} +1 -1
  154. package/src/core/primitives/skeleton/{skeleton.tsx → Skeleton.tsx} +2 -2
  155. package/src/core/primitives/skeleton/{textSkeleton.tsx → TextSkeleton.tsx} +1 -1
  156. package/src/core/primitives/skeleton/__workshop__/{delay.tsx → Delay.tsx} +9 -1
  157. package/src/core/primitives/skeleton/__workshop__/{skeleton.tsx → Skeleton.tsx} +9 -1
  158. package/src/core/primitives/skeleton/__workshop__/index.ts +2 -2
  159. package/src/core/primitives/spinner/{spinner.tsx → Spinner.tsx} +2 -2
  160. package/src/core/primitives/spinner/__workshop__/Props.tsx +6 -1
  161. package/src/core/primitives/stack/{stack.tsx → Stack.tsx} +1 -1
  162. package/src/core/primitives/stack/__workshop__/{plain.tsx → Plain.tsx} +4 -1
  163. package/src/core/primitives/stack/__workshop__/index.ts +1 -1
  164. package/src/core/primitives/switch/{switch.tsx → Switch.tsx} +2 -10
  165. package/src/core/primitives/switch/__workshop__/index.ts +2 -2
  166. package/src/core/primitives/text/{text.tsx → Text.tsx} +14 -0
  167. package/src/core/primitives/text/__workshop__/{colored.tsx → Colored.tsx} +10 -8
  168. package/src/core/primitives/text/__workshop__/{example.tsx → Example.tsx} +15 -1
  169. package/src/core/primitives/text/__workshop__/index.ts +3 -3
  170. package/src/core/primitives/textArea/{textArea.tsx → TextArea.tsx} +7 -1
  171. package/src/core/primitives/textArea/__workshop__/{plain.tsx → Plain.tsx} +8 -0
  172. package/src/core/primitives/textArea/__workshop__/index.ts +1 -1
  173. package/src/core/primitives/textInput/{textInput.tsx → TextInput.tsx} +93 -72
  174. package/src/core/primitives/textInput/__workshop__/{plain.tsx → Plain.tsx} +34 -4
  175. package/src/core/primitives/textInput/__workshop__/{typed.tsx → Typed.tsx} +7 -1
  176. package/src/core/primitives/textInput/__workshop__/index.ts +7 -7
  177. package/src/core/primitives/tooltip/{tooltip.test.tsx → Tooltip.test.tsx} +4 -4
  178. package/src/core/primitives/tooltip/{tooltip.tsx → Tooltip.tsx} +102 -63
  179. package/src/core/primitives/tooltip/{tooltipLayer.tsx → TooltipLayer.tsx} +2 -2
  180. package/src/core/primitives/tooltip/__workshop__/{customPortal.tsx → CustomPortal.tsx} +2 -0
  181. package/src/core/primitives/tooltip/__workshop__/{overflowingBoundary.tsx → OverflowingBoundary.tsx} +2 -0
  182. package/src/core/primitives/tooltip/__workshop__/{props.tsx → Props.tsx} +12 -0
  183. package/src/core/primitives/tooltip/__workshop__/{resizableBoundary.tsx → ResizableBoundary.tsx} +5 -0
  184. package/src/core/primitives/tooltip/__workshop__/index.ts +4 -4
  185. package/src/core/primitives/tooltip/tooltipDelayGroup/{tooltipDelayGroupContext.tsx → TooltipDelayGroupContext.tsx} +1 -1
  186. package/src/core/primitives/tooltip/tooltipDelayGroup/{tooltipDelayGroupProvider.tsx → TooltipDelayGroupProvider.tsx} +2 -4
  187. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +3 -3
  188. package/src/core/types.ts +6 -5
  189. package/src/core/utils/{errorBoundary.tsx → ErrorBoundary.tsx} +1 -1
  190. package/src/core/utils/boundaryElement/{boundaryElementContext.ts → BoundaryElementContext.ts} +2 -5
  191. package/src/core/utils/boundaryElement/BoundaryElementProvider.tsx +16 -0
  192. package/src/core/utils/boundaryElement/__workshop__/index.ts +1 -1
  193. package/src/core/utils/boundaryElement/types.ts +1 -4
  194. package/src/core/utils/boundaryElement/useBoundaryElement.ts +7 -19
  195. package/src/core/utils/elementQuery/__workshop__/CustomMedia.tsx +19 -0
  196. package/src/core/utils/elementQuery/__workshop__/index.ts +1 -1
  197. package/src/core/utils/elementQuery/__workshop__/styles.css.ts +31 -0
  198. package/src/core/utils/portal/{portal.test.tsx → Portal.test.tsx} +7 -7
  199. package/src/core/utils/portal/{portal.tsx → Portal.tsx} +7 -4
  200. package/src/core/utils/portal/{portalContext.ts → PortalContext.ts} +1 -1
  201. package/src/core/utils/portal/PortalProvider.tsx +38 -0
  202. package/src/core/utils/portal/__workshop__/index.ts +1 -1
  203. package/src/core/utils/portal/usePortal.ts +12 -5
  204. package/src/css/_responsiveStyle.css.ts +2 -2
  205. package/src/css/primitives/_input/_input.css.ts +13 -12
  206. package/src/css/primitives/_input/input.ts +2 -0
  207. package/src/css/primitives/_input/types.ts +2 -1
  208. package/src/css/primitives/avatar/avatar.css.ts +17 -5
  209. package/src/css/primitives/box/box.css.ts +19 -1
  210. package/src/css/primitives/button/button.css.ts +252 -183
  211. package/src/css/primitives/card/__workshop__/{color.tsx → Color.tsx} +9 -1
  212. package/src/css/primitives/card/__workshop__/index.ts +1 -1
  213. package/src/css/primitives/card/card.css.ts +133 -130
  214. package/src/css/primitives/checkbox/checkbox.css.ts +1 -0
  215. package/src/css/primitives/code/code.ts +4 -0
  216. package/src/css/primitives/code/types.ts +7 -1
  217. package/src/css/primitives/heading/heading.ts +4 -0
  218. package/src/css/primitives/heading/types.ts +7 -1
  219. package/src/css/primitives/label/label.ts +4 -0
  220. package/src/css/primitives/label/types.ts +7 -1
  221. package/src/css/primitives/radio/radio.css.ts +1 -1
  222. package/src/css/primitives/root/root.css.ts +1 -1
  223. package/src/css/primitives/select/select.css.ts +7 -1
  224. package/src/css/primitives/selectable/selectable.css.ts +79 -70
  225. package/src/css/primitives/switch/switch.css.ts +10 -1
  226. package/src/css/primitives/text/text.ts +2 -0
  227. package/src/css/primitives/text/types.ts +6 -1
  228. package/src/css/primitives/textInput/textInput.css.ts +15 -3
  229. package/src/css/props/width/types.ts +1 -1
  230. package/src/css/props/width/width.css.ts +5 -2
  231. package/src/css/theme/buildCSSTheme.ts +4 -0
  232. package/src/css/types.ts +4 -0
  233. package/src/css/vars.css.ts +4 -0
  234. package/dist/_chunks-cjs/refractor.cjs +0 -22
  235. package/dist/_chunks-cjs/refractor.cjs.map +0 -1
  236. package/dist/css/index.cjs +0 -966
  237. package/dist/css/index.cjs.map +0 -1
  238. package/dist/css/index.d.cts +0 -1370
  239. package/dist/index.cjs +0 -4515
  240. package/dist/index.cjs.map +0 -1
  241. package/dist/index.d.cts +0 -2521
  242. package/dist/theme.cjs +0 -870
  243. package/dist/theme.cjs.map +0 -1
  244. package/dist/theme.d.cts +0 -499
  245. package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +0 -36
  246. package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
  247. package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
  248. package/src/core/primitives/popover/helpers.ts +0 -32
  249. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  250. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -102
  251. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -18
  252. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -41
  253. package/src/core/utils/portal/portalProvider.tsx +0 -70
  254. /package/src/core/__workshop__/{boundary.tsx → Boundary.tsx} +0 -0
  255. /package/src/core/components/autocomplete/{autocompleteOption.tsx → AutocompleteOption.tsx} +0 -0
  256. /package/src/core/components/autocomplete/__workshop__/{async.tsx → Async.tsx} +0 -0
  257. /package/src/core/components/autocomplete/__workshop__/{constrainedHeight.tsx → ConstrainedHeight.tsx} +0 -0
  258. /package/src/core/components/autocomplete/__workshop__/{focusAndBlur.tsx → FocusAndBlur.tsx} +0 -0
  259. /package/src/core/components/autocomplete/__workshop__/{fullscreen.tsx → Fullscreen.tsx} +0 -0
  260. /package/src/core/components/breadcrumbs/__workshop__/{example.tsx → Example.tsx} +0 -0
  261. /package/src/core/components/dialog/__workshop__/{activate.tsx → Activate.tsx} +0 -0
  262. /package/src/core/components/dialog/__workshop__/{autoFocus.tsx → AutoFocus.tsx} +0 -0
  263. /package/src/core/components/dialog/__workshop__/{layering.tsx → Layering.tsx} +0 -0
  264. /package/src/core/components/dialog/__workshop__/{nested.tsx → Nested.tsx} +0 -0
  265. /package/src/core/components/dialog/__workshop__/{onScroll.tsx → OnScroll.tsx} +0 -0
  266. /package/src/core/components/dialog/__workshop__/{provider.tsx → Provider.tsx} +0 -0
  267. /package/src/core/components/dialog/__workshop__/{wrapped.tsx → Wrapped.tsx} +0 -0
  268. /package/src/core/components/hotkeys/__workshop__/{plain.tsx → Plain.tsx} +0 -0
  269. /package/src/core/components/menu/{menuDivider.tsx → MenuDivider.tsx} +0 -0
  270. /package/src/core/components/menu/__workshop__/{asComponent.tsx → AsComponent.tsx} +0 -0
  271. /package/src/core/components/menu/__workshop__/{avatarMenu.tsx → AvatarMenu.tsx} +0 -0
  272. /package/src/core/components/menu/__workshop__/{closableMenuButton.tsx → ClosableMenuButton.tsx} +0 -0
  273. /package/src/core/components/menu/__workshop__/{constrainedInBoundary.tsx → ConstrainedInBoundary.tsx} +0 -0
  274. /package/src/core/components/menu/__workshop__/{customMenuItem.tsx → CustomMenuItem.tsx} +0 -0
  275. /package/src/core/components/menu/__workshop__/{customSelectedState.tsx → CustomSelectedState.tsx} +0 -0
  276. /package/src/core/components/menu/__workshop__/{disableFocusOnClose.tsx → DisableFocusOnClose.tsx} +0 -0
  277. /package/src/core/components/menu/__workshop__/{groups.tsx → Groups.tsx} +0 -0
  278. /package/src/core/components/menu/__workshop__/{menuGroupRight.tsx → MenuGroupRight.tsx} +0 -0
  279. /package/src/core/components/menu/__workshop__/{nestedMenu.tsx → NestedMenu.tsx} +0 -0
  280. /package/src/core/components/menu/__workshop__/{onCloseMenuButton.tsx → OnCloseMenuButton.tsx} +0 -0
  281. /package/src/core/components/menu/__workshop__/{selectedItem.tsx → SelectedItem.tsx} +0 -0
  282. /package/src/core/components/menu/__workshop__/{shouldFocus.tsx → ShouldFocus.tsx} +0 -0
  283. /package/src/core/components/menu/__workshop__/{withoutArrow.tsx → WithoutArrow.tsx} +0 -0
  284. /package/src/core/components/tab/__workshop__/{example.tsx → Example.tsx} +0 -0
  285. /package/src/core/components/toast/__workshop__/{hook.tsx → Hook.tsx} +0 -0
  286. /package/src/core/components/tree/__workshop__/{basic.tsx → Basic.tsx} +0 -0
  287. /package/src/core/components/tree/__workshop__/{tabFromElement.tsx → TabFromElement.tsx} +0 -0
  288. /package/src/core/components/virtualList/__workshop__/{changingProps.tsx → ChangingProps.tsx} +0 -0
  289. /package/src/core/components/virtualList/__workshop__/{elementScroll.tsx → ElementScroll.tsx} +0 -0
  290. /package/src/core/components/virtualList/__workshop__/{infiniteList.tsx → InfiniteList.tsx} +0 -0
  291. /package/src/core/components/virtualList/__workshop__/{windowScrolll.tsx → WindowScrolll.tsx} +0 -0
  292. /package/src/core/hooks/useMediaIndex/__workshop__/{test.tsx → Test.tsx} +0 -0
  293. /package/src/core/primitives/arrow/{arrow.tsx → Arrow.tsx} +0 -0
  294. /package/src/core/primitives/avatar/__workshop__/{withinButton.tsx → WithinButton.tsx} +0 -0
  295. /package/src/core/primitives/avatar/__workshop__/{withinMenuItem.tsx → WithinMenuItem.tsx} +0 -0
  296. /package/src/core/primitives/badge/__workshop__/{tones.tsx → Tones.tsx} +0 -0
  297. /package/src/core/primitives/box/{box.tsx → Box.tsx} +0 -0
  298. /package/src/core/primitives/box/__workshop__/{responsive.tsx → Responsive.tsx} +0 -0
  299. /package/src/core/primitives/button/__workshop__/{custom.tsx → Custom.tsx} +0 -0
  300. /package/src/core/primitives/button/__workshop__/{customIcons.tsx → CustomIcons.tsx} +0 -0
  301. /package/src/core/primitives/button/__workshop__/{disabled.tsx → Disabled.tsx} +0 -0
  302. /package/src/core/primitives/button/__workshop__/{mixedChildren.tsx → MixedChildren.tsx} +0 -0
  303. /package/src/core/primitives/button/__workshop__/{textOverflow.tsx → TextOverflow.tsx} +0 -0
  304. /package/src/core/primitives/button/__workshop__/{uploadButton.tsx → UploadButton.tsx} +0 -0
  305. /package/src/core/primitives/card/__workshop__/{asButton.tsx → AsButton.tsx} +0 -0
  306. /package/src/core/primitives/card/__workshop__/{asComponent.tsx → AsComponent.tsx} +0 -0
  307. /package/src/core/primitives/card/__workshop__/{checkered.tsx → Checkered.tsx} +0 -0
  308. /package/src/core/primitives/card/__workshop__/{interactive.tsx → Interactive.tsx} +0 -0
  309. /package/src/core/primitives/card/__workshop__/{listNavigation.tsx → ListNavigation.tsx} +0 -0
  310. /package/src/core/primitives/card/__workshop__/{tones.tsx → Tones.tsx} +0 -0
  311. /package/src/core/primitives/checkbox/{checkbox.tsx → Checkbox.tsx} +0 -0
  312. /package/src/core/primitives/checkbox/__workshop__/{example.tsx → Example.tsx} +0 -0
  313. /package/src/core/primitives/checkbox/__workshop__/{props.tsx → Props.tsx} +0 -0
  314. /package/src/core/primitives/checkbox/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
  315. /package/src/core/primitives/checkbox/__workshop__/{tones.tsx → Tones.tsx} +0 -0
  316. /package/src/core/primitives/code/{refractor.tsx → Refractor.tsx} +0 -0
  317. /package/src/core/primitives/code/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
  318. /package/src/core/primitives/flex/__workshop__/{gap.tsx → Gap.tsx} +0 -0
  319. /package/src/core/primitives/grid/__workshop__/{responsive.tsx → Responsive.tsx} +0 -0
  320. /package/src/core/primitives/heading/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
  321. /package/src/core/primitives/kbd/__workshop__/{plain.tsx → Plain.tsx} +0 -0
  322. /package/src/core/primitives/label/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
  323. /package/src/core/primitives/layer/__workshop__/{multipleRoots.tsx → MultipleRoots.tsx} +0 -0
  324. /package/src/core/primitives/layer/__workshop__/{nested.tsx → Nested.tsx} +0 -0
  325. /package/src/core/primitives/layer/__workshop__/{responsiveZOffset.tsx → ResponsiveZOffset.tsx} +0 -0
  326. /package/src/core/primitives/radio/__workshop__/{example.tsx → Example.tsx} +0 -0
  327. /package/src/core/primitives/radio/__workshop__/{plain.tsx → Plain.tsx} +0 -0
  328. /package/src/core/primitives/select/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
  329. /package/src/core/primitives/spinner/{animatedSpinnerIcon.tsx → AnimatedSpinnerIcon.tsx} +0 -0
  330. /package/src/core/primitives/srOnly/{srOnly.tsx → SrOnly.tsx} +0 -0
  331. /package/src/core/primitives/switch/__workshop__/{example.tsx → Example.tsx} +0 -0
  332. /package/src/core/primitives/switch/__workshop__/{props.tsx → Props.tsx} +0 -0
  333. /package/src/core/primitives/text/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
  334. /package/src/core/primitives/textInput/__workshop__/{clearButton.tsx → ClearButton.tsx} +0 -0
  335. /package/src/core/primitives/textInput/__workshop__/{customValidity.tsx → CustomValidity.tsx} +0 -0
  336. /package/src/core/primitives/textInput/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
  337. /package/src/core/primitives/textInput/__workshop__/{states.tsx → States.tsx} +0 -0
  338. /package/src/core/primitives/textInput/__workshop__/{tones.tsx → Tones.tsx} +0 -0
  339. /package/src/core/utils/boundaryElement/__workshop__/{plain.tsx → Plain.tsx} +0 -0
  340. /package/src/core/utils/elementQuery/{elementQuery.tsx → ElementQuery.tsx} +0 -0
  341. /package/src/core/utils/portal/__workshop__/{named.tsx → Named.tsx} +0 -0
@@ -0,0 +1 @@
1
+ /* this file is used to support importing `@sanity/ui/css/index.css` in dev mode */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/ui",
3
- "version": "4.0.0-static.4",
3
+ "version": "4.0.0-static.40",
4
4
  "keywords": [
5
5
  "react",
6
6
  "ui",
@@ -20,32 +20,27 @@
20
20
  },
21
21
  "license": "MIT",
22
22
  "author": "Sanity.io <hello@sanity.io>",
23
- "sideEffects": false,
23
+ "sideEffects": [
24
+ "**/*.css"
25
+ ],
24
26
  "type": "module",
25
27
  "exports": {
26
28
  ".": {
27
29
  "source": "./exports/index.ts",
28
- "import": "./dist/index.js",
29
- "require": "./dist/index.cjs",
30
30
  "default": "./dist/index.js"
31
31
  },
32
32
  "./css": {
33
33
  "source": "./exports/css.ts",
34
- "import": "./dist/css/index.js",
35
- "require": "./dist/css/index.cjs",
36
34
  "default": "./dist/css/index.js"
37
35
  },
38
36
  "./css/index.css": "./dist/css/index.css",
39
37
  "./package.json": "./package.json",
40
38
  "./theme": {
41
39
  "source": "./exports/theme.ts",
42
- "import": "./dist/theme.js",
43
- "require": "./dist/theme.cjs",
44
40
  "default": "./dist/theme.js"
45
41
  }
46
42
  },
47
- "main": "./dist/index.cjs",
48
- "module": "./dist/index.js",
43
+ "main": "./dist/index.js",
49
44
  "types": "./dist/index.d.ts",
50
45
  "typesVersions": {
51
46
  "*": {
@@ -110,93 +105,87 @@
110
105
  },
111
106
  "main",
112
107
  {
113
- "name": "static",
108
+ "name": "v4",
114
109
  "channel": "static",
115
- "prerelease": true
110
+ "prerelease": "static"
116
111
  }
117
112
  ],
118
113
  "extends": "@sanity/semantic-release-preset"
119
114
  },
120
115
  "dependencies": {
121
- "@floating-ui/react-dom": "^2.1.5",
116
+ "@floating-ui/react-dom": "^2.1.6",
122
117
  "@juggle/resize-observer": "^3.4.0",
123
118
  "@sanity/color": "^3.0.6",
124
119
  "@sanity/icons": "^3.7.4",
125
- "@vanilla-extract/css": "^1.17.4",
126
120
  "@vanilla-extract/dynamic": "^2.1.5",
127
121
  "csstype": "^3.1.3",
128
- "framer-motion": "^12.23.12",
129
- "react-compiler-runtime": "19.1.0-rc.2",
122
+ "framer-motion": "^12.23.24",
130
123
  "react-refractor": "^4.0.0",
131
124
  "use-effect-event": "^2.0.3"
132
125
  },
133
126
  "devDependencies": {
134
- "@babel/core": "^7.28.0",
135
- "@babel/preset-env": "^7.28.0",
127
+ "@babel/core": "^7.28.4",
128
+ "@babel/preset-env": "^7.28.3",
136
129
  "@babel/preset-react": "^7.27.1",
137
130
  "@babel/preset-typescript": "^7.27.1",
138
131
  "@commitlint/cli": "^19.8.1",
139
132
  "@commitlint/config-conventional": "^19.8.1",
140
- "@eslint/js": "^9.32.0",
133
+ "@eslint/js": "^9.37.0",
141
134
  "@sanity/browserslist-config": "^1.0.5",
142
- "@sanity/pkg-utils": "^7.9.17",
135
+ "@sanity/pkg-utils": "^8.1.19",
143
136
  "@sanity/prettier-config": "^2.0.1",
144
137
  "@sanity/semantic-release-preset": "^5.0.0",
145
- "@sanity/ui-workshop": "^3.1.2",
138
+ "@sanity/ui-workshop": "4.0.0-static.11",
146
139
  "@testing-library/dom": "^10.4.1",
147
- "@testing-library/jest-dom": "^6.6.4",
140
+ "@testing-library/jest-dom": "^6.8.0",
148
141
  "@testing-library/react": "^16.3.0",
149
142
  "@testing-library/user-event": "^14.6.1",
150
- "@types/node": "^24.0.3",
151
- "@types/react": "^19.1.9",
152
- "@types/react-dom": "^19.1.7",
153
- "@types/react-is": "^19.0.0",
154
- "@vanilla-extract/rollup-plugin": "^1.4.0",
143
+ "@types/node": "^24.5.2",
144
+ "@types/react": "^19.2.2",
145
+ "@types/react-dom": "^19.2.1",
146
+ "@types/react-is": "^19.2.0",
147
+ "@vanilla-extract/css": "^1.17.4",
155
148
  "@vanilla-extract/vite-plugin": "^5.1.1",
156
- "@vitejs/plugin-react": "^4.7.0",
149
+ "@vitejs/plugin-react": "^5.0.4",
157
150
  "@vitest/browser": "^3.2.4",
158
- "autoprefixer": "^10.4.21",
159
- "babel-plugin-react-compiler": "19.1.0-rc.2",
151
+ "babel-plugin-react-compiler": "1.0.0",
152
+ "browserslist-config-baseline": "^0.5.0",
160
153
  "cac": "^6.7.14",
161
154
  "commitizen": "^4.3.1",
162
- "cssnano": "^7.1.0",
163
155
  "cypress": "^13.17.0",
164
156
  "cypress-real-events": "^1.14.0",
165
157
  "cz-conventional-changelog": "^3.3.0",
166
158
  "dotenv-flow": "^4.1.0",
167
- "eslint": "^9.32.0",
159
+ "eslint": "^9.37.0",
168
160
  "eslint-config-prettier": "^10.1.8",
169
- "eslint-formatter-compact": "^8.40.0",
170
- "eslint-plugin-boundaries": "^5.0.1",
161
+ "eslint-formatter-gha": "^1.6.0",
162
+ "eslint-plugin-boundaries": "^5.0.2",
171
163
  "eslint-plugin-import": "^2.32.0",
172
164
  "eslint-plugin-jsx-a11y": "^6.10.2",
173
165
  "eslint-plugin-react": "^7.37.5",
174
- "eslint-plugin-react-hooks": "0.0.0-experimental-edac0dde-20250723",
175
- "eslint-plugin-react-refresh": "^0.4.20",
166
+ "eslint-plugin-react-hooks": "7.0.0",
167
+ "eslint-plugin-react-refresh": "^0.4.23",
176
168
  "eslint-plugin-simple-import-sort": "^12.1.1",
177
- "eslint-plugin-storybook": "^9.0.18",
169
+ "eslint-plugin-storybook": "^9.1.10",
178
170
  "globals": "^16.3.0",
179
171
  "husky": "^8.0.3",
180
- "lightningcss": "^1.30.1",
172
+ "jsdom": "^26.1.0",
181
173
  "lint-staged": "^14.0.1",
182
174
  "mkdirp": "^3.0.1",
183
175
  "npm-run-all2": "^8.0.4",
184
- "postcss": "^8.5.6",
185
- "postcss-preset-env": "^10.2.4",
186
176
  "prettier": "^3.6.2",
187
177
  "prettier-plugin-packagejson": "^2.5.19",
188
- "react": "^19.1.1",
189
- "react-dom": "^19.1.1",
190
- "react-is": "^19.1.1",
178
+ "react": "^19.2.0",
179
+ "react-dom": "^19.2.0",
180
+ "react-is": "^19.2.0",
191
181
  "refractor": "^5.0.0",
192
182
  "rimraf": "^5.0.10",
193
183
  "semantic-release": "24.2.7",
194
- "start-server-and-test": "^2.0.12",
195
- "styled-components": "^6.1.19",
184
+ "start-server-and-test": "^2.1.1",
196
185
  "tsconfig-paths": "^4.2.0",
197
- "typescript": "5.8.3",
198
- "typescript-eslint": "^8.38.0",
199
- "vite": "^6.3.5",
186
+ "typescript": "5.9.3",
187
+ "typescript-eslint": "^8.46.0",
188
+ "vite": "^7.1.9",
200
189
  "vite-tsconfig-paths": "^5.1.4",
201
190
  "vitest": "^3.2.4",
202
191
  "vitest-axe": "1.0.0-pre.5"
@@ -206,9 +195,9 @@
206
195
  "react-dom": "^19",
207
196
  "react-is": "^19"
208
197
  },
209
- "packageManager": "pnpm@10.13.1",
198
+ "packageManager": "pnpm@10.18.2",
210
199
  "engines": {
211
- "node": ">=20.19"
200
+ "node": ">=20.19 <22 || >=22.12"
212
201
  },
213
202
  "publishConfig": {
214
203
  "access": "public"
@@ -218,7 +207,6 @@
218
207
  "cypress"
219
208
  ],
220
209
  "overrides": {
221
- "@sanity/ui-workshop": "file:registry/sanity-ui-workshop-3.0.0-local.12.tgz",
222
210
  "@types/react": "$@types/react",
223
211
  "@types/react-dom": "$@types/react-dom",
224
212
  "@types/react-is": "$@types/react-is",
package/src/core/Root.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import {box, root, type RootStyleProps} from '@sanity/ui/css'
2
2
  import {useCallback, useImperativeHandle, useRef, useState} from 'react'
3
3
 
4
- import {Box, type BoxOwnProps} from './primitives/box/box'
4
+ import {Box, type BoxOwnProps} from './primitives/box/Box'
5
5
  import {RootProvider} from './RootProvider'
6
6
  import type {Props} from './types'
7
7
 
@@ -1,11 +1,11 @@
1
1
  import type {CardTone, ColorScheme} from '@sanity/ui/theme'
2
2
  import type {ReactNode} from 'react'
3
3
 
4
- import {ToastProvider} from './components/toast/toastProvider'
5
- import {CardProvider} from './primitives/card/cardProvider'
6
- import {LayerProvider} from './primitives/layer/layerProvider'
7
- import {BoundaryElementProvider} from './utils/boundaryElement/boundaryElementProvider'
8
- import {PortalProvider} from './utils/portal/portalProvider'
4
+ import {ToastProvider} from './components/toast/ToastProvider'
5
+ import {CardProvider} from './primitives/card/CardProvider'
6
+ import {LayerProvider} from './primitives/layer/LayerProvider'
7
+ import {BoundaryElementProvider} from './utils/boundaryElement/BoundaryElementProvider'
8
+ import {PortalProvider} from './utils/portal/PortalProvider'
9
9
 
10
10
  /** @public */
11
11
  export interface RootProviderProps {
@@ -8,7 +8,7 @@ const scope: WorkshopScope = {
8
8
  {
9
9
  name: 'boundary',
10
10
  title: 'Boundary',
11
- component: lazy(() => import('./boundary')),
11
+ component: lazy(() => import('./Boundary')),
12
12
  },
13
13
  ],
14
14
  }
@@ -16,22 +16,23 @@ import {
16
16
  useMemo,
17
17
  useReducer,
18
18
  useRef,
19
+ useState,
19
20
  } from 'react'
20
21
 
21
22
  import {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'
22
23
  import {_raf} from '../../helpers/animation'
23
24
  import {_hasFocus, focusFirstDescendant} from '../../helpers/focus'
24
25
  import {useResponsiveProp} from '../../hooks/useResponsiveProp'
25
- import {Box, type BoxOwnProps} from '../../primitives/box/box'
26
- import {Button} from '../../primitives/button/button'
27
- import {Popover, type PopoverProps} from '../../primitives/popover/popover'
28
- import {Selectable} from '../../primitives/selectable/selectable'
29
- import {AnimatedSpinnerIcon} from '../../primitives/spinner/animatedSpinnerIcon'
30
- import {Stack} from '../../primitives/stack/stack'
31
- import {Text} from '../../primitives/text/text'
32
- import {TextInput, type TextInputOwnProps} from '../../primitives/textInput/textInput'
26
+ import {Box, type BoxOwnProps} from '../../primitives/box/Box'
27
+ import {Button} from '../../primitives/button/Button'
28
+ import {Popover, type PopoverProps} from '../../primitives/popover/Popover'
29
+ import {Selectable} from '../../primitives/selectable/Selectable'
30
+ import {AnimatedSpinnerIcon} from '../../primitives/spinner/AnimatedSpinnerIcon'
31
+ import {Stack} from '../../primitives/stack/Stack'
32
+ import {Text} from '../../primitives/text/Text'
33
+ import {TextInput, type TextInputOwnProps} from '../../primitives/textInput/TextInput'
33
34
  import type {ComponentType, Props} from '../../types'
34
- import {AutocompleteOption} from './autocompleteOption'
35
+ import {AutocompleteOption} from './AutocompleteOption'
35
36
  import {autocompleteReducer} from './autocompleteReducer'
36
37
  import {
37
38
  AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,
@@ -63,7 +64,7 @@ export type AutocompleteOwnProps<O extends BaseAutocompleteOption = BaseAutocomp
63
64
  /** The options to render. */
64
65
  options?: O[]
65
66
  padding?: ResponsiveProp<Space>
66
- popover?: Omit<Props<PopoverProps, 'div'>, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'>
67
+ popover?: Omit<PopoverProps<'div'>, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'>
67
68
  prefix?: ReactNode
68
69
  radius?: Radius | Radius[]
69
70
  /** @beta */
@@ -177,6 +178,8 @@ export function Autocomplete<
177
178
  const resultsPopoverElementRef = useRef<HTMLDivElement | null>(null)
178
179
  const inputElementRef = useRef<HTMLInputElement | null>(null)
179
180
  const listBoxElementRef = useRef<HTMLUListElement | null>(null)
181
+ // Element refs that need to be accessed during render
182
+ const [inputElement, setInputElement] = useState<HTMLInputElement | null>(null)
180
183
 
181
184
  // Value refs
182
185
  const listFocusedRef = useRef(false)
@@ -184,10 +187,17 @@ export function Autocomplete<
184
187
  const valuePropRef = useRef(valueProp)
185
188
  const popoverMouseWithinRef = useRef(false)
186
189
 
187
- // Forward ref to parent
190
+ // Forward inputElement state to inputElementRef
191
+ useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(
192
+ inputElementRef,
193
+ () => inputElement,
194
+ [inputElement],
195
+ )
196
+ // Forward inputElement to parent
188
197
  useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(
189
198
  forwardedRef,
190
- () => inputElementRef.current,
199
+ () => inputElement,
200
+ [inputElement],
191
201
  )
192
202
 
193
203
  const listBoxId = `${id}-listbox`
@@ -525,41 +535,6 @@ export function Autocomplete<
525
535
  return query
526
536
  }, [currentOption, query, renderValue, value])
527
537
 
528
- const input = (
529
- <TextInput
530
- {...rest}
531
- aria-activedescendant={activeItemId}
532
- aria-autocomplete="list"
533
- aria-expanded={expanded}
534
- aria-owns={listBoxId}
535
- autoCapitalize="off"
536
- autoComplete="off"
537
- autoCorrect="off"
538
- as={as}
539
- border={border}
540
- clearButton={clearButton}
541
- customValidity={customValidity}
542
- disabled={disabled}
543
- fontSize={fontSize}
544
- icon={icon}
545
- iconRight={loading && AnimatedSpinnerIcon}
546
- id={id}
547
- inputMode="search"
548
- onChange={handleInputChange}
549
- onClear={handleClearButtonClick}
550
- onFocus={handleInputFocus}
551
- padding={padding}
552
- prefix={prefix}
553
- radius={radius}
554
- readOnly={readOnly}
555
- ref={inputElementRef}
556
- role="combobox"
557
- spellCheck={false}
558
- suffix={suffix || openButtonNode}
559
- value={inputValue}
560
- />
561
- )
562
-
563
538
  const handleListBoxKeyDown = useCallback(
564
539
  (event: KeyboardEvent<HTMLDivElement>) => {
565
540
  // If the focus is currently in the list, move focus to the input element
@@ -629,15 +604,16 @@ export function Autocomplete<
629
604
 
630
605
  const results = useMemo(() => {
631
606
  if (renderPopover) {
632
- return renderPopover(
633
- {
634
- content,
635
- hidden: !expanded,
636
- inputElement: inputElementRef.current,
637
- onMouseEnter: handlePopoverMouseEnter,
638
- onMouseLeave: handlePopoverMouseLeave,
639
- },
640
- resultsPopoverElementRef,
607
+ return (
608
+ <RenderPopover
609
+ content={content}
610
+ hidden={!expanded}
611
+ inputElement={inputElement}
612
+ onMouseEnter={handlePopoverMouseEnter}
613
+ onMouseLeave={handlePopoverMouseLeave}
614
+ resultsPopoverElementRef={resultsPopoverElementRef}
615
+ renderPopover={renderPopover}
616
+ />
641
617
  )
642
618
  }
643
619
 
@@ -660,7 +636,7 @@ export function Autocomplete<
660
636
  portal
661
637
  radius={3}
662
638
  ref={resultsPopoverElementRef}
663
- referenceElement={inputElementRef.current}
639
+ referenceElement={inputElement}
664
640
  {...popover}
665
641
  />
666
642
  )
@@ -670,6 +646,7 @@ export function Autocomplete<
670
646
  filteredOptionsLen,
671
647
  handlePopoverMouseEnter,
672
648
  handlePopoverMouseLeave,
649
+ inputElement,
673
650
  popover,
674
651
  renderPopover,
675
652
  ])
@@ -683,8 +660,63 @@ export function Autocomplete<
683
660
  onKeyDown={handleRootKeyDown}
684
661
  ref={rootElementRef}
685
662
  >
686
- {input}
663
+ <TextInput
664
+ {...rest}
665
+ aria-activedescendant={activeItemId}
666
+ aria-autocomplete="list"
667
+ aria-expanded={expanded}
668
+ aria-owns={listBoxId}
669
+ autoCapitalize="off"
670
+ autoComplete="off"
671
+ autoCorrect="off"
672
+ as={as}
673
+ border={border}
674
+ clearButton={clearButton}
675
+ customValidity={customValidity}
676
+ disabled={disabled}
677
+ fontSize={fontSize}
678
+ icon={icon}
679
+ iconRight={loading && AnimatedSpinnerIcon}
680
+ id={id}
681
+ inputMode="search"
682
+ onChange={handleInputChange}
683
+ onClear={handleClearButtonClick}
684
+ onFocus={handleInputFocus}
685
+ padding={padding}
686
+ prefix={prefix}
687
+ radius={radius}
688
+ readOnly={readOnly}
689
+ ref={setInputElement}
690
+ role="combobox"
691
+ spellCheck={false}
692
+ suffix={suffix || openButtonNode}
693
+ value={inputValue}
694
+ />
687
695
  {results}
688
696
  </div>
689
697
  )
690
698
  }
699
+
700
+ function RenderPopover({
701
+ renderPopover,
702
+ content,
703
+ hidden,
704
+ inputElement,
705
+ onMouseEnter,
706
+ onMouseLeave,
707
+ resultsPopoverElementRef,
708
+ }: {
709
+ renderPopover: Exclude<AutocompleteProps['renderPopover'], undefined>
710
+ resultsPopoverElementRef: Parameters<Exclude<AutocompleteProps['renderPopover'], undefined>>[1]
711
+ } & Parameters<Exclude<AutocompleteProps['renderPopover'], undefined>>[0]) {
712
+ return renderPopover(
713
+ {
714
+ content,
715
+ hidden,
716
+ inputElement,
717
+ onMouseEnter,
718
+ onMouseLeave,
719
+ },
720
+ resultsPopoverElementRef,
721
+ )
722
+ }
@@ -16,9 +16,12 @@ export default function CustomStory(): React.JSX.Element {
16
16
  const data: ExampleOption[] = countries.map((d) => ({value: d.code, title: d.name}))
17
17
  const border = useBoolean('Border', true)
18
18
  const disabled = useBoolean('Disabled', false)
19
+ // @ts-expect-error - TODO: fix this
19
20
  const fontSize = useSelect('Font size', WORKSHOP_TEXT_FONT_SIZE_OPTIONS, 2)
20
21
  const openButton = useBoolean('Open button', true)
22
+ // @ts-expect-error - TODO: fix this
21
23
  const padding = useSelect('Padding', WORKSHOP_SPACE_OPTIONS, 3)
24
+ // @ts-expect-error - TODO: fix this
22
25
  const radius = useSelect('Radius', WORKSHOP_RADIUS_OPTIONS, 2)
23
26
  const readOnly = useBoolean('Read only', false)
24
27
  const [value, setValue] = useState('')
@@ -31,10 +34,17 @@ export default function CustomStory(): React.JSX.Element {
31
34
  href="#"
32
35
  key={option.value}
33
36
  onClick={(event) => event.preventDefault()}
37
+ // @ts-expect-error - TODO: fix this
34
38
  padding={padding}
39
+ // @ts-expect-error - TODO: fix this
35
40
  radius={Math.max((radius ?? 0) - 1, 0) as Radius}
36
41
  >
37
- <Text size={fontSize}>{option.title}</Text>
42
+ <Text
43
+ // @ts-expect-error - TODO: fix this
44
+ size={fontSize}
45
+ >
46
+ {option.title}
47
+ </Text>
38
48
  </Card>
39
49
  ),
40
50
  [fontSize, padding, radius],
@@ -63,13 +73,16 @@ export default function CustomStory(): React.JSX.Element {
63
73
  border={border}
64
74
  disabled={disabled}
65
75
  filterOption={filterOption}
76
+ // @ts-expect-error - TODO: fix this
66
77
  fontSize={fontSize}
67
78
  id="custom"
68
79
  onChange={setValue}
69
80
  openButton={openButton}
70
81
  options={options}
82
+ // @ts-expect-error - TODO: fix this
71
83
  padding={padding}
72
84
  placeholder="Search"
85
+ // @ts-expect-error - TODO: fix this
73
86
  radius={radius}
74
87
  readOnly={readOnly}
75
88
  renderOption={renderOption}
@@ -32,14 +32,18 @@ const typingPerfTest: PerfTestProps<HTMLInputElement> = {
32
32
  export default function ExampleStory(): React.JSX.Element {
33
33
  const {ref, Wrapper} = usePerfTest(typingPerfTest)
34
34
 
35
+ // @ts-expect-error - TODO: fix this
35
36
  const layoutTone = useSelect('Layout tone', WORKSHOP_CARD_TONE_OPTIONS)
36
37
  const options = useMemo(() => countries.map((country) => ({value: country.code})), [])
37
38
  const border = useBoolean('Border', true)
38
39
  const customValidity = useText('Custom validity')
39
40
  const disabled = useBoolean('Disabled', false)
41
+ // @ts-expect-error - TODO: fix this
40
42
  const fontSize = useSelect('Font size', WORKSHOP_TEXT_FONT_SIZE_OPTIONS)
41
43
  const openButton = useBoolean('Open button', false)
44
+ // @ts-expect-error - TODO: fix this
42
45
  const padding = useSelect('Padding', WORKSHOP_SPACE_OPTIONS, 3)
46
+ // @ts-expect-error - TODO: fix this
43
47
  const radius = useSelect('Radius', WORKSHOP_RADIUS_OPTIONS, 2)
44
48
  const readOnly = useBoolean('Read only', false)
45
49
  const [value, setValue] = useState('')
@@ -47,7 +51,11 @@ export default function ExampleStory(): React.JSX.Element {
47
51
  const handleChange = useCallback((value: string) => setValue(value), [])
48
52
 
49
53
  return (
50
- <Card height="fill" tone={layoutTone}>
54
+ <Card
55
+ height="fill"
56
+ // @ts-expect-error - TODO: fix this
57
+ tone={layoutTone}
58
+ >
51
59
  <Container width={1}>
52
60
  <Box paddingX={[4, 5, 6]} paddingY={[5, 6, 7]}>
53
61
  <Stack gap={3}>
@@ -59,13 +67,16 @@ export default function ExampleStory(): React.JSX.Element {
59
67
  border={border}
60
68
  customValidity={customValidity}
61
69
  disabled={disabled}
70
+ // @ts-expect-error - TODO: fix this
62
71
  fontSize={fontSize}
63
72
  onChange={handleChange}
64
73
  id="default"
65
74
  openButton={openButton}
66
75
  options={options}
76
+ // @ts-expect-error - TODO: fix this
67
77
  padding={padding}
68
78
  placeholder="Search"
79
+ // @ts-expect-error - TODO: fix this
69
80
  radius={radius}
70
81
  readOnly={readOnly}
71
82
  ref={ref}
@@ -8,32 +8,32 @@ const scope: WorkshopScope = {
8
8
  {
9
9
  name: 'example',
10
10
  title: 'Example',
11
- component: lazy(() => import('./example')),
11
+ component: lazy(() => import('./Example')),
12
12
  },
13
13
  {
14
14
  name: 'custom',
15
15
  title: 'Custom',
16
- component: lazy(() => import('./custom')),
16
+ component: lazy(() => import('./Custom')),
17
17
  },
18
18
  {
19
19
  name: 'async',
20
20
  title: 'Async',
21
- component: lazy(() => import('./async')),
21
+ component: lazy(() => import('./Async')),
22
22
  },
23
23
  {
24
24
  name: 'constrained-height',
25
25
  title: 'Constrained height',
26
- component: lazy(() => import('./constrainedHeight')),
26
+ component: lazy(() => import('./ConstrainedHeight')),
27
27
  },
28
28
  {
29
29
  name: 'focus-and-blur',
30
30
  title: 'Focus and blur',
31
- component: lazy(() => import('./focusAndBlur')),
31
+ component: lazy(() => import('./FocusAndBlur')),
32
32
  },
33
33
  {
34
34
  name: 'fullscreen',
35
35
  title: 'Fullscreen',
36
- component: lazy(() => import('./fullscreen')),
36
+ component: lazy(() => import('./Fullscreen')),
37
37
  },
38
38
  ],
39
39
  }
@@ -1,4 +1,4 @@
1
- import type {ButtonProps} from '../../primitives/button/button'
1
+ import type {ButtonProps} from '../../primitives/button/Button'
2
2
 
3
3
  /** @public */
4
4
  export type AutocompleteOpenButtonProps = Omit<ButtonProps<'button'>, 'as'>