@atlaskit/tokens 13.1.0 → 13.1.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 (277) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/codemods/css-to-design-tokens/lib/colors.tsx +3 -8
  3. package/codemods/css-to-design-tokens/lib/declaration.tsx +3 -13
  4. package/codemods/css-to-design-tokens/lib/extract-between-parentheses.tsx +4 -0
  5. package/codemods/css-to-design-tokens/lib/extract-less-var-name.tsx +3 -0
  6. package/codemods/css-to-design-tokens/lib/get-css-var-meta.tsx +13 -0
  7. package/codemods/css-to-design-tokens/lib/get-named-color-meta.tsx +5 -0
  8. package/codemods/css-to-design-tokens/lib/get-raw-color-meta.tsx +11 -0
  9. package/codemods/css-to-design-tokens/lib/is-css-declaration.tsx +3 -0
  10. package/codemods/css-to-design-tokens/lib/is-known-css-variable.tsx +5 -0
  11. package/codemods/css-to-design-tokens/lib/known-named-colors.tsx +150 -0
  12. package/codemods/css-to-design-tokens/lib/known-raw-colors.tsx +17 -0
  13. package/codemods/css-to-design-tokens/lib/known-variables.tsx +167 -0
  14. package/codemods/css-to-design-tokens/lib/legacy-colors.tsx +3 -335
  15. package/codemods/css-to-design-tokens/lib/meta.tsx +3 -28
  16. package/codemods/css-to-design-tokens/lib/split-css-value.tsx +4 -0
  17. package/codemods/css-to-design-tokens/lib/value.tsx +6 -9
  18. package/codemods/css-to-design-tokens/transform.tsx +3 -1
  19. package/dist/cjs/artifacts/palettes-raw/palette.js +35 -1
  20. package/dist/cjs/entry-points/theme-state-transformer.js +4 -3
  21. package/dist/cjs/get-custom-theme-styles.js +7 -6
  22. package/dist/cjs/get-global-theme.js +2 -2
  23. package/dist/cjs/get-theme-html-attrs.js +2 -2
  24. package/dist/cjs/index.js +4 -3
  25. package/dist/cjs/is-color-mode.js +9 -0
  26. package/dist/cjs/is-theme-ids.js +12 -0
  27. package/dist/cjs/is-theme-kind.js +12 -0
  28. package/dist/cjs/theme-config.js +8 -44
  29. package/dist/cjs/theme-object-to-string.js +42 -0
  30. package/dist/cjs/theme-options-schema.js +1 -0
  31. package/dist/cjs/theme-state-defaults.js +39 -0
  32. package/dist/cjs/theme-state.js +5 -0
  33. package/dist/cjs/theme-string-to-object.js +51 -0
  34. package/dist/cjs/utils/additional-contrast-checker.js +43 -0
  35. package/dist/cjs/utils/custom-theme-loading-utils.js +0 -22
  36. package/dist/cjs/utils/custom-theme-token-contrast-check.js +2 -40
  37. package/dist/cjs/utils/delta-e.js +26 -0
  38. package/dist/cjs/utils/generate-colors.js +47 -0
  39. package/dist/cjs/utils/generate-token-map-with-contrast-check.js +32 -0
  40. package/dist/cjs/utils/{generate-custom-color-ramp.js → generate-token-map.js} +6 -75
  41. package/dist/cjs/utils/get-closest-color-index.js +3 -2
  42. package/dist/cjs/utils/get-contrast-ratio.js +22 -0
  43. package/dist/cjs/utils/hct-color-utils/alpha-from-argb.js +12 -0
  44. package/dist/cjs/utils/hct-color-utils/argb-from-linrgb.js +17 -0
  45. package/dist/cjs/utils/hct-color-utils/argb-from-lstar.js +21 -0
  46. package/dist/cjs/utils/hct-color-utils/argb-from-rgba.js +24 -0
  47. package/dist/cjs/utils/hct-color-utils/argb-from-xyz.js +29 -0
  48. package/dist/cjs/utils/hct-color-utils/blue-from-argb.js +12 -0
  49. package/dist/cjs/utils/hct-color-utils/clamp-component.js +15 -0
  50. package/dist/cjs/utils/hct-color-utils/contrast.js +10 -11
  51. package/dist/cjs/utils/hct-color-utils/green-from-argb.js +12 -0
  52. package/dist/cjs/utils/hct-color-utils/hct.js +18 -12
  53. package/dist/cjs/utils/hct-color-utils/index.js +4 -3
  54. package/dist/cjs/utils/hct-color-utils/lab-f.js +15 -0
  55. package/dist/cjs/utils/hct-color-utils/lab-invf.js +16 -0
  56. package/dist/cjs/utils/hct-color-utils/lstar-from-argb.js +34 -0
  57. package/dist/cjs/utils/hct-color-utils/lstar-from-y.js +21 -0
  58. package/dist/cjs/utils/hct-color-utils/red-from-argb.js +12 -0
  59. package/dist/cjs/utils/hct-color-utils/rgba-from-argb.js +28 -0
  60. package/dist/cjs/utils/hct-color-utils/rgba.js +1 -0
  61. package/dist/cjs/utils/hct-color-utils/viewing-conditions.js +5 -4
  62. package/dist/cjs/utils/hct-color-utils/white-point-d65.js +14 -0
  63. package/dist/cjs/utils/hct-color-utils/y-from-lstar.js +21 -0
  64. package/dist/cjs/utils/hex-to-hsl.js +52 -0
  65. package/dist/cjs/utils/hex-to-rgb-a.js +20 -0
  66. package/dist/cjs/utils/hex-to-rgb.js +19 -0
  67. package/dist/cjs/utils/is-valid-hex.js +10 -0
  68. package/dist/cjs/utils/reduce-token-map.js +18 -0
  69. package/dist/cjs/utils/rgb-to-lab.js +24 -0
  70. package/dist/es2019/artifacts/palettes-raw/palette.js +35 -1
  71. package/dist/es2019/entry-points/theme-state-transformer.js +2 -1
  72. package/dist/es2019/get-custom-theme-styles.js +3 -2
  73. package/dist/es2019/get-global-theme.js +1 -1
  74. package/dist/es2019/get-theme-html-attrs.js +1 -1
  75. package/dist/es2019/index.js +2 -1
  76. package/dist/es2019/is-color-mode.js +3 -0
  77. package/dist/es2019/is-theme-ids.js +4 -0
  78. package/dist/es2019/is-theme-kind.js +4 -0
  79. package/dist/es2019/theme-config.js +4 -45
  80. package/dist/es2019/theme-object-to-string.js +28 -0
  81. package/dist/es2019/theme-options-schema.js +0 -0
  82. package/dist/es2019/theme-state-defaults.js +34 -0
  83. package/dist/es2019/theme-state.js +1 -0
  84. package/dist/es2019/theme-string-to-object.js +38 -0
  85. package/dist/es2019/utils/additional-contrast-checker.js +39 -0
  86. package/dist/es2019/utils/custom-theme-loading-utils.js +1 -11
  87. package/dist/es2019/utils/custom-theme-token-contrast-check.js +1 -41
  88. package/dist/es2019/utils/delta-e.js +20 -0
  89. package/dist/es2019/utils/generate-colors.js +39 -0
  90. package/dist/es2019/utils/generate-token-map-with-contrast-check.js +21 -0
  91. package/dist/es2019/utils/{generate-custom-color-ramp.js → generate-token-map.js} +3 -63
  92. package/dist/es2019/utils/get-closest-color-index.js +2 -1
  93. package/dist/es2019/utils/get-contrast-ratio.js +16 -0
  94. package/dist/es2019/utils/hct-color-utils/alpha-from-argb.js +6 -0
  95. package/dist/es2019/utils/hct-color-utils/argb-from-linrgb.js +12 -0
  96. package/dist/es2019/utils/hct-color-utils/argb-from-lstar.js +16 -0
  97. package/dist/es2019/utils/hct-color-utils/argb-from-rgba.js +19 -0
  98. package/dist/es2019/utils/hct-color-utils/argb-from-xyz.js +24 -0
  99. package/dist/es2019/utils/hct-color-utils/blue-from-argb.js +6 -0
  100. package/dist/es2019/utils/hct-color-utils/clamp-component.js +9 -0
  101. package/dist/es2019/utils/hct-color-utils/contrast.js +10 -10
  102. package/dist/es2019/utils/hct-color-utils/green-from-argb.js +6 -0
  103. package/dist/es2019/utils/hct-color-utils/hct.js +19 -12
  104. package/dist/es2019/utils/hct-color-utils/index.js +2 -1
  105. package/dist/es2019/utils/hct-color-utils/lab-f.js +9 -0
  106. package/dist/es2019/utils/hct-color-utils/lab-invf.js +10 -0
  107. package/dist/es2019/utils/hct-color-utils/lstar-from-argb.js +28 -0
  108. package/dist/es2019/utils/hct-color-utils/lstar-from-y.js +16 -0
  109. package/dist/es2019/utils/hct-color-utils/red-from-argb.js +6 -0
  110. package/dist/es2019/utils/hct-color-utils/rgba-from-argb.js +22 -0
  111. package/dist/es2019/utils/hct-color-utils/rgba.js +0 -0
  112. package/dist/es2019/utils/hct-color-utils/viewing-conditions.js +4 -3
  113. package/dist/es2019/utils/hct-color-utils/white-point-d65.js +8 -0
  114. package/dist/es2019/utils/hct-color-utils/y-from-lstar.js +16 -0
  115. package/dist/es2019/utils/hex-to-hsl.js +46 -0
  116. package/dist/es2019/utils/hex-to-rgb-a.js +14 -0
  117. package/dist/es2019/utils/hex-to-rgb.js +13 -0
  118. package/dist/es2019/utils/is-valid-hex.js +2 -0
  119. package/dist/es2019/utils/reduce-token-map.js +7 -0
  120. package/dist/es2019/utils/rgb-to-lab.js +18 -0
  121. package/dist/esm/artifacts/palettes-raw/palette.js +35 -1
  122. package/dist/esm/entry-points/theme-state-transformer.js +2 -1
  123. package/dist/esm/get-custom-theme-styles.js +3 -2
  124. package/dist/esm/get-global-theme.js +1 -1
  125. package/dist/esm/get-theme-html-attrs.js +1 -1
  126. package/dist/esm/index.js +2 -1
  127. package/dist/esm/is-color-mode.js +3 -0
  128. package/dist/esm/is-theme-ids.js +6 -0
  129. package/dist/esm/is-theme-kind.js +6 -0
  130. package/dist/esm/theme-config.js +4 -45
  131. package/dist/esm/theme-object-to-string.js +35 -0
  132. package/dist/esm/theme-options-schema.js +0 -0
  133. package/dist/esm/theme-state-defaults.js +34 -0
  134. package/dist/esm/theme-state.js +1 -0
  135. package/dist/esm/theme-string-to-object.js +44 -0
  136. package/dist/esm/utils/additional-contrast-checker.js +36 -0
  137. package/dist/esm/utils/custom-theme-loading-utils.js +1 -15
  138. package/dist/esm/utils/custom-theme-token-contrast-check.js +1 -38
  139. package/dist/esm/utils/delta-e.js +20 -0
  140. package/dist/esm/utils/generate-colors.js +40 -0
  141. package/dist/esm/utils/generate-token-map-with-contrast-check.js +25 -0
  142. package/dist/esm/utils/{generate-custom-color-ramp.js → generate-token-map.js} +3 -67
  143. package/dist/esm/utils/get-closest-color-index.js +2 -1
  144. package/dist/esm/utils/get-contrast-ratio.js +16 -0
  145. package/dist/esm/utils/hct-color-utils/alpha-from-argb.js +6 -0
  146. package/dist/esm/utils/hct-color-utils/argb-from-linrgb.js +12 -0
  147. package/dist/esm/utils/hct-color-utils/argb-from-lstar.js +16 -0
  148. package/dist/esm/utils/hct-color-utils/argb-from-rgba.js +18 -0
  149. package/dist/esm/utils/hct-color-utils/argb-from-xyz.js +24 -0
  150. package/dist/esm/utils/hct-color-utils/blue-from-argb.js +6 -0
  151. package/dist/esm/utils/hct-color-utils/clamp-component.js +9 -0
  152. package/dist/esm/utils/hct-color-utils/contrast.js +10 -10
  153. package/dist/esm/utils/hct-color-utils/green-from-argb.js +6 -0
  154. package/dist/esm/utils/hct-color-utils/hct.js +19 -12
  155. package/dist/esm/utils/hct-color-utils/index.js +2 -1
  156. package/dist/esm/utils/hct-color-utils/lab-f.js +9 -0
  157. package/dist/esm/utils/hct-color-utils/lab-invf.js +10 -0
  158. package/dist/esm/utils/hct-color-utils/lstar-from-argb.js +28 -0
  159. package/dist/esm/utils/hct-color-utils/lstar-from-y.js +16 -0
  160. package/dist/esm/utils/hct-color-utils/red-from-argb.js +6 -0
  161. package/dist/esm/utils/hct-color-utils/rgba-from-argb.js +22 -0
  162. package/dist/esm/utils/hct-color-utils/rgba.js +0 -0
  163. package/dist/esm/utils/hct-color-utils/viewing-conditions.js +5 -4
  164. package/dist/esm/utils/hct-color-utils/white-point-d65.js +8 -0
  165. package/dist/esm/utils/hct-color-utils/y-from-lstar.js +16 -0
  166. package/dist/esm/utils/hex-to-hsl.js +46 -0
  167. package/dist/esm/utils/hex-to-rgb-a.js +14 -0
  168. package/dist/esm/utils/hex-to-rgb.js +13 -0
  169. package/dist/esm/utils/is-valid-hex.js +4 -0
  170. package/dist/esm/utils/reduce-token-map.js +11 -0
  171. package/dist/esm/utils/rgb-to-lab.js +18 -0
  172. package/dist/types/artifacts/palettes-raw/palette.d.ts +1 -1
  173. package/dist/types/entry-points/theme-state-transformer.d.ts +2 -1
  174. package/dist/types/index.d.ts +2 -1
  175. package/dist/types/is-color-mode.d.ts +2 -0
  176. package/dist/types/is-theme-ids.d.ts +2 -0
  177. package/dist/types/is-theme-kind.d.ts +4 -0
  178. package/dist/types/theme-color-modes.d.ts +1 -0
  179. package/dist/types/theme-config.d.ts +8 -40
  180. package/dist/types/theme-ids.d.ts +1 -0
  181. package/dist/types/theme-object-to-string.d.ts +13 -0
  182. package/dist/types/theme-options-schema.d.ts +7 -0
  183. package/dist/types/theme-state-defaults.d.ts +14 -0
  184. package/dist/types/theme-state.d.ts +17 -0
  185. package/dist/types/{theme-state-transformer.d.ts → theme-string-to-object.d.ts} +0 -12
  186. package/dist/types/utils/additional-contrast-checker.d.ts +9 -0
  187. package/dist/types/utils/custom-theme-loading-utils.d.ts +1 -6
  188. package/dist/types/utils/custom-theme-token-contrast-check.d.ts +0 -9
  189. package/dist/types/utils/delta-e.d.ts +1 -0
  190. package/dist/types/utils/generate-colors.d.ts +5 -0
  191. package/dist/types/utils/{generate-custom-color-ramp.d.ts → generate-token-map-with-contrast-check.d.ts} +1 -6
  192. package/dist/types/utils/generate-token-map.d.ts +9 -0
  193. package/dist/types/utils/get-contrast-ratio.d.ts +1 -0
  194. package/dist/types/utils/hct-color-utils/alpha-from-argb.d.ts +4 -0
  195. package/dist/types/utils/hct-color-utils/argb-from-linrgb.d.ts +4 -0
  196. package/dist/types/utils/hct-color-utils/argb-from-lstar.d.ts +8 -0
  197. package/dist/types/utils/hct-color-utils/argb-from-rgba.d.ts +8 -0
  198. package/dist/types/utils/hct-color-utils/argb-from-xyz.d.ts +4 -0
  199. package/dist/types/utils/hct-color-utils/blue-from-argb.d.ts +4 -0
  200. package/dist/types/utils/hct-color-utils/clamp-component.d.ts +1 -0
  201. package/dist/types/utils/hct-color-utils/green-from-argb.d.ts +4 -0
  202. package/dist/types/utils/hct-color-utils/index.d.ts +2 -1
  203. package/dist/types/utils/hct-color-utils/lab-f.d.ts +1 -0
  204. package/dist/types/utils/hct-color-utils/lab-invf.d.ts +1 -0
  205. package/dist/types/utils/hct-color-utils/lstar-from-argb.d.ts +7 -0
  206. package/dist/types/utils/hct-color-utils/lstar-from-y.d.ts +12 -0
  207. package/dist/types/utils/hct-color-utils/red-from-argb.d.ts +4 -0
  208. package/dist/types/utils/hct-color-utils/rgba-from-argb.d.ts +8 -0
  209. package/dist/types/utils/hct-color-utils/rgba.d.ts +14 -0
  210. package/dist/types/utils/hct-color-utils/white-point-d65.d.ts +6 -0
  211. package/dist/types/utils/hct-color-utils/y-from-lstar.d.ts +12 -0
  212. package/dist/types/utils/hex-to-hsl.d.ts +1 -0
  213. package/dist/types/utils/hex-to-rgb-a.d.ts +1 -0
  214. package/dist/types/utils/hex-to-rgb.d.ts +1 -0
  215. package/dist/types/utils/is-valid-hex.d.ts +1 -0
  216. package/dist/types/utils/reduce-token-map.d.ts +6 -0
  217. package/dist/types/utils/rgb-to-lab.d.ts +1 -0
  218. package/dist/types-ts4.5/artifacts/palettes-raw/palette.d.ts +1 -1
  219. package/dist/types-ts4.5/entry-points/theme-state-transformer.d.ts +2 -1
  220. package/dist/types-ts4.5/index.d.ts +2 -1
  221. package/dist/types-ts4.5/is-color-mode.d.ts +2 -0
  222. package/dist/types-ts4.5/is-theme-ids.d.ts +2 -0
  223. package/dist/types-ts4.5/is-theme-kind.d.ts +11 -0
  224. package/dist/types-ts4.5/theme-color-modes.d.ts +1 -0
  225. package/dist/types-ts4.5/theme-config.d.ts +8 -40
  226. package/dist/types-ts4.5/theme-ids.d.ts +1 -0
  227. package/dist/types-ts4.5/theme-object-to-string.d.ts +13 -0
  228. package/dist/types-ts4.5/theme-options-schema.d.ts +7 -0
  229. package/dist/types-ts4.5/theme-state-defaults.d.ts +14 -0
  230. package/dist/types-ts4.5/theme-state.d.ts +17 -0
  231. package/dist/types-ts4.5/{theme-state-transformer.d.ts → theme-string-to-object.d.ts} +0 -12
  232. package/dist/types-ts4.5/utils/additional-contrast-checker.d.ts +9 -0
  233. package/dist/types-ts4.5/utils/custom-theme-loading-utils.d.ts +1 -6
  234. package/dist/types-ts4.5/utils/custom-theme-token-contrast-check.d.ts +0 -9
  235. package/dist/types-ts4.5/utils/delta-e.d.ts +1 -0
  236. package/dist/types-ts4.5/utils/generate-colors.d.ts +5 -0
  237. package/dist/types-ts4.5/utils/{generate-custom-color-ramp.d.ts → generate-token-map-with-contrast-check.d.ts} +1 -8
  238. package/dist/types-ts4.5/utils/generate-token-map.d.ts +11 -0
  239. package/dist/types-ts4.5/utils/get-contrast-ratio.d.ts +1 -0
  240. package/dist/types-ts4.5/utils/hct-color-utils/alpha-from-argb.d.ts +4 -0
  241. package/dist/types-ts4.5/utils/hct-color-utils/argb-from-linrgb.d.ts +4 -0
  242. package/dist/types-ts4.5/utils/hct-color-utils/argb-from-lstar.d.ts +8 -0
  243. package/dist/types-ts4.5/utils/hct-color-utils/argb-from-rgba.d.ts +8 -0
  244. package/dist/types-ts4.5/utils/hct-color-utils/argb-from-xyz.d.ts +4 -0
  245. package/dist/types-ts4.5/utils/hct-color-utils/blue-from-argb.d.ts +4 -0
  246. package/dist/types-ts4.5/utils/hct-color-utils/clamp-component.d.ts +1 -0
  247. package/dist/types-ts4.5/utils/hct-color-utils/green-from-argb.d.ts +4 -0
  248. package/dist/types-ts4.5/utils/hct-color-utils/index.d.ts +2 -1
  249. package/dist/types-ts4.5/utils/hct-color-utils/lab-f.d.ts +1 -0
  250. package/dist/types-ts4.5/utils/hct-color-utils/lab-invf.d.ts +1 -0
  251. package/dist/types-ts4.5/utils/hct-color-utils/lstar-from-argb.d.ts +7 -0
  252. package/dist/types-ts4.5/utils/hct-color-utils/lstar-from-y.d.ts +12 -0
  253. package/dist/types-ts4.5/utils/hct-color-utils/red-from-argb.d.ts +4 -0
  254. package/dist/types-ts4.5/utils/hct-color-utils/rgba-from-argb.d.ts +8 -0
  255. package/dist/types-ts4.5/utils/hct-color-utils/rgba.d.ts +14 -0
  256. package/dist/types-ts4.5/utils/hct-color-utils/white-point-d65.d.ts +6 -0
  257. package/dist/types-ts4.5/utils/hct-color-utils/y-from-lstar.d.ts +12 -0
  258. package/dist/types-ts4.5/utils/hex-to-hsl.d.ts +5 -0
  259. package/dist/types-ts4.5/utils/hex-to-rgb-a.d.ts +6 -0
  260. package/dist/types-ts4.5/utils/hex-to-rgb.d.ts +5 -0
  261. package/dist/types-ts4.5/utils/is-valid-hex.d.ts +1 -0
  262. package/dist/types-ts4.5/utils/reduce-token-map.d.ts +6 -0
  263. package/dist/types-ts4.5/utils/rgb-to-lab.d.ts +5 -0
  264. package/package.json +5 -5
  265. package/dist/cjs/theme-state-transformer.js +0 -93
  266. package/dist/cjs/utils/color-utils.js +0 -176
  267. package/dist/cjs/utils/hct-color-utils/color-utils.js +0 -279
  268. package/dist/es2019/theme-state-transformer.js +0 -70
  269. package/dist/es2019/utils/color-utils.js +0 -136
  270. package/dist/es2019/utils/hct-color-utils/color-utils.js +0 -249
  271. package/dist/esm/theme-state-transformer.js +0 -86
  272. package/dist/esm/utils/color-utils.js +0 -138
  273. package/dist/esm/utils/hct-color-utils/color-utils.js +0 -248
  274. package/dist/types/utils/color-utils.d.ts +0 -10
  275. package/dist/types/utils/hct-color-utils/color-utils.d.ts +0 -88
  276. package/dist/types-ts4.5/utils/color-utils.d.ts +0 -23
  277. package/dist/types-ts4.5/utils/hct-color-utils/color-utils.d.ts +0 -88
