@sanity/ui 3.3.1 → 3.3.3

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 (651) hide show
  1. package/dist/_visual-editing.d.mts +2 -1126
  2. package/dist/_visual-editing.d.ts +2 -1126
  3. package/dist/_visual-editing.js +3 -31
  4. package/dist/_visual-editing.mjs +2 -31
  5. package/dist/index.d.mts +555 -2769
  6. package/dist/index.d.mts.map +1 -0
  7. package/dist/index.d.ts +555 -2769
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +2982 -1934
  10. package/dist/index.mjs +2950 -1903
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/refractor.js +16 -0
  13. package/dist/refractor.mjs +21 -0
  14. package/dist/refractor.mjs.map +1 -0
  15. package/dist/tabList.js +3804 -0
  16. package/dist/tabList.mjs +3355 -0
  17. package/dist/tabList.mjs.map +1 -0
  18. package/dist/theme.d.mts +927 -1227
  19. package/dist/theme.d.mts.map +1 -0
  20. package/dist/theme.d.ts +927 -1227
  21. package/dist/theme.d.ts.map +1 -0
  22. package/dist/theme.js +3 -4127
  23. package/dist/theme.mjs +2 -4127
  24. package/dist/theme2.d.mts +2 -0
  25. package/dist/theme2.d.ts +2 -0
  26. package/dist/theme2.js +4104 -0
  27. package/dist/theme2.mjs +3851 -0
  28. package/dist/theme2.mjs.map +1 -0
  29. package/dist/useTheme.d.mts +1451 -0
  30. package/dist/useTheme.d.mts.map +1 -0
  31. package/dist/useTheme.d.ts +1451 -0
  32. package/dist/useTheme.d.ts.map +1 -0
  33. package/package.json +48 -106
  34. package/dist/_chunks-cjs/_visual-editing.js +0 -5899
  35. package/dist/_chunks-cjs/_visual-editing.js.map +0 -1
  36. package/dist/_chunks-cjs/refractor.js +0 -23
  37. package/dist/_chunks-cjs/refractor.js.map +0 -1
  38. package/dist/_chunks-es/_visual-editing.mjs +0 -5905
  39. package/dist/_chunks-es/_visual-editing.mjs.map +0 -1
  40. package/dist/_chunks-es/refractor.mjs +0 -26
  41. package/dist/_chunks-es/refractor.mjs.map +0 -1
  42. package/dist/_visual-editing.js.map +0 -1
  43. package/dist/_visual-editing.mjs.map +0 -1
  44. package/dist/index.js.map +0 -1
  45. package/dist/theme.js.map +0 -1
  46. package/dist/theme.mjs.map +0 -1
  47. package/exports/_visual-editing.ts +0 -31
  48. package/exports/index.ts +0 -1
  49. package/exports/theme.ts +0 -1
  50. package/src/core/__workshop__/constants.ts +0 -293
  51. package/src/core/_compat.ts +0 -264
  52. package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
  53. package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
  54. package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
  55. package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
  56. package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
  57. package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
  58. package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
  59. package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
  60. package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
  61. package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
  62. package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
  63. package/src/core/components/autocomplete/autocomplete.tsx +0 -767
  64. package/src/core/components/autocomplete/autocompleteOption.tsx +0 -45
  65. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  66. package/src/core/components/autocomplete/constants.ts +0 -28
  67. package/src/core/components/autocomplete/index.ts +0 -2
  68. package/src/core/components/autocomplete/types.ts +0 -108
  69. package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
  70. package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
  71. package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
  72. package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -51
  73. package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -133
  74. package/src/core/components/breadcrumbs/index.ts +0 -1
  75. package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
  76. package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
  77. package/src/core/components/dialog/__workshop__/index.ts +0 -19
  78. package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
  79. package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
  80. package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
  81. package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
  82. package/src/core/components/dialog/__workshop__/position.tsx +0 -30
  83. package/src/core/components/dialog/__workshop__/props.tsx +0 -75
  84. package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
  85. package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
  86. package/src/core/components/dialog/dialog.tsx +0 -430
  87. package/src/core/components/dialog/dialogContext.ts +0 -20
  88. package/src/core/components/dialog/dialogProvider.tsx +0 -35
  89. package/src/core/components/dialog/index.ts +0 -4
  90. package/src/core/components/dialog/styles.ts +0 -77
  91. package/src/core/components/dialog/useDialog.ts +0 -11
  92. package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
  93. package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
  94. package/src/core/components/hotkeys/hotkeys.test.tsx +0 -42
  95. package/src/core/components/hotkeys/hotkeys.tsx +0 -66
  96. package/src/core/components/hotkeys/index.ts +0 -1
  97. package/src/core/components/index.ts +0 -9
  98. package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
  99. package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
  100. package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
  101. package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
  102. package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
  103. package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
  104. package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
  105. package/src/core/components/menu/__workshop__/groups.tsx +0 -156
  106. package/src/core/components/menu/__workshop__/index.ts +0 -89
  107. package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
  108. package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -65
  109. package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
  110. package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
  111. package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
  112. package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
  113. package/src/core/components/menu/__workshop__/tones.tsx +0 -25
  114. package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
  115. package/src/core/components/menu/helpers.ts +0 -82
  116. package/src/core/components/menu/index.ts +0 -5
  117. package/src/core/components/menu/menu.spacing.test.tsx +0 -63
  118. package/src/core/components/menu/menu.test.tsx +0 -125
  119. package/src/core/components/menu/menu.tsx +0 -178
  120. package/src/core/components/menu/menuButton.tsx +0 -268
  121. package/src/core/components/menu/menuContext.ts +0 -18
  122. package/src/core/components/menu/menuDivider.ts +0 -23
  123. package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -63
  124. package/src/core/components/menu/menuGroup.tsx +0 -233
  125. package/src/core/components/menu/menuItem.spacing.test.tsx +0 -59
  126. package/src/core/components/menu/menuItem.tsx +0 -197
  127. package/src/core/components/menu/useMenu.ts +0 -21
  128. package/src/core/components/menu/useMenuController.ts +0 -231
  129. package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
  130. package/src/core/components/skeleton/__workshop__/index.ts +0 -11
  131. package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
  132. package/src/core/components/skeleton/index.ts +0 -2
  133. package/src/core/components/skeleton/skeleton.tsx +0 -57
  134. package/src/core/components/skeleton/styles.ts +0 -50
  135. package/src/core/components/skeleton/textSkeleton.tsx +0 -122
  136. package/src/core/components/tab/__workshop__/example.tsx +0 -79
  137. package/src/core/components/tab/__workshop__/index.ts +0 -14
  138. package/src/core/components/tab/index.ts +0 -3
  139. package/src/core/components/tab/tab.tsx +0 -101
  140. package/src/core/components/tab/tabList.test.tsx +0 -48
  141. package/src/core/components/tab/tabList.tsx +0 -70
  142. package/src/core/components/tab/tabPanel.tsx +0 -39
  143. package/src/core/components/toast/__workshop__/hook.tsx +0 -71
  144. package/src/core/components/toast/__workshop__/index.ts +0 -19
  145. package/src/core/components/toast/__workshop__/toast.tsx +0 -26
  146. package/src/core/components/toast/index.ts +0 -4
  147. package/src/core/components/toast/styles.ts +0 -77
  148. package/src/core/components/toast/toast.test.tsx +0 -101
  149. package/src/core/components/toast/toast.tsx +0 -198
  150. package/src/core/components/toast/toastContext.ts +0 -7
  151. package/src/core/components/toast/toastLayer.tsx +0 -51
  152. package/src/core/components/toast/toastProvider.tsx +0 -113
  153. package/src/core/components/toast/toastState.ts +0 -6
  154. package/src/core/components/toast/types.ts +0 -26
  155. package/src/core/components/toast/useToast.ts +0 -25
  156. package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
  157. package/src/core/components/tree/__workshop__/basic.tsx +0 -105
  158. package/src/core/components/tree/__workshop__/index.ts +0 -21
  159. package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
  160. package/src/core/components/tree/helpers.ts +0 -105
  161. package/src/core/components/tree/index.ts +0 -4
  162. package/src/core/components/tree/style.ts +0 -105
  163. package/src/core/components/tree/tree.test.tsx +0 -55
  164. package/src/core/components/tree/tree.tsx +0 -240
  165. package/src/core/components/tree/treeContext.ts +0 -10
  166. package/src/core/components/tree/treeGroup.tsx +0 -28
  167. package/src/core/components/tree/treeItem.test.tsx +0 -65
  168. package/src/core/components/tree/treeItem.tsx +0 -224
  169. package/src/core/components/tree/types.ts +0 -25
  170. package/src/core/components/tree/useTree.ts +0 -17
  171. package/src/core/constants.ts +0 -79
  172. package/src/core/helpers/animation.ts +0 -27
  173. package/src/core/helpers/element.ts +0 -55
  174. package/src/core/helpers/focus.ts +0 -100
  175. package/src/core/helpers/index.ts +0 -4
  176. package/src/core/helpers/scroll.ts +0 -15
  177. package/src/core/hooks/index.ts +0 -12
  178. package/src/core/hooks/useArrayProp.ts +0 -17
  179. package/src/core/hooks/useClickOutside.test.tsx +0 -482
  180. package/src/core/hooks/useClickOutside.ts +0 -118
  181. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -115
  182. package/src/core/hooks/useClickOutsideEvent.ts +0 -73
  183. package/src/core/hooks/useCustomValidity.ts +0 -13
  184. package/src/core/hooks/useDelayed.test.ts +0 -88
  185. package/src/core/hooks/useDelayedState.ts +0 -36
  186. package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
  187. package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
  188. package/src/core/hooks/useElementRect/index.ts +0 -1
  189. package/src/core/hooks/useElementRect/useElementRect.ts +0 -13
  190. package/src/core/hooks/useElementSize.ts +0 -19
  191. package/src/core/hooks/useForwardedRef.ts +0 -19
  192. package/src/core/hooks/useGlobalKeyDown.ts +0 -24
  193. package/src/core/hooks/useIsomorphicEffect.ts +0 -7
  194. package/src/core/hooks/useMatchMedia.ts +0 -28
  195. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
  196. package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
  197. package/src/core/hooks/useMediaIndex/index.ts +0 -1
  198. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -36
  199. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
  200. package/src/core/hooks/useMounted.ts +0 -15
  201. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
  202. package/src/core/hooks/usePrefersDark.test.tsx +0 -19
  203. package/src/core/hooks/usePrefersDark.ts +0 -16
  204. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  205. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -19
  206. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  207. package/src/core/index.ts +0 -10
  208. package/src/core/lib/createGlobalScopedContext.ts +0 -36
  209. package/src/core/lib/globalScope.ts +0 -19
  210. package/src/core/lib/isRecord.ts +0 -3
  211. package/src/core/middleware/origin.ts +0 -47
  212. package/src/core/observers/elementSizeObserver.ts +0 -116
  213. package/src/core/observers/index.ts +0 -2
  214. package/src/core/observers/resizeObserver.ts +0 -9
  215. package/src/core/primitives/_selectable/index.ts +0 -1
  216. package/src/core/primitives/_selectable/selectable.tsx +0 -15
  217. package/src/core/primitives/_selectable/style.ts +0 -115
  218. package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
  219. package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
  220. package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
  221. package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
  222. package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
  223. package/src/core/primitives/avatar/avatar.tsx +0 -200
  224. package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
  225. package/src/core/primitives/avatar/avatarStack.tsx +0 -100
  226. package/src/core/primitives/avatar/index.ts +0 -4
  227. package/src/core/primitives/avatar/styles.ts +0 -167
  228. package/src/core/primitives/avatar/types.ts +0 -17
  229. package/src/core/primitives/badge/__workshop__/index.ts +0 -19
  230. package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
  231. package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
  232. package/src/core/primitives/badge/badge.test.tsx +0 -16
  233. package/src/core/primitives/badge/badge.tsx +0 -70
  234. package/src/core/primitives/badge/index.ts +0 -1
  235. package/src/core/primitives/badge/styles.ts +0 -20
  236. package/src/core/primitives/badge/types.ts +0 -8
  237. package/src/core/primitives/box/__workshop__/asComponent.tsx +0 -31
  238. package/src/core/primitives/box/__workshop__/index.ts +0 -24
  239. package/src/core/primitives/box/__workshop__/props.tsx +0 -20
  240. package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
  241. package/src/core/primitives/box/box.test.tsx +0 -142
  242. package/src/core/primitives/box/box.tsx +0 -154
  243. package/src/core/primitives/box/index.ts +0 -1
  244. package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
  245. package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
  246. package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
  247. package/src/core/primitives/button/__workshop__/index.ts +0 -59
  248. package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
  249. package/src/core/primitives/button/__workshop__/props.tsx +0 -55
  250. package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +0 -36
  251. package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
  252. package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
  253. package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
  254. package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
  255. package/src/core/primitives/button/button.test.tsx +0 -82
  256. package/src/core/primitives/button/button.tsx +0 -210
  257. package/src/core/primitives/button/index.ts +0 -1
  258. package/src/core/primitives/button/styles.ts +0 -117
  259. package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
  260. package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
  261. package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
  262. package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
  263. package/src/core/primitives/card/__workshop__/index.ts +0 -18
  264. package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
  265. package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
  266. package/src/core/primitives/card/__workshop__/props.tsx +0 -53
  267. package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
  268. package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
  269. package/src/core/primitives/card/card.tsx +0 -128
  270. package/src/core/primitives/card/index.ts +0 -2
  271. package/src/core/primitives/card/styles.ts +0 -147
  272. package/src/core/primitives/card/types.ts +0 -11
  273. package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
  274. package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
  275. package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
  276. package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
  277. package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
  278. package/src/core/primitives/checkbox/checkbox.tsx +0 -73
  279. package/src/core/primitives/checkbox/index.ts +0 -1
  280. package/src/core/primitives/checkbox/styles.ts +0 -128
  281. package/src/core/primitives/code/__workshop__/index.ts +0 -19
  282. package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
  283. package/src/core/primitives/code/__workshop__/props.tsx +0 -21
  284. package/src/core/primitives/code/code.tsx +0 -55
  285. package/src/core/primitives/code/index.ts +0 -1
  286. package/src/core/primitives/code/refractor.tsx +0 -20
  287. package/src/core/primitives/code/styles.ts +0 -77
  288. package/src/core/primitives/container/__workshop__/example.tsx +0 -20
  289. package/src/core/primitives/container/__workshop__/index.ts +0 -8
  290. package/src/core/primitives/container/container.tsx +0 -54
  291. package/src/core/primitives/container/index.ts +0 -2
  292. package/src/core/primitives/container/styles.ts +0 -23
  293. package/src/core/primitives/container/types.ts +0 -6
  294. package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
  295. package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
  296. package/src/core/primitives/flex/__workshop__/index.ts +0 -11
  297. package/src/core/primitives/flex/flex.tsx +0 -64
  298. package/src/core/primitives/flex/index.ts +0 -1
  299. package/src/core/primitives/grid/__workshop__/index.ts +0 -10
  300. package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
  301. package/src/core/primitives/grid/grid.test.tsx +0 -80
  302. package/src/core/primitives/grid/grid.tsx +0 -74
  303. package/src/core/primitives/grid/index.ts +0 -1
  304. package/src/core/primitives/heading/__workshop__/index.ts +0 -19
  305. package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
  306. package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
  307. package/src/core/primitives/heading/heading.tsx +0 -88
  308. package/src/core/primitives/heading/index.ts +0 -1
  309. package/src/core/primitives/heading/styles.ts +0 -64
  310. package/src/core/primitives/heading/types.ts +0 -7
  311. package/src/core/primitives/index.ts +0 -27
  312. package/src/core/primitives/inline/__workshop__/index.ts +0 -8
  313. package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
  314. package/src/core/primitives/inline/index.ts +0 -1
  315. package/src/core/primitives/inline/inline.test.tsx +0 -51
  316. package/src/core/primitives/inline/inline.tsx +0 -63
  317. package/src/core/primitives/inline/styles.ts +0 -32
  318. package/src/core/primitives/inline/types.ts +0 -6
  319. package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
  320. package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
  321. package/src/core/primitives/kbd/index.ts +0 -1
  322. package/src/core/primitives/kbd/kbd.tsx +0 -69
  323. package/src/core/primitives/label/__workshop__/index.ts +0 -19
  324. package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
  325. package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
  326. package/src/core/primitives/label/index.ts +0 -1
  327. package/src/core/primitives/label/label.tsx +0 -87
  328. package/src/core/primitives/label/styles.ts +0 -45
  329. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
  330. package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  331. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
  332. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  333. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
  334. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
  335. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
  336. package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
  337. package/src/core/primitives/popover/__workshop__/index.ts +0 -49
  338. package/src/core/primitives/popover/constants.ts +0 -22
  339. package/src/core/primitives/popover/floating-ui/size.ts +0 -99
  340. package/src/core/primitives/popover/helpers.ts +0 -31
  341. package/src/core/primitives/popover/index.ts +0 -2
  342. package/src/core/primitives/popover/popover.tsx +0 -511
  343. package/src/core/primitives/popover/popoverCard.tsx +0 -166
  344. package/src/core/primitives/popover/types.ts +0 -7
  345. package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
  346. package/src/core/primitives/radio/__workshop__/index.ts +0 -11
  347. package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
  348. package/src/core/primitives/radio/index.ts +0 -1
  349. package/src/core/primitives/radio/radio.tsx +0 -51
  350. package/src/core/primitives/radio/styles.ts +0 -117
  351. package/src/core/primitives/select/__workshop__/index.ts +0 -11
  352. package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
  353. package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
  354. package/src/core/primitives/select/index.ts +0 -1
  355. package/src/core/primitives/select/select.test.tsx +0 -52
  356. package/src/core/primitives/select/select.tsx +0 -94
  357. package/src/core/primitives/select/styles.ts +0 -166
  358. package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
  359. package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
  360. package/src/core/primitives/spinner/index.ts +0 -1
  361. package/src/core/primitives/spinner/spinner.tsx +0 -46
  362. package/src/core/primitives/stack/__workshop__/index.ts +0 -14
  363. package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
  364. package/src/core/primitives/stack/index.ts +0 -1
  365. package/src/core/primitives/stack/stack.test.tsx +0 -57
  366. package/src/core/primitives/stack/stack.tsx +0 -57
  367. package/src/core/primitives/stack/styles.ts +0 -32
  368. package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
  369. package/src/core/primitives/switch/__workshop__/index.ts +0 -11
  370. package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
  371. package/src/core/primitives/switch/index.ts +0 -1
  372. package/src/core/primitives/switch/styles.ts +0 -173
  373. package/src/core/primitives/switch/switch.tsx +0 -68
  374. package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
  375. package/src/core/primitives/text/__workshop__/example.tsx +0 -39
  376. package/src/core/primitives/text/__workshop__/index.ts +0 -24
  377. package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
  378. package/src/core/primitives/text/index.ts +0 -1
  379. package/src/core/primitives/text/styles.ts +0 -74
  380. package/src/core/primitives/text/text.tsx +0 -89
  381. package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
  382. package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
  383. package/src/core/primitives/textArea/index.ts +0 -1
  384. package/src/core/primitives/textArea/textArea.tsx +0 -120
  385. package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
  386. package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
  387. package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
  388. package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
  389. package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
  390. package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
  391. package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
  392. package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
  393. package/src/core/primitives/textInput/index.ts +0 -1
  394. package/src/core/primitives/textInput/textInput.test.tsx +0 -48
  395. package/src/core/primitives/textInput/textInput.tsx +0 -395
  396. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
  397. package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
  398. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
  399. package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
  400. package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
  401. package/src/core/primitives/tooltip/constants.ts +0 -23
  402. package/src/core/primitives/tooltip/index.ts +0 -2
  403. package/src/core/primitives/tooltip/tooltip.test.tsx +0 -452
  404. package/src/core/primitives/tooltip/tooltip.tsx +0 -495
  405. package/src/core/primitives/tooltip/tooltipCard.tsx +0 -109
  406. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  407. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
  408. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
  409. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
  410. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  411. package/src/core/primitives/types.ts +0 -179
  412. package/src/core/styles/border/borderStyle.ts +0 -56
  413. package/src/core/styles/border/index.ts +0 -2
  414. package/src/core/styles/border/types.ts +0 -10
  415. package/src/core/styles/box/boxStyle.ts +0 -69
  416. package/src/core/styles/box/index.ts +0 -2
  417. package/src/core/styles/box/types.ts +0 -11
  418. package/src/core/styles/card/_cardColorStyle.ts +0 -108
  419. package/src/core/styles/card/index.ts +0 -1
  420. package/src/core/styles/flex/flexItemStyle.ts +0 -27
  421. package/src/core/styles/flex/flexStyle.ts +0 -70
  422. package/src/core/styles/flex/index.ts +0 -3
  423. package/src/core/styles/flex/types.ts +0 -25
  424. package/src/core/styles/focusRing/index.ts +0 -25
  425. package/src/core/styles/font/codeFontStyle.ts +0 -13
  426. package/src/core/styles/font/headingFontStyle.ts +0 -13
  427. package/src/core/styles/font/index.ts +0 -6
  428. package/src/core/styles/font/labelFontStyle.ts +0 -13
  429. package/src/core/styles/font/responsiveFont.ts +0 -103
  430. package/src/core/styles/font/textAlignStyle.ts +0 -19
  431. package/src/core/styles/font/textFontStyle.ts +0 -13
  432. package/src/core/styles/font/types.ts +0 -35
  433. package/src/core/styles/grid/gridItemStyle.ts +0 -82
  434. package/src/core/styles/grid/gridStyle.ts +0 -108
  435. package/src/core/styles/grid/index.ts +0 -3
  436. package/src/core/styles/grid/types.ts +0 -37
  437. package/src/core/styles/helpers.ts +0 -72
  438. package/src/core/styles/index.ts +0 -5
  439. package/src/core/styles/input/index.ts +0 -2
  440. package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
  441. package/src/core/styles/input/textInputStyle.ts +0 -263
  442. package/src/core/styles/internal.ts +0 -12
  443. package/src/core/styles/margin/index.ts +0 -2
  444. package/src/core/styles/margin/marginStyle.ts +0 -21
  445. package/src/core/styles/margin/marginsStyle.test.ts +0 -33
  446. package/src/core/styles/margin/types.ts +0 -9
  447. package/src/core/styles/padding/index.ts +0 -2
  448. package/src/core/styles/padding/paddingStyle.test.ts +0 -33
  449. package/src/core/styles/padding/paddingStyle.ts +0 -21
  450. package/src/core/styles/padding/types.ts +0 -12
  451. package/src/core/styles/radius/index.ts +0 -2
  452. package/src/core/styles/radius/radiusStyle.ts +0 -23
  453. package/src/core/styles/radius/types.ts +0 -8
  454. package/src/core/styles/shadow/index.ts +0 -2
  455. package/src/core/styles/shadow/shadowStyle.ts +0 -29
  456. package/src/core/styles/shadow/types.ts +0 -6
  457. package/src/core/styles/types.ts +0 -8
  458. package/src/core/theme/__workshop__/build/Root.tsx +0 -367
  459. package/src/core/theme/__workshop__/build/helpers.ts +0 -46
  460. package/src/core/theme/__workshop__/build/story.tsx +0 -465
  461. package/src/core/theme/__workshop__/canvas.tsx +0 -352
  462. package/src/core/theme/__workshop__/color.tsx +0 -62
  463. package/src/core/theme/__workshop__/debug/story.tsx +0 -408
  464. package/src/core/theme/__workshop__/index.ts +0 -39
  465. package/src/core/theme/__workshop__/layer.tsx +0 -78
  466. package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
  467. package/src/core/theme/index.ts +0 -5
  468. package/src/core/theme/theme.test.tsx +0 -73
  469. package/src/core/theme/themeColorProvider.tsx +0 -29
  470. package/src/core/theme/themeContext.ts +0 -10
  471. package/src/core/theme/themeProvider.tsx +0 -62
  472. package/src/core/theme/types.ts +0 -12
  473. package/src/core/theme/useRootTheme.ts +0 -17
  474. package/src/core/theme/useTheme.ts +0 -16
  475. package/src/core/types/avatar.ts +0 -14
  476. package/src/core/types/badge.ts +0 -12
  477. package/src/core/types/box.ts +0 -19
  478. package/src/core/types/button.ts +0 -21
  479. package/src/core/types/card.ts +0 -6
  480. package/src/core/types/component.ts +0 -32
  481. package/src/core/types/dialog.ts +0 -4
  482. package/src/core/types/flex.ts +0 -30
  483. package/src/core/types/grid.ts +0 -14
  484. package/src/core/types/gridItem.ts +0 -29
  485. package/src/core/types/index.ts +0 -15
  486. package/src/core/types/placement.ts +0 -18
  487. package/src/core/types/popover.ts +0 -4
  488. package/src/core/types/radius.ts +0 -4
  489. package/src/core/types/selectable.ts +0 -6
  490. package/src/core/types/text.ts +0 -4
  491. package/src/core/utils/arrow/arrow.tsx +0 -123
  492. package/src/core/utils/arrow/cmds.ts +0 -91
  493. package/src/core/utils/arrow/index.ts +0 -1
  494. package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
  495. package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
  496. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -100
  497. package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
  498. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
  499. package/src/core/utils/boundaryElement/index.ts +0 -3
  500. package/src/core/utils/boundaryElement/types.ts +0 -7
  501. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
  502. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -21
  503. package/src/core/utils/conditionalWrapper/index.ts +0 -1
  504. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
  505. package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
  506. package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
  507. package/src/core/utils/elementQuery/helpers.ts +0 -27
  508. package/src/core/utils/elementQuery/index.ts +0 -1
  509. package/src/core/utils/errorBoundary.tsx +0 -48
  510. package/src/core/utils/getElementRef.ts +0 -26
  511. package/src/core/utils/index.ts +0 -9
  512. package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
  513. package/src/core/utils/layer/__workshop__/index.ts +0 -24
  514. package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
  515. package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
  516. package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
  517. package/src/core/utils/layer/getLayerContext.test.ts +0 -30
  518. package/src/core/utils/layer/getLayerContext.ts +0 -21
  519. package/src/core/utils/layer/index.ts +0 -4
  520. package/src/core/utils/layer/layer.test.tsx +0 -108
  521. package/src/core/utils/layer/layer.tsx +0 -98
  522. package/src/core/utils/layer/layerContext.ts +0 -7
  523. package/src/core/utils/layer/layerProvider.tsx +0 -111
  524. package/src/core/utils/layer/types.ts +0 -9
  525. package/src/core/utils/layer/useLayer.ts +0 -26
  526. package/src/core/utils/portal/__workshop__/index.ts +0 -14
  527. package/src/core/utils/portal/__workshop__/named.tsx +0 -63
  528. package/src/core/utils/portal/index.ts +0 -4
  529. package/src/core/utils/portal/portal.test.tsx +0 -103
  530. package/src/core/utils/portal/portal.ts +0 -32
  531. package/src/core/utils/portal/portalContext.ts +0 -31
  532. package/src/core/utils/portal/portalProvider.tsx +0 -47
  533. package/src/core/utils/portal/types.ts +0 -9
  534. package/src/core/utils/portal/usePortal.ts +0 -25
  535. package/src/core/utils/spanWithTextOverflow.tsx +0 -10
  536. package/src/core/utils/srOnly/index.ts +0 -1
  537. package/src/core/utils/srOnly/srOnly.tsx +0 -36
  538. package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
  539. package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
  540. package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
  541. package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
  542. package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
  543. package/src/core/utils/virtualList/index.ts +0 -1
  544. package/src/core/utils/virtualList/virtualList.tsx +0 -200
  545. package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -76
  546. package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -54
  547. package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -22
  548. package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -55
  549. package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -60
  550. package/src/theme/build/_deprecated/color/color.test.ts +0 -63
  551. package/src/theme/build/_deprecated/color/defaults.ts +0 -390
  552. package/src/theme/build/_deprecated/color/factory.ts +0 -142
  553. package/src/theme/build/_deprecated/color/index.ts +0 -1
  554. package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -81
  555. package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -54
  556. package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -20
  557. package/src/theme/build/buildColorTheme.test.ts +0 -183
  558. package/src/theme/build/buildColorTheme.ts +0 -499
  559. package/src/theme/build/buildTheme.test.ts +0 -87
  560. package/src/theme/build/buildTheme.ts +0 -36
  561. package/src/theme/build/colorToken/colorToken.ts +0 -19
  562. package/src/theme/build/colorToken/compileColorToken.ts +0 -21
  563. package/src/theme/build/colorToken/index.ts +0 -2
  564. package/src/theme/build/colorToken/types.ts +0 -6
  565. package/src/theme/build/index.ts +0 -3
  566. package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
  567. package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
  568. package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
  569. package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
  570. package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -68
  571. package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
  572. package/src/theme/build/lib/color-fns/convert.ts +0 -150
  573. package/src/theme/build/lib/color-fns/index.ts +0 -6
  574. package/src/theme/build/lib/color-fns/parse.ts +0 -60
  575. package/src/theme/build/lib/color-fns/rgba.ts +0 -10
  576. package/src/theme/build/lib/color-fns/types.ts +0 -28
  577. package/src/theme/build/lib/isRecord.ts +0 -3
  578. package/src/theme/build/lib/lazy.ts +0 -30
  579. package/src/theme/build/lib/utils.ts +0 -19
  580. package/src/theme/build/merge.ts +0 -26
  581. package/src/theme/build/mixThemeColor.test.ts +0 -21
  582. package/src/theme/build/mixThemeColor.ts +0 -53
  583. package/src/theme/build/renderColorTheme.ts +0 -532
  584. package/src/theme/build/renderColorValue.ts +0 -85
  585. package/src/theme/build/resolveColorTokens.ts +0 -268
  586. package/src/theme/build/theme.test.ts +0 -27
  587. package/src/theme/config/helpers.ts +0 -55
  588. package/src/theme/config/index.ts +0 -4
  589. package/src/theme/config/system.ts +0 -115
  590. package/src/theme/config/tokens/color/index.ts +0 -1
  591. package/src/theme/config/tokens/color/types.ts +0 -133
  592. package/src/theme/config/tokens/index.ts +0 -4
  593. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
  594. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  595. package/src/theme/config/tokens/parseTokenValue.test.ts +0 -42
  596. package/src/theme/config/tokens/parseTokenValue.ts +0 -133
  597. package/src/theme/config/tokens/types.ts +0 -53
  598. package/src/theme/config/types.ts +0 -46
  599. package/src/theme/defaults/colorPalette.ts +0 -5
  600. package/src/theme/defaults/colorTokens.ts +0 -648
  601. package/src/theme/defaults/config.ts +0 -84
  602. package/src/theme/defaults/fonts.ts +0 -227
  603. package/src/theme/getScopedTheme.ts +0 -98
  604. package/src/theme/index.ts +0 -5
  605. package/src/theme/system/avatar.ts +0 -14
  606. package/src/theme/system/color/_constants.ts +0 -45
  607. package/src/theme/system/color/_helpers.ts +0 -24
  608. package/src/theme/system/color/_system.ts +0 -40
  609. package/src/theme/system/color/avatar.ts +0 -15
  610. package/src/theme/system/color/badge.ts +0 -16
  611. package/src/theme/system/color/button.ts +0 -17
  612. package/src/theme/system/color/color.ts +0 -34
  613. package/src/theme/system/color/index.ts +0 -13
  614. package/src/theme/system/color/input.ts +0 -25
  615. package/src/theme/system/color/kbd.ts +0 -8
  616. package/src/theme/system/color/selectable.ts +0 -12
  617. package/src/theme/system/color/shadow.ts +0 -7
  618. package/src/theme/system/color/state.ts +0 -43
  619. package/src/theme/system/color/syntax.ts +0 -41
  620. package/src/theme/system/css.ts +0 -14
  621. package/src/theme/system/focusRing.ts +0 -7
  622. package/src/theme/system/font.ts +0 -52
  623. package/src/theme/system/index.ts +0 -11
  624. package/src/theme/system/input.ts +0 -33
  625. package/src/theme/system/layer.ts +0 -8
  626. package/src/theme/system/shadow.ts +0 -19
  627. package/src/theme/system/styles.ts +0 -13
  628. package/src/theme/system/theme.ts +0 -138
  629. package/src/theme/system/v0/avatar.ts +0 -10
  630. package/src/theme/system/v0/color/_generic.ts +0 -35
  631. package/src/theme/system/v0/color/_system.ts +0 -17
  632. package/src/theme/system/v0/color/base.ts +0 -21
  633. package/src/theme/system/v0/color/button.ts +0 -42
  634. package/src/theme/system/v0/color/card.ts +0 -19
  635. package/src/theme/system/v0/color/color.ts +0 -40
  636. package/src/theme/system/v0/color/index.ts +0 -11
  637. package/src/theme/system/v0/color/input.ts +0 -34
  638. package/src/theme/system/v0/color/muted.ts +0 -26
  639. package/src/theme/system/v0/color/selectable.ts +0 -31
  640. package/src/theme/system/v0/color/solid.ts +0 -26
  641. package/src/theme/system/v0/color/spot.ts +0 -13
  642. package/src/theme/system/v0/index.ts +0 -3
  643. package/src/theme/system/v0/input.ts +0 -23
  644. package/src/theme/versioning/getTheme_v2.ts +0 -57
  645. package/src/theme/versioning/index.ts +0 -5
  646. package/src/theme/versioning/is_v0.ts +0 -6
  647. package/src/theme/versioning/is_v2.ts +0 -6
  648. package/src/theme/versioning/themeColor_v0_v2.ts +0 -243
  649. package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -49
  650. package/src/theme/versioning/v0_v2.ts +0 -94
  651. package/src/theme/versioning/v2_v0.ts +0 -135
