@hex-core/themes 0.1.1 → 0.2.1

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 (578) hide show
  1. package/README.md +5 -1
  2. package/dist/chunk-2LU3ENLP.js +68 -0
  3. package/dist/chunk-2LU3ENLP.js.map +1 -0
  4. package/dist/chunk-2OH25A4J.js +68 -0
  5. package/dist/chunk-2OH25A4J.js.map +1 -0
  6. package/dist/chunk-2SI7O4FQ.js +68 -0
  7. package/dist/chunk-2SI7O4FQ.js.map +1 -0
  8. package/dist/chunk-4LQ3BH7F.js +68 -0
  9. package/dist/chunk-4LQ3BH7F.js.map +1 -0
  10. package/dist/chunk-4QXKFLEQ.js +68 -0
  11. package/dist/chunk-4QXKFLEQ.js.map +1 -0
  12. package/dist/chunk-5BH5ZMDH.js +68 -0
  13. package/dist/chunk-5BH5ZMDH.js.map +1 -0
  14. package/dist/chunk-5O65TVZP.js +68 -0
  15. package/dist/chunk-5O65TVZP.js.map +1 -0
  16. package/dist/chunk-5TDK4XMA.js +68 -0
  17. package/dist/chunk-5TDK4XMA.js.map +1 -0
  18. package/dist/chunk-72IPJZ6V.js +68 -0
  19. package/dist/chunk-72IPJZ6V.js.map +1 -0
  20. package/dist/chunk-73N7YFTY.js +68 -0
  21. package/dist/chunk-73N7YFTY.js.map +1 -0
  22. package/dist/chunk-7MPAMAFC.js +68 -0
  23. package/dist/chunk-7MPAMAFC.js.map +1 -0
  24. package/dist/chunk-7OAKNGRU.js +68 -0
  25. package/dist/chunk-7OAKNGRU.js.map +1 -0
  26. package/dist/chunk-7YP2HHHV.js +68 -0
  27. package/dist/chunk-7YP2HHHV.js.map +1 -0
  28. package/dist/chunk-7YPET3HT.js +68 -0
  29. package/dist/chunk-7YPET3HT.js.map +1 -0
  30. package/dist/chunk-7ZAFN5WE.js +68 -0
  31. package/dist/chunk-7ZAFN5WE.js.map +1 -0
  32. package/dist/chunk-ATBX7KXM.js +68 -0
  33. package/dist/chunk-ATBX7KXM.js.map +1 -0
  34. package/dist/chunk-BCLCH6JZ.js +68 -0
  35. package/dist/chunk-BCLCH6JZ.js.map +1 -0
  36. package/dist/chunk-BH7IPZBT.js +68 -0
  37. package/dist/chunk-BH7IPZBT.js.map +1 -0
  38. package/dist/chunk-BK432RWC.js +68 -0
  39. package/dist/chunk-BK432RWC.js.map +1 -0
  40. package/dist/chunk-BMLLM5GC.js +68 -0
  41. package/dist/chunk-BMLLM5GC.js.map +1 -0
  42. package/dist/chunk-CEQN6EQY.js +68 -0
  43. package/dist/chunk-CEQN6EQY.js.map +1 -0
  44. package/dist/chunk-CFLNGBY5.js +68 -0
  45. package/dist/chunk-CFLNGBY5.js.map +1 -0
  46. package/dist/chunk-CTI3W357.js +68 -0
  47. package/dist/chunk-CTI3W357.js.map +1 -0
  48. package/dist/chunk-CUO2HNBR.js +68 -0
  49. package/dist/chunk-CUO2HNBR.js.map +1 -0
  50. package/dist/chunk-D5JFUYFN.js +68 -0
  51. package/dist/chunk-D5JFUYFN.js.map +1 -0
  52. package/dist/chunk-DE2NWOEB.js +68 -0
  53. package/dist/chunk-DE2NWOEB.js.map +1 -0
  54. package/dist/chunk-DLLP5KXF.js +68 -0
  55. package/dist/chunk-DLLP5KXF.js.map +1 -0
  56. package/dist/chunk-E26YKJRK.js +68 -0
  57. package/dist/chunk-E26YKJRK.js.map +1 -0
  58. package/dist/chunk-EV4APPVD.js +528 -0
  59. package/dist/chunk-EV4APPVD.js.map +1 -0
  60. package/dist/chunk-EZFP45CP.js +68 -0
  61. package/dist/chunk-EZFP45CP.js.map +1 -0
  62. package/dist/chunk-FE2IENES.js +68 -0
  63. package/dist/chunk-FE2IENES.js.map +1 -0
  64. package/dist/chunk-FK5WSFAA.js +68 -0
  65. package/dist/chunk-FK5WSFAA.js.map +1 -0
  66. package/dist/chunk-G2V6XAJ7.js +68 -0
  67. package/dist/chunk-G2V6XAJ7.js.map +1 -0
  68. package/dist/chunk-GAOOBTSH.js +68 -0
  69. package/dist/chunk-GAOOBTSH.js.map +1 -0
  70. package/dist/chunk-GAQ6LS55.js +68 -0
  71. package/dist/chunk-GAQ6LS55.js.map +1 -0
  72. package/dist/chunk-GSTGBWQZ.js +68 -0
  73. package/dist/chunk-GSTGBWQZ.js.map +1 -0
  74. package/dist/chunk-I267MA2D.js +68 -0
  75. package/dist/chunk-I267MA2D.js.map +1 -0
  76. package/dist/chunk-I4Z7DY3Z.js +68 -0
  77. package/dist/chunk-I4Z7DY3Z.js.map +1 -0
  78. package/dist/chunk-I6H6W42Y.js +68 -0
  79. package/dist/chunk-I6H6W42Y.js.map +1 -0
  80. package/dist/chunk-IJBNLZQH.js +68 -0
  81. package/dist/chunk-IJBNLZQH.js.map +1 -0
  82. package/dist/chunk-IRDDULX7.js +68 -0
  83. package/dist/chunk-IRDDULX7.js.map +1 -0
  84. package/dist/chunk-IXKXYUXQ.js +68 -0
  85. package/dist/chunk-IXKXYUXQ.js.map +1 -0
  86. package/dist/chunk-JZEZHM5N.js +68 -0
  87. package/dist/chunk-JZEZHM5N.js.map +1 -0
  88. package/dist/chunk-KCI73LIZ.js +68 -0
  89. package/dist/chunk-KCI73LIZ.js.map +1 -0
  90. package/dist/chunk-KDS62BXD.js +68 -0
  91. package/dist/chunk-KDS62BXD.js.map +1 -0
  92. package/dist/chunk-KLNZW4GO.js +68 -0
  93. package/dist/chunk-KLNZW4GO.js.map +1 -0
  94. package/dist/chunk-KXBE5FQ7.js +68 -0
  95. package/dist/chunk-KXBE5FQ7.js.map +1 -0
  96. package/dist/chunk-KZDIZ2FL.js +68 -0
  97. package/dist/chunk-KZDIZ2FL.js.map +1 -0
  98. package/dist/chunk-LDZC2QYF.js +68 -0
  99. package/dist/chunk-LDZC2QYF.js.map +1 -0
  100. package/dist/chunk-LNKOIFH4.js +68 -0
  101. package/dist/chunk-LNKOIFH4.js.map +1 -0
  102. package/dist/chunk-MVMZS3PQ.js +68 -0
  103. package/dist/chunk-MVMZS3PQ.js.map +1 -0
  104. package/dist/chunk-NIED6GXO.js +68 -0
  105. package/dist/chunk-NIED6GXO.js.map +1 -0
  106. package/dist/chunk-NKTZOR54.js +68 -0
  107. package/dist/chunk-NKTZOR54.js.map +1 -0
  108. package/dist/chunk-OCQYO6PW.js +68 -0
  109. package/dist/chunk-OCQYO6PW.js.map +1 -0
  110. package/dist/chunk-PJAJD5VJ.js +68 -0
  111. package/dist/chunk-PJAJD5VJ.js.map +1 -0
  112. package/dist/chunk-PN567MCL.js +68 -0
  113. package/dist/chunk-PN567MCL.js.map +1 -0
  114. package/dist/chunk-QEBXRSTH.js +68 -0
  115. package/dist/chunk-QEBXRSTH.js.map +1 -0
  116. package/dist/chunk-QTKMLEEM.js +68 -0
  117. package/dist/chunk-QTKMLEEM.js.map +1 -0
  118. package/dist/chunk-RN4ZII2I.js +68 -0
  119. package/dist/chunk-RN4ZII2I.js.map +1 -0
  120. package/dist/chunk-RTCJ5B7S.js +68 -0
  121. package/dist/chunk-RTCJ5B7S.js.map +1 -0
  122. package/dist/chunk-SG2ACM7O.js +68 -0
  123. package/dist/chunk-SG2ACM7O.js.map +1 -0
  124. package/dist/chunk-SORTCBSJ.js +68 -0
  125. package/dist/chunk-SORTCBSJ.js.map +1 -0
  126. package/dist/chunk-TXY7LBYM.js +68 -0
  127. package/dist/chunk-TXY7LBYM.js.map +1 -0
  128. package/dist/chunk-UIS6TMM5.js +68 -0
  129. package/dist/chunk-UIS6TMM5.js.map +1 -0
  130. package/dist/chunk-VOXUB4AT.js +68 -0
  131. package/dist/chunk-VOXUB4AT.js.map +1 -0
  132. package/dist/chunk-VUSSQAEI.js +68 -0
  133. package/dist/chunk-VUSSQAEI.js.map +1 -0
  134. package/dist/chunk-WAU2FYDY.js +68 -0
  135. package/dist/chunk-WAU2FYDY.js.map +1 -0
  136. package/dist/chunk-YRGKMQP4.js +68 -0
  137. package/dist/chunk-YRGKMQP4.js.map +1 -0
  138. package/dist/chunk-Z3XCYZN4.js +68 -0
  139. package/dist/chunk-Z3XCYZN4.js.map +1 -0
  140. package/dist/chunk-Z6XLNVF3.js +68 -0
  141. package/dist/chunk-Z6XLNVF3.js.map +1 -0
  142. package/dist/chunk-ZQJDUTSK.js +68 -0
  143. package/dist/chunk-ZQJDUTSK.js.map +1 -0
  144. package/dist/chunk-ZTYINGDT.js +68 -0
  145. package/dist/chunk-ZTYINGDT.js.map +1 -0
  146. package/dist/index.d.ts +185 -23
  147. package/dist/index.js +359 -3
  148. package/dist/index.js.map +1 -1
  149. package/dist/presets/_briefs/airbnb.d.ts +3 -0
  150. package/dist/presets/_briefs/airbnb.js +551 -0
  151. package/dist/presets/_briefs/airbnb.js.map +1 -0
  152. package/dist/presets/_briefs/airtable.d.ts +3 -0
  153. package/dist/presets/_briefs/airtable.js +560 -0
  154. package/dist/presets/_briefs/airtable.js.map +1 -0
  155. package/dist/presets/_briefs/apple.d.ts +3 -0
  156. package/dist/presets/_briefs/apple.js +568 -0
  157. package/dist/presets/_briefs/apple.js.map +1 -0
  158. package/dist/presets/_briefs/binance.d.ts +3 -0
  159. package/dist/presets/_briefs/binance.js +640 -0
  160. package/dist/presets/_briefs/binance.js.map +1 -0
  161. package/dist/presets/_briefs/bmw-m.d.ts +3 -0
  162. package/dist/presets/_briefs/bmw-m.js +509 -0
  163. package/dist/presets/_briefs/bmw-m.js.map +1 -0
  164. package/dist/presets/_briefs/bmw.d.ts +3 -0
  165. package/dist/presets/_briefs/bmw.js +550 -0
  166. package/dist/presets/_briefs/bmw.js.map +1 -0
  167. package/dist/presets/_briefs/bugatti.d.ts +3 -0
  168. package/dist/presets/_briefs/bugatti.js +460 -0
  169. package/dist/presets/_briefs/bugatti.js.map +1 -0
  170. package/dist/presets/_briefs/cal.d.ts +3 -0
  171. package/dist/presets/_briefs/cal.js +548 -0
  172. package/dist/presets/_briefs/cal.js.map +1 -0
  173. package/dist/presets/_briefs/claude.d.ts +3 -0
  174. package/dist/presets/_briefs/claude.js +595 -0
  175. package/dist/presets/_briefs/claude.js.map +1 -0
  176. package/dist/presets/_briefs/clay.d.ts +3 -0
  177. package/dist/presets/_briefs/clay.js +547 -0
  178. package/dist/presets/_briefs/clay.js.map +1 -0
  179. package/dist/presets/_briefs/clickhouse.d.ts +3 -0
  180. package/dist/presets/_briefs/clickhouse.js +550 -0
  181. package/dist/presets/_briefs/clickhouse.js.map +1 -0
  182. package/dist/presets/_briefs/cohere.d.ts +3 -0
  183. package/dist/presets/_briefs/cohere.js +457 -0
  184. package/dist/presets/_briefs/cohere.js.map +1 -0
  185. package/dist/presets/_briefs/coinbase.d.ts +3 -0
  186. package/dist/presets/_briefs/coinbase.js +576 -0
  187. package/dist/presets/_briefs/coinbase.js.map +1 -0
  188. package/dist/presets/_briefs/composio.d.ts +3 -0
  189. package/dist/presets/_briefs/composio.js +512 -0
  190. package/dist/presets/_briefs/composio.js.map +1 -0
  191. package/dist/presets/_briefs/cursor.d.ts +3 -0
  192. package/dist/presets/_briefs/cursor.js +543 -0
  193. package/dist/presets/_briefs/cursor.js.map +1 -0
  194. package/dist/presets/_briefs/elevenlabs.d.ts +3 -0
  195. package/dist/presets/_briefs/elevenlabs.js +510 -0
  196. package/dist/presets/_briefs/elevenlabs.js.map +1 -0
  197. package/dist/presets/_briefs/expo.d.ts +3 -0
  198. package/dist/presets/_briefs/expo.js +532 -0
  199. package/dist/presets/_briefs/expo.js.map +1 -0
  200. package/dist/presets/_briefs/ferrari.d.ts +3 -0
  201. package/dist/presets/_briefs/ferrari.js +537 -0
  202. package/dist/presets/_briefs/ferrari.js.map +1 -0
  203. package/dist/presets/_briefs/figma.d.ts +3 -0
  204. package/dist/presets/_briefs/figma.js +226 -0
  205. package/dist/presets/_briefs/figma.js.map +1 -0
  206. package/dist/presets/_briefs/framer.d.ts +3 -0
  207. package/dist/presets/_briefs/framer.js +252 -0
  208. package/dist/presets/_briefs/framer.js.map +1 -0
  209. package/dist/presets/_briefs/hashicorp.d.ts +3 -0
  210. package/dist/presets/_briefs/hashicorp.js +284 -0
  211. package/dist/presets/_briefs/hashicorp.js.map +1 -0
  212. package/dist/presets/_briefs/ibm.d.ts +3 -0
  213. package/dist/presets/_briefs/ibm.js +338 -0
  214. package/dist/presets/_briefs/ibm.js.map +1 -0
  215. package/dist/presets/_briefs/intercom.d.ts +3 -0
  216. package/dist/presets/_briefs/intercom.js +152 -0
  217. package/dist/presets/_briefs/intercom.js.map +1 -0
  218. package/dist/presets/_briefs/kraken.d.ts +3 -0
  219. package/dist/presets/_briefs/kraken.js +131 -0
  220. package/dist/presets/_briefs/kraken.js.map +1 -0
  221. package/dist/presets/_briefs/lamborghini.d.ts +3 -0
  222. package/dist/presets/_briefs/lamborghini.js +294 -0
  223. package/dist/presets/_briefs/lamborghini.js.map +1 -0
  224. package/dist/presets/_briefs/linear.d.ts +3 -0
  225. package/dist/presets/_briefs/linear.js +373 -0
  226. package/dist/presets/_briefs/linear.js.map +1 -0
  227. package/dist/presets/_briefs/lovable.d.ts +3 -0
  228. package/dist/presets/_briefs/lovable.js +304 -0
  229. package/dist/presets/_briefs/lovable.js.map +1 -0
  230. package/dist/presets/_briefs/mastercard.d.ts +3 -0
  231. package/dist/presets/_briefs/mastercard.js +371 -0
  232. package/dist/presets/_briefs/mastercard.js.map +1 -0
  233. package/dist/presets/_briefs/meta.d.ts +3 -0
  234. package/dist/presets/_briefs/meta.js +372 -0
  235. package/dist/presets/_briefs/meta.js.map +1 -0
  236. package/dist/presets/_briefs/minimax.d.ts +3 -0
  237. package/dist/presets/_briefs/minimax.js +263 -0
  238. package/dist/presets/_briefs/minimax.js.map +1 -0
  239. package/dist/presets/_briefs/mintlify.d.ts +3 -0
  240. package/dist/presets/_briefs/mintlify.js +332 -0
  241. package/dist/presets/_briefs/mintlify.js.map +1 -0
  242. package/dist/presets/_briefs/miro.d.ts +3 -0
  243. package/dist/presets/_briefs/miro.js +114 -0
  244. package/dist/presets/_briefs/miro.js.map +1 -0
  245. package/dist/presets/_briefs/mistral.d.ts +3 -0
  246. package/dist/presets/_briefs/mistral.js +267 -0
  247. package/dist/presets/_briefs/mistral.js.map +1 -0
  248. package/dist/presets/_briefs/mongodb.d.ts +3 -0
  249. package/dist/presets/_briefs/mongodb.js +272 -0
  250. package/dist/presets/_briefs/mongodb.js.map +1 -0
  251. package/dist/presets/_briefs/nike.d.ts +3 -0
  252. package/dist/presets/_briefs/nike.js +369 -0
  253. package/dist/presets/_briefs/nike.js.map +1 -0
  254. package/dist/presets/_briefs/notion.d.ts +3 -0
  255. package/dist/presets/_briefs/notion.js +315 -0
  256. package/dist/presets/_briefs/notion.js.map +1 -0
  257. package/dist/presets/_briefs/nvidia.d.ts +3 -0
  258. package/dist/presets/_briefs/nvidia.js +299 -0
  259. package/dist/presets/_briefs/nvidia.js.map +1 -0
  260. package/dist/presets/_briefs/ollama.d.ts +3 -0
  261. package/dist/presets/_briefs/ollama.js +273 -0
  262. package/dist/presets/_briefs/ollama.js.map +1 -0
  263. package/dist/presets/_briefs/opencode.d.ts +3 -0
  264. package/dist/presets/_briefs/opencode.js +287 -0
  265. package/dist/presets/_briefs/opencode.js.map +1 -0
  266. package/dist/presets/_briefs/pinterest.d.ts +3 -0
  267. package/dist/presets/_briefs/pinterest.js +236 -0
  268. package/dist/presets/_briefs/pinterest.js.map +1 -0
  269. package/dist/presets/_briefs/playstation.d.ts +3 -0
  270. package/dist/presets/_briefs/playstation.js +370 -0
  271. package/dist/presets/_briefs/playstation.js.map +1 -0
  272. package/dist/presets/_briefs/posthog.d.ts +3 -0
  273. package/dist/presets/_briefs/posthog.js +262 -0
  274. package/dist/presets/_briefs/posthog.js.map +1 -0
  275. package/dist/presets/_briefs/raycast.d.ts +3 -0
  276. package/dist/presets/_briefs/raycast.js +274 -0
  277. package/dist/presets/_briefs/raycast.js.map +1 -0
  278. package/dist/presets/_briefs/renault.d.ts +3 -0
  279. package/dist/presets/_briefs/renault.js +317 -0
  280. package/dist/presets/_briefs/renault.js.map +1 -0
  281. package/dist/presets/_briefs/replicate.d.ts +3 -0
  282. package/dist/presets/_briefs/replicate.js +267 -0
  283. package/dist/presets/_briefs/replicate.js.map +1 -0
  284. package/dist/presets/_briefs/resend.d.ts +3 -0
  285. package/dist/presets/_briefs/resend.js +309 -0
  286. package/dist/presets/_briefs/resend.js.map +1 -0
  287. package/dist/presets/_briefs/revolut.d.ts +3 -0
  288. package/dist/presets/_briefs/revolut.js +191 -0
  289. package/dist/presets/_briefs/revolut.js.map +1 -0
  290. package/dist/presets/_briefs/runwayml.d.ts +3 -0
  291. package/dist/presets/_briefs/runwayml.js +250 -0
  292. package/dist/presets/_briefs/runwayml.js.map +1 -0
  293. package/dist/presets/_briefs/sanity.d.ts +3 -0
  294. package/dist/presets/_briefs/sanity.js +363 -0
  295. package/dist/presets/_briefs/sanity.js.map +1 -0
  296. package/dist/presets/_briefs/sentry.d.ts +3 -0
  297. package/dist/presets/_briefs/sentry.js +268 -0
  298. package/dist/presets/_briefs/sentry.js.map +1 -0
  299. package/dist/presets/_briefs/shopify.d.ts +3 -0
  300. package/dist/presets/_briefs/shopify.js +356 -0
  301. package/dist/presets/_briefs/shopify.js.map +1 -0
  302. package/dist/presets/_briefs/slack.d.ts +3 -0
  303. package/dist/presets/_briefs/slack.js +221 -0
  304. package/dist/presets/_briefs/slack.js.map +1 -0
  305. package/dist/presets/_briefs/spacex.d.ts +3 -0
  306. package/dist/presets/_briefs/spacex.js +200 -0
  307. package/dist/presets/_briefs/spacex.js.map +1 -0
  308. package/dist/presets/_briefs/spotify.d.ts +3 -0
  309. package/dist/presets/_briefs/spotify.js +252 -0
  310. package/dist/presets/_briefs/spotify.js.map +1 -0
  311. package/dist/presets/_briefs/starbucks.d.ts +3 -0
  312. package/dist/presets/_briefs/starbucks.js +586 -0
  313. package/dist/presets/_briefs/starbucks.js.map +1 -0
  314. package/dist/presets/_briefs/stripe.d.ts +3 -0
  315. package/dist/presets/_briefs/stripe.js +328 -0
  316. package/dist/presets/_briefs/stripe.js.map +1 -0
  317. package/dist/presets/_briefs/supabase.d.ts +3 -0
  318. package/dist/presets/_briefs/supabase.js +261 -0
  319. package/dist/presets/_briefs/supabase.js.map +1 -0
  320. package/dist/presets/_briefs/superhuman.d.ts +3 -0
  321. package/dist/presets/_briefs/superhuman.js +258 -0
  322. package/dist/presets/_briefs/superhuman.js.map +1 -0
  323. package/dist/presets/_briefs/tesla.d.ts +3 -0
  324. package/dist/presets/_briefs/tesla.js +292 -0
  325. package/dist/presets/_briefs/tesla.js.map +1 -0
  326. package/dist/presets/_briefs/theverge.d.ts +3 -0
  327. package/dist/presets/_briefs/theverge.js +345 -0
  328. package/dist/presets/_briefs/theverge.js.map +1 -0
  329. package/dist/presets/_briefs/together.d.ts +3 -0
  330. package/dist/presets/_briefs/together.js +269 -0
  331. package/dist/presets/_briefs/together.js.map +1 -0
  332. package/dist/presets/_briefs/uber.d.ts +3 -0
  333. package/dist/presets/_briefs/uber.js +301 -0
  334. package/dist/presets/_briefs/uber.js.map +1 -0
  335. package/dist/presets/_briefs/vercel.d.ts +3 -0
  336. package/dist/presets/_briefs/vercel.js +316 -0
  337. package/dist/presets/_briefs/vercel.js.map +1 -0
  338. package/dist/presets/_briefs/vodafone.d.ts +3 -0
  339. package/dist/presets/_briefs/vodafone.js +429 -0
  340. package/dist/presets/_briefs/vodafone.js.map +1 -0
  341. package/dist/presets/_briefs/voltagent.d.ts +3 -0
  342. package/dist/presets/_briefs/voltagent.js +329 -0
  343. package/dist/presets/_briefs/voltagent.js.map +1 -0
  344. package/dist/presets/_briefs/warp.d.ts +3 -0
  345. package/dist/presets/_briefs/warp.js +259 -0
  346. package/dist/presets/_briefs/warp.js.map +1 -0
  347. package/dist/presets/_briefs/webflow.d.ts +3 -0
  348. package/dist/presets/_briefs/webflow.js +98 -0
  349. package/dist/presets/_briefs/webflow.js.map +1 -0
  350. package/dist/presets/_briefs/wired.d.ts +3 -0
  351. package/dist/presets/_briefs/wired.js +284 -0
  352. package/dist/presets/_briefs/wired.js.map +1 -0
  353. package/dist/presets/_briefs/wise.d.ts +3 -0
  354. package/dist/presets/_briefs/wise.js +179 -0
  355. package/dist/presets/_briefs/wise.js.map +1 -0
  356. package/dist/presets/_briefs/x.d.ts +3 -0
  357. package/dist/presets/_briefs/x.js +263 -0
  358. package/dist/presets/_briefs/x.js.map +1 -0
  359. package/dist/presets/_briefs/zapier.d.ts +3 -0
  360. package/dist/presets/_briefs/zapier.js +334 -0
  361. package/dist/presets/_briefs/zapier.js.map +1 -0
  362. package/dist/presets/airbnb.d.ts +5 -0
  363. package/dist/presets/airbnb.js +7 -0
  364. package/dist/presets/airbnb.js.map +1 -0
  365. package/dist/presets/airtable.d.ts +5 -0
  366. package/dist/presets/airtable.js +7 -0
  367. package/dist/presets/airtable.js.map +1 -0
  368. package/dist/presets/apple.d.ts +5 -0
  369. package/dist/presets/apple.js +7 -0
  370. package/dist/presets/apple.js.map +1 -0
  371. package/dist/presets/binance.d.ts +5 -0
  372. package/dist/presets/binance.js +7 -0
  373. package/dist/presets/binance.js.map +1 -0
  374. package/dist/presets/bmw-m.d.ts +5 -0
  375. package/dist/presets/bmw-m.js +7 -0
  376. package/dist/presets/bmw-m.js.map +1 -0
  377. package/dist/presets/bmw.d.ts +5 -0
  378. package/dist/presets/bmw.js +7 -0
  379. package/dist/presets/bmw.js.map +1 -0
  380. package/dist/presets/bugatti.d.ts +5 -0
  381. package/dist/presets/bugatti.js +7 -0
  382. package/dist/presets/bugatti.js.map +1 -0
  383. package/dist/presets/cal.d.ts +5 -0
  384. package/dist/presets/cal.js +7 -0
  385. package/dist/presets/cal.js.map +1 -0
  386. package/dist/presets/claude.d.ts +5 -0
  387. package/dist/presets/claude.js +7 -0
  388. package/dist/presets/claude.js.map +1 -0
  389. package/dist/presets/clay.d.ts +5 -0
  390. package/dist/presets/clay.js +7 -0
  391. package/dist/presets/clay.js.map +1 -0
  392. package/dist/presets/clickhouse.d.ts +5 -0
  393. package/dist/presets/clickhouse.js +7 -0
  394. package/dist/presets/clickhouse.js.map +1 -0
  395. package/dist/presets/cohere.d.ts +5 -0
  396. package/dist/presets/cohere.js +7 -0
  397. package/dist/presets/cohere.js.map +1 -0
  398. package/dist/presets/coinbase.d.ts +5 -0
  399. package/dist/presets/coinbase.js +7 -0
  400. package/dist/presets/coinbase.js.map +1 -0
  401. package/dist/presets/composio.d.ts +5 -0
  402. package/dist/presets/composio.js +7 -0
  403. package/dist/presets/composio.js.map +1 -0
  404. package/dist/presets/cursor.d.ts +5 -0
  405. package/dist/presets/cursor.js +7 -0
  406. package/dist/presets/cursor.js.map +1 -0
  407. package/dist/presets/elevenlabs.d.ts +5 -0
  408. package/dist/presets/elevenlabs.js +7 -0
  409. package/dist/presets/elevenlabs.js.map +1 -0
  410. package/dist/presets/expo.d.ts +5 -0
  411. package/dist/presets/expo.js +7 -0
  412. package/dist/presets/expo.js.map +1 -0
  413. package/dist/presets/ferrari.d.ts +5 -0
  414. package/dist/presets/ferrari.js +7 -0
  415. package/dist/presets/ferrari.js.map +1 -0
  416. package/dist/presets/figma.d.ts +5 -0
  417. package/dist/presets/figma.js +7 -0
  418. package/dist/presets/figma.js.map +1 -0
  419. package/dist/presets/framer.d.ts +5 -0
  420. package/dist/presets/framer.js +7 -0
  421. package/dist/presets/framer.js.map +1 -0
  422. package/dist/presets/hashicorp.d.ts +5 -0
  423. package/dist/presets/hashicorp.js +7 -0
  424. package/dist/presets/hashicorp.js.map +1 -0
  425. package/dist/presets/ibm.d.ts +5 -0
  426. package/dist/presets/ibm.js +7 -0
  427. package/dist/presets/ibm.js.map +1 -0
  428. package/dist/presets/index.d.ts +94 -0
  429. package/dist/presets/index.js +297 -0
  430. package/dist/presets/index.js.map +1 -0
  431. package/dist/presets/intercom.d.ts +5 -0
  432. package/dist/presets/intercom.js +7 -0
  433. package/dist/presets/intercom.js.map +1 -0
  434. package/dist/presets/kraken.d.ts +5 -0
  435. package/dist/presets/kraken.js +7 -0
  436. package/dist/presets/kraken.js.map +1 -0
  437. package/dist/presets/lamborghini.d.ts +5 -0
  438. package/dist/presets/lamborghini.js +7 -0
  439. package/dist/presets/lamborghini.js.map +1 -0
  440. package/dist/presets/linear.d.ts +5 -0
  441. package/dist/presets/linear.js +7 -0
  442. package/dist/presets/linear.js.map +1 -0
  443. package/dist/presets/lovable.d.ts +5 -0
  444. package/dist/presets/lovable.js +7 -0
  445. package/dist/presets/lovable.js.map +1 -0
  446. package/dist/presets/mastercard.d.ts +5 -0
  447. package/dist/presets/mastercard.js +7 -0
  448. package/dist/presets/mastercard.js.map +1 -0
  449. package/dist/presets/meta.d.ts +5 -0
  450. package/dist/presets/meta.js +7 -0
  451. package/dist/presets/meta.js.map +1 -0
  452. package/dist/presets/minimax.d.ts +5 -0
  453. package/dist/presets/minimax.js +7 -0
  454. package/dist/presets/minimax.js.map +1 -0
  455. package/dist/presets/mintlify.d.ts +5 -0
  456. package/dist/presets/mintlify.js +7 -0
  457. package/dist/presets/mintlify.js.map +1 -0
  458. package/dist/presets/miro.d.ts +5 -0
  459. package/dist/presets/miro.js +7 -0
  460. package/dist/presets/miro.js.map +1 -0
  461. package/dist/presets/mistral.d.ts +5 -0
  462. package/dist/presets/mistral.js +7 -0
  463. package/dist/presets/mistral.js.map +1 -0
  464. package/dist/presets/mongodb.d.ts +5 -0
  465. package/dist/presets/mongodb.js +7 -0
  466. package/dist/presets/mongodb.js.map +1 -0
  467. package/dist/presets/nike.d.ts +5 -0
  468. package/dist/presets/nike.js +7 -0
  469. package/dist/presets/nike.js.map +1 -0
  470. package/dist/presets/notion.d.ts +5 -0
  471. package/dist/presets/notion.js +7 -0
  472. package/dist/presets/notion.js.map +1 -0
  473. package/dist/presets/nvidia.d.ts +5 -0
  474. package/dist/presets/nvidia.js +7 -0
  475. package/dist/presets/nvidia.js.map +1 -0
  476. package/dist/presets/ollama.d.ts +5 -0
  477. package/dist/presets/ollama.js +7 -0
  478. package/dist/presets/ollama.js.map +1 -0
  479. package/dist/presets/opencode.d.ts +5 -0
  480. package/dist/presets/opencode.js +7 -0
  481. package/dist/presets/opencode.js.map +1 -0
  482. package/dist/presets/pinterest.d.ts +5 -0
  483. package/dist/presets/pinterest.js +7 -0
  484. package/dist/presets/pinterest.js.map +1 -0
  485. package/dist/presets/playstation.d.ts +5 -0
  486. package/dist/presets/playstation.js +7 -0
  487. package/dist/presets/playstation.js.map +1 -0
  488. package/dist/presets/posthog.d.ts +5 -0
  489. package/dist/presets/posthog.js +7 -0
  490. package/dist/presets/posthog.js.map +1 -0
  491. package/dist/presets/raycast.d.ts +5 -0
  492. package/dist/presets/raycast.js +7 -0
  493. package/dist/presets/raycast.js.map +1 -0
  494. package/dist/presets/renault.d.ts +5 -0
  495. package/dist/presets/renault.js +7 -0
  496. package/dist/presets/renault.js.map +1 -0
  497. package/dist/presets/replicate.d.ts +5 -0
  498. package/dist/presets/replicate.js +7 -0
  499. package/dist/presets/replicate.js.map +1 -0
  500. package/dist/presets/resend.d.ts +5 -0
  501. package/dist/presets/resend.js +7 -0
  502. package/dist/presets/resend.js.map +1 -0
  503. package/dist/presets/revolut.d.ts +5 -0
  504. package/dist/presets/revolut.js +7 -0
  505. package/dist/presets/revolut.js.map +1 -0
  506. package/dist/presets/runwayml.d.ts +5 -0
  507. package/dist/presets/runwayml.js +7 -0
  508. package/dist/presets/runwayml.js.map +1 -0
  509. package/dist/presets/sanity.d.ts +5 -0
  510. package/dist/presets/sanity.js +7 -0
  511. package/dist/presets/sanity.js.map +1 -0
  512. package/dist/presets/sentry.d.ts +5 -0
  513. package/dist/presets/sentry.js +7 -0
  514. package/dist/presets/sentry.js.map +1 -0
  515. package/dist/presets/shopify.d.ts +5 -0
  516. package/dist/presets/shopify.js +7 -0
  517. package/dist/presets/shopify.js.map +1 -0
  518. package/dist/presets/slack.d.ts +5 -0
  519. package/dist/presets/slack.js +7 -0
  520. package/dist/presets/slack.js.map +1 -0
  521. package/dist/presets/spacex.d.ts +5 -0
  522. package/dist/presets/spacex.js +7 -0
  523. package/dist/presets/spacex.js.map +1 -0
  524. package/dist/presets/spotify.d.ts +5 -0
  525. package/dist/presets/spotify.js +7 -0
  526. package/dist/presets/spotify.js.map +1 -0
  527. package/dist/presets/starbucks.d.ts +5 -0
  528. package/dist/presets/starbucks.js +7 -0
  529. package/dist/presets/starbucks.js.map +1 -0
  530. package/dist/presets/stripe.d.ts +5 -0
  531. package/dist/presets/stripe.js +7 -0
  532. package/dist/presets/stripe.js.map +1 -0
  533. package/dist/presets/supabase.d.ts +5 -0
  534. package/dist/presets/supabase.js +7 -0
  535. package/dist/presets/supabase.js.map +1 -0
  536. package/dist/presets/superhuman.d.ts +5 -0
  537. package/dist/presets/superhuman.js +7 -0
  538. package/dist/presets/superhuman.js.map +1 -0
  539. package/dist/presets/tesla.d.ts +5 -0
  540. package/dist/presets/tesla.js +7 -0
  541. package/dist/presets/tesla.js.map +1 -0
  542. package/dist/presets/theverge.d.ts +5 -0
  543. package/dist/presets/theverge.js +7 -0
  544. package/dist/presets/theverge.js.map +1 -0
  545. package/dist/presets/together.d.ts +5 -0
  546. package/dist/presets/together.js +7 -0
  547. package/dist/presets/together.js.map +1 -0
  548. package/dist/presets/uber.d.ts +5 -0
  549. package/dist/presets/uber.js +7 -0
  550. package/dist/presets/uber.js.map +1 -0
  551. package/dist/presets/vercel.d.ts +5 -0
  552. package/dist/presets/vercel.js +7 -0
  553. package/dist/presets/vercel.js.map +1 -0
  554. package/dist/presets/vodafone.d.ts +5 -0
  555. package/dist/presets/vodafone.js +7 -0
  556. package/dist/presets/vodafone.js.map +1 -0
  557. package/dist/presets/voltagent.d.ts +5 -0
  558. package/dist/presets/voltagent.js +7 -0
  559. package/dist/presets/voltagent.js.map +1 -0
  560. package/dist/presets/warp.d.ts +5 -0
  561. package/dist/presets/warp.js +7 -0
  562. package/dist/presets/warp.js.map +1 -0
  563. package/dist/presets/webflow.d.ts +5 -0
  564. package/dist/presets/webflow.js +7 -0
  565. package/dist/presets/webflow.js.map +1 -0
  566. package/dist/presets/wired.d.ts +5 -0
  567. package/dist/presets/wired.js +7 -0
  568. package/dist/presets/wired.js.map +1 -0
  569. package/dist/presets/wise.d.ts +5 -0
  570. package/dist/presets/wise.js +7 -0
  571. package/dist/presets/wise.js.map +1 -0
  572. package/dist/presets/x.d.ts +5 -0
  573. package/dist/presets/x.js +7 -0
  574. package/dist/presets/x.js.map +1 -0
  575. package/dist/presets/zapier.d.ts +5 -0
  576. package/dist/presets/zapier.js +7 -0
  577. package/dist/presets/zapier.js.map +1 -0
  578. package/package.json +17 -5
