@sanity/ui 4.0.0-static.4 → 4.0.0-static.41

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 (341) hide show
  1. package/dist/_chunks-es/{refractor.js → Refractor.js} +1 -1
  2. package/dist/_chunks-es/{refractor.js.map → Refractor.js.map} +1 -1
  3. package/dist/css/index.css +2 -1
  4. package/dist/css/index.css.map +1 -0
  5. package/dist/css/index.d.ts +51 -7
  6. package/dist/css/index.js +17979 -55
  7. package/dist/css/index.js.map +1 -1
  8. package/dist/index.d.ts +26 -38
  9. package/dist/index.js +1752 -1132
  10. package/dist/index.js.map +1 -1
  11. package/exports/css/index.css +1 -0
  12. package/package.json +39 -51
  13. package/src/core/Root.tsx +1 -1
  14. package/src/core/RootProvider.tsx +5 -5
  15. package/src/core/__workshop__/index.ts +1 -1
  16. package/src/core/components/autocomplete/{autocomplete.tsx → Autocomplete.tsx} +90 -58
  17. package/src/core/components/autocomplete/__workshop__/{custom.tsx → Custom.tsx} +14 -1
  18. package/src/core/components/autocomplete/__workshop__/{example.tsx → Example.tsx} +12 -1
  19. package/src/core/components/autocomplete/__workshop__/index.ts +6 -6
  20. package/src/core/components/autocomplete/types.ts +1 -1
  21. package/src/core/components/breadcrumbs/{breadcrumbs.tsx → Breadcrumbs.tsx} +80 -47
  22. package/src/core/components/breadcrumbs/__workshop__/index.ts +1 -1
  23. package/src/core/components/dialog/{dialog.tsx → Dialog.tsx} +20 -11
  24. package/src/core/components/dialog/{dialogCard.tsx → DialogCard.tsx} +9 -9
  25. package/src/core/components/dialog/{dialogContext.ts → DialogContext.ts} +1 -1
  26. package/src/core/components/dialog/{dialogProvider.tsx → DialogProvider.tsx} +2 -2
  27. package/src/core/components/dialog/__workshop__/{panes.tsx → Panes.tsx} +9 -21
  28. package/src/core/components/dialog/__workshop__/{position.tsx → Position.tsx} +9 -1
  29. package/src/core/components/dialog/__workshop__/{props.tsx → Props.tsx} +2 -0
  30. package/src/core/components/dialog/__workshop__/index.ts +10 -10
  31. package/src/core/components/dialog/__workshop__/styles.css.ts +18 -0
  32. package/src/core/components/dialog/useDialog.ts +3 -3
  33. package/src/core/components/hotkeys/{hotkeys.tsx → Hotkeys.tsx} +2 -2
  34. package/src/core/components/hotkeys/__workshop__/index.ts +1 -1
  35. package/src/core/components/menu/{menu.test.tsx → Menu.test.tsx} +9 -13
  36. package/src/core/components/menu/{menu.tsx → Menu.tsx} +19 -24
  37. package/src/core/components/menu/{menuButton.tsx → MenuButton.tsx} +14 -9
  38. package/src/core/components/menu/{menuContext.ts → MenuContext.ts} +3 -4
  39. package/src/core/components/menu/{menuGroup.tsx → MenuGroup.tsx} +16 -11
  40. package/src/core/components/menu/{menuItem.tsx → MenuItem.tsx} +7 -9
  41. package/src/core/components/menu/__workshop__/DataProps.tsx +27 -0
  42. package/src/core/components/menu/__workshop__/{menuButton.tsx → MenuButton.tsx} +6 -1
  43. package/src/core/components/menu/__workshop__/{tones.tsx → Tones.tsx} +7 -1
  44. package/src/core/components/menu/__workshop__/index.ts +22 -17
  45. package/src/core/components/menu/useMenu.ts +5 -5
  46. package/src/core/components/menu/useMenuController.ts +5 -5
  47. package/src/core/components/tab/{tab.tsx → Tab.tsx} +1 -1
  48. package/src/core/components/tab/{tabList.tsx → TabList.tsx} +2 -2
  49. package/src/core/components/tab/{tabPanel.tsx → TabPanel.tsx} +1 -1
  50. package/src/core/components/tab/__workshop__/index.ts +1 -1
  51. package/src/core/components/toast/{toast.test.tsx → Toast.test.tsx} +7 -7
  52. package/src/core/components/toast/{toast.tsx → Toast.tsx} +6 -6
  53. package/src/core/components/toast/{toastContext.ts → ToastContext.ts} +1 -1
  54. package/src/core/components/toast/{toastLayer.tsx → ToastLayer.tsx} +1 -1
  55. package/src/core/components/toast/{toastProvider.tsx → ToastProvider.tsx} +24 -9
  56. package/src/core/components/toast/__workshop__/{toast.tsx → Toast.tsx} +2 -0
  57. package/src/core/components/toast/__workshop__/index.ts +2 -2
  58. package/src/core/components/toast/useToast.ts +3 -3
  59. package/src/core/components/tree/{tree.tsx → Tree.tsx} +4 -4
  60. package/src/core/components/tree/{treeContext.ts → TreeContext.ts} +1 -1
  61. package/src/core/components/tree/{treeGroup.tsx → TreeGroup.tsx} +1 -1
  62. package/src/core/components/tree/{treeItem.tsx → TreeItem.tsx} +28 -25
  63. package/src/core/components/tree/__workshop__/index.ts +4 -4
  64. package/src/core/components/tree/useTree.ts +3 -3
  65. package/src/core/components/virtualList/{virtualList.tsx → VirtualList.tsx} +87 -45
  66. package/src/core/components/virtualList/__workshop__/index.ts +4 -4
  67. package/src/core/helpers/props.ts +0 -9
  68. package/src/core/hooks/useGlobalKeyDown.ts +11 -4
  69. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +1 -1
  70. package/src/core/hooks/useResponsiveProp.ts +4 -17
  71. package/src/core/index.ts +68 -66
  72. package/src/core/lib/createGlobalScopedContext.ts +5 -3
  73. package/src/core/primitives/avatar/{avatar.tsx → Avatar.tsx} +7 -6
  74. package/src/core/primitives/avatar/{avatarCounter.tsx → AvatarCounter.tsx} +2 -2
  75. package/src/core/primitives/avatar/{avatarStack.tsx → AvatarStack.tsx} +3 -3
  76. package/src/core/primitives/avatar/__workshop__/{asButton.tsx → AsButton.tsx} +8 -1
  77. package/src/core/primitives/avatar/__workshop__/PropsStory.tsx +22 -0
  78. package/src/core/primitives/avatar/__workshop__/{stack.tsx → Stack.tsx} +5 -1
  79. package/src/core/primitives/avatar/__workshop__/index.ts +9 -4
  80. package/src/core/primitives/badge/{badge.test.tsx → Badge.test.tsx} +1 -1
  81. package/src/core/primitives/badge/{badge.tsx → Badge.tsx} +2 -2
  82. package/src/core/primitives/badge/__workshop__/{props.tsx → Props.tsx} +12 -1
  83. package/src/core/primitives/badge/__workshop__/index.ts +2 -2
  84. package/src/core/primitives/box/__workshop__/{props.tsx → Props.tsx} +6 -1
  85. package/src/core/primitives/box/__workshop__/index.ts +2 -2
  86. package/src/core/primitives/button/{button.test.tsx → Button.test.tsx} +1 -1
  87. package/src/core/primitives/button/{button.tsx → Button.tsx} +12 -11
  88. package/src/core/primitives/button/__workshop__/DataProps.tsx +22 -0
  89. package/src/core/primitives/button/__workshop__/{props.tsx → Props.tsx} +22 -0
  90. package/src/core/primitives/button/__workshop__/SanityUploadButton.tsx +21 -0
  91. package/src/core/primitives/button/__workshop__/{stacked.tsx → Stacked.tsx} +16 -0
  92. package/src/core/primitives/button/__workshop__/Styled1.tsx +11 -0
  93. package/src/core/primitives/button/__workshop__/index.ts +15 -15
  94. package/src/core/primitives/button/__workshop__/styles.css.ts +30 -0
  95. package/src/core/primitives/card/{card.tsx → Card.tsx} +10 -10
  96. package/src/core/primitives/card/{cardContext.ts → CardContext.ts} +1 -1
  97. package/src/core/primitives/card/{cardProvider.tsx → CardProvider.tsx} +3 -12
  98. package/src/core/primitives/card/__workshop__/DataProps.tsx +30 -0
  99. package/src/core/primitives/card/__workshop__/{props.tsx → Props.tsx} +10 -0
  100. package/src/core/primitives/card/__workshop__/{selected.tsx → Selected.tsx} +1 -1
  101. package/src/core/primitives/card/__workshop__/{styled.tsx → Styled.tsx} +2 -5
  102. package/src/core/primitives/card/__workshop__/index.ts +10 -9
  103. package/src/core/primitives/card/useCard.ts +11 -6
  104. package/src/core/primitives/checkbox/__workshop__/index.ts +4 -4
  105. package/src/core/primitives/code/{code.tsx → Code.tsx} +26 -2
  106. package/src/core/primitives/code/__workshop__/{props.tsx → Props.tsx} +6 -1
  107. package/src/core/primitives/code/__workshop__/index.ts +2 -2
  108. package/src/core/primitives/container/{container.tsx → Container.tsx} +1 -1
  109. package/src/core/primitives/container/__workshop__/{example.tsx → Example.tsx} +6 -1
  110. package/src/core/primitives/container/__workshop__/index.ts +1 -1
  111. package/src/core/primitives/flex/{flex.tsx → Flex.tsx} +1 -1
  112. package/src/core/primitives/flex/__workshop__/{example.tsx → Example.tsx} +14 -16
  113. package/src/core/primitives/flex/__workshop__/index.ts +2 -2
  114. package/src/core/primitives/flex/__workshop__/styles.css.ts +12 -0
  115. package/src/core/primitives/grid/{grid.tsx → Grid.tsx} +1 -1
  116. package/src/core/primitives/grid/__workshop__/index.ts +1 -1
  117. package/src/core/primitives/heading/{heading.tsx → Heading.tsx} +16 -0
  118. package/src/core/primitives/heading/__workshop__/{plain.tsx → Plain.tsx} +12 -1
  119. package/src/core/primitives/heading/__workshop__/index.ts +2 -2
  120. package/src/core/primitives/inline/{inline.tsx → Inline.tsx} +2 -1
  121. package/src/core/primitives/inline/__workshop__/{plain.tsx → Plain.tsx} +5 -1
  122. package/src/core/primitives/inline/__workshop__/index.ts +1 -1
  123. package/src/core/primitives/kbd/{kbd.tsx → Kbd.tsx} +2 -2
  124. package/src/core/primitives/kbd/__workshop__/index.ts +1 -1
  125. package/src/core/primitives/label/{label.tsx → Label.tsx} +16 -0
  126. package/src/core/primitives/label/__workshop__/{plain.tsx → Plain.tsx} +15 -1
  127. package/src/core/primitives/label/__workshop__/index.ts +2 -2
  128. package/src/core/primitives/layer/{layer.test.tsx → Layer.test.tsx} +7 -7
  129. package/src/core/primitives/layer/{layer.tsx → Layer.tsx} +3 -3
  130. package/src/core/primitives/layer/{layerCard.tsx → LayerCard.tsx} +2 -2
  131. package/src/core/primitives/layer/{layerContext.ts → LayerContext.ts} +1 -1
  132. package/src/core/primitives/layer/{layerProvider.tsx → LayerProvider.tsx} +6 -6
  133. package/src/core/primitives/layer/__workshop__/index.ts +3 -3
  134. package/src/core/primitives/layer/useLayer.ts +3 -3
  135. package/src/core/primitives/popover/{popover.tsx → Popover.tsx} +170 -150
  136. package/src/core/primitives/popover/{popoverLayer.tsx → PopoverLayer.tsx} +3 -3
  137. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +13 -1
  138. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +2 -0
  139. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +8 -0
  140. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +7 -1
  141. package/src/core/primitives/popover/__workshop__/TestStory.tsx +6 -0
  142. package/src/core/primitives/popover/floating-ui/size.ts +17 -16
  143. package/src/core/primitives/radio/{radio.tsx → Radio.tsx} +2 -2
  144. package/src/core/primitives/radio/__workshop__/index.ts +2 -2
  145. package/src/core/primitives/select/{select.tsx → Select.tsx} +7 -5
  146. package/src/core/primitives/select/__workshop__/{plain.tsx → Plain.tsx} +4 -0
  147. package/src/core/primitives/select/__workshop__/index.ts +2 -2
  148. package/src/core/primitives/selectable/{selectable.tsx → Selectable.tsx} +2 -2
  149. package/src/core/primitives/selectable/__workshop__/DataProps.tsx +27 -0
  150. package/src/core/primitives/selectable/__workshop__/index.ts +14 -0
  151. package/src/core/primitives/skeleton/{codeSkeleton.tsx → CodeSkeleton.tsx} +1 -1
  152. package/src/core/primitives/skeleton/{headingSkeleton.tsx → HeadingSkeleton.tsx} +1 -1
  153. package/src/core/primitives/skeleton/{labelSkeleton.tsx → LabelSkeleton.tsx} +1 -1
  154. package/src/core/primitives/skeleton/{skeleton.tsx → Skeleton.tsx} +2 -2
  155. package/src/core/primitives/skeleton/{textSkeleton.tsx → TextSkeleton.tsx} +1 -1
  156. package/src/core/primitives/skeleton/__workshop__/{delay.tsx → Delay.tsx} +9 -1
  157. package/src/core/primitives/skeleton/__workshop__/{skeleton.tsx → Skeleton.tsx} +9 -1
  158. package/src/core/primitives/skeleton/__workshop__/index.ts +2 -2
  159. package/src/core/primitives/spinner/{spinner.tsx → Spinner.tsx} +2 -2
  160. package/src/core/primitives/spinner/__workshop__/Props.tsx +6 -1
  161. package/src/core/primitives/stack/{stack.tsx → Stack.tsx} +1 -1
  162. package/src/core/primitives/stack/__workshop__/{plain.tsx → Plain.tsx} +4 -1
  163. package/src/core/primitives/stack/__workshop__/index.ts +1 -1
  164. package/src/core/primitives/switch/{switch.tsx → Switch.tsx} +2 -10
  165. package/src/core/primitives/switch/__workshop__/index.ts +2 -2
  166. package/src/core/primitives/text/{text.tsx → Text.tsx} +14 -0
  167. package/src/core/primitives/text/__workshop__/{colored.tsx → Colored.tsx} +10 -8
  168. package/src/core/primitives/text/__workshop__/{example.tsx → Example.tsx} +15 -1
  169. package/src/core/primitives/text/__workshop__/index.ts +3 -3
  170. package/src/core/primitives/textArea/{textArea.tsx → TextArea.tsx} +7 -1
  171. package/src/core/primitives/textArea/__workshop__/{plain.tsx → Plain.tsx} +8 -0
  172. package/src/core/primitives/textArea/__workshop__/index.ts +1 -1
  173. package/src/core/primitives/textInput/{textInput.tsx → TextInput.tsx} +93 -72
  174. package/src/core/primitives/textInput/__workshop__/{plain.tsx → Plain.tsx} +34 -4
  175. package/src/core/primitives/textInput/__workshop__/{typed.tsx → Typed.tsx} +7 -1
  176. package/src/core/primitives/textInput/__workshop__/index.ts +7 -7
  177. package/src/core/primitives/tooltip/{tooltip.test.tsx → Tooltip.test.tsx} +4 -4
  178. package/src/core/primitives/tooltip/{tooltip.tsx → Tooltip.tsx} +102 -63
  179. package/src/core/primitives/tooltip/{tooltipLayer.tsx → TooltipLayer.tsx} +2 -2
  180. package/src/core/primitives/tooltip/__workshop__/{customPortal.tsx → CustomPortal.tsx} +2 -0
  181. package/src/core/primitives/tooltip/__workshop__/{overflowingBoundary.tsx → OverflowingBoundary.tsx} +2 -0
  182. package/src/core/primitives/tooltip/__workshop__/{props.tsx → Props.tsx} +12 -0
  183. package/src/core/primitives/tooltip/__workshop__/{resizableBoundary.tsx → ResizableBoundary.tsx} +5 -0
  184. package/src/core/primitives/tooltip/__workshop__/index.ts +4 -4
  185. package/src/core/primitives/tooltip/tooltipDelayGroup/{tooltipDelayGroupContext.tsx → TooltipDelayGroupContext.tsx} +1 -1
  186. package/src/core/primitives/tooltip/tooltipDelayGroup/{tooltipDelayGroupProvider.tsx → TooltipDelayGroupProvider.tsx} +2 -4
  187. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +3 -3
  188. package/src/core/types.ts +6 -5
  189. package/src/core/utils/{errorBoundary.tsx → ErrorBoundary.tsx} +1 -1
  190. package/src/core/utils/boundaryElement/{boundaryElementContext.ts → BoundaryElementContext.ts} +2 -5
  191. package/src/core/utils/boundaryElement/BoundaryElementProvider.tsx +16 -0
  192. package/src/core/utils/boundaryElement/__workshop__/index.ts +1 -1
  193. package/src/core/utils/boundaryElement/types.ts +1 -4
  194. package/src/core/utils/boundaryElement/useBoundaryElement.ts +7 -19
  195. package/src/core/utils/elementQuery/__workshop__/CustomMedia.tsx +19 -0
  196. package/src/core/utils/elementQuery/__workshop__/index.ts +1 -1
  197. package/src/core/utils/elementQuery/__workshop__/styles.css.ts +31 -0
  198. package/src/core/utils/portal/{portal.test.tsx → Portal.test.tsx} +7 -7
  199. package/src/core/utils/portal/{portal.tsx → Portal.tsx} +7 -4
  200. package/src/core/utils/portal/{portalContext.ts → PortalContext.ts} +1 -1
  201. package/src/core/utils/portal/PortalProvider.tsx +38 -0
  202. package/src/core/utils/portal/__workshop__/index.ts +1 -1
  203. package/src/core/utils/portal/usePortal.ts +12 -5
  204. package/src/css/_responsiveStyle.css.ts +2 -2
  205. package/src/css/primitives/_input/_input.css.ts +13 -12
  206. package/src/css/primitives/_input/input.ts +2 -0
  207. package/src/css/primitives/_input/types.ts +2 -1
  208. package/src/css/primitives/avatar/avatar.css.ts +17 -5
  209. package/src/css/primitives/box/box.css.ts +19 -1
  210. package/src/css/primitives/button/button.css.ts +252 -183
  211. package/src/css/primitives/card/__workshop__/{color.tsx → Color.tsx} +9 -1
  212. package/src/css/primitives/card/__workshop__/index.ts +1 -1
  213. package/src/css/primitives/card/card.css.ts +133 -130
  214. package/src/css/primitives/checkbox/checkbox.css.ts +1 -0
  215. package/src/css/primitives/code/code.ts +4 -0
  216. package/src/css/primitives/code/types.ts +7 -1
  217. package/src/css/primitives/heading/heading.ts +4 -0
  218. package/src/css/primitives/heading/types.ts +7 -1
  219. package/src/css/primitives/label/label.ts +4 -0
  220. package/src/css/primitives/label/types.ts +7 -1
  221. package/src/css/primitives/radio/radio.css.ts +1 -1
  222. package/src/css/primitives/root/root.css.ts +1 -1
  223. package/src/css/primitives/select/select.css.ts +7 -1
  224. package/src/css/primitives/selectable/selectable.css.ts +79 -70
  225. package/src/css/primitives/switch/switch.css.ts +10 -1
  226. package/src/css/primitives/text/text.ts +2 -0
  227. package/src/css/primitives/text/types.ts +6 -1
  228. package/src/css/primitives/textInput/textInput.css.ts +15 -3
  229. package/src/css/props/width/types.ts +1 -1
  230. package/src/css/props/width/width.css.ts +5 -2
  231. package/src/css/theme/buildCSSTheme.ts +4 -0
  232. package/src/css/types.ts +4 -0
  233. package/src/css/vars.css.ts +4 -0
  234. package/dist/_chunks-cjs/refractor.cjs +0 -22
  235. package/dist/_chunks-cjs/refractor.cjs.map +0 -1
  236. package/dist/css/index.cjs +0 -966
  237. package/dist/css/index.cjs.map +0 -1
  238. package/dist/css/index.d.cts +0 -1370
  239. package/dist/index.cjs +0 -4515
  240. package/dist/index.cjs.map +0 -1
  241. package/dist/index.d.cts +0 -2521
  242. package/dist/theme.cjs +0 -870
  243. package/dist/theme.cjs.map +0 -1
  244. package/dist/theme.d.cts +0 -499
  245. package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +0 -36
  246. package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
  247. package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
  248. package/src/core/primitives/popover/helpers.ts +0 -32
  249. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  250. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -102
  251. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -18
  252. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -41
  253. package/src/core/utils/portal/portalProvider.tsx +0 -70
  254. /package/src/core/__workshop__/{boundary.tsx → Boundary.tsx} +0 -0
  255. /package/src/core/components/autocomplete/{autocompleteOption.tsx → AutocompleteOption.tsx} +0 -0
  256. /package/src/core/components/autocomplete/__workshop__/{async.tsx → Async.tsx} +0 -0
  257. /package/src/core/components/autocomplete/__workshop__/{constrainedHeight.tsx → ConstrainedHeight.tsx} +0 -0
  258. /package/src/core/components/autocomplete/__workshop__/{focusAndBlur.tsx → FocusAndBlur.tsx} +0 -0
  259. /package/src/core/components/autocomplete/__workshop__/{fullscreen.tsx → Fullscreen.tsx} +0 -0
  260. /package/src/core/components/breadcrumbs/__workshop__/{example.tsx → Example.tsx} +0 -0
  261. /package/src/core/components/dialog/__workshop__/{activate.tsx → Activate.tsx} +0 -0
  262. /package/src/core/components/dialog/__workshop__/{autoFocus.tsx → AutoFocus.tsx} +0 -0
  263. /package/src/core/components/dialog/__workshop__/{layering.tsx → Layering.tsx} +0 -0
  264. /package/src/core/components/dialog/__workshop__/{nested.tsx → Nested.tsx} +0 -0
  265. /package/src/core/components/dialog/__workshop__/{onScroll.tsx → OnScroll.tsx} +0 -0
  266. /package/src/core/components/dialog/__workshop__/{provider.tsx → Provider.tsx} +0 -0
  267. /package/src/core/components/dialog/__workshop__/{wrapped.tsx → Wrapped.tsx} +0 -0
  268. /package/src/core/components/hotkeys/__workshop__/{plain.tsx → Plain.tsx} +0 -0
  269. /package/src/core/components/menu/{menuDivider.tsx → MenuDivider.tsx} +0 -0
  270. /package/src/core/components/menu/__workshop__/{asComponent.tsx → AsComponent.tsx} +0 -0
  271. /package/src/core/components/menu/__workshop__/{avatarMenu.tsx → AvatarMenu.tsx} +0 -0
  272. /package/src/core/components/menu/__workshop__/{closableMenuButton.tsx → ClosableMenuButton.tsx} +0 -0
  273. /package/src/core/components/menu/__workshop__/{constrainedInBoundary.tsx → ConstrainedInBoundary.tsx} +0 -0
  274. /package/src/core/components/menu/__workshop__/{customMenuItem.tsx → CustomMenuItem.tsx} +0 -0
  275. /package/src/core/components/menu/__workshop__/{customSelectedState.tsx → CustomSelectedState.tsx} +0 -0
  276. /package/src/core/components/menu/__workshop__/{disableFocusOnClose.tsx → DisableFocusOnClose.tsx} +0 -0
  277. /package/src/core/components/menu/__workshop__/{groups.tsx → Groups.tsx} +0 -0
  278. /package/src/core/components/menu/__workshop__/{menuGroupRight.tsx → MenuGroupRight.tsx} +0 -0
  279. /package/src/core/components/menu/__workshop__/{nestedMenu.tsx → NestedMenu.tsx} +0 -0
  280. /package/src/core/components/menu/__workshop__/{onCloseMenuButton.tsx → OnCloseMenuButton.tsx} +0 -0
  281. /package/src/core/components/menu/__workshop__/{selectedItem.tsx → SelectedItem.tsx} +0 -0
  282. /package/src/core/components/menu/__workshop__/{shouldFocus.tsx → ShouldFocus.tsx} +0 -0
  283. /package/src/core/components/menu/__workshop__/{withoutArrow.tsx → WithoutArrow.tsx} +0 -0
  284. /package/src/core/components/tab/__workshop__/{example.tsx → Example.tsx} +0 -0
  285. /package/src/core/components/toast/__workshop__/{hook.tsx → Hook.tsx} +0 -0
  286. /package/src/core/components/tree/__workshop__/{basic.tsx → Basic.tsx} +0 -0
  287. /package/src/core/components/tree/__workshop__/{tabFromElement.tsx → TabFromElement.tsx} +0 -0
  288. /package/src/core/components/virtualList/__workshop__/{changingProps.tsx → ChangingProps.tsx} +0 -0
  289. /package/src/core/components/virtualList/__workshop__/{elementScroll.tsx → ElementScroll.tsx} +0 -0
  290. /package/src/core/components/virtualList/__workshop__/{infiniteList.tsx → InfiniteList.tsx} +0 -0
  291. /package/src/core/components/virtualList/__workshop__/{windowScrolll.tsx → WindowScrolll.tsx} +0 -0
  292. /package/src/core/hooks/useMediaIndex/__workshop__/{test.tsx → Test.tsx} +0 -0
  293. /package/src/core/primitives/arrow/{arrow.tsx → Arrow.tsx} +0 -0
  294. /package/src/core/primitives/avatar/__workshop__/{withinButton.tsx → WithinButton.tsx} +0 -0
  295. /package/src/core/primitives/avatar/__workshop__/{withinMenuItem.tsx → WithinMenuItem.tsx} +0 -0
  296. /package/src/core/primitives/badge/__workshop__/{tones.tsx → Tones.tsx} +0 -0
  297. /package/src/core/primitives/box/{box.tsx → Box.tsx} +0 -0
  298. /package/src/core/primitives/box/__workshop__/{responsive.tsx → Responsive.tsx} +0 -0
  299. /package/src/core/primitives/button/__workshop__/{custom.tsx → Custom.tsx} +0 -0
  300. /package/src/core/primitives/button/__workshop__/{customIcons.tsx → CustomIcons.tsx} +0 -0
  301. /package/src/core/primitives/button/__workshop__/{disabled.tsx → Disabled.tsx} +0 -0
  302. /package/src/core/primitives/button/__workshop__/{mixedChildren.tsx → MixedChildren.tsx} +0 -0
  303. /package/src/core/primitives/button/__workshop__/{textOverflow.tsx → TextOverflow.tsx} +0 -0
  304. /package/src/core/primitives/button/__workshop__/{uploadButton.tsx → UploadButton.tsx} +0 -0
  305. /package/src/core/primitives/card/__workshop__/{asButton.tsx → AsButton.tsx} +0 -0
  306. /package/src/core/primitives/card/__workshop__/{asComponent.tsx → AsComponent.tsx} +0 -0
  307. /package/src/core/primitives/card/__workshop__/{checkered.tsx → Checkered.tsx} +0 -0
  308. /package/src/core/primitives/card/__workshop__/{interactive.tsx → Interactive.tsx} +0 -0
  309. /package/src/core/primitives/card/__workshop__/{listNavigation.tsx → ListNavigation.tsx} +0 -0
  310. /package/src/core/primitives/card/__workshop__/{tones.tsx → Tones.tsx} +0 -0
  311. /package/src/core/primitives/checkbox/{checkbox.tsx → Checkbox.tsx} +0 -0
  312. /package/src/core/primitives/checkbox/__workshop__/{example.tsx → Example.tsx} +0 -0
  313. /package/src/core/primitives/checkbox/__workshop__/{props.tsx → Props.tsx} +0 -0
  314. /package/src/core/primitives/checkbox/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
  315. /package/src/core/primitives/checkbox/__workshop__/{tones.tsx → Tones.tsx} +0 -0
  316. /package/src/core/primitives/code/{refractor.tsx → Refractor.tsx} +0 -0
  317. /package/src/core/primitives/code/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
  318. /package/src/core/primitives/flex/__workshop__/{gap.tsx → Gap.tsx} +0 -0
  319. /package/src/core/primitives/grid/__workshop__/{responsive.tsx → Responsive.tsx} +0 -0
  320. /package/src/core/primitives/heading/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
  321. /package/src/core/primitives/kbd/__workshop__/{plain.tsx → Plain.tsx} +0 -0
  322. /package/src/core/primitives/label/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
  323. /package/src/core/primitives/layer/__workshop__/{multipleRoots.tsx → MultipleRoots.tsx} +0 -0
  324. /package/src/core/primitives/layer/__workshop__/{nested.tsx → Nested.tsx} +0 -0
  325. /package/src/core/primitives/layer/__workshop__/{responsiveZOffset.tsx → ResponsiveZOffset.tsx} +0 -0
  326. /package/src/core/primitives/radio/__workshop__/{example.tsx → Example.tsx} +0 -0
  327. /package/src/core/primitives/radio/__workshop__/{plain.tsx → Plain.tsx} +0 -0
  328. /package/src/core/primitives/select/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
  329. /package/src/core/primitives/spinner/{animatedSpinnerIcon.tsx → AnimatedSpinnerIcon.tsx} +0 -0
  330. /package/src/core/primitives/srOnly/{srOnly.tsx → SrOnly.tsx} +0 -0
  331. /package/src/core/primitives/switch/__workshop__/{example.tsx → Example.tsx} +0 -0
  332. /package/src/core/primitives/switch/__workshop__/{props.tsx → Props.tsx} +0 -0
  333. /package/src/core/primitives/text/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
  334. /package/src/core/primitives/textInput/__workshop__/{clearButton.tsx → ClearButton.tsx} +0 -0
  335. /package/src/core/primitives/textInput/__workshop__/{customValidity.tsx → CustomValidity.tsx} +0 -0
  336. /package/src/core/primitives/textInput/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
  337. /package/src/core/primitives/textInput/__workshop__/{states.tsx → States.tsx} +0 -0
  338. /package/src/core/primitives/textInput/__workshop__/{tones.tsx → Tones.tsx} +0 -0
  339. /package/src/core/utils/boundaryElement/__workshop__/{plain.tsx → Plain.tsx} +0 -0
  340. /package/src/core/utils/elementQuery/{elementQuery.tsx → ElementQuery.tsx} +0 -0
  341. /package/src/core/utils/portal/__workshop__/{named.tsx → Named.tsx} +0 -0
