@sanity/ui 4.0.0-beta.8 → 4.0.0-next.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 (381) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +21 -7
  3. package/dist/_chunks/getScopedTheme.cjs +4043 -0
  4. package/dist/_chunks/getScopedTheme.cjs.map +1 -0
  5. package/dist/_chunks/getScopedTheme.js +3803 -0
  6. package/dist/_chunks/getScopedTheme.js.map +1 -0
  7. package/dist/_chunks/refractor.cjs +18 -0
  8. package/dist/_chunks/refractor.cjs.map +1 -0
  9. package/dist/_chunks/refractor.js +20 -0
  10. package/dist/_chunks/refractor.js.map +1 -0
  11. package/dist/_chunks/rgba.d.cts +929 -0
  12. package/dist/_chunks/rgba.d.cts.map +1 -0
  13. package/dist/_chunks/rgba.d.ts +929 -0
  14. package/dist/_chunks/rgba.d.ts.map +1 -0
  15. package/dist/index.cjs +6243 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.cts +2332 -0
  18. package/dist/index.d.cts.map +1 -0
  19. package/dist/index.d.ts +1767 -1190
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +6134 -4725
  22. package/dist/index.js.map +1 -1
  23. package/dist/theme.cjs +54 -0
  24. package/dist/theme.cjs.map +1 -0
  25. package/dist/theme.d.cts +278 -0
  26. package/dist/theme.d.cts.map +1 -0
  27. package/dist/theme.d.ts +278 -0
  28. package/dist/theme.d.ts.map +1 -0
  29. package/dist/theme.js +53 -0
  30. package/dist/theme.js.map +1 -0
  31. package/package.json +55 -86
  32. package/dist/_chunks-es/Syntax.js +0 -23
  33. package/dist/_chunks-es/Syntax.js.map +0 -1
  34. package/dist/index.css +0 -1
  35. package/exports/index.css +0 -1
  36. package/exports/index.ts +0 -125
  37. package/src/components/autocomplete/Autocomplete.tsx +0 -665
  38. package/src/components/autocomplete/AutocompleteOption.tsx +0 -42
  39. package/src/components/autocomplete/__workshop__/Async.tsx +0 -162
  40. package/src/components/autocomplete/__workshop__/ConstrainedHeight.tsx +0 -121
  41. package/src/components/autocomplete/__workshop__/Custom.tsx +0 -91
  42. package/src/components/autocomplete/__workshop__/Example.tsx +0 -70
  43. package/src/components/autocomplete/__workshop__/FocusAndBlur.tsx +0 -39
  44. package/src/components/autocomplete/__workshop__/Fullscreen.tsx +0 -307
  45. package/src/components/autocomplete/__workshop__/index.ts +0 -41
  46. package/src/components/autocomplete/__workshop__/mock/apiStore.ts +0 -49
  47. package/src/components/autocomplete/__workshop__/mock/countries.ts +0 -245
  48. package/src/components/autocomplete/__workshop__/types.ts +0 -4
  49. package/src/components/autocomplete/autocompleteReducer.ts +0 -47
  50. package/src/components/autocomplete/constants.ts +0 -28
  51. package/src/components/autocomplete/types.ts +0 -103
  52. package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -163
  53. package/src/components/breadcrumbs/__workshop__/Example.tsx +0 -48
  54. package/src/components/breadcrumbs/__workshop__/index.ts +0 -16
  55. package/src/components/dialog/Dialog.tsx +0 -230
  56. package/src/components/dialog/DialogCard.tsx +0 -233
  57. package/src/components/dialog/DialogContext.ts +0 -21
  58. package/src/components/dialog/DialogProvider.tsx +0 -34
  59. package/src/components/dialog/__workshop__/Activate.tsx +0 -141
  60. package/src/components/dialog/__workshop__/AutoFocus.tsx +0 -29
  61. package/src/components/dialog/__workshop__/Layering.tsx +0 -41
  62. package/src/components/dialog/__workshop__/Nested.tsx +0 -71
  63. package/src/components/dialog/__workshop__/OnScroll.tsx +0 -51
  64. package/src/components/dialog/__workshop__/Panes.tsx +0 -75
  65. package/src/components/dialog/__workshop__/Position.tsx +0 -30
  66. package/src/components/dialog/__workshop__/Props.tsx +0 -93
  67. package/src/components/dialog/__workshop__/Provider.tsx +0 -11
  68. package/src/components/dialog/__workshop__/Wrapped.tsx +0 -76
  69. package/src/components/dialog/__workshop__/index.ts +0 -21
  70. package/src/components/dialog/isTargetWithinScope.ts +0 -14
  71. package/src/components/dialog/types.ts +0 -2
  72. package/src/components/dialog/useDialog.ts +0 -11
  73. package/src/components/hotkeys/Hotkeys.tsx +0 -70
  74. package/src/components/hotkeys/__workshop__/Plain.tsx +0 -9
  75. package/src/components/hotkeys/__workshop__/index.ts +0 -16
  76. package/src/components/menu/Menu.test.tsx +0 -125
  77. package/src/components/menu/Menu.tsx +0 -174
  78. package/src/components/menu/MenuButton.tsx +0 -231
  79. package/src/components/menu/MenuContext.ts +0 -19
  80. package/src/components/menu/MenuDivider.tsx +0 -32
  81. package/src/components/menu/MenuGroup.tsx +0 -240
  82. package/src/components/menu/MenuItem.tsx +0 -153
  83. package/src/components/menu/__workshop__/AsComponent.tsx +0 -45
  84. package/src/components/menu/__workshop__/AvatarMenu.tsx +0 -36
  85. package/src/components/menu/__workshop__/ClosableMenuButton.tsx +0 -47
  86. package/src/components/menu/__workshop__/ConstrainedInBoundary.tsx +0 -133
  87. package/src/components/menu/__workshop__/CustomMenuItem.tsx +0 -47
  88. package/src/components/menu/__workshop__/CustomSelectedState.tsx +0 -35
  89. package/src/components/menu/__workshop__/DataProps.tsx +0 -27
  90. package/src/components/menu/__workshop__/DisableFocusOnClose.tsx +0 -40
  91. package/src/components/menu/__workshop__/Groups.tsx +0 -164
  92. package/src/components/menu/__workshop__/MenuButton.tsx +0 -79
  93. package/src/components/menu/__workshop__/MenuGroupRight.tsx +0 -73
  94. package/src/components/menu/__workshop__/NestedMenu.tsx +0 -22
  95. package/src/components/menu/__workshop__/OnCloseMenuButton.tsx +0 -50
  96. package/src/components/menu/__workshop__/SelectedItem.tsx +0 -69
  97. package/src/components/menu/__workshop__/ShouldFocus.tsx +0 -42
  98. package/src/components/menu/__workshop__/Tones.tsx +0 -19
  99. package/src/components/menu/__workshop__/index.ts +0 -91
  100. package/src/components/menu/helpers.ts +0 -82
  101. package/src/components/menu/useMenu.ts +0 -21
  102. package/src/components/menu/useMenuController.ts +0 -245
  103. package/src/components/tab/Tab.tsx +0 -135
  104. package/src/components/tab/TabList.tsx +0 -157
  105. package/src/components/tab/TabListContext.ts +0 -10
  106. package/src/components/tab/TabPanel.tsx +0 -94
  107. package/src/components/tab/__workshop__/Example.tsx +0 -135
  108. package/src/components/tab/__workshop__/index.ts +0 -16
  109. package/src/components/tab/types.ts +0 -11
  110. package/src/components/toast/Toast.test.tsx +0 -103
  111. package/src/components/toast/Toast.tsx +0 -191
  112. package/src/components/toast/ToastContext.ts +0 -7
  113. package/src/components/toast/ToastLayer.tsx +0 -54
  114. package/src/components/toast/ToastProvider.tsx +0 -127
  115. package/src/components/toast/__workshop__/Hook.tsx +0 -71
  116. package/src/components/toast/__workshop__/Toast.tsx +0 -26
  117. package/src/components/toast/__workshop__/index.ts +0 -21
  118. package/src/components/toast/toastState.ts +0 -6
  119. package/src/components/toast/types.ts +0 -24
  120. package/src/components/toast/useToast.ts +0 -23
  121. package/src/components/tree/Tree.tsx +0 -248
  122. package/src/components/tree/TreeContext.ts +0 -10
  123. package/src/components/tree/TreeGroup.tsx +0 -46
  124. package/src/components/tree/TreeItem.tsx +0 -236
  125. package/src/components/tree/__workshop__/Basic.tsx +0 -108
  126. package/src/components/tree/__workshop__/TabFromElement.tsx +0 -84
  127. package/src/components/tree/__workshop__/basic.perf.ts +0 -19
  128. package/src/components/tree/__workshop__/index.ts +0 -23
  129. package/src/components/tree/helpers.ts +0 -105
  130. package/src/components/tree/types.ts +0 -24
  131. package/src/components/tree/useTree.ts +0 -17
  132. package/src/components/virtualList/VirtualList.tsx +0 -254
  133. package/src/components/virtualList/__workshop__/ChangingProps.tsx +0 -41
  134. package/src/components/virtualList/__workshop__/ElementScroll.tsx +0 -43
  135. package/src/components/virtualList/__workshop__/InfiniteList.tsx +0 -40
  136. package/src/components/virtualList/__workshop__/WindowScrolll.tsx +0 -23
  137. package/src/components/virtualList/__workshop__/index.ts +0 -31
  138. package/src/core/_keys.ts +0 -26
  139. package/src/core/constants.ts +0 -67
  140. package/src/core/getElementRef.ts +0 -29
  141. package/src/core/helpers/animation.ts +0 -26
  142. package/src/core/helpers/element.ts +0 -55
  143. package/src/core/helpers/focus.ts +0 -92
  144. package/src/core/helpers/props.ts +0 -51
  145. package/src/core/helpers/scroll.ts +0 -15
  146. package/src/core/lib/createGlobalScopedContext.ts +0 -39
  147. package/src/core/lib/globalScope.ts +0 -19
  148. package/src/core/lib/isArray.ts +0 -3
  149. package/src/core/lib/isRecord.ts +0 -3
  150. package/src/core/types.ts +0 -57
  151. package/src/hooks/useClickOutsideEvent.test.tsx +0 -114
  152. package/src/hooks/useClickOutsideEvent.ts +0 -66
  153. package/src/hooks/useCustomValidity.ts +0 -13
  154. package/src/hooks/useElementSize.ts +0 -19
  155. package/src/hooks/useGlobalKeyDown.ts +0 -23
  156. package/src/hooks/useMatchMedia.ts +0 -28
  157. package/src/hooks/useMediaIndex/__workshop__/Test.tsx +0 -14
  158. package/src/hooks/useMediaIndex/__workshop__/index.ts +0 -16
  159. package/src/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -21
  160. package/src/hooks/useMediaIndex/useMediaIndex.ts +0 -111
  161. package/src/hooks/useMounted.ts +0 -15
  162. package/src/hooks/usePrefersDark.hydration.test.tsx +0 -56
  163. package/src/hooks/usePrefersDark.test.tsx +0 -20
  164. package/src/hooks/usePrefersDark.ts +0 -16
  165. package/src/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  166. package/src/hooks/usePrefersReducedMotion.test.tsx +0 -20
  167. package/src/hooks/usePrefersReducedMotion.ts +0 -16
  168. package/src/hooks/useResponsiveProp.ts +0 -14
  169. package/src/hooks/useUnique.ts +0 -54
  170. package/src/middleware/origin.ts +0 -47
  171. package/src/observers/elementSize.ts +0 -114
  172. package/src/primitives/_syntax/LazySyntax.tsx +0 -4
  173. package/src/primitives/_syntax/Syntax.tsx +0 -26
  174. package/src/primitives/avatar/Avatar.tsx +0 -145
  175. package/src/primitives/avatar/AvatarCounter.tsx +0 -69
  176. package/src/primitives/avatar/AvatarStack.tsx +0 -77
  177. package/src/primitives/avatar/__workshop__/AsButton.tsx +0 -12
  178. package/src/primitives/avatar/__workshop__/PropsStory.tsx +0 -24
  179. package/src/primitives/avatar/__workshop__/Stack.tsx +0 -27
  180. package/src/primitives/avatar/__workshop__/WithinButton.tsx +0 -51
  181. package/src/primitives/avatar/__workshop__/WithinMenuItem.tsx +0 -52
  182. package/src/primitives/avatar/__workshop__/index.ts +0 -36
  183. package/src/primitives/avatar/types.ts +0 -2
  184. package/src/primitives/badge/Badge.test.tsx +0 -16
  185. package/src/primitives/badge/Badge.tsx +0 -53
  186. package/src/primitives/badge/__workshop__/Props.tsx +0 -27
  187. package/src/primitives/badge/__workshop__/Tones.tsx +0 -15
  188. package/src/primitives/badge/__workshop__/index.ts +0 -26
  189. package/src/primitives/badge/__workshop__/within-button.tsx +0 -36
  190. package/src/primitives/box/Box.tsx +0 -73
  191. package/src/primitives/box/__workshop__/Props.tsx +0 -26
  192. package/src/primitives/box/__workshop__/Responsive.tsx +0 -19
  193. package/src/primitives/box/__workshop__/index.ts +0 -21
  194. package/src/primitives/button/Button.test.tsx +0 -30
  195. package/src/primitives/button/Button.tsx +0 -148
  196. package/src/primitives/button/__workshop__/Custom.tsx +0 -39
  197. package/src/primitives/button/__workshop__/CustomIcons.tsx +0 -37
  198. package/src/primitives/button/__workshop__/DataProps.tsx +0 -18
  199. package/src/primitives/button/__workshop__/Disabled.tsx +0 -43
  200. package/src/primitives/button/__workshop__/MixedChildren.tsx +0 -12
  201. package/src/primitives/button/__workshop__/Props.tsx +0 -60
  202. package/src/primitives/button/__workshop__/Stacked.tsx +0 -60
  203. package/src/primitives/button/__workshop__/Styled1.css.ts +0 -7
  204. package/src/primitives/button/__workshop__/Styled1.tsx +0 -11
  205. package/src/primitives/button/__workshop__/TextOverflow.tsx +0 -17
  206. package/src/primitives/button/__workshop__/UploadButton.tsx +0 -28
  207. package/src/primitives/button/__workshop__/index.ts +0 -61
  208. package/src/primitives/button/types.ts +0 -2
  209. package/src/primitives/card/Card.tsx +0 -124
  210. package/src/primitives/card/CardContext.ts +0 -10
  211. package/src/primitives/card/CardInternalContext.ts +0 -10
  212. package/src/primitives/card/CardInternalProvider.tsx +0 -15
  213. package/src/primitives/card/CardProvider.tsx +0 -16
  214. package/src/primitives/card/__workshop__/AsButton.tsx +0 -103
  215. package/src/primitives/card/__workshop__/AsComponent.tsx +0 -25
  216. package/src/primitives/card/__workshop__/Checkered.tsx +0 -25
  217. package/src/primitives/card/__workshop__/DataProps.tsx +0 -25
  218. package/src/primitives/card/__workshop__/Interactive.tsx +0 -29
  219. package/src/primitives/card/__workshop__/ListNavigation.tsx +0 -78
  220. package/src/primitives/card/__workshop__/Props.tsx +0 -59
  221. package/src/primitives/card/__workshop__/Selected.tsx +0 -62
  222. package/src/primitives/card/__workshop__/Styled.tsx +0 -11
  223. package/src/primitives/card/__workshop__/Tones.tsx +0 -26
  224. package/src/primitives/card/__workshop__/index.ts +0 -21
  225. package/src/primitives/card/types.ts +0 -21
  226. package/src/primitives/card/useCard.ts +0 -20
  227. package/src/primitives/checkbox/Checkbox.tsx +0 -80
  228. package/src/primitives/checkbox/__workshop__/Example.tsx +0 -25
  229. package/src/primitives/checkbox/__workshop__/Props.tsx +0 -35
  230. package/src/primitives/checkbox/__workshop__/ReadOnly.tsx +0 -16
  231. package/src/primitives/checkbox/__workshop__/Tones.tsx +0 -26
  232. package/src/primitives/checkbox/__workshop__/index.ts +0 -15
  233. package/src/primitives/code/Code.tsx +0 -47
  234. package/src/primitives/code/__workshop__/OpticalAlignment.tsx +0 -25
  235. package/src/primitives/code/__workshop__/Props.tsx +0 -20
  236. package/src/primitives/code/__workshop__/index.ts +0 -21
  237. package/src/primitives/container/Container.tsx +0 -43
  238. package/src/primitives/container/__workshop__/Example.tsx +0 -16
  239. package/src/primitives/container/__workshop__/index.ts +0 -16
  240. package/src/primitives/container/types.ts +0 -6
  241. package/src/primitives/flex/Flex.tsx +0 -38
  242. package/src/primitives/flex/__workshop__/Example.tsx +0 -26
  243. package/src/primitives/flex/__workshop__/Gap.tsx +0 -25
  244. package/src/primitives/flex/__workshop__/index.ts +0 -13
  245. package/src/primitives/flex/__workshop__/styles.css.ts +0 -12
  246. package/src/primitives/grid/Grid.tsx +0 -38
  247. package/src/primitives/grid/__workshop__/Responsive.tsx +0 -54
  248. package/src/primitives/grid/__workshop__/index.ts +0 -12
  249. package/src/primitives/heading/Heading.tsx +0 -68
  250. package/src/primitives/heading/__workshop__/OpticalAlignment.tsx +0 -27
  251. package/src/primitives/heading/__workshop__/Plain.tsx +0 -25
  252. package/src/primitives/heading/__workshop__/index.ts +0 -21
  253. package/src/primitives/inline/Inline.tsx +0 -37
  254. package/src/primitives/inline/__workshop__/Plain.tsx +0 -22
  255. package/src/primitives/inline/__workshop__/index.ts +0 -10
  256. package/src/primitives/kbd/Kbd.tsx +0 -36
  257. package/src/primitives/kbd/__workshop__/Plain.tsx +0 -9
  258. package/src/primitives/kbd/__workshop__/index.ts +0 -10
  259. package/src/primitives/label/Label.tsx +0 -67
  260. package/src/primitives/label/__workshop__/OpticalAlignment.tsx +0 -27
  261. package/src/primitives/label/__workshop__/Plain.tsx +0 -27
  262. package/src/primitives/label/__workshop__/index.ts +0 -21
  263. package/src/primitives/layer/Layer.test.tsx +0 -110
  264. package/src/primitives/layer/Layer.tsx +0 -35
  265. package/src/primitives/layer/LayerCard.tsx +0 -90
  266. package/src/primitives/layer/LayerContext.ts +0 -7
  267. package/src/primitives/layer/LayerProvider.tsx +0 -106
  268. package/src/primitives/layer/__workshop__/MultipleRoots.tsx +0 -49
  269. package/src/primitives/layer/__workshop__/Nested.tsx +0 -107
  270. package/src/primitives/layer/__workshop__/ResponsiveZOffset.tsx +0 -17
  271. package/src/primitives/layer/__workshop__/_debug.tsx +0 -17
  272. package/src/primitives/layer/__workshop__/index.ts +0 -26
  273. package/src/primitives/layer/getLayerContext.test.ts +0 -32
  274. package/src/primitives/layer/getLayerContext.ts +0 -21
  275. package/src/primitives/layer/types.ts +0 -9
  276. package/src/primitives/layer/useLayer.ts +0 -24
  277. package/src/primitives/popover/Popover.tsx +0 -291
  278. package/src/primitives/popover/PopoverLayer.tsx +0 -101
  279. package/src/primitives/popover/__workshop__/AlignedStory.tsx +0 -75
  280. package/src/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  281. package/src/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
  282. package/src/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  283. package/src/primitives/popover/__workshop__/PlainStory.tsx +0 -67
  284. package/src/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
  285. package/src/primitives/popover/__workshop__/SidePanelStory.tsx +0 -95
  286. package/src/primitives/popover/__workshop__/TestStory.tsx +0 -97
  287. package/src/primitives/popover/__workshop__/index.ts +0 -56
  288. package/src/primitives/popover/__workshop__/portal-inheritance.tsx +0 -15
  289. package/src/primitives/popover/constants.ts +0 -20
  290. package/src/primitives/popover/floating-ui/size.ts +0 -75
  291. package/src/primitives/popover/types.ts +0 -12
  292. package/src/primitives/popover/useMiddleware.ts +0 -126
  293. package/src/primitives/radio/Radio.tsx +0 -64
  294. package/src/primitives/radio/__workshop__/Example.tsx +0 -63
  295. package/src/primitives/radio/__workshop__/Plain.tsx +0 -28
  296. package/src/primitives/radio/__workshop__/index.ts +0 -13
  297. package/src/primitives/select/Select.tsx +0 -76
  298. package/src/primitives/select/__workshop__/Plain.tsx +0 -37
  299. package/src/primitives/select/__workshop__/ReadOnly.tsx +0 -23
  300. package/src/primitives/select/__workshop__/index.ts +0 -13
  301. package/src/primitives/selectable/Selectable.tsx +0 -48
  302. package/src/primitives/selectable/__workshop__/DataProps.tsx +0 -24
  303. package/src/primitives/selectable/__workshop__/as-link.tsx +0 -13
  304. package/src/primitives/selectable/__workshop__/index.ts +0 -19
  305. package/src/primitives/skeleton/CodeSkeleton.tsx +0 -49
  306. package/src/primitives/skeleton/HeadingSkeleton.tsx +0 -48
  307. package/src/primitives/skeleton/LabelSkeleton.tsx +0 -47
  308. package/src/primitives/skeleton/Skeleton.tsx +0 -70
  309. package/src/primitives/skeleton/TextSkeleton.tsx +0 -49
  310. package/src/primitives/skeleton/__workshop__/Delay.tsx +0 -69
  311. package/src/primitives/skeleton/__workshop__/Skeleton.tsx +0 -63
  312. package/src/primitives/skeleton/__workshop__/index.ts +0 -13
  313. package/src/primitives/spinner/Spinner.tsx +0 -45
  314. package/src/primitives/spinner/SpinnerAnimatedIcon.tsx +0 -14
  315. package/src/primitives/spinner/__workshop__/Props.tsx +0 -13
  316. package/src/primitives/spinner/__workshop__/index.ts +0 -16
  317. package/src/primitives/srOnly/SrOnly.tsx +0 -33
  318. package/src/primitives/stack/Stack.tsx +0 -38
  319. package/src/primitives/stack/__workshop__/Plain.tsx +0 -30
  320. package/src/primitives/stack/__workshop__/index.ts +0 -16
  321. package/src/primitives/switch/Switch.tsx +0 -76
  322. package/src/primitives/switch/__workshop__/Example.tsx +0 -25
  323. package/src/primitives/switch/__workshop__/Props.tsx +0 -23
  324. package/src/primitives/switch/__workshop__/index.ts +0 -13
  325. package/src/primitives/text/InlineCode.tsx +0 -25
  326. package/src/primitives/text/Text.tsx +0 -68
  327. package/src/primitives/text/__workshop__/Example.tsx +0 -26
  328. package/src/primitives/text/__workshop__/OpticalAlignment.tsx +0 -27
  329. package/src/primitives/text/__workshop__/index.ts +0 -26
  330. package/src/primitives/text/__workshop__/inline-code.tsx +0 -13
  331. package/src/primitives/textArea/TextArea.tsx +0 -97
  332. package/src/primitives/textArea/__workshop__/Plain.tsx +0 -46
  333. package/src/primitives/textArea/__workshop__/index.ts +0 -16
  334. package/src/primitives/textInput/TextInput.tsx +0 -279
  335. package/src/primitives/textInput/__workshop__/ClearButton.tsx +0 -32
  336. package/src/primitives/textInput/__workshop__/CustomValidity.tsx +0 -17
  337. package/src/primitives/textInput/__workshop__/Plain.tsx +0 -102
  338. package/src/primitives/textInput/__workshop__/ReadOnly.tsx +0 -14
  339. package/src/primitives/textInput/__workshop__/States.tsx +0 -53
  340. package/src/primitives/textInput/__workshop__/Tones.tsx +0 -40
  341. package/src/primitives/textInput/__workshop__/Typed.tsx +0 -23
  342. package/src/primitives/textInput/__workshop__/index.ts +0 -46
  343. package/src/primitives/tooltip/Tooltip.test.tsx +0 -496
  344. package/src/primitives/tooltip/Tooltip.tsx +0 -546
  345. package/src/primitives/tooltip/TooltipLayer.tsx +0 -72
  346. package/src/primitives/tooltip/__workshop__/CustomPortal.tsx +0 -102
  347. package/src/primitives/tooltip/__workshop__/OverflowingBoundary.tsx +0 -74
  348. package/src/primitives/tooltip/__workshop__/Props.tsx +0 -107
  349. package/src/primitives/tooltip/__workshop__/ResizableBoundary.tsx +0 -91
  350. package/src/primitives/tooltip/__workshop__/index.ts +0 -31
  351. package/src/primitives/tooltip/constants.ts +0 -24
  352. package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupContext.tsx +0 -13
  353. package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupProvider.tsx +0 -96
  354. package/src/primitives/tooltip/tooltipDelayGroup/types.ts +0 -7
  355. package/src/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  356. package/src/root/Root.tsx +0 -93
  357. package/src/root/RootProvider.tsx +0 -37
  358. package/src/root/__workshop__/Boundary.tsx +0 -43
  359. package/src/root/__workshop__/index.ts +0 -24
  360. package/src/root/__workshop__/primitives.tsx +0 -49
  361. package/src/root/__workshop__/tone-inheritance.tsx +0 -65
  362. package/src/utils/ErrorBoundary.tsx +0 -50
  363. package/src/utils/boundaryElement/BoundaryElementContext.ts +0 -7
  364. package/src/utils/boundaryElement/BoundaryElementProvider.tsx +0 -16
  365. package/src/utils/boundaryElement/__workshop__/Plain.tsx +0 -49
  366. package/src/utils/boundaryElement/__workshop__/index.ts +0 -16
  367. package/src/utils/boundaryElement/types.ts +0 -2
  368. package/src/utils/boundaryElement/useBoundaryElement.ts +0 -12
  369. package/src/utils/elementQuery/ElementQuery.tsx +0 -75
  370. package/src/utils/elementQuery/__workshop__/CustomMedia.tsx +0 -19
  371. package/src/utils/elementQuery/__workshop__/index.ts +0 -16
  372. package/src/utils/elementQuery/__workshop__/styles.css.ts +0 -31
  373. package/src/utils/elementQuery/helpers.ts +0 -27
  374. package/src/utils/portal/Portal.test.tsx +0 -105
  375. package/src/utils/portal/Portal.tsx +0 -42
  376. package/src/utils/portal/PortalContext.ts +0 -37
  377. package/src/utils/portal/PortalProvider.tsx +0 -38
  378. package/src/utils/portal/__workshop__/Named.tsx +0 -69
  379. package/src/utils/portal/__workshop__/index.ts +0 -16
  380. package/src/utils/portal/types.ts +0 -7
  381. package/src/utils/portal/usePortal.ts +0 -30
