@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,75 +0,0 @@
1
- import {
2
- BoundaryElementProvider,
3
- Box,
4
- Button,
5
- Card,
6
- Dialog,
7
- Flex,
8
- Menu,
9
- MenuButton,
10
- MenuItem,
11
- PortalProvider,
12
- } from '@sanity/ui'
13
- import {useCallback, useState} from 'react'
14
-
15
- export default function PanesStory(): React.JSX.Element {
16
- return (
17
- <Flex height="fill">
18
- <Pane id="A" />
19
- <Pane borderLeft id="B" />
20
- </Flex>
21
- )
22
- }
23
-
24
- function Pane(props: {borderLeft?: boolean; id: string}) {
25
- const {borderLeft, id} = props
26
- const [element, setElement] = useState<HTMLDivElement | null>(null)
27
- const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)
28
- const [dialogOpen, setDialogOpen] = useState(false)
29
-
30
- const handleClose = useCallback(() => {
31
- setDialogOpen(false)
32
- }, [])
33
-
34
- return (
35
- <BoundaryElementProvider element={element}>
36
- <PortalProvider element={portalElement}>
37
- <Card ref={setElement} borderLeft={borderLeft} flex={1} position="relative">
38
- <Box padding={4}>
39
- <Button selected={dialogOpen} text="Open dialog" onClick={() => setDialogOpen(true)} />
40
- </Box>
41
-
42
- <div ref={setPortalElement} />
43
- </Card>
44
-
45
- {dialogOpen && (
46
- <Dialog
47
- header={`Dialog ${id}`}
48
- id={id}
49
- position="absolute"
50
- onClickOutside={handleClose}
51
- onClose={handleClose}
52
- >
53
- <Box padding={4}>
54
- <MenuButton
55
- button={<Button text="Open menu" />}
56
- id={`${id}-menu`}
57
- menu={
58
- <Menu>
59
- <MenuItem text="Item 1" />
60
- <MenuItem text="Item 2" />
61
- <MenuItem text="Item 3" />
62
- </Menu>
63
- }
64
- popover={{
65
- modal: true,
66
- portal: true,
67
- }}
68
- />
69
- </Box>
70
- </Dialog>
71
- )}
72
- </PortalProvider>
73
- </BoundaryElementProvider>
74
- )
75
- }
@@ -1,30 +0,0 @@
1
- import {ArrowDownIcon, ArrowUpIcon} from '@sanity/icons'
2
- import {Box, Dialog, LayerProvider, Stack, Text} from '@sanity/ui'
3
- import {useBoolean, useSelect} from '@sanity/ui-workshop'
4
-
5
- import {WORKSHOP_DIALOG_POSITION_OPTIONS} from '$workshop'
6
-
7
- export default function PositionStory(): React.JSX.Element {
8
- const open = useBoolean('Open', true)
9
- const position = useSelect('Position', WORKSHOP_DIALOG_POSITION_OPTIONS)
10
-
11
- return (
12
- <Box padding={4}>
13
- <Box style={{padding: 'calc(100vh - 100px) 0'}}>
14
- <Stack gap={3}>
15
- <Text align="center">
16
- <ArrowUpIcon />
17
- </Text>
18
- <Text align="center">Scrollable</Text>
19
- <Text align="center">
20
- <ArrowDownIcon />
21
- </Text>
22
- </Stack>
23
-
24
- <LayerProvider>
25
- {open && <Dialog header="Position example" id="position-example" position={position} />}
26
- </LayerProvider>
27
- </Box>
28
- </Box>
29
- )
30
- }
@@ -1,93 +0,0 @@
1
- import {
2
- Box,
3
- Button,
4
- CARD_TONES,
5
- COLOR_SCHEMES,
6
- CONTAINER,
7
- Dialog,
8
- LayerProvider,
9
- Stack,
10
- Text,
11
- } from '@sanity/ui'
12
- import {useBoolean, useSelect, useText} from '@sanity/ui-workshop'
13
- import {useCallback, useRef, useState} from 'react'
14
-
15
- export default function PropsStory(): React.JSX.Element {
16
- const animate = useBoolean('Animate', false)
17
- const header = useText('Header', 'Props example')
18
- const onClickOutside = useBoolean('Close when click outside', false)
19
- const hideCloseButton = useBoolean('Hide close button', false)
20
- const scheme = useSelect('Scheme', [undefined, ...COLOR_SCHEMES])
21
- const tone = useSelect('Tone', [undefined, ...CARD_TONES])
22
- const width = useSelect('Width', CONTAINER)
23
- const [open, setOpen] = useState(false)
24
- const buttonRef = useRef<HTMLButtonElement | null>(null)
25
-
26
- const handleClose = useCallback(() => {
27
- setOpen(false)
28
- buttonRef.current?.focus()
29
- }, [])
30
-
31
- return (
32
- <LayerProvider>
33
- <Box padding={[4, 5, 6]}>
34
- <Button
35
- ref={buttonRef}
36
- id="open-dialog-button"
37
- text="Open dialog"
38
- onClick={() => setOpen(true)}
39
- />
40
-
41
- {open && (
42
- <Dialog
43
- __unstable_hideCloseButton={hideCloseButton}
44
- animate={animate}
45
- header={header}
46
- id="dialog"
47
- open={open}
48
- scheme={scheme}
49
- tone={tone}
50
- width={width}
51
- onClickOutside={onClickOutside ? handleClose : undefined}
52
- onClose={handleClose}
53
- >
54
- <Box padding={4}>
55
- <Stack gap={4}>
56
- <Text muted size={1}>
57
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et orci vitae diam
58
- aliquet imperdiet.
59
- </Text>
60
- <Button id="button-1" mode="ghost" text="Focus test" />
61
- <Text muted size={1}>
62
- Sed in hendrerit metus. Sed sapien neque, imperdiet eu justo sed, vestibulum
63
- mollis dolor.
64
- </Text>
65
- <Button id="button-2" mode="ghost" text="Focus test" />
66
- <Text muted size={1}>
67
- Nulla sit amet ipsum ligula. Duis sit amet velit tempor, ultricies mauris
68
- dignissim, mollis enim.
69
- </Text>
70
- <Button id="button-3" mode="ghost" text="Focus test" />
71
- <Text muted size={1}>
72
- Cras quis elit non mauris faucibus molestie non non augue.{' '}
73
- </Text>
74
- <Text muted size={1}>
75
- Proin suscipit gravida sodales. Morbi vel purus molestie, rhoncus augue sit amet,
76
- auctor justo.
77
- </Text>
78
- <Button id="button-4" mode="ghost" text="Focus test" />
79
- <Text muted size={1}>
80
- Proin lobortis nunc a tellus condimentum, a ultrices arcu egestas.
81
- </Text>
82
- <Button id="button-5" mode="ghost" text="Focus test" />
83
- <Text muted size={1}>
84
- Suspendisse augue nibh, euismod sit amet sapien nec, molestie dignissim magna.
85
- </Text>
86
- </Stack>
87
- </Box>
88
- </Dialog>
89
- )}
90
- </Box>
91
- </LayerProvider>
92
- )
93
- }
@@ -1,11 +0,0 @@
1
- import {Dialog, DialogProvider} from '@sanity/ui'
2
-
3
- export default function ProviderStory(): React.JSX.Element {
4
- return (
5
- <DialogProvider position="absolute" zOffset={1000}>
6
- <Dialog header="Outer" id="provider-example">
7
- <Dialog header="Inner" id="nested-provider-example" />
8
- </Dialog>
9
- </DialogProvider>
10
- )
11
- }
@@ -1,76 +0,0 @@
1
- import {Box, Button, Dialog, type DialogProps, LayerProvider, useLayer} from '@sanity/ui'
2
- import {type ReactNode, useCallback, useEffect, useRef, useState} from 'react'
3
-
4
- export default function WrappedStory(): React.JSX.Element {
5
- return (
6
- <LayerProvider zOffset={100}>
7
- <Box padding={4}>
8
- <DialogButton level={0} />
9
- </Box>
10
- </LayerProvider>
11
- )
12
- }
13
-
14
- function DialogButton(props: {level: number}) {
15
- const {level} = props
16
- const [open, setOpen] = useState(false)
17
-
18
- const openRef = useRef(open)
19
- const buttonRef = useRef<HTMLButtonElement>(null)
20
-
21
- useEffect(() => {
22
- if (openRef.current !== open) {
23
- openRef.current = open
24
-
25
- if (!open) {
26
- // focus the button that opened the dialog
27
- // buttonRef.current?.focus()
28
- }
29
- }
30
- }, [open])
31
-
32
- return (
33
- <>
34
- <Button ref={buttonRef} text={`Open dialog ${level + 1}`} onClick={() => setOpen(true)} />
35
-
36
- {open && (
37
- <WrappedDialog
38
- header={`WrappedDialog ${level + 1}`}
39
- id={`wrapped-${level + 1}`}
40
- onClickOutside={() => setOpen(false)}
41
- onClose={() => setOpen(false)}
42
- >
43
- <Box padding={4}>
44
- <DialogButton level={level + 1} />
45
- </Box>
46
- </WrappedDialog>
47
- )}
48
- </>
49
- )
50
- }
51
-
52
- function WrappedDialog(props: DialogProps & {children?: ReactNode}) {
53
- const layer = useLayer()
54
- const isTopLayer = layer.size === 1
55
-
56
- const dialogRef = useRef<HTMLDivElement>(null)
57
-
58
- const [lastFocusedElement, setLastFocusedElement] = useState<HTMLElement | null>(null)
59
-
60
- const handleContentFocus = useCallback(() => {
61
- const containsActiveElement = dialogRef.current?.contains(document.activeElement)
62
-
63
- if (containsActiveElement) {
64
- setLastFocusedElement(document.activeElement as HTMLElement)
65
- }
66
- }, [])
67
-
68
- // Set focus on the last focused element when the dialog becomes the top layer.
69
- useEffect(() => {
70
- if (isTopLayer && lastFocusedElement) {
71
- lastFocusedElement.focus()
72
- }
73
- }, [isTopLayer, lastFocusedElement])
74
-
75
- return <Dialog {...props} ref={dialogRef} data-size={layer.size} onFocus={handleContentFocus} />
76
- }
@@ -1,21 +0,0 @@
1
- import type {WorkshopScope} from '@sanity/ui-workshop'
2
- import {lazy} from 'react'
3
-
4
- const scope: WorkshopScope = {
5
- name: 'components/dialog',
6
- title: 'Dialog',
7
- stories: [
8
- {name: 'props', title: 'Props', component: lazy(() => import('./Props'))},
9
- {name: 'nested', title: 'Nested', component: lazy(() => import('./Nested'))},
10
- {name: 'on-scroll', title: 'On scroll', component: lazy(() => import('./OnScroll'))},
11
- {name: 'layering', title: 'Layering', component: lazy(() => import('./Layering'))},
12
- {name: 'position', title: 'Position', component: lazy(() => import('./Position'))},
13
- {name: 'provider', title: 'Provider', component: lazy(() => import('./Provider'))},
14
- {name: 'auto-focus', title: 'AutoFocus', component: lazy(() => import('./AutoFocus'))},
15
- {name: 'panes', title: 'Panes', component: lazy(() => import('./Panes'))},
16
- {name: 'activate', title: 'Activate', component: lazy(() => import('./Activate'))},
17
- {name: 'wrapped', title: 'Wrapped', component: lazy(() => import('./Wrapped'))},
18
- ],
19
- }
20
-
21
- export default scope
@@ -1,14 +0,0 @@
1
- import {containsOrEqualsElement} from '../../core/helpers/element'
2
-
3
- export function isTargetWithinScope(
4
- boundaryElement: HTMLElement | null,
5
- portalElement: HTMLElement | null,
6
- target: Node,
7
- ): boolean {
8
- if (!boundaryElement || !portalElement) return true
9
-
10
- return (
11
- containsOrEqualsElement(boundaryElement, target) ||
12
- containsOrEqualsElement(portalElement, target)
13
- )
14
- }
@@ -1,2 +0,0 @@
1
- /** @public */
2
- export type DialogPosition = 'absolute' | 'fixed'
@@ -1,11 +0,0 @@
1
- import {use} from 'react'
2
-
3
- import {DialogContext, type DialogContextValue} from './DialogContext'
4
-
5
- /**
6
- * This API might change. DO NOT USE IN PRODUCTION.
7
- * @beta
8
- */
9
- export function useDialog(): DialogContextValue {
10
- return use(DialogContext)
11
- }
@@ -1,70 +0,0 @@
1
- import {
2
- type GapStyleProps,
3
- hotkeys,
4
- HOTKEYS_STYLE_PROP_KEYS,
5
- type RadiusStyleProps,
6
- } from '@sanity/ui-css'
7
-
8
- import {_splitKeys} from '../../core/_keys'
9
- import type {ComponentType, Props} from '../../core/types'
10
- import {KBD} from '../../primitives/kbd/Kbd'
11
-
12
- /** @public */
13
- export const DEFAULT_HOTKEYS_ELEMENT = 'kbd'
14
-
15
- /** @public */
16
- export interface HotkeysOwnProps extends GapStyleProps, RadiusStyleProps {
17
- /** @deprecated No longer supported. */
18
- fontSize?: never
19
- /** @deprecated No longer supported. */
20
- padding?: never
21
- keys: string[]
22
- }
23
-
24
- /** @public */
25
- export type HotkeysElementType = 'kbd' | ComponentType
26
-
27
- /** @public */
28
- export type HotkeysProps<E extends HotkeysElementType = HotkeysElementType> = Props<
29
- HotkeysOwnProps,
30
- E
31
- >
32
-
33
- /**
34
- * Represent hotkeys (a keyboard combination) with semantic `<kbd>` elements.
35
- *
36
- * @example
37
- * ```tsx
38
- * import {Hotkeys} from '@sanity/ui'
39
- *
40
- * <Hotkeys keys={['⌘', 'K']} />
41
- * ```
42
- *
43
- * @public
44
- */
45
- export function Hotkeys<E extends HotkeysElementType = typeof DEFAULT_HOTKEYS_ELEMENT>(
46
- props: HotkeysProps<E>,
47
- ): React.JSX.Element | undefined {
48
- const [
49
- styleProps,
50
- {
51
- as: Element = DEFAULT_HOTKEYS_ELEMENT,
52
- fontSize: _fontSize,
53
- keys,
54
- // split DOM props
55
- ...domProps
56
- },
57
- ] = _splitKeys(props as HotkeysProps<typeof DEFAULT_HOTKEYS_ELEMENT>, HOTKEYS_STYLE_PROP_KEYS)
58
-
59
- if (!keys || keys.length === 0) {
60
- return undefined
61
- }
62
-
63
- return (
64
- <Element data-ui="Hotkeys" {...domProps} className={hotkeys(styleProps)}>
65
- {keys.map((key, i) => (
66
- <KBD key={i}>{key}</KBD>
67
- ))}
68
- </Element>
69
- )
70
- }
@@ -1,9 +0,0 @@
1
- import {Flex, Hotkeys} from '@sanity/ui'
2
-
3
- export default function PlainStory(): React.JSX.Element {
4
- return (
5
- <Flex align="center" height="fill" justify="center">
6
- <Hotkeys keys={['Ctrl', 'Shift', 'P']} />
7
- </Flex>
8
- )
9
- }
@@ -1,16 +0,0 @@
1
- import type {WorkshopScope} from '@sanity/ui-workshop'
2
- import {lazy} from 'react'
3
-
4
- const scope: WorkshopScope = {
5
- name: 'components/hotkeys',
6
- title: 'Hotkeys',
7
- stories: [
8
- {
9
- name: 'plain',
10
- title: 'Plain',
11
- component: lazy(() => import('./Plain')),
12
- },
13
- ],
14
- }
15
-
16
- export default scope
@@ -1,125 +0,0 @@
1
- /* eslint-disable no-console */
2
-
3
- import {type MouseEvent, useCallback, useMemo} from 'react'
4
- import {describe, expect, it, vi} from 'vitest'
5
-
6
- import {render} from '$test/utils'
7
-
8
- import {MenuContext, type MenuContextValue} from './MenuContext'
9
- import {useMenu} from './useMenu'
10
-
11
- describe('components/menu', () => {
12
- describe('useMenu', () => {
13
- it('should get context value', async () => {
14
- const log = vi.fn()
15
-
16
- function Debug() {
17
- const rootMenu = useMenu()
18
-
19
- log(rootMenu)
20
-
21
- return <>debug</>
22
- }
23
-
24
- function Root() {
25
- const handleItemMouseEnter = useCallback(
26
- (event: MouseEvent<HTMLElement>) => console.log(event),
27
- [],
28
- )
29
-
30
- const handleItemMouseLeave = useCallback(
31
- (event: MouseEvent<HTMLElement>) => console.log(event),
32
- [],
33
- )
34
-
35
- const value: MenuContextValue = useMemo(
36
- () => ({
37
- version: 2,
38
- activeElement: null,
39
- mount: (element: HTMLElement | null) => () => console.log(element),
40
- onItemClick: () => undefined,
41
- onItemMouseEnter: handleItemMouseEnter,
42
- onItemMouseLeave: handleItemMouseLeave,
43
- }),
44
- [handleItemMouseEnter, handleItemMouseLeave],
45
- )
46
-
47
- return (
48
- <MenuContext value={value}>
49
- <Debug />
50
- </MenuContext>
51
- )
52
- }
53
-
54
- render(<Root />)
55
-
56
- const contextValue = log.mock.calls[0][0]
57
-
58
- expect(contextValue.version).toBe(2)
59
- expect(typeof contextValue.mount).toBe('function')
60
- expect(typeof contextValue.onItemClick).toBe('function')
61
- expect(typeof contextValue.onItemMouseEnter).toBe('function')
62
- expect(typeof contextValue.onItemMouseEnter).toBe('function')
63
- })
64
-
65
- it('should fail when no context value is provided', async () => {
66
- const log = vi.fn()
67
-
68
- function Debug() {
69
- try {
70
- useMenu()
71
- } catch (err) {
72
- log(err)
73
- }
74
-
75
- return null
76
- }
77
-
78
- function Root() {
79
- return (
80
- <MenuContext
81
- // @ts-expect-error - we want to test the error case
82
- value={undefined}
83
- >
84
- <Debug />
85
- </MenuContext>
86
- )
87
- }
88
-
89
- render(<Root />)
90
-
91
- expect(log.mock.calls[0][0].message).toEqual('useMenu(): missing context value')
92
- })
93
-
94
- it('should fail when context value is not compatible', async () => {
95
- const log = vi.fn()
96
-
97
- function Debug() {
98
- try {
99
- useMenu()
100
- } catch (err) {
101
- log(err)
102
- }
103
-
104
- return null
105
- }
106
-
107
- function Root() {
108
- // NOTE: we’re testing this because the context value may be a function in the future
109
-
110
- return (
111
- <MenuContext
112
- // @ts-expect-error - we want to test the error case
113
- value={() => ({version: 1})}
114
- >
115
- <Debug />
116
- </MenuContext>
117
- )
118
- }
119
-
120
- render(<Root />)
121
-
122
- expect(log.mock.calls[0][0].message).toEqual('useMenu(): the context value is not compatible')
123
- })
124
- })
125
- })