package/src/core/index.ts CHANGED
@@ -1,30 +1,30 @@
1
1
  // components
2
- export * from './components/autocomplete/autocomplete'
2
+ export * from './components/autocomplete/Autocomplete'
3
3
  export * from './components/autocomplete/types'
4
- export * from './components/breadcrumbs/breadcrumbs'
5
- export * from './components/dialog/dialog'
6
- export * from './components/dialog/dialogContext'
7
- export * from './components/dialog/dialogProvider'
4
+ export * from './components/breadcrumbs/Breadcrumbs'
5
+ export * from './components/dialog/Dialog'
6
+ export * from './components/dialog/DialogContext'
7
+ export * from './components/dialog/DialogProvider'
8
8
  export * from './components/dialog/types'
9
9
  export * from './components/dialog/useDialog'
10
- export * from './components/hotkeys/hotkeys'
11
- export * from './components/menu/menu'
12
- export * from './components/menu/menuButton'
13
- export * from './components/menu/menuDivider'
14
- export * from './components/menu/menuGroup'
15
- export * from './components/menu/menuItem'
16
- export * from './components/tab/tab'
17
- export * from './components/tab/tabList'
18
- export * from './components/tab/tabPanel'
19
- export * from './components/toast/toast'
20
- export * from './components/toast/toastProvider'
10
+ export * from './components/hotkeys/Hotkeys'
11
+ export * from './components/menu/Menu'
12
+ export * from './components/menu/MenuButton'
13
+ export * from './components/menu/MenuDivider'
14
+ export * from './components/menu/MenuGroup'
15
+ export * from './components/menu/MenuItem'
16
+ export * from './components/tab/Tab'
17
+ export * from './components/tab/TabList'
18
+ export * from './components/tab/TabPanel'
19
+ export * from './components/toast/Toast'
20
+ export * from './components/toast/ToastProvider'
21
21
  export * from './components/toast/types'
