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

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 (381) 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/refractor.cjs +18 -0
  8. package/dist/_chunks/refractor.cjs.map +1 -0
  9. package/dist/_chunks/refractor.js +20 -0
  10. package/dist/_chunks/refractor.js.map +1 -0
  11. package/dist/_chunks/rgba.d.cts +929 -0
  12. package/dist/_chunks/rgba.d.cts.map +1 -0
  13. package/dist/_chunks/rgba.d.ts +929 -0
  14. package/dist/_chunks/rgba.d.ts.map +1 -0
  15. package/dist/index.cjs +6243 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.cts +2332 -0
  18. package/dist/index.d.cts.map +1 -0
  19. package/dist/index.d.ts +1767 -1190
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +6134 -4725
  22. package/dist/index.js.map +1 -1
  23. package/dist/theme.cjs +54 -0
  24. package/dist/theme.cjs.map +1 -0
  25. package/dist/theme.d.cts +278 -0
  26. package/dist/theme.d.cts.map +1 -0
  27. package/dist/theme.d.ts +278 -0
  28. package/dist/theme.d.ts.map +1 -0
  29. package/dist/theme.js +53 -0
  30. package/dist/theme.js.map +1 -0
  31. package/package.json +55 -86
  32. package/dist/_chunks-es/Syntax.js +0 -23
  33. package/dist/_chunks-es/Syntax.js.map +0 -1
  34. package/dist/index.css +0 -1
  35. package/exports/index.css +0 -1
  36. package/exports/index.ts +0 -125
  37. package/src/components/autocomplete/Autocomplete.tsx +0 -665
  38. package/src/components/autocomplete/AutocompleteOption.tsx +0 -42
  39. package/src/components/autocomplete/__workshop__/Async.tsx +0 -162
  40. package/src/components/autocomplete/__workshop__/ConstrainedHeight.tsx +0 -121
  41. package/src/components/autocomplete/__workshop__/Custom.tsx +0 -91
  42. package/src/components/autocomplete/__workshop__/Example.tsx +0 -70
  43. package/src/components/autocomplete/__workshop__/FocusAndBlur.tsx +0 -39
  44. package/src/components/autocomplete/__workshop__/Fullscreen.tsx +0 -307
  45. package/src/components/autocomplete/__workshop__/index.ts +0 -41
  46. package/src/components/autocomplete/__workshop__/mock/apiStore.ts +0 -49
  47. package/src/components/autocomplete/__workshop__/mock/countries.ts +0 -245
  48. package/src/components/autocomplete/__workshop__/types.ts +0 -4
  49. package/src/components/autocomplete/autocompleteReducer.ts +0 -47
  50. package/src/components/autocomplete/constants.ts +0 -28
  51. package/src/components/autocomplete/types.ts +0 -103
  52. package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -163
  53. package/src/components/breadcrumbs/__workshop__/Example.tsx +0 -48
  54. package/src/components/breadcrumbs/__workshop__/index.ts +0 -16
  55. package/src/components/dialog/Dialog.tsx +0 -230
  56. package/src/components/dialog/DialogCard.tsx +0 -233
  57. package/src/components/dialog/DialogContext.ts +0 -21
  58. package/src/components/dialog/DialogProvider.tsx +0 -34
  59. package/src/components/dialog/__workshop__/Activate.tsx +0 -141
  60. package/src/components/dialog/__workshop__/AutoFocus.tsx +0 -29
  61. package/src/components/dialog/__workshop__/Layering.tsx +0 -41
  62. package/src/components/dialog/__workshop__/Nested.tsx +0 -71
  63. package/src/components/dialog/__workshop__/OnScroll.tsx +0 -51
  64. package/src/components/dialog/__workshop__/Panes.tsx +0 -75
  65. package/src/components/dialog/__workshop__/Position.tsx +0 -30
  66. package/src/components/dialog/__workshop__/Props.tsx +0 -93
  67. package/src/components/dialog/__workshop__/Provider.tsx +0 -11
  68. package/src/components/dialog/__workshop__/Wrapped.tsx +0 -76
  69. package/src/components/dialog/__workshop__/index.ts +0 -21
  70. package/src/components/dialog/isTargetWithinScope.ts +0 -14
  71. package/src/components/dialog/types.ts +0 -2
  72. package/src/components/dialog/useDialog.ts +0 -11
  73. package/src/components/hotkeys/Hotkeys.tsx +0 -70
  74. package/src/components/hotkeys/__workshop__/Plain.tsx +0 -9
  75. package/src/components/hotkeys/__workshop__/index.ts +0 -16
  76. package/src/components/menu/Menu.test.tsx +0 -125
  77. package/src/components/menu/Menu.tsx +0 -174
  78. package/src/components/menu/MenuButton.tsx +0 -231
  79. package/src/components/menu/MenuContext.ts +0 -19
  80. package/src/components/menu/MenuDivider.tsx +0 -32
  81. package/src/components/menu/MenuGroup.tsx +0 -240
  82. package/src/components/menu/MenuItem.tsx +0 -153
  83. package/src/components/menu/__workshop__/AsComponent.tsx +0 -45
  84. package/src/components/menu/__workshop__/AvatarMenu.tsx +0 -36
  85. package/src/components/menu/__workshop__/ClosableMenuButton.tsx +0 -47
  86. package/src/components/menu/__workshop__/ConstrainedInBoundary.tsx +0 -133
  87. package/src/components/menu/__workshop__/CustomMenuItem.tsx +0 -47
  88. package/src/components/menu/__workshop__/CustomSelectedState.tsx +0 -35
  89. package/src/components/menu/__workshop__/DataProps.tsx +0 -27
  90. package/src/components/menu/__workshop__/DisableFocusOnClose.tsx +0 -40
  91. package/src/components/menu/__workshop__/Groups.tsx +0 -164
  92. package/src/components/menu/__workshop__/MenuButton.tsx +0 -79
  93. package/src/components/menu/__workshop__/MenuGroupRight.tsx +0 -73
  94. package/src/components/menu/__workshop__/NestedMenu.tsx +0 -22
  95. package/src/components/menu/__workshop__/OnCloseMenuButton.tsx +0 -50
  96. package/src/components/menu/__workshop__/SelectedItem.tsx +0 -69
  97. package/src/components/menu/__workshop__/ShouldFocus.tsx +0 -42
  98. package/src/components/menu/__workshop__/Tones.tsx +0 -19
  99. package/src/components/menu/__workshop__/index.ts +0 -91
  100. package/src/components/menu/helpers.ts +0 -82
  101. package/src/components/menu/useMenu.ts +0 -21
  102. package/src/components/menu/useMenuController.ts +0 -245
  103. package/src/components/tab/Tab.tsx +0 -135
  104. package/src/components/tab/TabList.tsx +0 -157
  105. package/src/components/tab/TabListContext.ts +0 -10
  106. package/src/components/tab/TabPanel.tsx +0 -94
  107. package/src/components/tab/__workshop__/Example.tsx +0 -135
  108. package/src/components/tab/__workshop__/index.ts +0 -16
  109. package/src/components/tab/types.ts +0 -11
  110. package/src/components/toast/Toast.test.tsx +0 -103
  111. package/src/components/toast/Toast.tsx +0 -191
  112. package/src/components/toast/ToastContext.ts +0 -7
  113. package/src/components/toast/ToastLayer.tsx +0 -54
  114. package/src/components/toast/ToastProvider.tsx +0 -127
  115. package/src/components/toast/__workshop__/Hook.tsx +0 -71
  116. package/src/components/toast/__workshop__/Toast.tsx +0 -26
  117. package/src/components/toast/__workshop__/index.ts +0 -21
  118. package/src/components/toast/toastState.ts +0 -6
  119. package/src/components/toast/types.ts +0 -24
  120. package/src/components/toast/useToast.ts +0 -23
  121. package/src/components/tree/Tree.tsx +0 -248
  122. package/src/components/tree/TreeContext.ts +0 -10
  123. package/src/components/tree/TreeGroup.tsx +0 -46
  124. package/src/components/tree/TreeItem.tsx +0 -236
  125. package/src/components/tree/__workshop__/Basic.tsx +0 -108
  126. package/src/components/tree/__workshop__/TabFromElement.tsx +0 -84
  127. package/src/components/tree/__workshop__/basic.perf.ts +0 -19
  128. package/src/components/tree/__workshop__/index.ts +0 -23
  129. package/src/components/tree/helpers.ts +0 -105
  130. package/src/components/tree/types.ts +0 -24
  131. package/src/components/tree/useTree.ts +0 -17
  132. package/src/components/virtualList/VirtualList.tsx +0 -254
  133. package/src/components/virtualList/__workshop__/ChangingProps.tsx +0 -41
  134. package/src/components/virtualList/__workshop__/ElementScroll.tsx +0 -43
  135. package/src/components/virtualList/__workshop__/InfiniteList.tsx +0 -40
  136. package/src/components/virtualList/__workshop__/WindowScrolll.tsx +0 -23
  137. package/src/components/virtualList/__workshop__/index.ts +0 -31
  138. package/src/core/_keys.ts +0 -26
  139. package/src/core/constants.ts +0 -67
  140. package/src/core/getElementRef.ts +0 -29
  141. package/src/core/helpers/animation.ts +0 -26
  142. package/src/core/helpers/element.ts +0 -55
  143. package/src/core/helpers/focus.ts +0 -92
  144. package/src/core/helpers/props.ts +0 -51
  145. package/src/core/helpers/scroll.ts +0 -15
  146. package/src/core/lib/createGlobalScopedContext.ts +0 -39
  147. package/src/core/lib/globalScope.ts +0 -19
  148. package/src/core/lib/isArray.ts +0 -3
  149. package/src/core/lib/isRecord.ts +0 -3
  150. package/src/core/types.ts +0 -57
  151. package/src/hooks/useClickOutsideEvent.test.tsx +0 -114
  152. package/src/hooks/useClickOutsideEvent.ts +0 -66
  153. package/src/hooks/useCustomValidity.ts +0 -13
  154. package/src/hooks/useElementSize.ts +0 -19
  155. package/src/hooks/useGlobalKeyDown.ts +0 -23
  156. package/src/hooks/useMatchMedia.ts +0 -28
  157. package/src/hooks/useMediaIndex/__workshop__/Test.tsx +0 -14
  158. package/src/hooks/useMediaIndex/__workshop__/index.ts +0 -16
  159. package/src/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -21
  160. package/src/hooks/useMediaIndex/useMediaIndex.ts +0 -111
  161. package/src/hooks/useMounted.ts +0 -15
  162. package/src/hooks/usePrefersDark.hydration.test.tsx +0 -56
  163. package/src/hooks/usePrefersDark.test.tsx +0 -20
  164. package/src/hooks/usePrefersDark.ts +0 -16
  165. package/src/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  166. package/src/hooks/usePrefersReducedMotion.test.tsx +0 -20
  167. package/src/hooks/usePrefersReducedMotion.ts +0 -16
  168. package/src/hooks/useResponsiveProp.ts +0 -14
  169. package/src/hooks/useUnique.ts +0 -54
  170. package/src/middleware/origin.ts +0 -47
  171. package/src/observers/elementSize.ts +0 -114
  172. package/src/primitives/_syntax/LazySyntax.tsx +0 -4
  173. package/src/primitives/_syntax/Syntax.tsx +0 -26
  174. package/src/primitives/avatar/Avatar.tsx +0 -145
  175. package/src/primitives/avatar/AvatarCounter.tsx +0 -69
  176. package/src/primitives/avatar/AvatarStack.tsx +0 -77
  177. package/src/primitives/avatar/__workshop__/AsButton.tsx +0 -12
  178. package/src/primitives/avatar/__workshop__/PropsStory.tsx +0 -24
  179. package/src/primitives/avatar/__workshop__/Stack.tsx +0 -27
  180. package/src/primitives/avatar/__workshop__/WithinButton.tsx +0 -51
  181. package/src/primitives/avatar/__workshop__/WithinMenuItem.tsx +0 -52
  182. package/src/primitives/avatar/__workshop__/index.ts +0 -36
  183. package/src/primitives/avatar/types.ts +0 -2
  184. package/src/primitives/badge/Badge.test.tsx +0 -16
  185. package/src/primitives/badge/Badge.tsx +0 -53
  186. package/src/primitives/badge/__workshop__/Props.tsx +0 -27
  187. package/src/primitives/badge/__workshop__/Tones.tsx +0 -15
  188. package/src/primitives/badge/__workshop__/index.ts +0 -26
  189. package/src/primitives/badge/__workshop__/within-button.tsx +0 -36
  190. package/src/primitives/box/Box.tsx +0 -73
  191. package/src/primitives/box/__workshop__/Props.tsx +0 -26
  192. package/src/primitives/box/__workshop__/Responsive.tsx +0 -19
  193. package/src/primitives/box/__workshop__/index.ts +0 -21
  194. package/src/primitives/button/Button.test.tsx +0 -30
  195. package/src/primitives/button/Button.tsx +0 -148
  196. package/src/primitives/button/__workshop__/Custom.tsx +0 -39
  197. package/src/primitives/button/__workshop__/CustomIcons.tsx +0 -37
  198. package/src/primitives/button/__workshop__/DataProps.tsx +0 -18
  199. package/src/primitives/button/__workshop__/Disabled.tsx +0 -43
  200. package/src/primitives/button/__workshop__/MixedChildren.tsx +0 -12
  201. package/src/primitives/button/__workshop__/Props.tsx +0 -60
  202. package/src/primitives/button/__workshop__/Stacked.tsx +0 -60
  203. package/src/primitives/button/__workshop__/Styled1.css.ts +0 -7
  204. package/src/primitives/button/__workshop__/Styled1.tsx +0 -11
  205. package/src/primitives/button/__workshop__/TextOverflow.tsx +0 -17
  206. package/src/primitives/button/__workshop__/UploadButton.tsx +0 -28
  207. package/src/primitives/button/__workshop__/index.ts +0 -61
  208. package/src/primitives/button/types.ts +0 -2
  209. package/src/primitives/card/Card.tsx +0 -124
  210. package/src/primitives/card/CardContext.ts +0 -10
  211. package/src/primitives/card/CardInternalContext.ts +0 -10
  212. package/src/primitives/card/CardInternalProvider.tsx +0 -15
  213. package/src/primitives/card/CardProvider.tsx +0 -16
  214. package/src/primitives/card/__workshop__/AsButton.tsx +0 -103
  215. package/src/primitives/card/__workshop__/AsComponent.tsx +0 -25
  216. package/src/primitives/card/__workshop__/Checkered.tsx +0 -25
  217. package/src/primitives/card/__workshop__/DataProps.tsx +0 -25
  218. package/src/primitives/card/__workshop__/Interactive.tsx +0 -29
  219. package/src/primitives/card/__workshop__/ListNavigation.tsx +0 -78
  220. package/src/primitives/card/__workshop__/Props.tsx +0 -59
  221. package/src/primitives/card/__workshop__/Selected.tsx +0 -62
  222. package/src/primitives/card/__workshop__/Styled.tsx +0 -11
  223. package/src/primitives/card/__workshop__/Tones.tsx +0 -26
  224. package/src/primitives/card/__workshop__/index.ts +0 -21
  225. package/src/primitives/card/types.ts +0 -21
  226. package/src/primitives/card/useCard.ts +0 -20
  227. package/src/primitives/checkbox/Checkbox.tsx +0 -80
  228. package/src/primitives/checkbox/__workshop__/Example.tsx +0 -25
  229. package/src/primitives/checkbox/__workshop__/Props.tsx +0 -35
  230. package/src/primitives/checkbox/__workshop__/ReadOnly.tsx +0 -16
  231. package/src/primitives/checkbox/__workshop__/Tones.tsx +0 -26
  232. package/src/primitives/checkbox/__workshop__/index.ts +0 -15
  233. package/src/primitives/code/Code.tsx +0 -47
  234. package/src/primitives/code/__workshop__/OpticalAlignment.tsx +0 -25
  235. package/src/primitives/code/__workshop__/Props.tsx +0 -20
  236. package/src/primitives/code/__workshop__/index.ts +0 -21
  237. package/src/primitives/container/Container.tsx +0 -43
  238. package/src/primitives/container/__workshop__/Example.tsx +0 -16
  239. package/src/primitives/container/__workshop__/index.ts +0 -16
  240. package/src/primitives/container/types.ts +0 -6
  241. package/src/primitives/flex/Flex.tsx +0 -38
  242. package/src/primitives/flex/__workshop__/Example.tsx +0 -26
  243. package/src/primitives/flex/__workshop__/Gap.tsx +0 -25
  244. package/src/primitives/flex/__workshop__/index.ts +0 -13
  245. package/src/primitives/flex/__workshop__/styles.css.ts +0 -12
  246. package/src/primitives/grid/Grid.tsx +0 -38
  247. package/src/primitives/grid/__workshop__/Responsive.tsx +0 -54
  248. package/src/primitives/grid/__workshop__/index.ts +0 -12
  249. package/src/primitives/heading/Heading.tsx +0 -68
  250. package/src/primitives/heading/__workshop__/OpticalAlignment.tsx +0 -27
  251. package/src/primitives/heading/__workshop__/Plain.tsx +0 -25
  252. package/src/primitives/heading/__workshop__/index.ts +0 -21
  253. package/src/primitives/inline/Inline.tsx +0 -37
  254. package/src/primitives/inline/__workshop__/Plain.tsx +0 -22
  255. package/src/primitives/inline/__workshop__/index.ts +0 -10
  256. package/src/primitives/kbd/Kbd.tsx +0 -36
  257. package/src/primitives/kbd/__workshop__/Plain.tsx +0 -9
  258. package/src/primitives/kbd/__workshop__/index.ts +0 -10
  259. package/src/primitives/label/Label.tsx +0 -67
  260. package/src/primitives/label/__workshop__/OpticalAlignment.tsx +0 -27
  261. package/src/primitives/label/__workshop__/Plain.tsx +0 -27
  262. package/src/primitives/label/__workshop__/index.ts +0 -21
  263. package/src/primitives/layer/Layer.test.tsx +0 -110
  264. package/src/primitives/layer/Layer.tsx +0 -35
  265. package/src/primitives/layer/LayerCard.tsx +0 -90
  266. package/src/primitives/layer/LayerContext.ts +0 -7
  267. package/src/primitives/layer/LayerProvider.tsx +0 -106
  268. package/src/primitives/layer/__workshop__/MultipleRoots.tsx +0 -49
  269. package/src/primitives/layer/__workshop__/Nested.tsx +0 -107
  270. package/src/primitives/layer/__workshop__/ResponsiveZOffset.tsx +0 -17
  271. package/src/primitives/layer/__workshop__/_debug.tsx +0 -17
  272. package/src/primitives/layer/__workshop__/index.ts +0 -26
  273. package/src/primitives/layer/getLayerContext.test.ts +0 -32
  274. package/src/primitives/layer/getLayerContext.ts +0 -21
  275. package/src/primitives/layer/types.ts +0 -9
  276. package/src/primitives/layer/useLayer.ts +0 -24
  277. package/src/primitives/popover/Popover.tsx +0 -291
  278. package/src/primitives/popover/PopoverLayer.tsx +0 -101
  279. package/src/primitives/popover/__workshop__/AlignedStory.tsx +0 -75
  280. package/src/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  281. package/src/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
  282. package/src/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  283. package/src/primitives/popover/__workshop__/PlainStory.tsx +0 -67
  284. package/src/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
  285. package/src/primitives/popover/__workshop__/SidePanelStory.tsx +0 -95
  286. package/src/primitives/popover/__workshop__/TestStory.tsx +0 -97
  287. package/src/primitives/popover/__workshop__/index.ts +0 -56
  288. package/src/primitives/popover/__workshop__/portal-inheritance.tsx +0 -15
  289. package/src/primitives/popover/constants.ts +0 -20
  290. package/src/primitives/popover/floating-ui/size.ts +0 -75
  291. package/src/primitives/popover/types.ts +0 -12
  292. package/src/primitives/popover/useMiddleware.ts +0 -126
  293. package/src/primitives/radio/Radio.tsx +0 -64
  294. package/src/primitives/radio/__workshop__/Example.tsx +0 -63
  295. package/src/primitives/radio/__workshop__/Plain.tsx +0 -28
  296. package/src/primitives/radio/__workshop__/index.ts +0 -13
  297. package/src/primitives/select/Select.tsx +0 -76
  298. package/src/primitives/select/__workshop__/Plain.tsx +0 -37
  299. package/src/primitives/select/__workshop__/ReadOnly.tsx +0 -23
  300. package/src/primitives/select/__workshop__/index.ts +0 -13
  301. package/src/primitives/selectable/Selectable.tsx +0 -48
  302. package/src/primitives/selectable/__workshop__/DataProps.tsx +0 -24
  303. package/src/primitives/selectable/__workshop__/as-link.tsx +0 -13
  304. package/src/primitives/selectable/__workshop__/index.ts +0 -19
  305. package/src/primitives/skeleton/CodeSkeleton.tsx +0 -49
  306. package/src/primitives/skeleton/HeadingSkeleton.tsx +0 -48
  307. package/src/primitives/skeleton/LabelSkeleton.tsx +0 -47
  308. package/src/primitives/skeleton/Skeleton.tsx +0 -70
  309. package/src/primitives/skeleton/TextSkeleton.tsx +0 -49
  310. package/src/primitives/skeleton/__workshop__/Delay.tsx +0 -69
  311. package/src/primitives/skeleton/__workshop__/Skeleton.tsx +0 -63
  312. package/src/primitives/skeleton/__workshop__/index.ts +0 -13
  313. package/src/primitives/spinner/Spinner.tsx +0 -45
  314. package/src/primitives/spinner/SpinnerAnimatedIcon.tsx +0 -14
  315. package/src/primitives/spinner/__workshop__/Props.tsx +0 -13
  316. package/src/primitives/spinner/__workshop__/index.ts +0 -16
  317. package/src/primitives/srOnly/SrOnly.tsx +0 -33
  318. package/src/primitives/stack/Stack.tsx +0 -38
  319. package/src/primitives/stack/__workshop__/Plain.tsx +0 -30
  320. package/src/primitives/stack/__workshop__/index.ts +0 -16
  321. package/src/primitives/switch/Switch.tsx +0 -76
  322. package/src/primitives/switch/__workshop__/Example.tsx +0 -25
  323. package/src/primitives/switch/__workshop__/Props.tsx +0 -23
  324. package/src/primitives/switch/__workshop__/index.ts +0 -13
  325. package/src/primitives/text/InlineCode.tsx +0 -25
  326. package/src/primitives/text/Text.tsx +0 -68
  327. package/src/primitives/text/__workshop__/Example.tsx +0 -26
  328. package/src/primitives/text/__workshop__/OpticalAlignment.tsx +0 -27
  329. package/src/primitives/text/__workshop__/index.ts +0 -26
  330. package/src/primitives/text/__workshop__/inline-code.tsx +0 -13
  331. package/src/primitives/textArea/TextArea.tsx +0 -97
  332. package/src/primitives/textArea/__workshop__/Plain.tsx +0 -46
  333. package/src/primitives/textArea/__workshop__/index.ts +0 -16
  334. package/src/primitives/textInput/TextInput.tsx +0 -279
  335. package/src/primitives/textInput/__workshop__/ClearButton.tsx +0 -32
  336. package/src/primitives/textInput/__workshop__/CustomValidity.tsx +0 -17
  337. package/src/primitives/textInput/__workshop__/Plain.tsx +0 -102
  338. package/src/primitives/textInput/__workshop__/ReadOnly.tsx +0 -14
  339. package/src/primitives/textInput/__workshop__/States.tsx +0 -53
  340. package/src/primitives/textInput/__workshop__/Tones.tsx +0 -40
  341. package/src/primitives/textInput/__workshop__/Typed.tsx +0 -23
  342. package/src/primitives/textInput/__workshop__/index.ts +0 -46
  343. package/src/primitives/tooltip/Tooltip.test.tsx +0 -496
  344. package/src/primitives/tooltip/Tooltip.tsx +0 -546
  345. package/src/primitives/tooltip/TooltipLayer.tsx +0 -72
  346. package/src/primitives/tooltip/__workshop__/CustomPortal.tsx +0 -102
  347. package/src/primitives/tooltip/__workshop__/OverflowingBoundary.tsx +0 -74
  348. package/src/primitives/tooltip/__workshop__/Props.tsx +0 -107
  349. package/src/primitives/tooltip/__workshop__/ResizableBoundary.tsx +0 -91
  350. package/src/primitives/tooltip/__workshop__/index.ts +0 -31
  351. package/src/primitives/tooltip/constants.ts +0 -24
  352. package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupContext.tsx +0 -13
  353. package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupProvider.tsx +0 -96
  354. package/src/primitives/tooltip/tooltipDelayGroup/types.ts +0 -7
  355. package/src/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  356. package/src/root/Root.tsx +0 -93
  357. package/src/root/RootProvider.tsx +0 -37
  358. package/src/root/__workshop__/Boundary.tsx +0 -43
  359. package/src/root/__workshop__/index.ts +0 -24
  360. package/src/root/__workshop__/primitives.tsx +0 -49
  361. package/src/root/__workshop__/tone-inheritance.tsx +0 -65
  362. package/src/utils/ErrorBoundary.tsx +0 -50
  363. package/src/utils/boundaryElement/BoundaryElementContext.ts +0 -7
  364. package/src/utils/boundaryElement/BoundaryElementProvider.tsx +0 -16
  365. package/src/utils/boundaryElement/__workshop__/Plain.tsx +0 -49
  366. package/src/utils/boundaryElement/__workshop__/index.ts +0 -16
  367. package/src/utils/boundaryElement/types.ts +0 -2
  368. package/src/utils/boundaryElement/useBoundaryElement.ts +0 -12
  369. package/src/utils/elementQuery/ElementQuery.tsx +0 -75
  370. package/src/utils/elementQuery/__workshop__/CustomMedia.tsx +0 -19
  371. package/src/utils/elementQuery/__workshop__/index.ts +0 -16
  372. package/src/utils/elementQuery/__workshop__/styles.css.ts +0 -31
  373. package/src/utils/elementQuery/helpers.ts +0 -27
  374. package/src/utils/portal/Portal.test.tsx +0 -105
  375. package/src/utils/portal/Portal.tsx +0 -42
  376. package/src/utils/portal/PortalContext.ts +0 -37
  377. package/src/utils/portal/PortalProvider.tsx +0 -38
  378. package/src/utils/portal/__workshop__/Named.tsx +0 -69
  379. package/src/utils/portal/__workshop__/index.ts +0 -16
  380. package/src/utils/portal/types.ts +0 -7
  381. package/src/utils/portal/usePortal.ts +0 -30
