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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (796) hide show
  1. package/README.md +201 -17
  2. package/bin/sanity-ui.js +14 -0
  3. package/dist/_chunks-es/LazyRefractor.js +20 -0
  4. package/dist/_chunks-es/LazyRefractor.js.map +1 -0
  5. package/dist/cli/checks.js +148 -0
  6. package/dist/cli/config.js +23 -0
  7. package/dist/cli/detect.js +181 -0
  8. package/dist/cli/doctor.js +49 -0
  9. package/dist/cli/index.js +69 -0
  10. package/dist/cli/init.js +189 -0
  11. package/dist/cli/install.js +78 -0
  12. package/dist/cli/log.js +66 -0
  13. package/dist/cli/selfPackage.js +11 -0
  14. package/dist/cli/styles.js +185 -0
  15. package/dist/cli/test-utils.js +8 -0
  16. package/dist/cli/tsconfig.js +236 -0
  17. package/dist/cli/types.js +1 -0
  18. package/dist/cli/versions.js +45 -0
  19. package/dist/index.d.ts +744 -2272
  20. package/dist/index.js +1744 -4394
  21. package/dist/index.js.map +1 -1
  22. package/dist/styles.css +1 -0
  23. package/package.json +65 -194
  24. package/src/cli/checks.test.ts +38 -0
  25. package/src/cli/checks.ts +200 -0
  26. package/src/cli/config.ts +44 -0
  27. package/src/cli/detect.test.ts +191 -0
  28. package/src/cli/detect.ts +205 -0
  29. package/src/cli/doctor.test.ts +52 -0
  30. package/src/cli/doctor.ts +65 -0
  31. package/src/cli/index.ts +77 -0
  32. package/src/cli/init.ts +225 -0
  33. package/src/cli/install.test.ts +52 -0
  34. package/src/cli/install.ts +107 -0
  35. package/src/cli/log.ts +79 -0
  36. package/src/cli/selfPackage.ts +14 -0
  37. package/src/cli/styles.test.ts +130 -0
  38. package/src/cli/styles.ts +205 -0
  39. package/src/cli/test-utils.ts +10 -0
  40. package/src/cli/tsconfig.test.ts +174 -0
  41. package/src/cli/tsconfig.ts +282 -0
  42. package/src/cli/types.ts +77 -0
  43. package/src/cli/versions.test.ts +35 -0
  44. package/src/cli/versions.ts +41 -0
  45. package/src/components/box/Box.tsx +25 -0
  46. package/src/components/box/box.css +4 -0
  47. package/src/components/box/box.props.ts +24 -0
  48. package/src/components/button/Button.tsx +78 -0
  49. package/src/components/button/button.css +72 -0
  50. package/src/components/button/button.props.ts +104 -0
  51. package/src/components/card/Card.tsx +31 -0
  52. package/src/components/card/card.css +4 -0
  53. package/src/components/card/card.props.ts +54 -0
  54. package/src/components/checkbox/Checkbox.tsx +63 -0
  55. package/src/components/checkbox/checkbox.css +100 -0
  56. package/src/components/checkbox/checkbox.props.ts +25 -0
  57. package/src/components/code/Code.tsx +38 -0
  58. package/src/components/code/LazyRefractor.tsx +9 -0
  59. package/src/components/code/code.css +40 -0
  60. package/src/components/code/code.props.ts +37 -0
  61. package/src/components/container/Container.tsx +30 -0
  62. package/src/components/container/container.css +4 -0
  63. package/src/components/container/container.props.ts +24 -0
  64. package/src/components/divider/Divider.tsx +23 -0
  65. package/src/components/divider/divider.props.ts +9 -0
  66. package/src/components/eyebrow/Eyebrow.tsx +54 -0
  67. package/src/components/eyebrow/eyebrow.css +11 -0
  68. package/src/components/eyebrow/eyebrow.props.ts +24 -0
  69. package/src/components/flex/Flex.tsx +25 -0
  70. package/src/components/flex/flex.css +4 -0
  71. package/src/components/flex/flex.props.ts +29 -0
  72. package/src/components/grid/Grid.tsx +25 -0
  73. package/src/components/grid/grid.css +4 -0
  74. package/src/components/grid/grid.props.ts +29 -0
  75. package/src/components/h-stack/HStack.tsx +34 -0
  76. package/src/components/h-stack/hStack.props.ts +15 -0
  77. package/src/components/heading/Heading.tsx +54 -0
  78. package/src/components/heading/heading.css +9 -0
  79. package/src/components/heading/heading.props.ts +25 -0
  80. package/src/components/icon/Icon.tsx +24 -0
  81. package/src/components/icon/icon.css +17 -0
  82. package/src/components/icon/icon.props.ts +31 -0
  83. package/src/components/icon-button/IconButton.tsx +32 -0
  84. package/src/components/icon-button/iconButton.props.ts +26 -0
  85. package/src/components/index.css +25 -0
  86. package/src/components/indicator/Indicator.tsx +42 -0
  87. package/src/components/indicator/indicator.css +4 -0
  88. package/src/components/indicator/indicator.props.ts +20 -0
  89. package/src/components/indicator-stack/IndicatorStack.tsx +31 -0
  90. package/src/components/indicator-stack/indicator-stack.css +7 -0
  91. package/src/components/indicator-stack/indicatorStack.props.ts +13 -0
  92. package/src/components/inline/Inline.tsx +38 -0
  93. package/src/components/inline/inline.css +4 -0
  94. package/src/components/inline/inline.props.ts +96 -0
  95. package/src/components/label/Label.tsx +34 -0
  96. package/src/components/label/label.css +3 -0
  97. package/src/components/label/label.props.ts +19 -0
  98. package/src/components/link/Link.tsx +29 -0
  99. package/src/components/link/link.css +12 -0
  100. package/src/components/link/link.props.ts +23 -0
  101. package/src/components/list/List.tsx +167 -0
  102. package/src/components/list/list.css +25 -0
  103. package/src/components/list/list.props.ts +112 -0
  104. package/src/components/press-area/PressArea.tsx +29 -0
  105. package/src/components/press-area/press-area.css +22 -0
  106. package/src/components/press-area/pressArea.props.ts +14 -0
  107. package/src/components/radio/Radio.tsx +48 -0
  108. package/src/components/radio/radio.css +97 -0
  109. package/src/components/radio/radio.props.ts +20 -0
  110. package/src/components/skip-to-content/SkipToContent.tsx +35 -0
  111. package/src/components/skip-to-content/skip-to-content.css +9 -0
  112. package/src/components/skip-to-content/skipToContent.props.ts +19 -0
  113. package/src/components/spinner/Spinner.tsx +28 -0
  114. package/src/components/spinner/spinner.css +10 -0
  115. package/src/components/spinner/spinner.props.ts +16 -0
  116. package/src/components/switch/Switch.tsx +48 -0
  117. package/src/components/switch/switch.css +119 -0
  118. package/src/components/switch/switch.props.ts +20 -0
  119. package/src/components/text/Text.tsx +53 -0
  120. package/src/components/text/text.css +9 -0
  121. package/src/components/text/text.props.ts +24 -0
  122. package/src/components/tooltip/Tooltip.tsx +93 -0
  123. package/src/components/tooltip/tooltip.css +52 -0
  124. package/src/components/tooltip/tooltip.props.ts +20 -0
  125. package/src/components/tooltip-group/TooltipGroup.tsx +67 -0
  126. package/src/components/tooltip-group/tooltipGroup.props.ts +13 -0
  127. package/src/components/v-stack/VStack.tsx +32 -0
  128. package/src/components/v-stack/vStack.props.ts +15 -0
  129. package/src/components/visually-hidden/VisuallyHidden.tsx +29 -0
  130. package/src/components/visually-hidden/visually-hidden.css +9 -0
  131. package/src/components/visually-hidden/visuallyHidden.props.ts +19 -0
  132. package/src/css/classes/dynamic/flex-child.css +5 -0
  133. package/src/css/classes/dynamic/grid-child.css +8 -0
  134. package/src/css/classes/dynamic/grid-parent.css +6 -0
  135. package/src/css/classes/dynamic/height.css +5 -0
  136. package/src/css/classes/dynamic/index.css +7 -0
  137. package/src/css/classes/dynamic/line-clamp.css +5 -0
  138. package/src/css/classes/dynamic/readme.md +3 -0
  139. package/src/css/classes/dynamic/width.css +7 -0
  140. package/src/css/classes/dynamic/z-index.css +3 -0
  141. package/src/css/classes/generic/display.css +10 -0
  142. package/src/css/classes/generic/flex.css +24 -0
  143. package/src/css/classes/generic/grid.css +7 -0
  144. package/src/css/classes/generic/index.css +7 -0
  145. package/src/css/classes/generic/overflow.css +19 -0
  146. package/src/css/classes/generic/placement.css +171 -0
  147. package/src/css/classes/generic/position.css +7 -0
  148. package/src/css/classes/generic/readme.md +3 -0
  149. package/src/css/classes/generic/text-align.css +5 -0
  150. package/src/css/classes/index.css +4 -0
  151. package/src/css/classes/local/border.css +20 -0
  152. package/src/css/classes/local/index.css +4 -0
  153. package/src/css/classes/local/readme.md +3 -0
  154. package/src/css/classes/local/text-overflow.css +5 -0
  155. package/src/css/classes/local/text-trim.css +45 -0
  156. package/src/css/classes/local/tone.css +75 -0
  157. package/src/css/classes/system/color.css +223 -0
  158. package/src/css/classes/system/container.css +8 -0
  159. package/src/css/classes/system/font-family.css +2 -0
  160. package/src/css/classes/system/font-weight.css +4 -0
  161. package/src/css/classes/system/gap.css +37 -0
  162. package/src/css/classes/system/index.css +10 -0
  163. package/src/css/classes/system/inset.css +56 -0
  164. package/src/css/classes/system/margin.css +148 -0
  165. package/src/css/classes/system/padding.css +78 -0
  166. package/src/css/classes/system/radius.css +10 -0
  167. package/src/css/classes/system/readme.md +3 -0
  168. package/src/css/classes/system/shadow.css +6 -0
  169. package/src/css/classes/system/typography.css +31 -0
  170. package/src/css/global/font-face.css +20 -0
  171. package/src/css/global/index.css +2 -0
  172. package/src/css/global/reset.css +76 -0
  173. package/src/css/tokens/index.css +3 -0
  174. package/src/css/tokens/opacity.css +6 -0
  175. package/src/css/tokens/semantic.css +21 -0
  176. package/src/css/tokens/surface.css +27 -0
  177. package/src/index.css +18 -0
  178. package/src/index.ts +60 -0
  179. package/src/props/border.ts +51 -0
  180. package/src/props/flexChild.ts +29 -0
  181. package/src/props/flexParent.ts +47 -0
  182. package/src/props/gap.ts +31 -0
  183. package/src/props/gridChild.ts +50 -0
  184. package/src/props/gridParent.ts +45 -0
  185. package/src/props/height.ts +29 -0
  186. package/src/props/layout.ts +44 -0
  187. package/src/props/margin.ts +59 -0
  188. package/src/props/overflow.ts +30 -0
  189. package/src/props/padding.ts +59 -0
  190. package/src/props/placement.ts +16 -0
  191. package/src/props/position.ts +52 -0
  192. package/src/props/shadow.ts +15 -0
  193. package/src/props/tone.ts +15 -0
  194. package/src/props/typography.ts +62 -0
  195. package/src/props/width.ts +29 -0
  196. package/src/props/zIndex.ts +15 -0
  197. package/src/styles.css.d.ts +1 -0
  198. package/src/styles.css.node.js +2 -0
  199. package/src/styles.css.test.ts +24 -0
  200. package/src/types/Button.ts +8 -0
  201. package/src/types/Code.ts +6 -0
  202. package/src/types/Container.ts +3 -0
  203. package/src/types/Density.ts +3 -0
  204. package/src/types/Display.ts +11 -0
  205. package/src/types/Eyebrow.ts +3 -0
  206. package/src/types/Flex.ts +22 -0
  207. package/src/types/FontWeight.ts +3 -0
  208. package/src/types/Grid.ts +3 -0
  209. package/src/types/Heading.ts +6 -0
  210. package/src/types/Icon.ts +3 -0
  211. package/src/types/Interactive.ts +8 -0
  212. package/src/types/List.ts +2 -0
  213. package/src/types/Overflow.ts +3 -0
  214. package/src/types/Placement.ts +16 -0
  215. package/src/types/Position.ts +3 -0
  216. package/src/types/PropDef.ts +73 -0
  217. package/src/types/Radius.ts +3 -0
  218. package/src/types/Responsive.ts +10 -0
  219. package/src/types/Shadow.ts +3 -0
  220. package/src/types/Space.ts +15 -0
  221. package/src/types/Text.ts +3 -0
  222. package/src/types/TextAlign.ts +3 -0
  223. package/src/types/Tone.ts +3 -0
  224. package/src/utils/getProps.test.ts +156 -0
  225. package/src/utils/getProps.ts +156 -0
  226. package/src/utils/suffixClassName.ts +5 -0
  227. package/src/version.ts +3 -0
  228. package/LICENSE +0 -21
  229. package/dist/_chunks-es/Refractor.js +0 -25
  230. package/dist/_chunks-es/Refractor.js.map +0 -1
  231. package/dist/css/index.css +0 -2
  232. package/dist/css/index.css.map +0 -1
  233. package/dist/css/index.d.ts +0 -1398
  234. package/dist/css/index.js +0 -18882
  235. package/dist/css/index.js.map +0 -1
  236. package/dist/theme.d.ts +0 -499
  237. package/dist/theme.js +0 -870
  238. package/dist/theme.js.map +0 -1
  239. package/exports/css.ts +0 -1
  240. package/exports/index.ts +0 -1
  241. package/exports/theme.ts +0 -1
  242. package/src/core/Root.tsx +0 -88
  243. package/src/core/RootProvider.tsx +0 -40
  244. package/src/core/__workshop__/Boundary.tsx +0 -28
  245. package/src/core/__workshop__/index.ts +0 -16
  246. package/src/core/components/autocomplete/Autocomplete.tsx +0 -690
  247. package/src/core/components/autocomplete/AutocompleteOption.tsx +0 -45
  248. package/src/core/components/autocomplete/__workshop__/Async.tsx +0 -156
  249. package/src/core/components/autocomplete/__workshop__/ConstrainedHeight.tsx +0 -131
  250. package/src/core/components/autocomplete/__workshop__/Custom.tsx +0 -104
  251. package/src/core/components/autocomplete/__workshop__/Example.tsx +0 -91
  252. package/src/core/components/autocomplete/__workshop__/FocusAndBlur.tsx +0 -36
  253. package/src/core/components/autocomplete/__workshop__/Fullscreen.tsx +0 -292
  254. package/src/core/components/autocomplete/__workshop__/index.ts +0 -41
  255. package/src/core/components/autocomplete/__workshop__/mock/apiStore.ts +0 -49
  256. package/src/core/components/autocomplete/__workshop__/mock/countries.ts +0 -245
  257. package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
  258. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  259. package/src/core/components/autocomplete/constants.ts +0 -28
  260. package/src/core/components/autocomplete/types.ts +0 -103
  261. package/src/core/components/breadcrumbs/Breadcrumbs.tsx +0 -131
  262. package/src/core/components/breadcrumbs/__workshop__/Example.tsx +0 -61
  263. package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -16
  264. package/src/core/components/dialog/Dialog.tsx +0 -232
  265. package/src/core/components/dialog/DialogCard.tsx +0 -233
  266. package/src/core/components/dialog/DialogContext.ts +0 -21
  267. package/src/core/components/dialog/DialogProvider.tsx +0 -34
  268. package/src/core/components/dialog/__workshop__/Activate.tsx +0 -141
  269. package/src/core/components/dialog/__workshop__/AutoFocus.tsx +0 -29
  270. package/src/core/components/dialog/__workshop__/Layering.tsx +0 -41
  271. package/src/core/components/dialog/__workshop__/Nested.tsx +0 -71
  272. package/src/core/components/dialog/__workshop__/OnScroll.tsx +0 -51
  273. package/src/core/components/dialog/__workshop__/Panes.tsx +0 -89
  274. package/src/core/components/dialog/__workshop__/Position.tsx +0 -38
  275. package/src/core/components/dialog/__workshop__/Props.tsx +0 -79
  276. package/src/core/components/dialog/__workshop__/Provider.tsx +0 -11
  277. package/src/core/components/dialog/__workshop__/Wrapped.tsx +0 -76
  278. package/src/core/components/dialog/__workshop__/index.ts +0 -21
  279. package/src/core/components/dialog/isTargetWithinScope.ts +0 -14
  280. package/src/core/components/dialog/types.ts +0 -2
  281. package/src/core/components/dialog/useDialog.ts +0 -11
  282. package/src/core/components/hotkeys/Hotkeys.tsx +0 -60
  283. package/src/core/components/hotkeys/__workshop__/Plain.tsx +0 -9
  284. package/src/core/components/hotkeys/__workshop__/index.ts +0 -16
  285. package/src/core/components/menu/Menu.test.tsx +0 -129
  286. package/src/core/components/menu/Menu.tsx +0 -179
  287. package/src/core/components/menu/MenuButton.tsx +0 -230
  288. package/src/core/components/menu/MenuContext.ts +0 -19
  289. package/src/core/components/menu/MenuDivider.tsx +0 -32
  290. package/src/core/components/menu/MenuGroup.tsx +0 -236
  291. package/src/core/components/menu/MenuItem.tsx +0 -184
  292. package/src/core/components/menu/__workshop__/AsComponent.tsx +0 -45
  293. package/src/core/components/menu/__workshop__/AvatarMenu.tsx +0 -57
  294. package/src/core/components/menu/__workshop__/ClosableMenuButton.tsx +0 -47
  295. package/src/core/components/menu/__workshop__/ConstrainedInBoundary.tsx +0 -133
  296. package/src/core/components/menu/__workshop__/CustomMenuItem.tsx +0 -45
  297. package/src/core/components/menu/__workshop__/CustomSelectedState.tsx +0 -35
  298. package/src/core/components/menu/__workshop__/DisableFocusOnClose.tsx +0 -40
  299. package/src/core/components/menu/__workshop__/Groups.tsx +0 -156
  300. package/src/core/components/menu/__workshop__/MenuButton.tsx +0 -85
  301. package/src/core/components/menu/__workshop__/MenuGroupRight.tsx +0 -65
  302. package/src/core/components/menu/__workshop__/NestedMenu.tsx +0 -22
  303. package/src/core/components/menu/__workshop__/OnCloseMenuButton.tsx +0 -50
  304. package/src/core/components/menu/__workshop__/SelectedItem.tsx +0 -69
  305. package/src/core/components/menu/__workshop__/ShouldFocus.tsx +0 -42
  306. package/src/core/components/menu/__workshop__/Tones.tsx +0 -31
  307. package/src/core/components/menu/__workshop__/WithoutArrow.tsx +0 -32
  308. package/src/core/components/menu/__workshop__/index.ts +0 -91
  309. package/src/core/components/menu/helpers.ts +0 -82
  310. package/src/core/components/menu/useMenu.ts +0 -21
  311. package/src/core/components/menu/useMenuController.ts +0 -241
  312. package/src/core/components/tab/Tab.tsx +0 -109
  313. package/src/core/components/tab/TabList.tsx +0 -90
  314. package/src/core/components/tab/TabPanel.tsx +0 -47
  315. package/src/core/components/tab/__workshop__/Example.tsx +0 -79
  316. package/src/core/components/tab/__workshop__/index.ts +0 -16
  317. package/src/core/components/toast/Toast.test.tsx +0 -103
  318. package/src/core/components/toast/Toast.tsx +0 -191
  319. package/src/core/components/toast/ToastContext.ts +0 -7
  320. package/src/core/components/toast/ToastLayer.tsx +0 -54
  321. package/src/core/components/toast/ToastProvider.tsx +0 -112
  322. package/src/core/components/toast/__workshop__/Hook.tsx +0 -71
  323. package/src/core/components/toast/__workshop__/Toast.tsx +0 -28
  324. package/src/core/components/toast/__workshop__/index.ts +0 -21
  325. package/src/core/components/toast/toastState.ts +0 -6
  326. package/src/core/components/toast/types.ts +0 -24
  327. package/src/core/components/toast/useToast.ts +0 -23
  328. package/src/core/components/tree/Tree.tsx +0 -248
  329. package/src/core/components/tree/TreeContext.ts +0 -10
  330. package/src/core/components/tree/TreeGroup.tsx +0 -46
  331. package/src/core/components/tree/TreeItem.tsx +0 -237
  332. package/src/core/components/tree/__workshop__/Basic.tsx +0 -105
  333. package/src/core/components/tree/__workshop__/TabFromElement.tsx +0 -84
  334. package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
  335. package/src/core/components/tree/__workshop__/index.ts +0 -23
  336. package/src/core/components/tree/helpers.ts +0 -105
  337. package/src/core/components/tree/types.ts +0 -24
  338. package/src/core/components/tree/useTree.ts +0 -17
  339. package/src/core/components/virtualList/VirtualList.tsx +0 -209
  340. package/src/core/components/virtualList/__workshop__/ChangingProps.tsx +0 -36
  341. package/src/core/components/virtualList/__workshop__/ElementScroll.tsx +0 -24
  342. package/src/core/components/virtualList/__workshop__/InfiniteList.tsx +0 -48
  343. package/src/core/components/virtualList/__workshop__/WindowScrolll.tsx +0 -22
  344. package/src/core/components/virtualList/__workshop__/index.ts +0 -31
  345. package/src/core/constants.ts +0 -67
  346. package/src/core/helpers/animation.ts +0 -27
  347. package/src/core/helpers/element.ts +0 -55
  348. package/src/core/helpers/focus.ts +0 -92
  349. package/src/core/helpers/props.ts +0 -28
  350. package/src/core/helpers/scroll.ts +0 -15
  351. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -114
  352. package/src/core/hooks/useClickOutsideEvent.ts +0 -67
  353. package/src/core/hooks/useCustomValidity.ts +0 -13
  354. package/src/core/hooks/useDelayed.test.ts +0 -67
  355. package/src/core/hooks/useDelayedState.ts +0 -28
  356. package/src/core/hooks/useElementSize.ts +0 -19
  357. package/src/core/hooks/useGlobalKeyDown.ts +0 -17
  358. package/src/core/hooks/useMatchMedia.ts +0 -28
  359. package/src/core/hooks/useMediaIndex/__workshop__/Test.tsx +0 -14
  360. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -16
  361. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -21
  362. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -107
  363. package/src/core/hooks/useMounted.ts +0 -15
  364. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
  365. package/src/core/hooks/usePrefersDark.test.tsx +0 -20
  366. package/src/core/hooks/usePrefersDark.ts +0 -16
  367. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  368. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -20
  369. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  370. package/src/core/hooks/useResponsiveProp.ts +0 -28
  371. package/src/core/index.ts +0 -118
  372. package/src/core/lib/createGlobalScopedContext.ts +0 -37
  373. package/src/core/lib/globalScope.ts +0 -19
  374. package/src/core/lib/isArray.ts +0 -3
  375. package/src/core/lib/isRecord.ts +0 -3
  376. package/src/core/middleware/origin.ts +0 -47
  377. package/src/core/observers/elementSize.ts +0 -116
  378. package/src/core/observers/resize.ts +0 -9
  379. package/src/core/primitives/arrow/Arrow.tsx +0 -74
  380. package/src/core/primitives/arrow/cmds.ts +0 -91
  381. package/src/core/primitives/avatar/Avatar.tsx +0 -147
  382. package/src/core/primitives/avatar/AvatarCounter.tsx +0 -69
  383. package/src/core/primitives/avatar/AvatarStack.tsx +0 -79
  384. package/src/core/primitives/avatar/__workshop__/AsButton.tsx +0 -21
  385. package/src/core/primitives/avatar/__workshop__/Stack.tsx +0 -29
  386. package/src/core/primitives/avatar/__workshop__/WithinButton.tsx +0 -55
  387. package/src/core/primitives/avatar/__workshop__/WithinMenuItem.tsx +0 -72
  388. package/src/core/primitives/avatar/__workshop__/index.ts +0 -31
  389. package/src/core/primitives/avatar/types.ts +0 -2
  390. package/src/core/primitives/badge/Badge.test.tsx +0 -16
  391. package/src/core/primitives/badge/Badge.tsx +0 -61
  392. package/src/core/primitives/badge/__workshop__/Props.tsx +0 -30
  393. package/src/core/primitives/badge/__workshop__/Tones.tsx +0 -16
  394. package/src/core/primitives/badge/__workshop__/index.ts +0 -21
  395. package/src/core/primitives/box/Box.tsx +0 -222
  396. package/src/core/primitives/box/__workshop__/Props.tsx +0 -25
  397. package/src/core/primitives/box/__workshop__/Responsive.tsx +0 -20
  398. package/src/core/primitives/box/__workshop__/index.ts +0 -21
  399. package/src/core/primitives/button/Button.test.tsx +0 -30
  400. package/src/core/primitives/button/Button.tsx +0 -193
  401. package/src/core/primitives/button/__workshop__/Custom.tsx +0 -27
  402. package/src/core/primitives/button/__workshop__/CustomIcons.tsx +0 -30
  403. package/src/core/primitives/button/__workshop__/Disabled.tsx +0 -54
  404. package/src/core/primitives/button/__workshop__/MixedChildren.tsx +0 -12
  405. package/src/core/primitives/button/__workshop__/Props.tsx +0 -77
  406. package/src/core/primitives/button/__workshop__/SanityUploadButton.tsx +0 -36
  407. package/src/core/primitives/button/__workshop__/Stacked.tsx +0 -74
  408. package/src/core/primitives/button/__workshop__/Styled1.tsx +0 -17
  409. package/src/core/primitives/button/__workshop__/Styled2.tsx +0 -19
  410. package/src/core/primitives/button/__workshop__/TextOverflow.tsx +0 -13
  411. package/src/core/primitives/button/__workshop__/UploadButton.tsx +0 -29
  412. package/src/core/primitives/button/__workshop__/index.ts +0 -66
  413. package/src/core/primitives/button/types.ts +0 -2
  414. package/src/core/primitives/card/Card.tsx +0 -109
  415. package/src/core/primitives/card/CardContext.ts +0 -10
  416. package/src/core/primitives/card/CardProvider.tsx +0 -27
  417. package/src/core/primitives/card/__workshop__/AsButton.tsx +0 -107
  418. package/src/core/primitives/card/__workshop__/AsComponent.tsx +0 -27
  419. package/src/core/primitives/card/__workshop__/Checkered.tsx +0 -26
  420. package/src/core/primitives/card/__workshop__/Interactive.tsx +0 -29
  421. package/src/core/primitives/card/__workshop__/ListNavigation.tsx +0 -78
  422. package/src/core/primitives/card/__workshop__/Props.tsx +0 -62
  423. package/src/core/primitives/card/__workshop__/Selected.tsx +0 -62
  424. package/src/core/primitives/card/__workshop__/Styled.tsx +0 -14
  425. package/src/core/primitives/card/__workshop__/Tones.tsx +0 -27
  426. package/src/core/primitives/card/__workshop__/index.ts +0 -20
  427. package/src/core/primitives/card/types.ts +0 -17
  428. package/src/core/primitives/card/useCard.ts +0 -15
  429. package/src/core/primitives/checkbox/Checkbox.tsx +0 -80
  430. package/src/core/primitives/checkbox/__workshop__/Example.tsx +0 -25
  431. package/src/core/primitives/checkbox/__workshop__/Props.tsx +0 -35
  432. package/src/core/primitives/checkbox/__workshop__/ReadOnly.tsx +0 -16
  433. package/src/core/primitives/checkbox/__workshop__/Tones.tsx +0 -27
  434. package/src/core/primitives/checkbox/__workshop__/index.ts +0 -15
  435. package/src/core/primitives/code/Code.tsx +0 -48
  436. package/src/core/primitives/code/Refractor.tsx +0 -18
  437. package/src/core/primitives/code/__workshop__/OpticalAlignment.tsx +0 -23
  438. package/src/core/primitives/code/__workshop__/Props.tsx +0 -23
  439. package/src/core/primitives/code/__workshop__/index.ts +0 -21
  440. package/src/core/primitives/container/Container.tsx +0 -37
  441. package/src/core/primitives/container/__workshop__/Example.tsx +0 -25
  442. package/src/core/primitives/container/__workshop__/index.ts +0 -10
  443. package/src/core/primitives/container/types.ts +0 -6
  444. package/src/core/primitives/flex/Flex.tsx +0 -58
  445. package/src/core/primitives/flex/__workshop__/Example.tsx +0 -40
  446. package/src/core/primitives/flex/__workshop__/Gap.tsx +0 -25
  447. package/src/core/primitives/flex/__workshop__/index.ts +0 -13
  448. package/src/core/primitives/grid/Grid.tsx +0 -35
  449. package/src/core/primitives/grid/__workshop__/Responsive.tsx +0 -54
  450. package/src/core/primitives/grid/__workshop__/index.ts +0 -12
  451. package/src/core/primitives/heading/Heading.tsx +0 -78
  452. package/src/core/primitives/heading/__workshop__/OpticalAlignment.tsx +0 -54
  453. package/src/core/primitives/heading/__workshop__/Plain.tsx +0 -40
  454. package/src/core/primitives/heading/__workshop__/index.ts +0 -21
  455. package/src/core/primitives/inline/Inline.tsx +0 -62
  456. package/src/core/primitives/inline/__workshop__/Plain.tsx +0 -28
  457. package/src/core/primitives/inline/__workshop__/index.ts +0 -10
  458. package/src/core/primitives/kbd/Kbd.tsx +0 -57
  459. package/src/core/primitives/kbd/__workshop__/Plain.tsx +0 -9
  460. package/src/core/primitives/kbd/__workshop__/index.ts +0 -10
  461. package/src/core/primitives/label/Label.tsx +0 -75
  462. package/src/core/primitives/label/__workshop__/OpticalAlignment.tsx +0 -54
  463. package/src/core/primitives/label/__workshop__/Plain.tsx +0 -42
  464. package/src/core/primitives/label/__workshop__/index.ts +0 -21
  465. package/src/core/primitives/layer/Layer.test.tsx +0 -110
  466. package/src/core/primitives/layer/Layer.tsx +0 -42
  467. package/src/core/primitives/layer/LayerCard.tsx +0 -90
  468. package/src/core/primitives/layer/LayerContext.ts +0 -7
  469. package/src/core/primitives/layer/LayerProvider.tsx +0 -106
  470. package/src/core/primitives/layer/__workshop__/MultipleRoots.tsx +0 -49
  471. package/src/core/primitives/layer/__workshop__/Nested.tsx +0 -98
  472. package/src/core/primitives/layer/__workshop__/ResponsiveZOffset.tsx +0 -17
  473. package/src/core/primitives/layer/__workshop__/_debug.tsx +0 -17
  474. package/src/core/primitives/layer/__workshop__/index.ts +0 -26
  475. package/src/core/primitives/layer/getLayerContext.test.ts +0 -32
  476. package/src/core/primitives/layer/getLayerContext.ts +0 -21
  477. package/src/core/primitives/layer/types.ts +0 -9
  478. package/src/core/primitives/layer/useLayer.ts +0 -24
  479. package/src/core/primitives/popover/Popover.tsx +0 -442
  480. package/src/core/primitives/popover/PopoverLayer.tsx +0 -149
  481. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -89
  482. package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  483. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -34
  484. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  485. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -79
  486. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -69
  487. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -102
  488. package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -106
  489. package/src/core/primitives/popover/__workshop__/index.ts +0 -51
  490. package/src/core/primitives/popover/constants.ts +0 -22
  491. package/src/core/primitives/popover/floating-ui/size.ts +0 -83
  492. package/src/core/primitives/popover/helpers.ts +0 -32
  493. package/src/core/primitives/popover/types.ts +0 -12
  494. package/src/core/primitives/radio/Radio.tsx +0 -64
  495. package/src/core/primitives/radio/__workshop__/Example.tsx +0 -63
  496. package/src/core/primitives/radio/__workshop__/Plain.tsx +0 -28
  497. package/src/core/primitives/radio/__workshop__/index.ts +0 -13
  498. package/src/core/primitives/select/Select.tsx +0 -75
  499. package/src/core/primitives/select/__workshop__/Plain.tsx +0 -43
  500. package/src/core/primitives/select/__workshop__/ReadOnly.tsx +0 -23
  501. package/src/core/primitives/select/__workshop__/index.ts +0 -13
  502. package/src/core/primitives/selectable/Selectable.tsx +0 -50
  503. package/src/core/primitives/skeleton/CodeSkeleton.tsx +0 -49
  504. package/src/core/primitives/skeleton/HeadingSkeleton.tsx +0 -48
  505. package/src/core/primitives/skeleton/LabelSkeleton.tsx +0 -47
  506. package/src/core/primitives/skeleton/Skeleton.tsx +0 -70
  507. package/src/core/primitives/skeleton/TextSkeleton.tsx +0 -49
  508. package/src/core/primitives/skeleton/__workshop__/Delay.tsx +0 -78
  509. package/src/core/primitives/skeleton/__workshop__/Skeleton.tsx +0 -72
  510. package/src/core/primitives/skeleton/__workshop__/index.ts +0 -13
  511. package/src/core/primitives/spinner/AnimatedSpinnerIcon.tsx +0 -14
  512. package/src/core/primitives/spinner/Spinner.tsx +0 -45
  513. package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -20
  514. package/src/core/primitives/spinner/__workshop__/index.ts +0 -16
  515. package/src/core/primitives/srOnly/SrOnly.tsx +0 -33
  516. package/src/core/primitives/stack/Stack.tsx +0 -60
  517. package/src/core/primitives/stack/__workshop__/Plain.tsx +0 -35
  518. package/src/core/primitives/stack/__workshop__/index.ts +0 -16
  519. package/src/core/primitives/switch/Switch.tsx +0 -84
  520. package/src/core/primitives/switch/__workshop__/Example.tsx +0 -23
  521. package/src/core/primitives/switch/__workshop__/Props.tsx +0 -21
  522. package/src/core/primitives/switch/__workshop__/index.ts +0 -13
  523. package/src/core/primitives/text/Text.tsx +0 -76
  524. package/src/core/primitives/text/__workshop__/Colored.tsx +0 -30
  525. package/src/core/primitives/text/__workshop__/Example.tsx +0 -42
  526. package/src/core/primitives/text/__workshop__/OpticalAlignment.tsx +0 -23
  527. package/src/core/primitives/text/__workshop__/index.ts +0 -26
  528. package/src/core/primitives/textArea/TextArea.tsx +0 -84
  529. package/src/core/primitives/textArea/__workshop__/Plain.tsx +0 -69
  530. package/src/core/primitives/textArea/__workshop__/index.ts +0 -16
  531. package/src/core/primitives/textInput/TextInput.tsx +0 -258
  532. package/src/core/primitives/textInput/__workshop__/ClearButton.tsx +0 -30
  533. package/src/core/primitives/textInput/__workshop__/CustomValidity.tsx +0 -17
  534. package/src/core/primitives/textInput/__workshop__/Plain.tsx +0 -140
  535. package/src/core/primitives/textInput/__workshop__/ReadOnly.tsx +0 -9
  536. package/src/core/primitives/textInput/__workshop__/States.tsx +0 -53
  537. package/src/core/primitives/textInput/__workshop__/Tones.tsx +0 -277
  538. package/src/core/primitives/textInput/__workshop__/Typed.tsx +0 -29
  539. package/src/core/primitives/textInput/__workshop__/index.ts +0 -46
  540. package/src/core/primitives/tooltip/Tooltip.test.tsx +0 -452
  541. package/src/core/primitives/tooltip/Tooltip.tsx +0 -483
  542. package/src/core/primitives/tooltip/TooltipLayer.tsx +0 -106
  543. package/src/core/primitives/tooltip/__workshop__/CustomPortal.tsx +0 -104
  544. package/src/core/primitives/tooltip/__workshop__/OverflowingBoundary.tsx +0 -76
  545. package/src/core/primitives/tooltip/__workshop__/Props.tsx +0 -124
  546. package/src/core/primitives/tooltip/__workshop__/ResizableBoundary.tsx +0 -91
  547. package/src/core/primitives/tooltip/__workshop__/index.ts +0 -31
  548. package/src/core/primitives/tooltip/constants.ts +0 -23
  549. package/src/core/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupContext.tsx +0 -13
  550. package/src/core/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupProvider.tsx +0 -55
  551. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
  552. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  553. package/src/core/types.ts +0 -56
  554. package/src/core/utils/ErrorBoundary.tsx +0 -50
  555. package/src/core/utils/boundaryElement/BoundaryElement.test.tsx +0 -102
  556. package/src/core/utils/boundaryElement/BoundaryElementContext.ts +0 -10
  557. package/src/core/utils/boundaryElement/BoundaryElementProvider.tsx +0 -18
  558. package/src/core/utils/boundaryElement/__workshop__/Plain.tsx +0 -19
  559. package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -16
  560. package/src/core/utils/boundaryElement/types.ts +0 -5
  561. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -24
  562. package/src/core/utils/elementQuery/ElementQuery.tsx +0 -75
  563. package/src/core/utils/elementQuery/__workshop__/CustomMedia.tsx +0 -41
  564. package/src/core/utils/elementQuery/__workshop__/index.ts +0 -16
  565. package/src/core/utils/elementQuery/helpers.ts +0 -27
  566. package/src/core/utils/getElementRef.ts +0 -29
  567. package/src/core/utils/portal/Portal.test.tsx +0 -105
  568. package/src/core/utils/portal/Portal.tsx +0 -36
  569. package/src/core/utils/portal/PortalContext.ts +0 -37
  570. package/src/core/utils/portal/PortalProvider.tsx +0 -70
  571. package/src/core/utils/portal/__workshop__/Named.tsx +0 -63
  572. package/src/core/utils/portal/__workshop__/index.ts +0 -16
  573. package/src/core/utils/portal/types.ts +0 -7
  574. package/src/core/utils/portal/usePortal.ts +0 -23
  575. package/src/css/_assign.ts +0 -3
  576. package/src/css/_composeClassNames.ts +0 -12
  577. package/src/css/_fromEntries.ts +0 -3
  578. package/src/css/_getClassNames.ts +0 -9
  579. package/src/css/_responsiveClassName.ts +0 -45
  580. package/src/css/_responsiveStyle.css.ts +0 -34
  581. package/src/css/_style.css.ts +0 -9
  582. package/src/css/components/breadcrumbs/breadcrumbs.css.ts +0 -6
  583. package/src/css/components/breadcrumbs/breadcrumbs.ts +0 -7
  584. package/src/css/components/dialog/dialog.css.ts +0 -98
  585. package/src/css/components/dialog/dialog.ts +0 -58
  586. package/src/css/components/menu/menu.css.ts +0 -14
  587. package/src/css/components/menu/menu.ts +0 -12
  588. package/src/css/components/skeleton/skeleton.css.ts +0 -128
  589. package/src/css/components/skeleton/skeleton.ts +0 -38
  590. package/src/css/components/skeleton/types.ts +0 -36
  591. package/src/css/components/toast/toast.css.ts +0 -17
  592. package/src/css/components/toast/toast.ts +0 -11
  593. package/src/css/components/tree/tree.css.ts +0 -65
  594. package/src/css/components/tree/tree.ts +0 -7
  595. package/src/css/constants.ts +0 -10
  596. package/src/css/getVarName.ts +0 -27
  597. package/src/css/index.ts +0 -146
  598. package/src/css/layers.css.ts +0 -12
  599. package/src/css/primitives/_arrow/_arrow.css.ts +0 -68
  600. package/src/css/primitives/_arrow/_arrow.ts +0 -26
  601. package/src/css/primitives/_input/_input.css.ts +0 -261
  602. package/src/css/primitives/_input/input.ts +0 -29
  603. package/src/css/primitives/_input/types.ts +0 -13
  604. package/src/css/primitives/avatar/avatar.css.ts +0 -201
  605. package/src/css/primitives/avatar/avatar.ts +0 -68
  606. package/src/css/primitives/avatar/types.ts +0 -10
  607. package/src/css/primitives/badge/badge.css.ts +0 -27
  608. package/src/css/primitives/badge/badge.ts +0 -8
  609. package/src/css/primitives/badge/types.ts +0 -13
  610. package/src/css/primitives/box/box.css.ts +0 -19
  611. package/src/css/primitives/box/box.ts +0 -82
  612. package/src/css/primitives/box/types.ts +0 -75
  613. package/src/css/primitives/button/button.css.ts +0 -287
  614. package/src/css/primitives/button/button.ts +0 -26
  615. package/src/css/primitives/button/types.ts +0 -12
  616. package/src/css/primitives/card/__workshop__/Color.tsx +0 -83
  617. package/src/css/primitives/card/__workshop__/index.ts +0 -16
  618. package/src/css/primitives/card/card.css.ts +0 -397
  619. package/src/css/primitives/card/card.ts +0 -13
  620. package/src/css/primitives/card/types.ts +0 -9
  621. package/src/css/primitives/checkbox/checkbox.css.ts +0 -193
  622. package/src/css/primitives/checkbox/checkbox.ts +0 -17
  623. package/src/css/primitives/code/code.css.ts +0 -272
  624. package/src/css/primitives/code/code.ts +0 -19
  625. package/src/css/primitives/code/types.ts +0 -11
  626. package/src/css/primitives/container/container.css.ts +0 -4
  627. package/src/css/primitives/container/container.ts +0 -17
  628. package/src/css/primitives/container/types.ts +0 -9
  629. package/src/css/primitives/heading/heading.css.ts +0 -86
  630. package/src/css/primitives/heading/heading.ts +0 -22
  631. package/src/css/primitives/heading/types.ts +0 -14
  632. package/src/css/primitives/kbd/kbd.css.ts +0 -16
  633. package/src/css/primitives/kbd/kbd.ts +0 -9
  634. package/src/css/primitives/kbd/types.ts +0 -6
  635. package/src/css/primitives/label/label.css.ts +0 -87
  636. package/src/css/primitives/label/label.ts +0 -22
  637. package/src/css/primitives/label/types.ts +0 -14
  638. package/src/css/primitives/popover/popover.css.ts +0 -6
  639. package/src/css/primitives/popover/popover.ts +0 -12
  640. package/src/css/primitives/radio/radio.css.ts +0 -78
  641. package/src/css/primitives/radio/radio.ts +0 -17
  642. package/src/css/primitives/root/root.css.ts +0 -20
  643. package/src/css/primitives/root/root.ts +0 -17
  644. package/src/css/primitives/root/types.ts +0 -10
  645. package/src/css/primitives/select/select.css.ts +0 -24
  646. package/src/css/primitives/select/select.ts +0 -14
  647. package/src/css/primitives/select/types.ts +0 -5
  648. package/src/css/primitives/selectable/selectable.css.ts +0 -131
  649. package/src/css/primitives/selectable/selectable.ts +0 -9
  650. package/src/css/primitives/selectable/types.ts +0 -9
  651. package/src/css/primitives/spinner/spinner.css.ts +0 -19
  652. package/src/css/primitives/spinner/spinner.ts +0 -13
  653. package/src/css/primitives/spinner/types.ts +0 -4
  654. package/src/css/primitives/srOnly/srOnly.css.ts +0 -10
  655. package/src/css/primitives/srOnly/srOnly.ts +0 -7
  656. package/src/css/primitives/stack/stack.css.ts +0 -6
  657. package/src/css/primitives/stack/stack.ts +0 -7
  658. package/src/css/primitives/switch/switch.css.ts +0 -98
  659. package/src/css/primitives/switch/switch.ts +0 -27
  660. package/src/css/primitives/text/text.css.ts +0 -86
  661. package/src/css/primitives/text/text.ts +0 -24
  662. package/src/css/primitives/text/types.ts +0 -18
  663. package/src/css/primitives/textArea/textArea.css.ts +0 -4
  664. package/src/css/primitives/textArea/textArea.ts +0 -9
  665. package/src/css/primitives/textArea/types.ts +0 -7
  666. package/src/css/primitives/textInput/textInput.css.ts +0 -43
  667. package/src/css/primitives/textInput/textInput.ts +0 -24
  668. package/src/css/primitives/textInput/types.ts +0 -7
  669. package/src/css/primitives/tooltip/tooltip.css.ts +0 -4
  670. package/src/css/primitives/tooltip/tooltip.ts +0 -8
  671. package/src/css/primitives/tooltip/types.ts +0 -4
  672. package/src/css/props/alignItems/alignItems.css.ts +0 -22
  673. package/src/css/props/alignItems/alignItems.ts +0 -8
  674. package/src/css/props/alignItems/types.ts +0 -9
  675. package/src/css/props/border/border.css.ts +0 -65
  676. package/src/css/props/border/border.ts +0 -21
  677. package/src/css/props/border/types.ts +0 -13
  678. package/src/css/props/boxSizing/boxSizing.css.ts +0 -12
  679. package/src/css/props/boxSizing/boxSizing.ts +0 -7
  680. package/src/css/props/boxSizing/types.ts +0 -7
  681. package/src/css/props/display/display.css.ts +0 -56
  682. package/src/css/props/display/display.ts +0 -8
  683. package/src/css/props/display/types.ts +0 -16
  684. package/src/css/props/flex/flex.css.ts +0 -52
  685. package/src/css/props/flex/flex.ts +0 -8
  686. package/src/css/props/flex/types.ts +0 -9
  687. package/src/css/props/flexDirection/flexDirection.css.ts +0 -19
  688. package/src/css/props/flexDirection/flexDirection.ts +0 -8
  689. package/src/css/props/flexDirection/types.ts +0 -9
  690. package/src/css/props/flexWrap/flexWrap.css.ts +0 -16
  691. package/src/css/props/flexWrap/flexWrap.ts +0 -8
  692. package/src/css/props/flexWrap/types.ts +0 -9
  693. package/src/css/props/font/font.css.ts +0 -94
  694. package/src/css/props/font/font.ts +0 -8
  695. package/src/css/props/font/types.ts +0 -6
  696. package/src/css/props/gap/gap.css.ts +0 -40
  697. package/src/css/props/gap/gap.ts +0 -13
  698. package/src/css/props/gap/types.ts +0 -10
  699. package/src/css/props/gridAutoColumns/gridAutoColumns.css.ts +0 -19
  700. package/src/css/props/gridAutoColumns/gridAutoColumns.ts +0 -8
  701. package/src/css/props/gridAutoColumns/types.ts +0 -9
  702. package/src/css/props/gridAutoFlow/gridAutoFlow.css.ts +0 -19
  703. package/src/css/props/gridAutoFlow/gridAutoFlow.ts +0 -8
  704. package/src/css/props/gridAutoFlow/types.ts +0 -9
  705. package/src/css/props/gridAutoRows/gridAutoRows.css.ts +0 -19
  706. package/src/css/props/gridAutoRows/gridAutoRows.ts +0 -8
  707. package/src/css/props/gridAutoRows/types.ts +0 -9
  708. package/src/css/props/gridColumn/gridColumn.css.ts +0 -49
  709. package/src/css/props/gridColumn/gridColumn.ts +0 -8
  710. package/src/css/props/gridColumn/types.ts +0 -9
  711. package/src/css/props/gridColumnEnd/gridColumnEnd.css.ts +0 -46
  712. package/src/css/props/gridColumnEnd/gridColumnEnd.ts +0 -8
  713. package/src/css/props/gridColumnEnd/types.ts +0 -9
  714. package/src/css/props/gridColumnStart/gridColumnStart.css.ts +0 -46
  715. package/src/css/props/gridColumnStart/gridColumnStart.ts +0 -8
  716. package/src/css/props/gridColumnStart/types.ts +0 -9
  717. package/src/css/props/gridRow/gridRow.css.ts +0 -49
  718. package/src/css/props/gridRow/gridRow.ts +0 -8
  719. package/src/css/props/gridRow/types.ts +0 -9
  720. package/src/css/props/gridRowEnd/gridRowEnd.css.ts +0 -46
  721. package/src/css/props/gridRowEnd/gridRowEnd.ts +0 -8
  722. package/src/css/props/gridRowEnd/types.ts +0 -9
  723. package/src/css/props/gridRowStart/gridRowStart.css.ts +0 -46
  724. package/src/css/props/gridRowStart/gridRowStart.ts +0 -8
  725. package/src/css/props/gridRowStart/types.ts +0 -9
  726. package/src/css/props/gridTemplateColumns/gridTemplateColumns.css.ts +0 -43
  727. package/src/css/props/gridTemplateColumns/gridTemplateColumns.ts +0 -8
  728. package/src/css/props/gridTemplateColumns/types.ts +0 -9
  729. package/src/css/props/gridTemplateRows/gridTemplateRows.css.ts +0 -43
  730. package/src/css/props/gridTemplateRows/gridTemplateRows.ts +0 -8
  731. package/src/css/props/gridTemplateRows/types.ts +0 -9
  732. package/src/css/props/height/height.css.ts +0 -25
  733. package/src/css/props/height/height.ts +0 -8
  734. package/src/css/props/height/types.ts +0 -9
  735. package/src/css/props/inset/inset.css.ts +0 -37
  736. package/src/css/props/inset/inset.ts +0 -21
  737. package/src/css/props/inset/types.ts +0 -13
  738. package/src/css/props/justifyContent/justifyContent.css.ts +0 -25
  739. package/src/css/props/justifyContent/justifyContent.ts +0 -8
  740. package/src/css/props/justifyContent/types.ts +0 -15
  741. package/src/css/props/margin/margin.css.ts +0 -117
  742. package/src/css/props/margin/margin.ts +0 -25
  743. package/src/css/props/margin/types.ts +0 -17
  744. package/src/css/props/maxWidth/maxWidth.css.ts +0 -32
  745. package/src/css/props/maxWidth/maxWidth.ts +0 -8
  746. package/src/css/props/maxWidth/types.ts +0 -11
  747. package/src/css/props/minHeight/minHeight.css.ts +0 -13
  748. package/src/css/props/minHeight/minHeight.ts +0 -8
  749. package/src/css/props/minHeight/types.ts +0 -9
  750. package/src/css/props/minWidth/minWidth.css.ts +0 -25
  751. package/src/css/props/minWidth/minWidth.ts +0 -8
  752. package/src/css/props/minWidth/types.ts +0 -9
  753. package/src/css/props/outline/outline.css.ts +0 -10
  754. package/src/css/props/outline/outline.ts +0 -8
  755. package/src/css/props/outline/types.ts +0 -7
  756. package/src/css/props/overflow/overflow.css.ts +0 -16
  757. package/src/css/props/overflow/overflow.ts +0 -8
  758. package/src/css/props/overflow/types.ts +0 -11
  759. package/src/css/props/padding/padding.css.ts +0 -87
  760. package/src/css/props/padding/padding.ts +0 -25
  761. package/src/css/props/padding/types.ts +0 -17
  762. package/src/css/props/pointerEvents/pointerEvents.css.ts +0 -13
  763. package/src/css/props/pointerEvents/pointerEvents.ts +0 -8
  764. package/src/css/props/pointerEvents/types.ts +0 -7
  765. package/src/css/props/position/position.css.ts +0 -22
  766. package/src/css/props/position/position.ts +0 -8
  767. package/src/css/props/position/types.ts +0 -9
  768. package/src/css/props/radius/radius.css.ts +0 -21
  769. package/src/css/props/radius/radius.ts +0 -8
  770. package/src/css/props/radius/types.ts +0 -8
  771. package/src/css/props/shadow/shadow.css.ts +0 -23
  772. package/src/css/props/shadow/shadow.ts +0 -8
  773. package/src/css/props/shadow/types.ts +0 -8
  774. package/src/css/props/textAlign/textAlign.css.ts +0 -22
  775. package/src/css/props/textAlign/textAlign.ts +0 -8
  776. package/src/css/props/textAlign/types.ts +0 -7
  777. package/src/css/props/textOverflow/textOverflow.css.ts +0 -19
  778. package/src/css/props/textOverflow/textOverflow.ts +0 -8
  779. package/src/css/props/textOverflow/types.ts +0 -12
  780. package/src/css/props/width/types.ts +0 -11
  781. package/src/css/props/width/width.css.ts +0 -31
  782. package/src/css/props/width/width.ts +0 -8
  783. package/src/css/theme/buildCSSTheme.ts +0 -492
  784. package/src/css/theme/defaultTheme.css.ts +0 -64
  785. package/src/css/types.ts +0 -431
  786. package/src/css/vars.css.ts +0 -680
  787. package/src/theme/_parseColorToken.ts +0 -180
  788. package/src/theme/buildTheme.ts +0 -32
  789. package/src/theme/constants.ts +0 -90
  790. package/src/theme/defaults/color.ts +0 -197
  791. package/src/theme/defaults/common.ts +0 -71
  792. package/src/theme/defaults/fonts.ts +0 -250
  793. package/src/theme/index.ts +0 -5
  794. package/src/theme/merge.ts +0 -24
  795. package/src/theme/resolveTokens.ts +0 -204
  796. package/src/theme/types.ts +0 -366