22
22
  export * from './components/toast/useToast'
23
- export * from './components/tree/tree'
24
- export * from './components/tree/treeItem'
23
+ export * from './components/tree/Tree'
24
+ export * from './components/tree/TreeItem'
25
25
  export * from './components/tree/types'
26
26
  export * from './components/tree/useTree'
27
- export * from './components/virtualList/virtualList'
27
+ export * from './components/virtualList/VirtualList'
28
28
 
29
29
  // helpers
30
30
  export * from './helpers/animation'
@@ -42,70 +42,72 @@ export * from './hooks/useMatchMedia'
42
42
  export * from './hooks/useMediaIndex/useMediaIndex'
43
43
  export * from './hooks/usePrefersDark'
44
44
  export * from './hooks/usePrefersReducedMotion'
45
- export * from './hooks/useResponsiveProp'
46
45
 
47
46
  // observers
48
47
  export * from './observers/elementSize'
49
48
  export * from './observers/resize'
50
49
 
51
50
  // primitives
52
- export * from './primitives/arrow/arrow'
53
- export * from './primitives/avatar/avatar'
54
- export * from './primitives/avatar/avatarCounter'
55
- export * from './primitives/avatar/avatarStack'
51
+ export * from './primitives/arrow/Arrow'
52
+ export * from './primitives/avatar/Avatar'
53
+ export * from './primitives/avatar/AvatarCounter'
54
+ export * from './primitives/avatar/AvatarStack'
56
55
  export * from './primitives/avatar/types'
