@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,70 +0,0 @@
1
- import { themeIds } from './theme-ids';
2
- const themeKinds = ['light', 'dark', 'spacing', 'typography', 'shape', 'motion'];
3
- const customThemeOptions = 'UNSAFE_themeOptions';
4
- const isThemeKind = themeKind => {
5
- return themeKinds.find(kind => kind === themeKind) !== undefined;
6
- };
7
- const isThemeIds = themeId => {
8
- return themeIds.find(id => id === themeId) !== undefined;
9
- };
10
- const isColorMode = modeId => {
11
- return ['light', 'dark', 'auto'].includes(modeId);
12
- };
13
- /**
14
- * Converts a string that is formatted for the `data-theme` HTML attribute
15
- * to an object that can be passed to `setGlobalTheme`.
16
- *
17
- * @param {string} themes The themes that should be applied.
18
- *
19
- * @example
20
- * ```
21
- * themeStringToObject('dark:dark light:light spacing:spacing');
22
- * // returns { dark: 'dark', light: 'light', spacing: 'spacing' }
23
- * ```
24
- */
25
- export const themeStringToObject = themeState => {
26
- return themeState.split(' ')
27
- // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
28
- .map(theme => theme.split(/:(.*)/s)).reduce((themeObject, [kind, id]) => {
29
- if (kind === 'colorMode' && isColorMode(id)) {
30
- themeObject[kind] = id;
31
- }
32
- if (isThemeKind(kind) && isThemeIds(id)) {
33
- // @ts-expect-error FIXME - this is a valid ts error
34
- themeObject[kind] = id;
35
- }
36
- if (kind === customThemeOptions) {
37
- try {
38
- themeObject[customThemeOptions] = JSON.parse(id);
39
- } catch {
40
- new Error('Invalid custom theme string');
41
- }
42
- }
43
- return themeObject;
44
- }, {});
45
- };
46
-
47
- /**
48
- * Converts a theme object to a string formatted for the `data-theme` HTML attribute.
49
- *
50
- * @param {object} themes The themes that should be applied.
51
- *
52
- * @example
53
- * ```
54
- * themeObjectToString({ dark: 'dark', light: 'light', spacing: 'spacing' });
55
- * // returns 'dark:dark light:light spacing:spacing'
56
- * ```
57
- */
58
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
59
- export const themeObjectToString = themeState => Object.entries(themeState).reduce((themeString, [kind, id]) => {
60
- if (
61
- // colorMode theme state
62
- kind === 'colorMode' && typeof id === 'string' && isColorMode(id) ||
63
- // custom theme state
64
- kind === customThemeOptions && typeof id === 'object' ||
65
- // other theme states
66
- isThemeKind(kind) && typeof id === 'string' && isThemeIds(id)) {
67
- return themeString + `${themeString ? ' ' : ''}` + `${kind}:${typeof id === 'object' ? JSON.stringify(id) : id}`;
68
- }
69
- return themeString;
70
- }, '');
@@ -1,136 +0,0 @@
1
- import { getAlpha } from './get-alpha';
2
- import { relativeLuminanceW3C } from './relative-luminance-w3-c';
3
- // valid hex color with 4, 6 or 8 digits
4
- const isValidHex = hex => /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);
5
- export function hexToRgbA(hex) {
6
- if (!isValidHex(hex)) {
7
- throw new Error('Invalid HEX');
8
- }
9
- let c;
10
- c = hex.substring(1).split('');
11
- if (c.length === 3) {
12
- c = [c[0], c[0], c[1], c[1], c[2], c[2]];
13
- }
14
- c = '0x' + c.join('');
15
- return [c >> 16 & 255, c >> 8 & 255, c & 255, getAlpha(hex)];
16
- }
17
-
18
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
19
- export function hexToRgb(hex) {
20
- if (!isValidHex(hex)) {
21
- throw new Error('Invalid HEX');
22
- }
23
- let c;
24
- c = hex.substring(1).split('');
25
- if (c.length === 3) {
26
- c = [c[0], c[0], c[1], c[1], c[2], c[2]];
27
- }
28
- c = '0x' + c.join('');
29
- return [c >> 16 & 255, c >> 8 & 255, c & 255];
30
- }
31
-
32
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
33
- export function hexToHSL(hex) {
34
- if (!isValidHex(hex)) {
35
- throw new Error('Invalid HEX');
36
- }
37
- let r = 0,
38
- g = 0,
39
- b = 0;
40
- if (hex.length === 4) {
41
- r = '0x' + hex[1] + hex[1];
42
- g = '0x' + hex[2] + hex[2];
43
- b = '0x' + hex[3] + hex[3];
44
- } else if (hex.length === 7) {
45
- r = '0x' + hex[1] + hex[2];
46
- g = '0x' + hex[3] + hex[4];
47
- b = '0x' + hex[5] + hex[6];
48
- }
49
- // Then to HSL
50
- r /= 255;
51
- g /= 255;
52
- b /= 255;
53
- let cmin = Math.min(r, g, b),
54
- cmax = Math.max(r, g, b),
55
- delta = cmax - cmin,
56
- h = 0,
57
- s = 0,
58
- l = 0;
59
- if (delta === 0) {
60
- h = 0;
61
- } else if (cmax === r) {
62
- h = (g - b) / delta % 6;
63
- } else if (cmax === g) {
64
- h = (b - r) / delta + 2;
65
- } else {
66
- h = (r - g) / delta + 4;
67
- }
68
- h = Math.round(h * 60);
69
- if (h < 0) {
70
- h += 360;
71
- }
72
- l = (cmax + cmin) / 2;
73
- s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
74
- s = +(s * 100).toFixed(1);
75
- l = +(l * 100).toFixed(1);
76
- return [h, s, l];
77
- }
78
-
79
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
80
- export function getContrastRatio(foreground, background) {
81
- if (!isValidHex(foreground) || !isValidHex(background)) {
82
- throw new Error('Invalid HEX');
83
- }
84
- const foregroundRgb = hexToRgb(foreground);
85
- const backgroundRgb = hexToRgb(background);
86
- const foregroundLuminance = relativeLuminanceW3C(foregroundRgb[0], foregroundRgb[1], foregroundRgb[2]);
87
- const backgroundLuminance = relativeLuminanceW3C(backgroundRgb[0], backgroundRgb[1], backgroundRgb[2]);
88
- // calculate the color contrast ratio
89
- var brightest = Math.max(foregroundLuminance, backgroundLuminance);
90
- var darkest = Math.min(foregroundLuminance, backgroundLuminance);
91
- return (brightest + 0.05) / (darkest + 0.05);
92
- }
93
-
94
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
95
- export function deltaE(rgbA, rgbB) {
96
- let labA = rgbToLab(rgbA);
97
- let labB = rgbToLab(rgbB);
98
- let deltaL = labA[0] - labB[0];
99
- let deltaA = labA[1] - labB[1];
100
- let deltaB = labA[2] - labB[2];
101
- let c1 = Math.sqrt(labA[1] * labA[1] + labA[2] * labA[2]);
102
- let c2 = Math.sqrt(labB[1] * labB[1] + labB[2] * labB[2]);
103
- let deltaC = c1 - c2;
104
- let deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC;
105
- deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);
106
- let sc = 1.0 + 0.045 * c1;
107
- let sh = 1.0 + 0.015 * c1;
108
- let deltaLKlsl = deltaL / 1.0;
109
- let deltaCkcsc = deltaC / sc;
110
- let deltaHkhsh = deltaH / sh;
111
- let i = deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + deltaHkhsh * deltaHkhsh;
112
- return i < 0 ? 0 : Math.sqrt(i);
113
- }
114
- function rgbToLab(rgb) {
115
- let r = rgb[0] / 255,
116
- g = rgb[1] / 255,
117
- b = rgb[2] / 255,
118
- x,
119
- y,
120
- z;
121
- r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
122
- g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
123
- b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
124
- x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;
125
- y = (r * 0.2126 + g * 0.7152 + b * 0.0722) / 1.0;
126
- z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;
127
- x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
128
- y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
129
- z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
130
- return [116 * y - 16, 500 * (x - y), 200 * (y - z)];
131
- }
132
- export { isValidBrandHex } from './is-valid-brand-hex';
133
- export { rgbToHex } from './rgb-to-hex';
134
- export { getAlpha } from './get-alpha';
135
- export { HSLToRGB } from './hsl-to-rgb';
136
- export { relativeLuminanceW3C } from './relative-luminance-w3-c';
@@ -1,249 +0,0 @@
1
- /**
2
- * Below lines are copied from @material/material-color-utilities.
3
- * Do not modify it.
4
- */
5
-
6
- /**
7
- * @license
8
- * Copyright 2021 Google LLC
9
- *
10
- * Licensed under the Apache License, Version 2.0 (the "License");
11
- * you may not use this file except in compliance with the License.
12
- * You may obtain a copy of the License at
13
- *
14
- * http://www.apache.org/licenses/LICENSE-2.0
15
- *
16
- * Unless required by applicable law or agreed to in writing, software
17
- * distributed under the License is distributed on an "AS IS" BASIS,
18
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- * See the License for the specific language governing permissions and
20
- * limitations under the License.
21
- */
22
-
23
- // This file is automatically generated. Do not modify it.
24
-
25
- import { argbFromRgb } from './argb-from-rgb';
26
- import { delinearized } from './delinearized';
27
- import { linearized } from './linearized';
28
- import * as mathUtils from './math-utils';
29
- /**
30
- * Color science utilities.
31
- *
32
- * Utility methods for color science constants and color space
33
- * conversions that aren't HCT or CAM16.
34
- */
35
-
36
- const SRGB_TO_XYZ = [[0.41233895, 0.35762064, 0.18051042], [0.2126, 0.7152, 0.0722], [0.01932141, 0.11916382, 0.95034478]];
37
- const XYZ_TO_SRGB = [[3.2413774792388685, -1.5376652402851851, -0.49885366846268053], [-0.9691452513005321, 1.8758853451067872, 0.04156585616912061], [0.05562093689691305, -0.20395524564742123, 1.0571799111220335]];
38
- const WHITE_POINT_D65 = [95.047, 100.0, 108.883];
39
-
40
- /**
41
- * Converts a color from linear RGB components to ARGB format.
42
- */
43
- export function argbFromLinrgb(linrgb) {
44
- const r = delinearized(linrgb[0]);
45
- const g = delinearized(linrgb[1]);
46
- const b = delinearized(linrgb[2]);
47
- return argbFromRgb(r, g, b);
48
- }
49
-
50
- /**
51
- * Returns the alpha component of a color in ARGB format.
52
- */
53
- function alphaFromArgb(argb) {
54
- return argb >> 24 & 255;
55
- }
56
-
57
- /**
58
- * Returns the red component of a color in ARGB format.
59
- */
60
- function redFromArgb(argb) {
61
- return argb >> 16 & 255;
62
- }
63
-
64
- /**
65
- * Returns the green component of a color in ARGB format.
66
- */
67
- function greenFromArgb(argb) {
68
- return argb >> 8 & 255;
69
- }
70
-
71
- /**
72
- * Returns the blue component of a color in ARGB format.
73
- */
74
- function blueFromArgb(argb) {
75
- return argb & 255;
76
- }
77
-
78
- /**
79
- * Converts a color from ARGB to XYZ.
80
- */
81
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
82
- export function argbFromXyz(x, y, z) {
83
- const matrix = XYZ_TO_SRGB;
84
- const linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z;
85
- const linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z;
86
- const linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;
87
- const r = delinearized(linearR);
88
- const g = delinearized(linearG);
89
- const b = delinearized(linearB);
90
- return argbFromRgb(r, g, b);
91
- }
92
-
93
- /**
94
- * Converts a color from XYZ to ARGB.
95
- */
96
- function xyzFromArgb(argb) {
97
- const r = linearized(redFromArgb(argb));
98
- const g = linearized(greenFromArgb(argb));
99
- const b = linearized(blueFromArgb(argb));
100
- return mathUtils.matrixMultiply([r, g, b], SRGB_TO_XYZ);
101
- }
102
-
103
- /**
104
- * Converts an L* value to an ARGB representation.
105
- *
106
- * @param lstar L* in L*a*b*
107
- * @return ARGB representation of grayscale color with lightness
108
- * matching L*
109
- */
110
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
111
- export function argbFromLstar(lstar) {
112
- const y = yFromLstar(lstar);
113
- const component = delinearized(y);
114
- return argbFromRgb(component, component, component);
115
- }
116
-
117
- /**
118
- * Computes the L* value of a color in ARGB representation.
119
- *
120
- * @param argb ARGB representation of a color
121
- * @return L*, from L*a*b*, coordinate of the color
122
- */
123
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
124
- export function lstarFromArgb(argb) {
125
- const y = xyzFromArgb(argb)[1];
126
- return 116.0 * labF(y / 100.0) - 16.0;
127
- }
128
-
129
- /**
130
- * Converts an L* value to a Y value.
131
- *
132
- * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.
133
- *
134
- * L* measures perceptual luminance, a linear scale. Y in XYZ
135
- * measures relative luminance, a logarithmic scale.
136
- *
137
- * @param lstar L* in L*a*b*
138
- * @return Y in XYZ
139
- */
140
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
141
- export function yFromLstar(lstar) {
142
- return 100.0 * labInvf((lstar + 16.0) / 116.0);
143
- }
144
-
145
- /**
146
- * Converts a Y value to an L* value.
147
- *
148
- * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.
149
- *
150
- * L* measures perceptual luminance, a linear scale. Y in XYZ
151
- * measures relative luminance, a logarithmic scale.
152
- *
153
- * @param y Y in XYZ
154
- * @return L* in L*a*b*
155
- */
156
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
157
- export function lstarFromY(y) {
158
- return labF(y / 100.0) * 116.0 - 16.0;
159
- }
160
-
161
- /**
162
- * Returns the standard white point; white on a sunny day.
163
- *
164
- * @return The white point
165
- */
166
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
167
- export function whitePointD65() {
168
- return WHITE_POINT_D65;
169
- }
170
-
171
- /**
172
- * RGBA component
173
- *
174
- * @param r Red value should be between 0-255
175
- * @param g Green value should be between 0-255
176
- * @param b Blue value should be between 0-255
177
- * @param a Alpha value should be between 0-255
178
- */
179
-
180
- /**
181
- * Return RGBA from a given int32 color
182
- *
183
- * @param argb ARGB representation of a int32 color.
184
- * @return RGBA representation of a int32 color.
185
- */
186
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
187
- export function rgbaFromArgb(argb) {
188
- const r = redFromArgb(argb);
189
- const g = greenFromArgb(argb);
190
- const b = blueFromArgb(argb);
191
- const a = alphaFromArgb(argb);
192
- return {
193
- r,
194
- g,
195
- b,
196
- a
197
- };
198
- }
199
-
200
- /**
201
- * Return int32 color from a given RGBA component
202
- *
203
- * @param rgba RGBA representation of a int32 color.
204
- * @returns ARGB representation of a int32 color.
205
- */
206
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
207
- export function argbFromRgba({
208
- r,
209
- g,
210
- b,
211
- a
212
- }) {
213
- const rValue = clampComponent(r);
214
- const gValue = clampComponent(g);
215
- const bValue = clampComponent(b);
216
- const aValue = clampComponent(a);
217
- return aValue << 24 | rValue << 16 | gValue << 8 | bValue;
218
- }
219
- function clampComponent(value) {
220
- if (value < 0) {
221
- return 0;
222
- }
223
- if (value > 255) {
224
- return 255;
225
- }
226
- return value;
227
- }
228
- function labF(t) {
229
- const e = 216.0 / 24389.0;
230
- const kappa = 24389.0 / 27.0;
231
- if (t > e) {
232
- return Math.pow(t, 1.0 / 3.0);
233
- } else {
234
- return (kappa * t + 16) / 116;
235
- }
236
- }
237
- function labInvf(ft) {
238
- const e = 216.0 / 24389.0;
239
- const kappa = 24389.0 / 27.0;
240
- const ft3 = ft * ft * ft;
241
- if (ft3 > e) {
242
- return ft3;
243
- } else {
244
- return (116 * ft - 16) / kappa;
245
- }
246
- }
247
- export { argbFromRgb } from './argb-from-rgb';
248
- export { linearized } from './linearized';
249
- export { delinearized } from './delinearized';
@@ -1,86 +0,0 @@
1
- import _typeof from "@babel/runtime/helpers/typeof";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import { themeIds } from './theme-ids';
4
- var themeKinds = ['light', 'dark', 'spacing', 'typography', 'shape', 'motion'];
5
- var customThemeOptions = 'UNSAFE_themeOptions';
6
- var isThemeKind = function isThemeKind(themeKind) {
7
- return themeKinds.find(function (kind) {
8
- return kind === themeKind;
9
- }) !== undefined;
10
- };
11
- var isThemeIds = function isThemeIds(themeId) {
12
- return themeIds.find(function (id) {
13
- return id === themeId;
14
- }) !== undefined;
15
- };
16
- var isColorMode = function isColorMode(modeId) {
17
- return ['light', 'dark', 'auto'].includes(modeId);
18
- };
19
- /**
20
- * Converts a string that is formatted for the `data-theme` HTML attribute
21
- * to an object that can be passed to `setGlobalTheme`.
22
- *
23
- * @param {string} themes The themes that should be applied.
24
- *
25
- * @example
26
- * ```
27
- * themeStringToObject('dark:dark light:light spacing:spacing');
28
- * // returns { dark: 'dark', light: 'light', spacing: 'spacing' }
29
- * ```
30
- */
31
- export var themeStringToObject = function themeStringToObject(themeState) {
32
- return themeState.split(' ')
33
- // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
34
- .map(function (theme) {
35
- return theme.split(/:([^]*)/);
36
- }).reduce(function (themeObject, _ref) {
37
- var _ref2 = _slicedToArray(_ref, 2),
38
- kind = _ref2[0],
39
- id = _ref2[1];
40
- if (kind === 'colorMode' && isColorMode(id)) {
41
- themeObject[kind] = id;
42
- }
43
- if (isThemeKind(kind) && isThemeIds(id)) {
44
- // @ts-expect-error FIXME - this is a valid ts error
45
- themeObject[kind] = id;
46
- }
47
- if (kind === customThemeOptions) {
48
- try {
49
- themeObject[customThemeOptions] = JSON.parse(id);
50
- } catch (_unused) {
51
- new Error('Invalid custom theme string');
52
- }
53
- }
54
- return themeObject;
55
- }, {});
56
- };
57
-
58
- /**
59
- * Converts a theme object to a string formatted for the `data-theme` HTML attribute.
60
- *
61
- * @param {object} themes The themes that should be applied.
62
- *
63
- * @example
64
- * ```
65
- * themeObjectToString({ dark: 'dark', light: 'light', spacing: 'spacing' });
66
- * // returns 'dark:dark light:light spacing:spacing'
67
- * ```
68
- */
69
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
70
- export var themeObjectToString = function themeObjectToString(themeState) {
71
- return Object.entries(themeState).reduce(function (themeString, _ref3) {
72
- var _ref4 = _slicedToArray(_ref3, 2),
73
- kind = _ref4[0],
74
- id = _ref4[1];
75
- if (
76
- // colorMode theme state
77
- kind === 'colorMode' && typeof id === 'string' && isColorMode(id) ||
78
- // custom theme state
79
- kind === customThemeOptions && _typeof(id) === 'object' ||
80
- // other theme states
81
- isThemeKind(kind) && typeof id === 'string' && isThemeIds(id)) {
82
- return themeString + "".concat(themeString ? ' ' : '') + "".concat(kind, ":").concat(_typeof(id) === 'object' ? JSON.stringify(id) : id);
83
- }
84
- return themeString;
85
- }, '');
86
- };
@@ -1,138 +0,0 @@
1
- import { getAlpha } from './get-alpha';
2
- import { relativeLuminanceW3C } from './relative-luminance-w3-c';
3
- // valid hex color with 4, 6 or 8 digits
4
- var isValidHex = function isValidHex(hex) {
5
- return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);
6
- };
7
- export function hexToRgbA(hex) {
8
- if (!isValidHex(hex)) {
9
- throw new Error('Invalid HEX');
10
- }
11
- var c;
12
- c = hex.substring(1).split('');
13
- if (c.length === 3) {
14
- c = [c[0], c[0], c[1], c[1], c[2], c[2]];
15
- }
16
- c = '0x' + c.join('');
17
- return [c >> 16 & 255, c >> 8 & 255, c & 255, getAlpha(hex)];
18
- }
19
-
20
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
21
- export function hexToRgb(hex) {
22
- if (!isValidHex(hex)) {
23
- throw new Error('Invalid HEX');
24
- }
25
- var c;
26
- c = hex.substring(1).split('');
27
- if (c.length === 3) {
28
- c = [c[0], c[0], c[1], c[1], c[2], c[2]];
29
- }
30
- c = '0x' + c.join('');
31
- return [c >> 16 & 255, c >> 8 & 255, c & 255];
32
- }
33
-
34
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
35
- export function hexToHSL(hex) {
36
- if (!isValidHex(hex)) {
37
- throw new Error('Invalid HEX');
38
- }
39
- var r = 0,
40
- g = 0,
41
- b = 0;
42
- if (hex.length === 4) {
43
- r = '0x' + hex[1] + hex[1];
44
- g = '0x' + hex[2] + hex[2];
45
- b = '0x' + hex[3] + hex[3];
46
- } else if (hex.length === 7) {
47
- r = '0x' + hex[1] + hex[2];
48
- g = '0x' + hex[3] + hex[4];
49
- b = '0x' + hex[5] + hex[6];
50
- }
51
- // Then to HSL
52
- r /= 255;
53
- g /= 255;
54
- b /= 255;
55
- var cmin = Math.min(r, g, b),
56
- cmax = Math.max(r, g, b),
57
- delta = cmax - cmin,
58
- h = 0,
59
- s = 0,
60
- l = 0;
61
- if (delta === 0) {
62
- h = 0;
63
- } else if (cmax === r) {
64
- h = (g - b) / delta % 6;
65
- } else if (cmax === g) {
66
- h = (b - r) / delta + 2;
67
- } else {
68
- h = (r - g) / delta + 4;
69
- }
70
- h = Math.round(h * 60);
71
- if (h < 0) {
72
- h += 360;
73
- }
74
- l = (cmax + cmin) / 2;
75
- s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
76
- s = +(s * 100).toFixed(1);
77
- l = +(l * 100).toFixed(1);
78
- return [h, s, l];
79
- }
80
-
81
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
82
- export function getContrastRatio(foreground, background) {
83
- if (!isValidHex(foreground) || !isValidHex(background)) {
84
- throw new Error('Invalid HEX');
85
- }
86
- var foregroundRgb = hexToRgb(foreground);
87
- var backgroundRgb = hexToRgb(background);
88
- var foregroundLuminance = relativeLuminanceW3C(foregroundRgb[0], foregroundRgb[1], foregroundRgb[2]);
89
- var backgroundLuminance = relativeLuminanceW3C(backgroundRgb[0], backgroundRgb[1], backgroundRgb[2]);
90
- // calculate the color contrast ratio
91
- var brightest = Math.max(foregroundLuminance, backgroundLuminance);
92
- var darkest = Math.min(foregroundLuminance, backgroundLuminance);
93
- return (brightest + 0.05) / (darkest + 0.05);
94
- }
95
-
96
- // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
97
- export function deltaE(rgbA, rgbB) {
98
- var labA = rgbToLab(rgbA);
99
- var labB = rgbToLab(rgbB);
100
- var deltaL = labA[0] - labB[0];
101
- var deltaA = labA[1] - labB[1];
102
- var deltaB = labA[2] - labB[2];
103
- var c1 = Math.sqrt(labA[1] * labA[1] + labA[2] * labA[2]);
104
- var c2 = Math.sqrt(labB[1] * labB[1] + labB[2] * labB[2]);
105
- var deltaC = c1 - c2;
106
- var deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC;
107
- deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);
108
- var sc = 1.0 + 0.045 * c1;
109
- var sh = 1.0 + 0.015 * c1;
110
- var deltaLKlsl = deltaL / 1.0;
111
- var deltaCkcsc = deltaC / sc;
112
- var deltaHkhsh = deltaH / sh;
113
- var i = deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + deltaHkhsh * deltaHkhsh;
114
- return i < 0 ? 0 : Math.sqrt(i);
115
- }
116
- function rgbToLab(rgb) {
117
- var r = rgb[0] / 255,
118
- g = rgb[1] / 255,
119
- b = rgb[2] / 255,
120
- x,
121
- y,
122
- z;
123
- r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
124
- g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
125
- b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
126
- x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;
127
- y = (r * 0.2126 + g * 0.7152 + b * 0.0722) / 1.0;
128
- z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;
129
- x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
130
- y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
131
- z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
132
- return [116 * y - 16, 500 * (x - y), 200 * (y - z)];
133
- }
134
- export { isValidBrandHex } from './is-valid-brand-hex';
135
- export { rgbToHex } from './rgb-to-hex';
136
- export { getAlpha } from './get-alpha';
137
- export { HSLToRGB } from './hsl-to-rgb';
138
- export { relativeLuminanceW3C } from './relative-luminance-w3-c';