package/dist/index.d.ts CHANGED
@@ -1,59 +1,221 @@
1
- import { Theme } from '@hex-core/registry';
1
+ import { ThemeCategory, Theme } from '@hex-core/registry';
2
2
  export { emberTheme, midnightTheme } from '@hex-core/tokens';
3
+ export { loadThemeBrief, presetSlugs, presetsByCategory, voltagentPresets } from './presets/index.js';
4
+ export { airbnbTheme } from './presets/airbnb.js';
5
+ export { airtableTheme } from './presets/airtable.js';
6
+ export { appleTheme } from './presets/apple.js';
7
+ export { binanceTheme } from './presets/binance.js';
8
+ export { bmwMTheme } from './presets/bmw-m.js';
9
+ export { bmwTheme } from './presets/bmw.js';
10
+ export { bugattiTheme } from './presets/bugatti.js';
11
+ export { calTheme } from './presets/cal.js';
12
+ export { claudeTheme } from './presets/claude.js';
13
+ export { clayTheme } from './presets/clay.js';
14
+ export { clickhouseTheme } from './presets/clickhouse.js';
15
+ export { cohereTheme } from './presets/cohere.js';
16
+ export { coinbaseTheme } from './presets/coinbase.js';
17
+ export { composioTheme } from './presets/composio.js';
18
+ export { cursorTheme } from './presets/cursor.js';
19
+ export { elevenlabsTheme } from './presets/elevenlabs.js';
20
+ export { expoTheme } from './presets/expo.js';
21
+ export { ferrariTheme } from './presets/ferrari.js';
22
+ export { figmaTheme } from './presets/figma.js';
23
+ export { framerTheme } from './presets/framer.js';
24
+ export { hashicorpTheme } from './presets/hashicorp.js';
25
+ export { ibmTheme } from './presets/ibm.js';
26
+ export { intercomTheme } from './presets/intercom.js';
27
+ export { krakenTheme } from './presets/kraken.js';
28
+ export { lamborghiniTheme } from './presets/lamborghini.js';
29
+ export { linearTheme } from './presets/linear.js';
30
+ export { lovableTheme } from './presets/lovable.js';
31
+ export { mastercardTheme } from './presets/mastercard.js';
32
+ export { metaTheme } from './presets/meta.js';
33
+ export { minimaxTheme } from './presets/minimax.js';
34
+ export { mintlifyTheme } from './presets/mintlify.js';
35
+ export { miroTheme } from './presets/miro.js';
36
+ export { mistralTheme } from './presets/mistral.js';
37
+ export { mongodbTheme } from './presets/mongodb.js';
38
+ export { nikeTheme } from './presets/nike.js';
39
+ export { notionTheme } from './presets/notion.js';
40
+ export { nvidiaTheme } from './presets/nvidia.js';
41
+ export { ollamaTheme } from './presets/ollama.js';
42
+ export { opencodeTheme } from './presets/opencode.js';
43
+ export { pinterestTheme } from './presets/pinterest.js';
44
+ export { playstationTheme } from './presets/playstation.js';
45
+ export { posthogTheme } from './presets/posthog.js';
46
+ export { raycastTheme } from './presets/raycast.js';
47
+ export { renaultTheme } from './presets/renault.js';
48
+ export { replicateTheme } from './presets/replicate.js';
49
+ export { resendTheme } from './presets/resend.js';
50
+ export { revolutTheme } from './presets/revolut.js';
51
+ export { runwaymlTheme } from './presets/runwayml.js';
52
+ export { sanityTheme } from './presets/sanity.js';
53
+ export { sentryTheme } from './presets/sentry.js';
54
+ export { shopifyTheme } from './presets/shopify.js';
55
+ export { slackTheme } from './presets/slack.js';
56
+ export { spacexTheme } from './presets/spacex.js';
57
+ export { spotifyTheme } from './presets/spotify.js';
58
+ export { starbucksTheme } from './presets/starbucks.js';
59
+ export { stripeTheme } from './presets/stripe.js';
60
+ export { supabaseTheme } from './presets/supabase.js';
61
+ export { superhumanTheme } from './presets/superhuman.js';
62
+ export { teslaTheme } from './presets/tesla.js';
63
+ export { thevergeTheme } from './presets/theverge.js';
64
+ export { togetherTheme } from './presets/together.js';
65
+ export { uberTheme } from './presets/uber.js';
66
+ export { vercelTheme } from './presets/vercel.js';
67
+ export { vodafoneTheme } from './presets/vodafone.js';
68
+ export { voltagentTheme } from './presets/voltagent.js';
69
+ export { warpTheme } from './presets/warp.js';
70
+ export { webflowTheme } from './presets/webflow.js';
71
+ export { wiredTheme } from './presets/wired.js';
72
+ export { wiseTheme } from './presets/wise.js';
73
+ export { xTheme } from './presets/x.js';
74
+ export { zapierTheme } from './presets/zapier.js';
3
75
 