57
- export * from './primitives/badge/badge'
58
- export * from './primitives/box/box'
59
- export * from './primitives/button/button'
56
+ export * from './primitives/badge/Badge'
57
+ export * from './primitives/box/Box'
58
+ export * from './primitives/button/Button'
60
59
  export * from './primitives/button/types'
61
- export * from './primitives/card/card'
62
- export * from './primitives/card/cardProvider'
60
+ export * from './primitives/card/Card'
61
+ export * from './primitives/card/CardProvider'
63
62
  export * from './primitives/card/types'
64
- export * from './primitives/card/useCard'
65
- export * from './primitives/checkbox/checkbox'
66
- export * from './primitives/code/code'
67
- export * from './primitives/container/container'
63
+ export {useCard} from './primitives/card/useCard'
64
+ export * from './primitives/checkbox/Checkbox'
65
+ export * from './primitives/code/Code'
66
+ export * from './primitives/container/Container'
68
67
  export * from './primitives/container/types'
69
- export * from './primitives/flex/flex'
70
- export * from './primitives/grid/grid'
71
- export * from './primitives/heading/heading'
72
- export * from './primitives/inline/inline'
73
- export * from './primitives/kbd/kbd'
74
- export * from './primitives/label/label'
75
- export * from './primitives/layer/layer'
76
- export * from './primitives/layer/layerProvider'
68
+ export * from './primitives/flex/Flex'
69
+ export * from './primitives/grid/Grid'
70
+ export * from './primitives/heading/Heading'
71
+ export * from './primitives/inline/Inline'
72
+ export * from './primitives/kbd/Kbd'
73
+ export * from './primitives/label/Label'
74
+ export * from './primitives/layer/Layer'
75
+ export * from './primitives/layer/LayerProvider'
77
76
  export * from './primitives/layer/types'