@@ -0,0 +1,15 @@
1
+ import type {PropDef} from '../types/PropDef'
2
+ import type {Responsive} from '../types/Responsive'
3
+
4
+ export type ZIndexProps = {
5
+ /** CSS z-index property */
6
+ zIndex?: Responsive<number>
7
+ }
8
+
9
+ export const zIndexProps: Record<string, PropDef> = {
10
+ zIndex: {
11
+ type: 'number',
12
+ className: 'z-index',
13
+ variable: '--z-index',
14
+ },
15
+ }
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ // No-op shim for `styles.css` in runtimes that do not import `.css` file
2
+ export default ''
@@ -0,0 +1,24 @@
1
+ import {existsSync} from 'node:fs'
2
+ import {createRequire} from 'node:module'
3
+ import {dirname, join} from 'node:path'
4
+
5
+ import {describe, expect, it} from 'vitest'
6
+
7
+ const require = createRequire(import.meta.url)
8
+
9
+ describe('@sanity/ui/styles.css', () => {
10
+ it('resolves to a Node-safe shim under the node condition', () => {
11
+ const path = require.resolve('@sanity/ui/styles.css')
12
+ expect(path).toMatch(/styles\.css\.node\.js$/)
13
+ })
14
+
15
+ it('imports without throwing in Node ESM', async () => {
16
+ const mod = await import('@sanity/ui/styles.css')
17
+ expect(mod.default).toBe('')
18
+ })
19
+
20
+ it('ships the real stylesheet for browser/style resolution', () => {
21
+ const pkgRoot = dirname(require.resolve('@sanity/ui/package.json'))
22
+ expect(existsSync(join(pkgRoot, 'dist/styles.css'))).toBe(true)
23
+ })
24
+ })
@@ -0,0 +1,8 @@
1
+ export const BUTTON_DENSITY = ['regular', 'loose'] as const
2
+ export type ButtonDensity = (typeof BUTTON_DENSITY)[number]
3
+
4
+ export const BUTTON_LEVEL = ['primary', 'secondary', 'tertiary'] as const
5
+ export type ButtonLevel = (typeof BUTTON_LEVEL)[number]
6
+
7
+ export const BUTTON_TONE = ['neutral', 'critical'] as const
8
+ export type ButtonTone = (typeof BUTTON_TONE)[number]
@@ -0,0 +1,6 @@
1
+ export const CODE_TAG = ['pre', 'span'] as const
2
+ export type CodeTag = (typeof CODE_TAG)[number]
3
+
4
+ export const CODE_SIZE = [0, 1, 2, 3, 4] as const
5
+ /** @public */
6
+ export type CodeSize = (typeof CODE_SIZE)[number]
@@ -0,0 +1,3 @@
1
+ export const CONTAINER_SIZE = [0, 1, 2, 3, 4, 5] as const
2
+ /** @public */
3
+ export type ContainerSize = (typeof CONTAINER_SIZE)[number]
@@ -0,0 +1,3 @@
1
+ export const DENSITY = ['compact', 'regular', 'loose'] as const
2
+ /** @public */
3
+ export type Density = (typeof DENSITY)[number]
@@ -0,0 +1,11 @@
1
+ export const DISPLAY_BLOCK = ['block', 'inline-block', 'none'] as const
2
+ /** @public */
3
+ export type DisplayBlock = (typeof DISPLAY_BLOCK)[number]
4
+
5
+ export const DISPLAY_FLEX = ['flex', 'inline-flex', 'none'] as const
6
+ /** @public */
7
+ export type DisplayFlex = (typeof DISPLAY_FLEX)[number]
8
+
9
+ export const DISPLAY_GRID = ['grid', 'inline-grid', 'none'] as const
10
+ /** @public */
11
+ export type DisplayGrid = (typeof DISPLAY_GRID)[number]
@@ -0,0 +1,3 @@
1
+ export const EYEBROW_SIZE = [0, 1, 2, 3, 4] as const
2
+ /** @public */
3
+ export type EyebrowSize = (typeof EYEBROW_SIZE)[number]
@@ -0,0 +1,22 @@
1
+ export const ALIGN_ITEMS = ['baseline', 'center', 'flex-end', 'flex-start', 'stretch'] as const
2
+ /** @public */
3
+ export type AlignItems = (typeof ALIGN_ITEMS)[number]
4
+
5
+ export const JUSTIFY_CONTENT = [
6
+ 'flex-start',
7
+ 'flex-end',
8
+ 'center',
9
+ 'space-between',
10
+ 'space-around',
11
+ 'space-evenly',
12
+ ] as const
13
+ /** @public */
14
+ export type JustifyContent = (typeof JUSTIFY_CONTENT)[number]
15
+
16
+ export const FLEX_DIRECTION = ['row', 'row-reverse', 'column', 'column-reverse'] as const
17
+ /** @public */
18
+ export type FlexDirection = (typeof FLEX_DIRECTION)[number]
19
+
20
+ export const FLEX_WRAP = ['wrap', 'wrap-reverse', 'nowrap'] as const
21
+ /** @public */
22
+ export type FlexWrap = (typeof FLEX_WRAP)[number]
@@ -0,0 +1,3 @@
1
+ export const FONT_WEIGHT = ['regular', 'medium', 'semibold', 'bold'] as const
2
+ /** @public */
3
+ export type FontWeight = (typeof FONT_WEIGHT)[number]
@@ -0,0 +1,3 @@
1
+ export const GRID_AUTO_FLOW = ['row', 'column', 'row dense', 'column dense', 'dense'] as const
2
+ /** @public */
3
+ export type GridAutoFlow = (typeof GRID_AUTO_FLOW)[number]
@@ -0,0 +1,6 @@
1
+ export const HEADING_TAG = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const
2
+ export type HeadingTag = (typeof HEADING_TAG)[number]
3
+
4
+ export const HEADING_SIZE = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] as const
5
+ /** @public */
6
+ export type HeadingSize = (typeof HEADING_SIZE)[number]
@@ -0,0 +1,3 @@
1
+ export const ICON_SIZE = [0, 1, 2, 3, 4] as const
2
+ /** @public */
3
+ export type IconSize = (typeof ICON_SIZE)[number]
@@ -0,0 +1,8 @@
1
+ export const INTERACTIVE_TAG = ['button', 'a'] as const
2
+ export type InteractiveTag = (typeof INTERACTIVE_TAG)[number]
3
+
4
+ export type InteractiveAs<T extends React.ElementType> = T extends InteractiveTag
5
+ ? T
6
+ : T extends string
7
+ ? never
8
+ : T
@@ -0,0 +1,2 @@
1
+ export const LIST_TAG = ['ol', 'ul'] as const
2
+ export type ListTag = (typeof LIST_TAG)[number]
@@ -0,0 +1,3 @@
1
+ export const OVERFLOW = ['visible', 'hidden', 'auto', 'scroll', 'clip'] as const
2
+ /** @public */
3
+ export type Overflow = (typeof OVERFLOW)[number]
@@ -0,0 +1,16 @@
1
+ export const PLACEMENT = [
2
+ 'top',
3
+ 'top-start',
4
+ 'top-end',
5
+ 'right',
6
+ 'right-start',
7
+ 'right-end',
8
+ 'bottom',
9
+ 'bottom-start',
10
+ 'bottom-end',
11
+ 'left',
12
+ 'left-start',
13
+ 'left-end',
14
+ ] as const
15
+ /** @public */
16
+ export type Placement = (typeof PLACEMENT)[number]
@@ -0,0 +1,3 @@
1
+ export const POSITION = ['absolute', 'fixed', 'relative', 'static', 'sticky'] as const
2
+ /** @public */
3
+ export type Position = (typeof POSITION)[number]
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Prop is a boolean. If used for styling, provide a className
3
+ * to apply CSS and an inverseClassName to reset it.
4
+ */
5
+ type BooleanPropDef = {
6
+ type: 'boolean'
7
+ className?: string
8
+ inverseClassName?: string
9
+ }
10
+
11
+ /**
12
+ * Prop is a number. If used for styling, provide a className
13
+ * that references the variable for dynamic values.
14
+ */
15
+ type NumberPropDef = {
16
+ type: 'number'
17
+ className?: string
18
+ variable?: string
19
+ }
20
+
21
+ /**
22
+ * Prop is a string. If used for styling, provide a className
23
+ * that references the variable for dynamic values.
24
+ */
25
+ type StringPropDef = {
26
+ type: 'string'
27
+ className?: string
28
+ variable?: string
29
+ }
30
+
31
+ /**
32
+ * Prop is a union of values. Values are always required. If
33
+ * used for styling, provide a className.
34
+ */
35
+ type UnionPropDef<T> = {
36
+ type: 'union'
37
+ className?: string
38
+ values: readonly T[]
39
+ }
40
+
41
+ /**
42
+ * Prop is a composite of other props. Requires a union of values and
43
+ * a composition object which defines the props and their mappings.
44
+ * The values should map to the composition object's mapping keys.
45
+ */
46
+ type CompositePropDef<T> = {
47
+ type: 'composite'
48
+ values: readonly T[]
49
+ composition: Record<
50
+ string,
51
+ {
52
+ propDef: PropDef
53
+ mapping: Record<T & PropertyKey, unknown>
54
+ }
55
+ >
56
+ }
57
+
58
+ /**
59
+ * Prop is a composite of other props. Requires a resolve callback with
60
+ * a value param that returns another prop def.
61
+ */
62
+ type ConditionalPropDef<T> = {
63
+ type: 'conditional'
64
+ resolve: (value: T) => PropDef<T>
65
+ }
66
+
67
+ export type PropDef<T = unknown> =
68
+ | BooleanPropDef
69
+ | NumberPropDef
70
+ | StringPropDef
71
+ | UnionPropDef<T>
72
+ | CompositePropDef<T>
73
+ | ConditionalPropDef<T>
@@ -0,0 +1,3 @@
1
+ export const RADIUS = [0, 1, 2, 3, 4, 5, 6, 'full'] as const
2
+ /** @public */
3
+ export type Radius = (typeof RADIUS)[number]
@@ -0,0 +1,10 @@
1
+ /** @public */
2
+ export type Responsive<T> =
3
+ | T
4
+ | []
5
+ | ([T | undefined | null, ...(T | undefined | null)[]] & {length: 1})
6
+ | ([T | undefined | null, ...(T | undefined | null)[]] & {length: 2})
7
+ | ([T | undefined | null, ...(T | undefined | null)[]] & {length: 3})
8
+ | ([T | undefined | null, ...(T | undefined | null)[]] & {length: 4})
9
+ | ([T | undefined | null, ...(T | undefined | null)[]] & {length: 5})
10
+ | ([T | undefined | null, ...(T | undefined | null)[]] & {length: 6})
@@ -0,0 +1,3 @@
1
+ export const SHADOW = [0, 1, 2, 3, 4, 5] as const
2
+ /** @public */
3
+ export type Shadow = (typeof SHADOW)[number]
@@ -0,0 +1,15 @@
1
+ export const SPACE = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] as const
2
+ /** @public */
3
+ export type Space = (typeof SPACE)[number]
4
+
5
+ export const SPACE_AUTO = [...SPACE, 'auto'] as const
6
+ /** @public */
7
+ export type SpaceAuto = (typeof SPACE_AUTO)[number]
8
+
9
+ export const SPACE_INHERIT = [...SPACE, 'inherit'] as const
10
+ /** @public */
11
+ export type SpaceInherit = (typeof SPACE_INHERIT)[number]
12
+
13
+ export const SPACE_AUTO_NEGATIVE = [-9, -8, -7, -6, -5, -4, -3, -2, -1, ...SPACE, 'auto'] as const
14
+ /** @public */
15
+ export type SpaceAutoNegative = (typeof SPACE_AUTO_NEGATIVE)[number]
@@ -0,0 +1,3 @@
1
+ export const TEXT_SIZE = [0, 1, 2, 3, 4] as const
2
+ /** @public */
3
+ export type TextSize = (typeof TEXT_SIZE)[number]
@@ -0,0 +1,3 @@
1
+ export const TEXT_ALIGN = ['left', 'center', 'right', 'justify'] as const
2
+ /** @public */
3
+ export type TextAlign = (typeof TEXT_ALIGN)[number]
@@ -0,0 +1,3 @@
1
+ export const TONE = ['neutral', 'positive', 'suggest', 'caution', 'critical'] as const
2
+ /** @public */
3
+ export type Tone = (typeof TONE)[number]
@@ -0,0 +1,156 @@
1
+ import {describe, expect, it} from 'vitest'
2
+
3
+ import {cardProps} from '../components/card/card.props'
4
+ import {layoutProps} from '../props/layout'
5
+ import {typographyProps} from '../props/typography'
6
+ import {getProps} from './getProps'
7
+
8
+ describe('getProps', () => {
9
+ it('generates className based on an union', () => {
10
+ const result = getProps({padding: 1}, layoutProps)
11
+ expect(result.className).toBe('sui-p1')
12
+ expect(result.style).toEqual({})
13
+ })
14
+
15
+ it('does not generate className based on union if value is unsupported', () => {
16
+ const result = getProps({padding: 10}, layoutProps)
17
+ expect(result.className).toBe('')
18
+ expect(result.style).toEqual({})
19
+ })
20
+
21
+ it('merges existing className', () => {
22
+ const result = getProps({className: 'test', padding: 1}, layoutProps)
23
+ expect(result.className).toBe('test sui-p1')
24
+ expect(result.style).toEqual({})
25
+ })
26
+
27
+ it('generates className and style based on a string', () => {
28
+ const result = getProps({width: '100px'}, layoutProps)
29
+ expect(result.className).toBe('sui-width')
30
+ expect(result.style).toEqual({'--width': '100px'})
31
+ })
32
+
33
+ it('merges existing style', () => {
34
+ const result = getProps({width: '100px', style: {display: 'block'}}, layoutProps)
35
+ expect(result.className).toBe('sui-width')
36
+ expect(result.style).toEqual({'--width': '100px', 'display': 'block'})
37
+ })
38
+
39
+ it('generates className based on a boolean', () => {
40
+ const result = getProps({border: true}, layoutProps)
41
+ expect(result.className).toBe('sui-border')
42
+ expect(result.style).toEqual({})
43
+ })
44
+
45
+ it('generates className based on a number', () => {
46
+ const result = getProps({flexGrow: 1.5}, layoutProps)
47
+ expect(result.className).toBe('sui-flex-grow')
48
+ expect(result.style).toEqual({'--flex-grow': 1.5})
49
+ })
50
+
51
+ it('generates className based on a composite', () => {
52
+ const result = getProps({density: 'regular'}, cardProps)
53
+ expect(result.className).toBe('sui-gap3 sui-p4 sui-radius3')
54
+ expect(result.style).toEqual({})
55
+ })
56
+
57
+ it('generates multiple classNames', () => {
58
+ const result = getProps({border: true, padding: 1}, layoutProps)
59
+ expect(result.className).toBe('sui-border sui-p1')
60
+ expect(result.style).toEqual({})
61
+ })
62
+
63
+ it('preserves undefined props', () => {
64
+ const result = getProps({padding: 1, id: 'test'}, layoutProps)
65
+ expect(result.className).toBe('sui-p1')
66
+ expect(result['id']).toEqual('test')
67
+ })
68
+
69
+ it('preserves non-styling props', () => {
70
+ const result = getProps({padding: 1, as: 'div'}, layoutProps)
71
+ expect(result.className).toBe('sui-p1')
72
+ expect(result.style).toEqual({})
73
+ expect(result['as']).toEqual('div')
74
+ })
75
+
76
+ it('preserves non-styling responsive props', () => {
77
+ const result = getProps({padding: 1, items: [{label: 'One'}, {label: 'Two'}]}, layoutProps)
78
+ expect(result.className).toBe('sui-p1')
79
+ expect(result.style).toEqual({})
80
+ expect(result['items']).toEqual([{label: 'One'}, {label: 'Two'}])
81
+ })
82
+
83
+ it('generates responsive className based on unions', () => {
84
+ const result = getProps({padding: [1, 2, 3]}, layoutProps)
85
+ expect(result.className).toBe('sui-p1 sui-p2-bp-1 sui-p3-bp-2')
86
+ expect(result.style).toEqual({})
87
+ })
88
+
89
+ it('generates responsive className and style based on strings', () => {
90
+ const result = getProps({width: ['100px', '200px', '300px']}, layoutProps)
91
+ expect(result.className).toBe('sui-width sui-width-bp-1 sui-width-bp-2')
92
+ expect(result.style).toEqual({
93
+ '--width': '100px',
94
+ '--width-bp-1': '200px',
95
+ '--width-bp-2': '300px',
96
+ })
97
+ })
98
+
99
+ it('generates responsive className based on booleans', () => {
100
+ const result = getProps({border: [true, false, true]}, layoutProps)
101
+ expect(result.className).toBe('sui-border sui-border-none-bp-1 sui-border-bp-2')
102
+ expect(result.style).toEqual({})
103
+ })
104
+
105
+ it('generates responsive className based on composites', () => {
106
+ const result = getProps({density: ['compact', 'regular']}, cardProps)
107
+ expect(result.className).toBe(
108
+ 'sui-gap2 sui-gap3-bp-1 sui-p3 sui-p4-bp-1 sui-radius2 sui-radius3-bp-1',
109
+ )
110
+ expect(result.style).toEqual({})
111
+ })
112
+
113
+ it('does not generate responsive className with more values than breakpoints', () => {
114
+ const result = getProps({padding: [1, 2, 3, 4, 5, 6, 7, 8]}, layoutProps)
115
+ expect(result.className).toBe(
116
+ 'sui-p1 sui-p2-bp-1 sui-p3-bp-2 sui-p4-bp-3 sui-p5-bp-4 sui-p6-bp-5',
117
+ )
118
+ expect(result.style).toEqual({})
119
+ })
120
+
121
+ it('generates responsive className with undefined values', () => {
122
+ const result = getProps({padding: [1, 2, undefined, 3]}, layoutProps)
123
+ expect(result.className).toBe('sui-p1 sui-p2-bp-1 sui-p3-bp-3')
124
+ expect(result.style).toEqual({})
125
+ })
126
+
127
+ it('generates responsive className with null values', () => {
128
+ const result = getProps({padding: [1, 2, null, 3]}, layoutProps)
129
+ expect(result.className).toBe('sui-p1 sui-p2-bp-1 sui-p3-bp-3')
130
+ expect(result.style).toEqual({})
131
+ })
132
+
133
+ it('generates responsive className without unsupported values', () => {
134
+ const result = getProps({padding: [1, 2, 10, 3]}, layoutProps)
135
+ expect(result.className).toBe('sui-p1 sui-p2-bp-1 sui-p3-bp-3')
136
+ expect(result.style).toEqual({})
137
+ })
138
+
139
+ it('generates className based on a conditional', () => {
140
+ const result = getProps({truncate: 1}, typographyProps)
141
+ expect(result.className).toBe('sui-text-overflow')
142
+ expect(result.style).toEqual({})
143
+ })
144
+
145
+ it('generates className and style based on a conditional', () => {
146
+ const result = getProps({truncate: 3}, typographyProps)
147
+ expect(result.className).toBe('sui-line-clamp')
148
+ expect(result.style).toEqual({'--line-clamp': 3})
149
+ })
150
+
151
+ it('generates responsive className and style based on a conditional', () => {
152
+ const result = getProps({truncate: [1, 3]}, typographyProps)
153
+ expect(result.className).toBe('sui-text-overflow sui-line-clamp-bp-1')
154
+ expect(result.style).toEqual({'--line-clamp-bp-1': 3})
155
+ })
156
+ })
@@ -0,0 +1,156 @@
1
+ import clsx from 'clsx'
2
+
3
+ import {type PropDef} from '../types/PropDef'
4
+
5
+ const PREFIX = 'sui'
6
+ const BREAKPOINTS_LENGTH = 6
7
+
8
+ interface ComponentProps {
9
+ className?: string | undefined
10
+ style?: React.CSSProperties | undefined
11
+ [key: string]: any
12
+ }
13
+
14
+ export function getProps(
15
+ componentProps?: ComponentProps,
16
+ propDefs?: Record<string, PropDef>,
17
+ ): ComponentProps {
18
+ const {allComponentProps, allPropDefs} = flattenCompositeProps(componentProps, propDefs)
19
+ const restProps: ComponentProps = {}
20
+ let className = componentProps?.className || ''
21
+ let style = componentProps?.style || {}
22
+
23
+ for (const key in allComponentProps) {
24
+ const propDef = allPropDefs?.[key]
25
+ const propValue = allComponentProps[key]
26
+
27
+ if (
28
+ !((propDef && 'className' in propDef && propDef.className) || propDef?.type === 'conditional')
29
+ ) {
30
+ restProps[key] = propValue
31
+ continue
32
+ }
33
+
34
+ if (Array.isArray(propValue)) {
35
+ // @TODO: consider fixing this O(n^2) time complexity
36
+ // oxlint-disable-next-line no-accumulating-spread
37
+ for (let i = 0, len = Math.min(propValue.length, BREAKPOINTS_LENGTH); i < len; i++) {
38
+ const resolvedPropDef = getResolvedPropDef(propValue[i], propDef)
39
+
40
+ if (!resolvedPropDef) {
41
+ continue
42
+ }
43
+
44
+ className = clsx(className, getClassName(propValue[i], resolvedPropDef, i))
45
+ style = {...style, ...getStyle(propValue[i], resolvedPropDef, i)}
46
+ }
47
+ } else {
48
+ const resolvedPropDef = getResolvedPropDef(propValue, propDef)
49
+
50
+ if (!resolvedPropDef) {
51
+ restProps[key] = propValue
52
+ continue
53
+ }
54
+
55
+ className = clsx(className, getClassName(propValue, resolvedPropDef))
56
+ style = {...style, ...getStyle(propValue, resolvedPropDef)}
57
+ }
58
+ }
59
+
60
+ return {...restProps, className, style}
61
+ }
62
+
63
+ function getResolvedPropDef(propValue: any, propDef?: PropDef) {
64
+ if (propDef?.type !== 'conditional') {
65
+ return propDef
66
+ }
67
+
68
+ const resolvedPropDef = propDef.resolve(propValue)
69
+
70
+ if (!(resolvedPropDef && 'className' in resolvedPropDef && resolvedPropDef.className)) {
71
+ return null
72
+ }
73
+
74
+ return resolvedPropDef
75
+ }
76
+
77
+ function getClassName(propValue: any, propDef: PropDef, bp?: number) {
78
+ if (propDef.type === 'union' && propDef.values?.includes(propValue)) {
79
+ /* Note: This may need updating depending on the final CSS classname formatting */
80
+ return `${PREFIX}-${propDef.className}${typeof propValue === 'string' ? `-${propValue}` : propValue}${bp ? `-bp-${bp}` : ''}`
81
+ }
82
+
83
+ if (propDef.type === 'string' || propDef.type === 'number') {
84
+ return `${PREFIX}-${propDef.className}${bp ? `-bp-${bp}` : ''}`
85
+ }
86
+
87
+ if (propDef.type === 'boolean') {
88
+ if (propValue) {
89
+ return `${PREFIX}-${propDef.className}${bp ? `-bp-${bp}` : ''}`
90
+ }
91
+
92
+ if (!propValue && propDef.inverseClassName) {
93
+ return `${PREFIX}-${propDef.inverseClassName}${bp ? `-bp-${bp}` : ''}`
94
+ }
95
+ }
96
+
97
+ return ''
98
+ }
99
+
100
+ function getStyle(propValue: any, propDef: PropDef, bp?: number) {
101
+ if ((propDef.type === 'string' || propDef.type === 'number') && propDef.variable) {
102
+ return {
103
+ [`${propDef.variable}${bp ? `-bp-${bp}` : ''}`]: propValue,
104
+ }
105
+ }
106
+
107
+ return {}
108
+ }
109
+
110
+ export function flattenCompositeProps(
111
+ componentProps?: ComponentProps,
112
+ propDefs?: Record<string, PropDef>,
113
+ ) {
114
+ const props = {
115
+ allComponentProps: {} as ComponentProps,
116
+ allPropDefs: {} as Record<string, PropDef>,
117
+ }
118
+
119
+ for (const key in componentProps) {
120
+ if (propDefs?.[key] && propDefs?.[key].type === 'composite') {
121
+ for (const compositeKey in propDefs?.[key].composition) {
122
+ const compositeValue = getCompositeValue(componentProps[key], propDefs[key], compositeKey)
123
+
124
+ props.allComponentProps[compositeKey] = compositeValue
125
+ props.allPropDefs[compositeKey] = propDefs[key].composition[compositeKey]
126
+ ?.propDef as PropDef
127
+ }
128
+ } else {
129
+ props.allComponentProps[key] = componentProps[key]
130
+ props.allPropDefs[key] = propDefs?.[key] as PropDef
131
+ }
132
+ }
133
+
134
+ return props
135
+ }
136
+
137
+ function getCompositeValue(propValue: any, propDef: PropDef, key: string) {
138
+ if (!('composition' in propDef)) {
139
+ return
140
+ }
141
+
142
+ const mapping = propDef.composition[key]?.['mapping']
143
+ let compositeValue
144
+
145
+ if (Array.isArray(propValue)) {
146
+ compositeValue = []
147
+
148
+ for (let i = 0, len = propValue.length; i < len; i++) {
149
+ compositeValue[i] = mapping?.[propValue[i]]
150
+ }
151
+ } else {
152
+ compositeValue = mapping?.[propValue]
153
+ }
154
+
155
+ return compositeValue
156
+ }
@@ -0,0 +1,5 @@
1
+ import {HASH} from '../version'
2
+
3
+ export function suffixClassName(className: string) {
4
+ return `${className}-${HASH}`
5
+ }
package/src/version.ts ADDED
@@ -0,0 +1,3 @@
1
+ // This file is generated by scripts/write-version.js. Do not edit.
2
+ export const VERSION = '500alpha2'
3
+ export const HASH = 'eaf84d'
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Sanity.io
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.