@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,433 +0,0 @@
1
- import {CloseIcon} from '@sanity/icons'
2
- import {ThemeColorSchemeKey} from '@sanity/ui/theme'
3
- import {forwardRef, useCallback, useEffect, useImperativeHandle, useRef} from 'react'
4
- import {styled} from 'styled-components'
5
-
6
- import {
7
- containsOrEqualsElement,
8
- focusFirstDescendant,
9
- focusLastDescendant,
10
- isHTMLElement,
11
- } from '../../helpers'
12
- import {useClickOutsideEvent, useGlobalKeyDown, usePrefersReducedMotion} from '../../hooks'
13
- import {Box, Button, Card, Container, Flex, Text} from '../../primitives'
14
- import {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'
15
- import {_getArrayProp} from '../../styles'
16
- import {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'
17
- import {useTheme_v2} from '../../theme'
18
- import {DialogPosition, Radius} from '../../types'
19
- import {Layer, LayerProps, Portal, useBoundaryElement, useLayer, usePortal} from '../../utils'
20
- import {
21
- animationDialogStyle,
22
- AnimationDialogStyleProps,
23
- dialogStyle,
24
- responsiveDialogPositionStyle,
25
- ResponsiveDialogPositionStyleProps,
26
- } from './styles'
27
- import {useDialog} from './useDialog'
28
-
29
- /**
30
- * @public
31
- */
32
- export interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {
33
- /**
34
- * @beta
35
- */
36
- __unstable_autoFocus?: boolean
37
- /**
38
- * @beta
39
- */
40
- __unstable_hideCloseButton?: boolean
41
- cardRadius?: Radius | Radius[]
42
- cardShadow?: number | number[]
43
- contentRef?: React.ForwardedRef<HTMLDivElement>
44
- footer?: React.ReactNode
45
- header?: React.ReactNode
46
- id: string
47
- /** A callback that fires when the dialog becomes the top layer when it was not the top layer before. */
48
- onActivate?: LayerProps['onActivate']
49
- onClickOutside?: () => void
50
- onClose?: () => void
51
- portal?: string
52
- position?: DialogPosition | DialogPosition[]
53
- scheme?: ThemeColorSchemeKey
54
- zOffset?: number | number[]
55
- /**
56
- * Whether the dialog should animate in on mount.
57
- *
58
- * @beta
59
- * @defaultValue false
60
- */
61
- animate?: boolean
62
- }
63
-
64
- interface DialogCardProps extends ResponsiveWidthProps {
65
- /**
66
- * @beta
67
- */
68
- __unstable_autoFocus: boolean
69
- /**
70
- * @beta
71
- */
72
- __unstable_hideCloseButton: boolean
73
- children: React.ReactNode
74
- contentRef?: React.ForwardedRef<HTMLDivElement>
75
- footer: React.ReactNode
76
- header: React.ReactNode
77
- id: string
78
- onClickOutside?: () => void
79
- onClose?: () => void
80
- portal?: string
81
- radius: Radius | Radius[]
82
- scheme?: ThemeColorSchemeKey
83
- shadow: number | number[]
84
- }
85
-
86
- function isTargetWithinScope(
87
- boundaryElement: HTMLElement | null,
88
- portalElement: HTMLElement | null,
89
- target: Node,
90
- ): boolean {
91
- if (!boundaryElement || !portalElement) return true
92
-
93
- return (
94
- containsOrEqualsElement(boundaryElement, target) ||
95
- containsOrEqualsElement(portalElement, target)
96
- )
97
- }
98
-
99
- const StyledDialog = styled(Layer)<
100
- ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps & AnimationDialogStyleProps
101
- >(responsivePaddingStyle, dialogStyle, responsiveDialogPositionStyle, animationDialogStyle)
102
-
103
- const DialogContainer = styled(Container)`
104
- &:not([hidden]) {
105
- display: flex;
106
- }
107
- width: 100%;
108
- height: 100%;
109
- flex-direction: column;
110
- align-items: center;
111
- justify-content: center;
112
- `
113
-
114
- const DialogCardRoot = styled(Card)`
115
- &:not([hidden]) {
116
- display: flex;
117
- }
118
- width: 100%;
119
- min-height: 0;
120
- max-height: 100%;
121
- overflow: hidden;
122
- overflow: clip;
123
- `
124
-
125
- const DialogLayout = styled(Flex)`
126
- flex: 1;
127
- min-height: 0;
128
- width: 100%;
129
- `
130
-
131
- const DialogHeader = styled(Box)`
132
- position: relative;
133
- z-index: 2;
134
- `
135
-
136
- const DialogContent = styled(Box)`
137
- position: relative;
138
- z-index: 1;
139
- overflow: auto;
140
- outline: none;
141
- `
142
-
143
- const DialogFooter = styled(Box)`
144
- position: relative;
145
- z-index: 3;
146
- `
147
-
148
- const DialogCard = forwardRef(function DialogCard(
149
- props: DialogCardProps,
150
- forwardedRef: React.ForwardedRef<HTMLDivElement>,
151
- ) {
152
- const {
153
- __unstable_autoFocus: autoFocus,
154
- __unstable_hideCloseButton: hideCloseButton,
155
- children,
156
- contentRef: forwardedContentRef,
157
- footer,
158
- header,
159
- id,
160
- onClickOutside,
161
- onClose,
162
- portal: portalProp,
163
- radius: radiusProp,
164
- scheme,
165
- shadow: shadowProp,
166
- width: widthProp,
167
- } = props
168
- const portal = usePortal()
169
- const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element
170
- const boundaryElement = useBoundaryElement().element
171
- const radius = _getArrayProp(radiusProp)
172
- const shadow = _getArrayProp(shadowProp)
173
- const width = _getArrayProp(widthProp)
174
- const ref = useRef<HTMLDivElement | null>(null)
175
- const contentRef = useRef<HTMLDivElement | null>(null)
176
- const layer = useLayer()
177
- const {isTopLayer} = layer
178
- const labelId = `${id}_label`
179
- // oxlint-disable-next-line no-unnecessary-boolean-literal-compare
180
- const showCloseButton = Boolean(onClose) && hideCloseButton === false
181
- const showHeader = Boolean(header) || showCloseButton
182
-
183
- useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)
184
- useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(
185
- forwardedContentRef,
186
- () => contentRef.current,
187
- )
188
-
189
- useEffect(() => {
190
- if (!autoFocus) return
191
-
192
- // On mount: focus the first focusable element
193
- if (ref.current) {
194
- focusFirstDescendant(ref.current)
195
- }
196
- }, [autoFocus, ref])
197
-
198
- useGlobalKeyDown(
199
- useCallback(
200
- (event: KeyboardEvent) => {
201
- if (!isTopLayer || !onClose) return
202
-
203
- const target = document.activeElement
204
-
205
- if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {
206
- // Ignore key presses when the focused element is outside of scope
207
- return
208
- }
209
-
210
- if (event.key === 'Escape') {
211
- event.preventDefault()
212
- event.stopPropagation()
213
- onClose()
214
- }
215
- },
216
- [boundaryElement, isTopLayer, onClose, portalElement],
217
- ),
218
- )
219
-
220
- useClickOutsideEvent(
221
- isTopLayer &&
222
- onClickOutside &&
223
- ((event) => {
224
- // oxlint-disable-next-line no-unsafe-type-assertion
225
- const target = event.target as Node | null
226
-
227
- if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {
228
- // Ignore clicks outside of the scope
229
- return
230
- }
231
-
232
- onClickOutside()
233
- }),
234
- () => [ref.current],
235
- )
236
-
237
- return (
238
- <DialogContainer data-ui="DialogCard" width={width}>
239
- <DialogCardRoot radius={radius} ref={ref} scheme={scheme} shadow={shadow}>
240
- <DialogLayout direction="column">
241
- {showHeader && (
242
- <DialogHeader>
243
- <Flex align="flex-start" padding={3}>
244
- <Box flex={1} padding={2}>
245
- {header && (
246
- <Text id={labelId} size={1} weight="semibold">
247
- {header}
248
- </Text>
249
- )}
250
- </Box>
251
- {showCloseButton && (
252
- <Box flex="none">
253
- <Button
254
- aria-label="Close dialog"
255
- disabled={!onClose}
256
- icon={CloseIcon}
257
- mode="bleed"
258
- onClick={onClose}
259
- padding={2}
260
- />
261
- </Box>
262
- )}
263
- </Flex>
264
- </DialogHeader>
265
- )}
266
-
267
- <DialogContent flex={1} ref={contentRef} tabIndex={-1}>
268
- {children}
269
- </DialogContent>
270
-
271
- {footer && <DialogFooter>{footer}</DialogFooter>}
272
- </DialogLayout>
273
- </DialogCardRoot>
274
- </DialogContainer>
275
- )
276
- })
277
-
278
- DialogCard.displayName = 'ForwardRef(DialogCard)'
279
-
280
- /**
281
- * The Dialog component.
282
- *
283
- * @public
284
- */
285
- export const Dialog = forwardRef(function Dialog(
286
- props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,
287
- ref: React.Ref<HTMLDivElement>,
288
- ) {
289
- const dialog = useDialog()
290
- const {layer} = useTheme_v2()
291
- const {
292
- __unstable_autoFocus: autoFocus = true,
293
- __unstable_hideCloseButton: hideCloseButton = false,
294
- cardRadius: cardRadiusProp = 4,
295
- cardShadow = 3,
296
- children,
297
- contentRef,
298
- footer,
299
- header,
300
- id,
301
- onActivate,
302
- onClickOutside,
303
- onClose,
304
- onFocus,
305
- padding: paddingProp = 3,
306
- portal: portalProp,
307
- position: _positionProp,
308
- scheme,
309
- width: widthProp = 0,
310
- zOffset: _zOffsetProp,
311
- animate: _animate = false,
312
- ...restProps
313
- } = props
314
- const positionProp = _positionProp ?? (dialog.position || 'fixed')
315
- const zOffsetProp = _zOffsetProp ?? (dialog.zOffset || layer.dialog.zOffset)
316
- const prefersReducedMotion = usePrefersReducedMotion()
317
- const animate = prefersReducedMotion ? false : _animate
318
- const portal = usePortal()
319
- const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element
320
- const boundaryElement = useBoundaryElement().element
321
- const cardRadius = _getArrayProp(cardRadiusProp)
322
- const padding = _getArrayProp(paddingProp)
323
- const position = _getArrayProp(positionProp)
324
- const width = _getArrayProp(widthProp)
325
- const zOffset = _getArrayProp(zOffsetProp)
326
- const preDivRef = useRef<HTMLDivElement | null>(null)
327
- const postDivRef = useRef<HTMLDivElement | null>(null)
328
- const cardRef = useRef<HTMLDivElement | null>(null)
329
- const focusedElementRef = useRef<HTMLElement | null>(null)
330
-
331
- const handleFocus = useCallback(
332
- (event: React.FocusEvent<HTMLDivElement>) => {
333
- onFocus?.(event)
334
-
335
- const target = event.target
336
- const cardElement = cardRef.current
337
-
338
- if (cardElement && target === preDivRef.current) {
339
- focusLastDescendant(cardElement)
340
-
341
- return
342
- }
343
-
344
- if (cardElement && target === postDivRef.current) {
345
- focusFirstDescendant(cardElement)
346
-
347
- return
348
- }
349
-
350
- if (isHTMLElement(event.target)) {
351
- focusedElementRef.current = event.target
352
- }
353
- },
354
- [onFocus],
355
- )
356
-
357
- const labelId = `${id}_label`
358
-
359
- const rootClickTimeoutRef = useRef<NodeJS.Timeout>(undefined)
360
-
361
- // If the resulting active element (a.k.a. focused element) is not withing scope when clicking
362
- // within the dialog, then we want to focus the previously interactive element in the dialog instead.
363
- // This is to allow the user to tab or close the dialog by pressing escape.
364
- const handleRootClick = useCallback(() => {
365
- if (rootClickTimeoutRef.current) {
366
- clearTimeout(rootClickTimeoutRef.current)
367
- }
368
-
369
- rootClickTimeoutRef.current = setTimeout(() => {
370
- const activeElement = document.activeElement
371
-
372
- if (activeElement && !isTargetWithinScope(boundaryElement, portalElement, activeElement)) {
373
- const target = focusedElementRef.current
374
-
375
- if (!target || !document.body.contains(target)) {
376
- // No previously focused element, or it's not in the document anymore
377
- const cardElement = cardRef.current
378
- if (cardElement) focusFirstDescendant(cardElement)
379
-
380
- return
381
- }
382
-
383
- target.focus()
384
- }
385
- }, 0)
386
- }, [boundaryElement, portalElement])
387
-
388
- return (
389
- <Portal __unstable_name={portalProp}>
390
- <StyledDialog
391
- {...restProps}
392
- $animate={animate}
393
- $padding={padding}
394
- $position={position}
395
- aria-labelledby={labelId}
396
- aria-modal
397
- data-ui="Dialog"
398
- id={id}
399
- onActivate={onActivate}
400
- onClick={handleRootClick}
401
- onFocus={handleFocus}
402
- ref={ref}
403
- // oxlint-disable-next-line prefer-tag-over-role
404
- role="dialog"
405
- zOffset={zOffset}
406
- >
407
- {/* oxlint-disable-next-line no-noninteractive-tabindex */}
408
- <div ref={preDivRef} tabIndex={0} />
409
- <DialogCard
410
- __unstable_autoFocus={autoFocus}
411
- __unstable_hideCloseButton={hideCloseButton}
412
- contentRef={contentRef}
413
- footer={footer}
414
- header={header}
415
- id={id}
416
- onClickOutside={onClickOutside}
417
- onClose={onClose}
418
- portal={portalProp}
419
- radius={cardRadius}
420
- ref={cardRef}
421
- scheme={scheme}
422
- shadow={cardShadow}
423
- width={width}
424
- >
425
- {children}
426
- </DialogCard>
427
- {/* oxlint-disable-next-line no-noninteractive-tabindex */}
428
- <div ref={postDivRef} tabIndex={0} />
429
- </StyledDialog>
430
- </Portal>
431
- )
432
- })
433
- Dialog.displayName = 'ForwardRef(Dialog)'
@@ -1,20 +0,0 @@
1
- import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'
2
- import {DialogPosition} from '../../types'
3
-
4
- /**
5
- * This API might change. DO NOT USE IN PRODUCTION.
6
- * @beta
7
- */
8
- export interface DialogContextValue {
9
- version: 0.0
10
- position?: DialogPosition | DialogPosition[]
11
- zOffset?: number | number[]
12
- }
13
-
14
- /**
15
- * @internal
16
- */
17
- export const DialogContext = createGlobalScopedContext<DialogContextValue>(
18
- '@sanity/ui/context/dialog',
19
- {version: 0.0},
20
- )
@@ -1,35 +0,0 @@
1
- import {useMemo} from 'react'
2
-
3
- import {DialogPosition} from '../../types'
4
- import {DialogContext, DialogContextValue} from './dialogContext'
5
-
6
- /**
7
- * This API might change. DO NOT USE IN PRODUCTION.
8
- * @beta
9
- */
10
- export interface DialogProviderProps {
11
- children?: React.ReactNode
12
- position?: DialogPosition | DialogPosition[]
13
- zOffset?: number | number[]
14
- }
15
-
16
- /**
17
- * This API might change. DO NOT USE IN PRODUCTION.
18
- * @beta
19
- */
20
- export function DialogProvider(props: DialogProviderProps): React.JSX.Element {
21
- const {children, position, zOffset} = props
22
-
23
- const contextValue: DialogContextValue = useMemo(
24
- () => ({
25
- version: 0.0,
26
- position,
27
- zOffset,
28
- }),
29
- [position, zOffset],
30
- )
31
-
32
- return <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>
33
- }
34
-
35
- DialogProvider.displayName = 'DialogProvider'
@@ -1,4 +0,0 @@
1
- export * from './dialog'
2
- export * from './dialogContext'
3
- export * from './dialogProvider'
4
- export * from './useDialog'
@@ -1,77 +0,0 @@
1
- import {CSSObject, getTheme_v2} from '@sanity/ui/theme'
2
- import {css} from 'styled-components'
3
-
4
- import {_responsive, ThemeProps} from '../../styles'
5
- import {DialogPosition} from '../../types'
6
-
7
- /**
8
- * @internal
9
- */
10
- export interface ResponsiveDialogPositionStyleProps {
11
- $position: DialogPosition[]
12
- }
13
-
14
- export function dialogStyle({theme}: ThemeProps): CSSObject {
15
- const {color} = getTheme_v2(theme)
16
-
17
- return {
18
- '&:not([hidden])': {
19
- display: 'flex',
20
- },
21
-
22
- 'top': 0,
23
- 'left': 0,
24
- 'right': 0,
25
- 'bottom': 0,
26
- 'alignItems': 'center',
27
- 'justifyContent': 'center',
28
- 'outline': 'none',
29
- 'background': color.backdrop,
30
- }
31
- }
32
-
33
- export function responsiveDialogPositionStyle(
34
- props: ResponsiveDialogPositionStyleProps & ThemeProps,
35
- ): CSSObject[] {
36
- const {media} = getTheme_v2(props.theme)
37
-
38
- return _responsive(media, props.$position, (position) => ({'&&': {position}}))
39
- }
40
-
41
- /**
42
- * @internal
43
- */
44
- export interface AnimationDialogStyleProps {
45
- $animate: boolean
46
- }
47
-
48
- export function animationDialogStyle(props: AnimationDialogStyleProps): ReturnType<typeof css> {
49
- if (!props.$animate) return css``
50
-
51
- return css`
52
- @keyframes zoomIn {
53
- from {
54
- opacity: 0;
55
- transform: scale(0.95);
56
- }
57
- to {
58
- opacity: 1;
59
- transform: scale(1);
60
- }
61
- }
62
- @keyframes fadeIn {
63
- from {
64
- opacity: 0;
65
- }
66
- to {
67
- opacity: 1;
68
- }
69
- }
70
-
71
- animation: fadeIn 200ms ease-out;
72
- // Animates the dialog card.
73
- & > [data-ui='DialogCard'] {
74
- animation: zoomIn 200ms ease-out;
75
- }
76
- `
77
- }
@@ -1,11 +0,0 @@
1
- import {useContext} from 'react'
2
-
3
- import {DialogContext, DialogContextValue} from './dialogContext'
4
-
5
- /**
6
- * This API might change. DO NOT USE IN PRODUCTION.
7
- * @beta
8
- */
9
- export function useDialog(): DialogContextValue {
10
- return useContext(DialogContext)
11
- }
@@ -1,47 +0,0 @@
1
- /** @vitest-environment jsdom */
2
-
3
- import {beforeEach, describe, expect, it, vi} from 'vitest'
4
-
5
- import {render} from '../../../../test'
6
- import {Inline} from '../../primitives'
7
- import {Hotkeys} from './hotkeys'
8
-
9
- vi.mock('../../primitives', async (importOriginal) => {
10
- const actual = await importOriginal<typeof import('../../primitives')>()
11
-
12
- return {
13
- ...actual,
14
- // oxlint-disable-next-line no-unsafe-type-assertion
15
- Inline: vi.fn((props: Record<string, unknown>) => (actual.Inline as any).render(props, null)),
16
- }
17
- })
18
-
19
- describe('components/hotkeys spacing', () => {
20
- const mockedInline = vi.mocked(Inline)
21
-
22
- beforeEach(() => {
23
- mockedInline.mockClear()
24
- })
25
-
26
- it('should support `space` and `gap` with the same behavior', () => {
27
- // oxlint-disable-next-line no-deprecated
28
- render(<Hotkeys keys={['Ctrl', 'S']} space={2} />)
29
- expect(mockedInline.mock.calls.map(([props]) => props)).toContainEqual(
30
- expect.objectContaining({gap: [2]}),
31
- )
32
-
33
- mockedInline.mockClear()
34
- render(<Hotkeys gap={2} keys={['Ctrl', 'S']} />)
35
- expect(mockedInline.mock.calls.map(([props]) => props)).toContainEqual(
36
- expect.objectContaining({gap: [2]}),
37
- )
38
- })
39
-
40
- it('should prefer `gap` over `space` when both are provided', () => {
41
- // oxlint-disable-next-line no-deprecated
42
- render(<Hotkeys gap={3} keys={['Ctrl', 'S']} space={1} />)
43
- const propsList = mockedInline.mock.calls.map(([props]) => props)
44
- expect(propsList).toContainEqual(expect.objectContaining({gap: [3]}))
45
- expect(propsList).not.toContainEqual(expect.objectContaining({gap: [1]}))
46
- })
47
- })
@@ -1,68 +0,0 @@
1
- import {forwardRef} from 'react'
2
- import {styled} from 'styled-components'
3
-
4
- import {Inline, KBD} from '../../primitives'
5
- import {_getArrayProp} from '../../styles'
6
- import {Radius} from '../../types'
7
-
8
- /**
9
- * @public
10
- */
11
- export interface HotkeysProps {
12
- fontSize?: number | number[]
13
- gap?: number | number[]
14
- padding?: number | number[]
15
- radius?: Radius | Radius[]
16
- /**
17
- * @deprecated Use `gap` instead. `space` will be removed in v4.
18
- */
19
- space?: number | number[]
20
- keys?: string[]
21
- }
22
-
23
- const StyledHotkeys = styled.kbd`
24
- font: inherit;
25
- padding: 1px;
26
-
27
- &:not([hidden]) {
28
- display: block;
29
- }
30
- `
31
-
32
- const Key = styled(KBD)`
33
- &:not([hidden]) {
34
- display: block;
35
- }
36
- `
37
-
38
- /**
39
- * Represent hotkeys (a keyboard combination) with semantic `<kbd>` elements.
40
- *
41
- * @public
42
- */
43
- export const Hotkeys = forwardRef(function Hotkeys(
44
- props: HotkeysProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'ref' | 'size'>,
45
- ref: React.Ref<HTMLElement>,
46
- ) {
47
- // oxlint-disable-next-line no-deprecated
48
- const {fontSize, gap, keys, padding, radius, space: deprecated_space = 0.5, ...restProps} = props
49
- const spacing = _getArrayProp(gap === undefined ? deprecated_space : gap)
50
-
51
- if (!keys || keys.length === 0) {
52
- return <></>
53
- }
54
-
55
- return (
56
- <StyledHotkeys data-ui="Hotkeys" {...restProps} ref={ref}>
57
- <Inline as="span" gap={spacing}>
58
- {keys.map((key, i) => (
59
- // oxlint-disable-next-line no-array-index-key
60
- <Key fontSize={fontSize} key={i} padding={padding} radius={radius}>
61
- {key}
62
- </Key>
63
- ))}
64
- </Inline>
65
- </StyledHotkeys>
66
- )
67
- })
68
- Hotkeys.displayName = 'ForwardRef(Hotkeys)'
@@ -1 +0,0 @@
1
- export * from './hotkeys'