4
76
  /**
5
- * @hex-core/themes — premium theme catalog and convenience re-exports.
77
+ * @hex-core/themes — premium theme catalog and brand-derived presets.
6
78
  *
7
79
  * This package establishes a separate publish/version surface for theme
8
80
  * presets so the bundled `@hex-core/tokens` package can stay focused on the
9
81
  * single canonical default theme + the transformer functions.
10
82
  *
11
- * Today: re-exports `midnightTheme` and `emberTheme` from `@hex-core/tokens`
12
- * so consumers have a single import location for "the catalog of themes",
13
- * and adds a `listPremiumThemes()` helper. Future premium themes
14
- * (`fintech-dark`, `editorial-warm`, `data-dense`, `pastel-soft`,
15
- * `monochrome-strict`) will land here directly without bumping `tokens`.
16
- *
17
- * The default theme remains in `@hex-core/tokens` since it is the canonical
18
- * baseline that the transformers (themeToCss, themeToScopedRuntimeCss,
19
- * themeToFlatJson, themeToTailwindConfig, generateGlobalsCss) operate on.
83
+ * Catalog:
84
+ * - `midnight`, `ember` first-party premium themes (re-exports from `@hex-core/tokens`)
85
+ * - `voltagent` brand presets — 71 brand-inspired themes (Tesla, Stripe, Linear, …)
86
+ * auto-generated from the MIT-licensed voltagent/awesome-design-md briefs
20
87
  *
21
88
  * @example
22
89
  * ```ts
23
- * import { midnightTheme, emberTheme, listPremiumThemes } from "@hex-core/themes";
90
+ * import { teslaTheme, listPremiumThemes, extendTheme, searchThemes } from "@hex-core/themes";
24
91
  * import { themeToScopedRuntimeCss } from "@hex-core/tokens";
25
92
  *
26
- * const css = themeToScopedRuntimeCss(midnightTheme, { mode: "dark" });
27
- * console.log(listPremiumThemes().map(t => t.name));
93
+ * const css = themeToScopedRuntimeCss(teslaTheme, { mode: "dark" });
94
+ *
95
+ * const myTesla = extendTheme(teslaTheme, {
96
+ * name: "my-tesla",
97
+ * tokens: { light: { primary: { value: "0 100% 50%", type: "color" } } },
98
+ * });
99
+ *
100
+ * const fintech = searchThemes({ category: "fintech" });
28
101
  * ```
29
102
  */
