@bettercms-ai/kit 0.1.0

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