@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,496 +0,0 @@
1
- import {act, fireEvent, screen} from '@testing-library/react'
2
- import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest'
3
-
4
- import {render} from '$test/utils'
5
-
6
- import {Button} from '../button/Button'
7
- import {Tooltip} from './Tooltip'
8
- import {TooltipDelayGroupProvider} from './tooltipDelayGroup/TooltipDelayGroupProvider'
9
-
10
- async function advance(ms: number) {
11
- await act(async () => {
12
- vi.advanceTimersByTime(ms)
13
- })
14
- }
15
-
16
- async function flushAll() {
17
- await act(async () => {
18
- await vi.runAllTimersAsync()
19
- })
20
- }
21
-
22
- // Fake timers
23
- beforeEach(() => {
24
- vi.useFakeTimers()
25
- })
26
-
27
- // Running all pending timers and switching to real timers
28
- afterEach(() => {
29
- vi.runOnlyPendingTimers()
30
- vi.useRealTimers()
31
- })
32
-
33
- describe('Tooltip', () => {
34
- describe('Using same delay for open and close', () => {
35
- it('should hide and show the tooltip content when hovered, with no delay', () => {
36
- render(
37
- <Tooltip animate={false} delay={0} placement={'top'} text="Tooltip content">
38
- <Button mode="bleed" text="Hover me" />
39
- </Tooltip>,
40
- )
41
-
42
- const button = screen.getByText('Hover me')
43
-
44
- // Validate tooltip content is not rendered
45
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
46
-
47
- fireEvent.mouseEnter(button)
48
-
49
- // With delay=0, advance timers to show tooltip
50
- act(() => vi.advanceTimersByTime(1))
51
- expect(screen.getByText('Tooltip content')).toBeInTheDocument()
52
-
53
- fireEvent.mouseLeave(button)
54
-
55
- // Advance timers to hide tooltip
56
- act(() => vi.advanceTimersByTime(1))
57
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
58
- })
59
- it('should support delays to show and hide the tooltip.', () => {
60
- vi.useFakeTimers()
61
- const delay = 200
62
-
63
- render(
64
- <Tooltip animate={false} delay={delay} placement={'top'} text="Tooltip content">
65
- <Button mode="bleed" text="Hover me" />
66
- </Tooltip>,
67
- )
68
-
69
- const button = screen.getByText('Hover me')
70
-
71
- // Validate tooltip content is not rendered
72
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
73
-
74
- fireEvent.mouseEnter(button)
75
-
76
- act(() => vi.advanceTimersByTime(delay / 2))
77
- // Content should not be rendered yet
78
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
79
- act(() => vi.advanceTimersByTime(delay / 2))
80
-
81
- // Validate tooltip content is rendered
82
- screen.getByText('Tooltip content')
83
-
84
- fireEvent.mouseLeave(button)
85
- // Validate tooltip content is still showing.
86
- screen.getByText('Tooltip content')
87
- act(() => vi.advanceTimersByTime(delay))
88
- // Validate tooltip content is not rendered anymore
89
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
90
- })
91
- it('should support different open and close delays to show and hide the tooltip.', () => {
92
- vi.useFakeTimers()
93
- const openDelay = 200
94
- const closeDelay = 150
95
-
96
- render(
97
- <Tooltip
98
- animate={false}
99
- delay={{
100
- open: openDelay,
101
- close: closeDelay,
102
- }}
103
- placement={'top'}
104
- text="Tooltip content"
105
- >
106
- <Button mode="bleed" text="Hover me" />
107
- </Tooltip>,
108
- )
109
-
110
- const button = screen.getByText('Hover me')
111
-
112
- // Validate tooltip content is not rendered
113
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
114
-
115
- fireEvent.mouseEnter(button)
116
-
117
- act(() => vi.advanceTimersByTime(openDelay / 2))
118
- // Content should not be rendered yet
119
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
120
- act(() => vi.advanceTimersByTime(openDelay / 2))
121
-
122
- // Validate tooltip content is rendered
123
- screen.getByText('Tooltip content')
124
-
125
- fireEvent.mouseLeave(button)
126
- // Validate tooltip content is still showing.
127
- screen.getByText('Tooltip content')
128
- act(() => vi.advanceTimersByTime(closeDelay))
129
- // Validate tooltip content is not rendered anymore
130
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
131
- })
132
- })
133
-
134
- describe('Using the <TooltipDelayGroupProvider />', () => {
135
- it('should support groups with the same delay to open and close.', async () => {
136
- const delay = 150
137
-
138
- vi.useFakeTimers()
139
- render(
140
- <TooltipDelayGroupProvider delay={delay}>
141
- <Tooltip animate={false} delay={400} placement={'top'} text="Tooltip 1">
142
- <Button mode="bleed" text="Button 1" />
143
- </Tooltip>
144
- <Tooltip
145
- animate={false}
146
- delay={400} // This should be overridden by the group delay
147
- placement={'top'}
148
- text="Tooltip 2"
149
- >
150
- <Button mode="bleed" text="Button 2" />
151
- </Tooltip>
152
- </TooltipDelayGroupProvider>,
153
- )
154
-
155
- const button1 = screen.getByText('Button 1')
156
- const button2 = screen.getByText('Button 2')
157
-
158
- // Validate tooltip content is not rendered
159
- expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
160
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
161
-
162
- // Hovers on first button, it should show first tooltip only
163
- fireEvent.mouseEnter(button1)
164
- act(() => vi.advanceTimersByTime(delay / 2))
165
- // Content should not be rendered yet, we have a delay of 150ms
166
- expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
167
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
168
- act(() => vi.advanceTimersByTime(delay / 2))
169
-
170
- // Validate Tooltip 1 is rendered
171
- screen.getByText('Tooltip 1')
172
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
173
-
174
- // Hovers on second button.
175
- fireEvent.mouseLeave(button1)
176
- fireEvent.mouseEnter(button2)
177
-
178
- // Validate Tooltip 1 is not rendered, now tooltip 2 is open.
179
- act(() => vi.advanceTimersByTime(1))
180
- expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
181
- screen.getByText('Tooltip 2')
182
-
183
- // Validate tooltip content is not rendered anymore
184
- fireEvent.mouseLeave(button2)
185
- act(() => vi.advanceTimersByTime(delay + 1))
186
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
187
-
188
- // Hovering again, should trigger the tooltip to show immediately, as the group is not deactivated yet
189
- fireEvent.mouseEnter(button2)
190
- act(() => vi.advanceTimersByTime(1))
191
- await act(async () => {
192
- await vi.runAllTimersAsync()
193
- })
194
- screen.getByText('Tooltip 2')
195
-
196
- // Validate tooltip content is not rendered anymore
197
- fireEvent.mouseLeave(button2)
198
- act(() => vi.advanceTimersByTime(delay + 1))
199
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
200
-
201
- // Wait 200ms, the group is deactivated, hovering again should trigger the delay
202
- act(() => vi.advanceTimersByTime(200))
203
- fireEvent.mouseEnter(button2)
204
- act(() => vi.advanceTimersByTime(delay / 2))
205
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
206
- act(() => vi.advanceTimersByTime(delay / 2))
207
- screen.getByText('Tooltip 2')
208
- })
209
-
210
- it('should support groups with different open and close delay.', async () => {
211
- const openDelay = 250
212
- const closeDelay = 150
213
-
214
- vi.useFakeTimers()
215
- render(
216
- <TooltipDelayGroupProvider
217
- delay={{
218
- open: openDelay,
219
- close: closeDelay,
220
- }}
221
- >
222
- <Tooltip animate={false} delay={400} placement={'top'} text="Tooltip 1">
223
- <Button mode="bleed" text="Button 1" />
224
- </Tooltip>
225
- <Tooltip
226
- animate={false}
227
- delay={400} // This should be overridden by the group delay
228
- placement={'top'}
229
- text="Tooltip 2"
230
- >
231
- <Button mode="bleed" text="Button 2" />
232
- </Tooltip>
233
- </TooltipDelayGroupProvider>,
234
- )
235
-
236
- const button1 = screen.getByText('Button 1')
237
- const button2 = screen.getByText('Button 2')
238
-
239
- // Validate tooltip content is not rendered
240
- expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
241
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
242
-
243
- // Hovers on first button, it should show first tooltip only
244
- fireEvent.mouseEnter(button1)
245
- act(() => vi.advanceTimersByTime(openDelay / 2))
246
- // Content should not be rendered yet, we have a delay of2150ms
247
- expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
248
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
249
- act(() => vi.advanceTimersByTime(openDelay / 2))
250
-
251
- // Validate Tooltip 1 is rendered
252
- screen.getByText('Tooltip 1')
253
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
254
-
255
- // Hovers on second button.
256
- fireEvent.mouseLeave(button1)
257
- fireEvent.mouseEnter(button2)
258
-
259
- // Validate Tooltip 1 is not rendered, now tooltip 2 is open.
260
- act(() => vi.advanceTimersByTime(1))
261
- expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
262
- screen.getByText('Tooltip 2')
263
-
264
- // Validate tooltip content is not rendered anymore
265
- fireEvent.mouseLeave(button2)
266
- act(() => vi.advanceTimersByTime(closeDelay + 1))
267
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
268
-
269
- // Hovering again, should trigger the tooltip to show immediately, as the group is not deactivated yet
270
- fireEvent.mouseEnter(button2)
271
- act(() => vi.advanceTimersByTime(1))
272
- await act(async () => {
273
- await vi.runAllTimersAsync()
274
- })
275
- screen.getByText('Tooltip 2')
276
-
277
- // Validate tooltip content is not rendered anymore
278
- fireEvent.mouseLeave(button2)
279
- act(() => vi.advanceTimersByTime(closeDelay + 1))
280
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
281
-
282
- // Wait 200ms, the group is deactivated, hovering again should trigger the delay
283
- act(() => vi.advanceTimersByTime(200))
284
- fireEvent.mouseEnter(button2)
285
- act(() => vi.advanceTimersByTime(openDelay / 2))
286
- expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
287
- act(() => vi.advanceTimersByTime(openDelay / 2))
288
- screen.getByText('Tooltip 2')
289
- })
290
- })
291
-
292
- describe('Closing the <Tooltip /> with the Escape key', () => {
293
- it('Standalone tooltip closes immediately with Escape key', async () => {
294
- const delay = 150
295
-
296
- vi.useFakeTimers()
297
-
298
- render(
299
- <Tooltip animate={false} delay={delay} placement={'top'} text="Tooltip content">
300
- <Button mode="bleed" text="Hover me" />
301
- </Tooltip>,
302
- )
303
-
304
- const button = screen.getByText('Hover me')
305
-
306
- // Validate tooltip content is not rendered
307
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
308
- act(() => {
309
- fireEvent.focus(button)
310
- })
311
- await advance(delay)
312
-
313
- // Validate tooltip content is rendered
314
- expect(screen.getByText('Tooltip content')).toBeInTheDocument()
315
-
316
- act(() => {
317
- fireEvent.keyDown(button, {key: 'Escape', code: 'Escape'})
318
- })
319
-
320
- await flushAll()
321
-
322
- // Validate tooltip content is not rendered anymore
323
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
324
- })
325
- it('With <TooltipDelayGroupProvider /> closes immediately with Escape key', () => {
326
- const delay = 150
327
-
328
- vi.useFakeTimers()
329
-
330
- render(
331
- <TooltipDelayGroupProvider delay={{close: delay}}>
332
- <Tooltip animate={false} delay={{close: delay}} placement={'top'} text="Tooltip content">
333
- <Button mode="bleed" text="Hover me" />
334
- </Tooltip>
335
- </TooltipDelayGroupProvider>,
336
- )
337
-
338
- const button = screen.getByText('Hover me')
339
-
340
- // Validate tooltip content is not rendered
341
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
342
- act(() => {
343
- fireEvent.focus(button)
344
- })
345
- act(() => vi.advanceTimersByTime(delay))
346
-
347
- // Validate tooltip content is rendered
348
- screen.getByText('Tooltip content')
349
-
350
- act(() => {
351
- fireEvent.keyDown(button, {key: 'Escape', code: 'Escape'})
352
- })
353
-
354
- // Wait for any pending state updates to complete
355
- act(() => {
356
- vi.runAllTimers()
357
- })
358
-
359
- // Validate tooltip content is not rendered anymore
360
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
361
- })
362
- })
363
-
364
- describe('Clicking the <Tooltip /> child should close the tooltip', () => {
365
- it('Should close the tooltip when the context menu is opened (right click)', async () => {
366
- const delay = 150
367
-
368
- render(
369
- <Tooltip animate={false} delay={delay} text="Tooltip content">
370
- <Button mode="bleed" text="Hover me" />
371
- </Tooltip>,
372
- )
373
-
374
- const button = screen.getByText('Hover me')
375
-
376
- // Assertion: tooltip does not exist in the document
377
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
378
- act(() => {
379
- fireEvent.focus(button)
380
- })
381
- await advance(delay)
382
-
383
- // Assertion: the tooltip is visible
384
- expect(screen.getByText('Tooltip content')).toBeVisible()
385
-
386
- act(() => {
387
- fireEvent.contextMenu(button)
388
- })
389
-
390
- await flushAll()
391
-
392
- // Assertion: tooltip does not exist in the document
393
- expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
394
- })
395
- })
396
-
397
- describe('Used defined events on <Tooltip /> child should fire correctly', () => {
398
- it('should fire the onBlur event', () => {
399
- const handleBlur = vi.fn()
400
-
401
- render(
402
- <Tooltip animate={false} text="Tooltip content">
403
- <Button data-testid="btn" mode="bleed" text="Hover me" onBlur={handleBlur} />
404
- </Tooltip>,
405
- )
406
-
407
- act(() => fireEvent.blur(screen.getByTestId('btn')))
408
- expect(handleBlur).toHaveBeenCalledTimes(1)
409
- })
410
-
411
- it('should fire the onClick event', async () => {
412
- const handleClick = vi.fn()
413
-
414
- render(
415
- <Tooltip animate={false} text="Tooltip content">
416
- <Button data-testid="btn" mode="bleed" text="Hover me" onClick={handleClick} />
417
- </Tooltip>,
418
- )
419
-
420
- act(() => {
421
- fireEvent.click(screen.getByTestId('btn'))
422
- })
423
-
424
- await flushAll()
425
-
426
- expect(handleClick).toHaveBeenCalledTimes(1)
427
- })
428
-
429
- it('should fire the onContextMenu event', () => {
430
- const handleContextMenu = vi.fn()
431
-
432
- render(
433
- <Tooltip animate={false} text="Tooltip content">
434
- <Button
435
- data-testid="btn"
436
- mode="bleed"
437
- text="Hover me"
438
- onContextMenu={handleContextMenu}
439
- />
440
- </Tooltip>,
441
- )
442
-
443
- act(() => fireEvent.contextMenu(screen.getByTestId('btn')))
444
- expect(handleContextMenu).toHaveBeenCalledTimes(1)
445
- })
446
-
447
- it('should fire the onFocus event', async () => {
448
- const handleFocus = vi.fn()
449
-
450
- render(
451
- <Tooltip animate={false} text="Tooltip content">
452
- <Button data-testid="btn" mode="bleed" text="Hover me" onFocus={handleFocus} />
453
- </Tooltip>,
454
- )
455
-
456
- act(() => {
457
- fireEvent.focus(screen.getByTestId('btn'))
458
- })
459
-
460
- await flushAll()
461
-
462
- expect(handleFocus).toHaveBeenCalledTimes(1)
463
- })
464
-
465
- it('should fire the onMouseEnter event', async () => {
466
- const handleMouseEnter = vi.fn()
467
-
468
- render(
469
- <Tooltip animate={false} text="Tooltip content">
470
- <Button data-testid="btn" mode="bleed" text="Hover me" onMouseEnter={handleMouseEnter} />
471
- </Tooltip>,
472
- )
473
-
474
- act(() => {
475
- fireEvent.mouseEnter(screen.getByTestId('btn'))
476
- })
477
-
478
- await flushAll()
479
-
480
- expect(handleMouseEnter).toHaveBeenCalledTimes(1)
481
- })
482
-
483
- it('should fire the onMouseLeave event', () => {
484
- const handleMouseLeave = vi.fn()
485
-
486
- render(
487
- <Tooltip animate={false} text="Tooltip content">
488
- <Button data-testid="btn" mode="bleed" text="Hover me" onMouseLeave={handleMouseLeave} />
489
- </Tooltip>,
490
- )
491
-
492
- act(() => fireEvent.mouseLeave(screen.getByTestId('btn')))
493
- expect(handleMouseLeave).toHaveBeenCalledTimes(1)
494
- })
495
- })
496
- })