30
103
 
31
104
  /**
32
- * The full set of premium themes shipped by this package, keyed by name.
33
- * Future premium themes added here are picked up automatically by
34
- * {@link listPremiumThemes} and {@link getPremiumTheme}.
105
+ * The full set of themes shipped by this package, keyed by slug. Includes:
106
+ * - First-party premium themes: `midnight`, `ember`
107
+ * - 71 voltagent brand-derived presets (e.g. `tesla`, `stripe`, `linear`)
108
+ *
109
+ * Studio's theme picker iterates this map directly, so every entry shows up
110
+ * automatically without barrel-side wiring.
35
111
  */
36
112
  declare const premiumThemes: Record<string, Theme>;
37
113
  /**
38
- * Retrieve a premium theme by name.
114
+ * Retrieve a premium theme by slug.
39
115
  *
40
- * @param name - The theme identifier (e.g. `"midnight"`, `"ember"`).
41
- * @returns The matching Theme object, or `undefined` if the name is unknown.
116
+ * @param name - Theme slug (e.g. `"midnight"`, `"tesla"`, `"stripe"`).
117
+ * @returns The matching Theme object, or `undefined` if the slug is unknown.
42
118
  */
43
119
  declare function getPremiumTheme(name: string): Theme | undefined;
44
120
  /**
45
- * List metadata for every premium theme in the catalog.
121
+ * List metadata for every theme in the catalog.
46
122
  *
47
123
  * Mirrors the shape of `listThemes()` from `@hex-core/tokens` so studios and
48
124
  * theme switchers can drive both catalogs through the same UI without
49
125
  * adapter code.
50
126
  *
51
- * @returns Array of `{ name, displayName, description }` summaries.
127
+ * @returns Array of `{ name, displayName, description, category?, tags?, brand? }` summaries.
52
128
  */
