@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,111 +0,0 @@
1
- import {type Breakpoint, BREAKPOINTS} from '@sanity/ui-css'
2
- import {useMemo, useSyncExternalStore} from 'react'
3
-
4
- /**
5
- * @internal
6
- */
7
- export interface _MediaStore {
8
- subscribe: (onStoreChange: () => void) => () => void
9
- getSnapshot: () => Breakpoint
10
- }
11
-
12
- type MediaQueryMinWidth = `(min-width: ${number}px)`
13
- type MediaQueryMaxWidth = `(max-width: ${number}px)`
14
- type MediaQueryMinMaxWidth = `${MediaQueryMinWidth} and ${MediaQueryMaxWidth}`
15
- type MediaQuery = `screen and ${MediaQueryMinWidth | MediaQueryMaxWidth | MediaQueryMinMaxWidth}`
16
-
17
- function _getMediaQuery(index: number): MediaQuery {
18
- if (index === 0) {
19
- return `screen and (max-width: ${BREAKPOINTS[index + 1] - 1}px)`
20
- }
21
-
22
- if (index === BREAKPOINTS.length - 1) {
23
- return `screen and (min-width: ${BREAKPOINTS[index]}px)`
24
- }
25
-
26
- return `screen and (min-width: ${BREAKPOINTS[index]}px) and (max-width: ${BREAKPOINTS[index + 1] - 1}px)`
27
- }
28
-
29
- function _createMediaStore(): _MediaStore {
30
- const mediaLen = BREAKPOINTS.length
31
-
32
- let sizes:
33
- | {
34
- index: number
35
- mq: MediaQueryList
36
- }[]
37
- | undefined = undefined
38
-
39
- // The _createMediaStore function is called in both server and client environments.
40
- // However since subscribe and getSnapshot are only called on the client we lazy init what we need for them
41
- // so that we don't need to run checks for wether it's safe to call `window.matchMedia`
42
- const getSizes = () => {
43
- if (typeof window === 'undefined') {
44
- return sizes
45
- }
46
-
47
- if (!sizes) {
48
- sizes = []
49
-
50
- for (let index = mediaLen; index > -1; index -= 1) {
51
- sizes.push({
52
- index,
53
- mq: window.matchMedia(_getMediaQuery(index)),
54
- })
55
- }
56
- }
57
-
58
- return sizes
59
- }
60
-
61
- const getSnapshot = () => {
62
- for (const {index, mq} of getSizes() ?? []) {
63
- if (mq.matches) return index as Breakpoint
64
- }
65
-
66
- return 0
67
- }
68
-
69
- const subscribe = (onStoreChange: () => void) => {
70
- const disposeFns: (() => void)[] = []
71
-
72
- for (const {mq} of getSizes() ?? []) {
73
- const handleChange = () => {
74
- if (mq.matches) onStoreChange()
75
- }
76
-
77
- mq.addEventListener('change', handleChange)
78
-
79
- disposeFns.push(() => mq.removeEventListener('change', handleChange))
80
- }
81
-
82
- return () => {
83
- for (const disposeFn of disposeFns) {
84
- disposeFn()
85
- }
86
- }
87
- }
88
-
89
- return {getSnapshot, subscribe}
90
- }
91
-
92
- /**
93
- * Only called during server-side rendering, and hydration if using hydrateRoot
94
- * Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query
95
- * and we assume `(prefers-color-scheme: light)` since it's the most common scheme
96
- *
97
- * @link https://beta.reactjs.org/apis/react/useSyncExternalStore#adding-support-for-server-rendering
98
- */
99
- function getServerSnapshot(): Breakpoint {
100
- return 0
101
- }
102
-
103
- /**
104
- * This API might change. DO NOT USE IN PRODUCTION.
105
- * @beta
106
- */
107
- export function useMediaIndex(): Breakpoint {
108
- const store = useMemo(() => _createMediaStore(), [])
109
-
110
- return useSyncExternalStore(store.subscribe, store.getSnapshot, getServerSnapshot)
111
- }
@@ -1,15 +0,0 @@
1
- import {useSyncExternalStore} from 'react'
2
-
3
- /**
4
- * Some components should only render after mounting to the DOM, and not be rendered at all during SSR renderToString or equivalent.
5
- * @public
6
- */
7
- export function useMounted(): boolean {
8
- return useSyncExternalStore(
9
- subscribe,
10
- () => true,
11
- () => false,
12
- )
13
- }
14
-
15
- const subscribe = () => () => {}
@@ -1,56 +0,0 @@
1
- /**
2
- * As this hook is used for top-level theming it's likely to be called while server-rendering
3
- * and that's why it's worth it to have a testing suite for hydration
4
- */
5
- import {waitFor} from '@testing-library/dom'
6
- import {hydrateRoot} from 'react-dom/client'
7
- import {afterAll, beforeAll, describe, expect, it, vi} from 'vitest'
8
-
9
- import {usePrefersDark} from './usePrefersDark'
10
-
11
- function Log() {
12
- const dark = usePrefersDark()
13
-
14
- return <>dark: {JSON.stringify(dark)}</>
15
- }
16
-
17
- const originalMatchMedia = window.matchMedia
18
-
19
- describe('usePrefersDark SSR hydration', () => {
20
- beforeAll(() => {
21
- window.matchMedia = () =>
22
- ({
23
- addEventListener: vi.fn(),
24
- removeEventListener: vi.fn(),
25
- matches: true,
26
- }) as unknown as MediaQueryList
27
- })
28
-
29
- afterAll(() => {
30
- window.matchMedia = originalMatchMedia
31
- })
32
-
33
- it(`hydrates without any warnings`, async () => {
34
- const spy = vi.spyOn(console, 'error') // .mockImplementation()
35
-
36
- const node = document.createElement('div')
37
-
38
- document.body.appendChild(node)
39
-
40
- node.innerHTML = `dark: <!-- -->false`
41
-
42
- hydrateRoot(node, <Log />)
43
-
44
- // It's false initially
45
- await waitFor(() => expect(node.innerHTML).toBe('dark: <!-- -->false'))
46
-
47
- // After hydration it should switch to true
48
- await waitFor(() => expect(node.innerHTML).toBe('dark: <!-- -->true'))
49
-
50
- // eslint-disable-next-line no-console
51
- expect(console.error).not.toHaveBeenCalled()
52
-
53
- spy.mockReset()
54
- spy.mockRestore()
55
- })
56
- })
@@ -1,20 +0,0 @@
1
- /** @jest-environment node */
2
- import {renderToStaticMarkup, renderToString} from 'react-dom/server'
3
- import {describe, expect, it} from 'vitest'
4
-
5
- import {usePrefersDark} from './usePrefersDark'
6
-
7
- function Log() {
8
- const dark = usePrefersDark()
9
-
10
- return <>dark: {JSON.stringify(dark)}</>
11
- }
12
-
13
- describe('usePrefersDark', () => {
14
- it(`SSR to static markup returns false`, () => {
15
- expect(renderToStaticMarkup(<Log />)).toBe('dark: false')
16
- })
17
- it(`SSR to markup for hydration doesn't throw`, () => {
18
- expect(renderToString(<Log />)).toBe('dark: <!-- -->false')
19
- })
20
- })
@@ -1,16 +0,0 @@
1
- import {useMatchMedia} from './useMatchMedia'
2
-
3
- /**
4
- * Returns true if a dark color scheme is preferred, false if a light color scheme is preferred or the preference is not known.
5
- *
6
- * @param getServerSnapshot - Only called during server-side rendering, and hydration if using hydrateRoot. Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query and we assume `(prefers-color-scheme: light)` since it's the most common scheme (https://dev/reference/react/useSyncExternalStore#adding-support-for-server-rendering)
7
- *
8
- * If you persist the detected preference in a cookie or a header then you may implement your own server snapshot to read it.
9
- * Chrome supports reading the `prefers-color-scheme` media query from a header if the server response: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-Prefers-Color-Scheme
10
- * @example https://gist.github.com/stipsan/13c0cccf8dfc34f4b44bb1b984baf7df
11
- *
12
- * @public
13
- */
14
- export function usePrefersDark(getServerSnapshot = () => false): boolean {
15
- return useMatchMedia('(prefers-color-scheme: dark)', getServerSnapshot)
16
- }
@@ -1,56 +0,0 @@
1
- /**
2
- * As this hook is used for top-level theming it's likely to be called while server-rendering
3
- * and that's why it's worth it to have a testing suite for hydration
4
- */
5
- import {waitFor} from '@testing-library/dom'
6
- import {hydrateRoot} from 'react-dom/client'
7
- import {afterAll, beforeAll, describe, expect, it, vi} from 'vitest'
8
-
9
- import {usePrefersReducedMotion} from './usePrefersReducedMotion'
10
-
11
- function Log() {
12
- const reduceMotion = usePrefersReducedMotion()
13
-
14
- return <>prefers-motion: {JSON.stringify(reduceMotion)}</>
15
- }
16
-
17
- const originalMatchMedia = window.matchMedia
18
-
19
- describe('usePrefersReducedMotion SSR hydration', () => {
20
- beforeAll(() => {
21
- window.matchMedia = () =>
22
- ({
23
- addEventListener: vi.fn(),
24
- removeEventListener: vi.fn(),
25
- matches: true,
26
- }) as unknown as MediaQueryList
27
- })
28
-
29
- afterAll(() => {
30
- window.matchMedia = originalMatchMedia
31
- })
32
-
33
- it(`hydrates without any warnings`, async () => {
34
- const spy = vi.spyOn(console, 'error') // .mockImplementation()
35
-
36
- const node = document.createElement('div')
37
-
38
- document.body.appendChild(node)
39
-
40
- node.innerHTML = `prefers-motion: <!-- -->false`
41
-
42
- hydrateRoot(node, <Log />)
43
-
44
- // It's false initially
45
- await waitFor(() => expect(node.innerHTML).toBe('prefers-motion: <!-- -->false'))
46
-
47
- // After hydration it should switch to true
48
- await waitFor(() => expect(node.innerHTML).toBe('prefers-motion: <!-- -->true'))
49
-
50
- // eslint-disable-next-line no-console
51
- expect(console.error).not.toHaveBeenCalled()
52
-
53
- spy.mockReset()
54
- spy.mockRestore()
55
- })
56
- })
@@ -1,20 +0,0 @@
1
- /** @jest-environment node */
2
- import {renderToStaticMarkup, renderToString} from 'react-dom/server'
3
- import {describe, expect, it} from 'vitest'
4
-
5
- import {usePrefersReducedMotion} from './usePrefersReducedMotion'
6
-
7
- function Log() {
8
- const reduceMotion = usePrefersReducedMotion()
9
-
10
- return <>prefers-motion: {JSON.stringify(reduceMotion)}</>
11
- }
12
-
13
- describe('usePrefersReducedMotion', () => {
14
- it(`SSR to static markup returns false`, () => {
15
- expect(renderToStaticMarkup(<Log />)).toBe('prefers-motion: false')
16
- })
17
- it(`SSR to markup for hydration doesn't throw`, () => {
18
- expect(renderToString(<Log />)).toBe('prefers-motion: <!-- -->false')
19
- })
20
- })
@@ -1,16 +0,0 @@
1
- import {useMatchMedia} from './useMatchMedia'
2
-
3
- /**
4
- * Returns true if motion should be reduced
5
- *
6
- * @param getServerSnapshot - Only called during server-side rendering, and hydration if using hydrateRoot. Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query and we assume `(prefers-reduced-motion: no-preference)` since it's the most common scheme (https://dev/reference/react/useSyncExternalStore#adding-support-for-server-rendering)
7
- *
8
- * If you persist the detected preference in a cookie or a header then you may implement your own server snapshot to read it.
9
- * Chrome supports reading the `prefers-reduced-motion` media query from a header if the server response: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-Prefers-Reduced-Motion
10
- * @example https://gist.github.com/stipsan/0c0f839a27842249cada893e9fb7767b
11
- *
12
- * @public
13
- */
14
- export function usePrefersReducedMotion(getServerSnapshot = () => false): boolean {
15
- return useMatchMedia('(prefers-reduced-motion: reduce)', getServerSnapshot)
16
- }
@@ -1,14 +0,0 @@
1
- import type {ResponsiveProp, ResponsivePropArray} from '@sanity/ui-css'
2
-
3
- import {_getResponsiveProp} from '../core/helpers/props'
4
-
5
- /**
6
- * @internal
7
- * @deprecated use `_getResponsiveProp` directly instead
8
- */
9
- export function useResponsiveProp<T>(
10
- val: ResponsiveProp<T> | undefined,
11
- defaultVal?: ResponsivePropArray<T>,
12
- ): ResponsivePropArray<T> {
13
- return _getResponsiveProp(val, defaultVal)
14
- }
@@ -1,54 +0,0 @@
1
- import {useMemo, useRef} from 'react'
2
-
3
- /**
4
- * Shallow equality check for objects and arrays
5
- * @internal
6
- */
7
- function shallowEqual<T>(a: T, b: T): boolean {
8
- if (a === b) return true
9
- if (typeof a !== 'object' || typeof b !== 'object') return false
10
- if (a === null || b === null) return false
11
-
12
- if (Array.isArray(a) && Array.isArray(b)) {
13
- if (a.length !== b.length) return false
14
- return a.every((item, index) => item === b[index])
15
- }
16
-
17
- const keysA = Object.keys(a as object)
18
- const keysB = Object.keys(b as object)
19
-
20
- if (keysA.length !== keysB.length) return false
21
-
22
- return keysA.every(
23
- (key) =>
24
- Object.prototype.hasOwnProperty.call(b, key) &&
25
- (a as Record<string, unknown>)[key] === (b as Record<string, unknown>)[key],
26
- )
27
- }
28
-
29
- /**
30
- * Hook that returns a stable reference when the value is shallowly equal
31
- * Prevents unnecessary re-renders and re-registrations
32
- *
33
- * @deprecated prefer `useMemo` in the wrapping component instead
34
- *
35
- * @internal
36
- * @param value - The value to stabilize
37
- * @returns Stable reference to the value
38
- */
39
- export function useUnique<T>(value: T): T {
40
- const ref = useRef<T>(value)
41
-
42
- // Use useMemo to compute the stable value
43
- // Intentionally accessing and updating ref for memoization
44
- return useMemo(() => {
45
- // eslint-disable-next-line react-hooks/refs
46
- if (shallowEqual(ref.current, value)) {
47
- // eslint-disable-next-line react-hooks/refs
48
- return ref.current
49
- }
50
- // eslint-disable-next-line react-hooks/refs
51
- ref.current = value
52
- return value
53
- }, [value])
54
- }
@@ -1,47 +0,0 @@
1
- import type {Middleware} from '@floating-ui/react-dom'
2
-
3
- /**
4
- * Custom floating-ui middleware which calculates transform-origin X + Y offsets
5
- * based on the current floating rect's dimensions and shift offset.
6
- *
7
- * Scaling popovers with these transform-origin offsets will give the effect of
8
- * popvers slightly 'growing' from the origin/reference element.
9
- *
10
- * This middleware must be applied after both `@sanity/ui/size` and `shift` middlewares.
11
- */
12
- export const origin: Middleware = {
13
- name: '@sanity/ui/origin',
14
- fn({middlewareData, placement, rects}) {
15
- const [side] = placement.split('-')
16
-
17
- const floatingWidth = rects.floating.width
18
- const floatingHeight = rects.floating.height
19
-
20
- const shiftX = middlewareData.shift?.x || 0
21
- const shiftY = middlewareData.shift?.y || 0
22
-
23
- if (floatingWidth <= 0 || floatingHeight <= 0) {
24
- return {}
25
- }
26
-
27
- const isVerticalPlacement = ['bottom', 'top'].includes(side)
28
-
29
- const {originX, originY}: {originX: number; originY: number} = isVerticalPlacement
30
- ? {
31
- originX: clamp(0.5 - shiftX / floatingWidth, 0, 1),
32
- originY: side === 'bottom' ? 0 : 1,
33
- }
34
- : {
35
- originX: side === 'left' ? 1 : 0,
36
- originY: clamp(0.5 - shiftY / floatingHeight, 0, 1),
37
- }
38
-
39
- return {
40
- data: {originX, originY},
41
- }
42
- },
43
- }
44
-
45
- function clamp(num: number, min: number, max: number) {
46
- return Math.min(Math.max(num, min), max)
47
- }
@@ -1,114 +0,0 @@
1
- /**
2
- * @beta
3
- */
4
- export interface ElementRectValue {
5
- width: number
6
- height: number
7
- }
8
-
9
- /**
10
- * @beta
11
- */
12
- export interface ElementSize {
13
- content: ElementRectValue
14
- border: ElementRectValue
15
-
16
- /** @deprecated INTERNAL ONLY */
17
- _contentRect: DOMRectReadOnly
18
- }
19
-
20
- /**
21
- * @internal
22
- */
23
- export type _ElementSizeSubscriber = (elementRect: ElementSize) => void
24
-
25
- /**
26
- * @internal
27
- */
28
- export interface _ElementSizeObserver {
29
- subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void
30
- }
31
-
32
- /**
33
- * @internal
34
- */
35
- export interface _ElementSizeListener {
36
- subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void
37
- }
38
-
39
- // Initialize element size observer
40
- // NOTE: this should NOT have size effects
41
- /**
42
- * @internal
43
- */
44
- export const _elementSizeObserver: _ElementSizeObserver = _createElementSizeObserver()
45
-
46
- function _createElementRectValueListener(): _ElementSizeListener {
47
- return {
48
- subscribe(element, subscriber) {
49
- const resizeObserver = new ResizeObserver(([entry]) => {
50
- subscriber({
51
- _contentRect: entry.contentRect,
52
- border: {
53
- width: entry.borderBoxSize[0].inlineSize,
54
- height: entry.borderBoxSize[0].blockSize,
55
- },
56
- content: {
57
- width: entry.contentRect.width,
58
- height: entry.contentRect.height,
59
- },
60
- })
61
- })
62
-
63
- resizeObserver.observe(element)
64
-
65
- return () => {
66
- resizeObserver.unobserve(element)
67
- resizeObserver.disconnect()
68
- }
69
- },
70
- }
71
- }
72
-
73
- function _createElementSizeObserver(): _ElementSizeObserver {
74
- const disposeCache = new WeakMap<HTMLElement, () => void>()
75
- const subscribersCache = new WeakMap<HTMLElement, _ElementSizeSubscriber[]>()
76
-
77
- return {
78
- subscribe(element, subscriber) {
79
- const subscribers = subscribersCache.get(element) || []
80
-
81
- let dispose = disposeCache.get(element)
82
-
83
- if (!subscribersCache.has(element)) {
84
- subscribersCache.set(element, subscribers)
85
-
86
- const listener = _createElementRectValueListener()
87
-
88
- // listen
89
- dispose = listener.subscribe(element, (elementRect) => {
90
- for (const sub of subscribers) {
91
- sub(elementRect)
92
- }
93
- })
94
- }
95
-
96
- subscribers.push(subscriber)
97
-
98
- return () => {
99
- // dispose
100
-
101
- const idx = subscribers.indexOf(subscriber)
102
-
103
- if (idx > -1) {
104
- subscribers.splice(idx, 1)
105
- }
106
-
107
- if (subscribers.length === 0) {
108
- // unlisten
109
- if (dispose) dispose()
110
- }
111
- }
112
- },
113
- }
114
- }
@@ -1,4 +0,0 @@
1
- import {lazy} from 'react'
2
-
3
- /** @internal */
4
- export const LazySyntax = lazy(() => import('./Syntax'))
@@ -1,26 +0,0 @@
1
- import {_syntax} from '@sanity/ui-css'
2
- import {hasLanguage, Refractor} from 'react-refractor'
3
-
4
- export interface SyntaxProps {
5
- language?: string
6
- value: React.ReactNode
7
- }
8
-
9
- export default function Syntax(props: SyntaxProps): React.JSX.Element {
10
- const {language: languageProp, value} = props
11
- const language = typeof languageProp === 'string' ? languageProp : undefined
12
- const registered = language ? hasLanguage(language) : false
13
-
14
- if (!language || !registered) {
15
- return <code>{value}</code>
16
- }
17
-
18
- return (
19
- <Refractor
20
- className={_syntax()}
21
- inline
22
- language={language}
23
- value={typeof value === 'string' ? value : ''}
24
- />
25
- )
26
- }