@sanity/ui 3.3.2 → 3.3.4

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 (437) hide show
  1. package/dist/index.d.mts +8 -8
  2. package/dist/index.d.mts.map +1 -1
  3. package/dist/index.d.ts +8 -8
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +16 -16
  6. package/dist/index.mjs +16 -16
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/tabList.js +2 -2
  9. package/dist/tabList.mjs +2 -2
  10. package/dist/tabList.mjs.map +1 -1
  11. package/dist/useTheme.d.mts +3 -3
  12. package/dist/useTheme.d.mts.map +1 -1
  13. package/dist/useTheme.d.ts +3 -3
  14. package/dist/useTheme.d.ts.map +1 -1
  15. package/package.json +8 -13
  16. package/exports/_visual-editing.ts +0 -32
  17. package/exports/index.ts +0 -1
  18. package/exports/theme.ts +0 -1
  19. package/src/core/_compat.ts +0 -294
  20. package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
  21. package/src/core/components/autocomplete/autocomplete.tsx +0 -775
  22. package/src/core/components/autocomplete/autocompleteOption.tsx +0 -46
  23. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  24. package/src/core/components/autocomplete/constants.ts +0 -28
  25. package/src/core/components/autocomplete/index.ts +0 -2
  26. package/src/core/components/autocomplete/types.ts +0 -108
  27. package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
  28. package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -54
  29. package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -136
  30. package/src/core/components/breadcrumbs/index.ts +0 -1
  31. package/src/core/components/dialog/dialog.tsx +0 -433
  32. package/src/core/components/dialog/dialogContext.ts +0 -20
  33. package/src/core/components/dialog/dialogProvider.tsx +0 -35
  34. package/src/core/components/dialog/index.ts +0 -4
  35. package/src/core/components/dialog/styles.ts +0 -77
  36. package/src/core/components/dialog/useDialog.ts +0 -11
  37. package/src/core/components/hotkeys/hotkeys.test.tsx +0 -47
  38. package/src/core/components/hotkeys/hotkeys.tsx +0 -68
  39. package/src/core/components/hotkeys/index.ts +0 -1
  40. package/src/core/components/index.ts +0 -9
  41. package/src/core/components/menu/helpers.ts +0 -82
  42. package/src/core/components/menu/index.ts +0 -5
  43. package/src/core/components/menu/menu.spacing.test.tsx +0 -68
  44. package/src/core/components/menu/menu.test.tsx +0 -128
  45. package/src/core/components/menu/menu.tsx +0 -180
  46. package/src/core/components/menu/menuButton.tsx +0 -276
  47. package/src/core/components/menu/menuContext.ts +0 -18
  48. package/src/core/components/menu/menuDivider.ts +0 -24
  49. package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -66
  50. package/src/core/components/menu/menuGroup.tsx +0 -237
  51. package/src/core/components/menu/menuItem.spacing.test.tsx +0 -62
  52. package/src/core/components/menu/menuItem.tsx +0 -201
  53. package/src/core/components/menu/useMenu.ts +0 -21
  54. package/src/core/components/menu/useMenuController.ts +0 -233
  55. package/src/core/components/skeleton/index.ts +0 -2
  56. package/src/core/components/skeleton/skeleton.tsx +0 -58
  57. package/src/core/components/skeleton/styles.ts +0 -50
  58. package/src/core/components/skeleton/textSkeleton.tsx +0 -122
  59. package/src/core/components/tab/index.ts +0 -3
  60. package/src/core/components/tab/tab.tsx +0 -102
  61. package/src/core/components/tab/tabList.test.tsx +0 -50
  62. package/src/core/components/tab/tabList.tsx +0 -71
  63. package/src/core/components/tab/tabPanel.tsx +0 -39
  64. package/src/core/components/toast/index.ts +0 -4
  65. package/src/core/components/toast/styles.ts +0 -77
  66. package/src/core/components/toast/toast.test.tsx +0 -106
  67. package/src/core/components/toast/toast.tsx +0 -199
  68. package/src/core/components/toast/toastContext.ts +0 -7
  69. package/src/core/components/toast/toastLayer.tsx +0 -52
  70. package/src/core/components/toast/toastProvider.tsx +0 -113
  71. package/src/core/components/toast/toastState.ts +0 -6
  72. package/src/core/components/toast/types.ts +0 -26
  73. package/src/core/components/toast/useToast.ts +0 -25
  74. package/src/core/components/tree/helpers.ts +0 -105
  75. package/src/core/components/tree/index.ts +0 -4
  76. package/src/core/components/tree/style.ts +0 -105
  77. package/src/core/components/tree/tree.test.tsx +0 -60
  78. package/src/core/components/tree/tree.tsx +0 -242
  79. package/src/core/components/tree/treeContext.ts +0 -10
  80. package/src/core/components/tree/treeGroup.tsx +0 -29
  81. package/src/core/components/tree/treeItem.test.tsx +0 -70
  82. package/src/core/components/tree/treeItem.tsx +0 -225
  83. package/src/core/components/tree/types.ts +0 -25
  84. package/src/core/components/tree/useTree.ts +0 -17
  85. package/src/core/constants.ts +0 -79
  86. package/src/core/helpers/animation.ts +0 -27
  87. package/src/core/helpers/element.ts +0 -55
  88. package/src/core/helpers/focus.ts +0 -100
  89. package/src/core/helpers/index.ts +0 -4
  90. package/src/core/helpers/scroll.ts +0 -15
  91. package/src/core/hooks/index.ts +0 -13
  92. package/src/core/hooks/useArrayProp.ts +0 -17
  93. package/src/core/hooks/useClickOutside.test.tsx +0 -510
  94. package/src/core/hooks/useClickOutside.ts +0 -118
  95. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -119
  96. package/src/core/hooks/useClickOutsideEvent.ts +0 -73
  97. package/src/core/hooks/useCustomValidity.ts +0 -13
  98. package/src/core/hooks/useDelayed.test.ts +0 -89
  99. package/src/core/hooks/useDelayedState.ts +0 -36
  100. package/src/core/hooks/useElementRect/index.ts +0 -1
  101. package/src/core/hooks/useElementRect/useElementRect.ts +0 -14
  102. package/src/core/hooks/useElementSize.ts +0 -19
  103. package/src/core/hooks/useForwardedRef.ts +0 -20
  104. package/src/core/hooks/useGlobalKeyDown.ts +0 -24
  105. package/src/core/hooks/useIsomorphicEffect.ts +0 -7
  106. package/src/core/hooks/useMatchMedia.ts +0 -28
  107. package/src/core/hooks/useMediaIndex/index.ts +0 -1
  108. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -37
  109. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
  110. package/src/core/hooks/useMounted.ts +0 -15
  111. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -58
  112. package/src/core/hooks/usePrefersDark.test.tsx +0 -21
  113. package/src/core/hooks/usePrefersDark.ts +0 -16
  114. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -58
  115. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -21
  116. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  117. package/src/core/index.ts +0 -10
  118. package/src/core/lib/createGlobalScopedContext.ts +0 -37
  119. package/src/core/lib/globalScope.ts +0 -20
  120. package/src/core/lib/isRecord.ts +0 -3
  121. package/src/core/middleware/origin.ts +0 -47
  122. package/src/core/observers/elementSizeObserver.ts +0 -117
  123. package/src/core/observers/index.ts +0 -2
  124. package/src/core/observers/resizeObserver.ts +0 -9
  125. package/src/core/primitives/_selectable/index.ts +0 -1
  126. package/src/core/primitives/_selectable/selectable.tsx +0 -15
  127. package/src/core/primitives/_selectable/style.ts +0 -115
  128. package/src/core/primitives/avatar/avatar.tsx +0 -200
  129. package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
  130. package/src/core/primitives/avatar/avatarStack.tsx +0 -101
  131. package/src/core/primitives/avatar/index.ts +0 -4
  132. package/src/core/primitives/avatar/styles.ts +0 -167
  133. package/src/core/primitives/avatar/types.ts +0 -17
  134. package/src/core/primitives/badge/badge.test.tsx +0 -17
  135. package/src/core/primitives/badge/badge.tsx +0 -72
  136. package/src/core/primitives/badge/index.ts +0 -1
  137. package/src/core/primitives/badge/styles.ts +0 -20
  138. package/src/core/primitives/badge/types.ts +0 -8
  139. package/src/core/primitives/box/box.test.tsx +0 -155
  140. package/src/core/primitives/box/box.tsx +0 -162
  141. package/src/core/primitives/box/index.ts +0 -1
  142. package/src/core/primitives/button/button.test.tsx +0 -86
  143. package/src/core/primitives/button/button.tsx +0 -214
  144. package/src/core/primitives/button/index.ts +0 -1
  145. package/src/core/primitives/button/styles.ts +0 -118
  146. package/src/core/primitives/card/card.tsx +0 -125
  147. package/src/core/primitives/card/index.ts +0 -2
  148. package/src/core/primitives/card/styles.ts +0 -147
  149. package/src/core/primitives/card/types.ts +0 -12
  150. package/src/core/primitives/checkbox/checkbox.tsx +0 -73
  151. package/src/core/primitives/checkbox/index.ts +0 -1
  152. package/src/core/primitives/checkbox/styles.ts +0 -128
  153. package/src/core/primitives/code/code.tsx +0 -56
  154. package/src/core/primitives/code/index.ts +0 -1
  155. package/src/core/primitives/code/refractor.tsx +0 -22
  156. package/src/core/primitives/code/styles.ts +0 -77
  157. package/src/core/primitives/container/container.tsx +0 -55
  158. package/src/core/primitives/container/index.ts +0 -2
  159. package/src/core/primitives/container/styles.ts +0 -23
  160. package/src/core/primitives/container/types.ts +0 -6
  161. package/src/core/primitives/flex/flex.tsx +0 -63
  162. package/src/core/primitives/flex/index.ts +0 -1
  163. package/src/core/primitives/grid/grid.test.tsx +0 -86
  164. package/src/core/primitives/grid/grid.tsx +0 -77
  165. package/src/core/primitives/grid/index.ts +0 -1
  166. package/src/core/primitives/heading/heading.tsx +0 -89
  167. package/src/core/primitives/heading/index.ts +0 -1
  168. package/src/core/primitives/heading/styles.ts +0 -64
  169. package/src/core/primitives/heading/types.ts +0 -7
  170. package/src/core/primitives/index.ts +0 -27
  171. package/src/core/primitives/inline/index.ts +0 -1
  172. package/src/core/primitives/inline/inline.test.tsx +0 -55
  173. package/src/core/primitives/inline/inline.tsx +0 -66
  174. package/src/core/primitives/inline/styles.ts +0 -32
  175. package/src/core/primitives/inline/types.ts +0 -6
  176. package/src/core/primitives/kbd/index.ts +0 -1
  177. package/src/core/primitives/kbd/kbd.tsx +0 -73
  178. package/src/core/primitives/label/index.ts +0 -1
  179. package/src/core/primitives/label/label.tsx +0 -88
  180. package/src/core/primitives/label/styles.ts +0 -45
  181. package/src/core/primitives/popover/constants.ts +0 -22
  182. package/src/core/primitives/popover/floating-ui/size.ts +0 -99
  183. package/src/core/primitives/popover/helpers.ts +0 -31
  184. package/src/core/primitives/popover/index.ts +0 -2
  185. package/src/core/primitives/popover/popover.tsx +0 -512
  186. package/src/core/primitives/popover/popoverCard.tsx +0 -167
  187. package/src/core/primitives/popover/types.ts +0 -6
  188. package/src/core/primitives/radio/index.ts +0 -1
  189. package/src/core/primitives/radio/radio.tsx +0 -51
  190. package/src/core/primitives/radio/styles.ts +0 -117
  191. package/src/core/primitives/select/index.ts +0 -1
  192. package/src/core/primitives/select/select.test.tsx +0 -56
  193. package/src/core/primitives/select/select.tsx +0 -95
  194. package/src/core/primitives/select/styles.ts +0 -166
  195. package/src/core/primitives/spinner/index.ts +0 -1
  196. package/src/core/primitives/spinner/spinner.tsx +0 -46
  197. package/src/core/primitives/stack/index.ts +0 -1
  198. package/src/core/primitives/stack/stack.test.tsx +0 -61
  199. package/src/core/primitives/stack/stack.tsx +0 -59
  200. package/src/core/primitives/stack/styles.ts +0 -33
  201. package/src/core/primitives/switch/index.ts +0 -1
  202. package/src/core/primitives/switch/styles.ts +0 -173
  203. package/src/core/primitives/switch/switch.tsx +0 -68
  204. package/src/core/primitives/text/index.ts +0 -1
  205. package/src/core/primitives/text/styles.ts +0 -74
  206. package/src/core/primitives/text/text.tsx +0 -90
  207. package/src/core/primitives/textArea/index.ts +0 -1
  208. package/src/core/primitives/textArea/textArea.tsx +0 -120
  209. package/src/core/primitives/textInput/index.ts +0 -1
  210. package/src/core/primitives/textInput/textInput.test.tsx +0 -52
  211. package/src/core/primitives/textInput/textInput.tsx +0 -398
  212. package/src/core/primitives/tooltip/constants.ts +0 -23
  213. package/src/core/primitives/tooltip/index.ts +0 -2
  214. package/src/core/primitives/tooltip/tooltip.test.tsx +0 -485
  215. package/src/core/primitives/tooltip/tooltip.tsx +0 -497
  216. package/src/core/primitives/tooltip/tooltipCard.tsx +0 -110
  217. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  218. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
  219. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
  220. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -12
  221. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  222. package/src/core/primitives/types.ts +0 -179
  223. package/src/core/styles/border/borderStyle.ts +0 -56
  224. package/src/core/styles/border/index.ts +0 -2
  225. package/src/core/styles/border/types.ts +0 -10
  226. package/src/core/styles/box/boxStyle.ts +0 -69
  227. package/src/core/styles/box/index.ts +0 -2
  228. package/src/core/styles/box/types.ts +0 -11
  229. package/src/core/styles/card/_cardColorStyle.ts +0 -108
  230. package/src/core/styles/card/index.ts +0 -1
  231. package/src/core/styles/flex/flexItemStyle.ts +0 -27
  232. package/src/core/styles/flex/flexStyle.ts +0 -70
  233. package/src/core/styles/flex/index.ts +0 -3
  234. package/src/core/styles/flex/types.ts +0 -24
  235. package/src/core/styles/focusRing/index.ts +0 -25
  236. package/src/core/styles/font/codeFontStyle.ts +0 -13
  237. package/src/core/styles/font/headingFontStyle.ts +0 -13
  238. package/src/core/styles/font/index.ts +0 -6
  239. package/src/core/styles/font/labelFontStyle.ts +0 -13
  240. package/src/core/styles/font/responsiveFont.ts +0 -100
  241. package/src/core/styles/font/textAlignStyle.ts +0 -19
  242. package/src/core/styles/font/textFontStyle.ts +0 -13
  243. package/src/core/styles/font/types.ts +0 -33
  244. package/src/core/styles/grid/gridItemStyle.ts +0 -82
  245. package/src/core/styles/grid/gridStyle.ts +0 -109
  246. package/src/core/styles/grid/index.ts +0 -3
  247. package/src/core/styles/grid/types.ts +0 -37
  248. package/src/core/styles/helpers.ts +0 -72
  249. package/src/core/styles/index.ts +0 -5
  250. package/src/core/styles/input/index.ts +0 -2
  251. package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
  252. package/src/core/styles/input/textInputStyle.ts +0 -263
  253. package/src/core/styles/internal.ts +0 -12
  254. package/src/core/styles/margin/index.ts +0 -2
  255. package/src/core/styles/margin/marginStyle.ts +0 -22
  256. package/src/core/styles/margin/marginsStyle.test.ts +0 -34
  257. package/src/core/styles/margin/types.ts +0 -9
  258. package/src/core/styles/padding/index.ts +0 -2
  259. package/src/core/styles/padding/paddingStyle.test.ts +0 -34
  260. package/src/core/styles/padding/paddingStyle.ts +0 -22
  261. package/src/core/styles/padding/types.ts +0 -12
  262. package/src/core/styles/radius/index.ts +0 -2
  263. package/src/core/styles/radius/radiusStyle.ts +0 -23
  264. package/src/core/styles/radius/types.ts +0 -8
  265. package/src/core/styles/shadow/index.ts +0 -2
  266. package/src/core/styles/shadow/shadowStyle.ts +0 -29
  267. package/src/core/styles/shadow/types.ts +0 -6
  268. package/src/core/styles/types.ts +0 -8
  269. package/src/core/theme/index.ts +0 -5
  270. package/src/core/theme/theme.test.tsx +0 -77
  271. package/src/core/theme/themeColorProvider.tsx +0 -29
  272. package/src/core/theme/themeContext.ts +0 -10
  273. package/src/core/theme/themeProvider.tsx +0 -62
  274. package/src/core/theme/types.ts +0 -12
  275. package/src/core/theme/useRootTheme.ts +0 -18
  276. package/src/core/theme/useTheme.ts +0 -18
  277. package/src/core/types/avatar.ts +0 -14
  278. package/src/core/types/badge.ts +0 -12
  279. package/src/core/types/box.ts +0 -19
  280. package/src/core/types/button.ts +0 -21
  281. package/src/core/types/card.ts +0 -6
  282. package/src/core/types/component.ts +0 -32
  283. package/src/core/types/dialog.ts +0 -4
  284. package/src/core/types/flex.ts +0 -30
  285. package/src/core/types/grid.ts +0 -14
  286. package/src/core/types/gridItem.ts +0 -29
  287. package/src/core/types/index.ts +0 -15
  288. package/src/core/types/placement.ts +0 -18
  289. package/src/core/types/popover.ts +0 -4
  290. package/src/core/types/radius.ts +0 -4
  291. package/src/core/types/selectable.ts +0 -6
  292. package/src/core/types/text.ts +0 -4
  293. package/src/core/utils/arrow/arrow.tsx +0 -124
  294. package/src/core/utils/arrow/cmds.ts +0 -91
  295. package/src/core/utils/arrow/index.ts +0 -1
  296. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -105
  297. package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
  298. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
  299. package/src/core/utils/boundaryElement/index.ts +0 -3
  300. package/src/core/utils/boundaryElement/types.ts +0 -7
  301. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
  302. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -22
  303. package/src/core/utils/conditionalWrapper/index.ts +0 -1
  304. package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
  305. package/src/core/utils/elementQuery/helpers.ts +0 -27
  306. package/src/core/utils/elementQuery/index.ts +0 -1
  307. package/src/core/utils/errorBoundary.tsx +0 -48
  308. package/src/core/utils/getElementRef.ts +0 -31
  309. package/src/core/utils/index.ts +0 -9
  310. package/src/core/utils/layer/getLayerContext.test.ts +0 -32
  311. package/src/core/utils/layer/getLayerContext.ts +0 -21
  312. package/src/core/utils/layer/index.ts +0 -4
  313. package/src/core/utils/layer/layer.test.tsx +0 -113
  314. package/src/core/utils/layer/layer.tsx +0 -99
  315. package/src/core/utils/layer/layerContext.ts +0 -7
  316. package/src/core/utils/layer/layerProvider.tsx +0 -111
  317. package/src/core/utils/layer/types.ts +0 -9
  318. package/src/core/utils/layer/useLayer.ts +0 -28
  319. package/src/core/utils/portal/index.ts +0 -4
  320. package/src/core/utils/portal/portal.test.tsx +0 -108
  321. package/src/core/utils/portal/portal.ts +0 -32
  322. package/src/core/utils/portal/portalContext.ts +0 -31
  323. package/src/core/utils/portal/portalProvider.tsx +0 -48
  324. package/src/core/utils/portal/types.ts +0 -9
  325. package/src/core/utils/portal/usePortal.ts +0 -25
  326. package/src/core/utils/spanWithTextOverflow.tsx +0 -10
  327. package/src/core/utils/srOnly/index.ts +0 -1
  328. package/src/core/utils/srOnly/srOnly.tsx +0 -36
  329. package/src/core/utils/virtualList/index.ts +0 -1
  330. package/src/core/utils/virtualList/virtualList.tsx +0 -201
  331. package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -86
  332. package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -58
  333. package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -27
  334. package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -60
  335. package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -66
  336. package/src/theme/build/_deprecated/color/color.test.ts +0 -67
  337. package/src/theme/build/_deprecated/color/defaults.ts +0 -391
  338. package/src/theme/build/_deprecated/color/factory.ts +0 -178
  339. package/src/theme/build/_deprecated/color/index.ts +0 -1
  340. package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -86
  341. package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -58
  342. package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -23
  343. package/src/theme/build/buildColorTheme.test.ts +0 -185
  344. package/src/theme/build/buildColorTheme.ts +0 -507
  345. package/src/theme/build/buildTheme.test.ts +0 -89
  346. package/src/theme/build/buildTheme.ts +0 -36
  347. package/src/theme/build/colorToken/colorToken.ts +0 -19
  348. package/src/theme/build/colorToken/compileColorToken.ts +0 -21
  349. package/src/theme/build/colorToken/index.ts +0 -2
  350. package/src/theme/build/colorToken/types.ts +0 -6
  351. package/src/theme/build/index.ts +0 -3
  352. package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
  353. package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
  354. package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
  355. package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
  356. package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -70
  357. package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
  358. package/src/theme/build/lib/color-fns/convert.ts +0 -150
  359. package/src/theme/build/lib/color-fns/index.ts +0 -6
  360. package/src/theme/build/lib/color-fns/parse.ts +0 -60
  361. package/src/theme/build/lib/color-fns/rgba.ts +0 -10
  362. package/src/theme/build/lib/color-fns/types.ts +0 -28
  363. package/src/theme/build/lib/isRecord.ts +0 -3
  364. package/src/theme/build/lib/lazy.ts +0 -30
  365. package/src/theme/build/lib/utils.ts +0 -19
  366. package/src/theme/build/merge.ts +0 -31
  367. package/src/theme/build/mixThemeColor.test.ts +0 -23
  368. package/src/theme/build/mixThemeColor.ts +0 -53
  369. package/src/theme/build/renderColorTheme.ts +0 -538
  370. package/src/theme/build/renderColorValue.ts +0 -83
  371. package/src/theme/build/resolveColorTokens.ts +0 -274
  372. package/src/theme/build/theme.test.ts +0 -29
  373. package/src/theme/config/helpers.ts +0 -60
  374. package/src/theme/config/index.ts +0 -4
  375. package/src/theme/config/system.ts +0 -117
  376. package/src/theme/config/tokens/color/index.ts +0 -1
  377. package/src/theme/config/tokens/color/types.ts +0 -135
  378. package/src/theme/config/tokens/index.ts +0 -4
  379. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -66
  380. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  381. package/src/theme/config/tokens/parseTokenValue.test.ts +0 -44
  382. package/src/theme/config/tokens/parseTokenValue.ts +0 -134
  383. package/src/theme/config/tokens/types.ts +0 -53
  384. package/src/theme/config/types.ts +0 -46
  385. package/src/theme/defaults/colorPalette.ts +0 -5
  386. package/src/theme/defaults/colorTokens.ts +0 -648
  387. package/src/theme/defaults/config.ts +0 -84
  388. package/src/theme/defaults/fonts.ts +0 -227
  389. package/src/theme/getScopedTheme.ts +0 -103
  390. package/src/theme/index.ts +0 -5
  391. package/src/theme/system/avatar.ts +0 -14
  392. package/src/theme/system/color/_constants.ts +0 -45
  393. package/src/theme/system/color/_helpers.ts +0 -28
  394. package/src/theme/system/color/_system.ts +0 -40
  395. package/src/theme/system/color/avatar.ts +0 -15
  396. package/src/theme/system/color/badge.ts +0 -16
  397. package/src/theme/system/color/button.ts +0 -17
  398. package/src/theme/system/color/color.ts +0 -34
  399. package/src/theme/system/color/index.ts +0 -13
  400. package/src/theme/system/color/input.ts +0 -25
  401. package/src/theme/system/color/kbd.ts +0 -8
  402. package/src/theme/system/color/selectable.ts +0 -12
  403. package/src/theme/system/color/shadow.ts +0 -7
  404. package/src/theme/system/color/state.ts +0 -43
  405. package/src/theme/system/color/syntax.ts +0 -41
  406. package/src/theme/system/css.ts +0 -14
  407. package/src/theme/system/focusRing.ts +0 -7
  408. package/src/theme/system/font.ts +0 -52
  409. package/src/theme/system/index.ts +0 -11
  410. package/src/theme/system/input.ts +0 -33
  411. package/src/theme/system/layer.ts +0 -8
  412. package/src/theme/system/shadow.ts +0 -19
  413. package/src/theme/system/styles.ts +0 -13
  414. package/src/theme/system/theme.ts +0 -142
  415. package/src/theme/system/v0/avatar.ts +0 -10
  416. package/src/theme/system/v0/color/_generic.ts +0 -35
  417. package/src/theme/system/v0/color/_system.ts +0 -18
  418. package/src/theme/system/v0/color/base.ts +0 -21
  419. package/src/theme/system/v0/color/button.ts +0 -56
  420. package/src/theme/system/v0/color/card.ts +0 -25
  421. package/src/theme/system/v0/color/color.ts +0 -51
  422. package/src/theme/system/v0/color/index.ts +0 -11
  423. package/src/theme/system/v0/color/input.ts +0 -40
  424. package/src/theme/system/v0/color/muted.ts +0 -37
  425. package/src/theme/system/v0/color/selectable.ts +0 -42
  426. package/src/theme/system/v0/color/solid.ts +0 -37
  427. package/src/theme/system/v0/color/spot.ts +0 -14
  428. package/src/theme/system/v0/index.ts +0 -3
  429. package/src/theme/system/v0/input.ts +0 -23
  430. package/src/theme/versioning/getTheme_v2.ts +0 -72
  431. package/src/theme/versioning/index.ts +0 -5
  432. package/src/theme/versioning/is_v0.ts +0 -6
  433. package/src/theme/versioning/is_v2.ts +0 -6
  434. package/src/theme/versioning/themeColor_v0_v2.ts +0 -250
  435. package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -50
  436. package/src/theme/versioning/v0_v2.ts +0 -106
  437. package/src/theme/versioning/v2_v0.ts +0 -153
