@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,6 +1,6 @@
1
1
  /**
2
2
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
- * @codegen <<SignedSource::3ab6d06ceee07a33f01831ba39d1781a>>
3
+ * @codegen <<SignedSource::53794f446833e9543b9fc09809fc6844>>
4
4
  * @codegenCommand yarn build tokens
5
5
  */
6
6
 
@@ -2044,6 +2044,23 @@ const tokens = [{
2044
2044
  },
2045
2045
  "name": "color.palette.Neutral1100",
2046
2046
  "path": ["color", "palette", "Neutral1100"]
2047
+ }, {
2048
+ "value": "#000000",
2049
+ "attributes": {
2050
+ "group": "palette",
2051
+ "category": "light mode neutral"
2052
+ },
2053
+ "filePath": "schema/palettes/palette.tsx",
2054
+ "isSource": true,
2055
+ "original": {
2056
+ "value": "#000000",
2057
+ "attributes": {
2058
+ "group": "palette",
2059
+ "category": "light mode neutral"
2060
+ }
2061
+ },
2062
+ "name": "color.palette.Neutral1200",
2063
+ "path": ["color", "palette", "Neutral1200"]
2047
2064
  }, {
2048
2065
  "value": "#17171708",
2049
2066
  "attributes": {
@@ -2384,6 +2401,23 @@ const tokens = [{
2384
2401
  },
2385
2402
  "name": "color.palette.DarkNeutral1100",
2386
2403
  "path": ["color", "palette", "DarkNeutral1100"]
2404
+ }, {
2405
+ "value": "#FFFFFF",
2406
+ "attributes": {
2407
+ "group": "palette",
2408
+ "category": "dark mode neutral"
2409
+ },
2410
+ "filePath": "schema/palettes/palette.tsx",
2411
+ "isSource": true,
2412
+ "original": {
2413
+ "value": "#FFFFFF",
2414
+ "attributes": {
2415
+ "group": "palette",
2416
+ "category": "dark mode neutral"
2417
+ }
2418
+ },
2419
+ "name": "color.palette.DarkNeutral1200",
2420
+ "path": ["color", "palette", "DarkNeutral1200"]
2387
2421
  }, {
2388
2422
  "value": "#01040475",
2389
2423
  "attributes": {
@@ -1 +1,2 @@
1
- export { themeStringToObject, themeObjectToString } from '../theme-state-transformer';
1
+ export { themeStringToObject } from '../theme-string-to-object';
2
+ export { themeObjectToString } from '../theme-object-to-string';
@@ -1,8 +1,9 @@
1
1
  import { COLOR_MODE_ATTRIBUTE, CUSTOM_THEME_ATTRIBUTE } from './constants';
2
2
  import { themeStateDefaults } from './theme-config';
3
- import { reduceTokenMap } from './utils/custom-theme-loading-utils';
4
- import { generateColors, generateTokenMapWithContrastCheck } from './utils/generate-custom-color-ramp';
3
+ import { generateColors } from './utils/generate-colors';
4
+ import { generateTokenMapWithContrastCheck } from './utils/generate-token-map-with-contrast-check';
5
5
  import { hash } from './utils/hash';
6
+ import { reduceTokenMap } from './utils/reduce-token-map';
6
7
 
7
8
  /**
8
9
  * Takes a color mode and custom branding options, and returns an array of objects for use in applying custom styles to the document head.
@@ -1,6 +1,6 @@
1
1
  import { COLOR_MODE_ATTRIBUTE, THEME_DATA_ATTRIBUTE } from './constants';
2
2
  import { themeColorModes } from './theme-color-modes';
3
- import { themeStringToObject } from './theme-state-transformer';
3
+ import { themeStringToObject } from './theme-string-to-object';
4
4
  const isThemeColorMode = colorMode => {
5
5
  return themeColorModes.find(mode => mode === colorMode) !== undefined;
6
6
  };
@@ -1,7 +1,7 @@
1
1
  import { fg } from '@atlaskit/platform-feature-flags';
2
2
  import { COLOR_MODE_ATTRIBUTE, CONTRAST_MODE_ATTRIBUTE, CUSTOM_THEME_ATTRIBUTE, THEME_DATA_ATTRIBUTE } from './constants';
3
3
  import { themeStateDefaults } from './theme-config';
4
- import { themeObjectToString } from './theme-state-transformer';
4
+ import { themeObjectToString } from './theme-object-to-string';
5
5
  import { hash } from './utils/hash';
6
6
  import { isValidBrandHex } from './utils/is-valid-brand-hex';
7
7
  const defaultColorMode = 'light';
@@ -9,6 +9,7 @@ export { default as getSSRAutoScript } from './get-ssr-auto-script';
9
9
  export { default as useThemeObserver } from './use-theme-observer';
10
10
  export { default as ThemeMutationObserver } from './theme-mutation-observer';
11
11
  export { default as getGlobalTheme } from './get-global-theme';
12
- export { themeStringToObject, themeObjectToString } from './theme-state-transformer';
12
+ export { themeStringToObject } from './theme-string-to-object';
13
+ export { themeObjectToString } from './theme-object-to-string';
13
14
  export { default as themeImportMap } from './artifacts/theme-import-map';
14
15
  export { COLOR_MODE_ATTRIBUTE, CURRENT_SURFACE_CSS_VAR, SUBTREE_THEME_ATTRIBUTE, THEME_DATA_ATTRIBUTE } from './constants';
@@ -0,0 +1,3 @@
1
+ export const isColorMode = modeId => {
2
+ return ['light', 'dark', 'auto'].includes(modeId);
3
+ };
@@ -0,0 +1,4 @@
1
+ import { themeIds } from './theme-ids';
2
+ export const isThemeIds = themeId => {
3
+ return themeIds.find(id => id === themeId) !== undefined;
4
+ };
@@ -0,0 +1,4 @@
1
+ const themeKinds = ['light', 'dark', 'spacing', 'typography', 'shape', 'motion'];
2
+ export const isThemeKind = themeKind => {
3
+ return themeKinds.find(kind => kind === themeKind) !== undefined;
4
+ };
@@ -1,9 +1,9 @@
1
- import { fg } from '@atlaskit/platform-feature-flags';
2
- import { themeIds } from './theme-ids';
3
1
  /**
4
2
  * This file contains the source of truth for themes and all associated meta data.
5
3
  */
6
4
 
5
+ import { themeIds } from './theme-ids';
6
+
7
7
  /**
8
8
  * Themes: The internal identifier of a theme.
9
9
  * These ids are what the actual theme files/folders are called.
@@ -146,48 +146,6 @@ const themeConfig = {
146
146
  }
147
147
  };
148
148
 
149
- /**
150
- * ThemeOptionsSchema: additional configuration options used to customize Atlassian's themes
151
- */
152
-
153
- /**
154
- * ThemeState: the standard representation of an app's current theme and preferences
155
- */
156
-
157
- /**
158
- * Can't evaluate typography feature flags at the module level,
159
- * it will always resolve to false when server side rendered or when flags are loaded async.
160
- */
161
-
162
- function getShapeDefault() {
163
- if (fg('platform-dst-shape-theme-default')) {
164
- return 'shape';
165
- }
166
- return undefined;
167
- }
168
- function getMotionDefault() {
169
- if (fg('platform-dst-motion-theme-default')) {
170
- return 'motion';
171
- }
172
- return undefined;
173
- }
174
-
175
- /**
176
- * themeStateDefaults: the default values for ThemeState used by theming utilities
177
- */
178
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
179
- export const themeStateDefaults = {
180
- colorMode: 'auto',
181
- contrastMode: 'auto',
182
- dark: 'dark',
183
- light: 'light',
184
- shape: getShapeDefault,
185
- spacing: 'spacing',
186
- typography: 'typography',
187
- motion: getMotionDefault,
188
- UNSAFE_themeOptions: undefined
189
- };
190
-
191
149
  /**
192
150
  * Represents theme state once mounted to the page
193
151
  * (the page doesn't have an "auto" color mode, it's either light or dark)
@@ -196,4 +154,5 @@ export const themeStateDefaults = {
196
154
  // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
197
155
  export default themeConfig;
198
156
  export { themeColorModes } from './theme-color-modes';
199
- export { themeIds } from './theme-ids';
157
+ export { themeIds } from './theme-ids';
158
+ export { themeStateDefaults } from './theme-state-defaults';
@@ -0,0 +1,28 @@
1
+ import { isColorMode } from './is-color-mode';
2
+ import { isThemeIds } from './is-theme-ids';
3
+ import { isThemeKind } from './is-theme-kind';
4
+ const customThemeOptions = 'UNSAFE_themeOptions';
5
+
6
+ /**
7
+ * Converts a theme object to a string formatted for the `data-theme` HTML attribute.
8
+ *
9
+ * @param {object} themes The themes that should be applied.
10
+ *
11
+ * @example
12
+ * ```
13
+ * themeObjectToString({ dark: 'dark', light: 'light', spacing: 'spacing' });
14
+ * // returns 'dark:dark light:light spacing:spacing'
15
+ * ```
16
+ */
17
+ export const themeObjectToString = themeState => Object.entries(themeState).reduce((themeString, [kind, id]) => {
18
+ if (
19
+ // colorMode theme state
20
+ kind === 'colorMode' && typeof id === 'string' && isColorMode(id) ||
21
+ // custom theme state
22
+ kind === customThemeOptions && typeof id === 'object' ||
23
+ // other theme states
24
+ isThemeKind(kind) && typeof id === 'string' && isThemeIds(id)) {
25
+ return themeString + `${themeString ? ' ' : ''}` + `${kind}:${typeof id === 'object' ? JSON.stringify(id) : id}`;
26
+ }
27
+ return themeString;
28
+ }, '');
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 const 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,38 @@
1
+ import { isColorMode } from './is-color-mode';
2
+ import { isThemeIds } from './is-theme-ids';
3
+ import { isThemeKind } from './is-theme-kind';
4
+ const customThemeOptions = 'UNSAFE_themeOptions';
5
+
6
+ /**
7
+ * Converts a string that is formatted for the `data-theme` HTML attribute
8
+ * to an object that can be passed to `setGlobalTheme`.
9
+ *
10
+ * @param {string} themes The themes that should be applied.
11
+ *
12
+ * @example
13
+ * ```
14
+ * themeStringToObject('dark:dark light:light spacing:spacing');
15
+ * // returns { dark: 'dark', light: 'light', spacing: 'spacing' }
16
+ * ```
17
+ */
18
+ export const themeStringToObject = themeState => {
19
+ return themeState.split(' ')
20
+ // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
21
+ .map(theme => theme.split(/:(.*)/s)).reduce((themeObject, [kind, id]) => {
22
+ if (kind === 'colorMode' && isColorMode(id)) {
23
+ themeObject[kind] = id;
24
+ }
25
+ if (isThemeKind(kind) && isThemeIds(id)) {
26
+ // @ts-expect-error FIXME - this is a valid ts error
27
+ themeObject[kind] = id;
28
+ }
29
+ if (kind === customThemeOptions) {
30
+ try {
31
+ themeObject[customThemeOptions] = JSON.parse(id);
32
+ } catch {
33
+ new Error('Invalid custom theme string');
34
+ }
35
+ }
36
+ return themeObject;
37
+ }, {});
38
+ };
@@ -0,0 +1,39 @@
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
+ const getColorFromTokenRaw = (tokenName, mode) => {
6
+ return mode === 'light' ? tokenValuesLight[tokenName] : tokenValuesDark[tokenName];
7
+ };
8
+ export const additionalContrastChecker = ({
9
+ customThemeTokenMap,
10
+ mode,
11
+ themeRamp
12
+ }) => {
13
+ const updatedCustomThemeTokenMap = {};
14
+ const brandTokens = Object.keys(customThemeTokenMap);
15
+ additionalChecks.forEach(pairing => {
16
+ const {
17
+ backgroundLight,
18
+ backgroundDark,
19
+ foreground,
20
+ desiredContrast,
21
+ updatedTokens
22
+ } = pairing;
23
+ const background = mode === 'light' ? backgroundLight : backgroundDark;
24
+ const foregroundTokenValue = customThemeTokenMap[foreground];
25
+ const backgroundTokenValue = customThemeTokenMap[background];
26
+ const foregroundColor = brandTokens.includes(foreground) ? typeof foregroundTokenValue === 'string' ? foregroundTokenValue : themeRamp[foregroundTokenValue] : getColorFromTokenRaw(foreground, mode);
27
+ const backgroundColor = brandTokens.includes(background) ? typeof backgroundTokenValue === 'string' ? backgroundTokenValue : themeRamp[backgroundTokenValue] : getColorFromTokenRaw(background, mode);
28
+ const contrast = getContrastRatio(foregroundColor, backgroundColor);
29
+ if (contrast <= desiredContrast) {
30
+ updatedTokens.forEach(token => {
31
+ const rampValue = customThemeTokenMap[token];
32
+ if (typeof rampValue === 'number') {
33
+ updatedCustomThemeTokenMap[token] = mode === 'light' ? rampValue + 1 : rampValue - 1;
34
+ }
35
+ });
36
+ }
37
+ });
38
+ return updatedCustomThemeTokenMap;
39
+ };
@@ -1,4 +1,3 @@
1
- import tokens from '../artifacts/token-names';
2
1
  import { CUSTOM_THEME_ATTRIBUTE, THEME_DATA_ATTRIBUTE } from '../constants';
3
2
  import { hash } from './hash';
4
3
  export function findMissingCustomStyleElements(UNSAFE_themeOptions, mode) {
@@ -15,13 +14,4 @@ export function findMissingCustomStyleElements(UNSAFE_themeOptions, mode) {
15
14
  }
16
15
  });
17
16
  return attrOfMissingCustomStyles;
18
- }
19
-
20
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
21
- export function reduceTokenMap(tokenMap, themeRamp) {
22
- return Object.entries(tokenMap).reduce((acc, [key, value]) => {
23
- const cssVar = tokens[key];
24
- return cssVar ? `${acc}\n ${cssVar}: ${typeof value === 'string' ? value : themeRamp[value]};` : acc;
25
- }, '');
26
- }
27
- 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 const additionalChecks = [{
5
2
  foreground: 'color.text.brand',
6
3
  backgroundLight: 'elevation.surface.sunken',
@@ -42,41 +39,4 @@ export const 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
- const 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 const additionalContrastChecker = ({
52
- customThemeTokenMap,
53
- mode,
54
- themeRamp
55
- }) => {
56
- const updatedCustomThemeTokenMap = {};
57
- const brandTokens = Object.keys(customThemeTokenMap);
58
- additionalChecks.forEach(pairing => {
59
- const {
60
- backgroundLight,
61
- backgroundDark,
62
- foreground,
63
- desiredContrast,
64
- updatedTokens
65
- } = pairing;
66
- const background = mode === 'light' ? backgroundLight : backgroundDark;
67
- const foregroundTokenValue = customThemeTokenMap[foreground];
68
- const backgroundTokenValue = customThemeTokenMap[background];
69
- const foregroundColor = brandTokens.includes(foreground) ? typeof foregroundTokenValue === 'string' ? foregroundTokenValue : themeRamp[foregroundTokenValue] : getColorFromTokenRaw(foreground, mode);
70
- const backgroundColor = brandTokens.includes(background) ? typeof backgroundTokenValue === 'string' ? backgroundTokenValue : themeRamp[backgroundTokenValue] : getColorFromTokenRaw(background, mode);
71
- const contrast = getContrastRatio(foregroundColor, backgroundColor);
72
- if (contrast <= desiredContrast) {
73
- updatedTokens.forEach(token => {
74
- const rampValue = customThemeTokenMap[token];
75
- if (typeof rampValue === 'number') {
76
- updatedCustomThemeTokenMap[token] = mode === 'light' ? rampValue + 1 : rampValue - 1;
77
- }
78
- });
79
- }
80
- });
81
- return updatedCustomThemeTokenMap;
82
- };
42
+ }];
@@ -0,0 +1,20 @@
1
+ import { rgbToLab } from './rgb-to-lab';
2
+ export function deltaE(rgbA, rgbB) {
3
+ let labA = rgbToLab(rgbA);
4
+ let labB = rgbToLab(rgbB);
5
+ let deltaL = labA[0] - labB[0];
6
+ let deltaA = labA[1] - labB[1];
7
+ let deltaB = labA[2] - labB[2];
8
+ let c1 = Math.sqrt(labA[1] * labA[1] + labA[2] * labA[2]);
9
+ let c2 = Math.sqrt(labB[1] * labB[1] + labB[2] * labB[2]);
10
+ let deltaC = c1 - c2;
11
+ let deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC;
12
+ deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);
13
+ let sc = 1.0 + 0.045 * c1;
14
+ let sh = 1.0 + 0.015 * c1;
15
+ let deltaLKlsl = deltaL / 1.0;
16
+ let deltaCkcsc = deltaC / sc;
17
+ let deltaHkhsh = deltaH / sh;
18
+ let i = deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + deltaHkhsh * deltaHkhsh;
19
+ return i < 0 ? 0 : Math.sqrt(i);
20
+ }
@@ -0,0 +1,39 @@
1
+ import { getClosestColorIndex } from './get-closest-color-index';
2
+ import { argbFromRgba, Contrast, Hct, rgbaFromArgb } from './hct-color-utils';
3
+ import { hexToHSL } from './hex-to-hsl';
4
+ import { hexToRgbA } from './hex-to-rgb-a';
5
+ import { HSLToRGB } from './hsl-to-rgb';
6
+ import { relativeLuminanceW3C } from './relative-luminance-w3-c';
7
+ import { rgbToHex } from './rgb-to-hex';
8
+ const lowLuminanceContrastRatios = [1.12, 1.33, 2.03, 2.73, 3.33, 4.27, 5.2, 6.62, 12.46, 14.25];
9
+ const highLuminanceContrastRatios = [1.08, 1.24, 1.55, 1.99, 2.45, 3.34, 4.64, 6.1, 10.19, 12.6];
10
+ export const generateColors = brandColor => {
11
+ // Determine luminance
12
+ const HSLBrandColorHue = hexToHSL(brandColor)[0];
13
+ const baseRgb = HSLToRGB(HSLBrandColorHue, 100, 60);
14
+ const isLowLuminance = relativeLuminanceW3C(baseRgb[0], baseRgb[1], baseRgb[2]) < 0.4;
15
+ // Choose right palette
16
+ const themeRatios = isLowLuminance ? lowLuminanceContrastRatios : highLuminanceContrastRatios;
17
+ const brandRgba = hexToRgbA(brandColor);
18
+ const hctColor = Hct.fromInt(argbFromRgba({
19
+ r: brandRgba[0],
20
+ g: brandRgba[1],
21
+ b: brandRgba[2],
22
+ a: brandRgba[3]
23
+ }));
24
+ const themeRamp = themeRatios.map(contrast => {
25
+ const rgbaColor = rgbaFromArgb(Hct.from(hctColor.hue, hctColor.chroma, Contrast.darker(100, contrast) + 0.25 // Material's utils provide an offset
26
+ ).toInt());
27
+ return rgbToHex(rgbaColor.r, rgbaColor.g, rgbaColor.b);
28
+ });
29
+ const closestColorIndex = getClosestColorIndex(themeRamp, brandColor);
30
+
31
+ // Replace closet color with brandColor
32
+ const updatedThemeRamp = [...themeRamp];
33
+ updatedThemeRamp[closestColorIndex] = brandColor;
34
+ return {
35
+ ramp: updatedThemeRamp,
36
+ // add the replaced color into the result
37
+ replacedColor: themeRamp[closestColorIndex]
38
+ };
39
+ };
@@ -0,0 +1,21 @@
1
+ import { additionalContrastChecker } from './additional-contrast-checker';
2
+ import { generateColors } from './generate-colors';
3
+ import { generateTokenMap } from './generate-token-map';
4
+ export const generateTokenMapWithContrastCheck = (brandColor, mode, themeRamp) => {
5
+ const colors = themeRamp || generateColors(brandColor).ramp;
6
+ const tokenMaps = generateTokenMap(brandColor, mode, colors);
7
+ const result = {};
8
+ Object.entries(tokenMaps).forEach(([mode, map]) => {
9
+ if (mode === 'light' || mode === 'dark') {
10
+ result[mode] = {
11
+ ...map,
12
+ ...additionalContrastChecker({
13
+ customThemeTokenMap: map,
14
+ mode,
15
+ themeRamp: colors
16
+ })
17
+ };
18
+ }
19
+ });
20
+ return result;
21
+ };
@@ -1,44 +1,7 @@
1
1
  import rawTokensDark from '../artifacts/atlassian-dark-token-value-for-contrast-check';
2
- import { getContrastRatio, hexToHSL, hexToRgbA } from './color-utils';
3
- import { additionalContrastChecker } from './custom-theme-token-contrast-check';
2
+ import { generateColors } from './generate-colors';
4
3
  import { getClosestColorIndex } from './get-closest-color-index';
5
- import { argbFromRgba, Contrast, Hct, rgbaFromArgb } from './hct-color-utils';
6
- import { HSLToRGB } from './hsl-to-rgb';
7
- import { relativeLuminanceW3C } from './relative-luminance-w3-c';
8
- import { rgbToHex } from './rgb-to-hex';
9
- const lowLuminanceContrastRatios = [1.12, 1.33, 2.03, 2.73, 3.33, 4.27, 5.2, 6.62, 12.46, 14.25];
10
- const highLuminanceContrastRatios = [1.08, 1.24, 1.55, 1.99, 2.45, 3.34, 4.64, 6.1, 10.19, 12.6];
11
- export const generateColors = brandColor => {
12
- // Determine luminance
13
- const HSLBrandColorHue = hexToHSL(brandColor)[0];
14
- const baseRgb = HSLToRGB(HSLBrandColorHue, 100, 60);
15
- const isLowLuminance = relativeLuminanceW3C(baseRgb[0], baseRgb[1], baseRgb[2]) < 0.4;
16
- // Choose right palette
17
- const themeRatios = isLowLuminance ? lowLuminanceContrastRatios : highLuminanceContrastRatios;
18
- const brandRgba = hexToRgbA(brandColor);
19
- const hctColor = Hct.fromInt(argbFromRgba({
20
- r: brandRgba[0],
21
- g: brandRgba[1],
22
- b: brandRgba[2],
23
- a: brandRgba[3]
24
- }));
25
- const themeRamp = themeRatios.map(contrast => {
26
- const 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
- const closestColorIndex = getClosestColorIndex(themeRamp, brandColor);
31
-
32
- // Replace closet color with brandColor
33
- const updatedThemeRamp = [...themeRamp];
34
- updatedThemeRamp[closestColorIndex] = brandColor;
35
- return {
36
- ramp: updatedThemeRamp,
37
- // add the replaced color into the result
38
- replacedColor: themeRamp[closestColorIndex]
39
- };
40
- };
41
-
4
+ import { getContrastRatio } from './get-contrast-ratio';
42
5
  /**
43
6
  * Return the interaction tokens for a color, given its ramp position and the number of
44
7
  * needed interaction states. Use higher-indexed colors (i.e. darker colors) if possible;
@@ -58,8 +21,6 @@ function getInteractionStates(rampPosition, number, colors) {
58
21
  }
59
22
  return result;
60
23
  }
61
-
62
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
63
24
  export const generateTokenMap = (brandColor, mode, themeRamp) => {
64
25
  const {
65
26
  ramp,
@@ -191,25 +152,4 @@ export const generateTokenMap = (brandColor, mode, themeRamp) => {
191
152
  light: customThemeTokenMapLight,
192
153
  dark: customThemeTokenMapDark
193
154
  };
194
- };
195
-
196
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
197
- export const generateTokenMapWithContrastCheck = (brandColor, mode, themeRamp) => {
198
- const colors = themeRamp || generateColors(brandColor).ramp;
199
- const tokenMaps = generateTokenMap(brandColor, mode, colors);
200
- const result = {};
201
- Object.entries(tokenMaps).forEach(([mode, map]) => {
202
- if (mode === 'light' || mode === 'dark') {
203
- result[mode] = {
204
- ...map,
205
- ...additionalContrastChecker({
206
- customThemeTokenMap: map,
207
- mode,
208
- themeRamp: colors
209
- })
210
- };
211
- }
212
- });
213
- return result;
214
- };
215
- export { getClosestColorIndex } from './get-closest-color-index';
155
+ };
@@ -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 const getClosestColorIndex = (themeRamp, brandColor) => {
3
4
  // Iterate over themeRamp and find whichever color is closest to brandColor
4
5
  let 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
+ const foregroundRgb = hexToRgb(foreground);
9
+ const backgroundRgb = hexToRgb(background);
10
+ const foregroundLuminance = relativeLuminanceW3C(foregroundRgb[0], foregroundRgb[1], foregroundRgb[2]);
11
+ const 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
+ const r = delinearized(linrgb[0]);
9
+ const g = delinearized(linrgb[1]);
10
+ const 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
+ const y = yFromLstar(lstar);
14
+ const component = delinearized(y);
15
+ return argbFromRgb(component, component, component);
16
+ }
@@ -0,0 +1,19 @@
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({
9
+ r,
10
+ g,
11
+ b,
12
+ a
13
+ }) {
14
+ const rValue = clampComponent(r);
15
+ const gValue = clampComponent(g);
16
+ const bValue = clampComponent(b);
17
+ const aValue = clampComponent(a);
18
+ return aValue << 24 | rValue << 16 | gValue << 8 | bValue;
19
+ }