@@ -1,10 +1,10 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import { fg } from '@atlaskit/platform-feature-flags';
3
- import { themeIds } from './theme-ids';
4
2
  /**
5
3
  * This file contains the source of truth for themes and all associated meta data.
6
4
  */
7
5
 
6
+ import { themeIds } from './theme-ids';
7
+
8
8
  /**
9
9
  * Themes: The internal identifier of a theme.
10
10
  * These ids are what the actual theme files/folders are called.
@@ -147,48 +147,6 @@ var themeConfig = {
147
147
  }
148
148
  };
149
149
 
150
- /**
151
- * ThemeOptionsSchema: additional configuration options used to customize Atlassian's themes
152
- */
153
-
154
- /**
155
- * ThemeState: the standard representation of an app's current theme and preferences
156
- */
157
-
158
- /**
159
- * Can't evaluate typography feature flags at the module level,
160
- * it will always resolve to false when server side rendered or when flags are loaded async.
161
- */
162
-
163
- function getShapeDefault() {
164
- if (fg('platform-dst-shape-theme-default')) {
165
- return 'shape';
166
- }
167
- return undefined;
168
- }
169
- function getMotionDefault() {
170
- if (fg('platform-dst-motion-theme-default')) {
171
- return 'motion';
172
- }
173
- return undefined;
174
- }
175
-
176
- /**
177
- * themeStateDefaults: the default values for ThemeState used by theming utilities
178
- */
179
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
180
- export var themeStateDefaults = {
181
- colorMode: 'auto',
182
- contrastMode: 'auto',
183
- dark: 'dark',
184
- light: 'light',
185
- shape: getShapeDefault,
186
- spacing: 'spacing',
187
- typography: 'typography',
188
- motion: getMotionDefault,
189
- UNSAFE_themeOptions: undefined
190
- };
191
-
192
150
  /**
193
151
  * Represents theme state once mounted to the page
194
152
  * (the page doesn't have an "auto" color mode, it's either light or dark)
@@ -197,4 +155,5 @@ export var themeStateDefaults = {
197
155
  // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
198
156
  export default themeConfig;
199
157
  export { themeColorModes } from './theme-color-modes';
200
- export { themeIds } from './theme-ids';
158
+ export { themeIds } from './theme-ids';
159
+ export { themeStateDefaults } from './theme-state-defaults';
@@ -0,0 +1,35 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import { isColorMode } from './is-color-mode';
4
+ import { isThemeIds } from './is-theme-ids';
5
+ import { isThemeKind } from './is-theme-kind';
6
+ var customThemeOptions = 'UNSAFE_themeOptions';
7
+
8
+ /**
9
+ * Converts a theme object to a string formatted for the `data-theme` HTML attribute.
10
+ *
11
+ * @param {object} themes The themes that should be applied.
12
+ *
13
+ * @example
14
+ * ```
15
+ * themeObjectToString({ dark: 'dark', light: 'light', spacing: 'spacing' });
16
+ * // returns 'dark:dark light:light spacing:spacing'
17
+ * ```
18
+ */
19
+ export var themeObjectToString = function themeObjectToString(themeState) {
20
+ return Object.entries(themeState).reduce(function (themeString, _ref) {
21
+ var _ref2 = _slicedToArray(_ref, 2),
22
+ kind = _ref2[0],
23
+ id = _ref2[1];
24
+ if (
25
+ // colorMode theme state
26
+ kind === 'colorMode' && typeof id === 'string' && isColorMode(id) ||
27
+ // custom theme state
28
+ kind === customThemeOptions && _typeof(id) === 'object' ||
29
+ // other theme states
30
+ isThemeKind(kind) && typeof id === 'string' && isThemeIds(id)) {
31
+ return themeString + "".concat(themeString ? ' ' : '') + "".concat(kind, ":").concat(_typeof(id) === 'object' ? JSON.stringify(id) : id);
32
+ }
33
+ return themeString;
34
+ }, '');
35
+ };
File without changes
@@ -0,0 +1,34 @@
1
+ import { fg } from '@atlaskit/platform-feature-flags';
2
+
3
+ /**
4
+ * Can't evaluate typography feature flags at the module level,
5
+ * it will always resolve to false when server side rendered or when flags are loaded async.
6
+ */
7
+
8
+ function getShapeDefault() {
9
+ if (fg('platform-dst-shape-theme-default')) {
10
+ return 'shape';
11
+ }
12
+ return undefined;
13
+ }
14
+ function getMotionDefault() {
15
+ if (fg('platform-dst-motion-theme-default')) {
16
+ return 'motion';
17
+ }
18
+ return undefined;
19
+ }
20
+
21
+ /**
22
+ * themeStateDefaults: the default values for ThemeState used by theming utilities
23
+ */
24
+ export var themeStateDefaults = {
25
+ colorMode: 'auto',
26
+ contrastMode: 'auto',
27
+ dark: 'dark',
28
+ light: 'light',
29
+ shape: getShapeDefault,
30
+ spacing: 'spacing',
31
+ typography: 'typography',
32
+ motion: getMotionDefault,
33
+ UNSAFE_themeOptions: undefined
34
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { isColorMode } from './is-color-mode';
3
+ import { isThemeIds } from './is-theme-ids';
4
+ import { isThemeKind } from './is-theme-kind';
5
+ var customThemeOptions = 'UNSAFE_themeOptions';
6
+
7
+ /**
8
+ * Converts a string that is formatted for the `data-theme` HTML attribute
9
+ * to an object that can be passed to `setGlobalTheme`.
10
+ *
11
+ * @param {string} themes The themes that should be applied.
12
+ *
13
+ * @example
14
+ * ```
15
+ * themeStringToObject('dark:dark light:light spacing:spacing');
16
+ * // returns { dark: 'dark', light: 'light', spacing: 'spacing' }
17
+ * ```
18
+ */
19
+ export var themeStringToObject = function themeStringToObject(themeState) {
20
+ return themeState.split(' ')
21
+ // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
22
+ .map(function (theme) {
23
+ return theme.split(/:([^]*)/);
24
+ }).reduce(function (themeObject, _ref) {
25
+ var _ref2 = _slicedToArray(_ref, 2),
26
+ kind = _ref2[0],
27
+ id = _ref2[1];
28
+ if (kind === 'colorMode' && isColorMode(id)) {
29
+ themeObject[kind] = id;
30
+ }
31
+ if (isThemeKind(kind) && isThemeIds(id)) {
32
+ // @ts-expect-error FIXME - this is a valid ts error
33
+ themeObject[kind] = id;
34
+ }
35
+ if (kind === customThemeOptions) {
36
+ try {
37
+ themeObject[customThemeOptions] = JSON.parse(id);
38
+ } catch (_unused) {
39
+ new Error('Invalid custom theme string');
40
+ }
41
+ }
42
+ return themeObject;
43
+ }, {});
44
+ };
@@ -0,0 +1,36 @@
1
+ import tokenValuesDark from '../artifacts/atlassian-dark-token-value-for-contrast-check';
2
+ import tokenValuesLight from '../artifacts/atlassian-light-token-value-for-contrast-check';
3
+ import { additionalChecks } from './custom-theme-token-contrast-check';
4
+ import { getContrastRatio } from './get-contrast-ratio';
5
+ var getColorFromTokenRaw = function getColorFromTokenRaw(tokenName, mode) {
6
+ return mode === 'light' ? tokenValuesLight[tokenName] : tokenValuesDark[tokenName];
7
+ };
8
+ export var additionalContrastChecker = function additionalContrastChecker(_ref) {
9
+ var customThemeTokenMap = _ref.customThemeTokenMap,
10
+ mode = _ref.mode,
11
+ themeRamp = _ref.themeRamp;
12
+ var updatedCustomThemeTokenMap = {};
13
+ var brandTokens = Object.keys(customThemeTokenMap);
14
+ additionalChecks.forEach(function (pairing) {
15
+ var backgroundLight = pairing.backgroundLight,
16
+ backgroundDark = pairing.backgroundDark,
17
+ foreground = pairing.foreground,
18
+ desiredContrast = pairing.desiredContrast,
19
+ updatedTokens = pairing.updatedTokens;
20
+ var background = mode === 'light' ? backgroundLight : backgroundDark;
21
+ var foregroundTokenValue = customThemeTokenMap[foreground];
22
+ var backgroundTokenValue = customThemeTokenMap[background];
23
+ var foregroundColor = brandTokens.includes(foreground) ? typeof foregroundTokenValue === 'string' ? foregroundTokenValue : themeRamp[foregroundTokenValue] : getColorFromTokenRaw(foreground, mode);
24
+ var backgroundColor = brandTokens.includes(background) ? typeof backgroundTokenValue === 'string' ? backgroundTokenValue : themeRamp[backgroundTokenValue] : getColorFromTokenRaw(background, mode);
25
+ var contrast = getContrastRatio(foregroundColor, backgroundColor);
26
+ if (contrast <= desiredContrast) {
27
+ updatedTokens.forEach(function (token) {
28
+ var rampValue = customThemeTokenMap[token];
29
+ if (typeof rampValue === 'number') {
30
+ updatedCustomThemeTokenMap[token] = mode === 'light' ? rampValue + 1 : rampValue - 1;
31
+ }
32
+ });
33
+ }
34
+ });
35
+ return updatedCustomThemeTokenMap;
36
+ };
@@ -1,5 +1,3 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import tokens from '../artifacts/token-names';
3
1
  import { CUSTOM_THEME_ATTRIBUTE, THEME_DATA_ATTRIBUTE } from '../constants';
4
2
  import { hash } from './hash';
5
3
  export function findMissingCustomStyleElements(UNSAFE_themeOptions, mode) {
@@ -16,16 +14,4 @@ export function findMissingCustomStyleElements(UNSAFE_themeOptions, mode) {
16
14
  }
17
15
  });