78
77
  export * from './primitives/layer/useLayer'
79
- export * from './primitives/popover/popover'
78
+ export * from './primitives/popover/Popover'
80
79
  export * from './primitives/popover/types'
81
- export * from './primitives/radio/radio'
82
- export * from './primitives/select/select'
83
- export * from './primitives/selectable/selectable'
84
- export * from './primitives/skeleton/codeSkeleton'
85
- export * from './primitives/skeleton/headingSkeleton'
86
- export * from './primitives/skeleton/labelSkeleton'
87
- export * from './primitives/skeleton/skeleton'
88
- export * from './primitives/skeleton/textSkeleton'
89
- export * from './primitives/spinner/spinner'
90
- export * from './primitives/srOnly/srOnly'
91
- export * from './primitives/stack/stack'
92
- export * from './primitives/switch/switch'
93
- export * from './primitives/text/text'
94
- export * from './primitives/textArea/textArea'
95
- export * from './primitives/textInput/textInput'
96
- export * from './primitives/tooltip/tooltip'
97
- export * from './primitives/tooltip/tooltipDelayGroup'
80
+ export * from './primitives/radio/Radio'
81
+ export * from './primitives/select/Select'
82
+ export * from './primitives/selectable/Selectable'
83
+ export * from './primitives/skeleton/CodeSkeleton'
84
+ export * from './primitives/skeleton/HeadingSkeleton'
85
+ export * from './primitives/skeleton/LabelSkeleton'
86
+ export * from './primitives/skeleton/Skeleton'
87
+ export * from './primitives/skeleton/TextSkeleton'
88
+ export * from './primitives/spinner/Spinner'
89
+ export * from './primitives/srOnly/SrOnly'
90
+ export * from './primitives/stack/Stack'
91
+ export * from './primitives/switch/Switch'
92
+ export * from './primitives/text/Text'
93
+ export * from './primitives/textArea/TextArea'
94
+ export * from './primitives/textInput/TextInput'
95
+ export * from './primitives/tooltip/Tooltip'
96
+ export * from './primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupContext'
97
+ export * from './primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupProvider'
98
+ export * from './primitives/tooltip/tooltipDelayGroup/types'
99
+ export {useTooltipDelayGroup} from './primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup'
98
100
 
99
101
  // utils
100
- export * from './utils/boundaryElement/boundaryElementProvider'
102
+ export * from './utils/boundaryElement/BoundaryElementProvider'
101
103
  export * from './utils/boundaryElement/types'