@@ -1,145 +0,0 @@
1
- import {
2
- avatar,
3
- avatar_arrow,
4
- avatar_arrowSvg,
5
- avatar_image,
6
- avatar_imageOutline,
7
- avatar_initials,
8
- type ResponsiveProp,
9
- } from '@sanity/ui-css'
10
- import type {AvatarColor, AvatarSize, FontLabelSize} from '@sanity/ui-tokens'
11
- import {startTransition, useEffect, useState} from 'react'
12
-
13
- import {_raf} from '../../core/helpers/animation'
14
- import {_getResponsiveProp} from '../../core/helpers/props'
15
- import type {ComponentType, Props} from '../../core/types'
16
- import {Box} from '../box/Box'
17
- import {Label} from '../label/Label'
18
- import type {AvatarPosition} from './types'
19
-
20
- /** @public */
21
- export const DEFAULT_AVATAR_ELEMENT = 'span'
22
-
23
- /** @public */
24
- export interface AvatarOwnProps {
25
- /** @beta */
26
- __unstable_hideInnerStroke?: boolean
27
- animateArrowFrom?: AvatarPosition
28
- arrowPosition?: AvatarPosition
29
- color?: AvatarColor
30
- initials?: string
31
- onImageLoadError?: (event: Error) => void
32
- size?: ResponsiveProp<AvatarSize>
33
- src?: string
34
- title?: string
35
- }
36
-
37
- /** @public */
38
- export type AvatarElementType = 'a' | 'button' | 'div' | 'span' | ComponentType
39
-
40
- /** @public */
41
- export type AvatarProps<E extends AvatarElementType = AvatarElementType> = Props<AvatarOwnProps, E>
42
-
43
- /**
44
- * Avatars are used to represent people and other agents (e.g. bots).
45
- *
46
- * @public
47
- */
48
- export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEMENT>(
49
- props: AvatarProps<E>,
50
- ): React.JSX.Element {
51
- const {
52
- __unstable_hideInnerStroke: hideInnerStroke,
53
- as: Element = DEFAULT_AVATAR_ELEMENT,
54
- className,
55
- color = 'magenta',
56
- src,
57
- title,
58
- initials: initialsProp,
59
- onImageLoadError,
60
- arrowPosition: arrowPositionProp,
61
- animateArrowFrom,
62
- size: sizeProp = 1,
63
- ...rest
64
- } = props as AvatarProps<typeof DEFAULT_AVATAR_ELEMENT>
65
-
66
- const initials = typeof initialsProp === 'string' ? initialsProp.slice(0, 2) : undefined
67
- const size = _getResponsiveProp(sizeProp)
68
-
69
- const [arrowPosition, setArrowPosition] = useState<AvatarPosition | undefined>(
70
- animateArrowFrom || arrowPositionProp || 'inside',
71
- )
72
-
73
- const [imageError, setImageError] = useState<boolean>(false)
74
-
75
- const handleImageError = () => {
76
- setImageError(true)
77
-
78
- if (onImageLoadError) {
79
- onImageLoadError(new Error('Avatar: the image failed to load'))
80
- }
81
- }
82
-
83
- const initialsSize = size.map((s): FontLabelSize => {
84
- if (s === 1) return 1
85
- if (s === 2) return 3
86
- if (s === 3) return 5
87
-
88
- return 0
89
- }) as ResponsiveProp<FontLabelSize>
90
-
91
- useEffect(() => {
92
- if (arrowPosition === arrowPositionProp) return undefined
93
-
94
- // Start animation in the next frame
95
- return _raf(() => setArrowPosition(arrowPositionProp))
96
- }, [arrowPosition, arrowPositionProp])
97
-
98
- useEffect(() => {
99
- if (src) {
100
- startTransition(() => setImageError(false))
101
- }
102
- }, [src])
103
-
104
- return (
105
- <Element
106
- data-hide-inner-stroke={hideInnerStroke ? '' : undefined}
107
- data-ui="Avatar"
108
- {...rest}
109
- aria-label={title}
110
- className={avatar({className, color, size: sizeProp})}
111
- data-arrow-position={arrowPosition}
112
- data-image-error={imageError ? '' : undefined}
113
- title={title}
114
- >
115
- <span className={avatar_arrow()}>
116
- <svg className={avatar_arrowSvg()} fill="none" height="7" viewBox="0 0 11 7" width="11">
117
- <path d="M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z" />
118
- </svg>
119
- </span>
120
-
121
- <Box
122
- alignItems="center"
123
- as="span"
124
- className={avatar_initials()}
125
- display="flex"
126
- inset={0}
127
- justifyContent="center"
128
- overflow="hidden"
129
- position="absolute"
130
- radius="full"
131
- >
132
- <Label align="center" as="span" size={initialsSize} weight="semibold">
133
- {initials}
134
- </Label>
135
- </Box>
136
-
137
- {src && (
138
- <Box className={avatar_image()} inset={0} position="absolute">
139
- <img alt={initials} src={src} onError={handleImageError} />
140
- <span className={avatar_imageOutline()} />
141
- </Box>
142
- )}
143
- </Element>
144
- )
145
- }
@@ -1,69 +0,0 @@
1
- import {avatar_counter, type ResponsiveProp} from '@sanity/ui-css'
2
- import type {AvatarSize, FontLabelSize} from '@sanity/ui-tokens'
3
- import {useMemo} from 'react'
4
-
5
- import {_getResponsiveProp} from '../../core/helpers/props'
6
- import type {ComponentType, Props} from '../../core/types'
7
- import {Box} from '../box/Box'
8
- import {Label} from '../label/Label'
9
-
10
- /** @public */
11
- export const DEFAULT_AVATAR_COUNTER_ELEMENT = 'span'
12
-
13
- /** @public */
14
- export interface AvatarCounterOwnProps {
15
- count: number
16
- size?: ResponsiveProp<AvatarSize>
17
- }
18
-
19
- /** @public */
20
- export type AvatarCounterElementType = 'button' | 'div' | 'span' | ComponentType
21
-
22
- /** @public */
23
- export type AvatarCounterProps<E extends AvatarCounterElementType = AvatarCounterElementType> =
24
- Props<AvatarCounterOwnProps, E>
25
-
26
- /** @public */
27
- export function AvatarCounter<
28
- E extends AvatarCounterElementType = typeof DEFAULT_AVATAR_COUNTER_ELEMENT,
29
- >(props: AvatarCounterProps<E>): React.JSX.Element {
30
- const {
31
- as = DEFAULT_AVATAR_COUNTER_ELEMENT,
32
- className,
33
- count,
34
- size: sizeProp = 1,
35
- ...rest
36
- } = props as AvatarCounterProps<typeof DEFAULT_AVATAR_COUNTER_ELEMENT>
37
- const size = _getResponsiveProp(sizeProp)
38
-
39
- const labelSize = useMemo(
40
- () =>
41
- size.map((s): FontLabelSize => {
42
- if (s === 1) return 1
43
- if (s === 2) return 3
44
- if (s === 3) return 5
45
-
46
- return 0
47
- }) as ResponsiveProp<FontLabelSize>,
48
- [size],
49
- )
50
-
51
- return (
52
- <Box
53
- data-ui="AvatarCounter"
54
- {...rest}
55
- alignItems="center"
56
- as={as}
57
- className={avatar_counter({className, size})}
58
- display="flex"
59
- flex="none"
60
- justifyContent="center"
61
- paddingX={2}
62
- sizing="border"
63
- >
64
- <Label align="center" as="span" size={labelSize} weight="medium">
65
- {count}
66
- </Label>
67
- </Box>
68
- )
69
- }
@@ -1,77 +0,0 @@
1
- import {avatar_stack, type ResponsiveProp} from '@sanity/ui-css'
2
- import type {AvatarSize} from '@sanity/ui-tokens'
3
- import {Children, cloneElement, Fragment, isValidElement, type ReactElement} from 'react'
4
-
5
- import type {ComponentType, Props} from '../../core/types'
6
- import {Box, type BoxOwnProps} from '../box/Box'
7
- import type {AvatarProps} from './Avatar'
8
- import {AvatarCounter} from './AvatarCounter'
9
-
10
- /** @public */
11
- export const DEFAULT_AVATAR_STACK_ELEMENT = 'span'
12
-
13
- /** @public */
14
- export type AvatarStackChild = ReactElement<AvatarProps<'div'>> | null | undefined | false
15
-
16
- /** @public */
17
- export type AvatarStackOwnProps = Omit<
18
- BoxOwnProps,
19
- 'align' | 'alignItems' | 'display' | 'justify' | 'justifyContent'
20
- > & {
21
- children: AvatarStackChild | AvatarStackChild[]
22
- maxLength?: number
23
- size?: ResponsiveProp<AvatarSize>
24
- }
25
-
26
- /** @public */
27
- export type AvatarStackElementType = 'div' | 'span' | ComponentType
28
-
29
- /** @public */
30
- export type AvatarStackProps<E extends AvatarStackElementType = AvatarStackElementType> = Props<
31
- AvatarStackOwnProps,
32
- E
33
- >
34
-
35
- /** @public */
36
- export function AvatarStack<E extends AvatarStackElementType = typeof DEFAULT_AVATAR_STACK_ELEMENT>(
37
- props: AvatarStackProps<E>,
38
- ): React.JSX.Element {
39
- const {
40
- as = DEFAULT_AVATAR_STACK_ELEMENT,
41
- children: childrenProp,
42
- className,
43
- maxLength: maxLengthProp = 4,
44
- size = 1,
45
- ...rest
46
- } = props as AvatarStackProps<typeof DEFAULT_AVATAR_STACK_ELEMENT>
47
-
48
- const children = Children.toArray(childrenProp).filter(isValidElement) as ReactElement<
49
- AvatarProps<'span'>
50
- >[]
51
- const maxLength = Math.max(maxLengthProp, 0)
52
-
53
- const len = children.length
54
- const visibleCount = maxLength - 1
55
- const extraCount = len - visibleCount
56
- const visibleChildren = extraCount > 1 ? children.slice(extraCount, len) : children
57
-
58
- return (
59
- <Box
60
- data-ui="AvatarStack"
61
- {...rest}
62
- alignItems="center"
63
- as={as}
64
- className={avatar_stack({className, size})}
65
- display="flex"
66
- justifyContent="flex-start"
67
- >
68
- {len === 0 && <AvatarCounter count={len} size={size} />}
69
-
70
- {len !== 0 && extraCount > 1 && <AvatarCounter count={extraCount} size={size} />}
71
-
72
- {visibleChildren.map((child, childIndex) => (
73
- <Fragment key={String(childIndex)}>{cloneElement(child, {size})}</Fragment>
74
- ))}
75
- </Box>
76
- )
77
- }
@@ -1,12 +0,0 @@
1
- import {Avatar, AVATAR_SIZE, Flex} from '@sanity/ui'
2
- import {useSelect} from '@sanity/ui-workshop'
3
-
4
- export default function AsButtonStory(): React.JSX.Element {
5
- const size = useSelect('Size', AVATAR_SIZE, 2)
6
-
7
- return (
8
- <Flex align="center" height="fill" justify="center">
9
- <Avatar as="button" color="magenta" initials="ab" size={size} />
10
- </Flex>
11
- )
12
- }
@@ -1,24 +0,0 @@
1
- import {Avatar, AVATAR_SIZE, Box} from '@sanity/ui'
2
- import {useBoolean, useSelect, useString} from '@sanity/ui-workshop'
3
-
4
- import {WORKSHOP_AVATAR_SRC} from '$workshop'
5
-
6
- export default function PropsStory() {
7
- const hideInnerStroke = useBoolean('Hide inner stroke', false)
8
- const src = useBoolean('With image source (src)', false)
9
- const size = useSelect('Size', [undefined, ...AVATAR_SIZE])
10
- const arrowPosition = useSelect('Arrow position', [undefined, 'top', 'bottom', 'inside'])
11
- const initials = useString('Initials', 'AB')
12
-
13
- return (
14
- <Box alignItems="center" display="flex" height="fill" justifyContent="center">
15
- <Avatar
16
- __unstable_hideInnerStroke={hideInnerStroke}
17
- arrowPosition={arrowPosition}
18
- initials={initials}
19
- size={size}
20
- src={src ? WORKSHOP_AVATAR_SRC : undefined}
21
- />
22
- </Box>
23
- )
24
- }
@@ -1,27 +0,0 @@
1
- import {Avatar, AVATAR_SIZE, AvatarCounter, AvatarStack, Box} from '@sanity/ui'
2
- import {useSelect} from '@sanity/ui-workshop'
3
-
4
- import {CardWrapper} from '$workshop'
5
-
6
- export default function StackStory(): React.JSX.Element {
7
- const size = useSelect('Size', [undefined, ...AVATAR_SIZE])
8
-
9
- return (
10
- <CardWrapper gap={4}>
11
- <Box display="flex" justifyContent="center">
12
- <AvatarStack size={size}>
13
- <AvatarCounter count={2} />
14
- <Avatar color="magenta" initials="uq" />
15
- <Avatar
16
- color="purple"
17
- src="https://avatars3.githubusercontent.com/u/406933?s=400&u=af898b0a50ef2ef1248be32dfa1410ccb55f6f65&v=4"
18
- />
19
- <Avatar
20
- color="blue"
21
- src="https://avatars3.githubusercontent.com/u/406933?s=400&u=af898b0a50ef2ef1248be32dfa1410ccb55f6f65&v=4"
22
- />
23
- </AvatarStack>
24
- </Box>
25
- </CardWrapper>
26
- )
27
- }
@@ -1,51 +0,0 @@
1
- import {Avatar, AvatarStack, Box, Button, Text} from '@sanity/ui'
2
- import {useBoolean} from '@sanity/ui-workshop'
3
-
4
- import {CardWrapper} from '$workshop'
5
-
6
- export default function WithinButtonStory(): React.JSX.Element {
7
- const disabled = useBoolean('Disabled', false)
8
-
9
- return (
10
- <CardWrapper gap={3}>
11
- <Button disabled={disabled} padding={0}>
12
- <Box flex={1} padding={3}>
13
- <Text size={1}>Default button</Text>
14
- </Box>
15
- <Box flex="none" padding={2}>
16
- <AvatarStack size={0}>
17
- <Avatar color="blue" initials="AB" />
18
- <Avatar color="magenta" initials="CD" />
19
- <Avatar color="purple" initials="EF" />
20
- </AvatarStack>
21
- </Box>
22
- </Button>
23
-
24
- <Button disabled={disabled} mode="ghost" padding={0}>
25
- <Box flex={1} padding={3}>
26
- <Text size={1}>Ghost button</Text>
27
- </Box>
28
- <Box flex="none" padding={2}>
29
- <AvatarStack size={0} style={{margin: -1}}>
30
- <Avatar color="blue" initials="AB" />
31
- <Avatar color="magenta" initials="CD" />
32
- <Avatar color="purple" initials="EF" />
33
- </AvatarStack>
34
- </Box>
35
- </Button>
36
-
37
- <Button disabled={disabled} mode="bleed" padding={0}>
38
- <Box flex={1} padding={3}>
39
- <Text size={1}>Bleed button</Text>
40
- </Box>
41
- <Box flex="none" padding={2}>
42
- <AvatarStack size={0} style={{margin: -1}}>
43
- <Avatar color="blue" initials="AB" />
44
- <Avatar color="magenta" initials="CD" />
45
- <Avatar color="purple" initials="EF" />
46
- </AvatarStack>
47
- </Box>
48
- </Button>
49
- </CardWrapper>
50
- )
51
- }
@@ -1,52 +0,0 @@
1
- import {Avatar, AvatarStack, Box, Card, Menu, MenuItem, Text} from '@sanity/ui'
2
- import {useBoolean} from '@sanity/ui-workshop'
3
-
4
- import {CardWrapper} from '$workshop'
5
-
6
- export default function WithinMenuItemStory(): React.JSX.Element {
7
- const disabled = useBoolean('Disabled', false)
8
-
9
- return (
10
- <CardWrapper>
11
- <Card radius={4} shadow={3}>
12
- <Menu gap={1}>
13
- <MenuItem disabled={disabled} padding={0}>
14
- <Box flex={1} padding={3}>
15
- <Text size={1}>Menu item 1</Text>
16
- </Box>
17
- <Box flex="none" padding={2}>
18
- <AvatarStack size={0} style={{margin: -1}}>
19
- <Avatar color="purple" initials="AB" />
20
- <Avatar color="magenta" initials="CD" />
21
- <Avatar color="orange" initials="EF" />
22
- </AvatarStack>
23
- </Box>
24
- </MenuItem>
25
-
26
- <MenuItem disabled={disabled} padding={0}>
27
- <Box flex={1} padding={3}>
28
- <Text size={1}>Menu item 1</Text>
29
- </Box>
30
- <Box flex="none" padding={2}>
31
- <AvatarStack size={0} style={{margin: -1}}>
32
- <Avatar color="magenta" initials="CD" />
33
- <Avatar color="orange" initials="EF" />
34
- </AvatarStack>
35
- </Box>
36
- </MenuItem>
37
-
38
- <MenuItem disabled={disabled} padding={0}>
39
- <Box flex={1} padding={3}>
40
- <Text size={1}>Menu item 1</Text>
41
- </Box>
42
- <Box flex="none" padding={2}>
43
- <AvatarStack size={0} style={{margin: -1}}>
44
- <Avatar color="purple" initials="AB" />
45
- </AvatarStack>
46
- </Box>
47
- </MenuItem>
48
- </Menu>
49
- </Card>
50
- </CardWrapper>
51
- )
52
- }
@@ -1,36 +0,0 @@
1
- import {type WorkshopScope} from '@sanity/ui-workshop'
2
- import {lazy} from 'react'
3
-
4
- const scope: WorkshopScope = {
5
- name: 'primitives/avatar',
6
- title: 'Avatar',
7
- stories: [
8
- {
9
- name: 'props',
10
- title: 'Props',
11
- component: lazy(() => import('./PropsStory')),
12
- },
13
- {
14
- name: 'as-button',
15
- title: 'As button',
16
- component: lazy(() => import('./AsButton')),
17
- },
18
- {
19
- name: 'avatar-stack',
20
- title: 'Avatar stack',
21
- component: lazy(() => import('./Stack')),
22
- },
23
- {
24
- name: 'within-button',
25
- title: 'Within button',
26
- component: lazy(() => import('./WithinButton')),
27
- },
28
- {
29
- name: 'within-menu-item',
30
- title: 'Within menu item',
31
- component: lazy(() => import('./WithinMenuItem')),
32
- },
33
- ],
34
- }
35
-
36
- export default scope
@@ -1,2 +0,0 @@
1
- /** @public */
2
- export type AvatarPosition = 'top' | 'bottom' | 'inside'
@@ -1,16 +0,0 @@
1
- import {describe, expect, it} from 'vitest'
2
- import {axe} from 'vitest-axe'
3
-
4
- import {render} from '$test/utils'
5
-
6
- import {Badge} from './Badge'
7
-
8
- describe('atoms/badge', () => {
9
- it('should have no violations (axe)', async () => {
10
- const lightResult = render(<Badge tone="positive">Label</Badge>, {scheme: 'light'})
11
- const darkResult = render(<Badge tone="positive">Label</Badge>, {scheme: 'dark'})
12
-
13
- expect(await axe(lightResult.container.outerHTML)).toHaveNoViolations()
14
- expect(await axe(darkResult.container.outerHTML)).toHaveNoViolations()
15
- })
16
- })
@@ -1,53 +0,0 @@
1
- import {
2
- badge,
3
- BADGE_STYLE_PROP_KEYS,
4
- type BadgeStyleProps,
5
- type ResponsiveProp,
6
- } from '@sanity/ui-css'
7
- import type {FontTextSize} from '@sanity/ui-tokens'
8
-
9
- import {_splitKeys} from '../../core/_keys'
10
- import type {ComponentType, Props} from '../../core/types'
11
- import {Text} from '../text/Text'
12
-
13
- /** @public */
14
- export const DEFAULT_BADGE_ELEMENT = 'span'
15
-
16
- /** @public */
17
- export interface BadgeOwnProps extends BadgeStyleProps {
18
- fontSize?: ResponsiveProp<FontTextSize>
19
- }
20
-
21
- /** @public */
22
- export type BadgeElementType = 'div' | 'span' | ComponentType
23
-
24
- /** @public */
25
- export type BadgeProps<E extends BadgeElementType = BadgeElementType> = Props<BadgeOwnProps, E>
26
-
27
- /**
28
- * Badges are used to tag resources.
29
- *
30
- * @public
31
- */
32
- export function Badge<E extends BadgeElementType = typeof DEFAULT_BADGE_ELEMENT>(
33
- props: BadgeProps<E>,
34
- ): React.JSX.Element {
35
- const [
36
- styleProps,
37
- {
38
- as: Element = DEFAULT_BADGE_ELEMENT,
39
- children,
40
- fontSize = 1,
41
- // split DOM props
42
- ...domProps
43
- },
44
- ] = _splitKeys(props as BadgeProps<typeof DEFAULT_BADGE_ELEMENT>, BADGE_STYLE_PROP_KEYS)
45
-
46
- return (
47
- <Element data-ui="Badge" {...domProps} className={badge(styleProps)}>
48
- <Text as="span" size={fontSize}>
49
- {children}
50
- </Text>
51
- </Element>
52
- )
53
- }
@@ -1,27 +0,0 @@
1
- import {Badge, ELEMENT_TONES, Flex, RADIUS, SPACE} from '@sanity/ui'
2
- import {useAction, useSelect, useText} from '@sanity/ui-workshop'
3
-
4
- export default function PropsStory() {
5
- const padding = useSelect('Padding', SPACE)
6
- const paddingX = useSelect('Padding X', SPACE)
7
- const paddingY = useSelect('Padding Y', SPACE)
8
- const radius = useSelect('Radius', [undefined, ...RADIUS])
9
- const tone = useSelect('Tone', ELEMENT_TONES, 'default')
10
-
11
- const text = useText('Text', 'Label')
12
-
13
- return (
14
- <Flex align="center" height="fill" justify="center">
15
- <Badge
16
- padding={padding}
17
- paddingX={paddingX}
18
- paddingY={paddingY}
19
- radius={radius}
20
- tone={tone}
21
- onClick={useAction('onClick')}
22
- >
23
- {text}
24
- </Badge>
25
- </Flex>
26
- )
27
- }
@@ -1,15 +0,0 @@
1
- import {Badge, ELEMENT_TONES, Flex} from '@sanity/ui'
2
-
3
- export default function Tones(): React.JSX.Element {
4
- return (
5
- <Flex align="center" height="fill" justify="center" padding={4} sizing="border">
6
- <Flex align="center" direction="column" gap={2}>
7
- {ELEMENT_TONES.map((tone) => (
8
- <Badge key={tone} tone={tone}>
9
- {tone}
10
- </Badge>
11
- ))}
12
- </Flex>
13
- </Flex>
14
- )
15
- }
@@ -1,26 +0,0 @@
1
- import type {WorkshopScope} from '@sanity/ui-workshop'
2
- import {lazy} from 'react'
3
-
4
- const scope: WorkshopScope = {
5
- name: 'primitives/badge',
6
- title: 'Badge',
7
- stories: [
8
- {
9
- name: 'props',
10
- title: 'Props',
11
- component: lazy(() => import('./Props')),
12
- },
13
- {
14
- name: 'tones',
15
- title: 'Tones',
16
- component: lazy(() => import('./Tones')),
17
- },
18
- {
19
- name: 'within-button',
20
- title: 'Within button',
21
- component: lazy(() => import('./within-button')),
22
- },
23
- ],
24
- }
25
-
26
- export default scope
@@ -1,36 +0,0 @@
1
- import {Badge, Box, Button, Text} from '@sanity/ui'
2
-
3
- import {CardWrapper} from '$workshop'
4
-
5
- export default function WithinButtonStory(): React.JSX.Element {
6
- return (
7
- <CardWrapper gap={4} width={0}>
8
- <Box display="flex" justifyContent="center">
9
- <Button mode="default" padding={2}>
10
- <Box flex={1} padding={1}>
11
- <Text size={1}>Button</Text>
12
- </Box>
13
- <Badge tone="suggest">Badge</Badge>
14
- </Button>
15
- </Box>
16
-
17
- <Box display="flex" justifyContent="center">
18
- <Button mode="ghost" padding={2}>
19
- <Box flex={1} padding={1}>
20
- <Text size={1}>Button</Text>
21
- </Box>
22
- <Badge tone="suggest">Badge</Badge>
23
- </Button>
24
- </Box>
25
-
26
- <Box display="flex" justifyContent="center">
27
- <Button mode="bleed" padding={2}>
28
- <Box flex={1} padding={1}>
29
- <Text size={1}>Button</Text>
30
- </Box>
31
- <Badge tone="suggest">Badge</Badge>
32
- </Button>
33
- </Box>
34
- </CardWrapper>
35
- )
36
- }