@sanity/ui 4.0.0-beta.8 → 4.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +21 -7
  3. package/dist/_chunks/getScopedTheme.cjs +4043 -0
  4. package/dist/_chunks/getScopedTheme.cjs.map +1 -0
  5. package/dist/_chunks/getScopedTheme.js +3803 -0
  6. package/dist/_chunks/getScopedTheme.js.map +1 -0
  7. package/dist/_chunks/portalProvider.cjs +3750 -0
  8. package/dist/_chunks/portalProvider.cjs.map +1 -0
  9. package/dist/_chunks/portalProvider.d.cts +1067 -0
  10. package/dist/_chunks/portalProvider.d.cts.map +1 -0
  11. package/dist/_chunks/portalProvider.d.ts +1067 -0
  12. package/dist/_chunks/portalProvider.d.ts.map +1 -0
  13. package/dist/_chunks/portalProvider.js +3300 -0
  14. package/dist/_chunks/portalProvider.js.map +1 -0
  15. package/dist/_chunks/refractor.cjs +18 -0
  16. package/dist/_chunks/refractor.cjs.map +1 -0
  17. package/dist/_chunks/refractor.js +20 -0
  18. package/dist/_chunks/refractor.js.map +1 -0
  19. package/dist/_chunks/rgba.d.cts +929 -0
  20. package/dist/_chunks/rgba.d.cts.map +1 -0
  21. package/dist/_chunks/rgba.d.ts +929 -0
  22. package/dist/_chunks/rgba.d.ts.map +1 -0
  23. package/dist/_visual-editing.cjs +4 -0
  24. package/dist/_visual-editing.d.cts +2 -0
  25. package/dist/_visual-editing.d.ts +2 -0
  26. package/dist/_visual-editing.js +3 -0
  27. package/dist/index.cjs +3007 -0
  28. package/dist/index.cjs.map +1 -0
  29. package/dist/index.d.cts +1275 -0
  30. package/dist/index.d.cts.map +1 -0
  31. package/dist/index.d.ts +708 -1188
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2964 -4783
  34. package/dist/index.js.map +1 -1
  35. package/dist/theme.cjs +54 -0
  36. package/dist/theme.cjs.map +1 -0
  37. package/dist/theme.d.cts +278 -0
  38. package/dist/theme.d.cts.map +1 -0
  39. package/dist/theme.d.ts +278 -0
  40. package/dist/theme.d.ts.map +1 -0
  41. package/dist/theme.js +53 -0
  42. package/dist/theme.js.map +1 -0
  43. package/package.json +65 -88
  44. package/dist/_chunks-es/Syntax.js +0 -23
  45. package/dist/_chunks-es/Syntax.js.map +0 -1
  46. package/dist/index.css +0 -1
  47. package/exports/index.css +0 -1
  48. package/exports/index.ts +0 -125
  49. package/src/components/autocomplete/Autocomplete.tsx +0 -665
  50. package/src/components/autocomplete/AutocompleteOption.tsx +0 -42
  51. package/src/components/autocomplete/__workshop__/Async.tsx +0 -162
  52. package/src/components/autocomplete/__workshop__/ConstrainedHeight.tsx +0 -121
  53. package/src/components/autocomplete/__workshop__/Custom.tsx +0 -91
  54. package/src/components/autocomplete/__workshop__/Example.tsx +0 -70
  55. package/src/components/autocomplete/__workshop__/FocusAndBlur.tsx +0 -39
  56. package/src/components/autocomplete/__workshop__/Fullscreen.tsx +0 -307
  57. package/src/components/autocomplete/__workshop__/index.ts +0 -41
  58. package/src/components/autocomplete/__workshop__/mock/apiStore.ts +0 -49
  59. package/src/components/autocomplete/__workshop__/mock/countries.ts +0 -245
  60. package/src/components/autocomplete/__workshop__/types.ts +0 -4
  61. package/src/components/autocomplete/autocompleteReducer.ts +0 -47
  62. package/src/components/autocomplete/constants.ts +0 -28
  63. package/src/components/autocomplete/types.ts +0 -103
  64. package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -163
  65. package/src/components/breadcrumbs/__workshop__/Example.tsx +0 -48
  66. package/src/components/breadcrumbs/__workshop__/index.ts +0 -16
  67. package/src/components/dialog/Dialog.tsx +0 -230
  68. package/src/components/dialog/DialogCard.tsx +0 -233
  69. package/src/components/dialog/DialogContext.ts +0 -21
  70. package/src/components/dialog/DialogProvider.tsx +0 -34
  71. package/src/components/dialog/__workshop__/Activate.tsx +0 -141
  72. package/src/components/dialog/__workshop__/AutoFocus.tsx +0 -29
  73. package/src/components/dialog/__workshop__/Layering.tsx +0 -41
  74. package/src/components/dialog/__workshop__/Nested.tsx +0 -71
  75. package/src/components/dialog/__workshop__/OnScroll.tsx +0 -51
  76. package/src/components/dialog/__workshop__/Panes.tsx +0 -75
  77. package/src/components/dialog/__workshop__/Position.tsx +0 -30
  78. package/src/components/dialog/__workshop__/Props.tsx +0 -93
  79. package/src/components/dialog/__workshop__/Provider.tsx +0 -11
  80. package/src/components/dialog/__workshop__/Wrapped.tsx +0 -76
  81. package/src/components/dialog/__workshop__/index.ts +0 -21
  82. package/src/components/dialog/isTargetWithinScope.ts +0 -14
  83. package/src/components/dialog/types.ts +0 -2
  84. package/src/components/dialog/useDialog.ts +0 -11
  85. package/src/components/hotkeys/Hotkeys.tsx +0 -70
  86. package/src/components/hotkeys/__workshop__/Plain.tsx +0 -9
  87. package/src/components/hotkeys/__workshop__/index.ts +0 -16
  88. package/src/components/menu/Menu.test.tsx +0 -125
  89. package/src/components/menu/Menu.tsx +0 -174
  90. package/src/components/menu/MenuButton.tsx +0 -231
  91. package/src/components/menu/MenuContext.ts +0 -19
  92. package/src/components/menu/MenuDivider.tsx +0 -32
  93. package/src/components/menu/MenuGroup.tsx +0 -240
  94. package/src/components/menu/MenuItem.tsx +0 -153
  95. package/src/components/menu/__workshop__/AsComponent.tsx +0 -45
  96. package/src/components/menu/__workshop__/AvatarMenu.tsx +0 -36
  97. package/src/components/menu/__workshop__/ClosableMenuButton.tsx +0 -47
  98. package/src/components/menu/__workshop__/ConstrainedInBoundary.tsx +0 -133
  99. package/src/components/menu/__workshop__/CustomMenuItem.tsx +0 -47
  100. package/src/components/menu/__workshop__/CustomSelectedState.tsx +0 -35
  101. package/src/components/menu/__workshop__/DataProps.tsx +0 -27
  102. package/src/components/menu/__workshop__/DisableFocusOnClose.tsx +0 -40
  103. package/src/components/menu/__workshop__/Groups.tsx +0 -164
  104. package/src/components/menu/__workshop__/MenuButton.tsx +0 -79
  105. package/src/components/menu/__workshop__/MenuGroupRight.tsx +0 -73
  106. package/src/components/menu/__workshop__/NestedMenu.tsx +0 -22
  107. package/src/components/menu/__workshop__/OnCloseMenuButton.tsx +0 -50
  108. package/src/components/menu/__workshop__/SelectedItem.tsx +0 -69
  109. package/src/components/menu/__workshop__/ShouldFocus.tsx +0 -42
  110. package/src/components/menu/__workshop__/Tones.tsx +0 -19
  111. package/src/components/menu/__workshop__/index.ts +0 -91
  112. package/src/components/menu/helpers.ts +0 -82
  113. package/src/components/menu/useMenu.ts +0 -21
  114. package/src/components/menu/useMenuController.ts +0 -245
  115. package/src/components/tab/Tab.tsx +0 -135
  116. package/src/components/tab/TabList.tsx +0 -157
  117. package/src/components/tab/TabListContext.ts +0 -10
  118. package/src/components/tab/TabPanel.tsx +0 -94
  119. package/src/components/tab/__workshop__/Example.tsx +0 -135
  120. package/src/components/tab/__workshop__/index.ts +0 -16
  121. package/src/components/tab/types.ts +0 -11
  122. package/src/components/toast/Toast.test.tsx +0 -103
  123. package/src/components/toast/Toast.tsx +0 -191
  124. package/src/components/toast/ToastContext.ts +0 -7
  125. package/src/components/toast/ToastLayer.tsx +0 -54
  126. package/src/components/toast/ToastProvider.tsx +0 -127
  127. package/src/components/toast/__workshop__/Hook.tsx +0 -71
  128. package/src/components/toast/__workshop__/Toast.tsx +0 -26
  129. package/src/components/toast/__workshop__/index.ts +0 -21
  130. package/src/components/toast/toastState.ts +0 -6
  131. package/src/components/toast/types.ts +0 -24
  132. package/src/components/toast/useToast.ts +0 -23
  133. package/src/components/tree/Tree.tsx +0 -248
  134. package/src/components/tree/TreeContext.ts +0 -10
  135. package/src/components/tree/TreeGroup.tsx +0 -46
  136. package/src/components/tree/TreeItem.tsx +0 -236
  137. package/src/components/tree/__workshop__/Basic.tsx +0 -108
  138. package/src/components/tree/__workshop__/TabFromElement.tsx +0 -84
  139. package/src/components/tree/__workshop__/basic.perf.ts +0 -19
  140. package/src/components/tree/__workshop__/index.ts +0 -23
  141. package/src/components/tree/helpers.ts +0 -105
  142. package/src/components/tree/types.ts +0 -24
  143. package/src/components/tree/useTree.ts +0 -17
  144. package/src/components/virtualList/VirtualList.tsx +0 -254
  145. package/src/components/virtualList/__workshop__/ChangingProps.tsx +0 -41
  146. package/src/components/virtualList/__workshop__/ElementScroll.tsx +0 -43
  147. package/src/components/virtualList/__workshop__/InfiniteList.tsx +0 -40
  148. package/src/components/virtualList/__workshop__/WindowScrolll.tsx +0 -23
  149. package/src/components/virtualList/__workshop__/index.ts +0 -31
  150. package/src/core/_keys.ts +0 -26
  151. package/src/core/constants.ts +0 -67
  152. package/src/core/getElementRef.ts +0 -29
  153. package/src/core/helpers/animation.ts +0 -26
  154. package/src/core/helpers/element.ts +0 -55
  155. package/src/core/helpers/focus.ts +0 -92
  156. package/src/core/helpers/props.ts +0 -51
  157. package/src/core/helpers/scroll.ts +0 -15
  158. package/src/core/lib/createGlobalScopedContext.ts +0 -39
  159. package/src/core/lib/globalScope.ts +0 -19
  160. package/src/core/lib/isArray.ts +0 -3
  161. package/src/core/lib/isRecord.ts +0 -3
  162. package/src/core/types.ts +0 -57
  163. package/src/hooks/useClickOutsideEvent.test.tsx +0 -114
  164. package/src/hooks/useClickOutsideEvent.ts +0 -66
  165. package/src/hooks/useCustomValidity.ts +0 -13
  166. package/src/hooks/useElementSize.ts +0 -19
  167. package/src/hooks/useGlobalKeyDown.ts +0 -23
  168. package/src/hooks/useMatchMedia.ts +0 -28
  169. package/src/hooks/useMediaIndex/__workshop__/Test.tsx +0 -14
  170. package/src/hooks/useMediaIndex/__workshop__/index.ts +0 -16
  171. package/src/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -21
  172. package/src/hooks/useMediaIndex/useMediaIndex.ts +0 -111
  173. package/src/hooks/useMounted.ts +0 -15
  174. package/src/hooks/usePrefersDark.hydration.test.tsx +0 -56
  175. package/src/hooks/usePrefersDark.test.tsx +0 -20
  176. package/src/hooks/usePrefersDark.ts +0 -16
  177. package/src/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  178. package/src/hooks/usePrefersReducedMotion.test.tsx +0 -20
  179. package/src/hooks/usePrefersReducedMotion.ts +0 -16
  180. package/src/hooks/useResponsiveProp.ts +0 -14
  181. package/src/hooks/useUnique.ts +0 -54
  182. package/src/middleware/origin.ts +0 -47
  183. package/src/observers/elementSize.ts +0 -114
  184. package/src/primitives/_syntax/LazySyntax.tsx +0 -4
  185. package/src/primitives/_syntax/Syntax.tsx +0 -26
  186. package/src/primitives/avatar/Avatar.tsx +0 -145
  187. package/src/primitives/avatar/AvatarCounter.tsx +0 -69
  188. package/src/primitives/avatar/AvatarStack.tsx +0 -77
  189. package/src/primitives/avatar/__workshop__/AsButton.tsx +0 -12
  190. package/src/primitives/avatar/__workshop__/PropsStory.tsx +0 -24
  191. package/src/primitives/avatar/__workshop__/Stack.tsx +0 -27
  192. package/src/primitives/avatar/__workshop__/WithinButton.tsx +0 -51
  193. package/src/primitives/avatar/__workshop__/WithinMenuItem.tsx +0 -52
  194. package/src/primitives/avatar/__workshop__/index.ts +0 -36
  195. package/src/primitives/avatar/types.ts +0 -2
  196. package/src/primitives/badge/Badge.test.tsx +0 -16
  197. package/src/primitives/badge/Badge.tsx +0 -53
  198. package/src/primitives/badge/__workshop__/Props.tsx +0 -27
  199. package/src/primitives/badge/__workshop__/Tones.tsx +0 -15
  200. package/src/primitives/badge/__workshop__/index.ts +0 -26
  201. package/src/primitives/badge/__workshop__/within-button.tsx +0 -36
  202. package/src/primitives/box/Box.tsx +0 -73
  203. package/src/primitives/box/__workshop__/Props.tsx +0 -26
  204. package/src/primitives/box/__workshop__/Responsive.tsx +0 -19
  205. package/src/primitives/box/__workshop__/index.ts +0 -21
  206. package/src/primitives/button/Button.test.tsx +0 -30
  207. package/src/primitives/button/Button.tsx +0 -148
  208. package/src/primitives/button/__workshop__/Custom.tsx +0 -39
  209. package/src/primitives/button/__workshop__/CustomIcons.tsx +0 -37
  210. package/src/primitives/button/__workshop__/DataProps.tsx +0 -18
  211. package/src/primitives/button/__workshop__/Disabled.tsx +0 -43
  212. package/src/primitives/button/__workshop__/MixedChildren.tsx +0 -12
  213. package/src/primitives/button/__workshop__/Props.tsx +0 -60
  214. package/src/primitives/button/__workshop__/Stacked.tsx +0 -60
  215. package/src/primitives/button/__workshop__/Styled1.css.ts +0 -7
  216. package/src/primitives/button/__workshop__/Styled1.tsx +0 -11
  217. package/src/primitives/button/__workshop__/TextOverflow.tsx +0 -17
  218. package/src/primitives/button/__workshop__/UploadButton.tsx +0 -28
  219. package/src/primitives/button/__workshop__/index.ts +0 -61
  220. package/src/primitives/button/types.ts +0 -2
  221. package/src/primitives/card/Card.tsx +0 -124
  222. package/src/primitives/card/CardContext.ts +0 -10
  223. package/src/primitives/card/CardInternalContext.ts +0 -10
  224. package/src/primitives/card/CardInternalProvider.tsx +0 -15
  225. package/src/primitives/card/CardProvider.tsx +0 -16
  226. package/src/primitives/card/__workshop__/AsButton.tsx +0 -103
  227. package/src/primitives/card/__workshop__/AsComponent.tsx +0 -25
  228. package/src/primitives/card/__workshop__/Checkered.tsx +0 -25
  229. package/src/primitives/card/__workshop__/DataProps.tsx +0 -25
  230. package/src/primitives/card/__workshop__/Interactive.tsx +0 -29
  231. package/src/primitives/card/__workshop__/ListNavigation.tsx +0 -78
  232. package/src/primitives/card/__workshop__/Props.tsx +0 -59
  233. package/src/primitives/card/__workshop__/Selected.tsx +0 -62
  234. package/src/primitives/card/__workshop__/Styled.tsx +0 -11
  235. package/src/primitives/card/__workshop__/Tones.tsx +0 -26
  236. package/src/primitives/card/__workshop__/index.ts +0 -21
  237. package/src/primitives/card/types.ts +0 -21
  238. package/src/primitives/card/useCard.ts +0 -20
  239. package/src/primitives/checkbox/Checkbox.tsx +0 -80
  240. package/src/primitives/checkbox/__workshop__/Example.tsx +0 -25
  241. package/src/primitives/checkbox/__workshop__/Props.tsx +0 -35
  242. package/src/primitives/checkbox/__workshop__/ReadOnly.tsx +0 -16
  243. package/src/primitives/checkbox/__workshop__/Tones.tsx +0 -26
  244. package/src/primitives/checkbox/__workshop__/index.ts +0 -15
  245. package/src/primitives/code/Code.tsx +0 -47
  246. package/src/primitives/code/__workshop__/OpticalAlignment.tsx +0 -25
  247. package/src/primitives/code/__workshop__/Props.tsx +0 -20
  248. package/src/primitives/code/__workshop__/index.ts +0 -21
  249. package/src/primitives/container/Container.tsx +0 -43
  250. package/src/primitives/container/__workshop__/Example.tsx +0 -16
  251. package/src/primitives/container/__workshop__/index.ts +0 -16
  252. package/src/primitives/container/types.ts +0 -6
  253. package/src/primitives/flex/Flex.tsx +0 -38
  254. package/src/primitives/flex/__workshop__/Example.tsx +0 -26
  255. package/src/primitives/flex/__workshop__/Gap.tsx +0 -25
  256. package/src/primitives/flex/__workshop__/index.ts +0 -13
  257. package/src/primitives/flex/__workshop__/styles.css.ts +0 -12
  258. package/src/primitives/grid/Grid.tsx +0 -38
  259. package/src/primitives/grid/__workshop__/Responsive.tsx +0 -54
  260. package/src/primitives/grid/__workshop__/index.ts +0 -12
  261. package/src/primitives/heading/Heading.tsx +0 -68
  262. package/src/primitives/heading/__workshop__/OpticalAlignment.tsx +0 -27
  263. package/src/primitives/heading/__workshop__/Plain.tsx +0 -25
  264. package/src/primitives/heading/__workshop__/index.ts +0 -21
  265. package/src/primitives/inline/Inline.tsx +0 -37
  266. package/src/primitives/inline/__workshop__/Plain.tsx +0 -22
  267. package/src/primitives/inline/__workshop__/index.ts +0 -10
  268. package/src/primitives/kbd/Kbd.tsx +0 -36
  269. package/src/primitives/kbd/__workshop__/Plain.tsx +0 -9
  270. package/src/primitives/kbd/__workshop__/index.ts +0 -10
  271. package/src/primitives/label/Label.tsx +0 -67
  272. package/src/primitives/label/__workshop__/OpticalAlignment.tsx +0 -27
  273. package/src/primitives/label/__workshop__/Plain.tsx +0 -27
  274. package/src/primitives/label/__workshop__/index.ts +0 -21
  275. package/src/primitives/layer/Layer.test.tsx +0 -110
  276. package/src/primitives/layer/Layer.tsx +0 -35
  277. package/src/primitives/layer/LayerCard.tsx +0 -90
  278. package/src/primitives/layer/LayerContext.ts +0 -7
  279. package/src/primitives/layer/LayerProvider.tsx +0 -106
  280. package/src/primitives/layer/__workshop__/MultipleRoots.tsx +0 -49
  281. package/src/primitives/layer/__workshop__/Nested.tsx +0 -107
  282. package/src/primitives/layer/__workshop__/ResponsiveZOffset.tsx +0 -17
  283. package/src/primitives/layer/__workshop__/_debug.tsx +0 -17
  284. package/src/primitives/layer/__workshop__/index.ts +0 -26
  285. package/src/primitives/layer/getLayerContext.test.ts +0 -32
  286. package/src/primitives/layer/getLayerContext.ts +0 -21
  287. package/src/primitives/layer/types.ts +0 -9
  288. package/src/primitives/layer/useLayer.ts +0 -24
  289. package/src/primitives/popover/Popover.tsx +0 -291
  290. package/src/primitives/popover/PopoverLayer.tsx +0 -101
  291. package/src/primitives/popover/__workshop__/AlignedStory.tsx +0 -75
  292. package/src/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  293. package/src/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
  294. package/src/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  295. package/src/primitives/popover/__workshop__/PlainStory.tsx +0 -67
  296. package/src/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
  297. package/src/primitives/popover/__workshop__/SidePanelStory.tsx +0 -95
  298. package/src/primitives/popover/__workshop__/TestStory.tsx +0 -97
  299. package/src/primitives/popover/__workshop__/index.ts +0 -56
  300. package/src/primitives/popover/__workshop__/portal-inheritance.tsx +0 -15
  301. package/src/primitives/popover/constants.ts +0 -20
  302. package/src/primitives/popover/floating-ui/size.ts +0 -75
  303. package/src/primitives/popover/types.ts +0 -12
  304. package/src/primitives/popover/useMiddleware.ts +0 -126
  305. package/src/primitives/radio/Radio.tsx +0 -64
  306. package/src/primitives/radio/__workshop__/Example.tsx +0 -63
  307. package/src/primitives/radio/__workshop__/Plain.tsx +0 -28
  308. package/src/primitives/radio/__workshop__/index.ts +0 -13
  309. package/src/primitives/select/Select.tsx +0 -76
  310. package/src/primitives/select/__workshop__/Plain.tsx +0 -37
  311. package/src/primitives/select/__workshop__/ReadOnly.tsx +0 -23
  312. package/src/primitives/select/__workshop__/index.ts +0 -13
  313. package/src/primitives/selectable/Selectable.tsx +0 -48
  314. package/src/primitives/selectable/__workshop__/DataProps.tsx +0 -24
  315. package/src/primitives/selectable/__workshop__/as-link.tsx +0 -13
  316. package/src/primitives/selectable/__workshop__/index.ts +0 -19
  317. package/src/primitives/skeleton/CodeSkeleton.tsx +0 -49
  318. package/src/primitives/skeleton/HeadingSkeleton.tsx +0 -48
  319. package/src/primitives/skeleton/LabelSkeleton.tsx +0 -47
  320. package/src/primitives/skeleton/Skeleton.tsx +0 -70
  321. package/src/primitives/skeleton/TextSkeleton.tsx +0 -49
  322. package/src/primitives/skeleton/__workshop__/Delay.tsx +0 -69
  323. package/src/primitives/skeleton/__workshop__/Skeleton.tsx +0 -63
  324. package/src/primitives/skeleton/__workshop__/index.ts +0 -13
  325. package/src/primitives/spinner/Spinner.tsx +0 -45
  326. package/src/primitives/spinner/SpinnerAnimatedIcon.tsx +0 -14
  327. package/src/primitives/spinner/__workshop__/Props.tsx +0 -13
  328. package/src/primitives/spinner/__workshop__/index.ts +0 -16
  329. package/src/primitives/srOnly/SrOnly.tsx +0 -33
  330. package/src/primitives/stack/Stack.tsx +0 -38
  331. package/src/primitives/stack/__workshop__/Plain.tsx +0 -30
  332. package/src/primitives/stack/__workshop__/index.ts +0 -16
  333. package/src/primitives/switch/Switch.tsx +0 -76
  334. package/src/primitives/switch/__workshop__/Example.tsx +0 -25
  335. package/src/primitives/switch/__workshop__/Props.tsx +0 -23
  336. package/src/primitives/switch/__workshop__/index.ts +0 -13
  337. package/src/primitives/text/InlineCode.tsx +0 -25
  338. package/src/primitives/text/Text.tsx +0 -68
  339. package/src/primitives/text/__workshop__/Example.tsx +0 -26
  340. package/src/primitives/text/__workshop__/OpticalAlignment.tsx +0 -27
  341. package/src/primitives/text/__workshop__/index.ts +0 -26
  342. package/src/primitives/text/__workshop__/inline-code.tsx +0 -13
  343. package/src/primitives/textArea/TextArea.tsx +0 -97
  344. package/src/primitives/textArea/__workshop__/Plain.tsx +0 -46
  345. package/src/primitives/textArea/__workshop__/index.ts +0 -16
  346. package/src/primitives/textInput/TextInput.tsx +0 -279
  347. package/src/primitives/textInput/__workshop__/ClearButton.tsx +0 -32
  348. package/src/primitives/textInput/__workshop__/CustomValidity.tsx +0 -17
  349. package/src/primitives/textInput/__workshop__/Plain.tsx +0 -102
  350. package/src/primitives/textInput/__workshop__/ReadOnly.tsx +0 -14
  351. package/src/primitives/textInput/__workshop__/States.tsx +0 -53
  352. package/src/primitives/textInput/__workshop__/Tones.tsx +0 -40
  353. package/src/primitives/textInput/__workshop__/Typed.tsx +0 -23
  354. package/src/primitives/textInput/__workshop__/index.ts +0 -46
  355. package/src/primitives/tooltip/Tooltip.test.tsx +0 -496
  356. package/src/primitives/tooltip/Tooltip.tsx +0 -546
  357. package/src/primitives/tooltip/TooltipLayer.tsx +0 -72
  358. package/src/primitives/tooltip/__workshop__/CustomPortal.tsx +0 -102
  359. package/src/primitives/tooltip/__workshop__/OverflowingBoundary.tsx +0 -74
  360. package/src/primitives/tooltip/__workshop__/Props.tsx +0 -107
  361. package/src/primitives/tooltip/__workshop__/ResizableBoundary.tsx +0 -91
  362. package/src/primitives/tooltip/__workshop__/index.ts +0 -31
  363. package/src/primitives/tooltip/constants.ts +0 -24
  364. package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupContext.tsx +0 -13
  365. package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupProvider.tsx +0 -96
  366. package/src/primitives/tooltip/tooltipDelayGroup/types.ts +0 -7
  367. package/src/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  368. package/src/root/Root.tsx +0 -93
  369. package/src/root/RootProvider.tsx +0 -37
  370. package/src/root/__workshop__/Boundary.tsx +0 -43
  371. package/src/root/__workshop__/index.ts +0 -24
  372. package/src/root/__workshop__/primitives.tsx +0 -49
  373. package/src/root/__workshop__/tone-inheritance.tsx +0 -65
  374. package/src/utils/ErrorBoundary.tsx +0 -50
  375. package/src/utils/boundaryElement/BoundaryElementContext.ts +0 -7
  376. package/src/utils/boundaryElement/BoundaryElementProvider.tsx +0 -16
  377. package/src/utils/boundaryElement/__workshop__/Plain.tsx +0 -49
  378. package/src/utils/boundaryElement/__workshop__/index.ts +0 -16
  379. package/src/utils/boundaryElement/types.ts +0 -2
  380. package/src/utils/boundaryElement/useBoundaryElement.ts +0 -12
  381. package/src/utils/elementQuery/ElementQuery.tsx +0 -75
  382. package/src/utils/elementQuery/__workshop__/CustomMedia.tsx +0 -19
  383. package/src/utils/elementQuery/__workshop__/index.ts +0 -16
  384. package/src/utils/elementQuery/__workshop__/styles.css.ts +0 -31
  385. package/src/utils/elementQuery/helpers.ts +0 -27
  386. package/src/utils/portal/Portal.test.tsx +0 -105
  387. package/src/utils/portal/Portal.tsx +0 -42
  388. package/src/utils/portal/PortalContext.ts +0 -37
  389. package/src/utils/portal/PortalProvider.tsx +0 -38
  390. package/src/utils/portal/__workshop__/Named.tsx +0 -69
  391. package/src/utils/portal/__workshop__/index.ts +0 -16
  392. package/src/utils/portal/types.ts +0 -7
  393. package/src/utils/portal/usePortal.ts +0 -30
