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

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 +1752 -1132
  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} +24 -9
  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
@@ -11,12 +11,12 @@ import {
11
11
  } from 'react'
12
12
 
13
13
  import {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'
14
- import {Box} from '../../primitives/box/box'
15
- import {Button, type ButtonProps} from '../../primitives/button/button'
16
- import {Flex} from '../../primitives/flex/flex'
17
- import {Popover} from '../../primitives/popover/popover'
18
- import {Stack} from '../../primitives/stack/stack'
19
- import {Text} from '../../primitives/text/text'
14
+ import {Box} from '../../primitives/box/Box'
15
+ import {Button, type ButtonProps} from '../../primitives/button/Button'
16
+ import {Flex} from '../../primitives/flex/Flex'
17
+ import {Popover} from '../../primitives/popover/Popover'
18
+ import {Stack} from '../../primitives/stack/Stack'
19
+ import {Text} from '../../primitives/text/Text'
20
20
  import type {ComponentType, Props} from '../../types'
21
21
 
22
22
  /** @beta */
@@ -48,8 +48,8 @@ export function Breadcrumbs<E extends BreadcrumbsElementType = typeof DEFAULT_BR
48
48
  className,
49
49
  expandButton: expandButtonProps,
50
50
  gap = 2,
51
- gapX,
52
- gapY,
51
+ gapX = gap,
52
+ gapY = gap,
53
53
  maxLength,
54
54
  separator,
55
55
  ...rest
@@ -66,45 +66,17 @@ export function Breadcrumbs<E extends BreadcrumbsElementType = typeof DEFAULT_BR
66
66
 
67
67
  const rawItems = useMemo(() => Children.toArray(children).filter(isValidElement), [children])
68
68
 
69
- const items = useMemo(() => {
70
- const len = rawItems.length
71
-
72
- if (maxLength && len > maxLength) {
73
- const beforeLength = Math.ceil(maxLength / 2)
74
- const afterLength = Math.floor(maxLength / 2)
75
-
76
- return [
77
- ...rawItems.slice(0, beforeLength - 1),
78
- <Popover
79
- constrainSize
80
- content={
81
- <Stack as="ol" gap={gapY} overflow="auto">
82
- {rawItems.slice(beforeLength - 1, len - afterLength)}
83
- </Stack>
84
- }
85
- key="button"
86
- open={open}
87
- padding={2}
88
- placement="top"
89
- portal
90
- ref={popoverElementRef}
91
- >
92
- <Button
93
- mode="bleed"
94
- padding={0}
95
- text="…"
96
- {...expandButtonProps}
97
- onClick={open ? collapse : expand}
98
- ref={expandElementRef}
99
- selected={open}
100
- />
101
- </Popover>,
102
- ...rawItems.slice(len - afterLength),
103
- ]
104
- }
105
-
106
- return rawItems
107
- }, [collapse, expand, expandButtonProps, gapY, maxLength, open, rawItems])
69
+ const items = useItems({
70
+ collapse,
71
+ expand,
72
+ expandElementRef,
73
+ maxLength,
74
+ open,
75
+ popoverElementRef,
76
+ rawItems,
77
+ gapY,
78
+ expandButtonProps,
79
+ })
108
80
 
109
81
  return (
110
82
  <Flex
@@ -129,3 +101,64 @@ export function Breadcrumbs<E extends BreadcrumbsElementType = typeof DEFAULT_BR
129
101
  </Flex>
130
102
  )
131
103
  }
