color-elements 0.0.1 β†’ 0.0.3

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 (498) hide show
  1. package/README.md +49 -12
  2. package/_build/copy-config.js +11 -1
  3. package/_build/copy-config.json +2 -2
  4. package/_build/eleventy.js +27 -1
  5. package/_build/filters-extra.js +3 -0
  6. package/_includes/component.njk +69 -0
  7. package/_includes/partials/_nav-links.njk +19 -0
  8. package/_redirects +9 -2
  9. package/assets/css/style.css +78 -1
  10. package/assets/js/index.js +11 -10
  11. package/data/components.json +12 -0
  12. package/debug.html +447 -0
  13. package/eslint.config.js +316 -0
  14. package/index.js +10 -4
  15. package/logo.svg +22 -44
  16. package/package.json +12 -5
  17. package/src/channel-picker/README.md +103 -0
  18. package/src/channel-picker/channel-picker.css +31 -0
  19. package/src/channel-picker/channel-picker.js +168 -0
  20. package/src/channel-picker/channel-picker.webp +0 -0
  21. package/src/channel-slider/README.md +165 -0
  22. package/src/channel-slider/channel-slider.css +61 -0
  23. package/src/channel-slider/channel-slider.js +287 -0
  24. package/src/channel-slider/channel-slider.webp +0 -0
  25. package/src/color-chart/README.md +129 -0
  26. package/src/color-chart/color-chart-global.css +97 -0
  27. package/src/color-chart/color-chart.css +112 -0
  28. package/src/color-chart/color-chart.js +441 -0
  29. package/src/color-chart/color-chart.webp +0 -0
  30. package/src/color-inline/README.md +72 -0
  31. package/{color-swatch/color-swatch.css β†’ src/color-inline/color-inline.css} +11 -4
  32. package/src/color-inline/color-inline.js +85 -0
  33. package/src/color-inline/color-inline.webp +0 -0
  34. package/src/color-inline/style.css +14 -0
  35. package/src/color-picker/README.md +150 -0
  36. package/src/color-picker/color-picker.css +35 -0
  37. package/src/color-picker/color-picker.js +251 -0
  38. package/src/color-picker/color-picker.webp +0 -0
  39. package/src/color-scale/README.md +75 -0
  40. package/src/color-scale/color-scale.css +40 -0
  41. package/src/color-scale/color-scale.js +164 -0
  42. package/src/color-scale/color-scale.webp +0 -0
  43. package/src/color-slider/README.md +220 -0
  44. package/src/color-slider/color-slider.css +174 -0
  45. package/src/color-slider/color-slider.js +320 -0
  46. package/src/color-slider/color-slider.webp +0 -0
  47. package/src/color-swatch/README.md +359 -0
  48. package/src/color-swatch/color-swatch.css +230 -0
  49. package/src/color-swatch/color-swatch.js +252 -0
  50. package/src/color-swatch/color-swatch.webp +0 -0
  51. package/src/common/color-element.js +86 -0
  52. package/src/common/dom.js +61 -0
  53. package/src/common/util.js +55 -0
  54. package/src/gamut-badge/README.md +145 -0
  55. package/src/gamut-badge/gamut-badge.css +78 -0
  56. package/src/gamut-badge/gamut-badge.js +121 -0
  57. package/src/gamut-badge/gamut-badge.webp +0 -0
  58. package/src/index.js.njk +7 -0
  59. package/src/space-picker/README.md +121 -0
  60. package/src/space-picker/space-picker.css +23 -0
  61. package/src/space-picker/space-picker.js +213 -0
  62. package/src/space-picker/space-picker.webp +0 -0
  63. package/src/src.json +3 -0
  64. package/_data/eleventyComputed.11tydata.js +0 -29
  65. package/color-gamut/README.md +0 -75
  66. package/color-gamut/color-gamut.js +0 -172
  67. package/color-gamut/style.css +0 -32
  68. package/color-slider/README.md +0 -84
  69. package/color-slider/color-slider.js +0 -79
  70. package/color-slider/style.css +0 -65
  71. package/color-swatch/color-swatch.js +0 -79
  72. package/color-swatch/index.njk +0 -40
  73. package/common/attributes.js +0 -68
  74. package/common/color.js +0 -10
  75. package/css-color/css-color.js +0 -256
  76. package/css-color/index.njk +0 -43
  77. package/css-color/style.css +0 -67
  78. package/lib/README.md +0 -4
  79. package/lib/colorjs.io/LICENSE +0 -21
  80. package/lib/colorjs.io/README.json +0 -3
  81. package/lib/colorjs.io/README.md +0 -257
  82. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  83. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  84. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  85. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  86. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  87. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  88. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  89. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  90. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  91. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  92. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  93. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  94. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  95. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  96. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  97. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  98. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  99. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  100. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  101. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  102. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  103. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  104. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  105. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  106. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  107. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  108. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  109. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  110. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  111. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  112. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  113. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  114. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  115. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  116. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  117. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  118. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  119. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  120. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  121. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  122. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  123. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  124. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  125. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  126. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  127. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  128. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  129. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  130. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  131. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  132. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  133. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  134. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  135. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  136. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  137. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  138. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  139. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  140. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  141. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  142. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  143. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  144. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  145. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  146. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  147. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  148. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  149. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  150. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  151. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  152. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  153. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  154. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  155. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  156. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  157. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  158. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  159. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  160. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  161. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  162. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  163. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  164. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  165. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  166. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  167. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  168. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  169. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  170. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  171. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  172. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  173. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  174. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  175. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  176. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  177. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  178. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  179. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  180. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  181. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  182. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  183. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  184. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  185. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  186. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  187. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  188. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  189. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  190. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  191. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  192. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  193. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  194. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  195. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  196. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  197. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  198. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  199. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  200. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  201. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  202. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  203. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  204. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  205. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  206. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  207. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  208. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  209. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  210. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  211. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  212. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  213. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  214. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  215. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  216. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  217. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  218. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  219. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  220. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  221. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  222. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  223. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  224. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  225. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  226. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  227. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  228. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  229. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  230. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  231. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  232. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  233. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  234. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  235. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  236. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  237. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  238. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  239. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  240. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  241. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  242. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  243. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  244. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  245. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  246. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  247. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  248. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  249. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  250. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  251. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  252. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  270. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  271. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  272. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  273. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  274. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  275. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  276. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  277. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  278. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  279. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  280. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  281. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  282. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  283. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  284. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  285. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  286. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  287. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  288. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  289. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  290. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  291. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  292. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  293. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  294. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  295. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  296. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  297. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  298. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  299. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  300. package/lib/colorjs.io/dist/color.cjs +0 -5759
  301. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  302. package/lib/colorjs.io/dist/color.global.js +0 -5760
  303. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  304. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  305. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  306. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  307. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  308. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  309. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  310. package/lib/colorjs.io/dist/color.js +0 -5755
  311. package/lib/colorjs.io/dist/color.js.map +0 -1
  312. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  313. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  314. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  315. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  316. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  317. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  318. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  319. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  320. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  321. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  322. package/lib/colorjs.io/dist/color.min.js +0 -2
  323. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  324. package/lib/colorjs.io/package.json +0 -113
  325. package/lib/colorjs.io/src/CATs.js +0 -131
  326. package/lib/colorjs.io/src/adapt.js +0 -62
  327. package/lib/colorjs.io/src/angles.js +0 -44
  328. package/lib/colorjs.io/src/chromaticity.js +0 -33
  329. package/lib/colorjs.io/src/clone.js +0 -7
  330. package/lib/colorjs.io/src/color.js +0 -201
  331. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  332. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  333. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  334. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  335. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  336. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  337. package/lib/colorjs.io/src/contrast/index.js +0 -6
  338. package/lib/colorjs.io/src/contrast.js +0 -28
  339. package/lib/colorjs.io/src/defaults.js +0 -12
  340. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  341. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  342. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  343. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  344. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  345. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  346. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  347. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  348. package/lib/colorjs.io/src/deltaE.js +0 -19
  349. package/lib/colorjs.io/src/display.js +0 -83
  350. package/lib/colorjs.io/src/distance.js +0 -21
  351. package/lib/colorjs.io/src/equals.js +0 -10
  352. package/lib/colorjs.io/src/get.js +0 -11
  353. package/lib/colorjs.io/src/getAll.js +0 -20
  354. package/lib/colorjs.io/src/getColor.js +0 -36
  355. package/lib/colorjs.io/src/hooks.js +0 -37
  356. package/lib/colorjs.io/src/inGamut.js +0 -25
  357. package/lib/colorjs.io/src/index-fn.js +0 -28
  358. package/lib/colorjs.io/src/index.js +0 -38
  359. package/lib/colorjs.io/src/interpolation.js +0 -222
  360. package/lib/colorjs.io/src/keywords.js +0 -158
  361. package/lib/colorjs.io/src/luminance.js +0 -27
  362. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  363. package/lib/colorjs.io/src/parse.js +0 -198
  364. package/lib/colorjs.io/src/rgbspace.js +0 -64
  365. package/lib/colorjs.io/src/serialize.js +0 -86
  366. package/lib/colorjs.io/src/set.js +0 -33
  367. package/lib/colorjs.io/src/setAll.js +0 -12
  368. package/lib/colorjs.io/src/space-accessors.js +0 -86
  369. package/lib/colorjs.io/src/space.js +0 -440
  370. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  371. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  372. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  373. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  374. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  375. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  376. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  377. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  378. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  379. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  380. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  381. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  382. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  383. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  384. package/lib/colorjs.io/src/spaces/index.js +0 -8
  385. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  386. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  387. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  388. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  389. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  390. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  391. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  392. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  393. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  394. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  395. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  396. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  397. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  398. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  399. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  400. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  401. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  402. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  403. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  404. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  405. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  406. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  407. package/lib/colorjs.io/src/to.js +0 -26
  408. package/lib/colorjs.io/src/toGamut.js +0 -310
  409. package/lib/colorjs.io/src/util.js +0 -254
  410. package/lib/colorjs.io/src/variations.js +0 -14
  411. package/lib/colorjs.io/types/index.d.cts +0 -4
  412. package/lib/colorjs.io/types/index.d.ts +0 -42
  413. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  414. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  415. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  416. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  417. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  418. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  419. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  420. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  421. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  422. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  423. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  424. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  425. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  426. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  427. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  428. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  429. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  430. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  431. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  432. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  433. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  434. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  435. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  436. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  437. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  438. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  439. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  440. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  441. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  442. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  443. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  444. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  445. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  446. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  447. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  448. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  449. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  450. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  451. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  452. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  453. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  454. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  455. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  456. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  457. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  458. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  459. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  460. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  471. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  472. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  473. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  477. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  478. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  479. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  480. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  481. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  482. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  483. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  484. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  485. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  486. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  487. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  488. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  489. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  490. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  491. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  492. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  493. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  494. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  495. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  496. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  497. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  498. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