@@ -1,92 +0,0 @@
1
- import {
2
- isHTMLAnchorElement,
3
- isHTMLButtonElement,
4
- isHTMLElement,
5
- isHTMLInputElement,
6
- isHTMLSelectElement,
7
- isHTMLTextAreaElement,
8
- } from './element'
9
-
10
- /**
11
- * @internal
12
- */
13
- export function _hasFocus(element: HTMLElement): boolean {
14
- return Boolean(document.activeElement) && element.contains(document.activeElement)
15
- }
16
-
17
- /**
18
- * @internal
19
- */
20
- export function isFocusable(element: HTMLElement): boolean {
21
- if (
22
- element.tabIndex > 0 ||
23
- (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)
24
- ) {
25
- return true
26
- }
27
-
28
- if (isHTMLAnchorElement(element)) {
29
- return Boolean(element.href) && element.rel !== 'ignore'
30
- }
31
-
32
- if (isHTMLInputElement(element)) {
33
- return element.type !== 'hidden' && element.type !== 'file' && !element.disabled
34
- }
35
-
36
- if (
37
- isHTMLButtonElement(element) ||
38
- isHTMLSelectElement(element) ||
39
- isHTMLTextAreaElement(element)
40
- ) {
41
- return !element.disabled
42
- }
43
-
44
- return false
45
- }
46
-
47
- /**
48
- * @internal
49
- */
50
- export function attemptFocus(element: HTMLElement): boolean {
51
- if (!isFocusable(element)) {
52
- return false
53
- }
54
-
55
- try {
56
- element.focus()
57
- } catch {
58
- // ignore
59
- }
60
-
61
- return document.activeElement === element
62
- }
63
-
64
- /**
65
- * @internal
66
- */
67
- export function focusFirstDescendant(element: HTMLElement): boolean {
68
- for (let i = 0; i < element.childNodes.length; i++) {
69
- const child = element.childNodes[i]
70
-
71
- if (isHTMLElement(child) && (attemptFocus(child) || focusFirstDescendant(child))) {
72
- return true
73
- }
74
- }
75
-
76
- return false
77
- }
78
-
79
- /**
80
- * @internal
81
- */
82
- export function focusLastDescendant(element: HTMLElement): boolean {
83
- for (let i = element.childNodes.length - 1; i >= 0; i--) {
84
- const child = element.childNodes[i]
85
-
86
- if (isHTMLElement(child) && (attemptFocus(child) || focusLastDescendant(child))) {
87
- return true
88
- }
89
- }
90
-
91
- return false
92
- }
@@ -1,51 +0,0 @@
1
- import {BREAKPOINT_KEYS, type ResponsiveProp, type ResponsivePropArray} from '@sanity/ui-css'
2
-
3
- import {EMPTY_ARRAY} from '../constants'
4
- import {isArray} from '../lib/isArray'
5
- import {isRecord} from '../lib/isRecord'
6
-
7
- // WeakMap for object/array values (automatic GC when objects are no longer referenced)
8
- const objectCache = new WeakMap<object, ResponsivePropArray<unknown>>()
9
-
10
- // Map for primitive values (bounded growth - only primitives like numbers/strings)
11
- const primitiveCache = new Map<unknown, ResponsivePropArray<unknown>>()
12
-
13
- /**
14
- * @internal
15
- */
16
- export function _getResponsiveProp<T>(
17
- val: ResponsiveProp<T> | undefined,
18
- defaultVal?: ResponsivePropArray<T>,
19
- ): ResponsivePropArray<T> {
20
- // Fast path: undefined
21
- if (val === undefined) {
22
- return defaultVal || (EMPTY_ARRAY as unknown as ResponsivePropArray<T>)
23
- }
24
-
25
- // Fast path: already an array or object - use WeakMap for identity-based caching
26
- if (isArray(val)) {
27
- let v = val
28
-
29
- // convert to array
30
- if (isRecord(val)) {
31
- v = BREAKPOINT_KEYS.map((key) => val[key]) as ResponsivePropArray<T>
32
- }
33
-
34
- const cached = objectCache.get(v)
35
- if (cached) return cached as ResponsivePropArray<T>
36
-
37
- const ret = v as ResponsivePropArray<T>
38
- objectCache.set(v, ret)
39
- return ret
40
- }
41
-
42
- // Primitive value - wrap in array and cache by value
43
- const cached = primitiveCache.get(val)
44
- if (cached) return cached as ResponsivePropArray<T>
45
-
46
- const ret = [val] as ResponsivePropArray<T>
47
-
48
- primitiveCache.set(val, ret)
49
-
50
- return ret
51
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * @internal
3
- */
4
- export function _isScrollable(el: Node): boolean {
5
- if (!(el instanceof Element)) return false
6
-
7
- const style = window.getComputedStyle(el)
8
-
9
- return (
10
- style.overflowX.includes('auto') ||
11
- style.overflowX.includes('scroll') ||
12
- style.overflowY.includes('auto') ||
13
- style.overflowY.includes('scroll')
14
- )
15
- }
@@ -1,39 +0,0 @@
1
- /**
2
- * As `@sanity/ui` is declared as a dependency, and may be duplicated, sometimes across major versions
3
- * it's critical that vital react contexts are shared even when there is a duplicate.
4
- * If we used a model similar to `sanity` itself this would be unnecessary as
5
- * those libraries enforce single instances.
6
- * Since we don't enforce it we have to support a sanity plugin being able to call hooks like `useToast`, and then
7
- * read the context setup by `sanity`, which calls `ToastProvider`, even if the provider and hook are different instances in memory.
8
- * It's also why it's vital that all changes to globally scoped providers remain fully backwards compatible to v1.
9
- */
10
-
11
- import {type Context, createContext} from 'react'
12
-
13
- import {globalScope} from './globalScope'
14
-
15
- export function createGlobalScopedContext<ContextType, const T extends ContextType = ContextType>(
16
- /**
17
- * Enforce that all Symbol.for keys used for globally scoped contexts have a predictable prefix
18
- */
19
- key: `@sanity/ui/v4/${string}`,
20
- defaultValue: T,
21
- ): Context<ContextType> {
22
- const symbol = Symbol.for(key)
23
-
24
- /**
25
- * Prevent errors about re-renders on React SSR on Next.js App Router
26
- */
27
- if (typeof document === 'undefined') {
28
- const context = createContext<ContextType>(defaultValue)
29
- context.displayName = key
30
- return context
31
- }
32
-
33
- // Use the global scope as a map of symbols to contexts
34
- const symbolMap = globalScope as Record<symbol, Context<ContextType>>
35
-
36
- symbolMap[symbol] = symbolMap[symbol] || createContext<T>(defaultValue)
37
-
38
- return symbolMap[symbol]
39
- }
@@ -1,19 +0,0 @@
1
- /**
2
- * Gets the global scope instance in a given environment.
3
- *
4
- * The strategy is to return the most modern, and if not, the most common:
5
- * - The `globalThis` variable is the modern approach to accessing the global scope
6
- * - The `window` variable is the global scope in a web browser
7
- * - The `self` variable is the global scope in workers and others
8
- * - The `global` variable is the global scope in Node.js
9
- */
10
- function getGlobalScope() {
11
- if (typeof globalThis !== 'undefined') return globalThis
12
- if (typeof window !== 'undefined') return window
13
- if (typeof self !== 'undefined') return self
14
- if (typeof global !== 'undefined') return global
15
-
16
- throw new Error('@sanity/ui: could not locate global scope')
17
- }
18
-
19
- export const globalScope: typeof globalThis = getGlobalScope()
@@ -1,3 +0,0 @@
1
- export function isArray(val: unknown): val is unknown[] {
2
- return Array.isArray(val)
3
- }
@@ -1,3 +0,0 @@
1
- export function isRecord(value: unknown): value is Record<string, unknown> {
2
- return Boolean(value && typeof value === 'object' && !Array.isArray(value))
3
- }
package/src/core/types.ts DELETED
@@ -1,57 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-empty-object-type */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
-
4
- /**
5
- * Assign properties from `U` to `T`, excluding properties that already exist in `T`.
6
- *
7
- * @public
8
- */
9
- export type Assign<T extends {}, U extends {}> = Omit<T, keyof U> & U
10
-
11
- /** @public */
12
- export type EmptyProps = {}
13
-
14
- /** @public */
15
- export type TagType = keyof React.JSX.IntrinsicElements
16
-
17
- /** @public */
18
- export type ComponentType<P = any> =
19
- | React.FunctionComponent<P>
20
- | React.ComponentClass<P>
21
- | React.ExoticComponent<P>
22
-
23
- /** @public */
24
- export type ElementType<P> = TagType | ComponentType<P>
25
-
26
- /** @public */
27
- export type Props<P extends EmptyProps, E extends ElementType<P>> = Assign<
28
- E extends TagType ? React.JSX.IntrinsicElements[E] : React.ComponentProps<E>,
29
- P & {as?: E}
30
- >
31
-
32
- /**
33
- * Placement of floating UI elements.
34
- *
35
- * @public
36
- */
37
- export type Placement =
38
- | 'top'
39
- | 'top-start'
40
- | 'top-end'
41
- | 'right'
42
- | 'right-start'
43
- | 'right-end'
44
- | 'bottom'
45
- | 'bottom-start'
46
- | 'bottom-end'
47
- | 'left'
48
- | 'left-start'
49
- | 'left-end'
50
-
51
- /** @public */
52
- export type Delay =
53
- | number
54
- | Partial<{
55
- open: number
56
- close: number
57
- }>
@@ -1,114 +0,0 @@
1
- import {render, screen} from '@testing-library/react'
2
- import userEvent from '@testing-library/user-event'
3
- import {useRef} from 'react'
4
- import {describe, expect, it, vi} from 'vitest'
5
-
6
- import {useClickOutsideEvent} from './useClickOutsideEvent'
7
-
8
- describe('useClickOutsideEvent', () => {
9
- /**
10
- * This suite demonstrates the new hook `useClickOutsideEvent` that replaces `useClickOutside`
11
- */
12
-
13
- it('calls the handler when clicking outside of the array of elements', async () => {
14
- const user = userEvent.setup()
15
- const handler = vi.fn()
16
-
17
- const TestComponent = () => {
18
- const buttonRef = useRef<HTMLButtonElement | null>(null)
19
- const popoverRef = useRef<HTMLDivElement | null>(null)
20
-
21
- useClickOutsideEvent(handler, () => [buttonRef.current, popoverRef.current])
22
-
23
- return (
24
- <>
25
- <button ref={buttonRef} data-testid="button" />
26
- <div ref={popoverRef} data-testid="popover" />
27
- <div data-testid="outside" />
28
- </>
29
- )
30
- }
31
-
32
- render(<TestComponent />)
33
-
34
- await user.click(screen.getByTestId('button'))
35
- await user.click(screen.getByTestId('popover'))
36
- expect(handler).not.toHaveBeenCalled()
37
-
38
- await user.click(screen.getByTestId('outside'))
39
- expect(handler).toHaveBeenCalledTimes(1)
40
- })
41
-
42
- it('the elements array flattens nested arrays one level deep', async () => {
43
- const user = userEvent.setup()
44
- const handler = vi.fn()
45
-
46
- const TestComponent = () => {
47
- const buttonRef = useRef<HTMLButtonElement | null>(null)
48
- const popoverRef = useRef<HTMLDivElement | null>(null)
49
-
50
- useClickOutsideEvent(handler, () => [
51
- null,
52
- [null, buttonRef.current],
53
- [popoverRef.current, null],
54
- null,
55
- ])
56
-
57
- return (
58
- <>
59
- <button ref={buttonRef} data-testid="button" />
60
- <div ref={popoverRef} data-testid="popover" />
61
- <div data-testid="outside" />
62
- </>
63
- )
64
- }
65
-
66
- render(<TestComponent />)
67
-
68
- await user.click(screen.getByTestId('button'))
69
- await user.click(screen.getByTestId('popover'))
70
- expect(handler).not.toHaveBeenCalled()
71
-
72
- await user.click(screen.getByTestId('outside'))
73
- expect(handler).toHaveBeenCalledTimes(1)
74
- })
75
-
76
- it('it can set a boundary to scope outside click events', async () => {
77
- const user = userEvent.setup()
78
- const handler = vi.fn()
79
-
80
- const TestComponent = () => {
81
- const buttonRef = useRef<HTMLButtonElement | null>(null)
82
- const popoverRef = useRef<HTMLDivElement | null>(null)
83
- const boundaryRef = useRef<HTMLDivElement | null>(null)
84
-
85
- useClickOutsideEvent(
86
- handler,
87
- () => [buttonRef.current, popoverRef.current],
88
- () => boundaryRef.current,
89
- )
90
-
91
- return (
92
- <>
93
- <div ref={boundaryRef}>
94
- <button ref={buttonRef} data-testid="button" />
95
- <div ref={popoverRef} data-testid="popover" />
96
- <div data-testid="inside" />
97
- </div>
98
- <div data-testid="outside" />
99
- </>
100
- )
101
- }
102
-
103
- render(<TestComponent />)
104
-
105
- await user.click(screen.getByTestId('button'))
106
- await user.click(screen.getByTestId('popover'))
107
- // Since it's outside the boundary it should be ignored
108
- await user.click(screen.getByTestId('outside'))
109
- expect(handler).not.toHaveBeenCalled()
110
-
111
- await user.click(screen.getByTestId('inside'))
112
- expect(handler).toHaveBeenCalledTimes(1)
113
- })
114
- })
@@ -1,66 +0,0 @@
1
- import {useDebugValue, useEffect, useEffectEvent} from 'react'
2
-
3
- import {EMPTY_ARRAY} from '../core/constants'
4
-
5
- /** @public */
6
- export type ClickOutsideEventListener = (event: MouseEvent) => void
7
-
8
- /** @public */
9
- export type ClickOutsideEventElements = (HTMLElement | null | (HTMLElement | null)[])[]
10
-
11
- /** @public */
12
- export function useClickOutsideEvent(
13
- listener: ClickOutsideEventListener | false | undefined,
14
- elementsArg: () => ClickOutsideEventElements = () => EMPTY_ARRAY,
15
- boundaryElement?: () => HTMLElement | null,
16
- ): void {
17
- /**
18
- * The `useEffectEvent` hook allow us to always see the latest value of `listener`, `elementsArg` and `boundaryElement` without needing to
19
- * juggle `useState`, `useRef` and `useState` to make sure the `mousedown` event listener isn't constantly being added and removed.
20
- */
21
- const onEvent = useEffectEvent((evt: MouseEvent) => {
22
- if (!listener) {
23
- return
24
- }
25
-
26
- const target = evt.target
27
-
28
- if (!(target instanceof Node)) {
29
- return
30
- }
31
-
32
- const resolvedBoundaryElement = boundaryElement?.()
33
-
34
- if (resolvedBoundaryElement && !resolvedBoundaryElement.contains(target)) {
35
- return
36
- }
37
-
38
- const elements = elementsArg().flat()
39
-
40
- for (const el of elements) {
41
- if (!el) continue
42
-
43
- if (target === el || el.contains(target)) {
44
- return
45
- }
46
- }
47
-
48
- listener(evt)
49
- })
50
-
51
- const hasListener = Boolean(listener)
52
-
53
- useEffect(() => {
54
- if (!hasListener) return undefined
55
-
56
- const handleEvent = (evt: MouseEvent) => onEvent(evt)
57
-
58
- document.addEventListener('mousedown', handleEvent)
59
-
60
- return () => {
61
- document.removeEventListener('mousedown', handleEvent)
62
- }
63
- }, [hasListener])
64
-
65
- useDebugValue(listener ? 'MouseDown On' : 'MouseDown Off')
66
- }
@@ -1,13 +0,0 @@
1
- import {useEffect} from 'react'
2
-
3
- /**
4
- * @beta
5
- */
6
- export function useCustomValidity(
7
- ref: {current: null | {setCustomValidity: (validity: string) => void}},
8
- customValidity: string | undefined,
9
- ): void {
10
- useEffect(() => {
11
- ref.current?.setCustomValidity(customValidity || '')
12
- }, [customValidity, ref])
13
- }
@@ -1,19 +0,0 @@
1
- import {useEffect, useState} from 'react'
2
-
3
- import {_elementSizeObserver, type ElementSize} from '../observers/elementSize'
4
-
5
- /**
6
- * Subscribe to the size of a DOM element.
7
- * @beta
8
- */
9
- export function useElementSize(element: HTMLElement | null): ElementSize | null {
10
- const [size, setSize] = useState<ElementSize | null>(null)
11
-
12
- useEffect(() => {
13
- if (!element) return undefined
14
-
15
- return _elementSizeObserver.subscribe(element, setSize)
16
- }, [element])
17
-
18
- return size
19
- }
@@ -1,23 +0,0 @@
1
- import {useEffect, useEffectEvent} from 'react'
2
-
3
- /**
4
- * Adds global keydown event listener to the window.
5
- *
6
- * @param onKeyDown - The function to call when a keydown event is triggered.
7
- * @param options - The options to pass to the addEventListener function (example, capture: true)
8
- * @beta
9
- */
10
- export function useGlobalKeyDown(
11
- onKeyDown: (event: KeyboardEvent) => void,
12
- options?: AddEventListenerOptions,
13
- ): void {
14
- const handleKeyDown = useEffectEvent((event: KeyboardEvent) => onKeyDown(event))
15
-
16
- useEffect(() => {
17
- const handler = (event: KeyboardEvent) => handleKeyDown(event)
18
-
19
- window.addEventListener('keydown', handler, options)
20
-
21
- return () => window.removeEventListener('keydown', handler, options)
22
- }, [options])
23
- }
@@ -1,28 +0,0 @@
1
- import {useCallback, useDebugValue, useSyncExternalStore} from 'react'
2
-
3
- /**
4
- * Efficiently subscribes to `window.matchMedia` queries
5
- *
6
- * @param getServerSnapshot - Only called during server-side rendering, and hydration if using hydrateRoot. Required if the hook is called during SSR (https://dev/reference/react/useSyncExternalStore#adding-support-for-server-rendering)
7
- *
8
- * @public
9
- */
10
- export function useMatchMedia(
11
- mediaQueryString: `(${string})`,
12
- getServerSnapshot?: () => boolean,
13
- ): boolean {
14
- useDebugValue(mediaQueryString)
15
-
16
- return useSyncExternalStore(
17
- useCallback(
18
- (onStoreChange) => {
19
- const media = window.matchMedia(mediaQueryString)
20
- media.addEventListener('change', onStoreChange)
21
- return () => media.removeEventListener('change', onStoreChange)
22
- },
23
- [mediaQueryString],
24
- ),
25
- () => window.matchMedia(mediaQueryString).matches,
26
- getServerSnapshot,
27
- )
28
- }
@@ -1,14 +0,0 @@
1
- import {Card, Stack, Text, useMediaIndex} from '@sanity/ui'
2
-
3
- export default function TestStory(): React.JSX.Element {
4
- const mediaIndex = useMediaIndex()
5
-
6
- return (
7
- <Card padding={5}>
8
- <Stack gap={3}>
9
- <Text weight="medium">The current media index is {mediaIndex}.</Text>
10
- <Text muted>Try resizing the browser.</Text>
11
- </Stack>
12
- </Card>
13
- )
14
- }
@@ -1,16 +0,0 @@
1
- import type {WorkshopScope} from '@sanity/ui-workshop'
2
- import {lazy} from 'react'
3
-
4
- const scope: WorkshopScope = {
5
- name: 'hooks/use-media-index',
6
- title: 'useMediaIndex',
7
- stories: [
8
- {
9
- name: 'test',
10
- title: 'Test',
11
- component: lazy(() => import('./Test')),
12
- },
13
- ],
14
- }
15
-
16
- export default scope
@@ -1,21 +0,0 @@
1
- /** @jest-environment node */
2
-
3
- import {renderToStaticMarkup, renderToString} from 'react-dom/server'
4
- import {describe, expect, it} from 'vitest'
5
-
6
- import {useMediaIndex} from './useMediaIndex'
7
-
8
- function Log() {
9
- const mediaIndex = useMediaIndex()
10
-
11
- return <>mediaIndex: {JSON.stringify(mediaIndex)}</>
12
- }
13
-
14
- describe('useMediaIndex', () => {
15
- it(`SSR to static markup returns 0`, () => {
16
- expect(renderToStaticMarkup(<Log />)).toBe('mediaIndex: 0')
17
- })
18
- it(`SSR to markup for hydration doesn't throw`, () => {
19
- expect(renderToString(<Log />)).toBe('mediaIndex: <!-- -->0')
20
- })
21
- })