@sanity/ui 4.0.0-v4.1 → 5.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (796) hide show
  1. package/README.md +201 -17
  2. package/bin/sanity-ui.js +14 -0
  3. package/dist/_chunks-es/LazyRefractor.js +20 -0
  4. package/dist/_chunks-es/LazyRefractor.js.map +1 -0
  5. package/dist/cli/checks.js +148 -0
  6. package/dist/cli/config.js +23 -0
  7. package/dist/cli/detect.js +181 -0
  8. package/dist/cli/doctor.js +49 -0
  9. package/dist/cli/index.js +69 -0
  10. package/dist/cli/init.js +189 -0
  11. package/dist/cli/install.js +78 -0
  12. package/dist/cli/log.js +66 -0
  13. package/dist/cli/selfPackage.js +11 -0
  14. package/dist/cli/styles.js +185 -0
  15. package/dist/cli/test-utils.js +8 -0
  16. package/dist/cli/tsconfig.js +236 -0
  17. package/dist/cli/types.js +1 -0
  18. package/dist/cli/versions.js +45 -0
  19. package/dist/index.d.ts +744 -2272
  20. package/dist/index.js +1744 -4394
  21. package/dist/index.js.map +1 -1
  22. package/dist/styles.css +1 -0
  23. package/package.json +65 -194
  24. package/src/cli/checks.test.ts +38 -0
  25. package/src/cli/checks.ts +200 -0
  26. package/src/cli/config.ts +44 -0
  27. package/src/cli/detect.test.ts +191 -0
  28. package/src/cli/detect.ts +205 -0
  29. package/src/cli/doctor.test.ts +52 -0
  30. package/src/cli/doctor.ts +65 -0
  31. package/src/cli/index.ts +77 -0
  32. package/src/cli/init.ts +225 -0
  33. package/src/cli/install.test.ts +52 -0
  34. package/src/cli/install.ts +107 -0
  35. package/src/cli/log.ts +79 -0
  36. package/src/cli/selfPackage.ts +14 -0
  37. package/src/cli/styles.test.ts +130 -0
  38. package/src/cli/styles.ts +205 -0
  39. package/src/cli/test-utils.ts +10 -0
  40. package/src/cli/tsconfig.test.ts +174 -0
  41. package/src/cli/tsconfig.ts +282 -0
  42. package/src/cli/types.ts +77 -0
  43. package/src/cli/versions.test.ts +35 -0
  44. package/src/cli/versions.ts +41 -0
  45. package/src/components/box/Box.tsx +25 -0
  46. package/src/components/box/box.css +4 -0
  47. package/src/components/box/box.props.ts +24 -0
  48. package/src/components/button/Button.tsx +78 -0
  49. package/src/components/button/button.css +72 -0
  50. package/src/components/button/button.props.ts +104 -0
  51. package/src/components/card/Card.tsx +31 -0
  52. package/src/components/card/card.css +4 -0
  53. package/src/components/card/card.props.ts +54 -0
  54. package/src/components/checkbox/Checkbox.tsx +63 -0
  55. package/src/components/checkbox/checkbox.css +100 -0
  56. package/src/components/checkbox/checkbox.props.ts +25 -0
  57. package/src/components/code/Code.tsx +38 -0
  58. package/src/components/code/LazyRefractor.tsx +9 -0
  59. package/src/components/code/code.css +40 -0
  60. package/src/components/code/code.props.ts +37 -0
  61. package/src/components/container/Container.tsx +30 -0
  62. package/src/components/container/container.css +4 -0
  63. package/src/components/container/container.props.ts +24 -0
  64. package/src/components/divider/Divider.tsx +23 -0
  65. package/src/components/divider/divider.props.ts +9 -0
  66. package/src/components/eyebrow/Eyebrow.tsx +54 -0
  67. package/src/components/eyebrow/eyebrow.css +11 -0
  68. package/src/components/eyebrow/eyebrow.props.ts +24 -0
  69. package/src/components/flex/Flex.tsx +25 -0
  70. package/src/components/flex/flex.css +4 -0
  71. package/src/components/flex/flex.props.ts +29 -0
  72. package/src/components/grid/Grid.tsx +25 -0
  73. package/src/components/grid/grid.css +4 -0
  74. package/src/components/grid/grid.props.ts +29 -0
  75. package/src/components/h-stack/HStack.tsx +34 -0
  76. package/src/components/h-stack/hStack.props.ts +15 -0
  77. package/src/components/heading/Heading.tsx +54 -0
  78. package/src/components/heading/heading.css +9 -0
  79. package/src/components/heading/heading.props.ts +25 -0
  80. package/src/components/icon/Icon.tsx +24 -0
  81. package/src/components/icon/icon.css +17 -0
  82. package/src/components/icon/icon.props.ts +31 -0
  83. package/src/components/icon-button/IconButton.tsx +32 -0
  84. package/src/components/icon-button/iconButton.props.ts +26 -0
  85. package/src/components/index.css +25 -0
  86. package/src/components/indicator/Indicator.tsx +42 -0
  87. package/src/components/indicator/indicator.css +4 -0
  88. package/src/components/indicator/indicator.props.ts +20 -0
  89. package/src/components/indicator-stack/IndicatorStack.tsx +31 -0
  90. package/src/components/indicator-stack/indicator-stack.css +7 -0
  91. package/src/components/indicator-stack/indicatorStack.props.ts +13 -0
  92. package/src/components/inline/Inline.tsx +38 -0
  93. package/src/components/inline/inline.css +4 -0
  94. package/src/components/inline/inline.props.ts +96 -0
  95. package/src/components/label/Label.tsx +34 -0
  96. package/src/components/label/label.css +3 -0
  97. package/src/components/label/label.props.ts +19 -0
  98. package/src/components/link/Link.tsx +29 -0
  99. package/src/components/link/link.css +12 -0
  100. package/src/components/link/link.props.ts +23 -0
  101. package/src/components/list/List.tsx +167 -0
  102. package/src/components/list/list.css +25 -0
  103. package/src/components/list/list.props.ts +112 -0
  104. package/src/components/press-area/PressArea.tsx +29 -0
  105. package/src/components/press-area/press-area.css +22 -0
  106. package/src/components/press-area/pressArea.props.ts +14 -0
  107. package/src/components/radio/Radio.tsx +48 -0
  108. package/src/components/radio/radio.css +97 -0
  109. package/src/components/radio/radio.props.ts +20 -0
  110. package/src/components/skip-to-content/SkipToContent.tsx +35 -0
  111. package/src/components/skip-to-content/skip-to-content.css +9 -0
  112. package/src/components/skip-to-content/skipToContent.props.ts +19 -0
  113. package/src/components/spinner/Spinner.tsx +28 -0
  114. package/src/components/spinner/spinner.css +10 -0
  115. package/src/components/spinner/spinner.props.ts +16 -0
  116. package/src/components/switch/Switch.tsx +48 -0
  117. package/src/components/switch/switch.css +119 -0
  118. package/src/components/switch/switch.props.ts +20 -0
  119. package/src/components/text/Text.tsx +53 -0
  120. package/src/components/text/text.css +9 -0
  121. package/src/components/text/text.props.ts +24 -0
  122. package/src/components/tooltip/Tooltip.tsx +93 -0
  123. package/src/components/tooltip/tooltip.css +52 -0
  124. package/src/components/tooltip/tooltip.props.ts +20 -0
  125. package/src/components/tooltip-group/TooltipGroup.tsx +67 -0
  126. package/src/components/tooltip-group/tooltipGroup.props.ts +13 -0
  127. package/src/components/v-stack/VStack.tsx +32 -0
  128. package/src/components/v-stack/vStack.props.ts +15 -0
  129. package/src/components/visually-hidden/VisuallyHidden.tsx +29 -0
  130. package/src/components/visually-hidden/visually-hidden.css +9 -0
  131. package/src/components/visually-hidden/visuallyHidden.props.ts +19 -0
  132. package/src/css/classes/dynamic/flex-child.css +5 -0
  133. package/src/css/classes/dynamic/grid-child.css +8 -0
  134. package/src/css/classes/dynamic/grid-parent.css +6 -0
  135. package/src/css/classes/dynamic/height.css +5 -0
  136. package/src/css/classes/dynamic/index.css +7 -0
  137. package/src/css/classes/dynamic/line-clamp.css +5 -0
  138. package/src/css/classes/dynamic/readme.md +3 -0
  139. package/src/css/classes/dynamic/width.css +7 -0
  140. package/src/css/classes/dynamic/z-index.css +3 -0
  141. package/src/css/classes/generic/display.css +10 -0
  142. package/src/css/classes/generic/flex.css +24 -0
  143. package/src/css/classes/generic/grid.css +7 -0
  144. package/src/css/classes/generic/index.css +7 -0
  145. package/src/css/classes/generic/overflow.css +19 -0
  146. package/src/css/classes/generic/placement.css +171 -0
  147. package/src/css/classes/generic/position.css +7 -0
  148. package/src/css/classes/generic/readme.md +3 -0
  149. package/src/css/classes/generic/text-align.css +5 -0
  150. package/src/css/classes/index.css +4 -0
  151. package/src/css/classes/local/border.css +20 -0
  152. package/src/css/classes/local/index.css +4 -0
  153. package/src/css/classes/local/readme.md +3 -0
  154. package/src/css/classes/local/text-overflow.css +5 -0
  155. package/src/css/classes/local/text-trim.css +45 -0
  156. package/src/css/classes/local/tone.css +75 -0
  157. package/src/css/classes/system/color.css +223 -0
  158. package/src/css/classes/system/container.css +8 -0
  159. package/src/css/classes/system/font-family.css +2 -0
  160. package/src/css/classes/system/font-weight.css +4 -0
  161. package/src/css/classes/system/gap.css +37 -0
  162. package/src/css/classes/system/index.css +10 -0
  163. package/src/css/classes/system/inset.css +56 -0
  164. package/src/css/classes/system/margin.css +148 -0
  165. package/src/css/classes/system/padding.css +78 -0
  166. package/src/css/classes/system/radius.css +10 -0
  167. package/src/css/classes/system/readme.md +3 -0
  168. package/src/css/classes/system/shadow.css +6 -0
  169. package/src/css/classes/system/typography.css +31 -0
  170. package/src/css/global/font-face.css +20 -0
  171. package/src/css/global/index.css +2 -0
  172. package/src/css/global/reset.css +76 -0
  173. package/src/css/tokens/index.css +3 -0
  174. package/src/css/tokens/opacity.css +6 -0
  175. package/src/css/tokens/semantic.css +21 -0
  176. package/src/css/tokens/surface.css +27 -0
  177. package/src/index.css +18 -0
  178. package/src/index.ts +60 -0
  179. package/src/props/border.ts +51 -0
  180. package/src/props/flexChild.ts +29 -0
  181. package/src/props/flexParent.ts +47 -0
  182. package/src/props/gap.ts +31 -0
  183. package/src/props/gridChild.ts +50 -0
  184. package/src/props/gridParent.ts +45 -0
  185. package/src/props/height.ts +29 -0
  186. package/src/props/layout.ts +44 -0
  187. package/src/props/margin.ts +59 -0
  188. package/src/props/overflow.ts +30 -0
  189. package/src/props/padding.ts +59 -0
  190. package/src/props/placement.ts +16 -0
  191. package/src/props/position.ts +52 -0
  192. package/src/props/shadow.ts +15 -0
  193. package/src/props/tone.ts +15 -0
  194. package/src/props/typography.ts +62 -0
  195. package/src/props/width.ts +29 -0
  196. package/src/props/zIndex.ts +15 -0
  197. package/src/styles.css.d.ts +1 -0
  198. package/src/styles.css.node.js +2 -0
  199. package/src/styles.css.test.ts +24 -0
  200. package/src/types/Button.ts +8 -0
  201. package/src/types/Code.ts +6 -0
  202. package/src/types/Container.ts +3 -0
  203. package/src/types/Density.ts +3 -0
  204. package/src/types/Display.ts +11 -0
  205. package/src/types/Eyebrow.ts +3 -0
  206. package/src/types/Flex.ts +22 -0
  207. package/src/types/FontWeight.ts +3 -0
  208. package/src/types/Grid.ts +3 -0
  209. package/src/types/Heading.ts +6 -0
  210. package/src/types/Icon.ts +3 -0
  211. package/src/types/Interactive.ts +8 -0
  212. package/src/types/List.ts +2 -0
  213. package/src/types/Overflow.ts +3 -0
  214. package/src/types/Placement.ts +16 -0
  215. package/src/types/Position.ts +3 -0
  216. package/src/types/PropDef.ts +73 -0
  217. package/src/types/Radius.ts +3 -0
  218. package/src/types/Responsive.ts +10 -0
  219. package/src/types/Shadow.ts +3 -0
  220. package/src/types/Space.ts +15 -0
  221. package/src/types/Text.ts +3 -0
  222. package/src/types/TextAlign.ts +3 -0
  223. package/src/types/Tone.ts +3 -0
  224. package/src/utils/getProps.test.ts +156 -0
  225. package/src/utils/getProps.ts +156 -0
  226. package/src/utils/suffixClassName.ts +5 -0
  227. package/src/version.ts +3 -0
  228. package/LICENSE +0 -21
  229. package/dist/_chunks-es/Refractor.js +0 -25
  230. package/dist/_chunks-es/Refractor.js.map +0 -1
  231. package/dist/css/index.css +0 -2
  232. package/dist/css/index.css.map +0 -1
  233. package/dist/css/index.d.ts +0 -1398
  234. package/dist/css/index.js +0 -18882
  235. package/dist/css/index.js.map +0 -1
  236. package/dist/theme.d.ts +0 -499
  237. package/dist/theme.js +0 -870
  238. package/dist/theme.js.map +0 -1
  239. package/exports/css.ts +0 -1
  240. package/exports/index.ts +0 -1
  241. package/exports/theme.ts +0 -1
  242. package/src/core/Root.tsx +0 -88
  243. package/src/core/RootProvider.tsx +0 -40
  244. package/src/core/__workshop__/Boundary.tsx +0 -28
  245. package/src/core/__workshop__/index.ts +0 -16
  246. package/src/core/components/autocomplete/Autocomplete.tsx +0 -690
  247. package/src/core/components/autocomplete/AutocompleteOption.tsx +0 -45
  248. package/src/core/components/autocomplete/__workshop__/Async.tsx +0 -156
  249. package/src/core/components/autocomplete/__workshop__/ConstrainedHeight.tsx +0 -131
  250. package/src/core/components/autocomplete/__workshop__/Custom.tsx +0 -104
  251. package/src/core/components/autocomplete/__workshop__/Example.tsx +0 -91
  252. package/src/core/components/autocomplete/__workshop__/FocusAndBlur.tsx +0 -36
  253. package/src/core/components/autocomplete/__workshop__/Fullscreen.tsx +0 -292
  254. package/src/core/components/autocomplete/__workshop__/index.ts +0 -41
  255. package/src/core/components/autocomplete/__workshop__/mock/apiStore.ts +0 -49
  256. package/src/core/components/autocomplete/__workshop__/mock/countries.ts +0 -245
  257. package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
  258. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  259. package/src/core/components/autocomplete/constants.ts +0 -28
  260. package/src/core/components/autocomplete/types.ts +0 -103
  261. package/src/core/components/breadcrumbs/Breadcrumbs.tsx +0 -131
  262. package/src/core/components/breadcrumbs/__workshop__/Example.tsx +0 -61
  263. package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -16
  264. package/src/core/components/dialog/Dialog.tsx +0 -232
  265. package/src/core/components/dialog/DialogCard.tsx +0 -233
  266. package/src/core/components/dialog/DialogContext.ts +0 -21
  267. package/src/core/components/dialog/DialogProvider.tsx +0 -34
  268. package/src/core/components/dialog/__workshop__/Activate.tsx +0 -141
  269. package/src/core/components/dialog/__workshop__/AutoFocus.tsx +0 -29
  270. package/src/core/components/dialog/__workshop__/Layering.tsx +0 -41
  271. package/src/core/components/dialog/__workshop__/Nested.tsx +0 -71
  272. package/src/core/components/dialog/__workshop__/OnScroll.tsx +0 -51
  273. package/src/core/components/dialog/__workshop__/Panes.tsx +0 -89
  274. package/src/core/components/dialog/__workshop__/Position.tsx +0 -38
  275. package/src/core/components/dialog/__workshop__/Props.tsx +0 -79
  276. package/src/core/components/dialog/__workshop__/Provider.tsx +0 -11
  277. package/src/core/components/dialog/__workshop__/Wrapped.tsx +0 -76
  278. package/src/core/components/dialog/__workshop__/index.ts +0 -21
  279. package/src/core/components/dialog/isTargetWithinScope.ts +0 -14
  280. package/src/core/components/dialog/types.ts +0 -2
  281. package/src/core/components/dialog/useDialog.ts +0 -11
  282. package/src/core/components/hotkeys/Hotkeys.tsx +0 -60
  283. package/src/core/components/hotkeys/__workshop__/Plain.tsx +0 -9
  284. package/src/core/components/hotkeys/__workshop__/index.ts +0 -16
  285. package/src/core/components/menu/Menu.test.tsx +0 -129
  286. package/src/core/components/menu/Menu.tsx +0 -179
  287. package/src/core/components/menu/MenuButton.tsx +0 -230
  288. package/src/core/components/menu/MenuContext.ts +0 -19
  289. package/src/core/components/menu/MenuDivider.tsx +0 -32
  290. package/src/core/components/menu/MenuGroup.tsx +0 -236
  291. package/src/core/components/menu/MenuItem.tsx +0 -184
  292. package/src/core/components/menu/__workshop__/AsComponent.tsx +0 -45
  293. package/src/core/components/menu/__workshop__/AvatarMenu.tsx +0 -57
  294. package/src/core/components/menu/__workshop__/ClosableMenuButton.tsx +0 -47
  295. package/src/core/components/menu/__workshop__/ConstrainedInBoundary.tsx +0 -133
  296. package/src/core/components/menu/__workshop__/CustomMenuItem.tsx +0 -45
  297. package/src/core/components/menu/__workshop__/CustomSelectedState.tsx +0 -35
  298. package/src/core/components/menu/__workshop__/DisableFocusOnClose.tsx +0 -40
  299. package/src/core/components/menu/__workshop__/Groups.tsx +0 -156
  300. package/src/core/components/menu/__workshop__/MenuButton.tsx +0 -85
  301. package/src/core/components/menu/__workshop__/MenuGroupRight.tsx +0 -65
  302. package/src/core/components/menu/__workshop__/NestedMenu.tsx +0 -22
  303. package/src/core/components/menu/__workshop__/OnCloseMenuButton.tsx +0 -50
  304. package/src/core/components/menu/__workshop__/SelectedItem.tsx +0 -69
  305. package/src/core/components/menu/__workshop__/ShouldFocus.tsx +0 -42
  306. package/src/core/components/menu/__workshop__/Tones.tsx +0 -31
  307. package/src/core/components/menu/__workshop__/WithoutArrow.tsx +0 -32
  308. package/src/core/components/menu/__workshop__/index.ts +0 -91
  309. package/src/core/components/menu/helpers.ts +0 -82
  310. package/src/core/components/menu/useMenu.ts +0 -21
  311. package/src/core/components/menu/useMenuController.ts +0 -241
  312. package/src/core/components/tab/Tab.tsx +0 -109
  313. package/src/core/components/tab/TabList.tsx +0 -90
  314. package/src/core/components/tab/TabPanel.tsx +0 -47
  315. package/src/core/components/tab/__workshop__/Example.tsx +0 -79
  316. package/src/core/components/tab/__workshop__/index.ts +0 -16
  317. package/src/core/components/toast/Toast.test.tsx +0 -103
  318. package/src/core/components/toast/Toast.tsx +0 -191
  319. package/src/core/components/toast/ToastContext.ts +0 -7
  320. package/src/core/components/toast/ToastLayer.tsx +0 -54
  321. package/src/core/components/toast/ToastProvider.tsx +0 -112
  322. package/src/core/components/toast/__workshop__/Hook.tsx +0 -71
  323. package/src/core/components/toast/__workshop__/Toast.tsx +0 -28
  324. package/src/core/components/toast/__workshop__/index.ts +0 -21
  325. package/src/core/components/toast/toastState.ts +0 -6
  326. package/src/core/components/toast/types.ts +0 -24
  327. package/src/core/components/toast/useToast.ts +0 -23
  328. package/src/core/components/tree/Tree.tsx +0 -248
  329. package/src/core/components/tree/TreeContext.ts +0 -10
  330. package/src/core/components/tree/TreeGroup.tsx +0 -46
  331. package/src/core/components/tree/TreeItem.tsx +0 -237
  332. package/src/core/components/tree/__workshop__/Basic.tsx +0 -105
  333. package/src/core/components/tree/__workshop__/TabFromElement.tsx +0 -84
  334. package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
  335. package/src/core/components/tree/__workshop__/index.ts +0 -23
  336. package/src/core/components/tree/helpers.ts +0 -105
  337. package/src/core/components/tree/types.ts +0 -24
  338. package/src/core/components/tree/useTree.ts +0 -17
  339. package/src/core/components/virtualList/VirtualList.tsx +0 -209
  340. package/src/core/components/virtualList/__workshop__/ChangingProps.tsx +0 -36
  341. package/src/core/components/virtualList/__workshop__/ElementScroll.tsx +0 -24
  342. package/src/core/components/virtualList/__workshop__/InfiniteList.tsx +0 -48
  343. package/src/core/components/virtualList/__workshop__/WindowScrolll.tsx +0 -22
  344. package/src/core/components/virtualList/__workshop__/index.ts +0 -31
  345. package/src/core/constants.ts +0 -67
  346. package/src/core/helpers/animation.ts +0 -27
  347. package/src/core/helpers/element.ts +0 -55
  348. package/src/core/helpers/focus.ts +0 -92
  349. package/src/core/helpers/props.ts +0 -28
  350. package/src/core/helpers/scroll.ts +0 -15
  351. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -114
  352. package/src/core/hooks/useClickOutsideEvent.ts +0 -67
  353. package/src/core/hooks/useCustomValidity.ts +0 -13
  354. package/src/core/hooks/useDelayed.test.ts +0 -67
  355. package/src/core/hooks/useDelayedState.ts +0 -28
  356. package/src/core/hooks/useElementSize.ts +0 -19
  357. package/src/core/hooks/useGlobalKeyDown.ts +0 -17
  358. package/src/core/hooks/useMatchMedia.ts +0 -28
  359. package/src/core/hooks/useMediaIndex/__workshop__/Test.tsx +0 -14
  360. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -16
  361. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -21
  362. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -107
  363. package/src/core/hooks/useMounted.ts +0 -15
  364. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
  365. package/src/core/hooks/usePrefersDark.test.tsx +0 -20
  366. package/src/core/hooks/usePrefersDark.ts +0 -16
  367. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  368. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -20
  369. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  370. package/src/core/hooks/useResponsiveProp.ts +0 -28
  371. package/src/core/index.ts +0 -118
  372. package/src/core/lib/createGlobalScopedContext.ts +0 -37
  373. package/src/core/lib/globalScope.ts +0 -19
  374. package/src/core/lib/isArray.ts +0 -3
  375. package/src/core/lib/isRecord.ts +0 -3
  376. package/src/core/middleware/origin.ts +0 -47
  377. package/src/core/observers/elementSize.ts +0 -116
  378. package/src/core/observers/resize.ts +0 -9
  379. package/src/core/primitives/arrow/Arrow.tsx +0 -74
  380. package/src/core/primitives/arrow/cmds.ts +0 -91
  381. package/src/core/primitives/avatar/Avatar.tsx +0 -147
  382. package/src/core/primitives/avatar/AvatarCounter.tsx +0 -69
  383. package/src/core/primitives/avatar/AvatarStack.tsx +0 -79
  384. package/src/core/primitives/avatar/__workshop__/AsButton.tsx +0 -21
  385. package/src/core/primitives/avatar/__workshop__/Stack.tsx +0 -29
  386. package/src/core/primitives/avatar/__workshop__/WithinButton.tsx +0 -55
  387. package/src/core/primitives/avatar/__workshop__/WithinMenuItem.tsx +0 -72
  388. package/src/core/primitives/avatar/__workshop__/index.ts +0 -31
  389. package/src/core/primitives/avatar/types.ts +0 -2
  390. package/src/core/primitives/badge/Badge.test.tsx +0 -16
  391. package/src/core/primitives/badge/Badge.tsx +0 -61
  392. package/src/core/primitives/badge/__workshop__/Props.tsx +0 -30
  393. package/src/core/primitives/badge/__workshop__/Tones.tsx +0 -16
  394. package/src/core/primitives/badge/__workshop__/index.ts +0 -21
  395. package/src/core/primitives/box/Box.tsx +0 -222
  396. package/src/core/primitives/box/__workshop__/Props.tsx +0 -25
  397. package/src/core/primitives/box/__workshop__/Responsive.tsx +0 -20
  398. package/src/core/primitives/box/__workshop__/index.ts +0 -21
  399. package/src/core/primitives/button/Button.test.tsx +0 -30
  400. package/src/core/primitives/button/Button.tsx +0 -193
  401. package/src/core/primitives/button/__workshop__/Custom.tsx +0 -27
  402. package/src/core/primitives/button/__workshop__/CustomIcons.tsx +0 -30
  403. package/src/core/primitives/button/__workshop__/Disabled.tsx +0 -54
  404. package/src/core/primitives/button/__workshop__/MixedChildren.tsx +0 -12
  405. package/src/core/primitives/button/__workshop__/Props.tsx +0 -77
  406. package/src/core/primitives/button/__workshop__/SanityUploadButton.tsx +0 -36
  407. package/src/core/primitives/button/__workshop__/Stacked.tsx +0 -74
  408. package/src/core/primitives/button/__workshop__/Styled1.tsx +0 -17
  409. package/src/core/primitives/button/__workshop__/Styled2.tsx +0 -19
  410. package/src/core/primitives/button/__workshop__/TextOverflow.tsx +0 -13
  411. package/src/core/primitives/button/__workshop__/UploadButton.tsx +0 -29
  412. package/src/core/primitives/button/__workshop__/index.ts +0 -66
  413. package/src/core/primitives/button/types.ts +0 -2
  414. package/src/core/primitives/card/Card.tsx +0 -109
  415. package/src/core/primitives/card/CardContext.ts +0 -10
  416. package/src/core/primitives/card/CardProvider.tsx +0 -27
  417. package/src/core/primitives/card/__workshop__/AsButton.tsx +0 -107
  418. package/src/core/primitives/card/__workshop__/AsComponent.tsx +0 -27
  419. package/src/core/primitives/card/__workshop__/Checkered.tsx +0 -26
  420. package/src/core/primitives/card/__workshop__/Interactive.tsx +0 -29
  421. package/src/core/primitives/card/__workshop__/ListNavigation.tsx +0 -78
  422. package/src/core/primitives/card/__workshop__/Props.tsx +0 -62
  423. package/src/core/primitives/card/__workshop__/Selected.tsx +0 -62
  424. package/src/core/primitives/card/__workshop__/Styled.tsx +0 -14
  425. package/src/core/primitives/card/__workshop__/Tones.tsx +0 -27
  426. package/src/core/primitives/card/__workshop__/index.ts +0 -20
  427. package/src/core/primitives/card/types.ts +0 -17
  428. package/src/core/primitives/card/useCard.ts +0 -15
  429. package/src/core/primitives/checkbox/Checkbox.tsx +0 -80
  430. package/src/core/primitives/checkbox/__workshop__/Example.tsx +0 -25
  431. package/src/core/primitives/checkbox/__workshop__/Props.tsx +0 -35
  432. package/src/core/primitives/checkbox/__workshop__/ReadOnly.tsx +0 -16
  433. package/src/core/primitives/checkbox/__workshop__/Tones.tsx +0 -27
  434. package/src/core/primitives/checkbox/__workshop__/index.ts +0 -15
  435. package/src/core/primitives/code/Code.tsx +0 -48
  436. package/src/core/primitives/code/Refractor.tsx +0 -18
  437. package/src/core/primitives/code/__workshop__/OpticalAlignment.tsx +0 -23
  438. package/src/core/primitives/code/__workshop__/Props.tsx +0 -23
  439. package/src/core/primitives/code/__workshop__/index.ts +0 -21
  440. package/src/core/primitives/container/Container.tsx +0 -37
  441. package/src/core/primitives/container/__workshop__/Example.tsx +0 -25
  442. package/src/core/primitives/container/__workshop__/index.ts +0 -10
  443. package/src/core/primitives/container/types.ts +0 -6
  444. package/src/core/primitives/flex/Flex.tsx +0 -58
  445. package/src/core/primitives/flex/__workshop__/Example.tsx +0 -40
  446. package/src/core/primitives/flex/__workshop__/Gap.tsx +0 -25
  447. package/src/core/primitives/flex/__workshop__/index.ts +0 -13
  448. package/src/core/primitives/grid/Grid.tsx +0 -35
  449. package/src/core/primitives/grid/__workshop__/Responsive.tsx +0 -54
  450. package/src/core/primitives/grid/__workshop__/index.ts +0 -12
  451. package/src/core/primitives/heading/Heading.tsx +0 -78
  452. package/src/core/primitives/heading/__workshop__/OpticalAlignment.tsx +0 -54
  453. package/src/core/primitives/heading/__workshop__/Plain.tsx +0 -40
  454. package/src/core/primitives/heading/__workshop__/index.ts +0 -21
  455. package/src/core/primitives/inline/Inline.tsx +0 -62
  456. package/src/core/primitives/inline/__workshop__/Plain.tsx +0 -28
  457. package/src/core/primitives/inline/__workshop__/index.ts +0 -10
  458. package/src/core/primitives/kbd/Kbd.tsx +0 -57
  459. package/src/core/primitives/kbd/__workshop__/Plain.tsx +0 -9
  460. package/src/core/primitives/kbd/__workshop__/index.ts +0 -10
  461. package/src/core/primitives/label/Label.tsx +0 -75
  462. package/src/core/primitives/label/__workshop__/OpticalAlignment.tsx +0 -54
  463. package/src/core/primitives/label/__workshop__/Plain.tsx +0 -42
  464. package/src/core/primitives/label/__workshop__/index.ts +0 -21
  465. package/src/core/primitives/layer/Layer.test.tsx +0 -110
  466. package/src/core/primitives/layer/Layer.tsx +0 -42
  467. package/src/core/primitives/layer/LayerCard.tsx +0 -90
  468. package/src/core/primitives/layer/LayerContext.ts +0 -7
  469. package/src/core/primitives/layer/LayerProvider.tsx +0 -106
  470. package/src/core/primitives/layer/__workshop__/MultipleRoots.tsx +0 -49
  471. package/src/core/primitives/layer/__workshop__/Nested.tsx +0 -98
  472. package/src/core/primitives/layer/__workshop__/ResponsiveZOffset.tsx +0 -17
  473. package/src/core/primitives/layer/__workshop__/_debug.tsx +0 -17
  474. package/src/core/primitives/layer/__workshop__/index.ts +0 -26
  475. package/src/core/primitives/layer/getLayerContext.test.ts +0 -32
  476. package/src/core/primitives/layer/getLayerContext.ts +0 -21
  477. package/src/core/primitives/layer/types.ts +0 -9
  478. package/src/core/primitives/layer/useLayer.ts +0 -24
  479. package/src/core/primitives/popover/Popover.tsx +0 -442
  480. package/src/core/primitives/popover/PopoverLayer.tsx +0 -149
  481. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -89
  482. package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  483. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -34
  484. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  485. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -79
  486. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -69
  487. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -102
  488. package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -106
  489. package/src/core/primitives/popover/__workshop__/index.ts +0 -51
  490. package/src/core/primitives/popover/constants.ts +0 -22
  491. package/src/core/primitives/popover/floating-ui/size.ts +0 -83
  492. package/src/core/primitives/popover/helpers.ts +0 -32
  493. package/src/core/primitives/popover/types.ts +0 -12
  494. package/src/core/primitives/radio/Radio.tsx +0 -64
  495. package/src/core/primitives/radio/__workshop__/Example.tsx +0 -63
  496. package/src/core/primitives/radio/__workshop__/Plain.tsx +0 -28
  497. package/src/core/primitives/radio/__workshop__/index.ts +0 -13
  498. package/src/core/primitives/select/Select.tsx +0 -75
  499. package/src/core/primitives/select/__workshop__/Plain.tsx +0 -43
  500. package/src/core/primitives/select/__workshop__/ReadOnly.tsx +0 -23
  501. package/src/core/primitives/select/__workshop__/index.ts +0 -13
  502. package/src/core/primitives/selectable/Selectable.tsx +0 -50
  503. package/src/core/primitives/skeleton/CodeSkeleton.tsx +0 -49
  504. package/src/core/primitives/skeleton/HeadingSkeleton.tsx +0 -48
  505. package/src/core/primitives/skeleton/LabelSkeleton.tsx +0 -47
  506. package/src/core/primitives/skeleton/Skeleton.tsx +0 -70
  507. package/src/core/primitives/skeleton/TextSkeleton.tsx +0 -49
  508. package/src/core/primitives/skeleton/__workshop__/Delay.tsx +0 -78
  509. package/src/core/primitives/skeleton/__workshop__/Skeleton.tsx +0 -72
  510. package/src/core/primitives/skeleton/__workshop__/index.ts +0 -13
  511. package/src/core/primitives/spinner/AnimatedSpinnerIcon.tsx +0 -14
  512. package/src/core/primitives/spinner/Spinner.tsx +0 -45
  513. package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -20
  514. package/src/core/primitives/spinner/__workshop__/index.ts +0 -16
  515. package/src/core/primitives/srOnly/SrOnly.tsx +0 -33
  516. package/src/core/primitives/stack/Stack.tsx +0 -60
  517. package/src/core/primitives/stack/__workshop__/Plain.tsx +0 -35
  518. package/src/core/primitives/stack/__workshop__/index.ts +0 -16
  519. package/src/core/primitives/switch/Switch.tsx +0 -84
  520. package/src/core/primitives/switch/__workshop__/Example.tsx +0 -23
  521. package/src/core/primitives/switch/__workshop__/Props.tsx +0 -21
  522. package/src/core/primitives/switch/__workshop__/index.ts +0 -13
  523. package/src/core/primitives/text/Text.tsx +0 -76
  524. package/src/core/primitives/text/__workshop__/Colored.tsx +0 -30
  525. package/src/core/primitives/text/__workshop__/Example.tsx +0 -42
  526. package/src/core/primitives/text/__workshop__/OpticalAlignment.tsx +0 -23
  527. package/src/core/primitives/text/__workshop__/index.ts +0 -26
  528. package/src/core/primitives/textArea/TextArea.tsx +0 -84
  529. package/src/core/primitives/textArea/__workshop__/Plain.tsx +0 -69
  530. package/src/core/primitives/textArea/__workshop__/index.ts +0 -16
  531. package/src/core/primitives/textInput/TextInput.tsx +0 -258
  532. package/src/core/primitives/textInput/__workshop__/ClearButton.tsx +0 -30
  533. package/src/core/primitives/textInput/__workshop__/CustomValidity.tsx +0 -17
  534. package/src/core/primitives/textInput/__workshop__/Plain.tsx +0 -140
  535. package/src/core/primitives/textInput/__workshop__/ReadOnly.tsx +0 -9
  536. package/src/core/primitives/textInput/__workshop__/States.tsx +0 -53
  537. package/src/core/primitives/textInput/__workshop__/Tones.tsx +0 -277
  538. package/src/core/primitives/textInput/__workshop__/Typed.tsx +0 -29
  539. package/src/core/primitives/textInput/__workshop__/index.ts +0 -46
  540. package/src/core/primitives/tooltip/Tooltip.test.tsx +0 -452
  541. package/src/core/primitives/tooltip/Tooltip.tsx +0 -483
  542. package/src/core/primitives/tooltip/TooltipLayer.tsx +0 -106
  543. package/src/core/primitives/tooltip/__workshop__/CustomPortal.tsx +0 -104
  544. package/src/core/primitives/tooltip/__workshop__/OverflowingBoundary.tsx +0 -76
  545. package/src/core/primitives/tooltip/__workshop__/Props.tsx +0 -124
  546. package/src/core/primitives/tooltip/__workshop__/ResizableBoundary.tsx +0 -91
  547. package/src/core/primitives/tooltip/__workshop__/index.ts +0 -31
  548. package/src/core/primitives/tooltip/constants.ts +0 -23
  549. package/src/core/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupContext.tsx +0 -13
  550. package/src/core/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupProvider.tsx +0 -55
  551. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
  552. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  553. package/src/core/types.ts +0 -56
  554. package/src/core/utils/ErrorBoundary.tsx +0 -50
  555. package/src/core/utils/boundaryElement/BoundaryElement.test.tsx +0 -102
  556. package/src/core/utils/boundaryElement/BoundaryElementContext.ts +0 -10
  557. package/src/core/utils/boundaryElement/BoundaryElementProvider.tsx +0 -18
  558. package/src/core/utils/boundaryElement/__workshop__/Plain.tsx +0 -19
  559. package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -16
  560. package/src/core/utils/boundaryElement/types.ts +0 -5
  561. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -24
  562. package/src/core/utils/elementQuery/ElementQuery.tsx +0 -75
  563. package/src/core/utils/elementQuery/__workshop__/CustomMedia.tsx +0 -41
  564. package/src/core/utils/elementQuery/__workshop__/index.ts +0 -16
  565. package/src/core/utils/elementQuery/helpers.ts +0 -27
  566. package/src/core/utils/getElementRef.ts +0 -29
  567. package/src/core/utils/portal/Portal.test.tsx +0 -105
  568. package/src/core/utils/portal/Portal.tsx +0 -36
  569. package/src/core/utils/portal/PortalContext.ts +0 -37
  570. package/src/core/utils/portal/PortalProvider.tsx +0 -70
  571. package/src/core/utils/portal/__workshop__/Named.tsx +0 -63
  572. package/src/core/utils/portal/__workshop__/index.ts +0 -16
  573. package/src/core/utils/portal/types.ts +0 -7
  574. package/src/core/utils/portal/usePortal.ts +0 -23
  575. package/src/css/_assign.ts +0 -3
  576. package/src/css/_composeClassNames.ts +0 -12
  577. package/src/css/_fromEntries.ts +0 -3
  578. package/src/css/_getClassNames.ts +0 -9
  579. package/src/css/_responsiveClassName.ts +0 -45
  580. package/src/css/_responsiveStyle.css.ts +0 -34
  581. package/src/css/_style.css.ts +0 -9
  582. package/src/css/components/breadcrumbs/breadcrumbs.css.ts +0 -6
  583. package/src/css/components/breadcrumbs/breadcrumbs.ts +0 -7
  584. package/src/css/components/dialog/dialog.css.ts +0 -98
  585. package/src/css/components/dialog/dialog.ts +0 -58
  586. package/src/css/components/menu/menu.css.ts +0 -14
  587. package/src/css/components/menu/menu.ts +0 -12
  588. package/src/css/components/skeleton/skeleton.css.ts +0 -128
  589. package/src/css/components/skeleton/skeleton.ts +0 -38
  590. package/src/css/components/skeleton/types.ts +0 -36
  591. package/src/css/components/toast/toast.css.ts +0 -17
  592. package/src/css/components/toast/toast.ts +0 -11
  593. package/src/css/components/tree/tree.css.ts +0 -65
  594. package/src/css/components/tree/tree.ts +0 -7
  595. package/src/css/constants.ts +0 -10
  596. package/src/css/getVarName.ts +0 -27
  597. package/src/css/index.ts +0 -146
  598. package/src/css/layers.css.ts +0 -12
  599. package/src/css/primitives/_arrow/_arrow.css.ts +0 -68
  600. package/src/css/primitives/_arrow/_arrow.ts +0 -26
  601. package/src/css/primitives/_input/_input.css.ts +0 -261
  602. package/src/css/primitives/_input/input.ts +0 -29
  603. package/src/css/primitives/_input/types.ts +0 -13
  604. package/src/css/primitives/avatar/avatar.css.ts +0 -201
  605. package/src/css/primitives/avatar/avatar.ts +0 -68
  606. package/src/css/primitives/avatar/types.ts +0 -10
  607. package/src/css/primitives/badge/badge.css.ts +0 -27
  608. package/src/css/primitives/badge/badge.ts +0 -8
  609. package/src/css/primitives/badge/types.ts +0 -13
  610. package/src/css/primitives/box/box.css.ts +0 -19
  611. package/src/css/primitives/box/box.ts +0 -82
  612. package/src/css/primitives/box/types.ts +0 -75
  613. package/src/css/primitives/button/button.css.ts +0 -287
  614. package/src/css/primitives/button/button.ts +0 -26
  615. package/src/css/primitives/button/types.ts +0 -12
  616. package/src/css/primitives/card/__workshop__/Color.tsx +0 -83
  617. package/src/css/primitives/card/__workshop__/index.ts +0 -16
  618. package/src/css/primitives/card/card.css.ts +0 -397
  619. package/src/css/primitives/card/card.ts +0 -13
  620. package/src/css/primitives/card/types.ts +0 -9
  621. package/src/css/primitives/checkbox/checkbox.css.ts +0 -193
  622. package/src/css/primitives/checkbox/checkbox.ts +0 -17
  623. package/src/css/primitives/code/code.css.ts +0 -272
  624. package/src/css/primitives/code/code.ts +0 -19
  625. package/src/css/primitives/code/types.ts +0 -11
  626. package/src/css/primitives/container/container.css.ts +0 -4
  627. package/src/css/primitives/container/container.ts +0 -17
  628. package/src/css/primitives/container/types.ts +0 -9
  629. package/src/css/primitives/heading/heading.css.ts +0 -86
  630. package/src/css/primitives/heading/heading.ts +0 -22
  631. package/src/css/primitives/heading/types.ts +0 -14
  632. package/src/css/primitives/kbd/kbd.css.ts +0 -16
  633. package/src/css/primitives/kbd/kbd.ts +0 -9
  634. package/src/css/primitives/kbd/types.ts +0 -6
  635. package/src/css/primitives/label/label.css.ts +0 -87
  636. package/src/css/primitives/label/label.ts +0 -22
  637. package/src/css/primitives/label/types.ts +0 -14
  638. package/src/css/primitives/popover/popover.css.ts +0 -6
  639. package/src/css/primitives/popover/popover.ts +0 -12
  640. package/src/css/primitives/radio/radio.css.ts +0 -78
  641. package/src/css/primitives/radio/radio.ts +0 -17
  642. package/src/css/primitives/root/root.css.ts +0 -20
  643. package/src/css/primitives/root/root.ts +0 -17
  644. package/src/css/primitives/root/types.ts +0 -10
  645. package/src/css/primitives/select/select.css.ts +0 -24
  646. package/src/css/primitives/select/select.ts +0 -14
  647. package/src/css/primitives/select/types.ts +0 -5
  648. package/src/css/primitives/selectable/selectable.css.ts +0 -131
  649. package/src/css/primitives/selectable/selectable.ts +0 -9
  650. package/src/css/primitives/selectable/types.ts +0 -9
  651. package/src/css/primitives/spinner/spinner.css.ts +0 -19
  652. package/src/css/primitives/spinner/spinner.ts +0 -13
  653. package/src/css/primitives/spinner/types.ts +0 -4
  654. package/src/css/primitives/srOnly/srOnly.css.ts +0 -10
  655. package/src/css/primitives/srOnly/srOnly.ts +0 -7
  656. package/src/css/primitives/stack/stack.css.ts +0 -6
  657. package/src/css/primitives/stack/stack.ts +0 -7
  658. package/src/css/primitives/switch/switch.css.ts +0 -98
  659. package/src/css/primitives/switch/switch.ts +0 -27
  660. package/src/css/primitives/text/text.css.ts +0 -86
  661. package/src/css/primitives/text/text.ts +0 -24
  662. package/src/css/primitives/text/types.ts +0 -18
  663. package/src/css/primitives/textArea/textArea.css.ts +0 -4
  664. package/src/css/primitives/textArea/textArea.ts +0 -9
  665. package/src/css/primitives/textArea/types.ts +0 -7
  666. package/src/css/primitives/textInput/textInput.css.ts +0 -43
  667. package/src/css/primitives/textInput/textInput.ts +0 -24
  668. package/src/css/primitives/textInput/types.ts +0 -7
  669. package/src/css/primitives/tooltip/tooltip.css.ts +0 -4
  670. package/src/css/primitives/tooltip/tooltip.ts +0 -8
  671. package/src/css/primitives/tooltip/types.ts +0 -4
  672. package/src/css/props/alignItems/alignItems.css.ts +0 -22
  673. package/src/css/props/alignItems/alignItems.ts +0 -8
  674. package/src/css/props/alignItems/types.ts +0 -9
  675. package/src/css/props/border/border.css.ts +0 -65
  676. package/src/css/props/border/border.ts +0 -21
  677. package/src/css/props/border/types.ts +0 -13
  678. package/src/css/props/boxSizing/boxSizing.css.ts +0 -12
  679. package/src/css/props/boxSizing/boxSizing.ts +0 -7
  680. package/src/css/props/boxSizing/types.ts +0 -7
  681. package/src/css/props/display/display.css.ts +0 -56
  682. package/src/css/props/display/display.ts +0 -8
  683. package/src/css/props/display/types.ts +0 -16
  684. package/src/css/props/flex/flex.css.ts +0 -52
  685. package/src/css/props/flex/flex.ts +0 -8
  686. package/src/css/props/flex/types.ts +0 -9
  687. package/src/css/props/flexDirection/flexDirection.css.ts +0 -19
  688. package/src/css/props/flexDirection/flexDirection.ts +0 -8
  689. package/src/css/props/flexDirection/types.ts +0 -9
  690. package/src/css/props/flexWrap/flexWrap.css.ts +0 -16
  691. package/src/css/props/flexWrap/flexWrap.ts +0 -8
  692. package/src/css/props/flexWrap/types.ts +0 -9
  693. package/src/css/props/font/font.css.ts +0 -94
  694. package/src/css/props/font/font.ts +0 -8
  695. package/src/css/props/font/types.ts +0 -6
  696. package/src/css/props/gap/gap.css.ts +0 -40
  697. package/src/css/props/gap/gap.ts +0 -13
  698. package/src/css/props/gap/types.ts +0 -10
  699. package/src/css/props/gridAutoColumns/gridAutoColumns.css.ts +0 -19
  700. package/src/css/props/gridAutoColumns/gridAutoColumns.ts +0 -8
  701. package/src/css/props/gridAutoColumns/types.ts +0 -9
  702. package/src/css/props/gridAutoFlow/gridAutoFlow.css.ts +0 -19
  703. package/src/css/props/gridAutoFlow/gridAutoFlow.ts +0 -8
  704. package/src/css/props/gridAutoFlow/types.ts +0 -9
  705. package/src/css/props/gridAutoRows/gridAutoRows.css.ts +0 -19
  706. package/src/css/props/gridAutoRows/gridAutoRows.ts +0 -8
  707. package/src/css/props/gridAutoRows/types.ts +0 -9
  708. package/src/css/props/gridColumn/gridColumn.css.ts +0 -49
  709. package/src/css/props/gridColumn/gridColumn.ts +0 -8
  710. package/src/css/props/gridColumn/types.ts +0 -9
  711. package/src/css/props/gridColumnEnd/gridColumnEnd.css.ts +0 -46
  712. package/src/css/props/gridColumnEnd/gridColumnEnd.ts +0 -8
  713. package/src/css/props/gridColumnEnd/types.ts +0 -9
  714. package/src/css/props/gridColumnStart/gridColumnStart.css.ts +0 -46
  715. package/src/css/props/gridColumnStart/gridColumnStart.ts +0 -8
  716. package/src/css/props/gridColumnStart/types.ts +0 -9
  717. package/src/css/props/gridRow/gridRow.css.ts +0 -49
  718. package/src/css/props/gridRow/gridRow.ts +0 -8
  719. package/src/css/props/gridRow/types.ts +0 -9
  720. package/src/css/props/gridRowEnd/gridRowEnd.css.ts +0 -46
  721. package/src/css/props/gridRowEnd/gridRowEnd.ts +0 -8
  722. package/src/css/props/gridRowEnd/types.ts +0 -9
  723. package/src/css/props/gridRowStart/gridRowStart.css.ts +0 -46
  724. package/src/css/props/gridRowStart/gridRowStart.ts +0 -8
  725. package/src/css/props/gridRowStart/types.ts +0 -9
  726. package/src/css/props/gridTemplateColumns/gridTemplateColumns.css.ts +0 -43
  727. package/src/css/props/gridTemplateColumns/gridTemplateColumns.ts +0 -8
  728. package/src/css/props/gridTemplateColumns/types.ts +0 -9
  729. package/src/css/props/gridTemplateRows/gridTemplateRows.css.ts +0 -43
  730. package/src/css/props/gridTemplateRows/gridTemplateRows.ts +0 -8
  731. package/src/css/props/gridTemplateRows/types.ts +0 -9
  732. package/src/css/props/height/height.css.ts +0 -25
  733. package/src/css/props/height/height.ts +0 -8
  734. package/src/css/props/height/types.ts +0 -9
  735. package/src/css/props/inset/inset.css.ts +0 -37
  736. package/src/css/props/inset/inset.ts +0 -21
  737. package/src/css/props/inset/types.ts +0 -13
  738. package/src/css/props/justifyContent/justifyContent.css.ts +0 -25
  739. package/src/css/props/justifyContent/justifyContent.ts +0 -8
  740. package/src/css/props/justifyContent/types.ts +0 -15
  741. package/src/css/props/margin/margin.css.ts +0 -117
  742. package/src/css/props/margin/margin.ts +0 -25
  743. package/src/css/props/margin/types.ts +0 -17
  744. package/src/css/props/maxWidth/maxWidth.css.ts +0 -32
  745. package/src/css/props/maxWidth/maxWidth.ts +0 -8
  746. package/src/css/props/maxWidth/types.ts +0 -11
  747. package/src/css/props/minHeight/minHeight.css.ts +0 -13
  748. package/src/css/props/minHeight/minHeight.ts +0 -8
  749. package/src/css/props/minHeight/types.ts +0 -9
  750. package/src/css/props/minWidth/minWidth.css.ts +0 -25
  751. package/src/css/props/minWidth/minWidth.ts +0 -8
  752. package/src/css/props/minWidth/types.ts +0 -9
  753. package/src/css/props/outline/outline.css.ts +0 -10
  754. package/src/css/props/outline/outline.ts +0 -8
  755. package/src/css/props/outline/types.ts +0 -7
  756. package/src/css/props/overflow/overflow.css.ts +0 -16
  757. package/src/css/props/overflow/overflow.ts +0 -8
  758. package/src/css/props/overflow/types.ts +0 -11
  759. package/src/css/props/padding/padding.css.ts +0 -87
  760. package/src/css/props/padding/padding.ts +0 -25
  761. package/src/css/props/padding/types.ts +0 -17
  762. package/src/css/props/pointerEvents/pointerEvents.css.ts +0 -13
  763. package/src/css/props/pointerEvents/pointerEvents.ts +0 -8
  764. package/src/css/props/pointerEvents/types.ts +0 -7
  765. package/src/css/props/position/position.css.ts +0 -22
  766. package/src/css/props/position/position.ts +0 -8
  767. package/src/css/props/position/types.ts +0 -9
  768. package/src/css/props/radius/radius.css.ts +0 -21
  769. package/src/css/props/radius/radius.ts +0 -8
  770. package/src/css/props/radius/types.ts +0 -8
  771. package/src/css/props/shadow/shadow.css.ts +0 -23
  772. package/src/css/props/shadow/shadow.ts +0 -8
  773. package/src/css/props/shadow/types.ts +0 -8
  774. package/src/css/props/textAlign/textAlign.css.ts +0 -22
  775. package/src/css/props/textAlign/textAlign.ts +0 -8
  776. package/src/css/props/textAlign/types.ts +0 -7
  777. package/src/css/props/textOverflow/textOverflow.css.ts +0 -19
  778. package/src/css/props/textOverflow/textOverflow.ts +0 -8
  779. package/src/css/props/textOverflow/types.ts +0 -12
  780. package/src/css/props/width/types.ts +0 -11
  781. package/src/css/props/width/width.css.ts +0 -31
  782. package/src/css/props/width/width.ts +0 -8
  783. package/src/css/theme/buildCSSTheme.ts +0 -492
  784. package/src/css/theme/defaultTheme.css.ts +0 -64
  785. package/src/css/types.ts +0 -431
  786. package/src/css/vars.css.ts +0 -680
  787. package/src/theme/_parseColorToken.ts +0 -180
  788. package/src/theme/buildTheme.ts +0 -32
  789. package/src/theme/constants.ts +0 -90
  790. package/src/theme/defaults/color.ts +0 -197
  791. package/src/theme/defaults/common.ts +0 -71
  792. package/src/theme/defaults/fonts.ts +0 -250
  793. package/src/theme/index.ts +0 -5
  794. package/src/theme/merge.ts +0 -24
  795. package/src/theme/resolveTokens.ts +0 -204
  796. package/src/theme/types.ts +0 -366