@@ -0,0 +1,164 @@
1
+ import ColorElement from "../common/color-element.js";
2
+ import "../color-swatch/color-swatch.js";
3
+
4
+ const Self = class ColorScale extends ColorElement {
5
+ static tagName = "color-scale";
6
+ static url = import.meta.url;
7
+ static dependencies = new Set(["color-swatch"]);
8
+ static shadowStyle = true;
9
+ static shadowTemplate = `
10
+ <div id=swatches></div>
11
+ <slot></slot>`;
12
+
13
+ constructor () {
14
+ super();
15
+
16
+ this._el = {
17
+ slot: this.shadowRoot.querySelector("slot"),
18
+ swatches: this.shadowRoot.getElementById("swatches"),
19
+ };
20
+ }
21
+
22
+ connectedCallback () {
23
+ super.connectedCallback?.();
24
+ this._el.swatches.addEventListener("colorchange", this, {capture: true});
25
+ }
26
+
27
+ disconnectedCallback () {
28
+ this.#swatches = [];
29
+ this._el.swatches.removeEventListener("colorchange", this, {capture: true});
30
+ }
31
+
32
+ handleEvent (event) {
33
+ this.dispatchEvent(new event.constructor(event.type, {...event}));
34
+ }
35
+
36
+ propChangedCallback ({name, prop, detail: change}) {
37
+ if (name === "computedColors") {
38
+ // Re-render swatches
39
+ this.render();
40
+ }
41
+ }
42
+
43
+ #swatches = [];
44
+
45
+ render () {
46
+ let colors = this.computedColors;
47
+
48
+ if (!colors) {
49
+ return;
50
+ }
51
+
52
+ let colorCount = colors.length;
53
+
54
+ let i = 0;
55
+ let newSwatches = [];
56
+ for (let {name, color} of colors) {
57
+ let swatch = this.#swatches[i] = this._el.swatches.children[i];
58
+
59
+ if (!swatch) {
60
+ this.#swatches[i] = swatch = document.createElement("color-swatch");
61
+ swatch.setAttribute("size", "large");
62
+ swatch.setAttribute("part", "color-swatch");
63
+ swatch.setAttribute("exportparts", "swatch, info, gamut");
64
+ newSwatches.push(swatch);
65
+ }
66
+
67
+ swatch.color = color;
68
+ swatch.label = name;
69
+ if (this.info) {
70
+ swatch.info = this.info;
71
+ }
72
+ i++;
73
+ }
74
+
75
+ if (newSwatches.length > 0) {
76
+ this._el.swatches.append(...newSwatches);
77
+ }
78
+ else if (colorCount < this._el.swatches.children.length) {
79
+ // Remove but keep them around in this.#swatches
80
+ [...this._el.swatches.children].slice(colorCount).forEach(child => child.remove());
81
+ }
82
+ }
83
+
84
+ static props = {
85
+ colors: {
86
+ type: {
87
+ is: Object,
88
+ // Support overriding the Color object
89
+ get values () {
90
+ return ColorScale.Color;
91
+ },
92
+ defaultKey: (v, i) => v,
93
+ },
94
+ },
95
+ space: {
96
+ default: "oklch",
97
+ parse (value) {
98
+ let ColorSpace = ColorScale.Color.Space;
99
+ if (value instanceof ColorSpace || value === null || value === undefined) {
100
+ return value;
101
+ }
102
+
103
+ value += "";
104
+
105
+ return ColorSpace.get(value);
106
+ },
107
+ stringify (value) {
108
+ return value?.id;
109
+ },
110
+ },
111
+ steps: {
112
+ type: Number,
113
+ default: 0,
114
+ },
115
+ computedColors: {
116
+ get () {
117
+ if (!this.colors) {
118
+ return null;
119
+ }
120
+
121
+ let colors = Object.entries(this.colors).map(([name, color]) => ({name, color}));
122
+
123
+ if (this.steps > 0) {
124
+ // Insert intermediate steps
125
+ let tessellated = [];
126
+
127
+ for (let i = 1; i < colors.length; i++) {
128
+ let start = colors[i - 1];
129
+ let end = colors[i];
130
+ let steps = ColorScale.Color.steps(start.color, end.color, { space: this.space, steps: this.steps + 2 });
131
+
132
+ steps.shift();
133
+ steps.pop();
134
+ steps = steps.map(color => ({name: color + "", color}));
135
+
136
+ tessellated.push(start, ...steps);
137
+
138
+ if (i === colors.length - 1) {
139
+ // Only add the last color at the end
140
+ // In all other iterations, it’s the same as the start of the next pair
141
+ tessellated.push(end);
142
+ }
143
+ }
144
+
145
+ colors = tessellated;
146
+ }
147
+
148
+ return colors;
149
+ },
150
+ additionalDependencies: ["info"],
151
+ },
152
+ info: {},
153
+ };
154
+
155
+ static events = {
156
+ colorschange: {
157
+ propchange: "computedColors",
158
+ },
159
+ };
160
+ };
161
+
162
+ Self.define();
163
+
164
+ export default Self;
Binary file
@@ -0,0 +1,220 @@
1
+ # `<color-slider>`
2
+
3
+ Creates a slider with a gradient background, primarily intended for color picking.
4
+
5
+ ## Usage
6
+
7
+ There are many ways to use this component, depending on what you need.
8
+ E.g. if all you need is styling sliders with arbitrary gradients you don’t even need a component,
9
+ you can just [use the CSS file](#css-only-usage) and a few classes and CSS variables to style regular HTML sliders.
10
+
11
+ The actual component does a lot more:
12
+ - It provides a `color` property with the actual color value
13
+ - It takes care of even displaying colors in unsupported color spaces
14
+ - Editable tooltip showing the current value or progress _(optional)_
15
+ - Convenient events like `colorchange` and `valuechange` that fire even when the value changes programmatically
16
+
17
+ Basic example:
18
+
19
+ ```html
20
+ <color-slider space="hsl"
21
+ stops="oklch(90% 50% 100), darkcyan, indigo"></color-slider>
22
+ ```
23
+
24
+ You can listen to the `colorchange` event and grab the `color` property to get the current color value:
25
+
26
+ ```html
27
+ <color-slider space="hsl"
28
+ stops="red, yellow, lime, aqua, blue, magenta, red"
29
+ oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
30
+ <output></output>
31
+ ```
32
+
33
+ In fact, you can combine it with a [`<color-inline>`](../color-inline/) or [`<color-swatch>`](../color-swatch/) element to display the color in a more visual way:
34
+
35
+ ```html
36
+ <color-slider space="oklch"
37
+ stops="oklch(80% 50% 70), oklch(65% 50% 180)"
38
+ oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
39
+ <color-inline></color-inline>
40
+ ```
41
+
42
+ Colors and color spaces not supported by the browser also work:
43
+
44
+ ```html
45
+ <color-slider space="okhsl" stops="gold, color(--okhsl 180 100% 50%)"></color-slider>
46
+ ```
47
+
48
+ You can set the `value` attribute to specify an initial color other than the midpoint:
49
+
50
+ ```html
51
+ <color-slider space="oklch"
52
+ stops="oklch(85% 50% 80), oklch(65% 50% 180)"
53
+ value="0.1"
54
+ oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
55
+ <color-inline></color-inline>
56
+ ```
57
+
58
+ You can use a different min and max value and it’s just linearly mapped to the stops:
59
+
60
+ ```html
61
+ <color-slider space="oklch"
62
+ stops="oklch(85% 50% 80), oklch(65% 50% 180)"
63
+ min="-50" max="50" value="20"
64
+ oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
65
+ <color-inline></color-inline>
66
+ ```
67
+
68
+ You can add an editable tooltip by simply using the `tooltip` attribute:
69
+
70
+ ```html
71
+ <color-slider space="oklch"
72
+ stops="oklch(85% 50% 80), oklch(65% 50% 180)"
73
+ min="-50" max="50" value="20"
74
+ tooltip
75
+ oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
76
+ <color-inline></color-inline>
77
+ ```
78
+
79
+ By default, the tooltip will show the slider value as a number.
80
+ If you want to show the progress instead, you can specify `"progress"` as the attribute value:
81
+
82
+ ```html
83
+ <color-slider space="oklch"
84
+ stops="oklch(85% 50% 80), oklch(65% 50% 180)"
85
+ min="-50" max="50" value="20"
86
+ tooltip="progress"
87
+ oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
88
+ <color-inline></color-inline>
89
+ ```
90
+
91
+ All properties are reactive and can be set programmatically:
92
+
93
+ ```html
94
+ <button onclick="this.nextElementSibling.value = Math.random()">Random color</button>
95
+ <color-slider space="oklch"
96
+ stops="gold, darkcyan, indigo"
97
+ oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
98
+ <color-swatch></color-swatch>
99
+ ```
100
+
101
+ You can style it to look quite different:
102
+
103
+ ```html
104
+ <style>
105
+ .lr-slider {
106
+ --slider-height: .3em;
107
+ --slider-thumb-width: 1em;
108
+ --slider-thumb-height: 1em;
109
+ --slider-thumb-radius: 1em;
110
+ --slider-thumb-border: 3px solid oklab(50% 0 0);
111
+ }
112
+ </style>
113
+ <color-slider class="lr-slider" space="oklch"
114
+ stops="yellowgreen, gold, red"></color-slider>
115
+ ```
116
+
117
+
118
+ ### CSS-only usage
119
+
120
+ If you just want the styling of `<color-slider>` and not any of the API (or are fine dealing with the lower level details on your own),
121
+ you *can* just use the CSS file:
122
+
123
+ ```css
124
+ @import url("https://elements.colorjs.io/src/color-slider/color-slider.css");
125
+ ```
126
+
127
+ This is perfect for when the gradient is more of a visual aid than a functional part of your UI,
128
+ e.g. when picking a temperature:
129
+
130
+ ```html
131
+ <style>
132
+ @import url("color-slider.css");
133
+ </style>
134
+ <label>
135
+ Temperature:
136
+ <input type="range" class="color-slider" min="-20" max="50" value="15"
137
+ style="--slider-color-stops: oklch(65% 0.1 250), yellowgreen, gold, orange, red, darkred" />
138
+ </label>
139
+ ```
140
+
141
+ Then use a `color-slider` class on your slider element, and use [CSS variables](#css-variables) to set the gradient (either directly via `--slider-gradient` or generated via `--slider-color-stops` + `--color-space`).
142
+
143
+ ## Reference
144
+
145
+ ### Slots
146
+
147
+ | Name | Description |
148
+ |------|-------------|
149
+ | _(default)_ | Content placed after the color slider. |
150
+ | `tooltip` | An element used as a tooltip. |
151
+
152
+ ### Attributes & Properties
153
+
154
+ | Attribute | Property | Property type | Default value | Description |
155
+ |-----------|----------|---------------|---------------|-------------|
156
+ | `space` | `space` | `ColorSpace` &#124; `string` | `oklch` | The color space to use for interpolation. |
157
+ | `color` | `color` | `Color` &#124; `string` | `oklch(50% 50% 180)` | The current color value. |
158
+ | `stops` | `stops` | `String` &#124; `Array<Color>` | - | Comma-separated list of color stops. |
159
+ | `min` | `min` | `number` | 0 | The minimum value for the slider. |
160
+ | `max` | `max` | `number` | 1 | The maximum value for the slider. |
161
+ | `step` | `step` | `number` | Computed automatically based on `this.min` and `this.max`. | The granularity that the slider's current value must adhere to. |
162
+ | `value` | `value` | `number` | `(this.min + this.max) / 2` | The current value of the slider. |
163
+
164
+ ### CSS variables
165
+
166
+ If you’re using the component, these are mostly set automatically.
167
+ If you’re only using the CSS file, you should set these yourself.
168
+
169
+ | Variable | Type | Description |
170
+ |----------|---------------|-------------|
171
+ | `--slider-color-stops` | `<color>#` | Comma-separated list of color stops. |
172
+ | `--color-space` | `<ident>` | The color space to use for interpolation. |
173
+ | `--hue-interpolation` | `[shorter` &#124; `longer` &#124; `increasing` &#124; `decreasing] hue` | The hue interpolation method to use. |
174
+ | `--transparency-grid` | `<image>` | Gradient used as a background for transparent parts of the slider. |
175
+ | `--transparency-cell-size` | `<length>` | The size of the cells of the transparency gradient. |
176
+ | `--transparcency-background` | `<color>` | The background color of the transparency gradient. |
177
+ | `--transparency-darkness` | `<percentage>` | The opacity of the black color used for dark parts of the transparency gradient. |
178
+ | `--slider-gradient` | `<image>` | The gradient to use as the background. |
179
+ | `--slider-height` | `<length>` | Height of the slider track. |
180
+ | `--slider-thumb-width` | `<length>` | Width of the slider thumb. |
181
+ | `--slider-thumb-height` | `<length>` | Height of the slider thumb. |
182
+ | `--slider-thumb-height-offset` | `<length>` | Offset the thumb height from the track height. |
183
+ | `--slider-thumb-radius` | `<length>` | Radius of the slider thumb. |
184
+ | `--slider-thumb-background` | `<color>` | Background color of the slider thumb. |
185
+ | `--slider-thumb-border` | `<line-width>` &#124;&#124; `<line-style>` &#124;&#124; `<color>` | Border of the slider thumb. |
186
+ | `--slider-thumb-border-active` | `<line-width>` &#124;&#124; `<line-style>` &#124;&#124; `<color>` | Border of the slider thumb in active state. |
187
+ | `--slider-thumb-scale-active` | `<number>` | Scale transform applied to the slider thumb in active state. |
188
+ | `--tooltip-background` | `<color>` | Background color of the tooltip. |
189
+ | `--tooltip-border-radius` | `<length>` | Border radius of the tooltip. |
190
+ | `--tooltip-pointer-height` | `<length>` | Height of the tooltip pointer triangle. |
191
+ | `--tooltip-pointer-angle` | `<angle>` | Angle of the tooltip pointer triangle. |
192
+
193
+ ### Getters
194
+
195
+ These properties are read-only.
196
+
197
+ | Property | Type | Description |
198
+ |----------|------|-------------|
199
+ | `progress` | `number` | The slider value converted to a 0-1 number with `0` corresponding to the min of the range and `1` to the max. |
200
+
201
+
202
+ ### Events
203
+
204
+ | Name | Description |
205
+ |------|-------------|
206
+ | `input` | Fired when the color changes due to user action. |
207
+ | `change` | Fired when the color changes due to user action. |
208
+ | `valuechange` | Fired when the value changes for any reason, and once during initialization. |
209
+ | `colorchange` | Fired when the color changes for any reason, and once during initialization. |
210
+
211
+ ### Parts
212
+
213
+ | Name | Description |
214
+ |------|-------------|
215
+ | `slider` | The internal `<input type="range">` element. |
216
+ | `spinner` | The default `tooltip` slot content (an `<input type="number">` element). Please note that if an element is slotted in the `tooltip` slot, this will not match anyhing. |
217
+
218
+ ## Planned features
219
+
220
+ - Discrete scales & steps
@@ -0,0 +1,174 @@
1
+ :host {
2
+ display: flex;
3
+ position: relative;
4
+ }
5
+
6
+ .color-slider,
7
+ .slider-tooltip {
8
+ --transparency-cell-size: 1.5em;
9
+ --_transparency-cell-size: var(--transparency-cell-size, .5em);
10
+ --_transparency-background: var(--transparency-background, transparent);
11
+ --_transparency-darkness: var(--transparency-darkness, 5%);
12
+ --_transparency-grid: var(--transparency-grid,
13
+ repeating-conic-gradient(transparent 0 25%, rgb(0 0 0 / var(--_transparency-darkness)) 0 50%)
14
+ 0 0 / calc(2 * var(--_transparency-cell-size)) calc(2 * var(--_transparency-cell-size))
15
+ content-box border-box var(--_transparency-background)
16
+ );
17
+
18
+ --_slider-color-stops: var(--slider-color-stops, transparent 0% 100%);
19
+ --_slider-gradient: var(--slider-gradient, linear-gradient(to right var(--in-space, ), var(--_slider-color-stops)));
20
+ --_slider-height: var(--slider-height, 2.2em);
21
+
22
+ --_slider-thumb-width: var(--slider-thumb-width, 1em);
23
+ --_slider-thumb-height-offset: var(--slider-thumb-height-offset, 2px);
24
+ --_slider-thumb-height: var(--slider-thumb-height, calc(var(--_slider-height) + var(--_slider-thumb-height-offset)));
25
+ --_slider-thumb-radius: var(--slider-thumb-radius, .16em);
26
+ --_slider-thumb-background: var(--slider-thumb-background, var(--color, transparent));
27
+ --_slider-thumb-border: var(--slider-thumb-border, 1px solid oklab(.2 0 0));
28
+ --_slider-thumb-border-active: var(--slider-thumb-border-active, 2px solid oklab(.4 0 0));
29
+ --_slider-thumb-scale-active: var(--slider-thumb-scale-active, 1.1);
30
+
31
+ --_tooltip-background: var(--tooltip-background, hsl(0 0 0 / 80%));
32
+ --_tooltip-border-radius: var(--tooltip-border-radius, .3em);
33
+ --_tooltip-pointer-height: var(--tooltip-pointer-height, .3em);
34
+ --_tooltip-pointer-angle: var(--tooltip-pointer-angle, 90deg);
35
+ }
36
+
37
+ .color-slider {
38
+ @supports (background: linear-gradient(in oklab, red, tan)) {
39
+ --in-space: in var(--color-space, oklab) var(--hue-interpolation, );
40
+ }
41
+
42
+ display: block;
43
+ margin: 0;
44
+ width: 100%;
45
+ -moz-appearance: none;
46
+ -webkit-appearance: none;
47
+ background: var(--_slider-gradient), var(--_transparency-grid);
48
+ background-origin: border-box;
49
+ background-clip: border-box;
50
+ height: var(--_slider-height);
51
+ border-radius: .3em;
52
+ border: 1px solid rgb(0 0 0 / 8%);
53
+
54
+ &::-webkit-slider-thumb {
55
+ -webkit-appearance: none;
56
+ box-sizing: content-box;
57
+ width: var(--_slider-thumb-width);
58
+ height: var(--_slider-thumb-height);
59
+ border-radius: var(--_slider-thumb-radius);
60
+ border: var(--_slider-thumb-border);
61
+ box-shadow: 0 0 0 1px white;
62
+ background: var(--color, transparent);
63
+ transition: 200ms, 0s background;
64
+ }
65
+
66
+ &::-moz-range-thumb {
67
+ box-sizing: content-box;
68
+ width: var(--_slider-thumb-width);
69
+ height: var(--_slider-thumb-height);
70
+ border-radius: var(--_slider-thumb-radius);
71
+ border: var(--_slider-thumb-border);
72
+ box-shadow: 0 0 0 1px white;
73
+ background: var(--color, transparent);
74
+ transition: 200ms, 0s background;
75
+ }
76
+
77
+ &::-moz-range-thumb:active {
78
+ border: var(--_slider-thumb-border-active);
79
+ scale: var(--_slider-thumb-scale-active);
80
+ }
81
+
82
+ &::-moz-range-track {
83
+ background: none;
84
+ }
85
+ }
86
+
87
+ /* For some reason, the &::-webkit-slider-thumb:active rule (previously used inside the above rule) doesn't work πŸ€·β€β™‚οΈ */
88
+ /* DO NOT MOVE IT BACK! :) */
89
+ .color-slider::-webkit-slider-thumb:active {
90
+ border: var(--_slider-thumb-border-active);
91
+ scale: var(--_slider-thumb-scale-active);
92
+ }
93
+
94
+ .slider-tooltip {
95
+ position: absolute;
96
+ left: clamp(-20%,
97
+ 100% * var(--progress)
98
+ - (var(--progress) - 0.5) * var(--_slider-thumb-width) / 2 /* center on slider thumb */
99
+ , 100%);
100
+ bottom: calc(100% + 3px);
101
+ translate: -50%;
102
+ transform-origin: bottom;
103
+ display: flex;
104
+ padding-block: .3em;
105
+ padding-inline: .4em;
106
+ border: var(--_tooltip-pointer-height) solid transparent;
107
+ border-radius: calc(var(--_tooltip-border-radius) + var(--_tooltip-pointer-height));
108
+ text-align: center;
109
+ color: white;
110
+ background:
111
+ conic-gradient(from calc(-1 * var(--_tooltip-pointer-angle) / 2) at bottom, var(--_tooltip-background) var(--_tooltip-pointer-angle), transparent 0) border-box bottom / 100% var(--_tooltip-pointer-height) no-repeat,
112
+ var(--_tooltip-background) padding-box;
113
+ color-scheme: dark;
114
+ transition:
115
+ visibility 0s 200ms,
116
+ opacity 200ms,
117
+ scale 200ms,
118
+ width 100ms,
119
+ left 200ms cubic-bezier(.17,.67,.49,1.48);
120
+
121
+ &::after {
122
+ content: var(--tooltip-suffix);
123
+ }
124
+
125
+ input {
126
+ all: unset;
127
+
128
+ &:where([type=number]) {
129
+ --content-width: calc(var(--value-length) * 1ch);
130
+ width: calc(var(--content-width, 2ch) + 1.2em);
131
+ min-width: calc(2ch + 1.2em);
132
+ box-sizing: content-box;
133
+
134
+ &::-webkit-textfield-decoration-container {
135
+ gap: .2em;
136
+ }
137
+
138
+ @container style(--tooltip-suffix) {
139
+ &::-webkit-textfield-decoration-container {
140
+ flex-flow: row-reverse;
141
+ }
142
+ }
143
+
144
+ /* Don’t auto hide the spin buttons */
145
+ &::-webkit-inner-spin-button {
146
+ opacity: 1;
147
+ }
148
+ }
149
+
150
+ @supports (field-sizing: content) {
151
+ field-sizing: content;
152
+ width: auto;
153
+ }
154
+
155
+ /* Prevent input from moving all over the place as we type */
156
+ &:focus {
157
+ transition-delay: .5s;
158
+ }
159
+ }
160
+
161
+ &:not(:is(:focus-within, :hover) > *, .color-slider:is(:focus, :hover) + *, :focus, :hover) {
162
+ visibility: hidden;
163
+ opacity: 0;
164
+ scale: .5;
165
+ }
166
+ }
167
+
168
+ :host(:not([tooltip])) .slider-tooltip {
169
+ display: none;
170
+ }
171
+
172
+ :host([tooltip="progress"]) .slider-tooltip {
173
+ --tooltip-suffix: "%";
174
+ }