102
- export * from './utils/boundaryElement/useBoundaryElement'
103
- export * from './utils/elementQuery/elementQuery'
104
- export * from './utils/errorBoundary'
105
- export * from './utils/portal/portal'
106
- export * from './utils/portal/portalProvider'
104
+ export {useBoundaryElement} from './utils/boundaryElement/useBoundaryElement'
105
+ export * from './utils/elementQuery/ElementQuery'
106
+ export * from './utils/ErrorBoundary'
107
+ export * from './utils/portal/Portal'
108
+ export * from './utils/portal/PortalProvider'
107
109
  export * from './utils/portal/types'
108
- export * from './utils/portal/usePortal'
110
+ export {usePortal} from './utils/portal/usePortal'
109
111
 
110
112
  // root
111
113
  export * from './Root'
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * As `@sanity/ui` is declared as a dependency, and may be duplicated, sometimes across major versions
3
3
  * it's critical that vital react contexts are shared even when there is a duplicate.
4
- * If we used a model similar to `sanity` itself, or `styled-components`, this would be unnecessary as
4
+ * If we used a model similar to `sanity` itself this would be unnecessary as
5
5
  * those libraries enforce single instances.
6
6
  * Since we don't enforce it we have to support a sanity plugin being able to call hooks like `useToast`, and then
7
7
  * read the context setup by `sanity`, which calls `ToastProvider`, even if the provider and hook are different instances in memory.
@@ -16,7 +16,7 @@ export function createGlobalScopedContext<ContextType, const T extends ContextTy
16
16
  /**
17
17
  * Enforce that all Symbol.for keys used for globally scoped contexts have a predictable prefix
18
18
  */
19
- key: `@sanity/ui/v3/${string}`,
19
+ key: `@sanity/ui/v4/${string}`,
20
20
  defaultValue: T,
