@tamagui/config-v5 0.0.0-bootstrap.0 → 3.0.0-beta.643.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 (317) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/builder.cjs +19 -0
  3. package/dist/cjs/builder.native.cjs +21 -0
  4. package/dist/cjs/builder.native.js +23 -0
  5. package/dist/cjs/builder.native.js.map +1 -0
  6. package/dist/cjs/create-theme/applyMask.cjs +64 -0
  7. package/dist/cjs/create-theme/applyMask.native.cjs +69 -0
  8. package/dist/cjs/create-theme/applyMask.native.js +71 -0
  9. package/dist/cjs/create-theme/applyMask.native.js.map +1 -0
  10. package/dist/cjs/create-theme/combineMasks.cjs +45 -0
  11. package/dist/cjs/create-theme/combineMasks.native.cjs +67 -0
  12. package/dist/cjs/create-theme/combineMasks.native.js +69 -0
  13. package/dist/cjs/create-theme/combineMasks.native.js.map +1 -0
  14. package/dist/cjs/create-theme/createTheme.cjs +104 -0
  15. package/dist/cjs/create-theme/createTheme.native.cjs +109 -0
  16. package/dist/cjs/create-theme/createTheme.native.js +111 -0
  17. package/dist/cjs/create-theme/createTheme.native.js.map +1 -0
  18. package/dist/cjs/create-theme/createThemeTypes.cjs +17 -0
  19. package/dist/cjs/create-theme/createThemeTypes.native.cjs +19 -0
  20. package/dist/cjs/create-theme/createThemeTypes.native.js +21 -0
  21. package/dist/cjs/create-theme/createThemeTypes.native.js.map +1 -0
  22. package/dist/cjs/create-theme/helpers.cjs +35 -0
  23. package/dist/cjs/create-theme/helpers.native.cjs +39 -0
  24. package/dist/cjs/create-theme/helpers.native.js +41 -0
  25. package/dist/cjs/create-theme/helpers.native.js.map +1 -0
  26. package/dist/cjs/create-theme/index.cjs +24 -0
  27. package/dist/cjs/create-theme/index.native.cjs +26 -0
  28. package/dist/cjs/create-theme/index.native.js +28 -0
  29. package/dist/cjs/create-theme/index.native.js.map +1 -0
  30. package/dist/cjs/create-theme/isMinusZero.cjs +27 -0
  31. package/dist/cjs/create-theme/isMinusZero.native.cjs +29 -0
  32. package/dist/cjs/create-theme/isMinusZero.native.js +31 -0
  33. package/dist/cjs/create-theme/isMinusZero.native.js.map +1 -0
  34. package/dist/cjs/create-theme/masks.cjs +132 -0
  35. package/dist/cjs/create-theme/masks.native.cjs +174 -0
  36. package/dist/cjs/create-theme/masks.native.js +176 -0
  37. package/dist/cjs/create-theme/masks.native.js.map +1 -0
  38. package/dist/cjs/create-theme/tests.cjs +34 -0
  39. package/dist/cjs/create-theme/tests.native.cjs +36 -0
  40. package/dist/cjs/create-theme/tests.native.js +38 -0
  41. package/dist/cjs/create-theme/tests.native.js.map +1 -0
  42. package/dist/cjs/create-theme/themeInfo.cjs +39 -0
  43. package/dist/cjs/create-theme/themeInfo.native.cjs +41 -0
  44. package/dist/cjs/create-theme/themeInfo.native.js +43 -0
  45. package/dist/cjs/create-theme/themeInfo.native.js.map +1 -0
  46. package/dist/cjs/index.cjs +20 -0
  47. package/dist/cjs/index.native.cjs +22 -0
  48. package/dist/cjs/index.native.js +24 -0
  49. package/dist/cjs/index.native.js.map +1 -0
  50. package/dist/cjs/theme-builder/ThemeBuilder.cjs +222 -0
  51. package/dist/cjs/theme-builder/ThemeBuilder.native.cjs +315 -0
  52. package/dist/cjs/theme-builder/ThemeBuilder.native.js +317 -0
  53. package/dist/cjs/theme-builder/ThemeBuilder.native.js.map +1 -0
  54. package/dist/cjs/theme-builder/createStudioThemes.cjs +39 -0
  55. package/dist/cjs/theme-builder/createStudioThemes.native.cjs +41 -0
  56. package/dist/cjs/theme-builder/createStudioThemes.native.js +43 -0
  57. package/dist/cjs/theme-builder/createStudioThemes.native.js.map +1 -0
  58. package/dist/cjs/theme-builder/createThemes.cjs +339 -0
  59. package/dist/cjs/theme-builder/createThemes.native.cjs +348 -0
  60. package/dist/cjs/theme-builder/createThemes.native.js +350 -0
  61. package/dist/cjs/theme-builder/createThemes.native.js.map +1 -0
  62. package/dist/cjs/theme-builder/defaultComponentThemes.cjs +45 -0
  63. package/dist/cjs/theme-builder/defaultComponentThemes.native.cjs +47 -0
  64. package/dist/cjs/theme-builder/defaultComponentThemes.native.js +49 -0
  65. package/dist/cjs/theme-builder/defaultComponentThemes.native.js.map +1 -0
  66. package/dist/cjs/theme-builder/defaultTemplates.cjs +147 -0
  67. package/dist/cjs/theme-builder/defaultTemplates.native.cjs +154 -0
  68. package/dist/cjs/theme-builder/defaultTemplates.native.js +156 -0
  69. package/dist/cjs/theme-builder/defaultTemplates.native.js.map +1 -0
  70. package/dist/cjs/theme-builder/defaultTemplatesStronger.cjs +143 -0
  71. package/dist/cjs/theme-builder/defaultTemplatesStronger.native.cjs +150 -0
  72. package/dist/cjs/theme-builder/defaultTemplatesStronger.native.js +152 -0
  73. package/dist/cjs/theme-builder/defaultTemplatesStronger.native.js.map +1 -0
  74. package/dist/cjs/theme-builder/defaultTemplatesStrongest.cjs +143 -0
  75. package/dist/cjs/theme-builder/defaultTemplatesStrongest.native.cjs +150 -0
  76. package/dist/cjs/theme-builder/defaultTemplatesStrongest.native.js +152 -0
  77. package/dist/cjs/theme-builder/defaultTemplatesStrongest.native.js.map +1 -0
  78. package/dist/cjs/theme-builder/getThemeSuitePalettes.cjs +101 -0
  79. package/dist/cjs/theme-builder/getThemeSuitePalettes.native.cjs +123 -0
  80. package/dist/cjs/theme-builder/getThemeSuitePalettes.native.js +125 -0
  81. package/dist/cjs/theme-builder/getThemeSuitePalettes.native.js.map +1 -0
  82. package/dist/cjs/theme-builder/helpers.cjs +35 -0
  83. package/dist/cjs/theme-builder/helpers.native.cjs +39 -0
  84. package/dist/cjs/theme-builder/helpers.native.js +41 -0
  85. package/dist/cjs/theme-builder/helpers.native.js.map +1 -0
  86. package/dist/cjs/theme-builder/index.cjs +44 -0
  87. package/dist/cjs/theme-builder/index.native.cjs +46 -0
  88. package/dist/cjs/theme-builder/index.native.js +48 -0
  89. package/dist/cjs/theme-builder/index.native.js.map +1 -0
  90. package/dist/cjs/theme-builder/masks.cjs +92 -0
  91. package/dist/cjs/theme-builder/masks.native.cjs +94 -0
  92. package/dist/cjs/theme-builder/masks.native.js +96 -0
  93. package/dist/cjs/theme-builder/masks.native.js.map +1 -0
  94. package/dist/cjs/theme-builder/types.cjs +17 -0
  95. package/dist/cjs/theme-builder/types.native.cjs +19 -0
  96. package/dist/cjs/theme-builder/types.native.js +21 -0
  97. package/dist/cjs/theme-builder/types.native.js.map +1 -0
  98. package/dist/cjs/v5/opacify.cjs +120 -0
  99. package/dist/cjs/v5/opacify.native.cjs +127 -0
  100. package/dist/cjs/v5/opacify.native.js +129 -0
  101. package/dist/cjs/v5/opacify.native.js.map +1 -0
  102. package/dist/cjs/v5/subtleChildrenThemes.cjs +64 -0
  103. package/dist/cjs/v5/subtleChildrenThemes.native.cjs +72 -0
  104. package/dist/cjs/v5/subtleChildrenThemes.native.js +74 -0
  105. package/dist/cjs/v5/subtleChildrenThemes.native.js.map +1 -0
  106. package/dist/cjs/v5/v5-builder.cjs +31 -0
  107. package/dist/cjs/v5/v5-builder.native.cjs +33 -0
  108. package/dist/cjs/v5/v5-builder.native.js +35 -0
  109. package/dist/cjs/v5/v5-builder.native.js.map +1 -0
  110. package/dist/cjs/v5/v5-subtle-builder.cjs +30 -0
  111. package/dist/cjs/v5/v5-subtle-builder.native.cjs +32 -0
  112. package/dist/cjs/v5/v5-subtle-builder.native.js +34 -0
  113. package/dist/cjs/v5/v5-subtle-builder.native.js.map +1 -0
  114. package/dist/cjs/v5/v5-templates.cjs +111 -0
  115. package/dist/cjs/v5/v5-templates.native.cjs +119 -0
  116. package/dist/cjs/v5/v5-templates.native.js +121 -0
  117. package/dist/cjs/v5/v5-templates.native.js.map +1 -0
  118. package/dist/cjs/v5/v5-themes.cjs +390 -0
  119. package/dist/cjs/v5/v5-themes.native.cjs +440 -0
  120. package/dist/cjs/v5/v5-themes.native.js +442 -0
  121. package/dist/cjs/v5/v5-themes.native.js.map +1 -0
  122. package/dist/esm/builder.mjs +1 -0
  123. package/dist/esm/builder.native.js +1 -0
  124. package/dist/esm/create-theme/applyMask.mjs +41 -0
  125. package/dist/esm/create-theme/applyMask.mjs.map +1 -0
  126. package/dist/esm/create-theme/applyMask.native.js +44 -0
  127. package/dist/esm/create-theme/applyMask.native.js.map +1 -0
  128. package/dist/esm/create-theme/combineMasks.mjs +25 -0
  129. package/dist/esm/create-theme/combineMasks.mjs.map +1 -0
  130. package/dist/esm/create-theme/combineMasks.native.js +45 -0
  131. package/dist/esm/create-theme/combineMasks.native.js.map +1 -0
  132. package/dist/esm/create-theme/createTheme.mjs +80 -0
  133. package/dist/esm/create-theme/createTheme.mjs.map +1 -0
  134. package/dist/esm/create-theme/createTheme.native.js +83 -0
  135. package/dist/esm/create-theme/createTheme.native.js.map +1 -0
  136. package/dist/esm/create-theme/createThemeTypes.mjs +0 -0
  137. package/dist/esm/create-theme/createThemeTypes.native.js +0 -0
  138. package/dist/esm/create-theme/helpers.mjs +10 -0
  139. package/dist/esm/create-theme/helpers.mjs.map +1 -0
  140. package/dist/esm/create-theme/helpers.native.js +12 -0
  141. package/dist/esm/create-theme/helpers.native.js.map +1 -0
  142. package/dist/esm/create-theme/index.mjs +11 -0
  143. package/dist/esm/create-theme/index.native.js +11 -0
  144. package/dist/esm/create-theme/isMinusZero.mjs +6 -0
  145. package/dist/esm/create-theme/isMinusZero.mjs.map +1 -0
  146. package/dist/esm/create-theme/isMinusZero.native.js +6 -0
  147. package/dist/esm/create-theme/isMinusZero.native.js.map +1 -0
  148. package/dist/esm/create-theme/masks.mjs +103 -0
  149. package/dist/esm/create-theme/masks.mjs.map +1 -0
  150. package/dist/esm/create-theme/masks.native.js +143 -0
  151. package/dist/esm/create-theme/masks.native.js.map +1 -0
  152. package/dist/esm/create-theme/tests.mjs +36 -0
  153. package/dist/esm/create-theme/tests.mjs.map +1 -0
  154. package/dist/esm/create-theme/tests.native.js +36 -0
  155. package/dist/esm/create-theme/tests.native.js.map +1 -0
  156. package/dist/esm/create-theme/themeInfo.mjs +15 -0
  157. package/dist/esm/create-theme/themeInfo.mjs.map +1 -0
  158. package/dist/esm/create-theme/themeInfo.native.js +15 -0
  159. package/dist/esm/create-theme/themeInfo.native.js.map +1 -0
  160. package/dist/esm/index.mjs +3 -0
  161. package/dist/esm/index.native.js +3 -0
  162. package/dist/esm/theme-builder/ThemeBuilder.mjs +199 -0
  163. package/dist/esm/theme-builder/ThemeBuilder.mjs.map +1 -0
  164. package/dist/esm/theme-builder/ThemeBuilder.native.js +290 -0
  165. package/dist/esm/theme-builder/ThemeBuilder.native.js.map +1 -0
  166. package/dist/esm/theme-builder/createStudioThemes.mjs +19 -0
  167. package/dist/esm/theme-builder/createStudioThemes.mjs.map +1 -0
  168. package/dist/esm/theme-builder/createStudioThemes.native.js +19 -0
  169. package/dist/esm/theme-builder/createStudioThemes.native.js.map +1 -0
  170. package/dist/esm/theme-builder/createThemes.mjs +311 -0
  171. package/dist/esm/theme-builder/createThemes.mjs.map +1 -0
  172. package/dist/esm/theme-builder/createThemes.native.js +318 -0
  173. package/dist/esm/theme-builder/createThemes.native.js.map +1 -0
  174. package/dist/esm/theme-builder/defaultComponentThemes.mjs +24 -0
  175. package/dist/esm/theme-builder/defaultComponentThemes.mjs.map +1 -0
  176. package/dist/esm/theme-builder/defaultComponentThemes.native.js +24 -0
  177. package/dist/esm/theme-builder/defaultComponentThemes.native.js.map +1 -0
  178. package/dist/esm/theme-builder/defaultTemplates.mjs +127 -0
  179. package/dist/esm/theme-builder/defaultTemplates.mjs.map +1 -0
  180. package/dist/esm/theme-builder/defaultTemplates.native.js +132 -0
  181. package/dist/esm/theme-builder/defaultTemplates.native.js.map +1 -0
  182. package/dist/esm/theme-builder/defaultTemplatesStronger.mjs +123 -0
  183. package/dist/esm/theme-builder/defaultTemplatesStronger.mjs.map +1 -0
  184. package/dist/esm/theme-builder/defaultTemplatesStronger.native.js +128 -0
  185. package/dist/esm/theme-builder/defaultTemplatesStronger.native.js.map +1 -0
  186. package/dist/esm/theme-builder/defaultTemplatesStrongest.mjs +123 -0
  187. package/dist/esm/theme-builder/defaultTemplatesStrongest.mjs.map +1 -0
  188. package/dist/esm/theme-builder/defaultTemplatesStrongest.native.js +128 -0
  189. package/dist/esm/theme-builder/defaultTemplatesStrongest.native.js.map +1 -0
  190. package/dist/esm/theme-builder/getThemeSuitePalettes.mjs +78 -0
  191. package/dist/esm/theme-builder/getThemeSuitePalettes.mjs.map +1 -0
  192. package/dist/esm/theme-builder/getThemeSuitePalettes.native.js +98 -0
  193. package/dist/esm/theme-builder/getThemeSuitePalettes.native.js.map +1 -0
  194. package/dist/esm/theme-builder/helpers.mjs +10 -0
  195. package/dist/esm/theme-builder/helpers.mjs.map +1 -0
  196. package/dist/esm/theme-builder/helpers.native.js +12 -0
  197. package/dist/esm/theme-builder/helpers.native.js.map +1 -0
  198. package/dist/esm/theme-builder/index.mjs +12 -0
  199. package/dist/esm/theme-builder/index.native.js +12 -0
  200. package/dist/esm/theme-builder/masks.mjs +72 -0
  201. package/dist/esm/theme-builder/masks.mjs.map +1 -0
  202. package/dist/esm/theme-builder/masks.native.js +72 -0
  203. package/dist/esm/theme-builder/masks.native.js.map +1 -0
  204. package/dist/esm/theme-builder/types.mjs +0 -0
  205. package/dist/esm/theme-builder/types.native.js +0 -0
  206. package/dist/esm/v5/opacify.mjs +96 -0
  207. package/dist/esm/v5/opacify.mjs.map +1 -0
  208. package/dist/esm/v5/opacify.native.js +101 -0
  209. package/dist/esm/v5/opacify.native.js.map +1 -0
  210. package/dist/esm/v5/subtleChildrenThemes.mjs +41 -0
  211. package/dist/esm/v5/subtleChildrenThemes.mjs.map +1 -0
  212. package/dist/esm/v5/subtleChildrenThemes.native.js +47 -0
  213. package/dist/esm/v5/subtleChildrenThemes.native.js.map +1 -0
  214. package/dist/esm/v5/v5-builder.mjs +6 -0
  215. package/dist/esm/v5/v5-builder.native.js +6 -0
  216. package/dist/esm/v5/v5-subtle-builder.mjs +5 -0
  217. package/dist/esm/v5/v5-subtle-builder.native.js +5 -0
  218. package/dist/esm/v5/v5-templates.mjs +91 -0
  219. package/dist/esm/v5/v5-templates.mjs.map +1 -0
  220. package/dist/esm/v5/v5-templates.native.js +97 -0
  221. package/dist/esm/v5/v5-templates.native.js.map +1 -0
  222. package/dist/esm/v5/v5-themes.mjs +352 -0
  223. package/dist/esm/v5/v5-themes.mjs.map +1 -0
  224. package/dist/esm/v5/v5-themes.native.js +400 -0
  225. package/dist/esm/v5/v5-themes.native.js.map +1 -0
  226. package/package.json +59 -8
  227. package/src/builder.ts +1 -0
  228. package/src/create-theme/applyMask.tsx +69 -0
  229. package/src/create-theme/combineMasks.tsx +29 -0
  230. package/src/create-theme/createTheme.tsx +126 -0
  231. package/src/create-theme/createThemeTypes.tsx +85 -0
  232. package/src/create-theme/helpers.tsx +44 -0
  233. package/src/create-theme/index.ts +6 -0
  234. package/src/create-theme/isMinusZero.tsx +3 -0
  235. package/src/create-theme/masks.tsx +137 -0
  236. package/src/create-theme/tests.tsx +28 -0
  237. package/src/create-theme/themeInfo.tsx +36 -0
  238. package/src/index.ts +2 -0
  239. package/src/theme-builder/ThemeBuilder.ts +514 -0
  240. package/src/theme-builder/createStudioThemes.ts +28 -0
  241. package/src/theme-builder/createThemes.ts +794 -0
  242. package/src/theme-builder/defaultComponentThemes.ts +26 -0
  243. package/src/theme-builder/defaultTemplates.ts +157 -0
  244. package/src/theme-builder/defaultTemplatesStronger.ts +152 -0
  245. package/src/theme-builder/defaultTemplatesStrongest.ts +152 -0
  246. package/src/theme-builder/getThemeSuitePalettes.ts +101 -0
  247. package/src/theme-builder/helpers.ts +44 -0
  248. package/src/theme-builder/index.ts +22 -0
  249. package/src/theme-builder/masks.tsx +83 -0
  250. package/src/theme-builder/types.ts +97 -0
  251. package/src/v5/opacify.ts +125 -0
  252. package/src/v5/subtleChildrenThemes.ts +54 -0
  253. package/src/v5/v5-builder.ts +6 -0
  254. package/src/v5/v5-subtle-builder.ts +5 -0
  255. package/src/v5/v5-templates.ts +126 -0
  256. package/src/v5/v5-themes.ts +615 -0
  257. package/types/builder.d.ts +2 -0
  258. package/types/builder.d.ts.map +1 -0
  259. package/types/create-theme/applyMask.d.ts +7 -0
  260. package/types/create-theme/applyMask.d.ts.map +1 -0
  261. package/types/create-theme/combineMasks.d.ts +3 -0
  262. package/types/create-theme/combineMasks.d.ts.map +1 -0
  263. package/types/create-theme/createTheme.d.ts +18 -0
  264. package/types/create-theme/createTheme.d.ts.map +1 -0
  265. package/types/create-theme/createThemeTypes.d.ts +66 -0
  266. package/types/create-theme/createThemeTypes.d.ts.map +1 -0
  267. package/types/create-theme/helpers.d.ts +24 -0
  268. package/types/create-theme/helpers.d.ts.map +1 -0
  269. package/types/create-theme/index.d.ts +7 -0
  270. package/types/create-theme/index.d.ts.map +1 -0
  271. package/types/create-theme/isMinusZero.d.ts +2 -0
  272. package/types/create-theme/isMinusZero.d.ts.map +1 -0
  273. package/types/create-theme/masks.d.ts +14 -0
  274. package/types/create-theme/masks.d.ts.map +1 -0
  275. package/types/create-theme/tests.d.ts +2 -0
  276. package/types/create-theme/tests.d.ts.map +1 -0
  277. package/types/create-theme/themeInfo.d.ts +12 -0
  278. package/types/create-theme/themeInfo.d.ts.map +1 -0
  279. package/types/index.d.ts +3 -0
  280. package/types/index.d.ts.map +1 -0
  281. package/types/theme-builder/ThemeBuilder.d.ts +80 -0
  282. package/types/theme-builder/ThemeBuilder.d.ts.map +1 -0
  283. package/types/theme-builder/createStudioThemes.d.ts +8 -0
  284. package/types/theme-builder/createStudioThemes.d.ts.map +1 -0
  285. package/types/theme-builder/createThemes.d.ts +141 -0
  286. package/types/theme-builder/createThemes.d.ts.map +1 -0
  287. package/types/theme-builder/defaultComponentThemes.d.ts +63 -0
  288. package/types/theme-builder/defaultComponentThemes.d.ts.map +1 -0
  289. package/types/theme-builder/defaultTemplates.d.ts +42 -0
  290. package/types/theme-builder/defaultTemplates.d.ts.map +1 -0
  291. package/types/theme-builder/defaultTemplatesStronger.d.ts +42 -0
  292. package/types/theme-builder/defaultTemplatesStronger.d.ts.map +1 -0
  293. package/types/theme-builder/defaultTemplatesStrongest.d.ts +42 -0
  294. package/types/theme-builder/defaultTemplatesStrongest.d.ts.map +1 -0
  295. package/types/theme-builder/getThemeSuitePalettes.d.ts +7 -0
  296. package/types/theme-builder/getThemeSuitePalettes.d.ts.map +1 -0
  297. package/types/theme-builder/helpers.d.ts +24 -0
  298. package/types/theme-builder/helpers.d.ts.map +1 -0
  299. package/types/theme-builder/index.d.ts +11 -0
  300. package/types/theme-builder/index.d.ts.map +1 -0
  301. package/types/theme-builder/masks.d.ts +18 -0
  302. package/types/theme-builder/masks.d.ts.map +1 -0
  303. package/types/theme-builder/types.d.ts +76 -0
  304. package/types/theme-builder/types.d.ts.map +1 -0
  305. package/types/v5/opacify.d.ts +9 -0
  306. package/types/v5/opacify.d.ts.map +1 -0
  307. package/types/v5/subtleChildrenThemes.d.ts +305 -0
  308. package/types/v5/subtleChildrenThemes.d.ts.map +1 -0
  309. package/types/v5/v5-builder.d.ts +4 -0
  310. package/types/v5/v5-builder.d.ts.map +1 -0
  311. package/types/v5/v5-subtle-builder.d.ts +3 -0
  312. package/types/v5/v5-subtle-builder.d.ts.map +1 -0
  313. package/types/v5/v5-templates.d.ts +42 -0
  314. package/types/v5/v5-templates.d.ts.map +1 -0
  315. package/types/v5/v5-themes.d.ts +525 -0
  316. package/types/v5/v5-themes.d.ts.map +1 -0
  317. package/README.md +0 -1
