@sanity/ui 3.0.0-static.33 → 3.0.0-static.34

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 (580) hide show
  1. package/README.md +1 -1
  2. package/dist/_chunks-cjs/_visual-editing.cjs +263 -375
  3. package/dist/_chunks-cjs/_visual-editing.cjs.map +1 -1
  4. package/dist/_chunks-cjs/refractor.cjs.map +1 -1
  5. package/dist/_chunks-es/_visual-editing.js +263 -377
  6. package/dist/_chunks-es/_visual-editing.js.map +1 -1
  7. package/dist/_chunks-es/refractor.js.map +1 -1
  8. package/dist/_visual-editing.cjs +0 -2
  9. package/dist/_visual-editing.cjs.map +1 -1
  10. package/dist/_visual-editing.d.cts +2 -904
  11. package/dist/_visual-editing.d.ts +2 -904
  12. package/dist/_visual-editing.js +2 -4
  13. package/dist/css/index.cjs +12 -12
  14. package/dist/css/index.cjs.map +1 -1
  15. package/dist/css/index.css +1 -1
  16. package/dist/css/index.d.cts +805 -14697
  17. package/dist/css/index.d.ts +805 -14697
  18. package/dist/css/index.js +12 -12
  19. package/dist/css/index.js.map +1 -1
  20. package/dist/index.cjs +241 -366
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.cts +990 -3095
  23. package/dist/index.d.ts +990 -3095
  24. package/dist/index.js +243 -360
  25. package/dist/index.js.map +1 -1
  26. package/dist/portalProvider-DgNIVviV.d.ts +575 -0
  27. package/dist/theme.cjs +367 -4288
  28. package/dist/theme.cjs.map +1 -1
  29. package/dist/theme.d.cts +272 -1806
  30. package/dist/theme.d.ts +272 -1806
  31. package/dist/theme.js +371 -4292
  32. package/dist/theme.js.map +1 -1
  33. package/exports/_visual-editing.ts +0 -2
  34. package/package.json +3 -4
  35. package/src/core/Root.tsx +4 -2
  36. package/src/core/RootProvider.tsx +4 -4
  37. package/src/core/__workshop__/boundary.tsx +1 -1
  38. package/src/core/__workshop__/index.ts +5 -3
  39. package/src/core/components/autocomplete/__workshop__/async.tsx +1 -1
  40. package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +2 -2
  41. package/src/core/components/autocomplete/__workshop__/custom.tsx +2 -2
  42. package/src/core/components/autocomplete/__workshop__/example.tsx +2 -2
  43. package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +1 -1
  44. package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +1 -1
  45. package/src/core/components/autocomplete/__workshop__/index.ts +5 -3
  46. package/src/core/components/autocomplete/__workshop__/mock/apiStore.ts +1 -1
  47. package/src/core/components/autocomplete/__workshop__/mock/countries.ts +1 -1
  48. package/src/core/components/autocomplete/autocomplete.tsx +2 -2
  49. package/src/core/components/autocomplete/autocompleteOption.tsx +2 -2
  50. package/src/core/components/autocomplete/constants.ts +2 -2
  51. package/src/core/components/breadcrumbs/__workshop__/example.tsx +1 -1
  52. package/src/core/components/breadcrumbs/__workshop__/index.ts +5 -3
  53. package/src/core/components/breadcrumbs/breadcrumbs.tsx +6 -11
  54. package/src/core/components/dialog/__workshop__/activate.tsx +1 -1
  55. package/src/core/components/dialog/__workshop__/autoFocus.tsx +1 -1
  56. package/src/core/components/dialog/__workshop__/index.ts +5 -3
  57. package/src/core/components/dialog/__workshop__/layering.tsx +1 -1
  58. package/src/core/components/dialog/__workshop__/nested.tsx +2 -3
  59. package/src/core/components/dialog/__workshop__/onScroll.tsx +1 -1
  60. package/src/core/components/dialog/__workshop__/panes.tsx +1 -1
  61. package/src/core/components/dialog/__workshop__/position.tsx +1 -1
  62. package/src/core/components/dialog/__workshop__/props.tsx +1 -1
  63. package/src/core/components/dialog/__workshop__/provider.tsx +1 -1
  64. package/src/core/components/dialog/__workshop__/wrapped.tsx +1 -1
  65. package/src/core/components/dialog/dialog.tsx +5 -6
  66. package/src/core/components/dialog/dialogCard.tsx +2 -2
  67. package/src/core/components/dialog/dialogContext.ts +3 -4
  68. package/src/core/components/dialog/dialogProvider.tsx +2 -2
  69. package/src/core/components/hotkeys/__workshop__/index.ts +5 -3
  70. package/src/core/components/hotkeys/__workshop__/plain.tsx +1 -1
  71. package/src/core/components/hotkeys/hotkeys.tsx +4 -15
  72. package/src/core/components/menu/__workshop__/asComponent.tsx +1 -1
  73. package/src/core/components/menu/__workshop__/avatarMenu.tsx +1 -1
  74. package/src/core/components/menu/__workshop__/closableMenuButton.tsx +1 -1
  75. package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +3 -3
  76. package/src/core/components/menu/__workshop__/customMenuItem.tsx +1 -1
  77. package/src/core/components/menu/__workshop__/customSelectedState.tsx +1 -1
  78. package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +1 -1
  79. package/src/core/components/menu/__workshop__/groups.tsx +1 -1
  80. package/src/core/components/menu/__workshop__/index.ts +5 -3
  81. package/src/core/components/menu/__workshop__/menuButton.tsx +2 -2
  82. package/src/core/components/menu/__workshop__/menuGroupRight.tsx +1 -1
  83. package/src/core/components/menu/__workshop__/nestedMenu.tsx +1 -1
  84. package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +1 -1
  85. package/src/core/components/menu/__workshop__/selectedItem.tsx +1 -1
  86. package/src/core/components/menu/__workshop__/shouldFocus.tsx +1 -1
  87. package/src/core/components/menu/__workshop__/tones.tsx +3 -3
  88. package/src/core/components/menu/__workshop__/withoutArrow.tsx +1 -1
  89. package/src/core/components/menu/menu.test.tsx +2 -1
  90. package/src/core/components/menu/menu.tsx +7 -22
  91. package/src/core/components/menu/menuButton.tsx +4 -50
  92. package/src/core/components/menu/menuContext.ts +3 -15
  93. package/src/core/components/menu/menuDivider.tsx +2 -2
  94. package/src/core/components/menu/menuGroup.tsx +10 -15
  95. package/src/core/components/menu/menuItem.tsx +7 -18
  96. package/src/core/components/tab/__workshop__/example.tsx +1 -1
  97. package/src/core/components/tab/__workshop__/index.ts +5 -3
  98. package/src/core/components/tab/tab.tsx +6 -4
  99. package/src/core/components/tab/tabList.tsx +3 -8
  100. package/src/core/components/tab/tabPanel.tsx +2 -2
  101. package/src/core/components/toast/__workshop__/hook.tsx +1 -1
  102. package/src/core/components/toast/__workshop__/index.ts +5 -3
  103. package/src/core/components/toast/__workshop__/toast.tsx +1 -1
  104. package/src/core/components/toast/toast.test.tsx +2 -1
  105. package/src/core/components/toast/toast.tsx +2 -2
  106. package/src/core/components/toast/toastContext.ts +4 -4
  107. package/src/core/components/toast/toastLayer.tsx +3 -3
  108. package/src/core/components/tree/__workshop__/basic.perf.ts +1 -1
  109. package/src/core/components/tree/__workshop__/basic.tsx +1 -1
  110. package/src/core/components/tree/__workshop__/index.ts +5 -3
  111. package/src/core/components/tree/__workshop__/tabFromElement.tsx +1 -1
  112. package/src/core/components/tree/tree.tsx +8 -9
  113. package/src/core/components/tree/treeContext.ts +4 -4
  114. package/src/core/components/tree/treeGroup.tsx +6 -8
  115. package/src/core/components/tree/treeItem.tsx +4 -4
  116. package/src/core/components/tree/types.ts +1 -1
  117. package/src/core/components/virtualList/__workshop__/changingProps.tsx +1 -1
  118. package/src/core/components/virtualList/__workshop__/elementScroll.tsx +1 -1
  119. package/src/core/components/virtualList/__workshop__/index.ts +5 -3
  120. package/src/core/components/virtualList/__workshop__/infiniteList.tsx +1 -1
  121. package/src/core/components/virtualList/__workshop__/windowScrolll.tsx +1 -1
  122. package/src/core/components/virtualList/virtualList.tsx +2 -2
  123. package/src/core/constants.ts +0 -18
  124. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +5 -3
  125. package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +1 -1
  126. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +6 -1
  127. package/src/core/index.ts +1 -24
  128. package/src/core/lib/createGlobalScopedContext.ts +1 -1
  129. package/src/core/lib/globalScope.ts +1 -1
  130. package/src/core/observers/elementSize.ts +1 -1
  131. package/src/core/primitives/arrow/arrow.tsx +2 -2
  132. package/src/core/primitives/avatar/__workshop__/asButton.tsx +1 -1
  133. package/src/core/primitives/avatar/__workshop__/index.ts +5 -3
  134. package/src/core/primitives/avatar/__workshop__/stack.tsx +1 -1
  135. package/src/core/primitives/avatar/__workshop__/withinButton.tsx +1 -1
  136. package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +1 -1
  137. package/src/core/primitives/avatar/avatar.tsx +3 -10
  138. package/src/core/primitives/avatar/avatarCounter.tsx +2 -2
  139. package/src/core/primitives/avatar/avatarStack.tsx +2 -4
  140. package/src/core/primitives/avatar/types.ts +0 -32
  141. package/src/core/primitives/badge/__workshop__/index.ts +5 -3
  142. package/src/core/primitives/badge/__workshop__/props.tsx +1 -1
  143. package/src/core/primitives/badge/__workshop__/tones.tsx +3 -3
  144. package/src/core/primitives/badge/badge.test.tsx +2 -1
  145. package/src/core/primitives/badge/badge.tsx +12 -11
  146. package/src/core/primitives/box/__workshop__/index.ts +5 -3
  147. package/src/core/primitives/box/__workshop__/props.tsx +1 -1
  148. package/src/core/primitives/box/__workshop__/responsive.tsx +1 -1
  149. package/src/core/primitives/box/box.tsx +28 -32
  150. package/src/core/primitives/button/__workshop__/custom.tsx +5 -5
  151. package/src/core/primitives/button/__workshop__/customIcons.tsx +1 -1
  152. package/src/core/primitives/button/__workshop__/disabled.tsx +3 -3
  153. package/src/core/primitives/button/__workshop__/index.ts +5 -3
  154. package/src/core/primitives/button/__workshop__/mixedChildren.tsx +1 -1
  155. package/src/core/primitives/button/__workshop__/props.tsx +1 -1
  156. package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +1 -1
  157. package/src/core/primitives/button/__workshop__/stacked.tsx +1 -1
  158. package/src/core/primitives/button/__workshop__/styled1.tsx +1 -1
  159. package/src/core/primitives/button/__workshop__/styled2.tsx +1 -1
  160. package/src/core/primitives/button/__workshop__/textOverflow.tsx +1 -1
  161. package/src/core/primitives/button/__workshop__/uploadButton.tsx +1 -1
  162. package/src/core/primitives/button/button.test.tsx +2 -1
  163. package/src/core/primitives/button/button.tsx +4 -7
  164. package/src/core/primitives/button/types.ts +0 -20
  165. package/src/core/primitives/card/__workshop__/asButton.tsx +2 -2
  166. package/src/core/primitives/card/__workshop__/asComponent.tsx +1 -1
  167. package/src/core/primitives/card/__workshop__/checkered.tsx +3 -3
  168. package/src/core/primitives/card/__workshop__/index.ts +5 -3
  169. package/src/core/primitives/card/__workshop__/interactive.tsx +1 -1
  170. package/src/core/primitives/card/__workshop__/listNavigation.tsx +1 -1
  171. package/src/core/primitives/card/__workshop__/props.tsx +1 -1
  172. package/src/core/primitives/card/__workshop__/selected.tsx +1 -1
  173. package/src/core/primitives/card/__workshop__/styled.tsx +1 -1
  174. package/src/core/primitives/card/__workshop__/tones.tsx +3 -3
  175. package/src/core/primitives/card/card.tsx +4 -2
  176. package/src/core/primitives/card/cardContext.ts +1 -1
  177. package/src/core/primitives/card/cardProvider.tsx +4 -4
  178. package/src/core/primitives/card/types.ts +5 -19
  179. package/src/core/primitives/checkbox/__workshop__/example.tsx +1 -1
  180. package/src/core/primitives/checkbox/__workshop__/index.ts +5 -3
  181. package/src/core/primitives/checkbox/__workshop__/props.tsx +1 -1
  182. package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +1 -1
  183. package/src/core/primitives/checkbox/__workshop__/tones.tsx +3 -3
  184. package/src/core/primitives/checkbox/checkbox.tsx +2 -2
  185. package/src/core/primitives/code/__workshop__/index.ts +5 -3
  186. package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +1 -1
  187. package/src/core/primitives/code/__workshop__/props.tsx +1 -1
  188. package/src/core/primitives/code/code.tsx +4 -2
  189. package/src/core/primitives/code/refractor.tsx +1 -1
  190. package/src/core/primitives/container/__workshop__/example.tsx +1 -1
  191. package/src/core/primitives/container/__workshop__/index.ts +5 -3
  192. package/src/core/primitives/container/container.tsx +2 -2
  193. package/src/core/primitives/flex/__workshop__/example.tsx +1 -1
  194. package/src/core/primitives/flex/__workshop__/gap.tsx +1 -1
  195. package/src/core/primitives/flex/__workshop__/index.ts +5 -3
  196. package/src/core/primitives/flex/flex.tsx +4 -2
  197. package/src/core/primitives/grid/__workshop__/index.ts +5 -3
  198. package/src/core/primitives/grid/__workshop__/responsive.tsx +3 -3
  199. package/src/core/primitives/grid/grid.tsx +4 -2
  200. package/src/core/primitives/heading/__workshop__/index.ts +5 -3
  201. package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +1 -1
  202. package/src/core/primitives/heading/__workshop__/plain.tsx +1 -1
  203. package/src/core/primitives/heading/heading.tsx +2 -4
  204. package/src/core/primitives/inline/__workshop__/index.ts +5 -3
  205. package/src/core/primitives/inline/__workshop__/plain.tsx +1 -1
  206. package/src/core/primitives/inline/inline.tsx +4 -11
  207. package/src/core/primitives/kbd/__workshop__/index.ts +5 -3
  208. package/src/core/primitives/kbd/__workshop__/plain.tsx +1 -1
  209. package/src/core/primitives/kbd/kbd.tsx +4 -2
  210. package/src/core/primitives/label/__workshop__/index.ts +5 -3
  211. package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +1 -1
  212. package/src/core/primitives/label/__workshop__/plain.tsx +1 -1
  213. package/src/core/primitives/label/label.tsx +2 -4
  214. package/src/core/primitives/layer/__workshop__/_debug.tsx +1 -1
  215. package/src/core/primitives/layer/__workshop__/index.ts +5 -3
  216. package/src/core/primitives/layer/__workshop__/multipleRoots.tsx +1 -1
  217. package/src/core/primitives/layer/__workshop__/nested.tsx +1 -1
  218. package/src/core/primitives/layer/__workshop__/responsiveZOffset.tsx +1 -1
  219. package/src/core/primitives/layer/layer.test.tsx +2 -1
  220. package/src/core/primitives/layer/layer.tsx +2 -2
  221. package/src/core/primitives/layer/layerCard.tsx +2 -2
  222. package/src/core/primitives/layer/layerContext.ts +4 -4
  223. package/src/core/primitives/layer/layerProvider.tsx +2 -10
  224. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +2 -2
  225. package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +1 -1
  226. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +1 -1
  227. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +1 -1
  228. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +2 -2
  229. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +3 -3
  230. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +3 -3
  231. package/src/core/primitives/popover/__workshop__/index.ts +5 -3
  232. package/src/core/primitives/popover/popover.tsx +4 -9
  233. package/src/core/primitives/popover/popoverLayer.tsx +2 -2
  234. package/src/core/primitives/radio/__workshop__/example.tsx +1 -1
  235. package/src/core/primitives/radio/__workshop__/index.ts +5 -3
  236. package/src/core/primitives/radio/__workshop__/plain.tsx +1 -1
  237. package/src/core/primitives/radio/radio.tsx +2 -2
  238. package/src/core/primitives/select/__workshop__/index.ts +5 -3
  239. package/src/core/primitives/select/__workshop__/plain.tsx +1 -1
  240. package/src/core/primitives/select/__workshop__/readOnly.tsx +1 -1
  241. package/src/core/primitives/select/select.tsx +5 -15
  242. package/src/core/primitives/selectable/selectable.tsx +4 -4
  243. package/src/core/primitives/skeleton/__workshop__/delay.tsx +1 -1
  244. package/src/core/primitives/skeleton/__workshop__/index.ts +5 -3
  245. package/src/core/primitives/skeleton/__workshop__/skeleton.tsx +2 -2
  246. package/src/core/primitives/skeleton/codeSkeleton.tsx +2 -2
  247. package/src/core/primitives/skeleton/headingSkeleton.tsx +2 -2
  248. package/src/core/primitives/skeleton/labelSkeleton.tsx +2 -2
  249. package/src/core/primitives/skeleton/skeleton.tsx +2 -2
  250. package/src/core/primitives/skeleton/textSkeleton.tsx +2 -2
  251. package/src/core/primitives/spinner/__workshop__/Props.tsx +1 -1
  252. package/src/core/primitives/spinner/__workshop__/index.ts +5 -3
  253. package/src/core/primitives/spinner/animatedSpinnerIcon.tsx +2 -2
  254. package/src/core/primitives/spinner/spinner.tsx +2 -2
  255. package/src/core/primitives/srOnly/srOnly.tsx +2 -2
  256. package/src/core/primitives/stack/__workshop__/index.ts +5 -3
  257. package/src/core/primitives/stack/__workshop__/plain.tsx +1 -1
  258. package/src/core/primitives/stack/stack.tsx +5 -10
  259. package/src/core/primitives/switch/__workshop__/example.tsx +1 -1
  260. package/src/core/primitives/switch/__workshop__/index.ts +5 -3
  261. package/src/core/primitives/switch/__workshop__/props.tsx +1 -1
  262. package/src/core/primitives/switch/switch.tsx +2 -2
  263. package/src/core/primitives/text/__workshop__/colored.tsx +1 -1
  264. package/src/core/primitives/text/__workshop__/example.tsx +1 -1
  265. package/src/core/primitives/text/__workshop__/index.ts +5 -3
  266. package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +1 -1
  267. package/src/core/primitives/text/text.tsx +4 -4
  268. package/src/core/primitives/textArea/__workshop__/index.ts +5 -3
  269. package/src/core/primitives/textArea/__workshop__/plain.tsx +1 -1
  270. package/src/core/primitives/textArea/textArea.tsx +5 -15
  271. package/src/core/primitives/textInput/__workshop__/clearButton.tsx +1 -1
  272. package/src/core/primitives/textInput/__workshop__/customValidity.tsx +1 -1
  273. package/src/core/primitives/textInput/__workshop__/index.ts +5 -3
  274. package/src/core/primitives/textInput/__workshop__/plain.tsx +1 -1
  275. package/src/core/primitives/textInput/__workshop__/readOnly.tsx +1 -1
  276. package/src/core/primitives/textInput/__workshop__/states.tsx +1 -1
  277. package/src/core/primitives/textInput/__workshop__/tones.tsx +1 -1
  278. package/src/core/primitives/textInput/__workshop__/typed.tsx +1 -1
  279. package/src/core/primitives/textInput/textInput.tsx +6 -9
  280. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +1 -1
  281. package/src/core/primitives/tooltip/__workshop__/index.ts +5 -3
  282. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +1 -1
  283. package/src/core/primitives/tooltip/__workshop__/props.tsx +1 -1
  284. package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +1 -1
  285. package/src/core/primitives/tooltip/constants.ts +1 -1
  286. package/src/core/primitives/tooltip/tooltip.test.tsx +2 -4
  287. package/src/core/primitives/tooltip/tooltip.tsx +5 -9
  288. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +4 -2
  289. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +5 -3
  290. package/src/core/primitives/tooltip/tooltipLayer.tsx +2 -2
  291. package/src/core/{types/props.ts → types.ts} +27 -0
  292. package/src/core/utils/boundaryElement/__workshop__/index.ts +5 -3
  293. package/src/core/utils/boundaryElement/__workshop__/plain.tsx +1 -1
  294. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +2 -1
  295. package/src/core/utils/boundaryElement/boundaryElementContext.ts +7 -4
  296. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +2 -2
  297. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +1 -1
  298. package/src/core/utils/elementQuery/__workshop__/index.ts +5 -3
  299. package/src/core/utils/elementQuery/elementQuery.tsx +2 -2
  300. package/src/core/utils/getElementRef.ts +1 -1
  301. package/src/core/utils/portal/__workshop__/index.ts +5 -3
  302. package/src/core/utils/portal/__workshop__/named.tsx +1 -1
  303. package/src/core/utils/portal/portal.test.tsx +2 -1
  304. package/src/core/utils/portal/portalContext.ts +5 -2
  305. package/src/core/utils/portal/portalProvider.tsx +5 -9
  306. package/src/css/_responsiveClassName.ts +2 -2
  307. package/src/css/_style.css.ts +1 -1
  308. package/src/css/components/breadcrumbs/breadcrumbs.css.ts +1 -1
  309. package/src/css/components/dialog/dialog.css.ts +9 -17
  310. package/src/css/components/menu/menu.css.ts +2 -2
  311. package/src/css/components/menu/menu.ts +2 -2
  312. package/src/css/components/skeleton/skeleton.css.ts +2 -6
  313. package/src/css/components/toast/toast.css.ts +2 -2
  314. package/src/css/components/toast/toast.ts +2 -2
  315. package/src/css/components/tree/tree.css.ts +1 -1
  316. package/src/css/components/tree/tree.ts +1 -1
  317. package/src/css/defaultTheme.css.ts +59 -60
  318. package/src/css/layers.css.ts +4 -1
  319. package/src/css/primitives/_arrow/_arrow.css.ts +5 -5
  320. package/src/css/primitives/_input/_input.css.ts +4 -4
  321. package/src/css/primitives/_selectable/_selectable.css.ts +4 -4
  322. package/src/css/primitives/_selectable/types.ts +2 -2
  323. package/src/css/primitives/avatar/avatar.css.ts +10 -10
  324. package/src/css/primitives/badge/badge.css.ts +4 -4
  325. package/src/css/primitives/badge/types.ts +8 -2
  326. package/src/css/primitives/box/box.css.ts +2 -2
  327. package/src/css/primitives/button/button.css.ts +6 -6
  328. package/src/css/primitives/button/button.ts +2 -2
  329. package/src/css/primitives/button/types.ts +3 -3
  330. package/src/css/primitives/card/__workshop__/color.tsx +9 -9
  331. package/src/css/primitives/card/__workshop__/index.ts +5 -3
  332. package/src/css/primitives/card/card.css.ts +12 -18
  333. package/src/css/primitives/card/types.ts +3 -3
  334. package/src/css/primitives/checkbox/checkbox.css.ts +3 -3
  335. package/src/css/primitives/checkbox/checkbox.ts +3 -3
  336. package/src/css/primitives/code/code.css.ts +4 -3
  337. package/src/css/primitives/code/types.ts +3 -4
  338. package/src/css/primitives/container/container.css.ts +1 -1
  339. package/src/css/primitives/heading/heading.css.ts +5 -4
  340. package/src/css/primitives/heading/types.ts +3 -6
  341. package/src/css/primitives/kbd/kbd.css.ts +1 -1
  342. package/src/css/primitives/label/label.css.ts +5 -4
  343. package/src/css/primitives/label/types.ts +0 -8
  344. package/src/css/primitives/popover/popover.css.ts +2 -2
  345. package/src/css/primitives/popover/popover.ts +2 -2
  346. package/src/css/primitives/radio/radio.css.ts +3 -3
  347. package/src/css/primitives/radio/radio.ts +3 -3
  348. package/src/css/primitives/root/root.css.ts +1 -1
  349. package/src/css/primitives/root/root.ts +1 -1
  350. package/src/css/primitives/root/types.ts +3 -3
  351. package/src/css/primitives/select/select.css.ts +3 -3
  352. package/src/css/primitives/spinner/spinner.css.ts +2 -6
  353. package/src/css/primitives/spinner/spinner.ts +2 -2
  354. package/src/css/primitives/srOnly/srOnly.css.ts +1 -1
  355. package/src/css/primitives/srOnly/srOnly.ts +1 -1
  356. package/src/css/primitives/stack/stack.css.ts +1 -1
  357. package/src/css/primitives/stack/stack.ts +1 -1
  358. package/src/css/primitives/switch/switch.css.ts +5 -5
  359. package/src/css/primitives/text/text.css.ts +5 -4
  360. package/src/css/primitives/text/types.ts +3 -5
  361. package/src/css/primitives/textArea/textArea.css.ts +1 -1
  362. package/src/css/primitives/textInput/textInput.css.ts +4 -4
  363. package/src/css/primitives/tooltip/tooltip.css.ts +1 -1
  364. package/src/css/props/alignItems/alignItems.ts +1 -1
  365. package/src/css/props/border/border.ts +1 -16
  366. package/src/css/props/boxSizing/boxSizing.css.ts +2 -1
  367. package/src/css/props/boxSizing/boxSizing.ts +0 -3
  368. package/src/css/props/display/display.ts +1 -10
  369. package/src/css/props/flex/flex.ts +1 -1
  370. package/src/css/props/flexDirection/flexDirection.ts +1 -1
  371. package/src/css/props/flexWrap/flexWrap.ts +1 -1
  372. package/src/css/props/font/font.css.ts +3 -2
  373. package/src/css/props/font/font.ts +1 -1
  374. package/src/css/props/gap/gap.ts +1 -1
  375. package/src/css/props/gridAutoColumns/gridAutoColumns.css.ts +2 -2
  376. package/src/css/props/gridAutoColumns/gridAutoColumns.ts +2 -2
  377. package/src/css/props/gridAutoColumns/types.ts +0 -10
  378. package/src/css/props/gridAutoFlow/gridAutoFlow.ts +2 -2
  379. package/src/css/props/gridAutoFlow/types.ts +0 -4
  380. package/src/css/props/gridAutoRows/gridAutoRows.ts +2 -2
  381. package/src/css/props/gridAutoRows/types.ts +0 -4
  382. package/src/css/props/gridColumn/gridColumn.ts +3 -3
  383. package/src/css/props/gridColumn/types.ts +0 -10
  384. package/src/css/props/gridColumnEnd/gridColumnEnd.ts +3 -3
  385. package/src/css/props/gridColumnEnd/types.ts +0 -10
  386. package/src/css/props/gridColumnStart/gridColumnStart.ts +3 -6
  387. package/src/css/props/gridColumnStart/types.ts +0 -10
  388. package/src/css/props/gridRow/gridRow.ts +3 -3
  389. package/src/css/props/gridRow/types.ts +0 -10
  390. package/src/css/props/gridRowEnd/gridRowEnd.ts +3 -3
  391. package/src/css/props/gridRowEnd/types.ts +0 -10
  392. package/src/css/props/gridRowStart/gridRowStart.ts +3 -3
  393. package/src/css/props/gridRowStart/types.ts +0 -10
  394. package/src/css/props/gridTemplateColumns/gridTemplateColumns.ts +2 -2
  395. package/src/css/props/gridTemplateColumns/types.ts +0 -10
  396. package/src/css/props/gridTemplateRows/gridTemplateRows.ts +2 -2
  397. package/src/css/props/gridTemplateRows/types.ts +0 -10
  398. package/src/css/props/height/height.ts +1 -1
  399. package/src/css/props/height/types.ts +0 -6
  400. package/src/css/props/inset/inset.ts +1 -1
  401. package/src/css/props/justifyContent/justifyContent.ts +1 -1
  402. package/src/css/props/margin/margin.ts +1 -1
  403. package/src/css/props/maxWidth/maxWidth.ts +1 -1
  404. package/src/css/props/minHeight/minHeight.ts +1 -1
  405. package/src/css/props/minWidth/minWidth.ts +1 -1
  406. package/src/css/props/outline/outline.ts +1 -1
  407. package/src/css/props/overflow/overflow.ts +1 -1
  408. package/src/css/props/overflow/types.ts +0 -6
  409. package/src/css/props/padding/padding.ts +1 -1
  410. package/src/css/props/pointerEvents/pointerEvents.ts +1 -1
  411. package/src/css/props/position/position.ts +1 -1
  412. package/src/css/props/radius/radius.ts +1 -1
  413. package/src/css/props/shadow/shadow.ts +1 -1
  414. package/src/css/props/textAlign/textAlign.ts +1 -1
  415. package/src/css/props/textOverflow/textOverflow.ts +1 -1
  416. package/src/css/props/width/width.ts +1 -1
  417. package/src/css/types.ts +225 -53
  418. package/src/css/util.ts +2 -2
  419. package/src/css/vars.css.ts +33 -36
  420. package/src/theme/{v3/_parseColorToken.ts → _parseColorToken.ts} +2 -2
  421. package/src/theme/buildTheme.ts +33 -0
  422. package/src/theme/constants.ts +90 -0
  423. package/src/theme/defaults/color.ts +197 -0
  424. package/src/theme/{v2/defaults/config.ts → defaults/common.ts} +3 -16
  425. package/src/theme/{v3/defaultFonts.ts → defaults/fonts.ts} +2 -2
  426. package/src/theme/index.ts +4 -5
  427. package/src/theme/{v3/resolveTokens.ts → resolveTokens.ts} +15 -15
  428. package/src/theme/types.ts +355 -15
  429. package/src/core/__DEV__.ts +0 -5
  430. package/src/core/_compat/helpers.ts +0 -72
  431. package/src/core/_compat/styles/_responsive.ts +0 -19
  432. package/src/core/_compat/theme/theme.test.tsx +0 -73
  433. package/src/core/_compat/theme/themeColorProvider.tsx +0 -24
  434. package/src/core/_compat/theme/themeContext.ts +0 -10
  435. package/src/core/_compat/theme/themeProvider.tsx +0 -68
  436. package/src/core/_compat/theme/types.ts +0 -10
  437. package/src/core/_compat/theme/useRootTheme.ts +0 -15
  438. package/src/core/_compat/theme/useTheme.ts +0 -12
  439. package/src/core/_compat/types.ts +0 -191
  440. package/src/core/hooks/useArrayProp.ts +0 -26
  441. package/src/core/hooks/useClickOutside.test.tsx +0 -481
  442. package/src/core/hooks/useClickOutside.ts +0 -113
  443. package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -30
  444. package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
  445. package/src/core/hooks/useElementRect/useElementRect.ts +0 -13
  446. package/src/core/hooks/useForwardedRef.ts +0 -19
  447. package/src/core/hooks/useIsomorphicEffect.ts +0 -7
  448. package/src/core/primitives/badge/types.ts +0 -18
  449. package/src/core/primitives/box/types.ts +0 -22
  450. package/src/core/primitives/flex/types.ts +0 -27
  451. package/src/core/primitives/grid/types.ts +0 -17
  452. package/src/core/primitives/selectable/types.ts +0 -7
  453. package/src/core/primitives/types.ts +0 -153
  454. package/src/core/types/gridItem.ts +0 -32
  455. package/src/core/types/placement.ts +0 -18
  456. package/src/core/types/radius.ts +0 -7
  457. package/src/core/types/textAlign.ts +0 -7
  458. package/src/core/utils/spanWithTextOverflow.tsx +0 -10
  459. package/src/theme/getScopedTheme.ts +0 -88
  460. package/src/theme/v0/avatar.ts +0 -10
  461. package/src/theme/v0/color/_generic.ts +0 -35
  462. package/src/theme/v0/color/_system.ts +0 -17
  463. package/src/theme/v0/color/base.ts +0 -21
  464. package/src/theme/v0/color/button.ts +0 -42
  465. package/src/theme/v0/color/card.ts +0 -19
  466. package/src/theme/v0/color/color.ts +0 -40
  467. package/src/theme/v0/color/index.ts +0 -11
  468. package/src/theme/v0/color/input.ts +0 -34
  469. package/src/theme/v0/color/muted.ts +0 -26
  470. package/src/theme/v0/color/selectable.ts +0 -31
  471. package/src/theme/v0/color/solid.ts +0 -26
  472. package/src/theme/v0/color/spot.ts +0 -13
  473. package/src/theme/v0/css.ts +0 -10
  474. package/src/theme/v0/focusRing.ts +0 -5
  475. package/src/theme/v0/font.ts +0 -40
  476. package/src/theme/v0/index.ts +0 -10
  477. package/src/theme/v0/input.ts +0 -23
  478. package/src/theme/v0/layer.ts +0 -6
  479. package/src/theme/v0/shadow.ts +0 -15
  480. package/src/theme/v0/styles.ts +0 -13
  481. package/src/theme/v0/theme.ts +0 -72
  482. package/src/theme/v2/avatar.ts +0 -12
  483. package/src/theme/v2/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -76
  484. package/src/theme/v2/build/_deprecated/color/_solid/createSolidTones.ts +0 -54
  485. package/src/theme/v2/build/_deprecated/color/button/createButtonModes.ts +0 -22
  486. package/src/theme/v2/build/_deprecated/color/button/createButtonTones.ts +0 -55
  487. package/src/theme/v2/build/_deprecated/color/card/createCardStates.ts +0 -60
  488. package/src/theme/v2/build/_deprecated/color/color.test.ts +0 -63
  489. package/src/theme/v2/build/_deprecated/color/defaults.ts +0 -390
  490. package/src/theme/v2/build/_deprecated/color/factory.ts +0 -141
  491. package/src/theme/v2/build/_deprecated/color/index.ts +0 -1
  492. package/src/theme/v2/build/_deprecated/color/input/createInputModes.ts +0 -86
  493. package/src/theme/v2/build/_deprecated/color/muted/createMuted.ts +0 -54
  494. package/src/theme/v2/build/_deprecated/color/spot/createSpot.ts +0 -20
  495. package/src/theme/v2/build/buildColorTheme.test.ts +0 -185
  496. package/src/theme/v2/build/buildColorTheme.ts +0 -494
  497. package/src/theme/v2/build/buildTheme.test.ts +0 -89
  498. package/src/theme/v2/build/buildTheme.ts +0 -37
  499. package/src/theme/v2/build/colorToken/colorToken.ts +0 -19
  500. package/src/theme/v2/build/colorToken/compileColorToken.ts +0 -21
  501. package/src/theme/v2/build/colorToken/index.ts +0 -2
  502. package/src/theme/v2/build/colorToken/types.ts +0 -6
  503. package/src/theme/v2/build/index.ts +0 -3
  504. package/src/theme/v2/build/lib/color-fns/blend/index.ts +0 -3
  505. package/src/theme/v2/build/lib/color-fns/blend/mix.ts +0 -21
  506. package/src/theme/v2/build/lib/color-fns/blend/multiply.ts +0 -18
  507. package/src/theme/v2/build/lib/color-fns/blend/screen.ts +0 -18
  508. package/src/theme/v2/build/lib/color-fns/color-fns.test.ts +0 -68
  509. package/src/theme/v2/build/lib/color-fns/contrastRatio.ts +0 -34
  510. package/src/theme/v2/build/lib/color-fns/convert.ts +0 -150
  511. package/src/theme/v2/build/lib/color-fns/index.ts +0 -6
  512. package/src/theme/v2/build/lib/color-fns/parse.ts +0 -60
  513. package/src/theme/v2/build/lib/color-fns/rgba.ts +0 -14
  514. package/src/theme/v2/build/lib/color-fns/types.ts +0 -28
  515. package/src/theme/v2/build/lib/isRecord.ts +0 -3
  516. package/src/theme/v2/build/lib/utils.ts +0 -19
  517. package/src/theme/v2/build/merge.ts +0 -28
  518. package/src/theme/v2/build/mixThemeColor.test.ts +0 -23
  519. package/src/theme/v2/build/mixThemeColor.ts +0 -53
  520. package/src/theme/v2/build/renderColorTheme.ts +0 -532
  521. package/src/theme/v2/build/renderColorValue.ts +0 -85
  522. package/src/theme/v2/build/resolveColorTokens.ts +0 -268
  523. package/src/theme/v2/color/_constants.ts +0 -45
  524. package/src/theme/v2/color/_helpers.ts +0 -24
  525. package/src/theme/v2/color/_system.ts +0 -38
  526. package/src/theme/v2/color/avatar.ts +0 -11
  527. package/src/theme/v2/color/badge.ts +0 -12
  528. package/src/theme/v2/color/button.ts +0 -11
  529. package/src/theme/v2/color/color.ts +0 -28
  530. package/src/theme/v2/color/index.ts +0 -13
  531. package/src/theme/v2/color/input.ts +0 -23
  532. package/src/theme/v2/color/kbd.ts +0 -6
  533. package/src/theme/v2/color/selectable.ts +0 -8
  534. package/src/theme/v2/color/shadow.ts +0 -7
  535. package/src/theme/v2/color/state.ts +0 -41
  536. package/src/theme/v2/color/syntax.ts +0 -39
  537. package/src/theme/v2/config/helpers.ts +0 -48
  538. package/src/theme/v2/config/index.ts +0 -4
  539. package/src/theme/v2/config/system.ts +0 -114
  540. package/src/theme/v2/config/tokens/color/index.ts +0 -1
  541. package/src/theme/v2/config/tokens/color/types.ts +0 -137
  542. package/src/theme/v2/config/tokens/index.ts +0 -3
  543. package/src/theme/v2/config/tokens/parseTokenValue.test.ts +0 -44
  544. package/src/theme/v2/config/tokens/parseTokenValue.ts +0 -133
  545. package/src/theme/v2/config/tokens/types.ts +0 -53
  546. package/src/theme/v2/config/types.ts +0 -47
  547. package/src/theme/v2/defaults/colorPalette.ts +0 -5
  548. package/src/theme/v2/defaults/colorTokens.ts +0 -648
  549. package/src/theme/v2/defaults/fonts.ts +0 -227
  550. package/src/theme/v2/index.ts +0 -6
  551. package/src/theme/v2/input.ts +0 -31
  552. package/src/theme/v2/theme.ts +0 -45
  553. package/src/theme/v3/_constants.ts +0 -29
  554. package/src/theme/v3/buildTheme_v3.ts +0 -39
  555. package/src/theme/v3/color/_constants.ts +0 -15
  556. package/src/theme/v3/color/avatar.ts +0 -14
  557. package/src/theme/v3/color/card.ts +0 -79
  558. package/src/theme/v3/color/color.ts +0 -98
  559. package/src/theme/v3/color/element.ts +0 -19
  560. package/src/theme/v3/color/index.ts +0 -7
  561. package/src/theme/v3/color/token.ts +0 -32
  562. package/src/theme/v3/color/tokens.ts +0 -5
  563. package/src/theme/v3/defaultTokens.ts +0 -199
  564. package/src/theme/v3/index.ts +0 -9
  565. package/src/theme/v3/palette/constants.ts +0 -15
  566. package/src/theme/v3/palette/index.ts +0 -2
  567. package/src/theme/v3/palette/types.ts +0 -7
  568. package/src/theme/v3/tokens.ts +0 -16
  569. package/src/theme/v3/types.ts +0 -133
  570. package/src/theme/versioning/getTheme_v2.ts +0 -58
  571. package/src/theme/versioning/index.ts +0 -1
  572. package/src/theme/versioning/is_v0.ts +0 -7
  573. package/src/theme/versioning/is_v2.ts +0 -7
  574. package/src/theme/versioning/themeColor_v0_v2.ts +0 -245
  575. package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -49
  576. package/src/theme/versioning/themeColor_v3_v2.ts +0 -383
  577. package/src/theme/versioning/v0_v2.ts +0 -95
  578. package/src/theme/versioning/v2_v0.ts +0 -127
  579. package/src/theme/versioning/v3_v2.ts +0 -130
  580. /package/src/theme/{v3/merge.ts → merge.ts} +0 -0