@@ -1,254 +0,0 @@
1
- import {vars} from '@sanity/ui-css'
2
- import type {Space} from '@sanity/ui-tokens'
3
- import {
4
- type ReactNode,
5
- startTransition,
6
- useEffect,
7
- useImperativeHandle,
8
- useRef,
9
- useState,
10
- } from 'react'
11
-
12
- import {_isScrollable} from '../../core/helpers/scroll'
13
- import type {ComponentType, Props} from '../../core/types'
14
- import {Box} from '../../primitives/box/Box'
15
-
16
- /** @beta */
17
- export const DEFAULT_VIRTUAL_LIST_ELEMENT = 'div'
18
-
19
- /** @beta */
20
- export interface VirtualListChangeOpts {
21
- fromIndex: number
22
- gap: number
23
- itemHeight: number
24
- scrollHeight: number
25
- scrollTop: number
26
- toIndex: number
27
- }
28
-
29
- /** @beta */
30
- export interface VirtualListOwnProps<
31
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
- Item = any,
33
- > {
34
- gap?: Space
35
- getItemKey?: (item: Item, itemIndex: number) => string
36
- items?: Item[]
37
- onChange?: (opts: VirtualListChangeOpts) => void
38
- renderItem?: (item: Item) => ReactNode
39
- }
40
-
41
- /** @beta */
42
- export type VirtualListElementType = 'div' | ComponentType
43
-
44
- /** @beta */
45
- export type VirtualListProps<
46
- E extends VirtualListElementType = VirtualListElementType,
47
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
- Item = any,
49
- > = Props<VirtualListOwnProps<Item>, E>
50
-
51
- /** @beta */
52
- export function VirtualList<
53
- E extends VirtualListElementType = typeof DEFAULT_VIRTUAL_LIST_ELEMENT,
54
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
- Item = any,
56
- >(props: VirtualListProps<E, Item>): React.JSX.Element {
57
- const {
58
- as = DEFAULT_VIRTUAL_LIST_ELEMENT,
59
- gap = 0,
60
- getItemKey,
61
- items = [],
62
- onChange,
63
- renderItem,
64
- ref: forwardedRef,
65
- ...rest
66
- } = props as VirtualListProps<typeof DEFAULT_VIRTUAL_LIST_ELEMENT>
67
-
68
- const ref = useRef<HTMLDivElement | null>(null)
69
- const wrapperRef = useRef<HTMLDivElement | null>(null)
70
- const [scrollTop, setScrollTop] = useState(0)
71
- const [scrollHeight, setScrollHeight] = useState(0)
72
- const [itemHeight, setItemHeight] = useState<number | undefined>(undefined)
73
-
74
- const [gapValue, setGapValue] = useState(0)
75
-
76
- // Sync ref to parent
77
- useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)
78
-
79
- useEffect((): (() => void) | undefined => {
80
- if (!ref.current) return
81
-
82
- const scrollableParent = _findScrollableParent(ref.current.parentNode)
83
-
84
- if (scrollableParent !== document.documentElement && scrollableParent) {
85
- if (!(scrollableParent instanceof HTMLElement)) return
86
-
87
- const handleScroll = () => {
88
- setScrollTop(scrollableParent.scrollTop)
89
- }
90
-
91
- scrollableParent.addEventListener('scroll', handleScroll, {passive: true})
92
-
93
- const ro = new ResizeObserver((entries) => {
94
- setScrollHeight(entries[0].contentRect.height)
95
- })
96
-
97
- ro.observe(scrollableParent)
98
-
99
- handleScroll()
100
-
101
- return () => {
102
- scrollableParent.removeEventListener('scroll', handleScroll)
103
-
104
- ro.unobserve(scrollableParent)
105
- ro.disconnect()
106
- }
107
- }
108
-
109
- const handleScroll = () => {
110
- setScrollTop(window.scrollY)
111
- }
112
-
113
- const handleResize = () => {
114
- setScrollHeight(window.innerHeight)
115
- }
116
-
117
- window.addEventListener('scroll', handleScroll, {passive: true})
118
- window.addEventListener('resize', handleResize)
119
-
120
- // eslint-disable-next-line react-hooks/set-state-in-effect
121
- setScrollHeight(window.innerHeight)
122
-
123
- handleScroll()
124
-
125
- return () => {
126
- window.removeEventListener('scroll', handleScroll)
127
- window.removeEventListener('resize', handleResize)
128
- }
129
- }, [])
130
-
131
- const len = items.length
132
- const height = itemHeight ? len * (itemHeight + gapValue) - gapValue : 0
133
- const fromIndex = height ? Math.max(Math.floor((scrollTop / height) * len) - 2, 0) : 0
134
- const toIndex = height ? Math.ceil(((scrollTop + scrollHeight) / height) * len) + 1 : 0
135
-
136
- useEffect(() => {
137
- if (itemHeight === undefined) return
138
-
139
- onChange?.({
140
- fromIndex,
141
- gap: gapValue,
142
- itemHeight,
143
- scrollHeight,
144
- scrollTop,
145
- toIndex,
146
- })
147
- }, [fromIndex, gapValue, itemHeight, onChange, scrollHeight, scrollTop, toIndex])
148
-
149
- useEffect(() => {
150
- startTransition(() => setItemHeight(undefined))
151
- }, [renderItem])
152
-
153
- const children = useChildren({
154
- fromIndex,
155
- gap,
156
- getItemKey,
157
- itemHeight,
158
- items,
159
- renderItem,
160
- toIndex,
161
- gapValue,
162
- setGapValue,
163
- setItemHeight,
164
- })
165
-
166
- return (
167
- <Box data-ui="VirtualList" {...rest} ref={ref} as={as} position="relative">
168
- <div ref={wrapperRef} style={{height}}>
169
- {children}
170
- </div>
171
- </Box>
172
- )
173
- }
174
-
175
- function useChildren({
176
- fromIndex,
177
- gap,
178
- getItemKey,
179
- itemHeight,
180
- items,
181
- renderItem,
182
- toIndex,
183
- gapValue,
184
- setGapValue,
185
- setItemHeight,
186
- }: Pick<VirtualListProps, 'getItemKey' | 'renderItem'> &
187
- Required<Pick<VirtualListProps, 'items'>> & {
188
- fromIndex: number
189
- gap: Space
190
- itemHeight: number | undefined
191
- toIndex: number
192
- gapValue: number
193
- setGapValue: React.Dispatch<React.SetStateAction<number>>
194
- setItemHeight: React.Dispatch<React.SetStateAction<number | undefined>>
195
- }) {
196
- if (!renderItem || items.length === 0) return null
197
-
198
- if (itemHeight === -1) {
199
- return [
200
- <>
201
- <Box
202
- key={0}
203
- ref={(el) => {
204
- if (el) setItemHeight(el.offsetHeight)
205
- }}
206
- insetLeft={0}
207
- insetRight={0}
208
- insetTop={0}
209
- position="absolute"
210
- >
211
- {renderItem(items[0])}
212
- </Box>
213
- <div
214
- ref={(el) => {
215
- if (el) setGapValue(el.offsetHeight)
216
- }}
217
- style={{height: vars.space[gap]}}
218
- />
219
- </>,
220
- ]
221
- }
222
-
223
- const slicedItems = items.slice(fromIndex, toIndex)
224
-
225
- return slicedItems.map((item, _itemIndex) => {
226
- const itemIndex = fromIndex + _itemIndex
227
- const node = renderItem(item)
228
- const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex
229
-
230
- return (
231
- <Box
232
- key={key}
233
- insetLeft={0}
234
- insetRight={0}
235
- position="absolute"
236
- style={{
237
- top: typeof itemHeight === 'number' ? itemIndex * (itemHeight + gapValue) : undefined,
238
- }}
239
- >
240
- {node}
241
- </Box>
242
- )
243
- })
244
- }
245
-
246
- function _findScrollableParent(parentNode: ParentNode | null) {
247
- let _scrollEl = parentNode
248
-
249
- while (_scrollEl && !_isScrollable(_scrollEl)) {
250
- _scrollEl = _scrollEl.parentNode
251
- }
252
-
253
- return _scrollEl
254
- }
@@ -1,41 +0,0 @@
1
- import {Box, Card, Container, Text, VirtualList} from '@sanity/ui'
2
- import {useState} from 'react'
3
-
4
- type Item = {
5
- key: number
6
- }
7
-
8
- const data: Item[] = Array.from(new Array(1000)).map((_, key) => ({key}))
9
-
10
- export default function ChangingPropsStory(): React.JSX.Element {
11
- const [expanded, setExpanded] = useState(false)
12
-
13
- const toggleExpand = () => setExpanded((v) => !v)
14
-
15
- return (
16
- <Container paddingX={4} paddingY={5} width={1}>
17
- <Box marginBottom={5}>
18
- <Text muted size={1}>
19
- Click any item to toggle expanded view
20
- </Text>
21
- </Box>
22
-
23
- <VirtualList
24
- gap={expanded ? 4 : 2}
25
- items={data}
26
- renderItem={(item) => (
27
- <Card
28
- as="button"
29
- paddingX={3}
30
- paddingY={expanded ? 5 : 3}
31
- radius={4}
32
- shadow={1}
33
- onClick={toggleExpand}
34
- >
35
- <Text size={1}>Item #{item.key}</Text>
36
- </Card>
37
- )}
38
- />
39
- </Container>
40
- )
41
- }
@@ -1,43 +0,0 @@
1
- import {Card, Container, Text, VirtualList} from '@sanity/ui'
2
-
3
- type Item = {
4
- key: number
5
- }
6
-
7
- const data: Item[] = Array.from(new Array(1000)).map((_, key) => ({key}))
8
-
9
- export default function ElementScrollStory(): React.JSX.Element {
10
- return (
11
- <Card
12
- __unstable_pattern="halftone"
13
- height="fill"
14
- padding={4}
15
- sizing="border"
16
- tone="transparent"
17
- >
18
- <Card
19
- height="fill"
20
- margin="auto"
21
- maxWidth={1}
22
- overflow="auto"
23
- padding={4}
24
- radius={5}
25
- shadow={1}
26
- sizing="border"
27
- tone="default"
28
- >
29
- <Container width={1}>
30
- <VirtualList
31
- gap={2}
32
- items={data}
33
- renderItem={(item) => (
34
- <Card padding={3} radius={4} shadow={1}>
35
- <Text size={1}>Item #{item.key}</Text>
36
- </Card>
37
- )}
38
- />
39
- </Container>
40
- </Card>
41
- </Card>
42
- )
43
- }
@@ -1,40 +0,0 @@
1
- import {Card, Container, Text, VirtualList} from '@sanity/ui'
2
- import {useRef, useState} from 'react'
3
-
4
- interface Item {
5
- key: string
6
- }
7
-
8
- function getData(len: number, offsetIndex = 0): Item[] {
9
- return Array.from(new Array(len)).map((_, index) => ({key: String(offsetIndex + index)}))
10
- }
11
-
12
- const ITEMS_PER_PAGE = 1000
13
-
14
- export default function InfiniteListStory(): React.JSX.Element {
15
- const [data, setData] = useState(() => getData(ITEMS_PER_PAGE))
16
- const offsetRef = useRef(0)
17
-
18
- return (
19
- <Container padding={4} width={1}>
20
- <VirtualList
21
- gap={2}
22
- getItemKey={(item) => `item-${item.key}`}
23
- items={data}
24
- renderItem={(item) => (
25
- <Card padding={3} radius={4} shadow={1}>
26
- <Text size={1}>Item #{item.key}</Text>
27
- </Card>
28
- )}
29
- onChange={({toIndex}) => {
30
- const maxIndex = (offsetRef.current + 1) * ITEMS_PER_PAGE
31
-
32
- if (toIndex >= maxIndex - 50) {
33
- offsetRef.current += 1
34
- setData((d) => d.concat(getData(ITEMS_PER_PAGE, offsetRef.current * ITEMS_PER_PAGE)))
35
- }
36
- }}
37
- />
38
- </Container>
39
- )
40
- }
@@ -1,23 +0,0 @@
1
- import {Card, Container, Text, VirtualList} from '@sanity/ui'
2
-
3
- type Item = {
4
- key: number
5
- }
6
-
7
- const data: Item[] = Array.from(new Array(1000)).map((_, key) => ({key}))
8
-
9
- export default function WindowScrollStory(): React.JSX.Element {
10
- return (
11
- <Container paddingX={[4, 5, 6]} paddingY={[5, 6, 7]} width={1}>
12
- <VirtualList
13
- gap={2}
14
- items={data}
15
- renderItem={(item) => (
16
- <Card padding={3} radius={4} shadow={1}>
17
- <Text size={1}>Item #{item.key}</Text>
18
- </Card>
19
- )}
20
- />
21
- </Container>
22
- )
23
- }
@@ -1,31 +0,0 @@
1
- import type {WorkshopScope} from '@sanity/ui-workshop'
2
- import {lazy} from 'react'
3
-
4
- const scope: WorkshopScope = {
5
- name: 'components/virtual-list',
6
- title: 'VirtualList',
7
- stories: [
8
- {
9
- name: 'window-scroll',
10
- title: 'Window scroll',
11
- component: lazy(() => import('./WindowScrolll')),
12
- },
13
- {
14
- name: 'element-scroll',
15
- title: 'Element scroll',
16
- component: lazy(() => import('./ElementScroll')),
17
- },
18
- {
19
- name: 'infinite-list',
20
- title: 'Infinite list',
21
- component: lazy(() => import('./InfiniteList')),
22
- },
23
- {
24
- name: 'changing-props',
25
- title: 'Changing props',
26
- component: lazy(() => import('./ChangingProps')),
27
- },
28
- ],
29
- }
30
-
31
- export default scope
package/src/core/_keys.ts DELETED
@@ -1,26 +0,0 @@
1
- type PropertyKey = string | number | symbol
2
-
3
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
- type Any = any
5
-
6
- /** @internal */
7
- export function _splitKeys<
8
- P extends Record<PropertyKey, Any>,
9
- const K extends readonly (keyof P)[],
10
- >(props: P, keys: K) {
11
- const style = {} as Pick<P, K[number]>
12
- const rest = {} as Omit<P, K[number]>
13
-
14
- // Faster membership than Array.includes for large key lists
15
- const keySet = new Set<PropertyKey>(keys as readonly PropertyKey[])
16
-
17
- for (const k in props) {
18
- if (keySet.has(k)) {
19
- ;(style as Any)[k] = (props as Any)[k]
20
- } else {
21
- ;(rest as Any)[k] = (props as Any)[k]
22
- }
23
- }
24
-
25
- return [style, rest] as const
26
- }
@@ -1,67 +0,0 @@
1
- import type {Transition, Variant} from 'motion/react'
2
-
3
- export const EMPTY_ARRAY: never[] = []
4
-
5
- export const EMPTY_RECORD: Record<string, never> = {}
6
-
7
- const POPOVER_MOTION_DURATION = 0.2
8
-
9
- /**
10
- * Shared `framer-motion` variants used by `Popover` and `Tooltip` components.
11
- */
12
- export const POPOVER_MOTION_PROPS: {
13
- card: {
14
- initial: Variant
15
- hidden: Variant
16
- visible: Variant
17
- scaleIn: Variant
18
- scaleOut: Variant
19
- }
20
- children: {
21
- hidden: Variant
22
- visible: Variant
23
- }
24
- transition: Transition
25
- } = {
26
- card: {
27
- initial: {
28
- scale: 0.97,
29
- willChange: 'transform',
30
- },
31
- hidden: {
32
- opacity: 0,
33
- },
34
- visible: {
35
- opacity: 1,
36
- transition: {
37
- when: 'beforeChildren',
38
- duration: POPOVER_MOTION_DURATION / 2,
39
- },
40
- },
41
- scaleIn: {
42
- scale: 1,
43
- },
44
- scaleOut: {
45
- scale: 0.97,
46
- },
47
- },
48
- children: {
49
- hidden: {
50
- opacity: 0,
51
- },
52
- visible: {
53
- opacity: 1,
54
- },
55
- },
56
- transition: {
57
- type: 'spring',
58
- visualDuration: POPOVER_MOTION_DURATION,
59
- bounce: 0.25,
60
- },
61
- }
62
-
63
- export const Z_OFFSETS = {
64
- dialog: 600,
65
- popover: 400,
66
- tooltip: 200,
67
- }
@@ -1,29 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- /** @internal */
4
- // Based on https://github.com/radix-ui/primitives/blob/0bade6a704e5821b90a6da0f3d8cfa8a7711127d/packages/react/slot/src/Slot.tsx#L128-L150
5
- // Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`
6
- // After React 19 accessing `element.ref` does the opposite.
7
- // https://github.com/facebook/react/pull/28348
8
- //
9
- // Access the ref using the method that doesn't yield a warning.
10
- export function getElementRef(element: React.ReactElement): React.Ref<unknown> | undefined {
11
- // React <=18 in DEV
12
- let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get
13
- let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning
14
-
15
- if (mayWarn) {
16
- return (element as any).ref
17
- }
18
-
19
- // React 19 in DEV
20
- getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get
21
- mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning
22
-
23
- if (mayWarn) {
24
- return (element.props as {ref?: React.Ref<unknown>}).ref
25
- }
26
-
27
- // Not DEV
28
- return (element.props as {ref?: React.Ref<unknown>}).ref || (element as any).ref
29
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * @internal
3
- */
4
- export function _raf(fn: () => void): () => void {
5
- const frameId = requestAnimationFrame(fn)
6
-
7
- return () => {
8
- cancelAnimationFrame(frameId)
9
- }
10
- }
11
-
12
- /**
13
- * @internal
14
- */
15
- export function _raf2(fn: () => void): () => void {
16
- let innerDispose: (() => void) | undefined = undefined
17
-
18
- const dispose = _raf(() => {
19
- innerDispose = _raf(fn)
20
- })
21
-
22
- return () => {
23
- innerDispose?.()
24
- dispose()
25
- }
26
- }
@@ -1,55 +0,0 @@
1
- /**
2
- * @internal
3
- */
4
- export function _isEnterToClickElement(element: HTMLElement): boolean {
5
- return isHTMLAnchorElement(element) || isHTMLButtonElement(element)
6
- }
7
-
8
- /**
9
- * @internal
10
- */
11
- export function isHTMLElement(node: unknown): node is HTMLElement {
12
- return node instanceof Node && node.nodeType === Node.ELEMENT_NODE
13
- }
14
-
15
- /**
16
- * @internal
17
- */
18
- export function isHTMLAnchorElement(element: unknown): element is HTMLAnchorElement {
19
- return isHTMLElement(element) && element.nodeName === 'A'
20
- }
21
-
22
- /**
23
- * @internal
24
- */
25
- export function isHTMLInputElement(element: unknown): element is HTMLInputElement {
26
- return isHTMLElement(element) && element.nodeName === 'INPUT'
27
- }
28
-
29
- /**
30
- * @internal
31
- */
32
- export function isHTMLButtonElement(element: unknown): element is HTMLButtonElement {
33
- return isHTMLElement(element) && element.nodeName === 'BUTTON'
34
- }
35
-
36
- /**
37
- * @internal
38
- */
39
- export function isHTMLSelectElement(element: unknown): element is HTMLSelectElement {
40
- return isHTMLElement(element) && element.nodeName === 'SELECT'
41
- }
42
-
43
- /**
44
- * @internal
45
- */
46
- export function isHTMLTextAreaElement(element: unknown): element is HTMLTextAreaElement {
47
- return isHTMLElement(element) && element.nodeName === 'TEXTAREA'
48
- }
49
-
50
- /**
51
- * @internal
52
- */
53
- export function containsOrEqualsElement(element: HTMLElement, node: Node): boolean {
54
- return element.contains(node) || element === node
55
- }