53
129
  declare function listPremiumThemes(): Array<{
54
130
  name: string;
55
131
  displayName: string;
56
132
  description: string;
133
+ category?: ThemeCategory;
134
+ tags?: string[];
135
+ brand?: string;
57
136
  }>;
137
+ /** Filter input for {@link searchThemes}. */
138
+ interface SearchThemesInput {
139
+ /** Case-insensitive substring match against `name` / `displayName` / `description`. */
140
+ query?: string;
141
+ /** Restrict to a single category. */
142
+ category?: ThemeCategory;
143
+ /** All listed tags must be present (intersection match). */
144
+ tags?: string[];
145
+ }
146
+ /**
147
+ * Search the full preset catalog by category, tags, or free-text query.
148
+ * The 71 voltagent presets each carry `category` and `tags`; the
149
+ * first-party `midnight` / `ember` themes don't (they pre-date the
150
+ * metadata extension), so they only match via the `query` filter.
151
+ *
152
+ * @param input - Filter criteria; combine for AND semantics.
153
+ * @returns Matching themes, in catalog order.
154
+ */
155
+ declare function searchThemes(input?: SearchThemesInput): Theme[];
156
+ /**
157
+ * Override input for {@link extendTheme}. Token sets accept partial
158
+ * objects (token slots merge); scalar fields replace the base value
159
+ * when present. `attribution` is full-replacement (not merged) — a
160
+ * consumer rebranding a preset under their own license / URL almost
161
+ * always wants their attribution to fully replace the upstream's.
162
+ * Pass `attribution: undefined` to remove attribution entirely.
163
+ */
164
+ interface ThemeOverrides {
165
+ name?: string;
166
+ displayName?: string;
167
+ description?: string;
168
+ brand?: string;
169
+ category?: Theme["category"];
170
+ tags?: string[];
171
+ designBrief?: string;
172
+ attribution?: Theme["attribution"];
173
+ /**
174
+ * Per-mode token overrides — token slot keys are an open record
175
+ * (the schema's `tokenSetSchema` uses a catchall), so any subset
176
+ * of slots is valid. Slots not listed fall through from the base.
177
+ */
178
+ tokens?: {
179
+ light?: Theme["tokens"]["light"];
180
+ dark?: Theme["tokens"]["dark"];
181
+ };
182
+ }
183
+ /**
184
+ * Compose a custom theme by overlaying overrides on a base preset.
185
+ *
186
+ * Token sets are merged at the slot level: missing slots fall through
187
+ * from the base; overridden slots replace the entire `{ value, type }`
188
+ * record. Scalar fields replace the base when present (including
189
+ * `tags: []` which clears the inherited tag list — explicit empty is
190
+ * intentional, not surprising).
191
+ *
192
+ * `attribution` is FULL-REPLACEMENT (not deep-merged) — a consumer
193
+ * republishing a preset under their own license / brand wants their
194
+ * attribution to land cleanly without the upstream's `brand` /
195
+ * `source` / `url` leaking through. Spread base.attribution yourself
196
+ * if you actually want partial merge.
197
+ *
198
+ * The composed theme is re-validated via `strictThemeSchema` before
199
+ * return, so consumers can't accidentally produce an under-spec'd
200
+ * Theme.
201
+ *
202
+ * @example
203
+ * ```ts
204
+ * const myTesla = extendTheme(teslaTheme, {
205
+ * name: "my-tesla",
206
+ * displayName: "My Tesla",
207
+ * tokens: {
208
+ * light: { primary: { value: "0 100% 50%", type: "color" } },
209
+ * },
210
+ * });
211
+ * ```
212
+ *
213
+ * @param base - The starting theme (any preset or first-party theme)
214
+ * @param overrides - Partial theme; only specified fields override
215
+ * @returns A new validated Theme that's safe to feed to any transformer
216
+ */
217
+ declare function extendTheme(base: Theme, overrides?: ThemeOverrides): Theme;
218
+ /** All preset slugs known to this package, including first-party themes. */
219
+ declare const allThemeSlugs: readonly string[];
58
220
 