18
16
  return attrOfMissingCustomStyles;
19
- }
20
-
21
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
22
- export function reduceTokenMap(tokenMap, themeRamp) {
23
- return Object.entries(tokenMap).reduce(function (acc, _ref) {
24
- var _ref2 = _slicedToArray(_ref, 2),
25
- key = _ref2[0],
26
- value = _ref2[1];
27
- var cssVar = tokens[key];
28
- return cssVar ? "".concat(acc, "\n ").concat(cssVar, ": ").concat(typeof value === 'string' ? value : themeRamp[value], ";") : acc;
29
- }, '');
30
- }
31
- export { limitSizeOfCustomStyleElements } from './limit-size-of-custom-style-elements';
17
+ }
@@ -1,6 +1,3 @@
1
- import tokenValuesDark from '../artifacts/atlassian-dark-token-value-for-contrast-check';
2
- import tokenValuesLight from '../artifacts/atlassian-light-token-value-for-contrast-check';
3
- import { getContrastRatio } from './color-utils';
4
1
  export var additionalChecks = [{
5
2
  foreground: 'color.text.brand',
6
3
  backgroundLight: 'elevation.surface.sunken',
@@ -42,38 +39,4 @@ export var additionalChecks = [{
42
39
  // In light mode: darken the following tokens by one base token
43
40
  // In dark mode: lighten the following tokens by one base token
44
41
  updatedTokens: ['color.chart.brand', 'color.chart.brand.hovered']
45
- }];
46
- var getColorFromTokenRaw = function getColorFromTokenRaw(tokenName, mode) {
47
- return mode === 'light' ? tokenValuesLight[tokenName] : tokenValuesDark[tokenName];
48
- };
49
-
50
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
51
- export var additionalContrastChecker = function additionalContrastChecker(_ref) {
52
- var customThemeTokenMap = _ref.customThemeTokenMap,
53
- mode = _ref.mode,
54
- themeRamp = _ref.themeRamp;
55
- var updatedCustomThemeTokenMap = {};
56
- var brandTokens = Object.keys(customThemeTokenMap);
57
- additionalChecks.forEach(function (pairing) {
58
- var backgroundLight = pairing.backgroundLight,
59
- backgroundDark = pairing.backgroundDark,
60
- foreground = pairing.foreground,
61
- desiredContrast = pairing.desiredContrast,
62
- updatedTokens = pairing.updatedTokens;
63
- var background = mode === 'light' ? backgroundLight : backgroundDark;
64
- var foregroundTokenValue = customThemeTokenMap[foreground];
65
- var backgroundTokenValue = customThemeTokenMap[background];
66
- var foregroundColor = brandTokens.includes(foreground) ? typeof foregroundTokenValue === 'string' ? foregroundTokenValue : themeRamp[foregroundTokenValue] : getColorFromTokenRaw(foreground, mode);
67
- var backgroundColor = brandTokens.includes(background) ? typeof backgroundTokenValue === 'string' ? backgroundTokenValue : themeRamp[backgroundTokenValue] : getColorFromTokenRaw(background, mode);
68
- var contrast = getContrastRatio(foregroundColor, backgroundColor);
69
- if (contrast <= desiredContrast) {
70
- updatedTokens.forEach(function (token) {
71
- var rampValue = customThemeTokenMap[token];
72
- if (typeof rampValue === 'number') {
73
- updatedCustomThemeTokenMap[token] = mode === 'light' ? rampValue + 1 : rampValue - 1;
74
- }
75
- });
76
- }
77
- });
78
- return updatedCustomThemeTokenMap;
79
- };
42
+ }];
@@ -0,0 +1,20 @@
1
+ import { rgbToLab } from './rgb-to-lab';
2
+ export function deltaE(rgbA, rgbB) {
3
+ var labA = rgbToLab(rgbA);
4
+ var labB = rgbToLab(rgbB);
5
+ var deltaL = labA[0] - labB[0];
6
+ var deltaA = labA[1] - labB[1];
7
+ var deltaB = labA[2] - labB[2];
8
+ var c1 = Math.sqrt(labA[1] * labA[1] + labA[2] * labA[2]);
9
+ var c2 = Math.sqrt(labB[1] * labB[1] + labB[2] * labB[2]);
10
+ var deltaC = c1 - c2;
11
+ var deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC;
12
+ deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);
13
+ var sc = 1.0 + 0.045 * c1;
14
+ var sh = 1.0 + 0.015 * c1;
15
+ var deltaLKlsl = deltaL / 1.0;
16
+ var deltaCkcsc = deltaC / sc;
17
+ var deltaHkhsh = deltaH / sh;
18
+ var i = deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + deltaHkhsh * deltaHkhsh;
19
+ return i < 0 ? 0 : Math.sqrt(i);
20
+ }
@@ -0,0 +1,40 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import { getClosestColorIndex } from './get-closest-color-index';
3
+ import { argbFromRgba, Contrast, Hct, rgbaFromArgb } from './hct-color-utils';
4
+ import { hexToHSL } from './hex-to-hsl';
5
+ import { hexToRgbA } from './hex-to-rgb-a';
6
+ import { HSLToRGB } from './hsl-to-rgb';
7
+ import { relativeLuminanceW3C } from './relative-luminance-w3-c';
8
+ import { rgbToHex } from './rgb-to-hex';
9
+ var lowLuminanceContrastRatios = [1.12, 1.33, 2.03, 2.73, 3.33, 4.27, 5.2, 6.62, 12.46, 14.25];
10
+ var highLuminanceContrastRatios = [1.08, 1.24, 1.55, 1.99, 2.45, 3.34, 4.64, 6.1, 10.19, 12.6];
11
+ export var generateColors = function generateColors(brandColor) {
12
+ // Determine luminance
13
+ var HSLBrandColorHue = hexToHSL(brandColor)[0];
14
+ var baseRgb = HSLToRGB(HSLBrandColorHue, 100, 60);
15
+ var isLowLuminance = relativeLuminanceW3C(baseRgb[0], baseRgb[1], baseRgb[2]) < 0.4;
16
+ // Choose right palette
17
+ var themeRatios = isLowLuminance ? lowLuminanceContrastRatios : highLuminanceContrastRatios;
18
+ var brandRgba = hexToRgbA(brandColor);
19
+ var hctColor = Hct.fromInt(argbFromRgba({
20
+ r: brandRgba[0],
21
+ g: brandRgba[1],
22
+ b: brandRgba[2],
23
+ a: brandRgba[3]
24
+ }));
25
+ var themeRamp = themeRatios.map(function (contrast) {
26
+ var rgbaColor = rgbaFromArgb(Hct.from(hctColor.hue, hctColor.chroma, Contrast.darker(100, contrast) + 0.25 // Material's utils provide an offset
27
+ ).toInt());
28
+ return rgbToHex(rgbaColor.r, rgbaColor.g, rgbaColor.b);
29
+ });
30
+ var closestColorIndex = getClosestColorIndex(themeRamp, brandColor);
31
+
32
+ // Replace closet color with brandColor
33
+ var updatedThemeRamp = _toConsumableArray(themeRamp);
34
+ updatedThemeRamp[closestColorIndex] = brandColor;
35
+ return {
36
+ ramp: updatedThemeRamp,
37
+ // add the replaced color into the result
38
+ replacedColor: themeRamp[closestColorIndex]
39
+ };
40
+ };
@@ -0,0 +1,25 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ import { additionalContrastChecker } from './additional-contrast-checker';
6
+ import { generateColors } from './generate-colors';
7
+ import { generateTokenMap } from './generate-token-map';
8
+ export var generateTokenMapWithContrastCheck = function generateTokenMapWithContrastCheck(brandColor, mode, themeRamp) {
9
+ var colors = themeRamp || generateColors(brandColor).ramp;
10
+ var tokenMaps = generateTokenMap(brandColor, mode, colors);
11
+ var result = {};
12
+ Object.entries(tokenMaps).forEach(function (_ref) {
13
+ var _ref2 = _slicedToArray(_ref, 2),
14
+ mode = _ref2[0],
15
+ map = _ref2[1];
16
+ if (mode === 'light' || mode === 'dark') {
17
+ result[mode] = _objectSpread(_objectSpread({}, map), additionalContrastChecker({
18
+ customThemeTokenMap: map,
19
+ mode: mode,
20
+ themeRamp: colors
21
+ }));
22
+ }
23
+ });
24
+ return result;
25
+ };
@@ -1,49 +1,8 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
2
  import rawTokensDark from '../artifacts/atlassian-dark-token-value-for-contrast-check';