@@ -1,7 +0,0 @@
1
- import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'
2
- import {BoundaryElementContextValue} from './types'
3
-
4
- export const BoundaryElementContext = createGlobalScopedContext<BoundaryElementContextValue | null>(
5
- '@sanity/ui/context/boundaryElement',
6
- null,
7
- )
@@ -1,24 +0,0 @@
1
- import {useMemo} from 'react'
2
-
3
- import {BoundaryElementContext} from './boundaryElementContext'
4
- import {BoundaryElementContextValue} from './types'
5
-
6
- /**
7
- * @public
8
- */
9
- export interface BoundaryElementProviderProps {
10
- children: React.ReactNode
11
- element: HTMLElement | null
12
- }
13
-
14
- /**
15
- * @public
16
- */
17
- export function BoundaryElementProvider(props: BoundaryElementProviderProps): React.JSX.Element {
18
- const {children, element} = props
19
- const value: BoundaryElementContextValue = useMemo(() => ({version: 0.0, element}), [element])
20
-
21
- return <BoundaryElementContext.Provider value={value}>{children}</BoundaryElementContext.Provider>
22
- }
23
-
24
- BoundaryElementProvider.displayName = 'BoundaryElementProvider'
@@ -1,3 +0,0 @@
1
- export * from './boundaryElementProvider'
2
- export * from './types'
3
- export * from './useBoundaryElement'
@@ -1,7 +0,0 @@
1
- /**
2
- * @public
3
- */
4
- export interface BoundaryElementContextValue {
5
- version: 0.0
6
- element: HTMLElement | null
7
- }
@@ -1,26 +0,0 @@
1
- import {useContext} from 'react'
2
-
3
- import {isRecord} from '../../lib/isRecord'
4
- import {BoundaryElementContext} from './boundaryElementContext'
5
- import {BoundaryElementContextValue} from './types'
6
-
7
- const DEFAULT_VALUE: BoundaryElementContextValue = {
8
- version: 0.0,
9
- element: null,
10
- }
11
-
12
- /**
13
- * @public
14
- */
15
- export function useBoundaryElement(): BoundaryElementContextValue {
16
- const value = useContext(BoundaryElementContext)
17
-
18
- // NOTE: This check is for future-compatiblity
19
- // - If the value is not an object, it’s not compatible with the current version
20
- // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version
21
- if (value && (!isRecord(value) || value.version !== 0.0)) {
22
- throw new Error('useBoundaryElement(): the context value is not compatible')
23
- }
24
-
25
- return value || DEFAULT_VALUE
26
- }
@@ -1,22 +0,0 @@
1
- /**
2
- * @internal
3
- * @deprecated this component will be removed in the next major release
4
- */
5
- export function ConditionalWrapper({
6
- children,
7
- condition,
8
- wrapper,
9
- }: {
10
- children: React.ReactNode
11
- condition: boolean
12
- wrapper: (children: React.ReactNode) => React.ReactNode
13
- }): React.ReactNode {
14
- if (!condition) {
15
- return children
16
- }
17
-
18
- return wrapper(children)
19
- }
20
-
21
- // oxlint-disable-next-line no-deprecated
22
- ConditionalWrapper.displayName = 'ConditionalWrapper'
@@ -1 +0,0 @@
1
- export * from './conditionalWrapper'
@@ -1,53 +0,0 @@
1
- import {forwardRef, useImperativeHandle, useMemo, useState} from 'react'
2
-
3
- import {useElementSize} from '../../hooks'
4
- import {useTheme_v2} from '../../theme'
5
- import {findMaxBreakpoints, findMinBreakpoints} from './helpers'
6
-
7
- /**
8
- * DO NOT USE IN PRODUCTION.
9
- * @beta
10
- */
11
- export interface MediaQueryProps {
12
- as?: React.ElementType | keyof React.JSX.IntrinsicElements
13
- media?: number[]
14
- }
15
-
16
- /**
17
- * DO NOT USE IN PRODUCTION.
18
- * @beta
19
- */
20
- export const ElementQuery = forwardRef(function ElementQuery(
21
- props: MediaQueryProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'media'>,
22
- forwardedRef: React.ForwardedRef<HTMLDivElement>,
23
- ) {
24
- const theme = useTheme_v2()
25
- const {children, media: _media, ...restProps} = props
26
- const media = _media ?? theme.media
27
-
28
- const [element, setElement] = useState<HTMLDivElement | null>(null)
29
- const elementSize = useElementSize(element)
30
- const width = useMemo(() => elementSize?.border.width ?? window.innerWidth, [elementSize])
31
-
32
- const max = useMemo(() => {
33
- const eq = findMaxBreakpoints(media, width)
34
-
35
- return eq.length ? eq.join(' ') : undefined
36
- }, [media, width])
37
- const min = useMemo(() => {
38
- const eq = findMinBreakpoints(media, width)
39
-
40
- return eq.length ? eq.join(' ') : undefined
41
- }, [media, width])
42
-
43
- useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => element, [
44
- element,
45
- ])
46
-
47
- return (
48
- <div data-ui="ElementQuery" {...restProps} data-eq-max={max} data-eq-min={min} ref={setElement}>
49
- {children}
50
- </div>
51
- )
52
- })
53
- ElementQuery.displayName = 'ForwardRef(ElementQuery)'
@@ -1,27 +0,0 @@
1
- export function findMaxBreakpoints(media: number[], width: number): number[] {
2
- const ret: number[] = []
3
-
4
- for (let i = 0; i < media.length; i += 1) {
5
- const bp = media[i]
6
-
7
- if (bp > width) {
8
- ret.push(i)
9
- }
10
- }
11
-
12
- return ret
13
- }
14
-
15
- export function findMinBreakpoints(media: number[], width: number): number[] {
16
- const ret: number[] = []
17
-
18
- for (let i = 0; i < media.length; i += 1) {
19
- const bp = media[i]
20
-
21
- if (bp <= width) {
22
- ret.push(i)
23
- }
24
- }
25
-
26
- return ret
27
- }
@@ -1 +0,0 @@
1
- export * from './elementQuery'
@@ -1,48 +0,0 @@
1
- import {Component, PropsWithChildren} from 'react'
2
-
3
- import {Code} from '../primitives/code'
4
-
5
- /**
6
- * DO NOT USE IN PRODUCTION
7
- * @beta
8
- */
9
- export type ErrorBoundaryProps = PropsWithChildren<{
10
- onCatch: (params: {error: Error; info: React.ErrorInfo}) => void
11
- }>
12
-
13
- /**
14
- * DO NOT USE IN PRODUCTION
15
- * @beta
16
- */
17
- export interface ErrorBoundaryState {
18
- error: Error | null
19
- }
20
-
21
- /**
22
- * DO NOT USE IN PRODUCTION
23
- * @beta
24
- */
25
- export class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
26
- state: ErrorBoundaryState = {error: null}
27
-
28
- static getDerivedStateFromError(error: Error): ErrorBoundaryState {
29
- // Update state so the next render will show the fallback UI.
30
- return {error}
31
- }
32
-
33
- componentDidCatch(error: Error, info: React.ErrorInfo): void {
34
- this.props.onCatch({error, info})
35
- }
36
-
37
- render(): React.ReactNode {
38
- const {error} = this.state
39
-
40
- if (error) {
41
- const message = typeof error?.message === 'string' ? error.message : 'Error'
42
-
43
- return <Code>{message}</Code>
44
- }
45
-
46
- return this.props.children
47
- }
48
- }
@@ -1,31 +0,0 @@
1
- // Based on https://github.com/radix-ui/primitives/blob/0bade6a704e5821b90a6da0f3d8cfa8a7711127d/packages/react/slot/src/Slot.tsx#L128-L150
2
- // Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`
3
- // After React 19 accessing `element.ref` does the opposite.
4
- // https://github.com/facebook/react/pull/28348
5
- //
6
- // Access the ref using the method that doesn't yield a warning.
7
- export function getElementRef(element: React.ReactElement) {
8
- // React <=18 in DEV
9
- // oxlint-disable-next-line unbound-method
10
- let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get
11
- let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning
12
-
13
- if (mayWarn) {
14
- // oxlint-disable-next-line no-unsafe-type-assertion
15
- return (element as any).ref
16
- }
17
-
18
- // React 19 in DEV
19
- // oxlint-disable-next-line unbound-method
20
- getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get
21
- mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning
22
-
23
- if (mayWarn) {
24
- // oxlint-disable-next-line no-unsafe-type-assertion
25
- return (element.props as {ref?: React.Ref<unknown>}).ref
26
- }
27
-
28
- // Not DEV
29
- // oxlint-disable-next-line no-unsafe-type-assertion
30
- return (element.props as {ref?: React.Ref<unknown>}).ref || (element as any).ref
31
- }
@@ -1,9 +0,0 @@
1
- export * from './arrow'
2
- export * from './boundaryElement'
3
- export * from './conditionalWrapper'
4
- export * from './elementQuery'
5
- export * from './errorBoundary'
6
- export * from './layer'
7
- export * from './portal'
8
- export * from './srOnly'
9
- export * from './virtualList'
@@ -1,32 +0,0 @@
1
- import {describe, expect, it} from 'vitest'
2
-
3
- import {getLayerContext} from './getLayerContext'
4
- import {LayerContextValue} from './types'
5
-
6
- describe('getLayerContext', () => {
7
- describe('0.0', () => {
8
- it('should convert 0.0 to 0.0', () => {
9
- const contextValue: LayerContextValue = {
10
- version: 0.0,
11
- isTopLayer: true,
12
- level: 0,
13
- registerChild: () => () => {
14
- //
15
- },
16
- size: 0,
17
- zIndex: 0,
18
- }
19
-
20
- const result = getLayerContext(contextValue)
21
-
22
- expect(result).toEqual({
23
- version: 0.0,
24
- isTopLayer: true,
25
- level: 0,
26
- registerChild: expect.any(Function),
27
- size: 0,
28
- zIndex: 0,
29
- })
30
- })
31
- })
32
- })
@@ -1,21 +0,0 @@
1
- import {isRecord} from '../../lib/isRecord'
2
- import {LayerContextValue} from './types'
3
-
4
- export function getLayerContext(contextValue: LayerContextValue): LayerContextValue {
5
- // NOTE: This check is for future-compatiblity
6
- // - If the value is not an object, it’s not compatible with the current version
7
- // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version
8
- if (!isRecord(contextValue) || contextValue.version !== 0.0) {
9
- throw new Error('the context value is not compatible')
10
- }
11
-
12
- if (!contextValue) {
13
- throw new Error('components using `useLayer()` should be wrapped in a <LayerProvider>.')
14
- }
15
-
16
- if (contextValue.version === 0.0) {
17
- return contextValue
18
- }
19
-
20
- throw new Error('could not get layer context')
21
- }
@@ -1,4 +0,0 @@
1
- export * from './layer'
2
- export * from './layerProvider'
3
- export * from './types'
4
- export * from './useLayer'
@@ -1,113 +0,0 @@
1
- /** @vitest-environment jsdom */
2
-
3
- import {describe, expect, it, vi} from 'vitest'
4
-
5
- import {render} from '../../../../test'
6
- import {LayerContext} from './layerContext'
7
- import {LayerContextValue} from './types'
8
- import {useLayer} from './useLayer'
9
-
10
- describe('utils/layer', () => {
11
- describe('useLayer', () => {
12
- it('should get context value', async () => {
13
- const log = vi.fn()
14
-
15
- function Debug() {
16
- const rootLayer = useLayer()
17
-
18
- log(rootLayer)
19
-
20
- return <>debug</>
21
- }
22
-
23
- function Root() {
24
- const value: LayerContextValue = {
25
- version: 0.0,
26
- isTopLayer: true,
27
- level: 0,
28
- registerChild: () => () => undefined,
29
- size: 0,
30
- zIndex: 0,
31
- }
32
-
33
- return (
34
- // oxlint-disable-next-line jsx-no-constructed-context-values
35
- <LayerContext.Provider value={value}>
36
- <Debug />
37
- </LayerContext.Provider>
38
- )
39
- }
40
-
41
- render(<Root />)
42
-
43
- expect(log.mock.calls[0][0].version).toBe(0.0)
44
- expect(log.mock.calls[0][0].isTopLayer).toBe(true)
45
- expect(typeof log.mock.calls[0][0].registerChild).toBe('function')
46
- expect(log.mock.calls[0][0].size).toBe(0)
47
- expect(log.mock.calls[0][0].zIndex).toBe(0)
48
- })
49
-
50
- it('should fail when no context value is provided', async () => {
51
- const log = vi.fn()
52
-
53
- function Debug() {
54
- try {
55
- useLayer()
56
- } catch (err) {
57
- log(err)
58
- }
59
-
60
- return null
61
- }
62
-
63
- function Root() {
64
- const value = undefined
65
-
66
- return (
67
- // oxlint-disable-next-line no-unsafe-type-assertion
68
- <LayerContext.Provider value={value as any}>
69
- <Debug />
70
- </LayerContext.Provider>
71
- )
72
- }
73
-
74
- render(<Root />)
75
-
76
- expect(log.mock.calls[0][0].message).toEqual('useLayer(): missing context value')
77
- })
78
-
79
- it('should fail when context value is not compatible', async () => {
80
- const log = vi.fn()
81
-
82
- function Debug() {
83
- try {
84
- useLayer()
85
- } catch (err) {
86
- log(err)
87
- }
88
-
89
- return null
90
- }
91
-
92
- function Root() {
93
- // NOTE: we’re testing this because the context value may be a function in the future
94
- const value = () => {
95
- return {version: 1}
96
- }
97
-
98
- return (
99
- // oxlint-disable-next-line jsx-no-constructed-context-values, no-unsafe-type-assertion
100
- <LayerContext.Provider value={value as any}>
101
- <Debug />
102
- </LayerContext.Provider>
103
- )
104
- }
105
-
106
- render(<Root />)
107
-
108
- expect(log.mock.calls[0][0].message).toEqual(
109
- 'useLayer(): the context value is not compatible',
110
- )
111
- })
112
- })
113
- })
@@ -1,99 +0,0 @@
1
- import {FocusEvent, forwardRef, useCallback, useEffect, useImperativeHandle, useRef} from 'react'
2
- import {styled} from 'styled-components'
3
-
4
- import {EMPTY_RECORD} from '../../constants'
5
- import {containsOrEqualsElement, isHTMLElement} from '../../helpers'
6
- import {LayerProvider} from './layerProvider'
7
- import {useLayer} from './useLayer'
8
-
9
- /**
10
- * @public
11
- */
12
- export interface LayerProps {
13
- as?: React.ElementType | keyof React.JSX.IntrinsicElements
14
- /** A callback that fires when the layer becomes the top layer when it was not the top layer before. */
15
- onActivate?: (props: {activeElement: HTMLElement | null}) => void
16
- zOffset?: number | number[]
17
- }
18
-
19
- interface LayerChildrenProps {
20
- as?: React.ElementType | keyof React.JSX.IntrinsicElements
21
- onActivate?: LayerProps['onActivate']
22
- }
23
-
24
- const StyledLayer = styled.div({position: 'relative'})
25
-
26
- const LayerChildren = forwardRef(function LayerChildren(
27
- props: LayerChildrenProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,
28
- forwardedRef: React.Ref<HTMLDivElement>,
29
- ) {
30
- const {children, onActivate, onFocus, style = EMPTY_RECORD, ...restProps} = props
31
- const {zIndex, isTopLayer} = useLayer()
32
- const lastFocusedRef = useRef<HTMLElement | null>(null)
33
- const ref = useRef<HTMLDivElement | null>(null)
34
- const isTopLayerRef = useRef<boolean>(isTopLayer)
35
-
36
- useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)
37
-
38
- // When the layer very first mounts, it will be the top layer, but we don't want to fire
39
- // the callback in that case. We use a ref to track the previous value of isTopLayer to
40
- // determine if the layer has become the top layer since the last render.
41
- useEffect(() => {
42
- const becameTopLayer = isTopLayerRef.current !== isTopLayer && isTopLayer
43
-
44
- if (becameTopLayer) {
45
- onActivate?.({activeElement: lastFocusedRef.current})
46
- }
47
-
48
- isTopLayerRef.current = isTopLayer
49
- }, [isTopLayer, onActivate])
50
-
51
- const handleFocus = useCallback(
52
- // oxlint-disable-next-line no-unnecessary-type-arguments
53
- (event: FocusEvent<HTMLDivElement, Element>) => {
54
- // Call the user-provided onFocus handler if any
55
- onFocus?.(event)
56
-
57
- const rootElement = ref.current
58
- const target = document.activeElement
59
-
60
- if (!isTopLayer || !rootElement || !target) return
61
-
62
- if (isHTMLElement(target) && containsOrEqualsElement(rootElement, target)) {
63
- lastFocusedRef.current = target
64
- }
65
- },
66
- [isTopLayer, onFocus],
67
- )
68
-
69
- return (
70
- <StyledLayer
71
- {...restProps}
72
- data-ui="Layer"
73
- onFocus={handleFocus}
74
- ref={ref}
75
- style={{...style, zIndex}}
76
- >
77
- {children}
78
- </StyledLayer>
79
- )
80
- })
81
-
82
- /**
83
- * @public
84
- */
85
- export const Layer = forwardRef(function Layer(
86
- props: LayerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,
87
- ref: React.Ref<HTMLDivElement>,
88
- ) {
89
- const {children, zOffset = 1, ...restProps} = props
90
-
91
- return (
92
- <LayerProvider zOffset={zOffset}>
93
- <LayerChildren {...restProps} ref={ref}>
94
- {children}
95
- </LayerChildren>
96
- </LayerProvider>
97
- )
98
- })
99
- Layer.displayName = 'ForwardRef(Layer)'
@@ -1,7 +0,0 @@
1
- import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'
2
- import {LayerContextValue} from './types'
3
-
4
- export const LayerContext = createGlobalScopedContext<LayerContextValue | null>(
5
- '@sanity/ui/context/layer',
6
- null,
7
- )
@@ -1,111 +0,0 @@
1
- import {useCallback, useContext, useEffect, useMemo, useState} from 'react'
2
-
3
- import {useMediaIndex} from '../../hooks'
4
- import {_getArrayProp} from '../../styles'
5
- import {getLayerContext} from './getLayerContext'
6
- import {LayerContext} from './layerContext'
7
- import {LayerContextValue} from './types'
8
-
9
- /**
10
- * @public
11
- */
12
- export interface LayerProviderProps {
13
- children?: React.ReactNode
14
- zOffset?: number | number[]
15
- }
16
-
17
- /**
18
- * @public
19
- */
20
- export function LayerProvider(props: LayerProviderProps): React.JSX.Element {
21
- const {children, zOffset: zOffsetProp = 0} = props
22
-
23
- // Get parent context values
24
- const parentContextValue = useContext(LayerContext)
25
- const parent = parentContextValue && getLayerContext(parentContextValue)
26
- const parentRegisterChild = parent?.registerChild
27
- const parentLevel = parent?.level ?? 0
28
-
29
- // Get level
30
- const level = parentLevel + 1
31
-
32
- // Get z-index offset
33
- const zOffset = _getArrayProp(zOffsetProp)
34
-
35
- // Get responsive z-index value
36
- const maxMediaIndex = zOffset.length - 1
37
- const mediaIndex = Math.min(useMediaIndex(), maxMediaIndex)
38
- const zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex]
39
-
40
- // A state value that is used to keep track of the number of child layers on each level
41
- const [, setChildLayers] = useState<Record<number, number>>({})
42
-
43
- // A state value that is used to keep track of the number of child levels
44
- const [size, setSize] = useState(0)
45
-
46
- const isTopLayer = size === 0
47
-
48
- const registerChild = useCallback(
49
- (childLevel?: number) => {
50
- // Register child layers to the parent layer
51
- const parentDispose = parentRegisterChild?.(childLevel)
52
-
53
- if (childLevel !== undefined) {
54
- setChildLayers((state) => {
55
- const prevLen = state[childLevel] ?? 0
56
- const nextState = {...state, [childLevel]: prevLen + 1}
57
-
58
- setSize(Object.keys(nextState).length)
59
-
60
- return nextState
61
- })
62
- } else {
63
- // Legacy behavior: if no child level is provided, increment the size by 1
64
- setSize((v) => v + 1)
65
- }
66
-
67
- return () => {
68
- if (childLevel !== undefined) {
69
- setChildLayers((state) => {
70
- const nextState = {...state}
71
-
72
- if (nextState[childLevel] === 1) {
73
- delete nextState[childLevel]
74
-
75
- setSize(Object.keys(nextState).length)
76
- } else {
77
- nextState[childLevel] -= 1
78
- }
79
-
80
- return nextState
81
- })
82
- } else {
83
- // Legacy behavior: if no child level is provided, decrement the size by 1
84
- setSize((v) => v - 1)
85
- }
86
-
87
- parentDispose?.()
88
- }
89
- },
90
- [parentRegisterChild, setSize, setChildLayers],
91
- )
92
-
93
- // Register this layer on mount
94
- useEffect(() => parentRegisterChild?.(level), [level, parentRegisterChild])
95
-
96
- const value: LayerContextValue = useMemo(
97
- () => ({
98
- version: 0.0,
99
- isTopLayer,
100
- level,
101
- registerChild,
102
- size,
103
- zIndex,
104
- }),
105
- [isTopLayer, level, registerChild, size, zIndex],
106
- )
107
-
108
- return <LayerContext.Provider value={value}>{children}</LayerContext.Provider>
109
- }
110
-
111
- LayerProvider.displayName = 'LayerProvider'
@@ -1,9 +0,0 @@
1
- /** @public */
2
- export interface LayerContextValue {
3
- version: 0.0
4
- isTopLayer: boolean
5
- level?: number
6
- registerChild: (childLevel?: number) => () => void
7
- size: number
8
- zIndex: number
9
- }