104
+
105
+ function useItems({
106
+ collapse,
107
+ expand,
108
+ expandElementRef,
109
+ maxLength,
110
+ open,
111
+ popoverElementRef,
112
+ rawItems,
113
+ gapY,
114
+ expandButtonProps,
115
+ }: {
116
+ collapse: () => void
117
+ expand: () => void
118
+ expandElementRef: React.RefObject<HTMLButtonElement | null>
119
+ maxLength: number | undefined
120
+ open: boolean
121
+ popoverElementRef: React.RefObject<HTMLDivElement | null>
122
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
123
+ rawItems: React.ReactElement<unknown, string | React.JSXElementConstructor<any>>[]
124
+ gapY: NonNullable<GapStyleProps['gapY']>
125
+ expandButtonProps: BreadcrumbsOwnProps['expandButton']
126
+ }): React.JSX.Element[] {
127
+ const len = rawItems.length
128
+
129
+ if (maxLength && len > maxLength) {
130
+ const beforeLength = Math.ceil(maxLength / 2)
131
+ const afterLength = Math.floor(maxLength / 2)
132
+
133
+ return [
134
+ ...rawItems.slice(0, beforeLength - 1),
135
+ <Popover
136
+ constrainSize
137
+ content={
138
+ <Stack as="ol" gap={gapY} overflow="auto">
139
+ {rawItems.slice(beforeLength - 1, len - afterLength)}
140
+ </Stack>
141
+ }
142
+ key="button"
143
+ open={open}
144
+ padding={2}
145
+ placement="top"
146
+ portal
147
+ ref={popoverElementRef}
148
+ >
149
+ <Button
150
+ mode="bleed"
151
+ padding={0}
152
+ text="…"
153
+ {...expandButtonProps}
154
+ onClick={open ? collapse : expand}
155
+ ref={expandElementRef}
156
+ selected={open}
157
+ />
158
+ </Popover>,
159
+ ...rawItems.slice(len - afterLength),
160
+ ]
161
+ }
162
+
163
+ return rawItems
164
+ }
@@ -8,7 +8,7 @@ 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
  }
@@ -5,20 +5,28 @@ import {
5
5
  type ResponsiveProp,
6
6
  } from '@sanity/ui/css'
7
7
  import type {CardTone, ColorScheme, Radius} from '@sanity/ui/theme'
8
- import {type FocusEvent, type ForwardedRef, type ReactNode, useCallback, useRef} from 'react'
8
+ import {
9
+ type FocusEvent,
10
+ type ForwardedRef,
11
+ type ReactNode,
12
+ use,
13
+ useCallback,
14
+ useMemo,
15
+ useRef,
16
+ } from 'react'
9
17
 
10
18
  import {Z_OFFSETS} from '../../constants'
11
19
  import {isHTMLElement} from '../../helpers/element'
12
20
  import {focusFirstDescendant, focusLastDescendant} from '../../helpers/focus'