7
- import { getContrastRatio, hexToHSL, hexToRgbA } from './color-utils';
8
- import { additionalContrastChecker } from './custom-theme-token-contrast-check';
3
+ import { generateColors } from './generate-colors';
9
4
  import { getClosestColorIndex } from './get-closest-color-index';
10
- import { argbFromRgba, Contrast, Hct, rgbaFromArgb } from './hct-color-utils';
11
- import { HSLToRGB } from './hsl-to-rgb';
12
- import { relativeLuminanceW3C } from './relative-luminance-w3-c';
13
- import { rgbToHex } from './rgb-to-hex';
14
- var lowLuminanceContrastRatios = [1.12, 1.33, 2.03, 2.73, 3.33, 4.27, 5.2, 6.62, 12.46, 14.25];
15
- var highLuminanceContrastRatios = [1.08, 1.24, 1.55, 1.99, 2.45, 3.34, 4.64, 6.1, 10.19, 12.6];
16
- export var generateColors = function generateColors(brandColor) {
17
- // Determine luminance
18
- var HSLBrandColorHue = hexToHSL(brandColor)[0];
19
- var baseRgb = HSLToRGB(HSLBrandColorHue, 100, 60);
20
- var isLowLuminance = relativeLuminanceW3C(baseRgb[0], baseRgb[1], baseRgb[2]) < 0.4;
21
- // Choose right palette
22
- var themeRatios = isLowLuminance ? lowLuminanceContrastRatios : highLuminanceContrastRatios;
23
- var brandRgba = hexToRgbA(brandColor);
24
- var hctColor = Hct.fromInt(argbFromRgba({
25
- r: brandRgba[0],
26
- g: brandRgba[1],
27
- b: brandRgba[2],
28
- a: brandRgba[3]
29
- }));
30
- var themeRamp = themeRatios.map(function (contrast) {
31
- var rgbaColor = rgbaFromArgb(Hct.from(hctColor.hue, hctColor.chroma, Contrast.darker(100, contrast) + 0.25 // Material's utils provide an offset
32
- ).toInt());
33
- return rgbToHex(rgbaColor.r, rgbaColor.g, rgbaColor.b);
34
- });
35
- var closestColorIndex = getClosestColorIndex(themeRamp, brandColor);
36
-
37
- // Replace closet color with brandColor
38
- var updatedThemeRamp = _toConsumableArray(themeRamp);
39
- updatedThemeRamp[closestColorIndex] = brandColor;
40
- return {
41
- ramp: updatedThemeRamp,
42
- // add the replaced color into the result
43
- replacedColor: themeRamp[closestColorIndex]
44
- };
45
- };
46
-
5
+ import { getContrastRatio } from './get-contrast-ratio';
47
6
  /**
48
7
  * Return the interaction tokens for a color, given its ramp position and the number of
49
8
  * needed interaction states. Use higher-indexed colors (i.e. darker colors) if possible;
@@ -63,8 +22,6 @@ function getInteractionStates(rampPosition, number, colors) {
63
22
  }
64
23
  return result;
65
24
  }
66
-
67
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
68
25
  export var generateTokenMap = function generateTokenMap(brandColor, mode, themeRamp) {
69
26
  var _generateColors = generateColors(brandColor),
70
27
  ramp = _generateColors.ramp,
@@ -203,25 +160,4 @@ export var generateTokenMap = function generateTokenMap(brandColor, mode, themeR
203
160
  light: customThemeTokenMapLight,
204
161
  dark: customThemeTokenMapDark
205
162
  };
206
- };
207
-
208
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
209
- export var generateTokenMapWithContrastCheck = function generateTokenMapWithContrastCheck(brandColor, mode, themeRamp) {
210
- var colors = themeRamp || generateColors(brandColor).ramp;
211
- var tokenMaps = generateTokenMap(brandColor, mode, colors);
212
- var result = {};
213
- Object.entries(tokenMaps).forEach(function (_ref3) {
214
- var _ref4 = _slicedToArray(_ref3, 2),
215
- mode = _ref4[0],
216
- map = _ref4[1];
217
- if (mode === 'light' || mode === 'dark') {
218
- result[mode] = _objectSpread(_objectSpread({}, map), additionalContrastChecker({
219
- customThemeTokenMap: map,
220
- mode: mode,
221
- themeRamp: colors
222
- }));
223
- }
224
- });
225
- return result;
226
- };
227
- export { getClosestColorIndex } from './get-closest-color-index';
163
+ };
@@ -1,4 +1,5 @@
1
- import { deltaE, hexToRgb } from './color-utils';
1
+ import { deltaE } from './delta-e';
2
+ import { hexToRgb } from './hex-to-rgb';
2
3
  export var getClosestColorIndex = function getClosestColorIndex(themeRamp, brandColor) {
3
4
  // Iterate over themeRamp and find whichever color is closest to brandColor
4
5
  var closestColorIndex = 0;
@@ -0,0 +1,16 @@
1
+ import { hexToRgb } from './hex-to-rgb';
2
+ import { isValidHex } from './is-valid-hex';
3
+ import { relativeLuminanceW3C } from './relative-luminance-w3-c';
4
+ export function getContrastRatio(foreground, background) {
5
+ if (!isValidHex(foreground) || !isValidHex(background)) {
6
+ throw new Error('Invalid HEX');
7
+ }
8
+ var foregroundRgb = hexToRgb(foreground);
9
+ var backgroundRgb = hexToRgb(background);
10
+ var foregroundLuminance = relativeLuminanceW3C(foregroundRgb[0], foregroundRgb[1], foregroundRgb[2]);
11
+ var backgroundLuminance = relativeLuminanceW3C(backgroundRgb[0], backgroundRgb[1], backgroundRgb[2]);
12
+ // calculate the color contrast ratio
13
+ var brightest = Math.max(foregroundLuminance, backgroundLuminance);
14
+ var darkest = Math.min(foregroundLuminance, backgroundLuminance);
15
+ return (brightest + 0.05) / (darkest + 0.05);
16
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns the alpha component of a color in ARGB format.
3
+ */
4
+ export function alphaFromArgb(argb) {
5
+ return argb >> 24 & 255;
6
+ }
@@ -0,0 +1,12 @@
1
+ import { argbFromRgb } from './argb-from-rgb';
2
+ import { delinearized } from './delinearized';
3
+
4
+ /**
5
+ * Converts a color from linear RGB components to ARGB format.
6
+ */
7
+ export function argbFromLinrgb(linrgb) {
8
+ var r = delinearized(linrgb[0]);
9
+ var g = delinearized(linrgb[1]);
10
+ var b = delinearized(linrgb[2]);
11
+ return argbFromRgb(r, g, b);
12
+ }
@@ -0,0 +1,16 @@
1
+ import { argbFromRgb } from './argb-from-rgb';
2
+ import { delinearized } from './delinearized';
3
+ import { yFromLstar } from './y-from-lstar';
4
+
5
+ /**
6
+ * Converts an L* value to an ARGB representation.
7
+ *
8
+ * @param lstar L* in L*a*b*
9
+ * @return ARGB representation of grayscale color with lightness
10
+ * matching L*
11
+ */
12
+ export function argbFromLstar(lstar) {
13
+ var y = yFromLstar(lstar);
14
+ var component = delinearized(y);
15
+ return argbFromRgb(component, component, component);
16
+ }
@@ -0,0 +1,18 @@
1
+ import { clampComponent } from './clamp-component';
2
+ /**
3
+ * Return int32 color from a given RGBA component
4
+ *
5
+ * @param rgba RGBA representation of a int32 color.
6
+ * @returns ARGB representation of a int32 color.
7
+ */
8
+ export function argbFromRgba(_ref) {
9
+ var r = _ref.r,
10
+ g = _ref.g,
11
+ b = _ref.b,
12
+ a = _ref.a;
13
+ var rValue = clampComponent(r);
14
+ var gValue = clampComponent(g);
15
+ var bValue = clampComponent(b);
16
+ var aValue = clampComponent(a);
17
+ return aValue << 24 | rValue << 16 | gValue << 8 | bValue;
18
+ }
@@ -0,0 +1,24 @@
1
+ import { argbFromRgb } from './argb-from-rgb';
2
+ import { delinearized } from './delinearized';
3
+
4
+ /**
5
+ * Color science utilities.
6
+ *
7
+ * Utility methods for color science constants and color space
8
+ * conversions that aren't HCT or CAM16.
9
+ */
10
+ var XYZ_TO_SRGB = [[3.2413774792388685, -1.5376652402851851, -0.49885366846268053], [-0.9691452513005321, 1.8758853451067872, 0.04156585616912061], [0.05562093689691305, -0.20395524564742123, 1.0571799111220335]];
11
+
12
+ /**
13
+ * Converts a color from ARGB to XYZ.
14
+ */
15
+ export function argbFromXyz(x, y, z) {
16
+ var matrix = XYZ_TO_SRGB;
17
+ var linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z;
18
+ var linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z;
19
+ var linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;
20
+ var r = delinearized(linearR);
21
+ var g = delinearized(linearG);
22
+ var b = delinearized(linearB);
23
+ return argbFromRgb(r, g, b);
24
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns the blue component of a color in ARGB format.
3
+ */
4
+ export function blueFromArgb(argb) {
5
+ return argb & 255;
6
+ }
@@ -0,0 +1,9 @@
1
+ export function clampComponent(value) {
2
+ if (value < 0) {
3
+ return 0;
4
+ }
5
+ if (value > 255) {
6
+ return 255;
7
+ }
8
+ return value;
9
+ }