@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,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
- }