package/dist/theme.js CHANGED
@@ -1,3974 +1,24 @@
1
- import { COLOR_HUES, COLOR_TINTS, color, hues, white as white$1, black as black$1 } from "@sanity/color";
2
- const defaultThemeConfig = {
3
- avatar: {
4
- sizes: [{
5
- distance: -4,
6
- size: 19
7
- }, {
8
- distance: -4,
9
- size: 25
10
- }, {
11
- distance: -8,
12
- size: 33
13
- }, {
14
- distance: -12,
15
- size: 49
16
- }],
17
- focusRing: {
18
- offset: 1,
19
- width: 1
20
- }
21
- },
22
- button: {
23
- textWeight: "medium",
24
- border: {
25
- width: 1
26
- },
27
- focusRing: {
28
- offset: -1,
29
- width: 1
30
- }
31
- },
32
- card: {
33
- border: {
34
- width: 1
35
- },
36
- focusRing: {
37
- offset: -1,
38
- width: 1
39
- },
40
- shadow: {
41
- outline: 0.5
42
- }
43
- },
44
- container: [320, 640, 960, 1280, 1600, 1920],
45
- media: [360, 600, 900, 1200, 1800, 2400],
46
- layer: {
47
- dialog: {
48
- zOffset: 600
49
- },
50
- popover: {
51
- zOffset: 400
52
- },
53
- tooltip: {
54
- zOffset: 200
55
- }
56
- },
57
- radius: [0, 1, 3, 7, 11, 15, 23, 43, 75, 127],
58
- shadow: [null, {
59
- umbra: [0, 0, 0, 0],
60
- penumbra: [0, 0, 0, 0],
61
- ambient: [0, 0, 0, 0]
62
- }, {
63
- umbra: [0, 3, 5, -2],
64
- penumbra: [0, 6, 10, 0],
65
- ambient: [0, 1, 18, 1]
66
- }, {
67
- umbra: [0, 7, 8, -4],
68
- penumbra: [0, 12, 17, 2],
69
- ambient: [0, 5, 22, 4]
70
- }, {
71
- umbra: [0, 9, 11, -5],
72
- penumbra: [0, 18, 28, 2],
73
- ambient: [0, 7, 34, 6]
74
- }, {
75
- umbra: [0, 11, 15, -7],
76
- penumbra: [0, 24, 38, 3],
77
- ambient: [0, 9, 46, 8]
78
- }],
79
- space: [0, 4, 8, 12, 20, 32, 52, 84, 136, 220],
80
- input: {
81
- border: {
82
- width: 1
83
- },
84
- checkbox: {
85
- size: 17,
86
- focusRing: {
87
- offset: -1,
88
- width: 1
89
- }
90
- },
91
- radio: {
92
- size: 17,
93
- markSize: 9,
94
- focusRing: {
95
- offset: -1,
96
- width: 1
97
- }
98
- },
99
- switch: {
100
- width: 25,
101
- height: 17,
102
- padding: 5,
103
- transitionDurationMs: 150,
104
- transitionTimingFunction: "ease-out",
105
- focusRing: {
106
- offset: 1,
107
- width: 1
108
- }
109
- },
110
- select: {
111
- focusRing: {
112
- offset: -1,
113
- width: 1
114
- }
115
- },
116
- text: {
117
- focusRing: {
118
- offset: -1,
119
- width: 1
120
- }
121
- }
122
- },
123
- style: {
124
- button: {
125
- root: {
126
- transition: "background-color 100ms,border-color 100ms,color 100ms"
127
- }
128
- }
129
- // card: {
130
- // root: {
131
- // transition: 'background-color 100ms,border-color 100ms,color 100ms',
132
- // },
133
- // },
134
- }
135
- };
136
- function is_v2(themeProp) {
137
- return themeProp._version === 2;
138
- }
139
- function themeColor_v0_v2_9(color2) {
140
- if ("neutral" in color2.badge)
141
- return color2;
142
- const colors2 = color2;
143
- return {
144
- ...colors2,
145
- badge: {
146
- ...colors2.badge,
147
- neutral: colors2.badge.default,
148
- suggest: colors2.badge.primary
149
- },
150
- button: {
151
- bleed: {
152
- ...colors2.button.bleed,
153
- neutral: colors2.button.bleed.default,
154
- suggest: colors2.button.bleed.primary
155
- },
156
- default: {
157
- ...colors2.button.default,
158
- neutral: colors2.button.default.default,
159
- suggest: colors2.button.default.primary
160
- },
161
- ghost: {
162
- ...colors2.button.ghost,
163
- neutral: colors2.button.ghost.default,
164
- suggest: colors2.button.ghost.primary
165
- }
166
- },
167
- selectable: {
168
- ...colors2.selectable,
169
- neutral: colors2.selectable.default,
170
- suggest: colors2.selectable.primary
171
- }
172
- };
173
- }
174
- const cache$4 = /* @__PURE__ */ new WeakMap();
175
- function themeColor_v0_v2(color_v0) {
176
- const cached_v2 = cache$4.get(color_v0);
177
- if (cached_v2) return cached_v2;
178
- const base = stateThemeColor_v0_v2(color_v0, color_v0.card.enabled), color_v2 = {
179
- _blend: color_v0._blend || (color_v0.dark ? "screen" : "multiply"),
180
- _dark: color_v0.dark,
181
- accent: base.accent,
182
- avatar: base.avatar,
183
- backdrop: color_v0.base.shadow.ambient,
184
- badge: base.badge,
185
- bg: color_v0.base.bg,
186
- border: color_v0.base.border,
187
- button: {
188
- default: stateTonesThemeColor_v0_v2(color_v0, color_v0.button.default),
189
- ghost: stateTonesThemeColor_v0_v2(color_v0, color_v0.button.ghost),
190
- bleed: stateTonesThemeColor_v0_v2(color_v0, color_v0.button.bleed)
191
- },
192
- code: base.code,
193
- fg: color_v0.base.fg,
194
- focusRing: color_v0.base.focusRing,
195
- icon: base.muted.fg,
196
- input: {
197
- default: inputStatesThemeColor_v0_v2(color_v0.input.default),
198
- invalid: inputStatesThemeColor_v0_v2(color_v0.input.invalid)
199
- },
200
- kbd: base.kbd,
201
- link: base.link,
202
- muted: {
203
- ...base.muted,
204
- bg: color_v0.selectable?.default.enabled.bg2 || color_v0.base.bg
205
- },
206
- selectable: stateTonesThemeColor_v0_v2(color_v0, color_v0.selectable || color_v0.muted),
207
- shadow: color_v0.base.shadow,
208
- skeleton: {
209
- from: color_v0.skeleton?.from || color_v0.base.border,
210
- to: color_v0.skeleton?.to || color_v0.base.border
211
- },
212
- syntax: color_v0.syntax
213
- };
214
- return cache$4.set(color_v0, color_v2), color_v2;
215
- }
216
- function stateTonesThemeColor_v0_v2(v0, t) {
217
- return {
218
- default: {
219
- enabled: stateThemeColor_v0_v2(v0, t.default.enabled),
220
- hovered: stateThemeColor_v0_v2(v0, t.default.hovered),
221
- pressed: stateThemeColor_v0_v2(v0, t.default.pressed),
222
- selected: stateThemeColor_v0_v2(v0, t.default.selected),
223
- disabled: stateThemeColor_v0_v2(v0, t.default.disabled)
224
- },
225
- neutral: {
226
- enabled: stateThemeColor_v0_v2(v0, t.default.enabled),
227
- hovered: stateThemeColor_v0_v2(v0, t.default.hovered),
228
- pressed: stateThemeColor_v0_v2(v0, t.default.pressed),
229
- selected: stateThemeColor_v0_v2(v0, t.default.selected),
230
- disabled: stateThemeColor_v0_v2(v0, t.default.disabled)
231
- },
232
- primary: {
233
- enabled: stateThemeColor_v0_v2(v0, t.primary.enabled),
234
- hovered: stateThemeColor_v0_v2(v0, t.primary.hovered),
235
- pressed: stateThemeColor_v0_v2(v0, t.primary.pressed),
236
- selected: stateThemeColor_v0_v2(v0, t.primary.selected),
237
- disabled: stateThemeColor_v0_v2(v0, t.primary.disabled)
238
- },
239
- suggest: {
240
- enabled: stateThemeColor_v0_v2(v0, t.primary.enabled),
241
- hovered: stateThemeColor_v0_v2(v0, t.primary.hovered),
242
- pressed: stateThemeColor_v0_v2(v0, t.primary.pressed),
243
- selected: stateThemeColor_v0_v2(v0, t.primary.selected),
244
- disabled: stateThemeColor_v0_v2(v0, t.primary.disabled)
245
- },
246
- positive: {
247
- enabled: stateThemeColor_v0_v2(v0, t.positive.enabled),
248
- hovered: stateThemeColor_v0_v2(v0, t.positive.hovered),
249
- pressed: stateThemeColor_v0_v2(v0, t.positive.pressed),
250
- selected: stateThemeColor_v0_v2(v0, t.positive.selected),
251
- disabled: stateThemeColor_v0_v2(v0, t.positive.disabled)
252
- },
253
- caution: {
254
- enabled: stateThemeColor_v0_v2(v0, t.caution.enabled),
255
- hovered: stateThemeColor_v0_v2(v0, t.caution.hovered),
256
- pressed: stateThemeColor_v0_v2(v0, t.caution.pressed),
257
- selected: stateThemeColor_v0_v2(v0, t.caution.selected),
258
- disabled: stateThemeColor_v0_v2(v0, t.caution.disabled)
259
- },
260
- critical: {
261
- enabled: stateThemeColor_v0_v2(v0, t.critical.enabled),
262
- hovered: stateThemeColor_v0_v2(v0, t.critical.hovered),
263
- pressed: stateThemeColor_v0_v2(v0, t.critical.pressed),
264
- selected: stateThemeColor_v0_v2(v0, t.critical.selected),
265
- disabled: stateThemeColor_v0_v2(v0, t.critical.disabled)
266
- }
267
- };
268
- }
269
- function stateThemeColor_v0_v2(v0, state) {
270
- return {
271
- ...state,
272
- avatar: {
273
- gray: {
274
- bg: v0.spot.gray,
275
- fg: v0.base.bg
276
- },
277
- blue: {
278
- bg: v0.spot.blue,
279
- fg: v0.base.bg
280
- },
281
- purple: {
282
- bg: v0.spot.purple,
283
- fg: v0.base.bg
284
- },
285
- magenta: {
286
- bg: v0.spot.magenta,
287
- fg: v0.base.bg
288
- },
289
- red: {
290
- bg: v0.spot.red,
291
- fg: v0.base.bg
292
- },
293
- orange: {
294
- bg: v0.spot.orange,
295
- fg: v0.base.bg
296
- },
297
- yellow: {
298
- bg: v0.spot.yellow,
299
- fg: v0.base.bg
300
- },
301
- green: {
302
- bg: v0.spot.green,
303
- fg: v0.base.bg
304
- },
305
- cyan: {
306
- bg: v0.spot.cyan,
307
- fg: v0.base.bg
308
- }
309
- },
310
- badge: {
311
- default: {
312
- bg: v0.muted.default.enabled.bg,
313
- fg: v0.muted.default.enabled.fg,
314
- dot: v0.muted.default.enabled.muted.fg,
315
- icon: v0.muted.default.enabled.muted.fg
316
- },
317
- neutral: {
318
- bg: v0.muted.transparent.enabled.bg,
319
- fg: v0.muted.transparent.enabled.fg,
320
- dot: v0.muted.transparent.enabled.muted.fg,
321
- icon: v0.muted.transparent.enabled.muted.fg
322
- },
323
- primary: {
324
- bg: v0.muted.primary.enabled.bg,
325
- fg: v0.muted.primary.enabled.fg,
326
- dot: v0.muted.primary.enabled.muted.fg,
327
- icon: v0.muted.primary.enabled.muted.fg
328
- },
329
- suggest: {
330
- bg: v0.muted.primary.enabled.bg,
331
- fg: v0.muted.primary.enabled.fg,
332
- dot: v0.muted.primary.enabled.muted.fg,
333
- icon: v0.muted.primary.enabled.muted.fg
334
- },
335
- positive: {
336
- bg: v0.muted.positive.enabled.bg,
337
- fg: v0.muted.positive.enabled.fg,
338
- dot: v0.muted.positive.enabled.muted.fg,
339
- icon: v0.muted.positive.enabled.muted.fg
340
- },
341
- caution: {
342
- bg: v0.muted.caution.enabled.bg,
343
- fg: v0.muted.caution.enabled.fg,
344
- dot: v0.muted.caution.enabled.muted.fg,
345
- icon: v0.muted.caution.enabled.muted.fg
346
- },
347
- critical: {
348
- bg: v0.muted.critical.enabled.bg,
349
- fg: v0.muted.critical.enabled.fg,
350
- dot: v0.muted.critical.enabled.muted.fg,
351
- icon: v0.muted.critical.enabled.muted.fg
352
- }
353
- },
354
- kbd: {
355
- bg: v0.muted.default.enabled.bg,
356
- fg: v0.muted.default.enabled.fg,
357
- border: v0.muted.default.enabled.border
358
- },
359
- muted: {
360
- ...v0.muted.default.enabled.muted,
361
- bg: state.bg2 || state.bg
362
- },
363
- skeleton: {
364
- from: state.skeleton?.from || state.border,
365
- to: state.skeleton?.to || state.border
366
- }
367
- };
368
- }
369
- function inputStatesThemeColor_v0_v2(states) {
370
- return {
371
- enabled: inputStateThemeColor_v0_v2(states.enabled),
372
- disabled: inputStateThemeColor_v0_v2(states.disabled),
373
- readOnly: inputStateThemeColor_v0_v2(states.readOnly),
374
- hovered: inputStateThemeColor_v0_v2(states.hovered)
375
- };
376
- }
377
- function inputStateThemeColor_v0_v2(state) {
378
- return {
379
- bg: state.bg,
380
- border: state.border,
381
- fg: state.fg,
382
- muted: {
383
- bg: state.bg2
384
- },
385
- placeholder: state.placeholder
386
- };
387
- }
388
- const cache$3 = /* @__PURE__ */ new WeakMap();
389
- function v0_v2(v0) {
390
- if (v0.v2) return v0.v2;
391
- const cached_v2 = cache$3.get(v0);
392
- if (cached_v2) return cached_v2;
393
- const {
394
- avatar,
395
- button,
396
- color: color2,
397
- container,
398
- fonts: font,
399
- input,
400
- layer,
401
- media,
402
- radius,
403
- shadows: shadow,
404
- space,
405
- styles: style
406
- } = v0, v2 = {
407
- _version: 2,
408
- avatar: {
409
- ...defaultThemeConfig.avatar,
410
- ...avatar
411
- },
412
- button: {
413
- ...defaultThemeConfig.button,
414
- ...button
415
- },
416
- card: defaultThemeConfig.card,
417
- color: {
418
- light: {
419
- transparent: themeColor_v0_v2(color2.light.transparent),
420
- default: themeColor_v0_v2(color2.light.default),
421
- neutral: themeColor_v0_v2(color2.light.transparent),
422
- primary: themeColor_v0_v2(color2.light.primary),
423
- suggest: themeColor_v0_v2(color2.light.primary),
424
- positive: themeColor_v0_v2(color2.light.positive),
425
- caution: themeColor_v0_v2(color2.light.caution),
426
- critical: themeColor_v0_v2(color2.light.critical)
427
- },
428
- dark: {
429
- transparent: themeColor_v0_v2(color2.dark.transparent),
430
- default: themeColor_v0_v2(color2.dark.default),
431
- neutral: themeColor_v0_v2(color2.dark.transparent),
432
- primary: themeColor_v0_v2(color2.dark.primary),
433
- suggest: themeColor_v0_v2(color2.dark.primary),
434
- positive: themeColor_v0_v2(color2.dark.positive),
435
- caution: themeColor_v0_v2(color2.dark.caution),
436
- critical: themeColor_v0_v2(color2.dark.critical)
437
- }
438
- },
439
- container,
440
- font,
441
- input: {
442
- ...defaultThemeConfig.input,
443
- ...input,
444
- checkbox: {
445
- ...defaultThemeConfig.input.checkbox,
446
- ...input.checkbox
447
- },
448
- radio: {
449
- ...defaultThemeConfig.input.radio,
450
- ...input.radio
451
- },
452
- switch: {
453
- ...defaultThemeConfig.input.switch,
454
- ...input.switch
455
- }
456
- },
457
- layer: layer ?? defaultThemeConfig.layer,
458
- media,
459
- radius,
460
- shadow,
461
- space,
462
- style
463
- };
464
- return cache$3.set(v0, v2), v2;
465
- }
466
- const cache$2 = /* @__PURE__ */ new WeakMap();
467
- function v2_v0(v2, v3) {
468
- const cachedTheme = cache$2.get(v2);
469
- if (cachedTheme) return cachedTheme;
470
- const {
471
- avatar,
472
- button,
473
- color: color2,
474
- container,
475
- font: fonts,
476
- input,
477
- media,
478
- radius,
479
- shadow: shadows,
480
- space,
481
- style: styles
482
- } = v2;
483
- return {
484
- _version: 0,
485
- avatar,
486
- button,
487
- container,
488
- color: {
489
- light: {
490
- transparent: themeColor_v2_v0(color2.light.transparent),
491
- default: themeColor_v2_v0(color2.light.default),
492
- primary: themeColor_v2_v0(color2.light.primary),
493
- positive: themeColor_v2_v0(color2.light.positive),
494
- caution: themeColor_v2_v0(color2.light.caution),
495
- critical: themeColor_v2_v0(color2.light.critical)
496
- },
497
- dark: {
498
- transparent: themeColor_v2_v0(color2.dark.transparent),
499
- default: themeColor_v2_v0(color2.dark.default),
500
- primary: themeColor_v2_v0(color2.dark.primary),
501
- positive: themeColor_v2_v0(color2.dark.positive),
502
- caution: themeColor_v2_v0(color2.dark.caution),
503
- critical: themeColor_v2_v0(color2.dark.critical)
504
- }
505
- },
506
- focusRing: input.text.focusRing,
507
- fonts,
508
- input,
509
- media,
510
- radius,
511
- shadows,
512
- space,
513
- styles,
514
- v2,
515
- v3
516
- };
517
- }
518
- function themeColor_v2_v0(color_v2) {
519
- return {
520
- base: {
521
- bg: color_v2.bg,
522
- fg: color_v2.fg,
523
- border: color_v2.border,
524
- focusRing: color_v2.focusRing,
525
- shadow: color_v2.shadow
526
- },
527
- button: color_v2.button,
528
- card: color_v2.selectable.default,
529
- dark: color_v2._dark,
530
- input: {
531
- default: inputStatesThemeColor_v2_v0(color_v2.input.default),
532
- invalid: inputStatesThemeColor_v2_v0(color_v2.input.invalid)
533
- },
534
- muted: {
535
- ...color_v2.button.ghost,
536
- transparent: color_v2.button.ghost.default
537
- },
538
- solid: {
539
- ...color_v2.button.default,
540
- transparent: color_v2.button.default.default
541
- },
542
- selectable: color_v2.selectable,
543
- spot: {
544
- gray: color_v2.avatar.gray.bg,
545
- blue: color_v2.avatar.blue.bg,
546
- purple: color_v2.avatar.purple.bg,
547
- magenta: color_v2.avatar.magenta.bg,
548
- red: color_v2.avatar.red.bg,
549
- orange: color_v2.avatar.orange.bg,
550
- yellow: color_v2.avatar.yellow.bg,
551
- green: color_v2.avatar.green.bg,
552
- cyan: color_v2.avatar.cyan.bg
553
- },
554
- syntax: color_v2.syntax
555
- };
556
- }
557
- function inputStatesThemeColor_v2_v0(t) {
558
- return {
559
- enabled: inputStateThemeColor_v2_v0(t.enabled),
560
- disabled: inputStateThemeColor_v2_v0(t.disabled),
561
- readOnly: inputStateThemeColor_v2_v0(t.readOnly),
562
- hovered: inputStateThemeColor_v2_v0(t.hovered)
563
- };
564
- }
565
- function inputStateThemeColor_v2_v0(t) {
566
- return {
567
- bg: t.bg,
568
- bg2: t.muted.bg,
569
- border: t.border,
570
- fg: t.fg,
571
- placeholder: t.placeholder
572
- };
573
- }
574
- const cache$1 = /* @__PURE__ */ new Map();
575
- function getScopedTheme(themeProp, scheme, tone) {
576
- const cachedTheme = _getCachedTheme(themeProp, scheme, tone);
577
- if (cachedTheme) return cachedTheme;
578
- const v0 = is_v2(themeProp) ? v2_v0(themeProp) : themeProp, v2 = is_v2(themeProp) ? themeProp : v0_v2(themeProp), colorScheme_v0 = v0.color[scheme] || v0.color.light, color_v0 = colorScheme_v0[tone] || colorScheme_v0.default, layer_v0 = v0.layer || defaultThemeConfig.layer, colorScheme_v2 = v2.color[scheme] || v2.color.light, color_v2 = colorScheme_v2[tone] || colorScheme_v2.default, color_v2_9 = themeColor_v0_v2_9(color_v2), layer_v2 = v2.layer || defaultThemeConfig.layer, theme = {
579
- sanity: {
580
- ...v0,
581
- color: color_v0,
582
- layer: layer_v0,
583
- v2: {
584
- ...v2,
585
- _resolved: !0,
586
- color: color_v2_9,
587
- layer: layer_v2
588
- }
589
- }
590
- };
591
- return _setCachedTheme(themeProp, scheme, tone, theme), theme;
592
- }
593
- function _getCachedTheme(rootTheme, scheme, tone) {
594
- const schemeCache = cache$1.get(scheme);
595
- if (!schemeCache) return;
596
- const toneCache = schemeCache.get(tone);
597
- if (toneCache)
598
- return toneCache.get(rootTheme);
599
- }
600
- function _setCachedTheme(rootTheme, scheme, tone, theme) {
601
- cache$1.has(scheme) || cache$1.set(scheme, /* @__PURE__ */ new Map());
602
- const schemeCache = cache$1.get(scheme);
603
- schemeCache.has(tone) || schemeCache.set(tone, /* @__PURE__ */ new WeakMap()), schemeCache.get(tone).set(rootTheme, theme);
604
- }
605
- function createSelectableTones(opts, base, dark, solid, muted) {
606
- return {
607
- default: _createSelectableStates(opts, base, dark, solid, muted, "default"),
608
- primary: _createSelectableStates(opts, base, dark, solid, muted, "primary"),
609
- positive: _createSelectableStates(opts, base, dark, solid, muted, "positive"),
610
- caution: _createSelectableStates(opts, base, dark, solid, muted, "caution"),
611
- critical: _createSelectableStates(opts, base, dark, solid, muted, "critical")
612
- };
613
- }
614
- function _createSelectableStates(opts, base, dark, solid, muted, tone) {
615
- return {
616
- enabled: opts.selectable({
617
- base,
618
- dark,
619
- solid,
620
- muted,
621
- state: "enabled",
622
- tone
623
- }),
624
- hovered: opts.selectable({
625
- base,
626
- dark,
627
- solid,
628
- muted,
629
- state: "hovered",
630
- tone
631
- }),
632
- pressed: opts.selectable({
633
- base,
634
- dark,
635
- solid,
636
- muted,
637
- state: "pressed",
638
- tone
639
- }),
640
- selected: opts.selectable({
641
- base,
642
- dark,
643
- solid,
644
- muted,
645
- state: "selected",
646
- tone
647
- }),
648
- disabled: opts.selectable({
649
- base,
650
- dark,
651
- solid,
652
- muted,
653
- state: "disabled",
654
- tone
655
- })
656
- };
657
- }
658
- function createSolidTones(opts, base, dark, name) {
659
- return {
660
- default: {
661
- enabled: opts.solid({
662
- base,
663
- dark,
664
- tone: "default",
665
- name,
666
- state: "enabled"
667
- }),
668
- disabled: opts.solid({
669
- base,
670
- dark,
671
- tone: "default",
672
- name,
673
- state: "disabled"
674
- }),
675
- hovered: opts.solid({
676
- base,
677
- dark,
678
- tone: "default",
679
- name,
680
- state: "hovered"
681
- }),
682
- pressed: opts.solid({
683
- base,
684
- dark,
685
- tone: "default",
686
- name,
687
- state: "pressed"
688
- }),
689
- selected: opts.solid({
690
- base,
691
- dark,
692
- tone: "default",
693
- name,
694
- state: "selected"
695
- })
696
- },
697
- transparent: {
698
- enabled: opts.solid({
699
- base,
700
- dark,
701
- tone: "transparent",
702
- name,
703
- state: "enabled"
704
- }),
705
- disabled: opts.solid({
706
- base,
707
- dark,
708
- tone: "transparent",
709
- name,
710
- state: "disabled"
711
- }),
712
- hovered: opts.solid({
713
- base,
714
- dark,
715
- tone: "transparent",
716
- name,
717
- state: "hovered"
718
- }),
719
- pressed: opts.solid({
720
- base,
721
- dark,
722
- tone: "transparent",
723
- name,
724
- state: "pressed"
725
- }),
726
- selected: opts.solid({
727
- base,
728
- dark,
729
- tone: "transparent",
730
- name,
731
- state: "selected"
732
- })
733
- },
734
- primary: {
735
- enabled: opts.solid({
736
- base,
737
- dark,
738
- tone: "primary",
739
- name,
740
- state: "enabled"
741
- }),
742
- disabled: opts.solid({
743
- base,
744
- dark,
745
- tone: "primary",
746
- name,
747
- state: "disabled"
748
- }),
749
- hovered: opts.solid({
750
- base,
751
- dark,
752
- tone: "primary",
753
- name,
754
- state: "hovered"
755
- }),
756
- pressed: opts.solid({
757
- base,
758
- dark,
759
- tone: "primary",
760
- name,
761
- state: "pressed"
762
- }),
763
- selected: opts.solid({
764
- base,
765
- dark,
766
- tone: "primary",
767
- name,
768
- state: "selected"
769
- })
770
- },
771
- positive: {
772
- enabled: opts.solid({
773
- base,
774
- dark,
775
- tone: "positive",
776
- name,
777
- state: "enabled"
778
- }),
779
- disabled: opts.solid({
780
- base,
781
- dark,
782
- tone: "positive",
783
- name,
784
- state: "disabled"
785
- }),
786
- hovered: opts.solid({
787
- base,
788
- dark,
789
- tone: "positive",
790
- name,
791
- state: "hovered"
792
- }),
793
- pressed: opts.solid({
794
- base,
795
- dark,
796
- tone: "positive",
797
- name,
798
- state: "pressed"
799
- }),
800
- selected: opts.solid({
801
- base,
802
- dark,
803
- tone: "positive",
804
- name,
805
- state: "selected"
806
- })
807
- },
808
- caution: {
809
- enabled: opts.solid({
810
- base,
811
- dark,
812
- tone: "caution",
813
- name,
814
- state: "enabled"
815
- }),
816
- disabled: opts.solid({
817
- base,
818
- dark,
819
- tone: "caution",
820
- name,
821
- state: "disabled"
822
- }),
823
- hovered: opts.solid({
824
- base,
825
- dark,
826
- tone: "caution",
827
- name,
828
- state: "hovered"
829
- }),
830
- pressed: opts.solid({
831
- base,
832
- dark,
833
- tone: "caution",
834
- name,
835
- state: "pressed"
836
- }),
837
- selected: opts.solid({
838
- base,
839
- dark,
840
- tone: "caution",
841
- name,
842
- state: "selected"
843
- })
844
- },
845
- critical: {
846
- enabled: opts.solid({
847
- base,
848
- dark,
849
- tone: "critical",
850
- name,
851
- state: "enabled"
852
- }),
853
- disabled: opts.solid({
854
- base,
855
- dark,
856
- tone: "critical",
857
- name,
858
- state: "disabled"
859
- }),
860
- hovered: opts.solid({
861
- base,
862
- dark,
863
- tone: "critical",
864
- name,
865
- state: "hovered"
866
- }),
867
- pressed: opts.solid({
868
- base,
869
- dark,
870
- tone: "critical",
871
- name,
872
- state: "pressed"
873
- }),
874
- selected: opts.solid({
875
- base,
876
- dark,
877
- tone: "critical",
878
- name,
879
- state: "selected"
880
- })
881
- }
882
- };
883
- }
884
- function createButtonTones(opts, base, dark, solid, muted, mode) {
885
- return {
886
- default: opts.button({
887
- base,
888
- dark,
889
- solid: solid.default,
890
- muted: muted.default,
891
- mode
892
- }),
893
- primary: opts.button({
894
- base,
895
- dark,
896
- solid: solid.primary,
897
- muted: muted.primary,
898
- mode
899
- }),
900
- positive: opts.button({
901
- base,
902
- dark,
903
- solid: solid.positive,
904
- muted: muted.positive,
905
- mode
906
- }),
907
- caution: opts.button({
908
- base,
909
- dark,
910
- solid: solid.caution,
911
- muted: muted.caution,
912
- mode
913
- }),
914
- critical: opts.button({
915
- base,
916
- dark,
917
- solid: solid.critical,
918
- muted: muted.critical,
919
- mode
920
- })
921
- };
922
- }
923
- function createButtonModes(opts, base, dark, solid, muted) {
924
- return {
925
- default: createButtonTones(opts, base, dark, solid, muted, "default"),
926
- ghost: createButtonTones(opts, base, dark, solid, muted, "ghost"),
927
- bleed: createButtonTones(opts, base, dark, solid, muted, "bleed")
928
- };
929
- }
930
- function createCardStates(opts, base, dark, name, solid, muted) {
931
- return {
932
- enabled: opts.card({
933
- base,
934
- dark,
935
- name,
936
- state: "enabled",
937
- solid,
938
- muted
939
- }),
940
- disabled: opts.card({
941
- base,
942
- dark,
943
- name,
944
- state: "disabled",
945
- solid,
946
- muted
947
- }),
948
- hovered: opts.card({
949
- base,
950
- dark,
951
- name,
952
- state: "hovered",
953
- solid,
954
- muted
955
- }),
956
- pressed: opts.card({
957
- base,
958
- dark,
959
- name,
960
- state: "pressed",
961
- solid,
962
- muted
963
- }),
964
- selected: opts.card({
965
- base,
966
- dark,
967
- name,
968
- state: "selected",
969
- solid,
970
- muted
971
- })
972
- };
973
- }
974
- const black = "hsl(0, 0%, 0%)", white = "hsl(0, 0%, 100%)", colors = {
975
- default: {
976
- lightest: "hsl(0, 0%, 95%)",
977
- lighter: "hsl(0, 0%, 70%)",
978
- light: "hsl(0, 0%, 65%)",
979
- base: "hsl(0, 0%, 50%)",
980
- dark: "hsl(0, 0%, 35%)",
981
- darker: "hsl(0, 0%, 20%)",
982
- darkest: "hsl(0, 0%, 5%)"
983
- },
984
- transparent: {
985
- lightest: "hsl(240, 100%, 95%)",
986
- lighter: "hsl(240, 100%, 70%)",
987
- light: "hsl(240, 100%, 65%)",
988
- base: "hsl(240, 100%, 50%)",
989
- dark: "hsl(240, 100%, 35%)",
990
- darker: "hsl(240, 100%, 20%)",
991
- darkest: "hsl(240, 100%, 5%)"
992
- },
993
- primary: {
994
- lightest: "hsl(240, 100%, 95%)",
995
- lighter: "hsl(240, 100%, 70%)",
996
- light: "hsl(240, 100%, 65%)",
997
- base: "hsl(240, 100%, 50%)",
998
- dark: "hsl(240, 100%, 35%)",
999
- darker: "hsl(240, 100%, 20%)",
1000
- darkest: "hsl(240, 100%, 5%)"
1001
- },
1002
- positive: {
1003
- lightest: "hsl(120, 100%, 95%)",
1004
- lighter: "hsl(120, 100%, 70%)",
1005
- light: "hsl(120, 100%, 65%)",
1006
- base: "hsl(120, 100%, 50%)",
1007
- dark: "hsl(120, 100%, 35%)",
1008
- darker: "hsl(120, 100%, 20%)",
1009
- darkest: "hsl(120, 100%, 5%)"
1010
- },
1011
- caution: {
1012
- lightest: "hsl(60, 100%, 95%)",
1013
- lighter: "hsl(60, 100%, 70%)",
1014
- light: "hsl(60, 100%, 65%)",
1015
- base: "hsl(60, 100%, 50%)",
1016
- dark: "hsl(60, 100%, 35%)",
1017
- darker: "hsl(60, 100%, 20%)",
1018
- darkest: "hsl(60, 100%, 5%)"
1019
- },
1020
- critical: {
1021
- lightest: "hsl(0, 100%, 95%)",
1022
- lighter: "hsl(0, 100%, 70%)",
1023
- light: "hsl(0, 100%, 65%)",
1024
- base: "hsl(0, 100%, 50%)",
1025
- dark: "hsl(0, 100%, 35%)",
1026
- darker: "hsl(0, 100%, 20%)",
1027
- darkest: "hsl(0, 100%, 5%)"
1028
- }
1029
- }, spots = {
1030
- gray: "hsl(0, 0%, 50%)",
1031
- red: "hsl(0, 100%, 50%)",
1032
- orange: "hsl(30, 100%, 50%)",
1033
- yellow: "hsl(60, 100%, 50%)",
1034
- green: "hsl(120, 100%, 50%)",
1035
- cyan: "hsl(180, 100%, 50%)",
1036
- blue: "hsl(240, 100%, 50%)",
1037
- purple: "hsl(270, 100%, 50%)",
1038
- magenta: "hsl(300, 100%, 50%)"
1039
- }, tones = {
1040
- transparent: {
1041
- bg: [colors.transparent.darkest, colors.transparent.lightest],
1042
- fg: [colors.transparent.lightest, colors.transparent.darkest],
1043
- border: [colors.transparent.darker, colors.transparent.lighter],
1044
- focusRing: [colors.transparent.base, colors.transparent.base]
1045
- },
1046
- primary: {
1047
- bg: [colors.primary.darkest, colors.primary.lightest],
1048
- fg: [colors.primary.lightest, colors.primary.darkest],
1049
- border: [colors.primary.darker, colors.primary.lighter],
1050
- focusRing: [colors.primary.base, colors.primary.base]
1051
- },
1052
- positive: {
1053
- bg: [colors.positive.darkest, colors.positive.lightest],
1054
- fg: [colors.positive.lightest, colors.positive.darkest],
1055
- border: [colors.positive.darker, colors.positive.lighter],
1056
- focusRing: [colors.positive.base, colors.positive.base]
1057
- },
1058
- caution: {
1059
- bg: [colors.caution.darkest, colors.caution.lightest],
1060
- fg: [colors.caution.lightest, colors.caution.darkest],
1061
- border: [colors.caution.darker, colors.caution.lighter],
1062
- focusRing: [colors.caution.base, colors.caution.base]
1063
- },
1064
- critical: {
1065
- bg: [colors.critical.darkest, colors.critical.lightest],
1066
- fg: [colors.critical.lightest, colors.critical.darkest],
1067
- border: [colors.critical.darker, colors.critical.lighter],
1068
- focusRing: [colors.critical.base, colors.critical.base]
1069
- }
1070
- }, defaultOpts = {
1071
- base: ({
1072
- dark,
1073
- name
1074
- }) => name === "default" ? {
1075
- bg: dark ? black : white,
1076
- fg: dark ? white : black,
1077
- border: dark ? colors.default.darkest : colors.default.lightest,
1078
- focusRing: colors.primary.base,
1079
- shadow: {
1080
- outline: black,
1081
- umbra: black,
1082
- penumbra: black,
1083
- ambient: black
1084
- },
1085
- skeleton: {
1086
- from: dark ? white : black,
1087
- to: dark ? white : black
1088
- }
1089
- } : {
1090
- bg: tones[name].bg[dark ? 0 : 1],
1091
- fg: tones[name].fg[dark ? 0 : 1],
1092
- border: tones[name].border[dark ? 0 : 1],
1093
- focusRing: tones[name].focusRing[dark ? 0 : 1],
1094
- shadow: {
1095
- outline: black,
1096
- umbra: black,
1097
- penumbra: black,
1098
- ambient: black
1099
- },
1100
- skeleton: {
1101
- from: dark ? white : black,
1102
- to: dark ? white : black
1103
- }
1104
- },
1105
- solid: ({
1106
- base,
1107
- dark,
1108
- state,
1109
- tone
1110
- }) => {
1111
- const color2 = colors[tone];
1112
- return state === "hovered" ? {
1113
- bg: dark ? color2.light : color2.dark,
1114
- bg2: dark ? color2.light : color2.dark,
1115
- border: dark ? color2.lighter : color2.darker,
1116
- fg: dark ? color2.darkest : color2.lightest,
1117
- icon: dark ? color2.darkest : color2.lightest,
1118
- muted: {
1119
- fg: black
1120
- },
1121
- accent: {
1122
- fg: black
1123
- },
1124
- link: {
1125
- fg: black
1126
- },
1127
- code: {
1128
- bg: black,
1129
- fg: black
1130
- },
1131
- skeleton: base.skeleton
1132
- } : {
1133
- bg: color2.base,
1134
- bg2: color2.base,
1135
- border: dark ? color2.light : color2.dark,
1136
- fg: dark ? color2.darkest : color2.lightest,
1137
- icon: dark ? color2.darkest : color2.lightest,
1138
- muted: {
1139
- fg: black
1140
- },
1141
- accent: {
1142
- fg: black
1143
- },
1144
- link: {
1145
- fg: black
1146
- },
1147
- code: {
1148
- bg: black,
1149
- fg: black
1150
- },
1151
- skeleton: base.skeleton
1152
- };
1153
- },
1154
- muted: ({
1155
- base,
1156
- dark,
1157
- state,
1158
- tone
1159
- }) => {
1160
- const color2 = colors[tone];
1161
- return state === "hovered" ? {
1162
- bg: dark ? color2.darker : color2.lighter,
1163
- bg2: dark ? color2.darker : color2.lighter,
1164
- border: dark ? color2.lighter : color2.darker,
1165
- fg: dark ? color2.lightest : color2.darkest,
1166
- icon: dark ? color2.lightest : color2.darkest,
1167
- muted: {
1168
- fg: black
1169
- },
1170
- accent: {
1171
- fg: black
1172
- },
1173
- link: {
1174
- fg: black
1175
- },
1176
- code: {
1177
- bg: black,
1178
- fg: black
1179
- },
1180
- skeleton: base.skeleton
1181
- } : {
1182
- bg: dark ? color2.darkest : color2.lightest,
1183
- bg2: dark ? color2.darkest : color2.lightest,
1184
- border: dark ? color2.darker : color2.lighter,
1185
- fg: dark ? color2.lighter : color2.darker,
1186
- icon: dark ? color2.lighter : color2.darker,
1187
- muted: {
1188
- fg: black
1189
- },
1190
- accent: {
1191
- fg: black
1192
- },
1193
- link: {
1194
- fg: black
1195
- },
1196
- code: {
1197
- bg: black,
1198
- fg: black
1199
- },
1200
- skeleton: base.skeleton
1201
- };
1202
- },
1203
- button: ({
1204
- base,
1205
- mode,
1206
- muted,
1207
- solid
1208
- }) => mode === "bleed" ? {
1209
- ...muted,
1210
- enabled: {
1211
- bg: "transparent",
1212
- bg2: "transparent",
1213
- fg: muted.enabled.fg,
1214
- icon: muted.enabled.fg,
1215
- border: "transparent",
1216
- muted: {
1217
- fg: black
1218
- },
1219
- accent: {
1220
- fg: black
1221
- },
1222
- link: {
1223
- fg: black
1224
- },
1225
- code: {
1226
- bg: black,
1227
- fg: black
1228
- },
1229
- skeleton: base.skeleton
1230
- },
1231
- hovered: {
1232
- bg: muted.enabled.bg,
1233
- bg2: muted.enabled.bg,
1234
- fg: muted.hovered.fg,
1235
- icon: muted.hovered.fg,
1236
- border: "transparent",
1237
- muted: {
1238
- fg: black
1239
- },
1240
- accent: {
1241
- fg: black
1242
- },
1243
- link: {
1244
- fg: black
1245
- },
1246
- code: {
1247
- bg: black,
1248
- fg: black
1249
- },
1250
- skeleton: base.skeleton
1251
- }
1252
- } : mode === "ghost" ? {
1253
- ...solid,
1254
- enabled: muted.enabled
1255
- } : solid,
1256
- card: ({
1257
- base
1258
- }) => ({
1259
- bg: black,
1260
- bg2: black,
1261
- fg: black,
1262
- icon: black,
1263
- border: black,
1264
- muted: {
1265
- fg: black
1266
- },
1267
- accent: {
1268
- fg: black
1269
- },
1270
- link: {
1271
- fg: black
1272
- },
1273
- code: {
1274
- bg: black,
1275
- fg: black
1276
- },
1277
- skeleton: base.skeleton
1278
- }),
1279
- input: () => ({
1280
- bg: black,
1281
- bg2: black,
1282
- fg: black,
1283
- border: black,
1284
- placeholder: black
1285
- }),
1286
- selectable: ({
1287
- muted,
1288
- state,
1289
- tone
1290
- }) => muted[tone][state],
1291
- spot: ({
1292
- key
1293
- }) => spots[key],
1294
- syntax: () => ({
1295
- atrule: black,
1296
- attrName: black,
1297
- attrValue: black,
1298
- attribute: black,
1299
- boolean: black,
1300
- builtin: black,
1301
- cdata: black,
1302
- char: black,
1303
- class: black,
1304
- className: black,
1305
- comment: black,
1306
- constant: black,
1307
- deleted: black,
1308
- doctype: black,
1309
- entity: black,
1310
- function: black,
1311
- hexcode: black,
1312
- id: black,
1313
- important: black,
1314
- inserted: black,
1315
- keyword: black,
1316
- number: black,
1317
- operator: black,
1318
- prolog: black,
1319
- property: black,
1320
- pseudoClass: black,
1321
- pseudoElement: black,
1322
- punctuation: black,
1323
- regex: black,
1324
- selector: black,
1325
- string: black,
1326
- symbol: black,
1327
- tag: black,
1328
- unit: black,
1329
- url: black,
1330
- variable: black
1331
- })
1332
- };
1333
- function createInputModes(opts, base, dark, solid, muted) {
1334
- return {
1335
- default: {
1336
- enabled: opts.input({
1337
- base,
1338
- dark,
1339
- mode: "default",
1340
- state: "enabled",
1341
- solid: solid.default,
1342
- muted: muted.default
1343
- }),
1344
- disabled: opts.input({
1345
- base,
1346
- dark,
1347
- mode: "default",
1348
- state: "disabled",
1349
- solid: solid.default,
1350
- muted: muted.default
1351
- }),
1352
- hovered: opts.input({
1353
- base,
1354
- dark,
1355
- mode: "default",
1356
- state: "hovered",
1357
- solid: solid.default,
1358
- muted: muted.default
1359
- }),
1360
- readOnly: opts.input({
1361
- base,
1362
- dark,
1363
- mode: "default",
1364
- state: "readOnly",
1365
- solid: solid.default,
1366
- muted: muted.default
1367
- })
1368
- },
1369
- invalid: {
1370
- enabled: opts.input({
1371
- base,
1372
- dark,
1373
- mode: "invalid",
1374
- state: "enabled",
1375
- solid: solid.default,
1376
- muted: muted.default
1377
- }),
1378
- disabled: opts.input({
1379
- base,
1380
- dark,
1381
- mode: "invalid",
1382
- state: "disabled",
1383
- solid: solid.default,
1384
- muted: muted.default
1385
- }),
1386
- hovered: opts.input({
1387
- base,
1388
- dark,
1389
- mode: "invalid",
1390
- state: "hovered",
1391
- solid: solid.default,
1392
- muted: muted.default
1393
- }),
1394
- readOnly: opts.input({
1395
- base,
1396
- dark,
1397
- mode: "invalid",
1398
- state: "readOnly",
1399
- solid: solid.default,
1400
- muted: muted.default
1401
- })
1402
- }
1403
- };
1404
- }
1405
- function createMutedTones(opts, base, dark, name) {
1406
- return {
1407
- default: {
1408
- enabled: opts.muted({
1409
- base,
1410
- dark,
1411
- tone: "default",
1412
- name,
1413
- state: "enabled"
1414
- }),
1415
- disabled: opts.muted({
1416
- base,
1417
- dark,
1418
- tone: "default",
1419
- name,
1420
- state: "disabled"
1421
- }),
1422
- hovered: opts.muted({
1423
- base,
1424
- dark,
1425
- tone: "default",
1426
- name,
1427
- state: "hovered"
1428
- }),
1429
- pressed: opts.muted({
1430
- base,
1431
- dark,
1432
- tone: "default",
1433
- name,
1434
- state: "pressed"
1435
- }),
1436
- selected: opts.muted({
1437
- base,
1438
- dark,
1439
- tone: "default",
1440
- name,
1441
- state: "selected"
1442
- })
1443
- },
1444
- transparent: {
1445
- enabled: opts.muted({
1446
- base,
1447
- dark,
1448
- tone: "transparent",
1449
- name,
1450
- state: "enabled"
1451
- }),
1452
- disabled: opts.muted({
1453
- base,
1454
- dark,
1455
- tone: "transparent",
1456
- name,
1457
- state: "disabled"
1458
- }),
1459
- hovered: opts.muted({
1460
- base,
1461
- dark,
1462
- tone: "transparent",
1463
- name,
1464
- state: "hovered"
1465
- }),
1466
- pressed: opts.muted({
1467
- base,
1468
- dark,
1469
- tone: "transparent",
1470
- name,
1471
- state: "pressed"
1472
- }),
1473
- selected: opts.muted({
1474
- base,
1475
- dark,
1476
- tone: "transparent",
1477
- name,
1478
- state: "selected"
1479
- })
1480
- },
1481
- primary: {
1482
- enabled: opts.muted({
1483
- base,
1484
- dark,
1485
- tone: "primary",
1486
- name,
1487
- state: "enabled"
1488
- }),
1489
- disabled: opts.muted({
1490
- base,
1491
- dark,
1492
- tone: "primary",
1493
- name,
1494
- state: "disabled"
1495
- }),
1496
- hovered: opts.muted({
1497
- base,
1498
- dark,
1499
- tone: "primary",
1500
- name,
1501
- state: "hovered"
1502
- }),
1503
- pressed: opts.muted({
1504
- base,
1505
- dark,
1506
- tone: "primary",
1507
- name,
1508
- state: "pressed"
1509
- }),
1510
- selected: opts.muted({
1511
- base,
1512
- dark,
1513
- tone: "primary",
1514
- name,
1515
- state: "selected"
1516
- })
1517
- },
1518
- positive: {
1519
- enabled: opts.muted({
1520
- base,
1521
- dark,
1522
- tone: "positive",
1523
- name,
1524
- state: "enabled"
1525
- }),
1526
- disabled: opts.muted({
1527
- base,
1528
- dark,
1529
- tone: "positive",
1530
- name,
1531
- state: "disabled"
1532
- }),
1533
- hovered: opts.muted({
1534
- base,
1535
- dark,
1536
- tone: "positive",
1537
- name,
1538
- state: "hovered"
1539
- }),
1540
- pressed: opts.muted({
1541
- base,
1542
- dark,
1543
- tone: "positive",
1544
- name,
1545
- state: "pressed"
1546
- }),
1547
- selected: opts.muted({
1548
- base,
1549
- dark,
1550
- tone: "positive",
1551
- name,
1552
- state: "selected"
1553
- })
1554
- },
1555
- caution: {
1556
- enabled: opts.muted({
1557
- base,
1558
- dark,
1559
- tone: "caution",
1560
- name,
1561
- state: "enabled"
1562
- }),
1563
- disabled: opts.muted({
1564
- base,
1565
- dark,
1566
- tone: "caution",
1567
- name,
1568
- state: "disabled"
1569
- }),
1570
- hovered: opts.muted({
1571
- base,
1572
- dark,
1573
- tone: "caution",
1574
- name,
1575
- state: "hovered"
1576
- }),
1577
- pressed: opts.muted({
1578
- base,
1579
- dark,
1580
- tone: "caution",
1581
- name,
1582
- state: "pressed"
1583
- }),
1584
- selected: opts.muted({
1585
- base,
1586
- dark,
1587
- tone: "caution",
1588
- name,
1589
- state: "selected"
1590
- })
1591
- },
1592
- critical: {
1593
- enabled: opts.muted({
1594
- base,
1595
- dark,
1596
- tone: "critical",
1597
- name,
1598
- state: "enabled"
1599
- }),
1600
- disabled: opts.muted({
1601
- base,
1602
- dark,
1603
- tone: "critical",
1604
- name,
1605
- state: "disabled"
1606
- }),
1607
- hovered: opts.muted({
1608
- base,
1609
- dark,
1610
- tone: "critical",
1611
- name,
1612
- state: "hovered"
1613
- }),
1614
- pressed: opts.muted({
1615
- base,
1616
- dark,
1617
- tone: "critical",
1618
- name,
1619
- state: "pressed"
1620
- }),
1621
- selected: opts.muted({
1622
- base,
1623
- dark,
1624
- tone: "critical",
1625
- name,
1626
- state: "selected"
1627
- })
1628
- }
1629
- };
1630
- }
1631
- function createSpot(opts, base, dark) {
1632
- return {
1633
- gray: opts.spot({
1634
- base,
1635
- dark,
1636
- key: "gray"
1637
- }),
1638
- blue: opts.spot({
1639
- base,
1640
- dark,
1641
- key: "blue"
1642
- }),
1643
- purple: opts.spot({
1644
- base,
1645
- dark,
1646
- key: "purple"
1647
- }),
1648
- magenta: opts.spot({
1649
- base,
1650
- dark,
1651
- key: "magenta"
1652
- }),
1653
- red: opts.spot({
1654
- base,
1655
- dark,
1656
- key: "red"
1657
- }),
1658
- orange: opts.spot({
1659
- base,
1660
- dark,
1661
- key: "orange"
1662
- }),
1663
- yellow: opts.spot({
1664
- base,
1665
- dark,
1666
- key: "yellow"
1667
- }),
1668
- green: opts.spot({
1669
- base,
1670
- dark,
1671
- key: "green"
1672
- }),
1673
- cyan: opts.spot({
1674
- base,
1675
- dark,
1676
- key: "cyan"
1677
- })
1678
- };
1679
- }
1680
- function createColorTheme(partialOpts = {}) {
1681
- const builders = {
1682
- ...defaultOpts,
1683
- ...partialOpts
1684
- };
1685
- return {
1686
- light: _createColorScheme(builders, !1),
1687
- dark: _createColorScheme(builders, !0)
1688
- };
1689
- }
1690
- function _createColorScheme(opts, dark) {
1691
- return {
1692
- default: _createColor(opts, dark, "default"),
1693
- transparent: _createColor(opts, dark, "transparent"),
1694
- primary: _createColor(opts, dark, "primary"),
1695
- positive: _createColor(opts, dark, "positive"),
1696
- caution: _createColor(opts, dark, "caution"),
1697
- critical: _createColor(opts, dark, "critical")
1698
- };
1699
- }
1700
- function _createColor(opts, dark, name) {
1701
- const base = opts.base({
1702
- dark,
1703
- name
1704
- }), solid = createSolidTones(opts, base, dark, name), muted = createMutedTones(opts, base, dark, name);
1705
- return {
1706
- base,
1707
- button: createButtonModes(opts, base, dark, solid, muted),
1708
- card: createCardStates(opts, base, dark, name, solid, muted),
1709
- dark,
1710
- input: createInputModes(opts, base, dark, solid, muted),
1711
- selectable: createSelectableTones(opts, base, dark, solid, muted),
1712
- spot: createSpot(opts, base, dark),
1713
- syntax: opts.syntax({
1714
- base,
1715
- dark
1716
- }),
1717
- solid,
1718
- muted
1719
- };
1720
- }
1721
- const defaultThemeFonts$1 = {
1722
- code: {
1723
- family: "ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace",
1724
- weights: {
1725
- regular: 400,
1726
- medium: 500,
1727
- semibold: 600,
1728
- bold: 700
1729
- },
1730
- sizes: [{
1731
- ascenderHeight: 4,
1732
- descenderHeight: 4,
1733
- fontSize: 10,
1734
- iconSize: 17,
1735
- lineHeight: 15,
1736
- letterSpacing: 0
1737
- }, {
1738
- ascenderHeight: 5,
1739
- descenderHeight: 5,
1740
- fontSize: 13,
1741
- iconSize: 21,
1742
- lineHeight: 19,
1743
- letterSpacing: 0
1744
- }, {
1745
- ascenderHeight: 6,
1746
- descenderHeight: 6,
1747
- fontSize: 16,
1748
- iconSize: 25,
1749
- lineHeight: 23,
1750
- letterSpacing: 0
1751
- }, {
1752
- ascenderHeight: 7,
1753
- descenderHeight: 7,
1754
- fontSize: 19,
1755
- iconSize: 29,
1756
- lineHeight: 27,
1757
- letterSpacing: 0
1758
- }, {
1759
- ascenderHeight: 8,
1760
- descenderHeight: 8,
1761
- fontSize: 22,
1762
- iconSize: 33,
1763
- lineHeight: 31,
1764
- letterSpacing: 0
1765
- }]
1766
- },
1767
- heading: {
1768
- family: 'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", Helvetica, Arial, system-ui, sans-serif',
1769
- weights: {
1770
- regular: 600,
1771
- medium: 700,
1772
- semibold: 800,
1773
- bold: 900
1774
- },
1775
- sizes: [{
1776
- ascenderHeight: 5,
1777
- descenderHeight: 5,
1778
- fontSize: 13,
1779
- iconSize: 17,
1780
- lineHeight: 19,
1781
- letterSpacing: 0
1782
- }, {
1783
- ascenderHeight: 6,
1784
- descenderHeight: 6,
1785
- fontSize: 16,
1786
- iconSize: 25,
1787
- lineHeight: 23,
1788
- letterSpacing: 0
1789
- }, {
1790
- ascenderHeight: 7,
1791
- descenderHeight: 7,
1792
- fontSize: 21,
1793
- iconSize: 33,
1794
- lineHeight: 29,
1795
- letterSpacing: -0.25
1796
- }, {
1797
- ascenderHeight: 8,
1798
- descenderHeight: 8,
1799
- fontSize: 27,
1800
- iconSize: 41,
1801
- lineHeight: 35,
1802
- letterSpacing: -0.5
1803
- }, {
1804
- ascenderHeight: 9.5,
1805
- descenderHeight: 8.5,
1806
- fontSize: 33,
1807
- iconSize: 49,
1808
- lineHeight: 41,
1809
- letterSpacing: -1
1810
- }, {
1811
- ascenderHeight: 10.5,
1812
- descenderHeight: 9.5,
1813
- fontSize: 38,
1814
- iconSize: 53,
1815
- lineHeight: 47,
1816
- letterSpacing: -1
1817
- }]
1818
- },
1819
- label: {
1820
- family: 'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", system-ui, sans-serif',
1821
- weights: {
1822
- regular: 500,
1823
- medium: 600,
1824
- semibold: 700,
1825
- bold: 800
1826
- },
1827
- sizes: [{
1828
- ascenderHeight: 2,
1829
- descenderHeight: 2,
1830
- fontSize: 8.1,
1831
- iconSize: 13,
1832
- lineHeight: 10,
1833
- letterSpacing: 0.5
1834
- }, {
1835
- ascenderHeight: 1.5,
1836
- descenderHeight: 2.5,
1837
- fontSize: 9.5,
1838
- iconSize: 15,
1839
- lineHeight: 11,
1840
- letterSpacing: 0.5
1841
- }, {
1842
- ascenderHeight: 2,
1843
- descenderHeight: 2,
1844
- fontSize: 10.8,
1845
- iconSize: 17,
1846
- lineHeight: 12,
1847
- letterSpacing: 0.5
1848
- }, {
1849
- ascenderHeight: 2,
1850
- descenderHeight: 2,
1851
- fontSize: 12.25,
1852
- iconSize: 19,
1853
- lineHeight: 13,
1854
- letterSpacing: 0.5
1855
- }, {
1856
- ascenderHeight: 1.5,
1857
- descenderHeight: 2.5,
1858
- fontSize: 13.6,
1859
- iconSize: 21,
1860
- lineHeight: 14,
1861
- letterSpacing: 0.5
1862
- }, {
1863
- ascenderHeight: 2,
1864
- descenderHeight: 2,
1865
- fontSize: 15,
1866
- iconSize: 23,
1867
- lineHeight: 15,
1868
- letterSpacing: 0.5
1869
- }]
1870
- },
1871
- text: {
1872
- family: 'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Liberation Sans", Helvetica, Arial, system-ui, sans-serif',
1873
- weights: {
1874
- regular: 400,
1875
- medium: 500,
1876
- semibold: 600,
1877
- bold: 700
1878
- },
1879
- sizes: [{
1880
- ascenderHeight: 4,
1881
- descenderHeight: 4,
1882
- fontSize: 10,
1883
- iconSize: 17,
1884
- lineHeight: 15,
1885
- letterSpacing: 0
1886
- }, {
1887
- ascenderHeight: 5,
1888
- descenderHeight: 5,
1889
- fontSize: 13,
1890
- iconSize: 21,
1891
- lineHeight: 19,
1892
- letterSpacing: 0
1893
- }, {
1894
- ascenderHeight: 6,
1895
- descenderHeight: 6,
1896
- fontSize: 15,
1897
- iconSize: 25,
1898
- lineHeight: 23,
1899
- letterSpacing: 0
1900
- }, {
1901
- ascenderHeight: 7,
1902
- descenderHeight: 7,
1903
- fontSize: 18,
1904
- iconSize: 29,
1905
- lineHeight: 27,
1906
- letterSpacing: 0
1907
- }, {
1908
- ascenderHeight: 8,
1909
- descenderHeight: 8,
1910
- fontSize: 21,
1911
- iconSize: 33,
1912
- lineHeight: 31,
1913
- letterSpacing: 0
1914
- }]
1915
- }
1916
- }, THEME_COLOR_SCHEMES = ["light", "dark"], THEME_COLOR_BLEND_MODES = ["multiply", "screen"], THEME_COLOR_CARD_TONES = [
1917
- "transparent",
1918
- "default",
1919
- "neutral",
1920
- "primary",
1921
- // deprecated
1922
- "suggest",
1923
- "positive",
1924
- "caution",
1925
- "critical"
1926
- ], THEME_COLOR_STATE_TONES = [
1927
- "default",
1928
- "neutral",
1929
- "primary",
1930
- // deprecated
1931
- "suggest",
1932
- "positive",
1933
- "caution",
1934
- "critical"
1935
- ], THEME_COLOR_STATES = ["enabled", "hovered", "pressed", "selected", "disabled"], THEME_COLOR_BUTTON_MODES = ["default", "ghost", "bleed"], THEME_COLOR_INPUT_MODES = ["default", "invalid"], THEME_COLOR_INPUT_STATES = ["enabled", "hovered", "readOnly", "disabled"], THEME_COLOR_AVATAR_COLORS = COLOR_HUES;
1936
- function isColorBlendModeValue(str) {
1937
- return THEME_COLOR_BLEND_MODES.includes(str);
1938
- }
1939
- function isColorHueKey(str) {
1940
- return COLOR_HUES.includes(str);
1941
- }
1942
- function isColorTintKey(str) {
1943
- return COLOR_TINTS.includes(str);
1944
- }
1945
- function isColorButtonMode(str) {
1946
- return THEME_COLOR_BUTTON_MODES.includes(str);
1947
- }
1948
- const COLOR_CONFIG_STATE_KEYS = ["_hue", "bg", "fg", "border", "focusRing", "muted/fg", "accent/fg", "link/fg", "code/bg", "code/fg", "skeleton/from", "skeleton/to", "status/dot", "status/icon"], COLOR_CONFIG_CARD_KEYS = [...COLOR_CONFIG_STATE_KEYS, "_hue", "bg", "fg", "border", "focusRing", "shadow/outline", "shadow/umbra", "shadow/penumbra", "shadow/ambient"], COLOR_CONFIG_BLEND_KEYS = ["_blend"], COLOR_CONFIG_AVATAR_COLORS = ["*", ...THEME_COLOR_AVATAR_COLORS], COLOR_CONFIG_CARD_TONES = ["*", ...THEME_COLOR_CARD_TONES], COLOR_CONFIG_STATE_TONES = ["*", ...THEME_COLOR_STATE_TONES], COLOR_CONFIG_STATES = ["*", ...THEME_COLOR_STATES], COLOR_CONFIG_INPUT_MODES = ["*", ...THEME_COLOR_INPUT_MODES], COLOR_CONFIG_INPUT_STATES = ["*", ...THEME_COLOR_INPUT_STATES];
1949
- function isColorConfigBaseTone(str) {
1950
- return COLOR_CONFIG_CARD_TONES.includes(str);
1951
- }
1952
- function isColorConfigBaseKey(str) {
1953
- return COLOR_CONFIG_CARD_KEYS.includes(str);
1954
- }
1955
- function isColorConfigStateKey(str) {
1956
- return COLOR_CONFIG_STATE_KEYS.includes(str);
1957
- }
1958
- function isColorConfigStateTone(str) {
1959
- return COLOR_CONFIG_STATE_TONES.includes(str);
1960
- }
1961
- function isColorConfigBlendKey(str) {
1962
- return COLOR_CONFIG_BLEND_KEYS.includes(str);
1963
- }
1964
- function isColorValue(str) {
1965
- return str === "black" || str === "white";
1966
- }
1967
- function isColorOpacityValue(str) {
1968
- return str === "0" || /^0\.[0-9]+$/.test(str) || str === "1";
1969
- }
1970
- function isColorMixPercentValue(str) {
1971
- return /^\d+%$/.test(str);
1972
- }
1973
- function parseTokenValue(str) {
1974
- const segments = str.split("/");
1975
- let nextSegment = segments.shift() || "";
1976
- const [segment0, segment0mix] = nextSegment.split(" ");
1977
- if (isColorTintKey(segment0)) {
1978
- const tint = segment0, segment1 = segments.shift() || "";
1979
- if (isColorMixPercentValue(segment0mix)) {
1980
- const mix2 = Number(segment0mix.slice(0, -1)) / 100;
1981
- return {
1982
- type: "color",
1983
- tint,
1984
- mix: mix2
1985
- };
1986
- }
1987
- if (isColorOpacityValue(segment1)) {
1988
- const opacity = Number(segment1);
1989
- return {
1990
- type: "color",
1991
- tint,
1992
- opacity
1993
- };
1994
- }
1995
- return {
1996
- type: "color",
1997
- tint
1998
- };
1999
- }
2000
- if (isColorValue(segment0)) {
2001
- const key = segment0, segment1 = segments.shift() || "";
2002
- if (isColorMixPercentValue(segment0mix)) {
2003
- const mix2 = Number(segment0mix.slice(0, -1)) / 100;
2004
- return {
2005
- type: "color",
2006
- key,
2007
- mix: mix2
2008
- };
2009
- }
2010
- if (isColorOpacityValue(segment1)) {
2011
- const opacity = Number(segment1);
2012
- return {
2013
- type: "color",
2014
- key,
2015
- opacity
2016
- };
2017
- }
2018
- return {
2019
- type: "color",
2020
- key
2021
- };
2022
- }
2023
- if (isColorHueKey(segment0)) {
2024
- const hue = segment0;
2025
- nextSegment = segments.shift() || "";
2026
- const [segment1, segment1mix] = nextSegment.split(" ");
2027
- if (isColorTintKey(segment1)) {
2028
- const tint = segment1, segment2 = segments.shift() || "";
2029
- if (isColorMixPercentValue(segment1mix)) {
2030
- const mix2 = Number(segment1mix.slice(0, -1)) / 100;
2031
- return {
2032
- type: "color",
2033
- hue,
2034
- tint,
2035
- mix: mix2
2036
- };
2037
- }
2038
- if (isColorOpacityValue(segment2)) {
2039
- const opacity = Number(segment2);
2040
- return {
2041
- type: "color",
2042
- hue,
2043
- tint,
2044
- opacity
2045
- };
2046
- }
2047
- return {
2048
- type: "color",
2049
- hue,
2050
- tint
2051
- };
2052
- }
2053
- return {
2054
- type: "hue",
2055
- value: hue
2056
- };
2057
- }
2058
- if (isColorBlendModeValue(segment0))
2059
- return {
2060
- type: "blendMode",
2061
- value: segment0
2062
- };
2063
- }
2064
- function compileColorTokenValue(node) {
2065
- let key = "";
2066
- return node.key === "black" || node.key === "white" ? key = node.key : key = `${node.hue}/${node.tint}`, node.mix !== void 0 ? `${key} ${node.mix * 100}%` : (node.opacity !== void 0 && (key += `/${node.opacity}`), key);
2067
- }
2068
- const DEFAULT_COLOR_TOKEN_VALUE = ["500", "500"];
2069
- function resolveColorTokenValue(context, value = DEFAULT_COLOR_TOKEN_VALUE) {
2070
- const {
2071
- hue,
2072
- scheme
2073
- } = context, node = parseTokenValue(value[scheme === "light" ? 0 : 1]);
2074
- if (!node || node.type !== "color")
2075
- throw new Error(`Invalid color token: ${value[0]}`);
2076
- return compileColorTokenValue({
2077
- ...node,
2078
- hue: node.hue || hue
2079
- });
2080
- }
2081
- const defaultColorTokens = {
2082
- base: {
2083
- "*": {
2084
- _blend: ["multiply", "screen"],
2085
- accent: {
2086
- fg: ["purple/600", "purple/400"]
2087
- },
2088
- avatar: {
2089
- "*": {
2090
- _blend: ["screen", "multiply"],
2091
- bg: ["500", "400"],
2092
- fg: ["white", "black"]
2093
- }
2094
- },
2095
- backdrop: ["gray/200/0.5", "black/0.5"],
2096
- badge: {
2097
- "*": {
2098
- bg: ["100", "900"],
2099
- fg: ["600", "400"],
2100
- icon: ["500", "500"],
2101
- dot: ["500", "500"]
2102
- },
2103
- positive: {
2104
- bg: ["200 50%", "900"],
2105
- fg: ["600", "500"]
2106
- },
2107
- caution: {
2108
- bg: ["200 50%", "900"],
2109
- fg: ["600", "500"]
2110
- }
2111
- },
2112
- bg: ["50", "950"],
2113
- border: ["200", "800"],
2114
- code: {
2115
- bg: ["50", "950"],
2116
- fg: ["600", "400"]
2117
- },
2118
- fg: ["800", "200"],
2119
- focusRing: ["blue/500", "blue/500"],
2120
- icon: ["600", "400"],
2121
- kbd: {
2122
- bg: ["white", "black"],
2123
- fg: ["600", "400"],
2124
- border: ["200", "800"]
2125
- },
2126
- link: {
2127
- fg: ["blue/600", "blue/300"]
2128
- },
2129
- muted: {
2130
- bg: ["50", "950"],
2131
- fg: ["700 75%", "300 75%"]
2132
- },
2133
- shadow: {
2134
- outline: ["500/0.3", "500/0.4"],
2135
- umbra: ["gray/500/0.1", "black/0.2"],
2136
- penumbra: ["gray/500/0.07", "black/0.14"],
2137
- ambient: ["gray/500/0.06", "black/0.12"]
2138
- },
2139
- skeleton: {
2140
- from: ["100", "900"],
2141
- to: ["100 50%", "900 50%"]
2142
- }
2143
- },
2144
- transparent: {
2145
- bg: ["50", "black"]
2146
- },
2147
- default: {
2148
- bg: ["white", "950"],
2149
- fg: ["800", "200"],
2150
- muted: {
2151
- fg: ["600", "400"]
2152
- }
2153
- },
2154
- primary: {
2155
- _hue: "blue"
2156
- },
2157
- suggest: {
2158
- _hue: "purple"
2159
- },
2160
- positive: {
2161
- _hue: "green",
2162
- shadow: {
2163
- outline: ["500/0.4", "500/0.4"]
2164
- }
2165
- },
2166
- caution: {
2167
- _hue: "yellow",
2168
- shadow: {
2169
- outline: ["600/0.3", "500/0.4"]
2170
- }
2171
- },
2172
- critical: {
2173
- _hue: "red"
2174
- }
2175
- },
2176
- button: {
2177
- default: {
2178
- "*": {
2179
- "*": {
2180
- _blend: ["screen", "multiply"],
2181
- accent: {
2182
- fg: ["purple/300", "purple/700"]
2183
- },
2184
- avatar: {
2185
- "*": {
2186
- _blend: ["screen", "multiply"],
2187
- bg: ["500", "400"],
2188
- fg: ["white", "black"]
2189
- }
2190
- },
2191
- badge: {
2192
- "*": {
2193
- bg: ["900", "100"],
2194
- fg: ["400", "600"],
2195
- dot: ["500", "500"],
2196
- icon: ["500", "500"]
2197
- }
2198
- },
2199
- bg: ["500", "400"],
2200
- border: ["500/0", "400/0"],
2201
- code: {
2202
- bg: ["500 20%", "400 20%"],
2203
- fg: ["200", "600"]
2204
- },
2205
- fg: ["white", "black"],
2206
- icon: ["100 70%", "900 70%"],
2207
- kbd: {
2208
- bg: ["black", "white"],
2209
- fg: ["200", "600"],
2210
- border: ["800", "200"]
2211
- },
2212
- link: {
2213
- fg: ["blue/200", "blue/600"]
2214
- },
2215
- muted: {
2216
- bg: ["950", "50"],
2217
- fg: ["100 70%", "900 70%"]
2218
- },
2219
- skeleton: {
2220
- from: ["900", "100"],
2221
- to: ["900 50%", "100 50%"]
2222
- }
2223
- },
2224
- hovered: {
2225
- bg: ["600", "300"],
2226
- border: ["700/0", "300/0"]
2227
- },
2228
- pressed: {
2229
- bg: ["700", "300"]
2230
- },
2231
- selected: {
2232
- bg: ["700", "300"]
2233
- },
2234
- disabled: {
2235
- _hue: "gray",
2236
- accent: {
2237
- fg: ["100 70%", "900 70%"]
2238
- },
2239
- avatar: {
2240
- "*": {
2241
- _blend: ["screen", "multiply"],
2242
- bg: ["gray/500", "gray/400"],
2243
- fg: ["white", "black"]
2244
- }
2245
- },
2246
- badge: {
2247
- "*": {
2248
- bg: ["gray/700", "gray/300"],
2249
- fg: ["white", "black"],
2250
- dot: ["white", "black"],
2251
- icon: ["white", "black"]
2252
- }
2253
- },
2254
- bg: ["300", "600"],
2255
- code: {
2256
- bg: ["950", "50"],
2257
- fg: ["300", "600"]
2258
- },
2259
- fg: ["300", "600"],
2260
- muted: {
2261
- bg: ["950", "50"],
2262
- fg: ["300", "600"]
2263
- },
2264
- kbd: {
2265
- bg: ["black", "white"],
2266
- fg: ["white", "black"],
2267
- border: ["700", "300"]
2268
- },
2269
- link: {
2270
- fg: ["100 70%", "900 70%"]
2271
- }
2272
- }
2273
- },
2274
- default: {
2275
- "*": {
2276
- avatar: {
2277
- "*": {
2278
- _blend: ["screen", "multiply"],
2279
- bg: ["500", "400"],
2280
- fg: ["white", "black"]
2281
- }
2282
- },
2283
- bg: ["800", "200"],
2284
- muted: {
2285
- bg: ["950", "50"],
2286
- fg: ["400", "600"]
2287
- }
2288
- },
2289
- hovered: {
2290
- bg: ["900", "100"]
2291
- },
2292
- pressed: {
2293
- bg: ["black", "white"]
2294
- },
2295
- selected: {
2296
- bg: ["black", "white"]
2297
- }
2298
- }
2299
- },
2300
- ghost: {
2301
- "*": {
2302
- "*": {
2303
- _blend: ["multiply", "screen"],
2304
- accent: {
2305
- fg: ["purple/700 60%", "purple/300 70%"]
2306
- },
2307
- avatar: {
2308
- "*": {
2309
- _blend: ["screen", "multiply"],
2310
- bg: ["500", "400"],
2311
- fg: ["white", "black"]
2312
- }
2313
- },
2314
- badge: {
2315
- "*": {
2316
- bg: ["100", "900"],
2317
- fg: ["600", "400"],
2318
- dot: ["500", "500"],
2319
- icon: ["500", "500"]
2320
- }
2321
- },
2322
- bg: ["50", "950"],
2323
- border: ["100", "900"],
2324
- code: {
2325
- bg: ["500 10%", "400 10%"],
2326
- fg: ["700 60%", "400 60%"]
2327
- },
2328
- fg: ["600", "400"],
2329
- icon: ["700 60%", "300 60%"],
2330
- kbd: {
2331
- bg: ["white", "black"],
2332
- fg: ["600", "400"],
2333
- border: ["200", "800"]
2334
- },
2335
- link: {
2336
- fg: ["blue/700 60%", "blue/300 60%"]
2337
- },
2338
- muted: {
2339
- bg: ["100", "950"],
2340
- fg: ["700 60%", "300 60%"]
2341
- },
2342
- skeleton: {
2343
- from: ["100", "900"],
2344
- to: ["100 50%", "900 50%"]
2345
- }
2346
- },
2347
- hovered: {
2348
- bg: ["100", "900"],
2349
- fg: ["700", "300"]
2350
- },
2351
- pressed: {
2352
- bg: ["200", "800"],
2353
- fg: ["800", "200"]
2354
- },
2355
- selected: {
2356
- bg: ["200", "800"],
2357
- fg: ["800", "200"]
2358
- },
2359
- disabled: {
2360
- _hue: "gray",
2361
- accent: {
2362
- fg: ["200", "800"]
2363
- },
2364
- avatar: {
2365
- "*": {
2366
- _blend: ["screen", "multiply"],
2367
- bg: ["gray/100", "gray/900"],
2368
- fg: ["white", "black"]
2369
- }
2370
- },
2371
- badge: {
2372
- "*": {
2373
- _hue: "gray",
2374
- bg: ["50", "950"],
2375
- fg: ["gray/200", "gray/800"],
2376
- dot: ["gray/200", "gray/800"],
2377
- icon: ["gray/200", "gray/800"]
2378
- }
2379
- },
2380
- border: ["100", "900"],
2381
- code: {
2382
- bg: ["50", "950"],
2383
- fg: ["200", "800"]
2384
- },
2385
- fg: ["400", "600"],
2386
- icon: ["300", "700"],
2387
- muted: {
2388
- fg: ["300", "700"]
2389
- },
2390
- kbd: {
2391
- bg: ["white", "black"],
2392
- fg: ["200", "800"],
2393
- border: ["100", "900"]
2394
- },
2395
- link: {
2396
- fg: ["200", "800"]
2397
- }
2398
- }
2399
- },
2400
- positive: {
2401
- "*": {
2402
- border: ["600 20%", "800"]
2403
- }
2404
- },
2405
- caution: {
2406
- "*": {
2407
- border: ["600 20%", "800"]
2408
- }
2409
- }
2410
- },
2411
- bleed: {
2412
- "*": {
2413
- "*": {
2414
- _blend: ["multiply", "screen"],
2415
- accent: {
2416
- fg: ["purple/700 70%", "purple/300 70%"]
2417
- },
2418
- avatar: {
2419
- "*": {
2420
- _blend: ["screen", "multiply"],
2421
- bg: ["500", "400"],
2422
- fg: ["white", "black"]
2423
- }
2424
- },
2425
- badge: {
2426
- "*": {
2427
- bg: ["100", "900"],
2428
- fg: ["600", "400"],
2429
- dot: ["500", "500"],
2430
- icon: ["500", "500"]
2431
- }
2432
- },
2433
- bg: ["white", "black"],
2434
- border: ["white/0", "black/0"],
2435
- code: {
2436
- bg: ["50", "950"],
2437
- fg: ["700 75%", "300 75%"]
2438
- },
2439
- fg: ["700", "300"],
2440
- icon: ["700 75%", "300 75%"],
2441
- kbd: {
2442
- bg: ["white", "black"],
2443
- fg: ["700", "300"],
2444
- border: ["200", "800"]
2445
- },
2446
- link: {
2447
- fg: ["blue/700 70%", "blue/300 70%"]
2448
- },
2449
- muted: {
2450
- bg: ["100", "950"],
2451
- fg: ["700 75%", "300 75%"]
2452
- },
2453
- skeleton: {
2454
- from: ["100", "900"],
2455
- to: ["100 50%", "900 50%"]
2456
- }
2457
- },
2458
- hovered: {
2459
- bg: ["50", "900"],
2460
- fg: ["800", "200"],
2461
- icon: ["800 70%", "300 70%"]
2462
- },
2463
- pressed: {
2464
- bg: ["100", "800"],
2465
- fg: ["800", "200"],
2466
- icon: ["800 70%", "200 70%"]
2467
- },
2468
- selected: {
2469
- bg: ["100", "900"],
2470
- fg: ["800", "200"],
2471
- icon: ["800 60%", "200 60%"]
2472
- },
2473
- disabled: {
2474
- _hue: "gray",
2475
- accent: {
2476
- fg: ["200", "800"]
2477
- },
2478
- avatar: {
2479
- "*": {
2480
- _blend: ["screen", "multiply"],
2481
- bg: ["gray/100", "gray/900"],
2482
- fg: ["white", "black"]
2483
- }
2484
- },
2485
- badge: {
2486
- "*": {
2487
- _hue: "gray",
2488
- bg: ["50", "950"],
2489
- fg: ["gray/200", "gray/800"],
2490
- dot: ["gray/200", "gray/800"],
2491
- icon: ["gray/200", "gray/800"]
2492
- }
2493
- },
2494
- code: {
2495
- bg: ["50", "950"],
2496
- fg: ["200", "800"]
2497
- },
2498
- fg: ["400", "600"],
2499
- icon: ["300", "700"],
2500
- muted: {
2501
- fg: ["400", "600"]
2502
- },
2503
- kbd: {
2504
- bg: ["white", "black"],
2505
- fg: ["200", "800"],
2506
- border: ["100", "900"]
2507
- },
2508
- link: {
2509
- fg: ["200", "800"]
2510
- }
2511
- }
2512
- }
2513
- }
2514
- },
2515
- input: {
2516
- "*": {
2517
- "*": {
2518
- _blend: ["multiply", "screen"],
2519
- bg: ["white", "black"],
2520
- border: ["200", "700"],
2521
- fg: ["black", "200"],
2522
- muted: {
2523
- bg: ["50", "950"]
2524
- },
2525
- placeholder: ["400", "600"]
2526
- },
2527
- hovered: {
2528
- border: ["300", "700"]
2529
- },
2530
- readOnly: {
2531
- bg: ["50", "950"],
2532
- border: ["200", "800"],
2533
- fg: ["800", "200"]
2534
- },
2535
- disabled: {
2536
- bg: ["50", "950"],
2537
- fg: ["400", "600"],
2538
- border: ["100", "900"],
2539
- placeholder: ["200", "800 50%"]
2540
- }
2541
- },
2542
- invalid: {
2543
- "*": {
2544
- _hue: "red",
2545
- bg: ["100", "950"]
2546
- }
2547
- }
2548
- },
2549
- selectable: {
2550
- "*": {
2551
- "*": {
2552
- _blend: ["multiply", "screen"],
2553
- accent: {
2554
- fg: ["purple/700 70%", "purple/300 70%"]
2555
- },
2556
- avatar: {
2557
- "*": {
2558
- _blend: ["screen", "multiply"],
2559
- bg: ["500", "400"],
2560
- fg: ["white", "black"]
2561
- }
2562
- },
2563
- badge: {
2564
- "*": {
2565
- bg: ["100", "900"],
2566
- fg: ["600", "400"],
2567
- dot: ["500", "500"],
2568
- icon: ["500", "500"]
2569
- }
2570
- },
2571
- bg: ["white", "black"],
2572
- border: ["200", "800"],
2573
- code: {
2574
- bg: ["50", "950"],
2575
- fg: ["600", "400"]
2576
- },
2577
- fg: ["700", "300"],
2578
- icon: ["700 75%", "300 75%"],
2579
- kbd: {
2580
- bg: ["white", "black"],
2581
- fg: ["600", "400"],
2582
- border: ["200", "800"]
2583
- },
2584
- link: {
2585
- fg: ["blue/700 70%", "blue/300 70%"]
2586
- },
2587
- muted: {
2588
- bg: ["50", "950"],
2589
- fg: ["700 75%", "300 75%"]
2590
- },
2591
- skeleton: {
2592
- from: ["100", "900"],
2593
- to: ["100 50%", "900 50%"]
2594
- }
2595
- },
2596
- hovered: {
2597
- bg: ["50", "950"]
2598
- },
2599
- pressed: {
2600
- bg: ["100", "900"]
2601
- },
2602
- selected: {
2603
- _blend: ["screen", "multiply"],
2604
- accent: {
2605
- fg: ["purple/300", "purple/700"]
2606
- },
2607
- avatar: {
2608
- "*": {
2609
- _blend: ["multiply", "screen"],
2610
- bg: ["white", "black"],
2611
- fg: ["black", "white"]
2612
- }
2613
- },
2614
- badge: {
2615
- "*": {
2616
- bg: ["900", "100"],
2617
- fg: ["400", "600"],
2618
- dot: ["500", "500"],
2619
- icon: ["500", "500"]
2620
- }
2621
- },
2622
- bg: ["500", "400"],
2623
- border: ["500 20%", "400 20%"],
2624
- code: {
2625
- bg: ["500 20%", "400 20%"],
2626
- fg: ["200", "600"]
2627
- },
2628
- fg: ["white", "black"],
2629
- icon: ["100 70%", "900 70%"],
2630
- kbd: {
2631
- bg: ["black", "white"],
2632
- fg: ["200", "600"],
2633
- border: ["800", "200"]
2634
- },
2635
- link: {
2636
- fg: ["blue/200", "blue/600"]
2637
- },
2638
- muted: {
2639
- bg: ["500 10%", "400 10%"],
2640
- fg: ["100 70%", "900 70%"]
2641
- },
2642
- skeleton: {
2643
- from: ["900", "100"],
2644
- to: ["900 50%", "100 50%"]
2645
- }
2646
- },
2647
- disabled: {
2648
- _hue: "gray",
2649
- accent: {
2650
- fg: ["200", "800"]
2651
- },
2652
- avatar: {
2653
- "*": {
2654
- _blend: ["screen", "multiply"],
2655
- bg: ["gray/100", "gray/900"],
2656
- fg: ["white", "black"]
2657
- }
2658
- },
2659
- badge: {
2660
- "*": {
2661
- _hue: "gray",
2662
- bg: ["50", "950"],
2663
- fg: ["gray/200", "gray/800"],
2664
- dot: ["gray/200", "gray/800"],
2665
- icon: ["gray/200", "gray/800"]
2666
- }
2667
- },
2668
- border: ["100", "900"],
2669
- code: {
2670
- bg: ["50", "950"],
2671
- fg: ["200", "800"]
2672
- },
2673
- fg: ["200", "800"],
2674
- icon: ["200", "800"],
2675
- kbd: {
2676
- bg: ["white", "black"],
2677
- fg: ["200", "800"],
2678
- border: ["100", "900"]
2679
- },
2680
- link: {
2681
- fg: ["200", "800"]
2682
- },
2683
- muted: {
2684
- bg: ["50 50%", "950 50%"],
2685
- fg: ["200", "800"]
2686
- }
2687
- }
2688
- },
2689
- default: {
2690
- selected: {
2691
- _hue: "blue"
2692
- }
2693
- },
2694
- critical: {
2695
- disabled: {
2696
- bg: ["50 50%", "950 50%"]
2697
- }
2698
- }
2699
- },
2700
- syntax: {
2701
- atrule: ["purple/600", "purple/400"],
2702
- attrName: ["green/600", "green/400"],
2703
- attrValue: ["yellow/600", "yellow/400"],
2704
- attribute: ["yellow/600", "yellow/400"],
2705
- boolean: ["purple/600", "purple/400"],
2706
- builtin: ["purple/600", "purple/400"],
2707
- cdata: ["yellow/600", "yellow/400"],
2708
- char: ["yellow/600", "yellow/400"],
2709
- class: ["orange/600", "orange/400"],
2710
- className: ["cyan/600", "cyan/400"],
2711
- comment: ["gray/400", "gray/600"],
2712
- constant: ["purple/600", "purple/400"],
2713
- deleted: ["red/600", "red/400"],
2714
- entity: ["red/600", "red/400"],
2715
- function: ["green/600", "green/400"],
2716
- hexcode: ["blue/600", "blue/400"],
2717
- id: ["purple/600", "purple/400"],
2718
- important: ["purple/600", "purple/400"],
2719
- inserted: ["yellow/600", "yellow/400"],
2720
- keyword: ["magenta/600", "magenta/400"],
2721
- number: ["purple/600", "purple/400"],
2722
- operator: ["magenta/600", "magenta/400"],
2723
- property: ["blue/600", "blue/400"],
2724
- pseudoClass: ["yellow/600", "yellow/400"],
2725
- pseudoElement: ["yellow/600", "yellow/400"],
2726
- punctuation: ["gray/600", "gray/400"],
2727
- regex: ["blue/600", "blue/400"],
2728
- selector: ["red/600", "red/400"],
2729
- string: ["yellow/600", "yellow/400"],
2730
- symbol: ["purple/600", "purple/400"],
2731
- tag: ["red/600", "red/400"],
2732
- unit: ["orange/600", "orange/400"],
2733
- url: ["red/600", "red/400"],
2734
- variable: ["red/600", "red/400"]
2735
- }
2736
- };
2737
- function isRecord$1(value) {
2738
- return !!(value && typeof value == "object" && !Array.isArray(value));
2739
- }
2740
- function merge$1(...records) {
2741
- const _records = records.filter(Boolean);
2742
- return _records.length === 0 ? {} : _records.reduce(_merge$1, {});
2743
- }
2744
- function _merge$1(acc, source) {
2745
- for (const key of Object.keys(source)) {
2746
- const prevValue = acc[key], nextValue = source[key];
2747
- isRecord$1(prevValue) && isRecord$1(nextValue) ? acc[key] = merge$1(prevValue, nextValue) : acc[key] = nextValue;
2748
- }
2749
- return acc;
2750
- }
2751
- function resolveColorTokens(inputTokens) {
2752
- const tokens = merge$1(defaultColorTokens, inputTokens);
2753
- return {
2754
- base: resolveBaseColorTokens(tokens),
2755
- button: resolveButtonColorTokens(tokens),
2756
- input: resolveInputColorTokens(tokens),
2757
- selectable: resolveSelectableColorTokens(tokens),
2758
- syntax: tokens.syntax
2759
- };
2760
- }
2761
- function resolveBaseColorTokens(sparseTokens) {
2762
- const tokens = {};
2763
- for (const tone of THEME_COLOR_CARD_TONES)
2764
- tokens[tone] = resolveBaseColorTones(sparseTokens, tone);
2765
- return tokens;
2766
- }
2767
- function resolveBaseColorTones(inputTokens, tone) {
2768
- const spec = merge$1(inputTokens?.base?.["*"], inputTokens?.base?.[tone]), hue = spec._hue || inputTokens?.base?.[tone]?._hue || "gray";
2769
- return {
2770
- ...spec,
2771
- _hue: hue,
2772
- avatar: COLOR_HUES.reduce((acc, hue2) => ({
2773
- ...acc,
2774
- [hue2]: merge$1({
2775
- _hue: hue2
2776
- }, spec.avatar?.["*"], spec.avatar?.[hue2])
2777
- }), {}),
2778
- badge: THEME_COLOR_STATE_TONES.reduce((acc, tone2) => ({
2779
- ...acc,
2780
- [tone2]: {
2781
- _hue: inputTokens?.base?.[tone2]?._hue || hue,
2782
- ...spec.badge?.["*"],
2783
- ...spec.badge?.[tone2]
2784
- }
2785
- }), {})
2786
- };
2787
- }
2788
- function resolveButtonColorTokens(inputTokens) {
2789
- const tokens = {};
2790
- for (const mode of THEME_COLOR_BUTTON_MODES)
2791
- tokens[mode] = resolveButtonToneColorTokens(inputTokens, mode);
2792
- return tokens;
2793
- }
2794
- function resolveButtonToneColorTokens(inputTokens, mode) {
2795
- const tokens = {};
2796
- for (const tone of THEME_COLOR_STATE_TONES)
2797
- tokens[tone] = resolveButtonModeColorTokens(inputTokens, mode, tone);
2798
- return tokens;
2799
- }
2800
- function resolveButtonModeColorTokens(inputTokens, mode, tone) {
2801
- const tokens = {};
2802
- for (const state of THEME_COLOR_STATES)
2803
- tokens[state] = resolveButtonStateColorTokens(inputTokens, tone, mode, state);
2804
- return tokens;
2805
- }
2806
- function resolveButtonStateColorTokens(inputTokens, tone, mode, state) {
2807
- const spec = merge$1(inputTokens?.button?.[mode]?.["*"]?.["*"], inputTokens?.button?.[mode]?.[tone]?.["*"], inputTokens?.button?.[mode]?.["*"]?.[state], inputTokens?.button?.[mode]?.[tone]?.[state]), hue = spec._hue || inputTokens?.base?.[tone]?._hue;
2808
- return {
2809
- ...spec,
2810
- _hue: hue,
2811
- avatar: COLOR_HUES.reduce((acc, hue2) => ({
2812
- ...acc,
2813
- [hue2]: merge$1({
2814
- _hue: hue2
2815
- }, spec.avatar?.["*"], spec.avatar?.[hue2])
2816
- }), {}),
2817
- badge: THEME_COLOR_STATE_TONES.reduce((acc, tone2) => ({
2818
- ...acc,
2819
- [tone2]: {
2820
- _hue: inputTokens?.base?.[tone2]?._hue || hue,
2821
- ...spec.badge?.["*"],
2822
- ...spec.badge?.[tone2]
2823
- }
2824
- }), {})
2825
- };
2826
- }
2827
- function resolveInputColorTokens(inputTokens) {
2828
- const tokens = {};
2829
- for (const mode of THEME_COLOR_INPUT_MODES)
2830
- tokens[mode] = resolveInputModeColorTokens(inputTokens, mode);
2831
- return tokens;
2832
- }
2833
- function resolveInputModeColorTokens(inputTokens, mode) {
2834
- const states = {};
2835
- for (const state of THEME_COLOR_INPUT_STATES)
2836
- states[state] = resolveInputStateColorTokens(inputTokens, mode, state);
2837
- return states;
2838
- }
2839
- function resolveInputStateColorTokens(inputTokens, mode, state) {
2840
- const spec = merge$1(inputTokens?.input?.["*"]?.["*"], inputTokens?.input?.[mode]?.["*"], inputTokens?.input?.["*"]?.[state], inputTokens?.input?.[mode]?.[state]), hue = spec._hue || inputTokens?.input?.[mode]?._hue;
2841
- return {
2842
- ...spec,
2843
- _hue: hue
2844
- };
2845
- }
2846
- function resolveSelectableColorTokens(inputTokens) {
2847
- const tokens = {};
2848
- for (const tone of THEME_COLOR_STATE_TONES)
2849
- tokens[tone] = resolveSelectableToneColorTokens(inputTokens, tone);
2850
- return tokens;
2851
- }
2852
- function resolveSelectableToneColorTokens(inputTokens, tone) {
2853
- const states = {
2854
- _hue: inputTokens?.selectable?.[tone]?._hue || inputTokens?.base?.[tone]?._hue
2855
- };
2856
- for (const state of THEME_COLOR_STATES)
2857
- states[state] = resolveSelectableStateColorTokens(inputTokens, tone, state);
2858
- return states;
2859
- }
2860
- function resolveSelectableStateColorTokens(inputTokens, tone, state) {
2861
- const spec = merge$1(inputTokens?.selectable?.["*"]?.["*"], inputTokens?.selectable?.[tone]?.["*"], inputTokens?.selectable?.["*"]?.[state], inputTokens?.selectable?.[tone]?.[state]), hue = spec._hue || inputTokens?.base?.[tone]?._hue;
2862
- return {
2863
- ...spec,
2864
- _hue: hue,
2865
- avatar: COLOR_HUES.reduce((acc, hue2) => ({
2866
- ...acc,
2867
- [hue2]: merge$1({
2868
- _hue: hue2
2869
- }, spec.avatar?.["*"], spec.avatar?.[hue2])
2870
- }), {}),
2871
- badge: THEME_COLOR_STATE_TONES.reduce((acc, tone2) => ({
2872
- ...acc,
2873
- [tone2]: {
2874
- _hue: inputTokens?.base?.[tone2]?._hue || hue,
2875
- ...spec.badge?.["*"],
2876
- ...spec.badge?.[tone2]
2877
- }
2878
- }), {})
2879
- };
2880
- }
2881
- function buildColorTheme(config) {
2882
- const resolvedConfig = {
2883
- color: resolveColorTokens(config?.color)
2884
- };
2885
- return {
2886
- light: buildColorScheme({
2887
- scheme: "light"
2888
- }, resolvedConfig),
2889
- dark: buildColorScheme({
2890
- scheme: "dark"
2891
- }, resolvedConfig)
2892
- };
2893
- }
2894
- function buildColorScheme(options, config) {
2895
- const {
2896
- scheme
2897
- } = options, colorScheme = {};
2898
- for (const tone of THEME_COLOR_CARD_TONES)
2899
- colorScheme[tone] = buildCardColorTheme({
2900
- scheme,
2901
- tone
2902
- }, config);
2903
- return colorScheme;
2904
- }
2905
- function buildCardColorTheme(options, config) {
2906
- const {
2907
- scheme,
2908
- tone
2909
- } = options, tokens = config?.color?.base?.[tone], context = {
2910
- hue: tokens?._hue || "gray",
2911
- scheme
2912
- };
2913
- return {
2914
- _blend: (tokens?._blend || ["multiply", "screen"])[scheme === "light" ? 0 : 1],
2915
- _dark: scheme === "dark",
2916
- accent: {
2917
- fg: resolveColorTokenValue(context, tokens?.accent?.fg)
2918
- },
2919
- avatar: buildAvatarColorTheme({
2920
- scheme
2921
- }, tokens),
2922
- backdrop: resolveColorTokenValue(context, tokens?.backdrop),
2923
- badge: buildBadgeColorTheme(tokens?.badge, {
2924
- scheme
2925
- }, config),
2926
- bg: resolveColorTokenValue(context, tokens?.bg),
2927
- border: resolveColorTokenValue(context, tokens?.border),
2928
- button: buildButtonColorTheme({
2929
- scheme,
2930
- tone
2931
- }, config),
2932
- code: {
2933
- bg: resolveColorTokenValue(context, tokens?.code?.bg),
2934
- fg: resolveColorTokenValue(context, tokens?.code?.fg)
2935
- },
2936
- fg: resolveColorTokenValue(context, tokens?.fg),
2937
- focusRing: resolveColorTokenValue(context, tokens?.focusRing),
2938
- icon: resolveColorTokenValue(context, tokens?.icon),
2939
- input: buildInputColorTheme({
2940
- scheme,
2941
- tone
2942
- }, config),
2943
- kbd: {
2944
- bg: resolveColorTokenValue(context, tokens?.kbd?.bg),
2945
- fg: resolveColorTokenValue(context, tokens?.kbd?.fg),
2946
- border: resolveColorTokenValue(context, tokens?.kbd?.border)
2947
- },
2948
- link: {
2949
- fg: resolveColorTokenValue(context, tokens?.link?.fg)
2950
- },
2951
- muted: {
2952
- bg: resolveColorTokenValue(context, tokens?.muted?.bg),
2953
- fg: resolveColorTokenValue(context, tokens?.muted?.fg)
2954
- },
2955
- selectable: buildSelectableColorTheme({
2956
- scheme,
2957
- tone
2958
- }, config),
2959
- shadow: buildShadowColorTheme({
2960
- scheme,
2961
- tone
2962
- }, config),
2963
- skeleton: {
2964
- from: resolveColorTokenValue(context, tokens?.skeleton?.from),
2965
- to: resolveColorTokenValue(context, tokens?.skeleton?.to)
2966
- },
2967
- syntax: buildSyntaxColorTheme({
2968
- scheme
2969
- }, config)
2970
- };
2971
- }
2972
- function buildShadowColorTheme(options, config) {
2973
- const {
2974
- scheme,
2975
- tone
2976
- } = options, tokens = config?.color?.base?.[tone], context = {
2977
- hue: tokens?._hue || "gray",
2978
- scheme
2979
- };
2980
- return {
2981
- outline: resolveColorTokenValue(context, tokens?.shadow?.outline),
2982
- umbra: resolveColorTokenValue(context, tokens?.shadow?.umbra),
2983
- penumbra: resolveColorTokenValue(context, tokens?.shadow?.penumbra),
2984
- ambient: resolveColorTokenValue(context, tokens?.shadow?.ambient)
2985
- };
2986
- }
2987
- function buildAvatarColorTheme(options, stateTokens) {
2988
- const {
2989
- scheme
2990
- } = options;
2991
- return {
2992
- gray: _buildAvatarColorTheme({
2993
- color: "gray",
2994
- scheme
2995
- }, stateTokens),
2996
- blue: _buildAvatarColorTheme({
2997
- color: "blue",
2998
- scheme
2999
- }, stateTokens),
3000
- purple: _buildAvatarColorTheme({
3001
- color: "purple",
3002
- scheme
3003
- }, stateTokens),
3004
- magenta: _buildAvatarColorTheme({
3005
- color: "magenta",
3006
- scheme
3007
- }, stateTokens),
3008
- red: _buildAvatarColorTheme({
3009
- color: "red",
3010
- scheme
3011
- }, stateTokens),
3012
- orange: _buildAvatarColorTheme({
3013
- color: "orange",
3014
- scheme
3015
- }, stateTokens),
3016
- yellow: _buildAvatarColorTheme({
3017
- color: "yellow",
3018
- scheme
3019
- }, stateTokens),
3020
- green: _buildAvatarColorTheme({
3021
- color: "green",
3022
- scheme
3023
- }, stateTokens),
3024
- cyan: _buildAvatarColorTheme({
3025
- color: "cyan",
3026
- scheme
3027
- }, stateTokens)
3028
- };
3029
- }
3030
- function _buildAvatarColorTheme(options, stateTokens) {
3031
- const {
3032
- color: color2,
3033
- scheme
3034
- } = options, tokens = stateTokens?.avatar?.[color2], context = {
3035
- hue: tokens?._hue || "gray",
3036
- scheme
3037
- };
3038
- return {
3039
- _blend: (tokens?._blend || ["screen", "multiply"])[scheme === "light" ? 0 : 1],
3040
- bg: resolveColorTokenValue(context, tokens?.bg),
3041
- fg: resolveColorTokenValue(context, tokens?.fg)
3042
- };
3043
- }
3044
- function buildBadgeColorTheme(tokens, options, config) {
3045
- const {
3046
- scheme
3047
- } = options, colorBadge = {};
3048
- for (const tone of THEME_COLOR_STATE_TONES)
3049
- colorBadge[tone] = _buildBadgeColorTheme(tokens, {
3050
- scheme,
3051
- tone
3052
- }, config);
3053
- return colorBadge;
3054
- }
3055
- function _buildBadgeColorTheme(parentTokens, options, config) {
3056
- const {
3057
- scheme,
3058
- tone
3059
- } = options, tokens = parentTokens?.[tone], context = {
3060
- hue: tokens?._hue || config?.color?.base?.[tone]?._hue || "gray",
3061
- scheme
3062
- };
3063
- return {
3064
- bg: resolveColorTokenValue(context, tokens?.bg),
3065
- fg: resolveColorTokenValue(context, tokens?.fg),
3066
- dot: resolveColorTokenValue(context, tokens?.dot),
3067
- icon: resolveColorTokenValue(context, tokens?.icon)
3068
- };
3069
- }
3070
- function buildButtonColorTheme(options, config) {
3071
- const {
3072
- scheme,
3073
- tone: cardTone
3074
- } = options, modes = {};
3075
- for (const mode of THEME_COLOR_BUTTON_MODES)
3076
- modes[mode] = buildButtonTonesColorTheme({
3077
- cardTone,
3078
- scheme,
3079
- mode
3080
- }, config);
3081
- return modes;
3082
- }
3083
- function buildButtonTonesColorTheme(options, config) {
3084
- const {
3085
- cardTone,
3086
- mode,
3087
- scheme
3088
- } = options, tones2 = {};
3089
- for (const tone of THEME_COLOR_STATE_TONES)
3090
- tones2[tone] = buildButtonStatesColorTheme({
3091
- cardTone,
3092
- mode,
3093
- scheme,
3094
- tone
3095
- }, config);
3096
- return tones2;
3097
- }
3098
- function buildButtonStatesColorTheme(options, config) {
3099
- const {
3100
- cardTone,
3101
- mode,
3102
- scheme,
3103
- tone
3104
- } = options, states = {};
3105
- for (const state of THEME_COLOR_STATES)
3106
- states[state] = buildButtonStateColorTheme({
3107
- cardTone,
3108
- mode,
3109
- tone,
3110
- scheme,
3111
- state
3112
- }, config);
3113
- return states;
3114
- }
3115
- function buildButtonStateColorTheme(options, config) {
3116
- const {
3117
- cardTone,
3118
- mode,
3119
- tone,
3120
- scheme,
3121
- state
3122
- } = options, cardTokens = config?.color?.base?.[cardTone], tokens = config?.color?.button?.[mode]?.[tone]?.[state], hue = tokens?._hue || cardTokens?._hue || "gray", blendMode = tokens?._blend || ["screen", "multiply"], context = {
3123
- hue,
3124
- scheme
3125
- };
3126
- return {
3127
- _blend: blendMode[scheme === "light" ? 0 : 1],
3128
- accent: {
3129
- fg: resolveColorTokenValue(context, tokens?.accent?.fg)
3130
- },
3131
- avatar: buildAvatarColorTheme({
3132
- scheme
3133
- }, tokens),
3134
- badge: buildBadgeColorTheme(tokens?.badge, {
3135
- scheme
3136
- }, config),
3137
- bg: resolveColorTokenValue(context, tokens?.bg),
3138
- border: resolveColorTokenValue(context, tokens?.border),
3139
- code: {
3140
- bg: resolveColorTokenValue(context, tokens?.code?.bg),
3141
- fg: resolveColorTokenValue(context, tokens?.code?.fg)
3142
- },
3143
- fg: resolveColorTokenValue(context, tokens?.fg),
3144
- icon: resolveColorTokenValue(context, tokens?.icon),
3145
- muted: {
3146
- bg: resolveColorTokenValue(context, tokens?.muted?.bg),
3147
- fg: resolveColorTokenValue(context, tokens?.muted?.fg)
3148
- },
3149
- kbd: {
3150
- bg: resolveColorTokenValue(context, tokens?.kbd?.bg),
3151
- fg: resolveColorTokenValue(context, tokens?.kbd?.fg),
3152
- border: resolveColorTokenValue(context, tokens?.kbd?.border)
3153
- },
3154
- link: {
3155
- fg: resolveColorTokenValue(context, tokens?.link?.fg)
3156
- },
3157
- skeleton: {
3158
- from: resolveColorTokenValue(context, tokens?.skeleton?.from),
3159
- to: resolveColorTokenValue(context, tokens?.skeleton?.to)
3160
- }
3161
- };
3162
- }
3163
- function buildInputColorTheme(options, config) {
3164
- const {
3165
- scheme,
3166
- tone
3167
- } = options;
3168
- return {
3169
- default: buildInputStatesColorTheme({
3170
- mode: "default",
3171
- scheme,
3172
- tone
3173
- }, config),
3174
- invalid: buildInputStatesColorTheme({
3175
- mode: "invalid",
3176
- scheme,
3177
- tone
3178
- }, config)
3179
- };
3180
- }
3181
- function buildInputStatesColorTheme(options, config) {
3182
- const {
3183
- mode,
3184
- scheme,
3185
- tone
3186
- } = options;
3187
- return {
3188
- enabled: buildInputStateColorTheme({
3189
- mode,
3190
- scheme,
3191
- state: "enabled",
3192
- cardTone: tone
3193
- }, config),
3194
- hovered: buildInputStateColorTheme({
3195
- mode,
3196
- scheme,
3197
- state: "hovered",
3198
- cardTone: tone
3199
- }, config),
3200
- readOnly: buildInputStateColorTheme({
3201
- mode,
3202
- scheme,
3203
- state: "readOnly",
3204
- cardTone: tone
3205
- }, config),
3206
- disabled: buildInputStateColorTheme({
3207
- mode,
3208
- scheme,
3209
- state: "disabled",
3210
- cardTone: tone
3211
- }, config)
3212
- };
3213
- }
3214
- function buildInputStateColorTheme(options, config) {
3215
- const {
3216
- cardTone,
3217
- mode,
3218
- scheme,
3219
- state
3220
- } = options, cardTokens = config?.color?.base?.[cardTone], tokens = config?.color?.input?.[mode]?.[state], hue = tokens?._hue || cardTokens?._hue || "gray", blendMode = tokens?._blend || ["screen", "multiply"], context = {
3221
- hue,
3222
- scheme
3223
- };
3224
- return {
3225
- _blend: blendMode[scheme === "light" ? 0 : 1],
3226
- bg: resolveColorTokenValue(context, tokens?.bg),
3227
- border: resolveColorTokenValue(context, tokens?.border),
3228
- fg: resolveColorTokenValue(context, tokens?.fg),
3229
- muted: {
3230
- bg: resolveColorTokenValue(context, tokens?.muted?.bg)
3231
- },
3232
- placeholder: resolveColorTokenValue(context, tokens?.placeholder)
3233
- };
3234
- }
3235
- function buildSelectableColorTheme(options, config) {
3236
- const {
3237
- scheme,
3238
- tone: cardTone
3239
- } = options, tones2 = {};
3240
- for (const tone of THEME_COLOR_STATE_TONES)
3241
- tones2[tone] = buildSelectableStatesColorTheme({
3242
- cardTone,
3243
- scheme,
3244
- tone
3245
- }, config);
3246
- return tones2;
3247
- }
3248
- function buildSelectableStatesColorTheme(options, config) {
3249
- const {
3250
- cardTone,
3251
- scheme,
3252
- tone
3253
- } = options, states = {};
3254
- for (const state of THEME_COLOR_STATES)
3255
- states[state] = buildSelectableStateColorTheme({
3256
- cardTone,
3257
- tone,
3258
- scheme,
3259
- state
3260
- }, config);
3261
- return states;
3262
- }
3263
- function buildSelectableStateColorTheme(options, config) {
3264
- const {
3265
- cardTone,
3266
- scheme,
3267
- state,
3268
- tone
3269
- } = options, cardTokens = config?.color?.base?.[cardTone], tokens = config?.color?.selectable?.[tone]?.[state], hue = tokens?._hue || cardTokens?._hue || "gray", blendMode = tokens?._blend || ["screen", "multiply"], context = {
3270
- hue,
3271
- scheme
3272
- };
3273
- return {
3274
- _blend: blendMode[scheme === "light" ? 0 : 1],
3275
- accent: {
3276
- fg: resolveColorTokenValue(context, tokens?.accent?.fg)
3277
- },
3278
- avatar: buildAvatarColorTheme({
3279
- scheme
3280
- }, tokens),
3281
- badge: buildBadgeColorTheme(tokens?.badge, {
3282
- scheme
3283
- }, config),
3284
- bg: resolveColorTokenValue(context, tokens?.bg),
3285
- border: resolveColorTokenValue(context, tokens?.border),
3286
- code: {
3287
- bg: resolveColorTokenValue(context, tokens?.code?.bg),
3288
- fg: resolveColorTokenValue(context, tokens?.code?.fg)
3289
- },
3290
- fg: resolveColorTokenValue(context, tokens?.fg),
3291
- icon: resolveColorTokenValue(context, tokens?.icon),
3292
- muted: {
3293
- bg: resolveColorTokenValue(context, tokens?.muted?.bg),
3294
- fg: resolveColorTokenValue(context, tokens?.muted?.fg)
3295
- },
3296
- kbd: {
3297
- bg: resolveColorTokenValue(context, tokens?.kbd?.bg),
3298
- fg: resolveColorTokenValue(context, tokens?.kbd?.fg),
3299
- border: resolveColorTokenValue(context, tokens?.kbd?.border)
3300
- },
3301
- link: {
3302
- fg: resolveColorTokenValue(context, tokens?.link?.fg)
3303
- },
3304
- skeleton: {
3305
- from: resolveColorTokenValue(context, tokens?.skeleton?.from),
3306
- to: resolveColorTokenValue(context, tokens?.skeleton?.to)
3307
- }
3308
- };
3309
- }
3310
- function buildSyntaxColorTheme(options, config) {
3311
- const {
3312
- scheme
3313
- } = options, tokens = config?.color?.syntax, context = {
3314
- hue: "gray",
3315
- scheme
3316
- };
3317
- return {
3318
- atrule: resolveColorTokenValue(context, tokens?.atrule),
3319
- attrName: resolveColorTokenValue(context, tokens?.attrName),
3320
- attrValue: resolveColorTokenValue(context, tokens?.attrValue),
3321
- attribute: resolveColorTokenValue(context, tokens?.attribute),
3322
- boolean: resolveColorTokenValue(context, tokens?.boolean),
3323
- builtin: resolveColorTokenValue(context, tokens?.builtin),
3324
- cdata: resolveColorTokenValue(context, tokens?.cdata),
3325
- char: resolveColorTokenValue(context, tokens?.char),
3326
- class: resolveColorTokenValue(context, tokens?.class),
3327
- className: resolveColorTokenValue(context, tokens?.className),
3328
- comment: resolveColorTokenValue(context, tokens?.comment),
3329
- constant: resolveColorTokenValue(context, tokens?.constant),
3330
- deleted: resolveColorTokenValue(context, tokens?.deleted),
3331
- doctype: resolveColorTokenValue(context, tokens?.doctype),
3332
- entity: resolveColorTokenValue(context, tokens?.entity),
3333
- function: resolveColorTokenValue(context, tokens?.function),
3334
- hexcode: resolveColorTokenValue(context, tokens?.hexcode),
3335
- id: resolveColorTokenValue(context, tokens?.id),
3336
- important: resolveColorTokenValue(context, tokens?.important),
3337
- inserted: resolveColorTokenValue(context, tokens?.inserted),
3338
- keyword: resolveColorTokenValue(context, tokens?.keyword),
3339
- number: resolveColorTokenValue(context, tokens?.number),
3340
- operator: resolveColorTokenValue(context, tokens?.operator),
3341
- prolog: resolveColorTokenValue(context, tokens?.prolog),
3342
- property: resolveColorTokenValue(context, tokens?.property),
3343
- pseudoClass: resolveColorTokenValue(context, tokens?.pseudoClass),
3344
- pseudoElement: resolveColorTokenValue(context, tokens?.pseudoElement),
3345
- punctuation: resolveColorTokenValue(context, tokens?.punctuation),
3346
- regex: resolveColorTokenValue(context, tokens?.regex),
3347
- selector: resolveColorTokenValue(context, tokens?.selector),
3348
- string: resolveColorTokenValue(context, tokens?.string),
3349
- symbol: resolveColorTokenValue(context, tokens?.symbol),
3350
- tag: resolveColorTokenValue(context, tokens?.tag),
3351
- unit: resolveColorTokenValue(context, tokens?.unit),
3352
- url: resolveColorTokenValue(context, tokens?.url),
3353
- variable: resolveColorTokenValue(context, tokens?.variable)
3354
- };
3355
- }
3356
- const defaultColorPalette = color;
3357
- function mixChannel(b, s, weight) {
3358
- const delta = (s - b) * weight;
3359
- return b + delta;
3360
- }
3361
- function mix(b, s, weight) {
3362
- return {
3363
- r: mixChannel(b.r, s.r, weight),
3364
- g: mixChannel(b.g, s.g, weight),
3365
- b: mixChannel(b.b, s.b, weight)
3366
- };
3367
- }
3368
- function multiplyChannel(b, s) {
3369
- return b * s;
3370
- }
3371
- function multiply(b, s) {
3372
- return {
3373
- r: multiplyChannel(b.r / 255, s.r / 255) * 255,
3374
- g: multiplyChannel(b.g / 255, s.g / 255) * 255,
3375
- b: multiplyChannel(b.b / 255, s.b / 255) * 255
3376
- };
3377
- }
3378
- function screenChannel(b, s) {
3379
- return b + s - b * s;
3380
- }
3381
- function screen(b, s) {
3382
- return {
3383
- r: screenChannel(b.r / 255, s.r / 255) * 255,
3384
- g: screenChannel(b.g / 255, s.g / 255) * 255,
3385
- b: screenChannel(b.b / 255, s.b / 255) * 255
3386
- };
3387
- }
3388
- function lerp(x, y, a) {
3389
- return x * (1 - a) + y * a;
3390
- }
3391
- function invlerp(x, y, a) {
3392
- return clamp((a - x) / (y - x));
3393
- }
3394
- function clamp(a, min = 0, max = 1) {
3395
- return Math.min(max, Math.max(min, a));
3396
- }
3397
- function range(x1, y1, x2, y2, a) {
3398
- return lerp(x2, y2, invlerp(x1, y1, a));
3399
- }
3400
- function round(value) {
3401
- return Math.round(value);
3402
- }
3403
- function hexToRgb(hex) {
3404
- if (hex.length === 4) {
3405
- const hexR = hex.slice(1, 2), hexG = hex.slice(2, 3), hexB = hex.slice(3, 4);
3406
- return {
3407
- r: parseInt(hexR + hexR, 16),
3408
- g: parseInt(hexG + hexG, 16),
3409
- b: parseInt(hexB + hexB, 16)
3410
- };
3411
- }
3412
- return {
3413
- r: parseInt(hex.slice(1, 3), 16),
3414
- g: parseInt(hex.slice(3, 5), 16),
3415
- b: parseInt(hex.slice(5, 7), 16)
3416
- };
3417
- }
3418
- function rgbaToRGBA(rgba2) {
3419
- const values = rgba2.replace(/rgba\(|\)/g, "").split(",");
3420
- return {
3421
- r: parseInt(values[0]),
3422
- g: parseInt(values[1]),
3423
- b: parseInt(values[2]),
3424
- a: parseFloat(values[3])
3425
- };
3426
- }
3427
- function rgbToHex(color2) {
3428
- const r = round(clamp(Math.round(color2.r), 0, 255)), g = round(clamp(Math.round(color2.g), 0, 255)), b = round(clamp(Math.round(color2.b), 0, 255));
3429
- return "a" in color2 ? `rgba(${r},${g},${b},${color2.a})` : "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
3430
- }
3431
- function rgbToHsl({
3432
- r,
3433
- g,
3434
- b
3435
- }) {
3436
- r /= 255, g /= 255, b /= 255;
3437
- const cmin = Math.min(r, g, b), cmax = Math.max(r, g, b), delta = cmax - cmin;
3438
- let h = 0, s = 0, l = 0;
3439
- return delta == 0 ? h = 0 : cmax == r ? h = (g - b) / delta % 6 : cmax == g ? h = (b - r) / delta + 2 : h = (r - g) / delta + 4, h = Math.round(h * 60), h < 0 && (h += 360), l = (cmax + cmin) / 2, s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1)), s = +(s * 100).toFixed(1), l = +(l * 100).toFixed(1), {
3440
- h,
3441
- s,
3442
- l
3443
- };
3444
- }
3445
- function hslToRgb(hsl) {
3446
- const s = hsl.s / 100, l = hsl.l / 100, c = (1 - Math.abs(2 * l - 1)) * s, x = c * (1 - Math.abs(hsl.h / 60 % 2 - 1)), m = l - c / 2;
3447
- let r = 0, g = 0, b = 0;
3448
- return 0 <= hsl.h && hsl.h < 60 ? (r = c, g = x, b = 0) : 60 <= hsl.h && hsl.h < 120 ? (r = x, g = c, b = 0) : 120 <= hsl.h && hsl.h < 180 ? (r = 0, g = c, b = x) : 180 <= hsl.h && hsl.h < 240 ? (r = 0, g = x, b = c) : 240 <= hsl.h && hsl.h < 300 ? (r = x, g = 0, b = c) : 300 <= hsl.h && hsl.h < 360 && (r = c, g = 0, b = x), {
3449
- r: Math.round((r + m) * 255),
3450
- g: Math.round((g + m) * 255),
3451
- b: Math.round((b + m) * 255)
3452
- };
3453
- }
3454
- const HEX_CHARS = "0123456789ABCDEFabcdef", HSL_RE = /hsl\(\s*(\d+)\s*,\s*((\d+(?:\.\d+)?)%)\s*,\s*((\d+(?:\.\d+)?)%)\s*\)/i;
3455
- function isHexChars(str) {
3456
- for (const c of str)
3457
- if (HEX_CHARS.indexOf(c) === -1)
3458
- return !1;
3459
- return !0;
3460
- }
3461
- function isHex(str) {
3462
- return str[0] !== "#" || !(str.length === 4 || str.length === 7) ? !1 : isHexChars(str.slice(1));
3463
- }
3464
- function parseHsl(str) {
3465
- const res = HSL_RE.exec(str);
3466
- if (!res)
3467
- throw new Error(`parseHsl: string is not a HSL color: "${str}"`);
3468
- return {
3469
- h: parseInt(res[1]),
3470
- s: parseFloat(res[3]),
3471
- l: parseFloat(res[5])
3472
- };
3473
- }
3474
- function parseColor(color2) {
3475
- if (!color2) return {
3476
- r: 0,
3477
- g: 0,
3478
- b: 0
3479
- };
3480
- if (typeof color2 != "string")
3481
- throw new Error("parseColor: expected a string");
3482
- if (isHex(color2))
3483
- return hexToRgb(color2);
3484
- if (color2.startsWith("hsl("))
3485
- return hslToRgb(parseHsl(color2));
3486
- if (color2.startsWith("rgba("))
3487
- return rgbaToRGBA(color2);
3488
- throw new Error(`parseColor: unexpected color format: "${color2}"`);
3489
- }
3490
- function getContrastRatio(bg, fg) {
3491
- const rgb1 = parseColor(bg), rgb2 = parseColor(fg), c1 = rgb_lrgb(rgb1), c2 = rgb_lrgb(rgb2), l1 = lrgb_luminance(c1), l2 = lrgb_luminance(c2);
3492
- return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);
3493
- }
3494
- function rgb_lrgb({
3495
- r,
3496
- g,
3497
- b
3498
- }) {
3499
- return [rgb_lrgb1(r / 255), rgb_lrgb1(g / 255), rgb_lrgb1(b / 255)];
3500
- }
3501
- function rgb_lrgb1(v) {
3502
- return v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;
3503
- }
3504
- function lrgb_luminance([r, g, b]) {
3505
- return 0.2126 * r + 0.7152 * g + 0.0722 * b;
3506
- }
3507
- function rgba(color2, a) {
3508
- if (typeof color2 == "string" && color2.startsWith("var("))
3509
- return `color-mix(in srgb, transparent, ${color2} ${a * 100}%)`;
3510
- const rgb = parseColor(color2);
3511
- return `rgba(${rgb.r},${rgb.g},${rgb.b},${a})`;
3512
- }
3513
- const RGB_RANGE = [0, 255];
3514
- function mixThemeColor(value, options) {
3515
- const {
3516
- blendMode
3517
- } = options, color2 = parseColor(value), black2 = parseColor(options.black), white2 = parseColor(options.white), bg = options.bg ? parseColor(options.bg) : blendMode === "multiply" ? white2 : black2, paletteRange = {
3518
- r: [black2.r, white2.r],
3519
- g: [black2.g, white2.g],
3520
- b: [black2.b, white2.b]
3521
- }, convertedBgColor = {
3522
- r: clamp(range(...paletteRange.r, ...RGB_RANGE, bg.r), ...RGB_RANGE),
3523
- g: clamp(range(...paletteRange.g, ...RGB_RANGE, bg.g), ...RGB_RANGE),
3524
- b: clamp(range(...paletteRange.b, ...RGB_RANGE, bg.b), ...RGB_RANGE)
3525
- }, convertedColor = {
3526
- r: clamp(range(...paletteRange.r, ...RGB_RANGE, color2.r), ...RGB_RANGE),
3527
- g: clamp(range(...paletteRange.g, ...RGB_RANGE, color2.g), ...RGB_RANGE),
3528
- b: clamp(range(...paletteRange.b, ...RGB_RANGE, color2.b), ...RGB_RANGE)
3529
- }, resultColor = blendMode === "multiply" ? multiply(convertedBgColor, convertedColor) : screen(convertedBgColor, convertedColor), v = {
3530
- r: clamp(range(...RGB_RANGE, ...paletteRange.r, resultColor.r), ...paletteRange.r),
3531
- g: clamp(range(...RGB_RANGE, ...paletteRange.g, resultColor.g), ...paletteRange.g),
3532
- b: clamp(range(...RGB_RANGE, ...paletteRange.b, resultColor.b), ...paletteRange.b)
3533
- };
3534
- return rgbToHex(v);
3535
- }
3536
- function renderColorValue(str, options) {
3537
- const {
3538
- bg,
3539
- blendMode,
3540
- colorPalette
3541
- } = options;
3542
- if (bg === "white")
3543
- throw new Error("Cannot blend with white background");
3544
- const node = parseTokenValue(str);
3545
- if (!node || node.type !== "color")
3546
- throw new Error(`Invalid color token value: ${str}`);
3547
- let hex = "";
3548
- if (node.key === "black" && (hex = renderColorHex(colorPalette.black)), node.key === "white" && (hex = renderColorHex(colorPalette.white)), node.hue && node.tint && (hex = renderColorHex(colorPalette[node.hue][node.tint])), !hex)
3549
- throw new Error(`Invalid color token value: ${str}`);
3550
- const hexBeforeMix = hex, mixOptions = {
3551
- blendMode,
3552
- bg,
3553
- black: renderColorHex(colorPalette.black),
3554
- // opacity: node.opacity,
3555
- white: renderColorHex(colorPalette.white)
3556
- };
3557
- try {
3558
- if (hex = mixThemeColor(hex, mixOptions), bg && node.mix !== void 0) {
3559
- const from = hexToRgb(bg), to = hexToRgb(hex);
3560
- hex = rgbToHex(mix(from, to, node.mix));
3561
- }
3562
- } catch (err) {
3563
- throw console.warn("could not blend", hex, mixOptions), err;
3564
- }
3565
- return hex === "#aN" && (console.warn(`invalid color token value: ${str}`), hex = hexBeforeMix), node.opacity !== void 0 && (hex = rgba(hex, node.opacity)), hex;
3566
- }
3567
- function renderColorHex(color2) {
3568
- return typeof color2 == "string" ? color2 : color2.hex;
3569
- }
3570
- function renderThemeColorSchemes(value, config) {
3571
- const colorPalette = config?.palette ?? defaultColorPalette;
3572
- return {
3573
- light: renderThemeColorScheme(colorPalette, value.light),
3574
- dark: renderThemeColorScheme(colorPalette, value.dark)
3575
- };
3576
- }
3577
- function renderThemeColorScheme(colorPalette, value) {
3578
- const toneEntries = Object.entries(value), [, transparentTone] = toneEntries.find(([k]) => k === "transparent"), [, defaultTone] = toneEntries.find(([k]) => k === "default"), renderedTransparentTone = renderThemeColor(transparentTone, {
3579
- colorPalette
3580
- }), renderedDefaultTone = renderThemeColor(defaultTone, {
3581
- colorPalette
3582
- }), bg = renderedDefaultTone.bg;
3583
- if (bg === "white")
3584
- throw new Error("Cannot blend with white background");
3585
- return Object.fromEntries([["transparent", renderedTransparentTone], ["default", renderedDefaultTone], ...toneEntries.filter(([k]) => k !== "default" && k !== "transparent").map(([k, v]) => [k, renderThemeColor(v, {
3586
- bg,
3587
- colorPalette
3588
- })])]);
3589
- }
3590
- function renderThemeColor(value, options) {
3591
- const {
3592
- colorPalette,
3593
- bg
3594
- } = options, blendMode = value._blend || "multiply", baseBg = renderColorValue(value.bg, {
3595
- colorPalette,
3596
- bg,
3597
- blendMode
3598
- }), colorOptions = {
3599
- colorPalette,
3600
- bg: baseBg,
3601
- blendMode
3602
- }, button = renderThemeColorButton(value.button, {
3603
- baseBg,
3604
- blendMode,
3605
- colorPalette
3606
- }), selectable = renderThemeColorSelectable(value.selectable, {
3607
- colorPalette,
3608
- baseBg,
3609
- blendMode
3610
- }), shadow = {
3611
- outline: renderColorValue(value.shadow.outline, colorOptions),
3612
- umbra: renderColorValue(value.shadow.umbra, {
3613
- ...colorOptions,
3614
- bg: void 0,
3615
- colorPalette: {
3616
- ...colorPalette,
3617
- black: "#000000"
3618
- }
3619
- }),
3620
- penumbra: renderColorValue(value.shadow.penumbra, {
3621
- ...colorOptions,
3622
- bg: void 0,
3623
- colorPalette: {
3624
- ...colorPalette,
3625
- black: "#000000"
3626
- }
3627
- }),
3628
- ambient: renderColorValue(value.shadow.ambient, {
3629
- ...colorOptions,
3630
- bg: void 0,
3631
- colorPalette: {
3632
- ...colorPalette,
3633
- black: "#000000"
3634
- }
3635
- })
3636
- };
3637
- return {
3638
- _blend: blendMode,
3639
- _dark: value._dark,
3640
- accent: {
3641
- fg: renderColorValue(value.accent.fg, colorOptions)
3642
- },
3643
- avatar: renderThemeColorAvatar(value.avatar, {
3644
- baseBg,
3645
- colorPalette,
3646
- blendMode
3647
- }),
3648
- backdrop: renderColorValue(value.backdrop, colorOptions),
3649
- badge: renderThemeColorBadge(value.badge, {
3650
- baseBg,
3651
- colorPalette,
3652
- blendMode
3653
- }),
3654
- bg: baseBg,
3655
- border: renderColorValue(value.border, colorOptions),
3656
- button,
3657
- code: {
3658
- bg: renderColorValue(value.code.bg, colorOptions),
3659
- fg: renderColorValue(value.code.fg, colorOptions)
3660
- },
3661
- fg: renderColorValue(value.fg, colorOptions),
3662
- focusRing: renderColorValue(value.focusRing, colorOptions),
3663
- icon: renderColorValue(value.icon, colorOptions),
3664
- input: renderThemeColorInput(value.input, {
3665
- baseBg,
3666
- colorPalette,
3667
- blendMode
3668
- }),
3669
- kbd: renderThemeColorKBD(value.kbd, {
3670
- baseBg,
3671
- colorPalette,
3672
- blendMode
3673
- }),
3674
- link: {
3675
- fg: renderColorValue(value.link.fg, colorOptions)
3676
- },
3677
- muted: {
3678
- bg: renderColorValue(value.muted.bg, colorOptions),
3679
- fg: renderColorValue(value.muted.fg, colorOptions)
3680
- },
3681
- shadow,
3682
- skeleton: {
3683
- from: renderColorValue(value.skeleton.from, colorOptions),
3684
- to: renderColorValue(value.skeleton.to, colorOptions)
3685
- },
3686
- syntax: renderSyntaxColorTheme(value.syntax, {
3687
- baseBg,
3688
- colorPalette,
3689
- blendMode
3690
- }),
3691
- selectable
3692
- };
3693
- }
3694
- function renderThemeColorKBD(value, options) {
3695
- const {
3696
- baseBg,
3697
- blendMode,
3698
- colorPalette
3699
- } = options, rootOptions = {
3700
- bg: baseBg,
3701
- blendMode,
3702
- colorPalette
3703
- }, bg = renderColorValue(value.bg, rootOptions), colorOptions = {
3704
- bg,
3705
- blendMode,
3706
- colorPalette
3707
- };
3708
- return {
3709
- bg,
3710
- fg: renderColorValue(value.fg, colorOptions),
3711
- border: renderColorValue(value.border, colorOptions)
3712
- };
3713
- }
3714
- function renderThemeColorAvatar(value, options) {
3715
- const colorAvatar = {};
3716
- for (const hue of COLOR_HUES)
3717
- colorAvatar[hue] = renderThemeColorAvatarColor(value[hue], options);
3718
- return colorAvatar;
3719
- }
3720
- function renderThemeColorAvatarColor(value, options) {
3721
- const {
3722
- baseBg,
3723
- blendMode: rootBlendMode,
3724
- colorPalette
3725
- } = options, blendMode = value._blend || "multiply", rootOptions = {
3726
- bg: baseBg,
3727
- blendMode: rootBlendMode,
3728
- colorPalette
3729
- }, bg = renderColorValue(value.bg, rootOptions), colorOptions = {
3730
- bg,
3731
- blendMode,
3732
- colorPalette
3733
- };
3734
- return {
3735
- _blend: blendMode,
3736
- bg,
3737
- fg: renderColorValue(value.fg, colorOptions)
3738
- };
3739
- }
3740
- function renderThemeColorBadge(value, options) {
3741
- const colorBadge = {};
3742
- for (const tone of THEME_COLOR_STATE_TONES)
3743
- colorBadge[tone] = renderThemeColorBadgeColor(value[tone], options);
3744
- return colorBadge;
3745
- }
3746
- function renderThemeColorBadgeColor(value, options) {
3747
- const {
3748
- baseBg,
3749
- blendMode: rootBlendMode,
3750
- colorPalette
3751
- } = options, blendMode = rootBlendMode, rootOptions = {
3752
- bg: baseBg,
3753
- blendMode: rootBlendMode,
3754
- colorPalette
3755
- }, bg = renderColorValue(value.bg, rootOptions), colorOptions = {
3756
- bg,
3757
- blendMode,
3758
- colorPalette
3759
- };
3760
- return {
3761
- bg,
3762
- dot: renderColorValue(value.dot, colorOptions),
3763
- fg: renderColorValue(value.fg, colorOptions),
3764
- icon: renderColorValue(value.icon, colorOptions)
3765
- };
3766
- }
3767
- function renderThemeColorButton(value, options) {
3768
- return {
3769
- default: renderThemeColorButtonTones(value.default, options),
3770
- ghost: renderThemeColorButtonTones(value.ghost, options),
3771
- bleed: renderThemeColorButtonTones(value.bleed, options)
3772
- };
3773
- }
3774
- function renderThemeColorButtonTones(value, options) {
3775
- const colorButtonMode = {};
3776
- for (const tone of THEME_COLOR_STATE_TONES)
3777
- colorButtonMode[tone] = renderThemeColorButtonStates(value[tone], options);
3778
- return colorButtonMode;
3779
- }
3780
- function renderThemeColorButtonStates(value, options) {
3781
- return {
3782
- enabled: renderThemeColorState(value.enabled, options),
3783
- hovered: renderThemeColorState(value.hovered, options),
3784
- pressed: renderThemeColorState(value.pressed, options),
3785
- selected: renderThemeColorState(value.selected, options),
3786
- disabled: renderThemeColorState(value.disabled, options)
3787
- };
3788
- }
3789
- function renderThemeColorState(value, options) {
3790
- const {
3791
- baseBg,
3792
- blendMode: rootBlendMode,
3793
- colorPalette
3794
- } = options, blendMode = value._blend || "multiply", rootOptions = {
3795
- bg: baseBg,
3796
- blendMode: rootBlendMode,
3797
- colorPalette
3798
- }, bg = renderColorValue(value.bg, rootOptions), colorOptions = {
3799
- bg,
3800
- blendMode,
3801
- colorPalette
3802
- };
3803
- return {
3804
- _blend: blendMode,
3805
- accent: {
3806
- fg: renderColorValue(value.accent.fg, colorOptions)
3807
- },
3808
- avatar: renderThemeColorAvatar(value.avatar, {
3809
- baseBg: bg,
3810
- colorPalette,
3811
- blendMode
3812
- }),
3813
- badge: renderThemeColorBadge(value.badge, {
3814
- baseBg: bg,
3815
- colorPalette,
3816
- blendMode
3817
- }),
3818
- bg,
3819
- border: renderColorValue(value.border, colorOptions),
3820
- code: {
3821
- bg: renderColorValue(value.code.bg, colorOptions),
3822
- fg: renderColorValue(value.code.fg, colorOptions)
3823
- },
3824
- fg: renderColorValue(value.fg, colorOptions),
3825
- icon: renderColorValue(value.icon, colorOptions),
3826
- link: {
3827
- fg: renderColorValue(value.link.fg, colorOptions)
3828
- },
3829
- muted: {
3830
- bg: renderColorValue(value.muted.bg, colorOptions),
3831
- fg: renderColorValue(value.muted.fg, colorOptions)
3832
- },
3833
- kbd: {
3834
- bg: renderColorValue(value.kbd.bg, colorOptions),
3835
- fg: renderColorValue(value.kbd.fg, colorOptions),
3836
- border: renderColorValue(value.kbd.border, colorOptions)
3837
- },
3838
- skeleton: {
3839
- from: renderColorValue(value.skeleton?.from, colorOptions),
3840
- to: renderColorValue(value.skeleton?.to, colorOptions)
3841
- }
3842
- };
3843
- }
3844
- function renderThemeColorInput(value, options) {
3845
- return {
3846
- default: renderInputStatesColorTheme(value.default, options),
3847
- invalid: renderInputStatesColorTheme(value.invalid, options)
3848
- };
3849
- }
3850
- function renderInputStatesColorTheme(value, options) {
3851
- return {
3852
- enabled: renderInputStateColorTheme(value.enabled, options),
3853
- hovered: renderInputStateColorTheme(value.hovered, options),
3854
- readOnly: renderInputStateColorTheme(value.readOnly, options),
3855
- disabled: renderInputStateColorTheme(value.disabled, options)
3856
- };
3857
- }
3858
- function renderInputStateColorTheme(value, options) {
3859
- const {
3860
- baseBg,
3861
- blendMode: rootBlendMode,
3862
- colorPalette
3863
- } = options, blendMode = value._blend || "multiply", rootOptions = {
3864
- colorPalette,
3865
- bg: baseBg,
3866
- blendMode: rootBlendMode
3867
- }, bg = renderColorValue(value.bg, rootOptions), colorOptions = {
3868
- colorPalette,
3869
- bg,
3870
- blendMode
3871
- };
3872
- return {
3873
- _blend: blendMode,
3874
- bg,
3875
- border: renderColorValue(value.border, colorOptions),
3876
- fg: renderColorValue(value.fg, colorOptions),
3877
- muted: {
3878
- bg: renderColorValue(value.muted.bg, colorOptions)
3879
- },
3880
- placeholder: renderColorValue(value.placeholder, colorOptions)
3881
- };
3882
- }
3883
- function renderThemeColorSelectable(value, options) {
3884
- const colorSelectable = {};
3885
- for (const tone of THEME_COLOR_STATE_TONES)
3886
- colorSelectable[tone] = renderThemeColorSelectableStates(value[tone], options);
3887
- return colorSelectable;
3888
- }
3889
- function renderThemeColorSelectableStates(value, options) {
3890
- return {
3891
- enabled: renderThemeColorState(value.enabled, options),
3892
- hovered: renderThemeColorState(value.hovered, options),
3893
- pressed: renderThemeColorState(value.pressed, options),
3894
- selected: renderThemeColorState(value.selected, options),
3895
- disabled: renderThemeColorState(value.disabled, options)
3896
- };
3897
- }
3898
- function renderSyntaxColorTheme(value, options) {
3899
- const {
3900
- colorPalette,
3901
- baseBg,
3902
- blendMode
3903
- } = options, colorOptions = {
3904
- colorPalette,
3905
- bg: baseBg,
3906
- blendMode
3907
- };
3908
- return {
3909
- atrule: renderColorValue(value.atrule, colorOptions),
3910
- attrName: renderColorValue(value.attrName, colorOptions),
3911
- attrValue: renderColorValue(value.attrValue, colorOptions),
3912
- attribute: renderColorValue(value.attribute, colorOptions),
3913
- boolean: renderColorValue(value.boolean, colorOptions),
3914
- builtin: renderColorValue(value.builtin, colorOptions),
3915
- cdata: renderColorValue(value.cdata, colorOptions),
3916
- char: renderColorValue(value.char, colorOptions),
3917
- class: renderColorValue(value.class, colorOptions),
3918
- className: renderColorValue(value.className, colorOptions),
3919
- comment: renderColorValue(value.comment, colorOptions),
3920
- constant: renderColorValue(value.constant, colorOptions),
3921
- deleted: renderColorValue(value.deleted, colorOptions),
3922
- doctype: renderColorValue(value.doctype, colorOptions),
3923
- entity: renderColorValue(value.entity, colorOptions),
3924
- function: renderColorValue(value.function, colorOptions),
3925
- hexcode: renderColorValue(value.hexcode, colorOptions),
3926
- id: renderColorValue(value.id, colorOptions),
3927
- important: renderColorValue(value.important, colorOptions),
3928
- inserted: renderColorValue(value.inserted, colorOptions),
3929
- keyword: renderColorValue(value.keyword, colorOptions),
3930
- number: renderColorValue(value.number, colorOptions),
3931
- operator: renderColorValue(value.operator, colorOptions),
3932
- prolog: renderColorValue(value.prolog, colorOptions),
3933
- property: renderColorValue(value.property, colorOptions),
3934
- pseudoClass: renderColorValue(value.pseudoClass, colorOptions),
3935
- pseudoElement: renderColorValue(value.pseudoElement, colorOptions),
3936
- punctuation: renderColorValue(value.punctuation, colorOptions),
3937
- regex: renderColorValue(value.regex, colorOptions),
3938
- selector: renderColorValue(value.selector, colorOptions),
3939
- string: renderColorValue(value.string, colorOptions),
3940
- symbol: renderColorValue(value.symbol, colorOptions),
3941
- tag: renderColorValue(value.tag, colorOptions),
3942
- unit: renderColorValue(value.unit, colorOptions),
3943
- url: renderColorValue(value.url, colorOptions),
3944
- variable: renderColorValue(value.variable, colorOptions)
3945
- };
3946
- }
3947
- function buildTheme(config) {
3948
- const colorTheme = buildColorTheme(config), v2 = {
3949
- _version: 2,
3950
- avatar: config?.avatar ?? defaultThemeConfig.avatar,
3951
- button: config?.button ?? defaultThemeConfig.button,
3952
- card: config?.card ?? defaultThemeConfig.card,
3953
- // How colors are generated:
3954
- // 1. Merge custom tokens with default tokens
3955
- // 2. Generate tree of color keys (gray/500, black, white, etc.)
3956
- // 3. Apply mixing and render to hex values
3957
- // render(build(mergeWithDefaults()))
3958
- color: renderThemeColorSchemes(colorTheme, config),
3959
- container: config?.container ?? defaultThemeConfig.container,
3960
- font: config?.font ?? defaultThemeFonts$1,
3961
- input: config?.input ?? defaultThemeConfig.input,
3962
- layer: config?.layer ?? defaultThemeConfig.layer,
3963
- media: config?.media ?? defaultThemeConfig.media,
3964
- radius: config?.radius ?? defaultThemeConfig.radius,
3965
- shadow: config?.shadow ?? defaultThemeConfig.shadow,
3966
- space: config?.space ?? defaultThemeConfig.space,
3967
- style: config?.style ?? defaultThemeConfig.style
3968
- };
3969
- return v2_v0(v2);
3970
- }
3971
- const AVATAR_SIZE = [0, 1, 2, 3], CONTAINER_SCALE = [0, 1, 2, 3, 4, 5], CONTAINER = [...CONTAINER_SCALE, "auto"], RADIUS = [0, 1, 2, 3, 4, 5, 6], SPACE = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], FONT_CODE_SIZE = [0, 1, 2, 3, 4], FONT_HEADING_SIZE = [0, 1, 2, 3, 4, 5], FONT_LABEL_SIZE = [0, 1, 2, 3, 4, 5], FONT_TEXT_SIZE = [0, 1, 2, 3, 4], SHADOW = [0, 1, 2, 3, 4, 5], HUES = ["gray", "blue", "purple", "magenta", "red", "orange", "yellow", "green", "cyan"], TINTS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950], RE_PERCENTAGE = /^([0-9]+)%/, RE_OPACITY = /^(1|0\.[0-9]+)?/;
1
+ import { hues, white, black } from "@sanity/color";
2
+ const HUES = ["gray", "blue", "purple", "magenta", "red", "orange", "yellow", "green", "cyan"], TINTS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950], AVATAR_SIZE = [0, 1, 2, 3], CONTAINER_SCALE = [0, 1, 2, 3, 4, 5], CONTAINER = [...CONTAINER_SCALE, "auto"], RADIUS = [0, 1, 2, 3, 4, 5, 6], SPACE = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], FONT_CODE_SIZE = [0, 1, 2, 3, 4], FONT_HEADING_SIZE = [0, 1, 2, 3, 4, 5], FONT_LABEL_SIZE = [0, 1, 2, 3, 4, 5], FONT_TEXT_SIZE = [0, 1, 2, 3, 4], SHADOW = [0, 1, 2, 3, 4, 5], COLOR_SCHEMES = ["light", "dark"], COLOR_VARIANTS = ["tinted", "solid"], AVATAR_COLORS = ["gray", "blue", "purple", "magenta", "red", "orange", "yellow", "green", "cyan"], CARD_TONES = [
3
+ "transparent",
4
+ "default",
5
+ "neutral",
6
+ "primary",
7
+ // selections
8
+ "suggest",
9
+ "positive",
10
+ "caution",
11
+ "critical"
12
+ ], ELEMENT_TONES = [
13
+ "default",
14
+ "neutral",
15
+ "primary",
16
+ // selections
17
+ "suggest",
18
+ "positive",
19
+ "caution",
20
+ "critical"
21
+ ], BUTTON_MODES = ["default", "ghost", "bleed"], RE_PERCENTAGE = /^([0-9]+)%/, RE_OPACITY = /^(1|0\.[0-9]+)?/;
3972
22
  function _parseColorToken(str, options) {
3973
23
  const {
3974
24
  defaultHue
@@ -4051,7 +101,331 @@ function _parseColorToken(str, options) {
4051
101
  cursor++;
4052
102
  }
4053
103
  }
4054
- const defaultThemeFonts = {
104
+ const defaultColor = {
105
+ "*": {
106
+ backdrop: ["gray-100/0.5", "black/0.5"],
107
+ code: {
108
+ bg: ["50", "950"],
109
+ fg: ["700", "300"],
110
+ token: {
111
+ atrule: ["purple-600", "purple-400"],
112
+ attrName: ["green-600", "green-400"],
113
+ attrValue: ["yellow-600", "yellow-400"],
114
+ attribute: ["yellow-600", "yellow-400"],
115
+ boolean: ["purple-600", "purple-400"],
116
+ builtin: ["purple-600", "purple-400"],
117
+ cdata: ["yellow-600", "yellow-400"],
118
+ char: ["yellow-600", "yellow-400"],
119
+ class: ["orange-600", "orange-400"],
120
+ className: ["cyan-600", "cyan-400"],
121
+ comment: ["gray-400", "gray-600"],
122
+ constant: ["purple-600", "purple-400"],
123
+ deleted: ["red-600", "red-400"],
124
+ entity: ["red-600", "red-400"],
125
+ function: ["green-600", "green-400"],
126
+ hexcode: ["blue-600", "blue-400"],
127
+ id: ["purple-600", "purple-400"],
128
+ important: ["purple-600", "purple-400"],
129
+ inserted: ["green-600", "green-400"],
130
+ keyword: ["magenta-600", "magenta-400"],
131
+ number: ["purple-600", "purple-400"],
132
+ operator: ["magenta-600", "magenta-400"],
133
+ prolog: ["gray-600", "gray-400"],
134
+ property: ["blue-600", "blue-400"],
135
+ pseudoClass: ["yellow-600", "yellow-400"],
136
+ pseudoElement: ["yellow-600", "yellow-400"],
137
+ punctuation: ["gray-600", "gray-400"],
138
+ regex: ["blue-600", "blue-400"],
139
+ selector: ["red-600", "red-400"],
140
+ string: ["yellow-600", "yellow-400"],
141
+ symbol: ["purple-600", "purple-400"],
142
+ tag: ["red-600", "red-400"],
143
+ unit: ["orange-600", "orange-400"],
144
+ url: ["red-600", "red-400"],
145
+ variable: ["red-600", "red-400"]
146
+ }
147
+ },
148
+ focusRing: ["blue-500", "blue-500"],
149
+ link: {
150
+ fg: ["blue-600", "blue-400"]
151
+ },
152
+ shadow: {
153
+ outline: ["600/0.3", "500/0.4"],
154
+ umbra: ["600/0.1", "black/0.2"],
155
+ penumbra: ["600/0.07", "black/0.14"],
156
+ ambient: ["600/0.06", "black/0.12"]
157
+ },
158
+ skeleton: {
159
+ from: ["200 70%", "800 35%"],
160
+ to: ["200 40%", "800 50%"]
161
+ },
162
+ variant: {
163
+ tinted: {
164
+ "*": {
165
+ bg: {
166
+ 0: ["100 75%", "900 75%"],
167
+ 4: ["300", "700"]
168
+ },
169
+ border: {
170
+ 0: ["200", "700 50%"],
171
+ 4: ["300 75%", "500"]
172
+ },
173
+ fg: {
174
+ 0: ["900", "100"],
175
+ 4: ["700", "300"]
176
+ }
177
+ },
178
+ primary: {
179
+ _hue: "blue",
180
+ bg: {
181
+ 0: ["inherit", "inherit"]
182
+ }
183
+ },
184
+ suggest: {
185
+ _hue: "purple",
186
+ bg: {
187
+ 0: ["inherit", "inherit"]
188
+ }
189
+ },
190
+ positive: {
191
+ _hue: "green",
192
+ bg: {
193
+ 0: ["inherit", "inherit"]
194
+ }
195
+ },
196
+ caution: {
197
+ _hue: "yellow",
198
+ bg: {
199
+ 0: ["inherit", "inherit"]
200
+ }
201
+ },
202
+ critical: {
203
+ _hue: "red",
204
+ bg: {
205
+ 0: ["inherit", "inherit"]
206
+ }
207
+ }
208
+ },
209
+ solid: {
210
+ "*": {
211
+ bg: {
212
+ 0: ["500", "400"],
213
+ 4: ["600", "300"]
214
+ },
215
+ border: {
216
+ 0: ["400", "200"],
217
+ 4: ["500", "100"]
218
+ },
219
+ fg: {
220
+ 0: ["white", "black"],
221
+ 4: ["200", "700"]
222
+ }
223
+ },
224
+ default: {
225
+ bg: {
226
+ 0: ["800", "200"],
227
+ 4: ["black", "white"]
228
+ },
229
+ border: {
230
+ 0: ["700", "300"],
231
+ 4: ["800", "200"]
232
+ }
233
+ },
234
+ primary: {
235
+ _hue: "blue"
236
+ },
237
+ suggest: {
238
+ _hue: "purple"
239
+ },
240
+ positive: {
241
+ _hue: "green"
242
+ },
243
+ caution: {
244
+ _hue: "yellow"
245
+ },
246
+ critical: {
247
+ _hue: "red"
248
+ }
249
+ }
250
+ }
251
+ },
252
+ transparent: {
253
+ variant: {
254
+ tinted: {
255
+ "*": {
256
+ bg: {
257
+ 0: ["gray-50", "black"],
258
+ 4: ["300 75%", "700 75%"]
259
+ },
260
+ border: {
261
+ 0: ["200", "800 75%"],
262
+ 4: ["400", "700"]
263
+ },
264
+ fg: {
265
+ 0: ["black", "100"],
266
+ 4: ["700", "400"]
267
+ }
268
+ }
269
+ }
270
+ }
271
+ },
272
+ default: {
273
+ variant: {
274
+ tinted: {
275
+ "*": {
276
+ bg: {
277
+ 0: ["white", "950"],
278
+ 4: ["300 75%", "700"]
279
+ },
280
+ border: {
281
+ 0: ["200", "800 75%"],
282
+ 4: ["400", "700"]
283
+ },
284
+ fg: {
285
+ 0: ["black", "white"],
286
+ 4: ["600", "400"]
287
+ }
288
+ }
289
+ }
290
+ }
291
+ },
292
+ primary: {
293
+ _hue: "blue"
294
+ },
295
+ suggest: {
296
+ _hue: "purple"
297
+ },
298
+ positive: {
299
+ _hue: "green"
300
+ },
301
+ caution: {
302
+ _hue: "yellow"
303
+ },
304
+ critical: {
305
+ _hue: "red"
306
+ }
307
+ }, defaultTheme = {
308
+ avatar: {
309
+ sizes: [{
310
+ distance: -4,
311
+ size: 19
312
+ }, {
313
+ distance: -4,
314
+ size: 25
315
+ }, {
316
+ distance: -8,
317
+ size: 33
318
+ }, {
319
+ distance: -12,
320
+ size: 49
321
+ }],
322
+ focusRing: {
323
+ offset: 1,
324
+ width: 1
325
+ }
326
+ },
327
+ button: {
328
+ textWeight: "medium",
329
+ border: {
330
+ width: 1
331
+ },
332
+ focusRing: {
333
+ offset: -1,
334
+ width: 1
335
+ }
336
+ },
337
+ card: {
338
+ border: {
339
+ width: 1
340
+ },
341
+ focusRing: {
342
+ offset: -1,
343
+ width: 1
344
+ },
345
+ shadow: {
346
+ outline: 0.5
347
+ }
348
+ },
349
+ container: [320, 640, 960, 1280, 1600, 1920],
350
+ media: [360, 600, 900, 1200, 1800, 2400],
351
+ layer: {
352
+ dialog: {
353
+ zOffset: 600
354
+ },
355
+ popover: {
356
+ zOffset: 400
357
+ },
358
+ tooltip: {
359
+ zOffset: 200
360
+ }
361
+ },
362
+ radius: [0, 1, 3, 7, 11, 15, 23, 43, 75, 127],
363
+ shadow: [void 0, {
364
+ umbra: [0, 0, 0, 0],
365
+ penumbra: [0, 0, 0, 0],
366
+ ambient: [0, 0, 0, 0]
367
+ }, {
368
+ umbra: [0, 3, 5, -2],
369
+ penumbra: [0, 6, 10, 0],
370
+ ambient: [0, 1, 18, 1]
371
+ }, {
372
+ umbra: [0, 7, 8, -4],
373
+ penumbra: [0, 12, 17, 2],
374
+ ambient: [0, 5, 22, 4]
375
+ }, {
376
+ umbra: [0, 9, 11, -5],
377
+ penumbra: [0, 18, 28, 2],
378
+ ambient: [0, 7, 34, 6]
379
+ }, {
380
+ umbra: [0, 11, 15, -7],
381
+ penumbra: [0, 24, 38, 3],
382
+ ambient: [0, 9, 46, 8]
383
+ }],
384
+ space: [0, 4, 8, 12, 20, 32, 52, 84, 136, 220],
385
+ input: {
386
+ border: {
387
+ width: 1
388
+ },
389
+ checkbox: {
390
+ size: 17,
391
+ focusRing: {
392
+ offset: -1,
393
+ width: 1
394
+ }
395
+ },
396
+ radio: {
397
+ size: 17,
398
+ markSize: 9,
399
+ focusRing: {
400
+ offset: -1,
401
+ width: 1
402
+ }
403
+ },
404
+ switch: {
405
+ width: 25,
406
+ height: 17,
407
+ padding: 5,
408
+ transitionDurationMs: 150,
409
+ transitionTimingFunction: "ease-out",
410
+ focusRing: {
411
+ offset: 1,
412
+ width: 1
413
+ }
414
+ },
415
+ select: {
416
+ focusRing: {
417
+ offset: -1,
418
+ width: 1
419
+ }
420
+ },
421
+ text: {
422
+ focusRing: {
423
+ offset: -1,
424
+ width: 1
425
+ }
426
+ }
427
+ }
428
+ }, defaultFonts = {
4055
429
  code: {
4056
430
  family: "ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace",
4057
431
  weight: {
@@ -4269,211 +643,6 @@ const defaultThemeFonts = {
4269
643
  customIconSize: 28
4270
644
  }]
4271
645
  }
4272
- }, defaultTokens = {
4273
- color: {
4274
- "*": {
4275
- backdrop: ["gray-100/0.5", "black/0.5"],
4276
- code: {
4277
- bg: ["50", "950"],
4278
- fg: ["700", "300"],
4279
- token: {
4280
- atrule: ["purple-600", "purple-400"],
4281
- attrName: ["green-600", "green-400"],
4282
- attrValue: ["yellow-600", "yellow-400"],
4283
- attribute: ["yellow-600", "yellow-400"],
4284
- boolean: ["purple-600", "purple-400"],
4285
- builtin: ["purple-600", "purple-400"],
4286
- cdata: ["yellow-600", "yellow-400"],
4287
- char: ["yellow-600", "yellow-400"],
4288
- class: ["orange-600", "orange-400"],
4289
- className: ["cyan-600", "cyan-400"],
4290
- comment: ["gray-400", "gray-600"],
4291
- constant: ["purple-600", "purple-400"],
4292
- deleted: ["red-600", "red-400"],
4293
- entity: ["red-600", "red-400"],
4294
- function: ["green-600", "green-400"],
4295
- hexcode: ["blue-600", "blue-400"],
4296
- id: ["purple-600", "purple-400"],
4297
- important: ["purple-600", "purple-400"],
4298
- inserted: ["green-600", "green-400"],
4299
- keyword: ["magenta-600", "magenta-400"],
4300
- number: ["purple-600", "purple-400"],
4301
- operator: ["magenta-600", "magenta-400"],
4302
- prolog: ["gray-600", "gray-400"],
4303
- property: ["blue-600", "blue-400"],
4304
- pseudoClass: ["yellow-600", "yellow-400"],
4305
- pseudoElement: ["yellow-600", "yellow-400"],
4306
- punctuation: ["gray-600", "gray-400"],
4307
- regex: ["blue-600", "blue-400"],
4308
- selector: ["red-600", "red-400"],
4309
- string: ["yellow-600", "yellow-400"],
4310
- symbol: ["purple-600", "purple-400"],
4311
- tag: ["red-600", "red-400"],
4312
- unit: ["orange-600", "orange-400"],
4313
- url: ["red-600", "red-400"],
4314
- variable: ["red-600", "red-400"]
4315
- }
4316
- },
4317
- focusRing: ["blue-500", "blue-500"],
4318
- link: {
4319
- fg: ["blue-600", "blue-400"]
4320
- },
4321
- shadow: {
4322
- outline: ["600/0.3", "500/0.4"],
4323
- umbra: ["600/0.1", "black/0.2"],
4324
- penumbra: ["600/0.07", "black/0.14"],
4325
- ambient: ["600/0.06", "black/0.12"]
4326
- },
4327
- skeleton: {
4328
- from: ["200 70%", "800 35%"],
4329
- to: ["200 40%", "800 50%"]
4330
- },
4331
- variant: {
4332
- tinted: {
4333
- "*": {
4334
- bg: {
4335
- 0: ["100 75%", "900 75%"],
4336
- 4: ["300", "700"]
4337
- },
4338
- border: {
4339
- 0: ["200", "700 50%"],
4340
- 4: ["300 75%", "500"]
4341
- },
4342
- fg: {
4343
- 0: ["900", "100"],
4344
- 4: ["700", "300"]
4345
- }
4346
- },
4347
- primary: {
4348
- _hue: "blue",
4349
- bg: {
4350
- 0: ["inherit", "inherit"]
4351
- }
4352
- },
4353
- suggest: {
4354
- _hue: "purple",
4355
- bg: {
4356
- 0: ["inherit", "inherit"]
4357
- }
4358
- },
4359
- positive: {
4360
- _hue: "green",
4361
- bg: {
4362
- 0: ["inherit", "inherit"]
4363
- }
4364
- },
4365
- caution: {
4366
- _hue: "yellow",
4367
- bg: {
4368
- 0: ["inherit", "inherit"]
4369
- }
4370
- },
4371
- critical: {
4372
- _hue: "red",
4373
- bg: {
4374
- 0: ["inherit", "inherit"]
4375
- }
4376
- }
4377
- },
4378
- solid: {
4379
- "*": {
4380
- bg: {
4381
- 0: ["500", "400"],
4382
- 4: ["600", "300"]
4383
- },
4384
- border: {
4385
- 0: ["400", "200"],
4386
- 4: ["500", "100"]
4387
- },
4388
- fg: {
4389
- 0: ["white", "black"],
4390
- 4: ["200", "700"]
4391
- }
4392
- },
4393
- default: {
4394
- bg: {
4395
- 0: ["800", "200"],
4396
- 4: ["black", "white"]
4397
- },
4398
- border: {
4399
- 0: ["700", "300"],
4400
- 4: ["800", "200"]
4401
- }
4402
- },
4403
- primary: {
4404
- _hue: "blue"
4405
- },
4406
- suggest: {
4407
- _hue: "purple"
4408
- },
4409
- positive: {
4410
- _hue: "green"
4411
- },
4412
- caution: {
4413
- _hue: "yellow"
4414
- },
4415
- critical: {
4416
- _hue: "red"
4417
- }
4418
- }
4419
- }
4420
- },
4421
- transparent: {
4422
- variant: {
4423
- tinted: {
4424
- "*": {
4425
- bg: {
4426
- 0: ["gray-50", "black"],
4427
- 4: ["300 75%", "700 75%"]
4428
- },
4429
- border: {
4430
- 0: ["200", "800 75%"],
4431
- 4: ["400", "700"]
4432
- },
4433
- fg: {
4434
- 0: ["black", "100"],
4435
- 4: ["700", "400"]
4436
- }
4437
- }
4438
- }
4439
- }
4440
- },
4441
- default: {
4442
- variant: {
4443
- tinted: {
4444
- "*": {
4445
- bg: {
4446
- 0: ["white", "950"],
4447
- 4: ["300 75%", "700"]
4448
- },
4449
- border: {
4450
- 0: ["200", "800 75%"],
4451
- 4: ["400", "700"]
4452
- },
4453
- fg: {
4454
- 0: ["black", "white"],
4455
- 4: ["600", "400"]
4456
- }
4457
- }
4458
- }
4459
- }
4460
- },
4461
- primary: {
4462
- _hue: "blue"
4463
- },
4464
- suggest: {
4465
- _hue: "purple"
4466
- },
4467
- positive: {
4468
- _hue: "green"
4469
- },
4470
- caution: {
4471
- _hue: "yellow"
4472
- },
4473
- critical: {
4474
- _hue: "red"
4475
- }
4476
- }
4477
646
  };
4478
647
  function merge(...records) {
4479
648
  return records.filter(Boolean).reduce(_merge, {});
@@ -4506,7 +675,7 @@ function resolveTokens(tokens = {}) {
4506
675
  return {
4507
676
  color: {
4508
677
  "*": resolveCardColorTokens(tokens.color?.["*"]),
4509
- ...THEME_COLOR_CARD_TONES.reduce((acc, tone) => ({
678
+ ...CARD_TONES.reduce((acc, tone) => ({
4510
679
  ...acc,
4511
680
  [tone]: resolveCardColorTokens(merge(tokens.color?.["*"], tokens.color?.[tone]))
4512
681
  }), {})
@@ -4623,11 +792,11 @@ function resolveCardColorTokens(tokens) {
4623
792
  variant: {
4624
793
  solid: {
4625
794
  "*": resolveElementTokens(tokens?.variant?.solid?.["*"]),
4626
- ...THEME_COLOR_STATE_TONES.reduce((acc, tone) => (acc[tone] = resolveElementTokens(merge(tokens, tokens?.variant?.solid?.["*"], tokens?.variant?.solid?.[tone])), acc), {})
795
+ ...ELEMENT_TONES.reduce((acc, tone) => (acc[tone] = resolveElementTokens(merge(tokens, tokens?.variant?.solid?.["*"], tokens?.variant?.solid?.[tone])), acc), {})
4627
796
  },
4628
797
  tinted: {
4629
798
  "*": resolveElementTokens(tokens?.variant?.tinted?.["*"]),
4630
- ...THEME_COLOR_STATE_TONES.reduce((acc, tone) => (acc[tone] = resolveElementTokens(merge(tokens, tokens?.variant?.tinted?.["*"], tokens?.variant?.tinted?.[tone])), acc), {})
799
+ ...ELEMENT_TONES.reduce((acc, tone) => (acc[tone] = resolveElementTokens(merge(tokens, tokens?.variant?.tinted?.["*"], tokens?.variant?.tinted?.[tone])), acc), {})
4631
800
  }
4632
801
  }
4633
802
  };
@@ -4649,95 +818,42 @@ function resolveElementTokens(tokens) {
4649
818
  }
4650
819
  };
4651
820
  }
4652
- function buildTheme_v3(options) {
4653
- const {
4654
- v2
4655
- } = options ?? {}, tokens = resolveTokens(options?.tokens ?? defaultTokens);
821
+ function buildTheme(options) {
822
+ const tokens = resolveTokens({
823
+ color: options?.tokens?.color ?? defaultColor
824
+ });
4656
825
  return {
4657
826
  _version: 3,
4658
827
  _tokens: tokens,
4659
- avatar: v2?.avatar ?? defaultThemeConfig.avatar,
4660
- button: v2?.button ?? defaultThemeConfig.button,
4661
- card: v2?.card ?? defaultThemeConfig.card,
828
+ avatar: defaultTheme.avatar,
829
+ button: defaultTheme.button,
830
+ card: defaultTheme.card,
4662
831
  color: tokens.color,
4663
- container: v2?.container ?? defaultThemeConfig.container,
4664
- font: defaultThemeFonts,
4665
- input: v2?.input ?? defaultThemeConfig.input,
4666
- layer: v2?.layer ?? defaultThemeConfig.layer,
4667
- media: v2?.media ?? defaultThemeConfig.media,
832
+ container: defaultTheme.container,
833
+ font: defaultFonts,
834
+ input: defaultTheme.input,
835
+ layer: defaultTheme.layer,
836
+ media: defaultTheme.media,
4668
837
  palette: {
4669
- black: black$1,
4670
- white: white$1,
838
+ black,
839
+ white,
4671
840
  hues
4672
841
  },
4673
- // TODO
4674
- radius: v2?.radius ?? defaultThemeConfig.radius,
4675
- // TODO
4676
- shadow: v2?.shadow ?? defaultThemeConfig.shadow,
4677
- // TODO
4678
- space: v2?.space ?? defaultThemeConfig.space
4679
- };
4680
- }
4681
- const COLOR_VARIANTS = ["tinted", "solid"], AVATAR_COLORS = ["gray", "blue", "purple", "magenta", "red", "orange", "yellow", "green", "cyan"], cache = /* @__PURE__ */ new WeakMap();
4682
- function getTheme_v2(theme) {
4683
- if (theme.sanity.v2?._resolved) return theme.sanity.v2;
4684
- const cached_v2 = cache.get(theme);
4685
- if (cached_v2) return cached_v2;
4686
- const v2 = {
4687
- _version: 2,
4688
- _resolved: !0,
4689
- avatar: {
4690
- ...defaultThemeConfig.avatar,
4691
- ...theme.sanity.avatar
4692
- },
4693
- button: {
4694
- ...defaultThemeConfig.button,
4695
- ...theme.sanity.button
4696
- },
4697
- card: defaultThemeConfig.card,
4698
- color: themeColor_v0_v2(theme.sanity.color),
4699
- container: theme.sanity.container,
4700
- font: theme.sanity.fonts,
4701
- input: {
4702
- ...defaultThemeConfig.input,
4703
- ...theme.sanity.input,
4704
- checkbox: {
4705
- ...defaultThemeConfig.input.checkbox,
4706
- ...theme.sanity.input.checkbox
4707
- },
4708
- radio: {
4709
- ...defaultThemeConfig.input.radio,
4710
- ...theme.sanity.input.radio
4711
- },
4712
- switch: {
4713
- ...defaultThemeConfig.input.switch,
4714
- ...theme.sanity.input.switch
4715
- }
4716
- },
4717
- layer: theme.sanity.layer ?? defaultThemeConfig.layer,
4718
- media: theme.sanity.media,
4719
- radius: theme.sanity.radius,
4720
- shadow: theme.sanity.shadows,
4721
- space: theme.sanity.space,
4722
- style: theme.sanity.styles
842
+ radius: defaultTheme.radius,
843
+ shadow: defaultTheme.shadow,
844
+ space: defaultTheme.space
4723
845
  };
4724
- return cache.set(theme, v2), v2;
4725
846
  }
4726
847
  export {
4727
848
  AVATAR_COLORS,
4728
849
  AVATAR_SIZE,
4729
- COLOR_CONFIG_AVATAR_COLORS,
4730
- COLOR_CONFIG_BLEND_KEYS,
4731
- COLOR_CONFIG_CARD_KEYS,
4732
- COLOR_CONFIG_CARD_TONES,
4733
- COLOR_CONFIG_INPUT_MODES,
4734
- COLOR_CONFIG_INPUT_STATES,
4735
- COLOR_CONFIG_STATES,
4736
- COLOR_CONFIG_STATE_KEYS,
4737
- COLOR_CONFIG_STATE_TONES,
850
+ BUTTON_MODES,
851
+ CARD_TONES,
852
+ COLOR_SCHEMES,
4738
853
  COLOR_VARIANTS,
4739
854
  CONTAINER,
4740
855
  CONTAINER_SCALE,
856
+ ELEMENT_TONES,
4741
857
  FONT_CODE_SIZE,
4742
858
  FONT_HEADING_SIZE,
4743
859
  FONT_LABEL_SIZE,
@@ -4746,46 +862,9 @@ export {
4746
862
  RADIUS,
4747
863
  SHADOW,
4748
864
  SPACE,
4749
- THEME_COLOR_AVATAR_COLORS,
4750
- THEME_COLOR_BLEND_MODES,
4751
- THEME_COLOR_BUTTON_MODES,
4752
- THEME_COLOR_CARD_TONES,
4753
- THEME_COLOR_INPUT_MODES,
4754
- THEME_COLOR_INPUT_STATES,
4755
- THEME_COLOR_SCHEMES,
4756
- THEME_COLOR_STATES,
4757
- THEME_COLOR_STATE_TONES,
4758
865
  TINTS,
4759
866
  _parseColorToken,
4760
867
  buildTheme,
4761
- buildTheme_v3,
4762
- createColorTheme,
4763
- defaultTokens,
4764
- getContrastRatio,
4765
- getScopedTheme,
4766
- getTheme_v2,
4767
- hexToRgb,
4768
- hslToRgb,
4769
- isColorBlendModeValue,
4770
- isColorButtonMode,
4771
- isColorConfigBaseKey,
4772
- isColorConfigBaseTone,
4773
- isColorConfigBlendKey,
4774
- isColorConfigStateKey,
4775
- isColorConfigStateTone,
4776
- isColorHueKey,
4777
- isColorOpacityValue,
4778
- isColorTintKey,
4779
- isColorValue,
4780
- mix,
4781
- multiply,
4782
- parseColor,
4783
- parseTokenValue,
4784
- resolveTokens,
4785
- rgbToHex,
4786
- rgbToHsl,
4787
- rgba,
4788
- rgbaToRGBA,
4789
- screen
868
+ resolveTokens
4790
869
  };
4791
870
  //# sourceMappingURL=theme.js.map