21
21
  ): Context<ContextType> {
22
22
  const symbol = Symbol.for(key)
@@ -25,7 +25,9 @@ export function createGlobalScopedContext<ContextType, const T extends ContextTy
25
25
  * Prevent errors about re-renders on React SSR on Next.js App Router
26
26
  */
27
27
  if (typeof document === 'undefined') {
28
- return createContext<ContextType>(defaultValue)
28
+ const context = createContext<ContextType>(defaultValue)
29
+ context.displayName = key
30
+ return context
29
31
  }
30
32
 
31
33
  // Use the global scope as a map of symbols to contexts
@@ -9,10 +9,10 @@ import {
9
9
  import type {AvatarColor, AvatarSize, FontLabelSize} from '@sanity/ui/theme'
10
10
  import {useCallback, useEffect, useMemo, useState} from 'react'
11
11
 
12
- import {useResponsiveProp} from '../../hooks/useResponsiveProp'
12
+ import {_getResponsiveProp} from '../../helpers/props'
13
13
  import type {ComponentType, Props} from '../../types'
14
- import {Box} from '../box/box'
15
- import {Label} from '../label/label'
14
+ import {Box} from '../box/Box'
15
+ import {Label} from '../label/Label'
16
16
  import type {AvatarPosition} from './types'
17
17
 
18
18
  /** @public */
@@ -47,7 +47,7 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
47
47
  props: AvatarProps<E>,
48
48
  ): React.JSX.Element {
49
49
  const {
50
- __unstable_hideInnerStroke,
50
+ __unstable_hideInnerStroke: hideInnerStroke,
51
51
  as: Element = DEFAULT_AVATAR_ELEMENT,
52
52
  className,
53
53
  color = 'magenta',
@@ -61,7 +61,7 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
61
61
  ...rest
62
62
  } = props as AvatarProps<typeof DEFAULT_AVATAR_ELEMENT>
63
63
 
64
- const size = useResponsiveProp(sizeProp)
64
+ const size = useMemo(() => _getResponsiveProp(sizeProp), [sizeProp])
65
65
 
66
66
  const [arrowPosition, setArrowPosition] = useState<AvatarPosition | undefined>(
67
67
  animateArrowFrom || arrowPositionProp || 'inside',
@@ -79,6 +79,7 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
79
79
  }, [arrowPosition, arrowPositionProp])
80
80
 
81
81
  useEffect(() => {
82
+ // eslint-disable-next-line react-hooks/set-state-in-effect
82
83
  if (src) setImageError(false)
83
84
  }, [src])
84
85
 
@@ -104,7 +105,7 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
104
105
 
105
106
  return (
106
107
  <Element
107
- data-hide-inner-stroke={__unstable_hideInnerStroke ? '' : undefined}
108
+ data-hide-inner-stroke={hideInnerStroke ? '' : undefined}
108
109
  data-ui="Avatar"
109
110
  {...rest}
110
111
  aria-label={title}
@@ -4,8 +4,8 @@ import {useMemo} from 'react'
4
4
 
5
5
  import {useResponsiveProp} from '../../hooks/useResponsiveProp'
6
6
  import type {ComponentType, Props} from '../../types'
7
- import {Box} from '../box/box'
8
- import {Label} from '../label/label'
7
+ import {Box} from '../box/Box'
8
+ import {Label} from '../label/Label'
9
9
 
10
10
  /** @public */
11
11
  export const DEFAULT_AVATAR_COUNTER_ELEMENT = 'span'
@@ -4,9 +4,9 @@ import {Children, cloneElement, Fragment, isValidElement, type ReactElement} fro
4
4
 
5
5
  import {useResponsiveProp} from '../../hooks/useResponsiveProp'
6
6
  import type {ComponentType, Props} from '../../types'
7
- import {Box, type BoxOwnProps} from '../box/box'
8
- import type {AvatarProps} from './avatar'
9
- import {AvatarCounter} from './avatarCounter'
7
+ import {Box, type BoxOwnProps} from '../box/Box'
8
+ import type {AvatarProps} from './Avatar'
9
+ import {AvatarCounter} from './AvatarCounter'
10
10
 
11
11
  /** @public */
12
12
  export const DEFAULT_AVATAR_STACK_ELEMENT = 'span'
@@ -4,11 +4,18 @@ import {useSelect} from '@sanity/ui-workshop'
4
4
  import {WORKSHOP_AVATAR_SIZE_OPTIONS} from '$workshop'
5
5
 
6
6
  export default function AsButtonStory(): React.JSX.Element {
7
+ // @ts-expect-error - TODO: fix this
7
8
  const size = useSelect('Size', WORKSHOP_AVATAR_SIZE_OPTIONS, 1)
8
9
 
9
10
  return (
10
11
  <Flex align="center" height="fill" justify="center">
11
- <Avatar as="button" color="purple" initials="uq" size={size} />
12
+ <Avatar
13
+ as="button"
14
+ color="purple"
15
+ initials="uq"
16
+ // @ts-expect-error - TODO: fix this
17
+ size={size}
18
+ />
12
19
  </Flex>
13
20
  )
14
21
  }
@@ -0,0 +1,22 @@
1
+ import {Avatar, Box} from '@sanity/ui'
2
+ import type {AvatarSize} from '@sanity/ui/theme'
3
+ import {useBoolean, useSelect} from '@sanity/ui-workshop'
4
+
5
+ import {WORKSHOP_AVATAR_SIZE_OPTIONS, WORKSHOP_AVATAR_SRC} from '$workshop'
6
+
7
+ export default function PropsStory() {
8
+ const hideInnerStroke = useBoolean('Hide inner stroke', false)
9
+ const src = useBoolean('With image source (src)', false)
10
+ // @ts-expect-error - TODO: fix this
11
+ const size = useSelect<AvatarSize>('Size', WORKSHOP_AVATAR_SIZE_OPTIONS, 1)
12
+
13
+ return (
14
+ <Box alignItems="center" display="flex" height="fill" justifyContent="center">
15
+ <Avatar
16
+ __unstable_hideInnerStroke={hideInnerStroke}
17
+ size={size}
18
+ src={src ? WORKSHOP_AVATAR_SRC : undefined}
19
+ />
20
+ </Box>
21
+ )
22
+ }
@@ -4,11 +4,15 @@ import {useSelect} from '@sanity/ui-workshop'
4
4
  import {WORKSHOP_AVATAR_SIZE_OPTIONS} from '$workshop'
5
5
 
6
6
  export default function StackStory(): React.JSX.Element {
7
+ // @ts-expect-error - TODO: fix this
7
8
  const size = useSelect('Size', WORKSHOP_AVATAR_SIZE_OPTIONS, 1)
8
9
 
9
10
  return (
10
11
  <Flex align="center" height="fill" justify="center">
11
- <AvatarStack size={size}>
12
+ <AvatarStack
13
+ // @ts-expect-error - TODO: fix this
14
+ size={size}
15
+ >
12
16
  <AvatarCounter count={2} />
13
17
  <Avatar color="magenta" initials="uq" />
14
18
  <Avatar
@@ -5,25 +5,30 @@ const scope: WorkshopScope = {
5
5
  name: 'primitives/avatar',
6
6
  title: 'Avatar',
7
7
  stories: [
8
+ {
9
+ name: 'props',
10
+ title: 'Props',
11
+ component: lazy(() => import('./PropsStory')),
12
+ },
8
13
  {
9
14
  name: 'as-button',
10
15
  title: 'As button',
11
- component: lazy(() => import('./asButton')),
16
+ component: lazy(() => import('./AsButton')),
12
17
  },
13
18
  {
14
19
  name: 'avatar-stack',
15
20
  title: 'Avatar stack',
16
- component: lazy(() => import('./stack')),
21
+ component: lazy(() => import('./Stack')),
17
22
  },
18
23
  {
19
24
  name: 'within-button',
20
25
  title: 'Within button',
21
- component: lazy(() => import('./withinButton')),
26
+ component: lazy(() => import('./WithinButton')),
22
27
  },
23
28
  {
24
29
  name: 'within-menu-item',
25
30
  title: 'Within menu item',
26
- component: lazy(() => import('./withinMenuItem')),
31
+ component: lazy(() => import('./WithinMenuItem')),
27
32
  },
28
33
  ],
29
34
  }
@@ -3,7 +3,7 @@ import {axe} from 'vitest-axe'
3
3
 
4
4
  import {render} from '$test/utils'
5
5
 
6
- import {Badge} from './badge'
6
+ import {Badge} from './Badge'
7
7
 
8
8
  describe('atoms/badge', () => {
9
9
  it('should have no violations (axe)', async () => {
@@ -7,8 +7,8 @@ import {
7
7
  } from '@sanity/ui/css'
8
8
 
9
9
  import type {ComponentType, Props} from '../../types'
10
- import {Box} from '../box/box'
11
- import {Text} from '../text/text'
10
+ import {Box} from '../box/Box'
11
+ import {Text} from '../text/Text'
12
12
 
13
13
  /** @public */
14
14
  export const DEFAULT_BADGE_ELEMENT = 'span'
@@ -4,14 +4,25 @@ import {useAction, useSelect, useText} from '@sanity/ui-workshop'
4
4
  import {WORKSHOP_BADGE_TONE_OPTIONS, WORKSHOP_SPACE_OPTIONS} from '$workshop'
5
5
 
6
6
  export default function PropsStory(): React.JSX.Element {
7
+ // @ts-expect-error - TODO: fix this
7
8
  const paddingX = useSelect('Padding X', WORKSHOP_SPACE_OPTIONS, 1)
9
+ // @ts-expect-error - TODO: fix this
8
10
  const paddingY = useSelect('Padding Y', WORKSHOP_SPACE_OPTIONS, 1)
11
+ // @ts-expect-error - TODO: fix this
9
12
  const tone = useSelect('Tone', WORKSHOP_BADGE_TONE_OPTIONS, 'default')
10
13
  const textProp = useText('Text', 'Label')
11
14
 
12
15
  return (
13
16
  <Flex align="center" height="fill" justify="center">
14
- <Badge onClick={useAction('onClick')} paddingX={paddingX} paddingY={paddingY} tone={tone}>
17
+ <Badge
18
+ onClick={useAction('onClick')}
19
+ // @ts-expect-error - TODO: fix this
20
+ paddingX={paddingX}
21
+ // @ts-expect-error - TODO: fix this
22
+ paddingY={paddingY}
23
+ // @ts-expect-error - TODO: fix this
24
+ tone={tone}
25
+ >
15
26
  {textProp}
16
27
  </Badge>
17
28
  </Flex>
@@ -8,12 +8,12 @@ const scope: WorkshopScope = {
8
8
  {
9
9
  name: 'props',
10
10
  title: 'Props',
11
- component: lazy(() => import('./props')),
11
+ component: lazy(() => import('./Props')),
12
12
  },
13
13
  {
14
14
  name: 'tones',
15
15
  title: 'Tones',
16
- component: lazy(() => import('./tones')),
16
+ component: lazy(() => import('./Tones')),
17
17
  },
18
18
  ],
19
19
  }
@@ -4,12 +4,17 @@ import {useAction, useSelect} from '@sanity/ui-workshop'
4
4
  import {WORKSHOP_SPACE_OPTIONS} from '$workshop'
5
5
 
6
6
  export default function PropsStory(): React.JSX.Element {
7
+ // @ts-expect-error - TODO: fix this
7
8
  const padding = useSelect('Padding', WORKSHOP_SPACE_OPTIONS, 0)
8
9
 
9
10
  return (
10
11
  <Box padding={[4, 5, 6]}>
11
12
  <Card border tone="inherit">
12
- <Box onClick={useAction('onClick')} padding={padding}>
13
+ <Box
14
+ onClick={useAction('onClick')}
15
+ // @ts-expect-error - TODO: fix this
16
+ padding={padding}
17
+ >
13
18
  <Text>
14
19
  Box with <code>padding={padding}</code>
15
20
  </Text>
@@ -8,12 +8,12 @@ const scope: WorkshopScope = {
8
8
  {
9
9
  name: 'props',
10
10
  title: 'Props',
11
- component: lazy(() => import('./props')),
11
+ component: lazy(() => import('./Props')),
12
12
  },
13
13
  {
14
14
  name: 'responsive',
15
15
  title: 'Responsive',
16
- component: lazy(() => import('./responsive')),
16
+ component: lazy(() => import('./Responsive')),
17
17
  },
18
18
  ],
19
19
  }
@@ -5,7 +5,7 @@ import {axe} from 'vitest-axe'
5
5
 
6
6
  import {render} from '$test/utils'
7
7
 
8
- import {Button} from './button'
8
+ import {Button} from './Button'
9
9
 
10
10
  describe('atoms/button', () => {
11
11
  it('Axe: should have no violations', async () => {
@@ -9,13 +9,13 @@ import type {
9
9
  } from '@sanity/ui/css'
10
10
  import {button, buttonLoadingBox} from '@sanity/ui/css'
11
11
  import type {FontTextSize} from '@sanity/ui/theme'
12
- import {type ElementType as ReactElementType, isValidElement, type ReactNode} from 'react'
12
+ import {isValidElement} from 'react'
13
13
  import {isValidElementType} from 'react-is'
14
14
 
15
15
  import type {ComponentType, Props} from '../../types'
16
- import {Box} from '../box/box'
17
- import {Spinner} from '../spinner/spinner'
18
- import {Text, type TextOwnProps} from '../text/text'
16
+ import {Box} from '../box/Box'
17
+ import {Spinner} from '../spinner/Spinner'
18
+ import {Text, type TextOwnProps} from '../text/Text'
19
19
  import type {ButtonTextAlign} from './types'
20
20
 
21
21
  /** @public */
@@ -30,8 +30,8 @@ export type ButtonOwnProps = ButtonStyleProps &
30
30
  'data-ui'?: string
31
31
  'disabled'?: boolean
32
32
  'fontSize'?: ResponsiveProp<FontTextSize>
33
- 'icon'?: ReactElementType | ReactNode
34
- 'iconRight'?: ReactElementType | ReactNode
33
+ 'icon'?: React.ElementType | React.ReactNode
34
+ 'iconRight'?: React.ElementType | React.ReactNode
35
35
  'justify'?: BoxStyleProps['justifyContent']
36
36
  /** @beta Do not use in production, as this might change.*/
37
37
  'loading'?: boolean
@@ -39,7 +39,7 @@ export type ButtonOwnProps = ButtonStyleProps &
39
39
  'textAlign'?: ButtonTextAlign
40
40
  'muted'?: boolean
41
41
  'target'?: string
42
- 'text'?: ReactNode
42
+ 'text'?: React.ReactNode
43
43
  'textOverflow'?: TextOwnProps['textOverflow']
44
44
  'textWeight'?: TextOwnProps['weight']
45
45
  'width'?: ResponsiveProp<Width>
@@ -63,7 +63,7 @@ export function Button<E extends ButtonElementType = typeof DEFAULT_BUTTON_ELEME
63
63
  disabled,
64
64
  flex,
65
65
  fontSize = 1,
66
- gap = props.padding ?? 3,
66
+ gap: _gap,
67
67
  gapX,
68
68
  gapY,
69
69
  icon: IconComponent,
@@ -71,6 +71,7 @@ export function Button<E extends ButtonElementType = typeof DEFAULT_BUTTON_ELEME
71
71
  justify = 'center',
72
72
  loading,
73
73
  mode = 'default',
74
+ muted = false,
74
75
  padding = 3,
75
76
  paddingX,
76
77
  paddingY,
@@ -86,10 +87,10 @@ export function Button<E extends ButtonElementType = typeof DEFAULT_BUTTON_ELEME
86
87
  textWeight = 'medium',
87
88
  tone = 'default',
88
89
  type = 'button',
89
- muted = false,
90
90
  width,
91
91
  ...rest
92
92
  } = props as ButtonProps<typeof DEFAULT_BUTTON_ELEMENT>
93
+ const gap = _gap ?? props.padding ?? 3
93
94
 
94
95
  let href: string | undefined = undefined
95
96
 
@@ -103,8 +104,8 @@ export function Button<E extends ButtonElementType = typeof DEFAULT_BUTTON_ELEME
103
104
  data-ui="Button"
104
105
  {...rest}
105
106
  className={button({className, flex, mode, radius, tone, width})}
106
- data-disabled={loading || disabled ? '' : undefined}
107
- data-selected={selected ? '' : undefined}
107
+ data-disabled={loading || disabled ? '' : props['data-disabled']}
108
+ data-selected={selected ? '' : props['data-selected']}
108
109
  disabled={Boolean(loading || disabled)}
109
110
  // @ts-expect-error - TODO: fix this
110
111
  href={disabled ? undefined : href}
@@ -0,0 +1,22 @@
1
+ import {Button, Stack} from '@sanity/ui'
2
+ import type {ButtonMode, ElementTone} from '@sanity/ui/theme'
3
+ import {useSelect} from '@sanity/ui-workshop'
4
+
5
+ import {WORKSHOP_BUTTON_MODE_OPTIONS, WORKSHOP_BUTTON_TONE_OPTIONS} from '$workshop'
6
+
7
+ export default function DataPropsStory(): React.JSX.Element {
8
+ // @ts-expect-error - TODO: fix this
9
+ const mode = useSelect('Mode', WORKSHOP_BUTTON_MODE_OPTIONS, 'default') as ButtonMode | undefined
10
+
11
+ // @ts-expect-error - TODO: fix this
12
+ const tone = useSelect('Tone', WORKSHOP_BUTTON_TONE_OPTIONS, 'default') as ElementTone | undefined
13
+
14
+ return (
15
+ <Stack gap={4} padding={4}>
16
+ <Button data-enabled="" mode={mode} text="Button" tone={tone} />
17
+ <Button data-hovered="" mode={mode} text="Button" tone={tone} />
18
+ <Button data-pressed="" mode={mode} text="Button" tone={tone} />
19
+ <Button data-selected="" mode={mode} text="Button" tone={tone} />
20
+ </Stack>
21
+ )
22
+ }
@@ -15,39 +15,61 @@ import {
15
15
 
16
16
  export default function ButtonStory(): React.JSX.Element {
17
17
  const disabled = useBoolean('Disabled')
18
+ // @ts-expect-error - TODO: fix this
18
19
  const fontSize = useSelect('Font size', WORKSHOP_TEXT_FONT_SIZE_OPTIONS)
20
+ // @ts-expect-error - TODO: fix this
19
21
  const gap = useSelect('Gap', WORKSHOP_SPACE_OPTIONS)
22
+ // @ts-expect-error - TODO: fix this
20
23
  const icon = useSelect('Icon', WORKSHOP_ICON_SYMBOL_OPTIONS)
24
+ // @ts-expect-error - TODO: fix this
21
25
  const iconRight = useSelect('Icon (right)', WORKSHOP_ICON_SYMBOL_OPTIONS)
26
+ // @ts-expect-error - TODO: fix this
22
27
  const justify = useSelect('Justify', WORKSHOP_FLEX_JUSTIFY_OPTIONS)
23
28
  const loading = useBoolean('Loading')
29
+ // @ts-expect-error - TODO: fix this
24
30
  const mode = useSelect('Mode', WORKSHOP_BUTTON_MODE_OPTIONS)
31
+ // @ts-expect-error - TODO: fix this
25
32
  const paddingX = useSelect('Padding X', WORKSHOP_SPACE_OPTIONS)
33
+ // @ts-expect-error - TODO: fix this
26
34
  const paddingY = useSelect('Padding Y', WORKSHOP_SPACE_OPTIONS)
27
35
  const selected = useBoolean('Selected')
36
+ // @ts-expect-error - TODO: fix this
28
37
  const tone = useSelect('Tone', WORKSHOP_BUTTON_TONE_OPTIONS)
38
+ // @ts-expect-error - TODO: fix this
29
39
  const textAlign = useSelect('Text align', WORKSHOP_BUTTON_TEXT_ALIGN_OPTIONS)
30
40
  const textProp = useText('Text', 'Label')
41
+ // @ts-expect-error - TODO: fix this
31
42
  const textWeight = useSelect('Text weight', WORKSHOP_TEXT_WEIGHT_OPTIONS)
32
43
 
33
44
  return (
34
45
  <Flex align="center" height="fill" justify="center">
35
46
  <Button
36
47
  disabled={disabled}
48
+ // @ts-expect-error - TODO: fix this
37
49
  fontSize={fontSize}
50
+ // @ts-expect-error - TODO: fix this
38
51
  gap={gap}
52
+ // @ts-expect-error - TODO: fix this
39
53
  icon={icon && icons[icon]}
54
+ // @ts-expect-error - TODO: fix this
40
55
  iconRight={iconRight && icons[iconRight]}
56
+ // @ts-expect-error - TODO: fix this
41
57
  justify={justify}
42
58
  loading={loading}
59
+ // @ts-expect-error - TODO: fix this
43
60
  mode={mode}
44
61
  onClick={useAction('onClick')}
62
+ // @ts-expect-error - TODO: fix this
45
63
  paddingX={paddingX}
64
+ // @ts-expect-error - TODO: fix this
46
65
  paddingY={paddingY}
47
66
  selected={selected}
67
+ // @ts-expect-error - TODO: fix this
48
68
  textAlign={textAlign}
49
69
  text={textProp}
70
+ // @ts-expect-error - TODO: fix this
50
71
  textWeight={textWeight}
72
+ // @ts-expect-error - TODO: fix this
51
73
  tone={tone}
52
74
  />
53
75
  </Flex>