@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,28 +0,0 @@
1
- import type {Placement} from '../../core/types'
2
-
3
- /**
4
- * @internal
5
- */
6
- export const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS: string[] = [
7
- 'Control',
8
- 'Shift',
9
- 'Alt',
10
- 'Enter',
11
- 'Home',
12
- 'End',
13
- 'PageUp',
14
- 'PageDown',
15
- 'Meta',
16
- 'Tab',
17
- 'CapsLock',
18
- ]
19
-
20
- /**
21
- * @internal
22
- */
23
- export const AUTOCOMPLETE_POPOVER_PLACEMENT: Placement = 'bottom-start'
24
-
25
- /**
26
- * @internal
27
- */
28
- export const AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['bottom-start', 'top-start']
@@ -1,103 +0,0 @@
1
- import type {ButtonProps} from '../../primitives/button/Button'
2
-
3
- /** @public */
4
- export type AutocompleteOpenButtonProps = Omit<ButtonProps<'button'>, 'as'>
5
-
6
- /** @public */
7
- export interface BaseAutocompleteOption {
8
- value: string
9
- }
10
-
11
- /**
12
- * @internal
13
- */
14
- export interface AutocompleteState {
15
- activeValue: string | null
16
- focused: boolean
17
- listFocused: boolean
18
- query: string | null
19
- value: string | null
20
- }
21
-
22
- /**
23
- * @internal
24
- */
25
- export interface AutocompleteRootBlurMsg {
26
- type: 'root/blur'
27
- }
28
-
29
- /**
30
- * @internal
31
- */
32
- export interface AutocompleteRootClearMsg {
33
- type: 'root/clear'
34
- }
35
-
36
- /**
37
- * @internal
38
- */
39
- export interface AutocompleteRootEscapeMsg {
40
- type: 'root/escape'
41
- }
42
-
43
- /**
44
- * @internal
45
- */
46
- export interface AutocompleteRootOpenMsg {
47
- type: 'root/open'
48
- query: string | null
49
- }
50
-
51
- /**
52
- * @internal
53
- */
54
- export interface AutocompleteRootSetActiveValueMsg {
55
- type: 'root/setActiveValue'
56
- value: string
57
- listFocused?: boolean
58
- }
59
-
60
- /**
61
- * @internal
62
- */
63
- export interface AutocompleteRootSetListFocusedMsg {
64
- type: 'root/setListFocused'
65
- listFocused: boolean
66
- }
67
-
68
- /**
69
- * @internal
70
- */
71
- export interface AutocompleteInputChangeMsg {
72
- type: 'input/change'
73
- query: string | null
74
- }
75
-
76
- /**
77
- * @internal
78
- */
79
- export interface AutocompleteInputFoocusMsg {
80
- type: 'input/focus'
81
- }
82
-
83
- /**
84
- * @internal
85
- */
86
- export interface AutocompleteValueChangeMsg {
87
- type: 'value/change'
88
- value: string | null
89
- }
90
-
91
- /**
92
- * @internal
93
- */
94
- export type AutocompleteMsg =
95
- | AutocompleteRootBlurMsg
96
- | AutocompleteRootClearMsg
97
- | AutocompleteRootEscapeMsg
98
- | AutocompleteRootOpenMsg
99
- | AutocompleteRootSetActiveValueMsg
100
- | AutocompleteRootSetListFocusedMsg
101
- | AutocompleteInputChangeMsg
102
- | AutocompleteInputFoocusMsg
103
- | AutocompleteValueChangeMsg
@@ -1,163 +0,0 @@
1
- import {type GapStyleProps} from '@sanity/ui-css'
2
- import {
3
- Children,
4
- Fragment,
5
- isValidElement,
6
- type ReactNode,
7
- useCallback,
8
- useMemo,
9
- useRef,
10
- useState,
11
- } from 'react'
12
-
13
- import type {ComponentType, Props} from '../../core/types'
14
- import {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'
15
- import {Box} from '../../primitives/box/Box'
16
- import {Button, type ButtonProps} from '../../primitives/button/Button'
17
- import {Flex} from '../../primitives/flex/Flex'
18
- import {Popover, type PopoverProps} from '../../primitives/popover/Popover'
19
- import {Stack} from '../../primitives/stack/Stack'
20
- import {Text} from '../../primitives/text/Text'
21
-
22
- /** @beta */
23
- export const DEFAULT_BREADCRUMBS_ELEMENT = 'nav'
24
-
25
- /** @beta */
26
- export type BreadcrumbsOwnProps = GapStyleProps & {
27
- expandButton?: Omit<ButtonProps, 'as' | 'onClick' | 'selected'>
28
- maxLength?: number
29
- popover?: PopoverProps
30
- separator?: ReactNode
31
- }
32
-
33
- /** @beta */
34
- export type BreadcrumbsElementType = 'div' | 'nav' | ComponentType
35
-
36
- /** @beta */
37
- export type BreadcrumbsProps<E extends BreadcrumbsElementType = BreadcrumbsElementType> = Props<
38
- BreadcrumbsOwnProps,
39
- E
40
- >
41
-
42
- /** @beta */
43
- export function Breadcrumbs<E extends BreadcrumbsElementType = typeof DEFAULT_BREADCRUMBS_ELEMENT>(
44
- props: BreadcrumbsProps<E>,
45
- ): React.JSX.Element {
46
- const {
47
- as = DEFAULT_BREADCRUMBS_ELEMENT,
48
- children,
49
- expandButton: expandButtonProps,
50
- gap = 2,
51
- gapX = gap,
52
- gapY = gap,
53
- maxLength,
54
- popover: popoverProps,
55
- separator,
56
- ...rest
57
- } = props as BreadcrumbsProps<typeof DEFAULT_BREADCRUMBS_ELEMENT>
58
-
59
- const [open, setOpen] = useState(false)
60
- const expandElementRef = useRef<HTMLButtonElement | null>(null)
61
- const popoverElementRef = useRef<HTMLDivElement | null>(null)
62
-
63
- const collapse = useCallback(() => setOpen(false), [])
64
- const expand = useCallback(() => setOpen(true), [])
65
-
66
- useClickOutsideEvent(collapse, () => [expandElementRef.current, popoverElementRef.current])
67
-
68
- const rawItems = useMemo(() => Children.toArray(children).filter(isValidElement), [children])
69
-
70
- const items = useItems({
71
- collapse,
72
- expand,
73
- expandElementRef,
74
- maxLength,
75
- open,
76
- popoverElementRef,
77
- popoverProps,
78
- rawItems,
79
- gapY,
80
- expandButtonProps,
81
- })
82
-
83
- return (
84
- <Flex as={as} data-ui="Breadcrumbs" {...rest} gap={gap} gapX={gapX} gapY={gapY} wrap="wrap">
85
- {items.map((item, itemIndex) => (
86
- <Fragment key={itemIndex}>
87
- {itemIndex > 0 && (
88
- <Box aria-hidden as="li" flex="none">
89
- {separator || <Text muted>/</Text>}
90
- </Box>
91
- )}
92
- <Box as="li" flex="none">
93
- {item}
94
- </Box>
95
- </Fragment>
96
- ))}
97
- </Flex>
98
- )
99
- }
100
-
101
- function useItems({
102
- collapse,
103
- expand,
104
- expandElementRef,
105
- maxLength,
106
- open,
107
- popoverElementRef,
108
- popoverProps,
109
- rawItems,
110
- gapY,
111
- expandButtonProps,
112
- }: {
113
- collapse: () => void
114
- expand: () => void
115
- expandElementRef: React.RefObject<HTMLButtonElement | null>
116
- maxLength: number | undefined
117
- open: boolean
118
- popoverElementRef: React.RefObject<HTMLDivElement | null>
119
- popoverProps?: PopoverProps
120
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
- rawItems: React.ReactElement<unknown, string | React.JSXElementConstructor<any>>[]
122
- gapY: NonNullable<GapStyleProps['gapY']>
123
- expandButtonProps: BreadcrumbsOwnProps['expandButton']
124
- }): React.JSX.Element[] {
125
- const len = rawItems.length
126
-
127
- if (maxLength && len > maxLength) {
128
- const beforeLength = Math.ceil(maxLength / 2)
129
- const afterLength = Math.floor(maxLength / 2)
130
-
131
- return [
132
- ...rawItems.slice(0, beforeLength - 1),
133
- <Popover
134
- key="button"
135
- constrainSize
136
- open={open}
137
- padding={2}
138
- placement="top"
139
- portal
140
- {...popoverProps}
141
- ref={popoverElementRef}
142
- content={
143
- <Stack as="ol" gap={gapY} overflow="auto">
144
- {rawItems.slice(beforeLength - 1, len - afterLength)}
145
- </Stack>
146
- }
147
- >
148
- <Button
149
- mode="bleed"
150
- padding={0}
151
- text="…"
152
- {...expandButtonProps}
153
- ref={expandElementRef}
154
- selected={open}
155
- onClick={open ? collapse : expand}
156
- />
157
- </Popover>,
158
- ...rawItems.slice(len - afterLength),
159
- ]
160
- }
161
-
162
- return rawItems
163
- }
@@ -1,48 +0,0 @@
1
- import {EllipsisHorizontalIcon} from '@sanity/icons'
2
- import {Box, Breadcrumbs, Button, Flex, SPACE, Text} from '@sanity/ui'
3
- import {useSelect} from '@sanity/ui-workshop'
4
-
5
- import {CardWrapper} from '$workshop'
6
-
7
- const items = ['List 1', 'List 2', 'List 3', 'List 4', 'List 5', 'List 6', 'List 7']
8
-
9
- const MAX_LENGTH_OPTIONS = [undefined, ...items.map((_, index) => index + 1)]
10
-
11
- export default function ExampleStory(): React.JSX.Element {
12
- const maxLength = useSelect('Max. length', MAX_LENGTH_OPTIONS)
13
- const gap = useSelect('Gap', [undefined, ...SPACE])
14
-
15
- return (
16
- <CardWrapper>
17
- <Flex align="center" height="fill" justify="center">
18
- <Breadcrumbs
19
- expandButton={{
20
- icon: EllipsisHorizontalIcon,
21
- padding: 2,
22
- text: undefined,
23
- }}
24
- gap={gap}
25
- maxLength={maxLength}
26
- popover={{
27
- display: 'flex',
28
- flexDirection: 'column',
29
- gap: 1,
30
- padding: 1,
31
- placement: 'bottom',
32
- }}
33
- separator={
34
- <Box paddingY={2}>
35
- <Text muted size={1} style={{opacity: 0.5}}>
36
- /
37
- </Text>
38
- </Box>
39
- }
40
- >
41
- {items.map((item) => (
42
- <Button key={item} mode="bleed" padding={2} text={item} />
43
- ))}
44
- </Breadcrumbs>
45
- </Flex>
46
- </CardWrapper>
47
- )
48
- }
@@ -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/breadcrumbs',
6
- title: 'Breadcrumbs',
7
- stories: [
8
- {
9
- name: 'example',
10
- title: 'Example',
11
- component: lazy(() => import('./Example')),
12
- },
13
- ],
14
- }
15
-
16
- export default scope
@@ -1,230 +0,0 @@
1
- import {
2
- type ContainerStyleProps,
3
- dialog,
4
- dialog_container,
5
- type ResponsiveProp,
6
- } from '@sanity/ui-css'
7
- import type {Radius, Shadow} from '@sanity/ui-tokens'
8
- import {type FocusEvent, type ForwardedRef, type ReactNode, use, useCallback, useRef} from 'react'
9
-
10
- import {Z_OFFSETS} from '../../core/constants'
11
- import {isHTMLElement} from '../../core/helpers/element'
12
- import {focusFirstDescendant, focusLastDescendant} from '../../core/helpers/focus'
13
- import type {ComponentType, Props} from '../../core/types'
14
- import {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'
15
- import {Container} from '../../primitives/container/Container'
16
- import {Layer, type LayerOwnProps, type LayerProps} from '../../primitives/layer/Layer'
17
- import {BoundaryElementContext} from '../../utils/boundaryElement/BoundaryElementContext'
18
- import {Portal} from '../../utils/portal/Portal'
19
- import {usePortal} from '../../utils/portal/usePortal'
20
- import {DialogCard} from './DialogCard'
21
- import {isTargetWithinScope} from './isTargetWithinScope'
22
- import type {DialogPosition} from './types'
23
- import {useDialog} from './useDialog'
24
-
25
- /** @public */
26
- export const DEFAULT_DIALOG_ELEMENT = 'div'
27
-
28
- /** @public */
29
- export interface DialogOwnProps
30
- extends
31
- Omit<ContainerStyleProps, 'id' | 'position' | 'radius' | 'shadow'>,
32
- Omit<LayerOwnProps, 'id' | 'position' | 'radius' | 'shadow' | 'width'> {
33
- /**
34
- * @beta
35
- */
36
- __unstable_autoFocus?: boolean
37
- /**
38
- * @beta
39
- */
40
- __unstable_hideCloseButton?: boolean
41
- /**
42
- * Whether the dialog should animate in on mount.
43
- *
44
- * @beta
45
- * @defaultValue false
46
- */
47
- animate?: boolean
48
- cardRadius?: ResponsiveProp<Radius>
49
- contentRef?: ForwardedRef<HTMLDivElement>
50
- footer?: ReactNode
51
- header?: ReactNode
52
- id: string
53
- /** A callback that fires when the dialog becomes the top layer when it was not the top layer before. */
54
- onActivate?: LayerProps['onActivate']
55
- onClickOutside?: () => void
56
- onClose?: () => void
57
- open?: boolean
58
- portal?: string
59
- position?: ResponsiveProp<DialogPosition>
60
- /**
61
- * @deprecated Not in use – will be removed in the next major version.
62
- */
63
- shadow?: ResponsiveProp<Shadow>
64
- }
65
-
66
- /** @public */
67
- export type DialogElementType = 'div' | 'span' | ComponentType
68
-
69
- /** @public */
70
- export type DialogProps<E extends DialogElementType = DialogElementType> = Props<DialogOwnProps, E>
71
-
72
- /**
73
- * The Dialog component.
74
- *
75
- * @public
76
- */
77
- export function Dialog<E extends DialogElementType = typeof DEFAULT_DIALOG_ELEMENT>(
78
- props: DialogProps<E>,
79
- ): React.JSX.Element {
80
- const context = useDialog()
81
- const {
82
- __unstable_autoFocus: autoFocus = true,
83
- __unstable_hideCloseButton: hideCloseButton = false,
84
- animate: _animate = true,
85
- cardRadius = 5,
86
- children,
87
- className,
88
- contentRef,
89
- footer,
90
- header,
91
- id,
92
- onActivate,
93
- onClickOutside,
94
- onClose,
95
- onFocus,
96
- padding = 3,
97
- portal: portalProp,
98
- position: _positionProp,
99
- // Remove `shadow` prop in next major version
100
- shadow: _shadow,
101
- width = 0,
102
- zOffset: _zOffsetProp,
103
- ...rest
104
- } = props as DialogProps<typeof DEFAULT_DIALOG_ELEMENT>
105
-
106
- const position = _positionProp ?? context.position ?? 'fixed'
107
- const zOffset = _zOffsetProp ?? context.zOffset ?? Z_OFFSETS.dialog
108
- const prefersReducedMotion = usePrefersReducedMotion()
109
- const animate = prefersReducedMotion ? false : _animate
110
- const portal = usePortal()
111
- const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element
112
- const boundaryElement = use(BoundaryElementContext)
113
-
114
- const preDivRef = useRef<HTMLDivElement | null>(null)
115
- const postDivRef = useRef<HTMLDivElement | null>(null)
116
- const cardRef = useRef<HTMLDivElement | null>(null)
117
- const focusedElementRef = useRef<HTMLElement | null>(null)
118
-
119
- const handleFocus = useCallback(
120
- (event: FocusEvent<HTMLDivElement>) => {
121
- onFocus?.(event)
122
-
123
- const target = event.target
124
- const cardElement = cardRef.current
125
-
126
- if (cardElement && target === preDivRef.current) {
127
- focusLastDescendant(cardElement)
128
-
129
- return
130
- }
131
-
132
- if (cardElement && target === postDivRef.current) {
133
- focusFirstDescendant(cardElement)
134
-
135
- return
136
- }
137
-
138
- if (isHTMLElement(event.target)) {
139
- focusedElementRef.current = event.target
140
- }
141
- },
142
- [onFocus],
143
- )
144
-
145
- const labelId = `${id}_label`
146
-
147
- const rootClickTimeoutRef = useRef<NodeJS.Timeout>(undefined)
148
-
149
- // If the resulting active element (a.k.a. focused element) is not withing scope when clicking
150
- // within the dialog, then we want to focus the previously interactive element in the dialog instead.
151
- // This is to allow the user to tab or close the dialog by pressing escape.
152
- const handleRootClick = useCallback(() => {
153
- if (rootClickTimeoutRef.current) {
154
- clearTimeout(rootClickTimeoutRef.current)
155
- }
156
-
157
- rootClickTimeoutRef.current = setTimeout(() => {
158
- const activeElement = document.activeElement
159
-
160
- if (activeElement && !isTargetWithinScope(boundaryElement, portalElement, activeElement)) {
161
- const target = focusedElementRef.current
162
-
163
- if (!target || !document.body.contains(target)) {
164
- // No previously focused element, or it's not in the document anymore
165
- const cardElement = cardRef.current
166
- if (cardElement) focusFirstDescendant(cardElement)
167
-
168
- return
169
- }
170
-
171
- target.focus()
172
- }
173
- }, 0)
174
- }, [boundaryElement, portalElement])
175
-
176
- return (
177
- <Portal __unstable_name={portalProp}>
178
- <Layer
179
- data-ui="Dialog"
180
- {...rest}
181
- aria-labelledby={labelId}
182
- aria-modal
183
- className={dialog({className})}
184
- data-animate={animate ? '' : undefined}
185
- display="flex"
186
- id={id}
187
- inset={0}
188
- padding={padding}
189
- position={position}
190
- role="dialog"
191
- zOffset={zOffset}
192
- onActivate={onActivate}
193
- onClick={handleRootClick}
194
- onFocus={handleFocus}
195
- >
196
- {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}
197
- <div ref={preDivRef} tabIndex={0} />
198
- <Container
199
- alignItems="center"
200
- className={dialog_container()}
201
- data-ui="DialogCard"
202
- display="flex"
203
- flexDirection="column"
204
- justifyContent="center"
205
- width={width}
206
- >
207
- <DialogCard
208
- ref={cardRef}
209
- __unstable_autoFocus={autoFocus}
210
- __unstable_hideCloseButton={hideCloseButton}
211
- contentRef={contentRef}
212
- footer={footer}
213
- header={header}
214
- id={id}
215
- portal={portalProp}
216
- radius={cardRadius}
217
- shadow={4}
218
- width={width}
219
- onClickOutside={onClickOutside}
220
- onClose={onClose}
221
- >
222
- {children}
223
- </DialogCard>
224
- </Container>
225
- {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}
226
- <div ref={postDivRef} tabIndex={0} />
227
- </Layer>
228
- </Portal>
229
- )
230
- }