21
+ import {_getResponsiveProp} from '../../helpers/props'
13
22
  import {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'
14
- import {useResponsiveProp} from '../../hooks/useResponsiveProp'
15
- import {Container} from '../../primitives/container/container'
16
- import {Layer, type LayerOwnProps, type LayerProps} from '../../primitives/layer/layer'
23
+ import {Container} from '../../primitives/container/Container'
24
+ import {Layer, type LayerOwnProps, type LayerProps} from '../../primitives/layer/Layer'
17
25
  import type {ComponentType, Props} from '../../types'
18
- import {useBoundaryElement} from '../../utils/boundaryElement/useBoundaryElement'
19
- import {Portal} from '../../utils/portal/portal'
26
+ import {BoundaryElementContext} from '../../utils/boundaryElement/BoundaryElementContext'
27
+ import {Portal} from '../../utils/portal/Portal'
20
28
  import {usePortal} from '../../utils/portal/usePortal'
21
- import {DialogCard} from './dialogCard'
29
+ import {DialogCard} from './DialogCard'
22
30
  import {isTargetWithinScope} from './isTargetWithinScope'
23
31
  import type {DialogPosition} from './types'
24
32
  import {useDialog} from './useDialog'
@@ -108,10 +116,11 @@ export function Dialog<E extends DialogElementType = typeof DEFAULT_DIALOG_ELEME
108
116
  const animate = prefersReducedMotion ? false : _animate
109
117
  const portal = usePortal()
110
118
  const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element
111
- const boundaryElement = useBoundaryElement().element
112
- const cardRadius = useResponsiveProp(cardRadiusProp)
113
- const position = useResponsiveProp(positionProp)
114
- const zOffset = useResponsiveProp(zOffsetProp)
119
+ const boundaryElement = use(BoundaryElementContext)
120
+ const cardRadius = useMemo(() => _getResponsiveProp(cardRadiusProp), [cardRadiusProp])
121
+ const position = useMemo(() => _getResponsiveProp(positionProp), [positionProp])
122
+ const zOffset = useMemo(() => _getResponsiveProp(zOffsetProp), [zOffsetProp])
123
+
115
124
  const preDivRef = useRef<HTMLDivElement | null>(null)
116
125
  const postDivRef = useRef<HTMLDivElement | null>(null)
117
126
  const cardRef = useRef<HTMLDivElement | null>(null)
@@ -11,6 +11,7 @@ import {
11
11
  import {
12
12
  type ForwardedRef,
13
13
  type ReactNode,
14
+ use,
14
15
  useCallback,
15
16
  useEffect,
16
17
  useImperativeHandle,
@@ -21,14 +22,14 @@ import {
21
22
  import {focusFirstDescendant} from '../../helpers/focus'
22
23
  import {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'
23
24
  import {useGlobalKeyDown} from '../../hooks/useGlobalKeyDown'
24
- import {Box} from '../../primitives/box/box'
25
- import {Button} from '../../primitives/button/button'
26
- import {Card, type CardElementType, type CardOwnProps} from '../../primitives/card/card'
27
- import {Flex} from '../../primitives/flex/flex'
25
+ import {Box} from '../../primitives/box/Box'
26
+ import {Button} from '../../primitives/button/Button'
27
+ import {Card, type CardElementType, type CardOwnProps} from '../../primitives/card/Card'
28
+ import {Flex} from '../../primitives/flex/Flex'
28
29
  import {useLayer} from '../../primitives/layer/useLayer'
29
- import {Text} from '../../primitives/text/text'
30
+ import {Text} from '../../primitives/text/Text'
30
31
  import type {Props} from '../../types'
31
- import {useBoundaryElement} from '../../utils/boundaryElement/useBoundaryElement'
32
+ import {BoundaryElementContext} from '../../utils/boundaryElement/BoundaryElementContext'
32
33
  import {usePortal} from '../../utils/portal/usePortal'
33
34
  import {isTargetWithinScope} from './isTargetWithinScope'
34
35
 
@@ -87,11 +88,10 @@ export function DialogCard<E extends DialogCardElementType = typeof DEFAULT_DIAL
87
88
 
88
89
  const portal = usePortal()
89
90
  const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element
90
- const boundaryElement = useBoundaryElement().element
91
+ const boundaryElement = use(BoundaryElementContext)
91
92
  const ref = useRef<HTMLDivElement | null>(null)
92
93
  const contentRef = useRef<HTMLDivElement | null>(null)
93
- const layer = useLayer()
94
- const {isTopLayer} = layer
94
+ const {isTopLayer} = useLayer()
95
95
  const labelId = `${id}_label`
96
96
  const showCloseButton = Boolean(onClose) && hideCloseButton === false
97
97
  const showHeader = Boolean(header) || showCloseButton
@@ -18,4 +18,4 @@ export interface DialogContextValue {
18
18
  * @internal
19
19
  */
20
20
  export const DialogContext: Context<DialogContextValue> =
21
- createGlobalScopedContext<DialogContextValue>('@sanity/ui/v3/dialog', {version: 0.0})
21
+ createGlobalScopedContext<DialogContextValue>('@sanity/ui/v4/dialog', {version: 0.0})
@@ -1,7 +1,7 @@
1
1
  import type {ResponsiveProp} from '@sanity/ui/css'
2
2
  import {type ReactNode, useMemo} from 'react'
3
3
 
4
- import {DialogContext, type DialogContextValue} from './dialogContext'
4
+ import {DialogContext, type DialogContextValue} from './DialogContext'
5
5
  import type {DialogPosition} from './types'
6
6
 
7
7
  /**
@@ -30,5 +30,5 @@ export function DialogProvider(props: DialogProviderProps): React.JSX.Element {
30
30
  [position, zOffset],
31
31
  )
32
32
 
33
- return <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>
33
+ return <DialogContext value={contextValue}>{children}</DialogContext>
34
34
  }
@@ -11,7 +11,8 @@ import {
11
11
  PortalProvider,
12
12
  } from '@sanity/ui'
13
13
  import {useCallback, useState} from 'react'
14
- import {styled} from 'styled-components'
14
+
15
+ import {panePortal, paneRoot} from './styles.css'
15
16
 
16
17
  export default function PanesStory(): React.JSX.Element {
17
18
  return (
@@ -22,23 +23,6 @@ export default function PanesStory(): React.JSX.Element {
22
23
  )
23
24
  }
24
25
 
25
- const PaneRoot = styled(Card)`
26
- position: relative;
27
- `
28
-
29
- const PanePortal = styled.div`
30
- position: absolute;
31
- left: 0;
32
- right: 0;
33
- top: 0;
34
- bottom: 0;
35
- pointer-events: none;
36
-
37
- & > * {
38
- pointer-events: auto;
39
- }
40
- `
41
-
42
26
  function Pane(props: {borderLeft?: boolean; id: string}) {
43
27
  const {borderLeft, id} = props
44
28
  const [element, setElement] = useState<HTMLDivElement | null>(null)
@@ -52,13 +36,13 @@ function Pane(props: {borderLeft?: boolean; id: string}) {
52
36
  return (
53
37
  <BoundaryElementProvider element={element}>
54
38
  <PortalProvider element={portalElement}>
55
- <PaneRoot borderLeft={borderLeft} flex={1} ref={setElement}>
39
+ <Card className={paneRoot} borderLeft={borderLeft} flex={1} ref={setElement}>
56
40
  <Box padding={4}>
57
41
  <Button onClick={() => setDialogOpen(true)} selected={dialogOpen} text="Open dialog" />
58
42
  </Box>
59
43
 
60
- <PanePortal ref={setPortalElement} />
61
- </PaneRoot>
44
+ <div className={panePortal} ref={setPortalElement} />
45
+ </Card>
62
46
 
63
47
  {dialogOpen && (
64
48
  <Dialog
@@ -79,6 +63,10 @@ function Pane(props: {borderLeft?: boolean; id: string}) {
79
63
  <MenuItem text="Item 3" />
80
64
  </Menu>
81
65
  }
66
+ popover={{
67
+ modal: true,
68
+ portal: true,
69
+ }}
82
70
  />
83
71
  </Box>
84
72
  </Dialog>
@@ -6,6 +6,7 @@ import {WORKSHOP_DIALOG_POSITION_OPTIONS} from '$workshop'
6
6
 
7
7
  export default function PositionStory(): React.JSX.Element {
8
8
  const open = useBoolean('Open', true)
9
+ // @ts-expect-error - TODO: fix this
9
10
  const position = useSelect('Position', WORKSHOP_DIALOG_POSITION_OPTIONS)
10
11
 
11
12
  return (
@@ -22,7 +23,14 @@ export default function PositionStory(): React.JSX.Element {
22
23
  </Stack>
23
24
 
24
25
  <LayerProvider>
25
- {open && <Dialog header="Position example" id="position-example" position={position} />}
26
+ {open && (
27
+ <Dialog
28
+ header="Position example"
29
+ id="position-example"
30
+ // @ts-expect-error - TODO: fix this
31
+ position={position}
32
+ />
33
+ )}
26
34
  </LayerProvider>
27
35
  </Box>
28
36
  </Box>
@@ -9,6 +9,7 @@ export default function PropsStory(): React.JSX.Element {
9
9
  const header = useText('Header', 'Props example')
10
10
  const onClickOutside = useBoolean('Close when click outside', false)
11
11
  const hideCloseButton = useBoolean('Hide close button', false)
12
+ // @ts-expect-error - TODO: fix this
12
13
  const width = useSelect('Width', WORKSHOP_CONTAINER_WIDTH_OPTIONS)
13
14
  const [open, setOpen] = useState(false)
14
15
  const buttonRef = useRef<HTMLButtonElement | null>(null)
@@ -37,6 +38,7 @@ export default function PropsStory(): React.JSX.Element {
37
38
  onClickOutside={onClickOutside ? handleClose : undefined}
38
39
  onClose={handleClose}
39
40
  open={open}
41
+ // @ts-expect-error - TODO: fix this
40
42
  width={width}
41
43
  >
42
44
  <Box padding={4}>
@@ -5,16 +5,16 @@ const scope: WorkshopScope = {
5
5
  name: 'components/dialog',
6
6
  title: 'Dialog',
7
7
  stories: [
8
- {name: 'props', title: 'Props', component: lazy(() => import('./props'))},
9
- {name: 'nested', title: 'Nested', component: lazy(() => import('./nested'))},
10
- {name: 'on-scroll', title: 'On scroll', component: lazy(() => import('./onScroll'))},
11
- {name: 'layering', title: 'Layering', component: lazy(() => import('./layering'))},
12
- {name: 'position', title: 'Position', component: lazy(() => import('./position'))},
13
- {name: 'provider', title: 'Provider', component: lazy(() => import('./provider'))},
14
- {name: 'auto-focus', title: 'AutoFocus', component: lazy(() => import('./autoFocus'))},
15
- {name: 'panes', title: 'Panes', component: lazy(() => import('./panes'))},
16
- {name: 'activate', title: 'Activate', component: lazy(() => import('./activate'))},
17
- {name: 'wrapped', title: 'Wrapped', component: lazy(() => import('./wrapped'))},
8
+ {name: 'props', title: 'Props', component: lazy(() => import('./Props'))},
9
+ {name: 'nested', title: 'Nested', component: lazy(() => import('./Nested'))},
10
+ {name: 'on-scroll', title: 'On scroll', component: lazy(() => import('./OnScroll'))},
11
+ {name: 'layering', title: 'Layering', component: lazy(() => import('./Layering'))},
12
+ {name: 'position', title: 'Position', component: lazy(() => import('./Position'))},
13
+ {name: 'provider', title: 'Provider', component: lazy(() => import('./Provider'))},
14
+ {name: 'auto-focus', title: 'AutoFocus', component: lazy(() => import('./AutoFocus'))},
15
+ {name: 'panes', title: 'Panes', component: lazy(() => import('./Panes'))},
16
+ {name: 'activate', title: 'Activate', component: lazy(() => import('./Activate'))},
17
+ {name: 'wrapped', title: 'Wrapped', component: lazy(() => import('./Wrapped'))},
18
18
  ],
19
19
  }
20
20
 
@@ -0,0 +1,18 @@
1
+ import {globalStyle, style} from '@vanilla-extract/css'
2
+
3
+ export const paneRoot: string = style({
4
+ position: 'relative',
5
+ })
6
+
7
+ export const panePortal: string = style({
8
+ position: 'absolute',
9
+ left: 0,
10
+ right: 0,
11
+ top: 0,
12
+ bottom: 0,
13
+ pointerEvents: 'none',
14
+ })
15
+
16
+ globalStyle(`${panePortal} > *`, {
17
+ pointerEvents: 'auto',
18
+ })
@@ -1,11 +1,11 @@
1
- import {useContext} from 'react'
1
+ import {use} from 'react'
2
2
 
3
- import {DialogContext, type DialogContextValue} from './dialogContext'
3
+ import {DialogContext, type DialogContextValue} from './DialogContext'
4
4
 
5
5
  /**
6
6
  * This API might change. DO NOT USE IN PRODUCTION.
7
7
  * @beta
8
8
  */
9
9
  export function useDialog(): DialogContextValue {
10
- return useContext(DialogContext)
10
+ return use(DialogContext)
11
11
  }
@@ -1,8 +1,8 @@
1
1
  import type {GapStyleProps, RadiusStyleProps, ResponsiveProp} from '@sanity/ui/css'
2
2
  import type {FontTextSize, Space} from '@sanity/ui/theme'
3
3
 
4
- import {Box} from '../../primitives/box/box'
5
- import {KBD} from '../../primitives/kbd/kbd'
4
+ import {Box} from '../../primitives/box/Box'
5
+ import {KBD} from '../../primitives/kbd/Kbd'
6
6
  import type {ComponentType, Props} from '../../types'
7
7
 
8
8
  /** @public */
@@ -8,7 +8,7 @@ const scope: WorkshopScope = {
8
8
  {
9
9
  name: 'plain',
10
10
  title: 'Plain',
11
- component: lazy(() => import('./plain')),
11
+ component: lazy(() => import('./Plain')),
12
12
  },
13
13
  ],
14
14
  }
@@ -5,7 +5,7 @@ import {describe, expect, it, vi} from 'vitest'
5
5
 
6
6
  import {render} from '$test/utils'
7
7
 
8
- import {MenuContext, type MenuContextValue} from './menuContext'
8
+ import {MenuContext, type MenuContextValue} from './MenuContext'
9
9
  import {useMenu} from './useMenu'
10
10
 
11
11
  describe('components/menu', () => {
@@ -34,23 +34,20 @@ describe('components/menu', () => {
34
34
 
35
35
  const value: MenuContextValue = useMemo(
36
36
  () => ({
37
- version: 0.0,
37
+ version: 2,
38
38
  activeElement: null,
39
- activeIndex: 0,
40
39
  mount: (element: HTMLElement | null) => () => console.log(element),
41
40
  onItemClick: () => undefined,
42
41
  onItemMouseEnter: handleItemMouseEnter,
43
42
  onItemMouseLeave: handleItemMouseLeave,
44
- onMouseEnter: handleItemMouseEnter,
45
- onMouseLeave: handleItemMouseLeave,
46
43
  }),
47
44
  [handleItemMouseEnter, handleItemMouseLeave],
48
45
  )
49
46
 
50
47
  return (
51
- <MenuContext.Provider value={value}>
48
+ <MenuContext value={value}>
52
49
  <Debug />
53
- </MenuContext.Provider>
50
+ </MenuContext>
54
51
  )
55
52
  }
56
53
 
@@ -58,8 +55,7 @@ describe('components/menu', () => {
58
55
 
59
56
  const contextValue = log.mock.calls[0][0]
60
57
 
61
- expect(contextValue.version).toBe(0.0)
62
- expect(contextValue.activeIndex).toBe(0)
58
+ expect(contextValue.version).toBe(2)
63
59
  expect(typeof contextValue.mount).toBe('function')
64
60
  expect(typeof contextValue.onItemClick).toBe('function')
65
61
  expect(typeof contextValue.onItemMouseEnter).toBe('function')
@@ -81,12 +77,12 @@ describe('components/menu', () => {
81
77
 
82
78
  function Root() {
83
79
  return (
84
- <MenuContext.Provider
80
+ <MenuContext
85
81
  // @ts-expect-error - we want to test the error case
86
82
  value={undefined}
87
83
  >
88
84
  <Debug />
89
- </MenuContext.Provider>
85
+ </MenuContext>
90
86
  )
91
87
  }
92
88
 
@@ -112,12 +108,12 @@ describe('components/menu', () => {
112
108
  // NOTE: we’re testing this because the context value may be a function in the future
113
109
 
114
110
  return (
115
- <MenuContext.Provider
111
+ <MenuContext
116
112
  // @ts-expect-error - we want to test the error case
117
113
  value={() => ({version: 1})}
118
114
  >
119
115
  <Debug />
120
- </MenuContext.Provider>
116
+ </MenuContext>
121
117
  )
122
118
  }
123
119
 
@@ -4,11 +4,11 @@ import {useCallback, useEffect, useImperativeHandle, useMemo, useRef} from 'reac
4
4
 
5
5
  import {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'
6
6
  import {useGlobalKeyDown} from '../../hooks/useGlobalKeyDown'
7
- import {Box} from '../../primitives/box/box'
7
+ import {Box} from '../../primitives/box/Box'
8
8
  import {useLayer} from '../../primitives/layer/useLayer'
9
- import {Stack} from '../../primitives/stack/stack'
9
+ import {Stack} from '../../primitives/stack/Stack'
10
10
  import type {ComponentType, Props} from '../../types'
11
- import {MenuContext, type MenuContextValue} from './menuContext'
11
+ import {MenuContext, type MenuContextValue} from './MenuContext'
12
12
  import {useMenuController} from './useMenuController'
13
13
 
14
14
  /** @public */
@@ -19,7 +19,7 @@ export type MenuOwnProps = PaddingStyleProps & {
19
19
  'gap'?: ResponsiveProp<Space>
20
20
  'onClickOutside'?: (event: MouseEvent) => void
21
21
  'onEscape'?: () => void
22
- 'onItemClick'?: () => void
22
+ 'onItemClick'?: (event: React.MouseEvent<HTMLButtonElement>) => void
23
23
  'onItemSelect'?: (index: number) => void
24
24
  'originElement'?: HTMLElement | null
25
25
  'registerElement'?: (el: HTMLElement) => () => void
@@ -127,26 +127,21 @@ export function Menu<E extends MenuElementType = typeof DEFAULT_MENU_ELEMENT>(
127
127
  ),
128
128
  )
129
129
 
130
- const value: MenuContextValue = useMemo(
131
- () => ({
132
- version: 0.0,
133
- activeElement,
134
- activeIndex,
135
- mount,
136
- onClickOutside,
137
- onEscape,
138
- onItemClick,
139
- onItemMouseEnter: handleItemMouseEnter,
140
- onItemMouseLeave: handleItemMouseLeave,
141
- registerElement,
142
-
143
- // deprecated
144
- onMouseEnter: handleItemMouseEnter,
145
- onMouseLeave: handleItemMouseLeave,
146
- }),
130
+ const value = useMemo(
131
+ () =>
132
+ ({
133
+ version: 2,
134
+ activeElement,
135
+ mount,
136
+ onClickOutside,
137
+ onEscape,
138
+ onItemClick,
139
+ onItemMouseEnter: handleItemMouseEnter,
140
+ onItemMouseLeave: handleItemMouseLeave,
141
+ registerElement,
142
+ }) satisfies MenuContextValue,
147
143
  [
148
144
  activeElement,
149
- activeIndex,
150
145
  mount,
151
146
  handleItemMouseEnter,
152
147
  handleItemMouseLeave,
@@ -158,7 +153,7 @@ export function Menu<E extends MenuElementType = typeof DEFAULT_MENU_ELEMENT>(
158
153
  )
159
154
 
160
155
  return (
161
- <MenuContext.Provider value={value}>
156
+ <MenuContext value={value}>
162
157
  <Box
163
158
  data-ui="Menu"
164
159
  {...rest}
@@ -174,6 +169,6 @@ export function Menu<E extends MenuElementType = typeof DEFAULT_MENU_ELEMENT>(
174
169
  >
175
170
  <Stack gap={gap}>{children}</Stack>
176
171
  </Box>
177
- </MenuContext.Provider>
172
+ </MenuContext>
178
173
  )
179
174
  }