59
- export { getPremiumTheme, listPremiumThemes, premiumThemes };
221
+ export { type SearchThemesInput, type ThemeOverrides, allThemeSlugs, extendTheme, getPremiumTheme, listPremiumThemes, premiumThemes, searchThemes };
package/dist/index.js CHANGED
@@ -1,8 +1,230 @@
1
+ import {
2
+ loadThemeBrief,
3
+ presetSlugs,
4
+ presetsByCategory,
5
+ voltagentPresets
6
+ } from "./chunk-EV4APPVD.js";
7
+ import {
8
+ vodafoneTheme
9
+ } from "./chunk-EZFP45CP.js";
10
+ import {
11
+ voltagentTheme
12
+ } from "./chunk-4QXKFLEQ.js";
13
+ import {
14
+ warpTheme
15
+ } from "./chunk-GAQ6LS55.js";
16
+ import {
17
+ webflowTheme
18
+ } from "./chunk-DLLP5KXF.js";
19
+ import {
20
+ wiredTheme
21
+ } from "./chunk-2LU3ENLP.js";
22
+ import {
23
+ wiseTheme
24
+ } from "./chunk-GSTGBWQZ.js";
25
+ import {
26
+ xTheme
27
+ } from "./chunk-7MPAMAFC.js";
28
+ import {
29
+ zapierTheme
30
+ } from "./chunk-7ZAFN5WE.js";
31
+ import {
32
+ stripeTheme
33
+ } from "./chunk-I267MA2D.js";
34
+ import {
35
+ supabaseTheme
36
+ } from "./chunk-IXKXYUXQ.js";
37
+ import {
38
+ superhumanTheme
39
+ } from "./chunk-5BH5ZMDH.js";
40
+ import {
41
+ teslaTheme
42
+ } from "./chunk-Z3XCYZN4.js";
43
+ import {
44
+ thevergeTheme
45
+ } from "./chunk-IRDDULX7.js";
46
+ import {
47
+ togetherTheme
48
+ } from "./chunk-MVMZS3PQ.js";
49
+ import {
50
+ uberTheme
51
+ } from "./chunk-7OAKNGRU.js";
52
+ import {
53
+ vercelTheme
54
+ } from "./chunk-KCI73LIZ.js";
55
+ import {
56
+ runwaymlTheme
57
+ } from "./chunk-GAOOBTSH.js";
58
+ import {
59
+ sanityTheme
60
+ } from "./chunk-NKTZOR54.js";
61
+ import {
62
+ sentryTheme
63
+ } from "./chunk-YRGKMQP4.js";
64
+ import {
65
+ shopifyTheme
66
+ } from "./chunk-PN567MCL.js";
67
+ import {
68
+ slackTheme
69
+ } from "./chunk-5O65TVZP.js";
70
+ import {
71
+ spacexTheme
72
+ } from "./chunk-TXY7LBYM.js";
73
+ import {
74
+ spotifyTheme
75
+ } from "./chunk-BH7IPZBT.js";
76
+ import {
77
+ starbucksTheme
78
+ } from "./chunk-WAU2FYDY.js";
79
+ import {
80
+ pinterestTheme
81
+ } from "./chunk-72IPJZ6V.js";
82
+ import {
83
+ playstationTheme
84
+ } from "./chunk-SG2ACM7O.js";
85
+ import {
86
+ posthogTheme
87
+ } from "./chunk-CFLNGBY5.js";
88
+ import {
89
+ raycastTheme
90
+ } from "./chunk-KDS62BXD.js";
91
+ import {
92
+ renaultTheme
93
+ } from "./chunk-IJBNLZQH.js";
94
+ import {
95
+ replicateTheme
96
+ } from "./chunk-CUO2HNBR.js";
97
+ import {
98
+ resendTheme
99
+ } from "./chunk-RTCJ5B7S.js";
100
+ import {
101
+ revolutTheme
102
+ } from "./chunk-7YP2HHHV.js";
103
+ import {
104
+ miroTheme
105
+ } from "./chunk-Z6XLNVF3.js";
106
+ import {
107
+ mistralTheme
108
+ } from "./chunk-5TDK4XMA.js";
109
+ import {
110
+ mongodbTheme
111
+ } from "./chunk-LDZC2QYF.js";
112
+ import {
113
+ nikeTheme
114
+ } from "./chunk-LNKOIFH4.js";
115
+ import {
116
+ notionTheme
117
+ } from "./chunk-VUSSQAEI.js";
118
+ import {
119
+ nvidiaTheme
120
+ } from "./chunk-QTKMLEEM.js";
121
+ import {
122
+ ollamaTheme
123
+ } from "./chunk-VOXUB4AT.js";
124
+ import {
125
+ opencodeTheme
126
+ } from "./chunk-D5JFUYFN.js";
127
+ import {
128
+ krakenTheme
129
+ } from "./chunk-4LQ3BH7F.js";
130
+ import {
131
+ lamborghiniTheme
132
+ } from "./chunk-73N7YFTY.js";
133
+ import {
134
+ linearTheme
135
+ } from "./chunk-ATBX7KXM.js";
136
+ import {
137
+ lovableTheme
138
+ } from "./chunk-I6H6W42Y.js";
139
+ import {
140
+ mastercardTheme
141
+ } from "./chunk-BK432RWC.js";
142
+ import {
143
+ metaTheme
144
+ } from "./chunk-RN4ZII2I.js";
145
+ import {
146
+ minimaxTheme
147
+ } from "./chunk-OCQYO6PW.js";
148
+ import {
149
+ mintlifyTheme
150
+ } from "./chunk-ZQJDUTSK.js";
151
+ import {
152
+ elevenlabsTheme
153
+ } from "./chunk-NIED6GXO.js";
154
+ import {
155
+ expoTheme
156
+ } from "./chunk-CTI3W357.js";
157
+ import {
158
+ ferrariTheme
159
+ } from "./chunk-2OH25A4J.js";
160
+ import {
161
+ figmaTheme
162
+ } from "./chunk-FE2IENES.js";
163
+ import {
164
+ framerTheme
165
+ } from "./chunk-JZEZHM5N.js";
166
+ import {
167
+ hashicorpTheme
168
+ } from "./chunk-FK5WSFAA.js";
169
+ import {
170
+ ibmTheme
171
+ } from "./chunk-KZDIZ2FL.js";
172
+ import {
173
+ intercomTheme
174
+ } from "./chunk-KXBE5FQ7.js";
175
+ import {
176
+ calTheme
177
+ } from "./chunk-2SI7O4FQ.js";
178
+ import {
179
+ claudeTheme
180
+ } from "./chunk-E26YKJRK.js";
181
+ import {
182
+ clayTheme
183
+ } from "./chunk-I4Z7DY3Z.js";
184
+ import {
185
+ clickhouseTheme
186
+ } from "./chunk-QEBXRSTH.js";
187
+ import {
188
+ cohereTheme
189
+ } from "./chunk-SORTCBSJ.js";
190
+ import {
191
+ coinbaseTheme
192
+ } from "./chunk-PJAJD5VJ.js";
193
+ import {
194
+ composioTheme
195
+ } from "./chunk-7YPET3HT.js";
196
+ import {
197
+ cursorTheme
198
+ } from "./chunk-UIS6TMM5.js";
199
+ import {
200
+ airbnbTheme
201
+ } from "./chunk-BCLCH6JZ.js";
202
+ import {
203
+ airtableTheme
204
+ } from "./chunk-G2V6XAJ7.js";
205
+ import {
206
+ appleTheme
207
+ } from "./chunk-CEQN6EQY.js";
208
+ import {
209
+ binanceTheme
210
+ } from "./chunk-BMLLM5GC.js";
211
+ import {
212
+ bmwMTheme
213
+ } from "./chunk-DE2NWOEB.js";
214
+ import {
215
+ bmwTheme
216
+ } from "./chunk-ZTYINGDT.js";
217
+ import {
218
+ bugattiTheme
219
+ } from "./chunk-KLNZW4GO.js";
220
+
1
221
  // src/index.ts
222
+ import { strictThemeSchema, themeSchema } from "@hex-core/registry";
2
223
  import { emberTheme, midnightTheme } from "@hex-core/tokens";
3
224
  var premiumThemes = {
4
225
  midnight: midnightTheme,
5
- ember: emberTheme
226
+ ember: emberTheme,
227
+ ...voltagentPresets
6
228
  };