@@ -1,115 +0,0 @@
1
- /** @jest-environment jsdom */
2
-
3
- import {render, screen} from '@testing-library/react'
4
- import userEvent from '@testing-library/user-event'
5
- import {useRef} from 'react'
6
-
7
- import {useClickOutsideEvent} from './useClickOutsideEvent'
8
-
9
- describe('useClickOutsideEvent', () => {
10
- /**
11
- * This suite demonstrates the new hook `useClickOutsideEvent` that replaces `useClickOutside`
12
- */
13
-
14
- it('calls the handler when clicking outside of the array of elements', async () => {
15
- const user = userEvent.setup()
16
- const handler = jest.fn()
17
-
18
- const TestComponent = () => {
19
- const buttonRef = useRef<HTMLButtonElement | null>(null)
20
- const popoverRef = useRef<HTMLDivElement | null>(null)
21
-
22
- useClickOutsideEvent(handler, () => [buttonRef.current, popoverRef.current])
23
-
24
- return (
25
- <>
26
- <button data-testid="button" ref={buttonRef} />
27
- <div data-testid="popover" ref={popoverRef} />
28
- <div data-testid="outside" />
29
- </>
30
- )
31
- }
32
-
33
- render(<TestComponent />)
34
-
35
- await user.click(screen.getByTestId('button'))
36
- await user.click(screen.getByTestId('popover'))
37
- expect(handler).not.toHaveBeenCalled()
38
-
39
- await user.click(screen.getByTestId('outside'))
40
- expect(handler).toHaveBeenCalledTimes(1)
41
- })
42
-
43
- it('the elements array flattens nested arrays one level deep', async () => {
44
- const user = userEvent.setup()
45
- const handler = jest.fn()
46
-
47
- const TestComponent = () => {
48
- const buttonRef = useRef<HTMLButtonElement | null>(null)
49
- const popoverRef = useRef<HTMLDivElement | null>(null)
50
-
51
- useClickOutsideEvent(handler, () => [
52
- null,
53
- [null, buttonRef.current],
54
- [popoverRef.current, null],
55
- null,
56
- ])
57
-
58
- return (
59
- <>
60
- <button data-testid="button" ref={buttonRef} />
61
- <div data-testid="popover" ref={popoverRef} />
62
- <div data-testid="outside" />
63
- </>
64
- )
65
- }
66
-
67
- render(<TestComponent />)
68
-
69
- await user.click(screen.getByTestId('button'))
70
- await user.click(screen.getByTestId('popover'))
71
- expect(handler).not.toHaveBeenCalled()
72
-
73
- await user.click(screen.getByTestId('outside'))
74
- expect(handler).toHaveBeenCalledTimes(1)
75
- })
76
-
77
- it('it can set a boundary to scope outside click events', async () => {
78
- const user = userEvent.setup()
79
- const handler = jest.fn()
80
-
81
- const TestComponent = () => {
82
- const buttonRef = useRef<HTMLButtonElement | null>(null)
83
- const popoverRef = useRef<HTMLDivElement | null>(null)
84
- const boundaryRef = useRef<HTMLDivElement | null>(null)
85
-
86
- useClickOutsideEvent(
87
- handler,
88
- () => [buttonRef.current, popoverRef.current],
89
- () => boundaryRef.current,
90
- )
91
-
92
- return (
93
- <>
94
- <div ref={boundaryRef}>
95
- <button data-testid="button" ref={buttonRef} />
96
- <div data-testid="popover" ref={popoverRef} />
97
- <div data-testid="inside" />
98
- </div>
99
- <div data-testid="outside" />
100
- </>
101
- )
102
- }
103
-
104
- render(<TestComponent />)
105
-
106
- await user.click(screen.getByTestId('button'))
107
- await user.click(screen.getByTestId('popover'))
108
- // Since it's outside the boundary it should be ignored
109
- await user.click(screen.getByTestId('outside'))
110
- expect(handler).not.toHaveBeenCalled()
111
-
112
- await user.click(screen.getByTestId('inside'))
113
- expect(handler).toHaveBeenCalledTimes(1)
114
- })
115
- })
@@ -1,73 +0,0 @@
1
- import {useDebugValue, useEffect} from 'react'
2
- import {useEffectEvent} from 'use-effect-event'
3
-
4
- import {EMPTY_ARRAY} from '../constants'
5
-
6
- /**
7
- * @public
8
- */
9
- export type ClickOutsideEventListener = (event: MouseEvent) => void
10
-
11
- /**
12
- * @public
13
- */
14
- export type ClickOutsideEventElements = (HTMLElement | null | (HTMLElement | null)[])[]
15
-
16
- /**
17
- * @public
18
- */
19
- export function useClickOutsideEvent(
20
- listener: ClickOutsideEventListener | false | undefined,
21
- elementsArg: () => ClickOutsideEventElements = () => EMPTY_ARRAY,
22
- boundaryElement?: () => HTMLElement | null,
23
- ): void {
24
- /**
25
- * The `useEffectEvent` hook allow us to always see the latest value of `listener`, `elementsArg` and `boundaryElement` without needing to
26
- * juggle `useState`, `useRef` and `useState` to make sure the `mousedown` event listener isn't constantly being added and removed.
27
- */
28
- const onEvent = useEffectEvent((evt: MouseEvent) => {
29
- if (!listener) {
30
- return
31
- }
32
-
33
- const target = evt.target
34
-
35
- if (!(target instanceof Node)) {
36
- return
37
- }
38
-
39
- const resolvedBoundaryElement = boundaryElement?.()
40
-
41
- if (resolvedBoundaryElement && !resolvedBoundaryElement.contains(target)) {
42
- return
43
- }
44
-
45
- const elements = elementsArg().flat()
46
-
47
- for (const el of elements) {
48
- if (!el) continue
49
-
50
- if (target === el || el.contains(target)) {
51
- return
52
- }
53
- }
54
-
55
- listener(evt)
56
- })
57
-
58
- const hasListener = Boolean(listener)
59
-
60
- useEffect(() => {
61
- if (!hasListener) return undefined
62
-
63
- const handleEvent = (evt: MouseEvent) => onEvent(evt)
64
-
65
- document.addEventListener('mousedown', handleEvent)
66
-
67
- return () => {
68
- document.removeEventListener('mousedown', handleEvent)
69
- }
70
- }, [hasListener])
71
-
72
- useDebugValue(listener ? 'MouseDown On' : 'MouseDown Off')
73
- }
@@ -1,13 +0,0 @@
1
- import {useEffect} from 'react'
2
-
3
- /**
4
- * @beta
5
- */
6
- export function useCustomValidity(
7
- ref: {current: null | {setCustomValidity: (validity: string) => void}},
8
- customValidity: string | undefined,
9
- ): void {
10
- useEffect(() => {
11
- ref.current?.setCustomValidity(customValidity || '')
12
- }, [customValidity, ref])
13
- }
@@ -1,88 +0,0 @@
1
- /** @jest-environment jsdom */
2
-
3
- import {act, renderHook} from '@testing-library/react'
4
-
5
- import {useDelayedState} from './useDelayedState'
6
-
7
- describe('useDelayedState', () => {
8
- it('should update state immediately if delay is not provided', () => {
9
- const {result} = renderHook(() => useDelayedState(false))
10
- const [, setState] = result.current
11
-
12
- act(() => {
13
- setState(true)
14
- })
15
- expect(result.current[0]).toBe(true)
16
- })
17
-
18
- it('should update state after delay if delay is provided', async () => {
19
- jest.useFakeTimers()
20
- const {result} = renderHook(() => useDelayedState(false))
21
- const [, setState] = result.current
22
-
23
- act(() => {
24
- setState(true, 1000)
25
- })
26
- expect(result.current[0]).toBe(false)
27
- act(() => {
28
- jest.advanceTimersByTime(500)
29
- })
30
- expect(result.current[0]).toBe(false)
31
-
32
- act(() => {
33
- jest.advanceTimersByTime(500)
34
- })
35
-
36
- expect(result.current[0]).toBe(true)
37
- })
38
-
39
- it('should update state with callback function', () => {
40
- const {result} = renderHook(() => useDelayedState(false))
41
- const [, setState] = result.current
42
-
43
- act(() => {
44
- setState((prev: boolean) => !prev)
45
- })
46
-
47
- expect(result.current[0]).toBe(true)
48
- })
49
-
50
- it('should clear pending timeout on unmount', () => {
51
- jest.useFakeTimers()
52
- const clearTimeoutSpy = jest.spyOn(global, 'clearTimeout')
53
- const {result, unmount} = renderHook(() => useDelayedState(false))
54
- const [, setState] = result.current
55
-
56
- act(() => {
57
- setState(true, 1000)
58
- })
59
-
60
- clearTimeoutSpy.mockClear()
61
-
62
- // Unmount while the delayed update is still pending
63
- unmount()
64
-
65
- // clearTimeout should have been called during cleanup
66
- expect(clearTimeoutSpy).toHaveBeenCalledTimes(1)
67
- clearTimeoutSpy.mockRestore()
68
- })
69
-
70
- it('should cancel update if the set state was called with a new state', () => {
71
- const {result} = renderHook(() => useDelayedState(false))
72
- const [, setState] = result.current
73
-
74
- act(() => {
75
- setState(true, 1000)
76
- })
77
- expect(result.current[0]).toBe(false)
78
-
79
- jest.advanceTimersByTime(500)
80
-
81
- act(() => {
82
- setState(false)
83
- })
84
- jest.advanceTimersByTime(600)
85
- // Even after 1.1 seconds, the state should continue being false, because it was cancelled by a next setState call
86
- expect(result.current[0]).toBe(false)
87
- })
88
- })
@@ -1,36 +0,0 @@
1
- import {SetStateAction, useCallback, useEffect, useRef, useState} from 'react'
2
-
3
- /**
4
- * @beta
5
- */
6
- export function useDelayedState<S>(
7
- initialState: S | (() => S),
8
- ): [S, (nextState: SetStateAction<S>, delay?: number) => void] {
9
- const [state, setState] = useState(initialState)
10
- const delayedAction = useRef<NodeJS.Timeout | undefined>(undefined)
11
-
12
- const onStateChange = useCallback((nextState: SetStateAction<S>, delay?: number) => {
13
- const action = () => {
14
- setState(nextState)
15
- }
16
-
17
- // A new state change has been initiated, cancel the previous one.
18
- if (delayedAction.current) {
19
- clearTimeout(delayedAction.current)
20
- delayedAction.current = undefined
21
- }
22
-
23
- if (!delay) return action()
24
- delayedAction.current = setTimeout(action, delay)
25
- }, [])
26
-
27
- useEffect(() => {
28
- return () => {
29
- if (delayedAction.current) {
30
- clearTimeout(delayedAction.current)
31
- }
32
- }
33
- }, [])
34
-
35
- return [state, onStateChange]
36
- }
@@ -1,32 +0,0 @@
1
- import {Box, Card, Code, Container, Stack, Text, useElementRect} from '@sanity/ui'
2
- import {useState} from 'react'
3
-
4
- import {Grid} from '../../../primitives'
5
-
6
- export default function ExampleStory() {
7
- const [element, setElement] = useState<HTMLElement | null>(null)
8
- const rect = useElementRect(element)
9
- const size = {width: rect?.width || 0, height: rect?.height || 0}
10
-
11
- return (
12
- <Box padding={[3, 4, 5]}>
13
- <Container width={1}>
14
- <Stack space={4}>
15
- <Grid columns={[1, 2, 3]}>
16
- <Card ref={setElement} tone="transparent">
17
- <Text>rect</Text>
18
- </Card>
19
- </Grid>
20
-
21
- <div style={{height: 11}}>
22
- <Card scheme="dark" style={{position: 'absolute', ...size}} />
23
- </div>
24
-
25
- <Code language="json" size={1}>
26
- {JSON.stringify(size)}
27
- </Code>
28
- </Stack>
29
- </Container>
30
- </Box>
31
- )
32
- }
@@ -1,14 +0,0 @@
1
- import {defineScope} from '@sanity/ui-workshop'
2
- import {lazy} from 'react'
3
-
4
- export default defineScope({
5
- name: 'hooks/useElementRect',
6
- title: 'useElementRect',
7
- stories: [
8
- {
9
- name: 'example',
10
- title: 'Example',
11
- component: lazy(() => import('./example')),
12
- },
13
- ],
14
- })
@@ -1 +0,0 @@
1
- export * from './useElementRect'
@@ -1,13 +0,0 @@
1
- import {useElementSize} from '../useElementSize'
2
-
3
- /**
4
- * Subscribe to the rect of a DOM element.
5
- * @beta
6
- *
7
- * @deprecated Use `useElementSize` instead
8
- */
9
- export function useElementRect(element: HTMLElement | null): DOMRectReadOnly | null {
10
- const elementSize = useElementSize(element)
11
-
12
- return elementSize?._contentRect || null
13
- }
@@ -1,19 +0,0 @@
1
- import {useEffect, useState} from 'react'
2
-
3
- import {_elementSizeObserver, ElementSize} from '../observers/elementSizeObserver'
4
-
5
- /**
6
- * Subscribe to the size of a DOM element.
7
- * @beta
8
- */
9
- export function useElementSize(element: HTMLElement | null): ElementSize | null {
10
- const [size, setSize] = useState<ElementSize | null>(null)
11
-
12
- useEffect(() => {
13
- if (!element) return undefined
14
-
15
- return _elementSizeObserver.subscribe(element, setSize)
16
- }, [element])
17
-
18
- return size
19
- }
@@ -1,19 +0,0 @@
1
- import {useImperativeHandle, useRef} from 'react'
2
-
3
- /**
4
- * @beta
5
- * @deprecated use `useImperativeHandle` instead
6
- * @example
7
- * ```diff
8
- * -const ref = useForwardedRef(forwardedRef)
9
- * +const ref = useRef(null)
10
- * +useImperativeHandle(forwardedRef, () => ref.current)
11
- * ```
12
- */
13
- export function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {
14
- const innerRef = useRef<T | null>(null)
15
-
16
- useImperativeHandle(ref, () => innerRef.current!)
17
-
18
- return innerRef
19
- }
@@ -1,24 +0,0 @@
1
- import {useEffect} from 'react'
2
- import {useEffectEvent} from 'use-effect-event'
3
-
4
- /**
5
- * Adds global keydown event listener to the window.
6
- *
7
- * @param onKeyDown - The function to call when a keydown event is triggered.
8
- * @param options - The options to pass to the addEventListener function (example, capture: true)
9
- * @beta
10
- */
11
- export function useGlobalKeyDown(
12
- onKeyDown: (event: KeyboardEvent) => void,
13
- options?: AddEventListenerOptions,
14
- ): void {
15
- const handleKeyDown = useEffectEvent((event: KeyboardEvent) => onKeyDown(event))
16
-
17
- useEffect(() => {
18
- const handler = (event: KeyboardEvent) => handleKeyDown(event)
19
-
20
- window.addEventListener('keydown', handler, options)
21
-
22
- return () => window.removeEventListener('keydown', handler, options)
23
- }, [options])
24
- }
@@ -1,7 +0,0 @@
1
- import {useEffect, useLayoutEffect} from 'react'
2
-
3
- /**
4
- * @beta
5
- * @deprecated use `useLayoutEffect` instead, or `useEffect` if possible
6
- */
7
- export const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect
@@ -1,28 +0,0 @@
1
- import {useCallback, useDebugValue, useSyncExternalStore} from 'react'
2
-
3
- /**
4
- * Efficiently subscribes to `window.matchMedia` queries
5
- *
6
- * @param getServerSnapshot - Only called during server-side rendering, and hydration if using hydrateRoot. Required if the hook is called during SSR (https://react.dev/reference/react/useSyncExternalStore#adding-support-for-server-rendering)
7
- *
8
- * @public
9
- */
10
- export function useMatchMedia(
11
- mediaQueryString: `(${string})`,
12
- getServerSnapshot?: () => boolean,
13
- ): boolean {
14
- useDebugValue(mediaQueryString)
15
-
16
- return useSyncExternalStore(
17
- useCallback(
18
- (onStoreChange) => {
19
- const media = window.matchMedia(mediaQueryString)
20
- media.addEventListener('change', onStoreChange)
21
- return () => media.removeEventListener('change', onStoreChange)
22
- },
23
- [mediaQueryString],
24
- ),
25
- () => window.matchMedia(mediaQueryString).matches,
26
- getServerSnapshot,
27
- )
28
- }
@@ -1,14 +0,0 @@
1
- import {defineScope} from '@sanity/ui-workshop'
2
- import {lazy} from 'react'
3
-
4
- export default defineScope({
5
- name: 'hooks/use-media-index',
6
- title: 'useMediaIndex',
7
- stories: [
8
- {
9
- name: 'test',
10
- title: 'Test',
11
- component: lazy(() => import('./test')),
12
- },
13
- ],
14
- })
@@ -1,14 +0,0 @@
1
- import {Card, Stack, Text, useMediaIndex} from '@sanity/ui'
2
-
3
- export default function TestStory() {
4
- const mediaIndex = useMediaIndex()
5
-
6
- return (
7
- <Card padding={[3, 4, 5]}>
8
- <Stack space={2}>
9
- <Text weight="medium">The current media index is {mediaIndex}.</Text>
10
- <Text muted>Try resizing the browser.</Text>
11
- </Stack>
12
- </Card>
13
- )
14
- }
@@ -1 +0,0 @@
1
- export * from './useMediaIndex'
@@ -1,36 +0,0 @@
1
- /** @jest-environment node */
2
-
3
- import {buildTheme} from '@sanity/ui/theme'
4
- import {renderToStaticMarkup, renderToString} from 'react-dom/server'
5
-
6
- import {ThemeProvider} from '../../theme'
7
- import {useMediaIndex} from './useMediaIndex'
8
-
9
- const theme = buildTheme()
10
-
11
- function Log() {
12
- const mediaIndex = useMediaIndex()
13
-
14
- return <>mediaIndex: {JSON.stringify(mediaIndex)}</>
15
- }
16
-
17
- describe('useMediaIndex', () => {
18
- it(`SSR to static markup returns 0`, () => {
19
- expect(
20
- renderToStaticMarkup(
21
- <ThemeProvider theme={theme}>
22
- <Log />
23
- </ThemeProvider>,
24
- ),
25
- ).toBe('mediaIndex: 0')
26
- })
27
- it(`SSR to markup for hydration doesn't throw`, () => {
28
- expect(
29
- renderToString(
30
- <ThemeProvider theme={theme}>
31
- <Log />
32
- </ThemeProvider>,
33
- ),
34
- ).toMatchInlineSnapshot(`"mediaIndex: <!-- -->0"`)
35
- })
36
- })
@@ -1,102 +0,0 @@
1
- import {useMemo, useSyncExternalStore} from 'react'
2
-
3
- import {useTheme_v2} from '../../theme'
4
-
5
- /**
6
- * @internal
7
- */
8
- export interface _MediaStore {
9
- subscribe: (onStoreChange: () => void) => () => void
10
- getSnapshot: () => number
11
- }
12
-
13
- type MediaQueryMinWidth = `(min-width: ${number}px)`
14
- type MediaQueryMaxWidth = `(max-width: ${number}px)`
15
- type MediaQueryMinMaxWidth = `${MediaQueryMinWidth} and ${MediaQueryMaxWidth}`
16
- type MediaQuery = `screen and ${MediaQueryMinWidth | MediaQueryMaxWidth | MediaQueryMinMaxWidth}`
17
-
18
- function _getMediaQuery(media: number[], index: number): MediaQuery {
19
- if (index === 0) {
20
- return `screen and (max-width: ${media[index] - 1}px)`
21
- }
22
-
23
- if (index === media.length) {
24
- return `screen and (min-width: ${media[index - 1]}px)`
25
- }
26
-
27
- return `screen and (min-width: ${media[index - 1]}px) and (max-width: ${media[index] - 1}px)`
28
- }
29
-
30
- function _createMediaStore(media: number[]): _MediaStore {
31
- const mediaLen = media.length
32
- let sizes: {mq: MediaQueryList; index: number}[]
33
-
34
- // The _createMediaStore function is called in both server and client environments.
35
- // However since subscribe and getSnapshot are only called on the client we lazy init what we need for them
36
- // so that we don't need to run checks for wether it's safe to call `window.matchMedia`
37
- const getSizes = () => {
38
- if (!sizes) {
39
- sizes = []
40
-
41
- for (let index = mediaLen; index > -1; index -= 1) {
42
- const mediaQuery = _getMediaQuery(media, index)
43
-
44
- sizes.push({index, mq: window.matchMedia(mediaQuery)})
45
- }
46
- }
47
-
48
- return sizes
49
- }
50
-
51
- const getSnapshot = () => {
52
- for (const {index, mq} of getSizes()) {
53
- if (mq.matches) return index
54
- }
55
-
56
- return 0
57
- }
58
-
59
- const subscribe = (onStoreChange: () => void) => {
60
- const disposeFns: (() => void)[] = []
61
-
62
- for (const {mq} of getSizes()) {
63
- const handleChange = () => {
64
- if (mq.matches) onStoreChange()
65
- }
66
-
67
- mq.addEventListener('change', handleChange)
68
-
69
- disposeFns.push(() => mq.removeEventListener('change', handleChange))
70
- }
71
-
72
- return () => {
73
- for (const disposeFn of disposeFns) {
74
- disposeFn()
75
- }
76
- }
77
- }
78
-
79
- return {getSnapshot, subscribe}
80
- }
81
-
82
- /**
83
- * Only called during server-side rendering, and hydration if using hydrateRoot
84
- * Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query
85
- * and we assume `(prefers-color-scheme: light)` since it's the most common scheme
86
- *
87
- * @link https://beta.reactjs.org/apis/react/useSyncExternalStore#adding-support-for-server-rendering
88
- */
89
- function getServerSnapshot() {
90
- return 0
91
- }
92
-
93
- /**
94
- * This API might change. DO NOT USE IN PRODUCTION.
95
- * @beta
96
- */
97
- export function useMediaIndex(): number {
98
- const {media} = useTheme_v2()
99
- const store = useMemo(() => _createMediaStore(media), [media])
100
-
101
- return useSyncExternalStore(store.subscribe, store.getSnapshot, getServerSnapshot)
102
- }
@@ -1,15 +0,0 @@
1
- import {useSyncExternalStore} from 'react'
2
-
3
- /**
4
- * Some components should only render after mounting to the DOM, and not be rendered at all during SSR renderToString or equivalent.
5
- * @public
6
- */
7
- export function useMounted(): boolean {
8
- return useSyncExternalStore(
9
- subscribe,
10
- () => true,
11
- () => false,
12
- )
13
- }
14
-
15
- const subscribe = () => () => {}