@@ -1,179 +0,0 @@
1
- import {menu, type PaddingStyleProps, type ResponsiveProp} from '@sanity/ui/css'
2
- import type {Space} from '@sanity/ui/theme'
3
- import {useCallback, useEffect, useImperativeHandle, useMemo, useRef} from 'react'
4
-
5
- import {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'
6
- import {useGlobalKeyDown} from '../../hooks/useGlobalKeyDown'
7
- import {Box} from '../../primitives/box/Box'
8
- import {useLayer} from '../../primitives/layer/useLayer'
9
- import {Stack} from '../../primitives/stack/Stack'
10
- import type {ComponentType, Props} from '../../types'
11
- import {MenuContext, type MenuContextValue} from './MenuContext'
12
- import {useMenuController} from './useMenuController'
13
-
14
- /** @public */
15
- export const DEFAULT_MENU_ELEMENT = 'div'
16
-
17
- /** @public */
18
- export type MenuOwnProps = PaddingStyleProps & {
19
- 'gap'?: ResponsiveProp<Space>
20
- 'onClickOutside'?: (event: MouseEvent) => void
21
- 'onEscape'?: () => void
22
- 'onItemClick'?: (event: React.MouseEvent<HTMLButtonElement>) => void
23
- 'onItemSelect'?: (index: number) => void
24
- 'originElement'?: HTMLElement | null
25
- 'registerElement'?: (el: HTMLElement) => () => void
26
- 'shouldFocus'?: 'first' | 'last' | null
27
- 'aria-labelledby'?: string
28
- }
29
-
30
- /** @public */
31
- export type MenuElementType = 'div' | 'span' | ComponentType
32
-
33
- /** @public */
34
- export type MenuProps<E extends MenuElementType = MenuElementType> = Props<MenuOwnProps, E>
35
-
36
- /**
37
- * The `Menu` component is a building block for application menus.
38
- *
39
- * @public
40
- */
41
- export function Menu<E extends MenuElementType = typeof DEFAULT_MENU_ELEMENT>(
42
- props: MenuProps<E>,
43
- ): React.JSX.Element {
44
- const {
45
- as = DEFAULT_MENU_ELEMENT,
46
- children,
47
- className,
48
- gap = 1,
49
- onClickOutside,
50
- onEscape,
51
- onItemClick,
52
- onItemSelect,
53
- onKeyDown,
54
- originElement,
55
- padding = 1,
56
- ref: forwardedRef,
57
- registerElement,
58
- shouldFocus: _shouldFocus,
59
- ...rest
60
- } = props as MenuProps<typeof DEFAULT_MENU_ELEMENT>
61
-
62
- const shouldFocus = _shouldFocus ?? null
63
-
64
- const ref = useRef<HTMLDivElement | null>(null)
65
-
66
- useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)
67
-
68
- const {isTopLayer} = useLayer()
69
-
70
- const {
71
- activeElement,
72
- activeIndex,
73
- handleItemMouseEnter,
74
- handleItemMouseLeave,
75
- handleKeyDown,
76
- mount,
77
- } = useMenuController({
78
- onKeyDown,
79
- originElement,
80
- shouldFocus,
81
- rootElementRef: ref,
82
- })
83
-
84
- const unregisterElementRef = useRef<(() => void) | null>(null)
85
- const handleRefChange = useCallback(
86
- (el: HTMLDivElement | null) => {
87
- // Run cleanup of previously registered elements
88
- if (unregisterElementRef.current) {
89
- // The `registerElement` callback were originally used in a `useEffect`, so it returns a cleanup function that is a bit gnarly to handle in a ref callback.
90
- // Since we can't change the `registerElement` implementation itself without making breaking change,
91
- // that is explained in the code comments for createGlobalScopedContext.tsx,
92
- // we need to handle with a ref that holds on to the cleanup function last returned when the ref callback is called.
93
- unregisterElementRef.current()
94
- unregisterElementRef.current = null
95
- }
96
-
97
- ref.current = el
98
-
99
- // Register root element (for nested menus)
100
- if (ref.current && registerElement) {
101
- unregisterElementRef.current = registerElement(ref.current)
102
- }
103
- },
104
- [registerElement],
105
- )
106
-
107
- // Trigger `onItemSelect` when active index changes
108
- useEffect(() => {
109
- if (onItemSelect) onItemSelect(activeIndex)
110
- }, [activeIndex, onItemSelect])
111
-
112
- // Close menu when clicking outside
113
- useClickOutsideEvent(isTopLayer && onClickOutside, () => [ref.current])
114
-
115
- // Close menu when pressing Escape
116
- useGlobalKeyDown(
117
- useCallback(
118
- (event) => {
119
- if (!isTopLayer) return
120
-
121
- if (event.key === 'Escape') {
122
- event.stopPropagation()
123
- if (onEscape) onEscape()
124
- }
125
- },
126
- [isTopLayer, onEscape],
127
- ),
128
- )
129
-
130
- const value: MenuContextValue = useMemo(
131
- () => ({
132
- version: 0.0,
133
- activeElement,
134
- activeIndex,
135
- mount,
136
- onClickOutside,
137
- onEscape,
138
- onItemClick,
139
- onItemMouseEnter: handleItemMouseEnter,
140
- onItemMouseLeave: handleItemMouseLeave,
141
- registerElement,
142
-
143
- // deprecated
144
- onMouseEnter: handleItemMouseEnter,
145
- onMouseLeave: handleItemMouseLeave,
146
- }),
147
- [
148
- activeElement,
149
- activeIndex,
150
- mount,
151
- handleItemMouseEnter,
152
- handleItemMouseLeave,
153
- onClickOutside,
154
- onEscape,
155
- onItemClick,
156
- registerElement,
157
- ],
158
- )
159
-
160
- return (
161
- <MenuContext.Provider value={value}>
162
- <Box
163
- data-ui="Menu"
164
- {...rest}
165
- as={as}
166
- className={menu({className})}
167
- onKeyDown={handleKeyDown}
168
- overflow="auto"
169
- outline="none"
170
- padding={padding}
171
- ref={handleRefChange}
172
- role="menu"
173
- tabIndex={-1}
174
- >
175
- <Stack gap={gap}>{children}</Stack>
176
- </Box>
177
- </MenuContext.Provider>
178
- )
179
- }
@@ -1,230 +0,0 @@
1
- import {
2
- cloneElement,
3
- type FocusEvent,
4
- type ForwardedRef,
5
- type KeyboardEvent,
6
- type MouseEvent as ReactMouseEvent,
7
- type ReactElement,
8
- useCallback,
9
- useEffect,
10
- useImperativeHandle,
11
- useMemo,
12
- useRef,
13
- useState,
14
- } from 'react'
15
-
16
- import type {ButtonProps} from '../../primitives/button/Button'
17
- import {Popover, type PopoverProps} from '../../primitives/popover/Popover'
18
- import type {Props} from '../../types'
19
- import type {MenuProps} from './Menu'
20
-
21
- /** @public */
22
- export type MenuButtonProps = {
23
- /**
24
- * @beta Do not use in production.
25
- */
26
- __unstable_disableRestoreFocusOnClose?: boolean
27
- button: ReactElement<ButtonProps>
28
- id: string
29
- menu?: ReactElement
30
- onClose?: () => void
31
- onOpen?: () => void
32
- popover?: Omit<PopoverProps<'div'>, 'content' | 'open'>
33
-
34
- ref?: ForwardedRef<HTMLButtonElement | null>
35
- }
36
-
37
- /**
38
- * The `MenuButton` component follows the WAI-ARIA specification for menu buttons.
39
- *
40
- * @public
41
- */
42
- export function MenuButton(props: MenuButtonProps): React.JSX.Element {
43
- const {
44
- __unstable_disableRestoreFocusOnClose: disableRestoreFocusOnClose = false,
45
- button: buttonProp,
46
- id,
47
- menu: menuProp,
48
- onClose,
49
- onOpen,
50
- popover,
51
- ref: forwardedRef,
52
- } = props
53
- const [open, setOpen] = useState(false)
54
- const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)
55
- const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)
56
- const [menuElements, setChildMenuElements] = useState<HTMLElement[]>([])
57
- const openRef = useRef<boolean>(open)
58
-
59
- // Notify consumers when the menu opens
60
- useEffect(() => {
61
- if (onOpen && open && !openRef.current) {
62
- onOpen()
63
- }
64
- }, [onOpen, open])
65
-
66
- // Notify consumers when the menu closes
67
- useEffect(() => {
68
- if (onClose && !open && openRef.current) {
69
- onClose()
70
- }
71
- }, [onClose, open])
72
-
73
- useEffect(() => {
74
- openRef.current = open
75
- }, [open])
76
-
77
- const handleButtonClick = useCallback(() => {
78
- setOpen((v) => !v)
79
- setShouldFocus(null)
80
- }, [])
81
-
82
- // Prevent mouse event propagation when the menu is open.
83
- // This is to ensure that `handleBlur` isn't triggered when clicking the menu button whilst open,
84
- // which can lead to `setOpen` being triggered multiple times (once by `handleBlur`, and again by `handleButtonClick`).
85
- const handleMouseDown = useCallback(
86
- (event: ReactMouseEvent<HTMLElement>) => {
87
- if (open) event.preventDefault()
88
- },
89
- [open],
90
- )
91
-
92
- const handleButtonKeyDown = useCallback((event: KeyboardEvent<HTMLButtonElement>) => {
93
- // On `ArrowDown`, `Enter` and `Space`
94
- // - Opens menu and moves focus to first menuitem
95
- if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {
96
- event.preventDefault()
97
- setOpen(true)
98
- setShouldFocus('first')
99
-
100
- return
101
- }
102
-
103
- // On `ArrowUp`
104
- // - Opens menu and moves focus to last menuitem
105
- if (event.key === 'ArrowUp') {
106
- event.preventDefault()
107
- setOpen(true)
108
- setShouldFocus('last')
109
-
110
- return
111
- }
112
- }, [])
113
-
114
- const handleMenuClickOutside = useCallback(
115
- (event: MouseEvent) => {
116
- const target = event.target
117
-
118
- if (!(target instanceof Node)) {
119
- return
120
- }
121
-
122
- if (buttonElement && (target === buttonElement || buttonElement.contains(target))) {
123
- return
124
- }
125
-
126
- for (const el of menuElements) {
127
- if (target === el || el.contains(target)) {
128
- return
129
- }
130
- }
131
-
132
- setOpen(false)
133
- },
134
- [buttonElement, menuElements],
135
- )
136
-
137
- const handleMenuEscape = useCallback(() => {
138
- setOpen(false)
139
- if (disableRestoreFocusOnClose) return
140
- if (buttonElement) buttonElement.focus()
141
- }, [buttonElement, disableRestoreFocusOnClose])
142
-
143
- const handleBlur = useCallback(
144
- (event: FocusEvent<HTMLDivElement>) => {
145
- const target = event.relatedTarget
146
-
147
- if (!(target instanceof Node)) {
148
- return
149
- }
150
-
151
- for (const el of menuElements) {
152
- if (el === target || el.contains(target)) {
153
- return
154
- }
155
- }
156
-
157
- setOpen(false)
158
- },
159
- [menuElements],
160
- )
161
-
162
- const handleItemClick = useCallback(
163
- (e: ReactMouseEvent<HTMLButtonElement>) => {
164
- if (e.defaultPrevented) return
165
-
166
- setOpen(false)
167
- if (disableRestoreFocusOnClose) return
168
- if (buttonElement) buttonElement.focus()
169
- },
170
- [buttonElement, disableRestoreFocusOnClose],
171
- )
172
-
173
- const registerElement = useCallback((el: HTMLElement) => {
174
- setChildMenuElements((els) => els.concat([el]))
175
-
176
- return () => setChildMenuElements((els) => els.filter((_el) => _el !== el))
177
- }, [])
178
-
179
- const menuProps: Props<MenuProps, 'div'> = {
180
- 'aria-labelledby': id,
181
- 'onBlurCapture': handleBlur,
182
- 'onClickOutside': handleMenuClickOutside,
183
- 'onEscape': handleMenuEscape,
184
- 'onItemClick': handleItemClick,
185
- 'originElement': buttonElement,
186
- registerElement,
187
- shouldFocus,
188
- }
189
-
190
- const menu = menuProp && cloneElement(menuProp, menuProps)
191
-
192
- const button = useMemo(() => {
193
- if (!buttonProp) return null
194
-
195
- const buttonProps: ButtonProps<'button'> = {
196
- 'data-ui': 'MenuButton',
197
- id,
198
- 'onClick': handleButtonClick,
199
- 'onKeyDown': handleButtonKeyDown,
200
- 'onMouseDown': handleMouseDown,
201
- 'aria-haspopup': true,
202
- 'aria-expanded': open,
203
- 'ref': setButtonElement,
204
- 'selected': buttonProp.props.selected ?? open,
205
- }
206
-
207
- return cloneElement(buttonProp, buttonProps)
208
- }, [buttonProp, handleButtonClick, handleButtonKeyDown, handleMouseDown, id, open])
209
-
210
- // Forward button ref to parent
211
- useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(
212
- forwardedRef,
213
- () => buttonElement,
214
- [buttonElement],
215
- )
216
-
217
- const popoverProps: MenuButtonProps['popover'] = useMemo(
218
- () => ({
219
- overflow: 'auto',
220
- ...(popover || {}),
221
- }),
222
- [popover],
223
- )
224
-
225
- return (
226
- <Popover data-ui="MenuButton__popover" {...popoverProps} content={menu} open={open}>
227
- {button || <></>}
228
- </Popover>
229
- )
230
- }
@@ -1,19 +0,0 @@
1
- import {type Context, type MouseEvent as ReactMouseEvent} from 'react'
2
-
3
- import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'
4
-
5
- export interface MenuContextValue {
6
- version: 0.0
7
- activeElement: HTMLElement | null
8
- activeIndex: number
9
- mount: (element: HTMLElement | null, selected?: boolean) => () => void
10
- onClickOutside?: (event: MouseEvent) => void
11
- onEscape?: () => void
12
- onItemClick?: (event: ReactMouseEvent<HTMLButtonElement>) => void
13
- onItemMouseEnter?: (event: ReactMouseEvent<HTMLElement>) => void
14
- onItemMouseLeave?: (event: ReactMouseEvent<HTMLElement>) => void
15
- registerElement?: (el: HTMLElement) => () => void
16
- }
17
-
18
- export const MenuContext: Context<MenuContextValue | null> =
19
- createGlobalScopedContext<MenuContextValue | null>('@sanity/ui/v3/menu', null)
@@ -1,32 +0,0 @@
1
- import {menuDivider} from '@sanity/ui/css'
2
-
3
- import type {ComponentType, Props} from '../../types'
4
-
5
- /** @public */
6
- export const DEFAULT_MENU_DIVIDER_ELEMENT = 'hr'
7
-
8
- /** @public */
9
- // eslint-disable-next-line @typescript-eslint/no-empty-object-type
10
- export type MenuDividerOwnProps = {}
11
-
12
- /** @public */
13
- export type MenuDividerElementType = 'div' | 'hr' | 'span' | ComponentType
14
-
15
- /** @public */
16
- export type MenuDividerProps<E extends MenuDividerElementType = MenuDividerElementType> = Props<
17
- MenuDividerOwnProps,
18
- E
19
- >
20
-
21
- /** @public */
22
- export function MenuDivider<E extends MenuDividerElementType = typeof DEFAULT_MENU_DIVIDER_ELEMENT>(
23
- props: MenuDividerProps<E>,
24
- ): React.JSX.Element {
25
- const {
26
- as: Element = DEFAULT_MENU_DIVIDER_ELEMENT,
27
- className,
28
- ...rest
29
- } = props as MenuDividerProps<typeof DEFAULT_MENU_DIVIDER_ELEMENT>
30
-
31
- return <Element {...rest} className={menuDivider({className})} />
32
- }
@@ -1,236 +0,0 @@
1
- import {ChevronRightIcon} from '@sanity/icons'
2
- import type {RadiusStyleProps, ResponsiveProp} from '@sanity/ui/css'
3
- import type {ElementTone, FontTextSize, Space} from '@sanity/ui/theme'
4
- import {
5
- type ElementType,
6
- isValidElement,
7
- type KeyboardEvent,
8
- type MouseEvent,
9
- type ReactNode,
10
- useCallback,
11
- useEffect,
12
- useState,
13
- } from 'react'
14
- import {isValidElementType} from 'react-is'
15
-
16
- import {Box} from '../../primitives/box/Box'
17
- import {Flex} from '../../primitives/flex/Flex'
18
- import {Popover, type PopoverProps} from '../../primitives/popover/Popover'
19
- import {Selectable} from '../../primitives/selectable/Selectable'
20
- import {Text} from '../../primitives/text/Text'
21
- import type {ComponentType, Props} from '../../types'
22
- import {DEFAULT_MENU_ELEMENT, Menu, type MenuProps} from './Menu'
23
- import {useMenu} from './useMenu'
24
-
25
- /** @public */
26
- export const DEFAULT_MENU_GROUP_ELEMENT = 'button'
27
-
28
- /** @public */
29
- export type MenuGroupOwnProps = RadiusStyleProps & {
30
- disabled?: boolean
31
- fontSize?: ResponsiveProp<FontTextSize>
32
- gap?: ResponsiveProp<Space>
33
- icon?: ElementType | ReactNode
34
- menu?: Omit<
35
- MenuProps<typeof DEFAULT_MENU_ELEMENT>,
36
- | 'onClickOutside'
37
- | 'onEscape'
38
- | 'onItemClick'
39
- | 'onKeyDown'
40
- | 'onMouseEnter'
41
- | 'registerElement'
42
- | 'shouldFocus'
43
- | 'onBlurCapture'
44
- >
45
- padding?: ResponsiveProp<Space>
46
- popover?: Omit<PopoverProps<'div'>, 'content' | 'open'>
47
- text?: ReactNode
48
- tone?: ElementTone
49
- }
50
-
51
- /** @public */
52
- export type MenuGroupElementType = 'button' | ComponentType
53
-
54
- /** @public */
55
- export type MenuGroupProps<E extends MenuGroupElementType = MenuGroupElementType> = Props<
56
- MenuGroupOwnProps,
57
- E
58
- >
59
-
60
- /** @public */
61
- export function MenuGroup<E extends MenuGroupElementType = typeof DEFAULT_MENU_GROUP_ELEMENT>(
62
- props: MenuGroupProps<E>,
63
- ): React.JSX.Element {
64
- const {
65
- as = DEFAULT_MENU_GROUP_ELEMENT,
66
- children,
67
- fontSize = 1,
68
- gap = 3,
69
- icon: IconComponent,
70
- menu: menuProps,
71
- onClick,
72
- padding = 3,
73
- popover,
74
- radius = 2,
75
- text,
76
- tone = 'default',
77
- ...rest
78
- } = props as MenuGroupProps<typeof DEFAULT_MENU_GROUP_ELEMENT>
79
-
80
- const {
81
- activeElement,
82
- mount,
83
- onClickOutside,
84
- onEscape,
85
- onItemClick,
86
- onItemMouseEnter,
87
- registerElement,
88
- } = useMenu()
89
-
90
- const [rootElement, setRootElement] = useState<HTMLButtonElement | HTMLDivElement | null>(null)
91
- const [open, setOpen] = useState(false)
92
- const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)
93
- const active = Boolean(activeElement) && activeElement === rootElement
94
- const [withinMenu, setWithinMenu] = useState(false)
95
-
96
- const handleMouseEnter = useCallback(
97
- (event: MouseEvent<HTMLElement>) => {
98
- setWithinMenu(false)
99
- onItemMouseEnter?.(event)
100
- setOpen(true)
101
- },
102
- [onItemMouseEnter],
103
- )
104
-
105
- const handleMenuKeyDown = useCallback(
106
- (event: KeyboardEvent<HTMLDivElement>) => {
107
- if (event.key === 'ArrowLeft') {
108
- event.stopPropagation()
109
-
110
- setOpen(false)
111
-
112
- requestAnimationFrame(() => {
113
- rootElement?.focus()
114
- })
115
- }
116
- },
117
- [rootElement],
118
- )
119
-
120
- const handleClick = useCallback(
121
- (event: MouseEvent<HTMLButtonElement>) => {
122
- onClick?.(event)
123
-
124
- setShouldFocus('first')
125
- setOpen(true)
126
- },
127
- [onClick],
128
- )
129
-
130
- const handleChildItemClick = useCallback(
131
- (e: MouseEvent<HTMLButtonElement>) => {
132
- setOpen(false)
133
- onItemClick?.(e)
134
- },
135
- [onItemClick],
136
- )
137
-
138
- const handleMenuMouseEnter = useCallback(() => setWithinMenu(true), [])
139
-
140
- // Register the menu item element
141
- useEffect(() => mount(rootElement), [mount, rootElement])
142
-
143
- // Close child menu when a sibling item becomes active
144
- useEffect(() => {
145
- if (!active) setOpen(false)
146
- }, [active])
147
-
148
- // Update state when child menu is no longer open
149
- useEffect(() => {
150
- if (!open) setWithinMenu(false)
151
- }, [open])
152
-
153
- // Reset the shouldFocus state after it has been used
154
- useEffect(() => {
155
- if (!shouldFocus) return
156
- // The useMenuController effect that handles `shouldFocus` schedules a request animation frame where it's processed.
157
- // By doing the same here, we ensure that the reset is processed after the focus change.
158
- const rafId = requestAnimationFrame(() => setShouldFocus(null))
159
-
160
- return () => cancelAnimationFrame(rafId)
161
- }, [shouldFocus])
162
-
163
- const childMenu = (
164
- <Menu
165
- {...menuProps}
166
- onClickOutside={onClickOutside}
167
- onEscape={onEscape}
168
- onItemClick={handleChildItemClick}
169
- onKeyDown={handleMenuKeyDown}
170
- onMouseEnter={handleMenuMouseEnter}
171
- registerElement={registerElement}
172
- shouldFocus={shouldFocus}
173
- >
174
- {children}
175
- </Menu>
176
- )
177
-
178
- const handleKeyDown = useCallback((event: KeyboardEvent<HTMLButtonElement>) => {
179
- const target = event.currentTarget
180
-
181
- if (document.activeElement !== target) {
182
- return
183
- }
184
-
185
- if (event.key === 'ArrowRight') {
186
- setShouldFocus('first')
187
- setOpen(true)
188
- setWithinMenu(true)
189
-
190
- return
191
- }
192
- }, [])
193
-
194
- return (
195
- <Popover {...popover} content={childMenu} data-ui="MenuGroup__popover" open={open}>
196
- <Selectable
197
- // data-as={as}
198
- data-ui="MenuGroup"
199
- // forwardedAs={as}
200
- {...rest}
201
- aria-pressed={as === 'button' ? withinMenu : undefined}
202
- as={as}
203
- // data-pressed={as !== 'button' ? withinMenu : undefined}
204
- // data-selected={!withinMenu && active ? '' : undefined}
205
- onClick={handleClick}
206
- onKeyDown={handleKeyDown}
207
- onMouseEnter={handleMouseEnter}
208
- radius={radius}
209
- ref={setRootElement}
210
- selected={withinMenu}
211
- tabIndex={-1}
212
- tone={tone}
213
- type={as === 'button' ? 'button' : undefined}
214
- >
215
- <Flex gap={gap} padding={padding}>
216
- {IconComponent && (
217
- <Text size={fontSize}>
218
- {isValidElement(IconComponent) && IconComponent}
219
- {isValidElementType(IconComponent) && <IconComponent />}
220
- </Text>
221
- )}
222
-
223
- <Box flex={1}>
224
- <Text size={fontSize} textOverflow="ellipsis" weight="medium">
225
- {text}
226
- </Text>
227
- </Box>
228
-
229
- <Text size={fontSize}>
230
- <ChevronRightIcon />
231
- </Text>
232
- </Flex>
233
- </Selectable>
234
- </Popover>
235
- )
236
- }