@@ -0,0 +1,311 @@
1
+ import { parseToHsla } from "color2k";
2
+ import { defaultComponentThemes } from "./defaultComponentThemes.mjs";
3
+ import { defaultTemplates } from "./defaultTemplates.mjs";
4
+ import { PALETTE_BACKGROUND_OFFSET, getThemeSuitePalettes } from "./getThemeSuitePalettes.mjs";
5
+ import { createThemeBuilder } from "./ThemeBuilder.mjs";
6
+
7
+ function createThemes(props) {
8
+ const { accent, childrenThemes, grandChildrenThemes, templates = defaultTemplates, componentThemes, getTheme } = props;
9
+ const builder = createSimpleThemeBuilder({
10
+ extra: props.base.extra,
11
+ accentExtra: accent?.extra,
12
+ componentThemes,
13
+ palettes: createPalettes(getThemesPalettes(props)),
14
+ templates,
15
+ accentTheme: !!accent,
16
+ childrenThemes: normalizeSubThemes(childrenThemes),
17
+ grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,
18
+ getTheme
19
+ });
20
+ lastBuilder = builder.themeBuilder;
21
+ return builder.themes;
22
+ }
23
+ let lastBuilder = null;
24
+ const getLastBuilder = () => lastBuilder;
25
+ function createV4Themes(props) {
26
+ const { accent, childrenThemes, grandChildrenThemes, templates = defaultTemplates, componentThemes, getTheme } = props;
27
+ const builder = createV4ThemeBuilder({
28
+ extra: props.base.extra,
29
+ accentExtra: accent?.extra,
30
+ componentThemes,
31
+ palettes: createPalettes(getThemesPalettes(props)),
32
+ templates,
33
+ accentTheme: !!accent,
34
+ childrenThemes: normalizeSubThemes(childrenThemes),
35
+ grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,
36
+ getTheme
37
+ });
38
+ lastBuilder = builder.themeBuilder;
39
+ return builder.themes;
40
+ }
41
+ function normalizeSubThemes(defs) {
42
+ return Object.fromEntries(Object.entries(defs || {}).map(([name, value]) => {
43
+ const hasPalette = value.palette !== void 0;
44
+ return [name, {
45
+ ...hasPalette ? { palette: name } : {},
46
+ template: value.template || "base"
47
+ }];
48
+ }));
49
+ }
50
+ const defaultPalettes = createPalettes(getThemesPalettes({
51
+ base: { palette: ["#fff", "#000"] },
52
+ accent: { palette: ["#ff0000", "#ff9999"] }
53
+ }));
54
+ function createSimpleThemeBuilder(props) {
55
+ const { getTheme, extra, accentExtra, childrenThemes = null, grandChildrenThemes = null, templates = defaultTemplates, palettes = defaultPalettes, accentTheme, componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0 } = props;
56
+ let themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({
57
+ light: {
58
+ template: "base",
59
+ palette: "light",
60
+ nonInheritedValues: {
61
+ ...extra?.light,
62
+ ...accentTheme && palettes.light_accent && {
63
+ accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],
64
+ accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],
65
+ accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],
66
+ accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],
67
+ accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],
68
+ accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],
69
+ accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],
70
+ accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],
71
+ accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],
72
+ accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],
73
+ accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],
74
+ accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]
75
+ }
76
+ }
77
+ },
78
+ dark: {
79
+ template: "base",
80
+ palette: "dark",
81
+ nonInheritedValues: {
82
+ ...extra?.dark,
83
+ ...accentTheme && palettes.dark_accent && {
84
+ accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],
85
+ accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],
86
+ accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],
87
+ accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],
88
+ accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],
89
+ accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],
90
+ accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],
91
+ accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],
92
+ accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],
93
+ accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],
94
+ accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],
95
+ accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]
96
+ }
97
+ }
98
+ }
99
+ });
100
+ if (palettes.light_accent) {
101
+ themeBuilder = themeBuilder.addChildThemes({ accent: [{
102
+ parent: "light",
103
+ template: "base",
104
+ palette: "light_accent",
105
+ nonInheritedValues: accentExtra?.light
106
+ }, {
107
+ parent: "dark",
108
+ template: "base",
109
+ palette: "dark_accent",
110
+ nonInheritedValues: accentExtra?.dark
111
+ }] });
112
+ }
113
+ if (childrenThemes) {
114
+ themeBuilder = themeBuilder.addChildThemes(childrenThemes, { avoidNestingWithin: ["accent"] });
115
+ }
116
+ if (grandChildrenThemes) {
117
+ themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, { avoidNestingWithin: ["accent"] });
118
+ }
119
+ if (componentThemes) {
120
+ themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), { avoidNestingWithin: Object.keys(grandChildrenThemes || {}) });
121
+ }
122
+ if (getTheme) {
123
+ themeBuilder = themeBuilder.getTheme(getTheme);
124
+ }
125
+ return {
126
+ themeBuilder,
127
+ themes: themeBuilder.build()
128
+ };
129
+ }
130
+ function getSchemePalette(colors) {
131
+ return {
132
+ light: colors,
133
+ dark: [...colors].reverse()
134
+ };
135
+ }
136
+ function getAnchors(palette) {
137
+ const maxIndex = 11;
138
+ const numItems = palette.light.length;
139
+ const anchors = palette.light.map((lcolor, index) => {
140
+ const dcolor = palette.dark[index];
141
+ const [lhue, lsat, llum, lalpha] = parseToHsla(lcolor);
142
+ const [dhue, dsat, dlum, dalpha] = parseToHsla(dcolor);
143
+ return {
144
+ index: spreadIndex(maxIndex, numItems, index),
145
+ hue: {
146
+ light: lhue,
147
+ dark: dhue
148
+ },
149
+ sat: {
150
+ light: lsat,
151
+ dark: dsat
152
+ },
153
+ lum: {
154
+ light: llum,
155
+ dark: dlum
156
+ },
157
+ alpha: {
158
+ light: lalpha,
159
+ dark: dalpha
160
+ }
161
+ };
162
+ });
163
+ return anchors;
164
+ }
165
+ function spreadIndex(maxIndex, numItems, index) {
166
+ return Math.round(index / (numItems - 1) * maxIndex);
167
+ }
168
+ function coerceSimplePaletteToSchemePalette(def) {
169
+ return Array.isArray(def) ? getSchemePalette(def) : def;
170
+ }
171
+ function getThemesPalettes(props) {
172
+ const base = coerceSimplePaletteToSchemePalette(props.base.palette);
173
+ const accent = props.accent ? coerceSimplePaletteToSchemePalette(props.accent.palette) : null;
174
+ const baseAnchors = getAnchors(base);
175
+ function getSubThemesPalettes(defs, isGrandChildren = false) {
176
+ return Object.fromEntries(Object.entries(defs).map(([key, value]) => {
177
+ if (isGrandChildren && key === "accent" && !value.palette) {
178
+ return null;
179
+ }
180
+ return [key, {
181
+ name: key,
182
+ anchors: value.palette ? getAnchors(coerceSimplePaletteToSchemePalette(value.palette)) : baseAnchors
183
+ }];
184
+ }).filter(Boolean));
185
+ }
186
+ return {
187
+ base: {
188
+ name: "base",
189
+ anchors: baseAnchors
190
+ },
191
+ ...accent && { accent: {
192
+ name: "accent",
193
+ anchors: getAnchors(accent)
194
+ } },
195
+ ...props.childrenThemes && getSubThemesPalettes(props.childrenThemes, false),
196
+ ...props.grandChildrenThemes && getSubThemesPalettes(props.grandChildrenThemes, true)
197
+ };
198
+ }
199
+ const getComponentThemes = (components) => {
200
+ return Object.fromEntries(Object.entries(components).map(([componentName, { template }]) => {
201
+ return [componentName, {
202
+ parent: "",
203
+ template: template || "base"
204
+ }];
205
+ }));
206
+ };
207
+ function createPalettes(palettes) {
208
+ const accentPalettes = palettes.accent ? getThemeSuitePalettes(palettes.accent) : null;
209
+ const basePalettes = getThemeSuitePalettes(palettes.base);
210
+ const next = Object.fromEntries(Object.entries(palettes).flatMap(([name, palette]) => {
211
+ const palettes2 = getThemeSuitePalettes(palette);
212
+ const isAccent = name.startsWith("accent");
213
+ const oppositePalettes = isAccent ? basePalettes : accentPalettes || basePalettes;
214
+ if (!oppositePalettes) {
215
+ return [];
216
+ }
217
+ const oppositeLight = oppositePalettes.light;
218
+ const oppositeDark = oppositePalettes.dark;
219
+ const bgOffset = 7;
220
+ const out = [[name === "base" ? "light" : `light_${name}`, [
221
+ oppositeLight[bgOffset],
222
+ ...palettes2.light,
223
+ oppositeLight[oppositeLight.length - bgOffset - 1]
224
+ ]], [name === "base" ? "dark" : `dark_${name}`, [
225
+ oppositeDark[oppositeDark.length - bgOffset - 1],
226
+ ...palettes2.dark,
227
+ oppositeDark[bgOffset]
228
+ ]]];
229
+ return out;
230
+ }));
231
+ return next;
232
+ }
233
+ function createV4ThemeBuilder(props) {
234
+ const { getTheme, extra, accentExtra, childrenThemes = null, grandChildrenThemes = null, templates = defaultTemplates, palettes = defaultPalettes, accentTheme, componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0 } = props;
235
+ let themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({
236
+ light: {
237
+ template: "base",
238
+ palette: "light",
239
+ nonInheritedValues: {
240
+ ...extra?.light,
241
+ ...accentTheme && palettes.light_accent && {
242
+ accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],
243
+ accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],
244
+ accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],
245
+ accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],
246
+ accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],
247
+ accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],
248
+ accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],
249
+ accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],
250
+ accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],
251
+ accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],
252
+ accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],
253
+ accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]
254
+ }
255
+ }
256
+ },
257
+ dark: {
258
+ template: "base",
259
+ palette: "dark",
260
+ nonInheritedValues: {
261
+ ...extra?.dark,
262
+ ...accentTheme && palettes.dark_accent && {
263
+ accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],
264
+ accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],
265
+ accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],
266
+ accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],
267
+ accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],
268
+ accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],
269
+ accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],
270
+ accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],
271
+ accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],
272
+ accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],
273
+ accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],
274
+ accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]
275
+ }
276
+ }
277
+ }
278
+ });
279
+ if (childrenThemes) {
280
+ themeBuilder = themeBuilder.addChildThemes(childrenThemes, { avoidNestingWithin: ["accent"] });
281
+ }
282
+ if (grandChildrenThemes) {
283
+ themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, { avoidNestingWithin: ["accent"] });
284
+ }
285
+ if (palettes.light_accent) {
286
+ themeBuilder = themeBuilder.addChildThemes({ accent: [{
287
+ parent: "light",
288
+ template: "base",
289
+ palette: "light_accent",
290
+ nonInheritedValues: accentExtra?.light
291
+ }, {
292
+ parent: "dark",
293
+ template: "base",
294
+ palette: "dark_accent",
295
+ nonInheritedValues: accentExtra?.dark
296
+ }] }, { avoidNestingWithin: Object.keys(childrenThemes || {}) });
297
+ }
298
+ if (componentThemes) {
299
+ themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), { avoidNestingWithin: Object.keys(grandChildrenThemes || {}) });
300
+ }
301
+ if (getTheme) {
302
+ themeBuilder = themeBuilder.getTheme(getTheme);
303
+ }
304
+ return {
305
+ themeBuilder,
306
+ themes: themeBuilder.build()
307
+ };
308
+ }
309
+
310
+ export { createPalettes, createSimpleThemeBuilder, createThemes, createV4ThemeBuilder, createV4Themes, getComponentThemes, getLastBuilder };
311
+ //# sourceMappingURL=createThemes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createThemes.js","names":[],"sources":["esm/theme-builder/createThemes.js"],"sourcesContent":["import { parseToHsla } from \"color2k\";\nimport { defaultComponentThemes } from \"./defaultComponentThemes\";\nimport { defaultTemplates } from \"./defaultTemplates\";\nimport { getThemeSuitePalettes, PALETTE_BACKGROUND_OFFSET } from \"./getThemeSuitePalettes\";\nimport { createThemeBuilder } from \"./ThemeBuilder\";\nfunction createThemes(props) {\n const {\n accent,\n childrenThemes,\n grandChildrenThemes,\n templates = defaultTemplates,\n componentThemes,\n getTheme\n } = props;\n const builder = createSimpleThemeBuilder({\n extra: props.base.extra,\n accentExtra: accent?.extra,\n componentThemes,\n palettes: createPalettes(getThemesPalettes(props)),\n templates,\n accentTheme: !!accent,\n childrenThemes: normalizeSubThemes(childrenThemes),\n grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,\n getTheme\n });\n lastBuilder = builder.themeBuilder;\n return builder.themes;\n}\nlet lastBuilder = null;\nconst getLastBuilder = () => lastBuilder;\nfunction createV4Themes(props) {\n const {\n accent,\n childrenThemes,\n grandChildrenThemes,\n templates = defaultTemplates,\n componentThemes,\n getTheme\n } = props;\n const builder = createV4ThemeBuilder({\n extra: props.base.extra,\n accentExtra: accent?.extra,\n componentThemes,\n palettes: createPalettes(getThemesPalettes(props)),\n templates,\n accentTheme: !!accent,\n childrenThemes: normalizeSubThemes(childrenThemes),\n grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,\n getTheme\n });\n lastBuilder = builder.themeBuilder;\n return builder.themes;\n}\nfunction normalizeSubThemes(defs) {\n return Object.fromEntries(\n Object.entries(defs || {}).map(([name, value]) => {\n const hasPalette = value.palette !== void 0;\n return [\n name,\n {\n // Only add palette if the definition has one, otherwise theme is template-only\n ...hasPalette ? { palette: name } : {},\n template: value.template || \"base\"\n }\n ];\n })\n );\n}\nconst defaultPalettes = createPalettes(\n getThemesPalettes({\n base: {\n palette: [\"#fff\", \"#000\"]\n },\n accent: {\n palette: [\"#ff0000\", \"#ff9999\"]\n }\n })\n);\nfunction createSimpleThemeBuilder(props) {\n const {\n getTheme,\n extra,\n accentExtra,\n childrenThemes = null,\n grandChildrenThemes = null,\n templates = defaultTemplates,\n palettes = defaultPalettes,\n accentTheme,\n componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0\n } = props;\n let themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({\n light: {\n template: \"base\",\n palette: \"light\",\n nonInheritedValues: {\n ...extra?.light,\n ...accentTheme && palettes.light_accent && {\n accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],\n accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],\n accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],\n accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],\n accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],\n accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],\n accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],\n accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],\n accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],\n accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],\n accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],\n accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]\n }\n }\n },\n dark: {\n template: \"base\",\n palette: \"dark\",\n nonInheritedValues: {\n ...extra?.dark,\n ...accentTheme && palettes.dark_accent && {\n accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],\n accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],\n accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],\n accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],\n accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],\n accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],\n accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],\n accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],\n accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],\n accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],\n accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],\n accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]\n }\n }\n }\n });\n if (palettes.light_accent) {\n themeBuilder = themeBuilder.addChildThemes({\n accent: [\n {\n parent: \"light\",\n template: \"base\",\n palette: \"light_accent\",\n nonInheritedValues: accentExtra?.light\n },\n {\n parent: \"dark\",\n template: \"base\",\n palette: \"dark_accent\",\n nonInheritedValues: accentExtra?.dark\n }\n ]\n });\n }\n if (childrenThemes) {\n themeBuilder = themeBuilder.addChildThemes(childrenThemes, {\n avoidNestingWithin: [\"accent\"]\n });\n }\n if (grandChildrenThemes) {\n themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, {\n avoidNestingWithin: [\"accent\"]\n });\n }\n if (componentThemes) {\n themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), {\n avoidNestingWithin: Object.keys(grandChildrenThemes || {})\n });\n }\n if (getTheme) {\n themeBuilder = themeBuilder.getTheme(getTheme);\n }\n return {\n themeBuilder,\n themes: themeBuilder.build()\n };\n}\nfunction getSchemePalette(colors) {\n return {\n light: colors,\n dark: [...colors].reverse()\n };\n}\nfunction getAnchors(palette) {\n const maxIndex = 11;\n const numItems = palette.light.length;\n const anchors = palette.light.map((lcolor, index) => {\n const dcolor = palette.dark[index];\n const [lhue, lsat, llum, lalpha] = parseToHsla(lcolor);\n const [dhue, dsat, dlum, dalpha] = parseToHsla(dcolor);\n return {\n index: spreadIndex(maxIndex, numItems, index),\n hue: { light: lhue, dark: dhue },\n sat: { light: lsat, dark: dsat },\n lum: { light: llum, dark: dlum },\n alpha: { light: lalpha, dark: dalpha }\n };\n });\n return anchors;\n}\nfunction spreadIndex(maxIndex, numItems, index) {\n return Math.round(index / (numItems - 1) * maxIndex);\n}\nfunction coerceSimplePaletteToSchemePalette(def) {\n return Array.isArray(def) ? getSchemePalette(def) : def;\n}\nfunction getThemesPalettes(props) {\n const base = coerceSimplePaletteToSchemePalette(props.base.palette);\n const accent = props.accent ? coerceSimplePaletteToSchemePalette(props.accent.palette) : null;\n const baseAnchors = getAnchors(base);\n function getSubThemesPalettes(defs, isGrandChildren = false) {\n return Object.fromEntries(\n Object.entries(defs).map(([key, value]) => {\n if (isGrandChildren && key === \"accent\" && !value.palette) {\n return null;\n }\n return [\n key,\n {\n name: key,\n anchors: value.palette ? getAnchors(coerceSimplePaletteToSchemePalette(value.palette)) : baseAnchors\n }\n ];\n }).filter(Boolean)\n );\n }\n return {\n base: {\n name: \"base\",\n anchors: baseAnchors\n },\n ...accent && {\n accent: {\n name: \"accent\",\n anchors: getAnchors(accent)\n }\n },\n ...props.childrenThemes && getSubThemesPalettes(props.childrenThemes, false),\n ...props.grandChildrenThemes && getSubThemesPalettes(props.grandChildrenThemes, true)\n };\n}\nconst getComponentThemes = (components) => {\n return Object.fromEntries(\n Object.entries(components).map(([componentName, { template }]) => {\n return [\n componentName,\n {\n parent: \"\",\n template: template || \"base\"\n }\n ];\n })\n );\n};\nfunction createPalettes(palettes) {\n const accentPalettes = palettes.accent ? getThemeSuitePalettes(palettes.accent) : null;\n const basePalettes = getThemeSuitePalettes(palettes.base);\n const next = Object.fromEntries(\n Object.entries(palettes).flatMap(([name, palette]) => {\n const palettes2 = getThemeSuitePalettes(palette);\n const isAccent = name.startsWith(\"accent\");\n const oppositePalettes = isAccent ? basePalettes : accentPalettes || basePalettes;\n if (!oppositePalettes) {\n return [];\n }\n const oppositeLight = oppositePalettes.light;\n const oppositeDark = oppositePalettes.dark;\n const bgOffset = 7;\n const out = [\n [\n name === \"base\" ? \"light\" : `light_${name}`,\n [\n oppositeLight[bgOffset],\n ...palettes2.light,\n oppositeLight[oppositeLight.length - bgOffset - 1]\n ]\n ],\n [\n name === \"base\" ? \"dark\" : `dark_${name}`,\n [\n oppositeDark[oppositeDark.length - bgOffset - 1],\n ...palettes2.dark,\n oppositeDark[bgOffset]\n ]\n ]\n ];\n return out;\n })\n );\n return next;\n}\nfunction createV4ThemeBuilder(props) {\n const {\n getTheme,\n extra,\n accentExtra,\n childrenThemes = null,\n grandChildrenThemes = null,\n templates = defaultTemplates,\n palettes = defaultPalettes,\n accentTheme,\n componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0\n } = props;\n let themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({\n light: {\n template: \"base\",\n palette: \"light\",\n nonInheritedValues: {\n ...extra?.light,\n ...accentTheme && palettes.light_accent && {\n accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],\n accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],\n accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],\n accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],\n accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],\n accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],\n accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],\n accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],\n accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],\n accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],\n accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],\n accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]\n }\n }\n },\n dark: {\n template: \"base\",\n palette: \"dark\",\n nonInheritedValues: {\n ...extra?.dark,\n ...accentTheme && palettes.dark_accent && {\n accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],\n accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],\n accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],\n accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],\n accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],\n accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],\n accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],\n accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],\n accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],\n accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],\n accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],\n accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]\n }\n }\n }\n });\n if (childrenThemes) {\n themeBuilder = themeBuilder.addChildThemes(childrenThemes, {\n avoidNestingWithin: [\"accent\"]\n });\n }\n if (grandChildrenThemes) {\n themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, {\n avoidNestingWithin: [\"accent\"]\n });\n }\n if (palettes.light_accent) {\n themeBuilder = themeBuilder.addChildThemes(\n {\n accent: [\n {\n parent: \"light\",\n template: \"base\",\n palette: \"light_accent\",\n nonInheritedValues: accentExtra?.light\n },\n {\n parent: \"dark\",\n template: \"base\",\n palette: \"dark_accent\",\n nonInheritedValues: accentExtra?.dark\n }\n ]\n },\n {\n avoidNestingWithin: Object.keys(childrenThemes || {})\n }\n );\n }\n if (componentThemes) {\n themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), {\n avoidNestingWithin: Object.keys(grandChildrenThemes || {})\n });\n }\n if (getTheme) {\n themeBuilder = themeBuilder.getTheme(getTheme);\n }\n return {\n themeBuilder,\n themes: themeBuilder.build()\n };\n}\nexport {\n createPalettes,\n createSimpleThemeBuilder,\n createThemes,\n createV4ThemeBuilder,\n createV4Themes,\n getComponentThemes,\n getLastBuilder\n};\n//# sourceMappingURL=createThemes.js.map\n"],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ import { parseToHsla } from "color2k";
2
+ import { defaultComponentThemes } from "./defaultComponentThemes.native.js";
3
+ import { defaultTemplates } from "./defaultTemplates.native.js";
4
+ import { PALETTE_BACKGROUND_OFFSET, getThemeSuitePalettes } from "./getThemeSuitePalettes.native.js";
5
+ import { createThemeBuilder } from "./ThemeBuilder.native.js";
6
+
7
+ function createThemes(props) {
8
+ var { accent, childrenThemes, grandChildrenThemes, templates = defaultTemplates, componentThemes, getTheme } = props;
9
+ var builder = createSimpleThemeBuilder({
10
+ extra: props.base.extra,
11
+ accentExtra: accent === null || accent === void 0 ? void 0 : accent.extra,
12
+ componentThemes,
13
+ palettes: createPalettes(getThemesPalettes(props)),
14
+ templates,
15
+ accentTheme: !!accent,
16
+ childrenThemes: normalizeSubThemes(childrenThemes),
17
+ grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,
18
+ getTheme
19
+ });
20
+ lastBuilder = builder.themeBuilder;
21
+ return builder.themes;
22
+ }
23
+ var lastBuilder = null;
24
+ var getLastBuilder = function() {
25
+ return lastBuilder;
26
+ };
27
+ function createV4Themes(props) {
28
+ var { accent, childrenThemes, grandChildrenThemes, templates = defaultTemplates, componentThemes, getTheme } = props;
29
+ var builder = createV4ThemeBuilder({
30
+ extra: props.base.extra,
31
+ accentExtra: accent === null || accent === void 0 ? void 0 : accent.extra,
32
+ componentThemes,
33
+ palettes: createPalettes(getThemesPalettes(props)),
34
+ templates,
35
+ accentTheme: !!accent,
36
+ childrenThemes: normalizeSubThemes(childrenThemes),
37
+ grandChildrenThemes: grandChildrenThemes ? normalizeSubThemes(grandChildrenThemes) : void 0,
38
+ getTheme
39
+ });
40
+ lastBuilder = builder.themeBuilder;
41
+ return builder.themes;
42
+ }
43
+ function normalizeSubThemes(defs) {
44
+ return Object.fromEntries(Object.entries(defs || {}).map(function(param) {
45
+ var [name, value] = param;
46
+ var hasPalette = value.palette !== void 0;
47
+ return [name, {
48
+ ...hasPalette ? { palette: name } : {},
49
+ template: value.template || "base"
50
+ }];
51
+ }));
52
+ }
53
+ var defaultPalettes = createPalettes(getThemesPalettes({
54
+ base: { palette: ["#fff", "#000"] },
55
+ accent: { palette: ["#ff0000", "#ff9999"] }
56
+ }));
57
+ function createSimpleThemeBuilder(props) {
58
+ var { getTheme, extra, accentExtra, childrenThemes = null, grandChildrenThemes = null, templates = defaultTemplates, palettes = defaultPalettes, accentTheme, componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0 } = props;
59
+ var themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({
60
+ light: {
61
+ template: "base",
62
+ palette: "light",
63
+ nonInheritedValues: {
64
+ ...extra === null || extra === void 0 ? void 0 : extra.light,
65
+ ...accentTheme && palettes.light_accent && {
66
+ accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],
67
+ accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],
68
+ accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],
69
+ accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],
70
+ accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],
71
+ accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],
72
+ accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],
73
+ accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],
74
+ accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],
75
+ accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],
76
+ accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],
77
+ accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]
78
+ }
79
+ }
80
+ },
81
+ dark: {
82
+ template: "base",
83
+ palette: "dark",
84
+ nonInheritedValues: {
85
+ ...extra === null || extra === void 0 ? void 0 : extra.dark,
86
+ ...accentTheme && palettes.dark_accent && {
87
+ accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],
88
+ accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],
89
+ accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],
90
+ accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],
91
+ accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],
92
+ accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],
93
+ accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],
94
+ accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],
95
+ accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],
96
+ accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],
97
+ accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],
98
+ accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]
99
+ }
100
+ }
101
+ }
102
+ });
103
+ if (palettes.light_accent) {
104
+ themeBuilder = themeBuilder.addChildThemes({ accent: [{
105
+ parent: "light",
106
+ template: "base",
107
+ palette: "light_accent",
108
+ nonInheritedValues: accentExtra === null || accentExtra === void 0 ? void 0 : accentExtra.light
109
+ }, {
110
+ parent: "dark",
111
+ template: "base",
112
+ palette: "dark_accent",
113
+ nonInheritedValues: accentExtra === null || accentExtra === void 0 ? void 0 : accentExtra.dark
114
+ }] });
115
+ }
116
+ if (childrenThemes) {
117
+ themeBuilder = themeBuilder.addChildThemes(childrenThemes, { avoidNestingWithin: ["accent"] });
118
+ }
119
+ if (grandChildrenThemes) {
120
+ themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, { avoidNestingWithin: ["accent"] });
121
+ }
122
+ if (componentThemes) {
123
+ themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), { avoidNestingWithin: Object.keys(grandChildrenThemes || {}) });
124
+ }
125
+ if (getTheme) {
126
+ themeBuilder = themeBuilder.getTheme(getTheme);
127
+ }
128
+ return {
129
+ themeBuilder,
130
+ themes: themeBuilder.build()
131
+ };
132
+ }
133
+ function getSchemePalette(colors) {
134
+ return {
135
+ light: colors,
136
+ dark: [...colors].reverse()
137
+ };
138
+ }
139
+ function getAnchors(palette) {
140
+ var maxIndex = 11;
141
+ var numItems = palette.light.length;
142
+ var anchors = palette.light.map(function(lcolor, index) {
143
+ var dcolor = palette.dark[index];
144
+ var [lhue, lsat, llum, lalpha] = parseToHsla(lcolor);
145
+ var [dhue, dsat, dlum, dalpha] = parseToHsla(dcolor);
146
+ return {
147
+ index: spreadIndex(maxIndex, numItems, index),
148
+ hue: {
149
+ light: lhue,
150
+ dark: dhue
151
+ },
152
+ sat: {
153
+ light: lsat,
154
+ dark: dsat
155
+ },
156
+ lum: {
157
+ light: llum,
158
+ dark: dlum
159
+ },
160
+ alpha: {
161
+ light: lalpha,
162
+ dark: dalpha
163
+ }
164
+ };
165
+ });
166
+ return anchors;
167
+ }
168
+ function spreadIndex(maxIndex, numItems, index) {
169
+ return Math.round(index / (numItems - 1) * maxIndex);
170
+ }
171
+ function coerceSimplePaletteToSchemePalette(def) {
172
+ return Array.isArray(def) ? getSchemePalette(def) : def;
173
+ }
174
+ function getThemesPalettes(props) {
175
+ var base = coerceSimplePaletteToSchemePalette(props.base.palette);
176
+ var accent = props.accent ? coerceSimplePaletteToSchemePalette(props.accent.palette) : null;
177
+ var baseAnchors = getAnchors(base);
178
+ function getSubThemesPalettes(defs) {
179
+ var isGrandChildren = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
180
+ return Object.fromEntries(Object.entries(defs).map(function(param) {
181
+ var [key, value] = param;
182
+ if (isGrandChildren && key === "accent" && !value.palette) {
183
+ return null;
184
+ }
185
+ return [key, {
186
+ name: key,
187
+ anchors: value.palette ? getAnchors(coerceSimplePaletteToSchemePalette(value.palette)) : baseAnchors
188
+ }];
189
+ }).filter(Boolean));
190
+ }
191
+ return {
192
+ base: {
193
+ name: "base",
194
+ anchors: baseAnchors
195
+ },
196
+ ...accent && { accent: {
197
+ name: "accent",
198
+ anchors: getAnchors(accent)
199
+ } },
200
+ ...props.childrenThemes && getSubThemesPalettes(props.childrenThemes, false),
201
+ ...props.grandChildrenThemes && getSubThemesPalettes(props.grandChildrenThemes, true)
202
+ };
203
+ }
204
+ var getComponentThemes = function(components) {
205
+ return Object.fromEntries(Object.entries(components).map(function(param) {
206
+ var [componentName, { template }] = param;
207
+ return [componentName, {
208
+ parent: "",
209
+ template: template || "base"
210
+ }];
211
+ }));
212
+ };
213
+ function createPalettes(palettes) {
214
+ var accentPalettes = palettes.accent ? getThemeSuitePalettes(palettes.accent) : null;
215
+ var basePalettes = getThemeSuitePalettes(palettes.base);
216
+ var next = Object.fromEntries(Object.entries(palettes).flatMap(function(param) {
217
+ var [name, palette] = param;
218
+ var _$palettes = getThemeSuitePalettes(palette);
219
+ var isAccent = name.startsWith("accent");
220
+ var oppositePalettes = isAccent ? basePalettes : accentPalettes || basePalettes;
221
+ if (!oppositePalettes) {
222
+ return [];
223
+ }
224
+ var oppositeLight = oppositePalettes.light;
225
+ var oppositeDark = oppositePalettes.dark;
226
+ var bgOffset = 7;
227
+ var out = [[name === "base" ? "light" : `light_${name}`, [
228
+ oppositeLight[bgOffset],
229
+ ..._$palettes.light,
230
+ oppositeLight[oppositeLight.length - bgOffset - 1]
231
+ ]], [name === "base" ? "dark" : `dark_${name}`, [
232
+ oppositeDark[oppositeDark.length - bgOffset - 1],
233
+ ..._$palettes.dark,
234
+ oppositeDark[bgOffset]
235
+ ]]];
236
+ return out;
237
+ }));
238
+ return next;
239
+ }
240
+ function createV4ThemeBuilder(props) {
241
+ var { getTheme, extra, accentExtra, childrenThemes = null, grandChildrenThemes = null, templates = defaultTemplates, palettes = defaultPalettes, accentTheme, componentThemes = templates === defaultTemplates ? defaultComponentThemes : void 0 } = props;
242
+ var themeBuilder = createThemeBuilder().addPalettes(palettes).addTemplates(templates).addThemes({
243
+ light: {
244
+ template: "base",
245
+ palette: "light",
246
+ nonInheritedValues: {
247
+ ...extra === null || extra === void 0 ? void 0 : extra.light,
248
+ ...accentTheme && palettes.light_accent && {
249
+ accent1: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 0],
250
+ accent2: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 1],
251
+ accent3: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 2],
252
+ accent4: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 3],
253
+ accent5: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 4],
254
+ accent6: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 5],
255
+ accent7: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 6],
256
+ accent8: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 7],
257
+ accent9: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 8],
258
+ accent10: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 9],
259
+ accent11: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 10],
260
+ accent12: palettes.light_accent[PALETTE_BACKGROUND_OFFSET + 11]
261
+ }
262
+ }
263
+ },
264
+ dark: {
265
+ template: "base",
266
+ palette: "dark",
267
+ nonInheritedValues: {
268
+ ...extra === null || extra === void 0 ? void 0 : extra.dark,
269
+ ...accentTheme && palettes.dark_accent && {
270
+ accent1: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 0],
271
+ accent2: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 1],
272
+ accent3: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 2],
273
+ accent4: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 3],
274
+ accent5: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 4],
275
+ accent6: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 5],
276
+ accent7: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 6],
277
+ accent8: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 7],
278
+ accent9: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 8],
279
+ accent10: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 9],
280
+ accent11: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 10],
281
+ accent12: palettes.dark_accent[PALETTE_BACKGROUND_OFFSET + 11]
282
+ }
283
+ }
284
+ }
285
+ });
286
+ if (childrenThemes) {
287
+ themeBuilder = themeBuilder.addChildThemes(childrenThemes, { avoidNestingWithin: ["accent"] });
288
+ }
289
+ if (grandChildrenThemes) {
290
+ themeBuilder = themeBuilder.addChildThemes(grandChildrenThemes, { avoidNestingWithin: ["accent"] });
291
+ }
292
+ if (palettes.light_accent) {
293
+ themeBuilder = themeBuilder.addChildThemes({ accent: [{
294
+ parent: "light",
295
+ template: "base",
296
+ palette: "light_accent",
297
+ nonInheritedValues: accentExtra === null || accentExtra === void 0 ? void 0 : accentExtra.light
298
+ }, {
299
+ parent: "dark",
300
+ template: "base",
301
+ palette: "dark_accent",
302
+ nonInheritedValues: accentExtra === null || accentExtra === void 0 ? void 0 : accentExtra.dark
303
+ }] }, { avoidNestingWithin: Object.keys(childrenThemes || {}) });
304
+ }
305
+ if (componentThemes) {
306
+ themeBuilder = themeBuilder.addComponentThemes(getComponentThemes(componentThemes), { avoidNestingWithin: Object.keys(grandChildrenThemes || {}) });
307
+ }
308
+ if (getTheme) {
309
+ themeBuilder = themeBuilder.getTheme(getTheme);
310
+ }
311
+ return {
312
+ themeBuilder,
313
+ themes: themeBuilder.build()
314
+ };
315
+ }
316
+
317
+ export { createPalettes, createSimpleThemeBuilder, createThemes, createV4ThemeBuilder, createV4Themes, getComponentThemes, getLastBuilder };
318
+ //# sourceMappingURL=createThemes.native.js.map