7
229
  function getPremiumTheme(name) {
8
230
  return premiumThemes[name];
@@ -11,14 +233,148 @@ function listPremiumThemes() {
11
233
  return Object.values(premiumThemes).map((t) => ({
12
234
  name: t.name,
13
235
  displayName: t.displayName,
14
- description: t.description
236
+ description: t.description,
237
+ category: t.category,
238
+ tags: t.tags,
239
+ // `brand` falls back to `attribution.brand` (the trademark notice
240
+ // for voltagent-derived presets) — single source of truth on the
241
+ // theme object, no duplicated top-level `brand` field.
242
+ brand: t.brand ?? t.attribution?.brand
15
243
  }));
16
244
  }
245
+ function searchThemes(input = {}) {
246
+ const { query, category, tags } = input;
247
+ const q = query?.toLowerCase().trim();
248
+ const requiredTags = tags?.map((t) => t.toLowerCase());
249
+ const out = [];
250
+ for (const theme of Object.values(premiumThemes)) {
251
+ if (category && theme.category !== category) continue;
252
+ if (requiredTags && requiredTags.length > 0) {
253
+ const themeTags = (theme.tags ?? []).map((t) => t.toLowerCase());
254
+ if (!requiredTags.every((t) => themeTags.includes(t))) continue;
255
+ }
256
+ if (q) {
257
+ const haystack = [
258
+ theme.name,
259
+ theme.displayName,
260
+ theme.description,
261
+ theme.brand,
262
+ theme.attribution?.brand
263
+ ].filter(Boolean).join(" ").toLowerCase();
264
+ if (!haystack.includes(q)) continue;
265
+ }
266
+ out.push(theme);
267
+ }
268
+ return out;
269
+ }
270
+ function extendTheme(base, overrides = {}) {
271
+ const merged = {
272
+ name: overrides.name ?? base.name,
273
+ displayName: overrides.displayName ?? base.displayName,
274
+ description: overrides.description ?? base.description,
275
+ tokens: {
276
+ light: { ...base.tokens.light, ...overrides.tokens?.light ?? {} },
277
+ dark: { ...base.tokens.dark, ...overrides.tokens?.dark ?? {} }
278
+ }
279
+ };
280
+ if ("brand" in overrides) merged.brand = overrides.brand;
281
+ else if (base.brand !== void 0) merged.brand = base.brand;
282
+ if ("category" in overrides) merged.category = overrides.category;
283
+ else if (base.category !== void 0) merged.category = base.category;
284
+ if ("tags" in overrides) merged.tags = overrides.tags;
285
+ else if (base.tags !== void 0) merged.tags = base.tags;
286
+ if ("designBrief" in overrides) merged.designBrief = overrides.designBrief;
287
+ else if (base.designBrief !== void 0) merged.designBrief = base.designBrief;
288
+ if ("attribution" in overrides) merged.attribution = overrides.attribution;
289
+ else if (base.attribution !== void 0) merged.attribution = base.attribution;
290
+ themeSchema.parse(merged);
291
+ strictThemeSchema.parse(merged);
292
+ return merged;
293
+ }
294
+ var allThemeSlugs = [...Object.keys(premiumThemes)];
17
295
  export {
296
+ airbnbTheme,
297
+ airtableTheme,
298
+ allThemeSlugs,
299
+ appleTheme,
300
+ binanceTheme,
301
+ bmwMTheme,
302
+ bmwTheme,
303
+ bugattiTheme,
304
+ calTheme,
305
+ claudeTheme,
306
+ clayTheme,
307
+ clickhouseTheme,
308
+ cohereTheme,
309
+ coinbaseTheme,
310
+ composioTheme,
311
+ cursorTheme,
312
+ elevenlabsTheme,
18
313
  emberTheme,
314
+ expoTheme,
315
+ extendTheme,
316
+ ferrariTheme,
317
+ figmaTheme,
318
+ framerTheme,
19
319
  getPremiumTheme,
320
+ hashicorpTheme,
321
+ ibmTheme,
322
+ intercomTheme,
323
+ krakenTheme,
324
+ lamborghiniTheme,
325
+ linearTheme,
20
326
  listPremiumThemes,
327
+ loadThemeBrief,
328
+ lovableTheme,
329
+ mastercardTheme,
330
+ metaTheme,
21
331
  midnightTheme,
22
- premiumThemes
332
+ minimaxTheme,
333
+ mintlifyTheme,
334
+ miroTheme,
335
+ mistralTheme,
336
+ mongodbTheme,
337
+ nikeTheme,
338
+ notionTheme,
339
+ nvidiaTheme,
340
+ ollamaTheme,
341
+ opencodeTheme,
342
+ pinterestTheme,
343
+ playstationTheme,
344
+ posthogTheme,
345
+ premiumThemes,
346
+ presetSlugs,
347
+ presetsByCategory,
348
+ raycastTheme,
349
+ renaultTheme,
350
+ replicateTheme,
351
+ resendTheme,
352
+ revolutTheme,
353
+ runwaymlTheme,
354
+ sanityTheme,
355
+ searchThemes,
356
+ sentryTheme,
357
+ shopifyTheme,
358
+ slackTheme,
359
+ spacexTheme,
360
+ spotifyTheme,
361
+ starbucksTheme,
362
+ stripeTheme,
363
+ supabaseTheme,
364
+ superhumanTheme,
365
+ teslaTheme,
366
+ thevergeTheme,
367
+ togetherTheme,
368
+ uberTheme,
369
+ vercelTheme,
370
+ vodafoneTheme,
371
+ voltagentPresets,
372
+ voltagentTheme,
373
+ warpTheme,
374
+ webflowTheme,
375
+ wiredTheme,
376
+ wiseTheme,
377
+ xTheme,
378
+ zapierTheme
23
379
  };
24
380
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @hex-core/themes — premium theme catalog and convenience re-exports.\n *\n * This package establishes a separate publish/version surface for theme\n * presets so the bundled `@hex-core/tokens` package can stay focused on the\n * single canonical default theme + the transformer functions.\n *\n * Today: re-exports `midnightTheme` and `emberTheme` from `@hex-core/tokens`\n * so consumers have a single import location for \"the catalog of themes\",\n * and adds a `listPremiumThemes()` helper. Future premium themes\n * (`fintech-dark`, `editorial-warm`, `data-dense`, `pastel-soft`,\n * `monochrome-strict`) will land here directly without bumping `tokens`.\n *\n * The default theme remains in `@hex-core/tokens` since it is the canonical\n * baseline that the transformers (themeToCss, themeToScopedRuntimeCss,\n * themeToFlatJson, themeToTailwindConfig, generateGlobalsCss) operate on.\n *\n * @example\n * ```ts\n * import { midnightTheme, emberTheme, listPremiumThemes } from \"@hex-core/themes\";\n * import { themeToScopedRuntimeCss } from \"@hex-core/tokens\";\n *\n * const css = themeToScopedRuntimeCss(midnightTheme, { mode: \"dark\" });\n * console.log(listPremiumThemes().map(t => t.name));\n * ```\n */\nimport type { Theme } from \"@hex-core/registry\";\nimport { emberTheme, midnightTheme } from \"@hex-core/tokens\";\n\nexport { emberTheme, midnightTheme };\n\n/**\n * The full set of premium themes shipped by this package, keyed by name.\n * Future premium themes added here are picked up automatically by\n * {@link listPremiumThemes} and {@link getPremiumTheme}.\n */\nexport const premiumThemes: Record<string, Theme> = {\n\tmidnight: midnightTheme,\n\tember: emberTheme,\n};\n\n/**\n * Retrieve a premium theme by name.\n *\n * @param name - The theme identifier (e.g. `\"midnight\"`, `\"ember\"`).\n * @returns The matching Theme object, or `undefined` if the name is unknown.\n */\nexport function getPremiumTheme(name: string): Theme | undefined {\n\treturn premiumThemes[name];\n}\n\n/**\n * List metadata for every premium theme in the catalog.\n *\n * Mirrors the shape of `listThemes()` from `@hex-core/tokens` so studios and\n * theme switchers can drive both catalogs through the same UI without\n * adapter code.\n *\n * @returns Array of `{ name, displayName, description }` summaries.\n */\nexport function listPremiumThemes(): Array<{\n\tname: string;\n\tdisplayName: string;\n\tdescription: string;\n}> {\n\treturn Object.values(premiumThemes).map((t) => ({\n\t\tname: t.name,\n\t\tdisplayName: t.displayName,\n\t\tdescription: t.description,\n\t}));\n}\n"],"mappings":";AA2BA,SAAS,YAAY,qBAAqB;AASnC,IAAM,gBAAuC;AAAA,EACnD,UAAU;AAAA,EACV,OAAO;AACR;AAQO,SAAS,gBAAgB,MAAiC;AAChE,SAAO,cAAc,IAAI;AAC1B;AAWO,SAAS,oBAIb;AACF,SAAO,OAAO,OAAO,aAAa,EAAE,IAAI,CAAC,OAAO;AAAA,IAC/C,MAAM,EAAE;AAAA,IACR,aAAa,EAAE;AAAA,IACf,aAAa,EAAE;AAAA,EAChB,EAAE;AACH;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @hex-core/themes — premium theme catalog and brand-derived presets.\n *\n * This package establishes a separate publish/version surface for theme\n * presets so the bundled `@hex-core/tokens` package can stay focused on the\n * single canonical default theme + the transformer functions.\n *\n * Catalog:\n * - `midnight`, `ember` — first-party premium themes (re-exports from `@hex-core/tokens`)\n * - `voltagent` brand presets — 71 brand-inspired themes (Tesla, Stripe, Linear, …)\n * auto-generated from the MIT-licensed voltagent/awesome-design-md briefs\n *\n * @example\n * ```ts\n * import { teslaTheme, listPremiumThemes, extendTheme, searchThemes } from \"@hex-core/themes\";\n * import { themeToScopedRuntimeCss } from \"@hex-core/tokens\";\n *\n * const css = themeToScopedRuntimeCss(teslaTheme, { mode: \"dark\" });\n *\n * const myTesla = extendTheme(teslaTheme, {\n * name: \"my-tesla\",\n * tokens: { light: { primary: { value: \"0 100% 50%\", type: \"color\" } } },\n * });\n *\n * const fintech = searchThemes({ category: \"fintech\" });\n * ```\n */\nimport type { Theme, ThemeCategory } from \"@hex-core/registry\";\nimport { strictThemeSchema, themeSchema } from \"@hex-core/registry\";\nimport { emberTheme, midnightTheme } from \"@hex-core/tokens\";\nimport { presetSlugs, presetsByCategory, voltagentPresets } from \"./presets/index.js\";\n\nexport { emberTheme, midnightTheme };\nexport * from \"./presets/index.js\";\n\n/**\n * The full set of themes shipped by this package, keyed by slug. Includes:\n * - First-party premium themes: `midnight`, `ember`\n * - 71 voltagent brand-derived presets (e.g. `tesla`, `stripe`, `linear`)\n *\n * Studio's theme picker iterates this map directly, so every entry shows up\n * automatically without barrel-side wiring.\n */\nexport const premiumThemes: Record<string, Theme> = {\n\tmidnight: midnightTheme,\n\tember: emberTheme,\n\t...voltagentPresets,\n};\n\n/**\n * Retrieve a premium theme by slug.\n *\n * @param name - Theme slug (e.g. `\"midnight\"`, `\"tesla\"`, `\"stripe\"`).\n * @returns The matching Theme object, or `undefined` if the slug is unknown.\n */\nexport function getPremiumTheme(name: string): Theme | undefined {\n\treturn premiumThemes[name];\n}\n\n/**\n * List metadata for every theme in the catalog.\n *\n * Mirrors the shape of `listThemes()` from `@hex-core/tokens` so studios and\n * theme switchers can drive both catalogs through the same UI without\n * adapter code.\n *\n * @returns Array of `{ name, displayName, description, category?, tags?, brand? }` summaries.\n */\nexport function listPremiumThemes(): Array<{\n\tname: string;\n\tdisplayName: string;\n\tdescription: string;\n\tcategory?: ThemeCategory;\n\ttags?: string[];\n\tbrand?: string;\n}> {\n\treturn Object.values(premiumThemes).map((t) => ({\n\t\tname: t.name,\n\t\tdisplayName: t.displayName,\n\t\tdescription: t.description,\n\t\tcategory: t.category,\n\t\ttags: t.tags,\n\t\t// `brand` falls back to `attribution.brand` (the trademark notice\n\t\t// for voltagent-derived presets) — single source of truth on the\n\t\t// theme object, no duplicated top-level `brand` field.\n\t\tbrand: t.brand ?? t.attribution?.brand,\n\t}));\n}\n\n/** Filter input for {@link searchThemes}. */\nexport interface SearchThemesInput {\n\t/** Case-insensitive substring match against `name` / `displayName` / `description`. */\n\tquery?: string;\n\t/** Restrict to a single category. */\n\tcategory?: ThemeCategory;\n\t/** All listed tags must be present (intersection match). */\n\ttags?: string[];\n}\n\n/**\n * Search the full preset catalog by category, tags, or free-text query.\n * The 71 voltagent presets each carry `category` and `tags`; the\n * first-party `midnight` / `ember` themes don't (they pre-date the\n * metadata extension), so they only match via the `query` filter.\n *\n * @param input - Filter criteria; combine for AND semantics.\n * @returns Matching themes, in catalog order.\n */\nexport function searchThemes(input: SearchThemesInput = {}): Theme[] {\n\tconst { query, category, tags } = input;\n\tconst q = query?.toLowerCase().trim();\n\tconst requiredTags = tags?.map((t) => t.toLowerCase());\n\tconst out: Theme[] = [];\n\tfor (const theme of Object.values(premiumThemes)) {\n\t\tif (category && theme.category !== category) continue;\n\t\tif (requiredTags && requiredTags.length > 0) {\n\t\t\tconst themeTags = (theme.tags ?? []).map((t) => t.toLowerCase());\n\t\t\tif (!requiredTags.every((t) => themeTags.includes(t))) continue;\n\t\t}\n\t\tif (q) {\n\t\t\tconst haystack = [\n\t\t\t\ttheme.name,\n\t\t\t\ttheme.displayName,\n\t\t\t\ttheme.description,\n\t\t\t\ttheme.brand,\n\t\t\t\ttheme.attribution?.brand,\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(\" \")\n\t\t\t\t.toLowerCase();\n\t\t\tif (!haystack.includes(q)) continue;\n\t\t}\n\t\tout.push(theme);\n\t}\n\treturn out;\n}\n\n/**\n * Override input for {@link extendTheme}. Token sets accept partial\n * objects (token slots merge); scalar fields replace the base value\n * when present. `attribution` is full-replacement (not merged) — a\n * consumer rebranding a preset under their own license / URL almost\n * always wants their attribution to fully replace the upstream's.\n * Pass `attribution: undefined` to remove attribution entirely.\n */\nexport interface ThemeOverrides {\n\tname?: string;\n\tdisplayName?: string;\n\tdescription?: string;\n\tbrand?: string;\n\tcategory?: Theme[\"category\"];\n\ttags?: string[];\n\tdesignBrief?: string;\n\tattribution?: Theme[\"attribution\"];\n\t/**\n\t * Per-mode token overrides — token slot keys are an open record\n\t * (the schema's `tokenSetSchema` uses a catchall), so any subset\n\t * of slots is valid. Slots not listed fall through from the base.\n\t */\n\ttokens?: {\n\t\tlight?: Theme[\"tokens\"][\"light\"];\n\t\tdark?: Theme[\"tokens\"][\"dark\"];\n\t};\n}\n\n/**\n * Compose a custom theme by overlaying overrides on a base preset.\n *\n * Token sets are merged at the slot level: missing slots fall through\n * from the base; overridden slots replace the entire `{ value, type }`\n * record. Scalar fields replace the base when present (including\n * `tags: []` which clears the inherited tag list — explicit empty is\n * intentional, not surprising).\n *\n * `attribution` is FULL-REPLACEMENT (not deep-merged) — a consumer\n * republishing a preset under their own license / brand wants their\n * attribution to land cleanly without the upstream's `brand` /\n * `source` / `url` leaking through. Spread base.attribution yourself\n * if you actually want partial merge.\n *\n * The composed theme is re-validated via `strictThemeSchema` before\n * return, so consumers can't accidentally produce an under-spec'd\n * Theme.\n *\n * @example\n * ```ts\n * const myTesla = extendTheme(teslaTheme, {\n * name: \"my-tesla\",\n * displayName: \"My Tesla\",\n * tokens: {\n * light: { primary: { value: \"0 100% 50%\", type: \"color\" } },\n * },\n * });\n * ```\n *\n * @param base - The starting theme (any preset or first-party theme)\n * @param overrides - Partial theme; only specified fields override\n * @returns A new validated Theme that's safe to feed to any transformer\n */\nexport function extendTheme(base: Theme, overrides: ThemeOverrides = {}): Theme {\n\t// Build a fresh theme so we never mutate `base` (consumers can call\n\t// extendTheme repeatedly against the same shared preset).\n\tconst merged: Theme = {\n\t\tname: overrides.name ?? base.name,\n\t\tdisplayName: overrides.displayName ?? base.displayName,\n\t\tdescription: overrides.description ?? base.description,\n\t\ttokens: {\n\t\t\tlight: { ...base.tokens.light, ...(overrides.tokens?.light ?? {}) },\n\t\t\tdark: { ...base.tokens.dark, ...(overrides.tokens?.dark ?? {}) },\n\t\t},\n\t};\n\n\t// Optional metadata: caller-supplied value wins (including explicit\n\t// empty arrays / undefined). `in` checks distinguish \"not specified\"\n\t// from \"specified as undefined\" so consumers can clear inherited\n\t// fields when they want to.\n\tif (\"brand\" in overrides) merged.brand = overrides.brand;\n\telse if (base.brand !== undefined) merged.brand = base.brand;\n\n\tif (\"category\" in overrides) merged.category = overrides.category;\n\telse if (base.category !== undefined) merged.category = base.category;\n\n\tif (\"tags\" in overrides) merged.tags = overrides.tags;\n\telse if (base.tags !== undefined) merged.tags = base.tags;\n\n\tif (\"designBrief\" in overrides) merged.designBrief = overrides.designBrief;\n\telse if (base.designBrief !== undefined) merged.designBrief = base.designBrief;\n\n\t// Full-replacement semantics for attribution (see JSDoc).\n\tif (\"attribution\" in overrides) merged.attribution = overrides.attribution;\n\telse if (base.attribution !== undefined) merged.attribution = base.attribution;\n\n\t// Permissive parse first so consumer overrides like `tags: []` pass.\n\t// Strict parse catches any token-slot regression.\n\tthemeSchema.parse(merged);\n\tstrictThemeSchema.parse(merged);\n\n\treturn merged;\n}\n\n/** All preset slugs known to this package, including first-party themes. */\nexport const allThemeSlugs: readonly string[] = [...Object.keys(premiumThemes)];\n\nexport { presetSlugs, presetsByCategory };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,SAAS,mBAAmB,mBAAmB;AAC/C,SAAS,YAAY,qBAAqB;AAcnC,IAAM,gBAAuC;AAAA,EACnD,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACJ;AAQO,SAAS,gBAAgB,MAAiC;AAChE,SAAO,cAAc,IAAI;AAC1B;AAWO,SAAS,oBAOb;AACF,SAAO,OAAO,OAAO,aAAa,EAAE,IAAI,CAAC,OAAO;AAAA,IAC/C,MAAM,EAAE;AAAA,IACR,aAAa,EAAE;AAAA,IACf,aAAa,EAAE;AAAA,IACf,UAAU,EAAE;AAAA,IACZ,MAAM,EAAE;AAAA;AAAA;AAAA;AAAA,IAIR,OAAO,EAAE,SAAS,EAAE,aAAa;AAAA,EAClC,EAAE;AACH;AAqBO,SAAS,aAAa,QAA2B,CAAC,GAAY;AACpE,QAAM,EAAE,OAAO,UAAU,KAAK,IAAI;AAClC,QAAM,IAAI,OAAO,YAAY,EAAE,KAAK;AACpC,QAAM,eAAe,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;AACrD,QAAM,MAAe,CAAC;AACtB,aAAW,SAAS,OAAO,OAAO,aAAa,GAAG;AACjD,QAAI,YAAY,MAAM,aAAa,SAAU;AAC7C,QAAI,gBAAgB,aAAa,SAAS,GAAG;AAC5C,YAAM,aAAa,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;AAC/D,UAAI,CAAC,aAAa,MAAM,CAAC,MAAM,UAAU,SAAS,CAAC,CAAC,EAAG;AAAA,IACxD;AACA,QAAI,GAAG;AACN,YAAM,WAAW;AAAA,QAChB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,aAAa;AAAA,MACpB,EACE,OAAO,OAAO,EACd,KAAK,GAAG,EACR,YAAY;AACd,UAAI,CAAC,SAAS,SAAS,CAAC,EAAG;AAAA,IAC5B;AACA,QAAI,KAAK,KAAK;AAAA,EACf;AACA,SAAO;AACR;AAgEO,SAAS,YAAY,MAAa,YAA4B,CAAC,GAAU;AAG/E,QAAM,SAAgB;AAAA,IACrB,MAAM,UAAU,QAAQ,KAAK;AAAA,IAC7B,aAAa,UAAU,eAAe,KAAK;AAAA,IAC3C,aAAa,UAAU,eAAe,KAAK;AAAA,IAC3C,QAAQ;AAAA,MACP,OAAO,EAAE,GAAG,KAAK,OAAO,OAAO,GAAI,UAAU,QAAQ,SAAS,CAAC,EAAG;AAAA,MAClE,MAAM,EAAE,GAAG,KAAK,OAAO,MAAM,GAAI,UAAU,QAAQ,QAAQ,CAAC,EAAG;AAAA,IAChE;AAAA,EACD;AAMA,MAAI,WAAW,UAAW,QAAO,QAAQ,UAAU;AAAA,WAC1C,KAAK,UAAU,OAAW,QAAO,QAAQ,KAAK;AAEvD,MAAI,cAAc,UAAW,QAAO,WAAW,UAAU;AAAA,WAChD,KAAK,aAAa,OAAW,QAAO,WAAW,KAAK;AAE7D,MAAI,UAAU,UAAW,QAAO,OAAO,UAAU;AAAA,WACxC,KAAK,SAAS,OAAW,QAAO,OAAO,KAAK;AAErD,MAAI,iBAAiB,UAAW,QAAO,cAAc,UAAU;AAAA,WACtD,KAAK,gBAAgB,OAAW,QAAO,cAAc,KAAK;AAGnE,MAAI,iBAAiB,UAAW,QAAO,cAAc,UAAU;AAAA,WACtD,KAAK,gBAAgB,OAAW,QAAO,cAAc,KAAK;AAInE,cAAY,MAAM,MAAM;AACxB,oBAAkB,MAAM,MAAM;AAE9B,SAAO;AACR;AAGO,IAAM,gBAAmC,CAAC,GAAG,OAAO,KAAK,aAAa,CAAC;","names":[]}